import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CoreModule, hookNavigator, hookTab, NavigatorNode } from '@c8y/ngx-components';
import { GridsTabs } from './grids-tabs';
import { ClientGridExampleComponent } from './client-grid-example/client-grid-example.component';
import { ServerGridExampleComponent } from './server-grid-example/server-grid-example.component';
import { DeviceGridExampleComponent } from './device-grid-example/device-grid-example.component';
import { ServerGridExampleService } from './server-grid-example/server-grid-example.service';
import { TypeHeaderCellRendererComponent } from './server-grid-example/type-data-grid-column/type.header-cell-renderer.component';
import { TypeCellRendererComponent } from './server-grid-example/type-data-grid-column/type.cell-renderer.component';
import { TypeFilteringFormRendererComponent } from './server-grid-example/type-data-grid-column/type.filtering-form-renderer.component';
import { DeviceGridModule } from '@c8y/ngx-components/device-grid';

const navigatorNode = new NavigatorNode({
  label: 'Data grid',
  icon: 'table',
  path: '/data-grid',
  routerLinkExact: false
});

const routes: Routes = [
  {
    path: 'data-grid',
    redirectTo: 'data-grid/client-grid-example'
  },
  {
    path: 'data-grid/client-grid-example',
    component: ClientGridExampleComponent
  },
  {
    path: 'data-grid/server-grid-example',
    component: ServerGridExampleComponent
  },
  {
    path: 'data-grid/device-grid-example',
    component: DeviceGridExampleComponent
  }
];

@NgModule({
  imports: [CoreModule, DeviceGridModule, RouterModule.forChild(routes)],
  declarations: [
    ClientGridExampleComponent,
    ServerGridExampleComponent,
    DeviceGridExampleComponent,
    TypeHeaderCellRendererComponent,
    TypeCellRendererComponent,
    TypeFilteringFormRendererComponent
  ],
  entryComponents: [
    TypeHeaderCellRendererComponent,
    TypeCellRendererComponent,
    TypeFilteringFormRendererComponent
  ],
  providers: [hookNavigator(navigatorNode), hookTab(GridsTabs), ServerGridExampleService]
})
export class GridsModule {}
