mirror of
https://github.com/itflow-org/itflow
synced 2026-02-28 19:04:52 +00:00
Feature: Replace old date range to Date Range Picker JS for better date from/to handling
This commit is contained in:
108
js/date_filter.js
Normal file
108
js/date_filter.js
Normal file
@@ -0,0 +1,108 @@
|
||||
(function ($, window) {
|
||||
"use strict";
|
||||
|
||||
$(function () {
|
||||
var $input = $('#dateFilter');
|
||||
if (!$input.length) return; // nothing to initialize
|
||||
|
||||
var $canned = $('#canned_date');
|
||||
var $dtf = $('#dtf');
|
||||
var $dtt = $('#dtt');
|
||||
|
||||
// Default to "All Time" if nothing provided
|
||||
var hasValues =
|
||||
($dtf.val() && $dtt.val()) ||
|
||||
($canned.val() && $canned.val() !== '');
|
||||
|
||||
if (!hasValues) {
|
||||
$canned.val('alltime');
|
||||
$dtf.val('1970-01-01');
|
||||
$dtt.val('2099-12-31');
|
||||
}
|
||||
|
||||
var initialStart = moment($dtf.val(), "YYYY-MM-DD");
|
||||
var initialEnd = moment($dtt.val(), "YYYY-MM-DD");
|
||||
|
||||
function setDisplay(start, end, label) {
|
||||
// Special display for All Time
|
||||
if (
|
||||
label === 'All Time' ||
|
||||
(start.format('YYYY-MM-DD') === '1970-01-01' &&
|
||||
end.format('YYYY-MM-DD') === '2099-12-31')
|
||||
) {
|
||||
$input.val('All Time');
|
||||
} else {
|
||||
$input.val(start.format('YYYY-MM-DD') + " — " + end.format('YYYY-MM-DD'));
|
||||
}
|
||||
}
|
||||
|
||||
var cannedMap = {
|
||||
"Today": "today",
|
||||
"Yesterday": "yesterday",
|
||||
"This Week": "thisweek",
|
||||
"Last Week": "lastweek",
|
||||
"This Month": "thismonth",
|
||||
"Last Month": "lastmonth",
|
||||
"This Year": "thisyear",
|
||||
"Last Year": "lastyear",
|
||||
"All Time": "alltime"
|
||||
};
|
||||
|
||||
$input.daterangepicker({
|
||||
startDate: initialStart,
|
||||
endDate: initialEnd,
|
||||
autoUpdateInput: true,
|
||||
opens: 'left',
|
||||
locale: {
|
||||
format: 'YYYY-MM-DD',
|
||||
firstDay: 1
|
||||
},
|
||||
ranges: {
|
||||
'Today': [moment(), moment()],
|
||||
'Yesterday': [moment().subtract(1, 'day'), moment().subtract(1, 'day')],
|
||||
'This Week': [moment().startOf('isoWeek'), moment()],
|
||||
'Last Week': [
|
||||
moment().subtract(1, 'week').startOf('isoWeek'),
|
||||
moment().subtract(1, 'week').endOf('isoWeek')
|
||||
],
|
||||
'This Month': [moment().startOf('month'), moment()],
|
||||
'Last Month': [
|
||||
moment().subtract(1, 'month').startOf('month'),
|
||||
moment().subtract(1, 'month').endOf('month')
|
||||
],
|
||||
'This Year': [moment().startOf('year'), moment()],
|
||||
'Last Year': [
|
||||
moment().subtract(1, 'year').startOf('year'),
|
||||
moment().subtract(1, 'year').endOf('year')
|
||||
],
|
||||
'All Time': [
|
||||
moment('1970-01-01', 'YYYY-MM-DD'),
|
||||
moment('2099-12-31', 'YYYY-MM-DD')
|
||||
]
|
||||
}
|
||||
}, setDisplay);
|
||||
|
||||
// Show initial label
|
||||
setDisplay(initialStart, initialEnd);
|
||||
|
||||
$input.on('apply.daterangepicker', function (ev, picker) {
|
||||
var label = picker.chosenLabel || '';
|
||||
var canned = cannedMap[label];
|
||||
|
||||
if (canned) {
|
||||
$canned.val(canned);
|
||||
$dtf.val('');
|
||||
$dtt.val('');
|
||||
} else {
|
||||
$canned.val('custom');
|
||||
$dtf.val(picker.startDate.format('YYYY-MM-DD'));
|
||||
$dtt.val(picker.endDate.format('YYYY-MM-DD'));
|
||||
}
|
||||
|
||||
setDisplay(picker.startDate, picker.endDate, label);
|
||||
|
||||
// Auto-submit form
|
||||
this.form.submit();
|
||||
});
|
||||
});
|
||||
})(jQuery, window);
|
||||
Reference in New Issue
Block a user