re base code
[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 { BrowserModule } from '@angular/platform-browser';
22 import { NgModule, APP_INITIALIZER } from '@angular/core';
23 import { FormsModule } from '@angular/forms';
24 import { forwardRef } from '@angular/core';
25 import { AppComponent } from './app.component';
26 import { UpgradeAdapter } from '@angular/upgrade';
27 import { UpgradeModule } from '@angular/upgrade/static';
28 import { SdcUiComponentsModule, SdcUiComponents } from "sdc-ui/lib/angular";
29 import { PropertiesAssignmentModule } from './pages/properties-assignment/properties-assignment.module';
30 import {
31     DataTypesServiceProvider, SharingServiceProvider, CookieServiceProvider, StateServiceFactory,
32     StateParamsServiceFactory, CacheServiceProvider, EventListenerServiceProvider, ScopeServiceFactory,
33     NotificationServiceProvider, ComponentFactoryProvider
34 } from "./utils/ng1-upgraded-provider";
35 import { ConfigService } from "./services/config.service";
36 import { HttpModule } from '@angular/http';
37 import { HttpService } from './services/http.service';
38 import { AuthenticationService } from './services/authentication.service';
39 import { Cookie2Service } from "./services/cookie.service";
40 import { ComponentServiceNg2 } from "./services/component-services/component.service";
41 import { ComponentServiceFactoryNg2 } from "./services/component-services/component.service.factory";
42 import { ServiceServiceNg2 } from "./services/component-services/service.service";
43 import { ComponentInstanceServiceNg2 } from "./services/component-instance-services/component-instance.service";
44 import { ModalService } from "./services/modal.service";
45 import { UiElementsModule } from "./components/ui/ui-elements.module";
46 import { ConnectionWizardModule } from "./pages/connection-wizard/connection-wizard.module";
47 import {InterfaceOperationModule} from "./pages/interface-operation/interface-operation.module";
48 import {OperationCreatorModule} from "./pages/interface-operation/operation-creator/operation-creator.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/service-path-creator/service-path-creator.module';
58 import { ServicePathsListModule } from './pages/service-paths-list/service-paths-list.module';
59 import { ServicePathModule } from 'app/ng2/components/logic/service-path/service-path.module';
60 import { ServicePathSelectorModule } from 'app/ng2/components/logic/service-path-selector/service-path-selector.module';
61 import { CompositionPanelModule } from 'app/ng2/pages/composition/panel/panel.module';
62 import { WindowRef } from "./services/window.service";
63 import {ArchiveService} from "./services/archive.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
73 export const upgradeAdapter = new UpgradeAdapter(forwardRef(() => AppModule));
74
75 export function configServiceFactory(config: ConfigService) {
76     return () => {
77         return Promise.all([
78             config.loadValidationConfiguration(),
79             config.loadPluginsConfiguration()
80         ]);
81     }
82 }
83
84
85 @NgModule({
86     declarations: [
87         AppComponent
88     ],
89     imports: [
90         BrowserModule,
91         UpgradeModule,
92         FormsModule,
93         HttpModule,
94         LayoutModule,
95         TranslateModule,
96         MultilineEllipsisModule,
97         UiElementsModule,
98         CompositionPanelModule,
99         SdcUiComponentsModule,
100         AutomatedUpgradeModule,
101         //We need to import them here since we use them in angular1
102         ConnectionWizardModule,
103         PropertiesAssignmentModule,
104         PluginFrameModule,
105         InterfaceOperationModule,
106         OperationCreatorModule,
107         ServicePathCreatorModule,
108         ServicePathsListModule,
109         ServicePathModule,
110         ServicePathSelectorModule
111     ],
112     exports: [],
113     entryComponents: [
114         // *** sdc-ui components to be used as downgraded:
115         // SdcUiComponents.ButtonComponent
116     ],
117     providers: [
118         WindowRef,
119         DataTypesServiceProvider,
120         SharingServiceProvider,
121         ComponentFactoryProvider,
122         CookieServiceProvider,
123         StateServiceFactory,
124         StateParamsServiceFactory,
125         ScopeServiceFactory,
126         CacheServiceProvider,
127         EventListenerServiceProvider,
128         NotificationServiceProvider,
129         ModalsHandlerProvider,
130         AuthenticationService,
131         Cookie2Service,
132         ConfigService,
133         ComponentServiceNg2,
134         ComponentServiceFactoryNg2,
135         ModalService,
136         ServiceServiceNg2,
137         AutomatedUpgradeService,
138         HttpService,
139         UserService,
140         PoliciesService,
141         GroupsService,
142         DynamicComponentService,
143         SdcConfig,
144         SdcMenu,
145         ComponentInstanceServiceNg2,
146         TranslationServiceConfig,
147         PluginsService,
148         ArchiveService,
149         EventBusService,
150         {
151             provide: APP_INITIALIZER,
152             useFactory: configServiceFactory,
153             deps: [ConfigService],
154             multi: true
155         },
156     ],
157     bootstrap: [AppComponent]
158 })
159
160
161 export class AppModule {
162     constructor(public upgrade: UpgradeModule, public eventBusService:EventBusService) {
163
164     }
165 }