From 43ba4ece6a3d1b43ced0038b2d4583f7cd0c61a0 Mon Sep 17 00:00:00 2001 From: Richard Marsot Date: Fri, 3 Jan 2025 16:04:39 -0500 Subject: [PATCH 1/2] add support for the meter component --- .storybook/static/Meter_Configuration.jpg | Bin 0 -> 146830 bytes src/Support.mdx | 6 + src/components/Pega_Extensions_Meter/Docs.mdx | 32 +++ .../Pega_Extensions_Meter/ElemDisplay.tsx | 66 +++++ .../Pega_Extensions_Meter/ElemMeter.tsx | 41 +++ .../Pega_Extensions_Meter/config.json | 60 +++++ .../Pega_Extensions_Meter/demo.stories.tsx | 165 ++++++++++++ .../Pega_Extensions_Meter/demo.test.tsx | 10 + .../Pega_Extensions_Meter/index.tsx | 234 ++++++++++++++++++ .../Pega_Extensions_Meter/styles.ts | 60 +++++ 10 files changed, 674 insertions(+) create mode 100644 .storybook/static/Meter_Configuration.jpg create mode 100644 src/components/Pega_Extensions_Meter/Docs.mdx create mode 100644 src/components/Pega_Extensions_Meter/ElemDisplay.tsx create mode 100644 src/components/Pega_Extensions_Meter/ElemMeter.tsx create mode 100644 src/components/Pega_Extensions_Meter/config.json create mode 100644 src/components/Pega_Extensions_Meter/demo.stories.tsx create mode 100644 src/components/Pega_Extensions_Meter/demo.test.tsx create mode 100644 src/components/Pega_Extensions_Meter/index.tsx create mode 100644 src/components/Pega_Extensions_Meter/styles.ts diff --git a/.storybook/static/Meter_Configuration.jpg b/.storybook/static/Meter_Configuration.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f49f870da6ed143cabe71068babdb1f04520c62 GIT binary patch literal 146830 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 U2rNW%}Z>?P! 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 VeS1uF1g=hw0Qks-zXz|4{y$e20W|;s literal 0 HcmV?d00001 diff --git a/src/Support.mdx b/src/Support.mdx index 62c58f5..5cd90d9 100644 --- a/src/Support.mdx +++ b/src/Support.mdx @@ -28,8 +28,14 @@ When adding new components, make sure that: - The component follow [best practices](https://pegasystems.github.io/constellation-ui-gallery/?path=/docs/getting-started--docs#implementing-a-constellation-dx-component). - The component props are exposed as an interface type object with description and default values so that the table of properties is documented in storybook. - Make sure that all files are linted correctly (npm run lint and npm run fix). +- Make sure that all styles follow best practices (no use for px, no hardcoded colors...) - Make sure that you have a unit test. - Make sure that end to end and accessibility test is passing (see [README.md](https://github.com/pegasystems/constellation-ui-gallery/blob/master/README.md#end-to-end-testing) for instructions). - If using a 3rd party library, make sure that the library is open source and compatible with the React version and the Constellation component library - see [Library](https://pegasystems.github.io/constellation-ui-gallery/?path=/docs/libraries--docs). +- You are not using a 3rd party presentational component library like Material UI - All the components should use the Constellation presentational components. +- Do not include 3rd party icon library - there should be enough OOB icons in the Constellation presentational component library. +- Test your component with different themes using the Storybook toolbar - the theme branding color and other tokens should be correctly handled by your components +- The for right to left (rtl) using the Storybook toolbar. Once your code is ready, create a PR to the main branch using the following [procedure](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork). +Send an email to DXComponents@pega.com with a link to the github issue. diff --git a/src/components/Pega_Extensions_Meter/Docs.mdx b/src/components/Pega_Extensions_Meter/Docs.mdx new file mode 100644 index 0000000..f54c3db --- /dev/null +++ b/src/components/Pega_Extensions_Meter/Docs.mdx @@ -0,0 +1,32 @@ +import { Meta, Primary, Controls, Story } from '@storybook/blocks'; +import * as DemoStories from './demo.stories'; + + + +# Overview + +Meters are visual representations of a quantity or an achievement. Their progress is determined by user actions, rather than system actions. This component will use a percentage field type to render the value between 0 and 100. If the value that you want to render is an integer, create a declare expression to generate a percentage value. + +The meter should not be used to indicate progress, such as loading or percent completion of a task. To communicate progress, use the Loading component in the presentational library. + + + +## Props + + + +## Samples + +Example of using a multiple meter to display test coverage + + + +Example of using a multiple meter to display the storage capacity + + + +## Configuration + +Here is an example of using the meter in different views (Case Summary, Details and form view) + +![Configuration](Meter_Configuration.jpg) diff --git a/src/components/Pega_Extensions_Meter/ElemDisplay.tsx b/src/components/Pega_Extensions_Meter/ElemDisplay.tsx new file mode 100644 index 0000000..cc651f5 --- /dev/null +++ b/src/components/Pega_Extensions_Meter/ElemDisplay.tsx @@ -0,0 +1,66 @@ +import styled, { css, useTheme } from 'styled-components'; +import { type Event } from './index'; +import { readableColor, themeDefinition } from '@pega/cosmos-react-core'; +import { rgba } from 'polished'; + +type ElemDisplayProps = { + type?: string; + event: Event; + totalValue?: number; +}; + +export const StyledElementDisplay = styled.div( + ({ + textColor, + valueColor, + theme + }: { + textColor: string; + valueColor: string; + theme: typeof themeDefinition; + }) => { + const { + base: { spacing } + } = theme; + return css` + display: inline-flex; + align-items: center; + gap: ${spacing}; + & > i { + background-color: ${valueColor}; + width: ${spacing}; + height: ${spacing}; + border-radius: 50%; + } + & > span { + color: ${textColor}; + font-size: 0.75rem; + } + `; + } +); + +const ElemDisplay = (props: ElemDisplayProps) => { + const { type, event, totalValue } = props; + const theme = useTheme(); + const Element = type === 'li' ? 'li' : 'div'; + + const textColor = rgba( + readableColor(theme.base.palette['primary-background']), + theme.base.transparency['transparent-3'] + ); + + const labelMsg = `${event.label} (${ + totalValue && totalValue !== 100 + ? `${Math.floor((event.value * totalValue) / 100.0)} of ${totalValue}` + : `${Math.floor(event.value)}%` + })`; + + return ( + + + {labelMsg} + + ); +}; +export default ElemDisplay; diff --git a/src/components/Pega_Extensions_Meter/ElemMeter.tsx b/src/components/Pega_Extensions_Meter/ElemMeter.tsx new file mode 100644 index 0000000..19ad706 --- /dev/null +++ b/src/components/Pega_Extensions_Meter/ElemMeter.tsx @@ -0,0 +1,41 @@ +import { Tooltip, useElement } from '@pega/cosmos-react-core'; +import { type Event } from './index'; +import styled, { css } from 'styled-components'; + +type ElemMeterProps = { + id?: string; + event: Event; + totalValue?: number; +}; + +export const StyledElementMeter = styled.div(({ event }: { event: Event }) => { + return css` + background-color: ${event.color}; + width: ${event.value}%; + `; +}); + +const ElemMeter = (props: ElemMeterProps) => { + const { event, totalValue } = props; + const [el, setEl] = useElement(); + const labelMsg = + totalValue && totalValue !== 100 + ? `${Math.floor((event.value * totalValue) / 100.0)} of ${totalValue}` + : `${Math.floor(event.value)}%`; + return ( + <> + + {el && {`${event.label} (${labelMsg})`}} + + ); +}; +export default ElemMeter; diff --git a/src/components/Pega_Extensions_Meter/config.json b/src/components/Pega_Extensions_Meter/config.json new file mode 100644 index 0000000..b067a42 --- /dev/null +++ b/src/components/Pega_Extensions_Meter/config.json @@ -0,0 +1,60 @@ +{ + "name": "Pega_Extensions_Meter", + "label": "Meter", + "description": "Meter", + "organization": "Pega", + "version": "1.0.0", + "library": "Extensions", + "allowedApplications": [], + "componentKey": "Pega_Extensions_Meter", + "type": "Field", + "subtype": "Decimal-Percentage", + "properties": [ + { + "name": "label", + "label": "Field label", + "format": "TEXT", + "required": true + }, + { + "name": "additionalInfo", + "label": "Additional information", + "format": "TEXT" + }, + { + "name": "dataPage", + "label": "Data Page name used to source the data", + "format": "TEXT" + }, + { + "name": "showMetaData", + "label": "Show the meta data on the screen", + "format": "BOOLEAN" + }, + { + "name": "totalTasks", + "label": "Total tasks", + "format": "NUMBER" + }, + { + "name": "color", + "label": "Color or JSON string", + "format": "TEXT" + }, + { + "label": "Conditions", + "format": "GROUP", + "properties": [ + { + "name": "visibility", + "label": "Visibility", + "format": "VISIBILITY" + } + ] + } + ], + "defaultConfig": { + "label": "@L $this.label", + "detailFVLItem": true + } +} diff --git a/src/components/Pega_Extensions_Meter/demo.stories.tsx b/src/components/Pega_Extensions_Meter/demo.stories.tsx new file mode 100644 index 0000000..35ad457 --- /dev/null +++ b/src/components/Pega_Extensions_Meter/demo.stories.tsx @@ -0,0 +1,165 @@ +import type { StoryObj } from '@storybook/react'; +import { PegaExtensionsMeter, type MeterProps } from './index'; + +export default { + title: 'Fields/Meter', + argTypes: { + value: { + control: { type: 'number', min: 0, max: 100, step: 1 } + }, + fieldMetadata: { + table: { + disable: true + } + }, + displayMode: { + options: ['EDITABLE', 'LABELS_LEFT', 'DISPLAY_ONLY'], + control: { type: 'radio' } + }, + variant: { + table: { + disable: true + } + }, + getPConnect: { + table: { + disable: true + } + } + }, + component: PegaExtensionsMeter +}; + +const setPCore = () => { + (window as any).PCore = { + getConstants: () => { + return { + CASE_INFO: { + CASE_INFO_ID: 'ID' + } + }; + }, + getComponentsRegistry: () => { + return { + getLazyComponent: (f: string) => f + }; + }, + getEnvironmentInfo: () => { + return { + getTimeZone: () => 'local' + }; + }, + getDataApiUtils: () => { + return { + getData: (dataPage: string) => { + if (dataPage === 'test') { + return Promise.resolve({ + data: { + data: [ + { label: 'Pass', color: '#34a35d', value: 16 }, + { label: 'Failed', color: '#fb243d', value: 3 }, + { label: 'Blocked', color: '#f5fa60', value: 6 }, + { label: 'Not Executed', color: '#c084fc', value: 10 } + ] + } + }); + } + return Promise.resolve({ + data: { + data: [ + { label: 'Apps', color: '#34d399', value: 16 }, + { label: 'Messages', color: '#fbbf24', value: 8 }, + { label: 'Media', color: '#60a5fa', value: 24 }, + { label: 'System', color: '#c084fc', value: 10 } + ] + } + }); + } + }; + } + }; +}; + +type Story = StoryObj; + +const MeterDemo = (inputs: MeterProps) => { + return { + render: (args: MeterProps) => { + setPCore(); + const props = { + ...args, + getPConnect: () => { + return { + getValue: () => 'C-123', + getContextName: () => '', + getStateProps: () => { + return { + value: 'C-123' + }; + }, + getActionsApi: () => { + return { + openWorkByHandle: () => { + /* nothing */ + }, + createWork: () => { + /* nothing */ + }, + updateFieldValue: () => { + /* nothing */ + }, + triggerFieldChange: () => { + /* nothing */ + }, + showCasePreview: () => { + /* nothing */ + } + }; + }, + ignoreSuggestion: () => { + /* nothing */ + }, + acceptSuggestion: () => { + /* nothing */ + }, + setInheritedProps: () => { + /* nothing */ + }, + resolveConfigProps: () => { + /* nothing */ + } + }; + } + }; + return ; + }, + args: inputs + }; +}; + +export const Default: Story = MeterDemo({ + displayMode: 'EDITABLE', + value: 50, + dataPage: '', + label: 'Tasks completed', + hideLabel: false, + color: '#34d399', + additionalInfo: 'Number of tasks completed out of total tasks', + showMetaData: false, + totalTasks: 10 +}); + +export const Grouped: Story = MeterDemo({ + dataPage: 'test', + label: 'Test coverage', + showMetaData: true, + displayMode: 'EDITABLE' +}); + +export const Grouped1: Story = MeterDemo({ + dataPage: 'storage', + label: 'System storage', + showMetaData: true, + totalTasks: 100, + displayMode: 'EDITABLE' +}); diff --git a/src/components/Pega_Extensions_Meter/demo.test.tsx b/src/components/Pega_Extensions_Meter/demo.test.tsx new file mode 100644 index 0000000..47c7ebe --- /dev/null +++ b/src/components/Pega_Extensions_Meter/demo.test.tsx @@ -0,0 +1,10 @@ +import { render, screen } from '@testing-library/react'; +import { composeStories } from '@storybook/react'; +import * as DemoStories from './demo.stories'; + +const { Default } = composeStories(DemoStories); + +test('renders meter component with default args', async () => { + render(); + expect(await screen.findByText('Tasks completed')).toBeVisible(); +}); diff --git a/src/components/Pega_Extensions_Meter/index.tsx b/src/components/Pega_Extensions_Meter/index.tsx new file mode 100644 index 0000000..516891a --- /dev/null +++ b/src/components/Pega_Extensions_Meter/index.tsx @@ -0,0 +1,234 @@ +import { + withConfiguration, + FieldValueList, + useTheme, + FieldGroup, + Flex, + FormField, + createUID +} from '@pega/cosmos-react-core'; +import '../create-nonce'; +import { StyledFieldGroupElementMeter, StyleGroupMeterWrapper } from './styles'; + +import { useEffect, useState } from 'react'; + +import ElemMeter from './ElemMeter'; +import ElemDisplay from './ElemDisplay'; + +export type MeterProps = { + /** field label */ + label: string; + /** hide label from the screen + * @default false + */ + hideLabel?: boolean; + /** name of the DP used for multiple values. if empty, will query the DP for the value otherwise will load the DP + */ + dataPage?: string; + + /** additional info */ + additionalInfo?: string; + + /** Color to use for the value indicator - either pass a hex color code or a JSON string. + * When using a JSON string, the color will be determined based on the value passed - the color with the closest lowest value. + * Here is an example: [{"value":20,"color":"#34d399"},{"value":80,"color":"#fbbf24"},{"value":100,"color":"#ff0000"}] + */ + color?: string; + + /** Percentage value to be passed to the component between 0 and 1.0 */ + value?: number; + + /** Show the meta data on the screen + * @default false + */ + showMetaData?: boolean; + /** Total of number of tasks displayed as meta info - + * If set, meta info will show the current number of tasks completed out of total tasks + * If not set, or set to 0 or 100, meta info will show a percentage value + */ + totalTasks?: number; + + /** display mode */ + displayMode?: string; + + variant?: any; + getPConnect?: any; +}; + +export type Event = { + value: number; + color: string; + label: string; +}; + +// props passed in combination of props from property panel (config.json) and run time props from Constellation +// any default values in config.pros should be set in defaultProps at bottom of this file +export const PegaExtensionsMeter = (props: MeterProps) => { + const { + label, + dataPage = '', + color, + value = 0, + hideLabel = false, + showMetaData = false, + totalTasks = 0, + additionalInfo = '', + displayMode, + variant, + getPConnect + } = props; + + const [id] = useState(createUID()); + const [events, setEvents] = useState>([]); + const [totalValue, setTotalValue] = useState(totalTasks); + const theme = useTheme(); + useEffect(() => { + if (dataPage) { + const pConn = getPConnect(); + const CaseInstanceKey = pConn.getValue( + (window as any).PCore.getConstants().CASE_INFO.CASE_INFO_ID + ); + const payload = { + dataViewParameters: [{ pyID: CaseInstanceKey }] + }; + (window as any).PCore.getDataApiUtils() + .getData(dataPage, payload, pConn.getContextName()) + .then((response: any) => { + if (response.data.data !== null) { + let tmpTotalValue = totalTasks; + if (!totalTasks) { + /* Calculate total value from all the rows */ + response.data.data.forEach((item: any) => { + tmpTotalValue += item.value || 0; + }); + } + const tmpevents: Array = []; + response.data.data.forEach((item: any) => { + item.value = item.value || 0; + item.label = item.label || ''; + if (!totalTasks && tmpTotalValue) { + item.value = (item.value * 100) / tmpTotalValue; + } + tmpevents.push(item); + }); + setEvents(tmpevents); + setTotalValue(tmpTotalValue); + } + }) + .catch(() => {}); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [dataPage]); + + if (dataPage) { + if (events.length === 0) { + return null; + } + const displayGroupComp = ( + +
+ {events.map((event: Event) => { + return ; + })} +
+ {showMetaData && ( +
    + {events.map((event: Event) => { + return ( + + ); + })} +
+ )} +
+ ); + + if (displayMode === 'LABELS_LEFT') { + return ( + + ); + } + if (displayMode === 'DISPLAY_ONLY') { + return displayGroupComp; + } + + return ( + + {displayGroupComp} + + ); + } + + /* If grouping is not used - render single meter */ + let colorValue = color || theme.base.palette.interactive; + + /* If color is a JSON string, determine the color based on the value */ + if (color?.includes('[')) { + try { + const colorArray = JSON.parse(color); + const colorValueArray = colorArray.map((item: { value: number; color: string }) => { + return item.value; + }); + const colorArraySorted = colorValueArray.sort((a: number, b: number) => a - b); + const colorValueArrayIndex = colorArraySorted.findIndex((item: number) => item > value); + colorValue = colorArray[colorValueArrayIndex].color; + } catch { + /* nothing */ + } + } + + const displayComp = ( + + +
+ +
+
+ {showMetaData && ( + + )} +
+ ); + + if (displayMode === 'LABELS_LEFT') { + return ( + + ); + } + if (displayMode === 'DISPLAY_ONLY') { + return displayComp; + } + return ( + + {displayComp} + + ); +}; +export default withConfiguration(PegaExtensionsMeter); diff --git a/src/components/Pega_Extensions_Meter/styles.ts b/src/components/Pega_Extensions_Meter/styles.ts new file mode 100644 index 0000000..3beae70 --- /dev/null +++ b/src/components/Pega_Extensions_Meter/styles.ts @@ -0,0 +1,60 @@ +import { defaultThemeProp, themeDefinition } from '@pega/cosmos-react-core'; +import styled, { css } from 'styled-components'; + +export const StyleGroupMeterWrapper = styled.div(({ theme }: { theme: typeof themeDefinition }) => { + const { + base: { spacing, colors, 'border-radius': borderRadius } + } = theme; + return css` + display: flex; + flex-flow: column nowrap; + min-height: calc(${spacing}*2); + justify-content: center; + width: 100%; + & > div { + display: flex; + flex-flow: row; + min-height: ${spacing}; + border-radius: ${borderRadius}; + width: 100%; + background-color: ${colors.gray.light}; + + & > div:first-child { + border-start-start-radius: ${borderRadius}; + border-end-start-radius: ${borderRadius}; + } + & > div:last-child { + border-start-end-radius: ${borderRadius}; + border-end-end-radius: ${borderRadius}; + } + } + ol { + display: flex; + flex-wrap: wrap; + margin: 0; + padding: 0; + list-style-type: none; + gap: calc(${spacing}*2); + height: calc(${spacing}*4); + } + `; +}); +StyleGroupMeterWrapper.defaultProps = defaultThemeProp; + +export const StyledFieldGroupElementMeter = styled.div( + ({ theme }: { theme: typeof themeDefinition }) => { + const { + base: { spacing } + } = theme; + return css` + & > div > div { + min-height: calc(${spacing}*2); + display: flex; + flex-flow: row nowrap; + align-items: center; + } + `; + } +); + +StyledFieldGroupElementMeter.defaultProps = defaultThemeProp; From 4e4d32cfe99af3d3f709327058b70f6fc69b2f4a Mon Sep 17 00:00:00 2001 From: Richard Marsot Date: Fri, 3 Jan 2025 16:11:52 -0500 Subject: [PATCH 2/2] add support for the meter component --- src/components/Pega_Extensions_Meter/ElemMeter.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Pega_Extensions_Meter/ElemMeter.tsx b/src/components/Pega_Extensions_Meter/ElemMeter.tsx index 19ad706..9154f98 100644 --- a/src/components/Pega_Extensions_Meter/ElemMeter.tsx +++ b/src/components/Pega_Extensions_Meter/ElemMeter.tsx @@ -29,6 +29,7 @@ const ElemMeter = (props: ElemMeterProps) => { event={event} ref={setEl} role='meter' + aria-label={event.label} aria-valuenow={event.value} aria-valuemin={0} aria-valuemax={100}