88a56100fe291a4c9da5d4a812449cc107a31ba3
[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 {ArtifactConfigService} from "./services/artifact-config.service";
76 import {IUserProperties} from 'app/models';
77 import {PluginsModule} from './pages/plugins/plugins-module';
78 import {WorkspaceNg1BridgeService} from './pages/workspace/workspace-ng1-bridge-service';
79 import {NgxsModule} from '@ngxs/store';
80 import {NgxsLoggerPluginModule} from '@ngxs/logger-plugin';
81 import {NgxsReduxDevtoolsPluginModule} from '@ngxs/devtools-plugin';
82 import {EventListenerService} from '../services/event-listener-service';
83 import {HttpClientModule} from '@angular/common/http';
84 import {httpInterceptorProviders} from './http-interceptor';
85 import {HttpHelperService} from './services/http-hepler.service';
86 import {ModulesService} from "./services/modules.service";
87 import {TranslateService} from 'app/ng2/shared/translator/translate.service';
88 import {FileUtilsService} from './services/file-utils.service';
89 import {ImportVSPService} from './components/modals/onboarding-modal/import-vsp.service';
90 import {OnboardingService} from './services/onboarding.service';
91 import {ServiceConsumptionCreatorModule} from './pages/service-consumption-editor/service-consumption-editor.module';
92 import {ServiceDependenciesModule} from './components/logic/service-dependencies/service-dependencies.module';
93 import {ServiceDependenciesEditorModule} from './pages/service-dependencies-editor/service-dependencies-editor.module';
94 import {PropertyCreatorModule} from './pages/properties-assignment/property-creator/property-creator.module';
95 import {DeclareListModule} from './pages/properties-assignment/declare-list/declare-list.module';
96 import { InputListModule } from "./pages/properties-assignment/input-list/input-list.module";
97 import {WorkflowServiceNg2} from './services/workflow.service';
98 import {ToscaTypesServiceNg2} from "./services/tosca-types.service";
99 import {CapabilitiesFilterPropertiesEditorComponentModule} from "./pages/composition/capabilities-filter-properties-editor/capabilities-filter-properties-editor.module";
100 import {InterfaceOperationHandlerModule} from "./pages/composition/interface-operatons/operation-creator/interface-operation-handler.module";
101 import {AttributesOutputsModule} from "./pages/attributes-outputs/attributes-outputs.module";
102 import { ElementService } from "./services/element.service";
103
104
105 declare const __ENV__: string;
106
107 export const upgradeAdapter = new UpgradeAdapter(forwardRef(() => AppModule));
108
109 export function configServiceFactory(config: ConfigService, authService: AuthenticationService, eventListener: EventListenerService) {
110
111   return () => {
112     return authService.authenticate().toPromise()
113     .then((userInfo: IUserProperties) => {
114       authService.setLoggedinUser(userInfo);
115       return Promise.all([
116         config.loadSdcSetupData(),
117         config.loadValidationConfiguration(),
118         config.loadPluginsConfiguration(),
119       ])
120     }).then(() => {
121       eventListener.notifyObservers('ON_FINISH_LOADING');
122     })
123     .catch(() => {
124       console.log('AUTH FAILED! from app module');
125     });
126   };
127 }
128
129 @NgModule({
130   declarations: [
131     AppComponent
132   ],
133   imports: [
134     BrowserAnimationsModule,
135     BrowserModule,
136     UpgradeModule,
137     FormsModule,
138     HttpClientModule,
139     LayoutModule,
140     TranslateModule,
141     MultilineEllipsisModule,
142     UiElementsModule,
143     CompositionPanelModule,
144     SdcUiComponentsModule,
145     AutomatedUpgradeModule,
146
147     // We need to import them here since we use them in angular1
148     ConnectionWizardModule,
149     PropertiesAssignmentModule,
150     AttributesOutputsModule,
151     PropertyCreatorModule,
152     DeclareListModule,
153     InputListModule,
154     PluginFrameModule,
155     PluginsModule,
156     InterfaceOperationModule,
157     OperationCreatorModule,
158         InterfaceOperationHandlerModule,
159     ServicePathCreatorModule,
160     ServicePathsListModule,
161     ServicePathSelectorModule,
162     ServiceConsumptionCreatorModule,
163     ServiceDependenciesModule,
164     ServiceDependenciesEditorModule,
165     CapabilitiesFilterPropertiesEditorComponentModule,
166     WorkspaceModule,
167     ModalsModule,
168     CatalogModule,
169     HomeModule,
170     NgxsModule.forRoot([]),
171     NgxsLoggerPluginModule.forRoot({logger: console, collapsed: false}),
172     NgxsReduxDevtoolsPluginModule.forRoot({
173       disabled: __ENV__ === 'prod'
174     })
175   ],
176   exports: [],
177   entryComponents: [],
178   providers: [
179     WindowRef,
180     httpInterceptorProviders,
181     DataTypesServiceProvider,
182     SharingService,
183     CacheService,
184     HomeService,
185     ArtifactConfigService,
186     ComponentFactoryProvider,
187     CookieServiceProvider,
188     StateServiceFactory,
189     StateParamsServiceFactory,
190     ScopeServiceFactory,
191     NotificationServiceProvider,
192     ModalsHandlerProvider,
193     UserService,
194     Cookie2Service,
195     ConfigService,
196     ComponentServiceNg2,
197     ComponentServiceFactoryNg2,
198     ModalService,
199     ImportVSPService,
200     OnboardingService,
201     ElementService,
202     ServiceServiceNg2,
203     AutomatedUpgradeService,
204     WorkflowServiceNg2,
205     ToscaTypesServiceNg2,
206     WorkspaceNg1BridgeService,
207     HttpHelperService,
208     AuthenticationService,
209     PoliciesService,
210     GroupsService,
211     ModulesService,
212     DynamicComponentService,
213     SdcConfig,
214     SdcMenu,
215     ComponentInstanceServiceNg2,
216     EventListenerService,
217     TranslationServiceConfig,
218     TranslateService,
219     PluginsService,
220     CatalogService,
221     EventBusService,
222     FileUtilsService,
223     {
224       provide: APP_INITIALIZER,
225       useFactory: configServiceFactory,
226       deps: [ConfigService, AuthenticationService, EventListenerService],
227       multi: true
228     },
229   ],
230   bootstrap: [AppComponent]
231 })
232
233 export class AppModule {
234   constructor(public upgrade: UpgradeModule) {
235
236   }
237 }