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