UNPKG

@genexus/web-standard-functions

Version:

GeneXus JavaScript standard functions library for web generators

117 lines 4.01 kB
import { detect as timezoneDetect, storageKey as timezoneStorageKey } from "../datetime/timezone"; import { storage } from "../common/storage"; const keyPrefix = "gx.config.configurationstate"; const keyDynPtyPrefix = "gx.config.configurationstate.dynpty"; const languageKey = "language"; const validLanguagesKey = "languages"; const defaultLanguageKey = "DEFAULT_LANGUAGE"; export class ConfigurationState { static getInstance() { if (!ConfigurationState.instance) { ConfigurationState.instance = new ConfigurationState(); ConfigurationState.instance.setDynStoredValue(timezoneStorageKey, timezoneDetect()); } return ConfigurationState.instance; } constructor() { } // Loading model properties /** * Loads settings from a JSON object * @param appSettings The JSON object containing the settings to load */ static loadApplicationSettings(appSettings) { let instance = ConfigurationState.getInstance(); for (let key in appSettings) { instance.setDynStoredValue(key, appSettings[key]); } if (instance.getLanguage() == null) { let defaultLanguage = instance.getDynStoredValue(defaultLanguageKey); if (defaultLanguage != null) { instance.setStoredValue(validLanguagesKey, defaultLanguage); instance.setLanguage(defaultLanguage); } } let timeFromUTC = appSettings["convertTimeFromUTC"]; if (timeFromUTC !== null) { instance.setStoredValue("convertTimeFromUTC", timeFromUTC); } } /** * Loads properties from the environment */ loadProperties(props) { this.setStoredValue(validLanguagesKey, props[validLanguagesKey]); this.setLanguage(props[languageKey]); } // Language /** * Returns the name of the currently active Language object */ getLanguage() { return this.getStoredValue(languageKey); } /** * Sets the language to display literals in your application * @param lang The language to set * @returns 0 if the language can be set, a value greater than 0 if it cannot be set */ setLanguage(lang) { if (this.supportedLanguages().includes(lang)) { this.setStoredValue(languageKey, lang); return 0; } else { return 1; } } getConvertTimeFromUTC() { return Boolean(this.getStoredValue("convertTimeFromUTC")); } supportedLanguages() { let languages = this.getStoredValue(validLanguagesKey); return languages ? languages.split(",") : []; } // Generic Properties /** * Returns generic property value as String */ getProperty(pty) { return this.getDynStoredValue(pty) || ""; } /** * Sets a generic property * @param ptyName * @param ptyValue */ setProperty(ptyName, ptyValue) { this.setDynStoredValue(ptyName, ptyValue); } // Local storage getStoredValueWithKey(storagekey) { return storage === null || storage === void 0 ? void 0 : storage.getItem(storagekey); } setStoredValueWithKey(storagekey, value) { storage === null || storage === void 0 ? void 0 : storage.setItem(storagekey, value); } // Static storage storageKey(key) { return `${keyPrefix}.${key}`; } getStoredValue(key) { return this.getStoredValueWithKey(this.storageKey(key)); } setStoredValue(key, value) { this.setStoredValueWithKey(this.storageKey(key), value); } // Dynamic storage storageDynamicKey(key) { return `${keyDynPtyPrefix}.${key}`; } getDynStoredValue(key) { return this.getStoredValueWithKey(this.storageDynamicKey(key)); } setDynStoredValue(key, value) { this.setStoredValueWithKey(this.storageDynamicKey(key), value); } } //# sourceMappingURL=configurationState.js.map