Activate Ember2 for suppliers

This commit is contained in:
2015-08-27 19:52:47 +02:00
parent e71580f349
commit eca4a23c64
79 changed files with 467 additions and 414 deletions
@@ -1,6 +1,7 @@
App.ApplicationView = Ember.View.extend
App.ApplicationView = Ember.Component.extend
layoutName: 'application'
classNames: ['application-view']
didInsertElement: ->
didRender: ->
$('.toggle-side-menu,.side-menu').click ->
menu = $('.side-menu')
toggle = $('.toggle-side-menu')
@@ -1,6 +1,6 @@
App.LanguageSwitcherButtonView = Ember.View.extend
App.ButtonLanguageSwitcherComponent = Ember.Component.extend
tagName: 'a'
templateName: 'components/language-switcher-button'
layoutName: 'components/language-switcher-button'
classNameBindings: ['isCurrent:current']
classNames: ['language-switch-button']
isCurrent: Ember.computed 'locale', 'controller.current_locale', ->
@@ -1,4 +1,4 @@
App.ButtonMarkListHelpedComponent = Ember.View.extend
App.ButtonMarkListHelpedComponent = Ember.Component.extend
layoutName: 'components/button/mark-list-helped'
classNames: ['mark-list-as-helped-button']
classNameBindings: ['content.needs_help:show:hide']
@@ -3,9 +3,8 @@ App.ButtonMarkOrderCancelledComponent = Ember.Component.extend
layoutName: 'components/button/mark-order-cancelled'
classNames: ['mark-order-cancelled-button']
classNameBindings: ['showButton:active:hide']
showButton: Ember.computed 'order.state', ->
state = @get('order.state')
state is 'placed' or state is 'active'
showButton: Ember.computed 'order.list.state', ->
@get('order.list.state') is 'active'
click: ->
@modal 'confirm',
model: @get('order')
@@ -0,0 +1,5 @@
App.DashboardActiveListComponent = Ember.Component.extend
tagName: 'tr'
layoutName: 'dashboard/active-list'
classNameBindings: ['classIdentifier']
classIdentifier: Ember.computed 'list.id', -> "list-row-#{@get('list.id')}"
@@ -0,0 +1,5 @@
App.DashboardActiveOrderComponent = Ember.Component.extend
tagName: 'tr'
layoutName: 'dashboard/active-order'
classNameBindings: ['content.active:active', 'content.delivered:delivered', 'classIdentifier']
classIdentifier: Ember.computed 'order.id', -> "order-row-#{@get('order.id')}"
@@ -1,4 +1,4 @@
App.UploadFileView = Ember.TextField.extend
App.FormFileUploadComponent = Ember.TextField.extend
tagName: 'input'
attributeBindings: ['name']
type: 'file'
@@ -0,0 +1,34 @@
App.MySelectComponent = Ember.Component.extend
# possible passed-in values with their defaults:
layoutName: 'supplier/app/form/my-select'
content: null
prompt: null
optionValuePath: 'id'
optionLabelPath: 'title'
action: Ember.K # action to fire on change
selection: null
identity: true
# shadow the passed-in `selection` to avoid
# leaking changes to it via a 2-way binding
#_selection: Ember.computed.reads('selection')
setContent: (->
@set('content', []) unless @get('content')
).on('init')
actions:
change: ->
selectedIndex = @$('select:first').get(0).selectedIndex
# decrement index by 1 if we have a prompt
hasPrompt = !!@get('prompt')
contentIndex = if hasPrompt then selectedIndex - 1 else selectedIndex
selection = @get('content')[contentIndex]
# set the local, shadowed selection to avoid leaking
# changes to `selection` out via 2-way binding
@set('selection', selection)
#changeCallback(selection) if changeCallback = @get('action')
@@ -1,4 +1,4 @@
App.ListDisplayDateSelectorView = Ember.TextField.extend
App.ListDisplayDateSelectorComponent = Ember.TextField.extend
classNames: 'datepicker'
didInsertElement: ->
setTranslations @$().hide()
@@ -0,0 +1,4 @@
App.ListOrderComponent = Ember.Component.extend
layoutName: 'lists/list-order'
classNames: ['list-order-container']
classNameBindings: ['order.state']
@@ -41,8 +41,8 @@ App.MenuProductComponent = Ember.Component.extend
@get('product').deleteRecord()
else
@get('product.product_variants').forEach (product_variant)->
product_variant.rollback()
@get('product').rollback()
product_variant.rollbackAttributes()
@get('product').rollbackAttributes()
@set 'editMode', false
addProductVariant: ->
product_variant = @get('targetObject.store').createRecord('product_variant')
@@ -1,4 +1,4 @@
App.ModalView = Ember.View.extend
App.ModalView = Ember.Component.extend
layoutName: 'modals/layout'
didInsertElement: ->
@$('input:first').focus()
@@ -0,0 +1,21 @@
App.MyScheduleView = Ember.Component.extend
layoutName: 'my-schedule'
classNames: ['schedule-view']
didInsertElement: ->
placeholder = @$('#schedule-placeholder')
events = @get('globals.current_employee.employee_shifts').map( (employee_shift)->employee_shift.get('calendar_event_for_employee') )
placeholder.fullCalendar
header:
left: 'prev,next,today'
center: 'title'
right: 'agendaDay,agendaWeek,month'
selectable: false
defaultView: 'agendaWeek'
events: events
timezone: 'UTC'
timeFormat: 'H(:mm)'
axisFormat: 'H:mm'
lang: moment.locale()
@@ -1,10 +1,22 @@
App.ScheduleView = Ember.View.extend
App.ScheduleView = Ember.Component.extend
event_changed: (event)->
@get('globals.current_employee').store.findRecord('employee-shift', event.id).then (employee_shift)->
employee_shift.set 'start_from', event.start
employee_shift.set 'end_on', event.end
employee_shift.save()
editEvent: (id, callbacks)->
if employee_shift = @get('globals.current_employee').store.peekRecord('employee-shift', id)
@modal 'employee_shift',
title_path: 'employee_shift.modal.title'
destroy_text_path: 'employee_shift.modal.destroy_confirmation'
model: employee_shift
save: -> callbacks.save.call(@, employee_shift) if callbacks.save
destroy_callback: -> callbacks.destroy.call(@, employee_shift) if callbacks.destroy
classNames: ['schedule-view']
didInsertElement: ->
placeholder = @$('#schedule-placeholder')
controller = @get('controller')
events = @get('globals.current_supplier.employee_shifts').filter((employee_shift) -> employee_shift.get('employee.active') ).map( (employee_shift)->employee_shift.get('calendar_event') )
editable = !!controller.get('globals.current_employee.manager')
editable = !!@get('globals.current_employee.manager')
fullCalendarOptions =
header:
left: 'prev,next,today'
@@ -16,17 +28,17 @@ App.ScheduleView = Ember.View.extend
defaultView: 'agendaWeek'
events: events
timezone: 'UTC'
eventDrop: controller.event_changed.bind(controller)
eventResize: controller.event_changed.bind(controller)
eventDrop: @event_changed.bind(@)
eventResize: @event_changed.bind(@)
dayClick: (date, jsEvent, view)->
jsEvent.preventDefault()
if view.type is 'month'
placeholder.fullCalendar('changeView', 'agendaDay')
placeholder.fullCalendar('gotoDate', date)
false
eventClick: (event)->
eventClick: (event)=>
return unless editable
controller.editEvent event.id,
@editEvent event.id,
save: (shift)->
placeholder.fullCalendar('removeEvents', [event.id])
placeholder.fullCalendar('renderEvent', shift.get('calendar_event'), true)
@@ -39,11 +51,11 @@ App.ScheduleView = Ember.View.extend
fullCalendarOptions.select = (start, end, jsEvent, view) =>
return if view.type is 'month'
format = 'dddd h:mm'
controller.modal 'select_employee',
@modal 'select_employee',
ok: ->
# this context is SelectEmployeeController
if employee = @get('employee')
shift = controller.store.createRecord 'employee-shift', start_from: start, end_on: end
shift = employee.store.createRecord 'employee-shift', start_from: start, end_on: end
shift.set 'employee', employee
shift.save().then ->
placeholder.fullCalendar('renderEvent', shift.get('calendar_event'), true)
@@ -23,7 +23,7 @@ App.SectionElementComponent = Ember.Component.extend DragNDrop.Draggable,
# box size in dots [d]
box_size: (-> (@get('dpm') || 0 ) * @get('section_element.box_size')).property('dpm', 'section_element.box_size')
style: Ember.computed 'offsetX', 'offsetY', 'box_size', 'section_element.rotation', ->
"position:absolute;width:#{@get('box_size')}px;height:#{@get('box_size')}px;left:#{@get('offsetX')}px;top:#{@get('offsetY')}px"
"position:absolute;width:#{@get('box_size')}px;height:#{@get('box_size')}px;left:#{@get('offsetX')}px;top:#{@get('offsetY')}px".htmlSafe()
positionChange: (position)->
dpm = @get('dpm')
return if !dpm or parseFloat(dpm) is 0
@@ -35,7 +35,7 @@ App.SectionTableComponent = Ember.Component.extend DragNDrop.Draggable,
#"position:absolute;width:83px;height:48px;left:#{@get('offsetX')}px;top:#{@get('offsetY')}px"
#).property('offsetX', 'offsetY')
style: Ember.computed 'offsetX', 'offsetY', 'myWidth', 'myHeight', ->
"position:absolute;width:#{@get('myWidth')}px;height:#{@get('myHeight')}px;left:#{@get('offsetX')}px;top:#{@get('offsetY')}px"
"position:absolute;width:#{@get('myWidth')}px;height:#{@get('myHeight')}px;left:#{@get('offsetX')}px;top:#{@get('offsetY')}px".htmlSafe()
draggable: Ember.computed.alias 'section.editmode'
positionChange: (position)->
@@ -52,7 +52,7 @@ App.SectionTableComponent = Ember.Component.extend DragNDrop.Draggable,
table = @get('table')
@modal 'table_edit',
model: table
close: -> table.rollback()
close: -> table.rollbackAttributes()
else
@$('.table-actions').toggle() if @$el.hasClass('occupied')
false
@@ -0,0 +1,4 @@
App.SectionsHeaderSectionComponent = Ember.Component.extend
tagName: 'dd'
attributeBindings: ['dataSectionId:data-section']
dataSectionId: Ember.computed 'section.id', -> @get('section.id')
@@ -3,15 +3,15 @@ App.SectionsHeaderComponent = Ember.Component.extend
sections: (-> @get('targetObject.store').peekAll('section') ).property()
actions:
setSection: (section)->
if section and section is @get('section')
if section and section is @get('active_section')
# click on already active section
#return @transitionTo('section', section.id)
#return App.Router.router.transitionTo('section', section)
return @get('targetObject').transitionToRoute('section', section)
@$('dd').removeClass('active')
@$("[data-section=#{if section then section.id else 'all'}]").addClass('active')
@set('section', section)
@set('active_section', section)
didInsertElement: ->
@$('dd').removeClass('active')
section = @get('section')
section = @get('active_section')
@$("[data-section=#{if section then section.id else 'all'}]").addClass('active')
@@ -1,6 +1,6 @@
App.TableNumberWithInfoView = Ember.View.extend
App.TableNumberWithInfoComponent = Ember.Component.extend
tagName: 'span'
templateName: 'table_number_with_info'
layoutName: 'table_number_with_info'
classNames: 'table-number-with-info'
click: ->
$el = $(@get('element')).find('.extra-list-info')
@@ -9,7 +9,7 @@ App.IndexController = Ember.Controller.extend
if section_id = @get('active_section.id')
lists = @get('lists').filter (l)=>( l.get('section.id') == section_id && l.get('state') == 'active' )
else
lists = @get('lists').filterProperty('state', 'active')
lists = @get('lists').filterBy('state', 'active')
lists.sortBy('created_at') # Not reversed, oldest on top, start with oldest order first :-) Customer happyness
).property('lists.@each.state', 'active_section.id')
@@ -16,7 +16,7 @@ App.MenuController = Ember.Controller.extend
editProductCategory: (product_category)->
@modal 'product_category_edit',
model: product_category
close: -> product_category.rollback()
close: -> product_category.rollbackAttributes()
destroy_text_path: 'product_category.modal.destroy_confirm_text'
moveProductCategory: (product_category)->
@@ -1,3 +1,3 @@
App.MyScheduleController = Ember.Controller.extend
actions:
debugger: -> debugger
#App.MyScheduleController = Ember.Controller.extend
# actions:
# debugger: -> debugger
@@ -1,14 +1,14 @@
App.ScheduleController = Ember.Controller.extend
event_changed: (event)->
@store.findRecord('employee-shift', event.id).then (employee_shift)->
employee_shift.set 'start_from', event.start
employee_shift.set 'end_on', event.end
employee_shift.save()
editEvent: (id, callbacks)->
if employee_shift = @store.peekRecord('employee-shift', id)
@modal 'employee_shift',
title_path: 'employee_shift.modal.title'
destroy_text_path: 'employee_shift.modal.destroy_confirmation'
model: employee_shift
save: -> callbacks.save.call(@, employee_shift) if callbacks.save
destroy_callback: -> callbacks.destroy.call(@, employee_shift) if callbacks.destroy
#App.ScheduleController = Ember.Controller.extend
# event_changed: (event)->
# @store.findRecord('employee-shift', event.id).then (employee_shift)->
# employee_shift.set 'start_from', event.start
# employee_shift.set 'end_on', event.end
# employee_shift.save()
# editEvent: (id, callbacks)->
# if employee_shift = @store.peekRecord('employee-shift', id)
# @modal 'employee_shift',
# title_path: 'employee_shift.modal.title'
# destroy_text_path: 'employee_shift.modal.destroy_confirmation'
# model: employee_shift
# save: -> callbacks.save.call(@, employee_shift) if callbacks.save
# destroy_callback: -> callbacks.destroy.call(@, employee_shift) if callbacks.destroy
@@ -1,30 +1,32 @@
App.SectionController = Ember.Controller.extend
#needs: ['application', 'sections', 'section'] #wtf? section, otherwise an Ember error
actions:
makeEditable: -> @set('model.editmode', true)
makeEditable: ->
@set('model.editmode', true)
false
finishEditable: ->
@set('model.editmode', false)
@get('model').save()
@get('model.tables').filterProperty('hasDirtyAttributes').invoke 'save'
@get('model.section_elements').filterProperty('hasDirtyAttributes').invoke 'save'
@get('model.section_areas').filterProperty('hasDirtyAttributes').invoke 'save'
@get('model.tables').filterBy('hasDirtyAttributes').invoke 'save'
@get('model.section_elements').filterBy('hasDirtyAttributes').invoke 'save'
@get('model.section_areas').filterBy('hasDirtyAttributes').invoke 'save'
rollbackEditable: ->
@get('model').rollback()
@get('model').rollbackAttributes()
@get('model.tables').forEach (table) ->
if table.get('isNew')
table.deleteRecord()
else
table.rollback()
table.rollbackAttributes()
@get('model.section_elements').forEach (section_element) ->
if section_element.get('isNew')
section_element.deleteRecord()
else
section_element.rollback()
section_element.rollbackAttributes()
@get('model.section_areas').forEach (section_area) ->
if section_area.get('isNew')
section_area.deleteRecord()
else
section_area.rollback()
section_area.rollbackAttributes()
@set('model.editmode', false)
addSection: -> @modal 'add_section', model: @get('model')
addTables: -> @modal 'section_add_tables', model: @get('model')
@@ -51,7 +53,7 @@ App.SectionController = Ember.Controller.extend
if section_area.get('isNew')
section_area.deleteRecord()
else
section_area.rollback()
section_area.rollbackAttributes()
textures: ['wood1', 'wood2']
#sections: (-> @get('controllers.sections.model')).property('controllers.sections.model')
@@ -1,13 +1,14 @@
App.SettingsController = Ember.Controller.extend
supplier: Ember.computed.alias 'globals.current_supplier'
#supplier: Ember.computed.alias 'globals.current_supplier'
time_zones: (-> window.time_zones ).property()
countries: (-> window.countries ).property()
countries: (-> window.countries.map (el)-> el.name ).property()
saving: false
editIensProfile: (-> @get('supplier.country') is 'Netherlands' ).property('supplier.country')
editIensProfile: Ember.computed 'globals.current_supplier.country', ->
@get('globals.current_supplier.country') is 'Netherlands'
actions:
saveSettings: ->
@set 'saving', true
@get('supplier').save().then (supplier) =>
@get('globals.current_supplier').save().then (supplier) =>
@set 'saving', false
$('.top-menu .supplier-name').text @get('supplier.name')
#$('.top-menu .supplier-name').text @get('globals.current_supplier.name')
@transitionToRoute 'index'
@@ -0,0 +1,2 @@
App.IsEqualHelper = Ember.Helper.helper ([lhs, rhs])->
lhs is rhs
@@ -0,0 +1,2 @@
App.IsNotHelper = Ember.Helper.helper ([value])->
return !value
@@ -0,0 +1,2 @@
App.ReadPathHelper = Ember.Helper.helper ([object, path])->
Ember.get(object, path)
@@ -40,7 +40,6 @@ App.List = DS.Model.extend
).property('relevant_orders.@each.total')
has_active_orders: (->
return false unless @get('state') == 'active'
#!!@get('orders').filterProperty('state', 'active').length
!!@get('orders').filter( (order) -> order.get('state') is 'active' or order.get('state') is 'placed').length
).property('state', 'orders.@each.state')
close: ->
@@ -13,4 +13,3 @@ ControllerExtensions = Ember.Mixin.create
all_sections: (-> @store.peekAll('section')).property()
Ember.Controller.reopen ControllerExtensions
Ember.ArrayController.reopen ControllerExtensions # Added for auto generated employeesController Ember 1,13.5
@@ -110,7 +110,7 @@ App.ApplicationRoute = Ember.Route.extend
editTable: (table)->
@send 'openModal', 'table_edit',
model: table
close: -> table.rollback()
close: -> table.rollbackAttributes()
events:
list_needs_help: (data) ->
if list = @store.getById('list', data.id)
@@ -11,7 +11,7 @@ App.EmployeesRoute = Ember.Route.extend
@get('controller').modal 'employee_edit',
model: employee
title_path: 'employee.modal.edit_title'
close: -> employee.rollback()
close: -> employee.rollbackAttributes()
destroyEmployee: (employee)->
ac = @controllerFor('application')
if ac.get('employee.id') isnt employee.id
@@ -16,7 +16,7 @@
# controller.set('model', model)
# #$('#section_selector').on 'change', (-> controller.set('sectionId', $(this).val()))
# #controller.set 'lists', @store.peekAll('list')
# #controller.set 'lists', App.List.all() #.filterProperty('state', 'active')
# #controller.set 'lists', App.List.all() #.filterBy('state', 'active')
# #controller.set 'orders', App.Order.all()
# #controller.set 'lists', model.get('lists')
# #controller.set 'orders', model.get('orders')
@@ -7,4 +7,4 @@ App.CssObject = Ember.Object.extend
if @pixel_fields.indexOf(k) > -1
v = "#{v}px" if @isNumeric.test(v)
ret += "#{k}:#{v};"
ret
ret.htmlSafe()
@@ -20,14 +20,7 @@ if list.closed_at
if list.sorted_orders
.list-orders-container
each list.sorted_orders as |order|
.list-order-container class=order.state
= order.display
span.currency= currency order.total
span.created_at= time order.created_at
.list-order-actions
= button-mark-order-active order=order
= button-mark-order-delivered order=order
= button-mark-order-cancelled order=order
= list-order order=order
if showTotal
.list-orders-total.total
= t 'general.total'
@@ -1,25 +0,0 @@
td.user-info.show-for-large-up
each view.content.users as |user|
= user.avatar_tag
td.status-icons
if view.content.needs_help
span.icon.needs-help
if view.content.needs_payment
|
span.icon.needs-payment
td.numeric.table_number= view "table-number-with-info" contextBinding="view.content"
td.section_title: link-to 'section' view.content.table.section.id: span=view.content.table.section.title
td.currency.total_list_amount=currency view.content.total
td.actions
/ if view.content.needs_help
button.mark-list-as-helped-button{ action "markListAsHelped" view.content.id}
span.fa-stack.fa-2x.fa-stack-sized
i.fa.fa-bell.fa-stack-small
i.fa.fa-ban.revoke
/= view "mark-list-helped-button" content=view.content
= button-mark-list-helped content=view.content
/= view "remove-list-needs-payment" content=view.content
/= view "close-list-button" content=view.content
= button-close-list content=view.content
button.show-list.button{action "showList" view.content.id}: span
@@ -1,15 +0,0 @@
td.user-info.show-for-large-up
each view.content.list.users as |user|
= user.avatar_tag
td.status-icons
if view.content.active
span.active-order.fa.fa-check.fa-lg
td= view.content.display
td.numeric.table_number= view "table-number-with-info" contextBinding="view.content.list"
td.section_title= link-to 'section' view.content.list.table.section.id: span=view.content.list.table.section.title
td.currency=currency view.content.total
td.time= time view.content.created_at format="HH:mm"
td.actions
= button-mark-order-active order=view.content
= button-mark-order-delivered order=view.content
= button-mark-order-cancelled order=view.content
@@ -2,6 +2,6 @@ if gravatar
span.dropdown-trigger.gravatar= gravatar-image gravatar
else
span.dropdown-trigger.button.tiny.dropdown
span.dropdown-trigger-text= view.title
span.dropdown-trigger-text= title
.dropdown-list-container
= yield
@@ -1 +1 @@
= flag view.locale
= flag locale
@@ -1,2 +1,2 @@
each locales as |locale|
view "language-switcher-button" locale=locale
= button-language-switcher locale=locale
@@ -19,7 +19,7 @@ if editMode
= descriptionPlaceholder
= textarea value=product.description placeholder=descriptionPlaceholder
.small-12.medium-6.columns
= view "upload-file" name="image" accept="image/*" file=product.image
= form-file-upload name="image" accept="image/*" file=product.image
img src=product.image_src
each product.product_variants as |product_variant|
.row
@@ -9,7 +9,7 @@ else
.menu-time-preview-selection-container
a.close-time-preview-handle{action "closeTimePreview"}: span
h4= t 'product_category.time_preview.title'
= view "select" content=daysContent optionValuePath="content.value" optionLabelPath="content.text" selection=preview_day prompt=" -- "
= my-select content=daysContent optionValuePath="value" optionLabelPath="text" selection=preview_day prompt=" -- "
br
= boolean-button value=preview_full_day reverse=true text_path="product_category.time_preview.active_at"
unless preview_full_day
@@ -1,7 +1,8 @@
dl.sections-header-container.sub-nav
dd data-section="all": a.section-header-title{action "setSection"} href="" = t 'sections_header.all_sections'
each sections as |section|
dd data-section=section.id
a.section-header-title{action "setSection" section} href="#" = section.title
= sections-header-section section=section
a.section-header-title{action "setSection" section} href="#"
= section.title
/= link-to "section" section.id class="section-jumper"
span.fa.fa-chevron-circle-right
@@ -0,0 +1,26 @@
td.user-info.show-for-large-up
h3= list.users.length
each list.users as |user|
= user.avatar_tag
td.status-icons
if list.needs_help
span.icon.needs-help
if list.needs_payment
|
span.icon.needs-payment
td.numeric.table_number= table-number-with-info list=list
td.section_title: link-to 'section' list.table.section.id: span=list.table.section.title
td.currency.total_list_amount=currency list.total
td.actions
/ if list.needs_help
button.mark-list-as-helped-button{ action "markListAsHelped" list.id}
span.fa-stack.fa-2x.fa-stack-sized
i.fa.fa-bell.fa-stack-small
i.fa.fa-ban.revoke
/= view "mark-list-helped-button" content=list
= button-mark-list-helped content=list
/= view "remove-list-needs-payment" content=list
/= view "close-list-button" content=list
= button-close-list content=list
button.show-list.button{action "showList" list.id}: span
@@ -0,0 +1,15 @@
td.user-info.show-for-large-up
each order.list.users as |user|
= user.avatar_tag
td.status-icons
if order.active
span.active-order.fa.fa-check.fa-lg
td= order.display
td.numeric.table_number= table-number-with-info list=order.list
td.section_title= link-to 'section' order.list.table.section.id: span=order.list.table.section.title
td.currency=currency order.total
td.time= time order.created_at format="HH:mm"
td.actions
= button-mark-order-active order=order
= button-mark-order-delivered order=order
= button-mark-order-cancelled order=order
@@ -14,6 +14,6 @@
.display-field: span.current-color= colorbox model.color
.page-actions
.small-12.columns
link-to 'employees' class="button"
= link-to 'employees' class="button"
span=t 'models.plural.employee'
a.edit-button{ action 'editEmployee' model}= t 'helpers.links.edit'
@@ -1,2 +1,2 @@
= input type="checkbox" id=view.switchId checked=value
= input type="checkbox" id=switchId checked=value
label for=switchId
@@ -0,0 +1,20 @@
<select {{action 'change' on='change'}}>
{{#if prompt}}
<option selected={{is-not selection}}>
{{prompt}}
</option>
{{/if}}
{{#if identity}}
{{#each content key="@identity" as |item|}}
<option value="{{read-path item optionValuePath}}" selected={{is-equal item selection}}>
{{read-path item optionLabelPath}}
</option>
{{/each}}
{{else}}
{{#each content key="@index" as |item|}}
<option value="{{item}}" selected={{is-equal item selection}}>
{{item}}
</option>
{{/each}}
{{/if}}
</select>
@@ -1,6 +1,4 @@
.row.select-minute-of-day
.small-5.columns
view "select" content=view.hours_list value=view.hour
.small-1.columns: span :
.small-5.columns.end
view "select" content=view.minutes_list value=view.minute
.small-5.columns= my-select content=hours_list selection=hour identity=false
.small-1.columns: span
.small-5.columns.end= my-select content=minutes_list selection=minute identity=false
@@ -1,15 +1,11 @@
.row: .small-12.columns
= sections-header section=globals.active_section
= sections-header active_section=globals.active_section
if (can "manage" globals.current_supplier)
unless globals.current_supplier.open
.alert-box.alert.radius data-alert=true
= t 'supplier.you_are_currently_closed_alert'
a{ action "markSupplierOpen" }= t 'supplier.open_for_orders'
.page-header
div.dashboard-section-selection
/App.HomeSectionSelectorView selectionBinding="globals.active_section" content=controller.sections prompt=globals.current_supplier.name
/= home-section-selector sectionBinding="globals.active_section"
/= view "home-section-jumper"
if active_lists.length
h3.dashboard-lists-header{action "toggleDashboardLists"}
if show_lists
@@ -32,7 +28,9 @@
th.actions
tbody
each active_lists as |list|
= view "active-list" content=list
tr
td= list.users.length
= dashboard-active-list list=list
.page-header
if active_orders.length
h3.dashboard-orders-header{action "toggleDashboardOrders"}
@@ -58,4 +56,4 @@
th.actions
tbody
each active_orders as |order|
= view "active-order" content=order
= dashboard-active-order order=order
@@ -1,6 +1,6 @@
.row: .small-12.columns
h2.main-section-header=t 'models.plural.list'
= view "list-display-date-selector" valueBinding="date"
= list-display-date-selector value=date
if sorted_lists
table.table
thead
@@ -0,0 +1,7 @@
= order.display
span.currency= currency order.total
span.created_at= time order.created_at
.list-order-actions
= button-mark-order-active order=order
= button-mark-order-delivered order=order
= button-mark-order-cancelled order=order
@@ -4,7 +4,7 @@ p=t 'table.modal.body_header'
.form-field= number-field numericValue=model.number
.form-row.section
.form-label=t 'models.section'
.form-field= view "select" content=sections selectionBinding="model.section" optionLabelPath="content.title" optionValuePath="content.id"
.form-field= my-select content=sections selection=model.section optionLabelPath="title" optionValuePath="id"
.form-row.width
.form-label=t 'attributes.table.width'
.form-field= number-field numericValue=model.width
@@ -1,4 +1,4 @@
= sections-header sectionBinding="section"
= sections-header active_section=section
table.table
thead
tr
@@ -19,7 +19,9 @@ table.table
if order.active
span.active-order.fa.fa-check.fa-lg
td= order.display
td.numeric.table_number: App.TableNumberWithInfoView contextBinding="order.list"
td.section_title: link-to 'section' order.list.table.section.id: span=order.list.table.section.title
td.numeric.table_number=table-number-with-info list=order.list
td.section_title
= link-to 'section' order.list.table.section.id
span=order.list.table.section.title
td.currency=currency order.total
td.time= time order.created_at format="HH:mm"
@@ -1,4 +1,4 @@
.row: .small-12.columns
h2.main-section-header=model.title
/= page-body model.body
view "page-body" templateBody=model.body
= page-body templateBody=model.body
@@ -1,10 +1,10 @@
.row: .small-12.columns: h2=t 'settings.title'
.form-row
.form-label: label=t 'attributes.supplier.name'
.form-field= input type="text" value=supplier.name class="supplier-name"
.form-field= input type="text" value=globals.current_supplier.name class="supplier-name"
.form-row
.form-label: label=t 'attributes.supplier.email'
.form-field= input value=supplier.email type="email" class="supplier-email"
.form-field= input value=globals.current_supplier.email type="email" class="supplier-email"
/input.location_picker name="location" type="text" valueBinding="location"
/.form-row
.location_picker_map
@@ -16,24 +16,24 @@
.form-label: label=t 'attributes.supplier.address'
.form-field.full
.row
.large-8.medium-8.columns= input value=supplier.address
.large-8.medium-8.columns= input value=globals.current_supplier.address
.large-1.show-for-large-up.columns &nbsp;
.large-2.medium-2.small-3.columns= number-field numericValue=supplier.house_number
.large-1.medium-2.small-2.columns= input value=supplier.house_number_addition
.large-2.medium-2.small-3.columns= number-field numericValue=globals.current_supplier.house_number
.large-1.medium-2.small-2.columns= input value=globals.current_supplier.house_number_addition
.form-row
.form-label: label=t 'attributes.supplier.postal_code'
.form-field= input value=supplier.postal_code
.form-field= input value=globals.current_supplier.postal_code
.form-row
.form-label: label=t 'attributes.supplier.city'
.form-field= input value=supplier.city
.form-field= input value=globals.current_supplier.city
.form-row
.form-label: label=t 'attributes.supplier.country'
.form-field: view "select" content=countries optionValuePath="content.name" optionLabelPath="content.name" value=supplier.country
.form-field: my-select content=countries selection=globals.current_supplier.country identity=false
if editIensProfile
.form-row
.form-label: label=t 'attributes.supplier.iens_profile'
.form-field
= number-field numericValue=supplier.iens_profile
= number-field numericValue=globals.current_supplier.iens_profile
= image-tag 'supplier/settings/iens-example.png'
span=t "settings.reviews.explanation"
.row: .small-12.columns= language-switcher
@@ -1,3 +1,3 @@
.number= table.number
.number= list.table.number
.extra-list-info
span.loading.medium
@@ -1,5 +0,0 @@
App.ActiveListView = Ember.View.extend
tagName: 'tr'
templateName: 'active_list'
classNameBindings: ['classIdentifier']
classIdentifier: (-> "list-row-#{@get('content.id')}").property()
@@ -1,6 +0,0 @@
App.ActiveOrderView = Ember.View.extend
tagName: 'tr'
templateName: 'active_order'
classNameBindings: ['content.active:active', 'content.delivered:delivered', 'classIdentifier']
classIdentifier: (-> "order-row-#{@get('content.id')}").property()
didInsertElement: ->
@@ -1,10 +1,10 @@
App.MarkOrderCancelledView = Ember.View.extend
tagName: 'button'
templateName: 'buttons/mark-order-cancelled'
classNames: ['mark-order-cancelled-button']
classNameBindings: ['showButton:active:hide']
showButton: Ember.computed 'order.state', ->
state = @get('order.state')
state is 'placed' or state is 'active'
click: -> @get('order').mark_cancelled()
#App.MarkOrderCancelledView = Ember.View.extend
# tagName: 'button'
# templateName: 'buttons/mark-order-cancelled'
# classNames: ['mark-order-cancelled-button']
# classNameBindings: ['showButton:active:hide']
# showButton: Ember.computed 'order.state', ->
# state = @get('order.state')
# state is 'placed' or state is 'active'
# click: -> @get('order').mark_cancelled()
#
@@ -1,43 +0,0 @@
App.MyScheduleView = Ember.View.extend
classNames: ['schedule-view']
didInsertElement: ->
placeholder = @$('#schedule-placeholder')
controller = @get('controller')
events = @get('globals.current_employee.employee_shifts').map( (employee_shift)->employee_shift.get('calendar_event_for_employee') )
placeholder.fullCalendar
header:
left: 'prev,next,today'
center: 'title'
right: 'agendaDay,agendaWeek,month'
selectable: false
#selectHelper: true
#select: (start, end)=>
#format = 'dddd h:mm'
#controller.modal 'select_employee',
#ok: ->
##this context is SelectEmployeeController
#if employee = @get('employee')
#shift = controller.store.createRecord 'employee-shift', start_from: start, end_on: end
#shift.set 'employee', employee
#shift.save().then ->
#placeholder.fullCalendar('renderEvent', shift.get('calendar_event'), true)
#header: t('employee_shift.time_window', start: start.format(format), end: end.format(format))
#editable: true
defaultView: 'agendaWeek'
events: events
timezone: 'UTC'
#eventDrop: controller.event_changed.bind(controller)
#eventResize: controller.event_changed.bind(controller)
#eventClick: (event)->
#controller.editEvent event.id,
#save: (shift)->
#placeholder.fullCalendar('removeEvents', [event.id])
#placeholder.fullCalendar('renderEvent', shift.get('calendar_event'), true)
#destroy: (shift)->
#placeholder.fullCalendar('removeEvents', [event.id])
timeFormat: 'H(:mm)'
axisFormat: 'H:mm'
lang: moment.locale()
@@ -1,11 +1,11 @@
App.PageBodyView = Ember.View.extend
setTemplate: (->
body = @get('templateBody')
body ||= ""
try
template = Ember.Handlebars.compile(body)
catch
template = Ember.Handlebars.compile(tspan('page.cannot_compile'))
@set 'template', template
@rerender()
).on('init').observes('templateBody')
#App.PageBodyView = Ember.View.extend
# setTemplate: (->
# body = @get('templateBody')
# body ||= ""
# try
# template = Ember.Handlebars.compile(body)
# catch
# template = Ember.Handlebars.compile(tspan('page.cannot_compile'))
# @set 'template', template
# @rerender()
# ).on('init').observes('templateBody')
@@ -1,7 +1,7 @@
App.RemoveListNeedsPaymentView = Ember.View.extend
templateName: 'remove_list_needs_payment_button'
classNames: ['remove_list_needs_payment']
classNameBindings: ['content.needs_payment:show:hide']
tagName: 'button'
click: (e)->
@get('content').then (l)->l.remove_needs_payment()
#App.RemoveListNeedsPaymentView = Ember.View.extend
# templateName: 'remove_list_needs_payment_button'
# classNames: ['remove_list_needs_payment']
# classNameBindings: ['content.needs_payment:show:hide']
# tagName: 'button'
# click: (e)->
# @get('content').then (l)->l.remove_needs_payment()
@@ -1,90 +1,90 @@
App.SettingsView = Ember.View.extend
templateName: 'settings'
didInsertElement: ->
return
iconBase = 'https://maps.google.com/mapfiles/kml/'
#location_input = @$('.location_picker')
#map_div = $('<div>').addClass("location_picker_map")
map_div = @$('.location_picker_map')
#location_input.before(map_div)
#this.parentNode.insertBefore(map_div, this)
#location_input.hide()
#lat = 52.07436798080633
#lng = 4.316811561584473
#if @get('controller.location') and @get('controller.location').split(',').length == 2
#values = @get('controller.location').split(',')
#lat = values[0]
#lng = values[1]
lat = @get('controller.model.lat')
lng = @get('controller.model.lng')
center = new google.maps.LatLng(lat,lng)
mapOptions =
zoom: 15
center: center
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoomControl: true
zoomControlOptions:
style: google.maps.ZoomControlStyle.SMALL
mapTypeControl: false
panControl: false
scaleControl: false
streetViewControl: false
map = new google.maps.Map(map_div.get(0), mapOptions)
marker = new google.maps.Marker(
position: center
map: map
title: 'Location'
icon: '/assets/icons/maps_location.png'
)
google.maps.event.addListener(map, 'click', (point)=>
marker.setPosition(point.latLng)
#location_input.val point.latLng.lat() + ','+ point.latLng.lng()
@set 'controller.model.lat', point.latLng.lat()
@set 'controller.model.lng', point.latLng.lng()
)
search_field = $('<input type="text">')
search_field.addClass('location_picker_search')
autocomplete = new google.maps.places.Autocomplete(search_field.get(0))
autocomplete.bindTo('bounds', map)
search_field.keypress( (e) ->
if e.which == 13
e.preventDefault()
)
window.autocomplete = autocomplete
map_div.before(search_field)
infowindow = new google.maps.InfoWindow()
search_marker = new google.maps.Marker({map: map, icon: iconBase + 'shapes/placemark_circle.png'})
google.maps.event.addListener autocomplete, 'place_changed', ->
infowindow.close()
search_marker.setVisible(false)
place = autocomplete.getPlace()
return unless place.geometry
#if place.geometry.viewport
# map.fitBounds(place.geometry.viewport)
#else
map.setCenter(place.geometry.location)
map.setZoom(17)
image =
url: place.icon
size: new google.maps.Size(71, 71)
origin: new google.maps.Point(0, 0)
anchor: new google.maps.Point(17, 34)
scaledSize: new google.maps.Size(35, 35)
#search_marker.setIcon(image)
search_marker.setPosition(place.geometry.location)
search_marker.setVisible(true)
address = ''
if place.address_components
address = [
(place.address_components[0] && place.address_components[0].short_name || ''),
(place.address_components[1] && place.address_components[1].short_name || ''),
(place.address_components[2] && place.address_components[2].short_name || '')
].join(' ')
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address + '</div>')
infowindow.open(map, search_marker)
#App.SettingsView = Ember.View.extend
# templateName: 'settings'
# didInsertElement: ->
# return
#
# iconBase = 'https://maps.google.com/mapfiles/kml/'
# #location_input = @$('.location_picker')
# #map_div = $('<div>').addClass("location_picker_map")
# map_div = @$('.location_picker_map')
#
# #location_input.before(map_div)
# #this.parentNode.insertBefore(map_div, this)
# #location_input.hide()
#
# #lat = 52.07436798080633
# #lng = 4.316811561584473
# #if @get('controller.location') and @get('controller.location').split(',').length == 2
# #values = @get('controller.location').split(',')
# #lat = values[0]
# #lng = values[1]
# lat = @get('controller.model.lat')
# lng = @get('controller.model.lng')
# center = new google.maps.LatLng(lat,lng)
# mapOptions =
# zoom: 15
# center: center
# mapTypeId: google.maps.MapTypeId.ROADMAP,
# zoomControl: true
# zoomControlOptions:
# style: google.maps.ZoomControlStyle.SMALL
# mapTypeControl: false
# panControl: false
# scaleControl: false
# streetViewControl: false
#
# map = new google.maps.Map(map_div.get(0), mapOptions)
# marker = new google.maps.Marker(
# position: center
# map: map
# title: 'Location'
# icon: '/assets/icons/maps_location.png'
# )
# google.maps.event.addListener(map, 'click', (point)=>
# marker.setPosition(point.latLng)
# #location_input.val point.latLng.lat() + ','+ point.latLng.lng()
# @set 'controller.model.lat', point.latLng.lat()
# @set 'controller.model.lng', point.latLng.lng()
# )
#
# search_field = $('<input type="text">')
# search_field.addClass('location_picker_search')
# autocomplete = new google.maps.places.Autocomplete(search_field.get(0))
# autocomplete.bindTo('bounds', map)
# search_field.keypress( (e) ->
# if e.which == 13
# e.preventDefault()
# )
# window.autocomplete = autocomplete
# map_div.before(search_field)
# infowindow = new google.maps.InfoWindow()
# search_marker = new google.maps.Marker({map: map, icon: iconBase + 'shapes/placemark_circle.png'})
# google.maps.event.addListener autocomplete, 'place_changed', ->
# infowindow.close()
# search_marker.setVisible(false)
# place = autocomplete.getPlace()
# return unless place.geometry
# #if place.geometry.viewport
# # map.fitBounds(place.geometry.viewport)
# #else
# map.setCenter(place.geometry.location)
# map.setZoom(17)
# image =
# url: place.icon
# size: new google.maps.Size(71, 71)
# origin: new google.maps.Point(0, 0)
# anchor: new google.maps.Point(17, 34)
# scaledSize: new google.maps.Size(35, 35)
# #search_marker.setIcon(image)
# search_marker.setPosition(place.geometry.location)
# search_marker.setVisible(true)
#
# address = ''
# if place.address_components
# address = [
# (place.address_components[0] && place.address_components[0].short_name || ''),
# (place.address_components[1] && place.address_components[1].short_name || ''),
# (place.address_components[2] && place.address_components[2].short_name || '')
# ].join(' ')
# infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address + '</div>')
# infowindow.open(map, search_marker)