132 lines
5.9 KiB
TypeScript

import { Global } from "./Globals"
import * as Utility from "./Utility"
import { Forms } from "./Forms"
import * as JqueryExtensions from "./JQueryExtensions"
import { loadCldr, setCulture, L10n } from "@syncfusion/ej2-base";
import * as Localization from "./Localization";
import LocalizationManager = Localization.LocalizationManager;
import LocalizationSource = Localization.LocalizationSource;
/**
* Hilfklasse die alle notwendigen Basis-Moldule lädt und initialisiert
*/
class BootStrapper {
private _global: Global;
private _initialized: boolean = false;
private _forms: Forms;
constructor() {
this._global = Global.getInstance();
this._global.appInitialized = false;
if (!this._initialized) {
//this.init();
this._forms = Forms.getInstance("is-invalid", "is-valid");
this._forms.resetValidation();
JqueryExtensions.extendJQueryStatic();
}
}
public async init() {
var self = this;
if (!self._initialized) {
var currentCulture = $("html").prop("lang");
var localizationManager = LocalizationManager.getInstance();
if (currentCulture) {
setCulture(currentCulture);
var version = $("#jsVersion").val();
const getClientLocalizationPromise = $.getJSON($("#jsGetResourcesClientUrl").val().toString());
const getTextLocalizationPromise = $.getJSON($("#jsGetResourcesTextUrl").val().toString());
const getAnnotationsLocalizationPromise = $.getJSON($("#jsGetResourcesAnnotationsUrl").val().toString());
const getCldrGregorianPromise = $.get(`/lib/cldr-data/main/${currentCulture}/ca-gregorian.json?v=${version}`);
const getCldrNumbersPromise = $.get(`/lib/cldr-data/main/${currentCulture}/numbers.json?v=${version}`);
const getCldrTimezoneNamesPromise = $.get(`/lib/cldr-data/main/${currentCulture}/timeZoneNames.json?v=${version}`);
const getCldrSubtagsPromise = $.get(`/lib/cldr-data/supplemental/likelySubtags.json?v=${version}`);
const getCldrTimeDataPromise = $.get(`/lib/cldr-data/supplemental/timeData.json?v=${version}`);
const getCldrWeekDataPromise = $.get(`/lib/cldr-data/supplemental/weekData.json?v=${version}`);
const getCldrNumberingPromise = $.get(`/lib/cldr-data/supplemental/numberingSystems.json?v=${version}`);
const getCldrEj2LocalePromise = $.get(`/lib/ej2-locale/${currentCulture}.json?v=${version}`);
const getClientLocalization = await getClientLocalizationPromise;
const getTextLocalization = await getTextLocalizationPromise;
const getAnnotationsLocalization = await getAnnotationsLocalizationPromise;
const getCldrGregorian = await getCldrGregorianPromise;
const getCldrNumbers = await getCldrNumbersPromise;
const getCldrTimeZoneNames = await getCldrTimezoneNamesPromise;
const getCldrSubtags = await getCldrSubtagsPromise;
const getCldrTimeData = await getCldrTimeDataPromise;
const getCldrWeekData = await getCldrWeekDataPromise;
const getCldrNumbering = await getCldrNumberingPromise;
const getCldrEj2Locale = await getCldrEj2LocalePromise;
localizationManager.setData(getClientLocalization, LocalizationSource.Client);
localizationManager.setData(getTextLocalization, LocalizationSource.Text);
localizationManager.setData(getAnnotationsLocalization, LocalizationSource.Annotations);
loadCldr(getCldrGregorian);
loadCldr(getCldrNumbers);
loadCldr(getCldrTimeZoneNames);
loadCldr(getCldrSubtags);
loadCldr(getCldrTimeData);
loadCldr(getCldrWeekData);
loadCldr(getCldrNumbering);
L10n.load(getCldrEj2Locale);
Globalize.load(getCldrGregorian);
Globalize.load(getCldrNumbers);
Globalize.load(getCldrSubtags);
Globalize.load(getCldrTimeData);
Globalize.load(getCldrWeekData);
Globalize.load(getCldrNumbering);
Globalize.locale(currentCulture);
// Normalize $.get results, we only need the JSON, not the request statuses.
//return [].slice.apply(arguments, [0]).map(result => result[0]);
}
//Zeitzonen setzen
var offset = Utility.getTimezoneOffsetInHours();
$("input[name='jsTimezoneId']").each(function () {
$(this).val(offset);
});
//Polyfill Object.values
(<any>Object).values = (<any>Object).values ? (<any>Object).values : function (obj) {
var allowedTypes = ["[object String]", "[object Object]", "[object Array]", "[object Function]"];
var objType = Object.prototype.toString.call(obj);
if (obj === null || typeof obj === "undefined") {
throw new TypeError("Cannot convert undefined or null to object");
} else if (!~allowedTypes.indexOf(objType)) {
return [];
} else {
// if ES6 is supported
if (Object.keys) {
return Object.keys(obj).map(function (key) {
return obj[key];
});
}
var result = [];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
result.push(obj[prop]);
}
}
return result;
}
};
self._initialized = true;
}
}
}
export let bootStrapper: BootStrapper = new BootStrapper();