1/** 2* Blogzine - Blog and Magazine Bootstrap 5 Theme 3* 4* @author Webestica (https://www.webestica.com/) 5* @version 1.3.2 6**/ 7 8 9/* =================== 10Table Of Content 11====================== 1201 PRELOADER 1302 MEGA MENU 1403 STICKY HEADER 1504 TINY SLIDER 1605 PARALLAX BACKGROUND 1706 STICKY BAR 1807 TOOLTIP 1908 POPOVER 2009 BACK TO TOP 2110 STICKY POST 2211 STICKY FOOTER 2312 GLIGHTBOX 2413 ISOTOPE 2514 FONT SIZE 2615 LAZY LOAD 2716 QUILL EDITOR 2817 VIDEO PLAYER 2918 OVERLAY SCROLLBAR 3019 DASHBOARD CHART 3120 TRAFFIC CHART 32====================== */ 33 34"use strict"; 35!function () { 36 37 window.Element.prototype.removeClass = function () { 38 let className = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", 39 selectors = this; 40 if (!(selectors instanceof HTMLElement) && selectors !== null) { 41 selectors = document.querySelector(selectors); 42 } 43 if (this.isVariableDefined(selectors) && className) { 44 selectors.classList.remove(className); 45 } 46 return this; 47 }, window.Element.prototype.addClass = function () { 48 let className = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", 49 selectors = this; 50 if (!(selectors instanceof HTMLElement) && selectors !== null) { 51 selectors = document.querySelector(selectors); 52 } 53 if (this.isVariableDefined(selectors) && className) { 54 selectors.classList.add(className); 55 } 56 return this; 57 }, window.Element.prototype.toggleClass = function () { 58 let className = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", 59 selectors = this; 60 if (!(selectors instanceof HTMLElement) && selectors !== null) { 61 selectors = document.querySelector(selectors); 62 } 63 if (this.isVariableDefined(selectors) && className) { 64 selectors.classList.toggle(className); 65 } 66 return this; 67 }, window.Element.prototype.isVariableDefined = function () { 68 return !!this && typeof (this) != 'undefined' && this != null; 69 } 70}(); 71 72// Get CSS var value 73var ThemeColor = function () { 74 return { 75 getCssVariableValue: function (e) { 76 var t = getComputedStyle(document.documentElement).getPropertyValue(e); 77 return t && t.length > 0 && (t = t.trim()), t; 78 } 79 }; 80}(); 81 82var e = { 83 init: function () { 84 e.preLoader(), 85 e.megaMenu(), 86 e.stickyHeader(), 87 e.tinySlider(), 88 e.parallaxBG(), 89 e.stickyBar(), 90 e.toolTipFunc(), 91 e.popOverFunc(), 92 e.backTotop(), 93 e.stickyPost(), 94 // e.stickyFooter(), 95 // e.enableIsotope(), 96 // e.zooming(), 97 e.lazyLoading(), 98 // e.quill(), 99 // e.videoPlyr() 100 e.overlayScrollbars(); 101 // e.trafficsourcesChart(), 102 // e.trafficstatsChart(); 103 }, 104 isVariableDefined: function (el) { 105 return typeof !!el && (el) != 'undefined' && el != null; 106 }, 107 getParents: function (el, selector, filter) { 108 const result = []; 109 const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector; 110 111 // match start from parent 112 el = el.parentElement; 113 while (el && !matchesSelector.call(el, selector)) { 114 if (!filter) { 115 if (selector) { 116 if (matchesSelector.call(el, selector)) { 117 return result.push(el); 118 } 119 } else { 120 result.push(el); 121 } 122 } else { 123 if (matchesSelector.call(el, filter)) { 124 result.push(el); 125 } 126 } 127 el = el.parentElement; 128 if (e.isVariableDefined(el)) { 129 if (matchesSelector.call(el, selector)) { 130 return el; 131 } 132 } 133 134 } 135 return result; 136 }, 137 getNextSiblings: function (el, selector, filter) { 138 let sibs = []; 139 let nextElem = el.parentNode.firstChild; 140 const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector; 141 do { 142 if (nextElem.nodeType === 3) continue; // ignore text nodes 143 if (nextElem === el) continue; // ignore elem of target 144 if (nextElem === el.nextElementSibling) { 145 if ((!filter || filter(el))) { 146 if (selector) { 147 if (matchesSelector.call(nextElem, selector)) { 148 return nextElem; 149 } 150 } else { 151 sibs.push(nextElem); 152 } 153 el = nextElem; 154 155 } 156 } 157 } while (nextElem = nextElem.nextSibling) 158 return sibs; 159 }, 160 on: function (selectors, type, listener) { 161 document.addEventListener("DOMContentLoaded", () => { 162 if (!(selectors instanceof HTMLElement) && selectors !== null) { 163 selectors = document.querySelector(selectors); 164 } 165 selectors.addEventListener(type, listener); 166 }); 167 }, 168 onAll: function (selectors, type, listener) { 169 document.addEventListener("DOMContentLoaded", () => {
170 document.querySelectorAll(selectors).forEach((element) => { 171 if (type.indexOf(',') > -1) { 172 let types = type.split(','); 173 types.forEach((type) => { 174 element.addEventListener(type, listener); 175 }); 176 } else { 177 element.addEventListener(type, listener); 178 } 179 180 181 }); 182 }); 183 }, 184 removeClass: function (selectors, className) { 185 if (!(selectors instanceof HTMLElement) && selectors !== null) { 186 selectors = document.querySelector(selectors); 187 } 188 if (e.isVariableDefined(selectors)) { 189 selectors.removeClass(className); 190 } 191 }, 192 removeAllClass: function (selectors, className) { 193 if (e.isVariableDefined(selectors) && (selectors instanceof HTMLElement)) { 194 document.querySelectorAll(selectors).forEach((element) => { 195 element.removeClass(className); 196 }); 197 } 198 199 }, 200 toggleClass: function (selectors, className) { 201 if (!(selectors instanceof HTMLElement) && selectors !== null) { 202 selectors = document.querySelector(selectors); 203 } 204 if (e.isVariableDefined(selectors)) { 205 selectors.toggleClass(className); 206 } 207 }, 208 toggleAllClass: function (selectors, className) { 209 if (e.isVariableDefined(selectors) && (selectors instanceof HTMLElement)) { 210 document.querySelectorAll(selectors).forEach((element) => { 211 element.toggleClass(className); 212 }); 213 } 214 }, 215 addClass: function (selectors, className) { 216 if (!(selectors instanceof HTMLElement) && selectors !== null) { 217 selectors = document.querySelector(selectors); 218 } 219 if (e.isVariableDefined(selectors)) { 220 selectors.addClass(className); 221 } 222 }, 223 select: function (selectors) { 224 return document.querySelector(selectors); 225 }, 226 selectAll: function (selectors) { 227 return document.querySelectorAll(selectors); 228 }, 229 230 // START: 01 Preloader 231 preLoader: function () { 232 window.onload = function () { 233 var preloader = e.select('.preloader'); 234 if (e.isVariableDefined(preloader)) { 235 preloader.className += ' animate__animated animate__fadeOut'; 236 setTimeout(function(){ 237 preloader.style.display = 'none'; 238 }, 200); 239 } 240 }; 241 }, 242 // END: Preloader 243 244 // START: 02 Mega Menu 245 megaMenu: function () { 246 e.onAll('.dropdown-menu a.dropdown-item.dropdown-toggle', 'click', function (event) { 247 var element = this; 248 event.preventDefault(); 249 event.stopImmediatePropagation(); 250 if (e.isVariableDefined(element.nextElementSibling) && !element.nextElementSibling.classList.contains("show")) { 251 const parents = e.getParents(element, '.dropdown-menu'); 252 e.removeClass(parents.querySelector('.show'), "show"); 253 if(e.isVariableDefined(parents.querySelector('.dropdown-opened'))){ 254 e.removeClass(parents.querySelector('.dropdown-opened'), "dropdown-opened"); 255 } 256 257 } 258 var $subMenu = e.getNextSiblings(element, ".dropdown-menu"); 259 e.toggleClass($subMenu, "show"); 260 $subMenu.previousElementSibling.toggleClass('dropdown-opened'); 261 var parents = e.getParents(element, 'li.nav-item.dropdown.show'); 262 if (e.isVariableDefined(parents) && parents.length > 0) { 263 e.on(parents, 'hidden.bs.dropdown', function (event) { 264 e.removeAllClass('.dropdown-submenu .show'); 265 }); 266 } 267 }); 268 }, 269 // END: Mega Menu 270 271 // START: 03 Sticky Header 272 stickyHeader: function () { 273 var stickyNav = e.select('.navbar-sticky'); 274 if (e.isVariableDefined(stickyNav)) { 275 var stickyHeight = stickyNav.offsetHeight; 276 stickyNav.insertAdjacentHTML('afterend', '<div id="sticky-space"></div>'); 277 var stickySpace = e.select('#sticky-space'); 278 if (e.isVariableDefined(stickySpace)) { 279 document.addEventListener('scroll', function (event) { 280 var scTop = window.pageYOffset || document.documentElement.scrollTop; 281 if (scTop >= 400) { 282 stickySpace.addClass('active'); 283 e.select("#sticky-space.active").style.height = stickyHeight + 'px'; 284 stickyNav.addClass('navbar-sticky-on'); 285 } else { 286 stickySpace.removeClass('active'); 287 stickySpace.style.height = '0px'; 288 stickyNav.removeClass("navbar-sticky-on"); 289 } 290 }); 291 } 292 } 293 }, 294 // END: Sticky Header 295 296 // START: 04 Tiny Slider 297 tinySlider: function () { 298 var $carousel = e.select('.tiny-slider-inner'); 299 if (e.isVariableDefined($carousel)) { 300 var tnsCarousel = e.selectAll('.tiny-slider-inner');
301 tnsCarousel.forEach(slider => { 302 var slider1 = slider; 303 var sliderMode = slider1.getAttribute('data-mode') ? slider1.getAttribute('data-mode') : 'carousel'; 304 var sliderAxis = slider1.getAttribute('data-axis') ? slider1.getAttribute('data-axis') : 'horizontal'; 305 var sliderSpace = slider1.getAttribute('data-gutter') ? slider1.getAttribute('data-gutter') : 30; 306 var sliderEdge = slider1.getAttribute('data-edge') ? slider1.getAttribute('data-edge') : 0; 307 308 var sliderItems = slider1.getAttribute('data-items') ? slider1.getAttribute('data-items') : 4; //option: number (items in all device) 309 var sliderItemsXl = slider1.getAttribute('data-items-xl') ? slider1.getAttribute('data-items-xl') : Number(sliderItems); //option: number (items in 1200 to end ) 310 var sliderItemsLg = slider1.getAttribute('data-items-lg') ? slider1.getAttribute('data-items-lg') : Number(sliderItemsXl); //option: number (items in 992 to 1199 ) 311 var sliderItemsMd = slider1.getAttribute('data-items-md') ? slider1.getAttribute('data-items-md') : Number(sliderItemsLg); //option: number (items in 768 to 991 ) 312 var sliderItemsSm = slider1.getAttribute('data-items-sm') ? slider1.getAttribute('data-items-sm') : Number(sliderItemsMd); //option: number (items in 576 to 767 ) 313 var sliderItemsXs = slider1.getAttribute('data-items-xs') ? slider1.getAttribute('data-items-xs') : Number(sliderItemsSm); //option: number (items in start to 575 ) 314 315 var sliderSpeed = slider1.getAttribute('data-speed') ? slider1.getAttribute('data-speed') : 500; 316 var sliderautoWidth = slider1.getAttribute('data-autowidth') === 'true'; //option: true or false 317 var sliderArrow = slider1.getAttribute('data-arrow') !== 'false'; //option: true or false 318 var sliderDots = slider1.getAttribute('data-dots') !== 'false'; //option: true or false 319 320 var sliderAutoPlay = slider1.getAttribute('data-autoplay') !== 'false'; //option: true or false 321 var sliderAutoPlayTime = slider1.getAttribute('data-autoplaytime') ? slider1.getAttribute('data-autoplaytime') : 4000; 322 var sliderHoverPause = slider1.getAttribute('data-hoverpause') === 'true'; //option: true or false 323 if (e.isVariableDefined(e.select('.custom-thumb'))) { 324 var sliderNavContainer = e.select('.custom-thumb'); 325 } 326 var sliderLoop = slider1.getAttribute('data-loop') !== 'false'; //option: true or false 327 var sliderRewind = slider1.getAttribute('data-rewind') === 'true'; //option: true or false 328 var sliderAutoHeight = slider1.getAttribute('data-autoheight') === 'true'; //option: true or false 329 var sliderfixedWidth = slider1.getAttribute('data-fixedwidth') === 'true'; //option: true or false 330 var sliderTouch = slider1.getAttribute('data-touch') !== 'false'; //option: true or false 331 var sliderDrag = slider1.getAttribute('data-drag') !== 'false'; //option: true or false 332 // Check if document DIR is RTL 333 var ifRtl = document.getElementsByTagName("html")[0].getAttribute("dir"); 334 var sliderDirection; 335 if (ifRtl === 'rtl') { 336 sliderDirection = 'rtl'; 337 } 338 339 var tnsSlider = tns({ 340 container: slider, 341 mode: sliderMode, 342 axis: sliderAxis, 343 gutter: sliderSpace, 344 edgePadding: sliderEdge, 345 speed: sliderSpeed, 346 autoWidth: sliderautoWidth, 347 controls: sliderArrow, 348 nav: sliderDots, 349 autoplay: sliderAutoPlay, 350 autoplayTimeout: sliderAutoPlayTime, 351 autoplayHoverPause: sliderHoverPause, 352 autoplayButton: false, 353 autoplayButtonOutput: false, 354 controlsPosition: top, 355 navContainer: sliderNavContainer, 356 navPosition: top, 357 autoplayPosition: top, 358 controlsText: [ 359 '<i class="fas fa-chevron-left"></i>', 360 '<i class="fas fa-chevron-right"></i>' 361 ], 362 loop: sliderLoop, 363 rewind: sliderRewind, 364 autoHeight: sliderAutoHeight, 365 fixedWidth: sliderfixedWidth, 366 touch: sliderTouch, 367 mouseDrag: sliderDrag, 368 arrowKeys: true, 369 items: sliderItems, 370 textDirection: sliderDirection, 371 lazyload: true, 372 lazyloadSelector: '.lazy', 373 responsive: { 374 0: { 375 items: Number(sliderItemsXs) 376 }, 377 576: { 378 items: Number(sliderItemsSm) 379 }, 380 768: { 381 items: Number(sliderItemsMd) 382 }, 383 992: { 384 items: Number(sliderItemsLg) 385 }, 386 1200: { 387 items: Number(sliderItemsXl) 388 } 389 } 390 }); 391 }); 392 } 393 }, 394 // END: Tiny Slider 395
396 // START: 05 Parallax Background 397 parallaxBG: function () { 398 var parBG = e.select('.bg-parallax'); 399 if (e.isVariableDefined(parBG)) { 400 jarallax(e.selectAll('.bg-parallax'), { 401 speed: 0.6 402 }); 403 } 404 }, 405 // END: Parallax Background 406 407 // START: 06 Sticky Bar 408 stickyBar: function () { 409 var sb = e.select('[data-sticky]'); 410 if (e.isVariableDefined(sb)) { 411 var sticky = new Sticky('[data-sticky]'); 412 } 413 }, 414 // END: Sticky Bar 415 416 // START: 07 Tooltip 417 // Enable tooltips everywhere via data-toggle attribute 418 toolTipFunc: function () { 419 var tooltipTriggerList = [].slice.call(e.selectAll('[data-bs-toggle="tooltip"]')) 420 var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { 421 return new bootstrap.Tooltip(tooltipTriggerEl) 422 }) 423 }, 424 // END: Tooltip 425 426 // START: 08 Popover 427 // Enable popover everywhere via data-toggle attribute 428 popOverFunc: function () { 429 var popoverTriggerList = [].slice.call(e.selectAll('[data-bs-toggle="popover"]')) 430 var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { 431 return new bootstrap.Popover(popoverTriggerEl) 432 }) 433 }, 434 // END: Popover 435 436 // START: 09 Back to Top 437 backTotop: function () { 438 var scrollpos = window.scrollY; 439 var backBtn = e.select('.back-top'); 440 if (e.isVariableDefined(backBtn)) { 441 var add_class_on_scroll = () => backBtn.addClass("back-top-show"); 442 var remove_class_on_scroll = () => backBtn.removeClass("back-top-show"); 443 444 window.addEventListener('scroll', function () { 445 scrollpos = window.scrollY; 446 if (scrollpos >= 800) { 447 add_class_on_scroll() 448 } else { 449 remove_class_on_scroll() 450 } 451 }); 452 453 backBtn.addEventListener('click', () => window.scrollTo({ 454 top: 0, 455 behavior: 'smooth', 456 })); 457 } 458 }, 459 // END: Back to Top 460 461 // START: 10 Sticky post 462 stickyPost: function () { 463 var scrollpos = window.scrollY; 464 var sp = e.select('.sticky-post'); 465 if (e.isVariableDefined(sp)) { 466 var add_class_on_scroll = () => sp.addClass("sticky-post-sticked"); 467 var remove_class_on_scroll = () => sp.removeClass("sticky-post-sticked"); 468 469 window.addEventListener('scroll', function () { 470 scrollpos = window.scrollY; 471 if (scrollpos >= 1400) { 472 add_class_on_scroll() 473 } else { 474 remove_class_on_scroll() 475 } 476 }); 477 } 478 }, 479 // END: Sticky Post 480 481 // START: 11 Sticky Footer 482 stickyFooter: function () { 483 var fixedFooter = e.select('.footer-sticky'); 484 if (e.isVariableDefined(fixedFooter)) { 485 window.addEventListener("load", function () { 486 window.dispatchEvent(new Event('resize')); 487 }); 488 window.addEventListener('resize', function (event) { 489 var screenWidth = window.outerWidth; 490 var footerHeight = fixedFooter.offsetHeight - 1; 491 if (screenWidth >= 768) { 492 document.getElementsByTagName('main')[0].style.marginBottom = footerHeight + 'px'; 493 } 494 }); 495 } 496 }, 497 // END: Sticky Footer 498 499 500 // END: GLightbox 501 502 // START: 13 Isotope 503 enableIsotope: function () { 504 var isGridItem = e.select('.grid-item'); 505 if (e.isVariableDefined(isGridItem)) { 506 507 // Code only for normal Grid 508 var onlyGrid = e.select('[data-isotope]'); 509 if (e.isVariableDefined(onlyGrid)) { 510 var allGrid = e.selectAll("[data-isotope]"); 511 allGrid.forEach(gridItem => { 512 var gridItemData = gridItem.getAttribute('data-isotope'); 513 var gridItemDataObj = JSON.parse(gridItemData); 514 var iso = new Isotope(gridItem, { 515 itemSelector: '.grid-item', 516 layoutMode: gridItemDataObj.layoutMode 517 }); 518 519 imagesLoaded(gridItem).on('progress', function () { 520 // layout Isotope after each image loads 521 iso.layout(); 522 }); 523 }); 524 } 525 526 // Code only for normal Grid 527 var onlyGridFilter = e.select('.grid-menu'); 528 if (e.isVariableDefined(onlyGridFilter)) { 529 var filterMenu = e.selectAll('.grid-menu'); 530 filterMenu.forEach(menu => { 531 var filterContainer = menu.getAttribute('data-target'); 532 var a = menu.dataset.target; 533 var b = e.select(a); 534 var filterContainerItemData = b.getAttribute('data-isotope'); 535 var filterContainerItemDataObj = JSON.parse(filterContainerItemData); 536 var filter = new Isotope(filterContainer, { 537 itemSelector: '.grid-item', 538 transitionDuration: '0.7s', 539 layoutMode: filterContainerItemDataObj.layoutMode 540 }); 541 542 var menuItems = menu.querySelectorAll('li a');
543 menuItems.forEach(menuItem => { 544 menuItem.addEventListener('click', function (event) { 545 var filterValue = menuItem.getAttribute('data-filter'); 546 filter.arrange({filter: filterValue}); 547 menuItems.forEach((control) => control.removeClass('active')); 548 menuItem.addClass('active'); 549 }); 550 }); 551 552 imagesLoaded(filterContainer).on('progress', function () { 553 filter.layout(); 554 }); 555 }); 556 } 557 558 } 559 }, 560 // END: Isotope 561 562 // START: 14 Font size 563 zooming: function () { 564 const doc = document.documentElement; 565 var radios = document.querySelectorAll('input[type=radio][name="fntradio"]'); 566 radios.forEach(radio => { 567 radio.addEventListener("change", function() { 568 var idZ = radio.getAttribute('id'); 569 if(idZ == 'font-sm') { 570 doc.classList.remove('font-lg'); 571 doc.classList.add('font-sm'); 572 } else if(idZ == 'font-default') { 573 doc.classList.remove('font-sm','font-lg'); 574 } else if(idZ == 'font-lg') { 575 doc.classList.remove('font-sm'); 576 doc.classList.add('font-lg'); 577 } 578 }); 579 }); 580 }, 581 // END: Font size 582 583 // START: 15 Lazy Load 584 lazyLoading: function () { 585 var lazLoad = e.select('.lazy'); 586 if (e.isVariableDefined(lazLoad)) { 587 var lazyLoadInstance = new LazyLoad({ 588 }); 589 } 590 }, 591 // END: Lazy Load 592 593 // START: 16 Quill Editor 594 quill: function () { 595 var ql = e.select('#quilleditor'); 596 if (e.isVariableDefined(ql)) { 597 var editor = new Quill('#quilleditor', { 598 modules: { toolbar: '#quilltoolbar' }, 599 theme: 'snow' 600 }); 601 } 602 }, 603 // END: Quill Editor 604 605 // START: 17 Video player 606 videoPlyr: function () { 607 var vdp = e.select('.player-wrapper'); 608 if (e.isVariableDefined(vdp)) { 609 // youtube 610 const playerYoutube = Plyr.setup('.player-youtube', {}); 611 window.player = playerYoutube; 612 613 // Vimeo 614 const playerVimeo = Plyr.setup('.player-vimeo', {}); 615 window.player = playerVimeo; 616 617 // HTML video 618 const playerHtmlvideo = Plyr.setup('.player-html', { 619 captions: {active: true} 620 }); 621 window.player = playerHtmlvideo; 622 623 // HTML audio 624 const playerHtmlaudio = Plyr.setup('.player-audio', {}); 625 window.player = playerHtmlaudio; 626 } 627 }, 628 // END: Video player 629 630 // START: 18 Overlay scrollbar 631 overlayScrollbars: function () { 632 var os = e.select('.custom-scrollbar'); 633 if (os) { 634 document.addEventListener("DOMContentLoaded", function() { 635 var cs = document.querySelectorAll('.custom-scrollbar'); 636 cs.forEach(c => { 637 OverlayScrollbars(c, { 638 scrollbars: { 639 autoHide: 'leave', 640 autoHideDelay: 200 641 }, 642 overflowBehavior : { 643 x : "visible-hidden", 644 y : "scroll" 645 } 646 }); 647 }); 648 }); 649 } 650 }, 651 // END: Overlay scrollbar 652 653 // START: 19 Dashboard Chart 654 trafficsourcesChart: function () { 655 var ac = e.select('#apexChartTrafficSources'); 656 if (e.isVariableDefined(ac)) { 657 var options = { 658 colors: [ 659 '#2163e8', '#0cbc87', '#d6293e', '#f7c32e' 660 ], 661 labels: ['Search', 'Direct', 'Social', 'Display ads'], 662 series: [44, 55, 41, 17], 663 legend: { 664 show: false, 665 position: 'right' 666 }, 667 chart: { 668 height: 300, 669 type: 'donut', 670 }, 671 plotOptions: { 672 pie: { 673 donut: { 674 size: '75%', 675 }, 676 offsetY: 20, 677 }, 678 stroke: { 679 colors: undefined 680 } 681 }, 682 stroke:{ 683 show: false 684 }, 685 dataLabels: { 686 enabled: false 687 }, 688 responsive: [{ 689 breakpoint: 480, 690 options: { 691 chart: { 692 height: 200 693 }, 694 legend: { 695 show: false 696 } 697 } 698 }] 699 };
700 var chart = new ApexCharts(document.querySelector("#apexChartTrafficSources"), options); 701 chart.render(); 702 } 703 }, 704 // END: Dashboard Chart 705 706 // START: 20 Traffic Chart 707 trafficstatsChart: function () { 708 var cpv = e.select('#apexChartTrafficStats'); 709 if (e.isVariableDefined(cpv)) { 710 var options = { 711 colors: [ 712 '#2163e8', 713 ], 714 series: [{ 715 name: 'Users', 716 data: [100, 401, 305, 501, 409, 602, 609, 901, 848, 602, 809, 901] 717 }], 718 chart: { 719 height: 320, 720 type: 'area', 721 toolbar: { 722 show: false 723 } 724 }, 725 grid: { 726 strokeDashArray: 4, 727 position: 'back' 728 }, 729 dataLabels: { 730 enabled: false 731 }, 732 stroke: { 733 curve: 'smooth' 734 }, 735 legend: { 736 show: true, 737 horizontalAlign: 'right', 738 position: 'top', 739 labels: { 740 }, 741 markers: { 742 width: 8, 743 height: 8 744 } 745 }, 746 xaxis: { 747 labels: { 748 show: true 749 }, 750 axisBorder: { 751 show: false 752 }, 753 categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 754 }, 755 tooltip: { 756 x: { 757 format: 'dd/MM/yy HH:mm' 758 }, 759 }, 760 }; 761 var chart = new ApexCharts(document.querySelector("#apexChartTrafficStats"), options); 762 chart.render(); 763 } 764 }, 765 // END: Traffic Chart 766 767}; 768e.init();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.