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