UNPKG

nakedobjects.spa

Version:

Single Page Application client for a Naked Objects application.

170 lines 10.9 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import * as Models from './models'; import { ContextService } from './context.service'; import { UrlManagerService } from './url-manager.service'; import { ColorService } from './color.service'; import { ClickHandlerService } from './click-handler.service'; import { ErrorService } from './error.service'; import { MaskService } from './mask.service'; import { Injectable } from '@angular/core'; import { AttachmentViewModel } from './view-models/attachment-view-model'; import { ErrorViewModel } from './view-models/error-view-model'; import { LinkViewModel } from './view-models/link-view-model'; import { ItemViewModel } from './view-models/item-view-model'; import { RecentItemViewModel } from './view-models/recent-item-view-model'; import { TableRowColumnViewModel } from './view-models/table-row-column-view-model'; import { TableRowViewModel } from './view-models/table-row-view-model'; import { RecentItemsViewModel } from './view-models/recent-items-view-model'; import { ParameterViewModel } from './view-models/parameter-view-model'; import { ActionViewModel } from './view-models/action-view-model'; import { PropertyViewModel } from './view-models/property-view-model'; import { CollectionViewModel } from './view-models/collection-view-model'; import { MenuViewModel } from './view-models/menu-view-model'; import { MenusViewModel } from './view-models/menus-view-model'; import { ListViewModel } from './view-models/list-view-model'; import { DialogViewModel } from './view-models/dialog-view-model'; import { DomainObjectViewModel } from './view-models/domain-object-view-model'; import { MultiLineDialogViewModel } from './view-models/multi-line-dialog-view-model'; import { ConfigService } from './config.service'; import { LoggerService } from './logger.service'; import { ApplicationPropertiesViewModel } from './view-models/application-properties-view-model'; import { CiceroCommandFactoryService } from './cicero-command-factory.service'; import { CiceroRendererService } from './cicero-renderer.service'; import forEach from 'lodash/forEach'; import map from 'lodash/map'; import find from 'lodash/find'; var ViewModelFactoryService = (function () { function ViewModelFactoryService(context, urlManager, color, error, clickHandler, mask, configService, loggerService, commandFactory, ciceroRenderer) { var _this = this; this.context = context; this.urlManager = urlManager; this.color = color; this.error = error; this.clickHandler = clickHandler; this.mask = mask; this.configService = configService; this.loggerService = loggerService; this.commandFactory = commandFactory; this.ciceroRenderer = ciceroRenderer; this.errorViewModel = function (error) { return new ErrorViewModel(error); }; this.attachmentViewModel = function (propertyRep, paneId) { var link = propertyRep.attachmentLink(); if (link) { var parent_1 = propertyRep.parent; return new AttachmentViewModel(link, parent_1, _this.context, _this.error, paneId); } return null; }; this.linkViewModel = function (linkRep, paneId) { return new LinkViewModel(_this.context, _this.color, _this.error, _this.urlManager, _this.configService, linkRep, paneId); }; this.itemViewModel = function (linkRep, paneId, selected, index, id) { return new ItemViewModel(_this.context, _this.color, _this.error, _this.urlManager, _this.configService, linkRep, paneId, _this.clickHandler, _this, index, selected, id); }; this.recentItemViewModel = function (obj, linkRep, paneId, selected, index) { return new RecentItemViewModel(_this.context, _this.color, _this.error, _this.urlManager, _this.configService, linkRep, paneId, _this.clickHandler, _this, index, selected, obj.extensions().friendlyName()); }; this.actionViewModel = function (actionRep, vm, routeData) { return new ActionViewModel(_this, _this.context, _this.urlManager, _this.error, _this.clickHandler, actionRep, vm, routeData); }; this.propertyTableViewModel = function (id, propertyRep) { return propertyRep ? new TableRowColumnViewModel(id, propertyRep, _this.mask) : new TableRowColumnViewModel(id); }; this.propertyViewModel = function (propertyRep, id, previousValue, paneId, parentValues) { return new PropertyViewModel(propertyRep, _this.color, _this.error, _this, _this.context, _this.mask, _this.urlManager, _this.clickHandler, _this.configService, id, previousValue, paneId, parentValues); }; this.dialogViewModel = function (routeData, action, actionViewModel, isRow, row) { return new DialogViewModel(_this.color, _this.context, _this, _this.urlManager, _this.error, routeData, action, actionViewModel, isRow, row); }; this.multiLineDialogViewModel = function (routeData, action, holder) { return new MultiLineDialogViewModel(_this.color, _this.context, _this, _this.urlManager, _this.error, routeData, action, holder); }; this.domainObjectViewModel = function (obj, routeData, forceReload) { var ovm = new DomainObjectViewModel(_this.color, _this.context, _this, _this.urlManager, _this.error, _this.configService, obj, routeData, forceReload); if (forceReload) { ovm.clearCachedFiles(); } return ovm; }; this.listViewModel = function (list, routeData) { return new ListViewModel(_this.color, _this.context, _this, _this.urlManager, _this.error, _this.loggerService, list, routeData); }; this.parameterViewModel = function (parmRep, previousValue, paneId) { return new ParameterViewModel(parmRep, paneId, _this.color, _this.error, _this.mask, previousValue, _this, _this.context, _this.configService); }; this.collectionViewModel = function (collectionRep, routeData, forceReload) { return new CollectionViewModel(_this, _this.color, _this.error, _this.context, _this.urlManager, _this.configService, _this.loggerService, collectionRep, routeData, forceReload); }; this.menuViewModel = function (menuRep, routeData) { return new MenuViewModel(_this, menuRep, routeData); }; this.menusViewModel = function (menusRep, routeData) { return new MenusViewModel(_this, menusRep, routeData.paneId); }; this.recentItemsViewModel = function (paneId) { return new RecentItemsViewModel(_this, _this.context, _this.urlManager, paneId); }; this.tableRowViewModel = function (properties, paneId, title) { return new TableRowViewModel(_this, properties, paneId, title); }; this.applicationPropertiesViewModel = function () { return new ApplicationPropertiesViewModel(_this.context, _this.error, _this.configService); }; this.getItems = function (links, tableView, routeData, listViewModel) { var collection = listViewModel instanceof CollectionViewModel ? listViewModel : null; var id = collection ? collection.name : ""; var selectedItems = routeData.selectedCollectionItems[id]; var items = map(links, function (link, i) { return _this.itemViewModel(link, routeData.paneId, selectedItems && selectedItems[i], i, id); }); if (tableView) { var getActionExtensions = routeData.objectId ? function () { return _this.context.getActionExtensionsFromObject(routeData.paneId, Models.ObjectIdWrapper.fromObjectId(routeData.objectId, _this.configService.config.keySeparator), routeData.actionId); } : function () { return _this.context.getActionExtensionsFromMenu(routeData.menuId, routeData.actionId); }; var getExtensions = listViewModel instanceof CollectionViewModel ? function () { return Promise.resolve(listViewModel.collectionRep.extensions()); } : getActionExtensions; // clear existing header listViewModel.header = null; if (items.length > 0) { getExtensions(). then(function (ext) { forEach(items, function (itemViewModel) { itemViewModel.tableRowViewModel.conformColumns(ext.tableViewTitle(), ext.tableViewColumns()); }); if (!listViewModel.header) { var firstItem_1 = items[0].tableRowViewModel; var propertiesHeader = map(firstItem_1.properties, function (p, i) { var match = find(items, function (item) { return item.tableRowViewModel.properties[i].title; }); return match ? match.tableRowViewModel.properties[i].title : firstItem_1.properties[i].id; }); listViewModel.header = firstItem_1.showTitle ? [""].concat(propertiesHeader) : propertiesHeader; } }). catch(function (reject) { return _this.error.handleError(reject); }); } } return items; }; } return ViewModelFactoryService; }()); ViewModelFactoryService = __decorate([ Injectable(), __metadata("design:paramtypes", [ContextService, UrlManagerService, ColorService, ErrorService, ClickHandlerService, MaskService, ConfigService, LoggerService, CiceroCommandFactoryService, CiceroRendererService]) ], ViewModelFactoryService); export { ViewModelFactoryService }; //# sourceMappingURL=view-model-factory.service.js.map