in client/src/components/runs/actions/run.js [114:196]
export function openReRunForm (run, props) {
const {
router,
routing,
pipelines
} = props;
let push;
if (router && typeof router.push === 'function') {
push = router.push.bind(router);
}
if (routing && typeof routing.push === 'function') {
push = routing.push.bind(routing);
}
if (!run || !push) {
return Promise.resolve();
}
const wrapPipelineInfoPromise = (pipelineRequest, callback) => new Promise((resolve, reject) => {
pipelineRequest
.fetch()
.then(() => {
if (pipelineRequest.error || !pipelineRequest.loaded) {
throw new Error();
}
resolve(pipelineRequest.value);
})
.catch(reject)
.then(() => callback && callback());
});
return new Promise((resolve) => {
const {
pipelineId,
version: runVersion,
id,
configName
} = run;
Promise.resolve()
.then(() => {
if (pipelines && pipelineId) {
const hide = message.loading('Fetching pipeline info...', 0);
return wrapPipelineInfoPromise(
pipelines.getPipeline(pipelineId),
hide
);
} else {
return Promise.resolve();
}
})
.then((pipelineInfo) => {
if (pipelineInfo) {
return Promise.resolve({
pipelineInfo,
versionedStorage: /^versioned_storage$/i.test(pipelineInfo.pipelineType)
});
}
return Promise.resolve();
})
.catch(() => Promise.resolve())
.then((options) => {
const {
versionedStorage = false,
pipelineInfo
} = options || {};
let link;
const version = versionedStorage && pipelineInfo?.currentVersion?.name
? pipelineInfo.currentVersion.name
: runVersion;
const query = versionedStorage ? `?vs=true` : '';
if (pipelineId && version && id) {
link = `/launch/${pipelineId}/${version}/${configName || 'default'}/${id}${query}`;
} else if (pipelineId && version && configName) {
link = `/launch/${pipelineId}/${version}/${configName}${query}`;
} else if (pipelineId && version) {
link = `/launch/${pipelineId}/${version}/default${query}`;
} else if (id) {
link = `/launch/${id}${query}`;
}
if (link) {
push(link);
}
resolve(link);
});
});
}