import GraphBase from "../../../Common/GraphBase"; import ReactECharts from "echarts-for-react"; // import getOptions from "../../../../hooks/getChartOption"; import { useSelector } from "react-redux"; import { useState } from "react"; import * as echarts from "echarts"; function Dust(props) { const dayTrend = useSelector((state) => state.smoke?.dayTrend); const weekTrend = useSelector((state) => state.smoke?.weekTrend); const monthTrend = useSelector((state) => state.smoke?.monthTrend); const yearTrend = useSelector((state) => state.smoke?.yearTrend); const [period, setPeriod] = useState("日"); const currentTrend = period === "日" ? dayTrend : period === "周" ? weekTrend : period === "月" ? monthTrend : yearTrend; const options = getOptions("dust_float", period, currentTrend); function handleSwitch(v) { // console.log('switched ', v); } function handleDateChange(v) { setPeriod(v); // console.log('date ', v); } return ( <GraphBase icon="smoke" title="颗粒物" desc="能耗趋势图" switchOptions={false} defaultSelect={period} onSwitch={handleSwitch} dateOptions={["日", "周", "月", "年"]} // legend={["总量", "白班", "夜班"]} onDateChange={handleDateChange} size={["long", "middle"]} > {/* real echarts here */} {options && ( <ReactECharts key={Math.random()} option={options} // option={getOptions( // [ // [91, 164, 88, 120, 167, 158, 43], // [30, 75, 52, 43, 73, 66, 36], // [61, 89, 36, 77, 94, 92, 7], // ], // "氧气" // )} style={{ height: "100%" }} /> )} {!options && ( <p style={{ color: "#cccf", fontSize: "24px", userSelect: "none", textAlign: "center", paddingTop: "96px", }} > 暂无数据 </p> )} {/* real table data here */} </GraphBase> ); } export default Dust; function getOptions(source, period, trend) { if (trend[source].length == 0) return null; return { color: ["#FFD160", "#12FFF5", "#2760FF"], grid: { top: 40, right: 12, bottom: 20, left: 56 }, xAxis: { type: "category", // data: Array(7) // .fill(1) // .map((_, index) => { // const today = new Date(); // const dtimestamp = today - index * 24 * 60 * 60 * 1000; // return `${new Date(dtimestamp).getMonth() + 1}.${new Date( // dtimestamp // ).getDate()}`; // }) // .reverse(), data: trend[source].map((item) => item.time), axisLabel: { color: "#fff", fontSize: 12, }, axisTick: { show: false }, axisLine: { lineStyle: { width: 1, color: "#213259", }, }, }, yAxis: { name: "单位mg/m³", nameTextStyle: { color: "#fff", fontSize: 12, align: "right", }, type: "value", axisLabel: { color: "#fff", fontSize: 12, formatter: "{value}", }, axisLine: { show: true, lineStyle: { color: "#213259", }, }, splitLine: { lineStyle: { color: "#213259a0", }, }, // interval: 10, // min: 0, // max: 100, }, series: [ { // (isNaN((+"f")) ? 0 : (+"f")).toFixed(2) data: trend[source].map((item) => !(item.value == null || isNaN(+item.value)) ? (+item.value).toFixed(2) : null), type: "line", symbol: "circle", symbolSize: 6, areaStyle: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#FFD16040" }, { offset: 0.5, color: "#FFD16020" }, { offset: 1, color: "#FFD16010" }, ]), }, // smooth: true, }, // { // data: Array(7) // .fill(1) // .map((_) => { // return randomInt(60, 100); // }), // type: "line", // areaStyle: { // color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ // { offset: 0, color: "#12FFF540" }, // { offset: 0.5, color: "#12FFF520" }, // { offset: 1, color: "#12FFF510" }, // ]), // }, // // smooth: true, // }, // { // data: Array(7) // .fill(1) // .map((_) => { // return randomInt(60, 100); // }), // type: "line", // areaStyle: { // color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ // { offset: 0, color: "#2760FF40" }, // { offset: 0.5, color: "#2760FF20" }, // { offset: 1, color: "#2760FF10" }, // ]), // }, // // smooth: true, // }, ], tooltip: { trigger: "axis", axisPointer: { type: "shadow", }, className: "xc-chart-tooltip", // backgroundColor: '' }, }; }