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