From 50a95fa6fbe6c6d847f4c233fd74c3f898768af0 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Tue, 24 Dec 2013 16:03:22 +0100 Subject: [PATCH] Better product time selection for supplier products view --- .../supplier/products_preview.css.sass | 17 +++++++++++++ .../stylesheets/supplier/structure.css.sass | 2 ++ .../suppliers/products_controller.rb | 3 ++- app/views/suppliers/products/index.html.slim | 25 ++++++++++++++----- 4 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 app/assets/stylesheets/supplier/products_preview.css.sass diff --git a/app/assets/stylesheets/supplier/products_preview.css.sass b/app/assets/stylesheets/supplier/products_preview.css.sass new file mode 100644 index 00000000..eb1854cf --- /dev/null +++ b/app/assets/stylesheets/supplier/products_preview.css.sass @@ -0,0 +1,17 @@ +.products_preview-date + .products_preview-time-container + float: left + input + width: 120px +.products_preview-hour + float: left + margin-left: 10px + select + width: 50px + &:after + content: " :" +.products_preview-minute + float: left + margin-left: 10px + select + width: 50px diff --git a/app/assets/stylesheets/supplier/structure.css.sass b/app/assets/stylesheets/supplier/structure.css.sass index 9bb9da4c..ce71fe85 100644 --- a/app/assets/stylesheets/supplier/structure.css.sass +++ b/app/assets/stylesheets/supplier/structure.css.sass @@ -56,3 +56,5 @@ form &.form-inline display: inline-block padding: 4px +.clear + clear: both diff --git a/app/controllers/suppliers/products_controller.rb b/app/controllers/suppliers/products_controller.rb index 2e1fd2cb..50dea67f 100644 --- a/app/controllers/suppliers/products_controller.rb +++ b/app/controllers/suppliers/products_controller.rb @@ -86,7 +86,8 @@ module Suppliers end def preview_products - @time = Time.parse(params[:date]) rescue Time.now + #TODO: time zone correction, since the hour and minute are of the supplier time zone, not the system time zone + @time = Time.parse("#{params[:date]}T#{params[:hour]}:#{params[:minute]}:00") rescue Time.now product_categories = ProductCategory.for_supplier_in_time(current_supplier, @time) render json: {categories: product_categories.map(&:to_client_format).select(&:present?)} end diff --git a/app/views/suppliers/products/index.html.slim b/app/views/suppliers/products/index.html.slim index 0f4f5d73..9691146e 100644 --- a/app/views/suppliers/products/index.html.slim +++ b/app/views/suppliers/products/index.html.slim @@ -30,7 +30,11 @@ /a.btn.btn-primary data-t="helpers.links.new" href=new_suppliers_product_path .span4 h4 data-t='product.preview.header'= t('supplier.product.preview.header') - input#product_preview_date.datepicker type="text" value=Date.today.strftime('%Y-%m-%d') + .products_preview-time-container + .products_preview-date= text_field_tag :date, Date.today.iso8601, class: 'datepicker' + .products_preview-hour= select_tag :preview_hour, options_for_select(0..23) + .products_preview-minute= select_tag :preview_minute, options_for_select(1..60) + .clear p data-t='product.preview.description'= t('supplier.product.preview.description') .well table#products-table @@ -38,12 +42,21 @@ script#products-category-template[type="text/html"]= mustache_template 'user/products_category' - onload_javascript do javascript: + var now = new Date(); + //var hour = now.getHours(); + //var minute = now.getMinutes(); + $('.products_preview-hour select').val(now.getHours()); + $('.products_preview-minute select').val(now.getMinutes()); + function update_preview_products(){ - var date = $('#product_preview_date').val(); + var date = $('.products_preview-date input').val(); var body = $('#products-table tbody'); - body.html('"#{spinner}"'); + var hour = $('.products_preview-hour select').val() + var minute = $('.products_preview-minute select').val() + + body.html('#{spinner}'); if(!date) return; - $.get('#{preview_products_suppliers_products_path(format: :json)}', {date: date}, function(res){ + $.get('#{preview_products_suppliers_products_path(format: :json)}', {date: date, hour: hour, minute: minute}, function(res){ var i,j, category, obj, result_html; body.find('tr').remove(); for(i=0; i < res.categories.length; i++){ @@ -59,6 +72,6 @@ script#products-category-template[type="text/html"]= mustache_template 'user/pro }) } update_preview_products(); - $('#product_preview_date').change(function(){ - update_preview_products(); + $('.products_preview-date input,.products_preview-hour select,.products_preview-minute select').change(function(){ + update_preview_products(); })