From c40500d288339cd9b2200f8f909e3cd5471c0c22 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 30 八月 2024 17:38:29 +0800
Subject: [PATCH] 1. 优化3D动画中风向的变化逻辑; 2. 修复折线图切换因子时,数据直接跳转至起始处的问题; 3. 折线图和表格加回风向因子; 4. 优化风向的均值计算为矢量计算,同时最大最小值不显示; 5. 新增表格数据导出功能;

---
 src/model/Factor.js |   39 ++++++++++++++++++++++++++++++++-------
 1 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/src/model/Factor.js b/src/model/Factor.js
index 354a585..1aaa149 100644
--- a/src/model/Factor.js
+++ b/src/model/Factor.js
@@ -194,24 +194,49 @@
     if (d1 == undefined || d2 == undefined) {
       return;
     }
+    let diffValue = d2.factorData - d1.factorData;
+    // 瀵逛簬椋庡悜鐭㈤噺鏉ヨ锛屽姩鐢荤殑鍙樺寲搴旇浠庝袱涓鍚戝す瑙掕緝灏忕殑閭d竴渚ц繘琛屽彉鍖�
+    if (this.factorName == 'WIND_DIRECTION') {
+      // 椋庡悜瑙掑害宸�
+      if (diffValue > 180) {
+        diffValue -= 360;
+      } else if (diffValue < -180) {
+        diffValue += 360;
+      }
+    }
     // 鍗曞抚鏁版嵁鍊肩殑宸��
-    var dValue = {
-      factorData: (d2.factorData - d1.factorData) / count,
-      physicalQuantity: (d2.physicalQuantity - d2.physicalQuantity) / count
+    const dValue = {
+      factorData: diffValue / count
+      // physicalQuantity: (d2.physicalQuantity - d2.physicalQuantity) / count
+    };
+
+    // 椋庡悜鐭㈤噺淇
+    const correct = (v) => {
+      if (this.factorName == 'WIND_DIRECTION') {
+        if (v < 0) {
+          return 360 + v;
+        } else if (v > 360) {
+          return v - 360;
+        } else {
+          return v;
+        }
+      } else {
+        return v;
+      }
     };
     for (let i = 0; i < count - 1; i++) {
       var _data = {
-        factorData: d1.factorData + dValue.factorData * (i + 1),
+        factorData: correct(d1.factorData + dValue.factorData * (i + 1)),
         factorId: d1.factorId,
         factorName: d1.factorName,
-        physicalQuantity:
-          d1.physicalQuantity + dValue.physicalQuantity * (i + 1),
+        // physicalQuantity:
+        //   d1.physicalQuantity + dValue.physicalQuantity * (i + 1),
         sensorId: d1.sensorId,
         statusList: d1.statusList
       };
       if (!isDraw) {
         _data.factorData = -1;
-        _data.physicalQuantity = -1;
+        // _data.physicalQuantity = -1;
       }
       this.datas.push(_data);
     }

--
Gitblit v1.9.3