- 계산 환경을 기본값으로 저장해 새 내역서에 적용 - 저장 작업을 data/removed 로 옮겨 목록에서만 뺌 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
70 lines
2.5 KiB
JavaScript
70 lines
2.5 KiB
JavaScript
// 원본 환경설정 「기본환경으로설정」(TfrmOption btnSave)과 최근공사목록 「목록에서삭제」(TfrmWorkFileList btnDelete).
|
|
// 기본환경: 현재 계산 환경 값을 서버 양식 보관함(종류 options, 이름 「기본환경」)에 두고 새 내역서를 만들 때 덮어 쓴다.
|
|
// 목록에서 삭제: 원본은 최근 목록에서만 빼므로, 웹은 저장 파일을 data/removed/ 로 옮겨 목록에서만 사라지게 한다(지우지 않음).
|
|
const EstDefaults = (() => {
|
|
const keys = [
|
|
"HeadDigits",
|
|
"EstDigits",
|
|
"CostValueTrunc",
|
|
"MidCostDiget",
|
|
"TotalFix",
|
|
"TotalFit",
|
|
"DollarCostCut",
|
|
"JDLCalcMethod",
|
|
"GCToWonga",
|
|
"GangubExceptJodalRatio",
|
|
"EstLeftSpace",
|
|
"GitaGCRatio",
|
|
"GitaBaseRatio",
|
|
"AnjunBaseCost",
|
|
];
|
|
const NAME = "기본환경";
|
|
const post = (body) => ({
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify(body),
|
|
});
|
|
|
|
function pick(options) {
|
|
return Object.fromEntries(
|
|
keys.filter((k) => options?.[k] !== undefined).map((k) => [k, options[k]]),
|
|
);
|
|
}
|
|
async function saved() {
|
|
return (await EstApp.api("/api/forms")).find((f) => f.kind === "options" && f.name === NAME)
|
|
?.data;
|
|
}
|
|
async function applyNew() {
|
|
const data = await saved();
|
|
if (data) EstApp.change((project) => Object.assign(project.options, pick(data)));
|
|
return Boolean(data);
|
|
}
|
|
|
|
async function run(name, state, node) {
|
|
if (name === "options-save-default") {
|
|
if (!confirm("현재 계산 환경을 새 내역서의 기본환경으로 설정하시겠습니까?")) return;
|
|
await EstApp.api(
|
|
"/api/forms",
|
|
post({ kind: "options", name: NAME, data: pick(state.project.options) }),
|
|
);
|
|
state.notice = "기본환경으로 설정했습니다. 새 내역서에 적용됩니다.";
|
|
} else if (name === "project-hide") {
|
|
if (!confirm("이 작업을 목록에서 빼시겠습니까? 파일은 data/removed 에 남습니다.")) return;
|
|
await EstApp.api(`/api/projects/${node.dataset.id}/hide`, { method: "POST" });
|
|
EstApp.byId("dialog").close();
|
|
state.notice = "목록에서 뺐습니다.";
|
|
}
|
|
EstApp.render();
|
|
}
|
|
function handle(name, state, node) {
|
|
if (name !== "options-save-default" && name !== "project-hide") return false;
|
|
run(name, state, node).catch((error) => {
|
|
state.notice = error.message;
|
|
EstApp.render();
|
|
});
|
|
return true;
|
|
}
|
|
|
|
return { keys, pick, applyNew, handle };
|
|
})();
|