UNPKG

@nakedobjects/gemini

Version:

Single Page Application client for a Naked Objects application.

51 lines 9.42 kB
import { Injectable } from '@angular/core'; import { TypeResultCache, ViewType, ClientErrorCode, ErrorCategory, HttpStatusCode } from '@nakedobjects/services'; import { ErrorComponent } from './error/error.component'; import { ListComponent } from './list/list.component'; import { ObjectComponent } from './object/object.component'; import * as i0 from "@angular/core"; import * as i1 from "@nakedobjects/services"; import * as i2 from "./custom-component-config.service"; class CustomComponentCache extends TypeResultCache { constructor(context, def) { super(context); this.setDefault(def); } } export class CustomComponentService { context; config; constructor(context, config) { this.context = context; this.config = config; this.customComponentCaches = []; this.customComponentCaches[ViewType.Object] = new CustomComponentCache(context, ObjectComponent); this.customComponentCaches[ViewType.List] = new CustomComponentCache(context, ListComponent); this.customComponentCaches[ViewType.Error] = new CustomComponentCache(context, ErrorComponent); config.configureCustomObjects(this.customComponentCaches[ViewType.Object]); config.configureCustomLists(this.customComponentCaches[ViewType.List]); config.configureCustomErrors(this); } customComponentCaches = []; getErrorKey(rc, code) { const key = `${ErrorCategory[rc]}-${rc === ErrorCategory.ClientError ? ClientErrorCode[code] : HttpStatusCode[code]}`; return key; } getCustomComponent(domainType, viewType) { return this.customComponentCaches[viewType].getResult(domainType); } getCustomErrorComponent(rc, code) { const key = this.getErrorKey(rc, code); return this.customComponentCaches[ViewType.Error].getResult(key); } addError(rc, code, result) { const key = this.getErrorKey(rc, code); this.customComponentCaches[ViewType.Error].addType(key, result); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomComponentService, deps: [{ token: i1.ContextService }, { token: i2.CustomComponentConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomComponentService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomComponentService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.ContextService }, { type: i2.CustomComponentConfigService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZ2VtaW5pL3NyYy9jdXN0b20tY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWtCLGVBQWUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQWdCNUQsTUFBTSxvQkFBcUIsU0FBUSxlQUE4QjtJQUU3RCxZQUFZLE9BQXVCLEVBQUUsR0FBa0I7UUFDbkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUFHRCxNQUFNLE9BQU8sc0JBQXNCO0lBR1Y7SUFDQTtJQUZyQixZQUNxQixPQUF1QixFQUN2QixNQUFvQztRQURwQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUE4QjtRQUVyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksb0JBQW9CLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRS9GLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVnQixxQkFBcUIsR0FBMkIsRUFBRSxDQUFDO0lBRTVELFdBQVcsQ0FBQyxFQUFpQixFQUFFLElBQXNDO1FBQ3pFLE1BQU0sR0FBRyxHQUFHLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RILE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELGtCQUFrQixDQUFDLFVBQWtCLEVBQUUsUUFBMEQ7UUFDN0YsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxFQUFpQixFQUFFLElBQXNDO1FBQzdFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFpQixFQUFFLElBQXNDLEVBQUUsTUFBcUI7UUFDckYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7dUdBbkNRLHNCQUFzQjsyR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIFR5cGVSZXN1bHRDYWNoZSwgVmlld1R5cGUsIENsaWVudEVycm9yQ29kZSwgRXJyb3JDYXRlZ29yeSwgSHR0cFN0YXR1c0NvZGUgfSBmcm9tICdAbmFrZWRvYmplY3RzL3NlcnZpY2VzJztcbmltcG9ydCB7IEN1c3RvbUNvbXBvbmVudENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2N1c3RvbS1jb21wb25lbnQtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL2Vycm9yL2Vycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9saXN0L2xpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE9iamVjdENvbXBvbmVudCB9IGZyb20gJy4vb2JqZWN0L29iamVjdC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDdXN0b21Db21wb25lbnRDb25maWd1cmF0b3Ige1xuICAgIGFkZFR5cGU6ICh0eXBlOiBzdHJpbmcsIHJlc3VsdDogVHlwZTx1bmtub3duPikgPT4gdm9pZDtcblxuICAgIGFkZE1hdGNoOiAobWF0Y2hlcjogUmVnRXhwLCByZXN1bHQ6IFR5cGU8dW5rbm93bj4pID0+IHZvaWQ7XG5cbiAgICBhZGRTdWJ0eXBlOiAodHlwZTogc3RyaW5nLCByZXN1bHQ6IFR5cGU8dW5rbm93bj4pID0+IHZvaWQ7XG5cbiAgICBzZXREZWZhdWx0OiAoZGVmOiBUeXBlPHVua25vd24+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDdXN0b21FcnJvckNvbXBvbmVudENvbmZpZ3VyYXRvciB7XG4gICAgYWRkRXJyb3IocmM6IEVycm9yQ2F0ZWdvcnksIGNvZGU6IEh0dHBTdGF0dXNDb2RlIHwgQ2xpZW50RXJyb3JDb2RlLCByZXN1bHQ6IFR5cGU8dW5rbm93bj4pOiB2b2lkO1xufVxuXG5jbGFzcyBDdXN0b21Db21wb25lbnRDYWNoZSBleHRlbmRzIFR5cGVSZXN1bHRDYWNoZTxUeXBlPHVua25vd24+PiBpbXBsZW1lbnRzIElDdXN0b21Db21wb25lbnRDb25maWd1cmF0b3Ige1xuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDogQ29udGV4dFNlcnZpY2UsIGRlZjogVHlwZTx1bmtub3duPikge1xuICAgICAgICBzdXBlcihjb250ZXh0KTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0KGRlZik7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29tcG9uZW50U2VydmljZSBpbXBsZW1lbnRzIElDdXN0b21FcnJvckNvbXBvbmVudENvbmZpZ3VyYXRvciB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0OiBDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEN1c3RvbUNvbXBvbmVudENvbmZpZ1NlcnZpY2UpIHtcblxuICAgICAgICB0aGlzLmN1c3RvbUNvbXBvbmVudENhY2hlcyA9IFtdO1xuICAgICAgICB0aGlzLmN1c3RvbUNvbXBvbmVudENhY2hlc1tWaWV3VHlwZS5PYmplY3RdID0gbmV3IEN1c3RvbUNvbXBvbmVudENhY2hlKGNvbnRleHQsIE9iamVjdENvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50Q2FjaGVzW1ZpZXdUeXBlLkxpc3RdID0gbmV3IEN1c3RvbUNvbXBvbmVudENhY2hlKGNvbnRleHQsIExpc3RDb21wb25lbnQpO1xuICAgICAgICB0aGlzLmN1c3RvbUNvbXBvbmVudENhY2hlc1tWaWV3VHlwZS5FcnJvcl0gPSBuZXcgQ3VzdG9tQ29tcG9uZW50Q2FjaGUoY29udGV4dCwgRXJyb3JDb21wb25lbnQpO1xuXG4gICAgICAgIGNvbmZpZy5jb25maWd1cmVDdXN0b21PYmplY3RzKHRoaXMuY3VzdG9tQ29tcG9uZW50Q2FjaGVzW1ZpZXdUeXBlLk9iamVjdF0pO1xuICAgICAgICBjb25maWcuY29uZmlndXJlQ3VzdG9tTGlzdHModGhpcy5jdXN0b21Db21wb25lbnRDYWNoZXNbVmlld1R5cGUuTGlzdF0pO1xuICAgICAgICBjb25maWcuY29uZmlndXJlQ3VzdG9tRXJyb3JzKHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tQ29tcG9uZW50Q2FjaGVzOiBDdXN0b21Db21wb25lbnRDYWNoZVtdID0gW107XG5cbiAgICBwcml2YXRlIGdldEVycm9yS2V5KHJjOiBFcnJvckNhdGVnb3J5LCBjb2RlOiBIdHRwU3RhdHVzQ29kZSB8IENsaWVudEVycm9yQ29kZSkge1xuICAgICAgICBjb25zdCBrZXkgPSBgJHtFcnJvckNhdGVnb3J5W3JjXX0tJHtyYyA9PT0gRXJyb3JDYXRlZ29yeS5DbGllbnRFcnJvciA/IENsaWVudEVycm9yQ29kZVtjb2RlXSA6IEh0dHBTdGF0dXNDb2RlW2NvZGVdfWA7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgZ2V0Q3VzdG9tQ29tcG9uZW50KGRvbWFpblR5cGU6IHN0cmluZywgdmlld1R5cGU6IFZpZXdUeXBlLk9iamVjdCB8IFZpZXdUeXBlLkxpc3QgfCBWaWV3VHlwZS5FcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21Db21wb25lbnRDYWNoZXNbdmlld1R5cGVdLmdldFJlc3VsdChkb21haW5UeXBlKTtcbiAgICB9XG5cbiAgICBnZXRDdXN0b21FcnJvckNvbXBvbmVudChyYzogRXJyb3JDYXRlZ29yeSwgY29kZTogSHR0cFN0YXR1c0NvZGUgfCBDbGllbnRFcnJvckNvZGUpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFcnJvcktleShyYywgY29kZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbUNvbXBvbmVudENhY2hlc1tWaWV3VHlwZS5FcnJvcl0uZ2V0UmVzdWx0KGtleSk7XG4gICAgfVxuXG4gICAgYWRkRXJyb3IocmM6IEVycm9yQ2F0ZWdvcnksIGNvZGU6IEh0dHBTdGF0dXNDb2RlIHwgQ2xpZW50RXJyb3JDb2RlLCByZXN1bHQ6IFR5cGU8dW5rbm93bj4pIHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRFcnJvcktleShyYywgY29kZSk7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29tcG9uZW50Q2FjaGVzW1ZpZXdUeXBlLkVycm9yXS5hZGRUeXBlKGtleSwgcmVzdWx0KTtcbiAgICB9XG59XG4iXX0=