j1-template 2022.3.3 → 2022.4.0

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/assets/themes/j1/adapter/js/j1.js +150 -75
  3. data/assets/themes/j1/adapter/js/nbinteract.js +1 -0
  4. data/assets/themes/j1/adapter/js/rangeSlider.js +27 -10
  5. data/assets/themes/j1/modules/nbInteract/js/nbinteract/nbinteract-core.js +1 -1
  6. data/assets/themes/j1/modules/nbInteract/js/nbinteract/nbinteract-core.js.map +1 -1
  7. data/assets/themes/j1/modules/nbInteract/js/nbinteract/nbinteract-core.min.js +1 -1
  8. data/assets/themes/j1/modules/rangeSlider/css/theme/uno/nouislider.css +5 -0
  9. data/assets/themes/j1/modules/rangeSlider/css/theme/uno/nouislider.min.css +1 -1
  10. data/lib/j1/version.rb +1 -1
  11. data/lib/starter_web/Gemfile +1 -1
  12. data/lib/starter_web/_config.yml +1 -1
  13. data/lib/starter_web/_data/j1_config.yml +22 -7
  14. data/lib/starter_web/_data/modules/rangeSlider.yml +38 -1
  15. data/lib/starter_web/_plugins/asciidoctor-extensions/range-slider-block.rb +44 -0
  16. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  17. data/lib/starter_web/package.json +1 -1
  18. data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_odes_in_python.ipynb +16 -16
  19. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_interactive_widgets.html +919 -919
  20. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_odes_in_python.html +10 -10
  21. data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/nbi_docs_recipes_graphing.html +473 -473
  22. data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +2 -2
  23. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  24. data/lib/starter_web/utilsrv/package.json +1 -1
  25. metadata +3 -7
  26. data/assets/themes/j1/modules/nbInteract/js/nbinteract/_new/nbinteract-core.js +0 -94
  27. data/assets/themes/j1/modules/nbInteract/js/nbinteract/_new/nbinteract-core.js.map +0 -1
  28. data/assets/themes/j1/modules/nbInteract/js/nbinteract/_old/j1-nbinteract-core.js +0 -94
  29. data/assets/themes/j1/modules/nbInteract/js/nbinteract/_old/j1-nbinteract-core.js.map +0 -1
  30. data/lib/starter_web/pages/public/se/se-fake.adoc +0 -47
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0516d27133f2c1f612ca527a69f7bd6978f8e89fe838ec60fe9bc6af6a427315
4
- data.tar.gz: dcfafe53e3c42c52bc0592a9e50795718b18e46ef7273bd255865b8e7cc1f44b
3
+ metadata.gz: 78d7b70f2625cb38a4303024648b75a6065785651dbdbc3b34d93551747ca09c
4
+ data.tar.gz: f50b7c36b92e7a7befa15e1c377330b8371d9aff7c678044e507498bfb7fb715
5
5
  SHA512:
