grafana/public/app/features/dashboard/validation_srv.ts

47 lines
1.1 KiB
TypeScript
Raw Normal View History

2017-12-20 05:33:33 -06:00
import coreModule from 'app/core/core_module';
export class ValidationSrv {
2017-12-20 05:33:33 -06:00
rootName = 'root';
/** @ngInject */
constructor(private $q, private backendSrv) {}
validateNewDashboardOrFolderName(name) {
2017-12-20 05:33:33 -06:00
name = (name || '').trim();
if (name.length === 0) {
return this.$q.reject({
2017-12-20 05:33:33 -06:00
type: 'REQUIRED',
message: 'Name is required',
});
}
if (name.toLowerCase() === this.rootName) {
return this.$q.reject({
2017-12-20 05:33:33 -06:00
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({
2017-12-20 05:33:33 -06:00
type: 'EXISTING',
message: 'A folder or dashboard with the same name already exists',
});
break;
}
}
deferred.resolve();
});
return deferred.promise;
}
}
2017-12-20 05:33:33 -06:00
coreModule.service('validationSrv', ValidationSrv);