UNPKG

opendash

Version:

open.DASH data visualization framework

186 lines 9.52 kB
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 __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; import { createI18n, createState, AppFactoryLockedError, UserService, DataService, DashboardService, StorageService, NavigationService, SourceService, } from ".."; import enTranslation from "../translations/opendash_en"; import antdTranslation from "../translations/antd_en"; var AppFactory = /** @class */ (function () { function AppFactory(id) { var _this = this; this.locked = false; this.adapter = {}; this.routes = []; this.widgets = []; this.languages = []; this.translationResolver = new Map(); this.staticNavigationGroups = []; this.staticNavigationItems = []; this.id = id; this.registerTranslationResolver("en", "opendash", function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, enTranslation]; }); }); }); this.registerTranslationResolver("en", "antd", function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, antdTranslation]; }); }); }); } AppFactory.prototype.use = function (plugin) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.locked) throw new AppFactoryLockedError("use"); return [4 /*yield*/, Promise.resolve(plugin.onFactory(this))]; case 1: _a.sent(); return [2 /*return*/]; } }); }); }; AppFactory.prototype.registerLanguage = function (key, label, fallback) { if (fallback === void 0) { fallback = "en"; } if (this.locked) throw new AppFactoryLockedError("registerLanguage"); this.languages = this.languages.filter(function (lang) { return lang.key !== key; }); this.languages.push({ key: key, label: label, fallback: fallback }); }; AppFactory.prototype.registerTranslationResolver = function (language, namespace, resolver) { if (this.locked) throw new AppFactoryLockedError("registerTranslationResolver"); this.translationResolver.set([language, namespace].join(","), resolver); }; AppFactory.prototype.registerDataAdapter = function (adapter) { if (this.locked) throw new AppFactoryLockedError("registerDataAdapter"); this.adapter.Data = this.extractESModule(adapter); }; AppFactory.prototype.registerUserAdapter = function (adapter) { if (this.locked) throw new AppFactoryLockedError("registerUserAdapter"); this.adapter.User = this.extractESModule(adapter); }; AppFactory.prototype.registerDashboardAdapter = function (adapter) { if (this.locked) throw new AppFactoryLockedError("registerDashboardAdapter"); this.adapter.Dashboard = this.extractESModule(adapter); }; AppFactory.prototype.registerSourceAdapter = function (adapter) { if (this.locked) throw new AppFactoryLockedError("registerSourceAdapter"); this.adapter.Source = this.extractESModule(adapter); }; AppFactory.prototype.registerNavigationAdapter = function (adapter) { if (this.locked) throw new AppFactoryLockedError("registerNavigationAdapter"); this.adapter.Navigation = this.extractESModule(adapter); }; AppFactory.prototype.registerUserStorageAdapter = function (adapter) { if (this.locked) throw new AppFactoryLockedError("registerUserStorageAdapter"); this.adapter.UserStorage = this.extractESModule(adapter); }; AppFactory.prototype.registerDeviceStorageAdapter = function (adapter) { if (this.locked) throw new AppFactoryLockedError("registerDeviceStorageAdapter"); this.adapter.DeviceStorage = this.extractESModule(adapter); }; AppFactory.prototype.registerRoute = function (route) { if (this.locked) throw new AppFactoryLockedError("registerRoute"); this.routes.push(this.extractESModule(route)); }; AppFactory.prototype.registerWidget = function (widget) { if (this.locked) throw new AppFactoryLockedError("registerWidget"); this.widgets.push(this.extractESModule(widget)); }; AppFactory.prototype.registerStaticNavigationGroup = function (group) { if (this.locked) throw new AppFactoryLockedError("registerStaticNavigationGroup"); this.staticNavigationGroups.push(group); }; AppFactory.prototype.registerStaticNavigationItem = function (item) { if (this.locked) throw new AppFactoryLockedError("registerStaticNavigationItem"); this.staticNavigationItems.push(item); }; AppFactory.prototype.createApp = function () { var i18n = createI18n(this.languages, this.translationResolver); var state = createState(); // @ts-ignore var services = {}; var app = { id: this.id, state: state, i18n: i18n, routes: this.routes, widgets: this.widgets, services: services, ui: { refs: { headerBeforeMenuLeft: { current: null }, headerAfterMenuLeft: { current: null }, headerBeforeMenuRight: { current: null }, headerAfterMenuRight: { current: null }, headerAfterLogo: { current: null }, }, languages: this.languages, staticNavigationGroups: this.staticNavigationGroups, staticNavigationItems: this.staticNavigationItems, }, }; services.DeviceStorageService = new StorageService(app, this.adapter.DeviceStorage); services.UserService = new UserService(app, this.adapter.User); services.UserStorageService = new StorageService(app, this.adapter.UserStorage); services.SourceService = new SourceService(app, this.adapter.Source); services.DashboardService = new DashboardService(app, this.adapter.Dashboard); services.NavigationService = new NavigationService(app, this.adapter.Navigation); services.DataService = new DataService(app, this.adapter.Data); return app; }; AppFactory.prototype.extractESModule = function (input) { // @ts-ignore if (input.default) { // @ts-ignore return input.default; } return input; }; return AppFactory; }()); export { AppFactory }; //# sourceMappingURL=AppFactory.js.map