first commit
This commit is contained in:
52
frontend/src/module/release/model/release-view-model.js
Normal file
52
frontend/src/module/release/model/release-view-model.js
Normal file
@@ -0,0 +1,52 @@
|
||||
import { formatDateTime, statusTypeMap } from "@/module/experiment/model/experiment-view-model";
|
||||
|
||||
export const mapReleaseDetail = (item = {}) => ({
|
||||
id: item.id || "",
|
||||
experimentId: item.experiment_id || "",
|
||||
versionNo: item.version_no ?? 0,
|
||||
status: item.status || "draft",
|
||||
runtimePayload: item.runtime_payload || {},
|
||||
});
|
||||
|
||||
export const buildReleaseStatusTag = (status) => statusTypeMap[status] || "info";
|
||||
|
||||
export const buildReleaseTitle = (release) =>
|
||||
release?.versionNo ? `版本 v${release.versionNo}` : "未命名版本";
|
||||
|
||||
export const buildRuntimePayloadSummary = (payload = {}) => {
|
||||
const topLevelKeys = Object.keys(payload || {});
|
||||
const variants = Array.isArray(payload?.variants) ? payload.variants.length : 0;
|
||||
|
||||
return {
|
||||
keyCount: topLevelKeys.length,
|
||||
variants,
|
||||
keys: topLevelKeys,
|
||||
};
|
||||
};
|
||||
|
||||
export const buildReleaseReadiness = ({ release, payloadSummary }) => {
|
||||
if (!release?.id) {
|
||||
return {
|
||||
level: "warning",
|
||||
title: "版本尚未就緒",
|
||||
description: "先確認版本已建立,再進行執行內容與發佈檢查。",
|
||||
};
|
||||
}
|
||||
|
||||
if (payloadSummary.keyCount === 0) {
|
||||
return {
|
||||
level: "warning",
|
||||
title: "這個版本尚未包含執行內容",
|
||||
description: "先確認版本是否已正確建立執行內容,之後才能往發佈與套用驗證走。",
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
level: "ready",
|
||||
title: "這個版本已具備執行內容",
|
||||
description: "可以發佈此版本,讓頁面變更上線並開始追蹤成效。",
|
||||
};
|
||||
};
|
||||
|
||||
export const buildReleaseUpdatedHint = (value) =>
|
||||
value ? formatDateTime(value) : "目前尚未記錄更新時間";
|
||||
Reference in New Issue
Block a user