j1-template 2021.1.25 → 2021.1.29

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_article_navigator.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +6 -4
  4. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +1 -1
  5. data/_includes/themes/j1/modules/navigator/generator.html +1 -1
  6. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +1 -1
  7. data/_layouts/default.html +1 -0
  8. data/assets/data/panel.html +1 -15
  9. data/assets/themes/j1/adapter/js/j1.js +6 -6
  10. data/assets/themes/j1/adapter/js/j1scroll.js +304 -0
  11. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.css +42 -0
  12. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +1 -1
  13. data/assets/themes/j1/core/js/template.js +4 -4
  14. data/assets/themes/j1/core/js/template.js.map +1 -1
  15. data/assets/themes/j1/core/js/template.min.js +4 -4
  16. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  17. data/assets/themes/j1/modules/{infiniteScroll → j1Scroll}/css/theme/uno.css +4 -50
  18. data/assets/themes/j1/modules/j1Scroll/css/theme/uno.min.css +15 -0
  19. data/assets/themes/j1/modules/j1Scroll/js/j1scroll.js +263 -0
  20. data/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js +16 -0
  21. data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js +19 -7
  22. data/lib/j1/version.rb +1 -1
  23. data/lib/starter_web/Gemfile +1 -1
  24. data/lib/starter_web/_config.yml +1 -1
  25. data/lib/starter_web/_data/blocks/panel.yml +217 -183
  26. data/lib/starter_web/_data/builder/blog_navigator.yml +1 -0
  27. data/lib/starter_web/_data/layouts/home.yml +20 -16
  28. data/lib/starter_web/_data/modules/defaults/navigator.yml +1 -1
  29. data/lib/starter_web/_data/modules/j1scroll.yml +67 -0
  30. data/lib/starter_web/_data/resources.yml +35 -34
  31. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  32. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  33. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-test-series.adoc +1 -1
  34. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-test-series.adoc +1 -1
  35. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-test-series.adoc +1 -1
  36. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-04-post-test-series.adoc +1 -1
  37. data/lib/starter_web/index.html +1 -1
  38. data/lib/starter_web/package.json +1 -1
  39. data/lib/starter_web/pages/public/blog/navigator/index.html +3 -2
  40. data/lib/starter_web/pages/public/features/modules.adoc +104 -0
  41. data/lib/starter_web/pages/public/features/platform.adoc +104 -0
  42. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  43. data/lib/starter_web/utilsrv/package.json +1 -1
  44. metadata +10 -9
  45. data/assets/themes/j1/adapter/js/infiniteScroll.js +0 -245
  46. data/assets/themes/j1/modules/infiniteScroll/css/theme/uno.min.css +0 -15
  47. data/assets/themes/j1/modules/infiniteScroll/js/infiniteScroll.js +0 -1909
  48. data/assets/themes/j1/modules/infiniteScroll/js/infiniteScroll.min.js +0 -17
  49. data/lib/starter_web/_data/modules/defaults/infiniteScroll.yml +0 -73
  50. data/lib/starter_web/_data/modules/infiniteScroll.yml +0 -66
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  # -----------------------------------------------------------------------------
3
- # ~/assets/themes/j1/modules/infiniteScroll/css/uno.css
4
- # Provides styles for J1 Module infiniteScroll
3
+ # ~/assets/themes/j1/modules/j1Scroll/css/uno.css
4
+ # Provides styles for J1 Module j1Scroll
5
5
  #
6
6
  # Product/Info:
7
7
  # https://jekyll.one
@@ -32,53 +32,7 @@ span {
32
32
  }
33
33
  */
34
34
 
