rsence-pre 3.0.0.8 → 3.0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/client/conf/client_pkg.yaml +6 -2
  4. data/client/js/comm/queue/queue.js +32 -44
  5. data/client/js/comm/transporter/transporter.js +24 -16
  6. data/client/js/comm/values/values.js +27 -15
  7. data/client/js/controls/button/button.coffee +14 -5
  8. data/client/js/controls/button/themes/default/button.css +4 -2
  9. data/client/js/controls/checkbox/checkbox.js +4 -4
  10. data/client/js/controls/dialogs/sheet/sheet.js +11 -11
  11. data/client/js/controls/dialogs/sheet/themes/default/sheet.html +1 -1
  12. data/client/js/controls/imageview/imageview.js +15 -15
  13. data/client/js/controls/numerictextcontrol/numerictextcontrol.coffee +32 -10
  14. data/client/js/controls/onoffbutton/onoffbutton.coffee +5 -5
  15. data/client/js/controls/progress/progressbar/progressbar.js +6 -7
  16. data/client/js/controls/progress/progressbar/themes/default/progressbar.css +4 -4
  17. data/client/js/controls/progress/progressbar/themes/default/progressbar.html +1 -2
  18. data/client/js/controls/sliders/slider/slider.js +74 -79
  19. data/client/js/controls/stepper/stepper.js +31 -31
  20. data/client/js/controls/stringview/stringview.js +20 -8
  21. data/client/js/controls/tab/tab.js +57 -63
  22. data/client/js/controls/tab/themes/default/tab.html +4 -1
  23. data/client/js/controls/textcontrol/textcontrol.coffee +13 -3
  24. data/client/js/controls/validatorview/validatorview.js +4 -4
  25. data/client/js/controls/window/window.js +43 -56
  26. data/client/js/core/class/class.js +25 -23
  27. data/client/js/core/elem/elem.coffee +8 -1
  28. data/client/js/core/rsence_ns/rsence_ns.coffee +6 -2
  29. data/client/js/core/util/util_methods/util_methods.coffee +57 -15
  30. data/client/js/datetime/calendar/calendar.coffee +196 -199
  31. data/client/js/datetime/calendar/themes/default/calendar.css +81 -159
  32. data/client/js/datetime/calendar/themes/default/calendar.html +9 -18
  33. data/client/js/datetime/datepicker/datepicker.coffee +18 -3
  34. data/client/js/datetime/datetimepicker/datetimepicker.coffee +6 -1
  35. data/client/js/datetime/datetimevalue/datetimevalue.coffee +194 -0
  36. data/client/js/datetime/momentjs/momentjs.js +310 -76
  37. data/client/js/datetime/timepicker/timepicker.coffee +6 -1
  38. data/client/js/datetime/timesheet/timesheet.js +59 -61
  39. data/client/js/foundation/control/control.js +45 -44
  40. data/client/js/foundation/control/controldefaults/controldefaults.js +13 -9
  41. data/client/js/foundation/control/dyncontrol/dyncontrol.js +45 -57
  42. data/client/js/foundation/control/eventresponder/eventresponder.js +97 -97
  43. data/client/js/foundation/control/valuematrix/valuematrix.js +13 -13
  44. data/client/js/foundation/eventmanager/eventmanager.coffee +50 -32
  45. data/client/js/foundation/geom/rect/rect.js +43 -32
  46. data/client/js/foundation/locale_settings/locale_settings.js +36 -25
  47. data/client/js/foundation/system/system.js +79 -67
  48. data/client/js/foundation/thememanager/thememanager.coffee +11 -1
  49. data/client/js/foundation/value/pullvalue/pullvalue.coffee +7 -0
  50. data/client/js/foundation/value/pushvalue/pushvalue.coffee +25 -0
  51. data/client/js/foundation/value/value.js +22 -15
  52. data/client/js/foundation/view/view.js +94 -55
  53. data/client/js/foundation/view/viewdefaults/viewdefaults.js +5 -1
  54. data/client/js/lists/listitems/listitems.js +26 -4
  55. data/client/js/menus/combobox/combobox.coffee +55 -0
  56. data/client/js/menus/minimenu/minimenu.js +61 -30
  57. data/client/js/menus/minimenu/themes/default/minimenu.css +1 -6
  58. data/client/js/menus/minimenu/themes/default/minimenu.html +5 -4
  59. data/client/js/menus/minimenuitem/minimenuitem.js +6 -6
  60. data/client/js/menus/popupmenu/themes/default/popupmenu.css +1 -6
  61. data/client/js/menus/popupmenu/themes/default/popupmenu.html +5 -4
  62. data/client/js/tables/table/table.coffee +109 -64
  63. data/client/js/tables/table/themes/default/table.css +4 -0
  64. data/lib/rsence/msg.rb +64 -64
  65. data/lib/rsence/plugins/plugin.rb +68 -52
  66. data/lib/rsence/session/sequel_sessionstorage.rb +5 -5
  67. data/lib/rsence/value.rb +79 -59
  68. data/plugins/client_pkg/lib/client_pkg_build.rb +5 -1
  69. data/plugins/client_pkg/lib/client_pkg_serve.rb +40 -32
  70. data/plugins/main/js/main.js +46 -28
  71. metadata +6 -8
  72. data/client/js/datetime/calendar/themes/default/calendar_arrows.png +0 -0
  73. data/client/js/datetime/calendar/themes/default/calendar_bg.png +0 -0
  74. data/client/js/datetime/calendar/themes/default/calendar_parts1.png +0 -0
  75. data/client/js/datetime/calendar/themes/default/calendar_parts2.png +0 -0
  76. data/client/js/datetime/datetimepicker/datetimepicker.js +0 -210
  77. data/client/js/datetime/datetimevalue/datetimevalue.js +0 -265
