});
});
- describe.only('Frozen projects', () => {
+ describe('Frozen projects', () => {
beforeEach(() => {
cy.createGroup(activeUser.token, {
name: `Main project ${Math.floor(Math.random() * 999999)}`,
cy.get('[data-cy=project-panel]').contains(mainProject.name).rightclick();
- cy.get('[data-cy=context-menu]').contains('Lock').click();
+ cy.get('[data-cy=context-menu]').contains('Freeze').click();
cy.get('[data-cy=project-panel]').contains(mainProject.name).rightclick();
- cy.get('[data-cy=context-menu]').contains('Lock').should('not.exist');
+ cy.get('[data-cy=context-menu]').contains('Freeze').should('not.exist');
});
});
cy.get('[data-cy=project-panel]').contains(mainProject.name).rightclick();
- cy.get('[data-cy=context-menu]').contains('Lock').click();
+ cy.get('[data-cy=context-menu]').contains('Freeze').click();
cy.get('[data-cy=project-panel]').contains(mainProject.name).click();
cy.get('main').contains(adminProject.name).rightclick();
- cy.get('[data-cy=context-menu]').contains('Lock').click();
+ cy.get('[data-cy=context-menu]').contains('Freeze').click();
cy.get('main').contains(adminProject.name).rightclick();
- cy.get('[data-cy=context-menu]').contains('Lock').should('exist');
+ cy.get('[data-cy=context-menu]').contains('Freeze').should('exist');
});
});
cy.get('main').contains(adminProject.name).rightclick();
- cy.get('[data-cy=context-menu]').contains('Lock').click();
+ cy.get('[data-cy=context-menu]').contains('Freeze').click();
cy.wait(1000);
cy.get('main').contains(adminProject.name).rightclick();
- cy.get('[data-cy=context-menu]').contains('Unlock').click();
+ cy.get('[data-cy=context-menu]').contains('Unfreeze').click();
cy.get('main').contains(adminProject.name).rightclick();
- cy.get('[data-cy=context-menu]').contains('Lock').should('exist');
+ cy.get('[data-cy=context-menu]').contains('Freeze').should('exist');
});
});
});
import ChevronRightIcon from '@material-ui/icons/ChevronRight';
import { withStyles } from '@material-ui/core';
import { IllegalNamingWarning } from '../warning/warning';
-import { IconType } from 'components/icon/icon';
+import { IconType, LockIcon } from 'components/icon/icon';
import grey from '@material-ui/core/colors/grey';
export interface Breadcrumb {
label: string;
icon?: IconType;
+ isFrozen?: boolean;
}
type CssRules = "item" | "currentItem" | "label" | "icon";
onClick={() => onClick(item)}
onContextMenu={event => onContextMenu(event, item)}>
<Icon className={classes.icon} />
+ {
+ item.isFrozen ? <LockIcon className={classes.icon} /> : null
+ }
<Typography
noWrap
color="inherit"
--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { propertiesActions } from "store/properties/properties-actions";
+import { BREADCRUMBS } from "./breadcrumbs-actions";
+
+export const breadcrumbsMiddleware = store => next => action => {
+ propertiesActions.match(action, {
+ SET_PROPERTY: () => {
+
+ if (action.payload.key === BREADCRUMBS && Array.isArray(action.payload.value)) {
+ action.payload.value = action.payload
+ .value.map((value)=> ({ ...value, isFrozen: !!store.getState().resources[value.uuid]?.frozenByUuid }));
+ }
+
+ next(action);
+ },
+ default: () => next(action)
+ });
+};
import { Config } from 'common/config';
import { pluginConfig } from 'plugins';
import { MiddlewareListReducer } from 'common/plugintypes';
+import { breadcrumbsMiddleware } from './breadcrumbs/breadcrumbs-middleware';
declare global {
interface Window {
publicFavoritesMiddleware,
collectionsContentAddress,
subprocessMiddleware,
+ breadcrumbsMiddleware,
];
const reduceMiddlewaresFn: (a: Middleware[],