35
- /* groups and items
36
- -------------------------------------------------------------------------------- */
37
- .list-group-item {
38
- width: 96%;
39
- margin-right: 1% !important;
40
- }
41
-
42
- /* Media breakpoints */
43
- @media only screen and (min-width: 576px) {
44
- .list-group-item.items-auto {
45
- width: 48.3%; }
46
- .list-group-item.items-1 {
47
- width: 96%; }
48
- .list-group-item.items-2 {
49
- width: 48.3%; }
50
- .list-group-item.items-3 {
51
- width: 48.3%; }
52
- .list-group-item.items-4 {
53
- width: 48.3%; } }
54
-
55
- @media only screen and (min-width: 768px) {
56
- .list-group-item.items-auto {
57
- width: 31.333%; }
58
- .list-group-item.items-1 {
59
- width: 96%; }
60
- .list-group-item.items-2 {
61
- width: 48.3%; }
62
- .list-group-item.items-3 {
63
- width: 48.3%; }
64
- .list-group-item.items-4 {
65
- width: 48.3%; } }
66
-
67
- @media only screen and (min-width: 992px) {
68
- .list-group-item.items-auto {
69
- width: 23.8%; }
70
- .list-group-item.items-1 {
71
- width: 96%; }
72
- .list-group-item.items-2 {
73
- width: 48.3%;
74
- }
75
- .list-group-item.items-3 {
76
- width: 31.333%; }
77
- .list-group-item.items-4 {
78
- width: 23.8%; } }
79
-
80
-
81
- /* controls
35
+ /* plugin controls
82
36
  -------------------------------------------------------------------------------- */
