forgejo/web_src/js/features/repo-action-view.ts
2025-10-04 19:56:38 -06:00

56 lines
2.8 KiB
TypeScript

import {createApp} from 'vue';
export async function initRepositoryActionView() {
const el = document.getElementById('repo-action-view');
if (!el) return;
const {default: RepoActionView} = await import(/* webpackChunkName: "repo-action-view" */'../components/RepoActionView.vue');
// TODO: the parent element's full height doesn't work well now,
// but we can not pollute the global style at the moment, only fix the height problem for pages with this component
const parentFullHeight = document.querySelector('body > div.full.height') as HTMLDivElement;
if (parentFullHeight) parentFullHeight.style.paddingBottom = '0';
const initialJobData = JSON.parse(el.getAttribute('data-initial-post-response'));
const initialArtifactData = JSON.parse(el.getAttribute('data-initial-artifacts-response'));
const view = createApp(RepoActionView, {
initialJobData,
initialArtifactData,
runIndex: el.getAttribute('data-run-index'),
runID: el.getAttribute('data-run-id'),
jobIndex: el.getAttribute('data-job-index'),
attemptNumber: el.getAttribute('data-attempt-number'),
actionsURL: el.getAttribute('data-actions-url'),
workflowName: el.getAttribute('data-workflow-name'),
workflowURL: el.getAttribute('data-workflow-url'),
locale: {
approve: el.getAttribute('data-locale-approve'),
cancel: el.getAttribute('data-locale-cancel'),
rerun: el.getAttribute('data-locale-rerun'),
artifactsTitle: el.getAttribute('data-locale-artifacts-title'),
areYouSure: el.getAttribute('data-locale-are-you-sure'),
confirmDeleteArtifact: el.getAttribute('data-locale-confirm-delete-artifact'),
rerun_all: el.getAttribute('data-locale-rerun-all'),
showTimeStamps: el.getAttribute('data-locale-show-timestamps'),
showLogSeconds: el.getAttribute('data-locale-show-log-seconds'),
showFullScreen: el.getAttribute('data-locale-show-full-screen'),
downloadLogs: el.getAttribute('data-locale-download-logs'),
runAttemptLabel: el.getAttribute('data-locale-run-attempt-label'),
viewingOutOfDateRun: el.getAttribute('data-locale-viewing-out-of-date-run'),
viewMostRecentRun: el.getAttribute('data-locale-view-most-recent-run'),
preExecutionError: el.getAttribute('data-locale-pre-execution-error'),
status: {
unknown: el.getAttribute('data-locale-status-unknown'),
waiting: el.getAttribute('data-locale-status-waiting'),
running: el.getAttribute('data-locale-status-running'),
success: el.getAttribute('data-locale-status-success'),
failure: el.getAttribute('data-locale-status-failure'),
cancelled: el.getAttribute('data-locale-status-cancelled'),
skipped: el.getAttribute('data-locale-status-skipped'),
blocked: el.getAttribute('data-locale-status-blocked'),
},
},
});
view.mount(el);
}