import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { ChartsModule } from 'ng2-charts';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import {FormFieldsModule, ModalService, RbUiComponentsModule} from '@inst-iot/bosch-angular-ui-components';
import {LoginComponent} from './login/login.component';
import { HomeComponent } from './home/home.component';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {LocalStorageModule} from 'angular-2-local-storage';
import {HttpClientModule} from '@angular/common/http';
import { SamplesComponent } from './samples/samples.component';
import {RbCustomInputsModule} from './rb-custom-inputs/rb-custom-inputs.module';
import { SampleComponent } from './sample/sample.component';
import { ValidateDirective } from './validate.directive';
import {CommonModule} from '@angular/common';
import { ErrorComponent } from './error/error.component';
import { ObjectPipe } from './object.pipe';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import { DocumentationComponent } from './documentation/documentation.component';
import { ImgMagnifierComponent } from './img-magnifier/img-magnifier.component';
import { ExistsPipe } from './exists.pipe';
import { TemplatesComponent } from './templates/templates.component';
import { ParametersPipe } from './parameters.pipe';
import { SettingsComponent } from './settings/settings.component';
import { UsersComponent } from './users/users.component';
import { ChangelogComponent } from './changelog/changelog.component';
import { DocumentationDatabaseComponent } from
    './documentation/documentation-database/documentation-database.component';
import { PredictionComponent } from './prediction/prediction.component';
import { HelpComponent } from './help/help.component';
import { ModelTemplatesComponent } from './model-templates/model-templates.component';
import { SizePipe } from './size.pipe';
import { DocumentationArchitectureComponent } from
    './documentation/documentation-architecture/documentation-architecture.component';
import { MaterialsComponent } from './materials/materials.component';
import { MaterialComponent } from './material/material.component';
import { DocumentationModelsComponent } from './documentation/documentation-models/documentation-models.component';

@NgModule({
  declarations: [
    AppComponent,
    LoginComponent,
    HomeComponent,
    SamplesComponent,
    SampleComponent,
    ValidateDirective,
    ErrorComponent,
    ObjectPipe,
    DocumentationComponent,
    ImgMagnifierComponent,
    ExistsPipe,
    TemplatesComponent,
    ParametersPipe,
    SettingsComponent,
    UsersComponent,
    ChangelogComponent,
    DocumentationDatabaseComponent,
    PredictionComponent,
    HelpComponent,
    ModelTemplatesComponent,
    SizePipe,
    DocumentationArchitectureComponent,
    MaterialsComponent,
    MaterialComponent,
    DocumentationModelsComponent
  ],
  imports: [
    LocalStorageModule.forRoot({
      prefix: 'definma',
      storageType: 'localStorage'
    }),
    BrowserModule,
    BrowserAnimationsModule,
    AppRoutingModule,
    RbUiComponentsModule,
    FormsModule,
    HttpClientModule,
    RbCustomInputsModule,
    ReactiveFormsModule,
    FormFieldsModule,
    CommonModule,
    ChartsModule
  ],
  providers: [
    ModalService,
    { provide: Window, useValue: window }
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }
