From adc9abd145c24f2d3e7033bb738e1e8641eaf4cf Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 02 九月 2025 17:30:43 +0800
Subject: [PATCH] 2025.9.2

---
 src/utils/chart/chart-option.js |  279 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 265 insertions(+), 14 deletions(-)

diff --git a/src/utils/chart/chart-option.js b/src/utils/chart/chart-option.js
index bd9de70..89a9380 100644
--- a/src/utils/chart/chart-option.js
+++ b/src/utils/chart/chart-option.js
@@ -14,23 +14,67 @@
   return fontSize;
 }
 
-function factorLineOption(_xAxis, _series, legends) {
+function baseVisualMap(area) {
+  const _pieces = [];
+  area.forEach((v, i) => {
+    // if (i == 0) {
+    //   _pieces.push({
+    //     lt: v[0],
+    //     color: 'green'
+    //   });
+    // }
+    _pieces.push({
+      gte: v[0],
+      lte: v[1],
+      color: 'red'
+    });
+  });
+  // const lastOne = area[area.length - 1];
+  // _pieces.push({
+  //   gt: lastOne[1],
+  //   color: 'green'
+  // });
+  return {
+    type: 'piecewise',
+    // type: 'continuous',
+    show: false,
+    dimension: 0,
+    pieces: _pieces,
+    outOfRange: {
+      color: ['#5470c6']
+    }
+  };
+}
+
+// 鎶樼嚎鍥�
+function factorLineOption(_xAxis, _series) {
   var fontSize = fGetChartFontSize();
   return {
     animationEasing: 'elasticOut',
     animationDelayUpdate: function (idx) {
       return idx * 5;
     },
-    // toolbox: {
-    //   bottom: 0,
-    //   feature: {
-    //     dataZoom: {},
-    //     magicType: {
-    //       type: ['line', 'bar']
-    //     },
-    //     restore: {}
-    //   }
-    // },
+    toolbox: {
+      // bottom: 0,
+      feature: {
+        // dataZoom: {},
+        // magicType: {
+        //   type: ['line', 'bar']
+        // },
+        // restore: {
+        //   title: '鍒锋柊'
+        // },
+        saveAsImage: {
+          show: true,
+          backgroundColor: '#122b54a9',
+          name: '璧拌埅鐩戞祴鍥�',
+          title: '淇濆瓨涓哄浘鐗�',
+          iconStyle: {
+            borderColor: '#fff'
+          }
+        }
+      }
+    },
     tooltip: {
       textStyle: {
         fontSize: fontSize
@@ -38,7 +82,7 @@
     },
     legend: {
       type: 'scroll',
-      data: legends,
+      // data: legends,
       left: 0,
       textStyle: {
         fontSize: fontSize,
@@ -47,6 +91,8 @@
     },
     xAxis: {
       name: '鏃堕棿',
+      nameLocation: 'middle',
+      nameGap: 30,
       data: _xAxis,
       axisLabel: {
         textStyle: {
@@ -73,7 +119,16 @@
       }
     },
     yAxis: {
-      name: '娴撳害(渭g/m鲁)',
+      name: '娴撳害(渭g/m鲁)/娓╁害(鈩�)/閫熷害(m/s)',
+      nameLocation: 'middle',
+      nameGap: 30,
+      // nameTruncate: {
+      //   maxWidth: 100,
+      //   ellipsis: '...'
+      // },
+      // nameTextStyle: {
+      //   color: 'red'
+      // },
       axisLabel: {
         textStyle: {
           fontSize: fontSize
@@ -97,4 +152,200 @@
   };
 }
 
-export { factorLineOption };
+// 鎶樼嚎鍥�
+function smallLineOption(
+  _xAxis,
+  _series,
+  yMinInterval,
+  mode = 'dark',
+  tag,
+  animation = true,
+  defaultGrid,
+  title
+) {
+  var fontSize = fGetChartFontSize();
+  const _grid = defaultGrid
+    ? defaultGrid
+    : { left: '12%', right: '2%', top: '7%', bottom: '30%' };
+  return {
+    title: {
+      text: title,
+      textStyle: {
+        color: mode == 'dark' ? '#ffffff' : '#000000'
+      },
+      left: 'center'
+    },
+    animation: animation,
+    animationEasing: 'elasticOut',
+    animationDelayUpdate: function (idx) {
+      return idx * 5;
+    },
+    tooltip: {
+      textStyle: {
+        fontSize: fontSize
+      }
+    },
+    grid: _grid,
+    legend: {
+      show: false
+    },
+    xAxis: [
+      {
+        show: true,
+        name: tag ? '鏃堕棿' : '',
+        // type: 'time',
+        data: _xAxis,
+        axisLabel: {
+          textStyle: {
+            fontSize: fontSize
+          },
+          color: mode == 'dark' ? '#ffffff' : '#000000',
+          textBorderColor: mode == 'dark' ? '#fff' : '#000000'
+        },
+        axisTick: {
+          lineStyle: {
+            color: mode == 'dark' ? '#ffffff' : '#000000'
+          },
+          intervel: 0,
+          inside: false
+        },
+
+        nameTextStyle: {
+          color: mode == 'dark' ? '#ffffff' : '#000000'
+        },
+        axisLine: {
+          lineStyle: {
+            color: mode == 'dark' ? '#ffffff' : '#000000'
+          }
+        }
+      },
+      { show: true }
+    ],
+    yAxis: [
+      {
+        name: tag ? '娴撳害(渭g/m鲁)' : '',
+        // type: 'time',
+        axisLabel: {
+          textStyle: {
+            fontSize: fontSize
+          }
+        },
+        axisLine: {
+          show: true,
+          lineStyle: {
+            color: mode == 'dark' ? '#ffffff' : '#000000'
+          }
+        },
+        axisTick: {
+          show: false,
+          lineStyle: {
+            color: mode == 'dark' ? '#ffffff' : '#000000'
+          }
+        },
+        splitLine: {
+          show: false
+        },
+        minInterval: yMinInterval ? yMinInterval : 1,
+        intervel: 1,
+        min: function (value) {
+          return Math.floor(value.min);
+        },
+        max: function (value) {
+          return Math.ceil(value.max);
+        }
+      },
+      {
+        axisLine: {
+          show: true,
+          lineStyle: {
+            color: mode == 'dark' ? '#ffffff' : '#000000'
+          }
+        }
+      }
+    ],
+    series: _series
+  };
+}
+
+// 浠〃鐩�
+function gaugeOption(name, value) {
+  // var fontSize = fGetChartFontSize();
+  var option = {
+    // title: {
+    //   text: name,
+    //   textStyle: {
+    //     color: 'white',
+    //     fontSize: fontSize
+    //   },
+    //   left: 'center'
+    // },
+    textStyle: {
+      color: '#ffffff',
+      fontSize: 10
+    },
+    tooltip: {
+      formatter: '{a} : {c}km/h'
+    },
+    toolbox: {
+      // feature: {
+      //     restore: {},
+      //     saveAsImage: {}
+      // }
+    },
+    series: [
+      {
+        name: name,
+        type: 'gauge',
+        title: {
+          color: 'white',
+          offsetCenter: [0, '50%']
+        },
+        detail: {
+          color: 'white',
+          formatter: '{value}km/h',
+          textStyle: {
+            fontSize: 18
+          },
+          offsetCenter: [0, '80%']
+        },
+        splitLine: {
+          lineStyle: {
+            color: 'white'
+          }
+        },
+        axisTick: {
+          lineStyle: {
+            color: 'white'
+          }
+        },
+        axisLabel: {
+          color: 'white',
+          fontSize: 10
+        },
+        axisLine: {
+          // lineStyle: {
+          //   color: [
+          //     [0.2, '#2afd2a'],
+          //     [0.8, '#f1e74d'],
+          //     [1, '#c23531']
+          //   ]
+          // }
+        },
+        itemStyle: {
+          color: 'white'
+        },
+        data: [
+          {
+            value: value,
+            name: '杞﹂��'
+          }
+        ],
+        min: 0,
+        max: 200
+      }
+    ]
+  };
+  return option;
+}
+
+export { factorLineOption, smallLineOption, gaugeOption, baseVisualMap };

--
Gitblit v1.9.3