Skip to content

Commit

Permalink
feat: change geomap checkboxes to radiogroup
Browse files Browse the repository at this point in the history
  • Loading branch information
okorie2 committed Oct 14, 2023
1 parent 2df74f0 commit 290e695
Show file tree
Hide file tree
Showing 9 changed files with 135 additions and 42 deletions.
18 changes: 12 additions & 6 deletions src/app/hooks/useChartsRawData.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,19 +69,23 @@ export function useChartsRawData(props: {
const [notFound, setNotFound] = React.useState(false);
const [dataTotalCount, setDataTotalCount] = React.useState(0);
const [isEditMode, setIsEditMode] = React.useState(checkIfIsEditMode(view));
const localChartFromAPI = JSON.parse(
localStorage.getItem("chartFromAPI") as string
);
const [chartFromAPI, setChartFromAPI] =
React.useState<any>(localChartFromAPI);

const appliedFilters = useStoreState(
(state) => state.charts.appliedFilters.value
);
const setAllAppliedFilters = useStoreActions(
(actions) => actions.charts.appliedFilters.setAll
);
const setChartFromAPI = useStoreActions(
(actions) => actions.charts.chartFromAPI.setValue
);
const chartFromAPI = useStoreState(
(state) => state.charts.chartFromAPI.value
);

React.useEffect(() => {
localStorage.setItem("chartFromAPI", JSON.stringify(chartFromAPI));
}, [chartFromAPI]);

const setEnabledFilterOptionGroups = useStoreActions(
(actions) => actions.charts.enabledFilterOptionGroups.setValue
);
Expand Down Expand Up @@ -272,5 +276,7 @@ export function useChartsRawData(props: {
dataTotalCount,
loadDataset,
loadDataFromAPI,
chartFromAPI,
setChartFromAPI,
};
}
20 changes: 8 additions & 12 deletions src/app/hooks/useDataThemesEchart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -142,15 +142,15 @@ export function useDataThemesEchart() {
const {
// artboard
height,
width,
background,
// margins
marginTop,
marginRight,
marginBottom,
marginLeft,
background,
// Tooltip
palette,
roam,

showTooltip,
isMonetaryValue,
} = visualOptions;
Expand All @@ -159,7 +159,7 @@ export function useDataThemesEchart() {

const sizes = data.results.map((d: any) => d.value);

return {
const option = {
tooltip: {
trigger: showTooltip ? "item" : "none",
showDelay: 0,
Expand All @@ -175,17 +175,12 @@ export function useDataThemesEchart() {
}
},
},
backgroundColor: background,

visualMap: {
left: "right",
min: Math.min(...sizes),
max: Math.max(...sizes),
inRange: {
color: checkLists
.filter((item) => palette[item.label])
.map((item) => item.value)
.flat(1),
color: checkLists.find((item) => item.label === palette)?.value,
},
text: ["High", "Low"],
calculable: true,
Expand All @@ -194,8 +189,7 @@ export function useDataThemesEchart() {
{
type: "map",
height,
width,
roam: roam,
roam: false,
map: "World",
data: data.results,
top: marginTop,
Expand All @@ -216,6 +210,8 @@ export function useDataThemesEchart() {
},
],
};

return option;
}

function echartsLinechart(data: any, visualOptions: any) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@ export function ChartToolBoxMapping(props: ChartToolBoxMappingProps) {
css={`
z-index: 1030;
position: relative;
background: pink;
`}
>
{nonStaticDimensions?.map(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ export const DEFAULT_DATASETS = [
},
{
name: "Allocations",
id: "allocations",
id: "allocations-dataset",
},
{
name: "Grants",
id: "grants",
id: "grants-dataset",
},
{
name: "Investment - Signed",
Expand Down
13 changes: 8 additions & 5 deletions src/app/modules/chart-module/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,23 +55,21 @@ export default function ChartModule() {
isEditMode,
loadDataset,
loadDataFromAPI,
chartFromAPI,
setChartFromAPI,
} = useChartsRawData({
visualOptions,
setVisualOptions,
});

const chartType = useStoreState((state) => state.charts.chartType.value);
const chartFromAPI = useStoreState(
(state) => state.charts.chartFromAPI.value
);
const mapping = useStoreState((state) => state.charts.mapping.value);
const isSaveLoading = useStoreState(
(state) => state.charts.ChartCreate.loading
);
const isChartLoading = useStoreState(
(state) => state.charts.ChartGet.loading
);

const loadChart = useStoreActions((actions) => actions.charts.ChartGet.fetch);
const loadedChart = useStoreState(
(state) =>
Expand Down Expand Up @@ -192,6 +190,7 @@ export default function ChartModule() {
resetAppliedFilters();
resetEnabledFilterOptionGroups();
resetChartFromAPI();
clearChart();
}

function clearChartBuilder() {
Expand Down Expand Up @@ -252,11 +251,15 @@ export default function ChartModule() {
return () => {
document.body.style.background =
"linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #f2f7fd 100%)";
clearChart();
clearChartBuilder();
};
}, []);

//empty chart when chart type and dataset types changes
React.useEffect(() => {
setChartFromAPI(null);
}, [chartType, dataTypes]);

React.useEffect(() => {
if (!view && toolboxOpen) {
setToolboxOpen(false);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
import React from "react";
import { Col } from "react-bootstrap";

import FormControlLabel from '@material-ui/core/FormControlLabel';
import Radio from '@material-ui/core/Radio';
import { checkLists } from "app/modules/chart-module/routes/customize/data";

import RadioGroup from '@material-ui/core/RadioGroup';


const ChartOptionCheckboxes = ({
value,
error,
onChange,
default: defaultValue,
}) => {

const [radioValue, setRadioValue] = React.useState(value ?? defaultValue);
const handleChange = (e) => {
setRadioValue(e.target?.value);
};

React.useEffect(() => {
onChange(radioValue);
}, [radioValue]);

return (
<>
<RadioGroup aria-label="palette" name="palette" value={radioValue} onChange={handleChange}>
{checkLists.map((item) => (
<div
key={item.label}
css={`
margin-bottom: 24px;
display: flex;
align-items: center;
justify-content: space-between;
color:#231D2C;
font-family: 'Roboto', sans-serif;
font-weight: 500;
padding-left:10px;
div:nth-child(2){
display: flex;
align-items: center;
gap:4px;
}
svg{
width: 20px;
height: 20px;
}
button, input{
:hover{
background: transparent;
}
}
`}
>
<Col xs={6} className="d-flex align-items-center nowrap">

<FormControlLabel value={item.label} control={<Radio checked={radioValue===item.label} color='default' />} label={item.label} name="pallete" />

</Col>

<div>
{item.value.map((color, colorIndex) => (
<div
key={`${"color" + colorIndex}`}
css={`
width: 26px;
height: 26px;
border-radius: 50%;
background-color: ${color};
`}
/>
))}
</div>

{error && (
<div className="col-12">
<small>
<i>{error}</i>
</small>
</div>
)}
</div>
))}
</RadioGroup>
</>
);
};

export default React.memo(ChartOptionCheckboxes);
4 changes: 2 additions & 2 deletions src/app/modules/chart-module/routes/customize/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ import CustomizeOptionColor from "app/modules/chart-module/routes/customize/comp
import ChartOptionBoolean from "app/modules/chart-module/routes/customize/components/ChartOptionBoolean";
import CustomizeOptionNumber from "app/modules/chart-module/routes/customize/components/ChartOptionNumber";
import ChartOptionColorScaleWrapper from "app/modules/chart-module/routes/customize/components/ChartOptionColorScaleWrapper";
import ChartOptionCheckboxes from "app/modules/chart-module/routes/customize/components/ChartOptionCheckboxes";
import ChartOptionRadioGroup from "app/modules/chart-module/routes/customize/components/ChartOptionRadioGroup";

const CHART_OPTION_COMPONENTS = {
number: CustomizeOptionNumber,
text: CustomizeOptionText,
color: CustomizeOptionColor,
colorScale: ChartOptionColorScaleWrapper,
boolean: ChartOptionBoolean,
checkbox: ChartOptionCheckboxes,
radioGroup: ChartOptionRadioGroup,
};

export function getPartialMapping(mapping, dimension, repeatIndex) {
Expand Down
23 changes: 10 additions & 13 deletions src/app/modules/report-module/components/chart-wrapper/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,23 @@ interface Props {

export function ReportChartWrapper(props: Props) {
const containerRef = React.useRef<HTMLDivElement>(null);
const loadChart = useStoreActions((actions) => actions.charts.ChartGet.fetch);
const [visualOptions, setVisualOptions] = React.useState({});
const [chartName, setChartName] = React.useState<string>("");

const { loadDataFromAPI, loading, notFound, chartFromAPI } = useChartsRawData(
{
visualOptions,
setVisualOptions,
inChartWrapper: true,
}
);
const loadChart = useStoreActions((actions) => actions.charts.ChartGet.fetch);
const loadedChart = useStoreState(
(state) =>
(state.charts.ChartGet.crudData ?? emptyChartAPI) as ChartAPIModel
);

const chartFromAPI = useStoreState(
(state) => state.charts.chartFromAPI.value
);

const [chartName, setChartName] = React.useState<string>("");
const setRawViz = React.useState<any>(null)[1];
const [visualOptions, setVisualOptions] = React.useState({});

const renderedChart = React.useMemo(() => {
return chartFromAPI
Expand Down Expand Up @@ -57,12 +60,6 @@ export function ReportChartWrapper(props: Props) {
}
}, [loadedChart]);

const { loadDataFromAPI, loading, notFound } = useChartsRawData({
visualOptions,
setVisualOptions,
inChartWrapper: true,
});

React.useEffect(() => {
if (props.id) {
loadDataFromAPI(undefined, props.id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export default function AddRowFrameButton(props: AddRowFrameProps) {
`}
ref={drop}
>
<DarkTooltip title="Add new row frame" placement="bottom" color="pink">
<DarkTooltip title="Add new row frame" placement="bottom">
<div
css={`
width: 100%;
Expand Down

0 comments on commit 290e695

Please sign in to comment.