83
37
  .page-load-status, .page-scroll-last {
84
38
  display: none; /* hidden by default */
@@ -97,7 +51,7 @@ span.infinite-scroll-last {
97
51
  padding: 10px 3px;
98
52
  }
99
53
 
100
- /* spinner
54
+ /* plugin spinner
101
55
  -------------------------------------------------------------------------------- */
102
56
  .loader-ellips {
103
57
  font-size: 20px; /* change size here */
@@ -0,0 +1,15 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/modules/infiniteScroll/css/uno.min.css
4
+ # Provides styles for J1 Module infiniteScroll
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2021 Juergen Adams
10
+ #
11
+ # J1 Template is licensed under the MIT License.
12
+ # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
+ # -----------------------------------------------------------------------------
14
+ */
15
+ .page-load-status,.page-scroll-last{display:none;padding-top:.5rem;border-top:1px dotted #212121;color:#777}span.infinite-scroll-last{border-bottom-width:1px;border-bottom-style:dotted;border-bottom-color:#212121;display:inline-block;margin:0 0 -1px 0;padding:10px 3px}.loader-ellips{font-size:20px;position:relative;width:4em;height:1em;margin:10px auto}.loader-ellips__dot{display:block;width:1em;height:1em;border-radius:.5em;background:#555;position:absolute;animation-duration:.5s;animation-timing-function:ease;animation-iteration-count:infinite}.loader-ellips__dot:nth-child(1),.loader-ellips__dot:nth-child(2){left:0}.loader-ellips__dot:nth-child(3){left:1.5em}.loader-ellips__dot:nth-child(4){left:3em}@keyframes reveal{from{transform:scale(0.001)}to{transform:scale(1)}}@keyframes slide{to{transform:translateX(1.5em)}}.loader-ellips__dot:nth-child(1){animation-name:reveal}.loader-ellips__dot:nth-child(2),.loader-ellips__dot:nth-child(3){animation-name:slide}.loader-ellips__dot:nth-child(4){animation-name:reveal;animation-direction:reverse}
@@ -0,0 +1,263 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/modules/j1Scroll/js/j1scroll.js
4
+ # J1 core module for j1scroll
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2021 Juergen Adams
10
+ #
11
+ # J1 Template is licensed under the MIT License.
12
+ # For details, see https://jekyll.one
13
+ # -----------------------------------------------------------------------------
14
+ */
15
+
16
+ // the semi-colon before function invocation is a SAFETY method against
17
+ // concatenated scripts and/or other plugins which may NOT be closed
18
+ // properly.
19
+ //
20
+ ;(function($, window, document, undefined) {
21
+
22
+ 'use strict';
23
+
24
+ // Create the defaults
25
+ var pluginName = 'j1Scroll',
26
+ defaults = {
27
+ type: 'infiniteScroll',
28
+ scrollOffset: 100,
29
+ elementScroll: false,
30
+ firstPage: 2,
31
+ lastPage: false,
32
+ infoLastPage: false,
33
+ loadStatus: false,
34
+ onInit: function (){}, // callback after plugin has initialized
35
+ onBeforeLoad: function (){}, // callback before new items are loaded
36
+ onAfterLoad: function (){} // callback after new items are loaded
37
+ };
38
+
39
+ // Plugin constructor
40
+ function Plugin (element, options) {
41
+ this.element = element;
42
+ this.settings = $.extend( {}, defaults, options);
43
+ this.settings.elementID = '#' + this.element["id"]
44
+
45
+ // call the initializer
46
+ this.init(this.settings);
47
+ }
48
+
49
+ // Avoid Plugin.prototype conflicts
50
+ $.extend(Plugin.prototype, {
51
+ // -------------------------------------------------------------------------
52
+ // init: initializer
53
+ // -------------------------------------------------------------------------
54
+ init: function(options) {
55
+ var logger = log4javascript.getLogger('j1Scroll');
56
+
57
+ logger.info('\n' + 'initializing plugin: started');
58
+ logger.info('\n' + 'state: started');
59
+
60
+ if ( options.elementScroll ) {
61
+ this.scroller = this.element;
62
+ } else {
63
+ this.scroller = window;
64
+ }
65
+
66
+ if (options.loadStatus) {
67
+ var spinner = '<div class="loader-ellips" style="display: none"> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> </div>';
68
+ $(spinner).insertAfter(options.elementID);
69
+ }
70
+
71
+ if (options.infoLastPage) {
72
+ var message = options.lastPageInfo;
73
+ $(message).insertAfter(options.elementID);
74
+ }
75
+
76
+ // initialize infinite scroll
77
+ if ( options.type === 'infiniteScroll') {
78
+ logger.info('\n' + 'processing mode: infiniteScroll');
79
+ logger.info('\n' + 'loading items from path: ' + options.path + "#");
80
+ logger.info('\n' + 'monitoring element set to: ' + this.scroller);
81
+ this.registerScrollEvent(options);
82
+ }
83
+ logger.info('\n' + 'initializing plugin: finished');
84
+ logger.info('\n' + 'state: finished');
85
+ },
86
+ // -------------------------------------------------------------------------
87
+ // bottomReached: detect final scroll position
88
+ // NOTE: the calculation for BOTTOM position is different for
89
+ // elementScroll and windowScroll. For elementScroll, the
90
+ // trigger isBottomReached is TRUE, if the scroll position has
91
+ // the end of the container PLUS a given scrollOffset.
92
+ // For windowScroll, the trigger isBottomReached is TRUE, if
93
+ // the scroll position has the end of the window MINUS
94
+ // a given scrollOffset.
95
+ // -------------------------------------------------------------------------
96
+ isBottomReached: function (options) {
97
+ var _this = this;
98
+ var bottom, scrollY;
99
+ var clientHeight = $(options.elementID).height();
100
+
101
+ if ( _this.settings.elementScroll ) {
102
+ // check scroll position of the container items are to be added
103
+ var $window = $(window);
104
+ var viewport_top = $window.scrollTop();
105
+ var viewport_height = $window.height();
106
+ var viewport_bottom = viewport_top + viewport_height - options.scrollOffset;
107
+ var $elm = $(options.elementID);
108
+ var top = $elm.offset().top + clientHeight;
109
+ var height = $elm.height();
110
+ bottom = top + height;
111
+
112
+
113
+ return (top >= viewport_top && top < viewport_bottom) ||
114
+ (bottom > viewport_top && bottom <= viewport_bottom) ||
115
+ (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
116
+ } else {
117
+ // check scroll position of the (overall) window
118
+ return (window.innerHeight + window.pageYOffset + options.scrollOffset >= document.body.offsetHeight);
119
+ }
120
+ },
121
+ // -------------------------------------------------------------------------
122
+ // detectScroll: EventHandler to load new items for infinite scroll
123
+ // if final scroll position reached
124
+ // -------------------------------------------------------------------------
125
+ registerScrollEvent: function (options) {
126
+ var _this = this;
127
+ var logger = log4javascript.getLogger('j1Scroll');
128
+
129
+ logger.info('\n' + 'scroll event: register');
130
+
131
+ var eventHandler_onscroll = function (event) {
132
+ var options = _this.settings;
133
+
134
+ if (_this.isBottomReached(options)) {
135
+ if (options.firstPage > options.lastPage ) {
136
+ logger.info('\n' + 'last page detected on: ' + options.lastPage);
137
+ window.removeEventListener('scroll', eventHandler_onscroll);
138
+ logger.info('\n' + 'scroll event: removed');
139
+
140
+ if (options.infoLastPage ) {
141
+ _this.infoLastPage(options);
142
+ }
143
+ return false;
144
+ }
145
+ _this.getNewPost(options);
146
+ }
147
+ }
148
+ window.addEventListener('scroll', eventHandler_onscroll);
149
+
150
+ logger.info('\n' + 'scroll event: registered');
151
+ },
152
+ // -------------------------------------------------------------------------
153
+ // getNewPost: load new items (from current path)
154
+ // Note: loader flag prevents to load items if AJAX load in progress
155
+ // is NOT finished
156
+ // -------------------------------------------------------------------------
157
+ getNewPost: function (options) {
158
+ var _this = this;
159
+ var logger = log4javascript.getLogger('j1Scroll');
160
+
161
+ logger.info('\n' + 'trigger loading ');
162
+
163
+ // initialze loader flag
164
+ if (this.itemsLoaded === false) return false;
165
+
166
+ // set loader flag (false == not loaded)
167
+ this.itemsLoaded = false;
168
+
169
+ // display spinner while loading
170
+ if (options.loadStatus) {
171
+ logger.info('\n' + 'show: spinner');
172
+ $('.loader-ellips').show();
173
+ }
174
+
175
+ var xmlhttp = new XMLHttpRequest();
176
+ xmlhttp.onreadystatechange = function () {
177
+ if (xmlhttp.readyState == XMLHttpRequest.DONE) {
178
+ if (xmlhttp.status == 200) {
179
+ options.firstPage++;
180
+ var childItems = _this.getChildItemsByAjaxHTML(options, xmlhttp.responseText);
181
+ _this.appendNewItems(childItems);
182
+
183
+ logger.info('\n' + 'loading new items: successful');
184
+
185
+ // hide the spinner after loading
186
+ if (options.loadStatus) {
187
+ logger.info('\n' + 'hide: spinner');
188
+ $('.loader-ellips').hide();
189
+ }
190
+
191
+ // set loader flag (true == loaded)
192
+ return _this.itemsLoaded = true;
193
+ } else {
194
+ // hide the spinner
195
+ if (options.loadStatus) {
196
+ logger.info('\n' + 'hide: spinner');
197
+ $('.loader-ellips').hide();
198
+ }
199
+
200
+ logger.error('\n' + 'loading new items failed, HTTP response: ' + xmlhttp.status );
201
+ // set loader flag (true == loaded)
202
+ return _this.itemsLoaded = false;
203
+ }
204
+ }
205
+ };
206
+ logger.info('\n' + 'loading new items from path: ' + options.path + options.firstPage);
207
+ xmlhttp.open("GET", location.origin + options.path + options.firstPage + '/index.html', true);
208
+ xmlhttp.send();
209
+
210
+ },
211
+ // -------------------------------------------------------------------------
212
+ // getChildItemsByAjaxHTML: extract items from page loaded
213
+ // -------------------------------------------------------------------------
214
+ getChildItemsByAjaxHTML: function (options, HTMLText) {
215
+ var newHTML = document.createElement('html');
216
+ var logger = log4javascript.getLogger('j1Scroll');
217
+
218
+ logger.info('\n' + 'load new items');
219
+ newHTML.innerHTML = HTMLText;
220
+ var childItems = newHTML.querySelectorAll(options.elementID + ' > *');
221
+ return childItems;
222
+ },
223
+ // -------------------------------------------------------------------------
224
+ // appendNewItems: append items and run post processing
225
+ // -------------------------------------------------------------------------
226
+ appendNewItems: function (items) {
227
+ var _this = this;
228
+ var logger = log4javascript.getLogger('j1Scroll');
229
+
230
+ logger.info('\n' + 'append new items');
231
+ items.forEach(function (item) {
232
+ _this.element.appendChild(item);
233
+ });
234
+
235
+ logger.info('\n' + 'post processing: createDropCap');
236
+ // initialize backdrops
237
+ j1.core.createDropCap();
238
+ },
239
+ // -------------------------------------------------------------------------
240
+ // getNewPost: load/append new items
241
+ // Note: loader flag prevents to load items if AJAX load in progress
242
+ // is NOT finished
243
+ // -------------------------------------------------------------------------
244
+ infoLastPage: function (options) {
245
+ var _this = this;
246
+ var logger = log4javascript.getLogger('j1Scroll');
247
+
248
+ logger.info('\n' + 'show: infoLastPage');
249
+ $('.page-scroll-last').show();
250
+ }
251
+ }); // END prototype
252
+
253
+ // wrapper around the constructor to prevent multiple instantiations
254
+ $.fn [pluginName] = function(options) {
255
+ return this.each(function() {
256
+ if (!$.data( this, "plugin_" + pluginName)) {
257
+ $.data(this, "plugin_" +
258
+ pluginName, new Plugin(this, options));
259
+ }
260
+ });
261
+ };
262
+
263
+ })(jQuery, window, document);
@@ -0,0 +1,16 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js
4
+ # J1 core module for j1scroll
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2021 Juergen Adams
10
+ #
11
+ # J1 Template is licensed under the MIT License.
12
+ # For details, see https://jekyll.one
13
+ # -----------------------------------------------------------------------------
14
+ */
15
+
16
+ (function(e,c,a,g){var d="j1Scroll",f={type:"infiniteScroll",scrollOffset:100,elementScroll:false,firstPage:2,lastPage:false,infoLastPage:false,loadStatus:false,onInit:function(){},onBeforeLoad:function(){},onAfterLoad:function(){}};function b(i,h){this.element=i;this.settings=e.extend({},f,h);this.settings.elementID="#"+this.element.id;this.init(this.settings)}e.extend(b.prototype,{init:function(i){var h=log4javascript.getLogger("j1Scroll");h.info("\ninitializing plugin: started");h.info("\nstate: started");if(i.elementScroll){this.scroller=this.element}else{this.scroller=c}if(i.loadStatus){var k='<div class="loader-ellips" style="display: none"> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> </div>';e(k).insertAfter(i.elementID)}if(i.infoLastPage){var j=i.lastPageInfo;e(j).insertAfter(i.elementID)}if(i.type==="infiniteScroll"){h.info("\nprocessing mode: infiniteScroll");h.info("\nloading items from path: "+i.path+"#");h.info("\nmonitoring element set to: "+this.scroller);this.registerScrollEvent(i)}h.info("\ninitializing plugin: finished");h.info("\nstate: finished")},isBottomReached:function(s){var n=this;var h,p;var m=e(s.elementID).height();if(n.settings.elementScroll){var j=e(c);var r=j.scrollTop();var i=j.height();var l=r+i-s.scrollOffset;var k=e(s.elementID);var o=k.offset().top+m;var q=k.height();h=o+q;return(o>=r&&o<l)||(h>r&&h<=l)||(q>i&&o<=r&&h>=l)}else{return(c.innerHeight+c.pageYOffset+s.scrollOffset>=a.body.offsetHeight)}},registerScrollEvent:function(i){var k=this;var h=log4javascript.getLogger("j1Scroll");h.info("\nscroll event: register");var j=function(m){var l=k.settings;if(k.isBottomReached(l)){if(l.firstPage>l.lastPage){h.info("\nlast page detected on: "+l.lastPage);c.removeEventListener("scroll",j);h.info("\nscroll event: removed");if(l.infoLastPage){k.infoLastPage(l)}return false}k.getNewPost(l)}};c.addEventListener("scroll",j);h.info("\nscroll event: registered")},getNewPost:function(i){var k=this;var h=log4javascript.getLogger("j1Scroll");h.info("\ntrigger loading ");if(this.itemsLoaded===false){return false}this.itemsLoaded=false;if(i.loadStatus){h.info("\nshow: spinner");e(".loader-ellips").show()}var j=new XMLHttpRequest();j.onreadystatechange=function(){if(j.readyState==XMLHttpRequest.DONE){if(j.status==200){i.firstPage++;var l=k.getChildItemsByAjaxHTML(i,j.responseText);k.appendNewItems(l);h.info("\nloading new items: successful");if(i.loadStatus){h.info("\nhide: spinner");e(".loader-ellips").hide()}return k.itemsLoaded=true}else{if(i.loadStatus){h.info("\nhide: spinner");e(".loader-ellips").hide()}h.error("\nloading new items failed, HTTP response: "+j.status);return k.itemsLoaded=false}}};h.info("\nloading new items from path: "+i.path+i.firstPage);j.open("GET",location.origin+i.path+i.firstPage+"/index.html",true);j.send()},getChildItemsByAjaxHTML:function(j,i){var l=a.createElement("html");var h=log4javascript.getLogger("j1Scroll");h.info("\nload new items");l.innerHTML=i;var k=l.querySelectorAll(j.elementID+" > *");return k},appendNewItems:function(h){var j=this;var i=log4javascript.getLogger("j1Scroll");i.info("\nappend new items");h.forEach(function(k){j.element.appendChild(k)});i.info("\npost processing: createDropCap");j1.core.createDropCap()},infoLastPage:function(i){var j=this;var h=log4javascript.getLogger("j1Scroll");h.info("\nshow: infoLastPage");e(".page-scroll-last").show()}});e.fn[d]=function(h){return this.each(function(){if(!e.data(this,"plugin_"+d)){e.data(this,"plugin_"+d,new b(this,h))}})}})(jQuery,window,document);
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  # -----------------------------------------------------------------------------
3
3
  # ~/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js
4
- # J1 implementation for showOnScroll
4
+ # Very simple J1 implementation for showOnScroll
5
5
  #
6
6
  # Product/Info:
7
7
  # https://jekyll.one
@@ -12,7 +12,10 @@
12
12
  # For details, see https://jekyll.one
13
13
  # -----------------------------------------------------------------------------
14
14
  */
15
-
15
+ // -------------------------------------------------------------------------
16
+ // isInViewport:
17
+ // Detects if an element is visible in an viewport specified
18
+ // -------------------------------------------------------------------------
16
19
  function isInViewport(elm, offset) {
17
20
  // if the element doesn't exist, abort
18
21
  if( elm.length == 0 ) {
@@ -32,27 +35,36 @@ function isInViewport(elm, offset) {
32
35
  (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
33
36
  }
34
37
 
38
+ // -----------------------------------------------------------------------------
39
+ // Initializer
40
+ // -----------------------------------------------------------------------------
35
41
  $(document).ready( function() {
36
42
 
37
43
  var showDelay = 700;
38
44
  var yOffset = 500;
39
- var logger = log4javascript.getLogger('j1.core.showOnScroll');
45
+ var logger = log4javascript.getLogger('j1ShowOnScroll');
40
46
 
47
+ // ---------------------------------------------------------------------------
48
+ // EventHandler: Service Panel
49
+ // ---------------------------------------------------------------------------
41
50
  var eventHandler_service_panel = function (event) {
42
51
  if (isInViewport ($('#home_service_panel'), yOffset)) {
43
- logger.info('\n' + 'The specified container is in view: home_service_panel');
44
- //console.log('The specified container is in view.');
52
+ logger.info('\n' + 'specified container is in view: home_service_panel');
45
53
  $(".home_service_panel").show(showDelay);
54
+ logger.info('\n' + 'remove eventHandler');
46
55
  window.removeEventListener('scroll', eventHandler_service_panel);
47
56
  }
48
57
  }
49
58
  window.addEventListener('scroll', eventHandler_service_panel);
50
59
 
60
+ // ---------------------------------------------------------------------------
61
+ // EventHandler: Intro Panel
62
+ // ---------------------------------------------------------------------------
51
63
  var eventHandler_intro_panel = function (event) {
52
64
  if (isInViewport ($('#home_intro_panel'), yOffset)) {
53
- logger.info('\n' + 'The specified container is in view: home_intro_panel');
54
- //console.log('The specified container is in view.');
65
+ logger.info('\n' + 'specified container is in view: home_intro_panel');
55
66
  $(".home_intro_panel").show(showDelay);
67
+ logger.info('\n' + 'remove eventHandler');
56
68
  window.removeEventListener('scroll', eventHandler_intro_panel);
57
69
  }
58
70
  }
data/lib/j1/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module J1
2
- VERSION = '2021.1.25'
2
+ VERSION = '2021.1.29'
3
3
  end
@@ -53,7 +53,7 @@ gem 'jekyll', '~> 4.2'
53
53
 
54
54
  # Theme Rubies, default: J1 Template (NOT used for the development system)
55
55
  #
56
- gem 'j1-template', '~> 2021.1.25'
56
+ gem 'j1-template', '~> 2021.1.29'
57
57
 
58
58
  # ------------------------------------------------------------------------------
59
59
  # PRODUCTION: Gem needed for the Jekyll and J1 prod environment
@@ -53,7 +53,7 @@ environment: production
53
53
  # ------------------------------------------------------------------------------
54
54
  # Sets the build version of J1 Template Gem
55
55
  #
56
- version: 2021.1.25
56
+ version: 2021.1.29
57
57
 
58
58
  # version
59
59
  # ------------------------------------------------------------------------------