apxor-bi-widgets
v1.0.0
Published
This project demonstrates the use of the `apxor-bi-widgets` package, which includes pre-built components for creating and rendering business intelligence visualizations. The sample app shows how to integrate and utilize these components effectively.
Maintainers
Readme
Business Intelligence Widgets
This project demonstrates the use of the apxor-bi-widgets package, which includes pre-built components for creating and rendering business intelligence visualizations. The sample app shows how to integrate and utilize these components effectively.
Installation
To install apxor-bi-widgets, use npm:
npm install apxor-bi-widgets
# or
yarn add apxor-bi-widgets
# or
pnpm add apxor-bi-widgetsComponents
1. Bar Graph
2. Stacked Bar Graph
3. Aggregates
4. Line/Area Graph
5. Pie Chart
6. Table
7. Advanced Pie Chart
BarGraph
The BarGraph component renders a bar graph based on the provided data.
Props
Required Props:
data: Array of objects withkeyandvaluepropertiestitle: String for the chart title
Optional Props:
[xAxisLabel]: String representing X axis label[yAxisLabel]: String representing Y axis label[showXAxisKeys]: Boolean to show/hide X axis keys[showYAxisValues]: Boolean to show/hide Y axis values[xAxisUnit]: String representing the unit of measurement for X axis[yAxisUnit]: String representing the unit of measurement for Y axis[showlegends]: Boolean to show/hide legends[chartContainerStyles]: Object for custom chart container styles[colorScheme="ColorsForStackedBar"]: "SequentialRose" | "SequentialBlue" | "SequentialGreen" | "SequentialOrange" | "SequentialGray" | "DivergingGreenWhite" | "DivergingDarkGreenYellow" | "rainbowOf10" | "rainbowOf5" | "orangeShadeOf10" | "Random20" | "DivergingDarkPurpleBlueRed" | "ColorsForStackedBar"[height]: Number for chart height[width]: Number for chart width[legendSymbol]: "circle" | "rectangle"[rootStyles]: Object for custom root styles[titleStyles]: Object for custom title styles[loading]:Loading state if data is loading
BarGraphCreation
The BarGraphCreation component provides an interface for creating and customizing bar graph.
Props
Required Props:
xAxisProperties: Array of strings for X axis propertiesyAxisProperties: Array of{ attribute: string; type: DATA_TYPE; }filterProperties: Array of filter property of{ label: string; value: string; }filterPropertieOperators: Function that accepting operators of{ label: string; value: string; }based on the property type (string | float | int | datetime | date)filterPropertieValues: Function that accepting values of{ label: string; value: string; }based on the selected propertyxAxisUnits: Array of unit strings for X axisyAxisUnits: Array of unit strings for Y axisonViewChart: Function called when viewing a chart, returns a payload with all filled fieldsonSaveOrUpdateChart: Function called when saving or updating a chart, returns a payload with all filled fieldsdashboardRedirectionOptions: Array of{ label: string; value: string; }redirection
Optional Props:
[rootStyles]: Object for custom root styles[isUpdate]: Boolean key[updateProps]: Object of all necessary fields for updating[isViewChartLoading]:Loading state if view chart data is loading[expressionFormulaError]: String of error for expression builder
BarGraph & BarGraphCreation Usage
Here's a basic example of how to use the BarGraph and BarGraphCreation components from apxor-bi-widgets:
import {
ColorsSchemeForGraph,
DATA_TYPE,
OPERATOR,
BarGraph,
BarGraphCreation,
} from "apxor-bi-widgets";
import { useState } from "react";
// Sample data
const data = [
{ key: "Computer", value: 15 },
{ key: "Tab", value: 10 },
{ key: "Mobile", value: 20 },
{ key: "Phone", value: 25 },
];
function App() {
const [previewData, setPreviewData] = useState([]);
const [saveData, setSaveData] = useState([]);
return (
<div>
<h1>Business Intelligence Widgets Demo</h1>
<div>
<BarGraph
data={data}
title="Sample Bar Graph"
height={600}
width={600}
colorScheme="ColorsForStackedBar"
legendSymbol="circle"
showXAxisKeys={true}
showYAxisValues={true}
xAxisLabel="Days"
xAxisUnit="day"
yAxisUnit="sec"
yAxisLabel="Time"
/>
<BarGraphCreation
filterPropertieOperators={(type: DATA_TYPE) => {
// it will return selected property data type and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterPropertieValues={(property: string) => {
// it will return selected property and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterProperties={[
{ name: "property1", type: "string" },
{ name: "property2", type: "int" },
]}
xAxisProperties={["dimension1", "dimension2"]}
yAxisProperties={[
{ attribute: "CreatedTimeStamp", type: "string"},
{ attribute: "Source",type: "string"}
]}
dashboardRedirectionOptions={[
{ label: "Dashboard 1", value: "/dashboard1" },
{ label: "Dashboard 2", value: "/dashboard2" },
]}
onViewChart={(payload) => {
setPreviewData(payload);
}}
onSaveOrUpdateChart={(payload) => {
setSaveData(payload);
}}
xAxisUnits={["min", "sec", "ms", "hour", "day", "week", "month", "year"]}
yAxisUnits={["min", "sec", "ms", "hour", "day", "week", "month", "year"]}
/>
</div>
</div>
);
}
export default App;Payload Structure of BarGraphCreation
The payload structure you will get after clicking on onViewChart, onSaveOrUpdateChart, and updateProps will accept the same format is as follows:
{
visualization: {
name: string;
xAxisProperty: string;
aliasForXAxis: string;
aliasForYAxis: string;
yAxisProperties: {
formula: string;
events: {
[key: string]: {
name: string;
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
};
};
};
};
customFilters: {
name: string;
operator: "EQ" | "NEQ" | "LT" | "LTE" | "GT" | "GTE" | "R";
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
value: string[];
}[];
customization: {
colorScheme: "SequentialRose" | "SequentialBlue" | "SequentialGreen" | "SequentialOrange" | "SequentialGray" | "DivergingGreenWhite" | "DivergingDarkGreenYellow" | "rainbowOf10" | "rainbowOf5" | "orangeShadeOf10" | "Random20" | "DivergingDarkPurpleBlueRed" | "ColorsForStackedBar";
xAxisUnit: string | null;
yAxisUnit: string | null;
showXAxisKeys: boolean;
showYAxisValues: boolean;
showlegends: boolean;
dashboardRedirectionUrl: string | null;
};
}StackedBarGraph
The StackedBarGraph component renders a stacked bar graph based on the provided data.
Props
Required Props:
data: Array of{ key: string; [category: string]: string | number; }title: String for the chart title
Optional Props:
[xAxisLabel]: String representing X axis label[yAxisLabel]: String representing Y axis label[showXAxisKeys]: Boolean to show/hide X axis keys[showYAxisValues]: Boolean to show/hide Y axis values[yAxisUnit]: String representing the unit of measurement for Y axis[showlegends]: Boolean to show/hide legends[chartContainerStyles]: Object for custom chart container styles[colorScheme="ColorsForStackedBar"]: "SequentialRose" | "SequentialBlue" | "SequentialGreen" | "SequentialOrange" | "SequentialGray" | "DivergingGreenWhite" | "DivergingDarkGreenYellow" | "rainbowOf10" | "rainbowOf5" | "orangeShadeOf10" | "Random20" | "DivergingDarkPurpleBlueRed" | "ColorsForStackedBar"[height]: Number for chart height[width]: Number for chart width[legendSymbol]: "circle" | "rectangle"[rootStyles]: Object for custom root styles[titleStyles]: Object for custom title styles[loading]:Loading state if data is loading
StackedBarGraphCreation
The StackedBarGraphCreation component provides an interface for creating and customizing stacked bar graph.
Props
Required Props:
xAxisProperties: Array of{ attribute: string; type: DATA_TYPE; }yAxisProperties: Array of{ attribute: string; type: DATA_TYPE; }filterProperties: Array of filter property of{ label: string; value: string; }filterPropertieOperators: Function that accepting operators of{ label: string; value: string; }based on the property type (string | float | int | datetime | date)filterPropertieValues: Function that accepting values of{ label: string; value: string; }based on the selected propertyxAxisUnits: Array of unit strings for X axisyAxisUnits: Array of unit strings for Y axisonViewChart: Function called when viewing a chart, returns a payload with all filled fieldsonSaveOrUpdateChart: Function called when saving or updating a chart, returns a payload with all filled fieldsdashboardRedirectionOptions: Array of{ label: string; value: string; }redirectionfinalTransformationOptions:Array of{ label: string; value: string; }
Optional Props:
[rootStyles]: Object for custom root styles[isUpdate]: Boolean key[updateProps]: Object of all necessary fields for updating[isViewChartLoading]:Loading state if view chart data is loading[expressionFormulaError]: String of error for expression builder
StackedBarGraph & StackedBarGraphCreation Usage
Here's a basic example of how to use the StackedBarGraph and StackedBarGraphCreation components from apxor-bi-widgets:
import {
ColorsSchemeForGraph,
DATA_TYPE,
OPERATOR,
StackedBarGraph,
StackedBarGraphCreation,
} from "apxor-bi-widgets";
import { useState } from "react";
// Sample data
const data = [
{ key: "January", desktop: 186, mobile: 80 },
{ key: "February", desktop: 305, mobile: 200 },
{ key: "March", desktop: 237, mobile: 120 },
{ key: "April", desktop: 73, mobile: 190 },
{ key: "May", desktop: 209, mobile: 130 },
{ key: "June", desktop: 214, mobile: 140 },
];
function App() {
const [previewData, setPreviewData] = useState([]);
const [saveData, setSaveData] = useState([]);
return (
<div>
<h1>Business Intelligence Widgets Demo</h1>
<div>
<StackedBarGraph
data={data}
title="Sample Stacked Bar Graph"
height={600}
width={600}
colorScheme="ColorsForStackedBar"
legendSymbol="circle"
showXAxisKeys={true}
showYAxisValues={true}
xAxisLabel="Days"
xAxisUnit="day"
yAxisUnit="sec"
yAxisLabel="Time"
/>
<StackedBarGraphCreation
filterPropertieOperators={(type: DATA_TYPE) => {
// it will return selected property data type and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterPropertieValues={(property: string) => {
// it will return selected property and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterProperties={[
{ name: "property1", type: "string" },
{ name: "property2", type: "int" },
]}
xAxisProperties={[
{ attribute: "CreatedTimeStamp", type: "string"},
{ attribute: "Source",type: "string"}
]}
yAxisProperties={[
{ attribute: "CreatedTimeStamp", type: "string"},
{ attribute: "Source",type: "string"}
]}
dashboardRedirectionOptions={[
{ label: "Dashboard 1", value: "/dashboard1" },
{ label: "Dashboard 2", value: "/dashboard2" },
]}
onViewChart={(payload) => {
setPreviewData(payload);
}}
onSaveOrUpdateChart={(payload) => {
setSaveData(payload);
}}
finalTransformationOptions={[
{
label: "Seconds To Timestamp",
value: "secondsToTimestamp",
},
{
label: "Minutes To Timestamp",
value: "minutesToTimestamp",
},
{
label: "In Days",
value: "toWeekDay",
},
]}
xAxisUnits={["min", "sec", "ms", "hour", "day", "week", "month", "year"]}
yAxisUnits={["min", "sec", "ms", "hour", "day", "week", "month", "year"]}
/>
</div>
</div>
);
}
export default App;Payload Structure of StackedBarGraphCreation
The payload structure you will get after clicking on onViewChart, onSaveOrUpdateChart, and updateProps will accept the same format is as follows:
{
visualization: {
name: string;
xAxisProperty: string;
aliasForXAxis: string;
xAxisDataType: string;
yAxisDimensions: {
alias: string;
final_transformation: string;
formula: string;
events: {
[key: string]: {
name: string;
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
};
};
dimention?: string;
dimention_type: "derived" | "normal";
}[];
};
customFilters: {
name: string;
operator: "EQ" | "NEQ" | "LT" | "LTE" | "GT" | "GTE" | "R";
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
value: string[];
}[];
customization: {
colorScheme: "SequentialRose" | "SequentialBlue" | "SequentialGreen" | "SequentialOrange" | "SequentialGray" | "DivergingGreenWhite" | "DivergingDarkGreenYellow" | "rainbowOf10" | "rainbowOf5" | "orangeShadeOf10" | "Random20" | "DivergingDarkPurpleBlueRed" | "ColorsForStackedBar";
xAxisUnit: string | null;
yAxisUnit: string | null;
showXAxisKeys: boolean;
showYAxisValues: boolean;
showlegends: boolean;
dashboardRedirectionUrl: string | null;
};
}Aggregates
The Aggregates component renders a aggregates list based on the provided data.
Props
Required Props:
type:single | grouped-Type of aggregatestitle: String for the chart titledata: if type issinglethen data willl be{ label: string; value: number; unit?: string; }else Array of{ label: string; value: number; unit?: string; }
Optional Props:
[colorForLabel]: Color for label[colorForValue]: Color for value[colorForUnit]: Color for unit[fontSizeForLabel]: Font size for label[fontSizeForValue]: Font size for value[fontSizeForUnit]: Font size for unit[backgroundColor]: if type issingle[chartContainerStyles]: Object for custom chart container styles[rootStyles]: Object for custom root styles[titleStyles]: Object for custom title styles[loading]:Loading state if data is loading
AggregatesCreation
The AggregatesCreation component provides an interface for creating and customizing aggregates.
Props
Required Props:
aggregatesProperties: Array of{ attribute: string; type: DATA_TYPE; }filterProperties: Array of filter property of{ label: string; value: string; }filterPropertieOperators: Function that accepting operators of{ label: string; value: string; }based on the property type (string | float | int | datetime | date)filterPropertieValues: Function that accepting values of{ label: string; value: string; }based on the selected propertyunits: Array of unit strings for X axisonViewChart: Function called when viewing a chart, returns a payload with all filled fieldsonSaveOrUpdateChart: Function called when saving or updating a chart, returns a payload with all filled fieldsdashboardRedirectionOptions: Array of{ label: string; value: string; }redirectionfinalTransformationOptions: Array of{ label: string; value: string; }
Optional Props:
[rootStyles]: Object for custom root styles[isUpdate]: Boolean key[updateProps]: Object of all necessary fields for updating[isViewChartLoading]:Loading state if view chart data is loading[expressionFormulaError]: String of error for expression builder
Aggregates & AggregatesCreation Usage
Here's a basic example of how to use the Aggregates and AggregatesCreation components from apxor-bi-widgets:
import {
ColorsSchemeForGraph,
DATA_TYPE,
OPERATOR,
Aggregates,
AggregatesCreation,
} from "apxor-bi-widgets";
import { useState } from "react";
// Sample data
const data = [
{
label: "Call Count",
value: 2000,
unit: "sec",
}, {
label: "Call Duration",
value: 10,
unit: "min",
},
];
function App() {
const [previewData, setPreviewData] = useState([]);
const [saveData, setSaveData] = useState([]);
return (
<div>
<h1>Business Intelligence Widgets Demo</h1>
<div>
<Aggregates
data={data}
title="Sample Aggregates"
type="grouped"
colorForLabel="#000000"
colorForValue="#000000"
colorForUnit="#000000"
fontSizeForLabel={14}
fontSizeForValue={18}
fontSizeForUnit={10}
/>
<AggregatesCreation
filterPropertieOperators={(type: DATA_TYPE) => {
// it will return selected property data type and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterPropertieValues={(property: string) => {
// it will return selected property and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterProperties={[
{ name: "property1", type: "string" },
{ name: "property2", type: "int" },
]}
aggregatesProperties={[
{ attribute: "CreatedTimeStamp", type: "string"},
{ attribute: "Source",type: "string"}
]}
dashboardRedirectionOptions={[
{ label: "Dashboard 1", value: "/dashboard1" },
{ label: "Dashboard 2", value: "/dashboard2" },
]}
onViewChart={(payload) => {
setPreviewData(payload);
}}
onSaveOrUpdateChart={(payload) => {
setSaveData(payload);
}}
finalTransformationOptions={[
{
label: "Seconds To Timestamp",
value: "secondsToTimestamp",
},
{
label: "Minutes To Timestamp",
value: "minutesToTimestamp",
},
{
label: "In Days",
value: "toWeekDay",
},
]}
units={["min", "sec", "ms", "hour", "day", "week", "month", "year"]}
/>
</div>
</div>
);
}
export default App;Payload Structure of AggregatesCreation
The payload structure you will get after clicking on onViewChart, onSaveOrUpdateChart, and updateProps will accept the same format is as follows:
{
visualization: {
name?: string;
aggregateType: "grouped" | "single";
aggregates: {
alias: string;
final_transformation: string;
formula: string;
events: {
[key: string]: {
name: string;
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
};
};
filters: {
name: string;
operator: OPERATOR;
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
value: string[];
}[];
unit: string;
}[];
};
customization: {
colorForLabel: string;
fontSizeForLabel: number;
colorForValue: string;
fontSizeForValue: number;
colorForUnit: string;
fontSizeForUnit: number;
backgroundColor?: string | null;
dashboardRedirectionUrl: string | null;
};
}LineGraph
The LineGraph component renders a line/area graph based on the provided data.
Props
Required Props:
data: Array of objects withkeyandvalueproperties. ifgranularity=daythen key must be adatetitle: String for the chart titlechartType: Type of chart. eitherlineorareagranularity: Granularity.dayorhouraliasOfMetric: Alias of metricvalueType:"average" | "min" | "max" | "median" | "sum" | "start" | "end"
Optional Props:
[colorForValue]: Color for value[fontSizeForValue]: Font size for value[colorForUnit]:Color for unit[fontSizeForUnit]: Font size for unit[unit]: String representing the unit of measurement for value[enableXAxisLabels]: Boolean to show/hide X axis labels[enableYAxisLabels]: Boolean to show/hide Y axis labels[chartContainerStyles]: Object for custom chart container styles[color]:"SkyBlue" | "Charcoal" | "LightGreen" | "Peach" | "Lavender" | "Pink" | "Gold" | "Teal" | "Coral" | "Aqua"[height]: Number for chart height[width]: Number for chart width[legendSymbol]: "circle" | "rectangle"[rootStyles]: Object for custom root styles[titleStyles]: Object for custom title styles[loading]:Loading state if data is loading
LineGraphCreation
The LineGraphCreation component provides an interface for creating and customizing line graph.
Props
Required Props:
metricProperties: Array of{ attribute: string; type: DATA_TYPE; }filterProperties: Array of filter property of{ label: string; value: string; }filterPropertieOperators: Function that accepting operators of{ label: string; value: string; }based on the property type (string | float | int | datetime | date)filterPropertieValues: Function that accepting values of{ label: string; value: string; }based on the selected propertyunits: Array of unit strings for X axisonViewChart: Function called when viewing a chart, returns a payload with all filled fieldsonSaveOrUpdateChart: Function called when saving or updating a chart, returns a payload with all filled fieldsdashboardRedirectionOptions: Array of{ label: string; value: string; }redirection
Optional Props:
[rootStyles]: Object for custom root styles[isUpdate]: Boolean key[updateProps]: Object of all necessary fields for updating[isViewChartLoading]:Loading state if view chart data is loading[expressionFormulaError]: String of error for expression builder
LineGraph & LineGraphCreation Usage
Here's a basic example of how to use the LineGraph and LineGraphCreation components from apxor-bi-widgets:
import {
ColorsSchemeForGraph,
DATA_TYPE,
OPERATOR,
LineGraph,
LineGraphCreation,
} from "apxor-bi-widgets";
import { useState } from "react";
// Sample data
const data = [
{ key: "15", value: 15 },
{ key: "10", value: 10 },
{ key: "20", value: 20 },
{ key: "25", value: 25 },
];
function App() {
const [previewData, setPreviewData] = useState([]);
const [saveData, setSaveData] = useState([]);
return (
<div>
<h1>Business Intelligence Widgets Demo</h1>
<div>
<LineGraph
data={data}
height={300}
width={600}
chartType="area"
granularity="hour"
aliasOfMetric="Count"
valueType="average"
title="Sample Line Graph"
enableYAxisLabels
enableXAxisLabels
unit="k"
fontSizeForValue={50}
colorForValue="red"
/>
<LineGraphCreation
filterPropertieOperators={(type: DATA_TYPE) => {
// it will return selected property data type and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterPropertieValues={(property: string) => {
// it will return selected property and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterProperties={[
{ name: "property1", type: "string" },
{ name: "property2", type: "int" },
]}
metricProperties={[
{ attribute: "CreatedTimeStamp", type: "string"},
{ attribute: "Source",type: "string"}
]}
dashboardRedirectionOptions={[
{ label: "Dashboard 1", value: "/dashboard1" },
{ label: "Dashboard 2", value: "/dashboard2" },
]}
onViewChart={(payload) => {
setPreviewData(payload);
}}
onSaveOrUpdateChart={(payload) => {
setSaveData(payload);
}}
units={["min", "sec", "ms", "hour", "day", "week", "month", "year"]}
/>
</div>
</div>
);
}
export default App;Payload Structure of LineGraphCreation
The payload structure you will get after clicking on onViewChart, onSaveOrUpdateChart, and updateProps will accept the same format is as follows:
{
visualization: {
name: string;
aliasForMetric: string;
metrics:{
formula: string;
events: {
[key: string]: {
name: string;
data_type: DATA_TYPE | string;
};
};
};
granularity: "hour" | "day";
};
customFilters: {
name: string;
operator: "EQ" | "NEQ" | "LT" | "LTE" | "GT" | "GTE" | "R";
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
value: string[];
}[];
customization: {
color: `"SkyBlue" | "Charcoal" | "LightGreen" | "Peach" | "Lavender" | "Pink" | "Gold" | "Teal" | "Coral" | "Aqua"`;
chartType: "area" | "line";
lineValueType: LINE_VALUE_TYPE;
unit: string | null;
colorForValue?: string;
fontSizeForValue?: number;
colorForUnit?: string;
fontSizeForUnit?: number;
enableXAxisLabels: boolean;
enableYAxisLabels: boolean;
dashboardRedirectionUrl: string | null;
};
}PieChart
The PieChart component renders a pie chart based on the provided data.
Props
Required Props:
data: Array of objects withkeyandvaluepropertiestitle: String for the chart titleshowDataLabels: Boolean to show/hide data labelsshowDataValues: Boolean to show/hide data valuesshowlegends: Boolean to show/hide legendsunit: String representing the unit of measurement
Optional Props:
[chartContainerStyles]: Object for custom chart container styles[chartType="pieChart"]: "pieChart" | "donutChart"[colorScheme="ColorsForStackedBar"]: "SequentialRose" | "SequentialBlue" | "SequentialGreen" | "SequentialOrange" | "SequentialGray" | "DivergingGreenWhite" | "DivergingDarkGreenYellow" | "rainbowOf10" | "rainbowOf5" | "orangeShadeOf10" | "Random20" | "DivergingDarkPurpleBlueRed" | "ColorsForStackedBar"[height]: Number for chart height[legendSymbol]: "circle" | "rectangle"[rootStyles]: Object for custom root styles[titleStyles]: Object for custom title styles[width]: Number for chart width[loading]:Loading state if data is loading
PieChartCreation
The PieChartCreation component provides an interface for creating and customizing pie charts.
Props
Required Props:
dimensions: Array of dimension stringsidentifiers: Array of identifier stringsfilterProperties: Array of filter property objectsfilterPropertieOperators: Function that accepting operators based on the property type (string | float | int | datetime | date)filterPropertieValues: Function that accepting values based on the selected propertyunits: Array of unit stringsonViewChart: Function called when viewing a chart, returns a payload with all filled fieldsonSaveOrUpdateChart: Function called when saving or updating a chart, returns a payload with all filled fieldsdashboardRedirectionOptions: Array of redirection options
Optional Props:
[rootStyles]: Object for custom root styles[isUpdate]: Boolean key[updateProps]: Object of all necessary fields for updating[isViewChartLoading]:Loading state if view chart data is loading
PieChart & PieChartCreation Usage
Here's a basic example of how to use the PieChart and PieChartCreation components from apxor-bi-widgets:
import {
ColorsSchemeForGraph,
DATA_TYPE,
OPERATOR,
PieChart,
PieChartCreation,
} from "apxor-bi-widgets";
import { useState } from "react";
// Sample data for PieChart
const data = [
{ key: "Computer", value: 15 },
{ key: "Tab", value: 10 },
{ key: "Mobile", value: 20 },
{ key: "Phone", value: 25 },
];
function App() {
const [previewData, setPreviewData] = useState([]);
const [saveData, setSaveData] = useState([]);
return (
<div>
<h1>Business Intelligence Widgets Demo</h1>
<div>
<PieChart
data={data}
title="Sample Pie Chart"
showDataLabels
showDataValues
showlegends
unit="min"
chartType="pieChart"
colorScheme="ColorsForStackedBar"
height={300}
width={330}
legendSymbol="circle"
/>
<PieChartCreation
filterPropertieOperators={(type: DATA_TYPE) => {
// Implement your logic here
return [];
}}
dimensions={["dimension1", "dimension2"]}
identifiers={["identifier1", "identifier2"]}
filterPropertieValues={(property: string) => {
// it will return selected property and it is accepting array of string based on property
// Implement your logic here
return [];
}}
filterProperties={[
{ name: "property1", type: "string" },
{ name: "property2", type: "int" },
]}
dashboardRedirectionOptions={[
{ label: "Dashboard 1", value: "/dashboard1" },
{ label: "Dashboard 2", value: "/dashboard2" },
]}
onViewChart={(payload) => {
setPreviewData(payload);
}}
onSaveOrUpdateChart={(payload) => {
setSaveData(payload);
}}
units={["min", "sec", "ms", "hour", "day", "week", "month", "year"]}
/>
</div>
</div>
);
}
export default App;Payload Structure of PieChartCreation
The payload structure you will get after clicking on onViewChart, onSaveOrUpdateChart, and updateProps will accept the same format is as follows:
{
visualization: {
name: string;
identifier: string;
dimension: string;
};
customFilters: {
name: string;
operator: "EQ" | "NEQ" | "LT" | "LTE" | "GT" | "GTE" | "R";
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
value: string[];
}[];
customization: {
colorScheme: "SequentialRose" | "SequentialBlue" | "SequentialGreen" | "SequentialOrange" | "SequentialGray" | "DivergingGreenWhite" | "DivergingDarkGreenYellow" | "rainbowOf10" | "rainbowOf5" | "orangeShadeOf10" | "Random20" | "DivergingDarkPurpleBlueRed" | "ColorsForStackedBar";
chartType: "pieChart" | "donutChart";
unit: string | null;
showDataValues: boolean;
showDataLabels: boolean;
showlegends: boolean;
dashboardRedirectionUrl: string | null;
};
}Table
The Table component renders a table widget based on the provided data.
Props
Required Props:
data: Array of anykey & valuepairtitle: String for the chart title
Optional Props:
[chartContainerStyles]: Object for custom chart container styles[height]: Number for chart height[width]: Number for chart width[rootStyles]: Object for custom root styles[titleStyles]: Object for custom title styles[loading]:Loading state if data is loading
TableCreation
The TableCreation component provides an interface for creating and customizing Table widget.
Props
Required Props:
dimensionProperties: Array of{ attribute: string; type: DATA_TYPE; }filterProperties: Array of filter property of{ label: string; value: string; }filterPropertieOperators: Function that accepting operators of{ label: string; value: string; }based on the property type (string | float | int | datetime | date)filterPropertieValues: Function that accepting values of{ label: string; value: string; }based on the selected propertyonViewChart: Function called when viewing a chart, returns a payload with all filled fieldsonSaveOrUpdateChart: Function called when saving or updating a chart, returns a payload with all filled fieldsdashboardRedirectionOptions: Array of{ label: string; value: string; }redirectionfinalTransformationOptions:Array of{ label: string; value: string; }
Optional Props:
[rootStyles]: Object for custom root styles[isUpdate]: Boolean key[updateProps]: Object of all necessary fields for updating[isViewChartLoading]:Loading state if view chart data is loading[expressionFormulaError]: String of error for expression builder
Table & TableCreation Usage
Here's a basic example of how to use the Table and TableCreation components from apxor-bi-widgets:
import {
ColorsSchemeForGraph,
DATA_TYPE,
OPERATOR,
Table,
TableCreation,
} from "apxor-bi-widgets";
import { useState } from "react";
// Sample data
const data = [
{ Customer: "preprod",Logins: "191",},
{ Customer: "ozoneca10", Logins: "83",},
{ Customer: "RokoSubuser", Logins: "4",},
];
function App() {
const [previewData, setPreviewData] = useState([]);
const [saveData, setSaveData] = useState([]);
return (
<div>
<h1>Business Intelligence Widgets Demo</h1>
<div>
<Table
data={data}
title="Sample Table Widget"
/>
<TableCreation
filterPropertieOperators={(type: DATA_TYPE) => {
// it will return selected property data type and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterPropertieValues={(property: string) => {
// it will return selected property and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterProperties={[
{ name: "property1", type: "string" },
{ name: "property2", type: "int" },
]}
dimensionProperties={[
{ attribute: "CreatedTimeStamp", type: "string"},
{ attribute: "Source",type: "string"}
]}
dashboardRedirectionOptions={[
{ label: "Dashboard 1", value: "/dashboard1" },
{ label: "Dashboard 2", value: "/dashboard2" },
]}
onViewChart={(payload) => {
setPreviewData(payload);
}}
onSaveOrUpdateChart={(payload) => {
setSaveData(payload);
}}
finalTransformationOptions={[
{
label: "Seconds To Timestamp",
value: "secondsToTimestamp",
},
{
label: "Minutes To Timestamp",
value: "minutesToTimestamp",
},
{
label: "In Days",
value: "toWeekDay",
},
]}
/>
</div>
</div>
);
}
export default App;Payload Structure of TableCreation
The payload structure you will get after clicking on onViewChart, onSaveOrUpdateChart, and updateProps will accept the same format is as follows:
{
visualization: {
name: string;
dimensions: {
alias: string;
final_transformation: string;
formula: string;
events: {
[key: string]: {
name: string;
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
};
};
dimention?: string;
dimentionDataType?: "string" | "float" | "int" | "datetime" | "date" | string;
dimention_type: "derived" | "normal";
}[];
};
customFilters: {
name: string;
operator: "EQ" | "NEQ" | "LT" | "LTE" | "GT" | "GTE" | "R";
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
value: string[];
}[];
customization: {
dashboardRedirectionUrl: string | null;
};
}Advanced PieChart
The PieChart component renders a pie chart based on the provided data.
Props
Required Props:
data: Array of objects withkeyandvaluepropertiestitle: String for the chart titleshowDataLabels: Boolean to show/hide data labelsshowDataValues: Boolean to show/hide data valuesshowlegends: Boolean to show/hide legendsunit: String representing the unit of measurement
Optional Props:
[chartContainerStyles]: Object for custom chart container styles[chartType="pieChart"]: "pieChart" | "donutChart"[colorScheme="ColorsForStackedBar"]: "SequentialRose" | "SequentialBlue" | "SequentialGreen" | "SequentialOrange" | "SequentialGray" | "DivergingGreenWhite" | "DivergingDarkGreenYellow" | "rainbowOf10" | "rainbowOf5" | "orangeShadeOf10" | "Random20" | "DivergingDarkPurpleBlueRed" | "ColorsForStackedBar"[height]: Number for chart height[legendSymbol]: "circle" | "rectangle"[rootStyles]: Object for custom root styles[titleStyles]: Object for custom title styles[width]: Number for chart width[loading]:Loading state if data is loading
AdvancedPieChartCreation
The AdvancedPieChartCreation component provides an interface for creating and customizing advanced pie chart.
Props
Required Props:
identifierProperties: Array of{ attribute: string; type: DATA_TYPE; }dimensionProperties: Array of{ attribute: string; type: DATA_TYPE; }filterProperties: Array of filter property of{ label: string; value: string; }filterPropertieOperators: Function that accepting operators of{ label: string; value: string; }based on the property type (string | float | int | datetime | date)filterPropertieValues: Function that accepting values of{ label: string; value: string; }based on the selected propertyunits: Array of unit strings for X axisonViewChart: Function called when viewing a chart, returns a payload with all filled fieldsonSaveOrUpdateChart: Function called when saving or updating a chart, returns a payload with all filled fieldsdashboardRedirectionOptions: Array of{ label: string; value: string; }redirection
Optional Props:
[rootStyles]: Object for custom root styles[isUpdate]: Boolean key[updateProps]: Object of all necessary fields for updating[isViewChartLoading]:Loading state if view chart data is loading[expressionFormulaError]: String of error for expression builder
PieChart & AdvancedPieChartCreation Usage
Here's a basic example of how to use the PieChart and AdvancedPieChartCreation components from apxor-bi-widgets:
import {
ColorsSchemeForGraph,
DATA_TYPE,
OPERATOR,
PieChart,
AdvancedPieChartCreation,
} from "apxor-bi-widgets";
import { useState } from "react";
// Sample data
const data = [
{ key: "15", value: 15 },
{ key: "10", value: 10 },
{ key: "20", value: 20 },
{ key: "25", value: 25 },
];
function App() {
const [previewData, setPreviewData] = useState([]);
const [saveData, setSaveData] = useState([]);
return (
<div>
<h1>Business Intelligence Widgets Demo</h1>
<div>
<PieChart
data={data}
title="Sample Pie Chart"
showDataLabels
showDataValues
showlegends
unit="min"
chartType="pieChart"
colorScheme="ColorsForStackedBar"
height={300}
width={330}
legendSymbol="circle"
/>
<AdvancedPieChartCreation
identifierProperties={[
{ attribute: "CreatedTimeStamp", type: "string"},
{ attribute: "Source",type: "string"}
]}
dimensionProperties={[
{ attribute: "CreatedTimeStamp", type: "string"},
{ attribute: "Source",type: "string"}
]}
filterPropertieOperators={(type: DATA_TYPE) => {
// it will return selected property data type and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterPropertieValues={(property: string) => {
// it will return selected property and it is accepting array of
// {
// label: string;
// value: string;
// }
// Implement your logic here
return [];
}}
filterProperties={[
{ name: "property1", type: "string" },
{ name: "property2", type: "int" },
]}
dashboardRedirectionOptions={[
{ label: "Dashboard 1", value: "/dashboard1" },
{ label: "Dashboard 2", value: "/dashboard2" },
]}
onViewChart={(payload) => {
setPreviewData(payload);
}}
onSaveOrUpdateChart={(payload) => {
setSaveData(payload);
}}
units={["min", "sec", "ms", "hour", "day", "week", "month", "year"]}
/>
</div>
</div>
);
}
export default App;Payload Structure of AdvancedPieChartCreation
The payload structure you will get after clicking on onViewChart, onSaveOrUpdateChart, and updateProps will accept the same format is as follows:
{
visualization: {
name: string;
identifies: {
alias?: string;
formula: string;
events: {
[key: string]: {
name: string;
data_type:"string" | "float" | "int" | "datetime" | "date" | string;
};
};
};
dimensions: {
alias?: string;
formula: string;
events: {
[key: string]: {
name: string;
data_type:"string" | "float" | "int" | "datetime" | "date" | string;
};
};
};
};
customFilters: {
name: string;
operator: "EQ" | "NEQ" | "LT" | "LTE" | "GT" | "GTE" | "R";
data_type: "string" | "float" | "int" | "datetime" | "date" | string;
value: string[];
}[];
customization: {
colorScheme: "SequentialRose" | "SequentialBlue" | "SequentialGreen" | "SequentialOrange" | "SequentialGray" | "DivergingGreenWhite" | "DivergingDarkGreenYellow" | "rainbowOf10" | "rainbowOf5" | "orangeShadeOf10" | "Random20" | "DivergingDarkPurpleBlueRed" | "ColorsForStackedBar";
chartType: "pieChart" | "donutChart";
unit: string | null;
showDataValues: boolean;
showDataLabels: boolean;
showlegends: boolean;
dashboardRedirectionUrl: string | null;
};
}License
This project is licensed under the MIT License.
