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