Mercurial > nebulaweb3
comparison default/assets/js/theme.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1d038bc9b3d2 |
---|---|
1 /* | |
2 * Name: Oscar | |
3 * Written by: Unifato - (http://unifato.com) | |
4 * Version: 1.0.0 | |
5 */ | |
6 | |
7 (function($) { | |
8 'use strict'; | |
9 | |
10 var initBodyClass = ""; | |
11 if($("body").hasClass("sidebar-collapse")) { | |
12 initBodyClass = "sidebar-collapse"; | |
13 } else if ($("body").hasClass("sidebar-expand")) { | |
14 initBodyClass = "sidebar-expand"; | |
15 } | |
16 | |
17 var Unifato = { | |
18 init: function() { | |
19 this.collapseNavbar(); | |
20 $(window).scroll(this.collapseNavbar); | |
21 this.contentHeight(); | |
22 | |
23 this.header(); | |
24 this.sidebar(); | |
25 this.content(); | |
26 this.enableScrollbar(); | |
27 this.inputFocus(); | |
28 this.enableTooltip(); | |
29 this.enableMailbox(); | |
30 this.enableRadioCheckbox(); | |
31 this.enableValidation(); | |
32 this.enablePace(); | |
33 this.enablePlugins(); | |
34 }, | |
35 | |
36 enablePace: function() { | |
37 Pace.on('done', function() { | |
38 $(document).trigger('PACE_DONE'); | |
39 }); | |
40 }, | |
41 | |
42 enablePlugins: function() { | |
43 this.enableSweetAlert(); | |
44 this.enableTodo(); | |
45 this.enableTwitterWidget(); | |
46 this.enableFacebookWidget(); | |
47 this.enableVectorMaps(); | |
48 this.enableGoogleMaps(); | |
49 this.enableFullCalendar(); | |
50 this.enableClndr(); | |
51 this.enableDataTables(); | |
52 this.enableFootable(); | |
53 this.enableTableEditable(); | |
54 this.enableCountUp(); | |
55 this.enableRangeSlider(); | |
56 this.enableSortable(); | |
57 this.enableNestedSortable(); | |
58 this.enableTimelineLoadMoreBtn(); | |
59 this.enableCarousel(); | |
60 this.enableMedia(); | |
61 this.enableInputMask(); | |
62 this.enableDropify(); | |
63 this.enableDropzone(); | |
64 this.enableClockPicker(); | |
65 this.enableColorPicker(); | |
66 this.enableDateRangePicker(); | |
67 this.enablePredefinedDateRangePicker(); | |
68 this.enableDatePicker(); | |
69 this.enableSelect2(); | |
70 this.enableSwitchery(); | |
71 this.enableTouchspin(); | |
72 this.enableMultiSelect(); | |
73 this.enableTinyMCE(); | |
74 this.enableBootstrapWysiwyg(); | |
75 this.enableCircleProgress(); | |
76 this.enableSparkline(); | |
77 }, | |
78 | |
79 collapseNavbar: function() { | |
80 if( $(window).scrollTop() > 30 ) { | |
81 $("#wrapper").addClass("fix-top"); | |
82 } | |
83 else { | |
84 $("#wrapper").removeClass("fix-top"); | |
85 } | |
86 }, | |
87 | |
88 header: function() { | |
89 | |
90 }, | |
91 | |
92 contentHeight: function() { | |
93 var width = window.innerWidth > 0 ? window.innerWidth:screen.width; | |
94 var l; | |
95 | |
96 if ( width > 720 && $("body").hasClass("collapse-collapse") ) { | |
97 l = $(".site-sidebar").outerHeight() - 1; | |
98 $(".main-wrapper").css("min-height", l + "px"); | |
99 } | |
100 if ( width > 720 && $("body").hasClass('sidebar-horizontal') ) { | |
101 l = (window.innerHeight > 0 ? window.innerHeight : this.screen.height) - 1 - $(".navbar").outerHeight() - $('.site-sidebar').outerHeight(); | |
102 $(".main-wrapper").css("min-height", l + "px"); | |
103 } | |
104 else if (width > 720) { | |
105 l = (window.innerHeight > 0 ? window.innerHeight : this.screen.height) - 1 - $(".navbar").outerHeight(); | |
106 $(".main-wrapper").css("min-height", l + "px"); | |
107 } | |
108 }, | |
109 | |
110 content: function() { | |
111 $(".card-expandable .card-header").on("click",function(e) { | |
112 $(this).parents(".card").toggleClass("card-expanded"); | |
113 }); | |
114 | |
115 this.enableMagnificPopup(); | |
116 | |
117 var scrollToBottom = document.getElementsByClassName('scroll-to-bottom'); | |
118 for( var i = 0; i < scrollToBottom.length; i++ ) { | |
119 scrollToBottom[i].scrollTop = scrollToBottom[i].scrollHeight; | |
120 } | |
121 | |
122 $('.blog-post-share-links .toggle-link').click(function() { | |
123 $(this).closest('ul').toggleClass('active'); | |
124 }); | |
125 }, | |
126 | |
127 initScrollbar: function($el) { | |
128 $el.perfectScrollbar($el[0].dataset); | |
129 }, | |
130 | |
131 sidebar: function() { | |
132 var self = this; | |
133 if( document.body.classList.contains('sidebar-expand') ) | |
134 $('.side-menu').metisMenu({ preventDefault: true }); | |
135 $('.side-menu').on('show.metisMenu',function() { | |
136 $('.site-sidebar.scrollbar-enabled').perfectScrollbar('destroy'); | |
137 self.initScrollbar( $('.site-sidebar.scrollbar-enabled') ); | |
138 }); | |
139 this.sidebarToggle(); | |
140 this.rightSidebarToggle(); | |
141 this.sidebarUserToggle(); | |
142 this.chatSidebar(); | |
143 }, | |
144 | |
145 setMenu: function(){ | |
146 var self = this; | |
147 var width = window.innerWidth > 0 ? window.innerWidth:screen.width; | |
148 var $body = $("body"); | |
149 $('.site-sidebar.scrollbar-enabled').perfectScrollbar('destroy').removeClass('ps'); | |
150 | |
151 if (width < 961) { | |
152 $('.side-menu').metisMenu({ preventDefault: true }); | |
153 } | |
154 else if (width > 960 && width < 1170 && initBodyClass == "sidebar-expand") { | |
155 $(".site-sidebar").show(); | |
156 $body.removeClass("sidebar-expand"); | |
157 $body.addClass("sidebar-collapse"); | |
158 } | |
159 else if (width >= 1170 && initBodyClass == "sidebar-expand") { | |
160 $(".site-sidebar").show(); | |
161 $body.removeClass("sidebar-collapse"); | |
162 $body.addClass("sidebar-expand"); | |
163 Unifato.initScrollbar( $('.site-sidebar.scrollbar-enabled') ); | |
164 } | |
165 else if ($body.hasClass("sidebar-expand")) { | |
166 $(".site-sidebar").show(); | |
167 Unifato.initScrollbar( $('.site-sidebar.scrollbar-enabled') ); | |
168 } | |
169 else if ( document.body.classList.contains('sidebar-horizontal') ) { | |
170 $(".site-sidebar").show(); | |
171 $('.side-menu').metisMenu('dispose'); | |
172 } | |
173 else { | |
174 $(".site-sidebar").show(); | |
175 } | |
176 }, | |
177 | |
178 sidebarToggle: function() { | |
179 var self = this; | |
180 $(".sidebar-toggle a").on("click",function(){ | |
181 var width = window.innerWidth > 0 ? window.innerWidth : screen.width; | |
182 var $body = $("body"); | |
183 $('.site-sidebar.scrollbar-enabled').perfectScrollbar('destroy').removeClass('ps'); | |
184 | |
185 if (width < 961) { | |
186 $(".site-sidebar").toggle(); | |
187 } | |
188 else if ($body.hasClass("sidebar-expand")) { | |
189 $body.removeClass("sidebar-expand"); | |
190 $body.addClass("sidebar-collapse"); | |
191 $(".side-user > a").removeClass("active"); | |
192 $(".side-user > a").siblings(".side-menu").hide(); | |
193 $('.side-menu .sub-menu').css('height', 'auto'); | |
194 $('.side-menu').metisMenu('dispose'); | |
195 } | |
196 else if ($body.hasClass("sidebar-collapse")) { | |
197 $body.removeClass("sidebar-collapse"); | |
198 $body.addClass("sidebar-expand"); | |
199 self.initScrollbar( $('.site-sidebar.scrollbar-enabled') ); | |
200 $('.side-menu').metisMenu({ preventDefault: true }); | |
201 } | |
202 | |
203 Unifato.contentHeight(); | |
204 if( width > 961 ) { | |
205 $(document).trigger("SIDEBAR_CHANGED_WIDTH"); | |
206 } | |
207 }); | |
208 | |
209 }, | |
210 | |
211 rightSidebarToggle : function() { | |
212 $(".right-sidebar-toggle").on("click",function(e) { | |
213 $('.dropdown-toggle[aria-expanded="true"]').dropdown('toggle'); | |
214 $('body').toggleClass('right-sidebar-expand'); | |
215 return false; | |
216 }); | |
217 | |
218 document.addEventListener('click', function(event) { | |
219 var $rightSidebar = document.getElementsByClassName('right-sidebar')[0], | |
220 $chatPanel = document.getElementsByClassName('chat-panel')[0]; | |
221 var isInsideContainer = $rightSidebar.contains( event.target ) || $chatPanel.contains(event.target); | |
222 if( !isInsideContainer ) { | |
223 document.body.classList.remove('right-sidebar-expand'); | |
224 $chatPanel.hidden = 'hidden'; | |
225 } | |
226 }); | |
227 }, | |
228 | |
229 sidebarUserToggle: function() { | |
230 $(".side-user > a").on("click",function(){ | |
231 if ($('body').hasClass("sidebar-collapse") === false) { | |
232 $(this).toggleClass("active"); | |
233 $(this).siblings(".side-menu").toggle(); | |
234 } | |
235 }); | |
236 }, | |
237 | |
238 chatSidebar: function() { | |
239 var el = $('[data-plugin="chat-sidebar"]'); | |
240 if( !el.length ) return; | |
241 var chatList = el.find('.chat-list'); | |
242 this.chatPanel(); | |
243 chatList.each(function(index) { | |
244 var $this = $(this); | |
245 $(this).find('.list-group a').on('click', function() { | |
246 $this.find('.list-group a.active').removeClass('active'); | |
247 $(this).addClass('active'); | |
248 var el = $('.chat-panel'); | |
249 if(!el.length) return; | |
250 el.removeAttr('hidden'); | |
251 | |
252 // For Scroll to Bottom | |
253 var messages = el.find('.messages'); | |
254 messages[0].scrollTop = messages[0].scrollHeight; | |
255 if( messages[0].classList.contains('scrollbar-enabled') ) { | |
256 messages.perfectScrollbar('update'); | |
257 } | |
258 | |
259 el.find('.user-name').html( $(this).data('chat-user')); | |
260 }); | |
261 }); | |
262 }, | |
263 | |
264 chatPanel: function() { | |
265 var el = $('.chat-panel'); | |
266 if(!el.length) return; | |
267 | |
268 // Close Button | |
269 el.find('.close').on('click', function(){ | |
270 el.attr('hidden', true); | |
271 el.find('.panel-body').removeClass('hide'); | |
272 }); | |
273 | |
274 // Minimize Button | |
275 el.find('.minimize').on('click', function(){ | |
276 el.find('.card-block').attr('hidden', !el.find('.card-block').attr('hidden') ); | |
277 if( el.find('.card-block').attr('hidden') === 'hidden' ) | |
278 $(this).find('.material-icons').html('expand_less'); | |
279 else | |
280 $(this).find('.material-icons').html('expand_more'); | |
281 }); | |
282 | |
283 }, | |
284 | |
285 enableMagnificPopup: function() { | |
286 var el = $('[data-toggle="lightbox"], [data-toggle="lightbox-gallery"]'); | |
287 if(!el.length) return; | |
288 el.each(function() { | |
289 var $this = $(this), | |
290 src = $this.data('src'), | |
291 type = $this.data('type'), | |
292 defaults = {}, | |
293 options = $this.data('plugin-options') !== undefined ? $this.data('plugin-options') : {}, | |
294 lightboxClass = $this.data('lightbox-class') !== undefined ? $this.data('lightbox-class') : ""; | |
295 | |
296 if( $this.data('toggle') === "lightbox" ) { | |
297 defaults = { | |
298 type: type, | |
299 callbacks: { | |
300 beforeOpen: function() { | |
301 this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure animated ' + this.st.el.attr('data-effect') ); | |
302 } | |
303 } | |
304 }; | |
305 options = $.extend( {}, defaults, options); | |
306 $this.magnificPopup(options); | |
307 } | |
308 | |
309 else if( $this.data('toggle') === "lightbox-gallery" ) { | |
310 defaults = { | |
311 type: type, | |
312 delegate: 'a', | |
313 gallery: { | |
314 enabled: true, | |
315 }, | |
316 callback: { | |
317 beforeOpen: function() { | |
318 this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure animated ' + this.st.el.attr('data-effect') ); | |
319 } | |
320 } | |
321 }; | |
322 options = $.extend( {}, defaults, options); | |
323 $this.magnificPopup(options); | |
324 } | |
325 }); | |
326 }, | |
327 | |
328 enableScrollbar: function() { | |
329 var el = $('.scrollbar-enabled, .dropdown-list-group '); | |
330 if(!el.length) return; | |
331 el.each(function(index){ | |
332 | |
333 var $this = $(this); | |
334 var options = { | |
335 wheelSpeed: 0.5 | |
336 }; | |
337 if( this.classList.contains('suppress-x') ) options.suppressScrollX = true; | |
338 if( this.classList.contains('suppress-y') ) options.suppressScrollY = true; | |
339 $this.perfectScrollbar(options); | |
340 | |
341 if($this.parent().parent().hasClass('dropdown-card')) { | |
342 $(document).on('shown.bs.dropdown',$this.parent().parent(), function(){ | |
343 $this.perfectScrollbar('update'); | |
344 }); | |
345 } | |
346 | |
347 $(document).on('show.metisMenu, hide.metisMenu', function() { | |
348 $this.perfectScrollbar('update'); | |
349 }); | |
350 | |
351 if ( this.classList.contains('scroll-to-bottom') ) { | |
352 this.scrollTop = this.scrollHeight; | |
353 $this.perfectScrollbar('update'); | |
354 } | |
355 | |
356 }); | |
357 }, | |
358 | |
359 inputFocus: function() { | |
360 var el = $('input:not([type=checkbox]):not([type=radio]), textarea'); | |
361 if( !el.length ) return; | |
362 | |
363 el.each(function() { | |
364 var $this = $(this), | |
365 self = this; | |
366 | |
367 var hasValueFunction = function() { | |
368 if( self.value.length > 0 ) { | |
369 self.parentNode.classList.add('input-has-value'); | |
370 $(self).closest('.form-group').addClass('input-has-value'); | |
371 } | |
372 else { | |
373 self.parentNode.classList.remove('input-has-value'); | |
374 $(self).closest('.form-group').removeClass('input-has-value'); | |
375 } | |
376 }; | |
377 | |
378 hasValueFunction(this); | |
379 $this.on('input', hasValueFunction); | |
380 | |
381 $this.focusin(function() { | |
382 this.parentNode.classList.add('input-focused'); | |
383 $this.closest('.form-group').addClass('input-focused'); | |
384 }); | |
385 $this.focusout(function() { | |
386 this.parentNode.classList.remove('input-focused'); | |
387 $this.closest('.form-group').removeClass('input-focused'); | |
388 }); | |
389 | |
390 $this.find('.remove-focus').on('click',function() { | |
391 $this.emit('focusout'); | |
392 }); | |
393 }); | |
394 }, | |
395 | |
396 enableTooltip: function() { | |
397 $('[data-toggle="tooltip"]').tooltip(); | |
398 }, | |
399 | |
400 enableMailbox: function() { | |
401 this.enableMailboxInbox(); | |
402 }, | |
403 | |
404 enableMailboxInbox: function() { | |
405 var el = $('.mail-inbox'); | |
406 if( !el.length ) return; | |
407 var MailBox = { | |
408 init: function() { | |
409 this.selectAll(); | |
410 }, | |
411 selectAll: function() { | |
412 var selectAll = el.find('.mail-inbox-select-all input'); | |
413 selectAll.on('change', function() { | |
414 var allCheckboxes = el.find('.mail-list .mail-select-checkbox input[type="checkbox"]'); | |
415 for( var i = 0; i < allCheckboxes.length; i++ ) { | |
416 allCheckboxes[i].checked = selectAll[0].checked; | |
417 } | |
418 }); | |
419 } | |
420 }; | |
421 MailBox.init(); | |
422 }, | |
423 | |
424 enableRadioCheckbox: function() { | |
425 var input = document.getElementsByTagName('input'); | |
426 for( var i = 0; i < input.length; i++ ) { | |
427 if( input[i].type === 'checkbox' ) { | |
428 if( input[i].checked === true ) { | |
429 input[i].parentNode.classList.add('checkbox-checked'); | |
430 } | |
431 input[i].addEventListener('change', function() { | |
432 if( this.checked === true ) { | |
433 this.parentNode.classList.add('checkbox-checked'); | |
434 } else { | |
435 this.parentNode.classList.remove('checkbox-checked'); | |
436 } | |
437 }); | |
438 } | |
439 } | |
440 }, | |
441 | |
442 enableValidation: function() { | |
443 if( typeof $.validate === 'function' ) { | |
444 $.validate({ | |
445 modules: 'security, date', | |
446 errorMessageClass: 'invalid-feedback', | |
447 errorElementClass: 'is-invalid', | |
448 }); | |
449 } | |
450 | |
451 this.enableFieldLengthIndicator(); | |
452 }, | |
453 | |
454 enableFieldLengthIndicator: function() { | |
455 var el = $('.field-length-indicator'); | |
456 if( !el.length ) return; | |
457 el.each(function() { | |
458 var $this = $(this), | |
459 target = $this.data('length-target'); | |
460 | |
461 $(target).restrictLength( $this.find('.indicator') ); | |
462 }); | |
463 }, | |
464 | |
465 enableSweetAlert: function() { | |
466 if( typeof swal === 'function' ) { | |
467 swal.setDefaults({ | |
468 buttonsStyling: false, // disables plugn styles for buttons | |
469 cancelButtonClass: 'btn btn-default', | |
470 confirmButtonClass: 'btn btn-info' | |
471 }); | |
472 } | |
473 | |
474 var el = $('.modal-alert'); | |
475 if( !el.length ) return; | |
476 el.each(function() { | |
477 var $this = $(this); | |
478 var options = {}; | |
479 | |
480 if ( $this.data('title') !== undefined ) options.title = $this.data('title'); | |
481 if ( $this.data('text') !== undefined ) options.text = $this.data('text'); | |
482 | |
483 if ( $this.data('type') !== undefined ) { | |
484 options.type = $this.data('type'); | |
485 | |
486 switch( $this.data('type') ) { | |
487 case 'success': options.confirmButtonClass = 'btn btn-success'; break; | |
488 case 'warning': options.confirmButtonClass = 'btn btn-warning'; break; | |
489 case 'error': options.confirmButtonClass = 'btn btn-danger'; break; | |
490 default: options.confirmButtonClass = 'btn btn-info'; | |
491 } | |
492 } else { | |
493 options.confirmButtonClass = 'btn btn-info'; | |
494 } | |
495 | |
496 if ( $this.data('button-text') !== undefined ) options.confirmButtonText = $this.data('button-text'); | |
497 | |
498 $this.click(function() { | |
499 swal(options); | |
500 }); | |
501 }); | |
502 }, | |
503 | |
504 enableTodo: function() { | |
505 var el = document.getElementsByClassName('todo-widget'); | |
506 if( !el.length ) return; | |
507 for( var i = 0; i < el.length; i++ ) { | |
508 var todo1 = new Todo( el[i] ); | |
509 } | |
510 }, | |
511 | |
512 enableTwitterWidget: function() { | |
513 var el = document.getElementsByClassName('twitter-widget'); | |
514 if ( !el.length ) return; | |
515 for( var i = 0; i < el.length; i++) { | |
516 var options = JSON.parse( JSON.stringify( el[i].dataset )).pluginOptions; | |
517 if ( options === undefined ) options = {}; | |
518 var twitter = new TwitterWidget( el[i], options ); | |
519 } | |
520 }, | |
521 | |
522 enableFacebookWidget: function() { | |
523 var el = document.getElementsByClassName('facebook-widget'); | |
524 if ( !el.length ) return; | |
525 for( var i = 0; i < el.length; i++) { | |
526 var options = JSON.parse( JSON.stringify( el[i].dataset )).pluginOptions; | |
527 if ( options === undefined ) options = {}; | |
528 var facebook = new FacebookWidget( el[i], options ); | |
529 } | |
530 }, | |
531 | |
532 enableVectorMaps: function() { | |
533 var el = $('[data-toggle="vector-map"]'); | |
534 if ( !el.length ) return; | |
535 var defaults = { | |
536 map: 'world_en', | |
537 backgroundColor: null, | |
538 borderColor: "#ffffff", | |
539 color: '#999999', | |
540 hoverOpacity: 0.8, | |
541 selectedColor: '#777777', | |
542 enableZoom: true, | |
543 showTooltip: true, | |
544 normalizeFunction: 'polynomial', | |
545 onLabelShow: function(event, label, code) { | |
546 var mapValues = $(this)[0].mapValues, | |
547 $this = $(this), | |
548 place = label[0].innerHTML; | |
549 if( mapValues !== undefined) { | |
550 var value = $(this)[0].mapValues[code]; | |
551 if(value!==undefined ) { | |
552 value = $(this)[0].mapValues[code]; | |
553 if($this.data('plugin-options').label !== undefined) { | |
554 label[0].innerHTML = $this.data('plugin-options').label.replace('%p', place).replace('%v', value); | |
555 } | |
556 else | |
557 label[0].innerHTML = label[0].innerHTML + ": " + value; | |
558 } | |
559 else if(value===undefined) { | |
560 if($this.data('plugin-options').label !== undefined) { | |
561 label[0].innerHTML = $this.data('plugin-options').labelNaN.replace('%p', place); | |
562 } | |
563 else | |
564 label[0].innerHTML = 'NaN'; | |
565 } | |
566 } | |
567 else if( $this.data('plugin-options').label !== undefined ) { | |
568 label[0].innerHTML = $this.data('plugin-options').label.replace('%p',place); | |
569 } | |
570 }, | |
571 }; | |
572 el.each(function(index) { | |
573 var $this = $(this), | |
574 mapOptions = $this.data('plugin-options'), | |
575 instance = null, | |
576 options = $.extend({}, defaults, mapOptions); | |
577 | |
578 if ( this.unifato === undefined ) | |
579 this.unifato = {}; | |
580 instance = this.unifato; | |
581 if(typeof(options.valuesSrcFile) !== 'undefined') { | |
582 $.ajax({ | |
583 url: options.valuesSrcFile, | |
584 dataType: "json", | |
585 success: function(result) { | |
586 options.values = result; | |
587 $this[0].mapValues = result; | |
588 instance.vmap = $this.vectorMap(options); | |
589 }, | |
590 }); | |
591 } | |
592 else { | |
593 instance.vmap = $this.vectorMap(options); | |
594 } | |
595 }); | |
596 }, | |
597 | |
598 enableGoogleMaps: function() { | |
599 var el = $('[data-toggle="google-map"]'); | |
600 if( !el.length ) return; | |
601 var maps = 0; | |
602 el.each(function(index) { | |
603 var $this = $(this), | |
604 instance = null, | |
605 options = $(this).data('plugin-options'); | |
606 | |
607 maps++; | |
608 $this.attr('id', 'gmaps-' + maps ); | |
609 var defaults = { | |
610 el: "#gmaps-" + maps | |
611 }; | |
612 | |
613 if ( this.unifato === undefined ) | |
614 this.unifato = {}; | |
615 instance = this.unifato; | |
616 | |
617 // Map Markers | |
618 if( $this.has('.map-marker').length !== 0 ) | |
619 { | |
620 options.markers = []; | |
621 var markers = $this.find('.map-marker'); | |
622 markers.each(function(index){ | |
623 var markerOptions = $(this).data('plugin-options'); | |
624 if( $(this).has('.content').length !== 0 ) { | |
625 markerOptions.infoWindow = {}; | |
626 markerOptions.infoWindow.content = $(this).find('.content').html(); | |
627 } | |
628 options.markers.push(markerOptions); | |
629 }); | |
630 } | |
631 | |
632 // Map Overlays | |
633 if( $this.has('.map-overlays').length !== 0 ) | |
634 { | |
635 options.overlays = []; | |
636 var overlays = $this.find('.map-overlays'); | |
637 overlays.each(function(index){ | |
638 var overlayOptions = $(this).data('plugin-options'); | |
639 overlayOptions.content = $(this).html(); | |
640 overlayOptions.content = overlayOptions.content.trim(); | |
641 options.overlays.push(overlayOptions); | |
642 }); | |
643 } | |
644 | |
645 // Map Path | |
646 if( $this.has('.map-path').length !== 0 ) | |
647 { | |
648 options.path = []; | |
649 var paths = $this.find('.map-path'); | |
650 paths.each(function(index){ | |
651 var pathOptions = $(this).data('plugin-options'); | |
652 options.path.push(pathOptions); | |
653 }); | |
654 } | |
655 | |
656 // Map Route | |
657 if( $this.has('.map-route').length !== 0 ) | |
658 { | |
659 options.routes = []; | |
660 var routes = $this.find('.map-route'); | |
661 routes.each(function(index){ | |
662 var routeOptions = $(this).data('plugin-options'); | |
663 options.routes.push(routeOptions); | |
664 }); | |
665 } | |
666 | |
667 // Map Polygon | |
668 if( $this.has('.map-polygon').length !== 0 ) | |
669 { | |
670 options.polygon = []; | |
671 var polygons = $this.find('.map-polygon'); | |
672 polygons.each(function(index){ | |
673 var polygonOptions = $(this).data('plugin-options'); | |
674 options.polygon.push(polygonOptions); | |
675 }); | |
676 } | |
677 | |
678 // Map Style | |
679 if( $this.has('.map-style').length !== 0 ) | |
680 { | |
681 var styles = JSON.parse( $this.find('.map-style').html() ); | |
682 options.styles = styles; | |
683 //map.addStyle({ | |
684 //styledMapName:"Styled Map", | |
685 //styles: styles, | |
686 //mapTypeId: "map_style" | |
687 //}); | |
688 //map.setStyle("map_style"); | |
689 } | |
690 | |
691 // Initialize Maps | |
692 options = $.extend({}, defaults, options); | |
693 var map = new GMaps(options); | |
694 instance.gmap = map; | |
695 var i = 0; | |
696 | |
697 if( options.styles !== undefined ) { | |
698 map.addStyle({ | |
699 styledMapName:"Styled Map", | |
700 styles: options.styles, | |
701 mapTypeId: "map_style" | |
702 }); | |
703 map.setStyle("map_style"); | |
704 } | |
705 | |
706 // Adding Markers to Map | |
707 if(options.markers !== undefined) | |
708 { | |
709 for(i=0; i<options.markers.length; i++ ) | |
710 map.addMarker(options.markers[i]); | |
711 } | |
712 | |
713 // Adding Overlays to Map | |
714 if(options.overlays !== undefined) | |
715 { | |
716 for(i=0; i < options.overlays.length; i++ ) | |
717 map.drawOverlay(options.overlays[i]); | |
718 } | |
719 | |
720 // Adding Path to Map | |
721 if(options.path !== undefined) | |
722 { | |
723 for(i=0; i < options.path.length; i++ ) | |
724 map.drawPolyline(options.path[i]); | |
725 } | |
726 | |
727 // Adding Routes to Map | |
728 if(options.routes !== undefined) | |
729 { | |
730 for(i=0; i < options.routes.length; i++ ) | |
731 map.drawRoute(options.routes[i]); | |
732 } | |
733 | |
734 // Adding Path to Map | |
735 if(options.polygon !== undefined) | |
736 { | |
737 for(i=0; i < options.polygon.length; i++ ) | |
738 map.drawPolygon(options.polygon[i]); | |
739 } | |
740 }); | |
741 }, | |
742 | |
743 enableFullCalendar: function() { | |
744 var el = $('[data-toggle="fullcalendar"]'); | |
745 if( !el.length ) return; | |
746 this.enableFullCalendarEvents(); | |
747 window.ThemeFullCalendar = {}; | |
748 var showContentInModal = function(calEvent, instance) { | |
749 window.ThemeFullCalendar.EventEditMode = calEvent; | |
750 var eventModal = $('#eventEditModal'); | |
751 eventModal.find('input[name="event-name"]').val(calEvent.title); | |
752 var classNames = calEvent.className; | |
753 for(var i=0; i<classNames.length; i++) { | |
754 if(classNames[i].startsWith('bg-')) { | |
755 var bg = classNames[i].substr(3); | |
756 eventModal.find('select[name="event-bg"]').val(bg); | |
757 var s = eventModal.find('select[name="event-bg"]').val(); | |
758 break; | |
759 } | |
760 } | |
761 }; | |
762 var defaults = { | |
763 header: { | |
764 left: "prev,next,today", | |
765 center: "title", | |
766 right: "month,agendaWeek,agendaDay" | |
767 }, | |
768 editable: true, | |
769 droppable: true, | |
770 eventLimit: true, | |
771 navLinks: true, | |
772 drop: function() { | |
773 if ($('#drop-remove').is(':checked')) { | |
774 $(this).remove(); | |
775 } | |
776 }, | |
777 eventClick: function(calEvent,jsEvent, view) { | |
778 $("#eventEditModal").modal('show'); | |
779 showContentInModal(calEvent); | |
780 }, | |
781 dayClick: function(date,jsEvent, view) { | |
782 $("#eventAddModal").modal('show'); | |
783 window.ThemeFullCalendar.EventAddMode = date; | |
784 } | |
785 }; | |
786 el.each(function(index){ | |
787 var $this = $(this), | |
788 calendarOptions = $this.data('plugin-options'), | |
789 instance = null, | |
790 options = {}; | |
791 | |
792 if( this.unifato === undefined ) | |
793 this.unifato = {}; | |
794 instance = this.unifato; | |
795 | |
796 if(calendarOptions.eventsSrc!==undefined) { | |
797 $.ajax({ | |
798 url: calendarOptions.eventsSrc, | |
799 dataType: "json", | |
800 success: function(result) { | |
801 options = $.extend({}, defaults, calendarOptions); | |
802 options.events = result.events; | |
803 var fullcalendar = $this.fullCalendar(options); | |
804 instance.fullcalendar = fullcalendar[0]; | |
805 }, | |
806 }); | |
807 } | |
808 else { | |
809 options = $.extend({}, defaults, calendarOptions); | |
810 var fullcalendar = $this.fullCalendar(options); | |
811 instance.fullcalendar = fullcalendar[0]; | |
812 } | |
813 | |
814 var eventModal = | |
815 '<div class="modal fade" id="eventEditModal" tabindex="-1" role="dialog">' + | |
816 '<div class="modal-dialog" role="document">'+ | |
817 '<div class="modal-content">'+ | |
818 '<div class="modal-header">'+ | |
819 '<h4 class="modal-title">Edit Event</h4>'+ | |
820 '</div>'+ | |
821 '<div class="modal-body">'+ | |
822 '<label for="eventName">Event Name</label>'+ | |
823 '<input class="form-control mr-b-10" name="event-name" type="text" />'+ | |
824 '<label for="eventType">Event Type</label>'+ | |
825 '<select name="event-bg" class="form-control">'+ | |
826 '<option value="danger">Danger</option>'+ | |
827 '<option value="success">Success</option>'+ | |
828 '<option value="info">Info</option>'+ | |
829 '<option value="warning">Warning</option>'+ | |
830 '<option value="color-scheme">Color Scheme</option>'+ | |
831 '<option value="primary">Primary</option>'+ | |
832 '<option value="pink">Pink</option>'+ | |
833 '<option value="violet">Violet</option>'+ | |
834 '<option value="purple">Purple</option>'+ | |
835 '<option value="teal">Teal</option>'+ | |
836 '<option value="slate">Slate</option>'+ | |
837 '<option value="grey">Grey</option>'+ | |
838 '<option value="persian-blue">Persian Blue</option>'+ | |
839 '<option value="cerize-red">Cerize Red</option>'+ | |
840 '<option value="mustard">Mustard</option>'+ | |
841 '<option value="gray-light">Gray Light</option>'+ | |
842 '</select>'+ | |
843 '</div>'+ | |
844 '<div class="modal-footer">'+ | |
845 '<button class="btn mr-auto delete-btn btn-danger">Delete</button>'+ | |
846 '<button class="btn save-btn btn-success">Save</button>'+ | |
847 '<button class="btn btn-default" data-dismiss="modal">Cancel</button>'+ | |
848 '</div>'+ | |
849 '</div>'+ | |
850 '</div>'+ | |
851 '</div>' | |
852 ; | |
853 | |
854 if( !$('#eventEditModal').length ) { | |
855 $('body').append(eventModal); | |
856 var $eventEditModal = $('#eventEditModal'); | |
857 $eventEditModal.find('.delete-btn').click(function(){ | |
858 var eventId = window.ThemeFullCalendar.EventEditMode._id; | |
859 $this.fullCalendar('removeEvents',[eventId]); | |
860 $eventEditModal.modal('hide'); | |
861 }); | |
862 $eventEditModal.find('.save-btn').click(function(){ | |
863 var eventE = window.ThemeFullCalendar.EventEditMode; | |
864 eventE.title = $eventEditModal.find('[name="event-name"]').val(); | |
865 eventE.className = 'bg-' + $eventEditModal.find('select[name="event-bg"]').val(); | |
866 $this.fullCalendar('updateEvent',eventE); | |
867 $eventEditModal.modal('hide'); | |
868 window.ThemeFullCalendar.EventEditMode = null; | |
869 }); | |
870 } | |
871 | |
872 var eventAddModal = | |
873 '<div class="modal fade" id="eventAddModal" tabindex="-1" role="dialog">'+ | |
874 '<div class="modal-dialog" role="document">'+ | |
875 '<div class="modal-content">'+ | |
876 '<div class="modal-header">'+ | |
877 '<h4 class="modal-title">Add Event</h4>'+ | |
878 '</div>'+ | |
879 '<div class="modal-body">'+ | |
880 '<label for="eventName">Event Name</label>'+ | |
881 '<input class="form-control mr-b-10" name="event-name" type="text" />'+ | |
882 '<label for="eventType">Event Type</label>'+ | |
883 '<select name="event-bg" class="form-control">'+ | |
884 '<option value="danger">Danger</option>'+ | |
885 '<option value="success">Success</option>'+ | |
886 '<option value="info">Info</option>'+ | |
887 '<option value="warning">Warning</option>'+ | |
888 '<option value="color-scheme">Color Scheme</option>'+ | |
889 '<option value="primary">Primary</option>'+ | |
890 '<option value="pink">Pink</option>'+ | |
891 '<option value="violet">Violet</option>'+ | |
892 '<option value="purple">Purple</option>'+ | |
893 '<option value="teal">Teal</option>'+ | |
894 '<option value="slate">Slate</option>'+ | |
895 '<option value="grey">Grey</option>'+ | |
896 '<option value="persian-blue">Persian Blue</option>'+ | |
897 '<option value="cerize-red">Cerize Red</option>'+ | |
898 '<option value="mustard">Mustard</option>'+ | |
899 '<option value="gray-light">Gray Light</option>'+ | |
900 '</select>'+ | |
901 '</div>'+ | |
902 '<div class="modal-footer">'+ | |
903 '<button class="btn save-btn btn-success">Save</button>'+ | |
904 '<button class="btn btn-default" data-dismiss="modal">Cancel</button>'+ | |
905 '</div>'+ | |
906 '</div>'+ | |
907 '</div>'+ | |
908 '</div>' | |
909 ; | |
910 | |
911 if( !$('#eventAddModal').length ) { | |
912 $('body').append(eventAddModal); | |
913 var $eventAddModal = $('#eventAddModal'); | |
914 $eventAddModal.find('.save-btn').click(function(){ | |
915 var event = {}; | |
916 event.title = $eventAddModal.find('input[name="event-name"]').val(); | |
917 event.className = 'bg-' + $eventAddModal.find('select[name="event-bg"]').val(); | |
918 | |
919 if( window.ThemeFullCalendar.EventAddMode !== undefined && window.ThemeFullCalendar.EventAddMode !== null) { | |
920 event.start = window.ThemeFullCalendar.EventAddMode._d; | |
921 $this.fullCalendar('addEventSource',[event]); | |
922 $eventAddModal.modal('hide'); | |
923 window.ThemeFullCalendar.EventAddMode = null; | |
924 } | |
925 else if( window.ThemeFullCalendar.EventAddListMode !== undefined && window.ThemeFullCalendar.EventAddListMode !== null) { | |
926 var $target = window.ThemeFullCalendar.EventAddListMode.target; | |
927 var element = '<div class="fc-event ' + event.className + '"><i class="feather feather-check color-white ' + event.className + '"></i>' + '<span class="fc-event-text">' + event.title + '</span></div>'; | |
928 $target.find('.fc-events').append(element); | |
929 $eventAddModal.modal('hide'); | |
930 window.ThemeFullCalendar.EventAddListMode = null; | |
931 Unifato.enableFullCalendarEvents(); | |
932 } | |
933 }); | |
934 } | |
935 }); | |
936 }, | |
937 | |
938 enableFullCalendarEvents: function() { | |
939 var el = $('[data-toggle="fullcalendar-events"]'); | |
940 if( !el.length ) return; | |
941 el.each(function(index){ | |
942 var $this = $(this); | |
943 var target = $(this).data('target'); | |
944 var events = $this.find('.fc-event'); | |
945 | |
946 events.each(function(){ | |
947 $(this).data('event', { | |
948 title: $.trim($(this).find('.fc-event-text').text()), | |
949 stick: true, | |
950 className: $(this).attr('class') | |
951 }); | |
952 $(this).draggable({ | |
953 zIndex: 999, | |
954 revert: true, | |
955 revertDuration: 0 | |
956 }); | |
957 }); | |
958 | |
959 $this.find('.fc-add-event').click(function(){ | |
960 $('#eventAddModal').modal('show'); | |
961 window.ThemeFullCalendar.EventAddListMode = { target: $this }; | |
962 }); | |
963 }); | |
964 }, | |
965 | |
966 enableClndr: function() { | |
967 var el = $('[data-toggle="clndr"]'); | |
968 if( !el.length ) return; | |
969 el.each(function(){ | |
970 var $this = $(this); | |
971 var $template = $this.find('script.template').html(); | |
972 var events = {}; | |
973 events.events = []; | |
974 var instance = null; | |
975 if( this.unifato === undefined ) | |
976 this.unifato = {}; | |
977 instance = this.unifato; | |
978 | |
979 if($this.find('.events').length) events = JSON.parse($this.find('.events').html().trim()); | |
980 instance.clndr = $this.clndr({ | |
981 template: $template, | |
982 userTouchEvents: true, | |
983 events: events.events, | |
984 extras: { | |
985 selectedDay: {}, | |
986 }, | |
987 clickEvents: { | |
988 click: function(target) { | |
989 this.options.extras.selectedDay = target; | |
990 this.render(); | |
991 }, | |
992 }, | |
993 ready: function() { | |
994 $this.find('.today').trigger('click'); | |
995 } | |
996 }); | |
997 }); | |
998 }, | |
999 | |
1000 enableDataTables: function() { | |
1001 var el = $('[data-toggle="datatables"]'); | |
1002 if ( !el.length ) return; | |
1003 var defaults = { | |
1004 responsive: true, | |
1005 }; | |
1006 el.each(function(index) { | |
1007 var $this = $(this), | |
1008 options = $(this).data('plugin-options'); | |
1009 if (options === null ) | |
1010 options = {}; | |
1011 | |
1012 if( this.unifato === undefined ) | |
1013 this.unifato = {}; | |
1014 | |
1015 options = $.extend({},defaults,options); | |
1016 this.unifato.datatable = $this.DataTable(options); | |
1017 }); | |
1018 }, | |
1019 | |
1020 enableFootable: function(){ | |
1021 var el = $('[data-toggle="footable"]'); | |
1022 if( !el.length ) return; | |
1023 el.each(function(){ | |
1024 var $this = $(this), | |
1025 instance = null; | |
1026 | |
1027 if ( this.unifato === undefined ) | |
1028 this.unifato = {}; | |
1029 | |
1030 instance = this.unifato; | |
1031 | |
1032 if( $this.data('row-src')!== undefined && $this.data('column-src') === undefined ) { | |
1033 instance.footable = $this.footable({ | |
1034 "rows": $.get('assets/js/row.json'), | |
1035 }); | |
1036 } | |
1037 else if( $this.data('row-src') !== undefined && $this.data('column-src') !== undefined ) { | |
1038 instance.footable = $this.footable({ | |
1039 "rows": $.get('assets/js/row.json'), | |
1040 "columns": $.get('assets/js/column.json'), | |
1041 }); | |
1042 } | |
1043 else { | |
1044 instance.footable = $this.footable(); | |
1045 } | |
1046 }); | |
1047 }, | |
1048 | |
1049 enableTableEditable: function() { | |
1050 var el = $('.table-editable, .table-editable-inline'); | |
1051 if(!el.length) return; | |
1052 el.each(function(){ | |
1053 var $this = $(this); | |
1054 var columns = $this.find('th[data-editable]'); | |
1055 var columnsList = []; | |
1056 var identifier = [ $this.find('th[data-identifier]').index(), $this.find('th[data-identifier]').html() ]; | |
1057 var instance = null; | |
1058 if( this.unifato === undefined ) | |
1059 this.unifato = {}; | |
1060 this.unifato.tabledit = this; | |
1061 columns.each(function(){ | |
1062 columnsList.push([ $(this).index(), $(this).html() ]); | |
1063 }); | |
1064 if( $this.hasClass('table-editable-inline') ) { | |
1065 $this.Tabledit({ | |
1066 editButton: false, | |
1067 removeButton: false, | |
1068 columns: { | |
1069 editable: columnsList, | |
1070 identifier: identifier, | |
1071 } | |
1072 }); | |
1073 } | |
1074 else { | |
1075 $this.Tabledit({ | |
1076 columns: { | |
1077 editable: columnsList, | |
1078 identifier: identifier, | |
1079 } | |
1080 }); | |
1081 } | |
1082 }); | |
1083 }, | |
1084 | |
1085 enableCountUp: function() { | |
1086 var el = document.body.getElementsByClassName('counter'); | |
1087 | |
1088 var defaults = { | |
1089 useEasing: true, | |
1090 useGrouping: true, | |
1091 }; | |
1092 | |
1093 if( !el.length ) return; | |
1094 | |
1095 function decimalPlaces(num) { | |
1096 var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); | |
1097 if (!match) { return 0; } | |
1098 return Math.max( | |
1099 0, | |
1100 // Number of digits right of decimal point. | |
1101 (match[1] ? match[1].length : 0) | |
1102 // Adjust for scientific notation. | |
1103 - (match[2] ? +match[2] : 0)); | |
1104 } | |
1105 | |
1106 var counterInstanceArr = []; | |
1107 | |
1108 for(var i = 0; i < el.length; i++ ) { | |
1109 var counterEl = el[i]; | |
1110 counterEl.id = 'counter-' + i; | |
1111 | |
1112 var options = counterEl.dataset; | |
1113 options = $.extend({}, defaults, options); | |
1114 | |
1115 var startVal = counterEl.dataset.startval !== undefined ? counterEl.dataset.startval : 0; | |
1116 var endVal = parseFloat(counterEl.innerHTML); | |
1117 | |
1118 var decimals = Math.max( decimalPlaces(startVal), decimalPlaces(endVal) ); | |
1119 | |
1120 var counter = new CountUp( counterEl.id, startVal, endVal, decimals, 3, options); | |
1121 | |
1122 if (!counter.error) counterInstanceArr.push( counter ); | |
1123 else console.error(counter.error); | |
1124 } | |
1125 | |
1126 $(document).on('PACE_DONE', function() { | |
1127 for( var j = 0; j < counterInstanceArr.length; j++ ) { | |
1128 counterInstanceArr[j].start(); | |
1129 } | |
1130 }); | |
1131 | |
1132 for( var i = 0; i < counterInstanceArr.length; i++ ) { | |
1133 counterInstanceArr[i].start(); | |
1134 } | |
1135 }, | |
1136 | |
1137 enableRangeSlider: function() { | |
1138 var el = $('input[data-toggle="rangeslider"]'); | |
1139 if(!el.length) return; | |
1140 el.each(function() { | |
1141 var $this = $(this); | |
1142 if( this.unifato === undefined ) | |
1143 this.unifato = {}; | |
1144 | |
1145 $this.ionRangeSlider(); | |
1146 this.unifato.ionRangeSlider = $this.data('ionRangeSlider'); | |
1147 }); | |
1148 }, | |
1149 | |
1150 enableSortable: function() { | |
1151 var el = $('.sortable'); | |
1152 if( !el.length ) return; | |
1153 el.each(function() { | |
1154 var $this = $(this); | |
1155 if( this.unifato === undefined ) | |
1156 this.unifato = {}; | |
1157 $this.sortable(); | |
1158 this.unifato.sortable = $this.data('ui-sortable'); | |
1159 }); | |
1160 }, | |
1161 | |
1162 enableNestedSortable: function() { | |
1163 var el = $('.dd'); | |
1164 if( !el.length ) return; | |
1165 var defaults = { | |
1166 }; | |
1167 el.each( function() { | |
1168 var $this = $(this), | |
1169 options = $this.data('plugin-options'); | |
1170 options = $.extend({}, defaults, options); | |
1171 | |
1172 if( this.unifato === undefined ) | |
1173 this.unifato = {}; | |
1174 | |
1175 $this.nestable(options); | |
1176 this.unifato.nestable = $this.data('nestable'); | |
1177 }); | |
1178 }, | |
1179 | |
1180 enableTimelineLoadMoreBtn: function() { | |
1181 var el = $('.timeline .load-more-btn'); | |
1182 if( !el.length ) return; | |
1183 el.each(function(){ | |
1184 var $this = $(this), | |
1185 url = $this.data('url'); | |
1186 $this.on('click', function() { | |
1187 $this.addClass('loading'); | |
1188 $this.addClass('disabled'); | |
1189 $.ajax({ | |
1190 url: url, | |
1191 }).done(function(data) { | |
1192 // just to show loading effect | |
1193 setTimeout(function() { | |
1194 $this.before(data); | |
1195 $this.removeClass('loading'); | |
1196 $this.removeClass('disabled'); | |
1197 }, 1000); | |
1198 }).fail(function() { | |
1199 alert("Couldn't load Timeline Content"); | |
1200 $this.removeClass('loading'); | |
1201 }); | |
1202 }); | |
1203 }); | |
1204 }, | |
1205 | |
1206 enableCarousel: function() { | |
1207 var el = document.getElementsByClassName('carousel'); | |
1208 if( !el.length ) return; | |
1209 var defaults = { | |
1210 responsive: [ | |
1211 { | |
1212 breakpoint: 720, | |
1213 settings: { | |
1214 slidesToShow: 1, | |
1215 slidesToScroll: 1 | |
1216 } | |
1217 }, { | |
1218 breakpoint: 480, | |
1219 settings: { | |
1220 slidesToShow: 1, | |
1221 slidesToScroll: 1 | |
1222 } | |
1223 } | |
1224 ] | |
1225 }; | |
1226 for( var i = 0; i < el.length; i++ ) { | |
1227 var $this = $(el[i]), | |
1228 options = $this.data('plugin-options'); | |
1229 options = $.extend({}, defaults, options); | |
1230 var sl = $this.slick(options); | |
1231 | |
1232 window.addEventListener('resize', function() { | |
1233 sl.slick('resize'); | |
1234 }); | |
1235 | |
1236 $(document).on('SIDEBAR_CHANGED_WIDTH', function() { | |
1237 sl.slick('resize'); | |
1238 sl.slick('slickNext'); | |
1239 }); | |
1240 }; | |
1241 }, | |
1242 | |
1243 enableMedia: function() { | |
1244 var el = $('video, audio'); | |
1245 if(!el.length) return; | |
1246 el.each(function() { | |
1247 var $this = $(this); | |
1248 if( this.unifato === undefined ) | |
1249 this.unifato = {}; | |
1250 $this.mediaelementplayer({ | |
1251 pluginPath: 'https://cdnjs.com/libraries/mediaelement/', | |
1252 shimScriptAccess: 'always' | |
1253 }); | |
1254 if( this.tagName === 'VIDEO' ) { | |
1255 $this.on('playing', function() { | |
1256 $this.closest('.mejs__container').addClass('mejs__video--playing'); | |
1257 }); | |
1258 $this.on('ended', function() { | |
1259 $this.closest('.mejs__container').removeClass('mejs__video--playing'); | |
1260 }); | |
1261 } | |
1262 this.unifato.mediaelementplayer = $this.data('mediaelementplayer'); | |
1263 }); | |
1264 }, | |
1265 | |
1266 enableInputMask: function() { | |
1267 var el = $('[data-masked-input]'); | |
1268 if(!el.length) return; | |
1269 $.mask.definitions.h = "[A-Fa-f0-9]"; | |
1270 $.mask.definitions['~']='[+-]'; | |
1271 el.each(function() { | |
1272 var $this = $(this), | |
1273 mask = $this.data('masked-input'); | |
1274 $this.mask(mask); | |
1275 }); | |
1276 }, | |
1277 | |
1278 enableDropify: function() { | |
1279 var el = $('[data-toggle="dropify"]'); | |
1280 if(!el.length) return; | |
1281 el.each(function() { | |
1282 var $this = $(this); | |
1283 if( this.unifato === undefined ) | |
1284 this.unifato = {}; | |
1285 $this.dropify(); | |
1286 this.unifato.dropify = $this.data('dropify'); | |
1287 }); | |
1288 }, | |
1289 | |
1290 enableDropzone: function() { | |
1291 var el = $('[data-toggle="dropzone"]'); | |
1292 if(!el.length) return; | |
1293 Dropzone.prototype.defaultOptions.addRemoveLinks = true; | |
1294 var defaults = {}; | |
1295 el.each( function() { | |
1296 var $this = $(this), | |
1297 options = $this.data('plugin-options'); | |
1298 | |
1299 if( this.unifato === undefined ) | |
1300 this.unifato = {}; | |
1301 | |
1302 if( options === undefined ) options = {}; | |
1303 options = $.extend({}, defaults, options); | |
1304 $this.dropzone(options); | |
1305 this.unifato.dropzone = this.dropzone; | |
1306 $this.addClass('dropzone'); | |
1307 }); | |
1308 }, | |
1309 | |
1310 enableClockPicker: function() { | |
1311 var el = $('.clockpicker'); | |
1312 if(!el.length) return; | |
1313 var defaults = { | |
1314 donetext: 'Done', | |
1315 }; | |
1316 el.each(function() { | |
1317 var $this = $(this), | |
1318 options = $this.data('plugin-options'); | |
1319 | |
1320 if( this.unifato === undefined ) | |
1321 this.unifato = {}; | |
1322 | |
1323 if( options === undefined ) options = {}; | |
1324 options = $.extend({}, defaults, options); | |
1325 $this.clockpicker(options); | |
1326 this.unifato.clockpicker = $this.data('clockpicker'); | |
1327 }); | |
1328 }, | |
1329 | |
1330 enableColorPicker: function() { | |
1331 var el = $('.colorpicker'); | |
1332 if(!el.length) return; | |
1333 var defaults = { | |
1334 preferredFormat: "rgb", | |
1335 showInput: true, | |
1336 change: function(color) { | |
1337 var $this = $(this); | |
1338 $this.parent().find('input').val( color ); | |
1339 $this.find('i').css( 'background', color ); | |
1340 }, | |
1341 }; | |
1342 el.each(function() { | |
1343 var $this = $(this), | |
1344 options = $this.data('plugin-options'), | |
1345 value = $this.find('input').val(); | |
1346 if( options === undefined ) options = {}; | |
1347 options = $.extend({}, defaults, options); | |
1348 options.color = value; | |
1349 $this.find('.input-group-addon').spectrum(options).find('i').css('background', value); | |
1350 $this.find('input').click( function(e) { | |
1351 $this.find('.input-group-addon').spectrum('toggle'); | |
1352 return false; | |
1353 }); | |
1354 }); | |
1355 }, | |
1356 | |
1357 enableDateRangePicker: function() { | |
1358 var el = $('.daterange'); | |
1359 if( !el.length ) return; | |
1360 var defaults = { | |
1361 locale: { | |
1362 format: 'MMMM D', | |
1363 }, | |
1364 }; | |
1365 el.each(function(){ | |
1366 var $this = $(this), | |
1367 options = $this.data('plugin-options'); | |
1368 | |
1369 if( this.unifato === undefined ) | |
1370 this.unifato = {}; | |
1371 | |
1372 if( options === undefined ) options = {}; | |
1373 options = $.extend({}, defaults, options); | |
1374 $this.daterangepicker(options); | |
1375 this.unifato.daterangepicker = $this.data('daterangepicker'); | |
1376 }); | |
1377 }, | |
1378 | |
1379 enablePredefinedDateRangePicker: function() { | |
1380 var $el = $('.predefinedRanges'); | |
1381 if ( !$el.length ) return; | |
1382 var defaults = { | |
1383 locale: { | |
1384 format: 'MMMM-D', | |
1385 }, | |
1386 startDate: moment().subtract(29, 'days'), | |
1387 endDate: moment(), | |
1388 opens: "left", | |
1389 ranges: { | |
1390 'Today': [moment(), moment()], | |
1391 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], | |
1392 'Last 7 Days': [moment().subtract(6, 'days'), moment()], | |
1393 'Last 30 Days': [moment().subtract(29, 'days'), moment()], | |
1394 'This Month': [moment().startOf('month'), moment().endOf('month')], | |
1395 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] | |
1396 } | |
1397 }; | |
1398 $el.each( function() { | |
1399 var start = moment().subtract(29, 'days'); | |
1400 var end = moment(); | |
1401 var $this = $(this); | |
1402 var options = $this.data('plugin-options'); | |
1403 options = $.extend({}, defaults, options); | |
1404 function cb(start, end) { | |
1405 $this.find('span').html(start.format(options.locale.format) + ' - ' + end.format(options.locale.format)); | |
1406 } | |
1407 | |
1408 if( this.unifato === undefined ) | |
1409 this.unifato = {}; | |
1410 | |
1411 $this.daterangepicker(options, cb); | |
1412 this.unifato.daterangepicker = $this.data('daterangepicker'); | |
1413 cb(start, end); | |
1414 }); | |
1415 }, | |
1416 | |
1417 enableDatePicker: function() { | |
1418 var el = $('.datepicker'); | |
1419 if( !el.length ) return; | |
1420 var defaults = { | |
1421 }; | |
1422 el.each(function(){ | |
1423 var $this = $(this), | |
1424 options = $this.data('plugin-options'); | |
1425 | |
1426 if( this.unifato === undefined ) | |
1427 this.unifato = {}; | |
1428 | |
1429 if( options === undefined ) options = {}; | |
1430 options = $.extend({}, defaults, options); | |
1431 $this.datepicker(options); | |
1432 this.unifato.datepicker = $this.data('datepicker'); | |
1433 }); | |
1434 }, | |
1435 | |
1436 enableSelect2: function() { | |
1437 var el = $('[data-toggle="select2"]'); | |
1438 if(!el.length) return; | |
1439 el.each( function() { | |
1440 var $this = $(this), | |
1441 options = $this.data('plugin-options'); | |
1442 | |
1443 if( this.unifato === undefined ) | |
1444 this.unifato = {}; | |
1445 | |
1446 $this.select2(options); | |
1447 this.unifato.select2 = $this.data('select2'); | |
1448 }); | |
1449 }, | |
1450 | |
1451 enableSwitchery: function() { | |
1452 var elems = document.getElementsByClassName('js-switch'); | |
1453 if( !elems.length ) return; | |
1454 var defaults = { | |
1455 secondaryColor: '#ddd', | |
1456 }; | |
1457 for(var i=0; i < elems.length; i++ ) { | |
1458 var dataset = JSON.parse(JSON.stringify(elems[i].dataset)); | |
1459 dataset = $.extend({}, defaults, dataset); | |
1460 var jsSwitch = new Switchery(elems[i], dataset); | |
1461 if( elems[i].unifato === undefined ) | |
1462 elems[i].unifato = {}; | |
1463 | |
1464 elems[i].unifato.switchery = jsSwitch; | |
1465 } | |
1466 | |
1467 }, | |
1468 | |
1469 enableTouchspin: function() { | |
1470 var el = $('[data-toggle="touchspin"]'); | |
1471 if(!el.length) return; | |
1472 var defaults = { | |
1473 verticalupclass: '', | |
1474 verticaldownclass: '' | |
1475 }; | |
1476 el.each(function() { | |
1477 var $this = $(this), | |
1478 options = $this.data('plugin-options'); | |
1479 | |
1480 if(options===undefined) options = {}; | |
1481 options = $.extend({}, defaults, options); | |
1482 $this.TouchSpin(options); | |
1483 }); | |
1484 }, | |
1485 | |
1486 enableMultiSelect: function() { | |
1487 var el = $('[data-toggle="multiselect"]'); | |
1488 if(!el.length) return; | |
1489 this.enableMultiSelectBtns(); | |
1490 el.each(function() { | |
1491 var $this = $(this); | |
1492 if( this.unifato === undefined ) | |
1493 this.unifato = {}; | |
1494 this.unifato.multiselect = $this.multiSelect(); | |
1495 }); | |
1496 }, | |
1497 | |
1498 enableMultiSelectBtns: function() { | |
1499 var el = $('[data-multiselect-target]'); | |
1500 if(!el.length) return; | |
1501 el.each(function() { | |
1502 var $this = $(this), | |
1503 $targetData = $this.data('multiselect-target'), | |
1504 $method = $this.data('multiselect-method'), | |
1505 $event = $this.data('event'); | |
1506 | |
1507 var $target = $( $targetData ); | |
1508 $this.on( $event, function(e) { | |
1509 e.preventDefault(); | |
1510 | |
1511 switch ( $method ) { | |
1512 case "addOption": | |
1513 $target.multiSelect( 'addOption', { value: 'test', text: 'test', index: 0, nested: 'optgroup_label' }); | |
1514 break; | |
1515 default: | |
1516 $target.multiSelect( $method ); | |
1517 } | |
1518 }); | |
1519 }); | |
1520 }, | |
1521 | |
1522 enableTinyMCE: function() { | |
1523 this.enableTinyMCEInline(); | |
1524 var el = $('[data-toggle="tinymce"]'); | |
1525 if(!el.length) return; | |
1526 var defaults = { | |
1527 skin: "lightgray", | |
1528 }; | |
1529 el.each(function() { | |
1530 var $this = $(this), | |
1531 options = $this.data('plugin-options'); | |
1532 | |
1533 | |
1534 if( options === undefined ) options = {}; | |
1535 options = $.extend({}, defaults, options); | |
1536 | |
1537 $this.tinymce(options); | |
1538 }); | |
1539 }, | |
1540 | |
1541 enableTinyMCEInline: function() { | |
1542 var el = $('[data-toggle="tinymce-inline"]'); | |
1543 if( !el.length ) return; | |
1544 var defaults = { | |
1545 skin: "lightgray", | |
1546 inline: true, | |
1547 theme: "inlite", | |
1548 plugins: [ | |
1549 'advlist autolink lists link image charmap print preview anchor', | |
1550 'searchreplace visualblocks code fullscreen', | |
1551 'insertdatetime media table contextmenu paste' | |
1552 ], | |
1553 }; | |
1554 el.each(function() { | |
1555 var $this = $(this), | |
1556 $html = $this.html(), | |
1557 options = $this.data('plugin-options'); | |
1558 | |
1559 if( options === undefined ) options = {}; | |
1560 options = $.extend({}, defaults, options); | |
1561 $this.tinymce(options); | |
1562 }); | |
1563 }, | |
1564 | |
1565 enableBootstrapWysiwyg: function() { | |
1566 this.enableTinyMCEInline(); | |
1567 var el = $('[data-toggle="wysiwyg"]'); | |
1568 if(!el.length) return; | |
1569 var defaults = { | |
1570 }; | |
1571 el.each(function() { | |
1572 var $this = $(this), | |
1573 options = $this.data('plugin-options'); | |
1574 | |
1575 if( this.unifato === undefined ) | |
1576 this.unifato = {}; | |
1577 | |
1578 if( options === undefined ) options = {}; | |
1579 options = $.extend({}, defaults, options); | |
1580 $this.wysihtml5(options); | |
1581 this.unifato.wysihtml5 = $this.data('wysihtml5'); | |
1582 }); | |
1583 $('[data-wysihtml5-dialog]').on('hidden.bs.modal', function(){ | |
1584 $('.modal-backdrop').remove(); | |
1585 }); | |
1586 }, | |
1587 | |
1588 enableCircleProgress: function() { | |
1589 var el = $('[data-toggle="circle-progress"]'); | |
1590 if( !el.length ) return; | |
1591 el.each(function() { | |
1592 $(this).circleProgress(); | |
1593 }); | |
1594 }, | |
1595 | |
1596 enableSparkline: function() { | |
1597 var el = $('[data-toggle="sparklines"]'); | |
1598 if( !el.length ) return; | |
1599 el.each(function() { | |
1600 $(this).sparkline('html', { enableTagOptions: true }); | |
1601 }); | |
1602 }, | |
1603 }; | |
1604 | |
1605 document.addEventListener('DOMContentLoaded', function() { | |
1606 Pace.options = { | |
1607 ajax: { | |
1608 ignoreURLs: [ | |
1609 'assets/vendors/theme-widgets/getTwitterFeed', | |
1610 'assets/vendors/theme-widgets/getFacebookFeed' | |
1611 ], | |
1612 } | |
1613 } | |
1614 Unifato.init(); | |
1615 Unifato.setMenu(); | |
1616 }); | |
1617 | |
1618 window.addEventListener('resize', Unifato.setMenu); | |
1619 window.addEventListener('resize', Unifato.contentHeight); | |
1620 })(jQuery); |