});
export enum TreeItemStatus {
- Initial,
- Pending,
- Loaded
+ INITIAL,
+ PENDING,
+ LOADED
}
export interface TreeItem<T> {
open: boolean;
active: boolean;
status: TreeItemStatus;
- toggled?: boolean;
items?: Array<TreeItem<T>>;
}
<ListItem button className={list} style={{ paddingLeft: (level + 1) * 20 }}
onClick={() => toggleItemActive(it.id, it.status)}
onContextMenu={this.handleRowContextMenu(it)}>
- {it.status === TreeItemStatus.Pending ?
+ {it.status === TreeItemStatus.PENDING ?
<CircularProgress size={10} className={loader} /> : null}
<i onClick={() => this.props.toggleItemOpen(it.id, it.status)}
className={toggableIconContainer}>
<ListItemIcon className={this.getToggableIconClassNames(it.open, it.active)}>
- {it.toggled && it.items && it.items.length === 0 ? <span /> : <SidePanelRightArrowIcon />}
+ {it.status !== TreeItemStatus.Initial && it.items && it.items.length === 0 ? <span /> : <SidePanelRightArrowIcon />}
</ListItemIcon>
</i>
{render(it, level)}
export const getResourceUrl = <T extends Resource>(resource: T): string => {
switch (resource.kind) {
- case ResourceKind.Project: return `/projects/${resource.uuid}`;
- case ResourceKind.Collection: return `/collections/${resource.uuid}`;
+ case ResourceKind.PROJECT: return `/projects/${resource.uuid}`;
+ case ResourceKind.COLLECTION: return `/collections/${resource.uuid}`;
default: return resource.href;
}
};
if (treeItem) {
- if (itemMode === ItemMode.OPEN || itemMode === ItemMode.BOTH) {
- dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM_OPEN(treeItem.data.uuid));
- }
-
const resourceUrl = getResourceUrl(treeItem.data);
if (itemMode === ItemMode.ACTIVE || itemMode === ItemMode.BOTH) {
dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM_ACTIVE(treeItem.data.uuid));
}
- const promise = treeItem.status === TreeItemStatus.Loaded
+ const promise = treeItem.status === TreeItemStatus.LOADED
? Promise.resolve()
: dispatch<any>(getProjectList(itemId));
promise
.then(() => dispatch<any>(() => {
+ if (itemMode === ItemMode.OPEN || itemMode === ItemMode.BOTH) {
+ dispatch(projectActions.TOGGLE_PROJECT_TREE_ITEM_OPEN(treeItem.data.uuid));
+ }
dispatch(dataExplorerActions.RESET_PAGINATION({id: PROJECT_PANEL_ID}));
dispatch(dataExplorerActions.REQUEST_ITEMS({id: PROJECT_PANEL_ID}));
}));
id: "2",
items: [],
data: mockProjectResource({ uuid: "2" }),
- status: 0
+ status: TreeItemStatus.Initial
}
],
currentItemId: "",
id: "1",
open: true,
active: true,
- status: 1
+ status: TreeItemStatus.Pending
}],
currentItemId: "1",
creator: { opened: false, pending: false, ownerUuid: "" },
id: "1",
open: true,
active: false,
- status: 1
+ status: TreeItemStatus.Pending
}],
currentItemId: "",
creator: { opened: false, pending: false, ownerUuid: "" },
id: "1",
open: true,
active: false,
- status: 1
+ status: TreeItemStatus.Pending
}],
currentItemId: "1",
creator: { opened: false, pending: false, ownerUuid: "" }
id: "1",
open: true,
active: true,
- status: 1,
- toggled: true
+ status: TreeItemStatus.Pending,
}],
currentItemId: "1",
creator: { opened: false, pending: false, ownerUuid: "" },
id: "1",
open: true,
active: false,
- status: 1,
- toggled: false,
+ status: TreeItemStatus.Pending,
}],
currentItemId: "1",
creator: { opened: false, pending: false, ownerUuid: "" }
id: "1",
open: false,
active: false,
- status: 1,
- toggled: true
+ status: TreeItemStatus.Pending,
}],
currentItemId: "1",
creator: { opened: false, pending: false, ownerUuid: "" },
active: false,
data: "",
open: false,
- status: TreeItemStatus.Initial
+ status: TreeItemStatus.INITIAL
});
it("should return an array that matches path to the given item", () => {
if (parentItemId) {
treeItem = findTreeItem(tree, parentItemId);
if (treeItem) {
- treeItem.status = TreeItemStatus.Loaded;
+ treeItem.status = TreeItemStatus.LOADED;
}
}
const items = projects.map(p => ({
id: p.uuid,
open: false,
active: false,
- status: TreeItemStatus.Initial,
+ status: TreeItemStatus.INITIAL,
data: p,
items: []
} as TreeItem<ProjectResource>));
const items = _.cloneDeep(state.items);
const item = findTreeItem(items, itemId);
if (item) {
- item.status = TreeItemStatus.Pending;
+ item.status = TreeItemStatus.PENDING;
state.items = items;
}
return { ...state, items };
const items = _.cloneDeep(state.items);
const item = findTreeItem(items, itemId);
if (item) {
- item.toggled = true;
item.open = !item.open;
}
return {
resetTreeActivity(items);
const item = findTreeItem(items, itemId);
if (item) {
- item.toggled = true;
item.active = true;
}
return {