Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $(window).on('load', function() {
- //Загрузка страницы
- var dataLoaded = [];
- (function() {
- var listYear = dataService.getYearsList(function (data) {
- data.forEach(function (i) {
- dataService.getDataYear(i, function (data) {
- data.workCalendar.forEach(function (item) {
- var dateDayFormat = Number(moment(item.date).format('DD'));
- if(item.isHoliday) {
- dataLoaded.push({
- id: item.uid,
- name: 'Праздничный день',
- location:'',
- startDate: new Date(item.year, item.month - 1, dateDayFormat),
- endDate: new Date(item.year, item.month - 1, dateDayFormat),
- working_hours: item.workingHours,
- color: 'rgba(26, 179, 148, .7)',
- background: 'red',
- style: 'background'
- })
- }
- if (!item.isHoliday && item.workingHours === 0){
- dataLoaded.push({
- id: item.uid,
- name: 'Выходной день',
- location:'',
- startDate: new Date(item.year, item.month - 1, dateDayFormat),
- endDate: new Date(item.year, item.month - 1, dateDayFormat),
- working_hours: item.workingHours,
- color: 'rgba(0, 0, 0, 0.18)',
- background: 'red',
- style: 'background'
- })
- }
- if (!item.isHoliday && item.workingHours >= 8){
- dataLoaded.push({
- id: item.uid,
- name: 'Рабочий день',
- location:'',
- startDate: new Date(item.year, item.month - 1, dateDayFormat),
- endDate: new Date(item.year, item.month - 1, dateDayFormat),
- working_hours: item.workingHours,
- color: 'none',
- style: 'color'
- })
- }
- if (!item.isHoliday && item.workingHours <= 7 && item.workingHours != 0){
- dataLoaded.push({
- id: item.uid,
- name: 'Сокращенный день',
- location:'',
- startDate: new Date(item.year, item.month - 1, dateDayFormat),
- endDate: new Date(item.year, item.month - 1, dateDayFormat),
- working_hours: item.workingHours,
- color: 'rgba(220, 220, 220, 0.53)',
- style: 'color'
- })
- }
- })
- }, function (data) {
- })
- });
- });
- })();
- var event = new function () {
- var edit = function (e) {
- console.log(e)
- $('#event-modal input[name="event-index"]').val(e ? e.events[0].id : '');
- $('#event-modal input[name="event-date"]').val(e ? e.events[0].date : '');
- $('#event-modal select[name="event-name"]').val(e ? e.events[0].name : '');
- $('#event-modal input[name="working_hours"]').val(e ? e.events[0].working_hours : '');
- $('#event-modal .modal-title').text(dataService.getDateParsed(e.date));
- $('#event-modal').modal();
- $('#save-event').click(function () {
- save(e.events[0] ,e)
- //^ дергаеться два раза
- })
- $('#event-remove_day').click(function () {
- $('#modal-conf-del').modal();
- $('#conf-del_remove-day').click(function () {
- remove(e.events[0])
- $('.modal').modal('hide');
- })
- })
- },
- save = function (e, el) {
- var valInputs = {
- id: $('#event-modal input[name="event-index"]').val(),
- name: $('#event-modal select[name="event-name"]').find(":selected").text(),
- working_hours: $('#event-modal input[name="working_hours"]').val(),
- startDate: e.startDate,
- };
- var colorEvent = function () {
- var color = "none"
- switch (valInputs.working_hours) {
- case 0:
- return color = 'rgba(0, 0, 0, 0.18)';
- break;
- case valInputs.working_hours >= 8:
- return color = 'none';
- break;
- case valInputs.working_hours <= 7 && valInputs.working_hours != 0:
- return color = 'rgba(220, 220, 220, 0.53)';
- break;
- }
- return color;
- };
- var event = {
- id: valInputs.id,
- name: valInputs.name,
- working_hours: valInputs.working_hours,
- startDate: valInputs.startDate,
- style: e.style,
- color: colorEvent()
- }
- if(valInputs.name == 'Праздничный день'){
- event.isHoliday = true;
- } else {
- event.isHoliday = false;
- }
- if(event.id) {
- dataService.updateDate(event,function () {
- Notification.successMessage('Дата успешно обновлена!')
- },function () {
- Notification.errorMessage('Ошибка при обновлении даты!')
- })
- } else {
- delete event.id
- dataService.saveDate(event,function () {
- Notification.successMessage('Дата успешно добавлена!')
- },function () {
- Notification.errorMessage('Ошибка при добавлении даты!')
- })
- }
- //------
- var dataDate = $('#calendar').data('calendar').getDataSource();
- // setTimeout(function () {
- if(e.id) {
- for(var i in dataDate) {
- if(dataDate[i].id == event.id) {
- dataDate[i].name = event.name;
- dataDate[i].working_hours = event.working_hours;
- dataDate[i].startDate = event.startDate;
- dataDate[i].style = event.style;
- dataDate[i].color = event.color;
- }
- }
- }
- else {
- var newId = 0;
- for (var i in dataDate) {
- if (dataDate[i].id > newId) {
- newId = dataDate[i].id;
- }
- }
- newId++;
- event.id = newId;
- //------
- }
- dataDate.push(event);
- dataLoaded.push(event);
- // }, 1000)
- setTimeout(function () {
- var upd = new dataService.LOAD_DATA();
- $('.modal').modal('hide');
- $('#calendar').data('calendar').setDataSource(dataDate);
- $('#calendar').data('calendar').setDataSource(upd);
- }, 2000)
- },
- remove = function (e) {
- console.log(e);
- var name = $('#event-modal select[name="event-name"]').find(":selected").text();
- if(name == 'Праздничный день'){
- e.isHoliday = true;
- } else {
- e.isHoliday = false;
- }
- if (e.id) {
- dataService.deleteDate(e, function () {
- Notification.successMessage("Дата успешно удалена!")
- },function () {
- Notification.errorMessage("Ошибка при удалении даты!")
- })}else {
- Notification.warningMessage("Ошибка при удалении даты! Выбрано неверное число")
- }
- var dataSource = $('#calendar').data('calendar').getDataSource();
- for(var i in dataSource) {
- if(dataSource[i].id == e.id) {
- dataSource.splice(i, 1);
- break;
- }
- }
- $('#calendar').data('calendar').setDataSource(dataSource);
- };
- return {
- edit: edit,
- save: save,
- remove: remove
- }
- };
- var customizeCalendar = new function () {
- var menuItems = [
- {
- text: 'Update',
- click: event.edit
- },
- {
- text: 'Delete',
- click: event.remove
- }
- ];
- var focusOnDay = function (e) {
- if (e.events.length > 0) {
- var content = '';
- for (var i in e.events) {
- content += '<div class="event-tooltip-content">'
- // + '<div class="event-name" style="color:' + e.events[i].color + '" >' + e.events[i].name + '</div>'
- + '<div class="event-name" >' + e.events[i].name + '</div>'
- + '<div class="event-location">' + ' Рабочих часов:' + e.events[i].working_hours + '</div>'
- + '</div>';
- }
- $(e.element).popover({
- trigger: 'manual',
- container: 'body',
- html: true,
- content: content
- });
- $(e.element).popover('show');
- }
- };
- var focusOutDay = function (e) {
- if (e.events.length > 0) {
- $(e.element).popover('hide');
- }
- }
- var options = function () {
- if(sessionStorage.getItem('access')) {
- return {
- style: 'background',
- language: "ru",
- minDate: new Date('2016'),
- maxDate: new Date('2019'),
- contextMenuItems: true,
- enableContextMenu: true,
- enableRangeSelection: true,
- contextMenuItems: menuItems,
- clickDay: event.edit,
- mouseOnDay: focusOnDay,
- mouseOutDay: focusOutDay,
- dayContextMenu: function (e) {
- $(e.element).popover('hide');
- },
- dataSource: dataLoaded,
- customDataSourceRenderer: function (element, date, events) {
- console.log(element)
- console.log(date);
- console.log(events);
- },
- selectRange: function (e) {
- if (e.startDate != e.endDate) {
- dataService.getCountWorkDays(e.startDate, e.endDate, function (data) {
- if (data.countWorkDays > 1) {
- Notification.infoMessage(dataService.getDateRangeParsed(e.startDate, e.endDate).string + ' количество рабочих дней: ' + data.countWorkDays)
- Notification.showLastDateRange(dataService.getDateRangeParsed(e.startDate, e.endDate).string + '. количество рабочих дней: ' + data.countWorkDays)
- }
- })
- }
- }
- }
- } else {
- return {
- style: 'background',
- language: "ru",
- minDate: new Date('2016'),
- maxDate: new Date('2019'),
- contextMenuItems: true,
- enableContextMenu: true,
- enableRangeSelection: true,
- contextMenuItems: menuItems,
- mouseOnDay: focusOnDay,
- mouseOutDay: focusOutDay,
- dataSource: dataLoaded,
- customDataSourceRenderer: function (element, date, events) {
- console.log(element)
- console.log(date);
- console.log(events);
- },
- }
- }
- };
- var render = function (options) {
- $('#calendar').calendar(options);
- }
- return {
- render: render,
- options:options
- }
- }
- $(document).ready(function () {
- setTimeout(function () {
- $('.md-preloader').remove()
- }, 1450)
- setTimeout(function () {
- $('#marker').append('<div id="calendar" data-provide="calendar"></div>');
- customizeCalendar.render(customizeCalendar.options())
- }, 1500)
- })
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement