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