11import { createSignal , For , onMount } from "solid-js" ;
22import { updateScreener } from "../../api/screener" ;
3- import { json } from "@solidjs/router" ;
43import { parseStringPromise } from "xml2js" ;
54
65async function getDecisionNames ( dmnXmlString ) {
@@ -26,8 +25,9 @@ async function getDecisionNames(dmnXmlString) {
2625}
2726
2827export 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