|
|
@@ -31,6 +31,7 @@ export const PermissionsStore = types
|
|
|
error: types.maybe(types.string),
|
|
|
originalItems: types.optional(types.array(PermissionsStoreItem), []),
|
|
|
newType: types.optional(types.string, defaultNewType),
|
|
|
+ isInRoot: types.maybe(types.boolean),
|
|
|
})
|
|
|
.views(self => ({
|
|
|
isValid: item => {
|
|
|
@@ -47,16 +48,18 @@ export const PermissionsStore = types
|
|
|
},
|
|
|
}))
|
|
|
.actions(self => ({
|
|
|
- load: flow(function* load(dashboardId: number, isFolder: boolean) {
|
|
|
+ load: flow(function* load(dashboardId: number, isFolder: boolean, isInRoot: boolean) {
|
|
|
const backendSrv = getEnv(self).backendSrv;
|
|
|
self.fetching = true;
|
|
|
self.isFolder = isFolder;
|
|
|
+ self.isInRoot = isInRoot;
|
|
|
self.dashboardId = dashboardId;
|
|
|
const res = yield backendSrv.get(`/api/dashboards/id/${dashboardId}/acl`);
|
|
|
- const items = prepareServerResponse(res, dashboardId, isFolder);
|
|
|
+ const items = prepareServerResponse(res, dashboardId, isFolder, isInRoot);
|
|
|
self.items = items;
|
|
|
self.originalItems = items;
|
|
|
self.fetching = false;
|
|
|
+ self.error = null;
|
|
|
}),
|
|
|
addStoreItem: flow(function* addStoreItem(item) {
|
|
|
self.error = null;
|
|
|
@@ -64,7 +67,7 @@ export const PermissionsStore = types
|
|
|
return undefined;
|
|
|
}
|
|
|
|
|
|
- self.items.push(prepareItem(item, self.dashboardId, self.isFolder));
|
|
|
+ self.items.push(prepareItem(item, self.dashboardId, self.isFolder, self.isInRoot));
|
|
|
return updateItems(self);
|
|
|
}),
|
|
|
removeStoreItem: flow(function* removeStoreItem(idx: number) {
|
|
|
@@ -119,14 +122,15 @@ const updateItems = self => {
|
|
|
return res;
|
|
|
};
|
|
|
|
|
|
-const prepareServerResponse = (response, dashboardId: number, isFolder: boolean) => {
|
|
|
+const prepareServerResponse = (response, dashboardId: number, isFolder: boolean, isInRoot: boolean) => {
|
|
|
return response.map(item => {
|
|
|
- return prepareItem(item, dashboardId, isFolder);
|
|
|
+ return prepareItem(item, dashboardId, isFolder, isInRoot);
|
|
|
});
|
|
|
};
|
|
|
|
|
|
-const prepareItem = (item, dashboardId: number, isFolder: boolean) => {
|
|
|
- item.inherited = !isFolder && item.dashboardId > 0 && dashboardId !== item.dashboardId;
|
|
|
+const prepareItem = (item, dashboardId: number, isFolder: boolean, isInRoot: boolean) => {
|
|
|
+ item.inherited = !isFolder && !isInRoot && dashboardId !== item.dashboardId;
|
|
|
+
|
|
|
item.sortRank = 0;
|
|
|
if (item.userId > 0) {
|
|
|
item.icon = 'fa fa-fw fa-user';
|