This commit is contained in:
=
2026-04-10 14:49:59 +10:00
parent 4f11081420
commit 484f291c21
2 changed files with 18 additions and 7 deletions

View File

@@ -6,15 +6,25 @@ import * as d3 from "d3";
const Chart = (props) => { const Chart = (props) => {
const [ox, setOx] = useState("size"); const [ox, setOx] = useState("size");
const [oy, setOy] = useState([true, false]); const [oy, setOy] = useState([true, false]);
const [oyBuf, setOyBuf] = useState([true, false]);
const [graphType, setGraphType] = useState(0); const [graphType, setGraphType] = useState(0);
const handleSubmit = (event) => { const handleSubmit = (event) => {
event.preventDefault(); event.preventDefault();
setOx(event.target["ox"].value); setOx(event.target["ox"].value);
setOy([event.target["oy"][0].checked, event.target["oy"][1].checked]); setOy(oyBuf);
setGraphType(event.target["graphType"].value); setGraphType(event.target["graphType"].value);
} }
const handleCheckboxes = (event)=>{
let buf = [...oyBuf];
buf[Number(event.target.id)]=event.target.checked;
setOyBuf(buf);
console.log(buf)
}
const createArrGraph = (data, key) => { const createArrGraph = (data, key) => {
const groupObj = d3.group(data, d => d[key]); const groupObj = d3.group(data, d => d[key]);
let arrGraph = []; let arrGraph = [];
@@ -45,12 +55,12 @@ const Chart = (props) => {
</div> </div>
<p> OY value </p> <p> OY value </p>
{(!oy[0] && !oy[1]) && <span className="bad-selection"> Select at least one </span>} {(!oyBuf[0] && !oyBuf[1]) && <span className="bad-selection"> Select at least one </span>}
<div> <div>
<input type="checkbox" name="oy" defaultChecked={oy[0] === true} /> <input id="0" type="checkbox" name="oy" defaultChecked={oyBuf[0] === true} onChange={handleCheckboxes} />
Min price Min price
<br /> <br />
<input type="checkbox" name="oy" defaultChecked={oy[1] === true} /> <input id="1" type="checkbox" name="oy" defaultChecked={oyBuf[1] === true} onChange={handleCheckboxes}/>
Max price Max price
</div> </div>

View File

@@ -25,8 +25,9 @@ function drawGraph(data, keyX, drawMin, drawMax, graphtype) {
const [scX, scY] = createAxis(svg, data, attr_area,[drawMin,drawMax]); const [scX, scY] = createAxis(svg, data, attr_area,[drawMin,drawMax]);
// рисуем график // рисуем график
const max = d3.max(data,d => d.values[Number(drawMax)]);
const scaleYDomain = d3.extent(data.map(d => d.values[1])); const min = d3.min(data,d => d.values[1-Number(drawMin)]);
const scaleYDomain = [min,max];
if (drawMin && drawMax){ if (drawMin && drawMax){
createChart(svg, data, scX, scY, attr_area, "blue", 0,graphtype,0,scaleYDomain) createChart(svg, data, scX, scY, attr_area, "blue", 0,graphtype,0,scaleYDomain)
createChart(svg, data, scX, scY, attr_area, "red", 1,graphtype,0,scaleYDomain) createChart(svg, data, scX, scY, attr_area, "red", 1,graphtype,0,scaleYDomain)
@@ -43,7 +44,7 @@ function createAxis(svg, data, attr_area, selections) {
// находим интервал значений, которые нужно отложить по оси OY // находим интервал значений, которые нужно отложить по оси OY
// максимальное и минимальное значение и максимальных высот по каждой стране // максимальное и минимальное значение и максимальных высот по каждой стране
const max = d3.max(data,d => d.values[Number(selections[1])]); const max = d3.max(data,d => d.values[Number(selections[1])]);
const min = d3.min(data,d => d.values[Number(1-selections[0])]); const min = d3.min(data,d => d.values[1-Number(selections[0])]);
// console.log(max,min,data) // console.log(max,min,data)
// функция интерполяции значений на оси // функция интерполяции значений на оси
// по оси ОХ текстовые значения // по оси ОХ текстовые значения