"running" for two and a half minutes tells the user nothing. The job page now shows a spinner, the elapsed time, and the pipeline step Nextflow is actually on. - the API streams the Nextflow output into jobs.log as it arrives, instead of keeping it only when the run dies. Writes are throttled to one every 3s, or immediately when a new process starts, and are skipped for a job that has already finished, so a late line cannot overwrite the loader's result. - web/src/lib/progress.ts formats the elapsed time and picks the latest [PROCESS] line. No percentage: the pipeline cannot honestly estimate one. - the spinner animates only under prefers-reduced-motion: no-preference. Verified on a live run: the page showed "VEP (tiny)" for the duration, then the variant table replaced it on success. Tests: api 53, web 20; ruff, mypy, svelte-check clean.
38 lines
1008 B
JavaScript
38 lines
1008 B
JavaScript
// in dev, this makes Vite inject its client as this module's first dependency,
|
|
// so that global constant replacements are installed before any other module
|
|
// (including user hooks) evaluates. In build it's inert.
|
|
import.meta.hot;
|
|
|
|
|
|
|
|
|
|
export { matchers } from './matchers.js';
|
|
|
|
export const nodes = [
|
|
() => import('./nodes/0'),
|
|
() => import('./nodes/1')
|
|
];
|
|
|
|
export const server_loads = [];
|
|
|
|
export const dictionary = {
|
|
|
|
};
|
|
|
|
export const hooks = {
|
|
handleError: (({ error }) => { console.error(error) }),
|
|
|
|
reroute: (() => {}),
|
|
transport: {}
|
|
};
|
|
|
|
export const decoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.decode]));
|
|
export const encoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.encode]));
|
|
|
|
export const hash = false;
|
|
|
|
export const decode = (type, value) => decoders[type](value);
|
|
|
|
export { default as root } from '../root.js';
|
|
|
|
export const get_error_template = () => import('../shared/error-template.js').then(m => m.default); |