diff --git a/src/assets/Heatflux.png b/src/assets/Heatflux.png new file mode 100644 index 0000000..4b3c3c9 Binary files /dev/null and b/src/assets/Heatflux.png differ diff --git a/src/assets/High.png b/src/assets/High.png index 43bd71a..cda3936 100644 Binary files a/src/assets/High.png and b/src/assets/High.png differ diff --git a/src/assets/Low.png b/src/assets/Low.png index 8900b63..cc61974 100644 Binary files a/src/assets/Low.png and b/src/assets/Low.png differ diff --git a/src/assets/Rain.png b/src/assets/Rain.png new file mode 100644 index 0000000..416f47f Binary files /dev/null and b/src/assets/Rain.png differ diff --git a/src/assets/heatflux.png b/src/assets/heatflux.png deleted file mode 100644 index ab27cfb..0000000 Binary files a/src/assets/heatflux.png and /dev/null differ diff --git a/src/assets/rain.png b/src/assets/rain.png deleted file mode 100644 index 328c929..0000000 Binary files a/src/assets/rain.png and /dev/null differ diff --git a/src/components/common/ChartPanel/index.jsx b/src/components/common/ChartPanel/index.jsx new file mode 100644 index 0000000..1f3ff7c --- /dev/null +++ b/src/components/common/ChartPanel/index.jsx @@ -0,0 +1,18 @@ +import ReactECharts from "echarts-for-react"; +import classNames from "classnames"; +import styles from "./index.module.less"; + +export default function ChartPanel({ option, className }) { + return ( +
+ +
+ ); +} diff --git a/src/components/common/ChartPanel/index.module.less b/src/components/common/ChartPanel/index.module.less new file mode 100644 index 0000000..0ac6095 --- /dev/null +++ b/src/components/common/ChartPanel/index.module.less @@ -0,0 +1,11 @@ +.chartPanel :global { + width: 100%; + height: 100%; + pointer-events: auto; + padding: 12px; + border: 1px solid #04fbfd; + color: #02f9ff !important; + background-color: #000000e7; + transition: all 0.3s ease-in-out; + border-radius: 8px; +} diff --git a/src/components/domain/Four/ChartPanel.jsx b/src/components/domain/Four/CustomChartPanel.jsx similarity index 84% rename from src/components/domain/Four/ChartPanel.jsx rename to src/components/domain/Four/CustomChartPanel.jsx index 62d97a8..83eda2b 100644 --- a/src/components/domain/Four/ChartPanel.jsx +++ b/src/components/domain/Four/CustomChartPanel.jsx @@ -1,4 +1,4 @@ -import ReactECharts from "echarts-for-react"; +import ChartPanel from "@/components/common/ChartPanel"; const years = []; @@ -16,7 +16,7 @@ const predictedData = [ -0.34866039, 0.93110625, 0.19143088, 0.5760311, ]; -function ChartPanel() { +function CustomChartPanel() { const option = { title: { // text: "Stacked Line", @@ -26,7 +26,7 @@ function ChartPanel() { }, legend: { data: ["观测结果", "预测结果"], - textStyle: { color: "#04fbfd", cursor: "point" }, + textStyle: { color: "#04fbfd", cursor: "point", fontSize: 20 }, }, animationDuration: years.length * 1000, animationEasing: "cubicInOut", @@ -102,18 +102,7 @@ function ChartPanel() { ], }; - return ( -
- -
- ); + return ; } -export default ChartPanel; +export default CustomChartPanel; diff --git a/src/components/domain/Four/index.jsx b/src/components/domain/Four/index.jsx index 8c4b6e7..faf64ee 100644 --- a/src/components/domain/Four/index.jsx +++ b/src/components/domain/Four/index.jsx @@ -4,7 +4,7 @@ import CustomClock from "@/components/common/CustomClock"; import TextInfoPanel from "@/components/common/TextInfoPanel"; import CustomFlyTo from "./CustomFlyTo"; import FormPanel from "./FormPanel"; -import ChartPanel from "./ChartPanel"; +import CustomChartPanel from "./CustomChartPanel"; import RectangleLayer from "./RectangleLayer"; import { useState } from "react"; import Labels from "./Labels"; @@ -28,7 +28,7 @@ XGBoos是基于梯度提升决策树方法的分类和回归模型。 LightGBM
-
{show && }
+
{show && }
diff --git a/src/components/domain/One/ChartPanel.jsx b/src/components/domain/One/CustomChartPanel.jsx similarity index 88% rename from src/components/domain/One/ChartPanel.jsx rename to src/components/domain/One/CustomChartPanel.jsx index da1ee2e..54478ec 100644 --- a/src/components/domain/One/ChartPanel.jsx +++ b/src/components/domain/One/CustomChartPanel.jsx @@ -1,7 +1,6 @@ -import ReactECharts from "echarts-for-react"; -import cls from "classnames"; import { useEffect, useState } from "react"; import { useCesium } from "resium"; +import ChartPanel from "@/components/common/ChartPanel"; const years = []; @@ -29,7 +28,7 @@ const laBrudata = [ 0.9844907, 0.9088836, 0.7977505, 0.7049671, 0.644415, 0.6330437, ]; -function ChartPanel() { +function CustomChartPanel() { const { viewer } = useCesium(); const [isHighlight, setIsHighlight] = useState(false); @@ -53,7 +52,7 @@ function ChartPanel() { }, legend: { data: ["拉布拉多海夏季海温(异常值)", "高原夏季气温(异常值)"], - textStyle: { color: "#04fbfd", cursor: "point" }, + textStyle: { color: "#04fbfd", cursor: "point", fontSize: 20 }, }, animationDuration: years.length * 1000, animationEasing: "cubicInOut", @@ -136,18 +135,7 @@ function ChartPanel() { ], }; - return ( -
- -
- ); + return ; } -export default ChartPanel; +export default CustomChartPanel; diff --git a/src/components/domain/One/Cyclone.jsx b/src/components/domain/One/Cyclone.jsx index 63a687c..5b373c2 100644 --- a/src/components/domain/One/Cyclone.jsx +++ b/src/components/domain/One/Cyclone.jsx @@ -1,14 +1,7 @@ -import { Fragment, useCallback } from "react"; -import { Entity, LabelGraphics, ModelGraphics, useCesium } from "resium"; +import { useCallback } from "react"; +import { Entity, ModelGraphics, useCesium } from "resium"; import arrowRound from "@/assets/arrow_round.glb"; -import { - CallbackProperty, - Cartesian2, - Cartesian3, - Color, - ColorBlendMode, - LabelStyle, -} from "cesium"; +import { CallbackProperty, Cartesian3, Color, ColorBlendMode } from "cesium"; let totalSeconds = 60; let numberOfSamples = 120; @@ -59,186 +52,95 @@ function Cyclone() { const anticycloneColor = Color.fromCssColorString("#f70000"); const cycloneColor = Color.fromCssColorString("#00AC4D"); - return ( - + const cycloneList = [ + { + type: "anticyclone", + showTime: 5, + position: Cartesian3.fromDegrees(-62, 69, height), + }, + { + type: "cyclone", + showTime: 7.5, + position: Cartesian3.fromDegrees(-45, 59, height), + }, + { + type: "anticyclone", + showTime: 10, + position: Cartesian3.fromDegrees(-20, 55, height), + }, + { + type: "cyclone", + showTime: 12.5, + position: Cartesian3.fromDegrees(5, 53, height), + }, + { + type: "anticyclone", + showTime: 15, + position: Cartesian3.fromDegrees(29, 49, height), + }, + { + type: "cyclone", + showTime: 17.5, + position: Cartesian3.fromDegrees(46, 46, height), + }, + { + type: "anticyclone", + showTime: 20, + position: Cartesian3.fromDegrees(62, 45, height), + }, + { + type: "cyclone", + showTime: 22.5, + position: Cartesian3.fromDegrees(81, 46.5, height), + }, + { + type: "anticyclone", + showTime: 25, + position: Cartesian3.fromDegrees(98, 48, height), + }, + { + type: "anticyclone", + showTime: 25, + position: Cartesian3.fromDegrees(98, 48, 0), + }, + ]; + + return cycloneList.map((cyclone, index) => { + const { type, showTime, position } = cyclone; + return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); + ); + }); + + // } export default Cyclone; diff --git a/src/components/domain/One/JJAImageLayer.jsx b/src/components/domain/One/JJAImageLayer.jsx index 0ea73e3..452d3ac 100644 --- a/src/components/domain/One/JJAImageLayer.jsx +++ b/src/components/domain/One/JJAImageLayer.jsx @@ -5,7 +5,7 @@ import { WebMapServiceImageryProvider } from "cesium"; const url = "http://analysis.tpdc.ac.cn/gs/geoserver/phitrellis/wms"; const name1 = "phitrellis:4_1_sst_JJA_G_dif"; -const name2 = "phitrellis:4_1_t2m_JJA_TP_dif "; +const name2 = "phitrellis:4_1_ts_tp_dif_mask"; function JJAImageLayer() { const tempProvider1 = useMemo( diff --git a/src/components/domain/One/Labels.jsx b/src/components/domain/One/Labels.jsx index 5f2b539..6401346 100644 --- a/src/components/domain/One/Labels.jsx +++ b/src/components/domain/One/Labels.jsx @@ -35,7 +35,7 @@ function Labels() {
- +
diff --git a/src/components/domain/Six/SceneOne/ChartPanel.jsx b/src/components/domain/Six/SceneOne/CustomChartPanel.jsx similarity index 85% rename from src/components/domain/Six/SceneOne/ChartPanel.jsx rename to src/components/domain/Six/SceneOne/CustomChartPanel.jsx index 0136df8..227d240 100644 --- a/src/components/domain/Six/SceneOne/ChartPanel.jsx +++ b/src/components/domain/Six/SceneOne/CustomChartPanel.jsx @@ -1,4 +1,4 @@ -import ReactECharts from "echarts-for-react"; +import ChartPanel from "@/components/common/ChartPanel"; const years = []; @@ -15,7 +15,7 @@ const ArcticData = []; // 青藏高原 const TibetanData = []; -function ChartPanel() { +function CustomChartPanel() { const option = { title: { // text: "Stacked Line", @@ -25,7 +25,7 @@ function ChartPanel() { }, legend: { data: ["南极", "北极", "青藏高原"], - textStyle: { color: "#04fbfd", cursor: "point" }, + textStyle: { color: "#04fbfd", cursor: "point", fontSize: 20 }, }, animationDuration: 10 * 1000, animationEasing: "cubicInOut", @@ -121,18 +121,7 @@ function ChartPanel() { ], }; - return ( -
- -
- ); + return ; } -export default ChartPanel; +export default CustomChartPanel; diff --git a/src/components/domain/Six/SceneOne/index.jsx b/src/components/domain/Six/SceneOne/index.jsx index 34d0afb..70c54c6 100644 --- a/src/components/domain/Six/SceneOne/index.jsx +++ b/src/components/domain/Six/SceneOne/index.jsx @@ -2,7 +2,7 @@ import TextInfoPanel from "@/components/common/TextInfoPanel"; import ViewerOne from "./ViewerOne"; import ViewerThree from "./ViewerThree"; import ViewerTwo from "./ViewerTwo"; -import ChartPanel from "./ChartPanel"; +import CustomChartPanel from "./CustomChartPanel"; import styles from "./index.module.less"; import Legend from "./Legend"; @@ -23,7 +23,7 @@ function SceneOne() { />
- +
diff --git a/src/components/domain/Six/SceneOne/index.module.less b/src/components/domain/Six/SceneOne/index.module.less index 6ed947c..dcede25 100644 --- a/src/components/domain/Six/SceneOne/index.module.less +++ b/src/components/domain/Six/SceneOne/index.module.less @@ -104,18 +104,6 @@ } } } - - .chart-info-panel { - width: 100%; - height: 100%; - pointer-events: auto; - padding: 12px; - border: 1px solid #04fbfd; - color: #02f9ff !important; - background-color: #000000e7; - transition: all 0.3s ease-in-out; - border-radius: 8px; - } } } } diff --git a/src/components/domain/Three/ChartPanel.jsx b/src/components/domain/Three/SceneOne/CustomChartPanel.jsx similarity index 94% rename from src/components/domain/Three/ChartPanel.jsx rename to src/components/domain/Three/SceneOne/CustomChartPanel.jsx index 47f723e..5d68f36 100644 --- a/src/components/domain/Three/ChartPanel.jsx +++ b/src/components/domain/Three/SceneOne/CustomChartPanel.jsx @@ -1,4 +1,4 @@ -import ReactECharts from "echarts-for-react"; +import ChartPanel from "@/components/common/ChartPanel"; const years = []; @@ -76,7 +76,7 @@ const TibetanData = [ 0.010750252, 0.048064799, ]; -function ChartPanel() { +function CustomChartPanel() { const option = { title: { // text: "Stacked Line", @@ -86,7 +86,7 @@ function ChartPanel() { }, legend: { data: ["南极", "北极", "青藏高原"], - textStyle: { color: "#04fbfd", cursor: "point" }, + textStyle: { color: "#04fbfd", cursor: "point", fontSize: 20 }, }, animationDuration: 10 * 1000, animationEasing: "cubicInOut", @@ -181,18 +181,7 @@ function ChartPanel() { ], }; - return ( -
- -
- ); + return ; } -export default ChartPanel; +export default CustomChartPanel; diff --git a/src/components/domain/Three/SceneOne/index.jsx b/src/components/domain/Three/SceneOne/index.jsx index cb8500e..4422b25 100644 --- a/src/components/domain/Three/SceneOne/index.jsx +++ b/src/components/domain/Three/SceneOne/index.jsx @@ -1,5 +1,5 @@ import TextInfoPanel from "@/components/common/TextInfoPanel"; -import ChartPanel from "../ChartPanel"; +import CustomChartPanel from "./CustomChartPanel"; import Legend from "./Legend"; import ViewerOne from "./ViewerOne"; import ViewerTwo from "./ViewerTwo"; @@ -19,7 +19,7 @@ function SceneOne() {
- +
diff --git a/src/components/domain/Three/SceneOne/index.module.less b/src/components/domain/Three/SceneOne/index.module.less index 6b9b3f3..c6c6a53 100644 --- a/src/components/domain/Three/SceneOne/index.module.less +++ b/src/components/domain/Three/SceneOne/index.module.less @@ -85,18 +85,6 @@ } } } - - .chart-info-panel { - width: 100%; - height: 100%; - pointer-events: auto; - padding: 12px; - border: 1px solid #04fbfd; - color: #02f9ff !important; - background-color: #000000e7; - transition: all 0.3s ease-in-out; - border-radius: 8px; - } } } } diff --git a/src/components/domain/Three/SceneTwo/SceneChartPanel.jsx b/src/components/domain/Three/SceneTwo/SceneChartPanel.jsx index 6839cb2..cf8dbbd 100644 --- a/src/components/domain/Three/SceneTwo/SceneChartPanel.jsx +++ b/src/components/domain/Three/SceneTwo/SceneChartPanel.jsx @@ -1,4 +1,4 @@ -import ReactECharts from "echarts-for-react"; +import ChartPanel from "@/components/common/ChartPanel"; const years = []; @@ -48,7 +48,7 @@ function SceneChartPanel() { }, legend: { data: ["南极半岛", "热带大西洋"], - textStyle: { color: "#04fbfd", cursor: "point" }, + textStyle: { color: "#04fbfd", cursor: "point", fontSize: 20 }, }, animationDuration: 10 * 1000, animationEasing: "cubicInOut", @@ -122,18 +122,7 @@ function SceneChartPanel() { ], }; - return ( -
- -
- ); + return ; } export default SceneChartPanel; diff --git a/src/components/domain/Three/index.module.less b/src/components/domain/Three/index.module.less index 97622bf..7114ef4 100644 --- a/src/components/domain/Three/index.module.less +++ b/src/components/domain/Three/index.module.less @@ -12,18 +12,6 @@ .title { pointer-events: none; } - - .chart-info-panel { - width: 100%; - height: 100%; - pointer-events: auto; - padding: 12px; - border: 1px solid #04fbfd; - color: #02f9ff !important; - background-color: #000000e7; - transition: all 0.3s ease-in-out; - border-radius: 8px; - } } } diff --git a/src/components/domain/Two/CustomFlyTo.jsx b/src/components/domain/Two/CustomFlyTo.jsx index 13a3852..e91c26a 100644 --- a/src/components/domain/Two/CustomFlyTo.jsx +++ b/src/components/domain/Two/CustomFlyTo.jsx @@ -66,15 +66,12 @@ function CustomFlyTo() { }; const area5Options = { - destination: Cartesian3.fromDegrees(90, -60, 10000000), + destination: Cartesian3.fromDegrees(95, -35, 10000000), duration: 4, - orientation: { - heading: 6, - pitch: -1.3, - roll: -6, - }, complete: function () { - camera.flyTo(IndiaOceanOptions); + setTimeout(() => { + camera.flyTo(IndiaOceanOptions); + }, 2000); }, easingFunction: EasingFunction.LINEAR_NONE, }; @@ -102,13 +99,9 @@ function CustomFlyTo() { }; const xx = { - destination: Cartesian3.fromDegrees(80, 0, 14000000), - duration: 5, - // orientation: { - // heading: 6, - // pitch: -1.3, - // roll: -6, - // }, + destination: Cartesian3.fromDegrees(95, -35, 10000000), + duration: 4, + easingFunction: EasingFunction.LINEAR_NONE, }; diff --git a/src/components/domain/Two/IndiaOceanSST.jsx b/src/components/domain/Two/IndiaOceanSST.jsx index d171a4f..cfb7cb1 100644 --- a/src/components/domain/Two/IndiaOceanSST.jsx +++ b/src/components/domain/Two/IndiaOceanSST.jsx @@ -15,7 +15,7 @@ function IndianOceanSST() { stopTime.secondsOfDay - currentTime.secondsOfDay ); - if (leftTime <= 10) { + if (leftTime <= 8) { setShow(true); } else if (show) setShow(false); }, [show]); diff --git a/src/components/domain/Two/Labels.jsx b/src/components/domain/Two/Labels.jsx index 64b2659..b5efa66 100644 --- a/src/components/domain/Two/Labels.jsx +++ b/src/components/domain/Two/Labels.jsx @@ -16,9 +16,12 @@ function Labels() { if (leftTime < 5) { setShowIO(true); - setShowTB(true); } else if (showIO) { setShowIO(false); + } + if (leftTime < 4) { + setShowTB(true); + } else if (showIO) { setShowTB(false); } }, [showIO]); @@ -51,7 +54,7 @@ function Labels() {
= start && fluxData[index] <= end) { - dataIndex = i; - break; - } - } - - return ( - - - - - 感热通量数据 - - - ${fluxData[index]} - - - - - 站点坐标 - - ${lon},${lat} - - - - `} - > - - - ); -} - -export default HeatFlux; diff --git a/src/components/domain/Two/Site/Rain copy.jsx b/src/components/domain/Two/Site/Rain copy.jsx deleted file mode 100644 index 1aa350a..0000000 --- a/src/components/domain/Two/Site/Rain copy.jsx +++ /dev/null @@ -1,97 +0,0 @@ -import { Entity, EllipseGraphics } from "resium"; -import { Cartesian3, Color } from "cesium"; - -const rainData = [ - 0.25309432, 0.296679, 0.39937696, -0.15093477, 0.17799897, 0.1186297, - 0.07794944, 0.086336374, -0.016019614, -0.10862, 0.026069753, -0.005777068, - -0.04960121, -0.13736366, 0.268846, 0.32549506, 0.16180113, 0.34738356, - 0.21825098, 0.56309533, 0.15624292, 0.1915884, -0.08074772, -0.021623861, - -0.03270335, 0.011358996, -0.09346678, -0.07257225, 0.19685836, -0.004689489, - 0.018297506, 0.089315325, 0.07057168, 0.13153072, 0.036938984, -0.17923261, - 0.3985438, 0.171897, -0.113426015, 0.4553916, 0.1476996, 0.158635, - -0.041355144, 0.14970288, 0.19565174, 0.213287, 0.0603011, 0.35724494, - -0.13986075, 0.16652703, -0.016419323, -0.09197042, -0.04890049, 0.22730026, - 0.4451923, 0.102407545, 0.28357506, 0.259764, 0.2361199, 0.32204336, - 0.39939404, 0.4786999, 0.12142443, -0.1493137, 0.3154582, 0.39657483, - -0.08021964, 0.20489447, 0.26629895, -0.34400544, 0.29385626, 0.15458098, - 0.016143948, 0.04906382, -0.043581244, 0.1752981, -0.18351379, 0.071934514, - 0.10854135, -0.10280543, -]; - -const colorBar = [ - "#ffc53d", - "#ffd666", - "#ffe58f", - "#fff1b8", - "#fffbe6", - "#e6f7ff", - "#bae7ff", - "#91d5ff", - "#69c0ff", - "#40a9ff", -]; - -const ranges = [ - [-999, -0.4], - [-0.4, -0.3], - [-0.3, -0.2], - [-0.2, -0.1], - [-0.1, 0], - [0, 0.1], - [0.1, 0.2], - [0.2, 0.3], - [0.3, 0.4], - [0.4, 999], -]; - -let dataIndex = 0; - -// 降水异常 -function Rain({ position, index }) { - const [lon, lat] = position; - - for (let i = 0; i < ranges.length; i++) { - const start = ranges[i][0]; - const end = ranges[i][1]; - if (rainData[index] >= start && rainData[index] <= end) { - dataIndex = i; - break; - } - } - - return ( - - - - - 青藏高原降水 - - - ${rainData[index]} - - - - - 站点坐标 - - ${lon},${lat} - - - - `} - > - - - ); -} - -export default Rain; diff --git a/src/components/domain/Two/Site/Rain.jsx b/src/components/domain/Two/Site/Rain.jsx index eec9460..68eeefd 100644 --- a/src/components/domain/Two/Site/Rain.jsx +++ b/src/components/domain/Two/Site/Rain.jsx @@ -65,7 +65,7 @@ function Rain({ position, index }) { lat, length, ])} - material={new PolylineArrowMaterialProperty(Color.SKYBLUE)} + material={new PolylineArrowMaterialProperty(Color.BLUE)} arcType={"NONE"} width={10} /> diff --git a/src/components/domain/Two/SiteLegend.jsx b/src/components/domain/Two/SiteLegend.jsx index e0548ba..dce5fb2 100644 --- a/src/components/domain/Two/SiteLegend.jsx +++ b/src/components/domain/Two/SiteLegend.jsx @@ -1,5 +1,5 @@ -import rain from "@/assets/rain.png"; -import heatflux from "@/assets/heatflux.png"; +import rain from "@/assets/Rain.png"; +import heatflux from "@/assets/Heatflux.png"; import styles from "./index.module.less"; function SiteLegend() { @@ -7,35 +7,35 @@ function SiteLegend() {
- rain-increase + rain-increase
降水异常增加
- rain-decrease + rain-decrease
降水异常降低
- heatflux-increase + heatflux-increase
感热通量异常增加
- heatflux-decrease + heatflux-decrease
感热通量异常降低
diff --git a/src/components/domain/Two/index.module.less b/src/components/domain/Two/index.module.less index 402c8c9..6b77dd2 100644 --- a/src/components/domain/Two/index.module.less +++ b/src/components/domain/Two/index.module.less @@ -35,7 +35,7 @@ .timeline-panel-item { color: white; padding: 4px 8px; - font-size: 18px; + font-size: 20px; span { padding: 4px; diff --git a/src/components/home/Layout/NavBar.jsx b/src/components/home/Layout/NavBar.jsx index e472b2c..b570b9e 100644 --- a/src/components/home/Layout/NavBar.jsx +++ b/src/components/home/Layout/NavBar.jsx @@ -1,69 +1,130 @@ -import { Fragment, useCallback } from "react"; -import { useNavigate } from "react-router-dom"; +import { Fragment } from "react"; +import { Dropdown } from "antd"; import NavBarButton from "./NavBarButton"; +import styles from "./index.module.less"; + +const itemsTwo = [ + { + key: "1", + label: ( + + 随机森林方法在线计算案例 + + ), + }, + { + key: "2", + label: ( + + 过去千年气候重建数据同化 + + ), + }, +]; +const itemsThree = [ + { + key: "1", + label: ( + + 北极海冰预报 + + ), + }, + { + key: "2", + label: ( + + 北极航线智能规划 + + ), + }, +]; +const itemsFour = [ + { + key: "1", + label: ( + + 两极协同—拉布拉多海海温偏暖控制夏季高原年代际增温 + + ), + }, + { + key: "2", + label: ( + + 两极协同—南极涛动有效调节青藏高原降水和加热 + + ), + }, + { + key: "3", + label: ( + + 两极协同—连接南极和北极的热带大西洋经向模的媒介作用 + + ), + }, + { + key: "4", + label: ( + + 三极联动影响青藏高原上层温度 + + ), + }, + { + key: "5", + label: ( + + 三极联动影响东亚夏季风 + + ), + }, + { + key: "6", + label: ( + + 三极冰盖/冰川表面冰雪冻融对比关联与科学认知 + + ), + }, +]; function NavBar() { - const navigate = useNavigate(); - - const navigateHandler = useCallback( - (type) => { - navigate(`/map/${type}`, { replace: true }); - }, - [navigate] - ); + const navigateHandler = (type) => window.open(`/map/${type}`, "_blank"); return (
navigateHandler(1)} + onClick={() => navigateHandler("")} /> - navigateHandler(1)} - /> - navigateHandler("climateReconDataAssim")} - /> - navigateHandler(1)} - /> - navigateHandler(1)} - /> -
-
-
三极联动
-
- navigateHandler(1)} - /> - navigateHandler(2)} - /> - navigateHandler(3)} - /> - navigateHandler(4)} - /> - navigateHandler(5)} - /> - navigateHandler(6)} - /> -
+ + + + + + + + +
); diff --git a/src/components/home/Layout/index.module.less b/src/components/home/Layout/index.module.less index 9a7e5b2..6a3207c 100644 --- a/src/components/home/Layout/index.module.less +++ b/src/components/home/Layout/index.module.less @@ -20,7 +20,7 @@ .nav-bar-first { width: 100%; max-width: 1200px; - margin: 100px auto 0; + margin: 250px auto 0; color: #fff; display: flex; justify-content: space-between; @@ -30,10 +30,7 @@ cursor: pointer; @btn-table-color: #04fbfd; transition: all 0.3s ease; - flex: 1; text-align: center; - max-width: 200px; - height: 200px; .btn-table { width: 20px; @@ -68,8 +65,9 @@ } .nav-bar-content { - padding: 20px; - font-size: 20px; + padding: 32px 20px; + font-size: 32px; + font-weight: 600; color: @btn-table-color; background-color: #081633; height: 100%; @@ -91,101 +89,7 @@ } &:hover { - transform: translate(0, -4px); - - .nav-bar-content { - background-color: #112f6a; - } - } - } - } - - .nav-bar-second { - width: 100%; - max-width: 1200px; - margin: 0px auto; - color: #fff; - - .nav-bar-title { - font-size: 30px; - font-weight: 600; - color: #00b2b2; - padding: 30px 0; - margin-left: -60px; - } - - .nav-bar-container { - display: grid; - grid-template-columns: 350px auto 350px; - justify-content: space-between; - gap: 32px 0; - } - - .nav-bar-button { - position: relative; - cursor: pointer; - @btn-table-color: #04fbfd; - transition: all 0.3s ease; - text-align: center; - max-width: 350px; - - .btn-table { - width: 20px; - height: 10px; - position: absolute; - background-color: transparent; - - &.left-top { - left: 0; - top: 0; - border-left: 1px solid @btn-table-color; - border-top: 1px solid @btn-table-color; - } - &.left-bottom { - left: 0; - bottom: 0; - border-left: 1px solid @btn-table-color; - border-bottom: 1px solid @btn-table-color; - } - &.right-top { - right: 0; - top: 0; - border-right: 1px solid @btn-table-color; - border-top: 1px solid @btn-table-color; - } - &.right-bottom { - right: 0; - bottom: 0; - border-right: 1px solid @btn-table-color; - border-bottom: 1px solid @btn-table-color; - } - } - - .nav-bar-content { - padding: 20px; - font-size: 20px; - color: @btn-table-color; - background-color: #081633; - height: 100%; - display: flex; - justify-content: space-evenly; - align-items: center; - gap: 8px; - - .anticon { - font-size: 40px; - } - - .nav-bar-content-text { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - } - } - - &:hover { - transform: translate(0, -4px); + // transform: translate(0, -4px); .nav-bar-content { background-color: #112f6a; @@ -194,3 +98,24 @@ } } } + +.navDropdown :global { + .ant-dropdown-menu-root { + background-color: #081633; + + .ant-dropdown-menu-item { + padding: 18px; + + &:hover { + color: #04fbfd; + background-color: #105185; + } + } + } + + .ant-dropdown-menu-item { + color: #00b2b2; + font-size: 24px; + font-weight: 600; + } +} diff --git a/src/components/map/Layout/index.module.less b/src/components/map/Layout/index.module.less index 7ffddc8..84a3508 100644 --- a/src/components/map/Layout/index.module.less +++ b/src/components/map/Layout/index.module.less @@ -101,18 +101,6 @@ } } - .chart-info-panel { - width: 100%; - height: 100%; - pointer-events: auto; - padding: 12px; - border: 1px solid #04fbfd; - color: #02f9ff !important; - background-color: #000000e7; - transition: all 0.3s ease-in-out; - border-radius: 8px; - } - .highlight { outline: 4px solid #04fbfd; box-shadow: 0 0 30px #04e0fd;