@@ -5,7 +5,7 @@
5
5
  ## since or before epoch (1970-01-01 00:00:00 UTC).
6
6
  ####
7
7
  HCalendar = HControl.extend
8
-
8
+
9
9
  componentName: 'calendar'
10
10
  markupElemNames: [ 'control', 'state', 'label', 'value', 'prevMonth', 'nextMonth' ]
11
11
 
@@ -17,7 +17,11 @@ HCalendar = HControl.extend
17
17
 
18
18
  controlDefaults: HControlDefaults.extend
19
19
  preserveTime: true
20
-
20
+ useUTC: null
21
+ legacyCompatible: false
22
+ customOptons: (_options)->
23
+ _options.useUTC = HLocale.dateTime.defaultOptions.useUTC if _options.useUTC == null
24
+
21
25
  ## Calls HCalendar#nextMonth or HCalendar#prevMonth based on delta change
22
26
  ## of the mouseWheel event
23
27
  mouseWheel: (_delta)->
@@ -28,44 +32,32 @@ HCalendar = HControl.extend
28
32
 
29
33
  ## Draws the next month
30
34
  nextMonth: (_set)->
31
- _dateNext = new Date( @viewMonth[0], @viewMonth[1]+1, 1 )
32
- _dateMs = _dateNext.getTime() - @tzMs(_dateNext)
33
- if _set
34
- @setValue( _dateMs/1000 )
35
- else
36
- @drawCalendar( new Date(_dateMs) )
37
-
35
+ _date = @moment(@viewMonth).endOf('month').add(1,'ms')
36
+ @setValue( _date.unix() ) if _set
37
+ @drawCalendar( _date )
38
+
38
39
  ## Draws the prev month
39
40
  prevMonth: (_set)->
40
- _datePrev = new Date( @viewMonth[0], @viewMonth[1]-1, 1 )
41
- _dateMs = _datePrev.getTime() - @tzMs(_datePrev)
42
- if _set
43
- @setValue( _dateMs/1000 )
44
- else
45
- @drawCalendar( new Date(_dateMs) )
46
-
41
+ _date = @moment(@viewMonth).startOf('month').subtract(1,'ms')
42
+ @setValue( _date.unix() ) if _set
43
+ @drawCalendar( _date )
44
+
47
45
  ## Draws the next year
