From 6baa3b4e89a612eaf683575ae60ff93f622b2703 Mon Sep 17 00:00:00 2001
From: Vero
Date: Tue, 25 Feb 2025 14:24:13 +0100
Subject: [PATCH 1/8] Created progressIndicator rich component
---
package-lock.json | 14 ++-
public/rich-components/progressIndicator.svg | 32 ++++++
.../front-rich-components/index.ts | 1 +
.../progressIndicator/index.ts | 1 +
.../progressIndicator/progressIndicator.tsx | 103 ++++++++++++++++++
.../progressIndicator.utils.ts | 10 ++
src/core/model/index.ts | 4 +-
.../canvas/model/inline-editable.model.ts | 3 +
.../canvas/model/shape-other-props.utils.ts | 7 ++
src/pods/canvas/model/shape-size.mapper.ts | 2 +
src/pods/canvas/shape-renderer/index.tsx | 3 +
.../simple-rich-components/index.ts | 23 ++--
.../progressIndicator.renderer.tsx | 34 ++++++
.../rich-components-gallery-data/index.ts | 4 +
.../components/icon-selector/modal/icons.ts | 12 +-
15 files changed, 229 insertions(+), 24 deletions(-)
create mode 100644 public/rich-components/progressIndicator.svg
create mode 100644 src/common/components/mock-components/front-rich-components/progressIndicator/index.ts
create mode 100644 src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.tsx
create mode 100644 src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.utils.ts
create mode 100644 src/pods/canvas/shape-renderer/simple-rich-components/progressIndicator.renderer.tsx
diff --git a/package-lock.json b/package-lock.json
index ad6019ab..c8a6ac69 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4675,9 +4675,9 @@
"dev": true
},
"node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"dev": true,
"funding": [
{
@@ -4685,6 +4685,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -5943,10 +5944,11 @@
}
},
"node_modules/vite": {
- "version": "5.4.8",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz",
- "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==",
+ "version": "5.4.14",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz",
+ "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"esbuild": "^0.21.3",
"postcss": "^8.4.43",
diff --git a/public/rich-components/progressIndicator.svg b/public/rich-components/progressIndicator.svg
new file mode 100644
index 00000000..2ef07401
--- /dev/null
+++ b/public/rich-components/progressIndicator.svg
@@ -0,0 +1,32 @@
+
\ No newline at end of file
diff --git a/src/common/components/mock-components/front-rich-components/index.ts b/src/common/components/mock-components/front-rich-components/index.ts
index 6f4b6869..cb1f2f14 100644
--- a/src/common/components/mock-components/front-rich-components/index.ts
+++ b/src/common/components/mock-components/front-rich-components/index.ts
@@ -14,3 +14,4 @@ export * from './appBar';
export * from './buttonBar/buttonBar';
export * from './tabsbar';
export * from './audio-player';
+export * from './progressIndicator/progressIndicator';
diff --git a/src/common/components/mock-components/front-rich-components/progressIndicator/index.ts b/src/common/components/mock-components/front-rich-components/progressIndicator/index.ts
new file mode 100644
index 00000000..7589c396
--- /dev/null
+++ b/src/common/components/mock-components/front-rich-components/progressIndicator/index.ts
@@ -0,0 +1 @@
+export * from './progressIndicator';
diff --git a/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.tsx b/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.tsx
new file mode 100644
index 00000000..3147130b
--- /dev/null
+++ b/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.tsx
@@ -0,0 +1,103 @@
+import { Circle, Group, Path, Text } from 'react-konva';
+import { ShapeSizeRestrictions, ShapeType } from '@/core/model';
+import { forwardRef } from 'react';
+import { ShapeProps } from '../../shape.model';
+import { fitSizeToShapeSizeRestrictions } from '@/common/utils/shapes/shape-restrictions';
+import { getProgressIndicatorPartsText } from './progressIndicator.utils';
+import { useShapeProps } from '../../../shapes/use-shape-props.hook';
+
+import { BASIC_SHAPE } from '@/common/components/mock-components/front-components/shape.const';
+import { useGroupShapeProps } from '../../mock-components.utils';
+
+const progressIndicatorShapeSizeRestrictions: ShapeSizeRestrictions = {
+ minWidth: 70,
+ minHeight: 70,
+ maxWidth: -1,
+ maxHeight: -1,
+ defaultWidth: 150,
+ defaultHeight: 150,
+};
+
+export const getProgressIndicatorShapeSizeRestrictions =
+ (): ShapeSizeRestrictions => progressIndicatorShapeSizeRestrictions;
+
+const shapeType: ShapeType = 'progressIndicator';
+
+export const ProgressIndicator = forwardRef((props, ref) => {
+ const {
+ x,
+ y,
+ width,
+ height,
+ id,
+ onSelected,
+ text,
+ otherProps,
+ ...shapeProps
+ } = props;
+ const restrictedSize = fitSizeToShapeSizeRestrictions(
+ progressIndicatorShapeSizeRestrictions,
+ width,
+ height
+ );
+
+ const { width: restrictedWidth, height: restrictedHeight } = restrictedSize;
+ const { progressIndicatorTitle } = getProgressIndicatorPartsText(text);
+ const { fontSize } = useShapeProps(otherProps, BASIC_SHAPE);
+ const commonGroupProps = useGroupShapeProps(
+ props,
+ restrictedSize,
+ shapeType,
+ ref
+ );
+ const { stroke, fill, textColor } = useShapeProps(otherProps, BASIC_SHAPE);
+
+ const progress = Number(progressIndicatorTitle || '83');
+ const size = Math.min(restrictedWidth, restrictedHeight);
+ const strokeWidth = Math.min(restrictedWidth, restrictedHeight) / 10;
+ const radius = (size - strokeWidth) / 2;
+ const center = size / 2;
+ const angle = (progress / 100.01) * 360;
+ const fontSizeScaled = fontSize * (size / 80);
+ const arcPath = () => {
+ const startAngle = -90;
+ const endAngle = startAngle + angle;
+ const largeArcFlag = angle > 180 ? 1 : 0;
+ const startX = center + radius * Math.cos((Math.PI * startAngle) / 180);
+ const startY = center + radius * Math.sin((Math.PI * startAngle) / 180);
+ const endX = center + radius * Math.cos((Math.PI * endAngle) / 180);
+ const endY = center + radius * Math.sin((Math.PI * endAngle) / 180);
+ return `M ${startX} ${startY} A ${radius} ${radius} 0 ${largeArcFlag} 1 ${endX} ${endY}`;
+ };
+ return (
+
+ {/* Background */}
+
+
+ {/* Moving Arc */}
+
+
+ {/* Percent */}
+
+
+ );
+});
diff --git a/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.utils.ts b/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.utils.ts
new file mode 100644
index 00000000..31a3e161
--- /dev/null
+++ b/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.utils.ts
@@ -0,0 +1,10 @@
+interface ProgressIndicatorPartsText {
+ progressIndicatorTitle: string;
+}
+export const getProgressIndicatorPartsText = (
+ text: string
+): ProgressIndicatorPartsText => {
+ let progressIndicatorTitle = text ? text.replace(/\r?\n|\r/g, '').trim() : '';
+
+ return { progressIndicatorTitle };
+};
diff --git a/src/core/model/index.ts b/src/core/model/index.ts
index a9aa3d74..24d734b6 100644
--- a/src/core/model/index.ts
+++ b/src/core/model/index.ts
@@ -69,7 +69,8 @@ export type ShapeType =
| 'tooltip'
| 'slider'
| 'link'
- | 'richtext';
+ | 'richtext'
+ | 'progressIndicator';
export const ShapeDisplayName: Record = {
multiple: 'multiple',
@@ -129,6 +130,7 @@ export const ShapeDisplayName: Record = {
tooltip: 'Tooltip',
slider: 'Slider',
richtext: 'Rich Text',
+ progressIndicator: 'ProgressIndicator',
};
export type EditType = 'input' | 'textarea' | 'imageupload';
diff --git a/src/pods/canvas/model/inline-editable.model.ts b/src/pods/canvas/model/inline-editable.model.ts
index a4f0cef0..63a36c01 100644
--- a/src/pods/canvas/model/inline-editable.model.ts
+++ b/src/pods/canvas/model/inline-editable.model.ts
@@ -36,6 +36,7 @@ const inlineEditableShapes = new Set([
'datepickerinput',
'browser',
'modalDialog',
+ 'progressIndicator',
]);
// Check if a shape type allows inline editing
@@ -106,6 +107,7 @@ const defaultTextValueMap: Partial> = {
modal:
'Alert\nWarning: The action you are about to perform may affect existing data. Are you sure you want to proceed? Once confirmed, this action cannot be undone.\nConfirm,Cancel',
appBar: 'AppBar',
+ progressIndicator: '83%',
buttonBar: 'Button 1, Button 2, Button 3',
tabsBar: 'Tab 1, Tab 2, Tab 3',
link: 'Link',
@@ -139,6 +141,7 @@ export const getShapeEditInlineType = (
case 'vertical-menu':
case 'table':
case 'modal':
+ case 'progressIndicator':
case 'appBar':
case 'tabsBar':
case 'tooltip':
diff --git a/src/pods/canvas/model/shape-other-props.utils.ts b/src/pods/canvas/model/shape-other-props.utils.ts
index 09f1b56d..d23084ef 100644
--- a/src/pods/canvas/model/shape-other-props.utils.ts
+++ b/src/pods/canvas/model/shape-other-props.utils.ts
@@ -66,6 +66,13 @@ export const generateDefaultOtherProps = (
disabled: BASIC_SHAPE.DEFAULT_DISABLED,
};
case 'modal':
+ case 'progressIndicator':
+ return {
+ backgroundColor: '#d3d3d3',
+ stroke: '#808080',
+ textColor: BASIC_SHAPE.DEFAULT_FILL_TEXT,
+ strokeStyle: [],
+ };
case 'buttonBar':
return {
stroke: BASIC_SHAPE.DEFAULT_STROKE_COLOR,
diff --git a/src/pods/canvas/model/shape-size.mapper.ts b/src/pods/canvas/model/shape-size.mapper.ts
index 583e7284..0c5a9a51 100644
--- a/src/pods/canvas/model/shape-size.mapper.ts
+++ b/src/pods/canvas/model/shape-size.mapper.ts
@@ -58,6 +58,7 @@ import {
getTabsBarShapeSizeRestrictions,
getVerticalMenuShapeSizeRestrictions,
getVideoPlayerShapeSizeRestrictions,
+ getProgressIndicatorShapeSizeRestrictions,
// other imports
} from '@/common/components/mock-components/front-rich-components';
import {
@@ -140,6 +141,7 @@ const shapeSizeMap: Record ShapeSizeRestrictions> = {
tooltip: getTooltipShapeSizeRestrictions,
slider: getSliderShapeSizeRestrictions,
audioPlayer: getAudioPlayerShapeSizeRestrictions,
+ progressIndicator: getProgressIndicatorShapeSizeRestrictions,
};
export default shapeSizeMap;
diff --git a/src/pods/canvas/shape-renderer/index.tsx b/src/pods/canvas/shape-renderer/index.tsx
index 1ee9a3d5..50369c60 100644
--- a/src/pods/canvas/shape-renderer/index.tsx
+++ b/src/pods/canvas/shape-renderer/index.tsx
@@ -41,6 +41,7 @@ import {
renderModal,
renderButtonBar,
renderTabsBar,
+ renderProgressIndicator,
} from './simple-rich-components';
import {
renderDiamond,
@@ -185,6 +186,8 @@ export const renderShapeComponent = (
return renderTooltip(shape, shapeRenderedProps);
case 'slider':
return renderSlider(shape, shapeRenderedProps);
+ case 'progressIndicator':
+ return renderProgressIndicator(shape, shapeRenderedProps);
default:
return renderNotFound(shape, shapeRenderedProps);
}
diff --git a/src/pods/canvas/shape-renderer/simple-rich-components/index.ts b/src/pods/canvas/shape-renderer/simple-rich-components/index.ts
index 5690997e..1b861c18 100644
--- a/src/pods/canvas/shape-renderer/simple-rich-components/index.ts
+++ b/src/pods/canvas/shape-renderer/simple-rich-components/index.ts
@@ -1,16 +1,17 @@
-export * from './video-player.renderer';
export * from './accordion.renderer';
-export * from './pie-chart.renderer';
-export * from './horizontal-menu.renderer';
-export * from './map-chart.renderer';
-export * from './breadcrumb.renderer';
+export * from './appBar.renderer';
+export * from './audio-player.renderer';
export * from './bar-chart.renderer';
-export * from './line-chart.renderer';
-export * from './vertical-menu.renderer';
+export * from './breadcrumb.renderer';
+export * from './button-bar.renderer';
export * from './calendar.renderer';
-export * from './table.renderer';
+export * from './horizontal-menu.renderer';
+export * from './line-chart.renderer';
+export * from './map-chart.renderer';
export * from './modal.renderer';
-export * from './appBar.renderer';
-export * from './button-bar.renderer';
+export * from './pie-chart.renderer';
+export * from './progressIndicator.renderer';
+export * from './table.renderer';
export * from './tabsbar.renderer';
-export * from './audio-player.renderer';
+export * from './vertical-menu.renderer';
+export * from './video-player.renderer';
diff --git a/src/pods/canvas/shape-renderer/simple-rich-components/progressIndicator.renderer.tsx b/src/pods/canvas/shape-renderer/simple-rich-components/progressIndicator.renderer.tsx
new file mode 100644
index 00000000..7655ea24
--- /dev/null
+++ b/src/pods/canvas/shape-renderer/simple-rich-components/progressIndicator.renderer.tsx
@@ -0,0 +1,34 @@
+import { ProgressIndicator } from '@/common/components/mock-components/front-rich-components';
+import { ShapeRendererProps } from '../model';
+import { ShapeModel } from '@/core/model';
+
+export const renderProgressIndicator = (
+ shape: ShapeModel,
+ shapeRenderedProps: ShapeRendererProps
+) => {
+ const { handleSelected, shapeRefs, handleDragEnd, handleTransform } =
+ shapeRenderedProps;
+
+ return (
+
+ );
+};
diff --git a/src/pods/galleries/rich-components-gallery/rich-components-gallery-data/index.ts b/src/pods/galleries/rich-components-gallery/rich-components-gallery-data/index.ts
index 983d76ae..1fb86166 100644
--- a/src/pods/galleries/rich-components-gallery/rich-components-gallery-data/index.ts
+++ b/src/pods/galleries/rich-components-gallery/rich-components-gallery-data/index.ts
@@ -15,6 +15,10 @@ export const mockRichComponentsCollection: ItemInfo[] = [
{ thumbnailSrc: '/rich-components/line-chart.svg', type: 'linechart' },
{ thumbnailSrc: '/rich-components/map.svg', type: 'map' },
{ thumbnailSrc: '/rich-components/modal.svg', type: 'modal' },
+ {
+ thumbnailSrc: '/rich-components/progressIndicator.svg',
+ type: 'progressIndicator',
+ },
{ thumbnailSrc: '/rich-components/pie.svg', type: 'pie' },
{ thumbnailSrc: '/rich-components/table.svg', type: 'table' },
{ thumbnailSrc: '/rich-components/tabsbar.svg', type: 'tabsBar' },
diff --git a/src/pods/properties/components/icon-selector/modal/icons.ts b/src/pods/properties/components/icon-selector/modal/icons.ts
index 4fee72bf..bee37374 100644
--- a/src/pods/properties/components/icon-selector/modal/icons.ts
+++ b/src/pods/properties/components/icon-selector/modal/icons.ts
@@ -1877,15 +1877,15 @@ export const iconCollection: IconInfo[] = [
categories: ['IT'],
},
{
- name: 'Spinner',
- filename: 'spinner.svg',
- searchTerms: ['spinner', 'loading', 'wait', 'progress'],
+ name: 'ProgressIndicator',
+ filename: 'progressIndicator.svg',
+ searchTerms: ['progressIndicator', 'loading', 'wait', 'progress'],
categories: ['IT'],
},
{
- name: 'Spinner gap',
- filename: 'spinnergap.svg',
- searchTerms: ['spinner', 'loading', 'wait', 'progress'],
+ name: 'ProgressIndicator gap',
+ filename: 'progressIndicatorgap.svg',
+ searchTerms: ['progressIndicator', 'loading', 'wait', 'progress'],
categories: ['IT'],
},
{
From bc3e618983b8756d5dd216e4dfde87377d0c0b88 Mon Sep 17 00:00:00 2001
From: Vero <110673488+vcamarzana@users.noreply.github.com>
Date: Tue, 25 Feb 2025 14:58:48 +0100
Subject: [PATCH 2/8] Fix duplicate 'richtext' at index.ts
---
src/core/model/index.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/core/model/index.ts b/src/core/model/index.ts
index 9a9f0c08..61fa099b 100644
--- a/src/core/model/index.ts
+++ b/src/core/model/index.ts
@@ -70,7 +70,6 @@ export type ShapeType =
| 'tooltip'
| 'slider'
| 'link'
- | 'richtext'
| 'progressIndicator';
| 'cilinder'
| 'videoconference'
From bb22e2b5c6afd052dfb5c52b55ad1d1777e9315b Mon Sep 17 00:00:00 2001
From: Vero <110673488+vcamarzana@users.noreply.github.com>
Date: Tue, 25 Feb 2025 15:04:43 +0100
Subject: [PATCH 3/8] Update index.ts
---
src/core/model/index.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/model/index.ts b/src/core/model/index.ts
index 61fa099b..cc2e6440 100644
--- a/src/core/model/index.ts
+++ b/src/core/model/index.ts
@@ -70,7 +70,7 @@ export type ShapeType =
| 'tooltip'
| 'slider'
| 'link'
- | 'progressIndicator';
+ | 'progressIndicator'
| 'cilinder'
| 'videoconference'
| 'richtext';
From 8a450a4b22d34f4f08ba271828c4376a71174356 Mon Sep 17 00:00:00 2001
From: Vero
Date: Thu, 27 Feb 2025 15:04:40 +0100
Subject: [PATCH 4/8] Applied PR feedback for Gauge component
---
.../{progressIndicator.svg => gauge.svg} | 0
.../progressIndicator.tsx => gauge/gauge.tsx} | 31 ++++++++++++-------
.../gauge/gauge.utils.ts | 8 +++++
.../front-rich-components/gauge/index.ts | 1 +
.../front-rich-components/index.ts | 3 +-
.../progressIndicator/index.ts | 1 -
.../progressIndicator.utils.ts | 10 ------
src/core/model/index.ts | 7 ++---
.../canvas/model/inline-editable.model.ts | 6 ++--
.../canvas/model/shape-other-props.utils.ts | 3 +-
src/pods/canvas/model/shape-size.mapper.ts | 4 +--
src/pods/canvas/shape-renderer/index.tsx | 7 +++--
...icator.renderer.tsx => gauge.renderer.tsx} | 6 ++--
.../simple-rich-components/index.ts | 2 +-
.../rich-components-gallery-data/index.ts | 4 +--
.../components/icon-selector/modal/icons.ts | 12 +++----
16 files changed, 54 insertions(+), 51 deletions(-)
rename public/rich-components/{progressIndicator.svg => gauge.svg} (100%)
rename src/common/components/mock-components/front-rich-components/{progressIndicator/progressIndicator.tsx => gauge/gauge.tsx} (77%)
create mode 100644 src/common/components/mock-components/front-rich-components/gauge/gauge.utils.ts
create mode 100644 src/common/components/mock-components/front-rich-components/gauge/index.ts
delete mode 100644 src/common/components/mock-components/front-rich-components/progressIndicator/index.ts
delete mode 100644 src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.utils.ts
rename src/pods/canvas/shape-renderer/simple-rich-components/{progressIndicator.renderer.tsx => gauge.renderer.tsx} (83%)
diff --git a/public/rich-components/progressIndicator.svg b/public/rich-components/gauge.svg
similarity index 100%
rename from public/rich-components/progressIndicator.svg
rename to public/rich-components/gauge.svg
diff --git a/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.tsx b/src/common/components/mock-components/front-rich-components/gauge/gauge.tsx
similarity index 77%
rename from src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.tsx
rename to src/common/components/mock-components/front-rich-components/gauge/gauge.tsx
index 3147130b..409144ba 100644
--- a/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.tsx
+++ b/src/common/components/mock-components/front-rich-components/gauge/gauge.tsx
@@ -3,13 +3,13 @@ import { ShapeSizeRestrictions, ShapeType } from '@/core/model';
import { forwardRef } from 'react';
import { ShapeProps } from '../../shape.model';
import { fitSizeToShapeSizeRestrictions } from '@/common/utils/shapes/shape-restrictions';
-import { getProgressIndicatorPartsText } from './progressIndicator.utils';
import { useShapeProps } from '../../../shapes/use-shape-props.hook';
import { BASIC_SHAPE } from '@/common/components/mock-components/front-components/shape.const';
import { useGroupShapeProps } from '../../mock-components.utils';
+import { getGaugePartsText } from './gauge.utils';
-const progressIndicatorShapeSizeRestrictions: ShapeSizeRestrictions = {
+const gaugeShapeSizeRestrictions: ShapeSizeRestrictions = {
minWidth: 70,
minHeight: 70,
maxWidth: -1,
@@ -18,12 +18,12 @@ const progressIndicatorShapeSizeRestrictions: ShapeSizeRestrictions = {
defaultHeight: 150,
};
-export const getProgressIndicatorShapeSizeRestrictions =
- (): ShapeSizeRestrictions => progressIndicatorShapeSizeRestrictions;
+export const getGaugeShapeSizeRestrictions = (): ShapeSizeRestrictions =>
+ gaugeShapeSizeRestrictions;
-const shapeType: ShapeType = 'progressIndicator';
+const shapeType: ShapeType = 'gauge';
-export const ProgressIndicator = forwardRef((props, ref) => {
+export const Gauge = forwardRef((props, ref) => {
const {
x,
y,
@@ -36,13 +36,13 @@ export const ProgressIndicator = forwardRef((props, ref) => {
...shapeProps
} = props;
const restrictedSize = fitSizeToShapeSizeRestrictions(
- progressIndicatorShapeSizeRestrictions,
+ gaugeShapeSizeRestrictions,
width,
height
);
const { width: restrictedWidth, height: restrictedHeight } = restrictedSize;
- const { progressIndicatorTitle } = getProgressIndicatorPartsText(text);
+ const { gaugeValue } = getGaugePartsText(text);
const { fontSize } = useShapeProps(otherProps, BASIC_SHAPE);
const commonGroupProps = useGroupShapeProps(
props,
@@ -52,13 +52,19 @@ export const ProgressIndicator = forwardRef((props, ref) => {
);
const { stroke, fill, textColor } = useShapeProps(otherProps, BASIC_SHAPE);
- const progress = Number(progressIndicatorTitle || '83');
+ const parsedValue = gaugeValue?.trim().endsWith('%')
+ ? gaugeValue.slice(0, -1)
+ : gaugeValue;
+ const progress = Number(parsedValue) || 10;
+ const showPercentage = gaugeValue?.trim().endsWith('%');
+
const size = Math.min(restrictedWidth, restrictedHeight);
const strokeWidth = Math.min(restrictedWidth, restrictedHeight) / 10;
const radius = (size - strokeWidth) / 2;
const center = size / 2;
const angle = (progress / 100.01) * 360;
const fontSizeScaled = fontSize * (size / 80);
+ console.log(radius, center, angle, fontSizeScaled);
const arcPath = () => {
const startAngle = -90;
const endAngle = startAngle + angle;
@@ -86,14 +92,15 @@ export const ProgressIndicator = forwardRef((props, ref) => {
{/* Percent */}
{
+ let gaugeValue = text ? text.replace(/\r?\n|\r/g, '').trim() : '';
+
+ return { gaugeValue };
+};
diff --git a/src/common/components/mock-components/front-rich-components/gauge/index.ts b/src/common/components/mock-components/front-rich-components/gauge/index.ts
new file mode 100644
index 00000000..72f8d539
--- /dev/null
+++ b/src/common/components/mock-components/front-rich-components/gauge/index.ts
@@ -0,0 +1 @@
+export * from './gauge';
diff --git a/src/common/components/mock-components/front-rich-components/index.ts b/src/common/components/mock-components/front-rich-components/index.ts
index 24cd8ddc..9c887086 100644
--- a/src/common/components/mock-components/front-rich-components/index.ts
+++ b/src/common/components/mock-components/front-rich-components/index.ts
@@ -14,7 +14,6 @@ export * from './appBar';
export * from './buttonBar/buttonBar';
export * from './tabsbar';
export * from './audio-player';
-export * from './progressIndicator/progressIndicator';
-
export * from './videoconference';
export * from './togglelightdark-shape';
+export * from './gauge/gauge';
diff --git a/src/common/components/mock-components/front-rich-components/progressIndicator/index.ts b/src/common/components/mock-components/front-rich-components/progressIndicator/index.ts
deleted file mode 100644
index 7589c396..00000000
--- a/src/common/components/mock-components/front-rich-components/progressIndicator/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './progressIndicator';
diff --git a/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.utils.ts b/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.utils.ts
deleted file mode 100644
index 31a3e161..00000000
--- a/src/common/components/mock-components/front-rich-components/progressIndicator/progressIndicator.utils.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-interface ProgressIndicatorPartsText {
- progressIndicatorTitle: string;
-}
-export const getProgressIndicatorPartsText = (
- text: string
-): ProgressIndicatorPartsText => {
- let progressIndicatorTitle = text ? text.replace(/\r?\n|\r/g, '').trim() : '';
-
- return { progressIndicatorTitle };
-};
diff --git a/src/core/model/index.ts b/src/core/model/index.ts
index cc2e6440..d59ea42d 100644
--- a/src/core/model/index.ts
+++ b/src/core/model/index.ts
@@ -70,11 +70,10 @@ export type ShapeType =
| 'tooltip'
| 'slider'
| 'link'
- | 'progressIndicator'
| 'cilinder'
| 'videoconference'
- | 'richtext';
-
+ | 'richtext'
+ | 'gauge';
export const ShapeDisplayName: Record = {
multiple: 'multiple',
@@ -135,9 +134,9 @@ export const ShapeDisplayName: Record = {
tooltip: 'Tooltip',
slider: 'Slider',
richtext: 'Rich Text',
- progressIndicator: 'ProgressIndicator',
cilinder: 'Cilinder',
videoconference: 'Videoconference',
+ gauge: 'Gauge',
};
export type EditType = 'input' | 'textarea' | 'imageupload';
diff --git a/src/pods/canvas/model/inline-editable.model.ts b/src/pods/canvas/model/inline-editable.model.ts
index 63a36c01..8facc991 100644
--- a/src/pods/canvas/model/inline-editable.model.ts
+++ b/src/pods/canvas/model/inline-editable.model.ts
@@ -36,7 +36,7 @@ const inlineEditableShapes = new Set([
'datepickerinput',
'browser',
'modalDialog',
- 'progressIndicator',
+ 'gauge',
]);
// Check if a shape type allows inline editing
@@ -107,7 +107,7 @@ const defaultTextValueMap: Partial> = {
modal:
'Alert\nWarning: The action you are about to perform may affect existing data. Are you sure you want to proceed? Once confirmed, this action cannot be undone.\nConfirm,Cancel',
appBar: 'AppBar',
- progressIndicator: '83%',
+ gauge: '10%',
buttonBar: 'Button 1, Button 2, Button 3',
tabsBar: 'Tab 1, Tab 2, Tab 3',
link: 'Link',
@@ -141,7 +141,7 @@ export const getShapeEditInlineType = (
case 'vertical-menu':
case 'table':
case 'modal':
- case 'progressIndicator':
+ case 'gauge':
case 'appBar':
case 'tabsBar':
case 'tooltip':
diff --git a/src/pods/canvas/model/shape-other-props.utils.ts b/src/pods/canvas/model/shape-other-props.utils.ts
index c17b55ba..30652e32 100644
--- a/src/pods/canvas/model/shape-other-props.utils.ts
+++ b/src/pods/canvas/model/shape-other-props.utils.ts
@@ -67,12 +67,11 @@ export const generateDefaultOtherProps = (
disabled: BASIC_SHAPE.DEFAULT_DISABLED,
};
case 'modal':
- case 'progressIndicator':
+ case 'gauge':
return {
backgroundColor: '#d3d3d3',
stroke: '#808080',
textColor: BASIC_SHAPE.DEFAULT_FILL_TEXT,
- strokeStyle: [],
};
case 'buttonBar':
return {
diff --git a/src/pods/canvas/model/shape-size.mapper.ts b/src/pods/canvas/model/shape-size.mapper.ts
index 08cd37ce..e723c809 100644
--- a/src/pods/canvas/model/shape-size.mapper.ts
+++ b/src/pods/canvas/model/shape-size.mapper.ts
@@ -60,8 +60,8 @@ import {
getToggleLightDarkShapeSizeRestrictions,
getVerticalMenuShapeSizeRestrictions,
getVideoPlayerShapeSizeRestrictions,
- getProgressIndicatorShapeSizeRestrictions,
getVideoconferenceShapeSizeRestrictions,
+ getGaugeShapeSizeRestrictions,
// other imports
} from '@/common/components/mock-components/front-rich-components';
import {
@@ -145,9 +145,9 @@ const shapeSizeMap: Record ShapeSizeRestrictions> = {
tooltip: getTooltipShapeSizeRestrictions,
slider: getSliderShapeSizeRestrictions,
audioPlayer: getAudioPlayerShapeSizeRestrictions,
- progressIndicator: getProgressIndicatorShapeSizeRestrictions,
cilinder: getCilinderShapeSizeRestrictions,
videoconference: getVideoconferenceShapeSizeRestrictions,
+ gauge: getGaugeShapeSizeRestrictions,
};
export default shapeSizeMap;
diff --git a/src/pods/canvas/shape-renderer/index.tsx b/src/pods/canvas/shape-renderer/index.tsx
index 7de0ece7..e7713685 100644
--- a/src/pods/canvas/shape-renderer/index.tsx
+++ b/src/pods/canvas/shape-renderer/index.tsx
@@ -41,9 +41,9 @@ import {
renderModal,
renderButtonBar,
renderTabsBar,
- renderProgressIndicator,
renderToggleLightDark,
renderVideoconference,
+ renderGauge,
} from './simple-rich-components';
import {
renderDiamond,
@@ -191,12 +191,13 @@ export const renderShapeComponent = (
return renderTooltip(shape, shapeRenderedProps);
case 'slider':
return renderSlider(shape, shapeRenderedProps);
- case 'progressIndicator':
- return renderProgressIndicator(shape, shapeRenderedProps);
case 'cilinder':
return renderCilinder(shape, shapeRenderedProps);
case 'videoconference':
return renderVideoconference(shape, shapeRenderedProps);
+ case 'gauge':
+ return renderGauge(shape, shapeRenderedProps);
+
default:
return renderNotFound(shape, shapeRenderedProps);
}
diff --git a/src/pods/canvas/shape-renderer/simple-rich-components/progressIndicator.renderer.tsx b/src/pods/canvas/shape-renderer/simple-rich-components/gauge.renderer.tsx
similarity index 83%
rename from src/pods/canvas/shape-renderer/simple-rich-components/progressIndicator.renderer.tsx
rename to src/pods/canvas/shape-renderer/simple-rich-components/gauge.renderer.tsx
index 7655ea24..07412cfb 100644
--- a/src/pods/canvas/shape-renderer/simple-rich-components/progressIndicator.renderer.tsx
+++ b/src/pods/canvas/shape-renderer/simple-rich-components/gauge.renderer.tsx
@@ -1,8 +1,8 @@
-import { ProgressIndicator } from '@/common/components/mock-components/front-rich-components';
+import { Gauge } from '@/common/components/mock-components/front-rich-components';
import { ShapeRendererProps } from '../model';
import { ShapeModel } from '@/core/model';
-export const renderProgressIndicator = (
+export const renderGauge = (
shape: ShapeModel,
shapeRenderedProps: ShapeRendererProps
) => {
@@ -10,7 +10,7 @@ export const renderProgressIndicator = (
shapeRenderedProps;
return (
-
Date: Thu, 27 Feb 2025 16:34:06 +0100
Subject: [PATCH 5/8] Update gauge.svg
---
public/rich-components/gauge.svg | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/public/rich-components/gauge.svg b/public/rich-components/gauge.svg
index 2ef07401..56bcdaae 100644
--- a/public/rich-components/gauge.svg
+++ b/public/rich-components/gauge.svg
@@ -16,7 +16,7 @@
stroke="#808080"
stroke-width="10"
stroke-dasharray="283"
- stroke-dashoffset="48"
+ stroke-dashoffset="255"
transform="rotate(-90 50 50)"
/>
@@ -28,5 +28,5 @@
font-size="24"
font-family="Arial, sans-serif"
font-weight="bold"
- >83%
-
\ No newline at end of file
+ >10%
+
From 2da2c748446d1a17d412d027e49bf09ffb770758 Mon Sep 17 00:00:00 2001
From: Omar Lorenzo
Date: Fri, 28 Feb 2025 11:47:23 +0000
Subject: [PATCH 6/8] Added Omar Lorenzo as member
---
public/assets/omar-lorenzo.jpeg | Bin 0 -> 16532 bytes
src/pods/about/members.ts | 7 +++++++
2 files changed, 7 insertions(+)
create mode 100644 public/assets/omar-lorenzo.jpeg
diff --git a/public/assets/omar-lorenzo.jpeg b/public/assets/omar-lorenzo.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..e6390ea40aebf5acd625e2d638901a4b80ccb1e5
GIT binary patch
literal 16532
zcmb8WW0)mP(=NK&wr$(Crfu7{F>TxKo@v{*ZQGu$y{~=F`Ehd9kF_E*
z?~2OEsugiZ)SuNqy8uKfaY=Ci5D)+W^z{M!*#L+DK!Ab&9$yXg>i~lU0|NyGgNA?r
zhlGWOg@u8Jfq{cZMudY$f`@@YL`OtIK}ADDgGIo=L`TI$MnyyY3jzf4H3t+73JeSi
z6%Gat_5XMK(+@y`1d0QS0|6oi03!i`AOZau1mOKu65_AA|281tFCD=lAfdjxvA=pi
zfc{^)|EvRGL4W|jh#-hxSNizv-`W3X4^hLW}<9ZVnW88WfCX2uR&xyeP#~T=7=eA*rc_Mt(7Z!rmMdC}D
zor!8IE9s5e#@k%q=lRNJ`Tbr&?EFON?97P&_he9LkBL|?l)~GrY%@MKixu>-0wyea
zBv$fKNfc|feW~^2c_c?iLvB8*Q~O*#7GHgH39U7TZz2BwK%mmBW(q{NyAur*$(iXw
zb7XvLMy}p+m2H%4d2fHEH*VzeetCqiu*}WQKQBH!&X$IocbTr?(2jokuEU@7pg$95
z|KMadSEOd}4E
zrCJhJrqr0iynS_?vQ*qPMU%r!O~EY{o~fiBtR;CANwNIoZ8Ikg=-L
zs5Ro8d28L{tP}cOw}fM|1>4o;+(RD+-Yc5iDv!hUwoID?%b9=mtBPJ6ssP}bgX?8=oF>8k5`ux~(#=lIv+whL+F?MF7GS3}hDR8l?
z_IVg7+xrID1qw{!cw-mm@TjShf>iM}awSzCzc;@ZAb;XJO_~0&6oRm{j&|u<<
z8&i=xvN0ypWa~_qXL-pQ0O_H^`mvK&2)Qo9PN%nWKKKqk(*EoI`KF_<=
zPFu*_x(!zNpkE$B)q?+`8om=e5R72D+`V-fUBgFQ*QPv9blYv4|KfLVOCP*$biO$5
zkdW){^1ON$-=WHy&LN0-{OuvTqd5BD`Npp;bY0;EeW%&sv->Y1z}YvUM(GcLm+~Rj
zc4o<5Z(FzRF6H*o`E=VW3~RmhLtb$1X!X~_wa%}3ZYL`j8f_QPJMra5tQuPfd0ANs
zJRSdkv7k+5<+b+HA51wZ@*eeR)_1Kt^wkFwulglp!i-K@!EnWQoO^s*#?wEc
zw?E}KKV=DbjZ&xg5C2jbv~YIlE~(*Hx54r94-rQ={)mLSra-eirDz!v$T@mL7@K6Wl
zLj;_AC-im?JbraGj5fEF%v){aU(D$XP1TrDw+S;50{wK11qpAw;_j+q?ra>q6C{Bw
zMph{%!c>JaS5%(ow`f1UdiuUYc%I8JtCslMsf~dfoLbnjNIj?{FJ3sLStd+{sdQge
zW6Z(Fm`+R@-LD~6o>^#>YH2E~F~)2VJ=jDjdMX!bu}C6Z)E()rLNDczsalv=7@nt<
zJic6_6iK2M(&x%YymZav8u#S^Fd+hfK!HGj!9YO303d(&88G0>7XbrDLPkV^KqX=l
zL?a|7VPqy{5fWCw5Ow%+3?RS!1t2isKY%0eYU|dH?HKZNzu(&VX{OF(aD-j^YV=uO
zU74|}K9Z#tkJWSq9W~P&1217Bg!#41LD=RypG=bVE%A}1=AGYKNY=Z|9zG{J`=co8
zuTkq?H>lheYvOKOqR@~(QP+T;E3;V(Zoagzqx@2=84
zrB~g#3@OvV`qmiR@-|iMU{~oJ`ji0O{RCPb=_BUjJCYhQQU7sHg-P%7~??s4ms;4TYE81K#o(icTm*w05r74f5m&o2c8W3}7l
zlDi(Qc`E7_D=S1FjGvta(;nC?5!=q9G`zT$MuxmZ9i6{1=*u_K%a_!Nz_|qrISPj$
zY{ImDqk@L$l`C@cNQvQGWNzcgqtLrA
z46X?E0}I5i0JJ|N4Xu7RlWzqsDbhE;5O07A=KkWTCalb-26FedB@O%V$i!WiN#W4a9;qit8f&+nMb}qtmm2-i{ZOC1kv!8CS8Qs%aevSyfu
z0Ryd}>E=_PW>EZt*TSwO-Y|-cx21BipDzSI9a*d}WU<}OBR5-lQKg7NHD=X_Zn1Bw
zdLdz02Wyh`VGvmL*7ZQmQDIe`5dd8)9oeL0n8_RO6j;UHl=!vcPutB5Z<>TxBjBu>
zqOfo$`4JM|BRoeJ=Z0;-2FoVKL@s{KX`*5TA{;Oz~H
zOwb@qEDutE0S-V1I)3c0*hkZ8&m3V@jxGU6bhFw~}Xu4EA%gEKVE-E3e{#^8Ca
z^A}i0&-Q54X&9qe%E#NcaO?_0wmfZTm4f_LLXum5-F1p=C_d2K8Ary-lyFA*CDq6r
z;OY*y_YBluTxH_L*FR{Nbt%5BJl9;Vm`OAJjW22a@S|Lz<)(WJkN)PUl%@IE(aM_}5
z-m~kdTLaG!39EvdPtTBslLkUZPbPxZ%}eE5$5;b;bxnB*@%TMTz@T}c_sv3X1hO4i
zG1KIzL3h-@DY~`-Yve?ph*oYr5(BaU!qnKATuhmg6v#&s@inN}w+)L^ZKyx%=vP(@
zI1i3-3nTgkqyi4(F|%%X(J0cGkx_ytGD#MMfprL1XEy1K6uW7kL}f6
zbc^BXQT^1WFXzs|-D8ULzS*T&v1CgXW2T>&(}8*zm6hbB@wsP)QHcgB8D??vBKugH
zM+EO+5hS^0`-gvluXtwk0AXA{i6KrK{U~dV*$1W`;%_%X93(63A$>-k@B^DGev??<
zqMW&bUmj)om^7HRiYy8$jRS{v*SKn8ot?3<4Y#8T?LvCP6A1B+kytG-?(8+BaWuQ<
zY?be}_dcT44|jt6CX^Z$i|n2viQuu^1dFEA1(2TNE{MriAn&5>-g#AH@|vyYr|1kc
z%2Bd#)k02c7k>cfr|lmb#+UcJ;v>I1`7E`Yv^LE$??F9bYls$``nt;H#i<`>9pd61fXQ7P^?B3BfZI1*Yvr4BLcV^1J>K2k2vu{Ul~MS9}=(?_tw^X2xs(kzZh0f0tnNJL2f5
zSdQw4LK$^Qy2tdVw^QT+)LL=}K_6%M0MZ?ILK1jFzbE&>yRUCvR*1CfutmL#RQAy6
z_NXLl2letcd!#`!tv=meN_OZjXc{waQQ|3d@UsPIAski7x~HgS{F~20yb;be$(|)%
zj5dG8V##&p2;2G-k=MPW6J4{fTpP1BX>bqo(a5AbA`S3SVjYi2GnPpGeyQ7-x{Ob#|(!J8qmRJ^?S|48Ep<=jx@3wP=67WzpuA6hz{VL=@J0g$~PXuaTrj
z5PUsfoXPEY%k`-gxbpLCR&
zUFW24h;&q^byZjG<99gel;Yf
znw+$6IlX;<@cW`ry0HqxzG^0EKH;j(&&uG@RUHA&!G-FeIw)JGT
zC0u)sO}bW1+(or%!K+92X^ec7icA$pS4IJ&EpPQ&{h@pf_@pz$ExEZ1VJs({x~OmMg_^J8*Y=(370ntkh~
z7(=U@qi9!UIG}CdceGEKQ|}opa`!JgF4VZ3qC7mGU3874$w|Ag_suUYU&rjjKtxqCTYHzD{Xp*4Y7ps6CyxYj|W^lcT
zT0$sr^$qyN$06LJeUaDHV9eslOY;!7Ytz*|<2vMM+LzX%CmnnG9m(Yn08hVA{+I6u
z$>SSIS{~&eK+Bu=_wKVH+ZK7>?hmXM9V~9sb{7Hb2L$JHXy4dV{e>@QodyX23=H&_
zX9WHt=l;`xfRR9uiI_kU8Bv&pz)%SV6%C15gcbhdrhhSe0ziKN8;1&?vXHZ32)lm8
z1xBjd9hRgO4@!07k@=C7)l-_3E2oBHFgOWM^G0XP%y`7#-u!|t6|>+IMN>Qz8^HO*
zX_-)sx}h&kQ)Q{{%+DIHksX_k!&>{BnQpi0Cm0%^nag|F>5h%p5M5CeP0~-qo5h|I
z7U_OuVRS|na>;oUiBL0*`!H8JZaVluJ`_)(M7XtZ|FF-(=t5MZ4y0Htx-lHBN0s7<
zvq+pFqs~WJ8l%inZ_w`*oQA0P3chjxxAgM=TP@kFO*Ia?sX1DCMH)e*1mxI;#KfIkyHN7@34XQ3#m@6^VrvlpO!F=Yaob&t+Y1?!0rbICJ~~$o&Dtw9|jW
z$^~EFw1}-X)jzb8(7dA@Hh4+2$KMkjH*E4P3%hTI=R9_x^kZ~KeR1S{fh=E5
z71f4vRTa{_ICk^9zEZ15@ex=Y>PqbXqZ*^SK;P
z3bG#jkP>bE>KeRM6{EyQ`)}26R%^|vQF4bEr1_-As`%YvMuE7J2i0PIJ2H;dk~AbR
zeu28-eCw>7Szy?RlV9rsE}>wCo2Aiqc*UvN(pTR&mDbNkTD`LSNFYvbG^4}JB45|q
z;Qla?)jyBC!4Gpfr&X62dnB5_M{R^+UEA>O`H*Yu%)EG{+q=^u_6Y5!CIv6LHC6wE
z0?OEB=yoJl6ORNJovcOdCcm9QQb;~je%^1^ql5r_nbz4C);FQsOdKijKrFh&*y
zWhYV*=S1VczCAQDRuzZ(+y8O|-~wM9!9>bPL!(vw8Algaot>!*3{K-k5
zdWf0qRYDm%KFJH^XN&rFxh1HFud<4Sbgxdb!7esq)raKrA3#1+9cJ2a_@$YdnlaIS
z+#diMt+B)q0T*$NADAIM&6HR+!<=(5Usikw*5;tOrCRWDoD^H`fQglxAoJyJA8XQhx%{{!oF4Ia)a$#eb>^`
zC#8*Maeaj2lDSJc3yc09L0~}0NOnCe(#+(i@E<_^&2Z`UyE(#9%%)06)=#0W13Ms;
z{1Vy17rFsWxbf=l#9Nvy)9nLy8vDZUDrG<6)>EYIiprBCU#rj`yG3@(lKVrz>IfqJ
zH#;YiITtZaw<9iBqh)#{aT2|sC=<5#jkvwum$V=Bko8;N(Vl*FY16IL*Bl3p#XtDS
zJ+^iz?^X^KCb)D0VO}txt7TJ7w>)5?Si9bwv`U4!%)(JA=V>
zWU^g4WNn8BEY!8}k3&2HUY;gl1vHX*u;dyS`4TovT)olK1-;*u&
zsadUUGd%&3?`byROy;6?*ESG8{1MoYse31E=7TsbJmuIW+ai)2Y#9%k(Y{Tiq-M4E
zlFUltR2D3s__KE7_woDO!TOEd=3Q}AjscP@MW0z&1tau?Q&RD6iwmTTb#&(3&-D`I
zQ%V1ddLK1$KPx*E+yz!OqzcXZUpkz=(o};Ga4%hRODu>H)8hIy#
zZ;M;-w%ZeBjZ^j?V;4LNskrAdTQ`^S8I4#q_Eatsvs)XB5<;ms@U!+!6FF||bgsUr
zOtmkin7ruhJbCz)@D#!#ZP~Cz#ZRvyGMzP#^FXM#$|KB;2%X)^2KBxA_F}P7
zX*DC1>)itZaC*1kvlQCe;!if%SYoN6b5GUqCSp#>w0ybqA?jx7c4`Fa*?7r
zmV4gnnGQvkiGn+iD!A|pWaDS$xTXVN
z?FsR9lQ`T(6*V;Nt
z?k&?ciHJV)h}sgO*z-%qM(FHqZQvm+L>R=5Hxtb+i;W_mO?c6BWRA{DZsv2<8llvG
zYsvETJ)__h^vzj(=EkzttsGuNFOS$(K5fQfVAbwuW@ZuXtrONX?NS_9Yp@nhE+%b&
zjxWmVL|3Q7Zl6#+F^t+!}(y-4Qt1g2p
zcS=sMYu1$cg^`IW;Z65bGe5C@*y&yJRxJu)v+xALXbSZWL#Lz}*7LQfbX}>X3F;bT
z$RdYkOLL(!nJ%xb!5NE1c8*z${S>A0Uhz-3(QN&$K1sYZFV%j3U>iFLV5Mbhs?;7)6=W@=owPBRMTNg
z9rBT=+urC#IJ%cNV*T#O&y=kv97~~cJ@MiW7WBnZB)V2|L)KJs7Ep51bYX!u^$U$e
z@MSUKP_;WocD-P;g(ch0nGuQ(7)9KoVe(dVc5}x2QKmneq$z(4F@p+-3Hs~cYmBMj
zP<;yF1fHyKQ}0>3>~`{$+QhGyXTaKBp2gTnS_nr><2JmMR;_QH#j(`V|Gb2X^>*&?
zvSh<*vCnV05gV!E7HtN_qvAIgWuoWGZ@%PJcn{3^MS|zBE9_0iWf2p6+<4A_btz)y
zW_hJ+<+i1=A*Ih#8Zwx1)b3(rRrpO7_O5=MUFvL#ToqKNi%ua5r+h~A4t`T-AA7E`
zgyjd54o^&G$kY-HSlE<=cN|G`Cv3Jl8wyQ8JL?u+c2;B&UdeG2092-MHe#i-+;=Cl
zLL@)Q{`!p~RP%_`n+uzo=HE%NjaU;*-;lQWK=Oc|Mi1?Iu<
zG_rLq0-#x%6VQSeD3ie51t~_-{k2*s(X4WT(gj+U5
zUAq%S8?G^Cv*)&^VcXDX7l9KzLGv5|bS^3vo_=jB_kmd0+lXnMtJt^!gR7U-mYamv
z24#0a@r9T%J_q&rM>6rtt<~m^SSRqLSr|PrfoI-8qEot-EcSrxl7iWH;Ra|Ax*wY*
z%N|?#lUDm>p>$uytn!Ot8DXa-p+iD(Z}>bIxslXY%vWNqoWcY(*e9D2gAx(pAH&;6)(%<^dEyU3
zQ+*IHL2dTR%1auO3fheI7~U$G8b|yl6MfKm(zf8E&aoBNn?YGndGhuWV>mCZH6P%e
zF-qAjR01`1r{Lmu;RGcFjDG+oqnxQf8V)+7wm9wn0GM$kw&hsWMDWSb_Xa=QKaebA
z_j&UBa3}n>U{Td2FW&`_Iufmpb*#i%?%(2uPJXl#ETQ-DPJCCd-0>1aG~MCu+w*n(7ytFS#EH0VoI~)OLtJiIHr&*INgz2rSmw{RnEAB
zn+~pl6P&)W`XLTD#6JKUL<>F$H@x?N&gW!df{7TvNPKm0aNs&bfO{
z;sHO1z#gQa_i;z2TFklaaEuR&Xm?>W;!RKnGJ9XL?P!f#JZ!3mTr+PxBo>w-zwujp
z6M;92;$m+Inm6$r7+wAPH*Y=b3MlxoFVCAA@ypZxPk0ad6}bP8=Z!@4<#Zb&3Oar{
z+k^^reT;K^4mba#-~@>N0LH7;NF%~g7U@NRKNka04T`qf{f$Da1wx4k3a&A3Z-$$u
zqas+{b&T&IKf?AlUi|TzD<4Ll45cVs1oEM58#e?_WxxXjUc;eyknb{`)btc2reFeJ
zw|EGPuf1cw7yX1BlS*#)A+(r7FQLEgsuN7NHrNW-fpy0{q8)UoCJyPIT
zI~#6x>fTG9k$0M=nEwuuP6#u7a=3d-`-r9MtSX8gHFW;#5!1hh0%JE5{x0q57m(EF
znyCT2$I3lzX6;6$w@7y!s4W_Y_#8C*j!vE!uxk52s75jR^TW?T@G=YdW!6nN{Z+Du
zer;-ufjP=b?2sHQ>Ia#dBENOi*@pC)L7(aLxJ*@xV5uzbk)ud2?&!qYMb>T9MYXsw
zhu$?v-Gp)kU{eXmVNH}d^?ZImA2bwye@dsRA7c&}A8->q)-ZP>kf!-6KnquhgPrHX
z3i%GZ9=u3vC=Eh>n>|fUK2F86b(#9;L`=yeE}k(SKIz3nLI%ee70I@EKZkkYw?*($
znrIOEsO|(WUuk>j`_m}B$A>Xtg|wGp{3G1-3=el!$yT}N3CE{e7WD&We(RCY-@<6Z
z=iwYV_DTuWTA|mLdIm&>=#;ypRpO0MW>cEpu#uJLiG6#DL&NQ>i)@J|hoP<><`LYS
zltatCoWsQxcGI6Hf(YAZgET9ii?Bs=i!h+=Q9BZxp#AA_D?F(TG|UhBjC)S+ogrgx
zqe45SXrsC|23eOWA8|{GZ;WVf<0RJbk}eEQGr|=6u}a_4zR3?NaE`3lZ)ib=bNFqc
zS*8s5r#1J07m8wI)GBci1q!@oY-ontUMJ9$^sIe78bddZQPH|a-}?}8k$NbDTe@b;
zQf+Rev?rq|{ih)(9Sx9Z;oSKmlz#pP^)a2sR|?FyuC-^vVFf~HWe#^t68BR=lJ!}W
zEs5#@i?5Oq4!;4fsPq9rxJW7mQ-^T8(8bg;Zc~a^20|3OZhQRLfPM7Nr~CV+EGrZ}
za4=@p>$DkYULa_henEp?s19BN_?v&4{TpH7DO5@O9l?HYnr2V+;!?!Am&x{S(YFUL
zkq7EevI@W=@P*j$iDy_lsCj-KY$cAVEm8>eVWtM8SdxY_&?0~=6j|$7Z*7p>AZ5~r
zX-K>J=O&j90$AGw6rjv`Zt`ho=FAN%u6r?2W_(0MBF(DF{_4|
zd)$yO+WlBzw%>J0+%vHU`XX}a^4VGkcb74HBAfpabIyfVXm@bdmUEihrYZj@o&G7+
zm+T#MOOV{C%p-g>R&c8IsZEgH0V5Q!;-ik&vMI%`9%RyzS$n0(D|!OVJ#Kk*fqE`L
z4YUUJ^(Q;xWk_}kcW)3i2FmQDD<*8};TlQ!ZOYp|{Ay*;xZ5aDE#Mt-)~;L;224Z&J%=q
z*7@bEERROcSnQ#hX}R)Fc(54ld8U)fB95@cac1~JB+#2?r1=Z~CPu#0T0F*nAd6T-
zC{t_M1>Km6QeR@?8*}SrB;`IZt|w=JC?3p(k|BPKNNBakq!4Xo{t5oep(Ni-8_oz3
zi!vHNprY38=S&-r^bBoi>HE}?NbnD=H8`ypAe&LKDrw>R16^q^NK8m9W&JU{6{|7*
zw$#Ewg<>Ie{IX0O2xd7jM+{RbSh_(fEA@;Lw2Q}4a8NU$-U${`!Gg^!_)%cSuy0Nx
ztqMOEF_7?rL?wtYC`ReAq~Rbunc<~fvXC~HG0iCT%St70dktspw?deZ$l}g^z(Cuuq+X>z9yp-RRyez?-X=*+`76S;)L
zzcw9?NRJJaROTI06l*6(EEiVl%@!2T|4GapCPhb>S1cmI21z|(pQ71T3z99oRse}Y
zMf0m7!ZfnueVjEWc&IhfPCqNALyMxbK}11faU;D%er2$#n0p9jLs1`%B@k`U+d=Gx
zv3y^({8e_;?&9jF(`OQBLB(Ex0f!@aw!36KAncplX?!x0lHm=SvRm?ZNg3f~Y+mnP
z-+tZRP8#vq>59SnDiD(vRm}23_U?R@fn2ze0EH%H7N4u|oRJ8GNJs^Iow2w&i0?m3
zT@dcEfGUb)1SeGA#Z`^Et1##_O$iO*^)EPJCM)P?v%8;ZPqkCUv9~8m6{y!uV$cTN
zYSGnKQ;$OhqWl9w*-KNxh1b!9>=iqOja%dCp#!8ISpbONWL=?JUu!_;VcgO3=CF_x
zUJYuz#E=5T;_X(-#L=0KU*&R?-c-TqLTi^WeaU1pri3QbEL{dB2-|J$=`5j?Lgbz?
zfYtF+xj|zUhB4Kwb~joe`m2Hm+;!>eZZRkMy)9g%DPMVE_-+q7`>k&;mT{*nO5r=F
zu6RxzWUK_!CUJzuk4U(Mn1bc#lx5V`3n$Y8979&xJ<7vuHRLFNc%_Dgd#EG*DxEQr
z@t`cDlX{o=h^=oBRh~uLgGijQ&eV>}bu3b?(y$(d_rJYP91pm~Q4JJ6Q#t+R^oDf|
zSw#`xDBel;!rKQ=>!Y2@rflCIhH7mC^Z+>tvM2hQ#hKSx
zO>^6bnon^NbE~XI6Hm-gI_q>Ylld+C5ri8JM46-XkWA>L!8NKByE{RAg{$w3S>bqh
zY&xKzZf}D|LBBKDM$Kf?Rp(t4c)utP-EJ@oUC{->VupPX)mv*%$3XnvpD?8@+i)|X
zh_13peOkr5=o*EiXVsS6;x-f6e59xO*_S8MT6IT{B)nd^!z%*@a~e?-wJ|r@uTb48
z1(@a6og9{wK==feQuRUJYblfWsI2${C=KDRS~vzt<=BPct(qYLd+)Z#Fs0v6yD&GqsKm^eYP-!cAaHXvP
z<&~b`6eiNeseF>fPQ{Hy{~a7$^2DeS&zGO#j*!`ETXSTlA6R$7;pZQHS#L_@#iOCc
zQ8uv%3K&3pJBsnUch(kRQh#ha6E
zQ0wg4zNmE&9fh|iA-a+wf%qmRz}Fx^J!a?{1m{80{tKG^;2~#AnR>L8`F>l}bg9uYN8Dfjt
zP30mHh>SsWx32Jhc}k$?yqy4h7FU41hc)d%9qz$1aA
z3py`Ig<+;~P$ZFN=<#inob(CUWgn(F>2pJ!BLR2sAAm3P1}o8<)HBu2?`oI{M6H8&
z6^v<)b*8eYnh{o6Rk=Lg*4s2r7Mg5vuUiOv*kXTS-Uu0hpv|H$(c(Z=-Ya}$t?`Ov
zU%RPPPMJFcKYDYGiU@l(%`+Q;&Bif%aYt&YKuyo0|E5csWucGso$-P_pI8+6lzAuC4^pbD2IY}B
zwI=v{Y(z1~A))f0SwGX*`xUJ9^1uDYX>>rvk7?nSO|PS;rl(~Uj|=w@x(tR@*@)>M
z=iVl^fjPf2`-vg9t3M|Y@@bk`R%{s8#s;Gt1@^3R+W%o?EH$A^5fJvFAc87xHU-+w
zb7&XbV~1YqMKW2z-_avoB#tGWudVPMq=6AyBF61DXzwr-x8P-L6zWk-;VKq5c6^J%8b;n9Lc>8lsX6rqH0c@>?PM2h{NOehRBTOASQrwq6
z#e#VAJI&N9C*yZ$%tiVQ{8}5LI^KAZZ<`EM=jC^PX?RkP^K}r2rZ^Eg3wtRzj4y*@
zy!MTd2>2Nq;J!p53RKnU5tC$bRWA?T219AestTs#<1N?^y+2X}Dj&bYwos*00Dw>!0QG->OcMeCQUHK|0>Qt-DE~&cfIt8M_umtJ4T403
z8H@)w|8w>`15{WbAutd@pnviE0fJz?sG>(cK>tF0y`CZn3MmLsV*MAY6af5%hKMdX
z@DJ2Y{MYY5M8t^Ge|6{=1ON+i>-{Lm*L|AQxD^Bd9Lm%J0~i%%
z^~Q90z60ha?Qr|6&1`Z@V9gT@zahE!Qca7)7}}O_%0>fhbUotxMwb(
zn3J)-Rc8fCW0)VEKNS6iBSO)VD6ltJ2B8Uc51OfSkyQPR7!SLTmw76JIQp8nL>6W|
z1rlxdHzFCn44mV{cs!#h;SV4DFc_BAp&xm&pg=3~P^GzZoQ>ZmYKIateD|U}2j=LZ
zzzo?rYrE|T<%3CM`tLg1YXX|^``M;3v%Q`}h>%nWt5wZYF7@hLWnKs~qOmK23C*Z~
zl)lR_(5tQ!YGH+=W~_4nl|9jP^w~Ykyl{BgPwWK3s}A`m9{S}ajousm=;oag)euao
zC*d4MvMgc>2r)^{UW?B3^mS$95y}%6Lxg^V$Hp2S?H-;_%U-dHCNCqER3{B=4GC!E
zvi^-`mp28G{o5AK
zYR2w#fB0Hfkog14sv910EsHm_y(C;l-WW^x%P9@}+|^(jsMx9>NJPPEgAF_SB^A3B
zdISbS89p;Tx!s=Gw->n4Y^xzGe>c=evtXFu+N-dOa+D`5VlD<7IAgBpIxlOxpq~py
zr!VBu;U7nziYq{;9HbXPQXqyx&xTgFDOGB0NNX^l9#EpkNjR$(^neVZQBr!ABHOxG
zsHQr#b;IRo+0}Uo+Na3`VuMUn_CXIVK|w8kxcxb9N}WX1@g=p(>Ta+$vYfLRAXJN9
zAtRbYar@m2Qll!dp@>&`|7&GOb70($IPn2Vi+sa26NLvC#b2Ew^&yId3q&%?yd)m=
z*~l`{%_Fj~(Hnlz?y$Z|N|KPyq&LkVY
z2CI(>kh7(an^Pbl31Nu(!Nr+;o_HtLPs6i(rBp<1EK$Ul9FBx3?H&;ATH@J5R
z@+Y(>MZG%Er=T0n`0i+SKvHBkYNKylvfyGO#Ou4E3*D`p7Id3KfL6P(VU%?1JjQft
ze^eNpv{^XqTx$ZL7luYR+K)cS-)jLG7&;w+A&fXa$${%elV~=JTcV^v2Wnd*wK2Er
zm3=$)<5)CIk*^7OU5&V?afw>cL2U!+9W5!h2Q}e?R|#jUY_y+KgO4I*MS6`FL-(Tm
zvGJRrjjv)`1Z*mVxUB^Gpb@yS<`X~RSoZ45((e^BhR)YgL3feE)4G)u$dxK#g3)nboT3gCh>h7T*
zajBW2LMj!uo98LSW4y)>H8dJ}_!{z;r^-JIH;cfpgLm%UBen*KUWF~`W^862ps7yc
zl~2~#6fXBY@QiXbW-NtJn}ET*_*#{~&j#6$1EoP*F~OK4B*p^Z4_BcALgzCP0mD+^
z;>@YjQXr?vJe2nM?%Sq84oOO4PA})&5d}J90R-Y_xl!Th6`Sr}s!KFh;mVuv%6>XO
z#_Ii`nZfU?fzxgy0!7IItVW&wCGd^xkALjlmYDh}6Y#2?;64j0JFqGEYcOsR!*YHFJ8q_Por!vdj7HS>{mcbrcB{m-U
zZxcz{?J5aPs1JP1YITZ$Q~D1=3vZVIV(#zrY=F+@$>@N-1ssg8787HpjhQ!~b*7s)
zMN}u&p>fg{JTh|8Bht^-Brd$v-!XQ?;=u1clV3KmyFtm}>s#GHPE$*{3vV^lwOx=4
z%om;JU6f3DT%XN1Vd9v$<}4D9n~mCXDx$68eP<}3No<%srGcJZ3wDe0pQr}G9{dAn
zv}TPj{R61hxB0ACr7tcc4SKrzN(O_`bAu}zuS3@)i=GX`Hdm#TdTD_iI~iTnV8#8Q7h@r(EgUv<7wF{@B+Y+0W0tW)ODp$Ahz}Af+%&4OA8s(|2rsEC5j9dzCGKDd?|Wu`S;MSnZ4{~S
zJ5%Vhr8p!yRF0@b`kHiKVP86d5JwdGH&Q_npo-1*QWFsA%RtOj8+yg@No
z%#Gz`;B&(y0VwtptoKmFvyF&T5@|G%&0~~jEi9)Ba_l5RO)d6+BZ&34UN8uX$N163qvtHhkO!@X
zicr`5I?;&Kew#hSArA(1pgfq@ufxO>n@^r(BO36LHw}BMuxAk+Q2l}>POxu&TRFe+
zs5co^iAPkcJ3mXVUEsY?nnk9*Lw#{3-pL8DDYUi0?8X}PPT&I{;yN!Ry802F4}61R
zn-rx$lX-jsw8Xlh<$VNko<%SZ1(;@mo9oom2mqv3zmqWSqrd5riWmklZ5m9q58_rD
zA4)g`rzPUUScuRztNsocK_W9c4)mS?HFxu(hn(dPHZVr-F#N7f2{J|_@{$&_Ptb-a
z)hj~ADSIFaX|V{w6|w*_Oib|NUrAUpeTGA^I+-J4?2xW79h={~U;w}IORBdgQ3go=
zk(16(;0n6Zw=w(M-kO=jSiduuT0BfWU0v=>5uA>Mq^nZ;iiOga3o0KsMFhupC>p6k
zHArE{tUw1&NJ{ffvlon;W@%fWE!9}~UUA*mPfFF5XX9%rbi?;%0|K;dSZZpV
zE;j|T()Hi)-H$b7s?7dExY8m`Gm8R&=4U$-o&@*l|z~C4HK<
z`dG>?FglSLiwT#I3N#@en9+1PjH;+p>aGA-i0{LoHRsRfG$40?PALK7#dRNY5i>C^
z+Jyc%0p`TsL)_HdQiNK$={{>bz^W6Xd
literal 0
HcmV?d00001
diff --git a/src/pods/about/members.ts b/src/pods/about/members.ts
index 12f03175..9a21397b 100644
--- a/src/pods/about/members.ts
+++ b/src/pods/about/members.ts
@@ -167,4 +167,11 @@ export const memberList: Member[] = [
urlLinkedin: 'https://www.linkedin.com/in/brauliodiez/',
image: './assets/braulio-diez.jpeg',
},
+ {
+ id: '22',
+ name: 'Omar',
+ surname: 'Lorenzo',
+ urlLinkedin: 'https://www.linkedin.com/in/omar-lorenzo-montelongo/',
+ image: './assets/omar-lorenzo.jpeg',
+ },
];
From 966ac1b9b8e5e83e65cf86d85b8709de8c04f72b Mon Sep 17 00:00:00 2001
From: Braulio
Date: Fri, 28 Feb 2025 20:53:04 +0100
Subject: [PATCH 7/8] updates
---
index.html | 1 -
src/pods/about/about.pod.tsx | 3 +--
src/pods/about/members.ts | 18 +++++++++---------
3 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/index.html b/index.html
index d8affb1c..74734100 100644
--- a/index.html
+++ b/index.html
@@ -335,7 +335,6 @@
Share your ideas as low-fidelity mocks in minutes, perfect for
getting started.
-
diff --git a/src/pods/about/about.pod.tsx b/src/pods/about/about.pod.tsx
index e2504672..702d43aa 100644
--- a/src/pods/about/about.pod.tsx
+++ b/src/pods/about/about.pod.tsx
@@ -9,8 +9,7 @@ export const AboutPod = () => {
Quickmock
-
Version 0.0
-
Community preview
+
Version 1.0
);
diff --git a/src/pods/about/members.ts b/src/pods/about/members.ts
index 9a21397b..955dd70c 100644
--- a/src/pods/about/members.ts
+++ b/src/pods/about/members.ts
@@ -145,6 +145,13 @@ export const memberList: Member[] = [
},
{
id: '19',
+ name: 'Omar',
+ surname: 'Lorenzo',
+ urlLinkedin: 'https://www.linkedin.com/in/omar-lorenzo-montelongo/',
+ image: './assets/omar-lorenzo.jpeg',
+ },
+ {
+ id: '20',
name: 'Gabriel',
surname: 'Ionut',
urlLinkedin: 'https://www.linkedin.com/in/gabriel-ionut-birsan-b14816307/',
@@ -152,7 +159,7 @@ export const memberList: Member[] = [
},
{
- id: '20',
+ id: '21',
name: 'Antonio',
surname: 'Contreras',
urlLinkedin:
@@ -161,17 +168,10 @@ export const memberList: Member[] = [
},
{
- id: '21',
+ id: '22',
name: 'Braulio',
surname: 'Diez',
urlLinkedin: 'https://www.linkedin.com/in/brauliodiez/',
image: './assets/braulio-diez.jpeg',
},
- {
- id: '22',
- name: 'Omar',
- surname: 'Lorenzo',
- urlLinkedin: 'https://www.linkedin.com/in/omar-lorenzo-montelongo/',
- image: './assets/omar-lorenzo.jpeg',
- },
];
From 368b92db5680b25e44d5c97bd2f7c85070411acc Mon Sep 17 00:00:00 2001
From: Vero
Date: Fri, 28 Feb 2025 22:38:31 +0100
Subject: [PATCH 8/8] Improved gauge component
---
.../front-rich-components/gauge/gauge.tsx | 23 +++++++++----------
.../gauge/gauge.utils.ts | 12 +++++-----
.../canvas/model/inline-editable.model.ts | 2 +-
3 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/src/common/components/mock-components/front-rich-components/gauge/gauge.tsx b/src/common/components/mock-components/front-rich-components/gauge/gauge.tsx
index 409144ba..056566ae 100644
--- a/src/common/components/mock-components/front-rich-components/gauge/gauge.tsx
+++ b/src/common/components/mock-components/front-rich-components/gauge/gauge.tsx
@@ -7,7 +7,10 @@ import { useShapeProps } from '../../../shapes/use-shape-props.hook';
import { BASIC_SHAPE } from '@/common/components/mock-components/front-components/shape.const';
import { useGroupShapeProps } from '../../mock-components.utils';
-import { getGaugePartsText } from './gauge.utils';
+import {
+ endsWhithPercentageSymbol,
+ extractNumbersAsTwoDigitString,
+} from './gauge.utils';
const gaugeShapeSizeRestrictions: ShapeSizeRestrictions = {
minWidth: 70,
@@ -42,7 +45,6 @@ export const Gauge = forwardRef((props, ref) => {
);
const { width: restrictedWidth, height: restrictedHeight } = restrictedSize;
- const { gaugeValue } = getGaugePartsText(text);
const { fontSize } = useShapeProps(otherProps, BASIC_SHAPE);
const commonGroupProps = useGroupShapeProps(
props,
@@ -52,11 +54,12 @@ export const Gauge = forwardRef((props, ref) => {
);
const { stroke, fill, textColor } = useShapeProps(otherProps, BASIC_SHAPE);
- const parsedValue = gaugeValue?.trim().endsWith('%')
- ? gaugeValue.slice(0, -1)
- : gaugeValue;
- const progress = Number(parsedValue) || 10;
- const showPercentage = gaugeValue?.trim().endsWith('%');
+ const numericPart = extractNumbersAsTwoDigitString(text);
+
+ const progress = Number(numericPart);
+ const displayValue = endsWhithPercentageSymbol(text)
+ ? `${numericPart}%`
+ : numericPart;
const size = Math.min(restrictedWidth, restrictedHeight);
const strokeWidth = Math.min(restrictedWidth, restrictedHeight) / 10;
@@ -64,7 +67,6 @@ export const Gauge = forwardRef((props, ref) => {
const center = size / 2;
const angle = (progress / 100.01) * 360;
const fontSizeScaled = fontSize * (size / 80);
- console.log(radius, center, angle, fontSizeScaled);
const arcPath = () => {
const startAngle = -90;
const endAngle = startAngle + angle;
@@ -95,15 +97,12 @@ export const Gauge = forwardRef((props, ref) => {
x={center - 10 - radius / 2}
y={center - fontSizeScaled / 2}
width={center + 10}
- text={(parsedValue || '10%') + (showPercentage ? '%' : '')}
+ text={displayValue}
fontFamily="Arial, sans-serif"
fontSize={fontSizeScaled}
align="center"
fill={textColor}
fontStyle="bold"
- letterSpacing={1}
- wrap="none"
- ellipsis={true}
/>
);
diff --git a/src/common/components/mock-components/front-rich-components/gauge/gauge.utils.ts b/src/common/components/mock-components/front-rich-components/gauge/gauge.utils.ts
index 8c13f1e3..0d23307c 100644
--- a/src/common/components/mock-components/front-rich-components/gauge/gauge.utils.ts
+++ b/src/common/components/mock-components/front-rich-components/gauge/gauge.utils.ts
@@ -1,8 +1,8 @@
-interface GaugePartsText {
- gaugeValue: string;
-}
-export const getGaugePartsText = (text: string): GaugePartsText => {
- let gaugeValue = text ? text.replace(/\r?\n|\r/g, '').trim() : '';
+export const extractNumbersAsTwoDigitString = (text: string): string => {
+ const numbersAsString = text.replace(/\D/g, '');
+ return numbersAsString === '100' ? '100' : numbersAsString.slice(0, 2) || '0';
+};
- return { gaugeValue };
+export const endsWhithPercentageSymbol = (text: string): boolean => {
+ return text.trim().endsWith('%');
};
diff --git a/src/pods/canvas/model/inline-editable.model.ts b/src/pods/canvas/model/inline-editable.model.ts
index 1f867e6b..b08668c4 100644
--- a/src/pods/canvas/model/inline-editable.model.ts
+++ b/src/pods/canvas/model/inline-editable.model.ts
@@ -79,6 +79,7 @@ const shapeTypesWithDefaultText = new Set([
'browser',
'modalDialog',
'loading-indicator',
+ 'gauge',
]);
// Map of ShapeTypes to their default text values
@@ -144,7 +145,6 @@ export const getShapeEditInlineType = (
case 'vertical-menu':
case 'table':
case 'modal':
- case 'gauge':
case 'appBar':
case 'tabsBar':
case 'tooltip':