/// /// Copyright © 2016-2019 The Thingsboard Authors /// /// Licensed under the Apache License, Version 2.0 (the "License"); /// you may not use this file except in compliance with the License. /// You may obtain a copy of the License at /// /// http://www.apache.org/licenses/LICENSE-2.0 /// /// Unless required by applicable law or agreed to in writing, software /// distributed under the License is distributed on an "AS IS" BASIS, /// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. /// See the License for the specific language governing permissions and /// limitations under the License. /// import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from '@angular/common/http'; import { StoreModule } from '@ngrx/store'; import { EffectsModule } from '@ngrx/effects'; import { StoreDevtoolsModule } from '@ngrx/store-devtools'; import { GlobalHttpInterceptor } from './interceptors/global-http-interceptor'; import { effects, metaReducers, reducers } from './core.state'; import { environment as env } from '@env/environment'; import { MissingTranslationHandler, TranslateCompiler, TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { TbMissingTranslationHandler } from './translate/missing-translate-handler'; import { MatButtonModule, MatDialogModule, MatSnackBarModule } from '@angular/material'; import { ConfirmDialogComponent } from '@core/services/dialog/confirm-dialog.component'; import { FlexLayoutModule } from '@angular/flex-layout'; import { TranslateDefaultCompiler } from '@core/translate/translate-default-compiler'; import { AlertDialogComponent } from '@core/services/dialog/alert-dialog.component'; import { WINDOW_PROVIDERS } from '@core/services/window.service'; import {TodoDialogComponent} from '@core/services/dialog/todo-dialog.component'; import { HotkeyModule } from 'angular2-hotkeys'; export function HttpLoaderFactory(http: HttpClient) { return new TranslateHttpLoader(http, './assets/locale/locale.constant-', '.json'); } @NgModule({ entryComponents: [ ConfirmDialogComponent, AlertDialogComponent, TodoDialogComponent ], declarations: [ ConfirmDialogComponent, AlertDialogComponent, TodoDialogComponent ], imports: [ CommonModule, HttpClientModule, FlexLayoutModule.withConfig({addFlexToParent: false}), MatDialogModule, MatButtonModule, MatSnackBarModule, // ngx-translate TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: HttpLoaderFactory, deps: [HttpClient] }, missingTranslationHandler: { provide: MissingTranslationHandler, useClass: TbMissingTranslationHandler }, compiler: { provide: TranslateCompiler, useClass: TranslateDefaultCompiler } }), HotkeyModule.forRoot(), // ngrx StoreModule.forRoot(reducers, { metaReducers }), EffectsModule.forRoot(effects), env.production ? [] : StoreDevtoolsModule.instrument({ name: env.appTitle }) ], providers: [ { provide: HTTP_INTERCEPTORS, useClass: GlobalHttpInterceptor, multi: true }, WINDOW_PROVIDERS ], exports: [] }) export class CoreModule { }