6
- metadata.gz: bdfaa86c30d20a47c3c41318645658f9a522406693b8f2d4e0d021c42386ee174d9c9630219c0800e845b25ceadcc0e1d39b7631b466d486a1e8a190f43bc9f8
7
- data.tar.gz: 65700ba4360e6c75231f7c8271beebf59d49391c63d763fb9c52c6bb680162dd8484c5d632ef050a1f55e103bbd14e2b1e3267cada91f72c35d41e443b461dfb
6
+ metadata.gz: fe3590b5508762043117af7a4e68d61e3c9eadbde627ab4d1bb436755b4dacfc4b8e037aa92112eb299ffd0e3734a72a61b01754564eacf8c4926d07757f24f4
7
+ data.tar.gz: fbda39cbd894c5ac244002044fd31871f684aad817a865c9bcdc9bd154e1c020fbd27d43c3467c9c6adc1f89a80d7f3ff6026c248c3e303571aca8a23c595177
@@ -134,26 +134,41 @@ var j1 = (function () {
134
134
  // ---------------------------------------------------------------------------
135
135
  // globals
136
136
  // ---------------------------------------------------------------------------
137
+ // base page resources
137
138
  var rePager = new RegExp('navigator|dateview|tagview|archive');
138
139
  var environment = '{{environment}}';
139
140
  var moduleOptions = {};
140
141
  var j1_runtime_data = {};
142
+ var _this;
143
+ var settings;
144
+ var json_data;
145
+ var ep;
146
+ var baseUrl;
147
+ var referrer;
141
148
 
142
- // Status information
149
+ // defaults for status information
143
150
  var state = 'not_started';
144
151
  var mode = 'not_detected';
145
152
 
146
- // Default tracking provider information
147
- // var tracking_enabled = ('{{tracking_enabled}}' === 'true') ? true: false;
148
- // var tracking_id = '{{tracking_id}}';
149
- // var tracking_id_valid = (tracking_id.includes('tracking-id')) ? false : true;
153
+ // defaults for tracking providers
154
+ var tracking_enabled = ('{{tracking_enabled}}' === 'true') ? true: false;
155
+ var tracking_id = '{{tracking_id}}';
156
+ var tracking_id_valid = (tracking_id.includes('tracking-id')) ? false : true;
150
157
 
151
- // Default comment provider information
158
+ // defaults for comment providers
152
159
  var comment_provider = '{{comment_provider}}';
153
160
  var site_id = '{{site_id}}';
154
161
  var checkCookies = {{cookie_options.checkCookies}};
155
162
  var expireCookiesOnRequiredOnly = ('{{cookie_options.expireCookiesOnRequiredOnly}}' === 'true') ? true: false;
156
163
 
164
+ // defaults for dynamic pages
165
+ var autoScrollRatioThreshold = '{{template_config.autoScrollRatioThreshold}}';
166
+ var pageGrowthRatio = 0; // ratio a dynamic page has grown in height
167
+ var pageBaseHeigth = 0; // base height of a dynamic page
168
+ var staticPage = false; // defalt: false, but decided in ResizeObserver
169
+ var pageHeight; // height of a page dynamic detected in ResizeObserver
170
+
171
+ // defaults for the cookie management
157
172
  var current_user_data;
158
173
  var current_page;
159
174
  var previous_page;
@@ -163,30 +178,23 @@ var j1 = (function () {
163
178
  var user_session_detected;
164
179
  var cookie_written;
165
180
 
166
- // Theme information
181
+ // defaults for themes
167
182
  var themeName;
168
183
  var themeCss;
169
184
  var cssExtension = (environment === 'production')
170
185
  ? '.min.css'
171
186
  : '.css'
172
187
 
173
- // Pathes of J1 data files
188
+ // defaults for data files
174
189
  var colors_data_path = '{{template_config.colors_data_path}}';
175
190
  var font_size_data_path = '{{template_config.font_size_data_path}}';
176
191
  var runtime_data_path = '{{template_config.runtime_data_path}}';
177
192
  var message_catalog_data_path = '{{template_config.message_catalog_data_path}}';
178
193
 
179
- // Logger
194
+ // Logger resources
180
195
  var logger;
181
196
  var logText;
182
197
 
183
- var _this;
184
- var settings;
185
- var json_data;
186
- var ep;
187
- var baseUrl;
188
- var referrer;
189
-
190
198
  // initial cookie settings
191
199
  var cookie_names = {
192
200
  'app_session': '{{template_config.cookies.app_session}}',
@@ -282,44 +290,6 @@ var j1 = (function () {
282
290
  j1['xhrDataState'] = {};
283
291
  j1['xhrDOMState'] = {};
284
292
 
285
- // -----------------------------------------------------------------------
286
- // final updates before browser page|tab
287
- // see: https://stackoverflow.com/questions/3888902/detect-browser-or-tab-closing
288
- // -----------------------------------------------------------------------
289
- window.addEventListener('beforeunload', function (event) {
290
- var cookie_names = j1.getCookieNames();
291
- var date = new Date();
292
- var timestamp_now = date.toISOString();
293
- var user_state = j1.readCookie(cookie_names.user_state);
294
- var user_consent = j1.readCookie(cookie_names.user_consent);
295
- var ep_status;
296
- var url;
297
- var baseUrl;
298
-
299
- // final update of the user state cookie
300
- user_state.session_active = false;
301
- user_state.last_session_ts = timestamp_now;
302
-
303
- if (!user_consent.analysis || !user_consent.personalization) {
304
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
305
-
306
- cookie_written = j1.writeCookie({
307
- name: cookie_names.user_state,
308
- data: user_state,
309
- secure: secure,
310
- expires: 0
311
- });
312
- } else {
313
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
314
- cookie_written = j1.writeCookie({
315
- name: cookie_names.user_state,
316
- data: user_state,
317
- secure: secure,
318
- expires: 365
319
- });
320
- }
321
- }); // END beforeunload
322
-
323
293
  // -----------------------------------------------------------------------
324
294
  // initialize|load user cookies
325
295
  // -----------------------------------------------------------------------
@@ -354,11 +324,7 @@ var j1 = (function () {
354
324
  }
355
325
  }
356
326
 
357
- // initialize event handler for window/history/back on <ESC>
358
- // -----------------------------------------------------------------------
359
- window.onkeyup = function (event) {
360
- if (event.keyCode == 27) window.history.back();
361
- };
327
+ j1.registerEvents(logger);
362
328
 
363
329
  // detect middleware (mode 'app') and update user session cookie
364
330
  // -----------------------------------------------------------------------
@@ -988,12 +954,16 @@ var j1 = (function () {
988
954
  logText = '\n' + 'page finalized successfully';
989
955
  logger.info(logText);
990
956
 
991
- // do a (smooth) scroll if all nav elements ready
957
+ // do a (smooth) scroll for static pages (if all nav elements ready)
992
958
  // -----------------------------------------------------------------
993
959
  var dependencies_met_navigator_finished = setInterval(function() {
994
- if (j1.adapter.navigator.getState() == 'finished') {
960
+ // NOTE: dynamic pages scrolled at a growth ratio of 100 percent as well
961
+ if (j1.adapter.navigator.getState() == 'finished' && staticPage) {
995
962
  // if a page requested contains an anchor element, do a smooth scroll
996
- j1.scrollTo();
963
+ logger.debug('\n' + 'Scroll static page, growth ratio at 100 (percent)');
964
+ // NOTE: on some pages, the offset is NOT correct
965
+ var scrollOffset = j1.getScrollOffset();
966
+ j1.scrollTo(scrollOffset);
997
967
  clearInterval(dependencies_met_navigator_finished);
998
968
  }
999
969
  }, 25);
@@ -1003,7 +973,6 @@ var j1 = (function () {
1003
973
  // web mode
1004
974
  // ---------------------------------------------------------------------
1005
975
  setTimeout (function() {
1006
- // j1.setState('finished');
1007
976
  logger.info('\n' + 'state: finished');
1008
977
  logger.info('\n' + 'page initialization: finished');
1009
978
 
@@ -1129,15 +1098,19 @@ var j1 = (function () {
1129
1098
  logText = '\n' + 'page finalized successfully';
1130
1099
  logger.info(logText);
1131
1100
 
1132
- // do a (smooth) scroll if all nav elements ready
1101
+ // do a (smooth) scroll for static pages (if all nav elements ready)
1133
1102
  // -------------------------------------------------------------------
1134
1103
  var dependencies_met_navigator_finished = setInterval(function() {
1135
- if (j1.adapter.navigator.getState() == 'finished') {
1104
+ if (j1.adapter.navigator.getState() == 'finished' && staticPage) {
1105
+ logger.debug('\n' + 'Scroll static page, growth ratio at 100 (percent)');
1136
1106
  // if a page requested contains an anchor element, do a smooth scroll
1137
- j1.scrollTo();
1107
+ // NOTE: on some pages, the offset is NOT correct
1108
+ var scrollOffset = j1.getScrollOffset();
1109
+ j1.scrollTo(scrollOffset);
1138
1110
  clearInterval(dependencies_met_navigator_finished);
1139
1111
  }
1140
1112
  }, 25);
1113
+
1141
1114
  }, flickerTimeout);
1142
1115
  }
1143
1116
  },
@@ -1191,11 +1164,11 @@ var j1 = (function () {
1191
1164
 
1192
1165
  // -------------------------------------------------------------------------
1193
1166
  // getScrollOffset()
1194
- // Calculate offset for correct (smooth) scroll position
1167
+ // Calculate offset for a correct (smooth) scroll position
1195
1168
  // -------------------------------------------------------------------------
1196
1169
  getScrollOffset: function () {
1197
1170
  var scrollOffset;
1198
- var offsetCorrection;
1171
+ var offsetCorrection = 0;
1199
1172
 
1200
1173
  var $pagehead = $('.attic');
1201
1174
  var $navbar = $('nav.navbar');
@@ -1210,8 +1183,10 @@ var j1 = (function () {
1210
1183
 
1211
1184
  // Unclear why or what element cause the need of a correction
1212
1185
  // TODO: General revision of scrollOffset needed
1186
+ // NOTE: Disabled for now
1213
1187
  //
1214
- offsetCorrection = navbarType == 'fixed' ? 10 : -25;
1188
+ // offsetCorrection = navbarType == 'fixed' ? 10 : -25;
1189
+
1215
1190
  scrollOffset = navbarType == 'fixed'
1216
1191
  ? -1*(n + a + f) + offsetCorrection
1217
1192
  : -1*(n + a + f) + h + offsetCorrection;
@@ -1224,23 +1199,25 @@ var j1 = (function () {
1224
1199
  // Scrolls smooth to any anchor referenced by an page URL on
1225
1200
  // e.g. a page reload. Values e.g for delay are taken from
1226
1201
  // TOCCER module
1202
+ // NOTE: crollTo() is triggered by 'onDocumentHeigthChange'
1227
1203
  // -------------------------------------------------------------------------
1228
- scrollTo: function () {
1204
+ scrollTo: function (offset) {
1229
1205
  var logger = log4javascript.getLogger('j1.scrollTo');
1230
1206
  var anchor = window.location.href.split('#')[1];
1231
1207
  var anchor_id = typeof anchor !== 'undefined' ? '#' + anchor : false;
1232
1208
  var scrollDuration = {{toccer_options.scrollSmoothDuration}};
1233
- var scrollOffset = j1.getScrollOffset();
1209
+ var scrollOffset = offset ; // j1.getScrollOffset();
1234
1210
  var isSlider = false;
1235
- var selector;
1211
+ var selector = $(anchor_id);
1236
1212
 
1237
- if (typeof anchor === 'undefined') {
1238
- return false;
1239
- } else if (anchor.includes("googtrans")) {
1213
+ // skip invalid anchors|selectors
1214
+ //
1215
+ if (typeof anchor === 'undefined' || anchor.includes('googtrans') || !$(selector).length) {
1240
1216
  return false;
1241
1217
  }
1242
1218
 
1243
1219
  // Check if the anchor is an slider/gallery element
1220
+ //
1244
1221
  if (typeof anchor !== 'undefined') {
1245
1222
  isSlider = anchor.includes('slide');
1246
1223
  }
@@ -1249,6 +1226,7 @@ var j1 = (function () {
1249
1226
  // scroll only, if an anchor is given with an URL
1250
1227
  selector = $(anchor_id);
1251
1228
  if (selector.length) {
1229
+ logger.info('\n' + 'scrollTo header: ' + anchor_id);
1252
1230
  j1.core.scrollSmooth.scroll(anchor_id, {
1253
1231
  duration: scrollDuration,
1254
1232
  offset: scrollOffset,
@@ -2251,6 +2229,7 @@ var j1 = (function () {
2251
2229
  window.location.href = 'about:blank';
2252
2230
  }
2253
2231
  },
2232
+
2254
2233
  // -------------------------------------------------------------------------
2255
2234
  // goBack()
2256
2235
  // Redirect current page to last visited page (referrer)
@@ -2258,6 +2237,102 @@ var j1 = (function () {
2258
2237
  goBack: function () {
2259
2238
  // where visitor has come from
2260
2239
  window.location.href = document.referrer;
2240
+ },
2241
+
2242
+ // -------------------------------------------------------------------------
2243
+ // registerEvents()
2244
+ // Redirect current page to last visited page (referrer)
2245
+ // -------------------------------------------------------------------------
2246
+ registerEvents: function (logger) {
2247
+
2248
+ // Add ResizeObserver to monitor the page height of dynamic pages
2249
+ // see: https://stackoverflow.com/questions/14866775/detect-document-height-change
2250
+ //
2251
+ const observer = new ResizeObserver(entries => {
2252
+ const scrollOffset = j1.getScrollOffset();
2253
+ // Set autoScrollRatioThreshold if NOT specified
2254
+ autoScrollRatioThreshold = autoScrollRatioThreshold ? autoScrollRatioThreshold : 100;
2255
+ for (const entry of entries) {
2256
+
2257
+ // each entry is an instance of ResizeObserverEntry
2258
+ pageHeight = Math.round(entry.contentRect.height);
2259
+
2260
+ // set base height on a page height <> 0
2261
+ if (!pageBaseHeigth && pageHeight) {
2262
+ pageBaseHeigth = pageHeight;
2263
+ }
2264
+
2265
+ // calculation of the ratio a page that has lengthened
2266
+ if (pageBaseHeigth) {
2267
+ pageGrowthRatio = Math.round(pageHeight / pageBaseHeigth *100);
2268
+ }
2269
+
2270
+ // log only if page grown above 'autoScrollRatioThreshold'
2271
+ if (pageGrowthRatio > autoScrollRatioThreshold) {
2272
+ logger.debug('\n' + 'Page growth ratio reached the threshold: ', pageGrowthRatio);
2273
+ }
2274
+
2275
+ // identify a 'staticPage'
2276
+ if (pageGrowthRatio < autoScrollRatioThreshold) {
2277
+ staticPage = true;
2278
+ } else {
2279
+ // identify a page as 'dynamic' if autoScrollRatioThreshold reached
2280
+ staticPage = false;
2281
+ }
2282
+
2283
+ // dynamic page that has been increased in size above the threshold
2284
+ if (pageGrowthRatio > autoScrollRatioThreshold) {
2285
+ j1.scrollTo(scrollOffset);
2286
+ logger.debug('\n' + 'Scroll dynamic page on growth ratio: ', pageGrowthRatio);
2287
+ }
2288
+ }
2289
+ });
2290
+ // monitor the page 'body'
2291
+ observer.observe(document.querySelector('body'));
2292
+
2293
+ // -----------------------------------------------------------------------
2294
+ // final updates before browser page|tab
2295
+ // see: https://stackoverflow.com/questions/3888902/detect-browser-or-tab-closing
2296
+ // -----------------------------------------------------------------------
2297
+ window.addEventListener('beforeunload', function (event) {
2298
+ var cookie_names = j1.getCookieNames();
2299
+ var date = new Date();
2300
+ var timestamp_now = date.toISOString();
2301
+ var user_state = j1.readCookie(cookie_names.user_state);
2302
+ var user_consent = j1.readCookie(cookie_names.user_consent);
2303
+ var url = new liteURL(window.location.href);
2304
+ var secure = (url.protocol.includes('https')) ? true : false;
2305
+ var ep_status;
2306
+ var url;
2307
+ var baseUrl;
2308
+
2309
+ // final update of the user state cookie
2310
+ user_state.session_active = false;
2311
+ user_state.last_session_ts = timestamp_now;
2312
+
2313
+ if (!user_consent.analysis || !user_consent.personalization) {
2314
+
2315
+ cookie_written = j1.writeCookie({
2316
+ name: cookie_names.user_state,
2317
+ data: user_state,
2318
+ secure: secure,
2319
+ expires: 0
2320
+ });
2321
+ } else {
2322
+ cookie_written = j1.writeCookie({
2323
+ name: cookie_names.user_state,
2324
+ data: user_state,
2325
+ secure: secure,
2326
+ expires: 365
2327
+ });
2328
+ }
2329
+ }); // END beforeunload
2330
+
2331
+ // initialize event handler for window/history/back on <ESC>
2332
+ //
2333
+ window.onkeyup = function (event) {
2334
+ if (event.keyCode == 27) window.history.back();
2335
+ };
2261
2336
  }
2262
2337
  };
2263
2338
  }) (j1, window);
@@ -503,6 +503,7 @@ j1.adapter.nbinteract = (function (j1, window) {
503
503
  if (nbiButtonState) {
504
504
  // button NOT removed
505
505
  logger.warn('NBI initialialization failed on textbook: {{textbook_id}}');
506
+ spinner.stop();
506
507
  // hide the info modal
507
508
  $(nbiModalSuccessID).modal('hide');
508
509
 
@@ -93,8 +93,16 @@ j1.adapter.rangeSlider = (function (j1, window) {
93
93
  // Helper functions
94
94
  // ---------------------------------------------------------------------------
95
95
 
96
- function insertAfter(newNode, referenceNode) {
97
- referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
96
+ function prepend(newNode, referenceNode) {
97
+ referenceNode.parentNode.insertBefore(newNode, referenceNode);
98
+ }
99
+
100
+ function append(newNode, referenceNode) {
101
+ referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
102
+ }
103
+
104
+ function insert(newNode, referenceNode) {
105
+ referenceNode.appendChild(newNode);
98
106
  }
99
107
 
100
108
  // ---------------------------------------------------------------------------
@@ -133,7 +141,7 @@ j1.adapter.rangeSlider = (function (j1, window) {
133
141
  if (j1.getState() == 'finished') {
134
142
 
135
143
  logger.info('\n' + 'module is being initialized');
136
-
144
+
137
145
  // initialize state flag
138
146
  _this.setState('started');
139
147
  logger.debug('\n' + 'state: ' + _this.getState());
@@ -163,8 +171,10 @@ j1.adapter.rangeSlider = (function (j1, window) {
163
171
  {% assign format_decimals = range_slider_options.options.format.decimals %}
164
172
  {% assign cbOnUpdate = range_slider_options.options.cbOnUpdate %}
165
173
 
174
+
166
175
  {% comment %} overload defaults by slider options
167
- -------------------------------------------------------------------- {% endcomment %}
176
+ ---------------------------------------------------------------- {% endcomment %}
177
+ {% if item.slider.options.title %} {% assign title = item.slider.options.title %} {% endif %}
168
178
  {% if item.slider.options.label %} {% assign label = item.slider.options.label %} {% endif %}
169
179
  {% if item.slider.options.start %} {% assign start = item.slider.options.start %} {% endif %}
170
180
  {% if item.slider.options.connect %} {% assign connect = item.slider.options.connect %} {% endif %}
@@ -176,7 +186,8 @@ j1.adapter.rangeSlider = (function (j1, window) {
176
186
  {% if item.slider.options.cbOnUpdate %} {% assign cbOnUpdate = item.slider.options.cbOnUpdate %} {% endif %}
177
187
 
178
188
  elms.forEach(function (elm) {
179
- var id = elm.id;
189
+ var id = elm.id;
190
+ var parent = document.getElementById(id);
180
191
 
181
192
  if (id === '{{slider_id}}') {
182
193
  // processing rangeSlider: {{slider_id}}
@@ -198,11 +209,17 @@ j1.adapter.rangeSlider = (function (j1, window) {
198
209
  })
199
210
  });
200
211
 
201
- var el = document.createElement("label");
202
- el.classList.add('range-slider-label');
203
- el.innerHTML = '{{label}}';
204
- var div = document.getElementById(id);
205
- insertAfter(el, div);
212
+ if ('{{title}}'.length) {
213
+ var title = document.createElement('div');
214
+ title.classList.add('range-slider-title');
215
+ title.innerHTML = '{{title}}';
216
+ prepend(title, parent);
217
+ }
218
+
219
+ var label = document.createElement('label');
220
+ label.classList.add('range-slider-label');
221
+ label.innerHTML = '{{label}}';
222
+ insert(label, parent);
206
223
 
207
224
  slider_{{slider_id}}.noUiSlider.on('update', function (values, handle) {
208
225
  var logger = log4javascript.getLogger('j1.adapter.rangeSlider.cbOnUpdate');