/*
 * Copyright 2018-present Open Networking Foundation
 *
 * 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 {Routes, RouterModule} from '@angular/router';
import {Gui2TopoLibModule} from 'gui2-topo-lib';
import {FmGui2LibModule} from 'fm-gui2-lib';
import {RoadmGuiLibModule} from 'roadm-gui-lib';

/**
 * The set of Routes in the application - can be chosen from nav menu or
 * elsewhere like tabular icon for flows etc
 */
const onosRoutes: Routes = [
    {
        path: 'app',
        loadChildren: 'app/view/apps/apps.module#AppsModule'
    },
    {
        path: 'processor',
        loadChildren: 'app/view/processor/processor.module#ProcessorModule'
    },
    {
        path: 'settings',
        loadChildren: 'app/view/settings/settings.module#SettingsModule'
    },
    {
        path: 'partition',
        loadChildren: 'app/view/partition/partition.module#PartitionModule'
    },
    {
        path: 'cluster',
        loadChildren: 'app/view/cluster/cluster.module#ClusterModule'
    },
    {
        path: 'device',
        loadChildren: 'app/view/device/device.module#DeviceModule'
    },
    {
        path: 'link',
        loadChildren: 'app/view/link/link.module#LinkModule'
    },
    {
        path: 'host',
        loadChildren: 'app/view/host/host.module#HostModule'
    },
    {
        path: 'intent',
        loadChildren: 'app/view/intent/intent.module#IntentModule'
    },
    {
        path: 'tunnel',
        loadChildren: 'app/view/tunnel/tunnel.module#TunnelModule'
    },
    {
        path: 'flow',
        loadChildren: 'app/view/flow/flow.module#FlowModule'
    },
    {
        path: 'port',
        loadChildren: 'app/view/port/port.module#PortModule'
    },
    {
        path: 'group',
        loadChildren: 'app/view/group/group.module#GroupModule'
    },
    {
        path: 'meter',
        loadChildren: 'app/view/meter/meter.module#MeterModule'
    },
    {
        path: 'pipeconf',
        loadChildren: 'app/view/pipeconf/pipeconf.module#PipeconfModule'
    },
    /*  Comment out below section for running locally with 'ng serve' when developing */
    {
        path: 'topo2',
        loadChildren: 'gui2-topo-lib#Gui2TopoLibModule'
    },
    {
        path: 'alarmTable',
        loadChildren: 'fm-gui2-lib#FmGui2LibModule'
    },
    {
        path: 'roadm-gui',
        loadChildren: 'roadm-gui-lib#RoadmGuiLibModule'
    },
    {
        path: '',
        redirectTo: 'topo2', // Default to Topology view
        pathMatch: 'full'
    }
];

/**
 * ONOS GUI -- Main Routing Module - allows modules to be lazy loaded
 *
 * See https://angular.io/guide/lazy-loading-ngmodules
 * for the theory of operation
 */
@NgModule({
    imports: [
        RouterModule.forRoot(onosRoutes, {useHash: true})
    ],
    exports: [RouterModule],
    providers: []
})
export class OnosRoutingModule {
}
