From edefd564c6ca3ee1c05281fb7d62e7c128186ea9 Mon Sep 17 00:00:00 2001 From: Adam Davies <97108643+adamdavies1@users.noreply.github.com> Date: Mon, 17 Apr 2023 15:25:15 +0100 Subject: [PATCH] Fs 2368 add another data (#148) * Use of a json format now works * Data type added for component * AddAnother data is now sent as json object * revert * Upgrading version --------- Co-authored-by: adamdavies1 --- .github/workflows/dluhc-build-and-publish.yml | 2 +- model/src/components/types.ts | 4 ++++ runner/src/server/forms/test.json | 2 +- .../server/plugins/engine/components/MultiInputField.ts | 7 +++++-- runner/src/server/plugins/engine/components/types.ts | 3 ++- .../plugins/engine/models/submission/WebhookModel.ts | 2 ++ .../engine/pageControllers/RepeatingFieldPageController.ts | 1 + 7 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dluhc-build-and-publish.yml b/.github/workflows/dluhc-build-and-publish.yml index 41c14dc223..bd9aad6fc6 100644 --- a/.github/workflows/dluhc-build-and-publish.yml +++ b/.github/workflows/dluhc-build-and-publish.yml @@ -13,7 +13,7 @@ on: ] env: - VERSION: "0.1.52" # Manually increment this version when pushing to main + VERSION: "0.1.53" # Manually increment this version when pushing to main IMAGE_NAME_STUB: "digital-form-builder-dluhc-" DOCKER_REGISTRY: ghcr.io IMAGE_REPO_PATH: "ghcr.io/${{github.repository_owner}}" diff --git a/model/src/components/types.ts b/model/src/components/types.ts index d285e74809..bccd50f25a 100644 --- a/model/src/components/types.ts +++ b/model/src/components/types.ts @@ -322,6 +322,10 @@ export interface SelectFieldComponent extends ListFieldBase { export interface MultiInputFieldComponent extends TextFieldBase { type: "MultiInputField"; + options: TextFieldBase["options"] & { + textFieldTitle?: string; + numberFieldTitle?: string; + }; } export type ComponentDef = diff --git a/runner/src/server/forms/test.json b/runner/src/server/forms/test.json index 2fc8c7b498..bc6b102985 100644 --- a/runner/src/server/forms/test.json +++ b/runner/src/server/forms/test.json @@ -481,7 +481,7 @@ "title": "Update form in application store", "type": "savePerPage", "outputConfiguration": { - "savePerPageUrl": "https://webhook.site/ba83e49b-cdd1-46e9-9c04-c89cfa651752" + "savePerPageUrl": "True" } } ], diff --git a/runner/src/server/plugins/engine/components/MultiInputField.ts b/runner/src/server/plugins/engine/components/MultiInputField.ts index ab41c7b7e4..51376fc076 100644 --- a/runner/src/server/plugins/engine/components/MultiInputField.ts +++ b/runner/src/server/plugins/engine/components/MultiInputField.ts @@ -10,26 +10,29 @@ import { } from "../types"; import { FormModel } from "../models"; import { Schema } from "joi"; +import { DataType } from "./types"; export class MultiInputField extends FormComponent { children: ComponentCollection; + dataType = "multiInput" as DataType; constructor(def: InputFieldsComponentsDef, model: FormModel) { super(def, model); + const options: any = this.options; this.children = new ComponentCollection( [ { type: "TextField", name: "type-of-revenue-cost", - title: this.options.textFieldTitle, + title: options.textFieldTitle, schema: {}, options: {}, }, { type: "NumberField", name: "value", - title: this.options.numberFieldTitle, + title: options.numberFieldTitle, schema: {}, options: { prefix: "£", diff --git a/runner/src/server/plugins/engine/components/types.ts b/runner/src/server/plugins/engine/components/types.ts index b5d8fdb938..1eea576c40 100644 --- a/runner/src/server/plugins/engine/components/types.ts +++ b/runner/src/server/plugins/engine/components/types.ts @@ -95,4 +95,5 @@ export type DataType = | "monthYear" | "number" | "file" - | "freeText"; + | "freeText" + | "multiInput"; diff --git a/runner/src/server/plugins/engine/models/submission/WebhookModel.ts b/runner/src/server/plugins/engine/models/submission/WebhookModel.ts index 58d7f801fa..d8e4a78ab9 100644 --- a/runner/src/server/plugins/engine/models/submission/WebhookModel.ts +++ b/runner/src/server/plugins/engine/models/submission/WebhookModel.ts @@ -16,6 +16,8 @@ function answerFromDetailItem(item) { if (typeof item.rawValue === "undefined") return "undefined"; const [month, year] = Object.values(item.rawValue); return format(new Date(`${year}-${month}-1`), "yyyy-MM"); + case "multiInput": + return item.rawValue; default: return item.value; } diff --git a/runner/src/server/plugins/engine/pageControllers/RepeatingFieldPageController.ts b/runner/src/server/plugins/engine/pageControllers/RepeatingFieldPageController.ts index 6bb2dbacab..72f5325d1e 100644 --- a/runner/src/server/plugins/engine/pageControllers/RepeatingFieldPageController.ts +++ b/runner/src/server/plugins/engine/pageControllers/RepeatingFieldPageController.ts @@ -307,6 +307,7 @@ export class RepeatingFieldPageController extends PageController { return partial.length; } + // This will remain in for a a round for backward compatibility. The string awnsers will convert on a submit convertMultiInputStringAnswers(answers) { if (typeof answers === "undefined") { return answers;