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