From d506e0724e25d55e096bc8917361d4695e459127 Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Fri, 12 Apr 2024 10:17:15 +0100 Subject: [PATCH] refactor --- .../FieldContext/ExplanationModal/index.svelte | 4 +++- .../subjects/DatesAsNumbers.svelte | 9 +++++++++ .../ExplanationModal/subjects/index.js | 1 + .../controls/FieldContext/FieldContext.svelte | 10 +++++++--- .../settings/controls/FieldContext/columnInfo.js | 3 +-- .../FieldContext/lines/DateAsNumber.svelte | 16 ++++++++++++++++ .../controls/FieldContext/lines/index.js | 1 + .../settings/controls/FieldContext/subjects.js | 1 + packages/client/manifest.json | 2 +- .../src/components/app/charts/BarChart.svelte | 13 ++++++------- 10 files changed, 46 insertions(+), 14 deletions(-) create mode 100644 packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/subjects/DatesAsNumbers.svelte create mode 100644 packages/builder/src/components/design/settings/controls/FieldContext/lines/DateAsNumber.svelte diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/index.svelte b/packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/index.svelte index 133b2a51b4..4c9e54ee31 100644 --- a/packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/index.svelte +++ b/packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/index.svelte @@ -1,6 +1,6 @@ + + +
+ A Date can be used in place of a numeric value, but it will be parsed as a UNIX epoch timestamp, which is the number of milliseconds since Jan 1st 1970. +
+
diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/subjects/index.js b/packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/subjects/index.js index 5dd1ed5410..32d04e8b0e 100644 --- a/packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/subjects/index.js +++ b/packages/builder/src/components/design/settings/controls/FieldContext/ExplanationModal/subjects/index.js @@ -2,3 +2,4 @@ export { default as Column } from "./Column.svelte" export { default as NotRequired } from "./NotRequired.svelte" export { default as StringsAsNumbers } from "./StringsAsNumbers.svelte" export { default as Support } from "./Support.svelte" +export { default as DatesAsNumbers } from "./DatesAsNumbers.svelte" diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/FieldContext.svelte b/packages/builder/src/components/design/settings/controls/FieldContext/FieldContext.svelte index 51bd717ffa..efa8f86bd0 100644 --- a/packages/builder/src/components/design/settings/controls/FieldContext/FieldContext.svelte +++ b/packages/builder/src/components/design/settings/controls/FieldContext/FieldContext.svelte @@ -1,7 +1,7 @@
{/if} - {#if messages.includes(messageConstants.chartDatetime)} - {/if} diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/columnInfo.js b/packages/builder/src/components/design/settings/controls/FieldContext/columnInfo.js index 0faea209f0..5588e44bbc 100644 --- a/packages/builder/src/components/design/settings/controls/FieldContext/columnInfo.js +++ b/packages/builder/src/components/design/settings/controls/FieldContext/columnInfo.js @@ -3,7 +3,7 @@ import { capitalize } from 'lodash'; export const messages = { jsonPrimitivesOnly: Symbol("column-info-json-primitives-only"), stringAsNumber: Symbol("column-info-string-as-number"), - chartDatetime: Symbol("column-info-chart-datetime"), + dateAsNumber: Symbol("column-info-date-as-number"), notRequired: Symbol("column-info-not-required"), contextError: Symbol("column-info-context-error"), } @@ -55,7 +55,6 @@ const getSupportMessage = (type, columnInfo) => { } export const getColumnInfoMessagesAndSupport = (fieldSchema, columnInfo) => { - try { const columnInfoMessagesAndSupport = { support: getSupport(fieldSchema.type, columnInfo), diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/lines/DateAsNumber.svelte b/packages/builder/src/components/design/settings/controls/FieldContext/lines/DateAsNumber.svelte new file mode 100644 index 0000000000..c2c6ca3bd1 --- /dev/null +++ b/packages/builder/src/components/design/settings/controls/FieldContext/lines/DateAsNumber.svelte @@ -0,0 +1,16 @@ + + + + + setExplanationSubject(subjects.datesAsNumbers)} + on:mouseleave={() => setExplanationSubject(subjects.none)} + text="UNIX epoch timestamp" + /> + + diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/lines/index.js b/packages/builder/src/components/design/settings/controls/FieldContext/lines/index.js index 2b593faa83..da819ee9d7 100644 --- a/packages/builder/src/components/design/settings/controls/FieldContext/lines/index.js +++ b/packages/builder/src/components/design/settings/controls/FieldContext/lines/index.js @@ -3,3 +3,4 @@ export { default as NotRequired } from "./NotRequired.svelte" export { default as StringNumber } from "./StringNumber.svelte" export { default as Support } from "./Support.svelte" export { default as JSONPrimitivesOnly } from "./JSONPrimitivesOnly.svelte" +export { default as DateAsNumber } from "./DateAsNumber.svelte" diff --git a/packages/builder/src/components/design/settings/controls/FieldContext/subjects.js b/packages/builder/src/components/design/settings/controls/FieldContext/subjects.js index a0f6ea912c..bad3c88df2 100644 --- a/packages/builder/src/components/design/settings/controls/FieldContext/subjects.js +++ b/packages/builder/src/components/design/settings/controls/FieldContext/subjects.js @@ -2,6 +2,7 @@ const subjects = { column: Symbol("explanation-modal-column"), support: Symbol("explanation-modal-support"), stringsAsNumbers: Symbol("explanation-modal-strings-as-numbers"), + datesAsNumbers: Symbol("explanation-modal-dates-as-numbers"), notRequired: Symbol("explanation-modal-not-required"), none: Symbol("explanation-modal-none") } diff --git a/packages/client/manifest.json b/packages/client/manifest.json index 1975feab58..128e5fe6a7 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -1639,7 +1639,7 @@ "supported": ["number", "boolean"], "partialSupport": [ { "type": "string", "message": "stringAsNumber" }, - { "type": "datetime", "message": "datetimeChart"} + { "type": "datetime", "message": "dateAsNumber"} ], "unsupported": [ { "type": "json", "message": "jsonPrimitivesOnly" } diff --git a/packages/client/src/components/app/charts/BarChart.svelte b/packages/client/src/components/app/charts/BarChart.svelte index e79b8113de..532ce11306 100644 --- a/packages/client/src/components/app/charts/BarChart.svelte +++ b/packages/client/src/components/app/charts/BarChart.svelte @@ -97,23 +97,23 @@ // Add data let useDates = false if (schema[labelColumn]) { - console.log("in here?"); const labelFieldType = schema[labelColumn].type if (horizontal) { builder = builder.yType(labelFieldType).xUnits(yAxisUnits) } else { builder = builder.xType(labelFieldType).yUnits(yAxisUnits) } - console.log(labelFieldType); useDates = labelFieldType === "datetime" } const series = (valueColumns ?? []).map(column => ({ name: column, data: data.map(row => { if (!useDates) { - const value = get(row, column); - console.log("one"); - console.log(value); + const value = get(row, column); + + if (schema[column].type === 'datetime') { + return Date.parse(value) + } if (Array.isArray(value)) { return null; @@ -125,8 +125,7 @@ return value; } else { - console.log("two"); - console.log([row[labelColumn], row[column]]); + // TODO datetimes as labels are passed in this way, but this only updates on value change, so it's broken until you also change the value return [row[labelColumn], row[column]] } }),