openstamanager/assets/src/js/functions/dates.js

153 lines
5.5 KiB
JavaScript
Executable File

/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
function getCalendarIcons() {
return {
time: 'fa fa-clock-o',
date: 'fa fa-calendar',
up: 'fa fa-chevron-up',
down: 'fa fa-chevron-down',
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right',
today: 'fa fa-street-view',
clear: 'fa fa-trash',
close: 'fa fa-times'
};
}
function initDateInput(input) {
let date_format = dateFormatMoment(globals.date_format);
let calendar_icons = getCalendarIcons();
let $input = $(input);
$(input).datetimepicker({
format: date_format,
locale: globals.locale,
icons: calendar_icons,
useCurrent: false,
minDate: moment($input.attr('min-date')).isValid() ? $input.attr('min-date') : false,
maxDate: moment($input.attr('max-date')).isValid() ? $input.attr('max-date') : false,
});
return true;
}
function initTimestampInput(input) {
let $input = $(input);
let timestamp_format = dateFormatMoment(globals.timestamp_format);
let calendar_icons = getCalendarIcons();
$input.datetimepicker({
format: timestamp_format,
locale: globals.locale,
icons: calendar_icons,
collapse: false,
sideBySide: true,
useCurrent: false,
stepping: 5,
widgetPositioning: {
horizontal: 'left',
vertical: 'auto'
},
minDate: moment($input.attr('min-date')).isValid() ? $input.attr('min-date') : false,
maxDate: moment($input.attr('max-date')).isValid() ? $input.attr('max-date') : false,
});
// fix per timestamp-picker non visibile con la classe table-responsive
$input.on("dp.show", function (e) {
$('#tecnici > div').removeClass('table-responsive');
});
$input.on("dp.hide", function (e) {
$('#tecnici > div').addClass('table-responsive');
});
return true;
}
function initTimeInput(input) {
let $input = $(input);
let time_format = dateFormatMoment(globals.time_format);
let calendar_icons = getCalendarIcons();
$input.datetimepicker({
format: time_format,
locale: globals.locale,
icons: calendar_icons,
useCurrent: false,
stepping: 5,
minDate: moment($input.attr('min-date')).isValid() ? $input.attr('min-date') : false,
maxDate: moment($input.attr('max-date')).isValid() ? $input.attr('max-date') : false,
});
return true;
}
/**
* @deprecated
*/
function start_datepickers() {
$('.timestamp-picker').each(function () {
input(this);
});
$('.datepicker').each(function () {
input(this);
});
$('.timepicker').each(function () {
input(this);
});
}
function start_complete_calendar(id, callback) {
var ranges = {};
ranges[globals.translations.today] = [moment(), moment()];
ranges[globals.translations.firstThreemester] = [moment("01", "MM"), moment("03", "MM").endOf('month')];
ranges[globals.translations.secondThreemester] = [moment("04", "MM"), moment("06", "MM").endOf('month')];
ranges[globals.translations.thirdThreemester] = [moment("07", "MM"), moment("09", "MM").endOf('month')];
ranges[globals.translations.fourthThreemester] = [moment("10", "MM"), moment("12", "MM").endOf('month')];
ranges[globals.translations.firstSemester] = [moment("01", "MM"), moment("06", "MM").endOf('month')];
ranges[globals.translations.secondSemester] = [moment("06", "MM"), moment("12", "MM").endOf('month')];
ranges[globals.translations.thisMonth] = [moment().startOf('month'), moment().endOf('month')];
ranges[globals.translations.lastMonth] = [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')];
ranges[globals.translations.nextMonth] = [moment().add(1, 'month').startOf('month'), moment().add(1, 'month').endOf('month')];
ranges[globals.translations.thisYear] = [moment().startOf('year'), moment().endOf('year')];
ranges[globals.translations.lastYear] = [moment().subtract(1, 'year').startOf('year'), moment().subtract(1, 'year').endOf('year')];
var format = dateFormatMoment(globals.date_format);
$(id).daterangepicker({
locale: {
format: format,
customRangeLabel: globals.translations.custom,
applyLabel: globals.translations.apply,
cancelLabel: globals.translations.cancel,
fromLabel: globals.translations.from,
toLabel: globals.translations.to,
},
ranges: ranges,
startDate: globals.start_date_formatted,
endDate: globals.end_date_formatted,
applyClass: 'btn btn-success btn-sm',
cancelClass: 'btn btn-danger btn-sm',
linkedCalendars: false
},
callback
);
}