105 lines
3.5 KiB
TypeScript
105 lines
3.5 KiB
TypeScript
|
|
///
|
||
|
|
/// 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 { Injectable, NgModule } from '@angular/core';
|
||
|
|
import { ActivatedRouteSnapshot, Resolve, RouterModule, Routes } from '@angular/router';
|
||
|
|
|
||
|
|
import {Authority} from '@shared/models/authority.enum';
|
||
|
|
import { DashboardPageComponent } from '@home/pages/dashboard/dashboard-page.component';
|
||
|
|
import { BreadCrumbConfig, BreadCrumbLabelFunction } from '@shared/components/breadcrumb';
|
||
|
|
import { widgetTypesBreadcumbLabelFunction } from '@home/pages/widget/widget-library-routing.module';
|
||
|
|
import { WidgetsBundle } from '@shared/models/widgets-bundle.model';
|
||
|
|
import { WidgetService } from '@core/http/widget.service';
|
||
|
|
import { Observable } from 'rxjs';
|
||
|
|
import { Dashboard } from '@app/shared/models/dashboard.models';
|
||
|
|
import { DashboardService } from '@core/http/dashboard.service';
|
||
|
|
import { DashboardUtilsService } from '@core/services/dashboard-utils.service';
|
||
|
|
import { map } from 'rxjs/operators';
|
||
|
|
import { dashboardBreadcumbLabelFunction, DashboardResolver } from '@app/modules/home/pages/dashboard/dashboard-routing.module';
|
||
|
|
import { UtilsService } from '@core/services/utils.service';
|
||
|
|
import { Widget } from '@app/shared/models/widget.models';
|
||
|
|
|
||
|
|
@Injectable()
|
||
|
|
export class WidgetEditorDashboardResolver implements Resolve<Dashboard> {
|
||
|
|
|
||
|
|
constructor(private dashboardService: DashboardService,
|
||
|
|
private dashboardUtils: DashboardUtilsService,
|
||
|
|
private utils: UtilsService) {
|
||
|
|
}
|
||
|
|
|
||
|
|
resolve(route: ActivatedRouteSnapshot): Dashboard {
|
||
|
|
const editWidgetInfo = this.utils.editWidgetInfo;
|
||
|
|
const widget: Widget = {
|
||
|
|
isSystemType: true,
|
||
|
|
bundleAlias: 'customWidgetBundle',
|
||
|
|
typeAlias: 'customWidget',
|
||
|
|
type: editWidgetInfo.type,
|
||
|
|
title: 'My widget',
|
||
|
|
sizeX: editWidgetInfo.sizeX * 2,
|
||
|
|
sizeY: editWidgetInfo.sizeY * 2,
|
||
|
|
row: 2,
|
||
|
|
col: 4,
|
||
|
|
config: JSON.parse(editWidgetInfo.defaultConfig)
|
||
|
|
};
|
||
|
|
widget.config.title = widget.config.title || editWidgetInfo.widgetName;
|
||
|
|
return this.dashboardUtils.createSingleWidgetDashboard(widget);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
const routes: Routes = [
|
||
|
|
{
|
||
|
|
path: 'dashboard/:dashboardId',
|
||
|
|
component: DashboardPageComponent,
|
||
|
|
data: {
|
||
|
|
breadcrumb: {
|
||
|
|
skip: true
|
||
|
|
},
|
||
|
|
auth: [Authority.TENANT_ADMIN, Authority.CUSTOMER_USER],
|
||
|
|
title: 'dashboard.dashboard',
|
||
|
|
widgetEditMode: false,
|
||
|
|
singlePageMode: true
|
||
|
|
},
|
||
|
|
resolve: {
|
||
|
|
dashboard: DashboardResolver
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
path: 'widget-editor',
|
||
|
|
component: DashboardPageComponent,
|
||
|
|
data: {
|
||
|
|
breadcrumb: {
|
||
|
|
skip: true
|
||
|
|
},
|
||
|
|
auth: [Authority.SYS_ADMIN, Authority.TENANT_ADMIN],
|
||
|
|
title: 'widget.editor',
|
||
|
|
widgetEditMode: true,
|
||
|
|
singlePageMode: true
|
||
|
|
},
|
||
|
|
resolve: {
|
||
|
|
dashboard: WidgetEditorDashboardResolver
|
||
|
|
}
|
||
|
|
}
|
||
|
|
];
|
||
|
|
|
||
|
|
@NgModule({
|
||
|
|
imports: [RouterModule.forChild(routes)],
|
||
|
|
exports: [RouterModule],
|
||
|
|
providers: [
|
||
|
|
WidgetEditorDashboardResolver
|
||
|
|
]
|
||
|
|
})
|
||
|
|
export class DashboardPagesRoutingModule { }
|