rsence-pre 2.2.0.18 → 2.2.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 CHANGED
@@ -1 +1 @@
1
- 2.2.0.18.pre
1
+ 2.2.0.19.pre
@@ -267,6 +267,7 @@
267
267
  - textcontrol # HTextControl
268
268
  - passwordcontrol # HPasswordControl
269
269
  - textarea # HTextArea
270
+ - searchfield # HSearchField
270
271
  - uploader # HUploader
271
272
  - slider # HSlider
272
273
  - vslider # HVSlider
@@ -0,0 +1,2 @@
1
+ HSearchField = HTextControl.extend
2
+ componentName: 'searchfield'
@@ -0,0 +1,96 @@
1
+
2
+ .default .searchfield_input {
3
+ position: absolute;
4
+ display: block;
5
+ font-family: Arial, sans-serif;
6
+ font-size: 13px;
7
+ color: #000;
8
+ background-color: transparent;
9
+ vertical-align: middle;
10
+ border: 0px;
11
+ left: 18px; top: 4px;
12
+ line-height: 18px;
13
+ text-overflow: ellipsis;
14
+ white-space: nowrap;
15
+ overflow: hidden;
16
+ #{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.opera)?'padding-left:2px;width:100% !important;height:90% !important;':BROWSER_TYPE.ie6?'right:3px;height:16px;':'padding:2px;padding-top:4px;right:3px;height:16px;width:auto;'}
17
+ }
18
+
19
+ .default .searchfield_input:focus {
20
+ outline-color: transparent;
21
+ outline-style: none;
22
+ }
23
+
24
+ .default .disabled .searchfield_input {
25
+ color: #ccc;
26
+ }
27
+
28
+ .default .searchfield_input_parent {
29
+ position: absolute;
30
+ #{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'left:0;padding-left:1px;top:0;right:4px;bottom:0;':BROWSER_TYPE.ie6?'left:2px;top:1px;right:1px;height:20px;':'left:-2px;top:-2px;right:-2px;height:20px;'}
31
+ }
32
+
33
+ .default .searchfield_fade,
34
+ .default .searchfield_e,
35
+ .default .searchfield_w,
36
+ .default .searchfield_c {
37
+ position: absolute;
38
+ height: 24px;
39
+ background-repeat: no-repeat;
40
+ background-image: #{this.getCssFilePath('searchfield_parts1.png')};
41
+ #{BROWSER_TYPE.ie6?'font-size:0;line-height:0;':''}
42
+ }
43
+
44
+ .default .searchfield_fade {
45
+ right: 0px; top: 0px; width: 10px;
46
+ background-position: -48px 0px;
47
+ }
48
+
49
+ .default .searchfield_e {
50
+ right: 0px; top: 0px; width: 24px;
51
+ background-position: -24px 0px;
52
+ }
53
+
54
+ .default .searchfield_c {
55
+ left: 24px; right: 24px; top: 0px;
56
+ background-repeat: repeat-x;
57
+ background-position: 0px -24px;
58
+ }
59
+
60
+ .default .searchfield_w {
61
+ left: 0px; top: 0px; width: 24px;
62
+ background-position: 0px 0px;
63
+ }
64
+
65
+ .default .disabled > .searchfield_fade {
66
+ background-position: -48px -96px;
67
+ }
68
+
69
+ .default .disabled > .searchfield_e {
70
+ background-position: -24px -96px;
71
+ }
72
+
73
+ .default .disabled > .searchfield_c {
74
+ background-position: 0px -120px;
75
+ }
76
+
77
+ .default .disabled > .searchfield_w {
78
+ background-position: 0px -96px;
79
+ }
80
+
81
+ .default .active > .searchfield_fade {
82
+ background-position: -48px -48px;
83
+ }
84
+
85
+ .default .active > .searchfield_e {
86
+ background-position: -24px -48px;
87
+ }
88
+
89
+ .default .active > .searchfield_c {
90
+ background-position: 0px -72px;
91
+ }
92
+
93
+ .default .active > .searchfield_w {
94
+ background-position: 0px -48px;
95
+ }
96
+
@@ -0,0 +1,12 @@
1
+ <div class="searchfield_w"></div>
2
+ <div class="searchfield_c"></div>
3
+ <div class="searchfield_e"></div>
4
+
5
+ <div id="label#{_ID}" title="#{this.label}" class="searchfield_input_parent">
6
+ <input type="text" class="searchfield_input" #{this.enabled?'':'disabled'}
7
+ onfocus="HSystem.views[#{this.viewId}].textFocus();"
8
+ onblur="HSystem.views[#{this.viewId}].textBlur();"
9
+ id="value#{_ID}" value="#{this.value}" />
10
+ </div>
11
+
12
+ <div class="searchfield_fade"></div>
@@ -14,6 +14,10 @@
14
14
  .default .disabled .textarea_input {
15
15
  #{(BROWSER_TYPE.safari||BROWSER_TYPE.chrome)?'color:#ccc;':'color:#999'}
16
16
  }
