rsence-pre 2.3.0.18 → 2.3.0.19
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.
- data/VERSION +1 -1
- data/js/chat/chat_panel/chat_panel.coffee +2 -2
- data/js/comm/queue/queue.js +19 -0
- data/js/comm/transporter/transporter.js +29 -20
- data/js/comm/values/values.js +11 -319
- data/js/controls/button/themes/default/button_parts1.png +0 -0
- data/js/controls/dialogs/alert_sheet/alert_sheet.js +1 -0
- data/js/controls/onoffbutton/onoffbutton.coffee +1 -1
- data/js/core/elem/elem.coffee +3 -1
- data/js/core/util/util_methods/util_methods.coffee +271 -93
- data/js/datetime/calendar/calendar.coffee +1 -1
- data/js/datetime/timesheet/timesheet.js +3 -3
- data/js/foundation/control/control.js +1 -1
- data/js/foundation/control/valueaction/valueaction.js +2 -2
- data/js/foundation/control/valueresponder/valueresponder.js +4 -4
- data/js/foundation/json_renderer/json_renderer.js +42 -42
- data/js/foundation/view/view.js +8 -8
- data/js/lists/propertylist/propertylist.js +5 -5
- data/js/lists/radiobuttonlist/radiobuttonlist.js +1 -1
- data/js/menus/minimenu/minimenu.js +2 -2
- data/js/tables/table/table.coffee +89 -18
- data/js/tables/table/themes/default/table.css +6 -0
- data/js/tables/table/themes/default/table.html +3 -1
- data/lib/rsence/valuemanager.rb +6 -1
- metadata +2 -2
data/js/foundation/view/view.js
CHANGED
@@ -1230,8 +1230,8 @@ HView = UtilMethods.extend({
|
|
1230
1230
|
*
|
1231
1231
|
**/
|
1232
1232
|
setStyleOfPart: function(_partName, _name, _value, _force) {
|
1233
|
-
if (!this
|
1234
|
-
!this.isProduction && console.log('Warning, setStyleOfPart: no markupElemIds');
|
1233
|
+
if (!this.markupElemIds){
|
1234
|
+
!this.isProduction && console.log('Warning, setStyleOfPart('+_partName+','+_name+','+_value+') in a '+this.componentName+': no markupElemIds');
|
1235
1235
|
}
|
1236
1236
|
else if (this.markupElemIds[_partName]===undefined) {
|
1237
1237
|
!this.isProduction && console.log('Warning, setStyleOfPart: partName "'+_partName+'" does not exist for viewId '+this.viewId+'.');
|
@@ -1255,8 +1255,8 @@ HView = UtilMethods.extend({
|
|
1255
1255
|
*
|
1256
1256
|
**/
|
1257
1257
|
styleOfPart: function(_partName, _name, _force) {
|
1258
|
-
if (!this
|
1259
|
-
!this.isProduction && console.log('Warning, styleOfPart: no markupElemIds');
|
1258
|
+
if (!this.markupElemIds){
|
1259
|
+
!this.isProduction && console.log('Warning, styleOfPart('+_partName+','+_name+') in a '+this.componentName+': no markupElemIds');
|
1260
1260
|
}
|
1261
1261
|
else if (this.markupElemIds[_partName]===undefined) {
|
1262
1262
|
!this.isProduction && console.log('Warning, styleOfPart: partName "'+_partName+'" does not exist for viewId '+this.viewId+'.');
|
@@ -1278,8 +1278,8 @@ HView = UtilMethods.extend({
|
|
1278
1278
|
*
|
1279
1279
|
**/
|
1280
1280
|
setMarkupOfPart: function( _partName, _value ) {
|
1281
|
-
if (!this
|
1282
|
-
!this.isProduction && console.log('Warning, setMarkupOfPart: no markupElemIds');
|
1281
|
+
if (!this.markupElemIds){
|
1282
|
+
!this.isProduction && console.log('Warning, setMarkupOfPart('+_partName+') in a '+this.componentName+': no markupElemIds');
|
1283
1283
|
}
|
1284
1284
|
else if (this.markupElemIds[_partName]===undefined) {
|
1285
1285
|
!this.isProduction && console.log('Warning, setMarkupOfPart: partName "'+_partName+'" does not exist for viewId '+this.viewId+'.');
|
@@ -1302,8 +1302,8 @@ HView = UtilMethods.extend({
|
|
1302
1302
|
*
|
1303
1303
|
**/
|
1304
1304
|
markupOfPart: function(_partName) {
|
1305
|
-
if (!this
|
1306
|
-
!this.isProduction && console.log('Warning, markupOfPart: no markupElemIds');
|
1305
|
+
if (!this.markupElemIds){
|
1306
|
+
!this.isProduction && console.log('Warning, markupOfPart('+_partName+') in a '+this.componentName+': no markupElemIds');
|
1307
1307
|
}
|
1308
1308
|
else if (this.markupElemIds[_partName]===undefined) {
|
1309
1309
|
!this.isProduction && console.log('Warning, markupOfPart: partName "'+_partName+'" does not exist for viewId '+this.viewId+'.');
|
@@ -33,7 +33,7 @@ HPropertyList = HControl.extend({
|
|
33
33
|
clickY = y-this.contentView.pageY(),
|
34
34
|
itemNum = Math.floor(clickY/this.options.rowHeight);
|
35
35
|
if((clickY < 0) || (itemNum > this.valueTokens.length-1)){
|
36
|
-
this.editor.hide();
|
36
|
+
this.editor && this.editor.hide();
|
37
37
|
return;
|
38
38
|
}
|
39
39
|
this.editItem( itemNum );
|
@@ -355,7 +355,7 @@ HPropertyList = HControl.extend({
|
|
355
355
|
|
356
356
|
// Returns type of item
|
357
357
|
itemType: function( item ){
|
358
|
-
return
|
358
|
+
return this.typeChr( item );
|
359
359
|
},
|
360
360
|
|
361
361
|
// Translation from type code to type name
|
@@ -502,7 +502,7 @@ HPropertyList = HControl.extend({
|
|
502
502
|
}
|
503
503
|
|
504
504
|
this.selectedItem = itemNum;
|
505
|
-
this.editorValue.set(
|
505
|
+
this.editorValue.set( this.cloneObject(this.valueTokens[itemNum]) );
|
506
506
|
this.editor.show();
|
507
507
|
EVENT.changeActiveControl(this.editor);
|
508
508
|
this.editor.offsetTo( 0, targetY );
|
@@ -511,7 +511,7 @@ HPropertyList = HControl.extend({
|
|
511
511
|
|
512
512
|
// Starts tokenizing, when the value is changed.
|
513
513
|
refreshValue: function(){
|
514
|
-
if(this
|
514
|
+
if(this.propertyItems === undefined){
|
515
515
|
return;
|
516
516
|
}
|
517
517
|
this.valueTokens = [];
|
@@ -531,7 +531,7 @@ HPropertyList = HControl.extend({
|
|
531
531
|
}
|
532
532
|
|
533
533
|
var i, token;
|
534
|
-
if(this
|
534
|
+
if(this.propertyItems === undefined){
|
535
535
|
this.propertyItems = [];
|
536
536
|
}
|
537
537
|
var colHeight = 0, colId = 0;
|
@@ -155,7 +155,7 @@ HRadioButtonList = HListItemControl.extend({
|
|
155
155
|
|
156
156
|
refreshValue: function(){
|
157
157
|
var _value = this.value;
|
158
|
-
if ( this.listItems && this.listItems.length !== 0 && this
|
158
|
+
if ( this.listItems && this.listItems.length !== 0 && this.valueMatrix !== undefined ) {
|
159
159
|
if ( this.radioButtonResponder === false ){
|
160
160
|
this.radioButtonIndexValue = HValue.nu( false, 0 );
|
161
161
|
this.radioButtonIndexValue.bind( this.valueMatrix );
|
@@ -39,7 +39,7 @@ HMiniMenu = HRadioButtonList.extend({
|
|
39
39
|
if(y < 0){
|
40
40
|
y = this.subComponentHeight%y;
|
41
41
|
}
|
42
|
-
if(this.options
|
42
|
+
if(this.options.menuItemGeom){
|
43
43
|
if(this.options.menuItemGeom.width){
|
44
44
|
w += this.options.menuItemGeom.width;
|
45
45
|
}
|
@@ -59,7 +59,7 @@ HMiniMenu = HRadioButtonList.extend({
|
|
59
59
|
|
60
60
|
refreshValue: function(){
|
61
61
|
this.base();
|
62
|
-
if(this.listItems && this.listItems.length !== 0 && this
|
62
|
+
if(this.listItems && this.listItems.length !== 0 && this.valueMatrix !== undefined ) {
|
63
63
|
for(var i=0;i<this.listItems.length;i++){
|
64
64
|
if(this.listItems[i][0]===this.value){
|
65
65
|
this.setLabel( this.listItems[i][1] );
|
@@ -1,16 +1,24 @@
|
|
1
1
|
HTable = HControl.extend
|
2
2
|
componentName: 'table'
|
3
|
-
markupElemNames: [ 'header', 'subview' ]
|
3
|
+
markupElemNames: [ 'header', 'subview', 'grid' ]
|
4
4
|
defaultEvents:
|
5
5
|
resize: true
|
6
6
|
controlDefaults: HControlDefaults.extend
|
7
|
-
tableType: 'rows'
|
8
|
-
constructor: (
|
9
|
-
@headerCols = false unless @headerCols?
|
10
|
-
@sortDescending = [] unless @sortDescending?
|
11
|
-
@colWidths = [] unless @colWidths?
|
12
|
-
@
|
13
|
-
|
7
|
+
tableType: 'rows' # 'cols' not supported yet
|
8
|
+
constructor: (_view)->
|
9
|
+
@headerCols = false unless @headerCols? # array of strings
|
10
|
+
@sortDescending = [] unless @sortDescending? # column sorting by index; true for descending; false for ascending
|
11
|
+
@colWidths = [] unless @colWidths? # widths by column index; default 'auto'
|
12
|
+
@colClasses = {} unless @colClasses? # class by column index
|
13
|
+
@defaultColOptions = {} unless @defaultColOptions? # fallback default column options
|
14
|
+
@colOptions = {} unless @colOptions? # column class constructor options by column index
|
15
|
+
@defaultColClass = HStringView unless @defaultColClass? # fallback default column class
|
16
|
+
sortCol: 0 # the default sort column
|
17
|
+
useCellGrid: false # whether to use colored cells or not
|
18
|
+
cellBgColor: '#eee' # the average bg color
|
19
|
+
cellBgColorDiff: '#080808' # color to add/subtract for even/odd col/row
|
20
|
+
cellBorderWidth: 1 # cell border width in pixels
|
21
|
+
cellBorderColor: '#fff' # cell border color
|
14
22
|
_destroyHeader: ->
|
15
23
|
if @headerCols?
|
16
24
|
_table = @
|
@@ -36,6 +44,65 @@ HTable = HControl.extend
|
|
36
44
|
# _colView.rect.setLeft(_size[0])
|
37
45
|
# _colView.rect.setWidth(_size[1])
|
38
46
|
# _colView.drawRect()
|
47
|
+
_initCellBgColors: ->
|
48
|
+
_color1 = @options.cellBgColor
|
49
|
+
_colorDiff = @options.cellBgColorDiff
|
50
|
+
if _color1 == 'transparent'
|
51
|
+
@_cellBgColors = [ 'transparent', 'transparent', 'transparent' ]
|
52
|
+
return
|
53
|
+
else if not _colorDiff
|
54
|
+
@_cellBgColors = [ _color1, _color1, _color1 ]
|
55
|
+
return
|
56
|
+
_color0 = @hexColorSubtract( _color1, _colorDiff )
|
57
|
+
_color2 = @hexColorAdd( _color1, _colorDiff )
|
58
|
+
@_cellBgColors = [ _color0, _color1, _color2 ]
|
59
|
+
_cellBgColorOf: (_row, _col)->
|
60
|
+
_colorIndex = (_row%2) + (1-_col%2)
|
61
|
+
@_cellBgColors[_colorIndex]
|
62
|
+
_drawCellStyles: ->
|
63
|
+
if @_bgCells?
|
64
|
+
for _bgCellId in @_bgCells
|
65
|
+
ELEM.del( _bgCellId )
|
66
|
+
delete @_bgCells
|
67
|
+
return unless @colViews?
|
68
|
+
# the border width offset calculations are fubar; refactor when time available
|
69
|
+
@_bgCells = []
|
70
|
+
_parent = @markupElemIds.grid
|
71
|
+
_leftOffset = @headerSizes[0][0]
|
72
|
+
@_initCellBgColors()
|
73
|
+
_borderSize = @options.cellBorderWidth
|
74
|
+
_borderColor = @options.cellBorderColor
|
75
|
+
_borderStyle = _borderSize+'px solid '+_borderColor
|
76
|
+
_heightOffset = _borderSize
|
77
|
+
_height = 24-_heightOffset
|
78
|
+
_topAdd = 24
|
79
|
+
_halfBorderWidth = Math.floor(_borderSize*0.5)
|
80
|
+
_widthOffset = 6-_borderSize-_halfBorderWidth
|
81
|
+
_borderLeftOffset = 0-_halfBorderWidth
|
82
|
+
for _colView, _colNum in @colViews
|
83
|
+
[ _left, _width ] = @headerSizes[_colNum]
|
84
|
+
if _colNum == 0
|
85
|
+
_left = _borderLeftOffset
|
86
|
+
_width += _leftOffset+_borderLeftOffset
|
87
|
+
_width -= _halfBorderWidth if _borderSize % 2 == 1
|
88
|
+
else
|
89
|
+
_left += _borderLeftOffset-_widthOffset
|
90
|
+
_left -= _borderSize if _borderSize > 1
|
91
|
+
_width += _widthOffset
|
92
|
+
_width += _halfBorderWidth
|
93
|
+
_top = _borderLeftOffset
|
94
|
+
for _row, _rowNum in @_rows
|
95
|
+
@_bgCells << ELEM.make(
|
96
|
+
_parent, 'div',
|
97
|
+
styles:
|
98
|
+
backgroundColor: @_cellBgColorOf(_rowNum,_colNum)
|
99
|
+
border: _borderStyle
|
100
|
+
top: _top+'px'
|
101
|
+
left: _left+'px'
|
102
|
+
width: _width+'px'
|
103
|
+
height: _height+'px'
|
104
|
+
)
|
105
|
+
_top += _topAdd
|
39
106
|
drawHeader: ->
|
40
107
|
_elemIds = []
|
41
108
|
_sizes = []
|
@@ -104,6 +171,7 @@ HTable = HControl.extend
|
|
104
171
|
@colViews[_colNum].rect.offsetTo( _left, 0 )
|
105
172
|
@colViews[_colNum].rect.setWidth( _width )
|
106
173
|
@colViews[_colNum].drawRect()
|
174
|
+
@_drawCellStyles()
|
107
175
|
drawSubviews: ->
|
108
176
|
if @options.headerCols
|
109
177
|
@drawHeader()
|
@@ -120,16 +188,15 @@ HTable = HControl.extend
|
|
120
188
|
if @options.colOptions[_colNum]?
|
121
189
|
_colOption = @options.colOptions[_colNum]
|
122
190
|
else
|
123
|
-
_colOption =
|
191
|
+
_colOption = @cloneObject( @options.defaultColOptions )
|
124
192
|
if @options.colClasses[_colNum]?
|
125
193
|
_colClass = @options.colClasses[_colNum]
|
126
194
|
if typeof _colClass == 'function' and _colClass.hasAncestor? and _colClass.hasAncestor( HControl )
|
127
195
|
return [ _colClass, _colOption ]
|
128
196
|
else if _colClass instanceof Object and not _colClass.hasAncestor?
|
129
197
|
for _className of _colClass
|
130
|
-
|
131
|
-
|
132
|
-
else if typeof _colClass == 'string'
|
198
|
+
return [ @_findClassInNameSpace( _className ), _colClass[_className] ] if @typeChr(_className) == 's'
|
199
|
+
else if @typeChr(_colClass) == 's'
|
133
200
|
return [ @_findClassInNameSpace( _colClass ), _colOption ]
|
134
201
|
return [ @_findClassInNameSpace( @options.defaultColClass ), _colOption ]
|
135
202
|
_destroyRows: ->
|
@@ -150,9 +217,9 @@ HTable = HControl.extend
|
|
150
217
|
for _row, i in @_rows
|
151
218
|
_rowSort.push( [ @value[i], _row ] )
|
152
219
|
_nextCols = []
|
153
|
-
if @options.sortOrder[_col]?
|
154
|
-
if @options.sortOrder[_col]
|
155
|
-
_nextCols =
|
220
|
+
if @options.sortOrder? and @options.sortOrder[_col]?
|
221
|
+
if @typeChr( @options.sortOrder[_col] ) == 'a'
|
222
|
+
_nextCols = @cloneObject( @options.sortOrder[_col] )
|
156
223
|
else
|
157
224
|
_nextCols = [ @options.sortOrder[_col] ]
|
158
225
|
else
|
@@ -182,7 +249,7 @@ HTable = HControl.extend
|
|
182
249
|
_col.hide()
|
183
250
|
else
|
184
251
|
_rowsVisible += 1
|
185
|
-
for _col in _row
|
252
|
+
for _col, _colNum in _row
|
186
253
|
_col.show()
|
187
254
|
_col.rect.offsetTo( 0, _top )
|
188
255
|
_col.drawRect()
|
@@ -206,7 +273,8 @@ HTable = HControl.extend
|
|
206
273
|
else if @_rowsDrawn and _newData and @_rows.length == @value.length
|
207
274
|
for _row, _rowNum in @value
|
208
275
|
for _col, _colNum in _row
|
209
|
-
@_rows[_rowNum][_colNum]
|
276
|
+
_ctrl = @_rows[_rowNum][_colNum]
|
277
|
+
_ctrl.setValue( _col )
|
210
278
|
@sortTableRows()
|
211
279
|
else
|
212
280
|
if @_rowsDrawn
|
@@ -219,11 +287,12 @@ HTable = HControl.extend
|
|
219
287
|
_colOpts.value = _col
|
220
288
|
_colOpts.tableRow = _rowNum
|
221
289
|
_colOpts.tableCol = _colNum
|
222
|
-
|
290
|
+
_ctrl = _colClass.new(
|
223
291
|
[ 0, _top, null, _rowHeight, 0, null ],
|
224
292
|
@colViews[_colNum],
|
225
293
|
_colOpts
|
226
294
|
)
|
295
|
+
_rows[_rowNum][_colNum] = _ctrl
|
227
296
|
_top += _rowHeight
|
228
297
|
for _colView in _colViews
|
229
298
|
_colView.rect.setHeight(_top)
|
@@ -237,7 +306,9 @@ HTable = HControl.extend
|
|
237
306
|
if @options.tableType == 'rows'
|
238
307
|
@refreshTableRows(_newData)
|
239
308
|
else if @options.tableType == 'cols'
|
309
|
+
console.log('ERROR; refreshTable: tableType \'cols\' not supported!')
|
240
310
|
@refreshTableCols(_newData)
|
311
|
+
@_drawCellStyles() if @options.useCellGrid and _newData
|
241
312
|
refreshValue: ->
|
242
313
|
if @value instanceof Array
|
243
314
|
@refreshTable( true )
|
@@ -23,3 +23,9 @@
|
|
23
23
|
position: absolute; top: 24px; left: 0; right: 0; bottom: 0;
|
24
24
|
overflow: auto; overflow-x: hidden;
|
25
25
|
}
|
26
|
+
.default > .table_body > .table_grid {
|
27
|
+
position: absolute; top: 0; left: 0; overflow: visible;
|
28
|
+
}
|
29
|
+
.default > .table_body > .table_grid > div {
|
30
|
+
position: absolute; height: 24px;
|
31
|
+
}
|
data/lib/rsence/valuemanager.rb
CHANGED
@@ -141,7 +141,12 @@ module RSence
|
|
141
141
|
# loop through un-validated values and validate them
|
142
142
|
check_ids = session_values[:check]
|
143
143
|
check_ids.clone.each do |check_id|
|
144
|
-
session_values[:by_id][check_id]
|
144
|
+
value = session_values[:by_id][check_id]
|
145
|
+
if value.nil?
|
146
|
+
warn "ses_id: #{msg.ses_id} nil value of value_id: #{check_id.inspect}"
|
147
|
+
else
|
148
|
+
value.tell( msg )
|
149
|
+
end
|
145
150
|
end
|
146
151
|
|
147
152
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsence-pre
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.0.
|
4
|
+
version: 2.3.0.19
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-02-
|
13
|
+
date: 2013-02-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsence-deps
|