Sync OneOS workspace with new prototypes, annotations, and Gitea remote fix.
Add vehicle-h2-fee-ledger, customer-management, lease and self-operated ledgers, annotation sources, agent skills, and vite annotation runtime support. Update vehicle management, contract templates, and lease contract flows. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import {
|
||||
createAnnotationViewer,
|
||||
type AnnotationDirectoryRouteNode,
|
||||
type AnnotationSourceDocument,
|
||||
type ProtoDevState,
|
||||
} from '@axhub/annotation';
|
||||
import annotationSource from './annotation-source.json';
|
||||
|
||||
type PageId = 'overview' | 'states';
|
||||
|
||||
let currentPageId: PageId = 'overview';
|
||||
|
||||
function normalizePageId(value: unknown): PageId {
|
||||
return value === 'states' ? 'states' : 'overview';
|
||||
}
|
||||
|
||||
function renderPage(pageId: PageId): void {
|
||||
currentPageId = pageId;
|
||||
document.querySelectorAll<HTMLElement>('[data-page]').forEach((page) => {
|
||||
page.hidden = page.dataset.page !== pageId;
|
||||
});
|
||||
}
|
||||
|
||||
function renderState(state: ProtoDevState): void {
|
||||
const isFailure = state.result_state === 'failure';
|
||||
const label = document.querySelector('[data-result-label]');
|
||||
const title = document.querySelector('[data-result-title]');
|
||||
|
||||
if (label) label.textContent = isFailure ? '失败' : '成功';
|
||||
if (title) title.textContent = isFailure ? '发布失败' : '发布完成';
|
||||
}
|
||||
|
||||
const viewer = createAnnotationViewer({
|
||||
source: annotationSource as AnnotationSourceDocument,
|
||||
options: {
|
||||
getCurrentPageId: () => currentPageId,
|
||||
showToolbar: true,
|
||||
showThemeToggle: true,
|
||||
showColorFilter: true,
|
||||
onDirectoryRoute: (node: AnnotationDirectoryRouteNode) => {
|
||||
renderPage(normalizePageId(node.route));
|
||||
viewer.refresh();
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
document.querySelectorAll<HTMLButtonElement>('[data-route]').forEach((button) => {
|
||||
button.addEventListener('click', () => {
|
||||
renderPage(normalizePageId(button.dataset.route));
|
||||
viewer.refresh();
|
||||
});
|
||||
});
|
||||
|
||||
void viewer.start().then(() => {
|
||||
const attach = () => {
|
||||
const protoDev = window.__AXHUB_PROTO_DEV__;
|
||||
if (!protoDev) {
|
||||
window.setTimeout(attach, 80);
|
||||
return;
|
||||
}
|
||||
|
||||
renderState(protoDev.getState());
|
||||
protoDev.subscribe(() => renderState(protoDev.getState()));
|
||||
};
|
||||
|
||||
attach();
|
||||
});
|
||||
|
||||
renderPage(currentPageId);
|
||||
Reference in New Issue
Block a user