132 lines
5.9 KiB
TypeScript
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();
|