2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 * Created by rcohen on 9/22/2016.
23 /// <reference path="../../../../references"/>
24 module Sdc.ViewModels {
26 import tree = d3.layout.tree;
28 export class SortTableDefined {
33 interface IReqAndCapabilitiesViewModelScope extends IWorkspaceViewModelScope {
34 requirementsTableHeadersList: Array<any>;
35 capabilitiesTableHeadersList: Array<any>;
36 capabilityPropertiesTableHeadersList: Array<any>;
37 requirementsSortTableDefined: SortTableDefined;
38 capabilitiesSortTableDefined: SortTableDefined;
39 propertiesSortTableDefined: SortTableDefined;
40 requirements:Array<Models.Requirement>;
41 capabilities:Array<Models.Capability>;
43 filteredProperties:Array<Array<Models.PropertyModel>>;
46 sort(sortBy:string, sortByTableDefined:SortTableDefined):void;
47 updateProperty(property:Models.PropertyModel, indexInFilteredProperties:number):void;
48 allCapabilitiesSelected(selected:boolean):void;
51 export class ReqAndCapabilitiesViewModel {
62 constructor(private $scope:IReqAndCapabilitiesViewModelScope,
63 private $filter:ng.IFilterService,
64 private $modal:ng.ui.bootstrap.IModalService,
65 private $templateCache:ng.ITemplateCacheService) {
67 this.$scope.updateSelectedMenuItem();
71 private openEditPropertyModal = (property:Models.PropertyModel, indexInFilteredProperties:number):void => {
72 let viewModelsHtmlBasePath:string = '/app/scripts/view-models/';
73 //...because there is not be api
74 _.forEach(this.$scope.filteredProperties[indexInFilteredProperties],(prop:Models.PropertyModel)=>{
77 let modalOptions:ng.ui.bootstrap.IModalSettings = {
78 template: this.$templateCache.get(viewModelsHtmlBasePath + 'forms/property-form/property-form-view.html'),
79 controller: 'Sdc.ViewModels.PropertyFormViewModel',
84 property: ():Models.PropertyModel => {
87 component: ():Models.Components.Component => {
88 return <Models.Components.Component> this.$scope.component;
90 filteredProperties: ():Array<Models.PropertyModel> => {
91 return this.$scope.filteredProperties[indexInFilteredProperties];
95 this.$modal.open(modalOptions);
98 private initScope = ():void => {
100 this.$scope.requirementsSortTableDefined = {
104 this.$scope.capabilitiesSortTableDefined = {
108 this.$scope.propertiesSortTableDefined = {
113 this.$scope.setValidState(true);
114 this.$scope.requirementsTableHeadersList = [
115 {title: 'Name', property: 'name'},
116 {title: 'Capability', property: 'capability'},
117 {title: 'Node', property: 'node'},
118 {title: 'Relationship', property: 'relationship'},
119 {title: 'Connected To', property: ''},
120 {title: 'Occurrences', property: ''}
122 this.$scope.capabilitiesTableHeadersList = [
123 {title: 'Name', property: 'name'},
124 {title: 'Type', property: 'type'},
125 {title: 'Description', property: ''},
126 {title: 'Valid Source', property: ''},
127 {title: 'Occurrences', property: ''}
129 this.$scope.capabilityPropertiesTableHeadersList = [
130 {title: 'Name', property: 'name'},
131 {title: 'Type', property: 'type'},
132 {title: 'Schema', property: 'schema.property.type'},
133 {title: 'Description', property: 'description'},
135 this.$scope.filteredProperties=[];
137 this.$scope.mode='requirements';
138 this.$scope.requirements=[];
139 _.forEach(this.$scope.component.requirements,(req:Array<Models.Requirement>,capName)=>{
140 this.$scope.requirements=this.$scope.requirements.concat(req);
143 this.$scope.capabilities=[];
144 _.forEach(this.$scope.component.capabilities,(cap:Array<Models.Capability>,capName)=>{
145 this.$scope.capabilities=this.$scope.capabilities.concat(cap);
148 this.$scope.sort = (sortBy:string, sortByTableDefined:SortTableDefined):void => {
149 sortByTableDefined.reverse = (sortByTableDefined.sortByField === sortBy) ? !sortByTableDefined.reverse : false;
150 sortByTableDefined.sortByField = sortBy;
153 this.$scope.updateProperty = (property:Models.PropertyModel, indexInFilteredProperties:number):void => {
154 this.openEditPropertyModal(property, indexInFilteredProperties);
157 this.$scope.allCapabilitiesSelected = (selected:boolean):void => {
158 _.forEach(this.$scope.capabilities,(cap:Models.Capability)=>{
159 cap.selected = selected;