import { RouteComponentProps } from 'react-router';
import { DataTableFilterItem } from '~/components/data-table-filters/data-table-filters';
import { SortDirection } from '~/components/data-table/data-column';
-import { ResourceKind } from '~/models/resource';
+import { ResourceKind, EditableResource } from '~/models/resource';
import { ArvadosTheme } from '~/common/custom-theme';
import { FAVORITE_PANEL_ID } from "~/store/favorite-panel/favorite-panel-action";
import {
ResourceType
} from '~/views-components/data-explorer/renderers';
import { FavoriteIcon } from '~/components/icon/icon';
-import { Dispatch } from 'redux';
import { openContextMenu, resourceKindToContextMenuKind } from '~/store/context-menu/context-menu-actions';
import { loadDetailsPanel } from '~/store/details-panel/details-panel-action';
import { navigateTo } from '~/store/navigation/navigation-action';
import { DataTableDefaultView } from '~/components/data-table-default-view/data-table-default-view';
import { createTree } from '~/models/tree';
import { getSimpleObjectTypeFilters } from '~/store/resource-type-filters/resource-type-filters';
+import { getResourceWithEditableStatus, ResourcesState } from '~/store/resources/resources';
+import { ProjectResource } from '~/models/project';
type CssRules = "toolbar" | "button";
},
{
name: FavoritePanelColumnNames.OWNER,
- selected: true,
+ selected: false,
configurable: true,
filters: createTree(),
render: uuid => <ResourceOwner uuid={uuid} />
interface FavoritePanelDataProps {
favorites: FavoritesState;
+ resources: ResourcesState;
isAdmin: boolean;
+ userUuid: string;
}
interface FavoritePanelActionProps {
}
const mapStateToProps = (state : RootState): FavoritePanelDataProps => ({
favorites: state.favorites,
- isAdmin: state.auth.user!.isAdmin
+ resources: state.resources,
+ isAdmin: state.auth.user!.isAdmin,
+ userUuid: state.auth.user!.uuid,
});
type FavoritePanelProps = FavoritePanelDataProps & FavoritePanelActionProps & DispatchProp
class extends React.Component<FavoritePanelProps> {
handleContextMenu = (event: React.MouseEvent<HTMLElement>, resourceUuid: string) => {
- const menuKind = resourceKindToContextMenuKind(resourceUuid, this.props.isAdmin);
+ const { isAdmin, userUuid, resources } = this.props;
+ const resource = getResourceWithEditableStatus<ProjectResource & EditableResource>(resourceUuid, userUuid)(resources);
+ const menuKind = resourceKindToContextMenuKind(resourceUuid, isAdmin, (resource || {} as EditableResource).isEditable);
if (menuKind) {
this.props.dispatch<any>(openContextMenu(event, {
name: '',
}
handleRowClick = (uuid: string) => {
- this.props.dispatch(loadDetailsPanel(uuid));
+ this.props.dispatch<any>(loadDetailsPanel(uuid));
}
render() {