Implement adding Interface to VFC
[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 {OperationCreatorInterfaceDefinitionModule} from './pages/interface-definition/operation-creator/operation-creator-interface-definition.module';
49 import {LayoutModule} from './components/layout/layout.module';
50 import {UserService} from './services/user.service';
51 import {DynamicComponentService} from './services/dynamic-component.service';
52 import {SdcConfig} from './config/sdc-config.config';
53 import {SdcMenu} from './config/sdc-menu.config';
54 import {TranslateModule} from './shared/translator/translate.module';
55 import {TranslationServiceConfig} from './config/translation.service.config';
56 import {MultilineEllipsisModule} from './shared/multiline-ellipsis/multiline-ellipsis.module';
57 import {ServicePathCreatorModule} from './pages/composition/graph/service-path-creator/service-path-creator.module';
58 import {ServicePathsListModule} from './pages/composition/graph/service-paths-list/service-paths-list.module';
59 import { ServicePathSelectorModule } from 'app/ng2/pages/composition/graph/service-path-selector/service-path-selector.module';
60 import { CompositionPanelModule } from 'app/ng2/pages/composition/panel/composition-panel.module';
61 import {CatalogModule} from './pages/catalog/catalog.module';
62 import {HomeModule} from './pages/home/home.module';
63 import {WindowRef} from './services/window.service';
64 import {CatalogService} from './services/catalog.service';
65 import { ModalsHandlerProvider } from './utils/ng1-upgraded-provider';
66 import {PluginFrameModule} from './components/ui/plugin/plugin-frame.module';
67 import {PluginsService} from './services/plugins.service';
68 import {EventBusService} from './services/event-bus.service';
69 import {GroupsService} from './services/groups.service';
70 import {PoliciesService} from './services/policies.service';
71 import {AutomatedUpgradeService} from './pages/automated-upgrade/automated-upgrade.service';
72 import {AutomatedUpgradeModule} from './pages/automated-upgrade/automated-upgrade.module';
73 import {WorkspaceModule} from './pages/workspace/workspace.module';
74 import {ModalsModule} from './components/modals/modals.module';
75 import { SharingService, CacheService, HomeService } from 'app/services-ng2';
76 import {ArtifactConfigService} from "./services/artifact-config.service";
77 import {IUserProperties} from 'app/models';
78 import {PluginsModule} from './pages/plugins/plugins-module';
79 import {WorkspaceNg1BridgeService} from './pages/workspace/workspace-ng1-bridge-service';
80 import {NgxsModule} from '@ngxs/store';
81 import {NgxsLoggerPluginModule} from '@ngxs/logger-plugin';
82 import {NgxsReduxDevtoolsPluginModule} from '@ngxs/devtools-plugin';
83 import {EventListenerService} from '../services/event-listener-service';
84 import {HttpClientModule} from '@angular/common/http';
85 import {httpInterceptorProviders} from './http-interceptor';
86 import {HttpHelperService} from './services/http-hepler.service';
87 import {ModulesService} from "./services/modules.service";
88 import {TranslateService} from 'app/ng2/shared/translator/translate.service';
89 import {FileUtilsService} from './services/file-utils.service';
90 import {ImportVSPService} from './components/modals/onboarding-modal/import-vsp.service';
91 import {OnboardingService} from './services/onboarding.service';
92 import {ServiceConsumptionCreatorModule} from './pages/service-consumption-editor/service-consumption-editor.module';
93 import {ServiceDependenciesModule} from './components/logic/service-dependencies/service-dependencies.module';
94 import {ServiceDependenciesEditorModule} from './pages/service-dependencies-editor/service-dependencies-editor.module';
95 import {PropertyCreatorModule} from './pages/properties-assignment/property-creator/property-creator.module';
96 import {DeclareListModule} from './pages/properties-assignment/declare-list/declare-list.module';
97 import { InputListModule } from "./pages/properties-assignment/input-list/input-list.module";
98 import {WorkflowServiceNg2} from './services/workflow.service';
99 import {ToscaTypesServiceNg2} from "./services/tosca-types.service";
100 import {CapabilitiesFilterPropertiesEditorComponentModule} from "./pages/composition/capabilities-filter-properties-editor/capabilities-filter-properties-editor.module";
101 import {InterfaceOperationHandlerModule} from "./pages/composition/interface-operatons/operation-creator/interface-operation-handler.module";
102 import {AttributesOutputsModule} from "./pages/attributes-outputs/attributes-outputs.module";
103 import { ElementService } from "./services/element.service";
104 import { ModelService } from "./services/model.service";
105 import {ToscaArtifactService} from "./services/tosca-artifact.service";
106 import {InterfaceDefinitionModule} from "./pages/interface-definition/interface-definition.module";
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     OperationCreatorInterfaceDefinitionModule,
163     InterfaceOperationHandlerModule,
164     ServicePathCreatorModule,
165     ServicePathsListModule,
166     ServicePathSelectorModule,
167     ServiceConsumptionCreatorModule,
168     ServiceDependenciesModule,
169     ServiceDependenciesEditorModule,
170     CapabilitiesFilterPropertiesEditorComponentModule,
171     WorkspaceModule,
172     ModalsModule,
173     CatalogModule,
174     HomeModule,
175     NgxsModule.forRoot([]),
176     NgxsLoggerPluginModule.forRoot({logger: console, collapsed: false}),
177     NgxsReduxDevtoolsPluginModule.forRoot({
178       disabled: __ENV__ === 'prod'
179     })
180   ],
181   exports: [],
182   entryComponents: [],
183   providers: [
184     WindowRef,
185     httpInterceptorProviders,
186     DataTypesServiceProvider,
187     SharingService,
188     CacheService,
189     HomeService,
190     ArtifactConfigService,
191     ComponentFactoryProvider,
192     CookieServiceProvider,
193     StateServiceFactory,
194     StateParamsServiceFactory,
195     ScopeServiceFactory,
196     NotificationServiceProvider,
197     ModalsHandlerProvider,
198     UserService,
199     Cookie2Service,
200     ConfigService,
201     ComponentServiceNg2,
202     ComponentServiceFactoryNg2,
203     ModalService,
204     ImportVSPService,
205     OnboardingService,
206     ElementService,
207     ModelService,
208     ToscaArtifactService,
209     ServiceServiceNg2,
210     AutomatedUpgradeService,
211     WorkflowServiceNg2,
212     ToscaTypesServiceNg2,
213     WorkspaceNg1BridgeService,
214     HttpHelperService,
215     AuthenticationService,
216     PoliciesService,
217     GroupsService,
218     ModulesService,
219     DynamicComponentService,
220     SdcConfig,
221     SdcMenu,
222     ComponentInstanceServiceNg2,
223     EventListenerService,
224     TranslationServiceConfig,
225     TranslateService,
226     PluginsService,
227     CatalogService,
228     EventBusService,
229     FileUtilsService,
230     {
231       provide: APP_INITIALIZER,
232       useFactory: configServiceFactory,
233       deps: [ConfigService, AuthenticationService, EventListenerService],
234       multi: true
235     },
236   ],
237   bootstrap: [AppComponent]
238 })
239
240 export class AppModule {
241   constructor(public upgrade: UpgradeModule) {
242
243   }
244 }