Spaces:
Running
Running
File size: 1,442 Bytes
b39afbe |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
/**
* Copyright (c) 2023 MERCENARIES.AI PTE. LTD.
* All rights reserved.
*/
import { ChatRenderer } from 'omni-client-services';
// A chat extension to render a onmitool job object
class OnmiJobRenderer extends ChatRenderer {
constructor(id?: string, opts?: any) {
super({ id: id ?? 'omni/job' }, opts);
}
render(content: { type: string; value: any }): string {
const jobId: number = content.value;
return `<div class='flex flex-col flex-wrap gap-1' x-data="{job: client.jobs.jobStorage['${jobId}']}"
:class='{"text-gray-800": job.state == "running", "text-green-800": job.state === "success", "text-red-800": job.state == "error"}'
x-effect="() => {
if (job.state === 'success' || job.state === 'error') { $nextTick(() => onAsyncJobStatusEffectHandler($el, job)) }
}"
>
<div class="flex">
<span x-text="workbench.getNickname(job.workflowId) || job.meta?.name || job.id">:</span>
(<span class="flex" x-text="job.activity"></span>)
</div>
<template x-for="(nodeId, idx) in job.activeNode" :key='idx'>
<div class="text-blue-500" x-text="job.nodeDescriptionFromId(nodeId)"></div>
</template>
<template x-for="(error, idx) in job.errors" :key='idx'>
<div class="text-red-500" x-text="error.nodeName +': '+ error.message"></div>
</template>
</div>`;
}
}
export default OnmiJobRenderer;
|