diff --git a/databindingsHandler.js b/databindingsHandler.js index a43298d..f948dd3 100644 --- a/databindingsHandler.js +++ b/databindingsHandler.js @@ -141,9 +141,10 @@ function bindDataToFields(formJson, fetchedData, params = {}) { function processItemsForDatabinding(items) { items.forEach(field => { + const fieldId = field?.id ? field.id : field?.uuid; // containers - if (field.type === 'container' && field.containerItems) { - return processItemsForDatabinding(field.containerItems); + if (field.type === 'container' && (field.containerItems || field.children)) { + return field.containerItems ? processItemsForDatabinding(field.containerItems) : processItemsForDatabinding(field.children); } // groups @@ -152,12 +153,12 @@ function bindDataToFields(formJson, fetchedData, params = {}) { // repeatable group const binding = Array.isArray(field.databindings) ? field.databindings[0] : field.databindings || null; const rows = binding ? JSONPath({ path: binding.path, json: fetchedData }) || [] : []; - formData[field.id] = bindRowsToGroup(field, rows); + formData[fieldId] = bindRowsToGroup(field, rows); } else { // single-instance group const binding = Array.isArray(field.databindings) ? field.databindings[0]: field.databindings || null; const rows = binding? (JSONPath({ path: binding.path, json: fetchedData }) || []).slice(0, 1) : [{}]; - formData[field.id] = bindRowsToGroup(field, rows); + formData[fieldId] = bindRowsToGroup(field, rows); } return; } @@ -165,7 +166,7 @@ function bindDataToFields(formJson, fetchedData, params = {}) { //Single fields if (field.databindings) { const raw = getBindingValue(field.databindings, fetchedData, params); - formData[field.id] = raw != null ? transformValueToBindIfNeeded(field, raw) : null; + formData[fieldId] = raw != null ? transformValueToBindIfNeeded(field, raw) : null; } }); }; diff --git a/dictionary/interfaces.js b/dictionary/interfaces.js index 6a21be3..2b709f1 100644 --- a/dictionary/interfaces.js +++ b/dictionary/interfaces.js @@ -73,6 +73,58 @@ const interfaces = { ] + }, + CAREGIVER: { + interface: [ + { + mode: [ + "portalNew", + "portalEdit" + ], + type: "button", + label: "Save", + style: "", + actions: [ + { + script: "setFormErrors({});if (!validateAllFields()){ window.parent.postMessage(JSON.stringify({ \"event\": \"errorOnSave\" }), \"*\"); return true; }", + action_type: "javascript" + }, + { + body: "tokenId: params[\"id\"],savedForm: JSON.stringify(createSavedData())", + path: "/application-forms/saveDraft", + type: "POST", + api_path: "API.saveButtonAction", + action_type: "endpoint" + } + ] + }, + { + mode: [ + "portalNew", + "portalEdit" + ], + type: "button", + label: "Complete", + style: "", + actions: [ + { + script: "setFormErrors({});if (!validateAllFields()){ window.parent.postMessage(JSON.stringify({ \"event\": \"errorOnComplete\" }), \"*\"); return false; }", + action_type: "javascript" + }, + { + body: "tokenId: params[\"id\"],savedForm: JSON.stringify(createSavedData())", + path: "/application-forms/submit", + type: "POST", + api_path: "API.saveButtonAction", + action_type: "endpoint" + }, + { + script: "await handleSubmit();", + action_type: "javascript" + } + ] + } + ] } }; diff --git a/helm/templates/hpa.yaml b/helm/templates/hpa.yaml new file mode 100644 index 0000000..cf69bd9 --- /dev/null +++ b/helm/templates/hpa.yaml @@ -0,0 +1,24 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: communication-layer-hpa +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: communication-layer + minReplicas: 1 + maxReplicas: 3 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 75 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 75 diff --git a/helm/values.yaml b/helm/values.yaml index 56ee505..eaab3d8 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -1,26 +1,26 @@ -replicaCount: 2 - -image: - repository: ghcr.io/bcgov/communication-layer - tag: latest - pullPolicy: Always - -service: - type: ClusterIP - port: 3030 - -configMapName: commlayer - -resources: - requests: - memory: "128Mi" - cpu: "50m" - limits: - memory: "512Mi" - cpu: "250m" - -nodeSelector: {} - -tolerations: [] - -affinity: {} +replicaCount: 1 + +image: + repository: ghcr.io/bcgov/communication-layer + tag: latest + pullPolicy: Always + +service: + type: ClusterIP + port: 3030 + +configMapName: commlayer + +resources: + requests: + memory: "128Mi" + cpu: "50m" + limits: + memory: "512Mi" + cpu: "250m" + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/saveICMdataHandler.js b/saveICMdataHandler.js index d512b26..cd21527 100644 --- a/saveICMdataHandler.js +++ b/saveICMdataHandler.js @@ -68,6 +68,7 @@ async function getICMAttachmentStatus(attachment_id, username, params) { async function saveICMdata(req, res) { try { let params = req.body; + console.log("Req for Save:",params); const rawHost = (req.get("X-Original-Server") || req.hostname); const configOpt = appCfg[rawHost] || Object.values(appCfg).find(cfg => { try { @@ -77,6 +78,7 @@ async function saveICMdata(req, res) { } }) || {}; params = { ...params,...configOpt }; + console.log("Params for Save:",params); const attachment_id = params["attachmentId"]; const savedFormParam = params["savedForm"]; diff --git a/schema/form_definitionV2.yaml b/schema/form_definitionV2.yaml index fd49672..c5a1ee1 100644 --- a/schema/form_definitionV2.yaml +++ b/schema/form_definitionV2.yaml @@ -33,6 +33,8 @@ properties: type: object default: [] data: + type: array + form_data: type: object properties: form_id: diff --git a/validate.js b/validate.js index cd538d9..4c66e10 100644 --- a/validate.js +++ b/validate.js @@ -17,7 +17,9 @@ function validateJson(jsonData) { * Kiln V1 uses data: { items: []} * Kiln V2 uses dataSources [] */ - const kilnVersion = Object.keys(jsonData["data"]).includes("items") ? 1 : 2; + const kilnVersion = Object.keys(jsonData["data"]).includes("items") ? 1 + : Object.keys(jsonData?.["form_definition"]["data"]).includes("items") ? 1 + : 2; const schema = loadSchema("schema/saved_json.yaml"); const formDefinitionSchema = kilnVersion === 1 ? loadSchema("schema/form_definition.yaml") : loadSchema("schema/form_definitionV2.yaml");