templates/js/library/daterangepicker-custom/daterangepicker-custom.js.twig line 1

Open in your IDE?
  1. class CustomDatePicker {
  2.     RANGES = {
  3.         TODAY: 'Сегодня',
  4.         YESTERDAY: 'Вчера',
  5.         LAST_7_DAYS: 'Последние 7 дней',
  6.         LAST_30_DAYS: 'Последние 30 дней',
  7.         THIS_MONTH: 'Этот месяц',
  8.         LAST_MONTH: 'Прошлый месяц',
  9.         CURRENT_AND_FUTURE: 'Текущее и будущее',
  10.         ALL_TIME: 'Все время',
  11.     };
  12.     pickerInstance = null;
  13.     cb(start, end) {
  14.         // startVal = start;
  15.         // endVal = end;
  16.         // $(this.outputElement).val(start.format('DD.MM.YYYY') + '—' + end.format('DD.MM.YYYY'));
  17.     }
  18.     constructor(outputElement, options = null) {
  19.         this.outputElement = outputElement;
  20.         options = {
  21.             singleDatePicker: false,
  22.             parentEl: null,
  23.             applyButtonClasses: null,
  24.             cancelButtonClasses: null,
  25.             containerClass: null,
  26.             autoUpdateInput: true,
  27.             rangeLabels: null,
  28.             ...options,
  29.         };
  30.         if (options.rangeLabels) {
  31.             this.RANGES = options.rangeLabels;
  32.         }
  33.         options.startDate = options.startDate || new Date();
  34.         options.endDate = options.endDate || new Date();
  35.         let ranges = {};
  36.         if (!options.singleDatePicker) {
  37.             ranges = {
  38.                 // [CustomDatePicker.RANGES.TODAY]: [moment(), moment()],
  39.                 // [CustomDatePicker.RANGES.YESTERDAY]: [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
  40.                 // [CustomDatePicker.RANGES.LAST_7_DAYS]: [moment().subtract(6, 'days'), moment()],
  41.                 // [CustomDatePicker.RANGES.LAST_30_DAYS]: [moment().subtract(29, 'days'), moment()],
  42.                 [this.RANGES.THIS_MONTH]: [moment().startOf('month'), moment().endOf('month')],
  43.                 [this.RANGES.LAST_MONTH]: [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
  44.                 [this.RANGES.CURRENT_AND_FUTURE]: [moment(), moment().add(10, 'year')],
  45.                 [this.RANGES.ALL_TIME]: [moment().subtract(10, 'year'), moment().add(10, 'year')],
  46.             };
  47.         }
  48.         $(outputElement).daterangepicker({
  49.             parentEl: '#content',
  50.             ...options,
  51.             locale: {
  52.                 "format": "DD.MM.YYYY",
  53.                 "separator": "—",
  54.                 "applyLabel": "Выбрать",
  55.                 "cancelLabel": "Отмена",
  56.                 "fromLabel": "с",
  57.                 "toLabel": "по",
  58.                 "customRangeLabel": "Произвольно",
  59.                 "weekLabel": "W",
  60.                 "daysOfWeek": [
  61.                     "ВС", "ПН", "ВТ", "СР", "ЧТ", "ПТ", "СБ"
  62.                 ],
  63.                 "monthNames": [
  64.                     "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"
  65.                 ],
  66.                 "firstDay": 1
  67.             },
  68.             ranges: ranges
  69.         }, (startVal, endVal) => this.cb(startVal, endVal));
  70.         this.cb(options.startDate, options.endDate);
  71.         this.pickerInstance = $(outputElement).data('daterangepicker');
  72.     }
  73.     getChosenRangeName() {
  74.         let picker = this.pickerInstance;
  75.         let start = picker.startDate;
  76.         let end = picker.endDate;
  77.         for (let key in this.RANGES) {
  78.             let label = this.RANGES[key];
  79.             let range = picker.ranges[label];
  80.             if (range && start.isSame(range[0], 'day') && end.isSame(range[1], 'day')) {
  81.                 return key;
  82.             }
  83.         }
  84.         return null;
  85.     }
  86.     getChosenLabel() {
  87.         let picker = this.pickerInstance;
  88.         let start = picker.startDate;
  89.         let end = picker.endDate;
  90.         for (let label in picker.ranges) {
  91.             let range = picker.ranges[label];
  92.             if (start.isSame(range[0], 'day') && end.isSame(range[1], 'day')) {
  93.                 return label;
  94.             }
  95.         }
  96.         return null;
  97.     }
  98.     getStartDate() {
  99.         return this.pickerInstance.startDate;
  100.     }
  101.     getEndDate() {
  102.         return this.pickerInstance.endDate;
  103.     }
  104.     getRootElement() {
  105.         return this.pickerInstance.container[0];
  106.     }
  107. }