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