From d2c7092861b2c929384259b18ad6e414d787c99d Mon Sep 17 00:00:00 2001 From: Katherine Date: Tue, 20 Aug 2024 10:30:38 +0800 Subject: [PATCH 1/2] fix: error adjusting order of linkage rules (#5086) * fix: error adjusting order of linkage rules * fix: bug * style: style improve --- .../LinkageRules/ValueDynamicComponent.tsx | 21 +++++++++++++------ .../LinkageRules/components/LinkageHeader.tsx | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/core/client/src/schema-settings/LinkageRules/ValueDynamicComponent.tsx b/packages/core/client/src/schema-settings/LinkageRules/ValueDynamicComponent.tsx index 66ac45fa90..498b16ef0b 100644 --- a/packages/core/client/src/schema-settings/LinkageRules/ValueDynamicComponent.tsx +++ b/packages/core/client/src/schema-settings/LinkageRules/ValueDynamicComponent.tsx @@ -8,6 +8,7 @@ */ import { Input, Select } from 'antd'; +import { css } from '@emotion/css'; import React, { useCallback, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useFormBlockContext } from '../../block-provider/FormBlockProvider'; @@ -45,7 +46,7 @@ export const ValueDynamicComponent = (props: ValueDynamicComponentProps) => { blockCollectionName: collectionName, }); const constantStyle = useMemo(() => { - return { minWidth: 150, maxWidth: 430, marginLeft: 5 }; + return { minWidth: 150, maxWidth: 430 }; }, []); const handleChangeOfConstant = useCallback( (value) => { @@ -71,7 +72,7 @@ export const ValueDynamicComponent = (props: ValueDynamicComponentProps) => { [collectionName, mode, setValue], ); const textAreaStyle = useMemo(() => { - return { minWidth: 460 }; + return { minWidth: 460, borderRadius: 0 }; }, []); const compatScope = useMemo(() => { return compatOldVariables(scope, { @@ -81,7 +82,16 @@ export const ValueDynamicComponent = (props: ValueDynamicComponentProps) => { const modeMap = { // 常量 constant: ( -
+
{React.createElement(DynamicComponent, { value: fieldValue?.value, schema, @@ -110,7 +120,6 @@ export const ValueDynamicComponent = (props: ValueDynamicComponentProps) => {
), }; - return ( - {modeMap[mode]} + {modeMap[fieldValue?.mode || mode]} ); }; diff --git a/packages/core/client/src/schema-settings/LinkageRules/components/LinkageHeader.tsx b/packages/core/client/src/schema-settings/LinkageRules/components/LinkageHeader.tsx index 29a9643ac1..25557b0b97 100644 --- a/packages/core/client/src/schema-settings/LinkageRules/components/LinkageHeader.tsx +++ b/packages/core/client/src/schema-settings/LinkageRules/components/LinkageHeader.tsx @@ -27,7 +27,7 @@ const LinkageRulesTitle = (props) => { const value = array?.field?.value[index]; return ( { ev.stopPropagation(); From ba95bfafe2a676d921a5207672b38ec07d4b60ac Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Tue, 20 Aug 2024 16:47:03 +0800 Subject: [PATCH 2/2] feat: allow to set distinct for query measures (#5091) --- .../src/client/configure/schemas/configure.ts | 6 ++++++ .../plugin-data-visualization/src/locale/en-US.json | 3 ++- .../plugin-data-visualization/src/locale/zh-CN.json | 3 ++- .../plugin-data-visualization/src/server/actions/query.ts | 5 +++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/client/configure/schemas/configure.ts b/packages/plugins/@nocobase/plugin-data-visualization/src/client/configure/schemas/configure.ts index eab34e309a..2be9467865 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/client/configure/schemas/configure.ts +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/client/configure/schemas/configure.ts @@ -289,6 +289,12 @@ export const querySchema: ISchema = { }, }, }, + distinct: { + type: 'boolean', + 'x-decorator': 'FormItem', + 'x-component': 'Checkbox', + 'x-content': '{{t("Distinct")}}', + }, }, { required: true, diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/locale/en-US.json b/packages/plugins/@nocobase/plugin-data-visualization/src/locale/en-US.json index 88902e283b..7a6b127771 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/locale/en-US.json +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/locale/en-US.json @@ -94,5 +94,6 @@ "Aspect ratio": "Aspect ratio", "Fixed height": "Fixed height", "Show background": "Show background", - "Show padding": "Show padding" + "Show padding": "Show padding", + "Distinct": "Distinct" } diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/locale/zh-CN.json b/packages/plugins/@nocobase/plugin-data-visualization/src/locale/zh-CN.json index c1c9d272a7..563357e91f 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/locale/zh-CN.json +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/locale/zh-CN.json @@ -95,5 +95,6 @@ "Aspect ratio": "宽高比", "Fixed height": "固定高度", "Show background": "显示背景", - "Show padding": "显示内边距" + "Show padding": "显示内边距", + "Distinct": "去重" } diff --git a/packages/plugins/@nocobase/plugin-data-visualization/src/server/actions/query.ts b/packages/plugins/@nocobase/plugin-data-visualization/src/server/actions/query.ts index bbf9eaef90..7472136648 100644 --- a/packages/plugins/@nocobase/plugin-data-visualization/src/server/actions/query.ts +++ b/packages/plugins/@nocobase/plugin-data-visualization/src/server/actions/query.ts @@ -19,6 +19,7 @@ type MeasureProps = { type?: string; aggregation?: string; alias?: string; + distinct?: boolean; }; type DimensionProps = { @@ -117,7 +118,7 @@ export const parseBuilder = async (ctx: Context, next: Next) => { let hasAgg = false; measures.forEach((measure: MeasureProps & { field: string }) => { - const { field, aggregation, alias } = measure; + const { field, aggregation, alias, distinct } = measure; const attribute = []; const col = sequelize.col(field); if (aggregation) { @@ -125,7 +126,7 @@ export const parseBuilder = async (ctx: Context, next: Next) => { throw new Error(`Invalid aggregation function: ${aggregation}`); } hasAgg = true; - attribute.push(sequelize.fn(aggregation, col)); + attribute.push(sequelize.fn(aggregation, distinct ? sequelize.fn('DISTINCT', col) : col)); } else { attribute.push(col); }