grafana/public/app/features/manage-dashboards/utils/validation.ts
Josh Hunt 3c6e0e8ef8
Chore: ESlint import order (#44959)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier all the files

* Manually fix remaining files

* Move jquery code in jest-setup to external file to safely reorder imports

* Resolve issue caused by circular dependencies within Prometheus

* Update .betterer.results

* Fix missing // @ts-ignore

* ignore iconBundle.ts

* Fix missing // @ts-ignore
2022-04-22 14:33:13 +01:00

45 lines
1.2 KiB
TypeScript

import { getBackendSrv } from '@grafana/runtime';
import { validationSrv } from '../services/ValidationSrv';
export const validateDashboardJson = (json: string) => {
try {
JSON.parse(json);
return true;
} catch (error) {
return 'Not valid JSON';
}
};
export const validateGcomDashboard = (gcomDashboard: string) => {
// From DashboardImportCtrl
const match = /(^\d+$)|dashboards\/(\d+)/.exec(gcomDashboard);
return match && (match[1] || match[2]) ? true : 'Could not find a valid Grafana.com ID';
};
export const validateTitle = (newTitle: string, folderId: number) => {
return validationSrv
.validateNewDashboardName(folderId, newTitle)
.then(() => {
return true;
})
.catch((error) => {
if (error.type === 'EXISTING') {
return error.message;
}
});
};
export const validateUid = (value: string) => {
return getBackendSrv()
.get(`/api/dashboards/uid/${value}`)
.then((existingDashboard) => {
return `Dashboard named '${existingDashboard?.dashboard.title}' in folder '${existingDashboard?.meta.folderTitle}' has the same UID`;
})
.catch((error) => {
error.isHandled = true;
return true;
});
};