17
+ .default .textarea_input:focus {
18
+ outline-color: transparent;
19
+ outline-style: none;
20
+ }
17
21
 
18
22
  .default .textarea_input_parent {
19
23
  position: absolute;
@@ -33,6 +33,7 @@ HTextControl = HControl.extend({
33
33
  })),
34
34
 
35
35
  drawSubviews: function(){
36
+ ELEM.setStyle(this.elemId,'overflow','visible');
36
37
  this.base();
37
38
  if(this.options.focusOnCreate){
38
39
  this.getInputElement().focus();
@@ -61,6 +62,11 @@ HTextControl = HControl.extend({
61
62
  }
62
63
  }
63
64
  },
65
+
66
+ lostActiveStatus: function(){
67
+ ELEM.get( this.markupElemIds.value ).blur();
68
+ this.textBlur();
69
+ },
64
70
 
65
71
  setStyle: function(_name, _value, _cacheOverride) {
66
72
  if (!this['markupElemIds']||!this.markupElemIds['value']) {
@@ -129,6 +135,7 @@ HTextControl = HControl.extend({
129
135
  *
130
136
  **/
131
137
  textFocus: function(){
138
+ EVENT.changeActiveControl( this );
132
139
  this.hasTextFocus = true;
133
140
  this._setChangeEventFn();
134
141
  return true;
@@ -151,7 +158,14 @@ HTextControl = HControl.extend({
151
158
 
152
159
  onIdle: function(){
153
160
  this.hasTextFocus && this._updateValueFromField();
154
- this.base();
161
+ try{
162
+ this.base();
163
+ }
164
+ catch(e){
165
+ console.error('HTextControl::onIdle error -> ',e);
166
+ debugger;
167
+ this.base();
168
+ }
155
169
  },
156
170
 
157
171
  /** = Description
@@ -12,6 +12,11 @@
12
12
  #{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.opera)?'padding-left:2px;width:100% !important;height:90% !important;':BROWSER_TYPE.ie6?'right:4px;bottom:2px;':'padding:2px;right:0px;bottom:0px;width:auto;height:auto;'}
13
13
  }
14
14
 
15
+ .default .textcontrol_input:focus {
16
+ outline-color: transparent;
17
+ outline-style: none;
18
+ }
19
+
15
20
  .default .disabled .textcontrol_input {
16
21
  color: #ccc;
17
22
  }
@@ -28,6 +33,13 @@
28
33
  #{BROWSER_TYPE.ie6?'font-size:0;line-height:0;':''}
29
34
  }
30
35
 
36
+ .default .active>.textcontrol_bg {
37
+ left: 0px; top: 0px; right: 0px; bottom: 0px;
38
+ -moz-box-shadow: 0px 0px 3px #333;
39
+ -webkit-box-shadow: 0px 0px 3px #333;
40
+ box-shadow: 0px 0px 3px #333;
41
+ }
42
+
31
43
  .default .disabled .textcontrol_bg {
32
44
  background-color: #eee;
33
45
  }
@@ -70,7 +70,7 @@ HClass.prototype = {
70
70
  /* The property copying method. */
71
71
  extend: function(_source, _value) {
72
72
  var _extend = HClass.prototype.extend,
73
- _ancestor, _method, _previous, _returnValue, i, _name, _prototype, _protected;
73
+ _ancestor, _method, _returnValue, i, _name, _prototype, _protected;
74
74
  if (arguments.length === 2) {
75
75
  _ancestor = this[_source];
76
76
  // only methods are inherited
@@ -79,7 +79,7 @@ HClass.prototype = {
79
79
  _method = _value;
80
80
  _value = function() {
81
81
  // saves the this.base that is the this.base method of this child
82
- _previous = this.base;
82
+ var _previous = this.base;
83
83
  // copies previous this.base from the direction from HClass
84
84
  this.base = _ancestor;
85
85
  // current class's method is called
@@ -129,6 +129,7 @@ HClass.prototype = {
129
129
  } )
130
130
  )( arguments );
131
131
  };
132
+ this['new'] = this.nu;
132
133
  return this;
133
134
  },
134
135
  /** = Description
@@ -105,6 +105,7 @@ HDateTimePicker = HControl.extend({
105
105
  this.base();
106
106
  },
107
107
  drawSubviews: function(){
108
+ ELEM.setStyle( this.elemId, 'overflow', 'visible' );
108
109
  var
109
110
  _NumStepperField = HView.extend({
110
111
  setEnabled: function(_state){
@@ -118,6 +119,7 @@ HDateTimePicker = HControl.extend({
118
119
  }
119
120
  },
120
121
  drawSubviews: function(){
122
+ ELEM.setStyle( this.elemId, 'overflow', 'visible' );
121
123
  this.numField = HNumericTextControl.extend({
122
124
  refreshValue: function(){
123
125
  this.base();
@@ -24,7 +24,7 @@
24
24
  //var//RSence.Foundation
25
25
  COMM.JSONRenderer = HClass.extend({
26
26
 
27
- version: 0.8,
27
+ version: 0.9,
28
28
 
29
29
  /** = Description
30
30
  * Renders JSON structured data, see some of the demos for usage examples.
@@ -52,21 +52,23 @@ COMM.JSONRenderer = HClass.extend({
52
52
  this.view.die();
53
53
  },
54
54
  defineInScope: function( _definition ){
55
- var _isArr = (_definition instanceof Array),
56
- _isObj = (_definition instanceof Object);
55
+ var
56
+ _isArr = (_definition instanceof Array),
57
+ _isObj = (_definition instanceof Object);
57
58
  if( _isArr || !_isObj ){
58
59
  console.log("JSONRenderer; definition must be an Object, got: '"+(typeof _definition)+"'. Definition: ",_definition);
59
60
  return;
60
61
  }
61
- var _extension = {},
62
- _reserved = ['class','extend','implement'],
63
- _className = _definition[_reserved[0]],
64
- _extendName = _definition[_reserved[1]],
65
- _implementName = _definition[_reserved[2]],
66
- _extend = _extendName?this.findInScope(_extendName):false,
67
- _implement = _implementName?this.findInScope(_implementName):false,
68
- _scope = this.scopes[ this.scopeDepth ],
69
- _key, _value;
62
+ var
63
+ _extension = {},
64
+ _reserved = ['class','extend','implement'],
65
+ _className = _definition[_reserved[0]],
66
+ _extendName = _definition[_reserved[1]],
67
+ _implementName = _definition[_reserved[2]],
68
+ _extend = _extendName?this.findInScope(_extendName):false,
69
+ _implement = _implementName?this.findInScope(_implementName):false,
70
+ _scope = this.scopes[ this.scopeDepth ],
71
+ _key, _value;
70
72
  if( _className === undefined ) {
71
73
  console.log("JSONRenderer; class name missing in definition scope.");
72
74
  return;
@@ -96,10 +98,11 @@ COMM.JSONRenderer = HClass.extend({
96
98
  return false;
97
99
  }
98
100
  if(_className.indexOf('.') !== -1){
99
- var _splitClass = _className.split('.'),
100
- j = 1,
101
- _classPart = _splitClass[0],
102
- _classFull = this.findInScope( _classPart );
101
+ var
102
+ _splitClass = _className.split('.'),
103
+ j = 1,
104
+ _classPart = _splitClass[0],
105
+ _classFull = this.findInScope( _classPart );
103
106
  if( !_classFull ){
104
107
  return false;
105
108
  }
@@ -130,42 +133,102 @@ COMM.JSONRenderer = HClass.extend({
130
133
  }
131
134
  return _block;
132
135
  },
136
+ initStraight: function( _class, _args ){
137
+ if( _args instanceof Array ){
138
+ return HClass.extend().nu.apply( _class, _args );
139
+ }
140
+ else {
141
+ return (new _class(_args));
142
+ }
143
+ },
133
144
  renderNode: function( _dataNode, _parent ){
134
- var // Currently only window-level classes are supported
135
- _className = _dataNode['class'],
136
- _class = this.findInScope( _className ),
137
-
138
- // Currently only HView -derived classes are supported, so
139
- // the rect is mandatory.
140
- _rect = _dataNode['rect'],
141
- _hasRect = (_rect !== undefined) && (_rect instanceof Array || typeof _rect === 'string'),
142
-
143
- // Checks, if any sub-views are defined.
144
- _hasSubviews = _dataNode['subviews'] !== undefined,
145
- _subViews = _hasSubviews?_dataNode['subviews']:null,
146
-
147
- // Checks, if any options are defined.
148
- _hasOptions = _dataNode['options'] !== undefined,
149
- _options = _hasOptions?_dataNode['options']:null,
150
-
151
- // JS Extension block
152
- _hasExtension = _dataNode['extend'] !== undefined,
153
- _extension = _hasExtension?_dataNode['extend']:null,
154
-
155
- // JS Extension block
156
- _hasBind = _dataNode['bind'] !== undefined,
157
- _bind = _hasBind?_dataNode['bind']:null,
158
-
159
- // JS Definition block
160
- _hasDefinition = _dataNode['define'] !== undefined,
161
- _definitions = _hasDefinition?_dataNode['define']:null,
162
-
163
- // The HView-derived class instance, instance is by default the parent
164
- _instance = _parent,
165
-
166
- i,
167
-
168
- _subView;
145
+ var
146
+ _reserved = [ 'type', 'args', 'version', 'class', 'rect', 'bind', 'extend', 'options', 'subviews', 'define' ],
147
+ _className, _class, _origNode, _straightParams = false, _rect, _hasRect, _hasSubviews, _subViews,
148
+ _hasOptions, _options, _hasExtension, _extension, _hasBind, _bind,
149
+ _hasDefinition, _definition, _instance, i, _subView = null;
150
+
151
+ // The name of the class:
152
+ if( !_dataNode['class'] ){
153
+
154
+ for( i in _dataNode ){
155
+ if( _reserved.indexOf( i ) === -1 ){
156
+ _className = i;
157
+ _origNode = _dataNode;
158
+ _dataNode = _dataNode[i];
159
+ break;
160
+ }
161
+ }
162
+ _straightParams = ( !(_dataNode instanceof Object) || (_dataNode instanceof Array) );
163
+ }
164
+ else {
165
+ _className = _dataNode['class'];
166
+ }
167
+
168
+ _class = this.findInScope( _className );
169
+
170
+ if( _straightParams ){
171
+ return this.initStraight( _class, _dataNode );
172
+ }
173
+ else if( _dataNode['args'] !== undefined ){
174
+ return this.initStraight( _class, _dataNode['args'] );
175
+ }
176
+ else if( _origNode && _origNode['args'] !== undefined ){
177
+ return this.initStraight( _class, _origNode['args'] );
178
+ }
179
+
180
+ // Currently only HView -derived classes are supported, so
181
+ // the rect is mandatory.
182
+ _rect = _dataNode['rect'];
183
+ _hasRect = (_rect !== undefined) && (_rect instanceof Array || typeof _rect === 'string');
184
+ if( !_hasRect && _origNode){
185
+ _hasRect = _origNode['rect'] !== undefined;
186
+ _rect = _hasRect?_origNode['rect']:null;
187
+ }
188
+
189
+ // Checks, if any sub-views are defined.
190
+ _hasSubviews = _dataNode['subviews'] !== undefined;
191
+ _subViews = _hasSubviews?_dataNode['subviews']:null;
192
+ if( !_hasSubviews && _origNode){
193
+ _hasSubviews = _origNode['subviews'] !== undefined;
194
+ _subViews = _hasSubviews?_origNode['subviews']:null;
195
+ }
196
+
197
+ // Checks, if any options are defined.
198
+ _hasOptions = _dataNode['options'] !== undefined;
199
+ _options = _hasOptions?_dataNode['options']:null;
200
+ if( !_hasOptions && _origNode){
201
+ _hasOptions = _origNode['options'] !== undefined;
202
+ _options = _hasOptions?_origNode['options']:null;
203
+ }
204
+
205
+ // JS Extension block
206
+ _hasExtension = _dataNode['extend'] !== undefined;
207
+ _extension = _hasExtension?_dataNode['extend']:null;
208
+ if( !_hasExtension && _origNode){
209
+ _hasExtension = _origNode['extend'] !== undefined;
210
+ _extension = _hasExtension?_origNode['extend']:null;
211
+ }
212
+
213
+ // JS Extension block
214
+ _hasBind = _dataNode['bind'] !== undefined;
215
+ _bind = _hasBind?_dataNode['bind']:null;
216
+ if( !_hasBind && _origNode){
217
+ _hasBind = _origNode['bind'] !== undefined;
218
+ _bind = _hasBind?_origNode['bind']:null;
219
+ }
220
+
221
+ // JS Definition block
222
+ _hasDefinition = _dataNode['define'] !== undefined;
223
+ _definitions = _hasDefinition?_dataNode['define']:null;
224
+ if( !_hasDefinition && _origNode){
225
+ _hasDefinition = _origNode['define'] !== undefined;
226
+ _definitions = _hasDefinition?_origNode['define']:null;
227
+ }
228
+
229
+ // The HView-derived class instance, instance is by default the parent
230
+ _instance = _parent;
231
+
169
232
  this.scopeDepth ++;
170
233
  this.scopes.push({});
171
234
  try{
@@ -200,12 +263,19 @@ COMM.JSONRenderer = HClass.extend({
200
263
  }
201
264
  if(_hasOptions){
202
265
  if(_hasBind){
203
- _options.valueObj = COMM.Values.values[_bind];
266
+ if( _bind instanceof HValue ){
267
+ _options.valueObj = _bind;
268
+ }
269
+ else if( COMM.Values.values[_bind] !== undefined ){
270
+ _options.valueObj = COMM.Values.values[_bind];
271
+ }
272
+ else {
273
+ console.log('renderNode warning; No such valueId:'+_bind);
274
+ }
204
275
  }
205
276
  else{
206
277
  if(_options['valueObjId'] !== undefined){
207
- var _valueObjId = _options['valueObjId'];
208
- _options['valueObj'] = COMM.Values.values[_options['valueObjId']];
278
+ _options.valueObj = COMM.Values.values[_options['valueObjId']];
209
279
  }
210
280
  }
211
281
  }
@@ -219,7 +289,15 @@ COMM.JSONRenderer = HClass.extend({
219
289
  }
220
290
  if(!_hasOptions){
221
291
  if(_hasBind){
222
- COMM.Values.values[_bind].bind(_instance);
292
+ if( _bind instanceof HValue ){
293
+ _bind.bind( _instance );
294
+ }
295
+ else if( COMM.Values.values[_bind] !== undefined ){
296
+ COMM.Values.values[_bind].bind(_instance);
297
+ }
298
+ else {
299
+ console.log('renderNode warning; No such valueId:'+_bind);
300
+ }
223
301
  }
224
302
  }
225
303
  }
@@ -38,7 +38,7 @@ HMiniMenu = HRadioButtonList.extend({
38
38
  }
39
39
  y -= (i-1)*this.subComponentHeight;
40
40
  if(y < 0){
41
- y = y%this.subComponentHeight;
41
+ y = this.subComponentHeight%y;
42
42
  }
43
43
  if(this.options['menuItemGeom']){
44
44
  if(this.options.menuItemGeom.width){
@@ -53,7 +53,7 @@ module RSence
53
53
  if gui_data.class == Array
54
54
  gui_data = {
55
55
  'type' => 'GUITree',
56
- 'version' => 0.7,
56
+ 'version' => 0.9,
57
57
  'class' => 'RSence.GUIApp',
58
58
  'options' => {
59
59
  'priority' => 0,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsence-pre
3
3
  version: !ruby/object:Gem::Version
4
- hash: 91
4
+ hash: 89
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 2
9
9
  - 0
10
- - 18
11
- version: 2.2.0.18
10
+ - 19
11
+ version: 2.2.0.19
12
12
  platform: ruby
13
13
  authors:
14
14
  - Riassence Inc.
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-08-02 00:00:00 Z
20
+ date: 2011-08-03 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rsence-deps
@@ -163,6 +163,11 @@ files:
163
163
  - js/controls/radiobutton/themes/default/radiobutton.html
164
164
  - js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif
165
165
  - js/controls/radiobutton/themes/default/radiobutton_parts1.png
166
+ - js/controls/searchfield/searchfield.coffee
167
+ - js/controls/searchfield/themes/default/searchfield.css
168
+ - js/controls/searchfield/themes/default/searchfield.html
169
+ - js/controls/searchfield/themes/default/searchfield_parts1-ie6.gif
170
+ - js/controls/searchfield/themes/default/searchfield_parts1.png
166
171
  - js/controls/sliders/slider/slider.js
167
172
  - js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif
168
173
  - js/controls/sliders/slider/themes/default/hslider_tracks.png