rsence-pre 2.3.0.16 → 2.3.0.17
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/conf/default_conf.yaml +53 -200
- data/js/chat/chat_panel/chat_panel.coffee +120 -0
- data/js/chat/speech_bubble/speech_bubble.coffee +56 -0
- data/js/chat/speech_bubble/themes/default/speech_bubble.css +84 -0
- data/js/chat/speech_bubble/themes/default/speech_bubble.html +7 -0
- data/js/chat/speech_bubble/themes/default/user_anon.png +0 -0
- data/js/comm/sessionwatcher/sessionwatcher.js +1 -1
- data/js/comm/values/values.js +2 -34
- data/js/controls/numerictextcontrol/numerictextcontrol.coffee +109 -0
- data/js/controls/onoffbutton/onoffbutton.coffee +44 -0
- data/js/controls/onoffbutton/themes/default/onoffbutton.css +50 -0
- data/js/controls/onoffbutton/themes/default/onoffbutton.html +10 -0
- data/js/controls/textcontrol/textcontrol.coffee +291 -0
- data/js/core/class/class.js +1 -1
- data/js/core/elem/elem.coffee +83 -1
- data/js/core/util/util_methods/util_methods.coffee +103 -0
- data/js/datetime/calendar/calendar.coffee +3 -0
- data/js/datetime/calendar_pulldown/calendar_pulldown.coffee +62 -0
- data/js/datetime/calendar_pulldown/themes/default/calendar_pulldown.css +16 -0
- data/js/datetime/calendar_pulldown/themes/default/calendar_pulldown.html +1 -0
- data/js/datetime/calendar_pulldown/themes/default/calendar_pulldown.png +0 -0
- data/js/datetime/datepicker/datepicker.coffee +59 -0
- data/js/datetime/datetimepicker/datetimepicker.coffee +7 -0
- data/js/datetime/datetimepicker/datetimepicker.js +2 -2
- data/js/datetime/momentjs/momentjs.js +1400 -0
- data/js/datetime/timepicker/timepicker.coffee +7 -0
- data/js/foundation/application/application.js +1 -1
- data/js/foundation/control/valueaction/valueaction.js +8 -1
- data/js/foundation/control/valueresponder/valueresponder.js +1 -1
- data/js/foundation/view/morphanimation/morphanimation.js +9 -3
- data/js/foundation/view/view.js +43 -33
- data/js/views/scrollview/scrollview.js +10 -0
- data/lib/rsence/default_config.rb +10 -6
- data/plugins/client_pkg/lib/client_pkg_build.rb +2 -2
- metadata +22 -4
- data/js/controls/textcontrol/textcontrol.js +0 -420
@@ -0,0 +1,103 @@
|
|
1
|
+
UtilMethods = HClass.extend
|
2
|
+
|
3
|
+
arrIncludes: (_arr,_what)->
|
4
|
+
_arr.indexOf(_what) != -1
|
5
|
+
|
6
|
+
# List of primitive object type's chars
|
7
|
+
_builtinTypeChr: [
|
8
|
+
'b' # boolean
|
9
|
+
'n' # number
|
10
|
+
's' # string
|
11
|
+
]
|
12
|
+
|
13
|
+
getValueById: (_id)->
|
14
|
+
COMM.Values.values[_id]
|
15
|
+
|
16
|
+
###
|
17
|
+
# Returns object type as a single-char string.
|
18
|
+
# Use this method to detect the type of the object given.
|
19
|
+
#
|
20
|
+
# Returns the type of the object given as a character code. Returns false,
|
21
|
+
# if unknown or unsupported objcet type.
|
22
|
+
#
|
23
|
+
# Returns:
|
24
|
+
# _One of the following:_
|
25
|
+
# - 'a': Array
|
26
|
+
# - 'h': Hash (Generic Object)
|
27
|
+
# - 'd': Date
|
28
|
+
# - 'b': Boolean (true/false)
|
29
|
+
# - 'n': Number (integers and floats)
|
30
|
+
# - 's': String
|
31
|
+
# - '~': Null
|
32
|
+
# - '-': Undefined
|
33
|
+
# - false: unknown
|
34
|
+
###
|
35
|
+
typeChr: (_obj)->
|
36
|
+
return '-' unless _obj?
|
37
|
+
return '~' if _obj == null
|
38
|
+
_typeChr = (typeof _obj).slice(0,1)
|
39
|
+
return _typeChr if @arrIncludes(@_builtinTypeChr,_typeChr)
|
40
|
+
if _typeChr == 'o'
|
41
|
+
return 'a' if _obj.constructor == Array
|
42
|
+
return 'h' if _obj.constructor == Object
|
43
|
+
return 'd' if _obj.constructor == Date
|
44
|
+
return false
|
45
|
+
|
46
|
+
baseStrToNum: (_str, _base)->
|
47
|
+
return null if 's' != @typeChr(_str)
|
48
|
+
_base = 10 unless _base?
|
49
|
+
parseInt(_str, _base)
|
50
|
+
|
51
|
+
baseNumToStr: (_num, _base)->
|
52
|
+
return null if 'n' != @typeChr(_num)
|
53
|
+
_base = 10 unless _base?
|
54
|
+
_num.toString(_base)
|
55
|
+
|
56
|
+
hexToNum: (_hex)->
|
57
|
+
@baseStrToNum(_hex,16)
|
58
|
+
|
59
|
+
numToHex: (_int)->
|
60
|
+
@baseNumToStr(_int,16)
|
61
|
+
|
62
|
+
base36ToNum: (_base36)->
|
63
|
+
@baseStrToNum(_base36,36)
|
64
|
+
|
65
|
+
numToBase36: (_num)->
|
66
|
+
@baseIntToStr(_num,36)
|
67
|
+
|
68
|
+
_hexColorLengths: [3,4,6,7]
|
69
|
+
_hexCharacters: ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']
|
70
|
+
_hex3To6Ratio: 4097 # parseInt('1001',16)
|
71
|
+
_normalizeHexColorToNum: (_color)->
|
72
|
+
return null if @typeChr(_color) != 's'
|
73
|
+
_hexLen = _color.length
|
74
|
+
return null unless @arrIncludes(@_hexColorLengths,_hexLen)
|
75
|
+
_color = _color.toLowerCase()
|
76
|
+
_str = ''
|
77
|
+
for _chr, i in _color.split('')
|
78
|
+
continue if i == 0 and _chr == '#' and ( _hexLen == 4 or _hexLen == 7 )
|
79
|
+
return null unless @arrIncludes( @_hexCharacters, _chr )
|
80
|
+
_str += _chr
|
81
|
+
_num = @hexToNum( _str )
|
82
|
+
_num = 0 if _num < 0
|
83
|
+
_num = 16777215 if _num > 16777215
|
84
|
+
_num = _num*@_hex3To6Ratio if _hexLen < 6
|
85
|
+
return _num
|
86
|
+
_normalizeNumToHexColor: (_num)->
|
87
|
+
_num = 0 if _num < 0
|
88
|
+
_num = 16777215 if _num > 16777215
|
89
|
+
_str = @numToHex(_num)
|
90
|
+
_str = '0'+_str until _str.length == 6
|
91
|
+
return '#'+_str
|
92
|
+
|
93
|
+
hexColorAdd: (_hex1,_hex2)->
|
94
|
+
@_normalizeNumToHexColor(
|
95
|
+
@_normalizeHexColorToNum(_hex1) +
|
96
|
+
@_normalizeHexColorToNum(_hex2)
|
97
|
+
)
|
98
|
+
|
99
|
+
hexColorSubtract: (_hex1,_hex2)->
|
100
|
+
@_normalizeNumToHexColor(
|
101
|
+
@_normalizeHexColorToNum(_hex1) -
|
102
|
+
@_normalizeHexColorToNum(_hex2)
|
103
|
+
)
|
@@ -14,6 +14,9 @@ HCalendar = HControl.extend
|
|
14
14
|
defaultEvents:
|
15
15
|
mouseWheel: true
|
16
16
|
keyDown: true
|
17
|
+
|
18
|
+
controlDefaults: HControlDefaults.extend
|
19
|
+
preserveTime: true
|
17
20
|
|
18
21
|
## Calls HCalendar#nextMonth or HCalendar#prevMonth based on delta change
|
19
22
|
## of the mouseWheel event
|
@@ -0,0 +1,62 @@
|
|
1
|
+
HCalendarPulldown = HMiniMenu.extend
|
2
|
+
componentName: 'calendar_pulldown'
|
3
|
+
defaultEvents:
|
4
|
+
click: true
|
5
|
+
resize: true
|
6
|
+
preserveTime: true
|
7
|
+
controlDefaults: HMiniMenu.prototype.controlDefaults.extend
|
8
|
+
calendarAlign: 'right'
|
9
|
+
label: ''
|
10
|
+
calendarRect: ->
|
11
|
+
[ x, y ] = [ @pageX(), @pageY() ]
|
12
|
+
if @options.calendarAlign == 'right'
|
13
|
+
return [ x-200+@rect.width, y, 200, 200 ]
|
14
|
+
else
|
15
|
+
return [ x, y, 200, 200 ]
|
16
|
+
repositionMenuItems: ->
|
17
|
+
@menuItemView.setRect( @calendarRect() )
|
18
|
+
@menuItemView.drawRect()
|
19
|
+
menuShow: ->
|
20
|
+
@base()
|
21
|
+
@setLabel( @options.labelHide )
|
22
|
+
menuHide: ->
|
23
|
+
@base()
|
24
|
+
@setLabel( @options.labelShow )
|
25
|
+
setValueObj: (_valueObj)->
|
26
|
+
@base(_valueObj)
|
27
|
+
if @calendar?
|
28
|
+
@calendar.valueObj.release( @calendar )
|
29
|
+
@valueObj.bind(@calendar)
|
30
|
+
refreshValue: ->
|
31
|
+
_date = moment(@value).utc()
|
32
|
+
@_timePreserve = [ _date.hours(), _date.minutes(), _date.seconds() ] if @options.preserveTime
|
33
|
+
@calendar.setValue(@value)
|
34
|
+
drawSubviews: ->
|
35
|
+
@menuItemView = HView.new( @calendarRect(), @app,
|
36
|
+
visible: false
|
37
|
+
logicParent: @
|
38
|
+
style:
|
39
|
+
overflow: 'visible'
|
40
|
+
)
|
41
|
+
HControl.extend(
|
42
|
+
defaultEvents:
|
43
|
+
click: true
|
44
|
+
click: ->
|
45
|
+
@parent.options.logicParent.menuHide()
|
46
|
+
true
|
47
|
+
).new( [ 0, 0, 200, 20 ], @menuItemView )
|
48
|
+
@calendar = HCalendar.extend(
|
49
|
+
refreshValue: ->
|
50
|
+
@base()
|
51
|
+
@parent.options.logicParent.setValue(@value)
|
52
|
+
).new( [ 0, 20, 200, 180 ], @menuItemView,
|
53
|
+
value: @value
|
54
|
+
valueObj: @valueObj
|
55
|
+
preserveTime: @options.preserveTime
|
56
|
+
style:
|
57
|
+
boxShadow: '0 0 5px #333'
|
58
|
+
borderRadius: '5px'
|
59
|
+
)
|
60
|
+
HCalendarPullDown = HCalendarPulldown
|
61
|
+
HCalendarMenu = HCalendarPulldown
|
62
|
+
HCalenderButton = HCalendarPulldown
|
@@ -0,0 +1,16 @@
|
|
1
|
+
.default > .calendar_pulldown {
|
2
|
+
position: absolute; left: 0; top: 0; width: 24px; height: 24px;
|
3
|
+
background-position: 0px 0px;
|
4
|
+
cursor: pointer;
|
5
|
+
font-size: 0;
|
6
|
+
background-image: url(#{this.getThemeGfxFile('/calendar_pulldown.png')});
|
7
|
+
}
|
8
|
+
.default.disabled > .calendar_pulldown {
|
9
|
+
opacity: 0.7;
|
10
|
+
}
|
11
|
+
.default.disabled:hover > .calendar_pulldown {
|
12
|
+
background-position: 0px 0px;
|
13
|
+
}
|
14
|
+
.default.enabled:hover > .calendar_pulldown {
|
15
|
+
background-position: 0px -24px;
|
16
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
<div class="calendar_pulldown" id="control#{_ID}"><span id="label#{_ID}"></span></div>
|
Binary file
|
@@ -0,0 +1,59 @@
|
|
1
|
+
HDatePicker = HTextControl.extend
|
2
|
+
controlDefaults: HTextControl.prototype.controlDefaults.extend
|
3
|
+
fieldFormat: 'YYYY-MM-DD'
|
4
|
+
refreshAfter: 3
|
5
|
+
preserveTime: true
|
6
|
+
preserveDate: false
|
7
|
+
calendarPicker: false
|
8
|
+
valueToField: (_value)->
|
9
|
+
_date = moment.unix(_value).utc()
|
10
|
+
@_datePreserve = [ _date.year(), _date.month(), _date.date() ] if @options.preserveDate
|
11
|
+
if @options.preserveTime and @_timePreserve? and @calendar? and not @calendar.menuItemView.isHidden
|
12
|
+
@_dateRestore(_date)
|
13
|
+
@setValue(_date.unix())
|
14
|
+
else if @options.preserveTime
|
15
|
+
@_timePreserve = [ _date.hours(), _date.minutes(), _date.seconds() ] if @options.preserveTime
|
16
|
+
_date.format(@options.fieldFormat)
|
17
|
+
_dateRestore: (_date)->
|
18
|
+
if @_datePreserve? and @options.preserveDate
|
19
|
+
[ _year, _month, _mday ] = @_datePreserve
|
20
|
+
_date.year( _year )
|
21
|
+
_date.month( _month )
|
22
|
+
_date.date( _mday )
|
23
|
+
until _date.isValid()
|
24
|
+
_mday = _mday - 1
|
25
|
+
_date.date( _mday )
|
26
|
+
else if _date.year() == 0 and _date.month() == 0 and _date.date() == 1
|
27
|
+
_date.year(1970)
|
28
|
+
_date.month(0)
|
29
|
+
_date.date(1)
|
30
|
+
if @_timePreserve? and @options.preserveTime
|
31
|
+
[ _hours, _minutes, _seconds ] = @_timePreserve
|
32
|
+
_date.hours( _hours )
|
33
|
+
_date.minutes( _minutes )
|
34
|
+
_date.seconds( _seconds )
|
35
|
+
fieldToValue: (_value)->
|
36
|
+
_date = moment.utc(_value,@options.fieldFormat)
|
37
|
+
return @value unless _date.isValid()
|
38
|
+
@_dateRestore(_date)
|
39
|
+
_date.unix()
|
40
|
+
refreshValue: ->
|
41
|
+
@base()
|
42
|
+
@calendar.setValue(@value) if @calendar?
|
43
|
+
@setStyleOfPart('value','textAlign','right')
|
44
|
+
drawSubviews: ->
|
45
|
+
@base()
|
46
|
+
if @options.calendarPicker
|
47
|
+
@setStyleOfPart('label','right','26px')
|
48
|
+
@calendar = HCalendarPulldown.extend(
|
49
|
+
refreshValue: ->
|
50
|
+
@base()
|
51
|
+
@parent.setValue(@value)
|
52
|
+
).new( [null,0,24,24,1,null], @,
|
53
|
+
value: @value
|
54
|
+
valueObj: @valueObj
|
55
|
+
preserveTime: @options.preserveTime
|
56
|
+
style:
|
57
|
+
borderLeft: '1px dotted #666'
|
58
|
+
)
|
59
|
+
@calendar.bringToFront()
|
@@ -17,7 +17,7 @@ HDateTimePicker = HControl.extend({
|
|
17
17
|
if(!this.m){
|
18
18
|
return;
|
19
19
|
}
|
20
|
-
this.setLocked( HVM.values[ this.options.lockedId ].value );
|
20
|
+
// this.setLocked( HVM.values[ this.options.lockedId ].value );
|
21
21
|
var
|
22
22
|
date = new Date( this.value*1000 ),
|
23
23
|
yyyy = date.getUTCFullYear(),
|
@@ -202,7 +202,7 @@ HDateTimePicker = HControl.extend({
|
|
202
202
|
HStringView.nu(
|
203
203
|
HRect.nu( _numStepperRect ),
|
204
204
|
this, {
|
205
|
-
valueObj: HVM.values[this.options.tzValueId]
|
205
|
+
// valueObj: HVM.values[this.options.tzValueId]
|
206
206
|
}
|
207
207
|
);
|
208
208
|
this.refreshValue();
|