Support addition of scalar type constraints
[sdc.git] / catalog-ui / src / app / modules / directive-module.ts
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 import {ClickedOutsideDirective} from "../directives/clicked-outside/clicked-outside-directive";
22 import {LoaderDirective} from "../directives/loader/loader-directive";
23 import {UserHeaderDetailsDirective} from "../directives/user-header-details/user-header-details-directive";
24 import {FileTypeDirective} from "../directives/file-type/file-type";
25 import {DownloadArtifactDirective} from "../directives/download-artifact/download-artifact";
26 import {EllipsisDirective} from "../directives/ellipsis/ellipsis-directive";
27 import {InvalidCharactersDirective} from "../directives/invalid-characters/invalid-characters";
28 import {ExpandCollapseDirective} from "../directives/utils/expand-collapse/expand-collapse";
29 import {PerfectScrollerDirective} from "../directives/perfect-scrollbar/angular-perfect-scrollbar";
30 import {SdcModalDirective} from "../directives/modal/sdc-modal";
31 import {FileOpenerDirective} from "../directives/file-opener/file-opener";
32 import {FileUploadDirective} from "../directives/file-upload/file-upload";
33 import {StructureTreeDirective} from "../directives/structure-tree/structure-tree-directive";
34 import {SmartTooltipDirective} from "../directives/utils/smart-tooltip/smart-tooltip";
35 import {TagDirective} from "../directives/tag/tag-directive";
36 import {SdcTagsDirective} from "../directives/utils/sdc-tags/sdc-tags";
37 import {SdcKeyboardEventsDirective} from "../directives/utils/sdc-keyboard-events/sdc-keyboard-events";
38 import {ExpandCollapseMenuBoxDirective} from "../directives/utils/expand-collapse-menu-box/expand-collaps-menu-box";
39 import {PunchOutDirective} from "../directives/punch-out/punch-out";
40 import {CustomValidationDirective} from "../directives/custom-validation/custom-validation";
41 import {EcompHeaderDirective} from "../directives/ecomp-header/ecomp-header";
42 import {EditNamePopoverDirective} from "../directives/edit-name-popover/edit-name-popover-directive";
43 import {DataTypeFieldsStructureDirective} from "../directives/property-types/data-type-fields-structure/data-type-fields-structure";
44 import {TypeMapDirective} from "../directives/property-types/type-map/type-map-directive";
45 import {TypeListDirective} from "../directives/property-types/type-list/type-list-directive";
46 import {
47   SelectDataTypeFieldsStructureDirective
48 } from "../directives/select-property-types/select-data-type-fields-structure/select-data-type-fields-structure";
49 import {SelectTypeMapDirective} from "../directives/select-property-types/select-type-map/select-type-map-directive";
50 import {SelectTypeListDirective} from "../directives/select-property-types/select-type-list/select-type-list-directive";
51 import {ValidationOnLoadDirective} from "../directives/utils/validation-on-load/validation-on-load";
52 import {InfoTooltipDirective} from "../directives/info-tooltip/info-tooltip";
53 import {SdcTabsDirective} from "../directives/sdc-tabs/sdc-tabs-directive";
54 import {InnerSdcSingleTabDirective, SdcSingleTabDirective} from "../directives/sdc-tabs/sdc-single-tab/sdc-single-tab-directive";
55 import {ExpandCollapseListHeaderDirective} from "../directives/utils/expand-collapse-list-header/expand-collapse-list-header";
56 import {JsonExportExcelDirective} from "../directives/export-json-to-excel/export-json-to-excel";
57 import {TopProgressDirective} from "../directives/layout/top-progress/top-progress";
58 import {CheckboxElementDirective} from "../directives/elements/checkbox/checkbox";
59 import {RadiobuttonElementDirective} from "../directives/elements/radiobutton/radiobutton";
60 import {OnLastRepeatDirective} from "../directives/events/on-last-repeat/on-last-repeat";
61 import {InputRowDirective} from "../directives/inputs-and-properties/inputs/input-row-directive";
62 import {PropertyRowDirective} from "../directives/inputs-and-properties/properties/property-row-directive";
63 import {NodesFactory} from "../models/graph/nodes/nodes-factory";
64 import {LinksFactory} from "../models/graph/graph-links/links-factory";
65 import {CapabilitiesListDirective} from "../directives/capabilities-and-requirements/capability/capabilities-list-directive";
66 import {RequirementsListDirective} from "../directives/capabilities-and-requirements/requirement/requirements-list-directive";
67 import {PreventDoubleClickDirective} from "../directives/prevent-double-click/prevent-double-click";
68 // *** NG2 Components (downgraded) *** //
69 import {downgradeComponent} from "@angular/upgrade/static";
70 import {MenuListNg2Component} from "../ng2/components/downgrade-wrappers/menu-list-ng2/menu-list-ng2.component";
71 import {TopNavComponent} from "../ng2/components/layout/top-nav/top-nav.component";
72 import {ZoneContainerComponent} from "../ng2/pages/composition/graph/canvas-zone/zone-container.component";
73 import {ZoneInstanceComponent} from "../ng2/pages/composition/graph/canvas-zone/zone-instance/zone-instance.component";
74 import {CompositionPanelComponent} from 'app/ng2/pages/composition/panel/composition-panel.component';
75 import {PropertiesAssignmentComponent} from "../ng2/pages/properties-assignment/properties-assignment.page.component";
76 import {SearchWithAutoCompleteComponent} from "../ng2/components/ui/search-with-autocomplete/search-with-autocomplete.component";
77 import {ServicePathSelectorComponent} from '../ng2/pages/composition/graph/service-path-selector/service-path-selector.component';
78 import {MultilineEllipsisComponent} from "../ng2/shared/multiline-ellipsis/multiline-ellipsis.component";
79 import {InterfaceOperationComponent} from '../ng2/pages/interface-operation/interface-operation.page.component';
80 import {PluginFrameComponent} from "../ng2/components/ui/plugin/plugin-frame.component";
81 import {TileComponent} from "../ng2/components/ui/tile/tile.component";
82 import {CompositionPageComponent} from "../ng2/pages/composition/composition-page.component";
83 import {CatalogComponent} from "../ng2/pages/catalog/catalog.component";
84 import {HomeComponent} from "../ng2/pages/home/home.component";
85 import {PluginContextViewPageComponent} from "../ng2/pages/plugins/plugin-context-view/plugin-context-view.page.component";
86 import {PluginTabViewPageComponent} from "../ng2/pages/plugins/plugin-tab-view/plugin-tab-view.page.component";
87 import {CompositionGraphComponent} from "../ng2/pages/composition/graph/composition-graph.component";
88 import {DeploymentPageComponent} from "../ng2/pages/workspace/deployment/deployment-page.component";
89 import {ActivityLogComponent} from "../ng2/pages/workspace/activity-log/activity-log.component";
90 import {ToscaArtifactPageComponent} from "../ng2/pages/workspace/tosca-artifacts/tosca-artifact-page.component";
91 import {InformationArtifactPageComponent} from "../ng2/pages/workspace/information-artifact/information-artifact-page.component";
92 import {AttributesComponent} from "../view-models/workspace/tabs/attributes/attributes.component";
93 import {DeploymentArtifactsPageComponent} from "../ng2/pages/workspace/deployment-artifacts/deployment-artifacts-page.component";
94 import {ReqAndCapabilitiesComponent} from "../ng2/pages/workspace/req-and-capabilities/req-and-capabilities.component";
95 import {DistributionComponent} from '../ng2/pages/workspace/disribution/distribution.component';
96 import {AttributesOutputsComponent} from "../ng2/pages/attributes-outputs/attributes-outputs.page.component";
97 import {InterfaceDefinitionComponent} from "../ng2/pages/interface-definition/interface-definition.page.component";
98 import {ToscaFunctionComponent} from '../ng2/pages/properties-assignment/tosca-function/tosca-function.component';
99 import {ConstraintsComponent} from '../ng2/pages/properties-assignment/constraints/constraints.component';
100 import {TypeWorkspaceComponent} from "../ng2/pages/type-workspace/type-workspace.component";
101 import {TypeWorkspaceGeneralComponent} from "../ng2/pages/type-workspace/type-workspace-general/type-workspace-general.component";
102
103 let moduleName: string = 'Sdc.Directives';
104 let directiveModule: ng.IModule = angular.module(moduleName, []);
105
106 directiveModule.directive('clickedOutside', ClickedOutsideDirective.factory);
107 directiveModule.directive('loader', LoaderDirective.factory);
108 directiveModule.directive('userHeaderDetails', UserHeaderDetailsDirective.factory);
109 directiveModule.directive('ellipsis', EllipsisDirective.factory);
110 directiveModule.directive('downloadArtifact', DownloadArtifactDirective.factory);
111 directiveModule.directive('fileType', FileTypeDirective.factory);
112 directiveModule.directive('invalidCharacters', InvalidCharactersDirective.factory);
113 directiveModule.directive('perfectScrollbar', PerfectScrollerDirective.factory);
114 directiveModule.directive('expandCollapse', ExpandCollapseDirective.factory);
115 directiveModule.directive('ng1Modal', SdcModalDirective.factory);
116 directiveModule.directive('fileOpener', FileOpenerDirective.factory);
117 directiveModule.directive('fileUpload', FileUploadDirective.factory);
118 directiveModule.directive('structureTree', StructureTreeDirective.factory);
119 directiveModule.directive('sdcSmartTooltip', SmartTooltipDirective.factory);
120 directiveModule.directive('sdcTag', TagDirective.factory);
121 directiveModule.directive('sdcTags', SdcTagsDirective.factory);
122 directiveModule.directive('sdcKeyboardEvents', SdcKeyboardEventsDirective.factory);
123 directiveModule.directive('expandCollapseMenuBox', ExpandCollapseMenuBoxDirective.factory);
124 directiveModule.directive('punchOut', PunchOutDirective.factory);
125 directiveModule.directive('customValidation', CustomValidationDirective.factory);
126 directiveModule.directive('ecompHeader', EcompHeaderDirective.factory);
127 directiveModule.directive('editNamePopover', EditNamePopoverDirective.factory);
128 directiveModule.directive('fieldsStructure', DataTypeFieldsStructureDirective.factory);
129 directiveModule.directive('typeMap', TypeMapDirective.factory);
130 directiveModule.directive('typeList', TypeListDirective.factory);
131 directiveModule.directive('selectFieldsStructure', SelectDataTypeFieldsStructureDirective.factory);
132 directiveModule.directive('selectTypeMap', SelectTypeMapDirective.factory);
133 directiveModule.directive('selectTypeList', SelectTypeListDirective.factory);
134 directiveModule.directive('infoTooltip', InfoTooltipDirective.factory);
135 directiveModule.directive('validationOnLoad', ValidationOnLoadDirective.factory);
136 directiveModule.directive('ng1Tabs', SdcTabsDirective.factory);
137 directiveModule.directive('sdcSingleTab', SdcSingleTabDirective.factory);
138 directiveModule.directive('innerSdcSingleTab', InnerSdcSingleTabDirective.factory);
139 directiveModule.directive('jsonExportExcel', JsonExportExcelDirective.factory);
140 directiveModule.directive('expandCollapseListHeader', ExpandCollapseListHeaderDirective.factory);
141 directiveModule.directive('preventDoubleClick', PreventDoubleClickDirective.factory);
142 //
143 //
144 // // Layouts
145 directiveModule.directive('topProgress', TopProgressDirective.factory);
146 //
147 // // Elements
148 directiveModule.directive('ng1Checkbox', CheckboxElementDirective.factory);
149 directiveModule.directive('sdcRadioButton', RadiobuttonElementDirective.factory);
150 //
151 // // Events
152 directiveModule.directive('onLastRepeat', OnLastRepeatDirective.factory);
153 //
154 // //Inputs & Properties
155 directiveModule.directive('inputRow', InputRowDirective.factory);
156 directiveModule.directive('propertyRow', PropertyRowDirective.factory);
157 //
158 //
159 // // ------------------------------------------- Composition & Deployment Graphs------------------------------------------//
160 //
161 // //Util service for Graph
162 directiveModule.service('NodesFactory', NodesFactory);
163 directiveModule.service('LinksFactory', LinksFactory);
164
165
166 //Compoisiton right tab directives
167 directiveModule.directive('capabilitiesList', CapabilitiesListDirective.factory);
168 directiveModule.directive('requirementsList', RequirementsListDirective.factory);
169
170
171 directiveModule.directive('menuListNg2', downgradeComponent({
172   component: MenuListNg2Component,
173   inputs: ['props']
174 }) as angular.IDirectiveFactory);
175
176 directiveModule.directive('topNav', downgradeComponent({
177   component: TopNavComponent,
178   inputs: ['version', 'menuModel', 'topLvlSelectedIndex', 'hideSearch', 'searchTerm', 'notificationIconCallback', 'unsavedChanges', 'unsavedChangesCallback'],
179   outputs: ['searchTermChange']
180 }) as ng.IDirectiveFactory);
181
182 directiveModule.directive('ng2ZoneContainer', downgradeComponent({
183   component: ZoneContainerComponent,
184   inputs: ['title', 'count', 'type', 'visible', 'minimized'],
185   outputs: ['minimize', 'backgroundClick']
186 }) as angular.IDirectiveFactory);
187
188 directiveModule.directive('ng2ZoneInstance', downgradeComponent({
189   component: ZoneInstanceComponent,
190   inputs: ['zoneInstance', 'isActive', 'activeInstanceMode', 'defaultIconText', 'isViewOnly', 'hidden', 'forceSave'],
191   outputs: ['modeChange', 'tagHandleClick', 'assignmentSaveStart', 'assignmentSaveComplete']
192 }) as angular.IDirectiveFactory);
193
194 directiveModule.directive('ng2CompositionPanel', downgradeComponent({
195   component: CompositionPanelComponent,
196   inputs: ['isViewOnly', 'isLoading', 'isCertified', 'selectedZoneInstanceId', 'selectedZoneInstanceType', 'selectedZoneInstanceName', 'topologyTemplate'],
197 }) as angular.IDirectiveFactory);
198
199 directiveModule.directive('propertiesAssignment', downgradeComponent({
200   component: PropertiesAssignmentComponent
201 }) as angular.IDirectiveFactory);
202
203 directiveModule.directive('compositionPage', downgradeComponent({
204   component: CompositionPageComponent
205 }) as angular.IDirectiveFactory);
206
207 directiveModule.directive('activityLog', downgradeComponent({
208   component: ActivityLogComponent
209 }) as angular.IDirectiveFactory);
210
211 directiveModule.directive('distribution', downgradeComponent({
212   component: DistributionComponent
213 }) as angular.IDirectiveFactory);
214
215 directiveModule.directive('attributes', downgradeComponent({
216   component: AttributesComponent
217 }) as angular.IDirectiveFactory);
218
219 directiveModule.directive('attributesOutputs', downgradeComponent({
220   component: AttributesOutputsComponent
221 }) as angular.IDirectiveFactory);
222
223 directiveModule.directive('reqAndCapabilities', downgradeComponent({
224   component: ReqAndCapabilitiesComponent
225 }) as angular.IDirectiveFactory);
226
227 directiveModule.directive('ng2SearchWithAutocomplete', downgradeComponent({
228   component: SearchWithAutoCompleteComponent,
229   inputs: ['searchPlaceholder', 'searchBarClass', 'autoCompleteValues'],
230   outputs: ['searchChanged', 'searchButtonClicked']
231 }) as angular.IDirectiveFactory);
232
233 directiveModule.directive('ng2ServicePathSelector', downgradeComponent({
234   component: ServicePathSelectorComponent,
235   inputs: ['drawPath', 'deletePaths', 'service', 'selectedPathId'],
236   outputs: []
237 }) as angular.IDirectiveFactory);
238
239 directiveModule.directive('interfaceOperation', downgradeComponent({
240   component: InterfaceOperationComponent,
241   inputs: ['component', 'readonly'],
242   outputs: []
243 }) as angular.IDirectiveFactory);
244
245 directiveModule.directive('interfaceDefinition', downgradeComponent({
246   component: InterfaceDefinitionComponent,
247   inputs: ['component', 'readonly'],
248   outputs: []
249 }) as angular.IDirectiveFactory);
250
251 directiveModule.directive('ng2MultilineEllipsis', downgradeComponent({
252   component: MultilineEllipsisComponent,
253   inputs: ['lines', 'lineHeight', 'className'],
254   outputs: ['hasEllipsisChanged']
255 }) as angular.IDirectiveFactory);
256
257 directiveModule.directive('ng2UiTile', downgradeComponent({
258   component: TileComponent,
259   inputs: ['component'],
260   outputs: ['onTileClick']
261 }) as angular.IDirectiveFactory);
262
263 directiveModule.directive('pluginFrame', downgradeComponent({
264   component: PluginFrameComponent,
265   inputs: ['plugin', 'queryParams'],
266   outputs: ['onLoadingDone']
267 }) as angular.IDirectiveFactory);
268
269 directiveModule.directive('catalogPage', downgradeComponent({
270   component: CatalogComponent,
271   inputs: [],
272   outputs: []
273 }) as angular.IDirectiveFactory);
274
275 directiveModule.directive('homePage', downgradeComponent({
276   component: HomeComponent,
277   inputs: [],
278   outputs: []
279 }) as angular.IDirectiveFactory);
280
281 directiveModule.directive('pluginContextView', downgradeComponent({
282   component: PluginContextViewPageComponent,
283   inputs: [],
284   outputs: []
285 }) as angular.IDirectiveFactory);
286
287 directiveModule.directive('pluginTabView', downgradeComponent({
288   component: PluginTabViewPageComponent,
289   inputs: [],
290   outputs: []
291 }) as angular.IDirectiveFactory);
292
293 directiveModule.directive('compositionGraph', downgradeComponent({
294   component: CompositionGraphComponent,
295   inputs: ['topologyTemplate', 'isViewOnly'],
296   outputs: []
297 }) as angular.IDirectiveFactory);
298 directiveModule.directive('toscaArtifactPage', downgradeComponent({
299   component: ToscaArtifactPageComponent,
300   inputs: [],
301   outputs: []
302 }) as angular.IDirectiveFactory);
303
304 directiveModule.directive('deploymentPage', downgradeComponent({
305   component: DeploymentPageComponent,
306   inputs: [],
307   outputs: []
308 }) as angular.IDirectiveFactory);
309
310 directiveModule.directive('informationArtifactPage', downgradeComponent({
311   component: InformationArtifactPageComponent,
312   inputs: [],
313   outputs: []
314 }) as angular.IDirectiveFactory);
315
316 directiveModule.directive('deploymentArtifactPage', downgradeComponent({
317   component: DeploymentArtifactsPageComponent,
318   inputs: [],
319   outputs: []
320 }) as angular.IDirectiveFactory);
321
322 directiveModule.directive('toscaFunction', downgradeComponent({
323   component: ToscaFunctionComponent,
324   inputs: ['componentInstanceMap', 'property'],
325   outputs: []
326 }) as angular.IDirectiveFactory);
327
328 directiveModule.directive('appConstraints', downgradeComponent({
329   component: ConstraintsComponent,
330   inputs: ['propertyConstraints', 'isViewOnly', 'propertyType'],
331   outputs: ['onConstraintChange']
332 }) as angular.IDirectiveFactory);
333
334 directiveModule.directive('appTypeWorkspace', downgradeComponent({
335   component: TypeWorkspaceComponent,
336   inputs: [],
337   outputs: []
338 }) as angular.IDirectiveFactory);
339
340 directiveModule.directive('appTypeWorkspaceGeneral', downgradeComponent({
341   component: TypeWorkspaceGeneralComponent,
342   inputs: [],
343   outputs: []
344 }) as angular.IDirectiveFactory);