(function () { var Diller = window.Diller = window.Diller || {}; function toDate(unknown) { if (!unknown) { return undefined; } else if (moment.isMoment(unknown)) { return unknown; } else if (typeof unknown === 'string') { unknown = unknown.trim(); if (unknown == '') { return moment(); } return moment(unknown, 'YYYY-MM-DDTHH:mm.sssZ'); } else if (typeof unknown === 'string' || moment.isDate(unknown)) { return moment(unknown); } else { return undefined; } } Diller.Interval = function (from, to, level) { // console.log('Diller.Interval, from', from && from.toISOString(), 'to', to && to.toISOString(), 'level', level); var f = moment.isMoment(from) && from || moment(from), t = moment.isMoment(to) && to || moment(to); f = f.isValid() ? f : moment(); t = t.isValid() ? t : moment(); if (f && t && f.isAfter(t)) { var tmp = f; f = t; t = tmp; } var diffMs = t.diff(f); var diffMinutes = diffMs / (1000 * 60); var diffHours = diffMinutes / 60; var l = level; if (!l) { if (diffMinutes < 100) { l = 'minute'; } else if (diffHours < 100) { l = 'hour'; } else { l = 'day'; } } function getFrom() { return f; } function getTo() { return t; } function getLevel() { return l; } /** @lends Diller.Interval.prototype */ return { getFrom: getFrom, getTo: getTo, getLevel: getLevel }; }; Diller.Interval.hours = function (hours) { var to = moment(); var from = moment(to).subtract(hours, 'hours'); return new Diller.Interval(from, to); }; Diller.Interval.days = function (days) { var to = moment(); var from = moment(to).subtract(hours, 'days'); return new Diller.Interval(from, to); }; Diller.Interval.months = function (months) { var to = moment(); var from = moment(to).subtract(months, 'months'); return new Diller.Interval(from, to); }; })();