From ab40e3babd706bbbdcc8fa27a34fd0f987604d90 Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Wed, 27 Mar 2024 08:41:27 +0000 Subject: [PATCH 001/123] wip --- .../bbui/src/Form/Core/Multiselect.svelte | 4 + packages/bbui/src/Form/Core/Picker.svelte | 3 +- .../design/settings/componentSettings.js | 4 + .../settings/controls/ChartFieldSelect.svelte | 53 ++++++++ .../controls/ChartMultifieldSelect.svelte | 48 +++++++ .../design/settings/fieldValidator.js | 42 ++++++ .../Component/ComponentSettingsSection.svelte | 3 + packages/client/manifest.json | 43 +++--- packages/client/package.json | 3 +- .../client/src/components/Component.svelte | 3 + .../components/app/charts/ApexChart.svelte | 122 ++++++++++++++++-- .../app/charts/ApexOptionsBuilder.js | 15 ++- .../src/components/app/charts/BarChart.svelte | 20 ++- .../app/charts/CandleStickChart.svelte | 12 +- .../components/app/charts/LineChart.svelte | 19 ++- yarn.lock | 20 ++- 16 files changed, 363 insertions(+), 51 deletions(-) create mode 100644 packages/builder/src/components/design/settings/controls/ChartFieldSelect.svelte create mode 100644 packages/builder/src/components/design/settings/controls/ChartMultifieldSelect.svelte create mode 100644 packages/builder/src/components/design/settings/fieldValidator.js diff --git a/packages/bbui/src/Form/Core/Multiselect.svelte b/packages/bbui/src/Form/Core/Multiselect.svelte index 2243570cd5..7c1900fe2e 100644 --- a/packages/bbui/src/Form/Core/Multiselect.svelte +++ b/packages/bbui/src/Form/Core/Multiselect.svelte @@ -9,6 +9,8 @@ export let options = [] export let getOptionLabel = option => option export let getOptionValue = option => option + export let getOptionsIcon = () => null + export let getOptionsIconToolip = () => null export let readonly = false export let autocomplete = false export let sort = false @@ -80,6 +82,8 @@ option export let getOptionValue = option => option export let getOptionIcon = () => null + export let getOptionIconTooltip = () => null export let useOptionIconImage = false export let getOptionColour = () => null export let getOptionSubtitle = () => null @@ -202,7 +203,7 @@ > {#if getOptionIcon(option, idx)} - {#if useOptionIconImage} + {#if useoptioniconimage} icon + import { Select } from "@budibase/bbui" + import { + getDatasourceForProvider, + getSchemaForDatasource, + } from "dataBinding" + import { selectedScreen } from "stores/builder" + import { createEventDispatcher } from "svelte" + + export let componentInstance = {} + export let value = "" + export let placeholder + + const dispatch = createEventDispatcher() + $: datasource = getDatasourceForProvider($selectedScreen, componentInstance) + $: schema = getSchemaForDatasource($selectedScreen, datasource).schema + $: options = Object.keys(schema || {}).filter(key => { + return ( + schema[key].type !== "json" && + schema[key].type !== "array" && + schema[key].type !== "attachment" && + schema[key].type !== "barcodeqr" && + schema[key].type !== "link" && + schema[key].type !== "bb_reference" + ); + }); + $: boundValue = getValidValue(value, options) + + const getValidValue = (value, options) => { + // Reset value if there aren't any options + if (!Array.isArray(options)) { + return null + } + + // Reset value if the value isn't found in the options + if (options.indexOf(value) === -1) { + return null + } + + return value + } + + const onChange = value => { + boundValue = getValidValue(value.detail, options) + dispatch("change", boundValue) + } + + $: { + console.log(options, schema); + } + + + + diff --git a/packages/builder/src/components/design/settings/controls/ChartMultifieldSelect.svelte b/packages/builder/src/components/design/settings/controls/ChartMultifieldSelect.svelte deleted file mode 100644 index 2091b16ae4..0000000000 --- a/packages/builder/src/components/design/settings/controls/ChartMultifieldSelect.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/Column.svelte b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/Column.svelte index d23d70d34c..ef2242dd99 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/Column.svelte +++ b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/Column.svelte @@ -10,8 +10,8 @@ return "None" } - const epoch = Date.parse(isoString); - const date = new Date(epoch); + const unixTime = Date.parse(isoString); + const date = new Date(unixTime); return date.toLocaleString(); } diff --git a/packages/client/src/components/app/charts/BarChart.svelte b/packages/client/src/components/app/charts/BarChart.svelte index 8fa2a29b9a..2682fac4d4 100644 --- a/packages/client/src/components/app/charts/BarChart.svelte +++ b/packages/client/src/components/app/charts/BarChart.svelte @@ -79,7 +79,7 @@ text: xAxisLabel } }, - // Providing `type: "datetime"` normally makes Apex Charts parse epochs nicely with no additonal config, but bar charts in horizontal mode don't have a default setting for parsing the labels of dates, and will just spit out the unix epoch value. It also doesn't seem to respect any date based formatting properties passed in. So we'll just manualy format the labels, the chart still sorts the dates correctly in any case + // Providing `type: "datetime"` normally makes Apex Charts parse unix time nicely with no additonal config, but bar charts in horizontal mode don't have a default setting for parsing the labels of dates, and will just spit out the unix time value. It also doesn't seem to respect any date based formatting properties passed in. So we'll just manualy format the labels, the chart still sorts the dates correctly in any case yaxis: { labels: { formatter: yAxisFormatter diff --git a/packages/client/src/components/app/charts/CandleStickChart.svelte b/packages/client/src/components/app/charts/CandleStickChart.svelte index 50e4df27a9..224e87c067 100644 --- a/packages/client/src/components/app/charts/CandleStickChart.svelte +++ b/packages/client/src/components/app/charts/CandleStickChart.svelte @@ -63,14 +63,13 @@ } } - const getValueAsUnixEpoch = (dataprovider, dateColumn, row) => { + const getValueAsUnixTime = (dataprovider, dateColumn, row) => { const value = row[dateColumn] if (dataProvider?.schema?.[dateColumn]?.type === 'datetime') { return Date.parse(value); } - // Unix epoch if (typeof value === "number") { return value; } @@ -122,7 +121,7 @@ const close = parseFloat(row[closeColumn]) return [ - getValueAsUnixEpoch(dataProvider, dateColumn, row), + getValueAsUnixTime(dataProvider, dateColumn, row), isNaN(open) ? 0 : open, isNaN(high) ? 0 : high, isNaN(low) ? 0 : low, From 248764ce9861c1c579f4363cebcd7f017e6abc6e Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Mon, 22 Apr 2024 08:38:19 +0100 Subject: [PATCH 108/123] cleanup --- packages/client/src/components/app/charts/BarChart.svelte | 2 +- .../client/src/components/app/charts/CandleStickChart.svelte | 2 +- .../frontend-core/src/components/grid/cells/HeaderCell.svelte | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/client/src/components/app/charts/BarChart.svelte b/packages/client/src/components/app/charts/BarChart.svelte index 2682fac4d4..3fa03e2caf 100644 --- a/packages/client/src/components/app/charts/BarChart.svelte +++ b/packages/client/src/components/app/charts/BarChart.svelte @@ -79,7 +79,7 @@ text: xAxisLabel } }, - // Providing `type: "datetime"` normally makes Apex Charts parse unix time nicely with no additonal config, but bar charts in horizontal mode don't have a default setting for parsing the labels of dates, and will just spit out the unix time value. It also doesn't seem to respect any date based formatting properties passed in. So we'll just manualy format the labels, the chart still sorts the dates correctly in any case + // Providing `type: "datetime"` normally makes Apex Charts parse unix time nicely with no additonal config, but bar charts in horizontal mode don't have a default setting for parsing the labels of dates, and will just spit out the unix time value. It also doesn't seem to respect any date based formatting properties passed in. So we'll just manually format the labels, the chart still sorts the dates correctly in any case yaxis: { labels: { formatter: yAxisFormatter diff --git a/packages/client/src/components/app/charts/CandleStickChart.svelte b/packages/client/src/components/app/charts/CandleStickChart.svelte index 224e87c067..3ff272b1e0 100644 --- a/packages/client/src/components/app/charts/CandleStickChart.svelte +++ b/packages/client/src/components/app/charts/CandleStickChart.svelte @@ -75,7 +75,7 @@ } const isString = typeof value === "string"; - // "2025" could be either an ISO 8601 date time string or Unix time. + // "2025" could be either an ISO 8601 datetime string or Unix time. // There's no way to tell the user's intent without providing more // granular controls. // We'll just assume any string without dashes is Unix time. diff --git a/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte b/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte index 4f861c84a1..657f618759 100644 --- a/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte @@ -102,7 +102,6 @@ const editColumn = async () => { editIsOpen = true - console.log(column.schema); await tick() dispatch("edit-column", column.schema) } From 9d4283e9ba127636a96ceb838f24a91577864f3e Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Mon, 22 Apr 2024 08:46:00 +0100 Subject: [PATCH 109/123] linting --- packages/bbui/src/Tooltip/Context.svelte | 5 +++-- .../DetailsModal/subjects/NumbersAsDates.svelte | 1 - .../DetailsModal/subjects/ScalarJsonOnly.svelte | 1 - .../subjects/components/BindingValue.svelte | 4 +--- .../subjects/components/ExampleSection.svelte | 1 + .../DetailsModal/subjects/components/Subject.svelte | 1 - .../settings/controls/Explanation/explanation.js | 4 +--- .../controls/Explanation/lines/Column.svelte | 2 +- .../controls/Explanation/lines/DateAsNumber.svelte | 2 +- .../Explanation/lines/JSONPrimitivesOnly.svelte | 2 +- .../controls/Explanation/lines/NotRequired.svelte | 2 +- .../controls/Explanation/lines/NumberAsDate.svelte | 2 +- .../controls/Explanation/lines/StringAsDate.svelte | 2 +- .../controls/Explanation/lines/StringAsNumber.svelte | 2 +- .../controls/Explanation/lines/Support.svelte | 2 +- .../design/settings/controls/FieldSelect.svelte | 6 +++--- .../design/settings/controls/MultiFieldSelect.svelte | 12 ++++-------- 17 files changed, 21 insertions(+), 30 deletions(-) diff --git a/packages/bbui/src/Tooltip/Context.svelte b/packages/bbui/src/Tooltip/Context.svelte index ea63fe2455..006bfd1a80 100644 --- a/packages/bbui/src/Tooltip/Context.svelte +++ b/packages/bbui/src/Tooltip/Context.svelte @@ -31,17 +31,18 @@ $: updatePosition(anchor, tooltip) - const handleMouseenter = (e) => { + const handleMouseenter = () => { hovering = true; } - const handleMouseleave = (e) => { + const handleMouseleave = () => { hovering = false; }
{ timestamp = Date.now(); - console.log(timestamp); if (run) { setTimeout(updateTimeStamp, 200) } diff --git a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/ScalarJsonOnly.svelte b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/ScalarJsonOnly.svelte index 49f4b7cc53..86148287e9 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/ScalarJsonOnly.svelte +++ b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/ScalarJsonOnly.svelte @@ -1,5 +1,4 @@ diff --git a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/components/Subject.svelte b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/components/Subject.svelte index 77b8354e56..05889335a7 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/components/Subject.svelte +++ b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/components/Subject.svelte @@ -5,7 +5,6 @@ let body; const handleScroll = (e) => { - console.log("scroll"); if (!body) return; body.scrollTo({ top: body.scrollTop + e.deltaY, behavior: "smooth" }) diff --git a/packages/builder/src/components/design/settings/controls/Explanation/explanation.js b/packages/builder/src/components/design/settings/controls/Explanation/explanation.js index 4321fb14b6..3865c8b8fb 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/explanation.js +++ b/packages/builder/src/components/design/settings/controls/Explanation/explanation.js @@ -1,5 +1,3 @@ -import { capitalize } from 'lodash'; - export const messages = { jsonPrimitivesOnly: Symbol("explanation-json-primitives-only"), stringAsNumber: Symbol("explanation-string-as-number"), @@ -56,7 +54,7 @@ const getSupportMessage = (type, explanation) => { return null } -export const getExplanationMessagesAndSupport = (fieldSchema, explanation, typeSupportPresets) => { +export const getExplanationMessagesAndSupport = (fieldSchema, explanation) => { try { const explanationMessagesAndSupport = { support: getSupport(fieldSchema.type, explanation), diff --git a/packages/builder/src/components/design/settings/controls/Explanation/lines/Column.svelte b/packages/builder/src/components/design/settings/controls/Explanation/lines/Column.svelte index d28748d8e0..004bbbfab9 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/lines/Column.svelte +++ b/packages/builder/src/components/design/settings/controls/Explanation/lines/Column.svelte @@ -1,5 +1,5 @@ From 53553d8dd6cb66fb3d1c285ac5d8b8dde071bee3 Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Mon, 22 Apr 2024 08:50:33 +0100 Subject: [PATCH 110/123] linting --- packages/bbui/src/Form/Core/Picker.svelte | 4 +- packages/bbui/src/Tooltip/Context.svelte | 20 +- .../Explanation/DetailsModal/index.svelte | 20 +- .../DetailsModal/subjects/Column.svelte | 182 +++++++++--------- .../subjects/DatesAsNumbers.svelte | 60 +++--- .../DetailsModal/subjects/NotRequired.svelte | 6 +- .../subjects/NumbersAsDates.svelte | 62 +++--- .../subjects/ScalarJsonOnly.svelte | 44 +++-- .../subjects/StringsAsDates.svelte | 117 +++++------ .../subjects/StringsAsNumbers.svelte | 39 ++-- .../DetailsModal/subjects/Support.svelte | 25 ++- .../subjects/components/BindingValue.svelte | 26 ++- .../subjects/components/ExampleLine.svelte | 6 +- .../subjects/components/JSONValue.svelte | 2 +- .../subjects/components/Property.svelte | 7 +- .../subjects/components/Subject.svelte | 8 +- .../controls/Explanation/Explanation.svelte | 73 ++++--- .../controls/Explanation/explanation.js | 39 ++-- .../controls/Explanation/lines/Column.svelte | 16 +- .../Explanation/lines/DateAsNumber.svelte | 6 +- .../lines/JSONPrimitivesOnly.svelte | 10 +- .../Explanation/lines/NotRequired.svelte | 7 +- .../Explanation/lines/NumberAsDate.svelte | 6 +- .../Explanation/lines/StringAsDate.svelte | 6 +- .../Explanation/lines/StringAsNumber.svelte | 6 +- .../controls/Explanation/lines/Support.svelte | 16 +- .../settings/controls/Explanation/subjects.js | 4 +- .../typography/DocumentationLink.svelte | 8 +- .../Explanation/typography/InfoWord.svelte | 5 +- .../Explanation/typography/Line.svelte | 1 + .../Explanation/typography/Text.svelte | 28 +-- .../settings/controls/FieldSelect.svelte | 25 ++- .../settings/controls/MultiFieldSelect.svelte | 26 ++- .../builder/src/stores/builder/components.js | 2 +- .../client/src/components/Component.svelte | 9 +- .../components/app/charts/ApexChart.svelte | 35 ++-- .../components/app/charts/AreaChart.svelte | 44 +++-- .../src/components/app/charts/BarChart.svelte | 43 +++-- .../app/charts/CandleStickChart.svelte | 66 ++++--- .../components/app/charts/DonutChart.svelte | 30 +-- .../app/charts/HistogramChart.svelte | 61 +++--- .../components/app/charts/LineChart.svelte | 38 ++-- .../src/components/app/charts/PieChart.svelte | 30 +-- .../src/components/app/charts/formatters.js | 2 +- packages/client/src/utils/componentProps.js | 9 +- 45 files changed, 685 insertions(+), 594 deletions(-) diff --git a/packages/bbui/src/Form/Core/Picker.svelte b/packages/bbui/src/Form/Core/Picker.svelte index 55bd95b5e2..235f8ecc9e 100644 --- a/packages/bbui/src/Form/Core/Picker.svelte +++ b/packages/bbui/src/Form/Core/Picker.svelte @@ -202,8 +202,8 @@ aria-selected="true" tabindex="0" on:click={() => onSelectOption(getOptionValue(option, idx))} - on:mouseenter={(e) => onOptionMouseenter(e, option)} - on:mouseleave={(e) => onOptionMouseleave(e, option)} + on:mouseenter={e => onOptionMouseenter(e, option)} + on:mouseleave={e => onOptionMouseleave(e, option)} class:is-disabled={!isOptionEnabled(option)} > {#if getOptionIcon(option, idx)} diff --git a/packages/bbui/src/Tooltip/Context.svelte b/packages/bbui/src/Tooltip/Context.svelte index 006bfd1a80..0a0a48172b 100644 --- a/packages/bbui/src/Tooltip/Context.svelte +++ b/packages/bbui/src/Tooltip/Context.svelte @@ -5,7 +5,7 @@ export let anchor export let visible = false - export let offset = 0; + export let offset = 0 $: target = getContext(Context.PopoverRoot) || "#app" @@ -16,12 +16,13 @@ const updatePosition = (anchor, tooltip) => { if (anchor == null || tooltip == null) { - return; + return } requestAnimationFrame(() => { - const rect = anchor.getBoundingClientRect(); - const windowOffset = (window.innerHeight - offset) - (tooltip.clientHeight + rect.y) + const rect = anchor.getBoundingClientRect() + const windowOffset = + window.innerHeight - offset - (tooltip.clientHeight + rect.y) const tooltipWidth = tooltip.clientWidth x = rect.x - tooltipWidth - offset @@ -32,11 +33,11 @@ $: updatePosition(anchor, tooltip) const handleMouseenter = () => { - hovering = true; + hovering = true } const handleMouseleave = () => { - hovering = false; + hovering = false } @@ -50,10 +51,7 @@ class="wrapper" class:visible={visible || hovering} > -
+
@@ -62,7 +60,7 @@ From a95941b1e2dc342d120eaa9b34d30711bbbd9890 Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Mon, 13 May 2024 22:26:43 +0100 Subject: [PATCH 112/123] add tests and move type support presets to app store --- .../settings/controls/Explanation/Explanation.svelte | 4 ++-- packages/builder/src/stores/builder/app.js | 8 ++++++++ packages/builder/src/stores/builder/components.js | 4 ++-- packages/builder/src/stores/builder/tests/app.test.js | 6 ++++++ .../builder/src/stores/builder/tests/component.test.js | 1 + 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/components/design/settings/controls/Explanation/Explanation.svelte b/packages/builder/src/components/design/settings/controls/Explanation/Explanation.svelte index a7b7e17e2d..f65673d788 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/Explanation.svelte +++ b/packages/builder/src/components/design/settings/controls/Explanation/Explanation.svelte @@ -16,7 +16,7 @@ DateAsNumber, } from "./lines" import subjects from "./subjects" - import { componentStore } from "stores/builder" + import { appStore } from "stores/builder" export let explanation export let columnIcon @@ -29,7 +29,7 @@ $: explanationWithPresets = getExplanationWithPresets( explanation, - $componentStore.typeSupportPresets + $appStore.typeSupportPresets ) let support let messages = [] diff --git a/packages/builder/src/stores/builder/app.js b/packages/builder/src/stores/builder/app.js index 7dfee4daa9..26f223da8e 100644 --- a/packages/builder/src/stores/builder/app.js +++ b/packages/builder/src/stores/builder/app.js @@ -19,6 +19,7 @@ export const INITIAL_APP_META_STATE = { showNotificationAction: false, sidePanel: false, }, + typeSupportPresets: {}, features: { componentValidation: false, disableUserMetadata: false, @@ -79,6 +80,13 @@ export class AppMetaStore extends BudiStore { })) } + syncClientTypeSupportPresets(typeSupportPresets) { + this.update(state => ({ + ...state, + typeSupportPresets + })) + } + async syncAppRoutes() { const resp = await API.fetchAppRoutes() this.update(state => ({ diff --git a/packages/builder/src/stores/builder/components.js b/packages/builder/src/stores/builder/components.js index ce34714b15..1b04d6c1bb 100644 --- a/packages/builder/src/stores/builder/components.js +++ b/packages/builder/src/stores/builder/components.js @@ -103,12 +103,12 @@ export class ComponentStore extends BudiStore { this.update(state => ({ ...state, components, - customComponents, - typeSupportPresets: components?.typeSupportPresets ?? {}, + customComponents })) // Sync client features to app store appStore.syncClientFeatures(components.features) + appStore.syncClientTypeSupportPresets(components?.typeSupportPresets ?? {}) return components } diff --git a/packages/builder/src/stores/builder/tests/app.test.js b/packages/builder/src/stores/builder/tests/app.test.js index e0e5d17ba6..5cebc34e93 100644 --- a/packages/builder/src/stores/builder/tests/app.test.js +++ b/packages/builder/src/stores/builder/tests/app.test.js @@ -91,6 +91,12 @@ describe("Application Meta Store", () => { }) }) + it("Sync type support information to state", async ctx => { + ctx.test.appStore.syncClientTypeSupportPresets({ preset: "information" }) + + expect(ctx.test.store.typeSupportPresets).toStrictEqual({ preset: "information" }) + }) + it("Sync component feature flags to state", async ctx => { ctx.test.appStore.syncClientFeatures(clientFeaturesResp) diff --git a/packages/builder/src/stores/builder/tests/component.test.js b/packages/builder/src/stores/builder/tests/component.test.js index b6c9ca27cd..b8baefc5e6 100644 --- a/packages/builder/src/stores/builder/tests/component.test.js +++ b/packages/builder/src/stores/builder/tests/component.test.js @@ -42,6 +42,7 @@ vi.mock("stores/builder", async () => { update: mockAppStore.update, set: mockAppStore.set, syncClientFeatures: vi.fn(), + syncClientTypeSupportPresets: vi.fn(), } const mockTableStore = writable() const tables = { From 60f65533407d1d4be0d7305762ddfb70c815e358 Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Mon, 13 May 2024 22:33:17 +0100 Subject: [PATCH 113/123] remove hide var from apexchart component --- packages/client/src/components/app/charts/ApexChart.svelte | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/client/src/components/app/charts/ApexChart.svelte b/packages/client/src/components/app/charts/ApexChart.svelte index ee0e0480e7..6010c326ac 100644 --- a/packages/client/src/components/app/charts/ApexChart.svelte +++ b/packages/client/src/components/app/charts/ApexChart.svelte @@ -47,16 +47,15 @@ } $: noData = optionsCopy == null || optionsCopy?.series?.length === 0 - $: hide = noData - // Call render chart upon changes to hide, as apex charts has issues with rendering upon changes automatically + // Call render chart upon changes to noData, as apex charts has issues with rendering upon changes automatically // if the chart is hidden. - $: renderChart(chartElement, hide) + $: renderChart(chartElement, noData) $: updateChart(optionsCopy) {#key optionsCopy?.customColor} -
+
{#if $builderStore.inBuilder && noData}
Date: Mon, 13 May 2024 22:35:16 +0100 Subject: [PATCH 114/123] feedback --- .../controls/Explanation/DetailsModal/subjects/Support.svelte | 2 +- .../Explanation/DetailsModal/subjects/components/Block.svelte | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/Support.svelte b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/Support.svelte index a04e38ad3a..0419c0ad16 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/Support.svelte +++ b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/Support.svelte @@ -23,7 +23,7 @@
- Imcompatible with the component. + Incompatible with the component.
diff --git a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/components/Block.svelte b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/components/Block.svelte index 6ee93ff1a6..449b40304d 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/components/Block.svelte +++ b/packages/builder/src/components/design/settings/controls/Explanation/DetailsModal/subjects/components/Block.svelte @@ -10,6 +10,7 @@ diff --git a/packages/builder/src/stores/builder/app.js b/packages/builder/src/stores/builder/app.js index 26f223da8e..e57a079185 100644 --- a/packages/builder/src/stores/builder/app.js +++ b/packages/builder/src/stores/builder/app.js @@ -83,7 +83,7 @@ export class AppMetaStore extends BudiStore { syncClientTypeSupportPresets(typeSupportPresets) { this.update(state => ({ ...state, - typeSupportPresets + typeSupportPresets, })) } diff --git a/packages/builder/src/stores/builder/components.js b/packages/builder/src/stores/builder/components.js index 1b04d6c1bb..59750742ad 100644 --- a/packages/builder/src/stores/builder/components.js +++ b/packages/builder/src/stores/builder/components.js @@ -103,7 +103,7 @@ export class ComponentStore extends BudiStore { this.update(state => ({ ...state, components, - customComponents + customComponents, })) // Sync client features to app store diff --git a/packages/builder/src/stores/builder/tests/app.test.js b/packages/builder/src/stores/builder/tests/app.test.js index 5cebc34e93..728f472317 100644 --- a/packages/builder/src/stores/builder/tests/app.test.js +++ b/packages/builder/src/stores/builder/tests/app.test.js @@ -94,7 +94,9 @@ describe("Application Meta Store", () => { it("Sync type support information to state", async ctx => { ctx.test.appStore.syncClientTypeSupportPresets({ preset: "information" }) - expect(ctx.test.store.typeSupportPresets).toStrictEqual({ preset: "information" }) + expect(ctx.test.store.typeSupportPresets).toStrictEqual({ + preset: "information", + }) }) it("Sync component feature flags to state", async ctx => { diff --git a/packages/client/src/components/app/charts/ApexChart.svelte b/packages/client/src/components/app/charts/ApexChart.svelte index 2e1bd6d37b..33e6cdfa80 100644 --- a/packages/client/src/components/app/charts/ApexChart.svelte +++ b/packages/client/src/components/app/charts/ApexChart.svelte @@ -55,7 +55,11 @@ {#key optionsCopy?.customColor} -
+
{#if $builderStore.inBuilder && noData}
new Date(val).toLocaleString(), } -export const parsePalette = (paletteName) => { +export const parsePalette = paletteName => { if (paletteName === "Custom") { // return null in this case so that the palette option doesn't get consumed by Apex Charts - return null; + return null } - const [_, number] = paletteName.split(" "); + const [_, number] = paletteName.split(" ") return `palette${number}` } // Deep clone which copies function references -export const cloneDeep = (value) => { +export const cloneDeep = value => { const typesToNaiveCopy = ["string", "boolean", "number", "function", "symbol"] if (value === null) { @@ -29,7 +29,7 @@ export const cloneDeep = (value) => { } if (typesToNaiveCopy.includes(typeof value)) { - return value; + return value } if (Array.isArray(value)) { @@ -44,7 +44,7 @@ export const cloneDeep = (value) => { cloneObject[key] = cloneDeep(childValue) }) - return cloneObject; + return cloneObject } throw `Unsupported value: "${value}" of type: "${typeof value}"` diff --git a/packages/client/src/components/app/charts/utils.test.js b/packages/client/src/components/app/charts/utils.test.js index e74aaa93b0..1b065e2fae 100644 --- a/packages/client/src/components/app/charts/utils.test.js +++ b/packages/client/src/components/app/charts/utils.test.js @@ -1,14 +1,12 @@ import { expect, describe, it, vi } from "vitest" -import { - cloneDeep, -} from "./utils" +import { cloneDeep } from "./utils" describe("utils", () => { - let context; + let context beforeEach(() => { vi.clearAllMocks() - context = {}; + context = {} }) describe("cloneDeep", () => { @@ -20,14 +18,14 @@ describe("utils", () => { num: 123, bool: true, sym: Symbol("test"), - func: () => "some value" + func: () => "some value", } - context.cloneValue = cloneDeep(context.value); - }); + context.cloneValue = cloneDeep(context.value) + }) it("to clone the object and not copy object references", () => { expect(context.cloneValue.obj.one).toEqual(1) expect(context.cloneValue.obj.two).toEqual(2) - }); + }) }) }) From d02c04ebbecf81e5edf8ff0efa6e6ec8f19d9000 Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Tue, 14 May 2024 13:26:04 +0100 Subject: [PATCH 120/123] change explanation modal colors --- .../design/settings/controls/Explanation/Explanation.svelte | 2 +- .../design/settings/controls/Explanation/typography/Line.svelte | 1 - packages/client/src/components/app/charts/DonutChart.svelte | 2 +- packages/client/src/components/app/charts/PieChart.svelte | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/components/design/settings/controls/Explanation/Explanation.svelte b/packages/builder/src/components/design/settings/controls/Explanation/Explanation.svelte index f65673d788..d32911ae0e 100644 --- a/packages/builder/src/components/design/settings/controls/Explanation/Explanation.svelte +++ b/packages/builder/src/components/design/settings/controls/Explanation/Explanation.svelte @@ -94,7 +94,7 @@ diff --git a/packages/builder/src/pages/builder/app/[application]/_layout.svelte b/packages/builder/src/pages/builder/app/[application]/_layout.svelte index 6094c93a26..cd62a97340 100644 --- a/packages/builder/src/pages/builder/app/[application]/_layout.svelte +++ b/packages/builder/src/pages/builder/app/[application]/_layout.svelte @@ -21,7 +21,7 @@ } from "@budibase/bbui" import AppActions from "components/deploy/AppActions.svelte" import { API } from "api" - import { isActive, goto, layout, redirect } from "@roxi/routify" + import { isActive, url, goto, layout, redirect } from "@roxi/routify" import { capitalise } from "helpers" import { onMount, onDestroy } from "svelte" import VerificationPromptBanner from "components/common/VerificationPromptBanner.svelte" @@ -69,7 +69,7 @@ // e.g. if one of your screens is selected on front end, then // you browse to backend, when you click frontend, you will be // brought back to the same screen. - const topItemNavigate = path => () => { + const topItemNavigate = path => { const activeTopNav = $layout.children.find(c => $isActive(c.path)) if (activeTopNav) { builderStore.setPreviousTopNavPath( @@ -136,21 +136,18 @@
{#if $appStore.initialised}
- - $goto("../../portal/apps")} - /> - + + + {#each $layout.children as { path, title }} topItemNavigate(path)} title={capitalise(title)} id={`builder-${title}-tab`} /> @@ -201,6 +198,11 @@