uc-base-libraries
Version:
Typescript libraries for UC projects
162 lines • 6.47 kB
JavaScript
System.register(["./Tasks", "./ApiLibrary", "./EventHandler"], function (exports_1, context_1) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var Tasks, ApiLibrary, EventHandler, ServerTime, serverTime;
var __moduleName = context_1 && context_1.id;
function dateFromIso8601(isostr) {
if (isostr == null) {
return new Date();
}
const parts = isostr.match(/\d+/g);
if (parts.length < 6) {
return new Date();
}
const y = parseInt(parts[0], 10);
const m = parseInt(parts[1], 10) - 1;
const d = parseInt(parts[2], 10);
const h = parseInt(parts[3], 10);
const mn = parseInt(parts[4], 10);
const s = parseInt(parts[5], 10);
return new Date(y, m, d, h, mn, s);
}
exports_1("dateFromIso8601", dateFromIso8601);
function formatTimeSpan(ts) {
if (ts <= 0) {
return '';
}
const ms = ts - Math.floor(ts);
ts = ts - ms;
let second = ts % 60;
ts = ts - second;
second = second + ms;
ts = ts / 60;
const minute = ts % 60;
ts = ts - minute;
ts = ts / 60;
const hour = Math.floor(ts);
let shour = '' + hour;
let sminute = '' + minute;
let ssecond = '' + Math.round(second * 1000) / 1000;
if (hour < 10) {
shour = '0' + shour;
}
if (minute < 10) {
sminute = '0' + sminute;
}
if (second < 10) {
ssecond = '0' + ssecond;
}
return shour + ':' + sminute + ':' + ssecond;
}
exports_1("formatTimeSpan", formatTimeSpan);
function formatDate(dt) {
const currDate = dt.getDate();
const currMonth = dt.getMonth() + 1;
const currYear = dt.getFullYear();
return '' + currMonth + '/' + currDate + '/' + currYear;
}
exports_1("formatDate", formatDate);
function formatTime(dt, hideMs) {
hideMs = !!hideMs;
let hour = dt.getHours();
const minute = dt.getMinutes();
const second = dt.getSeconds();
const ms = dt.getMilliseconds();
let ampm = 'AM';
if (hour > 11) {
hour = hour - 12;
ampm = 'PM';
}
if (hour === 0) {
hour = 12;
}
let sminute = '' + minute;
let ssecond = '' + second;
if (minute < 10) {
sminute = '0' + sminute;
}
if (second < 10) {
ssecond = '0' + ssecond;
}
return hour + ':' + sminute + (hideMs ? '' : ':' + ssecond) + ' ' + ampm + (hideMs ? '' : ':' + ms);
}
exports_1("formatTime", formatTime);
function getTimeCount() {
const Now = new Date();
const Cnt = Math.round(Now.getTime());
return Cnt;
}
exports_1("getTimeCount", getTimeCount);
return {
setters: [
function (Tasks_1) {
Tasks = Tasks_1;
},
function (ApiLibrary_1) {
ApiLibrary = ApiLibrary_1;
},
function (EventHandler_1) {
EventHandler = EventHandler_1;
}
],
execute: function () {
Date.prototype.addDays = function (days) {
const dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
};
Date.prototype.formatDate = function () {
return formatDate(this);
};
Date.prototype.formatTime = function (hideMs) {
return formatTime(this, hideMs);
};
ServerTime = class ServerTime {
constructor(timeApiUrl) {
this.timeApiUrl = timeApiUrl;
this.serverStartTime = null;
this.startTime = new Date();
this.serverDateTime = null;
this.offset = 0;
this.serverTimeLoaded = false;
this.raiseMessageEvent = new EventHandler.EventHandler();
this.init = () => __awaiter(this, void 0, void 0, function* () {
yield Tasks.whenReady();
yield Tasks.delay(10);
yield this.refreshServerTime();
this.raiseMessageEvent.trigger('Time Loaded from Server');
});
this.now = () => {
return new Date();
};
this.refreshServerTime = () => __awaiter(this, void 0, void 0, function* () {
const URL = this.timeApiUrl;
const data = yield ApiLibrary.getCallAsync(URL);
const sdt = new Date(Date.parse(data.item.date));
sdt.setTime(sdt.getTime() + data.item.milliseconds);
this.serverDateTime = sdt;
const ldt = new Date();
this.offset = this.serverDateTime.getTime() - ldt.getTime();
this.serverTimeLoaded = true;
this.raiseMessageEvent.trigger('ServerDateTime = ' + formatTime(this.serverDateTime));
this.raiseMessageEvent.trigger('LocalDateTime = ' + formatTime(ldt));
this.raiseMessageEvent.trigger(`Offset = ${this.offset}`);
return;
});
this.init();
}
};
exports_1("ServerTime", ServerTime);
exports_1("serverTime", serverTime = new ServerTime('/api/v1/Time'));
}
};
});
//# sourceMappingURL=DateTime.js.map