Skip to content

Commit 9bf1582

Browse files
Results editor bug fix and disable save button during save
1 parent 9ee00ae commit 9bf1582

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

builder-frontend/src/components/project/ResultsEditor.jsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { createSignal, For, onMount } from "solid-js";
22
import { updateScreener } from "../../api/screener";
3-
import { json } from "@solidjs/router";
43
import { parseStringPromise } from "xml2js";
54

65
async function getDecisionNames(dmnXmlString) {
@@ -26,8 +25,9 @@ async function getDecisionNames(dmnXmlString) {
2625
}
2726

2827
export default function ResultsEditor({ project, dmnModel }) {
29-
const [benefits, setBenefits] = createSignal(project().resultsSchema);
28+
const [benefits, setBenefits] = createSignal(project().resultsSchema ?? []);
3029
const [decisionOptions, setDecisionOptions] = createSignal([]);
30+
const [isSaving, setIsSaving] = createSignal(false);
3131

3232
onMount(async () => {
3333
const names = await getDecisionNames(dmnModel());
@@ -112,6 +112,7 @@ export default function ResultsEditor({ project, dmnModel }) {
112112

113113
const handleSave = async (e) => {
114114
e.preventDefault(); // prevent page reload
115+
setIsSaving(true);
115116
const formData = benefits();
116117

117118
const resultsSchema = formData.map((benefit) => ({
@@ -127,7 +128,13 @@ export default function ResultsEditor({ project, dmnModel }) {
127128

128129
let projectData = project();
129130
projectData.resultsSchema = resultsSchema;
130-
await updateScreener(projectData);
131+
try {
132+
await updateScreener(projectData);
133+
} catch (error) {
134+
console.debug("Error saving results schema: ", error);
135+
} finally {
136+
setIsSaving(false);
137+
}
131138
};
132139

133140
return (
@@ -268,8 +275,9 @@ export default function ResultsEditor({ project, dmnModel }) {
268275
</For>
269276
<button
270277
onClick={handleSave}
278+
disabled={isSaving()}
271279
type="submit"
272-
class="w-60 mt-4 border-1 border-emerald-500 text-emerald-500 px-4 py-2 rounded hover:bg-emerald-100"
280+
class="w-60 mt-4 border-1 border-emerald-500 text-emerald-500 px-4 py-2 rounded hover:bg-emerald-100 disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-gray-100"
273281
>
274282
Save Result Schema
275283
</button>

0 commit comments

Comments
 (0)