| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { types, getEnv, flow } from 'mobx-state-tree';
- export const Folder = types.model('Folder', {
- id: types.identifier(types.number),
- title: types.string,
- url: types.string,
- canSave: types.boolean,
- uid: types.string,
- hasChanged: types.boolean,
- });
- export const FolderStore = types
- .model('FolderStore', {
- folder: types.maybe(Folder),
- })
- .actions(self => ({
- load: flow(function* load(uid: string) {
- // clear folder state
- if (self.folder && self.folder.uid !== uid) {
- self.folder = null;
- }
- const backendSrv = getEnv(self).backendSrv;
- const res = yield backendSrv.getDashboardByUid(uid);
- self.folder = Folder.create({
- id: res.dashboard.id,
- title: res.dashboard.title,
- url: res.meta.url,
- uid: res.dashboard.uid,
- canSave: res.meta.canSave,
- hasChanged: false,
- });
- return res;
- }),
- setTitle: function(originalTitle: string, title: string) {
- self.folder.title = title;
- self.folder.hasChanged = originalTitle.toLowerCase() !== title.trim().toLowerCase() && title.trim().length > 0;
- },
- saveFolder: flow(function* saveFolder(dashboard: any, options: any) {
- const backendSrv = getEnv(self).backendSrv;
- dashboard.title = self.folder.title.trim();
- const res = yield backendSrv.saveFolder(dashboard, options);
- self.folder.url = res.url;
- return `${self.folder.url}/settings`;
- }),
- deleteFolder: flow(function* deleteFolder() {
- const backendSrv = getEnv(self).backendSrv;
- return backendSrv.deleteDashboard(self.folder.uid);
- }),
- }));
|