mixdashboards 1.0.32 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CoordinateSystem-BMkAxlii.js +6 -0
- package/dist/CoordinateSystem-DWnjjFwb.cjs +1 -0
- package/dist/EChartComponentBase-BQOhWkz2.js +114 -0
- package/dist/EChartComponentBase-BaQpBzVC.cjs +1 -0
- package/dist/LegendVisualProvider-BDw4_0K3.cjs +1 -0
- package/dist/LegendVisualProvider-BP9kA8co.js +44 -0
- package/dist/MarkerView-BG_nYESR.cjs +1 -0
- package/dist/MarkerView-CtWJi5UZ.js +192 -0
- package/dist/RoamController--cgD3aNm.cjs +1 -0
- package/dist/RoamController-DmBIwcAZ.js +124 -0
- package/dist/UniverSheet-KlvmL1Yw.cjs +1 -0
- package/dist/UniverSheet-MSHzUXq0.js +180 -0
- package/dist/VisualMapping-D-MA7S0X.js +260 -0
- package/dist/VisualMapping-MilpZvD_.cjs +1 -0
- package/dist/accelerationChart-B1HPMmd2.js +577 -0
- package/dist/accelerationChart-DZj2V2vD.cjs +6 -0
- package/dist/actionItem-BYCPoQK7.cjs +1 -0
- package/dist/actionItem-Bb2xiYlY.js +686 -0
- package/dist/alarmLevelChart-Bb0mAbwQ.cjs +2 -0
- package/dist/alarmLevelChart-CCioESvL.js +182 -0
- package/dist/alertTable-CQwr8YYt.js +301 -0
- package/dist/alertTable-oaX5eJC0.cjs +1 -0
- package/dist/annualRainfallChart-C21jEMBe.js +185 -0
- package/dist/annualRainfallChart-pO8q6aUJ.cjs +1 -0
- package/dist/api-C0GhBpqd.js +125 -0
- package/dist/api-P_s372dW.cjs +1 -0
- package/dist/aqi-DlY2r7OA.cjs +3 -0
- package/dist/aqi-iLwQH4rc.js +145 -0
- package/dist/aqiIndass-BaIVBfdC.cjs +3 -0
- package/dist/aqiIndass-DBeVSBdy.js +301 -0
- package/dist/arrayCard-DNNUEPvW.js +93 -0
- package/dist/arrayCard-OlVAAsZq.cjs +1 -0
- package/dist/audio-CAP4D-J2.js +301 -0
- package/dist/audio-CThzVIDU.cjs +1 -0
- package/dist/axisAlignTicks-BqVUa467.js +481 -0
- package/dist/axisAlignTicks-CDNWKJRo.cjs +1 -0
- package/dist/bar-BjR566__.cjs +2 -0
- package/dist/bar-D8C06GO4.js +232 -0
- package/dist/bmp-Cjizh2x6.js +226 -0
- package/dist/bmp-DsmTzyce.cjs +1 -0
- package/dist/box-DqewT3MF.js +352 -0
- package/dist/box-qgu_67OD.cjs +1 -0
- package/dist/chartConfigPanel-BiQArCoQ.cjs +1 -0
- package/dist/chartConfigPanel-DwAUq3pf.js +408 -0
- package/dist/circleBar-CO89T7kj.cjs +4 -0
- package/dist/circleBar-DGHDWQih.js +196 -0
- package/dist/clock-32hGccm4.cjs +1 -0
- package/dist/clock-CT8YXEU3.js +274 -0
- package/dist/clt-5bP_g1O-.cjs +1 -0
- package/dist/clt-FfIEfGtn.js +293 -0
- package/dist/cmc-B2nQFZIS.js +269 -0
- package/dist/cmc-dbuLkE8o.cjs +1 -0
- package/dist/cmp-QQlYcnqo.js +378 -0
- package/dist/cmp-l3U9fIrz.cjs +6 -0
- package/dist/composite-CbsUYl-u.js +136 -0
- package/dist/composite-Cf24lSyN.cjs +1 -0
- package/dist/composite-DjhrBgG1.js +323 -0
- package/dist/composite-DlY2_x6P.cjs +3 -0
- package/dist/config-BLSroAzs.cjs +1 -0
- package/dist/config-Cc2W4vke.js +9 -0
- package/dist/controlList-BdF8xNAi.js +879 -0
- package/dist/controlList-De6PXdOc.cjs +1 -0
- package/dist/controlRecordList-CKpAr1ON.js +421 -0
- package/dist/controlRecordList-u5a7chIX.cjs +1 -0
- package/dist/crd-BVAf41oX.js +113 -0
- package/dist/crd-BoaXQhFQ.cjs +1 -0
- package/dist/createSeriesData-Cz83cqoZ.cjs +1 -0
- package/dist/createSeriesData-E53TTCAt.js +116 -0
- package/dist/createSeriesDataSimply-Bsly4zZA.js +14 -0
- package/dist/createSeriesDataSimply-CjfZL_jf.cjs +1 -0
- package/dist/ctrBtn-C9kQiqY1.cjs +1 -0
- package/dist/ctrBtn-ZPRYWE66.js +215 -0
- package/dist/ctrSet-C87dxLfQ.js +247 -0
- package/dist/ctrSet-CNCrnLSs.cjs +1 -0
- package/dist/ctrSwitch-CVEtbdfb.cjs +1 -0
- package/dist/ctrSwitch-CkC_Axtp.js +207 -0
- package/dist/cursorHelper-DE0KU4_J.js +29 -0
- package/dist/cursorHelper-DsTR8jVF.cjs +1 -0
- package/dist/customGraphicKeyframeAnimation-BJ_z0kB3.js +330 -0
- package/dist/customGraphicKeyframeAnimation-CEIvOjMs.cjs +1 -0
- package/dist/dataManagement-CjlNfeYq.js +672 -0
- package/dist/dataManagement-n711sd1g.cjs +1 -0
- package/dist/dataReport-BsVjW3p7.cjs +4 -0
- package/dist/dataReport-ByjswEqq.js +787 -0
- package/dist/dataSample-BXwc06Sb.js +114 -0
- package/dist/dataSample-D4ycwmll.cjs +1 -0
- package/dist/dataTable-DX500R1i.js +217 -0
- package/dist/dataTable-K7j4fhnq.cjs +1 -0
- package/dist/datetime-DVbJtALf.js +113 -0
- package/dist/datetime-DYXWKrXI.cjs +1 -0
- package/dist/deepClusterSlipSurface-B7nkEM9A.cjs +1 -0
- package/dist/deepClusterSlipSurface-CQUE05cK.js +372 -0
- package/dist/deepDataMatrix-DHZA0IAm.cjs +1 -0
- package/dist/deepDataMatrix-ai5rB6ET.js +238 -0
- package/dist/deepDisplacement3D-BFqKqSYg.cjs +4289 -0
- package/dist/deepDisplacement3D-BsUzvbQb.js +26052 -0
- package/dist/deepDisplacementChart-2JZNrhrw.cjs +5 -0
- package/dist/deepDisplacementChart-BCIuCMdK.js +585 -0
- package/dist/deepDisplacementChart-Ba67v6um.cjs +6 -0
- package/dist/deepDisplacementChart-igl4rW1K.js +340 -0
- package/dist/deepDisplacementView-BedWJsx7.js +231 -0
- package/dist/deepDisplacementView-wQxyKzB-.cjs +8 -0
- package/dist/deepNodeTemperatureChart-DLeb9jKp.js +347 -0
- package/dist/deepNodeTemperatureChart-albL8hKa.cjs +1 -0
- package/dist/deepTangentAngleChart-C6xOiITk.js +420 -0
- package/dist/deepTangentAngleChart-DukevXaM.cjs +1 -0
- package/dist/deepTemperatureField-B-y94GPV.js +398 -0
- package/dist/deepTemperatureField-De4xKoHw.cjs +1 -0
- package/dist/deepTrendChart-DCkV2HNv.js +345 -0
- package/dist/deepTrendChart-MmuYSXtu.cjs +1 -0
- package/dist/deviceOnlineStatus-B5cCjhNA.cjs +2 -0
- package/dist/deviceOnlineStatus-CFuCTx7_.js +178 -0
- package/dist/deviceStatus-B2ibBDSi.js +194 -0
- package/dist/deviceStatus-DsEtKiGo.cjs +1 -0
- package/dist/displacementDataTable-BDqG1IvI.js +256 -0
- package/dist/displacementDataTable-oLnUdafv.cjs +1 -0
- package/dist/displacementTrajectoryChart-CBhPwZhe.cjs +22 -0
- package/dist/displacementTrajectoryChart-Crf55oKi.js +597 -0
- package/dist/displacementTrendChart-10n_lC9j.js +364 -0
- package/dist/displacementTrendChart-CWihCuIJ.cjs +5 -0
- package/dist/dxf-D8zHpz5g.js +2768 -0
- package/dist/dxf-DDh_DcQy.cjs +1 -0
- package/dist/dzc-DLCdTCwW.js +144 -0
- package/dist/dzc-uNTDJqpi.cjs +2 -0
- package/dist/echarts-BB8O2KSA.cjs +21 -0
- package/dist/echarts-BVht3HHb.js +13787 -0
- package/dist/ele-aqi-icon-BMm9WgFH.cjs +1 -0
- package/dist/ele-aqi-icon-DsYfU5th.js +5 -0
- package/dist/ele-bar-icon-C-GiCs2a.js +5 -0
- package/dist/ele-bar-icon-V94clxg_.cjs +1 -0
- package/dist/ele-bmp-icon-BBI0-SX7.cjs +1 -0
- package/dist/ele-bmp-icon-Pdolk1J5.js +5 -0
- package/dist/ele-circleBar-icon-DNBUxt0A.js +5 -0
- package/dist/ele-circleBar-icon-Da0-L9sa.cjs +1 -0
- package/dist/ele-clt-icon-BEVOS7Tq.cjs +1 -0
- package/dist/ele-clt-icon-DuU4Q401.js +5 -0
- package/dist/ele-cmp-icon-CEP91RUe.js +5 -0
- package/dist/ele-cmp-icon-yUlU6c_Q.cjs +1 -0
- package/dist/ele-crd-icon-BXxB7P3T.js +5 -0
- package/dist/ele-crd-icon-BvNgAPKW.cjs +1 -0
- package/dist/ele-ctrSet-icon-BtKGrCid.js +5 -0
- package/dist/ele-ctrSet-icon-DCsPO0tL.cjs +1 -0
- package/dist/ele-dateTime-icon-BEGFlwID.js +5 -0
- package/dist/ele-dateTime-icon-BgZ2_KWW.cjs +1 -0
- package/dist/ele-dzc-icon-D6eVpaHp.js +5 -0
- package/dist/ele-dzc-icon-h5wOUHF0.cjs +1 -0
- package/dist/ele-evn-icon-DUQMS-9T.cjs +1 -0
- package/dist/ele-evn-icon-MWzAujnD.js +5 -0
- package/dist/ele-gag-icon-CB5dJeYF.js +5 -0
- package/dist/ele-gag-icon-Ce1hl9NI.cjs +1 -0
- package/dist/ele-glbModel-icon-ByACDCrv.cjs +1 -0
- package/dist/ele-glbModel-icon-l_SMi3ik.js +5 -0
- package/dist/ele-grd-icon-DR52zwGR.js +5 -0
- package/dist/ele-grd-icon-ZUb-megQ.cjs +1 -0
- package/dist/ele-gridview-icon-D3GcssP6.cjs +1 -0
- package/dist/ele-gridview-icon-cSd1oIDi.js +5 -0
- package/dist/ele-lin-icon-Dax-ZiWV.js +5 -0
- package/dist/ele-lin-icon-Dke_1AmT.cjs +1 -0
- package/dist/ele-lst-icon-CKpeRKmk.js +5 -0
- package/dist/ele-lst-icon-CrxnHZ-A.cjs +1 -0
- package/dist/ele-mxa-icon-CJWttkCK.js +5 -0
- package/dist/ele-mxa-icon-fgN0MLnh.cjs +1 -0
- package/dist/ele-rtn-icon-BrsJIU8J.cjs +1 -0
- package/dist/ele-rtn-icon-CqCKSHIw.js +5 -0
- package/dist/ele-textbox-icon-ClGaLi5p.js +5 -0
- package/dist/ele-textbox-icon-g_5kV8t6.cjs +1 -0
- package/dist/ele-vdo-icon-Bgp9gaT6.cjs +1 -0
- package/dist/ele-vdo-icon-DcWebTR5.js +5 -0
- package/dist/ele-vlu-icon-Bg6EHZdJ.js +5 -0
- package/dist/ele-vlu-icon-Dv-R7Xuc.cjs +1 -0
- package/dist/element-resize-detector-Bo5uDQAu.cjs +6 -0
- package/dist/element-resize-detector-DJcsrJ8s.js +1547 -0
- package/dist/evn-DuL5oVRl.cjs +1 -0
- package/dist/evn-YwCALVXj.js +116 -0
- package/dist/evolutionChart-4noZSdLX.js +406 -0
- package/dist/evolutionChart-AeL67MAt.cjs +1 -0
- package/dist/fileViewer-DiH3PM0r.js +415 -0
- package/dist/fileViewer-bsrjlJkC.cjs +1 -0
- package/dist/filterBar-CWEguwYc.js +394 -0
- package/dist/filterBar-Ct1BFhrS.cjs +1 -0
- package/dist/fireCombustionCurve-DYPC4zKJ.js +405 -0
- package/dist/fireCombustionCurve-DyiQn-WA.cjs +1 -0
- package/dist/fireFilterBar-Bdm2ljuO.cjs +1 -0
- package/dist/fireFilterBar-DGHPNTwF.js +221 -0
- package/dist/gag-HiNaL81R.cjs +1 -0
- package/dist/gag-kvkKzJuO.js +125 -0
- package/dist/glbModel-CUz6CyVF.js +2724 -0
- package/dist/glbModel-DtBI72ap.cjs +5 -0
- package/dist/gnssFilterBar-BQgY5x1W.cjs +1 -0
- package/dist/gnssFilterBar-TBtirXIB.js +310 -0
- package/dist/gnssHistoryTable-D1ZLJOgh.cjs +3 -0
- package/dist/gnssHistoryTable-U8O7nyO7.js +398 -0
- package/dist/gnssMapView-42zmAd9q.cjs +7 -0
- package/dist/gnssMapView-CaBfWeT1.js +699 -0
- package/dist/gnssTimeSeriesChart-BrXYvuh6.js +421 -0
- package/dist/gnssTimeSeriesChart-CV2w_Aik.cjs +1 -0
- package/dist/gnssXYTrajectory-BmzSYjQ_.cjs +5 -0
- package/dist/gnssXYTrajectory-D2DoYnze.js +304 -0
- package/dist/grd-B0GUjLm9.js +339 -0
- package/dist/grd-DW8cSFVR.cjs +1 -0
- package/dist/grdIndass-BeBXVsos.cjs +1 -0
- package/dist/grdIndass-DduUKZJm.js +216 -0
- package/dist/grg-CeX0pirQ.js +194 -0
- package/dist/grg-fnpcXtju.cjs +1 -0
- package/dist/gridview-BPwWXza9.js +183 -0
- package/dist/gridview-DpABhCIw.cjs +1 -0
- package/dist/groupCard-De1E15mW.js +132 -0
- package/dist/groupCard-WNE6gAAl.cjs +1 -0
- package/dist/headerBar-CZ3qcLHo.js +210 -0
- package/dist/headerBar-Qi1EXrr6.cjs +1 -0
- package/dist/{history-DigzRtjC.js → history-BkZhlpdY.js} +5 -3
- package/dist/history-DAmBl4_5.cjs +1 -0
- package/dist/index-ButoLLAe.js +8655 -0
- package/dist/index-Mh5Dw2sd.cjs +585 -0
- package/dist/index-kShjySl9.js +5313 -0
- package/dist/index-mAPVa0s4.cjs +11 -0
- package/dist/insarDeformChart-BGr2xe7w.cjs +1 -0
- package/dist/insarDeformChart-CnuSL1d9.js +216 -0
- package/dist/insarImageViewer-DRgGdQmN.cjs +1 -0
- package/dist/insarImageViewer-EmVThmVQ.js +268 -0
- package/dist/install-8XfFtnlL.js +853 -0
- package/dist/install-9_V0b6vf.js +497 -0
- package/dist/install-B0x4IqQr.js +1258 -0
- package/dist/install-B1IEhhn3.cjs +1 -0
- package/dist/install-B2TChEcT.js +895 -0
- package/dist/install-B65ZIqAx.cjs +1 -0
- package/dist/install-BBrAry2m.js +8 -0
- package/dist/install-BRjgycz_.cjs +1 -0
- package/dist/install-BUu5ESB7.js +447 -0
- package/dist/install-BamnGDPb.cjs +1 -0
- package/dist/install-BifpoHNI.js +1817 -0
- package/dist/install-BvOpNm0Y.cjs +1 -0
- package/dist/install-ByPD0oOh.cjs +1 -0
- package/dist/install-BzdOSCzO.js +785 -0
- package/dist/install-C8buXQPI.cjs +1 -0
- package/dist/install-C9Cdzkc6.js +265 -0
- package/dist/install-CBde4hAM.js +112 -0
- package/dist/install-CIT6k8Ga.cjs +1 -0
- package/dist/install-CYwVETsi.cjs +1 -0
- package/dist/install-C_3uGWLu.js +2328 -0
- package/dist/install-Ch5d8i37.cjs +1 -0
- package/dist/install-CltTFs4e.cjs +3 -0
- package/dist/install-Csxa7Kv7.cjs +18 -0
- package/dist/install-Cx1i_m0k.js +1168 -0
- package/dist/install-D1QM80AD.js +227 -0
- package/dist/install-D7znHb-b.js +604 -0
- package/dist/install-DHY9y86B.cjs +3 -0
- package/dist/install-DIlB2q7w.cjs +1 -0
- package/dist/install-DV5cEgNV.cjs +1 -0
- package/dist/install-DWm3j_D3.js +38 -0
- package/dist/install-FDYiy_gL.js +250 -0
- package/dist/install-LtoYukZU.cjs +1 -0
- package/dist/install-MS3ZY7fF.js +685 -0
- package/dist/install-hfre7yvV.js +727 -0
- package/dist/install-kGXY_57n.cjs +1 -0
- package/dist/install-nDY6w-GK.cjs +1 -0
- package/dist/install-oGjJ0_bF.js +588 -0
- package/dist/install-z6wShIZI.cjs +1 -0
- package/dist/installCanvasRenderer-CLT2hquJ.js +4260 -0
- package/dist/installCanvasRenderer-CyhM1Qpl.cjs +3 -0
- package/dist/installMarkArea-Cdg4iciO.js +206 -0
- package/dist/installMarkArea-CjyaJPLE.cjs +1 -0
- package/dist/installMarkLine-BgE0YACE.js +533 -0
- package/dist/installMarkLine-Bv53Iw9G.cjs +1 -0
- package/dist/installSimple-BWTCwMdY.js +586 -0
- package/dist/installSimple-c87Ufc4_.cjs +1 -0
- package/dist/kds-CpIQFgeY.js +1203 -0
- package/dist/kds-DTYWOq4K.cjs +3 -0
- package/dist/labelHelper-Cd8oB-sZ.js +26 -0
- package/dist/labelHelper-npJGYQ1j.cjs +1 -0
- package/dist/layerTabs-BATcBkTA.cjs +1 -0
- package/dist/layerTabs-uze6K91A.js +139 -0
- package/dist/lin-Ba6fHkYf.cjs +2 -0
- package/dist/lin-DU_EuPRg.js +239 -0
- package/dist/linIndass-XHKElG7L.js +273 -0
- package/dist/linIndass-urYe5inp.cjs +2 -0
- package/dist/lst-C7aee1cU.js +147 -0
- package/dist/lst-CpmoEQDY.cjs +1 -0
- package/dist/manualEntry-CJPiO5nh.cjs +1 -0
- package/dist/manualEntry-D9m_WPw3.js +662 -0
- package/dist/mapBackground-6g_71Fwa.js +6658 -0
- package/dist/mapBackground-CF_TqNBy.cjs +17 -0
- package/dist/mappingList-CR55Tq4t.cjs +1 -0
- package/dist/mappingList-luT5YE0d.js +917 -0
- package/dist/markdownViewer-CnguoUr8.js +261 -0
- package/dist/markdownViewer-D1hDk2Y7.cjs +3 -0
- package/dist/mix-control-modal-BDHAB4Tw.cjs +1 -0
- package/dist/mix-control-modal-CHiX3hQs.js +147 -0
- package/dist/mixDataPermission-BTA1jNd1.cjs +1 -0
- package/dist/mixDataPermission-BaqV0Z6N.js +760 -0
- package/dist/mixGrid-3BqQCvg8.cjs +1 -0
- package/dist/mixGrid-C0eEvwPy.js +180 -0
- package/dist/mixMap-7upgYwWk.js +258 -0
- package/dist/mixMap-Bw-We4Cm.cjs +1 -0
- package/dist/mixModel-BqE_Kd4c.js +245 -0
- package/dist/mixModel-CgV4XptM.cjs +3 -0
- package/dist/mixPie-9LfMCTQV.cjs +2 -0
- package/dist/mixPie-B-HeglUn.js +168 -0
- package/dist/mixdashboards.cjs +1 -1
- package/dist/mixdashboards.css +1 -1
- package/dist/mixdashboards.js +7 -7
- package/dist/mjpegCamera-Cfw3rzT5.js +158 -0
- package/dist/mjpegCamera-nxKfhobY.cjs +1 -0
- package/dist/monitorAlert-Bg5vzzyG.js +225 -0
- package/dist/monitorAlert-Bt0baNh4.cjs +1 -0
- package/dist/monitorData-BvAMeOrp.js +319 -0
- package/dist/monitorData-CzPVIk_4.cjs +1 -0
- package/dist/monitorSpeedChart-0bDuU3Kj.js +603 -0
- package/dist/monitorSpeedChart-C52QjA5K.cjs +16 -0
- package/dist/mxa-BW80xKCc.js +143 -0
- package/dist/mxa-eLAgZPMC.cjs +2 -0
- package/dist/no-image-icon-CPA7RKkF.cjs +1 -0
- package/dist/no-image-icon-n2ZlEjxS.js +1864 -0
- package/dist/objectList-Cf9GMyXN.js +1809 -0
- package/dist/objectList-CpqQxG8L.cjs +1 -0
- package/dist/params-3W3p8QeC.cjs +1 -0
- package/dist/params-DfgBemk0.js +75 -0
- package/dist/photo-BODEtaYh.cjs +1 -0
- package/dist/photo-BfLkWAo8.js +256 -0
- package/dist/pie-BDLg-Rls.js +199 -0
- package/dist/pie-DxoBrm0D.cjs +2 -0
- package/dist/points-DcRmizmA.cjs +1 -0
- package/dist/points-DkG9FRF9.js +277 -0
- package/dist/pressBtn-CXG1eSWC.js +242 -0
- package/dist/pressBtn-t0g4vk7s.cjs +1 -0
- package/dist/progressBar-BXaFKSCq.js +130 -0
- package/dist/progressBar-CJEWkZ42.cjs +1 -0
- package/dist/progressCircle-DpOI5D5z.js +168 -0
- package/dist/progressCircle-uQ7vaMKM.cjs +1 -0
- package/dist/qrcode-CX8aymYZ.js +814 -0
- package/dist/qrcode-DHCRfp0M.cjs +1 -0
- package/dist/raceBar-Cv0-0ogd.cjs +4 -0
- package/dist/raceBar-DFaH342G.js +197 -0
- package/dist/rad-CFswUTwi.cjs +1 -0
- package/dist/rad-NS2G_nMg.js +143 -0
- package/dist/rainfallFilterBar-BI45QvJm.cjs +1 -0
- package/dist/rainfallFilterBar-D_Ye_NeB.js +221 -0
- package/dist/rainfallTimeCurve-BHWqX47Q.js +443 -0
- package/dist/rainfallTimeCurve-Ke1JvSWq.cjs +1 -0
- package/dist/rangeLin-D6VZ2U3C.cjs +3 -0
- package/dist/rangeLin-GMYEgLeP.js +278 -0
- package/dist/request-BD0x5Hkt.js +75 -0
- package/dist/request-Bn100qAJ.cjs +1 -0
- package/dist/retainer1-D2XmjXYH.cjs +1 -0
- package/dist/retainer1-h-Whr2c9.js +290 -0
- package/dist/retainer2-ByQdiRjq.js +504 -0
- package/dist/retainer2-cF-trL2g.cjs +1 -0
- package/dist/riskRegionTable-CQxAkG7k.js +170 -0
- package/dist/riskRegionTable-cKnxra4_.cjs +1 -0
- package/dist/sankey-Bk1IcVJQ.js +171 -0
- package/dist/sankey-MRirEgU0.cjs +1 -0
- package/dist/sausage-DRCw7Qmr.cjs +1 -0
- package/dist/sausage-xU3hOdxD.js +30 -0
- package/dist/scd-BDRpzmsa.js +2577 -0
- package/dist/scd-J-mN3eI5.cjs +1 -0
- package/dist/sectorHelper-BFEnYqut.cjs +1 -0
- package/dist/sectorHelper-DIlWFMnU.js +18 -0
- package/dist/sideMenu-BgTMtnMq.js +225 -0
- package/dist/sideMenu-l8X2E00H.cjs +1 -0
- package/dist/slopeStability-BPf7m0fJ.cjs +1 -0
- package/dist/slopeStability-C5RqZ1im.js +331 -0
- package/dist/speedCurve-C3pK-zZy.js +394 -0
- package/dist/speedCurve-CluwNAZl.cjs +1 -0
- package/dist/staticLine-C6tGGXcN.cjs +1 -0
- package/dist/staticLine-DXWOLj15.js +362 -0
- package/dist/store-BJW2NQkK.cjs +5 -0
- package/dist/store-DzDtVfSX.js +1673 -0
- package/dist/swiper-DGqDoUkX.cjs +1 -0
- package/dist/swiper-IMlGje3t.js +128 -0
- package/dist/terminalConfigList-D6xDHsnb.cjs +1 -0
- package/dist/terminalConfigList-SAyXi-BK.js +1017 -0
- package/dist/terminalList-CjSHshiR.js +1211 -0
- package/dist/terminalList-ml2C18MY.cjs +1 -0
- package/dist/textbox-AQtCe25j.cjs +1 -0
- package/dist/textbox-BLV-SY8e.js +172 -0
- package/dist/three.module-DNVo041Q.cjs +3824 -0
- package/dist/three.module-DcOQNgKS.js +16561 -0
- package/dist/timeQueryBar-BeMu_DYr.js +155 -0
- package/dist/timeQueryBar-BuKakMy8.cjs +1 -0
- package/dist/timeSeries-DP5iZKVM.js +587 -0
- package/dist/timeSeries-DfGgFWiF.cjs +4 -0
- package/dist/timeSeriesCurve-B0Mw6eNK.cjs +1 -0
- package/dist/timeSeriesCurve-BSgtPqYw.js +463 -0
- package/dist/titleStyle-BT5GlpAb.js +49 -0
- package/dist/titleStyle-NSnz6cUg.cjs +1 -0
- package/dist/toggleBtn-Dh64vVWo.cjs +1 -0
- package/dist/toggleBtn-O2Y75Uen.js +249 -0
- package/dist/trajectoryConfigPanel--C1h3tK6.js +635 -0
- package/dist/trajectoryConfigPanel-P_Qa4omj.cjs +1 -0
- package/dist/trajectoryScatter-BbpbgNb8.cjs +1 -0
- package/dist/trajectoryScatter-VLrmImlq.js +525 -0
- package/dist/universalConfigPanel-C0lDSzOB.cjs +1 -0
- package/dist/universalConfigPanel-DBg76b4F.js +477 -0
- package/dist/universalTable-Bzq9VqzA.cjs +2 -0
- package/dist/universalTable-DGK02ywi.js +410 -0
- package/dist/universalTransition-Bv7ibBUh.js +988 -0
- package/dist/universalTransition-CIN_u2Cu.cjs +1 -0
- package/dist/video-CyRoSQf1.cjs +1 -0
- package/dist/video-DCzzaEmV.js +310 -0
- package/dist/videoMonitor-BjD-ZFS0.cjs +1 -0
- package/dist/videoMonitor-ByaQeIWR.js +241 -0
- package/dist/vlu-CYZjYHaV.cjs +1 -0
- package/dist/vlu-h-9twmCr.js +100 -0
- package/dist/vue-i18n-5Nahpzrm.js +2732 -0
- package/dist/vue-i18n-BvHMBi_b.cjs +5 -0
- package/dist/weather-B7B5E1EJ.cjs +1 -0
- package/dist/weather-C_aC0XJ1.js +94 -0
- package/dist/windLin-B7V4NUV8.js +1226 -0
- package/dist/windLin-DPNzX7JN.cjs +1 -0
- package/package.json +17 -10
- package/dist/history-fvcbbxGa.cjs +0 -1
- package/dist/index-B-aA7889.js +0 -154003
- package/dist/index-CdJ-j9Gj.cjs +0 -8893
|
@@ -0,0 +1,1673 @@
|
|
|
1
|
+
var A = Object.defineProperty, N = Object.defineProperties;
|
|
2
|
+
var B = Object.getOwnPropertyDescriptors;
|
|
3
|
+
var k = Object.getOwnPropertySymbols;
|
|
4
|
+
var O = Object.prototype.hasOwnProperty, M = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var C = (a, e, t) => e in a ? A(a, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[e] = t, h = (a, e) => {
|
|
6
|
+
for (var t in e || (e = {}))
|
|
7
|
+
O.call(e, t) && C(a, t, e[t]);
|
|
8
|
+
if (k)
|
|
9
|
+
for (var t of k(e))
|
|
10
|
+
M.call(e, t) && C(a, t, e[t]);
|
|
11
|
+
return a;
|
|
12
|
+
}, v = (a, e) => N(a, B(e));
|
|
13
|
+
var b = (a, e, t) => new Promise((i, s) => {
|
|
14
|
+
var n = (o) => {
|
|
15
|
+
try {
|
|
16
|
+
l(t.next(o));
|
|
17
|
+
} catch (m) {
|
|
18
|
+
s(m);
|
|
19
|
+
}
|
|
20
|
+
}, r = (o) => {
|
|
21
|
+
try {
|
|
22
|
+
l(t.throw(o));
|
|
23
|
+
} catch (m) {
|
|
24
|
+
s(m);
|
|
25
|
+
}
|
|
26
|
+
}, l = (o) => o.done ? i(o.value) : Promise.resolve(o.value).then(n, r);
|
|
27
|
+
l((t = t.apply(a, e)).next());
|
|
28
|
+
});
|
|
29
|
+
import { defineStore as D } from "pinia";
|
|
30
|
+
import { k as T } from "./index-kShjySl9.js";
|
|
31
|
+
import "html2canvas";
|
|
32
|
+
import "vue";
|
|
33
|
+
import "./element-resize-detector-DJcsrJ8s.js";
|
|
34
|
+
const x = {
|
|
35
|
+
block_name: "显示板设计",
|
|
36
|
+
work_bench: "工作台",
|
|
37
|
+
dashboard: "显示板",
|
|
38
|
+
component_library: "组件库",
|
|
39
|
+
component_library_tip: "请先选择要编辑的显示板",
|
|
40
|
+
component_library_desc: "在显示板页面选择一个显示板,双击进入编辑界面使用组件库",
|
|
41
|
+
go_to_dashboard: "前往显示板",
|
|
42
|
+
material_library: "素材库",
|
|
43
|
+
pro_config: "应用",
|
|
44
|
+
search_placeholder: "请输入关键字搜索",
|
|
45
|
+
edit: {
|
|
46
|
+
text: "编辑",
|
|
47
|
+
left: {
|
|
48
|
+
library: "组件库",
|
|
49
|
+
expand_panel: "展开组件面板",
|
|
50
|
+
collapse_panel: "折叠组件面板",
|
|
51
|
+
all_components: "全部组件",
|
|
52
|
+
common_components: "通用组件",
|
|
53
|
+
object_management: "对象管理",
|
|
54
|
+
statistics_management: "统计管理",
|
|
55
|
+
calculate_management: "计算管理",
|
|
56
|
+
history_management: "历程管理",
|
|
57
|
+
maintenance_management: "维保管理",
|
|
58
|
+
offline_data: "离线数据",
|
|
59
|
+
index_management: "指数管理",
|
|
60
|
+
deviation_management: "偏态管理",
|
|
61
|
+
stability_management: "稳定性管理",
|
|
62
|
+
balance_management: "平衡值管理",
|
|
63
|
+
increment_management: "增量管理",
|
|
64
|
+
risk_management: "风险管理",
|
|
65
|
+
eigen_detection: "特征检测",
|
|
66
|
+
simple_mode: "简洁模式",
|
|
67
|
+
simple_mode_interaction: "交互组件",
|
|
68
|
+
simple_mode_chart: "图表组件",
|
|
69
|
+
simple_mode_system: "系统功能",
|
|
70
|
+
simple_mode_ui: "界面组件",
|
|
71
|
+
simple_mode_slope: "边坡分析"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
delete: "删除",
|
|
75
|
+
category: "类型",
|
|
76
|
+
name: "名称",
|
|
77
|
+
confirm: "确定",
|
|
78
|
+
cancel: "取消",
|
|
79
|
+
close: "关闭",
|
|
80
|
+
save: "保存",
|
|
81
|
+
import: "导入",
|
|
82
|
+
preview: "预览",
|
|
83
|
+
download: "下载",
|
|
84
|
+
setting: "设置",
|
|
85
|
+
view_script: "查看脚本",
|
|
86
|
+
search: "搜索",
|
|
87
|
+
reset: "重置",
|
|
88
|
+
noData: "暂无数据",
|
|
89
|
+
sheet: "页面名称",
|
|
90
|
+
alias: "标识",
|
|
91
|
+
chart: "图表",
|
|
92
|
+
attribute: "属性",
|
|
93
|
+
bg: "背景",
|
|
94
|
+
click_upload: "点击上传",
|
|
95
|
+
script_info: "脚本详情",
|
|
96
|
+
copy: "复制",
|
|
97
|
+
placeholder: {
|
|
98
|
+
input: "请输入内容",
|
|
99
|
+
input_16: "请输入内容(限16汉字)",
|
|
100
|
+
select: "请选择",
|
|
101
|
+
input_fill: "请输入填充值",
|
|
102
|
+
input_mark: "请输入标线值",
|
|
103
|
+
select_type: "请选择类型",
|
|
104
|
+
select_type_first: "请先选择类型",
|
|
105
|
+
select_project_first: "请先选择项目",
|
|
106
|
+
input_obj_id: "请输入对象ID",
|
|
107
|
+
input_obj_alias: "请输入对象别名",
|
|
108
|
+
select_field: "请选择字段",
|
|
109
|
+
select_condition: "请选择条件值",
|
|
110
|
+
select_date: "选择日期时间",
|
|
111
|
+
input_critical: "请输入临界值",
|
|
112
|
+
import_number: "请输入数值",
|
|
113
|
+
select_date_format: "请选择时间格式"
|
|
114
|
+
},
|
|
115
|
+
yes: "是",
|
|
116
|
+
no: "否",
|
|
117
|
+
object: "对象",
|
|
118
|
+
project: "项目",
|
|
119
|
+
col: "列",
|
|
120
|
+
row: "行",
|
|
121
|
+
status: "状态",
|
|
122
|
+
equal: "等于",
|
|
123
|
+
NaturalTime: "自然时间",
|
|
124
|
+
RunTime: "运行时间",
|
|
125
|
+
id: "编号",
|
|
126
|
+
address: "位置",
|
|
127
|
+
width: "宽度",
|
|
128
|
+
height: "高度",
|
|
129
|
+
background: "背景",
|
|
130
|
+
resolution: {
|
|
131
|
+
name: "分辨率",
|
|
132
|
+
width: "分辨率-宽度",
|
|
133
|
+
height: "分辨率-高度"
|
|
134
|
+
},
|
|
135
|
+
default: "默认",
|
|
136
|
+
month: "月",
|
|
137
|
+
day: "日",
|
|
138
|
+
null: "无",
|
|
139
|
+
average: "平均值",
|
|
140
|
+
customize: "自定义",
|
|
141
|
+
add: "新增",
|
|
142
|
+
total: "总和",
|
|
143
|
+
success: "操作成功",
|
|
144
|
+
ace_error: "脚本语法错误",
|
|
145
|
+
pro: {
|
|
146
|
+
title: "PRO显示板",
|
|
147
|
+
info: "用于设备监控界面数据展示"
|
|
148
|
+
},
|
|
149
|
+
app: {
|
|
150
|
+
title: "APP显示板",
|
|
151
|
+
info: "用于移动端界面数据展示"
|
|
152
|
+
},
|
|
153
|
+
show: {
|
|
154
|
+
title: "大屏显示板",
|
|
155
|
+
info: "用于可视化界面数据展示"
|
|
156
|
+
},
|
|
157
|
+
pc: {
|
|
158
|
+
title: "pc显示板",
|
|
159
|
+
info: "用于PC端界面数据展示"
|
|
160
|
+
},
|
|
161
|
+
pad: {
|
|
162
|
+
title: "PAD显示板",
|
|
163
|
+
info: "用于平板端界面数据展示"
|
|
164
|
+
},
|
|
165
|
+
current_version: "当前版本:",
|
|
166
|
+
account_info: "账户信息",
|
|
167
|
+
description: "描述",
|
|
168
|
+
created: "创建时间",
|
|
169
|
+
version_info: "版本信息",
|
|
170
|
+
warnning: "本计算机程序受版权法及国际公约的保护,未经授权擅自复制或散布本程序的部分或全部,将承受严厉的民事和刑事处罚,对已知的违反者将给予法律范围内的全面制裁。",
|
|
171
|
+
user: {
|
|
172
|
+
id: "用户编号",
|
|
173
|
+
name: "登录名",
|
|
174
|
+
nickname: "用户昵称",
|
|
175
|
+
email: "邮箱",
|
|
176
|
+
roles: "标签",
|
|
177
|
+
image: "头像",
|
|
178
|
+
mobile: "手机号",
|
|
179
|
+
company: "组织",
|
|
180
|
+
login_name: "登录名",
|
|
181
|
+
password: "密码",
|
|
182
|
+
owned_role: "所属角色",
|
|
183
|
+
role: "角色",
|
|
184
|
+
create_time: "创建时间"
|
|
185
|
+
},
|
|
186
|
+
layer: {
|
|
187
|
+
name: "图层",
|
|
188
|
+
default_name: "图层",
|
|
189
|
+
default_layer_name: "图层 1",
|
|
190
|
+
search_placeholder: "搜索",
|
|
191
|
+
add: "新建",
|
|
192
|
+
delete: "删除",
|
|
193
|
+
count: "个",
|
|
194
|
+
copy: "副本",
|
|
195
|
+
icon: "图",
|
|
196
|
+
hide: "隐藏",
|
|
197
|
+
show: "显示",
|
|
198
|
+
lock: "锁定",
|
|
199
|
+
unlock: "解锁",
|
|
200
|
+
opacity: "透明",
|
|
201
|
+
drawer: {
|
|
202
|
+
title: "图层",
|
|
203
|
+
collapse_panel: "折叠",
|
|
204
|
+
expand_panel: "展开"
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
add_pro: "新增PRO显示板",
|
|
208
|
+
add_show: "新增大屏显示板",
|
|
209
|
+
add_app: "新增APP显示板",
|
|
210
|
+
add_pad: "新增PAD显示板",
|
|
211
|
+
add_pc: "新建显示板",
|
|
212
|
+
add_dashboard: "新增显示板",
|
|
213
|
+
new_category: "新建分类",
|
|
214
|
+
title: {
|
|
215
|
+
show: "大屏显示板",
|
|
216
|
+
pro: "PRO显示板",
|
|
217
|
+
app: "APP显示板",
|
|
218
|
+
pad: "PAD显示板",
|
|
219
|
+
pc: "pc显示板",
|
|
220
|
+
mine: "我的最近",
|
|
221
|
+
collect: "我的收藏"
|
|
222
|
+
},
|
|
223
|
+
exit_create: "退出创建",
|
|
224
|
+
no_data: "暂无数据",
|
|
225
|
+
recent: "我的最近",
|
|
226
|
+
next_step: "下一步",
|
|
227
|
+
tag: "显示板标识",
|
|
228
|
+
dashboard_name: "显示板名称",
|
|
229
|
+
type: "显示板类型",
|
|
230
|
+
show_name: "大屏名称",
|
|
231
|
+
show_alias: "别名",
|
|
232
|
+
task_cover_dashboard: "显示板封面",
|
|
233
|
+
recommend_size: "推荐尺寸",
|
|
234
|
+
auto_cover: "自动截取封面",
|
|
235
|
+
copy_success: "复制成功",
|
|
236
|
+
delete_tip: "确定删除该显示板吗?",
|
|
237
|
+
delete_title: "删除提示",
|
|
238
|
+
rename: "重命名",
|
|
239
|
+
name_empty_tip: "请输入名称",
|
|
240
|
+
search_result: "搜索结果",
|
|
241
|
+
sheet_empty_tip: "页面必须保留一个!",
|
|
242
|
+
delete_page_confirm: "确定删除当前页面吗?",
|
|
243
|
+
delete_page_title: "提示",
|
|
244
|
+
close_page_confirm: "关闭页面前请确认是否已保存?",
|
|
245
|
+
close_page_title: "提示",
|
|
246
|
+
unsaved_changes_confirm: "当前有未保存的修改,是否保存?",
|
|
247
|
+
unsaved_changes_switch: "当前有未保存的修改,是否保存?",
|
|
248
|
+
save_and_close: "保存并关闭",
|
|
249
|
+
save_and_switch: "保存并跳转",
|
|
250
|
+
discard_close: "不保存",
|
|
251
|
+
discard_switch: "不保存",
|
|
252
|
+
saved: "已保存",
|
|
253
|
+
new_sheet: "新建页面",
|
|
254
|
+
defaultBg1: "内置背景1",
|
|
255
|
+
defaultBg2: "内置背景2",
|
|
256
|
+
undefined: "未知",
|
|
257
|
+
bar: "柱状图",
|
|
258
|
+
list: "列表",
|
|
259
|
+
favorite: "收藏",
|
|
260
|
+
recycle: "回收站",
|
|
261
|
+
logout: "退出登录",
|
|
262
|
+
help: "帮助文档",
|
|
263
|
+
// 操作消息
|
|
264
|
+
messages: {
|
|
265
|
+
save_success: "保存成功",
|
|
266
|
+
save_failed: "保存失败",
|
|
267
|
+
delete_success: "删除成功",
|
|
268
|
+
delete_failed: "删除失败",
|
|
269
|
+
copy_script_success: "复制成功",
|
|
270
|
+
copy_script_failed: "复制失败",
|
|
271
|
+
favorite_success: "收藏成功",
|
|
272
|
+
unfavorite_success: "取消收藏成功",
|
|
273
|
+
operation_failed: "操作失败",
|
|
274
|
+
get_data_failed: "获取数据失败",
|
|
275
|
+
get_favorite_failed: "获取收藏列表失败",
|
|
276
|
+
no_config_data: "该显示板没有配置数据",
|
|
277
|
+
script_parse_failed: "脚本解析失败",
|
|
278
|
+
unknown_error: "未知错误",
|
|
279
|
+
layer_locked: "当前图层已锁定,无法添加组件",
|
|
280
|
+
no_active_layer: "没有找到激活的图层,无法添加组件",
|
|
281
|
+
layer_name_update_not_implemented: "图层名称更新功能尚未实现",
|
|
282
|
+
upload_failed: "上传失败",
|
|
283
|
+
unnamed_dashboard: "未命名显示板",
|
|
284
|
+
config_parse_failed: "显示板配置解析失败",
|
|
285
|
+
unnamed: "未命名",
|
|
286
|
+
// 名称验证相关
|
|
287
|
+
name_required: "名称不能为空",
|
|
288
|
+
name_too_long: "名称长度不能超过32个字符",
|
|
289
|
+
name_invalid_format: "名称必须以英文字母开头,只能包含英文字母、数字和下划线",
|
|
290
|
+
name_not_unique: "名称已存在,请使用其他名称"
|
|
291
|
+
},
|
|
292
|
+
// 下拉菜单项
|
|
293
|
+
dropdown: {
|
|
294
|
+
copy_script: "复制脚本",
|
|
295
|
+
view_script: "查看脚本",
|
|
296
|
+
view_script_title: "查看脚本"
|
|
297
|
+
},
|
|
298
|
+
// 提示标题
|
|
299
|
+
prompt: {
|
|
300
|
+
tip: "提示",
|
|
301
|
+
warning: "警告",
|
|
302
|
+
error: "错误",
|
|
303
|
+
confirm: "确认"
|
|
304
|
+
},
|
|
305
|
+
// 右侧面板
|
|
306
|
+
right: {
|
|
307
|
+
layer: {
|
|
308
|
+
property: "图层属性",
|
|
309
|
+
caption: "图层标题",
|
|
310
|
+
caption_placeholder: "请输入图层标题",
|
|
311
|
+
alias: "图层标识",
|
|
312
|
+
alias_placeholder: "请输入图层标识",
|
|
313
|
+
alias_hint: "英文字母开头,可包含字母、数字、下划线",
|
|
314
|
+
id: "图层ID",
|
|
315
|
+
name: "图层名称",
|
|
316
|
+
name_placeholder: "请输入图层名称",
|
|
317
|
+
visible: "可见性",
|
|
318
|
+
locked: "锁定",
|
|
319
|
+
opacity: "透明度",
|
|
320
|
+
count: "元素数量",
|
|
321
|
+
component_unit: "个组件",
|
|
322
|
+
isModal: "弹窗图层",
|
|
323
|
+
isModal_hint: "开启后此图层将作为弹窗显示,可被其他组件触发",
|
|
324
|
+
modalWidth: "弹窗宽度",
|
|
325
|
+
modalHeight: "弹窗高度",
|
|
326
|
+
isSticky: "置顶图层",
|
|
327
|
+
isSticky_hint: "开启后该图层在弹窗页面中将固定显示(不随下方标签切换)"
|
|
328
|
+
},
|
|
329
|
+
tab: {
|
|
330
|
+
properties: "属性",
|
|
331
|
+
data: "数据",
|
|
332
|
+
events: "事件"
|
|
333
|
+
},
|
|
334
|
+
save_component: "保存组件",
|
|
335
|
+
component_config_save_failed_no_selection: "保存组件配置失败:未选择组件",
|
|
336
|
+
component_config_save_failed_no_id: "保存组件配置失败:组件ID缺失",
|
|
337
|
+
component_config_save_failed_no_layer: "保存组件配置失败:未选择图层",
|
|
338
|
+
component_config_save_failed_no_layer_id: "保存组件配置失败:图层ID缺失",
|
|
339
|
+
component_config_saved: "组件配置已保存",
|
|
340
|
+
page: {
|
|
341
|
+
property: "页面属性"
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
// 页签样式
|
|
345
|
+
tab_style: "页签样式",
|
|
346
|
+
// 模式切换
|
|
347
|
+
mode: {
|
|
348
|
+
dashboard: "显示板",
|
|
349
|
+
material: "素材库"
|
|
350
|
+
},
|
|
351
|
+
// Pro配置
|
|
352
|
+
proConfig: {
|
|
353
|
+
title: "Pro 配置生成器",
|
|
354
|
+
subtitle: "可视化编辑 Pro 显示板菜单配置",
|
|
355
|
+
preview_json: "预览 JSON",
|
|
356
|
+
import_json: "导入 JSON",
|
|
357
|
+
export_json: "导出 JSON",
|
|
358
|
+
edit_title: "编辑标题",
|
|
359
|
+
app_title: "应用标题",
|
|
360
|
+
title_placeholder: "输入标题",
|
|
361
|
+
edit_menu: "编辑菜单",
|
|
362
|
+
display_list: "显示板列表",
|
|
363
|
+
display_menu: "显示板菜单",
|
|
364
|
+
tab_nav: "标签导航栏",
|
|
365
|
+
click_edit: "点击编辑",
|
|
366
|
+
no_menu_items: "暂无菜单项",
|
|
367
|
+
object_count: "共 {count} 个对象",
|
|
368
|
+
add_object: "添加菜单",
|
|
369
|
+
no_objects: "暂无对象,点击上方按钮添加",
|
|
370
|
+
edit_object: "编辑对象",
|
|
371
|
+
object_id: "对象 ID",
|
|
372
|
+
object_id_placeholder: "例如: factory_1",
|
|
373
|
+
object_name: "对象名称",
|
|
374
|
+
object_name_placeholder: "例如: 对象-1",
|
|
375
|
+
sub_menu: "子菜单",
|
|
376
|
+
display_count: "{count} 个显示板",
|
|
377
|
+
added_display_count: "已添加 {count} 个显示板",
|
|
378
|
+
add_display: "添加子菜单",
|
|
379
|
+
no_displays: "暂无显示板,点击上方按钮添加",
|
|
380
|
+
edit_display: "编辑显示板",
|
|
381
|
+
display_id: "显示板 ID",
|
|
382
|
+
display_id_placeholder: "例如: device_compressor",
|
|
383
|
+
display_name: "显示板名称",
|
|
384
|
+
display_name_placeholder: "例如: 压缩机显示板",
|
|
385
|
+
display_alias: "显示板别名",
|
|
386
|
+
display_alias_placeholder: "例如: PRO1767689525188",
|
|
387
|
+
display_type: "显示板类型",
|
|
388
|
+
display_type_placeholder: "请选择显示板类型",
|
|
389
|
+
delete_object_confirm: "确定要删除这个对象吗?",
|
|
390
|
+
delete_display_confirm: "确定要删除这个显示板吗?",
|
|
391
|
+
fill_complete_info: "请填写完整信息",
|
|
392
|
+
json_exported: "JSON 已导出",
|
|
393
|
+
json_import_success: "JSON 导入成功",
|
|
394
|
+
json_format_error: "JSON 格式不正确",
|
|
395
|
+
json_parse_error: "JSON 解析失败:{error}",
|
|
396
|
+
copy_to_clipboard: "复制到剪贴板",
|
|
397
|
+
copied_to_clipboard: "已复制到剪贴板",
|
|
398
|
+
copy_failed: "复制失败",
|
|
399
|
+
config_preview: "配置预览",
|
|
400
|
+
title_updated: "标题已更新",
|
|
401
|
+
title_empty: "标题不能为空",
|
|
402
|
+
menu_updated: "菜单已更新",
|
|
403
|
+
save_success: "保存成功",
|
|
404
|
+
delete_success: "删除成功",
|
|
405
|
+
default_title: "系统标题",
|
|
406
|
+
file_management: "文件管理",
|
|
407
|
+
click_to_edit: "点击对应位置进行编辑",
|
|
408
|
+
new_config: "新建配置",
|
|
409
|
+
input_config_name: "请输入配置名称",
|
|
410
|
+
config_name_limit: "配置名称长度为 1-50 个字符",
|
|
411
|
+
create_success: "创建成功",
|
|
412
|
+
cannot_delete_default: "不能删除默认配置",
|
|
413
|
+
delete_config_confirm: "确定要删除这个配置吗?"
|
|
414
|
+
},
|
|
415
|
+
material: {
|
|
416
|
+
title: "素材库",
|
|
417
|
+
system_materials: "系统素材",
|
|
418
|
+
my_materials: "我的素材",
|
|
419
|
+
upload: "上传",
|
|
420
|
+
new_folder: "新建文件夹",
|
|
421
|
+
search_placeholder: "搜索素材...",
|
|
422
|
+
usage_record: "素材使用记录",
|
|
423
|
+
select_material: "选择素材",
|
|
424
|
+
no_materials: "暂无素材",
|
|
425
|
+
delete_confirm: "确定删除该素材吗?",
|
|
426
|
+
delete_folder_confirm: "确定删除该文件夹吗?删除后文件夹内的素材也将被删除。",
|
|
427
|
+
upload_success: "上传成功",
|
|
428
|
+
upload_failed: "上传失败",
|
|
429
|
+
load_failed: "加载失败",
|
|
430
|
+
create_folder_success: "文件夹创建成功",
|
|
431
|
+
create_folder_failed: "文件夹创建失败",
|
|
432
|
+
input_folder_name: "请输入文件夹名称",
|
|
433
|
+
folder_name_limit: "名称长度1-50个字符",
|
|
434
|
+
grid_view: "网格视图",
|
|
435
|
+
list_view: "列表视图",
|
|
436
|
+
drag_upload: "将文件拖到此处,或",
|
|
437
|
+
click_upload: "点击上传",
|
|
438
|
+
upload_tip: "支持图片、视频等格式,单个文件不超过10MB",
|
|
439
|
+
start_upload: "开始上传",
|
|
440
|
+
file_too_large: "文件大小不能超过10MB",
|
|
441
|
+
select_file: "请选择要上传的文件",
|
|
442
|
+
upload_success_count: "成功上传 {count} 个文件",
|
|
443
|
+
upload_fail_count: "{count} 个文件上传失败",
|
|
444
|
+
search_material_name: "搜索素材名称",
|
|
445
|
+
dashboard_name: "显示板名称",
|
|
446
|
+
component_type: "组件类型",
|
|
447
|
+
use_time: "使用时间",
|
|
448
|
+
no_usage_record: "暂无使用记录",
|
|
449
|
+
// 系统素材分类
|
|
450
|
+
category: {
|
|
451
|
+
icon: "图标",
|
|
452
|
+
background: "背景",
|
|
453
|
+
image: "图片",
|
|
454
|
+
video: "视频",
|
|
455
|
+
other: "其他"
|
|
456
|
+
},
|
|
457
|
+
properties: {
|
|
458
|
+
title: "属性",
|
|
459
|
+
name: "名称",
|
|
460
|
+
size: "大小",
|
|
461
|
+
type: "类型",
|
|
462
|
+
modified: "修改时间",
|
|
463
|
+
file_count: "文件数量",
|
|
464
|
+
description: "描述",
|
|
465
|
+
tags: "标签",
|
|
466
|
+
alias: "别名",
|
|
467
|
+
path: "路径",
|
|
468
|
+
created: "创建时间"
|
|
469
|
+
},
|
|
470
|
+
type: {
|
|
471
|
+
image: "图片",
|
|
472
|
+
video: "视频",
|
|
473
|
+
document: "文档",
|
|
474
|
+
other: "其他",
|
|
475
|
+
folder: "文件夹"
|
|
476
|
+
},
|
|
477
|
+
detail_title: "素材详情",
|
|
478
|
+
view_detail: "查看详情",
|
|
479
|
+
rename_folder: "重命名文件夹",
|
|
480
|
+
delete_folder: "删除文件夹",
|
|
481
|
+
new_subfolder: "新建子文件夹",
|
|
482
|
+
folder_name_empty: "文件夹名称不能为空",
|
|
483
|
+
select_file_tip: "请选择素材",
|
|
484
|
+
select_file_properties: "请选择素材查看属性"
|
|
485
|
+
}
|
|
486
|
+
}, E = {
|
|
487
|
+
block_name: "Dashboard Design",
|
|
488
|
+
work_bench: "Workbench",
|
|
489
|
+
dashboard: "Dashboard",
|
|
490
|
+
component_library: "Components",
|
|
491
|
+
component_library_tip: "Please select a dashboard to edit first",
|
|
492
|
+
component_library_desc: "Select a dashboard from the Dashboard page and double-click to enter the editor",
|
|
493
|
+
go_to_dashboard: "Go to Dashboard",
|
|
494
|
+
material_library: "Materials",
|
|
495
|
+
pro_config: "Application",
|
|
496
|
+
search_placeholder: "Please enter keywords to search",
|
|
497
|
+
edit: {
|
|
498
|
+
text: "Edit",
|
|
499
|
+
left: {
|
|
500
|
+
library: "Component Library",
|
|
501
|
+
expand_panel: "Expand Component Panel",
|
|
502
|
+
collapse_panel: "Collapse Component Panel",
|
|
503
|
+
all_components: "All Components",
|
|
504
|
+
common_components: "Common Components",
|
|
505
|
+
object_management: "Object Management",
|
|
506
|
+
statistics_management: "Statistics Management",
|
|
507
|
+
history_management: "History Management",
|
|
508
|
+
maintenance_management: "Maintenance Management",
|
|
509
|
+
offline_data: "Offline Data",
|
|
510
|
+
index_management: "Index Management",
|
|
511
|
+
deviation_management: "Deviation Management",
|
|
512
|
+
stability_management: "Stability Management",
|
|
513
|
+
balance_management: "Balance Management",
|
|
514
|
+
increment_management: "Increment Management",
|
|
515
|
+
risk_management: "Risk Management",
|
|
516
|
+
simple_mode: "Simple Mode",
|
|
517
|
+
simple_mode_interaction: "Interaction",
|
|
518
|
+
simple_mode_chart: "Charts",
|
|
519
|
+
simple_mode_system: "System",
|
|
520
|
+
simple_mode_ui: "UI Components",
|
|
521
|
+
simple_mode_slope: "Slope Analysis"
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
delete: "Delete",
|
|
525
|
+
category: "Category",
|
|
526
|
+
name: "Name",
|
|
527
|
+
confirm: "Confirm",
|
|
528
|
+
cancel: "Cancel",
|
|
529
|
+
close: "Close",
|
|
530
|
+
save: "Save",
|
|
531
|
+
import: "Import",
|
|
532
|
+
preview: "Preview",
|
|
533
|
+
download: "Download",
|
|
534
|
+
setting: "Settings",
|
|
535
|
+
view_script: "View Script",
|
|
536
|
+
search: "Search",
|
|
537
|
+
reset: "Reset",
|
|
538
|
+
noData: "No data",
|
|
539
|
+
sheet: "Sheet",
|
|
540
|
+
alias: "Alias",
|
|
541
|
+
chart: "Chart",
|
|
542
|
+
attribute: "Attribute",
|
|
543
|
+
bg: "Background",
|
|
544
|
+
click_upload: "Click to Upload",
|
|
545
|
+
script_info: "Script Info",
|
|
546
|
+
copy: "Copy",
|
|
547
|
+
placeholder: {
|
|
548
|
+
input: "Please enter content",
|
|
549
|
+
input_16: "Please enter content (up to 16 Chinese characters)",
|
|
550
|
+
select: "Please select",
|
|
551
|
+
input_fill: "Please enter fill value",
|
|
552
|
+
input_mark: "Please enter marker value",
|
|
553
|
+
select_type: "Please select type",
|
|
554
|
+
select_type_first: "Please select type first",
|
|
555
|
+
select_project_first: "Please select project first",
|
|
556
|
+
input_obj_id: "Please enter object ID",
|
|
557
|
+
input_obj_alias: "Please enter object alias",
|
|
558
|
+
select_field: "Please select field",
|
|
559
|
+
select_condition: "Please select condition value",
|
|
560
|
+
select_date: "Select date and time",
|
|
561
|
+
input_critical: "Please enter critical value",
|
|
562
|
+
import_number: "Please enter a number",
|
|
563
|
+
select_date_format: "Please select time format"
|
|
564
|
+
},
|
|
565
|
+
yes: "Yes",
|
|
566
|
+
no: "No",
|
|
567
|
+
object: "Object",
|
|
568
|
+
project: "Project",
|
|
569
|
+
col: "Col",
|
|
570
|
+
row: "Row",
|
|
571
|
+
status: "Status",
|
|
572
|
+
equal: "Equal",
|
|
573
|
+
NaturalTime: "Natural Time",
|
|
574
|
+
RunTime: "Runtime",
|
|
575
|
+
id: "ID",
|
|
576
|
+
address: "Location",
|
|
577
|
+
width: "Width",
|
|
578
|
+
height: "Height",
|
|
579
|
+
background: "Background",
|
|
580
|
+
resolution: {
|
|
581
|
+
name: "Resolution",
|
|
582
|
+
width: "Resolution-Width",
|
|
583
|
+
height: "Resolution-Height"
|
|
584
|
+
},
|
|
585
|
+
default: "Default",
|
|
586
|
+
month: "Month",
|
|
587
|
+
day: "Day",
|
|
588
|
+
null: "None",
|
|
589
|
+
average: "Average",
|
|
590
|
+
customize: "Customize",
|
|
591
|
+
add: "Add",
|
|
592
|
+
total: "Totality",
|
|
593
|
+
success: "Success",
|
|
594
|
+
ace_error: "Script syntax error",
|
|
595
|
+
bar: "Bar Chart",
|
|
596
|
+
list: "List",
|
|
597
|
+
favorite: "Favorite",
|
|
598
|
+
recycle: "Recycle Bin",
|
|
599
|
+
logout: "Logout",
|
|
600
|
+
help: "Help",
|
|
601
|
+
account_info: "Account Info",
|
|
602
|
+
version_info: "Version Info",
|
|
603
|
+
current_version: "Current Version: ",
|
|
604
|
+
description: "Description",
|
|
605
|
+
warnning: "This computer program is protected by copyright law and international conventions. Unauthorized copying or distribution of this program, in whole or in part, will result in severe civil and criminal penalties. Known violators will be prosecuted to the fullest extent of the law.",
|
|
606
|
+
pro: {
|
|
607
|
+
title: "PRO Display Board",
|
|
608
|
+
info: "For device monitoring interface data display"
|
|
609
|
+
},
|
|
610
|
+
app: {
|
|
611
|
+
title: "APP Display Board",
|
|
612
|
+
info: "For mobile interface data display"
|
|
613
|
+
},
|
|
614
|
+
show: {
|
|
615
|
+
title: "Large Screen Display Board",
|
|
616
|
+
info: "For visualization interface data display"
|
|
617
|
+
},
|
|
618
|
+
pc: {
|
|
619
|
+
title: "PC Display Board",
|
|
620
|
+
info: "For PC interface data display"
|
|
621
|
+
},
|
|
622
|
+
pad: {
|
|
623
|
+
title: "PAD Display Board",
|
|
624
|
+
info: "For tablet interface data display"
|
|
625
|
+
},
|
|
626
|
+
user: {
|
|
627
|
+
id: "User ID",
|
|
628
|
+
name: "Login Name",
|
|
629
|
+
nickname: "Nickname",
|
|
630
|
+
email: "Email",
|
|
631
|
+
roles: "Tags",
|
|
632
|
+
image: "Avatar",
|
|
633
|
+
mobile: "Mobile",
|
|
634
|
+
company: "Organization",
|
|
635
|
+
login_name: "Login Name",
|
|
636
|
+
password: "Password",
|
|
637
|
+
owned_role: "Role",
|
|
638
|
+
role: "Role",
|
|
639
|
+
create_time: "Create Time"
|
|
640
|
+
},
|
|
641
|
+
layer: {
|
|
642
|
+
name: "Layer",
|
|
643
|
+
default_name: "Layer",
|
|
644
|
+
default_layer_name: "Layer 1",
|
|
645
|
+
search_placeholder: "Search",
|
|
646
|
+
add: "Add",
|
|
647
|
+
delete: "Delete",
|
|
648
|
+
count: "",
|
|
649
|
+
// ✅ 英文不需要量词
|
|
650
|
+
copy: "Copy",
|
|
651
|
+
icon: "L",
|
|
652
|
+
hide: "Hide",
|
|
653
|
+
show: "Show",
|
|
654
|
+
lock: "Lock",
|
|
655
|
+
unlock: "Unlock",
|
|
656
|
+
opacity: "Opacity",
|
|
657
|
+
drawer: {
|
|
658
|
+
title: "Layers",
|
|
659
|
+
collapse_panel: "Collapse",
|
|
660
|
+
expand_panel: "Expand"
|
|
661
|
+
}
|
|
662
|
+
},
|
|
663
|
+
right: {
|
|
664
|
+
layer: {
|
|
665
|
+
property: "Layer Properties",
|
|
666
|
+
caption: "Layer Title",
|
|
667
|
+
caption_placeholder: "Please enter layer title",
|
|
668
|
+
alias: "Layer Alias",
|
|
669
|
+
alias_placeholder: "Please enter layer alias",
|
|
670
|
+
alias_hint: "Start with letter, can contain letters, numbers, underscores",
|
|
671
|
+
id: "Layer ID",
|
|
672
|
+
name: "Layer Name",
|
|
673
|
+
name_placeholder: "Please enter layer name",
|
|
674
|
+
visible: "Visibility",
|
|
675
|
+
locked: "Locked",
|
|
676
|
+
opacity: "Opacity",
|
|
677
|
+
count: "Element Count",
|
|
678
|
+
component_unit: "components",
|
|
679
|
+
isModal: "Modal Layer",
|
|
680
|
+
isModal_hint: "When enabled, this layer will be displayed as a modal and can be triggered by other components",
|
|
681
|
+
modalWidth: "Modal Width",
|
|
682
|
+
modalHeight: "Modal Height",
|
|
683
|
+
isSticky: "Sticky Layer",
|
|
684
|
+
isSticky_hint: "When enabled, this layer will be pinned in the modal page (does not change with the tabs below)"
|
|
685
|
+
},
|
|
686
|
+
tab: {
|
|
687
|
+
properties: "Properties",
|
|
688
|
+
data: "Data",
|
|
689
|
+
events: "Events"
|
|
690
|
+
},
|
|
691
|
+
save_component: "Save Component",
|
|
692
|
+
component_config_save_failed_no_selection: "Failed to save component configuration: No component selected",
|
|
693
|
+
component_config_save_failed_no_id: "Failed to save component configuration: Component ID missing",
|
|
694
|
+
component_config_save_failed_no_layer: "Failed to save component configuration: No layer selected",
|
|
695
|
+
component_config_save_failed_no_layer_id: "Failed to save component configuration: Layer ID missing",
|
|
696
|
+
component_config_saved: "Component configuration saved"
|
|
697
|
+
},
|
|
698
|
+
add_pro: "Add PRO Display Board",
|
|
699
|
+
add_show: "Add Large Screen Display Board",
|
|
700
|
+
add_app: "Add APP Display Board",
|
|
701
|
+
add_pad: "Add PAD Display Board",
|
|
702
|
+
add_pc: "Add Display Board",
|
|
703
|
+
add_dashboard: "Add Display Board",
|
|
704
|
+
new_category: "New Category",
|
|
705
|
+
title: {
|
|
706
|
+
show: "Large Screen Display Board",
|
|
707
|
+
pro: "PRO Display Board",
|
|
708
|
+
app: "APP Display Board",
|
|
709
|
+
pad: "PAD Display Board",
|
|
710
|
+
pc: "PC Display Board",
|
|
711
|
+
mine: "My Recent",
|
|
712
|
+
collect: "My Favorites"
|
|
713
|
+
},
|
|
714
|
+
exit_create: "Exit Creation",
|
|
715
|
+
no_data: "No data",
|
|
716
|
+
recent: "My Recent",
|
|
717
|
+
next_step: "Next Step",
|
|
718
|
+
tag: "Dashboard Tag",
|
|
719
|
+
dashboard_name: "Dashboard Name",
|
|
720
|
+
type: "Dashboard Type",
|
|
721
|
+
show_name: "Large Screen Name",
|
|
722
|
+
show_alias: "Large Screen Alias",
|
|
723
|
+
task_cover_dashboard: "Dashboard Cover",
|
|
724
|
+
recommend_size: "Recommended Size",
|
|
725
|
+
auto_cover: "Auto Capture Cover",
|
|
726
|
+
copy_success: "Copy Success",
|
|
727
|
+
delete_tip: "Are you sure to delete this dashboard?",
|
|
728
|
+
delete_title: "Delete Prompt",
|
|
729
|
+
rename: "Rename",
|
|
730
|
+
name_empty_tip: "Please enter a name",
|
|
731
|
+
search_result: "Search Results",
|
|
732
|
+
sheet_empty_tip: "At least one sheet must be retained!",
|
|
733
|
+
delete_page_confirm: "Are you sure to delete the current page?",
|
|
734
|
+
delete_page_title: "Confirm",
|
|
735
|
+
close_page_confirm: "Please confirm if the page has been saved before closing?",
|
|
736
|
+
close_page_title: "Confirm",
|
|
737
|
+
unsaved_changes_confirm: "You have unsaved changes. Do you want to save?",
|
|
738
|
+
unsaved_changes_switch: "You have unsaved changes. Do you want to save?",
|
|
739
|
+
save_and_close: "Save & Close",
|
|
740
|
+
save_and_switch: "Save & Switch",
|
|
741
|
+
discard_close: "Discard",
|
|
742
|
+
discard_switch: "Discard",
|
|
743
|
+
saved: "Saved",
|
|
744
|
+
new_sheet: "New Sheet",
|
|
745
|
+
defaultBg1: "Built-in Background 1",
|
|
746
|
+
defaultBg2: "Built-in Background 2",
|
|
747
|
+
undefined: "Undefined",
|
|
748
|
+
// Operation messages
|
|
749
|
+
messages: {
|
|
750
|
+
save_success: "Save successful",
|
|
751
|
+
save_failed: "Save failed",
|
|
752
|
+
delete_success: "Delete successful",
|
|
753
|
+
delete_failed: "Delete failed",
|
|
754
|
+
copy_script_success: "Copy successful",
|
|
755
|
+
copy_script_failed: "Copy failed",
|
|
756
|
+
favorite_success: "Favorite successful",
|
|
757
|
+
unfavorite_success: "Unfavorite successful",
|
|
758
|
+
operation_failed: "Operation failed",
|
|
759
|
+
get_data_failed: "Failed to get data",
|
|
760
|
+
get_favorite_failed: "Failed to get favorites",
|
|
761
|
+
no_config_data: "No configuration data for this dashboard",
|
|
762
|
+
script_parse_failed: "Script parse failed",
|
|
763
|
+
unknown_error: "Unknown error",
|
|
764
|
+
layer_locked: "Current layer is locked, cannot add component",
|
|
765
|
+
no_active_layer: "No active layer found, cannot add component",
|
|
766
|
+
layer_name_update_not_implemented: "Layer name update feature not yet implemented",
|
|
767
|
+
upload_failed: "Upload failed",
|
|
768
|
+
unnamed_dashboard: "Unnamed Dashboard",
|
|
769
|
+
config_parse_failed: "Dashboard configuration parse failed",
|
|
770
|
+
unnamed: "Unnamed",
|
|
771
|
+
// Name validation messages
|
|
772
|
+
name_required: "Name is required",
|
|
773
|
+
name_too_long: "Name cannot exceed 32 characters",
|
|
774
|
+
name_invalid_format: "Name must start with a letter and contain only letters, numbers, and underscores",
|
|
775
|
+
name_not_unique: "Name already exists, please use a different name"
|
|
776
|
+
},
|
|
777
|
+
// Dropdown menu items
|
|
778
|
+
dropdown: {
|
|
779
|
+
copy_script: "Copy Script",
|
|
780
|
+
view_script: "View Script",
|
|
781
|
+
view_script_title: "View Script"
|
|
782
|
+
},
|
|
783
|
+
// Prompt titles
|
|
784
|
+
prompt: {
|
|
785
|
+
tip: "Tip",
|
|
786
|
+
warning: "Warning",
|
|
787
|
+
error: "Error",
|
|
788
|
+
confirm: "Confirm"
|
|
789
|
+
},
|
|
790
|
+
// Mode switch
|
|
791
|
+
mode: {
|
|
792
|
+
dashboard: "Dashboard",
|
|
793
|
+
material: "Materials"
|
|
794
|
+
},
|
|
795
|
+
// Pro Config
|
|
796
|
+
proConfig: {
|
|
797
|
+
title: "Pro Config Generator",
|
|
798
|
+
subtitle: "Visual editor for Pro display board menu configuration",
|
|
799
|
+
preview_json: "Preview JSON",
|
|
800
|
+
import_json: "Import JSON",
|
|
801
|
+
export_json: "Export JSON",
|
|
802
|
+
edit_title: "Edit Title",
|
|
803
|
+
app_title: "Application Title",
|
|
804
|
+
title_placeholder: "Enter title",
|
|
805
|
+
edit_menu: "Edit Menu",
|
|
806
|
+
display_list: "Display List",
|
|
807
|
+
display_menu: "Display Menu",
|
|
808
|
+
tab_nav: "Tab Navigation",
|
|
809
|
+
click_edit: "Click to Edit",
|
|
810
|
+
no_menu_items: "No menu items",
|
|
811
|
+
object_count: "{count} objects in total",
|
|
812
|
+
add_object: "Add Menu",
|
|
813
|
+
no_objects: "No objects, click the button above to add",
|
|
814
|
+
edit_object: "Edit Object",
|
|
815
|
+
object_id: "Object ID",
|
|
816
|
+
object_id_placeholder: "e.g.: factory_1",
|
|
817
|
+
object_name: "Object Name",
|
|
818
|
+
object_name_placeholder: "e.g.: Object-1",
|
|
819
|
+
sub_menu: "Sub Menu",
|
|
820
|
+
display_count: "{count} displays",
|
|
821
|
+
added_display_count: "{count} displays added",
|
|
822
|
+
add_display: "Add Submenu",
|
|
823
|
+
no_displays: "No displays, click the button above to add",
|
|
824
|
+
edit_display: "Edit Display",
|
|
825
|
+
display_id: "Display ID",
|
|
826
|
+
display_id_placeholder: "e.g.: device_compressor",
|
|
827
|
+
display_name: "Display Name",
|
|
828
|
+
display_name_placeholder: "e.g.: Compressor Display",
|
|
829
|
+
display_alias: "Display Alias",
|
|
830
|
+
display_alias_placeholder: "e.g.: PRO1767689525188",
|
|
831
|
+
display_type: "Display Type",
|
|
832
|
+
display_type_placeholder: "Please select display type",
|
|
833
|
+
delete_object_confirm: "Are you sure to delete this object?",
|
|
834
|
+
delete_display_confirm: "Are you sure to delete this display?",
|
|
835
|
+
fill_complete_info: "Please fill in complete information",
|
|
836
|
+
json_exported: "JSON exported",
|
|
837
|
+
json_import_success: "JSON imported successfully",
|
|
838
|
+
json_format_error: "JSON format is incorrect",
|
|
839
|
+
json_parse_error: "JSON parse failed: {error}",
|
|
840
|
+
copy_to_clipboard: "Copy to Clipboard",
|
|
841
|
+
copied_to_clipboard: "Copied to clipboard",
|
|
842
|
+
copy_failed: "Copy failed",
|
|
843
|
+
config_preview: "Config Preview",
|
|
844
|
+
title_updated: "Title updated",
|
|
845
|
+
title_empty: "Title cannot be empty",
|
|
846
|
+
menu_updated: "Menu updated",
|
|
847
|
+
save_success: "Save successful",
|
|
848
|
+
delete_success: "Delete successful",
|
|
849
|
+
default_title: "System Title",
|
|
850
|
+
file_management: "File Management",
|
|
851
|
+
click_to_edit: "Click left or middle area to edit",
|
|
852
|
+
new_config: "New Config",
|
|
853
|
+
input_config_name: "Please enter config name",
|
|
854
|
+
config_name_limit: "Config name length should be 1-50 characters",
|
|
855
|
+
create_success: "Create successful",
|
|
856
|
+
cannot_delete_default: "Cannot delete default config",
|
|
857
|
+
delete_config_confirm: "Are you sure to delete this config?"
|
|
858
|
+
},
|
|
859
|
+
// Material Library
|
|
860
|
+
material: {
|
|
861
|
+
title: "Materials",
|
|
862
|
+
system_materials: "System Materials",
|
|
863
|
+
my_materials: "My Materials",
|
|
864
|
+
upload: "Upload",
|
|
865
|
+
new_folder: "New Folder",
|
|
866
|
+
search_placeholder: "Search materials...",
|
|
867
|
+
usage_record: "Usage Record",
|
|
868
|
+
select_material: "Select Material",
|
|
869
|
+
no_materials: "No materials",
|
|
870
|
+
delete_confirm: "Are you sure to delete this material?",
|
|
871
|
+
delete_folder_confirm: "Are you sure to delete this folder? Materials inside will also be deleted.",
|
|
872
|
+
upload_success: "Upload successful",
|
|
873
|
+
upload_failed: "Upload failed",
|
|
874
|
+
load_failed: "Load failed",
|
|
875
|
+
create_folder_success: "Folder created successfully",
|
|
876
|
+
create_folder_failed: "Failed to create folder",
|
|
877
|
+
input_folder_name: "Please enter folder name",
|
|
878
|
+
folder_name_limit: "Name length 1-50 characters",
|
|
879
|
+
grid_view: "Grid View",
|
|
880
|
+
list_view: "List View",
|
|
881
|
+
drag_upload: "Drag files here, or",
|
|
882
|
+
click_upload: "click to upload",
|
|
883
|
+
upload_tip: "Supports images, videos, etc. Max 10MB per file",
|
|
884
|
+
start_upload: "Start Upload",
|
|
885
|
+
file_too_large: "File size cannot exceed 10MB",
|
|
886
|
+
select_file: "Please select files to upload",
|
|
887
|
+
upload_success_count: "Successfully uploaded {count} files",
|
|
888
|
+
upload_fail_count: "{count} files failed to upload",
|
|
889
|
+
search_material_name: "Search material name",
|
|
890
|
+
dashboard_name: "Dashboard Name",
|
|
891
|
+
component_type: "Component Type",
|
|
892
|
+
use_time: "Use Time",
|
|
893
|
+
no_usage_record: "No usage records",
|
|
894
|
+
// System material categories
|
|
895
|
+
category: {
|
|
896
|
+
icon: "Icons",
|
|
897
|
+
background: "Backgrounds",
|
|
898
|
+
image: "Images",
|
|
899
|
+
video: "Videos",
|
|
900
|
+
other: "Other"
|
|
901
|
+
},
|
|
902
|
+
properties: {
|
|
903
|
+
title: "Properties",
|
|
904
|
+
name: "Name",
|
|
905
|
+
size: "Size",
|
|
906
|
+
type: "Type",
|
|
907
|
+
modified: "Modified",
|
|
908
|
+
file_count: "File Count",
|
|
909
|
+
description: "Description",
|
|
910
|
+
tags: "Tags",
|
|
911
|
+
alias: "Alias",
|
|
912
|
+
path: "Path",
|
|
913
|
+
created: "Created"
|
|
914
|
+
},
|
|
915
|
+
type: {
|
|
916
|
+
image: "Image",
|
|
917
|
+
video: "Video",
|
|
918
|
+
document: "Document",
|
|
919
|
+
other: "Other",
|
|
920
|
+
folder: "Folder"
|
|
921
|
+
},
|
|
922
|
+
detail_title: "Material Details",
|
|
923
|
+
view_detail: "View Details",
|
|
924
|
+
rename_folder: "Rename Folder",
|
|
925
|
+
delete_folder: "Delete Folder",
|
|
926
|
+
new_subfolder: "New Subfolder",
|
|
927
|
+
folder_name_empty: "Folder name cannot be empty",
|
|
928
|
+
select_file_tip: "Please select a material",
|
|
929
|
+
select_file_properties: "Please select a material to view properties"
|
|
930
|
+
}
|
|
931
|
+
};
|
|
932
|
+
function S(a) {
|
|
933
|
+
const t = (localStorage.getItem("lang") || "cn") === "en" ? E : x, i = a.split(".");
|
|
934
|
+
let s = t;
|
|
935
|
+
for (const n of i)
|
|
936
|
+
s = s == null ? void 0 : s[n];
|
|
937
|
+
return s || a;
|
|
938
|
+
}
|
|
939
|
+
class u {
|
|
940
|
+
/**
|
|
941
|
+
* 创建一个新的图层实例
|
|
942
|
+
* @param options - 图层配置选项
|
|
943
|
+
*/
|
|
944
|
+
constructor(e = {}) {
|
|
945
|
+
var t;
|
|
946
|
+
this.id = e.id || T("layer"), this.name = e.name || this.id, this.caption = e.caption || S("layer.default_layer_name"), this.visible = e.visible !== void 0 ? e.visible : !0, this.opacity = e.opacity !== void 0 ? e.opacity : 100, this.order = e.order !== void 0 ? e.order : 0, this.locked = e.locked !== void 0 ? e.locked : !1, this.components = e.components ? [...e.components] : [], this.isModal = e.isModal, this.modalWidth = e.modalWidth, this.modalHeight = e.modalHeight, this.isSticky = (t = e.isSticky) != null ? t : !1;
|
|
947
|
+
}
|
|
948
|
+
/**
|
|
949
|
+
* 切换图层可见性
|
|
950
|
+
* @param visible 图层是否可见
|
|
951
|
+
*/
|
|
952
|
+
toggleVisibility(e) {
|
|
953
|
+
this.visible = e;
|
|
954
|
+
}
|
|
955
|
+
/**
|
|
956
|
+
* 锁定图层
|
|
957
|
+
*/
|
|
958
|
+
lock() {
|
|
959
|
+
this.locked = !0;
|
|
960
|
+
}
|
|
961
|
+
/**
|
|
962
|
+
* 解锁图层
|
|
963
|
+
*/
|
|
964
|
+
unlock() {
|
|
965
|
+
this.locked = !1;
|
|
966
|
+
}
|
|
967
|
+
/**
|
|
968
|
+
* 设置图层透明度
|
|
969
|
+
* @param opacity 透明度值 (0-100)
|
|
970
|
+
*/
|
|
971
|
+
setOpacity(e) {
|
|
972
|
+
this.opacity = e;
|
|
973
|
+
}
|
|
974
|
+
/**
|
|
975
|
+
* 根据组件ID删除组件
|
|
976
|
+
* @param componentId 要删除的组件ID
|
|
977
|
+
* @returns 删除是否成功
|
|
978
|
+
*/
|
|
979
|
+
deleteComponentById(e) {
|
|
980
|
+
if (this.locked) return !1;
|
|
981
|
+
const t = this.components.findIndex((i) => (i == null ? void 0 : i.id) === e);
|
|
982
|
+
return t !== -1 ? (this.components.splice(t, 1), !0) : !1;
|
|
983
|
+
}
|
|
984
|
+
/**
|
|
985
|
+
* 根据组件ID获取组件
|
|
986
|
+
* @param componentId 组件ID
|
|
987
|
+
* @returns 对应的组件实例或undefined
|
|
988
|
+
*/
|
|
989
|
+
getComponentById(e) {
|
|
990
|
+
return this.components.find((t) => (t == null ? void 0 : t.id) === e);
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
class w {
|
|
994
|
+
/**
|
|
995
|
+
* 创建一个新的工作表实例
|
|
996
|
+
* @param options - 工作表配置选项
|
|
997
|
+
*/
|
|
998
|
+
constructor(e = {}) {
|
|
999
|
+
var t;
|
|
1000
|
+
if (this.id = e.id || T("sheet"), this.name = e.name || this.id, this.caption = e.caption || S("new_sheet") || S("common.new_sheet"), this.hideInPreviewTabs = (t = e.hideInPreviewTabs) != null ? t : !1, this.col = e.col !== void 0 ? e.col : 20, this.screenWidth = e.screenWidth !== void 0 ? e.screenWidth : 1920, this.screenHeight = e.screenHeight !== void 0 ? e.screenHeight : 1080, this.theme = e.theme, this.background = e.background, this.activeLayerId = e.activeLayerId || "", this.tabStyle = e.tabStyle, e.layers ? this.layers = e.layers.filter((i) => i instanceof u) : this.layers = [], !this.layers.length) {
|
|
1001
|
+
const i = new u({ order: 0 });
|
|
1002
|
+
this.layers = [i], this.activeLayerId = i.id;
|
|
1003
|
+
}
|
|
1004
|
+
this.reorderLayers();
|
|
1005
|
+
}
|
|
1006
|
+
/**
|
|
1007
|
+
* 添加一个新的图层到工作表中
|
|
1008
|
+
* @param layerOptions 图层选项
|
|
1009
|
+
* @returns 新创建图层的ID
|
|
1010
|
+
*/
|
|
1011
|
+
addLayer(e = {}) {
|
|
1012
|
+
const t = new u(v(h({}, e), {
|
|
1013
|
+
order: e.order !== void 0 ? e.order : this.layers.length
|
|
1014
|
+
}));
|
|
1015
|
+
return this.layers.push(t), this.reorderLayers(), t.id;
|
|
1016
|
+
}
|
|
1017
|
+
/**
|
|
1018
|
+
* 根据ID删除指定图层
|
|
1019
|
+
* @param layerId 要删除的图层ID
|
|
1020
|
+
*/
|
|
1021
|
+
deleteLayer(e) {
|
|
1022
|
+
var t;
|
|
1023
|
+
this.layers.length <= 1 || (this.layers = this.layers.filter((i) => i.id !== e), this.activeLayerId === e && (this.activeLayerId = (t = this.layers[0]) == null ? void 0 : t.id), this.reorderLayers());
|
|
1024
|
+
}
|
|
1025
|
+
/**
|
|
1026
|
+
* 设置当前激活图层
|
|
1027
|
+
* @param layerId 要设置为激活状态的图层ID
|
|
1028
|
+
*/
|
|
1029
|
+
setActiveLayer(e) {
|
|
1030
|
+
this.activeLayerId = e;
|
|
1031
|
+
}
|
|
1032
|
+
/**
|
|
1033
|
+
* 根据ID获取图层
|
|
1034
|
+
* @param layerId 图层ID
|
|
1035
|
+
* @returns 对应的图层实例或undefined
|
|
1036
|
+
*/
|
|
1037
|
+
getLayerById(e) {
|
|
1038
|
+
return this.layers.find((t) => t.id === e);
|
|
1039
|
+
}
|
|
1040
|
+
/**
|
|
1041
|
+
* 获取当前激活图层
|
|
1042
|
+
* @returns 当前激活的图层实例或undefined
|
|
1043
|
+
*/
|
|
1044
|
+
getActiveLayer() {
|
|
1045
|
+
return this.activeLayerId ? this.getLayerById(this.activeLayerId) : void 0;
|
|
1046
|
+
}
|
|
1047
|
+
/**
|
|
1048
|
+
* 移动图层位置
|
|
1049
|
+
* @param layerId 要移动的图层ID
|
|
1050
|
+
* @param direction 移动方向 ('up' 或 'down')
|
|
1051
|
+
*/
|
|
1052
|
+
moveLayer(e, t) {
|
|
1053
|
+
const i = this.layers.findIndex((s) => s.id === e);
|
|
1054
|
+
if (i !== -1) {
|
|
1055
|
+
if (t === "up" && i > 0) {
|
|
1056
|
+
const s = this.layers[i - 1];
|
|
1057
|
+
this.layers[i - 1] = this.layers[i], this.layers[i] = s;
|
|
1058
|
+
} else if (t === "down" && i < this.layers.length - 1) {
|
|
1059
|
+
const s = this.layers[i + 1];
|
|
1060
|
+
this.layers[i + 1] = this.layers[i], this.layers[i] = s;
|
|
1061
|
+
}
|
|
1062
|
+
this.reorderLayers();
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
/**
|
|
1066
|
+
* 重新排序图层,确保图层顺序连续
|
|
1067
|
+
*/
|
|
1068
|
+
reorderLayers() {
|
|
1069
|
+
const e = [...this.layers].sort((t, i) => {
|
|
1070
|
+
var s, n;
|
|
1071
|
+
return ((s = t.order) != null ? s : 0) - ((n = i.order) != null ? n : 0);
|
|
1072
|
+
});
|
|
1073
|
+
e.forEach((t, i) => {
|
|
1074
|
+
t.order = i;
|
|
1075
|
+
}), this.layers = e;
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
class p {
|
|
1079
|
+
constructor(e = {}) {
|
|
1080
|
+
const { name: t, id: i, type: s, version: n = "3.0.0", sheets: r = [], loading: l = !1, software: o, author: m, createdAt: f, updatedAt: y, tabStyle: d } = e;
|
|
1081
|
+
this.version = n, this.id = i || "", this.name = t || "", this.type = s || "", this.loading = l, this.software = o || "Mixlinker mixdesign", this.author = m || "", this.createdAt = f || (/* @__PURE__ */ new Date()).toISOString(), this.updatedAt = y || (/* @__PURE__ */ new Date()).toISOString();
|
|
1082
|
+
const L = {
|
|
1083
|
+
bgColor: "#f5f5f5",
|
|
1084
|
+
activeBgColor: "#ffffff",
|
|
1085
|
+
textColor: "#666666",
|
|
1086
|
+
activeTextColor: "#333333",
|
|
1087
|
+
fontSize: 14,
|
|
1088
|
+
height: 40,
|
|
1089
|
+
borderRadius: 0,
|
|
1090
|
+
autoHide: !1
|
|
1091
|
+
};
|
|
1092
|
+
this.tabStyle = h(h({}, L), d), this.sheets = (r || []).map((g) => g instanceof w ? g : p.deserializeSheet(g)), this.sheets.length === 0 && this.addSheet();
|
|
1093
|
+
}
|
|
1094
|
+
// ==================== Dashboard 方法 ====================
|
|
1095
|
+
/**
|
|
1096
|
+
* 修改属性值
|
|
1097
|
+
* @param name 属性名
|
|
1098
|
+
* @param value 属性值
|
|
1099
|
+
*/
|
|
1100
|
+
setAttribute(e, t) {
|
|
1101
|
+
this[e] = t;
|
|
1102
|
+
}
|
|
1103
|
+
/**
|
|
1104
|
+
* 获取属性值
|
|
1105
|
+
* @param name 属性名
|
|
1106
|
+
* @returns 属性值
|
|
1107
|
+
*/
|
|
1108
|
+
getAttribute(e) {
|
|
1109
|
+
return this[e];
|
|
1110
|
+
}
|
|
1111
|
+
/**
|
|
1112
|
+
* 添加一个新的Sheet到Dashboard中
|
|
1113
|
+
* @param sheetOptions Sheet选项
|
|
1114
|
+
* @returns 新创建的Sheet索引
|
|
1115
|
+
*/
|
|
1116
|
+
addSheet(e = {}) {
|
|
1117
|
+
const t = new w(e);
|
|
1118
|
+
return this.sheets.push(t), this.sheets.length - 1;
|
|
1119
|
+
}
|
|
1120
|
+
/**
|
|
1121
|
+
* 删除指定索引的Sheet
|
|
1122
|
+
* @param index Sheet索引
|
|
1123
|
+
*/
|
|
1124
|
+
deleteSheet(e) {
|
|
1125
|
+
if (this.sheets.length === 1) {
|
|
1126
|
+
console.warn("Cannot delete the last sheet.");
|
|
1127
|
+
return;
|
|
1128
|
+
}
|
|
1129
|
+
this.sheets.splice(e, 1);
|
|
1130
|
+
}
|
|
1131
|
+
init(e) {
|
|
1132
|
+
this.sheets = [], this.addSheet(e || {});
|
|
1133
|
+
}
|
|
1134
|
+
// ==================== Sheet 管理 ====================
|
|
1135
|
+
getSheet(e) {
|
|
1136
|
+
if (e >= 0 && e < this.sheets.length)
|
|
1137
|
+
return this.sheets[e];
|
|
1138
|
+
}
|
|
1139
|
+
getSheets() {
|
|
1140
|
+
return this.sheets;
|
|
1141
|
+
}
|
|
1142
|
+
/**
|
|
1143
|
+
* 更新指定图层中的组件配置
|
|
1144
|
+
* @param sheetIndex Sheet索引
|
|
1145
|
+
* @param layerId 图层ID
|
|
1146
|
+
* @param componentId 组件ID
|
|
1147
|
+
* @param componentConfig 新的组件配置
|
|
1148
|
+
* @returns 更新是否成功
|
|
1149
|
+
*/
|
|
1150
|
+
updateComponent(e, t, i, s) {
|
|
1151
|
+
const n = this.getSheet(e);
|
|
1152
|
+
if (!n)
|
|
1153
|
+
return console.error("Sheet not found:", e), !1;
|
|
1154
|
+
const r = n.getLayerById(t);
|
|
1155
|
+
if (!r)
|
|
1156
|
+
return console.error("Layer not found:", t), !1;
|
|
1157
|
+
const l = r.components.findIndex((d) => (d == null ? void 0 : d.id) === i);
|
|
1158
|
+
if (l === -1)
|
|
1159
|
+
return console.error("Component not found:", i), !1;
|
|
1160
|
+
const o = r.components[l], m = new Set(Object.keys(s)), f = Object.keys(o), y = /* @__PURE__ */ new Set(["id", "i", "x", "y", "w", "h", "type", "name", "caption"]);
|
|
1161
|
+
return (!s.modalBinding || s.modalBinding && !s.modalBinding.enabled) && o.modalBinding && delete o.modalBinding, f.forEach((d) => {
|
|
1162
|
+
!m.has(d) && !y.has(d) && d !== "modalBinding" && delete o[d];
|
|
1163
|
+
}), Object.assign(r.components[l], s), !0;
|
|
1164
|
+
}
|
|
1165
|
+
// ==================== 工具方法 ====================
|
|
1166
|
+
getStats() {
|
|
1167
|
+
const e = this.sheets.length;
|
|
1168
|
+
let t = 0, i = 0;
|
|
1169
|
+
return this.sheets.forEach((s) => {
|
|
1170
|
+
t += s.layers.length, s.layers.forEach((n) => {
|
|
1171
|
+
var r;
|
|
1172
|
+
i += ((r = n.components) == null ? void 0 : r.length) || 0;
|
|
1173
|
+
});
|
|
1174
|
+
}), { sheetCount: e, layerCount: t, componentCount: i };
|
|
1175
|
+
}
|
|
1176
|
+
// ==================== 序列化工具方法 ====================
|
|
1177
|
+
/**
|
|
1178
|
+
* 序列化 Layer 实例为 JSON 对象
|
|
1179
|
+
* @param layer Layer 实例
|
|
1180
|
+
* @returns JSON 对象
|
|
1181
|
+
*/
|
|
1182
|
+
static serializeLayer(e) {
|
|
1183
|
+
return {
|
|
1184
|
+
id: e.id,
|
|
1185
|
+
name: e.name,
|
|
1186
|
+
caption: e.caption,
|
|
1187
|
+
visible: e.visible,
|
|
1188
|
+
opacity: e.opacity,
|
|
1189
|
+
order: e.order,
|
|
1190
|
+
locked: e.locked,
|
|
1191
|
+
// 弹窗图层扩展字段
|
|
1192
|
+
isModal: e.isModal,
|
|
1193
|
+
modalWidth: e.modalWidth,
|
|
1194
|
+
modalHeight: e.modalHeight,
|
|
1195
|
+
components: e.components
|
|
1196
|
+
};
|
|
1197
|
+
}
|
|
1198
|
+
/**
|
|
1199
|
+
* 序列化 Sheet 实例为 JSON 对象
|
|
1200
|
+
* @param sheet Sheet 实例
|
|
1201
|
+
* @returns JSON 对象
|
|
1202
|
+
*/
|
|
1203
|
+
static serializeSheet(e) {
|
|
1204
|
+
return {
|
|
1205
|
+
id: e.id,
|
|
1206
|
+
name: e.name,
|
|
1207
|
+
caption: e.caption,
|
|
1208
|
+
hideInPreviewTabs: e.hideInPreviewTabs,
|
|
1209
|
+
col: e.col,
|
|
1210
|
+
screenWidth: e.screenWidth,
|
|
1211
|
+
screenHeight: e.screenHeight,
|
|
1212
|
+
theme: e.theme,
|
|
1213
|
+
layers: e.layers.map((t) => p.serializeLayer(t)),
|
|
1214
|
+
background: e.background,
|
|
1215
|
+
activeLayerId: e.activeLayerId,
|
|
1216
|
+
tabStyle: e.tabStyle
|
|
1217
|
+
};
|
|
1218
|
+
}
|
|
1219
|
+
/**
|
|
1220
|
+
* 从 JSON 对象反序列化 Layer 实例
|
|
1221
|
+
* @param obj JSON 对象
|
|
1222
|
+
* @returns Layer 实例
|
|
1223
|
+
*/
|
|
1224
|
+
static deserializeLayer(e) {
|
|
1225
|
+
const t = /^[a-zA-Z][a-zA-Z0-9_]*$/, i = e != null && e.name && t.test(e.name) ? e.name : void 0;
|
|
1226
|
+
return new u({
|
|
1227
|
+
id: e == null ? void 0 : e.id,
|
|
1228
|
+
name: i,
|
|
1229
|
+
caption: e == null ? void 0 : e.caption,
|
|
1230
|
+
visible: e == null ? void 0 : e.visible,
|
|
1231
|
+
opacity: e == null ? void 0 : e.opacity,
|
|
1232
|
+
order: e == null ? void 0 : e.order,
|
|
1233
|
+
locked: e == null ? void 0 : e.locked,
|
|
1234
|
+
// 弹窗图层扩展字段
|
|
1235
|
+
isModal: e == null ? void 0 : e.isModal,
|
|
1236
|
+
modalWidth: e == null ? void 0 : e.modalWidth,
|
|
1237
|
+
modalHeight: e == null ? void 0 : e.modalHeight,
|
|
1238
|
+
components: (e == null ? void 0 : e.components) || []
|
|
1239
|
+
});
|
|
1240
|
+
}
|
|
1241
|
+
/**
|
|
1242
|
+
* 从 JSON 对象反序列化 Sheet 实例
|
|
1243
|
+
* @param obj JSON 对象
|
|
1244
|
+
* @returns Sheet 实例
|
|
1245
|
+
*/
|
|
1246
|
+
static deserializeSheet(e) {
|
|
1247
|
+
const t = /^[a-zA-Z][a-zA-Z0-9_]*$/, i = e != null && e.name && t.test(e.name) ? e.name : void 0, s = new w({
|
|
1248
|
+
id: e == null ? void 0 : e.id,
|
|
1249
|
+
name: i,
|
|
1250
|
+
caption: e == null ? void 0 : e.caption,
|
|
1251
|
+
hideInPreviewTabs: e == null ? void 0 : e.hideInPreviewTabs,
|
|
1252
|
+
col: e == null ? void 0 : e.col,
|
|
1253
|
+
screenWidth: e == null ? void 0 : e.screenWidth,
|
|
1254
|
+
screenHeight: e == null ? void 0 : e.screenHeight,
|
|
1255
|
+
theme: e == null ? void 0 : e.theme,
|
|
1256
|
+
background: e == null ? void 0 : e.background,
|
|
1257
|
+
activeLayerId: e == null ? void 0 : e.activeLayerId,
|
|
1258
|
+
tabStyle: e == null ? void 0 : e.tabStyle
|
|
1259
|
+
});
|
|
1260
|
+
return s.layers = ((e == null ? void 0 : e.layers) || []).map((n) => p.deserializeLayer(n)), s;
|
|
1261
|
+
}
|
|
1262
|
+
/**
|
|
1263
|
+
* (序列化) 将Dashboard实例转换为JSON对象
|
|
1264
|
+
* 统一管理所有层级的序列化逻辑
|
|
1265
|
+
*/
|
|
1266
|
+
toJSON() {
|
|
1267
|
+
return {
|
|
1268
|
+
dashboard: [{
|
|
1269
|
+
name: this.name,
|
|
1270
|
+
id: this.id,
|
|
1271
|
+
type: this.type,
|
|
1272
|
+
version: this.version,
|
|
1273
|
+
loading: this.loading,
|
|
1274
|
+
sheets: this.sheets.map((t) => p.serializeSheet(t)),
|
|
1275
|
+
currentPage: 0,
|
|
1276
|
+
// 默认当前页面为0,可以通过参数传入
|
|
1277
|
+
// 元数据字段
|
|
1278
|
+
software: this.software,
|
|
1279
|
+
author: this.author,
|
|
1280
|
+
createdAt: this.createdAt,
|
|
1281
|
+
updatedAt: this.updatedAt,
|
|
1282
|
+
// 页签样式
|
|
1283
|
+
tabStyle: this.tabStyle
|
|
1284
|
+
}]
|
|
1285
|
+
};
|
|
1286
|
+
}
|
|
1287
|
+
/**
|
|
1288
|
+
* (反序列化) 从JSON对象创建Dashboard实例
|
|
1289
|
+
* 统一管理所有层级的反序列化逻辑
|
|
1290
|
+
* @param obj 包含Dashboard数据的纯对象
|
|
1291
|
+
* @returns Dashboard 的新实例
|
|
1292
|
+
*/
|
|
1293
|
+
static fromObject(e) {
|
|
1294
|
+
var n, r;
|
|
1295
|
+
let t = e;
|
|
1296
|
+
e != null && e.dashboard && Array.isArray(e.dashboard) && e.dashboard.length > 0 && (t = e.dashboard[0]);
|
|
1297
|
+
let i = t == null ? void 0 : t.tabStyle;
|
|
1298
|
+
!i && ((r = (n = t == null ? void 0 : t.sheets) == null ? void 0 : n[0]) != null && r.tabStyle) && (i = t.sheets[0].tabStyle);
|
|
1299
|
+
const s = new p({
|
|
1300
|
+
name: t == null ? void 0 : t.name,
|
|
1301
|
+
id: t == null ? void 0 : t.id,
|
|
1302
|
+
type: t == null ? void 0 : t.type,
|
|
1303
|
+
version: t == null ? void 0 : t.version,
|
|
1304
|
+
loading: t == null ? void 0 : t.loading,
|
|
1305
|
+
// 元数据字段
|
|
1306
|
+
software: t == null ? void 0 : t.software,
|
|
1307
|
+
author: t == null ? void 0 : t.author,
|
|
1308
|
+
createdAt: t == null ? void 0 : t.createdAt,
|
|
1309
|
+
updatedAt: t == null ? void 0 : t.updatedAt,
|
|
1310
|
+
// 页签样式
|
|
1311
|
+
tabStyle: i
|
|
1312
|
+
});
|
|
1313
|
+
return s.sheets = ((t == null ? void 0 : t.sheets) || []).map((l) => p.deserializeSheet(l)), s;
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
const R = () => {
|
|
1317
|
+
try {
|
|
1318
|
+
const a = sessionStorage.getItem("mixdesign-tabs");
|
|
1319
|
+
if (a) {
|
|
1320
|
+
const e = JSON.parse(a);
|
|
1321
|
+
return {
|
|
1322
|
+
tabs: e.tabs || [],
|
|
1323
|
+
activeTabId: e.activeTabId || ""
|
|
1324
|
+
};
|
|
1325
|
+
}
|
|
1326
|
+
} catch (a) {
|
|
1327
|
+
console.error("Failed to load persisted tabs state:", a);
|
|
1328
|
+
}
|
|
1329
|
+
return {
|
|
1330
|
+
tabs: [],
|
|
1331
|
+
activeTabId: ""
|
|
1332
|
+
};
|
|
1333
|
+
}, _ = (a, e) => {
|
|
1334
|
+
try {
|
|
1335
|
+
sessionStorage.setItem("mixdesign-tabs", JSON.stringify({ tabs: a, activeTabId: e }));
|
|
1336
|
+
} catch (t) {
|
|
1337
|
+
console.error("Failed to save tabs state:", t);
|
|
1338
|
+
}
|
|
1339
|
+
}, I = D("tabsStore", {
|
|
1340
|
+
state: () => {
|
|
1341
|
+
const a = R();
|
|
1342
|
+
return {
|
|
1343
|
+
tabs: a.tabs,
|
|
1344
|
+
activeTabId: a.activeTabId,
|
|
1345
|
+
// 关闭前的回调函数(由编辑页面注册)
|
|
1346
|
+
beforeCloseCallback: null,
|
|
1347
|
+
// 切换前的回调函数(由编辑页面注册)
|
|
1348
|
+
beforeSwitchCallback: null
|
|
1349
|
+
};
|
|
1350
|
+
},
|
|
1351
|
+
getters: {
|
|
1352
|
+
// 获取当前激活的标签
|
|
1353
|
+
activeTab: (a) => a.tabs.find((e) => e.id === a.activeTabId),
|
|
1354
|
+
// 是否有打开的标签
|
|
1355
|
+
hasTabs: (a) => a.tabs.length > 0
|
|
1356
|
+
},
|
|
1357
|
+
actions: {
|
|
1358
|
+
// 添加标签页
|
|
1359
|
+
addTab(a) {
|
|
1360
|
+
this.tabs.find((t) => t.id === a.id) ? console.log("[DEBUG] addTab 标签已存在", { id: a.id, name: a.name }) : (console.log("[DEBUG] addTab 添加新标签", { id: a.id, name: a.name }), this.tabs.push(v(h({}, a), { closable: !0, isDirty: !1 }))), this.activeTabId = a.id, _(this.tabs, this.activeTabId);
|
|
1361
|
+
},
|
|
1362
|
+
// 注册关闭前回调
|
|
1363
|
+
registerBeforeClose(a) {
|
|
1364
|
+
this.beforeCloseCallback = a;
|
|
1365
|
+
},
|
|
1366
|
+
// 注销关闭前回调
|
|
1367
|
+
unregisterBeforeClose() {
|
|
1368
|
+
this.beforeCloseCallback = null;
|
|
1369
|
+
},
|
|
1370
|
+
// 注册切换前回调
|
|
1371
|
+
registerBeforeSwitch(a) {
|
|
1372
|
+
this.beforeSwitchCallback = a;
|
|
1373
|
+
},
|
|
1374
|
+
// 注销切换前回调
|
|
1375
|
+
unregisterBeforeSwitch() {
|
|
1376
|
+
this.beforeSwitchCallback = null;
|
|
1377
|
+
},
|
|
1378
|
+
// 请求关闭标签页(会触发保存检测)
|
|
1379
|
+
requestCloseTab(a) {
|
|
1380
|
+
return b(this, null, function* () {
|
|
1381
|
+
return this.beforeCloseCallback && this.activeTabId === a && !(yield this.beforeCloseCallback(a)) ? null : this.closeTab(a);
|
|
1382
|
+
});
|
|
1383
|
+
},
|
|
1384
|
+
// 关闭标签页(直接关闭,不检测)
|
|
1385
|
+
closeTab(a) {
|
|
1386
|
+
const e = this.tabs.findIndex((t) => t.id === a);
|
|
1387
|
+
if (e === -1) return null;
|
|
1388
|
+
if (this.tabs.splice(e, 1), this.activeTabId === a)
|
|
1389
|
+
if (this.tabs.length > 0) {
|
|
1390
|
+
const t = Math.min(e, this.tabs.length - 1);
|
|
1391
|
+
return this.activeTabId = this.tabs[t].id, _(this.tabs, this.activeTabId), this.activeTabId;
|
|
1392
|
+
} else
|
|
1393
|
+
return this.activeTabId = "", _(this.tabs, this.activeTabId), "home";
|
|
1394
|
+
return _(this.tabs, this.activeTabId), null;
|
|
1395
|
+
},
|
|
1396
|
+
// 请求切换标签页(会触发保存检测)
|
|
1397
|
+
requestSwitchTab(a) {
|
|
1398
|
+
return b(this, null, function* () {
|
|
1399
|
+
return this.activeTabId === a ? !0 : this.beforeSwitchCallback && this.activeTabId && this.isTabDirty(this.activeTabId) && !(yield this.beforeSwitchCallback(this.activeTabId)) ? !1 : (this.setActiveTab(a), !0);
|
|
1400
|
+
});
|
|
1401
|
+
},
|
|
1402
|
+
// 设置激活标签
|
|
1403
|
+
setActiveTab(a) {
|
|
1404
|
+
var e;
|
|
1405
|
+
this.tabs.find((t) => t.id === a) && (console.log("[DEBUG] setActiveTab", {
|
|
1406
|
+
tabId: a,
|
|
1407
|
+
previousActiveTabId: this.activeTabId,
|
|
1408
|
+
isDirty: (e = this.tabs.find((t) => t.id === a)) == null ? void 0 : e.isDirty
|
|
1409
|
+
}), this.activeTabId = a, _(this.tabs, this.activeTabId));
|
|
1410
|
+
},
|
|
1411
|
+
// 关闭所有标签
|
|
1412
|
+
closeAllTabs() {
|
|
1413
|
+
this.tabs = [], this.activeTabId = "", _(this.tabs, this.activeTabId);
|
|
1414
|
+
},
|
|
1415
|
+
// 关闭其他标签
|
|
1416
|
+
closeOtherTabs(a) {
|
|
1417
|
+
this.tabs = this.tabs.filter((e) => e.id === a), this.activeTabId = a, _(this.tabs, this.activeTabId);
|
|
1418
|
+
},
|
|
1419
|
+
// 更新标签名称
|
|
1420
|
+
updateTabName(a, e) {
|
|
1421
|
+
const t = this.tabs.find((i) => i.id === a);
|
|
1422
|
+
t && (t.name = e, _(this.tabs, this.activeTabId));
|
|
1423
|
+
},
|
|
1424
|
+
// 标记标签页为脏(有未保存的修改)
|
|
1425
|
+
markTabDirty(a) {
|
|
1426
|
+
var t;
|
|
1427
|
+
const e = this.tabs.find((i) => i.id === a);
|
|
1428
|
+
e && (console.log("[DEBUG] markTabDirty 被调用", {
|
|
1429
|
+
tabId: a,
|
|
1430
|
+
tabName: e.name,
|
|
1431
|
+
wasDirty: e.isDirty,
|
|
1432
|
+
stack: (t = new Error().stack) == null ? void 0 : t.split(`
|
|
1433
|
+
`).slice(0, 5).join(`
|
|
1434
|
+
`)
|
|
1435
|
+
}), e.isDirty = !0, _(this.tabs, this.activeTabId));
|
|
1436
|
+
},
|
|
1437
|
+
// 标记标签页为干净(已保存)
|
|
1438
|
+
markTabClean(a) {
|
|
1439
|
+
const e = this.tabs.find((t) => t.id === a);
|
|
1440
|
+
e && (console.log("[DEBUG] markTabClean 被调用", {
|
|
1441
|
+
tabId: a,
|
|
1442
|
+
tabName: e.name,
|
|
1443
|
+
wasDirty: e.isDirty
|
|
1444
|
+
}), e.isDirty = !1, _(this.tabs, this.activeTabId));
|
|
1445
|
+
},
|
|
1446
|
+
// 检查标签页是否脏
|
|
1447
|
+
isTabDirty(a) {
|
|
1448
|
+
var t;
|
|
1449
|
+
const e = this.tabs.find((i) => i.id === a);
|
|
1450
|
+
return (t = e == null ? void 0 : e.isDirty) != null ? t : !1;
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
}), P = new p({
|
|
1454
|
+
id: Date.now().toString().slice(5),
|
|
1455
|
+
name: "测试显示板",
|
|
1456
|
+
loading: !1
|
|
1457
|
+
});
|
|
1458
|
+
P.init();
|
|
1459
|
+
const c = () => {
|
|
1460
|
+
const a = I();
|
|
1461
|
+
a.activeTabId && (console.log("[DEBUG] markActiveTabDirty 被调用", {
|
|
1462
|
+
tabId: a.activeTabId,
|
|
1463
|
+
stack: new Error().stack
|
|
1464
|
+
}), a.markTabDirty(a.activeTabId));
|
|
1465
|
+
}, V = D("counterStore", {
|
|
1466
|
+
state: () => ({
|
|
1467
|
+
currentComponent: "",
|
|
1468
|
+
pageData: P,
|
|
1469
|
+
currentPage: 0,
|
|
1470
|
+
theme: "light",
|
|
1471
|
+
// 明确指定主题状态的类型
|
|
1472
|
+
isDirty: !1,
|
|
1473
|
+
// 脏标记:追踪是否有未保存的修改(已废弃,保留兼容)
|
|
1474
|
+
clipboard: null,
|
|
1475
|
+
// 组件剪贴板
|
|
1476
|
+
// 组件联动:当前激活的对象ID
|
|
1477
|
+
activeObjectId: null,
|
|
1478
|
+
session: {
|
|
1479
|
+
token: null,
|
|
1480
|
+
userInfo: null,
|
|
1481
|
+
isConnected: !1,
|
|
1482
|
+
expiresAt: null
|
|
1483
|
+
},
|
|
1484
|
+
// 组件实例注册表,用于配置驱动架构
|
|
1485
|
+
componentInstances: /* @__PURE__ */ new Map()
|
|
1486
|
+
}),
|
|
1487
|
+
actions: {
|
|
1488
|
+
updateCurrentComponent(a) {
|
|
1489
|
+
this.currentComponent = a;
|
|
1490
|
+
},
|
|
1491
|
+
updatePageData(a, e = !0) {
|
|
1492
|
+
var t;
|
|
1493
|
+
if (console.log("[DEBUG] updatePageData 被调用", {
|
|
1494
|
+
markDirty: e,
|
|
1495
|
+
hasSheets: !!(a != null && a.sheets),
|
|
1496
|
+
stack: (t = new Error().stack) == null ? void 0 : t.split(`
|
|
1497
|
+
`).slice(0, 5).join(`
|
|
1498
|
+
`)
|
|
1499
|
+
// 只显示前5行堆栈
|
|
1500
|
+
}), !!a) {
|
|
1501
|
+
if (a.sheets && Array.isArray(a.sheets)) {
|
|
1502
|
+
try {
|
|
1503
|
+
const i = p.fromObject(h(h({}, this.pageData), a));
|
|
1504
|
+
this.pageData.sheets = i.sheets;
|
|
1505
|
+
} catch (i) {
|
|
1506
|
+
this.pageData.sheets = a.sheets;
|
|
1507
|
+
}
|
|
1508
|
+
delete a.sheets;
|
|
1509
|
+
}
|
|
1510
|
+
Object.assign(this.pageData, a), e ? (console.log("[DEBUG] updatePageData 触发 markActiveTabDirty"), c()) : console.log("[DEBUG] updatePageData 跳过 markActiveTabDirty");
|
|
1511
|
+
}
|
|
1512
|
+
},
|
|
1513
|
+
updateCurrentPage(a) {
|
|
1514
|
+
this.currentPage = a;
|
|
1515
|
+
},
|
|
1516
|
+
changeLoading(a) {
|
|
1517
|
+
this.pageData && (this.pageData.loading = a);
|
|
1518
|
+
},
|
|
1519
|
+
// 设置激活图层
|
|
1520
|
+
setActiveLayer(a, e) {
|
|
1521
|
+
const t = this.pageData.getSheet(a);
|
|
1522
|
+
t && t.setActiveLayer(e);
|
|
1523
|
+
},
|
|
1524
|
+
// 切换图层可见性
|
|
1525
|
+
toggleLayerVisibility(a, e, t) {
|
|
1526
|
+
const i = this.pageData.getSheet(a);
|
|
1527
|
+
if (i) {
|
|
1528
|
+
const s = i.getLayerById(e);
|
|
1529
|
+
s && (s.visible = t, c());
|
|
1530
|
+
}
|
|
1531
|
+
},
|
|
1532
|
+
// 切换图层锁定状态
|
|
1533
|
+
toggleLayerLock(a, e, t) {
|
|
1534
|
+
const i = this.pageData.getSheet(a);
|
|
1535
|
+
if (i) {
|
|
1536
|
+
const s = i.getLayerById(e);
|
|
1537
|
+
s && (s.locked = t, c());
|
|
1538
|
+
}
|
|
1539
|
+
},
|
|
1540
|
+
// 设置图层透明度
|
|
1541
|
+
setLayerOpacity(a, e, t) {
|
|
1542
|
+
const i = this.pageData.getSheet(a);
|
|
1543
|
+
if (i) {
|
|
1544
|
+
const s = i.getLayerById(e);
|
|
1545
|
+
s && (s.opacity = t, c());
|
|
1546
|
+
}
|
|
1547
|
+
},
|
|
1548
|
+
// 设置图层顺序
|
|
1549
|
+
setLayerOrder(a, e, t) {
|
|
1550
|
+
const i = this.pageData.getSheet(a);
|
|
1551
|
+
if (i) {
|
|
1552
|
+
const s = i.getLayerById(e);
|
|
1553
|
+
s && (s.order = t, i.reorderLayers(), c());
|
|
1554
|
+
}
|
|
1555
|
+
},
|
|
1556
|
+
// 重新排列图层顺序
|
|
1557
|
+
reorderLayers(a) {
|
|
1558
|
+
const e = this.pageData.getSheet(a);
|
|
1559
|
+
e && (e.reorderLayers(), c());
|
|
1560
|
+
},
|
|
1561
|
+
// 移动图层顺序
|
|
1562
|
+
moveLayer(a, e, t) {
|
|
1563
|
+
const i = this.pageData.getSheet(a);
|
|
1564
|
+
i && (i.moveLayer(e, t), c());
|
|
1565
|
+
},
|
|
1566
|
+
// 添加组件到当前激活图层
|
|
1567
|
+
addComponent(a, e) {
|
|
1568
|
+
const t = this.pageData.getSheet(a);
|
|
1569
|
+
if (t) {
|
|
1570
|
+
const i = t.getActiveLayer();
|
|
1571
|
+
if (i) {
|
|
1572
|
+
const s = e;
|
|
1573
|
+
return i.components.push(s), c(), s;
|
|
1574
|
+
}
|
|
1575
|
+
}
|
|
1576
|
+
return null;
|
|
1577
|
+
},
|
|
1578
|
+
// 删除组件
|
|
1579
|
+
deleteComponent(a, e) {
|
|
1580
|
+
const t = this.pageData.getSheet(a);
|
|
1581
|
+
if (t) {
|
|
1582
|
+
const i = t.layers.find((s) => s.components.some((n) => n.id === e));
|
|
1583
|
+
if (i) {
|
|
1584
|
+
const s = i.deleteComponentById(e);
|
|
1585
|
+
return s && c(), s;
|
|
1586
|
+
}
|
|
1587
|
+
}
|
|
1588
|
+
return !1;
|
|
1589
|
+
},
|
|
1590
|
+
// 添加图层
|
|
1591
|
+
addLayer(a, e) {
|
|
1592
|
+
const t = this.pageData.getSheet(a);
|
|
1593
|
+
t && (t.addLayer({ caption: e }), c());
|
|
1594
|
+
},
|
|
1595
|
+
// 删除图层
|
|
1596
|
+
deleteLayer(a, e) {
|
|
1597
|
+
const t = this.pageData.getSheet(a);
|
|
1598
|
+
t && (t.deleteLayer(e), c());
|
|
1599
|
+
},
|
|
1600
|
+
// 标记为已保存(清除脏标记)- 已废弃,使用 tabsStore.markTabClean
|
|
1601
|
+
markClean() {
|
|
1602
|
+
const a = I();
|
|
1603
|
+
a.activeTabId && a.markTabClean(a.activeTabId);
|
|
1604
|
+
},
|
|
1605
|
+
// 标记为有修改 - 已废弃,使用 tabsStore.markTabDirty
|
|
1606
|
+
markDirty() {
|
|
1607
|
+
c();
|
|
1608
|
+
},
|
|
1609
|
+
// 切换主题
|
|
1610
|
+
toggleTheme() {
|
|
1611
|
+
this.theme = this.theme === "light" ? "dark" : "light", this.setTheme(this.theme);
|
|
1612
|
+
},
|
|
1613
|
+
// 设置主题
|
|
1614
|
+
setTheme(a) {
|
|
1615
|
+
this.theme = a;
|
|
1616
|
+
const e = document.documentElement;
|
|
1617
|
+
a === "dark" ? (e.setAttribute("data-theme", "dark"), e.classList.add("dark")) : (e.setAttribute("data-theme", "light"), e.classList.remove("dark")), localStorage.setItem("theme", a);
|
|
1618
|
+
},
|
|
1619
|
+
// 注册组件实例(用于配置驱动架构)
|
|
1620
|
+
registerInstance(a, e) {
|
|
1621
|
+
this.componentInstances.set(a, e);
|
|
1622
|
+
},
|
|
1623
|
+
// 注销组件实例
|
|
1624
|
+
unregisterInstance(a) {
|
|
1625
|
+
this.componentInstances.delete(a);
|
|
1626
|
+
},
|
|
1627
|
+
// 获取当前激活的组件实例
|
|
1628
|
+
getActiveComponentInstance() {
|
|
1629
|
+
return this.componentInstances.get(this.currentComponent);
|
|
1630
|
+
},
|
|
1631
|
+
// ==================== 组件复制/粘贴功能 ====================
|
|
1632
|
+
// 复制组件到剪贴板
|
|
1633
|
+
copyComponent(a) {
|
|
1634
|
+
if (!a) return !1;
|
|
1635
|
+
const e = JSON.parse(JSON.stringify(a));
|
|
1636
|
+
return e.id ? (this.clipboard = e, console.log("[copyComponent] 组件已复制到剪贴板:", {
|
|
1637
|
+
id: e.id,
|
|
1638
|
+
type: e.type,
|
|
1639
|
+
hasSocketData: e.hasOwnProperty("socketData")
|
|
1640
|
+
}), !0) : (console.error("[copyComponent] 组件缺少 id 字段"), !1);
|
|
1641
|
+
},
|
|
1642
|
+
// 粘贴组件到指定页面的激活图层
|
|
1643
|
+
pasteComponent(a, e) {
|
|
1644
|
+
if (!this.clipboard) return null;
|
|
1645
|
+
const t = a != null ? a : this.currentPage, i = this.pageData.getSheet(t);
|
|
1646
|
+
if (!i) return null;
|
|
1647
|
+
const s = i.getActiveLayer();
|
|
1648
|
+
if (!s || s.locked) return null;
|
|
1649
|
+
const n = JSON.parse(JSON.stringify(this.clipboard)), r = Date.now(), l = Math.random().toString(36).substring(2, 9), o = s.components.length;
|
|
1650
|
+
return n.id = `${r.toString(36)}_${l}_${o}`, n.name = n.id, n.i = n.id, n.hasOwnProperty("socketData") || (n.socketData = null), e ? (n.x = e.x, n.y = e.y) : n.x !== void 0 && n.y !== void 0 && (n.x = n.x + 1, n.y = n.y + 1), s.components.push(n), c(), n;
|
|
1651
|
+
},
|
|
1652
|
+
// 检查剪贴板是否有内容
|
|
1653
|
+
hasClipboard() {
|
|
1654
|
+
return this.clipboard !== null;
|
|
1655
|
+
},
|
|
1656
|
+
// 清空剪贴板
|
|
1657
|
+
clearClipboard() {
|
|
1658
|
+
this.clipboard = null;
|
|
1659
|
+
},
|
|
1660
|
+
// ==================== 组件联动功能 ====================
|
|
1661
|
+
// 设置当前激活的对象ID(用于组件间联动)
|
|
1662
|
+
setActiveObject(a) {
|
|
1663
|
+
this.activeObjectId = a;
|
|
1664
|
+
},
|
|
1665
|
+
// 清除激活的对象ID
|
|
1666
|
+
clearActiveObject() {
|
|
1667
|
+
this.activeObjectId = null;
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
});
|
|
1671
|
+
export {
|
|
1672
|
+
V as u
|
|
1673
|
+
};
|