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