48
46
  nextYear: (_set)->
49
- _dateNext = new Date( @viewMonth[0]+1, @viewMonth[1], 1 )
50
- _dateMs = _dateNext.getTime() - @tzMs(_dateNext)
51
- if _set
52
- @setValue( _dateMs/1000 )
53
- else
54
- @drawCalendar( new Date(_dateMs) )
55
-
47
+ _date = @moment(@viewMonth).endOf('year').add(1,'ms')
48
+ @setValue( _date.unix() ) if _set
49
+ @drawCalendar( _date )
50
+
56
51
  ## Draws the prev year
57
52
  prevYear: (_set)->
58
- _datePrev = new Date( @viewMonth[0]-1, @viewMonth[1], 1 )
59
- _dateMs = _datePrev.getTime() - @tzMs(_datePrev)
60
- if _set
61
- @setValue( _dateMs/1000 )
62
- else
63
- @drawCalendar( new Date(_dateMs) )
64
-
65
- nextDay: -> @setValue( @value + 24*60*60 )
66
- prevDay: -> @setValue( @value - 24*60*60 )
67
- nextWeek: -> @setValue( @value + 7*24*60*60 )
68
- prevWeek: -> @setValue( @value - 7*24*60*60 )
53
+ _date = @moment(@viewMonth).startOf('year').subtract(1,'ms')
54
+ @setValue( _date.unix() ) if _set
55
+ @drawCalendar( _date )
56
+
57
+ nextDay: -> @setValue( @moment(@value*1000).add(1,'day').unix() )
58
+ prevDay: -> @setValue( @moment(@value*1000).subtract(1,'day').unix() )
59
+ nextWeek: -> @setValue( @moment(@value*1000).add(1,'week').unix() )
60
+ prevWeek: -> @setValue( @moment(@value*1000).subtract(1,'week').unix() )
69
61
 
70
62
  ## Keyboard control
71
63
  keyDown: (_key)->
@@ -84,30 +76,24 @@ HCalendar = HControl.extend
84
76
  @prevYear(true) if _key == Event.KEY_HOME
85
77
  @nextYear(true) if _key == Event.KEY_END
86
78
  true
87
-
79
+
88
80
  drawSubviews: ->
89
- _this = @
90
- Event.observe( @elemOfPart( 'prevMonth' ), 'click', ->
91
- _this.prevMonth()
92
- )
93
- Event.observe( @elemOfPart( 'nextMonth' ), 'click', ->
94
- _this.nextMonth()
95
- )
81
+ Event.observe( @elemOfPart( 'prevMonth' ), 'click', => @prevMonth() )
82
+ Event.observe( @elemOfPart( 'nextMonth' ), 'click', => @nextMonth() )
96
83
 
97
84
  ## Returns an array of week day names starting with the short name of the word "week".
98
85
  ## The default locale returns: ['Wk','Mon','Tue','Wed','Thu','Fri','Sat','Sun']
99
86
  ## See HLocale for more details
100
87
  localizedDays: ->
101
- _str = HLocale.dateTime.strings
88
+ _str = @localeStrings
102
89
  _arr = @cloneObject( _str.weekDaysShort )
103
90
  _arr.push( _arr.shift() )
104
91
  _arr.unshift( _str.weekShort )
105
92
  _arr
106
-
93
+
107
94
  _destroyWeekDayElems: ->
108
95
  if @_weekDayElems?
109
- for _elemId in @_weekDayElems
110
- ELEM.del( _elemId )
96
+ ELEM.del( _elemId ) for _elemId in @_weekDayElems
111
97
  @_weekDayElems = null
112
98
 
113
99
  ## Refreshes the week days header
@@ -122,15 +108,16 @@ HCalendar = HControl.extend
122
108
  for _dayName, i in _dayNames
123
109
  _dayElem = ELEM.make( _parentElem )
124
110
  ELEM.setHTML( _dayElem, _dayName )
