|
|
|
import { GrafanaPanelTemplate, GrafanaTemplateVariables } from '../models/grafana_panel_model';
|
|
|
|
import { exportPanel, importPanel } from '../services/grafana_service';
|
|
|
|
|
|
|
|
import * as Router from 'koa-router';
|
|
|
|
|
|
|
|
|
|
|
|
async function exportGrafanaPanelTemplate(ctx: Router.IRouterContext) {
|
|
|
|
let panelId = ctx.request.query.panelId;
|
|
|
|
if(panelId === undefined) {
|
|
|
|
throw new Error('Cannot export analytic units with undefined panelId');
|
|
|
|
}
|
|
|
|
|
|
|
|
const panelTemplate = await exportPanel(panelId);
|
|
|
|
ctx.response.body = panelTemplate;
|
|
|
|
}
|
|
|
|
|
|
|
|
async function importGrafanaPanelTemplate(ctx: Router.IRouterContext) {
|
|
|
|
const { panelTemplate, templateVariables } = ctx.request.body as {
|
|
|
|
panelTemplate: GrafanaPanelTemplate,
|
|
|
|
templateVariables: GrafanaTemplateVariables
|
|
|
|
};
|
|
|
|
|
|
|
|
if(panelTemplate.analyticUnitTemplates === undefined) {
|
|
|
|
throw new Error('Cannot import analytic units with undefined analyticUnitTemplates');
|
|
|
|
}
|
|
|
|
await importPanel(panelTemplate, templateVariables);
|
|
|
|
ctx.response.status = 200;
|
|
|
|
}
|
|
|
|
|
|
|
|
export var router = new Router();
|
|
|
|
|
|
|
|
router.get('/template', exportGrafanaPanelTemplate);
|
|
|
|
router.post('/template', importGrafanaPanelTemplate);
|