in client/src/components/pipelines/PipelinesLibrary.js [721:848]
async reloadTree (reload, folderToReload) {
const parts = this.props.path.split('/');
let metadataClass,
selectedKey,
history,
metadata;
const [
placeholderOrPipelineId,
idOrVersionName,
section,
subSection
] = parts;
if ((placeholderOrPipelineId || '').toLowerCase() === 'folder') {
history = /^history$/i.test(section);
metadata = /^metadata$/i.test(section);
if (metadata && subSection) {
metadataClass = subSection;
}
}
let rootItems = this.state.rootItems || [];
let selectedItem;
const findVersionFn = (parentPipeline) => {
if (idOrVersionName) {
for (let i = 0; i < parentPipeline.children.length; i++) {
const child = parentPipeline.children[i];
if (child.type === ItemTypes.version &&
child.name.toLowerCase() === idOrVersionName.toLowerCase()) {
selectedKey = child.key;
break;
}
}
}
if (!selectedKey) {
selectedKey = parentPipeline.key;
}
};
switch ((placeholderOrPipelineId || '').toLowerCase()) {
case 'storage':
if (idOrVersionName) {
selectedKey = `${ItemTypes.storage}_${idOrVersionName}`;
}
break;
case 'configuration':
if (idOrVersionName) {
selectedKey = `${ItemTypes.configuration}_${idOrVersionName}`;
}
break;
case 'metadata':
if (idOrVersionName) {
selectedKey = `${ItemTypes.metadata}_${idOrVersionName}metadataFolder${metadataClass}`;
}
break;
case 'pipelines':
selectedKey = `${ItemTypes.folder}_pipelines`;
break;
case 'storages':
selectedKey = `${ItemTypes.folder}_storages`;
break;
case 'vs':
selectedKey = `${ItemTypes.versionedStorage}_${idOrVersionName}`;
break;
case 'folder':
case 'library':
case '':
if (idOrVersionName) {
selectedKey = `${ItemTypes.folder}_${idOrVersionName}`;
} else {
selectedKey = `${ItemTypes.folder}_root`;
}
break;
default:
selectedKey = `${ItemTypes.pipeline}_${placeholderOrPipelineId}`;
break;
}
if (reload || rootItems.length === 0) {
await this.props.pipelinesLibrary.fetch();
const rootElements = [{
id: 'pipelines',
name: `All ${this.localizedString('pipeline')}s`
}, {
id: 'storages',
name: 'All storages'
}, {
id: 'root',
name: 'Library',
...this.props.pipelinesLibrary.value
}];
rootItems = generateTreeData(
{childFolders: rootElements},
{
filter: this.props.hiddenObjectsTreeFilter(),
sortRoot: false
}
);
const savedExpandedKeys = this.savedExpandedKeys;
if (savedExpandedKeys.length > 0) {
expandItemsByKeys(rootItems, savedExpandedKeys);
} else {
expandFirstParentWithManyChildren(rootItems[0]);
}
}
await this.reloadItem(selectedKey, undefined, rootItems, false);
if (folderToReload) {
await this.reloadItem(`${ItemTypes.folder}_${folderToReload}`, undefined, rootItems, false);
}
if ((placeholderOrPipelineId || '').toLowerCase() === 'folder' && idOrVersionName && history) {
selectedKey = `${ItemTypes.projectHistory}_${idOrVersionName}`;
}
if ((placeholderOrPipelineId || '').toLowerCase() === 'folder' && idOrVersionName && metadata) {
if (metadataClass) {
selectedKey = `${ItemTypes.metadata}_${idOrVersionName}/metadata/${metadataClass}`;
} else {
selectedKey = `${ItemTypes.metadataFolder}_${idOrVersionName}/metadata`;
}
}
selectedItem = getTreeItemByKey(selectedKey, rootItems);
if (selectedItem) {
if (selectedItem.type === ItemTypes.pipeline) {
findVersionFn(selectedItem);
}
expandItem(selectedItem, true);
}
this.setState({
rootItems: rootItems,
selectedKeys: selectedKey ? [selectedKey] : [],
expandedKeys: getExpandedKeys(rootItems)
});
}