diff --git a/CageUI/src/client/pages/layoutEditor/LayoutEditor.tsx b/CageUI/src/client/pages/layoutEditor/LayoutEditor.tsx
index be97c5556..fd0de7825 100644
--- a/CageUI/src/client/pages/layoutEditor/LayoutEditor.tsx
+++ b/CageUI/src/client/pages/layoutEditor/LayoutEditor.tsx
@@ -27,13 +27,13 @@ import Editor from '../../components/layoutEditor/Editor';
import { labkeyGetUserPermissions } from '../../api/labkeyActions';
import { RoomSizeSelector, SelectorOptions } from '../../components/layoutEditor/RoomSizeSelector';
import { ConfirmationPopup } from '../../components/ConfirmationPopup';
-import { isRoomCreator, isTemplateCreator } from '../../utils/LayoutEditorHelpers';
+import { isRoomCreator, isRoomModifier, isTemplateCreator } from '../../utils/helpers';
import { GetUserPermissionsResponse } from '@labkey/api/dist/labkey/security/Permission';
import { roomSizeOptions } from '../../utils/constants';
import { buildNewLocalRoom, fetchRoomData } from '../../utils/helpers';
export const LayoutEditor: FC
= () => {
- const roomName = ActionURL.getParameter('room');
+ const roomName: string = ActionURL.getParameter('room');
const [prevRoomData, setPrevRoomData] = useState({
name: null,
cagingData: [],
@@ -62,7 +62,10 @@ export const LayoutEditor: FC = () => {
// if the user is a template creator grant access
if (isTemplateCreator(profile) || (isRoomCreator(profile))) {
setAccess(true);
- }else{
+ }else if(isRoomModifier(profile) && roomName && !roomName.includes("template")){ // ensure room modifiers are editing a real room
+ setAccess(true);
+ }
+ else{
setAccess(false);
}
}
@@ -145,7 +148,10 @@ export const LayoutEditor: FC = () => {
}
}, [prevRoomData]);
- return (!isLoading && userProfile && access) ? (
+ return (isLoading) ?
+
+
Page is loading, please wait.
+ : (!isLoading && userProfile && access) ? (
= () => {
}
/>
- ) :
-
Error loading page. This could be due to a number of issues
-
- - Insufficient permissions
- - Slow load times
- - New bugs on our end. If you believe this might be the issue please submit a ticket.
-
-
;
+ ) : (!isLoading && !access) ?
+ (
+
+
Error loading page. You do not have sufficient permissions. Please open a ticket if you believe this is a mistake.
+
+ ) : (
+
+
Error loading page. Please submit a ticket.
+
+ );
};
\ No newline at end of file
diff --git a/CageUI/src/client/types/homeNavigationContextTypes.ts b/CageUI/src/client/types/homeNavigationContextTypes.ts
index a2c067177..816a746b8 100644
--- a/CageUI/src/client/types/homeNavigationContextTypes.ts
+++ b/CageUI/src/client/types/homeNavigationContextTypes.ts
@@ -20,15 +20,19 @@ import { SelectedPage } from './homeTypes';
import { Cage, Rack, RackGroup, Room, RoomMods } from './typings';
import { SetStateAction } from 'react';
import { GetUserPermissionsResponse } from '@labkey/api/dist/labkey/security/Permission';
+import * as React from 'react';
export interface HomeNavigationContextType {
selectedPage: SelectedPage;
selectedRoom: Room;
- setSelectedRoom: React.Dispatch
>;
+ selectedLocalRoom: Room;
+ setSelectedLocalRoom: React.Dispatch>;
selectedRoomMods: RoomMods;
selectedRackGroup: RackGroup;
selectedRack: Rack;
selectedCage: Cage;
navigateTo: (page: SelectedPage) => void;
userProfile: GetUserPermissionsResponse;
+ setIsNavLoading: React.Dispatch>;
+ isNavLoading: boolean;
}
\ No newline at end of file
diff --git a/CageUI/src/client/types/homeTypes.ts b/CageUI/src/client/types/homeTypes.ts
index 4b35b0db2..87be7b577 100644
--- a/CageUI/src/client/types/homeTypes.ts
+++ b/CageUI/src/client/types/homeTypes.ts
@@ -33,7 +33,7 @@ import { Option } from '@labkey/components';
export type SelectedViews = 'Home' | 'Room' | 'Rack' | 'Cage';
-export type ConnectedModType = Partial