Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $(window).on('load', function() {
  2.    //Загрузка страницы
  3.     var dataLoaded = [];
  4.     (function() {
  5.         var listYear = dataService.getYearsList(function (data) {
  6.             data.forEach(function (i) {
  7.                 dataService.getDataYear(i, function (data) {
  8.                     data.workCalendar.forEach(function (item) {
  9.                         var dateDayFormat = Number(moment(item.date).format('DD'));
  10.                         if(item.isHoliday) {
  11.                             dataLoaded.push({
  12.                                 id: item.uid,
  13.                                 name: 'Праздничный день',
  14.                                 location:'',
  15.                                 startDate: new Date(item.year, item.month - 1, dateDayFormat),
  16.                                 endDate: new Date(item.year, item.month - 1, dateDayFormat),
  17.                                 working_hours: item.workingHours,
  18.                                 color: 'rgba(26, 179, 148, .7)',
  19.                                 background: 'red',
  20.                                 style: 'background'
  21.                             })
  22.                         }
  23.                         if (!item.isHoliday && item.workingHours === 0){
  24.                             dataLoaded.push({
  25.                                 id: item.uid,
  26.                                 name: 'Выходной день',
  27.                                 location:'',
  28.                                 startDate: new Date(item.year, item.month - 1, dateDayFormat),
  29.                                 endDate: new Date(item.year, item.month - 1, dateDayFormat),
  30.                                 working_hours: item.workingHours,
  31.                                 color: 'rgba(0, 0, 0, 0.18)',
  32.                                 background: 'red',
  33.                                 style: 'background'
  34.                             })
  35.                         }
  36.                         if (!item.isHoliday && item.workingHours >= 8){
  37.                             dataLoaded.push({
  38.                                 id: item.uid,
  39.                                 name: 'Рабочий день',
  40.                                 location:'',
  41.                                 startDate: new Date(item.year, item.month - 1, dateDayFormat),
  42.                                 endDate: new Date(item.year, item.month - 1, dateDayFormat),
  43.                                 working_hours: item.workingHours,
  44.                                 color: 'none',
  45.                                 style: 'color'
  46.                             })
  47.                         }
  48.                         if (!item.isHoliday && item.workingHours <= 7 && item.workingHours != 0){
  49.                             dataLoaded.push({
  50.                                 id: item.uid,
  51.                                 name: 'Сокращенный день',
  52.                                 location:'',
  53.                                 startDate: new Date(item.year, item.month - 1, dateDayFormat),
  54.                                 endDate: new Date(item.year, item.month - 1, dateDayFormat),
  55.                                 working_hours: item.workingHours,
  56.                                 color: 'rgba(220, 220, 220, 0.53)',
  57.                                 style: 'color'
  58.                             })
  59.                         }
  60.                     })
  61.                 }, function (data) {
  62.  
  63.  
  64.                 })
  65.             });
  66.  
  67.         });
  68.  
  69.     })();
  70.     var event = new function () {
  71.         var edit = function (e) {
  72.             console.log(e)
  73.                 $('#event-modal input[name="event-index"]').val(e ? e.events[0].id : '');
  74.                 $('#event-modal input[name="event-date"]').val(e ? e.events[0].date : '');
  75.                 $('#event-modal select[name="event-name"]').val(e ? e.events[0].name : '');
  76.                 $('#event-modal input[name="working_hours"]').val(e ? e.events[0].working_hours : '');
  77.                 $('#event-modal .modal-title').text(dataService.getDateParsed(e.date));
  78.                 $('#event-modal').modal();
  79.                 $('#save-event').click(function () {
  80.                     save(e.events[0] ,e)
  81.                     //^ дергаеться два раза
  82.  
  83.                 })
  84.                 $('#event-remove_day').click(function () {
  85.                     $('#modal-conf-del').modal();
  86.                     $('#conf-del_remove-day').click(function () {
  87.                         remove(e.events[0])
  88.                         $('.modal').modal('hide');
  89.                     })
  90.                 })
  91.         },
  92.         save = function (e, el) {
  93.             var valInputs = {
  94.                 id:  $('#event-modal input[name="event-index"]').val(),
  95.                 name: $('#event-modal select[name="event-name"]').find(":selected").text(),
  96.                 working_hours: $('#event-modal input[name="working_hours"]').val(),
  97.                 startDate: e.startDate,
  98.             };
  99.             var colorEvent = function ()  {
  100.                 var color = "none"
  101.                 switch (valInputs.working_hours) {
  102.                     case 0:
  103.                         return color = 'rgba(0, 0, 0, 0.18)';
  104.                         break;
  105.                     case valInputs.working_hours >= 8:
  106.                         return color = 'none';
  107.                         break;
  108.                     case valInputs.working_hours <= 7 && valInputs.working_hours != 0:
  109.                         return color = 'rgba(220, 220, 220, 0.53)';
  110.                         break;
  111.                 }
  112.                 return color;
  113.             };
  114.             var event = {
  115.                 id: valInputs.id,
  116.                 name: valInputs.name,
  117.                 working_hours: valInputs.working_hours,
  118.                 startDate: valInputs.startDate,
  119.                 style: e.style,
  120.                 color: colorEvent()
  121.             }
  122.             if(valInputs.name == 'Праздничный день'){
  123.                 event.isHoliday = true;
  124.             } else {
  125.                 event.isHoliday = false;
  126.             }
  127.             if(event.id) {
  128.                 dataService.updateDate(event,function () {
  129.                     Notification.successMessage('Дата успешно обновлена!')
  130.                 },function () {
  131.                     Notification.errorMessage('Ошибка при обновлении даты!')
  132.                 })
  133.             } else {
  134.                 delete  event.id
  135.                 dataService.saveDate(event,function () {
  136.                     Notification.successMessage('Дата успешно добавлена!')
  137.                 },function () {
  138.                     Notification.errorMessage('Ошибка при добавлении даты!')
  139.                 })
  140.             }
  141.             //------
  142.             var dataDate = $('#calendar').data('calendar').getDataSource();
  143.             // setTimeout(function () {
  144.  
  145.                 if(e.id) {
  146.                     for(var i in dataDate) {
  147.                         if(dataDate[i].id == event.id) {
  148.                             dataDate[i].name = event.name;
  149.                             dataDate[i].working_hours = event.working_hours;
  150.                             dataDate[i].startDate = event.startDate;
  151.                             dataDate[i].style = event.style;
  152.                             dataDate[i].color = event.color;
  153.                         }
  154.                     }
  155.                 }
  156.                 else {
  157.                     var newId = 0;
  158.                     for (var i in dataDate) {
  159.                         if (dataDate[i].id > newId) {
  160.                             newId = dataDate[i].id;
  161.                         }
  162.                     }
  163.  
  164.                     newId++;
  165.                     event.id = newId;
  166.  
  167.  
  168.                     //------
  169.                 }
  170.                 dataDate.push(event);
  171.                 dataLoaded.push(event);
  172.             // }, 1000)
  173.             setTimeout(function () {
  174.                 var upd = new dataService.LOAD_DATA();
  175.                 $('.modal').modal('hide');
  176.                 $('#calendar').data('calendar').setDataSource(dataDate);
  177.                 $('#calendar').data('calendar').setDataSource(upd);
  178.             }, 2000)
  179.  
  180.  
  181.         },
  182.         remove = function (e) {
  183.             console.log(e);
  184.             var name =  $('#event-modal select[name="event-name"]').find(":selected").text();
  185.             if(name == 'Праздничный день'){
  186.                 e.isHoliday = true;
  187.             } else {
  188.                 e.isHoliday = false;
  189.             }
  190.             if (e.id) {
  191.                 dataService.deleteDate(e, function () {
  192.                     Notification.successMessage("Дата успешно удалена!")
  193.                 },function () {
  194.                     Notification.errorMessage("Ошибка при удалении даты!")
  195.                 })}else {
  196.                     Notification.warningMessage("Ошибка при удалении даты! Выбрано неверное число")
  197.             }
  198.             var dataSource = $('#calendar').data('calendar').getDataSource();
  199.  
  200.             for(var i in dataSource) {
  201.                 if(dataSource[i].id == e.id) {
  202.                     dataSource.splice(i, 1);
  203.                     break;
  204.                 }
  205.             }
  206.  
  207.             $('#calendar').data('calendar').setDataSource(dataSource);
  208.         };
  209.         return {
  210.             edit: edit,
  211.             save: save,
  212.             remove: remove
  213.         }
  214.     };
  215.     var customizeCalendar = new function () {
  216.       var menuItems = [
  217.           {
  218.               text: 'Update',
  219.               click: event.edit
  220.           },
  221.           {
  222.               text: 'Delete',
  223.               click: event.remove
  224.           }
  225.       ];
  226.       var focusOnDay = function (e) {
  227.           if (e.events.length > 0) {
  228.               var content = '';
  229.  
  230.               for (var i in e.events) {
  231.                   content += '<div class="event-tooltip-content">'
  232.                       // + '<div class="event-name" style="color:' + e.events[i].color + '" >' + e.events[i].name + '</div>'
  233.                       + '<div class="event-name" >' + e.events[i].name + '</div>'
  234.                       + '<div class="event-location">' + ' Рабочих часов:' + e.events[i].working_hours + '</div>'
  235.                       + '</div>';
  236.               }
  237.  
  238.               $(e.element).popover({
  239.                   trigger: 'manual',
  240.                   container: 'body',
  241.                   html: true,
  242.                   content: content
  243.               });
  244.  
  245.               $(e.element).popover('show');
  246.           }
  247.       };
  248.       var focusOutDay = function (e) {
  249.           if (e.events.length > 0) {
  250.               $(e.element).popover('hide');
  251.           }
  252.       }
  253.       var options = function () {
  254.           if(sessionStorage.getItem('access')) {
  255.               return {
  256.                   style: 'background',
  257.                   language: "ru",
  258.                   minDate: new Date('2016'),
  259.                   maxDate: new Date('2019'),
  260.                   contextMenuItems: true,
  261.                   enableContextMenu: true,
  262.                   enableRangeSelection: true,
  263.                   contextMenuItems: menuItems,
  264.                   clickDay: event.edit,
  265.                   mouseOnDay: focusOnDay,
  266.                   mouseOutDay: focusOutDay,
  267.                   dayContextMenu: function (e) {
  268.                       $(e.element).popover('hide');
  269.                   },
  270.                   dataSource: dataLoaded,
  271.                   customDataSourceRenderer: function (element, date, events) {
  272.                       console.log(element)
  273.                       console.log(date);
  274.                       console.log(events);
  275.                   },
  276.                   selectRange: function (e) {
  277.                       if (e.startDate != e.endDate) {
  278.                           dataService.getCountWorkDays(e.startDate, e.endDate, function (data) {
  279.                               if (data.countWorkDays > 1) {
  280.  
  281.                                   Notification.infoMessage(dataService.getDateRangeParsed(e.startDate, e.endDate).string + ' количество рабочих дней: ' + data.countWorkDays)
  282.                                   Notification.showLastDateRange(dataService.getDateRangeParsed(e.startDate, e.endDate).string + '. количество рабочих дней: ' + data.countWorkDays)
  283.                               }
  284.                           })
  285.                       }
  286.                   }
  287.               }
  288.           } else {
  289.               return {
  290.                   style: 'background',
  291.                   language: "ru",
  292.                   minDate: new Date('2016'),
  293.                   maxDate: new Date('2019'),
  294.                   contextMenuItems: true,
  295.                   enableContextMenu: true,
  296.                   enableRangeSelection: true,
  297.                   contextMenuItems: menuItems,
  298.                   mouseOnDay: focusOnDay,
  299.                   mouseOutDay: focusOutDay,
  300.                   dataSource: dataLoaded,
  301.                   customDataSourceRenderer: function (element, date, events) {
  302.                       console.log(element)
  303.                       console.log(date);
  304.                       console.log(events);
  305.                   },
  306.               }
  307.           }
  308.     };
  309.       var render = function (options) {
  310.           $('#calendar').calendar(options);
  311.       }
  312.       return {
  313.           render: render,
  314.           options:options
  315.       }
  316.     }
  317.     $(document).ready(function () {
  318.         setTimeout(function () {
  319.             $('.md-preloader').remove()
  320.         }, 1450)
  321.         setTimeout(function () {
  322.             $('#marker').append('<div id="calendar"  data-provide="calendar"></div>');
  323.             customizeCalendar.render(customizeCalendar.options())
  324.         }, 1500)
  325.     })
  326. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement