nakedobjects.spa
Version:
Single Page Application client for a Naked Objects application.
170 lines • 10.9 kB
JavaScript
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