Basic fullcalendar integration
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
@App.modals.BaseController = Ember.ObjectController.extend
|
||||
needs: ['application']
|
||||
alert_message: ""
|
||||
title: (->
|
||||
# return title if directly set by options
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
App.modals.EmployeeEditController = App.modals.BaseController.extend
|
||||
isNotSelf: (->
|
||||
@get('model.id') isnt @get('current_employee.id')
|
||||
).property('model.id')
|
||||
|
||||
colors: (->
|
||||
# taken from http://www.somacon.com/p142.php
|
||||
[
|
||||
'#458B74'
|
||||
'#838B8B'
|
||||
'#8B7D6B'
|
||||
'#00008B'
|
||||
'#8B2323'
|
||||
'#8A2BE2'
|
||||
'#458B00'
|
||||
'#EEAD0E'
|
||||
]
|
||||
).property()
|
||||
actions:
|
||||
setColor: (color)->
|
||||
@set 'model.color', color
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
App.modals.SelectEmployeeController = App.modals.BaseController.extend
|
||||
employee: null
|
||||
employees: (-> @store.all 'employee').property()
|
||||
actions:
|
||||
selectEmployee: (employee)->
|
||||
@set 'employee', employee
|
||||
@send 'ok'
|
||||
@@ -0,0 +1,6 @@
|
||||
App.ScheduleController = Ember.ArrayController.extend
|
||||
event_changed: (event)->
|
||||
@store.find('employee-shift', event.id).then (employee_shift)->
|
||||
employee_shift.set 'start_on', event.start.toDate()
|
||||
employee_shift.set 'end_on', event.end.toDate()
|
||||
employee_shift.save()
|
||||
@@ -0,0 +1,2 @@
|
||||
Ember.Handlebars.helper 'colorbox', (color, options)->
|
||||
"<span class='colorbox-container'><span style='background-color:#{color}'></span></span>".htmlSafe()
|
||||
@@ -0,0 +1,12 @@
|
||||
attr = DS.attr
|
||||
App.EmployeeShift = DS.Model.extend
|
||||
start_on: attr('date')
|
||||
end_on: attr('date')
|
||||
employee: DS.belongsTo 'employee'
|
||||
calendar_event: (->
|
||||
id: @id
|
||||
title: @get('employee.name')
|
||||
start: @get('start_on')
|
||||
end: @get('end_on')
|
||||
color: @get('employee.color')
|
||||
).property('start_on', 'end_on')
|
||||
@@ -4,6 +4,8 @@ App.Employee= DS.Model.extend Ember.Validations.Mixin,
|
||||
email: attr 'string'
|
||||
manager: attr 'boolean', defaultValue: false
|
||||
active: attr 'boolean', defaultValue: true
|
||||
color: attr 'string', defaultValue: '#3a87ad'
|
||||
employee_shifts: DS.hasMany('employee-shift')
|
||||
|
||||
validations:
|
||||
name: {presence: true}
|
||||
|
||||
@@ -17,5 +17,6 @@ App.Router.map ->
|
||||
@route 'orders_display' # chromecast etc
|
||||
@route 'menu'
|
||||
@route 'settings'
|
||||
@route 'schedule'
|
||||
@route 'empty'
|
||||
#@resource 'lists', queryParams: ['state']
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
App.EmployeesRoute = Ember.Route.extend
|
||||
model: -> @store.find 'employee'
|
||||
model: -> @store.all 'employee'
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
App.ScheduleRoute = Ember.Route.extend
|
||||
model: -> @store.find 'employee-shift'
|
||||
@@ -6,6 +6,9 @@
|
||||
tr
|
||||
th.name=t 'attributes.employee.name'
|
||||
th.email=t 'attributes.employee.email'
|
||||
th.boolean= t 'attributes.employee.manager'
|
||||
th.boolean= t 'attributes.employee.active'
|
||||
th.colorbox= t 'attributes.employee.color'
|
||||
th.actions=t 'helpers.actions.title'
|
||||
tbody
|
||||
each employee in employees
|
||||
@@ -14,6 +17,9 @@
|
||||
td.email
|
||||
= employee.email
|
||||
= errors employee.errors.email
|
||||
td.boolean= boolean employee.manager
|
||||
td.boolean= boolean employee.active
|
||||
td.colorbox= colorbox employee.color
|
||||
td.actions
|
||||
can manage sections
|
||||
a.table-edit{ action 'editEmployee' employee }: span
|
||||
|
||||
@@ -15,6 +15,8 @@ header.top-menu
|
||||
= t 'models.plural.list'
|
||||
= link-to "employees" class="top-menu-employees"
|
||||
= t 'models.plural.employee'
|
||||
= link-to "schedule" class="top-menu-schedule"
|
||||
= t 'supplier.top_menu.schedule'
|
||||
.extra-info{action "showSupplierStatusInfo"}
|
||||
.supplier-info-row
|
||||
.counter.supplier-orders-placed-count
|
||||
|
||||
@@ -9,6 +9,20 @@ p=t 'employee.modal.body_header'
|
||||
.form-field
|
||||
= input type="email" valueBinding="model.email" action="save"
|
||||
= errors model.errors.email
|
||||
if isNotSelf
|
||||
.form-row.active
|
||||
.form-label= t 'attributes.employee.manager'
|
||||
.form-field= view "boolean-switch" value=model.manager
|
||||
.form-row.active
|
||||
.form-label= t 'attributes.employee.active'
|
||||
.form-field= view "boolean-switch" value=model.active
|
||||
|
||||
.form-row.active
|
||||
.form-label= t 'attributes.employee.color'
|
||||
.form-field.full
|
||||
span.current-color= colorbox model.color
|
||||
each color in colors
|
||||
a{action "setColor" color}= colorbox color
|
||||
hr
|
||||
button.modal-close{action "close"}=t 'employee.modal.close_button'
|
||||
button.modal-confirm.right{action "save"} disabled=model.isInvalid
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
p Select employee
|
||||
ul.select-employees
|
||||
each employee in employees
|
||||
li.select-employee
|
||||
= employee.name
|
||||
a.employee-selector{action "selectEmployee" employee}: span
|
||||
button.modal-close{action "close"}=t 'employee.select_modal.close_button'
|
||||
@@ -0,0 +1,2 @@
|
||||
.row: .small-12.columns
|
||||
#schedule-placeholder
|
||||
@@ -0,0 +1,30 @@
|
||||
App.ScheduleView = Ember.View.extend
|
||||
classNames: ['schedule-view']
|
||||
didInsertElement: ->
|
||||
placeholder = @$('#schedule-placeholder')
|
||||
controller = @get('controller')
|
||||
events = controller.get('model').map (employee_shift)->employee_shift.get('calendar_event')
|
||||
placeholder.fullCalendar
|
||||
header:
|
||||
left: 'prev,next,today'
|
||||
center: 'title'
|
||||
right: 'month,agendaWeek,agendaDay'
|
||||
selectable: true
|
||||
selectHelper: true
|
||||
select: (start, end)=>
|
||||
controller.modal 'select_employee',
|
||||
ok: ->
|
||||
# this context is SelectEmployeeController
|
||||
if employee = @get('employee')
|
||||
shift = controller.store.createRecord 'employee-shift', start_on: start.toDate(), end_on: end.toDate()
|
||||
shift.set 'employee', employee
|
||||
shift.save()
|
||||
placeholder.fullCalendar('renderEvent', shift.get('calendar_event'), true)
|
||||
editable: true
|
||||
defaultView: 'agendaWeek'
|
||||
events: events
|
||||
timezone: 'UTC'
|
||||
eventDrop: controller.event_changed.bind(controller)
|
||||
eventResize: controller.event_changed.bind(controller)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user