mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
47 lines
1.0 KiB
TypeScript
47 lines
1.0 KiB
TypeScript
import coreModule from "app/core/core_module";
|
|
|
|
export class ValidationSrv {
|
|
rootName = "root";
|
|
|
|
/** @ngInject */
|
|
constructor(private $q, private backendSrv) {}
|
|
|
|
validateNewDashboardOrFolderName(name) {
|
|
name = (name || "").trim();
|
|
|
|
if (name.length === 0) {
|
|
return this.$q.reject({
|
|
type: "REQUIRED",
|
|
message: "Name is required"
|
|
});
|
|
}
|
|
|
|
if (name.toLowerCase() === this.rootName) {
|
|
return this.$q.reject({
|
|
type: "EXISTING",
|
|
message: "A folder or dashboard with the same name already exists"
|
|
});
|
|
}
|
|
|
|
let deferred = this.$q.defer();
|
|
|
|
this.backendSrv.search({ query: name }).then(res => {
|
|
for (let hit of res) {
|
|
if (name.toLowerCase() === hit.title.toLowerCase()) {
|
|
deferred.reject({
|
|
type: "EXISTING",
|
|
message: "A folder or dashboard with the same name already exists"
|
|
});
|
|
break;
|
|
}
|
|
}
|
|
|
|
deferred.resolve();
|
|
});
|
|
|
|
return deferred.promise;
|
|
}
|
|
}
|
|
|
|
coreModule.service("validationSrv", ValidationSrv);
|