From 1b83157de234d2cf15c859b549899c4d3f34a759 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Wed, 30 Jul 2014 10:22:58 +0200 Subject: [PATCH] Tables to ember with modal extension cq refactor --- .../controllers/modal_controller.js.coffee | 9 +++++- .../controllers/table_controller.js.coffee | 2 ++ .../tables_index_controller.js.coffee | 14 ++++++++- .../controller_modifications.js.coffee | 13 ++++++++ .../app/routes/application_route.js.coffee | 8 +++-- .../app/templates/modals/edit_table.emblem | 17 +++++++++++ .../app/templates/section_table.emblem | 19 ++++++++++++ .../supplier/app/templates/table.emblem | 30 +++++++------------ .../app/templates/tables/index.emblem | 7 +++-- .../app/views/section_table_view.js.coffee | 2 +- .../supplier/foundation1/application.js.erb | 1 - app/views/suppliers/tables/show.html.slim | 28 +++++++++-------- config/locales/supplier.en.yml | 4 +++ config/locales/supplier.nl.yml | 4 +++ wip.md | 2 ++ 15 files changed, 120 insertions(+), 40 deletions(-) create mode 100644 app/assets/javascripts/supplier/app/controllers/table_controller.js.coffee create mode 100644 app/assets/javascripts/supplier/app/modifications/controller_modifications.js.coffee create mode 100644 app/assets/javascripts/supplier/app/templates/modals/edit_table.emblem create mode 100644 app/assets/javascripts/supplier/app/templates/section_table.emblem diff --git a/app/assets/javascripts/supplier/app/controllers/modal_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/modal_controller.js.coffee index 82d22baa..006a3c11 100644 --- a/app/assets/javascripts/supplier/app/controllers/modal_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/modal_controller.js.coffee @@ -1,4 +1,11 @@ Qsupplier.App.ModalController = Ember.ObjectController.extend + modal_options: {} actions: close: -> - @send 'closeModal' + if close = @get('modal_options.close') + close.apply(@) + @send 'closeModal' unless @preventClose + ok: -> + if ok = @get('modal_options.ok') + ok.apply(@) + @send 'closeModal' unless @preventClose diff --git a/app/assets/javascripts/supplier/app/controllers/table_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/table_controller.js.coffee new file mode 100644 index 00000000..3bf3d9e6 --- /dev/null +++ b/app/assets/javascripts/supplier/app/controllers/table_controller.js.coffee @@ -0,0 +1,2 @@ +Qsupplier.App.TableController = Ember.ObjectController.extend + table: (-> @get('model')).property('model') diff --git a/app/assets/javascripts/supplier/app/controllers/tables_index_controller.js.coffee b/app/assets/javascripts/supplier/app/controllers/tables_index_controller.js.coffee index 553bb3b1..8b4fbab7 100644 --- a/app/assets/javascripts/supplier/app/controllers/tables_index_controller.js.coffee +++ b/app/assets/javascripts/supplier/app/controllers/tables_index_controller.js.coffee @@ -1,2 +1,14 @@ Qsupplier.App.TablesIndexController = Ember.ArrayController.extend - tables: (-> @get('model')).property('model') + tables: (-> @get('model').sortBy('number')).property('model.@each.number') + actions: + editTable: (table)-> + @modal 'edit_table', + model: table + ok: -> + table.save() + close: -> + table.rollback() + destroyTable: (table)-> + @send 'confirm', + title: t('table.destroy.modal.title', number: table.get('number')) + ok: -> table.destroy() diff --git a/app/assets/javascripts/supplier/app/modifications/controller_modifications.js.coffee b/app/assets/javascripts/supplier/app/modifications/controller_modifications.js.coffee new file mode 100644 index 00000000..164b4959 --- /dev/null +++ b/app/assets/javascripts/supplier/app/modifications/controller_modifications.js.coffee @@ -0,0 +1,13 @@ +ControllerExtensions = Ember.Mixin.create + # conveniance wrapper for open modal. Use like: + # @modal "edit_table", model: table + modal: (name, options={})-> + @send "openModal", "modals/#{name}", options.model || Ember.Object.create(), + controller: 'modal' + ok: options.ok + close: options.close + all_sections: (-> @store.all('section')).property() + +Ember.Controller.reopen ControllerExtensions +Ember.ArrayController.reopen ControllerExtensions +Ember.ObjectController.reopen ControllerExtensions diff --git a/app/assets/javascripts/supplier/app/routes/application_route.js.coffee b/app/assets/javascripts/supplier/app/routes/application_route.js.coffee index 29b9f2cd..0280b5d7 100644 --- a/app/assets/javascripts/supplier/app/routes/application_route.js.coffee +++ b/app/assets/javascripts/supplier/app/routes/application_route.js.coffee @@ -13,11 +13,15 @@ Qsupplier.App.ApplicationRoute = Ember.Route.extend controller.set 'product_categories', @store.all('product_category') actions: - openModal: (modalName, model)-> - @controllerFor(modalName).set('model', model) + openModal: (modalName, model, options={})-> + controller_name = options.controller || modalName + controller = @controllerFor(controller_name) + controller.set 'model', model + controller.set 'modal_options', options @render modalName, into: 'application' outlet: 'modal' + controller: controller_name closeModal: -> @disconnectOutlet outlet: 'modal' diff --git a/app/assets/javascripts/supplier/app/templates/modals/edit_table.emblem b/app/assets/javascripts/supplier/app/templates/modals/edit_table.emblem new file mode 100644 index 00000000..0e60f191 --- /dev/null +++ b/app/assets/javascripts/supplier/app/templates/modals/edit_table.emblem @@ -0,0 +1,17 @@ +modal-dialog action="close" + .modal-header + h3.flush--top=t 'table.edit.modal.title' + hr + .modal-body + p=t 'table.edit.modal.body_header' + .form-row + .form-label=t 'attributes.table.number' + .form-field: Qsupplier.App.NumberField valueBinding="model.number" + .form-row + .form-label=t 'models.section' + .form-field + Ember.Select content=all_sections valueBinding="model.section" optionLabelPath="content.title" + .modal-footer + hr + button.confirm-cancel{action "close"}=t 'section.add_tables.modal.close_button' + button.confirm-ok.right{action "ok"}=t 'section.add_tables.modal.add_button' diff --git a/app/assets/javascripts/supplier/app/templates/section_table.emblem b/app/assets/javascripts/supplier/app/templates/section_table.emblem new file mode 100644 index 00000000..6b5395ea --- /dev/null +++ b/app/assets/javascripts/supplier/app/templates/section_table.emblem @@ -0,0 +1,19 @@ +.table-number= table.number +.status-icons + span.needs_payment + span.needs_help + span.active_order +if table.active_list + div class="table-actions table-actions-#{unbound table.id}" + .title= table.number + .table-action-row + Qsupplier.App.MarkListHelpedButtonView content=table.active_list + Qsupplier.App.CloseListButtonView content=table.active_list + .table-action-row=currency table.active_list.total + each user in table.active_list.users + img src=user.facebook_image +if editmodedisabled + .table-settings + select + option Round + option rectangular diff --git a/app/assets/javascripts/supplier/app/templates/table.emblem b/app/assets/javascripts/supplier/app/templates/table.emblem index 6b5395ea..e72ec5a1 100644 --- a/app/assets/javascripts/supplier/app/templates/table.emblem +++ b/app/assets/javascripts/supplier/app/templates/table.emblem @@ -1,19 +1,11 @@ -.table-number= table.number -.status-icons - span.needs_payment - span.needs_help - span.active_order -if table.active_list - div class="table-actions table-actions-#{unbound table.id}" - .title= table.number - .table-action-row - Qsupplier.App.MarkListHelpedButtonView content=table.active_list - Qsupplier.App.CloseListButtonView content=table.active_list - .table-action-row=currency table.active_list.total - each user in table.active_list.users - img src=user.facebook_image -if editmodedisabled - .table-settings - select - option Round - option rectangular +h2=t 'models.table' +.display-row + .display-label= t 'attributes.table.number' + .display-field + span= table.number +if table.section + .display-row + .display-label=t 'models.section' + .display-field + link-to 'section' table.section + span= table.section.title diff --git a/app/assets/javascripts/supplier/app/templates/tables/index.emblem b/app/assets/javascripts/supplier/app/templates/tables/index.emblem index 086503b5..eb5bf645 100644 --- a/app/assets/javascripts/supplier/app/templates/tables/index.emblem +++ b/app/assets/javascripts/supplier/app/templates/tables/index.emblem @@ -10,9 +10,12 @@ if tables tbody each table in tables tr - td: a= table.number + td: link-to 'table' table: span= table.number td.link if table.section - = link-to 'sections:section' table.section + = link-to 'section' table.section + = table.section.title td.numeric=time table.created_at td.actions + a.table-edit{ action 'editTable' table }: span + a.table-destroy{ action 'destroyTable' table }: span diff --git a/app/assets/javascripts/supplier/app/views/section_table_view.js.coffee b/app/assets/javascripts/supplier/app/views/section_table_view.js.coffee index bedc84d5..fc09c081 100644 --- a/app/assets/javascripts/supplier/app/views/section_table_view.js.coffee +++ b/app/assets/javascripts/supplier/app/views/section_table_view.js.coffee @@ -1,5 +1,5 @@ Qsupplier.App.SectionTableView = Ember.View.extend DragNDrop.Draggable, - templateName: 'table' + templateName: 'section_table' classNames: ['section-table'] attributeBindings: ['style'] classNameBindings: [ diff --git a/app/assets/javascripts/supplier/foundation1/application.js.erb b/app/assets/javascripts/supplier/foundation1/application.js.erb index 0e313394..cdd60c1e 100644 --- a/app/assets/javascripts/supplier/foundation1/application.js.erb +++ b/app/assets/javascripts/supplier/foundation1/application.js.erb @@ -17,7 +17,6 @@ //= require moment var Qstorage = localStorage; - $.extend($translations.en, <%= I18n.t('supplier', locale: :en).to_json %>); $.extend($translations.nl, <%= I18n.t('supplier', locale: :nl).to_json %>); diff --git a/app/views/suppliers/tables/show.html.slim b/app/views/suppliers/tables/show.html.slim index 1f18b083..483b6ee4 100644 --- a/app/views/suppliers/tables/show.html.slim +++ b/app/views/suppliers/tables/show.html.slim @@ -1,13 +1,15 @@ -.page-header= title :show, @table -.display-row - .display-label - span data-t='attributes.table.number' - .display-field - span= @table.number -- if @table.section.present? - .display-row - .display-label - span data-t='models.section' - .display-field - span= link_to @table.section.title, [:suppliers, @table.section] -= supplier_form_actions :index, :edit, :destroy, object: @table, for: :tables +- content_for :head do + = javascript_include_tag 'supplier/app/application' +/ .page-header= title :show, @table +/ .display-row +/ .display-label +/ span data-t='attributes.table.number' +/ .display-field +/ span= @table.number +/ - if @table.section.present? +/ .display-row +/ .display-label +/ span data-t='models.section' +/ .display-field +/ span= link_to @table.section.title, [:suppliers, @table.section] +/ = supplier_form_actions :index, :edit, :destroy, object: @table, for: :tables diff --git a/config/locales/supplier.en.yml b/config/locales/supplier.en.yml index a8335ed5..e068a254 100644 --- a/config/locales/supplier.en.yml +++ b/config/locales/supplier.en.yml @@ -21,6 +21,10 @@ en: qr_codes: link: Print Qr codes sheet has_no_section: "Not placed" + table: + destroy: + modal: + title: Are you sure you want to delete ${models.table} %{number} lists: index: show_all: Show all ${models.plural.list} diff --git a/config/locales/supplier.nl.yml b/config/locales/supplier.nl.yml index f80451cc..08ce0641 100644 --- a/config/locales/supplier.nl.yml +++ b/config/locales/supplier.nl.yml @@ -21,6 +21,10 @@ nl: qr_codes: link: Print Qr codes has_no_section: "Niet geplaatst" + table: + destroy: + modal: + title: Weet je zeker dat je ${models.table} %{number} wilt verwijderen lists: index: show_all: Toon alle ${models.plural.list} diff --git a/wip.md b/wip.md index 5cc14c02..25f80675 100644 --- a/wip.md +++ b/wip.md @@ -59,3 +59,5 @@ Post release ============ - Chromecast app Waiter app Users can disable their own help request (maak ongedaan?) Users can disable their own bill request (maak ongedaan?) Think about extra confirmation box for these requests Supplier section 100% on ember :) +- Do not destroy tables with active list +- Test list view when table is destroyed