sinatra-hexacta 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +7 -0
  2. data/lib/sinatra/handlers/errors.rb +23 -0
  3. data/lib/sinatra/handlers/init.rb +3 -0
  4. data/lib/sinatra/handlers/notifications.rb +74 -0
  5. data/lib/sinatra/handlers/reports.rb +1 -0
  6. data/lib/sinatra/helpers/charts.rb +15 -0
  7. data/lib/sinatra/helpers/init.rb +5 -0
  8. data/lib/sinatra/helpers/inputs.rb +47 -0
  9. data/lib/sinatra/helpers/libraries.rb +25 -0
  10. data/lib/sinatra/helpers/subscriptions.rb +44 -0
  11. data/lib/sinatra/hexacta.rb +32 -0
  12. data/lib/sinatra/public/css/app.min.1.css +16231 -0
  13. data/lib/sinatra/public/css/app.min.2.css +3341 -0
  14. data/lib/sinatra/public/css/shell.css +65 -0
  15. data/lib/sinatra/public/fonts/montserrat/Montserrat-Black.otf +0 -0
  16. data/lib/sinatra/public/fonts/montserrat/Montserrat-ExtraLight.otf +0 -0
  17. data/lib/sinatra/public/fonts/montserrat/Montserrat-Light.otf +0 -0
  18. data/lib/sinatra/public/fonts/montserrat/Montserrat-SemiBold.otf +0 -0
  19. data/lib/sinatra/public/fonts/roboto/Roboto-Bold-webfont.eot +0 -0
  20. data/lib/sinatra/public/fonts/roboto/Roboto-Bold-webfont.svg +593 -0
  21. data/lib/sinatra/public/fonts/roboto/Roboto-Bold-webfont.ttf +0 -0
  22. data/lib/sinatra/public/fonts/roboto/Roboto-Bold-webfont.woff +0 -0
  23. data/lib/sinatra/public/fonts/roboto/Roboto-Light-webfont.eot +0 -0
  24. data/lib/sinatra/public/fonts/roboto/Roboto-Light-webfont.svg +641 -0
  25. data/lib/sinatra/public/fonts/roboto/Roboto-Light-webfont.ttf +0 -0
  26. data/lib/sinatra/public/fonts/roboto/Roboto-Light-webfont.woff +0 -0
  27. data/lib/sinatra/public/fonts/roboto/Roboto-Medium-webfont.eot +0 -0
  28. data/lib/sinatra/public/fonts/roboto/Roboto-Medium-webfont.svg +593 -0
  29. data/lib/sinatra/public/fonts/roboto/Roboto-Medium-webfont.ttf +0 -0
  30. data/lib/sinatra/public/fonts/roboto/Roboto-Medium-webfont.woff +0 -0
  31. data/lib/sinatra/public/fonts/roboto/Roboto-Regular-webfont.eot +0 -0
  32. data/lib/sinatra/public/fonts/roboto/Roboto-Regular-webfont.svg +621 -0
  33. data/lib/sinatra/public/fonts/roboto/Roboto-Regular-webfont.ttf +0 -0
  34. data/lib/sinatra/public/fonts/roboto/Roboto-Regular-webfont.woff +0 -0
  35. data/lib/sinatra/public/fonts/roboto/Roboto-Thin-webfont.eot +0 -0
  36. data/lib/sinatra/public/fonts/roboto/Roboto-Thin-webfont.svg +631 -0
  37. data/lib/sinatra/public/fonts/roboto/Roboto-Thin-webfont.ttf +0 -0
  38. data/lib/sinatra/public/fonts/roboto/Roboto-Thin-webfont.woff +0 -0
  39. data/lib/sinatra/public/img/select.png +0 -0
  40. data/lib/sinatra/public/img/select@2x.png +0 -0
  41. data/lib/sinatra/public/js/app.js +794 -0
  42. data/lib/sinatra/public/js/form_validator.js +29 -0
  43. data/lib/sinatra/public/vendors/animate.css/animate.min.css +7 -0
  44. data/lib/sinatra/public/vendors/bootstrap-validator/validator.js +405 -0
  45. data/lib/sinatra/public/vendors/bootstrap/bootstrap.min.js +7 -0
  46. data/lib/sinatra/public/vendors/chartist/chartist.min.css +1 -0
  47. data/lib/sinatra/public/vendors/chartist/chartist.min.js +10 -0
  48. data/lib/sinatra/public/vendors/chosen/chosen-sprite.png +0 -0
  49. data/lib/sinatra/public/vendors/chosen/chosen-sprite@2x.png +0 -0
  50. data/lib/sinatra/public/vendors/chosen/chosen.jquery.min.js +3 -0
  51. data/lib/sinatra/public/vendors/chosen/chosen.min.css +11 -0
  52. data/lib/sinatra/public/vendors/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.js +2051 -0
  53. data/lib/sinatra/public/vendors/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.css +5 -0
  54. data/lib/sinatra/public/vendors/jquery/jquery.min.js +5 -0
  55. data/lib/sinatra/public/vendors/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js +5 -0
  56. data/lib/sinatra/public/vendors/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css +1267 -0
  57. data/lib/sinatra/public/vendors/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js +2370 -0
  58. data/lib/sinatra/public/vendors/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.min.css +1 -0
  59. data/lib/sinatra/public/vendors/malihu-custom-scrollbar-plugin/mCSB_buttons.png +0 -0
  60. data/lib/sinatra/public/vendors/material-design-iconic-font/css/material-design-iconic-font.css +5166 -0
  61. data/lib/sinatra/public/vendors/material-design-iconic-font/css/material-design-iconic-font.min.css +1 -0
  62. data/lib/sinatra/public/vendors/material-design-iconic-font/fonts/Material-Design-Iconic-Font.eot +0 -0
  63. data/lib/sinatra/public/vendors/material-design-iconic-font/fonts/Material-Design-Iconic-Font.svg +787 -0
  64. data/lib/sinatra/public/vendors/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf +0 -0
  65. data/lib/sinatra/public/vendors/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff +0 -0
  66. data/lib/sinatra/public/vendors/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2 +0 -0
  67. data/lib/sinatra/public/vendors/moment/moment.min.js +7 -0
  68. data/lib/sinatra/public/vendors/typeahead.js/bloodhound.min.js +7 -0
  69. data/lib/sinatra/public/vendors/typeahead.js/handlebars.js +2610 -0
  70. data/lib/sinatra/public/vendors/typeahead.js/typeahead.bundle.min.js +8 -0
  71. data/lib/sinatra/public/vendors/waves/waves.min.css +8 -0
  72. data/lib/sinatra/public/vendors/waves/waves.min.js +10 -0
  73. data/lib/sinatra/views/charts/simple_line.slim +36 -0
  74. data/lib/sinatra/views/errors/403.slim +9 -0
  75. data/lib/sinatra/views/errors/404.slim +27 -0
  76. data/lib/sinatra/views/errors/500.slim +24 -0
  77. data/lib/sinatra/views/inputs/date.slim +12 -0
  78. data/lib/sinatra/views/inputs/input.slim +18 -0
  79. data/lib/sinatra/views/inputs/month.slim +13 -0
  80. data/lib/sinatra/views/inputs/multiple_select.slim +27 -0
  81. data/lib/sinatra/views/inputs/radio.slim +8 -0
  82. data/lib/sinatra/views/inputs/select.slim +26 -0
  83. data/lib/sinatra/views/inputs/textarea.slim +14 -0
  84. data/lib/sinatra/views/inputs/tick.slim +8 -0
  85. data/lib/sinatra/views/inputs/year.slim +12 -0
  86. data/lib/sinatra/views/libraries/include_css.slim +28 -0
  87. data/lib/sinatra/views/libraries/include_js_after.slim +53 -0
  88. data/lib/sinatra/views/libraries/include_js_before.slim +7 -0
  89. data/lib/sinatra/views/notifications.slim +98 -0
  90. data/lib/sinatra/views/notifications/form.slim +41 -0
  91. data/lib/sinatra/views/notifications/item.slim +11 -0
  92. data/lib/sinatra/views/notifications/modal.slim +29 -0
  93. data/lib/sinatra/views/notifications/new.slim +21 -0
  94. data/lib/sinatra/views/notifications/view.slim +80 -0
  95. data/lib/sinatra/views/notifications/widget.slim +33 -0
  96. metadata +136 -0
