/*
 * Copyright (C) 2017 Robert Bosch GmbH Copyright (C) 2017 Robert Bosch Manufacturing Solutions GmbH, Germany. All rights reserved.
 */

import { DragDropModule } from '@angular/cdk/drag-drop';
import { HttpClientModule } from '@angular/common/http';
import { NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatDialogModule } from '@angular/material/dialog';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { MatListModule } from '@angular/material/list';
import { MatSelectModule } from '@angular/material/select';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatTooltipModule } from '@angular/material/tooltip';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { BciCoreModule, BciLayoutModule, BciSharedModule } from '@bci-web-core/core';
import { PinboardI18nService, PinboardModule } from '@bci-web-core/pinboard';
import { PinboardWidgetsModule } from '@bci-web-core/pinboard-widgets';
import { environment } from '../environments/environment';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { DashboardSettingsComponent } from './dashboard-settings/dashboard-settings.component';
import { DemoComponent } from './demo/demo.component';
import { MetricSettingsComponent } from './widget-settings/metric-settings/metric-settings.component';
import { MyOwnFormComponent } from './widget-settings/my-own-form/my-own-form.component';
import { MetricsComponent } from './widgets/metrics/metrics.component';
import { MyOwnWidgetContentComponent } from './widgets/my-own-widget-content/my-own-widget-content.component';

@NgModule({
  declarations: [
    AppComponent,
    MyOwnWidgetContentComponent,
    MyOwnFormComponent,
    MetricSettingsComponent,
    MetricsComponent,
    DemoComponent,
    DashboardSettingsComponent,
  ],
  imports: [
    ReactiveFormsModule,
    BrowserModule,
    BrowserAnimationsModule,
    HttpClientModule,
    BciCoreModule.forRoot({ prod_environment: environment.production, core_config_url: '/assets/config/config.json' }),
    BciSharedModule,
    BciLayoutModule,
    AppRoutingModule,
    PinboardModule,
    PinboardWidgetsModule,
    /* Material imports*/
    MatIconModule,
    MatFormFieldModule,
    MatInputModule,
    MatButtonModule,
    MatListModule,
    MatTooltipModule,
    MatSelectModule,
    DragDropModule,
    MatDialogModule,
    MatSlideToggleModule,
  ],
  providers: [PinboardI18nService],
  bootstrap: [AppComponent],
})
export class AppModule {}
