ferngully-aurelia-tools
Version:
Ferngully Tools for Aurelia
161 lines • 5.61 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import { autoinject } from "aurelia-framework";
import * as moment from "moment";
import { ConfigurationService } from "./configuration-service";
let DateService = class DateService {
constructor(configService) {
this.configService = configService;
this.localTimezoneOffset = moment().utcOffset();
}
createMoment(date, utc = false) {
let m = date ? moment(date) : moment();
if (utc) {
m = this.momentToUTC(m);
}
return m;
}
createMomentFromString(str, format, utc = false) {
let m = moment(str, format, true);
if (utc) {
m = this.momentToUTC(m);
}
return m;
}
createMomentFromTicks(ticks, utc = false) {
let m = moment(ticks);
if (utc) {
m = this.momentToUTC(m);
}
return m;
}
configure() {
this.formats = new Map();
let formatArray = this.configService.get("date-service.formats");
for (let format of formatArray) {
this.formats.set(format.key, format.format);
}
}
get tomorrow() {
var tomorrow = this.createMoment().add(1, 'days');
var dtTomorrow = new Date(tomorrow.year(), tomorrow.month(), tomorrow.date());
return dtTomorrow;
}
get today() {
var today = this.createMoment();
var dtToday = new Date(today.year(), today.month(), today.date());
return dtToday;
}
get utcNow() {
return this.createMoment(undefined, true).toDate();
}
translateUtcToLocal(d) {
return this.createMoment(d).subtract(this.localTimezoneOffset, "minutes").toDate();
}
translateLocalToUtc(d) {
return this.createMoment(d).add(this.localTimezoneOffset, "minutes").toDate();
}
convertFormat(dateString, paramsFrom, paramsTo) {
if (paramsFrom === paramsTo) {
return dateString;
}
return this.createMomentFromString(dateString, this.getSafeParams(paramsFrom).format).format(this.getSafeParams(paramsTo).format);
}
ticksToString(ticks, params) {
if (!ticks) {
return "";
}
let d = this.createMomentFromTicks(ticks).toDate();
return this.toString(d, params);
}
ticksToDate(ticks) {
if (!ticks) {
return null;
}
return this.createMomentFromTicks(ticks).toDate();
}
dateStringToTicks(dtString, params) {
if (!dtString) {
return 0;
}
let parms = this.getSafeParams(params);
return this.createMomentFromString(dtString, parms.format).valueOf();
}
dateToTicks(dt) {
if (!dt) {
return 0;
}
return this.createMoment(dt).valueOf();
}
toString(dt, params) {
if (!dt) {
return null;
}
let parms = this.getSafeParams(params);
return this.createMoment(dt, parms.utc).format(parms.format);
}
toISOString(dt) {
if (!dt) {
return null;
}
return this.createMoment(dt).toISOString();
}
fromISOString(str) {
if (!str) {
return null;
}
return this.createMomentFromString(str).toDate();
}
nameofDay(day) {
return moment.weekdays(day);
}
momentToUTC(m) {
return m.utc();
}
fromString(str, params) {
if (!str) {
return null;
}
let parms = this.getSafeParams(params);
return this.createMomentFromString(str, parms.format).toDate();
}
nextInstanceOfDay(dayTarget, includeToday = false) {
let today = this.today;
let dayToday = today.getDay();
if ((dayToday === dayTarget) && includeToday) {
return today;
}
let weeklen = dayTarget > dayToday ? 0 : 7;
let nextInstance = this.createMoment(today).add(weeklen + dayTarget - dayToday, "days");
return new Date(nextInstance.year(), nextInstance.month(), nextInstance.date());
}
getSafeParams(params) {
if (!params) {
return {};
}
if (typeof (params) === "string") {
return { format: this.formats.get(params) || params };
}
else {
let parms = params;
let format = parms.format ? this.formats.get(parms.format) || parms.format : undefined;
return {
utc: parms.utc,
format: format
};
}
}
};
DateService = __decorate([
autoinject,
__metadata("design:paramtypes", [ConfigurationService])
], DateService);
export { DateService };
//# sourceMappingURL=date-service.js.map