create_folder_ctrl.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import appEvents from 'app/core/app_events';
  2. export class CreateFolderCtrl {
  3. title = '';
  4. navModel: any;
  5. titleTouched = false;
  6. hasValidationError: boolean;
  7. validationError: any;
  8. /** @ngInject **/
  9. constructor(
  10. private backendSrv,
  11. private $location,
  12. private validationSrv,
  13. navModelSrv
  14. ) {
  15. this.navModel = navModelSrv.getNav('dashboards', 'manage-dashboards', 0);
  16. }
  17. create() {
  18. if (this.hasValidationError) {
  19. return;
  20. }
  21. return this.backendSrv.createDashboardFolder(this.title).then(result => {
  22. appEvents.emit('alert-success', ['Folder Created', 'OK']);
  23. var folderUrl = `/dashboards/folder/${result.dashboard.id}/${
  24. result.meta.slug
  25. }`;
  26. this.$location.url(folderUrl);
  27. });
  28. }
  29. titleChanged() {
  30. this.titleTouched = true;
  31. this.validationSrv
  32. .validateNewDashboardOrFolderName(this.title)
  33. .then(() => {
  34. this.hasValidationError = false;
  35. })
  36. .catch(err => {
  37. this.hasValidationError = true;
  38. this.validationError = err.message;
  39. });
  40. }
  41. }