@@ -0,0 +1,794 @@
1
+ /*
2
+ * Detact Mobile Browser
3
+ */
4
+ if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
5
+ $('html').addClass('ismobile');
6
+ }
7
+
8
+ // configuration of the observer:
9
+ var config = { attributes: false, childList: true, characterData: false, subtree: true };
10
+
11
+
12
+ // Chosen touch support.
13
+ if ($('.chosen-container').length > 0) {
14
+ $('.chosen-container').on('touchstart', function(e){
15
+ e.stopPropagation(); e.preventDefault();
16
+ // Trigger the mousedown event.
17
+ $(this).trigger('mousedown');
18
+ });
19
+ }
20
+
21
+ $(document).ready(function(){
22
+
23
+ // Fix modal inside other components
24
+ $('.modal').appendTo("body");
25
+
26
+ if (window.top.location.hash.indexOf("#") != -1) {
27
+ $("a[href=" + window.top.location.hash +"]").trigger('click');
28
+ }
29
+
30
+ $("a[data-toggle='tab']").click(function() {
31
+ window.top.location.hash = $(this).attr("href");
32
+ });
33
+ /* --------------------------------------------------------
34
+ Layout
35
+ -----------------------------------------------------------*/
36
+ (function () {
37
+
38
+ //Get saved layout type from LocalStorage
39
+ var layoutStatus = localStorage.getItem('ma-layout-status');
40
+ $('#header').attr('data-current-skin', "pink");
41
+ if(!$('#header-2')[0]) { //Make it work only on normal headers
42
+ if (layoutStatus == 1) {
43
+ $('body').addClass('sw-toggled');
44
+ $('#tw-switch').prop('checked', true);
45
+ }
46
+ }
47
+
48
+ $('body').on('change', '#toggle-width input:checkbox', function () {
49
+ if ($(this).is(':checked')) {
50
+ setTimeout(function () {
51
+ $('body').addClass('toggled sw-toggled');
52
+ localStorage.setItem('ma-layout-status', 1);
53
+ }, 250);
54
+ }
55
+ else {
56
+ setTimeout(function () {
57
+ $('body').removeClass('toggled sw-toggled');
58
+ localStorage.setItem('ma-layout-status', 0);
59
+ }, 250);
60
+ }
61
+ });
62
+ })();
63
+
64
+ //Hack for modal to work on dropdown menu
65
+ $('header .lv-item').click(function(e) {
66
+ e.stopPropagation();
67
+ if ($(e.target).is('[data-toggle=modal]')) {
68
+ $($(e.target).data('target')).modal()
69
+ }
70
+ });
71
+
72
+ /* --------------------------------------------------------
73
+ Scrollbar
74
+ -----------------------------------------------------------*/
75
+ function scrollBar(selector, theme, mousewheelaxis) {
76
+ $(selector).mCustomScrollbar({
77
+ theme: theme,
78
+ scrollInertia: 100,
79
+ axis:'yx',
80
+ mouseWheel: {
81
+ enable: true,
82
+ axis: mousewheelaxis,
83
+ preventDefault: true
84
+ }
85
+ });
86
+ }
87
+
88
+ if (!$('html').hasClass('ismobile')) {
89
+ //On Custom Class
90
+ if ($('.c-overflow')[0]) {
91
+ scrollBar('.c-overflow', 'minimal-dark', 'y');
92
+ }
93
+ }
94
+
95
+ /*
96
+ * Top Search
97
+ */
98
+ (function(){
99
+ $('body').on('click', '#top-search > a', function(e){
100
+ e.preventDefault();
101
+
102
+ $('#header').addClass('search-toggled');
103
+ $('#top-search-wrap input').focus();
104
+ });
105
+
106
+ $('body').on('click', '#top-search-close', function(e){
107
+ e.preventDefault();
108
+
109
+ $('#header').removeClass('search-toggled');
110
+ });
111
+ })();
112
+
113
+ /*
114
+ * Sidebar
115
+ */
116
+ (function(){
117
+ //Toggle
118
+ $('body').on('click', '#menu-trigger, #chat-trigger', function(e){
119
+ e.preventDefault();
120
+ var x = $(this).data('trigger');
121
+
122
+ $(x).toggleClass('toggled');
123
+ $(this).toggleClass('open');
124
+
125
+ //Close opened sub-menus
126
+ $('.sub-menu.toggled').not('.active').each(function(){
127
+ $(this).removeClass('toggled');
128
+ $(this).find('ul').hide();
129
+ });
130
+
131
+
132
+
133
+ $('.profile-menu .main-menu').hide();
134
+
135
+ if (x == '#sidebar') {
136
+
137
+ $elem = '#sidebar';
138
+ $elem2 = '#menu-trigger';
139
+
140
+ $('#chat-trigger').removeClass('open');
141
+
142
+ if (!$('#chat').hasClass('toggled')) {
143
+ $('#header').toggleClass('sidebar-toggled');
144
+ }
145
+ else {
146
+ $('#chat').removeClass('toggled');
147
+ }
148
+ }
149
+
150
+ if (x == '#chat') {
151
+ $elem = '#chat';
152
+ $elem2 = '#chat-trigger';
153
+
154
+ $('#menu-trigger').removeClass('open');
155
+
156
+ if (!$('#sidebar').hasClass('toggled')) {
157
+ $('#header').toggleClass('sidebar-toggled');
158
+ }
159
+ else {
160
+ $('#sidebar').removeClass('toggled');
161
+ }
162
+ }
163
+
164
+ //When clicking outside
165
+ if ($('#header').hasClass('sidebar-toggled')) {
166
+ $(document).on('click', function (e) {
167
+ if (($(e.target).closest($elem).length === 0) && ($(e.target).closest($elem2).length === 0)) {
168
+ setTimeout(function(){
169
+ $($elem).removeClass('toggled');
170
+ $('#header').removeClass('sidebar-toggled');
171
+ $($elem2).removeClass('open');
172
+ });
173
+ }
174
+ });
175
+ }
176
+ })
177
+
178
+ //Submenu
179
+ $('body').on('click', '.sub-menu > a', function(e){
180
+ e.preventDefault();
181
+ $(this).next().slideToggle(200);
182
+ $(this).parent().toggleClass('toggled');
183
+ });
184
+ })();
185
+
186
+ /*
187
+ * Clear Notification
188
+ */
189
+ $('body').on('click', '[data-clear="notification"]', function(e){
190
+ e.preventDefault();
191
+
192
+ var x = $(this).closest('.listview');
193
+ var y = x.find('.lv-item');
194
+ var z = y.size();
195
+
196
+ $(this).parent().fadeOut();
197
+
198
+ x.find('.list-group').prepend('<i class="grid-loading hide-it"></i>');
199
+ x.find('.grid-loading').fadeIn(1500);
200
+
201
+
202
+ var w = 0;
203
+ y.each(function(){
204
+ var z = $(this);
205
+ setTimeout(function(){
206
+ z.addClass('animated fadeOutRightBig').delay(1000).queue(function(){
207
+ z.remove();
208
+ });
209
+ }, w+=150);
210
+ })
211
+
212
+ //Popup empty message
213
+ setTimeout(function(){
214
+ $('#notifications').addClass('empty');
215
+ }, (z*150)+200);
216
+ });
217
+
218
+ /*
219
+ * Dropdown Menu
220
+ */
221
+ if($('.dropdown')[0]) {
222
+ //Propagate
223
+ $('body').on('click', '.dropdown.open .dropdown-menu', function(e){
224
+ e.stopPropagation();
225
+ });
226
+
227
+ $('.dropdown').on('shown.bs.dropdown', function (e) {
228
+ if($(this).attr('data-animation')) {
229
+ $animArray = [];
230
+ $animation = $(this).data('animation');
231
+ $animArray = $animation.split(',');
232
+ $animationIn = 'animated '+$animArray[0];
233
+ $animationOut = 'animated '+ $animArray[1];
234
+ $animationDuration = ''
235
+ if(!$animArray[2]) {
236
+ $animationDuration = 500; //if duration is not defined, default is set to 500ms
237
+ }
238
+ else {
239
+ $animationDuration = $animArray[2];
240
+ }
241
+
242
+ $(this).find('.dropdown-menu').removeClass($animationOut)
243
+ $(this).find('.dropdown-menu').addClass($animationIn);
244
+ }
245
+ });
246
+
247
+ $('.dropdown').on('hide.bs.dropdown', function (e) {
248
+ if($(this).attr('data-animation')) {
249
+ e.preventDefault();
250
+ $this = $(this);
251
+ $dropdownMenu = $this.find('.dropdown-menu');
252
+
253
+ $dropdownMenu.addClass($animationOut);
254
+ setTimeout(function(){
255
+ $this.removeClass('open')
256
+
257
+ }, $animationDuration);
258
+ }
259
+ });
260
+ }
261
+
262
+ /*
263
+ * Profile Menu
264
+ */
265
+ $('body').on('click', '.profile-menu > a', function(e){
266
+ e.preventDefault();
267
+ $(this).parent().toggleClass('toggled');
268
+ $(this).next().slideToggle(200);
269
+ });
270
+
271
+ /*
272
+ * Text Feild
273
+ */
274
+
275
+ //Add blue animated border and remove with condition when focus and blur
276
+ if($('.fg-line')[0]) {
277
+ $('body').on('focus', '.fg-line .form-control', function(){
278
+ $(this).closest('.fg-line').addClass('fg-toggled');
279
+ })
280
+
281
+ $('body').on('blur', '.form-control', function(){
282
+ var p = $(this).closest('.form-group, .input-group');
283
+ var i = p.find('.form-control').val();
284
+
285
+ if (p.hasClass('fg-float')) {
286
+ if (i.length == 0) {
287
+ $(this).closest('.fg-line').removeClass('fg-toggled');
288
+ }
289
+ }
290
+ else {
291
+ $(this).closest('.fg-line').removeClass('fg-toggled');
292
+ }
293
+ });
294
+ }
295
+
296
+ //Add blue border for pre-valued fg-flot text feilds
297
+ if($('.fg-float')[0]) {
298
+ $('.fg-float .form-control').each(function(){
299
+ var i = $(this).val();
300
+
301
+ if (!i.length == 0) {
302
+ $(this).closest('.fg-line').addClass('fg-toggled');
303
+ }
304
+
305
+ });
306
+ }
307
+
308
+ /*
309
+ * Tag Select
310
+ */
311
+ if($('.chosen')[0]) {
312
+ $('.chosen').chosen({
313
+ allow_single_deselect: true,
314
+ width: '100%'
315
+ });
316
+ }
317
+
318
+ /*
319
+ * Date Time Picker
320
+ */
321
+
322
+
323
+ //Date Time Picker
324
+ if ($('.date-time-picker')[0]) {
325
+ $('.date-time-picker').datetimepicker({
326
+ locale: 'es'
327
+ });
328
+ }
329
+
330
+ //Time
331
+ if ($('.time-picker')[0]) {
332
+ $('.time-picker').datetimepicker({
333
+ format: 'LT'
334
+ });
335
+ }
336
+
337
+ //Date
338
+ if ($('.date-picker')[0]) {
339
+ $('.date-picker').datetimepicker({
340
+ format: 'DD/MM/YYYY',
341
+ locale: 'en'
342
+ });
343
+ }
344
+
345
+ //Date
346
+ if ($('.month-picker')[0]) {
347
+ $('.month-picker').datetimepicker({
348
+ viewMode: 'years',
349
+ format: 'MM/YYYY'
350
+ });
351
+ }
352
+
353
+ //Date
354
+ if ($('.year-picker')[0]) {
355
+ $('.year-picker').datetimepicker({
356
+ viewMode: 'years',
357
+ format: 'YYYY'
358
+ });
359
+ }
360
+
361
+ /*
362
+ * Waves Animation
363
+ */
364
+ (function(){
365
+ Waves.attach('.btn:not(.btn-icon):not(.btn-float)');
366
+ Waves.attach('.btn-icon, .btn-float', ['waves-circle', 'waves-float']);
367
+ Waves.init();
368
+ })();
369
+
370
+ /*
371
+ * Lightbox
372
+ */
373
+ if ($('.lightbox')[0]) {
374
+ $('.lightbox').lightGallery({
375
+ enableTouch: true
376
+ });
377
+ }
378
+
379
+ /*
380
+ * Link prevent
381
+ */
382
+ $('body').on('click', '.a-prevent', function(e){
383
+ e.preventDefault();
384
+ });
385
+
386
+ /*
387
+ * Collaspe Fix
388
+ */
389
+ if ($('.collapse')[0]) {
390
+
391
+ //Add active class for opened items
392
+ $('.collapse').on('show.bs.collapse', function (e) {
393
+ $(this).closest('.panel').find('.panel-heading').addClass('active');
394
+ });
395
+
396
+ $('.collapse').on('hide.bs.collapse', function (e) {
397
+ $(this).closest('.panel').find('.panel-heading').removeClass('active');
398
+ });
399
+
400
+ //Add active class for pre opened items
401
+ $('.collapse.in').each(function(){
402
+ $(this).closest('.panel').find('.panel-heading').addClass('active');
403
+ });
404
+ }
405
+
406
+ /*
407
+ * Tooltips
408
+ */
409
+ if ($('[data-toggle="tooltip"]')[0]) {
410
+ $('[data-toggle="tooltip"]').tooltip();
411
+ }
412
+
413
+ /*
414
+ * Popover
415
+ */
416
+ if ($('[data-toggle="popover"]')[0]) {
417
+ $('[data-toggle="popover"]').popover();
418
+ }
419
+
420
+ /*
421
+ * Message
422
+ */
423
+
424
+ //Actions
425
+ if ($('.on-select')[0]) {
426
+ var checkboxes = '.lv-avatar-content input:checkbox';
427
+ var actions = $('.on-select').closest('.lv-actions');
428
+
429
+ $('body').on('click', checkboxes, function() {
430
+ if ($(checkboxes+':checked')[0]) {
431
+ actions.addClass('toggled');
432
+ }
433
+ else {
434
+ actions.removeClass('toggled');
435
+ }
436
+ });
437
+ }
438
+
439
+ if($('#ms-menu-trigger')[0]) {
440
+ $('body').on('click', '#ms-menu-trigger', function(e){
441
+ e.preventDefault();
442
+ $(this).toggleClass('open');
443
+ $('.ms-menu').toggleClass('toggled');
444
+ });
445
+ }
446
+
447
+ /*
448
+ * Login
449
+ */
450
+ if ($('.login-content')[0]) {
451
+ //Add class to HTML. This is used to center align the logn box
452
+ $('html').addClass('login-content');
453
+
454
+ $('body').on('click', '.login-navigation > li', function(){
455
+ var z = $(this).data('block');
456
+ var t = $(this).closest('.lc-block');
457
+
458
+ t.removeClass('toggled');
459
+
460
+ setTimeout(function(){
461
+ $(z).addClass('toggled');
462
+ });
463
+
464
+ })
465
+ }
466
+
467
+ /*
468
+ * Fullscreen Browsing
469
+ */
470
+ if ($('[data-action="fullscreen"]')[0]) {
471
+ var fs = $("[data-action='fullscreen']");
472
+ fs.on('click', function(e) {
473
+ e.preventDefault();
474
+
475
+ //Launch
476
+ function launchIntoFullscreen(element) {
477
+ if(element.requestFullscreen) {
478
+ element.requestFullscreen();
479
+ } else if(element.mozRequestFullScreen) {
480
+ element.mozRequestFullScreen();
481
+ } else if(element.webkitRequestFullscreen) {
482
+ element.webkitRequestFullscreen();
483
+ } else if(element.msRequestFullscreen) {
484
+ element.msRequestFullscreen();
485
+ }
486
+ }
487
+
488
+ //Exit
489
+ function exitFullscreen() {
490
+ if(document.exitFullscreen) {
491
+ document.exitFullscreen();
492
+ } else if(document.mozCancelFullScreen) {
493
+ document.mozCancelFullScreen();
494
+ } else if(document.webkitExitFullscreen) {
495
+ document.webkitExitFullscreen();
496
+ }
497
+ }
498
+
499
+ launchIntoFullscreen(document.documentElement);
500
+ fs.closest('.dropdown').removeClass('open');
501
+ });
502
+ }
503
+
504
+ /*
505
+ * Clear Local Storage
506
+ */
507
+ if ($('[data-action="clear-localstorage"]')[0]) {
508
+ var cls = $('[data-action="clear-localstorage"]');
509
+
510
+ cls.on('click', function(e) {
511
+ e.preventDefault();
512
+
513
+ swal({
514
+ title: "¿Estás seguro?",
515
+ text: "Todos tus datos locales serán borrados.",
516
+ type: "warning",
517
+ showCancelButton: true,
518
+ confirmButtonColor: "#DD6B55",
519
+ confirmButtonText: "Borrar",
520
+ cancelButtonText: "Cancelar",
521
+ closeOnConfirm: false
522
+ }, function(){
523
+ localStorage.clear();
524
+ swal("Hecho!", "Cache borrada", "success");
525
+ });
526
+ });
527
+ }
528
+
529
+ /*
530
+ * Profile Edit Toggle
531
+ */
532
+ if ($('[data-pmb-action]')[0]) {
533
+ $('body').on('click', '[data-pmb-action]', function(e){
534
+ e.preventDefault();
535
+ var d = $(this).data('pmb-action');
536
+
537
+ if (d === "edit") {
538
+ $(this).closest('.pmb-block').toggleClass('toggled');
539
+ }
540
+
541
+ if (d === "reset") {
542
+ $(this).closest('.pmb-block').removeClass('toggled');
543
+ }
544
+
545
+
546
+ });
547
+ }
548
+
549
+ /*
550
+ * IE 9 Placeholder
551
+ */
552
+ if($('html').hasClass('ie9')) {
553
+ $('input, textarea').placeholder({
554
+ customClass: 'ie9-placeholder'
555
+ });
556
+ }
557
+
558
+
559
+ /*
560
+ * Listview Search
561
+ */
562
+ if ($('.lvh-search-trigger')[0]) {
563
+
564
+
565
+ $('body').on('click', '.lvh-search-trigger', function(e){
566
+ e.preventDefault();
567
+ x = $(this).closest('.lv-header-alt').find('.lvh-search');
568
+
569
+ x.fadeIn(300);
570
+ x.find('.lvhs-input').focus();
571
+ });
572
+
573
+ //Close Search
574
+ $('body').on('click', '.lvh-search-close', function(){
575
+ x.fadeOut(300);
576
+ setTimeout(function(){
577
+ x.find('.lvhs-input').val('');
578
+ }, 350);
579
+ })
580
+ }
581
+
582
+
583
+ /*
584
+ * Print
585
+ */
586
+ if ($('[data-action="print"]')[0]) {
587
+ $('body').on('click', '[data-action="print"]', function(e){
588
+ e.preventDefault();
589
+
590
+ window.print();
591
+ })
592
+ }
593
+
594
+ /*
595
+ * Modal hide
596
+ */
597
+ $('.modal').bind('shown.bs.modal', function (e) {
598
+ $(this).find('#submit').attr("disabled",false);
599
+ });
600
+
601
+ });
602
+
603
+ function start_load() {
604
+ if (!$("#loader")[0]) {
605
+ $("html").append('<div id="loader" style="position: fixed;z-index: 100000000;padding:5px;top: 0;"><div class="preloader pl-lg pls-white" style="left: 10px; top: 5px;"><svg class="pl-circular" viewBox="25 25 50 50"><circle class="plc-path" cx="50" cy="50" r="20"></circle></svg></div></div>');
606
+ }
607
+ }
608
+
609
+ function stop_load() {
610
+ $("#loader").remove();
611
+ }
612
+
613
+
614
+ $( document ).ajaxSend(function( event, jqxhr, settings ) {
615
+ if (!settings.url.includes(".json")) {
616
+ start_load();
617
+ }
618
+ });
619
+
620
+ $( document ).ajaxStop(function() {
621
+ stop_load();
622
+ });
623
+
624
+ function rm(url) {
625
+ disableButtons();
626
+ if (confirm('¿Estás seguro que deseas realizar esta operación?')) {
627
+ $.ajax({
628
+ url: url,
629
+ type: 'DELETE',
630
+ done: function(result) {
631
+ location.reload();
632
+ },
633
+ success: function(result) {
634
+ location.reload();
635
+ },
636
+ error: function(error) {
637
+ alert("Ha ocurrido un error, intentalo nuevamente!");
638
+ enableButtons();
639
+ }
640
+ });
641
+ } else {
642
+ enableButtons();
643
+ }
644
+ }
645
+
646
+
647
+ function rm_object(object,id) {
648
+ disableButtons();
649
+ $.ajax({
650
+ url: '/' + object + '/' + id,
651
+ type: 'DELETE',
652
+ data: {},
653
+ success: function(result) {
654
+ location.reload();
655
+ }
656
+ });
657
+ }
658
+
659
+ function post(url) {
660
+ disableButtons();
661
+ if (confirm('¿Estás seguro que deseas realizar esta operación?')) {
662
+ $.ajax({
663
+ url: url,
664
+ type: 'POST',
665
+ done: function(result) {
666
+ location.reload();
667
+ },
668
+ success: function(result) {
669
+ location.reload();
670
+ },
671
+ error: function(error) {
672
+ alert("Ha ocurrido un error, intentalo nuevamente!");
673
+ enableButtons();
674
+ }
675
+ });
676
+ } else {
677
+ enableButtons();
678
+ }
679
+ }
680
+
681
+ function disableButtons() {
682
+ $(".btn").each(function() {
683
+ $(this).data("temp",$(this).val());
684
+ $(this).attr("disabled",true);
685
+ });
686
+ return true
687
+ }
688
+ function enableButtons() {
689
+ $(".btn").each(function() {
690
+ $(this).attr("disabled",false);
691
+ });
692
+ return true
693
+ }
694
+ (function( $ ){
695
+ $.fn.disableSelect = function() {
696
+ $(this).prop("disabled", true);
697
+ $(this).selectpicker('refresh');
698
+ };
699
+ })( jQuery );
700
+ (function( $ ){
701
+ $.fn.enableSelect = function() {
702
+ $(this).prop("disabled", false);
703
+ $(this).selectpicker('refresh');
704
+ };
705
+ })( jQuery );
706
+
707
+ /*
708
+ * Bootstrap Growl - Notifications popups
709
+ */
710
+ function notify(message, type){
711
+ $('[data-growl="container"]').find('[data-growl="dismiss"]').trigger('click');
712
+ $.growl({
713
+ message: message
714
+ },{
715
+ type: type,
716
+ allow_dismiss: false,
717
+ label: 'Cancel',
718
+ className: 'btn-xs btn-inverse growl-animated',
719
+ placement: {
720
+ from: 'bottom',
721
+ align: 'left'
722
+ },
723
+ delay: 5000,
724
+ animate: {
725
+ enter: 'animated fadeInUp',
726
+ exit: 'animated fadeOutDown'
727
+ },
728
+ offset: {
729
+ x: 0,
730
+ y: 0
731
+ }
732
+ });
733
+ };
734
+
735
+ function encodeQueryData(data)
736
+ {
737
+ var ret = [];
738
+ for (var d in data)
739
+ ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d]));
740
+ return ret.join("&");
741
+ }
742
+
743
+ (function ($) {
744
+ "use strict";
745
+ function centerModal() {
746
+ $(this).css('display', 'block');
747
+ var $dialog = $(this).find(".modal-dialog"),
748
+ offset = ($(window).height() - $dialog.height()) / 2,
749
+ bottomMargin = parseInt($dialog.css('marginBottom'), 10);
750
+
751
+ // Make sure you don't hide the top part of the modal w/ a negative margin if it's longer than the screen height, and keep the margin equal to the bottom margin of the modal
752
+ if(offset < bottomMargin) offset = bottomMargin;
753
+ $dialog.css("margin-top", offset);
754
+ }
755
+
756
+ $(document).on('show.bs.modal', '.modal', centerModal);
757
+ $(window).on("resize", function () {
758
+ $('.modal:visible').each(centerModal);
759
+ });
760
+ }(jQuery));
761
+
762
+ function buildFilterMap(offset) {
763
+ filter_map = {};
764
+ $("#form select, #form input").each(function() {
765
+ if ($(this).val() != null && $(this).val() != "") {
766
+ if ($(this).is(':checkbox')) {
767
+ if ($(this).is(':checked')) {
768
+ filter_map[$(this)[0].name] = "on";
769
+ } else {
770
+ filter_map[$(this)[0].name] = "off";
771
+ }
772
+ } else {
773
+ filter_map[$(this)[0].name] = $(this).val();
774
+ }
775
+ }
776
+ });
777
+ if (offset != null) {
778
+ filter_map["offset"] = offset;
779
+ } else {
780
+ filter_map["offset"] = filter_map["offset"] - 1;
781
+ }
782
+ return filter_map;
783
+ }
784
+
785
+ function read_notify(id,url) {
786
+ $.ajax({
787
+ url: '/notifications/' + id,
788
+ type: 'POST',
789
+ data: {},
790
+ success: function(result) {
791
+ window.location = url;
792
+ }
793
+ });
794
+ }