Release version 1.13.7
[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 {PropertyMetadataModule} from "./pages/properties-assignment/property-metadata/property-metadata.module";
105 import {WorkflowServiceNg2} from './services/workflow.service';
106 import {ToscaTypesServiceNg2} from "./services/tosca-types.service";
107 import {InterfaceOperationHandlerModule} from "./pages/composition/interface-operatons/operation-creator/interface-operation-handler.module";
108 import {AttributesOutputsModule} from "./pages/attributes-outputs/attributes-outputs.module";
109 import {ElementService} from "./services/element.service";
110 import {ModelService} from "./services/model.service";
111 import {ToscaArtifactService} from "./services/tosca-artifact.service";
112 import {InterfaceDefinitionModule} from "./pages/interface-definition/interface-definition.module";
113 import {TypeWorkspaceModule} from "./pages/type-workspace/type-workspace.module";
114 import {DeclareInputModule} from "./pages/properties-assignment/declare-input/declare-input.module";
115
116 declare const __ENV__: string;
117
118 export const upgradeAdapter = new UpgradeAdapter(forwardRef(() => AppModule));
119
120 export function configServiceFactory(config: ConfigService, authService: AuthenticationService, eventListener: EventListenerService) {
121
122   return () => {
123     return authService.authenticate().toPromise()
124     .then((userInfo: IUserProperties) => {
125       authService.setLoggedinUser(userInfo);
126       return Promise.all([
127         config.loadSdcSetupData(),
128         config.loadValidationConfiguration(),
129         config.loadPluginsConfiguration(),
130       ])
131     }).then(() => {
132       eventListener.notifyObservers('ON_FINISH_LOADING');
133     })
134     .catch(() => {
135       console.log('AUTH FAILED! from app module');
136     });
137   };
138 }
139
140 @NgModule({
141   declarations: [
142     AppComponent
143   ],
144   imports: [
145     BrowserAnimationsModule,
146     BrowserModule,
147     UpgradeModule,
148     FormsModule,
149     HttpClientModule,
150     LayoutModule,
151     TranslateModule,
152     MultilineEllipsisModule,
153     UiElementsModule,
154     CompositionPanelModule,
155     SdcUiComponentsModule,
156     AutomatedUpgradeModule,
157
158     // We need to import them here since we use them in angular1
159     ConnectionWizardModule,
160     PropertiesAssignmentModule,
161     AttributesOutputsModule,
162     PropertyCreatorModule,
163     DeclareInputModule,
164     DeclareListModule,
165     ToscaFunctionModule,
166     ConstraintsModule,
167     PropertyMetadataModule,
168     PluginFrameModule,
169     PluginsModule,
170     InterfaceOperationModule,
171     InterfaceDefinitionModule,
172     OperationCreatorModule,
173     OperationCreatorInterfaceDefinitionModule,
174     InterfaceOperationHandlerModule,
175     ServicePathCreatorModule,
176     ServicePathsListModule,
177     ServicePathSelectorModule,
178     ServiceConsumptionCreatorModule,
179     ServiceDependenciesModule,
180     ServiceDependenciesEditorModule,
181     WorkspaceModule,
182     TypeWorkspaceModule,
183     ModalsModule,
184     CatalogModule,
185     HomeModule,
186     NgxsModule.forRoot([]),
187     NgxsLoggerPluginModule.forRoot({logger: console, collapsed: false}),
188     NgxsReduxDevtoolsPluginModule.forRoot({
189       disabled: __ENV__ === 'prod'
190     })
191   ],
192   exports: [],
193   entryComponents: [],
194   providers: [
195     WindowRef,
196     httpInterceptorProviders,
197     DataTypesServiceProvider,
198     SharingService,
199     CacheService,
200     HomeService,
201     ArtifactConfigService,
202     ComponentFactoryProvider,
203     CookieServiceProvider,
204     StateServiceFactory,
205     StateParamsServiceFactory,
206     ScopeServiceFactory,
207     NotificationServiceProvider,
208     ModalsHandlerProvider,
209     UserService,
210     Cookie2Service,
211     ConfigService,
212     ComponentServiceNg2,
213     ComponentServiceFactoryNg2,
214     ModalService,
215     ImportVSPService,
216     OnboardingService,
217     ElementService,
218     ModelService,
219     ToscaArtifactService,
220     ServiceServiceNg2,
221     AutomatedUpgradeService,
222     WorkflowServiceNg2,
223     ToscaTypesServiceNg2,
224     WorkspaceNg1BridgeService,
225     HttpHelperService,
226     AuthenticationService,
227     PoliciesService,
228     GroupsService,
229     ModulesService,
230     DynamicComponentService,
231     SdcConfig,
232     SdcMenu,
233     ComponentInstanceServiceNg2,
234     EventListenerService,
235     TranslationServiceConfig,
236     TranslateService,
237     PluginsService,
238     CatalogService,
239     EventBusService,
240     FileUtilsService,
241     {
242       provide: APP_INITIALIZER,
243       useFactory: configServiceFactory,
244       deps: [ConfigService, AuthenticationService, EventListenerService],
245       multi: true
246     },
247   ],
248   bootstrap: [AppComponent]
249 })
250
251 export class AppModule {
252   constructor(public upgrade: UpgradeModule) {
253
254   }
255 }