iot-app-kit
iot-app-kit copied to clipboard
[Gauge] - Able to add Gauge Widget to Dashboard
:exclamation: PLEASE MAKE THESE CHANGES UNDER A FEATURE FLAG |
---|
:exclamation: PLEASE MAKE THESE CHANGES IN SMALL INCREMENTAL PRs AND NOT AT ONCE |
---|
Create a feature flag by setting a local_storage value and referencing it as this:
const hasGauge = !!localStorage?.getItem('HAS_GAUGE_WIDGET');
Implementation Steps:
- Add the following to
iot-app-kit/packages/dashboard/src/customization/widgets/types.ts
export type GaugeProperties = QueryProperties & {
gaugeThickness?: number;
showName?: boolean;
showUnit?: boolean;
fontSize?: number;
labelFontSize?: number;
unitFontSize?: number;
yMin?: number;
yMax?: number;
};
export type GaugeWidget = DashboardWidget<GaugeProperties>;
-
Create
Gauge
folder underiot-app-kit/packages/dashboard/src/customization/widgets
-
In the folder, you will need the implement the following files (take a look at KPI for an idea of what to do for each file):
-
component.tsx
- this is where you will use the react-component implementation -
icon.tsx
- Represents the icon that will be shown in the widget palette -
plugin.tsx
- Represents the initial state of all the settings when the widget is added to a dashboard Initial states should include aninitialSize, showName: true, showUnit: true
-
-
Users should be able to add the gauge widgets to the dashboard
- Make sure you cannot add more than 1 property to a widget (we already do this for KPI so it should be the same behavior)
### Dial Acceptance criteria
- [ ] User can add a gauge component to dashboard
- [ ] User cannot add more than one property to a gauge widget
svg for the component library section.
here are the light and dark mode SVGs