125
- ELEM.setStyle( _dayElem, 'width', _dayWidth+'px' )
126
- _left = i * _dayWidth + _leftOffset
127
- ELEM.setStyle( _dayElem, 'left', _left+'px' )
111
+ ELEM.setStyles( _dayElem,
112
+ width: _dayWidth+'px'
113
+ left: (i * _dayWidth + _leftOffset)+'px'
114
+ )
128
115
  @_weekDayElems = _dayElems
129
-
116
+
130
117
  ## Calls #refreshWeekDays when theme is applied
131
118
  refreshLabel: ->
132
119
  @refreshWeekDays() if @markupElemIds? and not @_weekDayElems?
133
-
120
+
134
121
  ## Calculates the first and last week of the month of the _date
135
122
  ##
136
123
  ## Params:
@@ -151,112 +138,101 @@ HCalendar = HControl.extend
151
138
  ## }
152
139
  ## }
153
140
  calendarDateRange: (_date)->
154
- _monthFirst = @firstDateOfMonth( _date )
155
- _monthLast = @lastDateOfMonth( _date )
156
- _weekFirst = @firstDateOfWeek( _monthFirst )
157
- _weekLast = @lastDateOfWeek( _monthLast )
158
- _firstWeekNum = @week( _weekFirst )
159
- _lastWeekNum = @week( _weekLast )
160
- _weeks = _firstWeekNum - _lastWeekNum
161
- if _weeks == 5
162
- if _weekFirst.getDate() == 1
163
- _weekFirst = new Date( _weekFirst.getTime() - @msWeek )
164
- else
165
- _weekLast = new Date( _weekLast.getTime() + @msWeek )
166
- else if _weeks == 4
167
- _weekFirst = new Date( _weekFirst.getTime() - @msWeek )
168
- return {
169
- week: {
170
- firstDate: _weekFirst
171
- lastDate: _weekLast
172
- firstNum: _firstWeekNum
173
- lastNum: _lastWeekNum
174
- count: _weeks
175
- }
176
- month: {
177
- firstDate: _monthFirst
178
- lastDate: _monthLast
179
- }
180
- }
141
+ _date = @moment( @_dateSel(_date) )
142
+ _ranges =
143
+ week:
144
+ firstDate: _date.clone().startOf('month').startOf('week')
145
+ lastDate: _date.clone().endOf('month').endOf('week')
146
+ month:
147
+ firstDate: _date.clone().startOf('month')
148
+ lastDate: _date.clone().endOf('month')
149
+ _ranges.week.firstNum = _ranges.week.firstDate.week()
150
+ _ranges.week.lastNum = _ranges.week.lastDate.week()
151
+ _ranges.week.count = _ranges.week.lastNum - _ranges.week.firstNum
152
+ if _ranges.month.firstDate.weekday() < 3
153
+ _ranges.week.firstDate.subtract(1,'week')
154
+ _ranges
181
155
 
182
156
  lostActiveStatus: (_obj)->
183
- if (_obj and @menu and !@menu._killed and !_obj.isChildOf(@menu) and !_obj.isChildOf(@menu.menuItemView))
184
- @menu.die()
157
+ if (_obj and _obj.isChildOf(@) and not _obj.isChildOf(@menu) and not ( @menu? and _obj.isChildOf(@menu.menuItemView)) )
158
+ @destroyMenus()
185
159
  @base(_obj)
186
160
 
187
161
  ## Calls #drawCalendar when the value is changed
188
- refreshValue: ->
189
- @drawCalendar( @date() )
190
-
162
+ refreshValue: -> @drawCalendar( @date() )
163
+
191
164
  ## Stores the currently viewed year and month
192
- viewMonth: [ 1970, 0 ]
165
+ viewMonth: [ 1970, 0, 1 ]
166
+
167
+ destroyMenus: ->
168
+ if @yearMenu
169
+ @yearMenu.dieSoon() if ( @yearMenu? and @yearMenu.die? and not @yearMenu.isDead )
170
+ @yearMenu = null
171
+ delete @yearMenu
172
+ if @menu
173
+ @menu.dieSoon() if ( @menu? and @menu.die? and not @menu.isDead )
174
+ @menu = null
175
+ delete @menu
193
176
 
