Provide input name when declaring service property as input
[sdc.git] / catalog-ui / src / app / ng2 / app.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 {BrowserAnimationsModule} from '@angular/platform-browser/animations';
22 import {BrowserModule} from '@angular/platform-browser';
23 import {APP_INITIALIZER, forwardRef, NgModule} from '@angular/core';
24 import {FormsModule} from '@angular/forms';
25 import {AppComponent} from './app.component';
26 import {UpgradeAdapter} from '@angular/upgrade';
27 import {UpgradeModule} from '@angular/upgrade/static';
28 import {SdcUiComponentsModule} from 'onap-ui-angular';
29 import {PropertiesAssignmentModule} from './pages/properties-assignment/properties-assignment.module';
30 import {
31   ComponentFactoryProvider,
32   CookieServiceProvider,
33   DataTypesServiceProvider,
34   ModalsHandlerProvider,
35   NotificationServiceProvider,
36   ScopeServiceFactory,
37   StateParamsServiceFactory,
38   StateServiceFactory
39 } from './utils/ng1-upgraded-provider';
40 import {ConfigService} from './services/config.service';
41 import {AuthenticationService} from './services/authentication.service';
42 import {Cookie2Service} from './services/cookie.service';
43 import {ComponentServiceNg2} from './services/component-services/component.service';
44 import {ComponentServiceFactoryNg2} from './services/component-services/component.service.factory';
45 import {ServiceServiceNg2} from './services/component-services/service.service';
46 import {ComponentInstanceServiceNg2} from './services/component-instance-services/component-instance.service';
47 import {ModalService} from './services/modal.service';
48 import {UiElementsModule} from './components/ui/ui-elements.module';
49 import {ConnectionWizardModule} from './pages/composition/graph/connection-wizard/connection-wizard.module';
50 import {InterfaceOperationModule} from './pages/interface-operation/interface-operation.module';
51 import {OperationCreatorModule} from './pages/interface-operation/operation-creator/operation-creator.module';
52 import {
53   OperationCreatorInterfaceDefinitionModule
54 } from './pages/interface-definition/operation-creator/operation-creator-interface-definition.module';
55 import {LayoutModule} from './components/layout/layout.module';
56 import {UserService} from './services/user.service';
57 import {DynamicComponentService} from './services/dynamic-component.service';
58 import {SdcConfig} from './config/sdc-config.config';
59 import {SdcMenu} from './config/sdc-menu.config';
60 import {TranslateModule} from './shared/translator/translate.module';
61 import {TranslationServiceConfig} from './config/translation.service.config';
62 import {MultilineEllipsisModule} from './shared/multiline-ellipsis/multiline-ellipsis.module';
63 import {ServicePathCreatorModule} from './pages/composition/graph/service-path-creator/service-path-creator.module';
64 import {ServicePathsListModule} from './pages/composition/graph/service-paths-list/service-paths-list.module';
65 import {ServicePathSelectorModule} from 'app/ng2/pages/composition/graph/service-path-selector/service-path-selector.module';
66 import {CompositionPanelModule} from 'app/ng2/pages/composition/panel/composition-panel.module';
67 import {CatalogModule} from './pages/catalog/catalog.module';
68 import {HomeModule} from './pages/home/home.module';
69 import {WindowRef} from './services/window.service';
70 import {CatalogService} from './services/catalog.service';
71 import {PluginFrameModule} from './components/ui/plugin/plugin-frame.module';
72 import {PluginsService} from './services/plugins.service';
73 import {EventBusService} from './services/event-bus.service';
74 import {GroupsService} from './services/groups.service';
75 import {PoliciesService} from './services/policies.service';
76 import {AutomatedUpgradeService} from './pages/automated-upgrade/automated-upgrade.service';
77 import {AutomatedUpgradeModule} from './pages/automated-upgrade/automated-upgrade.module';
78 import {WorkspaceModule} from './pages/workspace/workspace.module';
79 import {ModalsModule} from './components/modals/modals.module';
80 import {CacheService, HomeService, SharingService} from 'app/services-ng2';
81 import {ArtifactConfigService} from "./services/artifact-config.service";
82 import {IUserProperties} from 'app/models';
83 import {PluginsModule} from './pages/plugins/plugins-module';
84 import {WorkspaceNg1BridgeService} from './pages/workspace/workspace-ng1-bridge-service';
85 import {NgxsModule} from '@ngxs/store';
86 import {NgxsLoggerPluginModule} from '@ngxs/logger-plugin';
87 import {NgxsReduxDevtoolsPluginModule} from '@ngxs/devtools-plugin';
88 import {EventListenerService} from '../services/event-listener-service';
89 import {HttpClientModule} from '@angular/common/http';
90 import {httpInterceptorProviders} from './http-interceptor';
91 import {HttpHelperService} from './services/http-hepler.service';
92 import {ModulesService} from "./services/modules.service";
93 import {TranslateService} from 'app/ng2/shared/translator/translate.service';
94 import {FileUtilsService} from './services/file-utils.service';
95 import {ImportVSPService} from './components/modals/onboarding-modal/import-vsp.service';
96 import {OnboardingService} from './services/onboarding.service';
97 import {ServiceConsumptionCreatorModule} from './pages/service-consumption-editor/service-consumption-editor.module';
98 import {ServiceDependenciesModule} from './components/logic/service-dependencies/service-dependencies.module';
99 import {ServiceDependenciesEditorModule} from './pages/service-dependencies-editor/service-dependencies-editor.module';
100 import {PropertyCreatorModule} from './pages/properties-assignment/property-creator/property-creator.module';
101 import {DeclareListModule} from './pages/properties-assignment/declare-list/declare-list.module';
102 import {ToscaFunctionModule} from "./pages/properties-assignment/tosca-function/tosca-function.module";
103 import {ConstraintsModule} from "./pages/properties-assignment/constraints/constraints.module";
104 import {WorkflowServiceNg2} from './services/workflow.service';
105 import {ToscaTypesServiceNg2} from "./services/tosca-types.service";
106 import {InterfaceOperationHandlerModule} from "./pages/composition/interface-operatons/operation-creator/interface-operation-handler.module";
107 import {AttributesOutputsModule} from "./pages/attributes-outputs/attributes-outputs.module";
108 import {ElementService} from "./services/element.service";
109 import {ModelService} from "./services/model.service";
110 import {ToscaArtifactService} from "./services/tosca-artifact.service";
111 import {InterfaceDefinitionModule} from "./pages/interface-definition/interface-definition.module";
112 import {TypeWorkspaceModule} from "./pages/type-workspace/type-workspace.module";
113 import {DeclareInputModule} from "./pages/properties-assignment/declare-input/declare-input.module";
114
115 declare const __ENV__: string;
116
117 export const upgradeAdapter = new UpgradeAdapter(forwardRef(() => AppModule));
118
119 export function configServiceFactory(config: ConfigService, authService: AuthenticationService, eventListener: EventListenerService) {
120
121   return () => {
122     return authService.authenticate().toPromise()
123     .then((userInfo: IUserProperties) => {
124       authService.setLoggedinUser(userInfo);
125       return Promise.all([
126         config.loadSdcSetupData(),
127         config.loadValidationConfiguration(),
128         config.loadPluginsConfiguration(),
129       ])
130     }).then(() => {
131       eventListener.notifyObservers('ON_FINISH_LOADING');
132     })
133     .catch(() => {
134       console.log('AUTH FAILED! from app module');
135     });
136   };
137 }
138
139 @NgModule({
140   declarations: [
141     AppComponent
142   ],
143   imports: [
144     BrowserAnimationsModule,
145     BrowserModule,
146     UpgradeModule,
147     FormsModule,
148     HttpClientModule,
149     LayoutModule,
150     TranslateModule,
151     MultilineEllipsisModule,
152     UiElementsModule,
153     CompositionPanelModule,
154     SdcUiComponentsModule,
155     AutomatedUpgradeModule,
156
157     // We need to import them here since we use them in angular1
158     ConnectionWizardModule,
159     PropertiesAssignmentModule,
160     AttributesOutputsModule,
161     PropertyCreatorModule,
162     DeclareInputModule,
163     DeclareListModule,
164     ToscaFunctionModule,
165     ConstraintsModule,
166     PluginFrameModule,
167     PluginsModule,
168     InterfaceOperationModule,
169     InterfaceDefinitionModule,
170     OperationCreatorModule,
171     OperationCreatorInterfaceDefinitionModule,
172     InterfaceOperationHandlerModule,
173     ServicePathCreatorModule,
174     ServicePathsListModule,
175     ServicePathSelectorModule,
176     ServiceConsumptionCreatorModule,
177     ServiceDependenciesModule,
178     ServiceDependenciesEditorModule,
179     WorkspaceModule,
180     TypeWorkspaceModule,
181     ModalsModule,
182     CatalogModule,
183     HomeModule,
184     NgxsModule.forRoot([]),
185     NgxsLoggerPluginModule.forRoot({logger: console, collapsed: false}),
186     NgxsReduxDevtoolsPluginModule.forRoot({
187       disabled: __ENV__ === 'prod'
188     })
189   ],
190   exports: [],
191   entryComponents: [],
192   providers: [
193     WindowRef,
194     httpInterceptorProviders,
195     DataTypesServiceProvider,
196     SharingService,
197     CacheService,
198     HomeService,
199     ArtifactConfigService,
200     ComponentFactoryProvider,
201     CookieServiceProvider,
202     StateServiceFactory,
203     StateParamsServiceFactory,
204     ScopeServiceFactory,
205     NotificationServiceProvider,
206     ModalsHandlerProvider,
207     UserService,
208     Cookie2Service,
209     ConfigService,
210     ComponentServiceNg2,
211     ComponentServiceFactoryNg2,
212     ModalService,
213     ImportVSPService,
214     OnboardingService,
215     ElementService,
216     ModelService,
217     ToscaArtifactService,
218     ServiceServiceNg2,
219     AutomatedUpgradeService,
220     WorkflowServiceNg2,
221     ToscaTypesServiceNg2,
222     WorkspaceNg1BridgeService,
223     HttpHelperService,
224     AuthenticationService,
225     PoliciesService,
226     GroupsService,
227     ModulesService,
228     DynamicComponentService,
229     SdcConfig,
230     SdcMenu,
231     ComponentInstanceServiceNg2,
232     EventListenerService,
233     TranslationServiceConfig,
234     TranslateService,
235     PluginsService,
236     CatalogService,
237     EventBusService,
238     FileUtilsService,
239     {
240       provide: APP_INITIALIZER,
241       useFactory: configServiceFactory,
242       deps: [ConfigService, AuthenticationService, EventListenerService],
243       multi: true
244     },
245   ],
246   bootstrap: [AppComponent]
247 })
248
249 export class AppModule {
250   constructor(public upgrade: UpgradeModule) {
251
252   }
253 }