From 50434c28cfebee68b589b78b829fa68e8e91761a Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Sun, 2 Sep 2012 12:23:08 +0200 Subject: [PATCH] change styling towards design rj --- Gemfile | 1 + Gemfile.lock | 13 +- app/assets/images/.DS_Store | Bin 6148 -> 12292 bytes app/assets/images/logo.png | Bin 0 -> 16800 bytes app/assets/images/scan-logo.png | Bin 0 -> 7003 bytes app/assets/images/scan-logo.svg | 2327 +++++++++++++++++ app/assets/images/textures/wood5.jpg | Bin 0 -> 11572 bytes app/assets/javascripts/qsupplier.js.coffee | 18 +- app/assets/stylesheets/phone/darkstrap.sass | 286 ++ app/assets/stylesheets/phone/mixins.sass | 41 + .../stylesheets/phone/structure.css.sass | 45 + app/assets/stylesheets/tablet/darkstrap.sass | 286 ++ app/assets/stylesheets/tablet/mixins.sass | 41 + .../stylesheets/tablet/structure.css.sass | 5 +- app/controllers/dashboard_controller.rb | 13 +- .../suppliers/sections_controller.rb | 2 +- app/models/section.rb | 8 + app/views/layouts/phone.html.slim | 2 +- .../product_categories/index.html.slim | 3 +- app/views/suppliers/sections/show.html.slim | 2 +- app/views/user/home.html.slim | 15 +- config/routes.rb | 2 + lib/rqrcode-rails3/renderers/svg.rb | 2 +- 23 files changed, 3087 insertions(+), 25 deletions(-) create mode 100644 app/assets/images/logo.png create mode 100644 app/assets/images/scan-logo.png create mode 100644 app/assets/images/scan-logo.svg create mode 100644 app/assets/images/textures/wood5.jpg create mode 100644 app/assets/stylesheets/phone/darkstrap.sass create mode 100644 app/assets/stylesheets/phone/mixins.sass create mode 100644 app/assets/stylesheets/tablet/darkstrap.sass create mode 100644 app/assets/stylesheets/tablet/mixins.sass diff --git a/Gemfile b/Gemfile index 979634b1..8a7b258c 100644 --- a/Gemfile +++ b/Gemfile @@ -14,6 +14,7 @@ group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' gem 'twitter-bootstrap-rails' + gem 'compass-rails' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', :platforms => :ruby diff --git a/Gemfile.lock b/Gemfile.lock index 4299d29c..f866280a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -60,6 +60,7 @@ GEM xpath (~> 0.1.4) childprocess (0.3.5) ffi (~> 1.0, >= 1.0.6) + chunky_png (1.2.6) coderay (1.0.7) coffee-rails (3.2.2) coffee-script (>= 2.2.0) @@ -69,6 +70,12 @@ GEM execjs coffee-script-source (1.3.3) commonjs (0.2.6) + compass (0.12.2) + chunky_png (~> 1.2) + fssm (>= 0.2.7) + sass (~> 3.1) + compass-rails (1.0.3) + compass (>= 0.12.2, < 0.14) couchrest (1.1.3) mime-types (~> 1.15) multi_json (~> 1.0) @@ -92,6 +99,7 @@ GEM factory_girl (~> 4.0.0) railties (>= 3.0.0) ffi (1.1.5) + fssm (0.2.9) haml (3.1.7) haml-rails (0.3.4) actionpack (~> 3.0) @@ -99,7 +107,7 @@ GEM haml (~> 3.0) railties (~> 3.0) hike (1.2.1) - i18n (0.6.0) + i18n (0.6.1) journey (1.0.4) jquery-rails (2.1.1) railties (>= 3.1.0, < 5.0) @@ -196,7 +204,7 @@ GEM activesupport (~> 3.0) railties (~> 3.0) slim (~> 1.0) - slop (3.3.2) + slop (3.3.3) sprockets (2.1.3) hike (~> 1.2) rack (~> 1.0) @@ -236,6 +244,7 @@ PLATFORMS DEPENDENCIES capybara coffee-rails (~> 3.2.1) + compass-rails couch_potato! devise (= 2.0.4) devise_simply_stored diff --git a/app/assets/images/.DS_Store b/app/assets/images/.DS_Store index d6cb3b9511db18f6728e1fed67ca56d00326c800..e78adf8875a391af49316183d4cdbf9c06613617 100644 GIT binary patch delta 306 zcmZoMXi1P@U|?W$DortDU;r^WfEYvza8E20o2aMA$hR?IH}hr%jz7$c**Q2SHn1@A zZRTN7X42(g$YIE5NC#p)h608>hIG%I{N$vZ{3MWWAU*@cGk}=s|9=LC$vSMN^}Gzl z49N_MK()H~^)fvH>eB#XMvz`0z^=2Hp$x-TH=ybn|G@yPlN)Gf0YfIx&b-YzY~GBU wqj@$nb4hRmC0#+j+$_lPoq009i05Q~9u5vhNB}Twj^|kc@-#aO3UQwq08~#wiU0rr delta 112 zcmZokXfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jH4hU^g=(_hudeWv0pTLPnce yg~J#pmIf?l=im@z2C4)C0d64S3evQ(@H_Klei=`Y5e!Ta<3KhrY>wxd!wdi`aS`(X diff --git a/app/assets/images/logo.png b/app/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0e3a188da1d2f91d6b856e48e9bf315a02b2db9e GIT binary patch literal 16800 zcmeIZRa9G1v^E;jP-rP$+@0d?5*&)VyL<7X!6{zc-JwWvr?kc0i$igDw}1DX^Kj1V zfA7m3_dH~bWM!|Fxu<^fn>*o33R1{#@!x_#AY>V7aTO2<8bS?1!CeUiOR2DfJmaeRg%# zS0JPuO)V`n3=kS2hRDwo&fmNwpSqP5K@cdM1@sl99dX_GH5XU1(xz~I&R8CY9fk9I zUE-E<@kgjK>^o}Y*U`UT4=|;BG4}YiU=XPpS@&^M(A9@O-Uy4Tr*U6u5NS6QyCE=U z^51==$yD2D3>0<9WE8+C{H4^eN2Ey-N z*}h-ImU_3tkizRhHujDLp)1`#(&$|kv{e4K2vJ*3Ye|hCep;!U=0hDyWL0u@+$}expI%?PAb8q__BCa9UE@M`U7Ka|o zN^_SVTquTSbH>8QHQT>W?0iV4ip5GL3cD;B-OX%9EnGWOjuO}KuOk0Oe zU05EMBo|2(XIP$^4QJVp3dC)tGNuHLdM0@bo?PaV-;@KX$%8C&3z{TP&ZfAYzWxGbrC{jdz-<)F^guIQH`u34#@9VCqlZHnbi% zjc717Cl}3nbDuk4ET}o;IS5*h?f-#gY`d>!1uHx$oG*`7nJ)7Q=9ZLjw~U<=FLr1? zso$WY?h53>PWO$U3~7kx1+l#!eQR8HFEJO5kJmjE2_$2p_5};PuMa)JtXxB>%!SAwuQd!cS@af)jX7bZ=y2RLhk1^wPNItvw~- z-6ZlSwYL1ht285E5&w}fqM54I>zF(;XE2;zECdL2s�*X+m#LSO-bm=f;dw$kzTQur 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 X3&h!r5QPK(3IWMTD2P{y8U_9zOWQmC literal 0 HcmV?d00001 diff --git a/app/assets/images/scan-logo.png b/app/assets/images/scan-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ea91c16888eb638000f7bd4e6258d155a4ca04 GIT binary patch literal 7003 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 + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SCAN + + diff --git a/app/assets/images/textures/wood5.jpg b/app/assets/images/textures/wood5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..884ba25d56813569f35c622906bbf6bfdde6742b GIT binary patch literal 11572 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 YXqtop{HNxzHW4tHn;**B3MMZ6Uw|r{+yDRo literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/qsupplier.js.coffee b/app/assets/javascripts/qsupplier.js.coffee index a205f602..bf7d5a43 100644 --- a/app/assets/javascripts/qsupplier.js.coffee +++ b/app/assets/javascripts/qsupplier.js.coffee @@ -5,7 +5,16 @@ root.Qsupplier= section_container = $('.section-tables-active') section_container.append(table_container) Qsupplier.position_table_in_active_section(section_container, table_container) - position_table_in_active_section: (section_container, table_container)-> + + # Set the section id of the table in the database + $.ajax( + type: 'PUT', + url: '/supplier/tables/'+table_container.data('table-id'), + data: {table: {section_id: current_section_id}}, + dataType: 'json' + ) + position_table_in_active_section: (section_container, table_container, skip_persisting)-> + skip_persisting ||= false button_container = table_container.find('.action-button-container') button_container.html('') button_container.append($('').click( -> Qsupplier.move_table_to_inactive_section(table_container.data('table-id')) )) @@ -29,13 +38,6 @@ root.Qsupplier= dataType: 'json' ) ) - #TODO make ajax call safe - $.ajax( - type: 'PUT', - url: '/supplier/tables/'+table_container.data('table-id'), - data: {table: {section_id: current_section_id}}, - dataType: 'json' - ) move_table_to_inactive_section: (table_id)-> table_container = $('#section-table-'+table_id) table_container.css('left', 'auto') diff --git a/app/assets/stylesheets/phone/darkstrap.sass b/app/assets/stylesheets/phone/darkstrap.sass new file mode 100644 index 00000000..0f9486b0 --- /dev/null +++ b/app/assets/stylesheets/phone/darkstrap.sass @@ -0,0 +1,286 @@ +@import compass +@import mixins + +// Contents: +// =General +// =Breadcrumbs +// =Headings +// =Navigation +// =Forms +// =Tables +// =Pagination +// =Misc + +$color: #c6c6c6 +$bg: #2f2f2f +$link: #0088cc + +$warning: #faa732 +$success: #5bb75b +$error: #fc5b5e + +// ds original: #FB292D +$info: #3a87ad + +$input-bg: #666666 + +// ds default: #444 +$input-border: #111111 + +// default: white +$input-placeholder: #666666 +$input-color: white + +//=General ======================================== +// Everything with the inset panel just extends .well +.well + +inset-panel-dark + +body + background: $bg + color: $color + +//=Breadcrumbs ======================================= +.breadcrumb + @extend .well + border: 0 + //over bs + li + text-shadow: 0 1px 0 #000 + //over bs + +//=Headings ====================================== +.page-header + +horizontal-rule-dark + +h1,h2,h3,h4,h5,h6 + color: white + +h6 + color: #999 + +//=Navigation +.nav .dropdown-menu + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > .open.active > a:hover + background-color: darken($bg, 5%) + border-color: $bg $bg transparent $bg + +.nav > .dropdown.active > a:hover + color: #fff + +.nav-tabs .active .dropdown-toggle .caret, +.nav-pills .active .dropdown-toggle .caret + border-top-color: #fff + +.nav-tabs + border-bottom: 1px solid #666 + & > .active > a, + & > .active > a:hover + background-color: $bg + color: #fff + border-color: #666 #666 transparent #666 + & > li > a:hover + border-color: $bg $bg #666666 $bg + background-color: darken($bg, 5%) + color: lighten($link, 10%) + &.nav-stacked + & > li > a, + & > li > a:hover + border-color: #666 + +.nav-pills + & > li > a:hover + background-color: darken($bg, 5%) + color: lighten($link, 10%) + +.nav-list > li > a, +.nav-list .nav-header + text-shadow: 0 1px 0 #000 + +.nav-list > li > a:hover + background-color: darken($bg, 10%) + color: lighten($link, 10%) + +.nav-list .active + & > a:hover + background-color: #0088cc + color: white + +.tabs-below .nav-tabs + border-top: 1px solid #666 + +.tabs-left .nav-tabs + border-right: 1px solid #666 + +.tabs-right .nav-tabs + border-left: 1px solid #666 + +.tabs-below .nav-tabs > li > a:hover + border-top: 1px solid #666 + +.tabs-left .nav-tabs > li > a:hover + border-color: transparent #666 transparent transparent + +.tabs-right .nav-tabs > li > a:hover + border-color: transparent transparent transparent #666 + +.tabs-below .nav-tabs .active > a, +.tabs-below .nav-tabs .active > a:hover + border-color: transparent #666 #666 #666 + +.tabs-left .nav-tabs .active > a, +.tabs-left .nav-tabs .active > a:hover + border-color: #666 transparent #666 #666 + +.tabs-right .nav-tabs .active > a, +.tabs-right .nav-tabs .active > a:hover + border-color: #666 #666 #666 transparent + +//=Forms ======================================== ++placeholder($input-placeholder) + +.input-prepend .add-on, +.input-append .add-on + background: #444 + color: $color + border-color: #111 + text-shadow: 0 1px 0 black + +label + color: $color + +input, +input[type="file"], +select, +textarea + color: $input-color + //background-color: $input-bg; + border-color: $input-border + @extend .well + +.search-query + -webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0) 0 1px 7px 0px inset + +legend + color: white + +horizontal-rule-dark + +.form-actions + border-top-color: #222 + background-color: #444 + +.help-inline + color: #999 + +.control-group + &.warning + +controls($warning) + &.success + +controls($success) + &.error + +controls($error) + +//=Tables ======================================== +.table + thead + color: white + td + border-top-color: #666 + +.table-striped + tbody tr:nth-child(2n+1) + td, th + background-color: #444 + +.table-bordered + border: 1px solid #666 + th + th, + td + td, + th + td, + td + th + border-left: 1px solid #666 + +//=Pagination +.pagination a:hover + color: lighten($link, 10%) + background-color: darken($bg, 5%) + +.pagination .active a + color: #fff + background-color: darken($bg, 5%) + +.pagination a + border-color: #666 + +//=Pager +.pager a + background-color: $bg + border-color: #666 + &:hover + background-color: darken($bg, 5%) + color: lighten($link, 10%) + +//=Alerts +=alert($color) + color: #fff + background-color: $color + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.25) + border-color: darken($color, 25%) + h4 + color: darken($color, 20%) + +.alert + +alert($warning) + +.alert-success + +alert($success) + +.alert-error + +alert($error) + +.alert-info + +alert($info) + +//=Modals + +.modal + background-color: #444 + +.modal-header + border-bottom: 1px solid #222 + +.modal-body p + color: $color + +.modal-footer + background-color: darken(#444444, 5%) + border-top: 1px solid #222 + +box-shadow(0 1px 0 #333333 inset) + +//=Progress bars +.progress + @extend .well + +//=Misc ======================================== +blockquote + border-left-color: #111 + &.pull-right + border-right-color: #111 + +hr + +horizontal-rule-dark + border-top: none + +code + @extend .well + border: none + //over bs + +pre + @extend .well + border: none + //over bs + color: $color diff --git a/app/assets/stylesheets/phone/mixins.sass b/app/assets/stylesheets/phone/mixins.sass new file mode 100644 index 00000000..33c19ef5 --- /dev/null +++ b/app/assets/stylesheets/phone/mixins.sass @@ -0,0 +1,41 @@ +=placeholder($color: $input-placeholder) + \:-moz-placeholder + color: $color + \::-webkit-input-placeholder + color: $color + +=controls($color) + & > label, + .help-block, + .help-inline + color: $color + input, select, textarea + //color: lighten($color, 20%); + color: $color + border-color: $color + input:focus, + select:focus, + textarea:focus + border-color: $color + +box-shadow(0 0 6px $color) + +=inset-panel-dark + +box-shadow(rgba(white, 0.1) 0 1px 0, rgba(black, 0.8) 0 1px 7px 0px inset) + background: darken(#2f2f2f, 6) + background-color: rgba(black, 0.3) + +=horizontal-rule-dark + +box-shadow(rgba(white, 0.07) 0 1px 0) + border-bottom: 1px solid #121212 + +=horizontal-rule-top-dark + +box-shadow(rgba(white, 0.07) 0 1px 0 inset) + border-top: 1px solid #121212 + +=vertical-rule-dark + +box-shadow(rgba(white, 0.07) 1px 0 0) + border-right: 1px solid #121212 + +=vertical-rule-left-dark + +box-shadow(rgba(white, 0.07) 1px 0 0 inset) + border-left: 1px solid #121212 diff --git a/app/assets/stylesheets/phone/structure.css.sass b/app/assets/stylesheets/phone/structure.css.sass index c6c2b7b1..f851ced4 100644 --- a/app/assets/stylesheets/phone/structure.css.sass +++ b/app/assets/stylesheets/phone/structure.css.sass @@ -1,7 +1,52 @@ +@import compass $side-spacing: 5px +$qbrown: #8B5A2B +html + background-image: image-url('textures/wood5.jpg') body padding-left: $side-spacing padding-right: $side-spacing + background-image: image-url('textures/wood5.jpg') + .home-panel + margin-left: 20px + margin-right: 20px + margin-top: 40px + +box-shadow(#000 10px 10px 16px) + background-color: rgba(240, 240, 240, 0.6) + +border-radius(10px) + .home-header + text-align: center + //background-color: #eee + //+border-top-radius(10px) + //+opacity(0.7) + min-height: 100px + .home-center + padding: 10px + text-align: center + background-color: black + .home-footer + //background-color: #eee + //+border-bottom-radius(10px) + //+opacity(0.7) + min-height: 100px + .home-footer-content + margin-top: 22px + margin-left: auto + margin-right: auto + background-color: green + width: 262px + a + display: block + border: 2px solid black + +border-radius(4px) + +box-shadow(#000 4px 4px 8px) + width: 34px + height: 34px + float: left + margin-right: 15px + background-color: $qbrown + text-align: center + line-height: 34px //padding-top: 50px .navbar-fixed-top margin-left: -$side-spacing diff --git a/app/assets/stylesheets/tablet/darkstrap.sass b/app/assets/stylesheets/tablet/darkstrap.sass new file mode 100644 index 00000000..0f9486b0 --- /dev/null +++ b/app/assets/stylesheets/tablet/darkstrap.sass @@ -0,0 +1,286 @@ +@import compass +@import mixins + +// Contents: +// =General +// =Breadcrumbs +// =Headings +// =Navigation +// =Forms +// =Tables +// =Pagination +// =Misc + +$color: #c6c6c6 +$bg: #2f2f2f +$link: #0088cc + +$warning: #faa732 +$success: #5bb75b +$error: #fc5b5e + +// ds original: #FB292D +$info: #3a87ad + +$input-bg: #666666 + +// ds default: #444 +$input-border: #111111 + +// default: white +$input-placeholder: #666666 +$input-color: white + +//=General ======================================== +// Everything with the inset panel just extends .well +.well + +inset-panel-dark + +body + background: $bg + color: $color + +//=Breadcrumbs ======================================= +.breadcrumb + @extend .well + border: 0 + //over bs + li + text-shadow: 0 1px 0 #000 + //over bs + +//=Headings ====================================== +.page-header + +horizontal-rule-dark + +h1,h2,h3,h4,h5,h6 + color: white + +h6 + color: #999 + +//=Navigation +.nav .dropdown-menu + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > .open.active > a:hover + background-color: darken($bg, 5%) + border-color: $bg $bg transparent $bg + +.nav > .dropdown.active > a:hover + color: #fff + +.nav-tabs .active .dropdown-toggle .caret, +.nav-pills .active .dropdown-toggle .caret + border-top-color: #fff + +.nav-tabs + border-bottom: 1px solid #666 + & > .active > a, + & > .active > a:hover + background-color: $bg + color: #fff + border-color: #666 #666 transparent #666 + & > li > a:hover + border-color: $bg $bg #666666 $bg + background-color: darken($bg, 5%) + color: lighten($link, 10%) + &.nav-stacked + & > li > a, + & > li > a:hover + border-color: #666 + +.nav-pills + & > li > a:hover + background-color: darken($bg, 5%) + color: lighten($link, 10%) + +.nav-list > li > a, +.nav-list .nav-header + text-shadow: 0 1px 0 #000 + +.nav-list > li > a:hover + background-color: darken($bg, 10%) + color: lighten($link, 10%) + +.nav-list .active + & > a:hover + background-color: #0088cc + color: white + +.tabs-below .nav-tabs + border-top: 1px solid #666 + +.tabs-left .nav-tabs + border-right: 1px solid #666 + +.tabs-right .nav-tabs + border-left: 1px solid #666 + +.tabs-below .nav-tabs > li > a:hover + border-top: 1px solid #666 + +.tabs-left .nav-tabs > li > a:hover + border-color: transparent #666 transparent transparent + +.tabs-right .nav-tabs > li > a:hover + border-color: transparent transparent transparent #666 + +.tabs-below .nav-tabs .active > a, +.tabs-below .nav-tabs .active > a:hover + border-color: transparent #666 #666 #666 + +.tabs-left .nav-tabs .active > a, +.tabs-left .nav-tabs .active > a:hover + border-color: #666 transparent #666 #666 + +.tabs-right .nav-tabs .active > a, +.tabs-right .nav-tabs .active > a:hover + border-color: #666 #666 #666 transparent + +//=Forms ======================================== ++placeholder($input-placeholder) + +.input-prepend .add-on, +.input-append .add-on + background: #444 + color: $color + border-color: #111 + text-shadow: 0 1px 0 black + +label + color: $color + +input, +input[type="file"], +select, +textarea + color: $input-color + //background-color: $input-bg; + border-color: $input-border + @extend .well + +.search-query + -webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0) 0 1px 7px 0px inset + +legend + color: white + +horizontal-rule-dark + +.form-actions + border-top-color: #222 + background-color: #444 + +.help-inline + color: #999 + +.control-group + &.warning + +controls($warning) + &.success + +controls($success) + &.error + +controls($error) + +//=Tables ======================================== +.table + thead + color: white + td + border-top-color: #666 + +.table-striped + tbody tr:nth-child(2n+1) + td, th + background-color: #444 + +.table-bordered + border: 1px solid #666 + th + th, + td + td, + th + td, + td + th + border-left: 1px solid #666 + +//=Pagination +.pagination a:hover + color: lighten($link, 10%) + background-color: darken($bg, 5%) + +.pagination .active a + color: #fff + background-color: darken($bg, 5%) + +.pagination a + border-color: #666 + +//=Pager +.pager a + background-color: $bg + border-color: #666 + &:hover + background-color: darken($bg, 5%) + color: lighten($link, 10%) + +//=Alerts +=alert($color) + color: #fff + background-color: $color + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.25) + border-color: darken($color, 25%) + h4 + color: darken($color, 20%) + +.alert + +alert($warning) + +.alert-success + +alert($success) + +.alert-error + +alert($error) + +.alert-info + +alert($info) + +//=Modals + +.modal + background-color: #444 + +.modal-header + border-bottom: 1px solid #222 + +.modal-body p + color: $color + +.modal-footer + background-color: darken(#444444, 5%) + border-top: 1px solid #222 + +box-shadow(0 1px 0 #333333 inset) + +//=Progress bars +.progress + @extend .well + +//=Misc ======================================== +blockquote + border-left-color: #111 + &.pull-right + border-right-color: #111 + +hr + +horizontal-rule-dark + border-top: none + +code + @extend .well + border: none + //over bs + +pre + @extend .well + border: none + //over bs + color: $color diff --git a/app/assets/stylesheets/tablet/mixins.sass b/app/assets/stylesheets/tablet/mixins.sass new file mode 100644 index 00000000..33c19ef5 --- /dev/null +++ b/app/assets/stylesheets/tablet/mixins.sass @@ -0,0 +1,41 @@ +=placeholder($color: $input-placeholder) + \:-moz-placeholder + color: $color + \::-webkit-input-placeholder + color: $color + +=controls($color) + & > label, + .help-block, + .help-inline + color: $color + input, select, textarea + //color: lighten($color, 20%); + color: $color + border-color: $color + input:focus, + select:focus, + textarea:focus + border-color: $color + +box-shadow(0 0 6px $color) + +=inset-panel-dark + +box-shadow(rgba(white, 0.1) 0 1px 0, rgba(black, 0.8) 0 1px 7px 0px inset) + background: darken(#2f2f2f, 6) + background-color: rgba(black, 0.3) + +=horizontal-rule-dark + +box-shadow(rgba(white, 0.07) 0 1px 0) + border-bottom: 1px solid #121212 + +=horizontal-rule-top-dark + +box-shadow(rgba(white, 0.07) 0 1px 0 inset) + border-top: 1px solid #121212 + +=vertical-rule-dark + +box-shadow(rgba(white, 0.07) 1px 0 0) + border-right: 1px solid #121212 + +=vertical-rule-left-dark + +box-shadow(rgba(white, 0.07) 1px 0 0 inset) + border-left: 1px solid #121212 diff --git a/app/assets/stylesheets/tablet/structure.css.sass b/app/assets/stylesheets/tablet/structure.css.sass index d802d120..ffff9cc6 100644 --- a/app/assets/stylesheets/tablet/structure.css.sass +++ b/app/assets/stylesheets/tablet/structure.css.sass @@ -1,7 +1,8 @@ -$side-spacing: 5px +$side-spacing: 0px body padding-left: $side-spacing padding-right: $side-spacing + background-image: image-url('textures/wood5.jpg') //padding-top: 50px .navbar-fixed-top margin-left: -$side-spacing @@ -33,7 +34,7 @@ body position: relative padding: 0 height: 400px - background-image: image-url('textures/wood4.jpg') + background-image: image-url('textures/wood5.jpg') .section-table position: absolute cursor: move diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 81aa9d91..00d2a1b7 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -21,8 +21,17 @@ class DashboardController < ApplicationController code = {table_id: @table.id}.to_json respond_to do |format| format.html - format.svg { render :qrcode => code, :level => :l, :unit => 10, table_number: @table.number } - format.png { render qrcode: code, table_number: @table.number } + format.svg { render :qrcode => code, :level => :l, :unit => 10, table_number: @table.number, qcontainer: true } + format.png { render qrcode: code, table_number: @table.number, qcontainer: true } + end + end + + def qr + code = 'qwaiter.com' + respond_to do |format| + format.html + format.svg { render :qrcode => code, :level => :l, :unit => 10} + format.png { render qrcode: code} end end diff --git a/app/controllers/suppliers/sections_controller.rb b/app/controllers/suppliers/sections_controller.rb index e13ef6af..f784251d 100644 --- a/app/controllers/suppliers/sections_controller.rb +++ b/app/controllers/suppliers/sections_controller.rb @@ -59,7 +59,7 @@ module Suppliers # PUT /sections/1 # PUT /sections/1.json def update - @section = Section.find(params[:id]) + @section = Section.find_by_supplier_and_id(current_supplier, params[:id]) respond_to do |format| if @section.update_attributes(params[:section]) diff --git a/app/models/section.rb b/app/models/section.rb index 7329690c..aac28a87 100644 --- a/app/models/section.rb +++ b/app/models/section.rb @@ -14,6 +14,14 @@ class Section validates :supplier_id, presence: true + # Probably faster to directly retreive the document and return nil + # if the supplier does not match + def self.find_by_supplier_and_id(supplier, id) + section = find(id) + return nil unless section.supplier_id == supplier.id + section + end + def width self.path.last.try(:first).to_f - self.path.first.try(:first).to_f end diff --git a/app/views/layouts/phone.html.slim b/app/views/layouts/phone.html.slim index d0de1195..7341e45a 100644 --- a/app/views/layouts/phone.html.slim +++ b/app/views/layouts/phone.html.slim @@ -25,7 +25,7 @@ html lang="en" activateRotation: function(){} }); - body + body class=action_name .navbar.navbar-fixed-top .navbar-inner .container diff --git a/app/views/suppliers/product_categories/index.html.slim b/app/views/suppliers/product_categories/index.html.slim index 9084c8ce..445218c2 100644 --- a/app/views/suppliers/product_categories/index.html.slim +++ b/app/views/suppliers/product_categories/index.html.slim @@ -20,5 +20,6 @@ = link_to t("helpers.links.destroy"), [:suppliers, product_category], method: :delete, data: {confirm: are_you_sure? }, class: 'btn btn-mini btn-danger' - else = no_content_given model_class -= link_to t("helpers.links.new"), new_suppliers_product_category_path, class: 'btn btn-primary' +.form-actions + = link_to t("helpers.links.new"), new_suppliers_product_category_path, class: 'btn btn-primary' diff --git a/app/views/suppliers/sections/show.html.slim b/app/views/suppliers/sections/show.html.slim index bc7ee9e8..db03a7f9 100644 --- a/app/views/suppliers/sections/show.html.slim +++ b/app/views/suppliers/sections/show.html.slim @@ -38,6 +38,6 @@ active_section_container.css('width', active_section_container.width()); // break fluid layout active_section_container.css('height', #{@section.height/@section.width}*active_section_container.width()); active_section_container.find('.section-table').each(function(){ - Qsupplier.position_table_in_active_section(active_section_container, $(this)); + Qsupplier.position_table_in_active_section(active_section_container, $(this), true); }); }); diff --git a/app/views/user/home.html.slim b/app/views/user/home.html.slim index 6a52d051..2aa9bc1c 100644 --- a/app/views/user/home.html.slim +++ b/app/views/user/home.html.slim @@ -1,6 +1,9 @@ -ul.nav.nav-tabs.nav-stacked - li - button.btn.btn-primary onClick="QMobile.scanQr()" = t('user.home.scan_qr') - - if list_open? - li= link_to t('user.home.show_active_list_products'), user_list_products_path - li= link_to t('user.home.show_active_list'), user_active_list_path +.home-panel + .home-header = image_tag 'logo.png', width: '150', height: '140' + .home-center + a href="#" onClick="QMobile.scanQr()" = image_tag 'scan-logo.png' + .home-footer + .home-footer-content + - if list_open? + = link_to 'P', user_list_products_path + = link_to 'L', user_active_list_path diff --git a/config/routes.rb b/config/routes.rb index 4a95728a..573b6eb2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -57,6 +57,8 @@ Qrammer::Application.routes.draw do match '/show_products' => 'dashboard#show_products', as: :user_products + match '/qr' => 'dashboard#qr' + namespace :suppliers, path: '/supplier' do resources :sections resources :tables diff --git a/lib/rqrcode-rails3/renderers/svg.rb b/lib/rqrcode-rails3/renderers/svg.rb index 33ebc731..ad2d3c09 100644 --- a/lib/rqrcode-rails3/renderers/svg.rb +++ b/lib/rqrcode-rails3/renderers/svg.rb @@ -38,7 +38,7 @@ module RQRCode result.unshift %{} end - svg = [xml_tag, open_tag, result, close_tag].flatten.join("\n") + return [xml_tag, open_tag, result, close_tag].flatten.join("\n") unless options[:qcontainer] svg = File.read(File.expand_path('../../qr_container.svg', __FILE__)) svg.gsub!(/#table_number/, options[:table_number].to_s) svg.gsub!(/#qrcode/, result.join("\n"))