194
177
  ## Shows a pulldown menu for month selection
195
178
  monthMenu: ->
196
- return unless HMiniMenu?
179
+ return unless HPopupMenu?
197
180
  _calendar = @
198
181
  _monthValues = []
199
- for _monthName, i in HLocale.dateTime.strings.monthsLong
200
- _monthValues.push( [ i, _monthName ] )
182
+ _monthValues.push( [ i, _monthName ] ) for _monthName, i in @localeStrings.monthsLong
201
183
  _rect = ELEM.getBoxCoords( @_monthMenu )
202
- _rect[0] += 20
203
- _rect[2] = 80 if _rect[2] < 80
204
- @menu = HMiniMenu.extend(
205
- click: ->
206
- console.log('click')
207
- menuHide: ->
208
- return if @_killed?
209
- @_killed = true
184
+ _rect[1] -= @rect.top
185
+ _rect[2] = 100 if _rect[2] < 100
186
+ @destroyMenus()
187
+ @menu = HPopupMenu.extend(
188
+ menuShow: ->
189
+ if @base()
190
+ @_shouldSetValue = true
191
+ lostActiveStatus: (_obj)->
192
+ if (_obj and _obj.isChildOf(@parent) and not _obj.isChildOf(@) and _obj.isChildOf(@menuItemView) and not _obj == @)
193
+ @parent.destroyMenus()
194
+ EVENT.changeActiveControl(@parent)
195
+ else
196
+ @base(_obj)
197
+ refreshValue: ->
210
198
  @base()
211
- _calendar.setValue( _calendar.setMonth( @value ) )
212
- if _calendar.month() != @value
213
- _calendar.setValue( _calendar.setMday( 30 ) )
214
- _calendar.setValue( _calendar.setMonth( @value ) )
215
- if _calendar.month() != @value
216
- _calendar.setValue( _calendar.setMday( 29 ) )
217
- _calendar.setValue( _calendar.setMonth( @value ) )
218
- if _calendar.month() != @value
219
- _calendar.setValue( _calendar.setMday( 28 ) )
220
- _calendar.setValue( _calendar.setMonth( @value ) )
221
- _menu = @
222
- COMM.Queue.push( ->
223
- EVENT.changeActiveControl(_calendar)
224
- _calendar.menu = null
225
- _menu.die()
226
- )
199
+ return unless @_shouldSetValue
200
+ if @_shouldSetValue and not @isDead
201
+ @parent.viewMonth[1] = @value
202
+ @parent.drawCalendar( @parent.moment( @parent.viewMonth ) )
203
+ @_shouldSetValue = false
204
+ @hide()
227
205
  ).new( _rect, @,
228
- value: @month()
229
- initialVisibility: true
206
+ value: @viewMonth[1]
230
207
  listItems: _monthValues
231
208
  )
232
-
209
+ @menu.menuShow()
210
+
233
211
  ## Shows a text field for year selection
234
212
  yearMenu: ->
235
213
  _calendar = @
236
214
  _calendarEnable = @enabled
237
215
  _rect = ELEM.getBoxCoords( @_yearMenu )
238
- _rect[0] += 20
216
+ _rect[0] += 12
239
217
  _rect[2] = 40 if _rect[2] < 40
240
- _rect[3] = 16
241
- EVENT.changeActiveControl(null)
242
- @setEnabled(false)
243
- HNumericTextControl.extend(
218
+ @destroyMenus()
219
+ @yearMenu = HNumericTextControl.extend(
244
220
  refreshValue: ->
245
221
  @base()
246
- _calendar.setValue( _calendar.setYear( @value ) )
222
+ @parent.viewMonth[0] = @value
223
+ @parent.drawCalendar( @parent.moment( @parent.viewMonth ) )
224
+ lostActiveStatus: (_obj)->
225
+ @base(_obj)
226
+ EVENT.changeActiveControl( @parent )
247
227
  gainedActiveStatus: (_obj)->
248
228
  @base(_obj)
249
- _calendar.setEnabled(_calendarEnable)
250
- textBlur: ->
229
+ die: ->
230
+ return if @isDead
231
+ EVENT.changeActiveControl( @parent )
251
232
  @base()
252
- _year = @
253
- COMM.Queue.push( ->
254
- if _year.markupElemIds?
255
- _year.die()
256
- )
257
- keyDown: (_key)->
258
- if _key == Event.KEY_RETURN
259
- ELEM.get( @markupElemIds.value ).blur()
233
+ defaultKey: ->
234
+ @base()
235
+ true
260
236
  ).new( _rect, @,
261
237
  value: @year()
262
238
  minValue: -38399
@@ -264,99 +240,121 @@ HCalendar = HControl.extend
264
240
  focusOnCreate: true
265
241
  refreshOnInput: false
266
242
  refreshOnIdle: false
267
- events:
268
- keyDown: true
269
243
  style:
270
- fontSize: '11px'
244
+ textAlign: 'left'
245
+ fontSize: '12px'
246
+ padding: 0
247
+ margin: 0
271
248
  )
272
-
249
+ EVENT.changeActiveControl(@yearMenu)
250
+
273
251
  _destroyCalendarElems: ->
274
252
  if @_drawCalendarElems?
275
- for _elemId in @_drawCalendarElems
276
- ELEM.del( _elemId )
253
+ ELEM.del( _elemId ) for _elemId in @_drawCalendarElems
277
254
  @_drawCalendarElems = null
278
-
255
+
279
256
  die: ->
257
+ @destroyMenus()
280
258
  @_destroyWeekDayElems()
281
259
  @_destroyCalendarElems()
282
260
  @base()
283
261
 
262
+ _createGridElem: (_elems,_parent,_tag,_classNames,_styles)->
263
+ _elemId = ELEM.make( _parent, _tag )
264
+ _elems.push( _elemId )
265
+ ELEM.addClassName( _elemId, _className ) for _className in _classNames
266
+ ELEM.setStyles( _elemId, _styles )
267
+ _elemId
268
+
284
269
  ## Draws the calendar with the date open given as input.
285
270
  ##
286
271
  ## Params:
287
272
  ## - _date: The date on which calendar UI is opened at.
288
273
  drawCalendar: (_date)->
289
- _date = @date() unless ( _date instanceof Date )
274
+ @destroyMenus()
275
+ _date = @moment(@_dateSel(_date).getTime())
276
+ _this = @
290
277
  _calendarDateRange = @calendarDateRange( _date )
291
- _monthFirst = _calendarDateRange.month.firstDate
292
- _monthLast = _calendarDateRange.month.lastDate
293
- _firstDate = _calendarDateRange.week.firstDate
294
- _lastDate = _calendarDateRange.week.lastDate
295
- _availWidth = @rect.width - 2
278
+ [ _monthFirst, _monthLast, _firstDate, _lastDate ] = [
279
+ _calendarDateRange.month.firstDate
280
+ _calendarDateRange.month.lastDate
281
+ _calendarDateRange.week.firstDate
282
+ _calendarDateRange.week.lastDate
283
+ ]
284
+ _valueDate = @moment(@value*1000)
285
+ # console.log('monthFirst:',_monthFirst.toString())
286
+ # console.log('monthLast:',_monthLast.toString())
287
+ # console.log('firstDate:',_firstDate.toString())
288
+ # console.log('lastDate:',_lastDate.toString())
289
+ _colDate = _firstDate.clone()
290
+ if @options.todayStart?
291
+ _today = @moment(@options.todayStart*1000)
292
+ else if @options.todayStart == false
293
+ _today = false
294
+ else
295
+ _today = @moment()
296
+ _availWidth = @rect.width - 2
296
297
  _availHeight = @rect.height - 36
297
- _leftPlus = ( _availWidth % 8 ) - 2
298
- _topPlus = ( _availHeight % 6 )
299
- _colWidth = Math.floor( _availWidth / 8 )
300
- _rowHeight = Math.floor( _availHeight / 6 )
301
- _parentElem = @markupElemIds.value
302
- # ELEM.setStyle( _parentElem, 'visibility', 'hidden', true )
298
+ _leftPlus = ( _availWidth % 8 ) - 2
299
+ _topPlus = ( _availHeight % 6 )
300
+ _colWidth = Math.floor( _availWidth / 8 )
301
+ _rowHeight = Math.floor( _availHeight / 6 )
302
+ _parentElem = @markupElemIds.value
303
303
  _elems = []
304
- _this = @
305
304
  for _row in [0..5]
306
- _weekElem = ELEM.make( _parentElem )
307
- _elems.push( _weekElem )
308
- ELEM.addClassName( _weekElem, 'calendar_weeks_week_row' )
309
- ELEM.setStyle( _weekElem, 'width', _availWidth+'px' )
310
- ELEM.setStyle( _weekElem, 'height', _availHeight+'px' )
311
305
  _top = (_row*_rowHeight)+_topPlus
312
- ELEM.setStyle( _weekElem, 'top', _top+'px' )
306
+ _weekElem = @_createGridElem( _elems, _parentElem, 'div', [ 'week_row' ],
307
+ width: _availWidth+'px'
308
+ height: _rowHeight+'px'
309
+ top: _top+'px'
310
+ )
313
311
  for _col in [0..7]
314
- if _col == 0
315
- _colDate = new Date( _firstDate.getTime() + (_row*@msWeek) + (_col*@msDay) )
316
- _colMs = _colDate.getTime()
317
- _colElem = ELEM.make( _weekElem )
318
- _elems.push( _colElem )
319
- ELEM.addClassName( _colElem, 'calendar_weeks_week_col_wk' )
320
- ELEM.setStyle( _colElem, 'left', '0px' )
321
- ELEM.setStyle( _colElem, 'width', _colWidth+'px' )
322
- ELEM.setStyle( _colElem, 'height', _rowHeight+'px' )
323
- ELEM.setStyle( _colElem, 'line-height', _rowHeight+'px' )
324
- ELEM.setHTML( _colElem, @week( _colDate ) )
325
- else
326
- _colDate = new Date( _firstDate.getTime() + (_row*@msWeek) + ((_col-1)*@msDay) )
327
- _colMs = _colDate.getTime()
328
- _colSecs = Math.round( _colMs/1000 )
329
- _colElem = ELEM.make( _weekElem, 'a' )
330
- _elems.push( _colElem )
331
- if @value >= _colSecs and @value < _colSecs+86400
332
- ELEM.addClassName( _colElem, 'calendar_weeks_week_col_sel' )
333
- else if _colDate < _monthFirst or _colDate > _monthLast
334
- ELEM.addClassName( _colElem, 'calendar_weeks_week_col_no' )
312
+ if _col == 0 # week number columns
313
+ # _colDate = @moment( _firstDate ).add(_row,'weeks').add(_col,'days')
314
+ _colElem = @_createGridElem( _elems, _weekElem, 'div', ['col_wk'],
315
+ width: _colWidth+'px'
316
+ height: _rowHeight+'px'
317
+ lineHeight: _rowHeight+'px'
318
+ )
319
+ ELEM.setHTML( _colElem, _colDate.week() )
320
+ # _colDate = _colDate.add(1,'days')
321
+ else # week day columns
322
+ # _colDate = @moment( _firstDate ).add(_row,'weeks').add(_col-1,'days')
323
+ _colDate = _colDate.add(1,'days')
324
+ _colSecs = _colDate.unix()
325
+ _colClasses = []
326
+ _prevDayLast = _colDate.clone().startOf('day').subtract(1,'ms')
327
+ _nextDayFirst = _colDate.clone().endOf('day').add(1,'ms')
328
+ # if _colDate.date() == 10
329
+ # console.log('prev:',_prevDayLast.toString(),
330
+ # ' date:',_date.toString(),
331
+ # ' next:',_nextDayFirst.toString(),
332
+ # ' value:',@moment(@value*1000).toString())
333
+ if _valueDate.isAfter(_prevDayLast) and _valueDate.isBefore(_nextDayFirst)
334
+ _colClasses.push( 'col_selected' )
335
+ else if _colDate.isBefore(_monthFirst) or _colDate.isAfter(_monthLast)
336
+ _colClasses.push( 'col_inactive' )
335
337
  else
336
- ELEM.addClassName( _colElem, 'calendar_weeks_week_col_yes' )
337
- if @options.todayStart? and @options.todayStart >= _colSecs and @options.todayStart < _colSecs + 86400
338
- ELEM.addClassName( _colElem, 'calendar_weeks_week_col_today' )
339
- ELEM.setAttr( _colElem, '_colSecs', _colSecs )
340
- if @enabled
341
- Event.observe( ELEM.get( _colElem ), 'click', ->
342
- _this.setValue( @_colSecs )
343
- )
344
- # ELEM.setAttr( _colElem, 'href', "javascript:HSystem.views[#{@viewId}].setValue(#{_colSecs})" )
338
+ _colClasses.push( 'col_active' )
339
+ if _today and _today.isAfter(_prevDayLast) and _today.isBefore(_nextDayFirst)
340
+ _colClasses.push( 'col_today' )
345
341
  _left = (_col*_colWidth+_leftPlus)
346
- ELEM.setStyle( _colElem, 'left', _left+'px' )
347
- ELEM.setStyle( _colElem, 'width', (_colWidth-1)+'px' )
348
- ELEM.setStyle( _colElem, 'height', (_rowHeight-1)+'px' )
349
- ELEM.setStyle( _colElem, 'line-height', _rowHeight+'px' )
350
- ELEM.setHTML( _colElem, @mday( _colDate ) )
351
- # ELEM.setStyle( _parentElem, 'visibility', 'inherit' )
352
- ELEM.flush()
342
+ _colElem = @_createGridElem( _elems, _weekElem, 'a', _colClasses,
343
+ left: _left+'px'
344
+ width: (_colWidth-1)+'px'
345
+ height: (_rowHeight-1)+'px'
346
+ lineHeight: _rowHeight+'px'
347
+ )
348
+ ELEM.setAttr( _colElem, '_colSecs', _colSecs )
349
+ Event.observe( ELEM.get( _colElem ), 'click', -> _this.setValue( @_colSecs ) ) if @enabled
350
+ ELEM.setHTML( _colElem, _colDate.date() )
351
+
353
352
  _stateElem = @markupElemIds.state
354
353
 
355
- @_monthMenu = ELEM.make( _stateElem, 'span' )#, 'a' )
354
+ @_monthMenu = ELEM.make( _stateElem, 'span' )
356
355
  _elems.push( @_monthMenu )
357
- # ELEM.setAttr( @_monthMenu, 'href', "javascript:HSystem.views[#{@viewId}].monthMenu()" )
358
- if @enabled
359
- Event.observe( ELEM.get( @_monthMenu ), 'click', ( -> _this.monthMenu() ), false )
356
+
357
+ Event.observe( ELEM.get( @_monthMenu ), 'click', ( -> _this.monthMenu() ), false ) if @enabled
360
358
  ELEM.setHTML( @_monthMenu, @monthName( _date ) )
361
359
 
362
360
  _spacer = ELEM.make( _stateElem, 'span' )
@@ -367,10 +365,9 @@ HCalendar = HControl.extend
367
365
  _elems.push( @_yearMenu )
368
366
  if @enabled
369
367
  Event.observe( ELEM.get( @_yearMenu ), 'click', ( -> _this.yearMenu() ), false )
370
- # ELEM.setAttr( @_yearMenu, 'href', "javascript:HSystem.views[#{@viewId}].yearMenu()" )
371
368
  ELEM.setHTML( @_yearMenu, @year( _date ) )
372
369
 
373
- @viewMonth = [ _monthFirst.getUTCFullYear(), _monthFirst.getUTCMonth() ]
370
+ @viewMonth = [ _monthFirst.year(), _monthFirst.month(), _monthFirst.date() ]
374
371
  @_destroyCalendarElems()
375
372
  @_drawCalendarElems = _elems
376
373