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