rsence-pre 3.0.0.8 → 3.0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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