1
BIN
.gitnexus/lbug
Normal file
BIN
.gitnexus/lbug.wal
Normal file
2
.playwright-mcp/console-2026-05-06T07-44-00-548Z.log
Normal file
@ -0,0 +1,2 @@
|
||||
[ 722ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=1239b0ae:20102
|
||||
[ 1188ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:5174/favicon.ico:0
|
||||
1
.playwright-mcp/console-2026-05-06T07-46-21-696Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 399ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=1239b0ae:20102
|
||||
1
.playwright-mcp/console-2026-05-06T08-00-09-135Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 404ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=1239b0ae:20102
|
||||
1
.playwright-mcp/console-2026-05-06T08-00-42-023Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 380ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=1239b0ae:20102
|
||||
45
.playwright-mcp/console-2026-05-06T08-01-09-375Z.log
Normal file
@ -0,0 +1,45 @@
|
||||
[ 385ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=1239b0ae:20102
|
||||
[ 339731ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:5174/src/App.tsx?t=1778054808761:0
|
||||
[ 339731ms] [ERROR] [vite] Failed to reload /src/App.tsx. This could be due to syntax errors or importing non-existent modules. (see errors above) @ http://localhost:5174/@vite/client:808
|
||||
[ 379590ms] [ERROR] AG Charts - required modules are not registered. Check if you have registered the modules:
|
||||
|
||||
import {
|
||||
ModuleRegistry,
|
||||
AnnotationsModule,
|
||||
ZoomModule,
|
||||
CrosshairModule,
|
||||
} from 'ag-charts-enterprise';
|
||||
|
||||
ModuleRegistry.registerModules([
|
||||
AnnotationsModule,
|
||||
ZoomModule,
|
||||
CrosshairModule,
|
||||
]);
|
||||
|
||||
See https://www.ag-grid.com/charts/r/module-registry/ for more details. @ http://localhost:5174/node_modules/.vite/deps/chunk-ZFDKNY4I.js?v=1239b0ae:840
|
||||
[ 379781ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 379885ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 379886ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 379886ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 379886ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 379886ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 379886ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 379886ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 379922ms] [ERROR] AG Charts - required modules are not registered. Check if you have registered the modules:
|
||||
|
||||
import {
|
||||
ModuleRegistry,
|
||||
AnnotationsModule,
|
||||
ZoomModule,
|
||||
CrosshairModule,
|
||||
} from 'ag-charts-enterprise';
|
||||
|
||||
ModuleRegistry.registerModules([
|
||||
AnnotationsModule,
|
||||
ZoomModule,
|
||||
CrosshairModule,
|
||||
]);
|
||||
|
||||
See https://www.ag-grid.com/charts/r/module-registry/ for more details. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:840
|
||||
[ 397787ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:5174/src/styles.css?t=1778054867152:0
|
||||
[ 397787ms] [ERROR] [vite] Failed to reload /src/styles.css. This could be due to syntax errors or importing non-existent modules. (see errors above) @ http://localhost:5174/@vite/client:808
|
||||
35
.playwright-mcp/console-2026-05-06T08-08-51-880Z.log
Normal file
@ -0,0 +1,35 @@
|
||||
[ 336ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 431ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 432ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 432ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 432ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 432ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 432ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 433ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 451ms] [ERROR] AG Charts - required modules are not registered. Check if you have registered the modules:
|
||||
|
||||
import {
|
||||
ModuleRegistry,
|
||||
AnnotationsModule,
|
||||
ZoomModule,
|
||||
CrosshairModule,
|
||||
} from 'ag-charts-enterprise';
|
||||
|
||||
ModuleRegistry.registerModules([
|
||||
AnnotationsModule,
|
||||
ZoomModule,
|
||||
CrosshairModule,
|
||||
]);
|
||||
|
||||
See https://www.ag-grid.com/charts/r/module-registry/ for more details. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:840
|
||||
[ 37129ms] [ERROR] AG Charts error TypeError: Cannot read properties of undefined (reading 'getSharedToolbar')
|
||||
at new AnnotationsToolbar (http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:11336:38)
|
||||
at new _Annotations2 (http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:12206:20)
|
||||
at Object.create (http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:13484:20)
|
||||
at _CartesianChart2.applyModules (http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:39443:39)
|
||||
at _CartesianChart2.applyOptions (http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:39210:33)
|
||||
at http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:46912:18
|
||||
at resultFn.group (http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:920:14)
|
||||
at http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:46911:14
|
||||
at http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:38587:15
|
||||
at Mutex.dispatchNext (http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:14055:15) @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:838
|
||||
8
.playwright-mcp/console-2026-05-06T08-09-45-382Z.log
Normal file
@ -0,0 +1,8 @@
|
||||
[ 346ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 424ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 425ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 425ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 425ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 425ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 425ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 425ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
8
.playwright-mcp/console-2026-05-06T08-12-06-617Z.log
Normal file
@ -0,0 +1,8 @@
|
||||
[ 427ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 504ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 504ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 505ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 505ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 505ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 505ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 505ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
65
.playwright-mcp/console-2026-05-06T08-13-34-788Z.log
Normal file
@ -0,0 +1,65 @@
|
||||
[ 79ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 163ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 163ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 163ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 163ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 163ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 163ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 164ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 239743ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 536067ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 636828ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 636895ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 636895ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 636895ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 636895ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 636896ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 636896ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 636896ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 636919ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 636971ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 662653ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 791507ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 791576ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 791576ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 791576ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 791576ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 791577ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 791577ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 791577ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 791601ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 791648ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 833852ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1021188ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 1021256ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1021257ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1021257ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1021257ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 1021257ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 1021257ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1021258ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1021287ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1021363ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1115872ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1147091ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 1147150ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1147150ms] [ERROR] *********************************************** AG Charts Enterprise License *********************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1147150ms] [ERROR] ************************************************** License Key Not Found *************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1147150ms] [ERROR] * All AG Charts Enterprise features are unlocked for trial. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 1147150ms] [ERROR] * If you want to hide the watermark please email info@ag-grid.com for a trial license key. * @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:923
|
||||
[ 1147150ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1147151ms] [ERROR] **************************************************************************************************************************** @ http://localhost:5174/node_modules/.vite/deps/ag-charts-enterprise.js?v=2852bbef:918
|
||||
[ 1147179ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1147247ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1221002ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1338641ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 1338737ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1338809ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1514622ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1529882ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 1529975ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 1530053ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 2003522ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 2025447ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[4].value` cannot be set to `"full-screen"`; expecting a keyword such as 'line-menu', 'fibonacci-menu', 'text-menu', 'shape-menu', 'measurer-menu', 'line', 'horizontal-line', 'vertical-line', 'parallel-channel', 'disjoint-channel', 'fibonacci-retracement', 'fibonacci-retracement-trend-based', 'text', 'comment', 'callout', 'note' or 'clear', ignoring. @ http://localhost:5174/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=2852bbef:834
|
||||
[ 2627035ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 2637890ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
1
.playwright-mcp/console-2026-05-06T08-58-22-818Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 83ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
1
.playwright-mcp/console-2026-05-06T09-00-01-203Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 83ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
1
.playwright-mcp/console-2026-05-06T09-02-11-168Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 100ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
1
.playwright-mcp/console-2026-05-06T09-04-17-262Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 76ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
1
.playwright-mcp/console-2026-05-06T09-07-52-977Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 403ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
1
.playwright-mcp/console-2026-05-06T09-33-30-229Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 415ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
1
.playwright-mcp/console-2026-05-06T09-41-14-792Z.log
Normal file
@ -0,0 +1 @@
|
||||
[ 440ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
2
.playwright-mcp/console-2026-05-06T09-43-03-667Z.log
Normal file
@ -0,0 +1,2 @@
|
||||
[ 113ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
[ 33760ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:5174/node_modules/.vite/deps/react-dom_client.js?v=2852bbef:20102
|
||||
43
.playwright-mcp/page-2026-05-06T07-44-01-739Z.yml
Normal file
@ -0,0 +1,43 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- complementary "图表工具" [ref=e4]:
|
||||
- button "选择" [ref=e5]
|
||||
- button "文本" [ref=e7]:
|
||||
- generic [ref=e8]: T
|
||||
- button "折线" [ref=e9]
|
||||
- button "列表" [ref=e11]
|
||||
- button "放大" [ref=e13]
|
||||
- button "删除" [ref=e15]
|
||||
- region "年度费用模板" [ref=e17]:
|
||||
- region "年度总费用图表" [ref=e18]:
|
||||
- generic [ref=e19]:
|
||||
- heading "年度总费用" [level=1] [ref=e20]
|
||||
- button "编辑标题" [ref=e21]
|
||||
- generic [ref=e24]:
|
||||
- figure "chart, 1 series":
|
||||
- generic [ref=e25]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- complementary "右侧预留区域" [ref=e26]
|
||||
49
.playwright-mcp/page-2026-05-06T07-46-04-911Z.yml
Normal file
@ -0,0 +1,49 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- complementary "图表工具" [ref=e4]:
|
||||
- button "选择" [ref=e5] [cursor=pointer]:
|
||||
- img [ref=e27]
|
||||
- button "文本" [ref=e7] [cursor=pointer]:
|
||||
- generic [ref=e31]: T
|
||||
- button "连线" [ref=e32] [cursor=pointer]:
|
||||
- img [ref=e33]
|
||||
- button "列表" [ref=e11] [cursor=pointer]:
|
||||
- img [ref=e37]
|
||||
- button "放大" [ref=e13] [cursor=pointer]:
|
||||
- img [ref=e42]
|
||||
- button "删除" [ref=e15] [cursor=pointer]:
|
||||
- img [ref=e45]
|
||||
- region "年度费用模板" [ref=e17]:
|
||||
- region "年度总费用图表" [ref=e18]:
|
||||
- generic [ref=e19]:
|
||||
- heading "年度总费用" [level=1] [ref=e20]
|
||||
- button "编辑标题" [ref=e21] [cursor=pointer]:
|
||||
- img [ref=e48]
|
||||
- generic [ref=e24]:
|
||||
- figure "chart, 1 series":
|
||||
- generic [ref=e25]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- complementary "右侧预留区域" [ref=e26]
|
||||
49
.playwright-mcp/page-2026-05-06T07-46-22-260Z.yml
Normal file
@ -0,0 +1,49 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- complementary "图表工具" [ref=e4]:
|
||||
- button "选择" [ref=e5] [cursor=pointer]:
|
||||
- img [ref=e6]
|
||||
- button "文本" [ref=e10] [cursor=pointer]:
|
||||
- generic [ref=e11]: T
|
||||
- button "连线" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- button "列表" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- button "放大" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- button "删除" [ref=e27] [cursor=pointer]:
|
||||
- img [ref=e28]
|
||||
- region "年度费用模板" [ref=e31]:
|
||||
- region "年度总费用图表" [ref=e32]:
|
||||
- generic [ref=e33]:
|
||||
- heading "年度总费用" [level=1] [ref=e34]
|
||||
- button "编辑标题" [ref=e35] [cursor=pointer]:
|
||||
- img [ref=e36]
|
||||
- generic [ref=e40]:
|
||||
- figure "chart, 1 series":
|
||||
- generic [ref=e41]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- complementary "右侧预留区域" [ref=e42]
|
||||
61
.playwright-mcp/page-2026-05-06T08-00-09-696Z.yml
Normal file
@ -0,0 +1,61 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- complementary "图表工具" [ref=e4]:
|
||||
- button "选择" [pressed] [ref=e5] [cursor=pointer]:
|
||||
- img [ref=e6]
|
||||
- button "文本" [ref=e10] [cursor=pointer]:
|
||||
- generic [ref=e11]: T
|
||||
- button "连线" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- button "列表" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- button "放大" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- button "删除" [ref=e27] [cursor=pointer]:
|
||||
- img [ref=e28]
|
||||
- region "年度费用模板" [ref=e31]:
|
||||
- region "年度总费用图表" [ref=e32]:
|
||||
- generic [ref=e33]:
|
||||
- heading "年度总费用" [level=1] [ref=e34]
|
||||
- button "编辑标题" [ref=e35] [cursor=pointer]:
|
||||
- img [ref=e36]
|
||||
- generic [ref=e39]:
|
||||
- generic [ref=e40]:
|
||||
- figure "chart, 1 series":
|
||||
- generic [ref=e41]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- generic "图表缩放工具" [ref=e42]:
|
||||
- button "缩小" [disabled] [ref=e43]:
|
||||
- img [ref=e44]
|
||||
- button "放大" [ref=e47] [cursor=pointer]:
|
||||
- img [ref=e48]
|
||||
- button "左移" [disabled] [ref=e51]:
|
||||
- img [ref=e52]
|
||||
- button "右移" [disabled] [ref=e54]:
|
||||
- img [ref=e55]
|
||||
- button "重置" [disabled] [ref=e57]:
|
||||
- img [ref=e58]
|
||||
- complementary "右侧预留区域" [ref=e61]
|
||||
61
.playwright-mcp/page-2026-05-06T08-00-42-548Z.yml
Normal file
@ -0,0 +1,61 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- complementary "图表工具" [ref=e4]:
|
||||
- button "选择" [pressed] [ref=e5] [cursor=pointer]:
|
||||
- img [ref=e6]
|
||||
- button "文本" [ref=e10] [cursor=pointer]:
|
||||
- generic [ref=e11]: T
|
||||
- button "连线" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- button "列表" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- button "放大" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- button "删除" [ref=e27] [cursor=pointer]:
|
||||
- img [ref=e28]
|
||||
- region "年度费用模板" [ref=e31]:
|
||||
- region "年度总费用图表" [ref=e32]:
|
||||
- generic [ref=e33]:
|
||||
- heading "年度总费用" [level=1] [ref=e34]
|
||||
- button "编辑标题" [ref=e35] [cursor=pointer]:
|
||||
- img [ref=e36]
|
||||
- generic [ref=e39]:
|
||||
- generic [ref=e40]:
|
||||
- figure "chart, 1 series":
|
||||
- generic [ref=e41]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- generic "图表缩放工具" [ref=e42]:
|
||||
- button "缩小" [disabled] [ref=e43]:
|
||||
- img [ref=e44]
|
||||
- button "放大" [ref=e47] [cursor=pointer]:
|
||||
- img [ref=e48]
|
||||
- button "左移" [disabled] [ref=e51]:
|
||||
- img [ref=e52]
|
||||
- button "右移" [disabled] [ref=e54]:
|
||||
- img [ref=e55]
|
||||
- button "重置" [disabled] [ref=e57]:
|
||||
- img [ref=e58]
|
||||
- complementary "右侧预留区域" [ref=e61]
|
||||
61
.playwright-mcp/page-2026-05-06T08-01-09-865Z.yml
Normal file
@ -0,0 +1,61 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- complementary "图表工具" [ref=e4]:
|
||||
- button "选择" [pressed] [ref=e5] [cursor=pointer]:
|
||||
- img [ref=e6]
|
||||
- button "文本" [ref=e10] [cursor=pointer]:
|
||||
- generic [ref=e11]: T
|
||||
- button "连线" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- button "列表" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- button "放大" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- button "删除" [ref=e27] [cursor=pointer]:
|
||||
- img [ref=e28]
|
||||
- region "年度费用模板" [ref=e31]:
|
||||
- region "年度总费用图表" [ref=e32]:
|
||||
- generic [ref=e33]:
|
||||
- heading "年度总费用" [level=1] [ref=e34]
|
||||
- button "编辑标题" [ref=e35] [cursor=pointer]:
|
||||
- img [ref=e36]
|
||||
- generic [ref=e39]:
|
||||
- generic [ref=e40]:
|
||||
- figure "chart, 1 series":
|
||||
- generic [ref=e41]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- generic "图表缩放工具" [ref=e42]:
|
||||
- button "缩小" [disabled] [ref=e43]:
|
||||
- img [ref=e44]
|
||||
- button "放大" [ref=e47] [cursor=pointer]:
|
||||
- img [ref=e48]
|
||||
- button "左移" [disabled] [ref=e51]:
|
||||
- img [ref=e52]
|
||||
- button "右移" [disabled] [ref=e54]:
|
||||
- img [ref=e55]
|
||||
- button "重置" [disabled] [ref=e57]:
|
||||
- img [ref=e58]
|
||||
- complementary "右侧预留区域" [ref=e61]
|
||||
59
.playwright-mcp/page-2026-05-06T08-01-31-938Z.yml
Normal file
@ -0,0 +1,59 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- complementary "图表工具" [ref=e4]:
|
||||
- button "选择" [pressed] [ref=e5] [cursor=pointer]:
|
||||
- img [ref=e6]
|
||||
- button "文本" [ref=e10] [cursor=pointer]:
|
||||
- generic [ref=e11]: T
|
||||
- button "连线" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- button "列表" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- button "放大" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- button "删除" [ref=e27] [cursor=pointer]:
|
||||
- img [ref=e28]
|
||||
- region "年度费用模板" [ref=e31]:
|
||||
- region "年度总费用图表" [ref=e32]:
|
||||
- generic [ref=e33]:
|
||||
- heading "年度总费用" [level=1] [ref=e34]
|
||||
- button "编辑标题" [ref=e35] [cursor=pointer]:
|
||||
- img [ref=e36]
|
||||
- generic [ref=e39]:
|
||||
- generic [ref=e40]:
|
||||
- figure "chart, 1 series":
|
||||
- generic [ref=e41]:
|
||||
- img
|
||||
- img "2021; 年度总费用; 220万"
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- generic "图表缩放工具" [ref=e42]:
|
||||
- button "缩小" [ref=e43] [cursor=pointer]:
|
||||
- img [ref=e44]
|
||||
- button "放大" [active] [ref=e47] [cursor=pointer]:
|
||||
- img [ref=e48]
|
||||
- button "左移" [ref=e51] [cursor=pointer]:
|
||||
- img [ref=e52]
|
||||
- button "右移" [disabled] [ref=e54]:
|
||||
- img [ref=e55]
|
||||
- button "重置" [ref=e57] [cursor=pointer]:
|
||||
- img [ref=e58]
|
||||
- complementary "右侧预留区域" [ref=e61]
|
||||
59
.playwright-mcp/page-2026-05-06T08-02-03-248Z.yml
Normal file
@ -0,0 +1,59 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- complementary "图表工具" [ref=e4]:
|
||||
- button "选择" [pressed] [ref=e5] [cursor=pointer]:
|
||||
- img [ref=e6]
|
||||
- button "文本" [ref=e10] [cursor=pointer]:
|
||||
- generic [ref=e11]: T
|
||||
- button "连线" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- button "列表" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- button "放大" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- button "删除" [ref=e27] [cursor=pointer]:
|
||||
- img [ref=e28]
|
||||
- region "年度费用模板" [ref=e31]:
|
||||
- region "年度总费用图表" [ref=e32]:
|
||||
- generic [ref=e33]:
|
||||
- heading "年度总费用" [level=1] [ref=e34]
|
||||
- button "编辑标题" [ref=e35] [cursor=pointer]:
|
||||
- img [ref=e36]
|
||||
- generic [ref=e39]:
|
||||
- generic [ref=e40]:
|
||||
- figure "chart, 1 series":
|
||||
- generic [ref=e41]:
|
||||
- img
|
||||
- img "2021; 年度总费用; 220万"
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- generic "图表缩放工具" [ref=e42]:
|
||||
- button "缩小" [disabled] [ref=e43]:
|
||||
- img [ref=e44]
|
||||
- button "放大" [ref=e47] [cursor=pointer]:
|
||||
- img [ref=e48]
|
||||
- button "左移" [disabled] [ref=e51]:
|
||||
- img [ref=e52]
|
||||
- button "右移" [disabled] [ref=e54]:
|
||||
- img [ref=e55]
|
||||
- button "重置" [disabled] [ref=e57]:
|
||||
- img [ref=e58]
|
||||
- complementary "右侧预留区域" [ref=e61]
|
||||
35
.playwright-mcp/page-2026-05-06T08-08-52-395Z.yml
Normal file
@ -0,0 +1,35 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- status
|
||||
- complementary "右侧预留区域" [ref=e13]
|
||||
49
.playwright-mcp/page-2026-05-06T08-09-45-922Z.yml
Normal file
@ -0,0 +1,49 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20] [cursor=pointer]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e21]:
|
||||
- button "缩小" [disabled] [ref=e22] [cursor=pointer]
|
||||
- button "放大" [ref=e23] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e24] [cursor=pointer]
|
||||
- button "右移" [disabled] [ref=e25] [cursor=pointer]
|
||||
- button "重置" [disabled] [ref=e26] [cursor=pointer]
|
||||
- complementary "右侧预留区域" [ref=e27]
|
||||
49
.playwright-mcp/page-2026-05-06T08-12-07-206Z.yml
Normal file
@ -0,0 +1,49 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20] [cursor=pointer]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e21]:
|
||||
- button "缩小" [disabled] [ref=e22] [cursor=pointer]
|
||||
- button "放大" [ref=e23] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e24] [cursor=pointer]
|
||||
- button "右移" [disabled] [ref=e25] [cursor=pointer]
|
||||
- button "重置" [disabled] [ref=e26] [cursor=pointer]
|
||||
- complementary "右侧预留区域" [ref=e27]
|
||||
49
.playwright-mcp/page-2026-05-06T08-13-35-051Z.yml
Normal file
@ -0,0 +1,49 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e22]:
|
||||
- button "缩小" [disabled] [ref=e23]
|
||||
- button "放大" [ref=e24] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e25]
|
||||
- button "右移" [disabled] [ref=e26]
|
||||
- button "重置" [disabled] [ref=e27]
|
||||
- complementary "右侧预留区域" [ref=e28]
|
||||
60
.playwright-mcp/page-2026-05-06T08-13-47-666Z.yml
Normal file
@ -0,0 +1,60 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img
|
||||
- img "2021; 年度总费用; 220万"
|
||||
- button "添加水平线" [ref=e29] [cursor=pointer]
|
||||
- text: 年度(元)
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- generic:
|
||||
- generic:
|
||||
- generic: "2023"
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- generic: 年度总费用
|
||||
- generic: 345万
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e22]:
|
||||
- button "缩小" [active] [ref=e23] [cursor=pointer]
|
||||
- button "放大" [ref=e24] [cursor=pointer]
|
||||
- button "左移" [ref=e25] [cursor=pointer]
|
||||
- button "右移" [disabled] [ref=e26]
|
||||
- button "重置" [ref=e27] [cursor=pointer]
|
||||
- generic:
|
||||
- generic: "2023"
|
||||
- generic:
|
||||
- generic: 754万
|
||||
- complementary "右侧预留区域" [ref=e28]
|
||||
56
.playwright-mcp/page-2026-05-06T08-14-07-637Z.yml
Normal file
@ -0,0 +1,56 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "2021; 年度总费用; 220万"
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [expanded] [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20]
|
||||
- status
|
||||
- menu "文本标注" [ref=e32]:
|
||||
- menuitem "文本" [active] [ref=e33] [cursor=pointer]:
|
||||
- generic [ref=e35]: 文本
|
||||
- menuitem "评论" [ref=e36] [cursor=pointer]:
|
||||
- generic [ref=e38]: 评论
|
||||
- menuitem "标注" [ref=e39] [cursor=pointer]:
|
||||
- generic [ref=e41]: 标注
|
||||
- menuitem "注释" [ref=e42] [cursor=pointer]:
|
||||
- generic [ref=e44]: 注释
|
||||
- toolbar "缩放" [ref=e22]:
|
||||
- button "缩小" [ref=e23] [cursor=pointer]
|
||||
- button "放大" [ref=e24] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e25]
|
||||
- button "右移" [ref=e26] [cursor=pointer]
|
||||
- button "重置" [ref=e27] [cursor=pointer]
|
||||
- complementary "右侧预留区域" [ref=e28]
|
||||
51
.playwright-mcp/page-2026-05-06T08-58-23-105Z.yml
Normal file
@ -0,0 +1,51 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e10]:
|
||||
- button "全屏(F11)" [ref=e11] [cursor=pointer]
|
||||
- generic [ref=e13]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e14]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e15]
|
||||
- region [ref=e16]
|
||||
- toolbar "标注" [ref=e17]:
|
||||
- button "Line Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e20] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e21] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e22]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e23]:
|
||||
- button "缩小" [disabled] [ref=e24]
|
||||
- button "放大" [ref=e25] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e26]
|
||||
- button "右移" [disabled] [ref=e27]
|
||||
- button "重置" [disabled] [ref=e28]
|
||||
- complementary "右侧预留区域" [ref=e29]
|
||||
51
.playwright-mcp/page-2026-05-06T09-00-01-491Z.yml
Normal file
@ -0,0 +1,51 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e10]:
|
||||
- button "全屏(F11)" [ref=e11] [cursor=pointer]
|
||||
- generic [ref=e13]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e14]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e15]
|
||||
- region [ref=e16]
|
||||
- toolbar "标注" [ref=e17]:
|
||||
- button "Line Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e20] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e21] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e22]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e23]:
|
||||
- button "缩小" [disabled] [ref=e24]
|
||||
- button "放大" [ref=e25] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e26]
|
||||
- button "右移" [disabled] [ref=e27]
|
||||
- button "重置" [disabled] [ref=e28]
|
||||
- complementary "右侧预留区域" [ref=e29]
|
||||
51
.playwright-mcp/page-2026-05-06T09-02-11-500Z.yml
Normal file
@ -0,0 +1,51 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e10]:
|
||||
- button "全屏(F11)" [ref=e11] [cursor=pointer]
|
||||
- generic [ref=e13]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e14]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e15]
|
||||
- region [ref=e16]
|
||||
- toolbar "标注" [ref=e17]:
|
||||
- button "Line Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e20] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e21] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e22]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e23]:
|
||||
- button "缩小" [disabled] [ref=e24]
|
||||
- button "放大" [ref=e25] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e26]
|
||||
- button "右移" [disabled] [ref=e27]
|
||||
- button "重置" [disabled] [ref=e28]
|
||||
- complementary "右侧预留区域" [ref=e29]
|
||||
51
.playwright-mcp/page-2026-05-06T09-04-17-553Z.yml
Normal file
@ -0,0 +1,51 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e10]:
|
||||
- button "全屏(F11)" [ref=e11] [cursor=pointer]
|
||||
- generic [ref=e13]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e14]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e15]
|
||||
- region [ref=e16]
|
||||
- toolbar "标注" [ref=e17]:
|
||||
- button "Line Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e20] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e21] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e22]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e23]:
|
||||
- button "缩小" [disabled] [ref=e24]
|
||||
- button "放大" [ref=e25] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e26]
|
||||
- button "右移" [disabled] [ref=e27]
|
||||
- button "重置" [disabled] [ref=e28]
|
||||
- complementary "右侧预留区域" [ref=e29]
|
||||
51
.playwright-mcp/page-2026-05-06T09-07-53-616Z.yml
Normal file
@ -0,0 +1,51 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- heading "年度总费用" [level=1] [ref=e7]
|
||||
- button "编辑标题" [ref=e8] [cursor=pointer]
|
||||
- generic [ref=e10]:
|
||||
- button "全屏(F11)" [ref=e11] [cursor=pointer]
|
||||
- generic [ref=e13]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e14]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 年度(元)
|
||||
- region [ref=e15]
|
||||
- region [ref=e16]
|
||||
- toolbar "标注" [ref=e17]:
|
||||
- button "Line Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e20] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e21] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e22]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e23]:
|
||||
- button "缩小" [disabled] [ref=e24]
|
||||
- button "放大" [ref=e25] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e26]
|
||||
- button "右移" [disabled] [ref=e27]
|
||||
- button "重置" [disabled] [ref=e28]
|
||||
- complementary "右侧预留区域" [ref=e29]
|
||||
49
.playwright-mcp/page-2026-05-06T09-33-30-984Z.yml
Normal file
@ -0,0 +1,49 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- button "造价" [ref=e8] [cursor=pointer]
|
||||
- button "全屏(F11)" [ref=e9] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- text: 造价(元)
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e21]:
|
||||
- button "缩小" [disabled] [ref=e22]
|
||||
- button "放大" [ref=e23] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e24]
|
||||
- button "右移" [disabled] [ref=e25]
|
||||
- button "重置" [disabled] [ref=e26]
|
||||
- complementary "右侧预留区域" [ref=e27]
|
||||
48
.playwright-mcp/page-2026-05-06T09-41-15-517Z.yml
Normal file
@ -0,0 +1,48 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- button "造价(元)" [ref=e8] [cursor=pointer]
|
||||
- button "全屏(F11)" [ref=e9] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e21]:
|
||||
- button "缩小" [disabled] [ref=e22]
|
||||
- button "放大" [ref=e23] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e24]
|
||||
- button "右移" [disabled] [ref=e25]
|
||||
- button "重置" [disabled] [ref=e26]
|
||||
- complementary "右侧预留区域" [ref=e27]
|
||||
48
.playwright-mcp/page-2026-05-06T09-43-04-070Z.yml
Normal file
@ -0,0 +1,48 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- button "造价(元)" [ref=e8] [cursor=pointer]
|
||||
- button "全屏(F11)" [ref=e9] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e21]:
|
||||
- button "缩小" [disabled] [ref=e22]
|
||||
- button "放大" [ref=e23] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e24]
|
||||
- button "右移" [disabled] [ref=e25]
|
||||
- button "重置" [disabled] [ref=e26]
|
||||
- complementary "右侧预留区域" [ref=e27]
|
||||
54
.playwright-mcp/page-2026-05-06T09-43-28-411Z.yml
Normal file
@ -0,0 +1,54 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- region "年度总费用图表" [ref=e5]:
|
||||
- generic [ref=e6]:
|
||||
- generic [ref=e7]:
|
||||
- button "造价(元)" [expanded] [active] [ref=e8] [cursor=pointer]
|
||||
- menu "切换纵坐标指标" [ref=e28]:
|
||||
- menuitem "造价(元)" [ref=e29] [cursor=pointer]
|
||||
- menuitem "建筑面积指标(元/m²)" [ref=e30] [cursor=pointer]
|
||||
- menuitem "建造面积指标(元/m²)" [ref=e31] [cursor=pointer]
|
||||
- menuitem "使用面积指标(元/m²)" [ref=e32] [cursor=pointer]
|
||||
- button "全屏(F11)" [ref=e9] [cursor=pointer]
|
||||
- generic [ref=e11]:
|
||||
- figure "图表,共有1个系列":
|
||||
- generic [ref=e12]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- region [ref=e13]
|
||||
- region [ref=e14]
|
||||
- toolbar "标注" [ref=e15]:
|
||||
- button "Line Tool" [ref=e16] [cursor=pointer]
|
||||
- button "Text Tool" [ref=e17] [cursor=pointer]
|
||||
- button "Shape Tool" [ref=e18] [cursor=pointer]
|
||||
- button "Fibonacci Tool" [ref=e19] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e20]
|
||||
- status
|
||||
- toolbar "缩放" [ref=e21]:
|
||||
- button "缩小" [disabled] [ref=e22]
|
||||
- button "放大" [ref=e23] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e24]
|
||||
- button "右移" [disabled] [ref=e25]
|
||||
- button "重置" [disabled] [ref=e26]
|
||||
- complementary "右侧预留区域" [ref=e27]
|
||||
3
bun.lock
@ -6,6 +6,7 @@
|
||||
"name": "agchart-service",
|
||||
"dependencies": {
|
||||
"ag-charts-community": "^13.2.1",
|
||||
"ag-charts-enterprise": "13.2.1",
|
||||
"ag-charts-react": "^13.2.1",
|
||||
"react": "^19.1.0",
|
||||
"react-dom": "^19.1.0",
|
||||
@ -192,6 +193,8 @@
|
||||
|
||||
"ag-charts-core": ["ag-charts-core@13.2.1", "", { "dependencies": { "ag-charts-types": "13.2.1" } }, "sha512-Y7rk3kF+fA6bUMjU+vIzG5rRBd+8EKjyIjzNR2uV1+HyrlnOn6b7Eb9HPkDUoosWHhz+UNCOW/lYDzPP6mivHQ=="],
|
||||
|
||||
"ag-charts-enterprise": ["ag-charts-enterprise@13.2.1", "", { "dependencies": { "ag-charts-community": "13.2.1", "ag-charts-core": "13.2.1" } }, "sha512-QiNuNUu3o5qWUz9cPLuKr9r9k2YsO8Nwp4qJGR0s76WT6AeCmqKa12cSJrvIpwvPdjZ3PVlwsMA8s8EZ4dqrXA=="],
|
||||
|
||||
"ag-charts-locale": ["ag-charts-locale@13.2.1", "", {}, "sha512-lwwV/l/O187R4DYUfjm6p8LijITe46IlDz8nOxNQNJAOpkzs+cWmjSxfNiM1BMVCWTcMdah/AKN+6iihbDa8IA=="],
|
||||
|
||||
"ag-charts-react": ["ag-charts-react@13.2.1", "", { "dependencies": { "ag-charts-community": "13.2.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-5t2DMM+MdQm5MOoGMnqTkri2vYrDbvvVOePBFvl6YU133dal1m5MOv+Srmv/J+139xzAOn1sCPuGwpl8yR1Snw=="],
|
||||
|
||||
BIN
chart-after-icons.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
chart-ag-native.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
chart-before.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
chart-controls-top.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
chart-native-fixed.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
chart-native-zoom-clicked.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
chart-tools-fixed.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
chart-tools.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
chart-zoomed.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
783
demo.html
Normal file
@ -0,0 +1,783 @@
|
||||
<script type="text/javascript">
|
||||
// 泛微的replaceAll方法不支持第一个入参为REGEXP,需在此处重写replaceAll方法,扩展其功能
|
||||
(function () {
|
||||
const nativeReplace = String.prototype.replace;
|
||||
String.prototype.replaceAll = function (search, replacement) {
|
||||
if (search instanceof RegExp) {
|
||||
if (!search.global) {
|
||||
throw new TypeError(
|
||||
"replaceAll called with a non-global RegExp"
|
||||
);
|
||||
}
|
||||
return nativeReplace.call(this, search, replacement);
|
||||
}
|
||||
return nativeReplace.call(
|
||||
this,
|
||||
new RegExp(search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'),
|
||||
replacement
|
||||
);
|
||||
};
|
||||
})();
|
||||
|
||||
// 禁止ModeForm的右键菜单
|
||||
ModeForm.controlBtnDisabled(true);
|
||||
|
||||
const myGlobalParams = {};
|
||||
window.myGlobalParams = myGlobalParams;
|
||||
|
||||
// 获取图形展示类型
|
||||
// 0为日养费用趋势图,1为日养指标趋势图
|
||||
myGlobalParams.cardUrl_lx = ModeForm.getCardUrlInfo().lx;
|
||||
|
||||
switch (myGlobalParams.cardUrl_lx) {
|
||||
case '1':
|
||||
myGlobalParams.indicator_type = 0;
|
||||
myGlobalParams.axes_y_Name = "指标(元/公里)";
|
||||
myGlobalParams.axes_y_Formatter = axesYValueFormatterSD;
|
||||
myGlobalParams.diyButtonArr = [{
|
||||
value: 'type-select',
|
||||
tooltip: '选择指标类型',
|
||||
label: `<span class="ag-charts-myButton-type-select ag-charts-diy-button" style="font-size: 10px;">主线</span>`,
|
||||
}];
|
||||
myGlobalParams.zj = '0';
|
||||
break;
|
||||
case '2':
|
||||
myGlobalParams.axes_y_Name = "结算(元)";
|
||||
myGlobalParams.axes_y_Formatter = axesYValueFormatterTT;
|
||||
myGlobalParams.diyButtonArr = [/*{
|
||||
value: 'feeitem-select',
|
||||
tooltip: '选择费用项目',
|
||||
label: `<i class="icon-coms-search ag-charts-myButton-feeitem-select ag-charts-diy-button"></i>`,
|
||||
}*/];
|
||||
myGlobalParams.feeitem = '99';
|
||||
break;
|
||||
case '3':
|
||||
myGlobalParams.indicator_type = 0;
|
||||
myGlobalParams.axes_y_Name = "指标(元/公里)";
|
||||
myGlobalParams.axes_y_Formatter = axesYValueFormatterSD;
|
||||
myGlobalParams.diyButtonArr = [{
|
||||
value: 'type-select',
|
||||
tooltip: '选择指标类型',
|
||||
label: `<span class="ag-charts-myButton-type-select ag-charts-diy-button" style="font-size: 10px;">主线</span>`,
|
||||
}];
|
||||
myGlobalParams.feeitem = '99';
|
||||
break;
|
||||
default:
|
||||
myGlobalParams.axes_y_Name = "结算价(元)";
|
||||
myGlobalParams.axes_y_Formatter = axesYValueFormatterTT;
|
||||
myGlobalParams.diyButtonArr = [];
|
||||
myGlobalParams.zj = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
const { AgCharts } = agCharts;
|
||||
myGlobalParams.updateChartTO = null;
|
||||
|
||||
myGlobalParams.paperTheme = {
|
||||
palette: {
|
||||
fills: ["#006f9b", "#ff7faa", "#00994d", "#ff8833", "#00a0dd"],
|
||||
strokes: ["#003f58", "#934962", "#004a25", "#914d1d", "#006288"],
|
||||
},
|
||||
overrides: {
|
||||
common: {
|
||||
subtitle: {
|
||||
text: "Paper Theme",
|
||||
},
|
||||
},
|
||||
},
|
||||
params: {
|
||||
foregroundColor: "#262a33",
|
||||
backgroundColor: "#fff1e5",
|
||||
accentColor: "#0d7680",
|
||||
fontFamily: '"Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", Arial, sans-serif',
|
||||
fontSize: 14,
|
||||
tooltipBackgroundColor: "#fff7ef",
|
||||
tooltipTextColor: "#262a33",
|
||||
},
|
||||
};
|
||||
|
||||
myGlobalParams.options = {
|
||||
container: document.getElementById("myChart"),
|
||||
theme: myGlobalParams.paperTheme,
|
||||
locale: {
|
||||
localeText: agChartsLocale.AG_CHARTS_LOCALE_ZH_CN,
|
||||
},
|
||||
zoom: {
|
||||
enabled: true,
|
||||
anchorPointX: 'pointer',
|
||||
anchorPointY: 'pointer',
|
||||
},
|
||||
annotations: {
|
||||
enabled: true,
|
||||
toolbar: {
|
||||
buttons: myGlobalParams.diyButtonArr.concat([
|
||||
{
|
||||
icon: 'trend-line-drawing',
|
||||
value: 'line-menu',
|
||||
tooltip: 'Line Tool',
|
||||
},
|
||||
{
|
||||
icon: 'text-annotation',
|
||||
value: 'text-menu',
|
||||
tooltip: 'Text Tool',
|
||||
},
|
||||
{
|
||||
icon: 'arrow-drawing',
|
||||
value: 'shape-menu',
|
||||
tooltip: 'Shape Tool',
|
||||
},
|
||||
// {
|
||||
// icon: 'measurer-drawing',
|
||||
// value: 'measurer-menu',
|
||||
// tooltip: 'Measurer Tool',
|
||||
// },
|
||||
{
|
||||
icon: 'fibonacci-retracement-drawing',
|
||||
value: 'fibonacci-menu',
|
||||
tooltip: 'Fibonacci Tool',
|
||||
},
|
||||
{
|
||||
value: 'full-screen',
|
||||
tooltip: '全屏',
|
||||
label: `<i class="anticon anticon-arrow-salt ag-charts-myButton-fullScreen ag-charts-diy-button"></i>`,
|
||||
},
|
||||
{
|
||||
icon: 'delete',
|
||||
value: 'clear',
|
||||
tooltip: 'Clear annotations',
|
||||
},
|
||||
]),
|
||||
},
|
||||
},
|
||||
legend: {
|
||||
position: "right",
|
||||
},
|
||||
title: {
|
||||
text: ` `,
|
||||
},
|
||||
axes: {
|
||||
y: {
|
||||
type: "number",
|
||||
position: "left",
|
||||
title: {
|
||||
text: myGlobalParams.axes_y_Name,
|
||||
},
|
||||
crosshair: {
|
||||
snap: false,
|
||||
},
|
||||
},
|
||||
x: {
|
||||
type: "category",
|
||||
position: "bottom",
|
||||
// title: {
|
||||
// text: "Year",
|
||||
// },
|
||||
crosshair: {
|
||||
snap: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
formatter: {
|
||||
y: myGlobalParams.axes_y_Formatter,
|
||||
}
|
||||
};
|
||||
|
||||
myGlobalParams.userid = ecodeSDK.getEcodeParams(['ecode_params'])._user.id;// String
|
||||
|
||||
// 获取series数据
|
||||
let initialInterval = setInterval(async () => {
|
||||
if ($(`#myChart`).length > 0) {
|
||||
clearInterval(initialInterval);
|
||||
let dockerH = $(`.coms-mode-docker.coms-mode-card`).height();
|
||||
$(`.myChartRow`).css('height', `${dockerH - 52}px`);
|
||||
let resStr1 = await $.post(`/api/esb/oa/execute?eventkey=ExecuteMySQL¶ms={"SQLID":"90","vars":[{"value":"${myGlobalParams.userid}"}],"maxRunNum":"3"}`);
|
||||
let res = JSON.parse(resStr1).data.res.map(m => JSON.parse(m));
|
||||
res.sort((a, b) => a.CJ.localeCompare(b.CJ));
|
||||
if (res.length == 0) return;
|
||||
myGlobalParams.compInfo = res[0];
|
||||
|
||||
await AgChartOptionHandler();
|
||||
beforeAgChartFirstRender();
|
||||
myGlobalParams.agChart = AgCharts.create(myGlobalParams.options);
|
||||
|
||||
// 添加全屏按钮
|
||||
let myFullScreemIV = setInterval(() => {
|
||||
if ($(`.ag-charts-myButton-fullScreen`).length > 0) {
|
||||
clearInterval(myFullScreemIV);
|
||||
$(`.ag-charts-myButton-fullScreen`)[0].parentNode.parentNode.addEventListener('keydown', agChartsDiyButtonKeyDownEvent);
|
||||
|
||||
$(`.ag-charts-myButton-fullScreen`)[0].parentNode.parentNode.addEventListener('click', function () {
|
||||
$(`.ag-charts-toolbar__button--active`).removeClass('ag-charts-toolbar__button--active');
|
||||
$(this).addClass('ag-charts-toolbar__button--active');
|
||||
if (!document.fullscreenElement) {
|
||||
$(`#myChart`)[0].requestFullscreen();
|
||||
} else {
|
||||
document.exitFullscreen();
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('fullscreenchange', () => {
|
||||
if ($(`.ag-charts-myButton-fullScreen`).length > 0) {
|
||||
if (!document.fullscreenElement) {
|
||||
$(`.ag-charts-myButton-fullScreen`).removeClass('anticon-shrink');
|
||||
$(`.ag-charts-myButton-fullScreen`).addClass('anticon-arrow-salt');
|
||||
} else {
|
||||
$(`.ag-charts-myButton-fullScreen`).removeClass('anticon-arrow-salt');
|
||||
$(`.ag-charts-myButton-fullScreen`).addClass('anticon-shrink');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}, 50);
|
||||
|
||||
afterAgChartFirstRender();
|
||||
}
|
||||
}, 50);
|
||||
|
||||
function beforeAgChartFirstRender() {
|
||||
}
|
||||
|
||||
function afterAgChartFirstRender() {
|
||||
if (['1', '3'].includes(myGlobalParams.cardUrl_lx)) {
|
||||
let myButtonIV1 = setInterval(() => {
|
||||
if ($(`.ag-charts-myButton-type-select`).length > 0) {
|
||||
clearInterval(myButtonIV1);
|
||||
|
||||
$(`.ag-charts-myButton-type-select`)[0].parentNode.parentNode.addEventListener('keydown', agChartsDiyButtonKeyDownEvent);
|
||||
|
||||
$(`.ag-charts-myButton-type-select`)[0].parentNode.parentNode.addEventListener('click', function () {
|
||||
$(`.ag-charts-toolbar__button--active`).removeClass('ag-charts-toolbar__button--active');
|
||||
$(this).addClass('ag-charts-toolbar__button--active');
|
||||
|
||||
$(`.ag-charts-canvas-overlay.ag-charts-tooltip-container>div:nth-child(4)`).append(`
|
||||
<div role="menu" aria-orientation="vertical" class="ag-charts-menu ag-charts-popover ag-charts-annotations__toolbar-menu" aria-label="主线" style="right: unset; bottom: unset; left: 60px; top: 66px;">
|
||||
<div role="menuitem" aria-disabled="false" class="ag-charts-menu__row ag-charts-diy-button-submenu" data-popover-id="select-zb-type-zx" tabindex="0">
|
||||
<span class="ag-charts-menu__label ag-charts-diy-button-submenu-label">主线量里程指标</span>
|
||||
</div>
|
||||
<div role="menuitem" aria-disabled="false" class="ag-charts-menu__row ag-charts-diy-button-submenu" data-popover-id="select-zb-type-yh" tabindex="-1">
|
||||
<span class="ag-charts-menu__label ag-charts-diy-button-submenu-label">养护量里程指标</span>
|
||||
</div>
|
||||
<div role="menuitem" aria-disabled="false" class="ag-charts-menu__row ag-charts-diy-button-submenu" data-popover-id="select-zb-type-sf" tabindex="-1">
|
||||
<span class="ag-charts-menu__label ag-charts-diy-button-submenu-label">收费量里程指标</span>
|
||||
</div>
|
||||
<div role="menuitem" aria-disabled="false" class="ag-charts-menu__row ag-charts-diy-button-submenu" data-popover-id="select-zb-type-dl" tabindex="-1">
|
||||
<span class="ag-charts-menu__label ag-charts-diy-button-submenu-label">四车道当量里程指标</span>
|
||||
</div>
|
||||
</div>
|
||||
`);
|
||||
$(`.ag-charts-diy-button-submenu`)[0].focus({ preventScroll: true });
|
||||
|
||||
let titles = ['主线', '养护', '收费', '当量'];
|
||||
for (let i = 0; i < $(`.ag-charts-diy-button-submenu`).length; i++) {
|
||||
$(`.ag-charts-diy-button-submenu`)[i].addEventListener('click', (e) => {
|
||||
$(`.ag-charts-canvas-overlay.ag-charts-tooltip-container>div:nth-child(4)`).empty();
|
||||
document.removeEventListener('mousedown', agChartsSubMenuEraser, true);
|
||||
$(`.ag-charts-myButton-type-select`).text(titles[i]);
|
||||
|
||||
// 业务逻辑
|
||||
clearInterval(myGlobalParams.updateChartTO);
|
||||
myGlobalParams.indicator_type = i;
|
||||
myGlobalParams.updateChartTO = setTimeout(async () => {
|
||||
if (myGlobalParams.cardUrl_lx == 1) {
|
||||
myGlobalParams.zj = ModeForm.getFieldValue('field293946');
|
||||
if (myGlobalParams.zj.length == 0) {
|
||||
myGlobalParams.options.data = [];
|
||||
} else {
|
||||
await AgChartOptionHandler();
|
||||
}
|
||||
} else if (myGlobalParams.cardUrl_lx == 3) {
|
||||
let feeitem = ModeForm.getFieldValue('field294935');
|
||||
if (feeitem.length == 0) {
|
||||
$(`.ag-charts-title-diy-feeitem>span`)[0].innerHTML = '请选择费用项目';
|
||||
myGlobalParams.options.data = [];
|
||||
} else {
|
||||
$(`.ag-charts-title-diy-feeitem>span`)[0].innerHTML = ModeForm.getBrowserShowName('field294935');
|
||||
myGlobalParams.feeitem = feeitem.match(/\d+$/g)[0];
|
||||
await AgChartOptionHandler();
|
||||
}
|
||||
}
|
||||
myGlobalParams.agChart.updateDelta({ data: myGlobalParams.options.data });
|
||||
}, 300);
|
||||
});
|
||||
|
||||
$(`.ag-charts-diy-button-submenu`)[i].addEventListener('mouseenter', (e) => {
|
||||
if (document.activeElement !== e.target) {
|
||||
document.activeElement.setAttribute('tabindex', '-1');
|
||||
e.target.setAttribute('tabindex', '0');
|
||||
e.target.focus({ preventScroll: true });
|
||||
}
|
||||
});
|
||||
|
||||
$(`.ag-charts-diy-button-submenu`)[i].addEventListener('keydown', (e) => {
|
||||
switch (e.key) {
|
||||
case 'ArrowDown':
|
||||
e.target.nextElementSibling?.focus({ preventScroll: true });
|
||||
break;
|
||||
case 'ArrowUp':
|
||||
e.target.previousElementSibling?.focus({ preventScroll: true });
|
||||
break;
|
||||
case 'ArrowLeft':
|
||||
agChartsSubMenuEraser();
|
||||
$(`.ag-charts-myButton-type-select`)[0].parentNode.parentNode.focus({ preventScroll: true });
|
||||
break;
|
||||
case 'Escape':
|
||||
agChartsSubMenuEraser();
|
||||
$(`.ag-charts-myButton-type-select`)[0].parentNode.parentNode.focus({ preventScroll: true });
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener('mousedown', agChartsSubMenuEraser, true);
|
||||
});
|
||||
}
|
||||
}, 50);
|
||||
} else if (myGlobalParams.cardUrl_lx == 2) {
|
||||
// let myButtonIV2 = setInterval(() => {
|
||||
// if ($(`.ag-charts-myButton-feeitem-select`).length > 0) {
|
||||
// clearInterval(myButtonIV2);
|
||||
// $(`.ag-charts-myButton-feeitem-select`)[0].parentNode.parentNode.addEventListener('keydown', agChartsDiyButtonKeyDownEvent);
|
||||
|
||||
// $(`.ag-charts-myButton-feeitem-select`)[0].parentNode.parentNode.addEventListener('click', function () {
|
||||
// $(`.ag-charts-toolbar__button--active`).removeClass('ag-charts-toolbar__button--active');
|
||||
// $(this).addClass('ag-charts-toolbar__button--active');
|
||||
// // 业务逻辑
|
||||
// $(`#field294935span button`).click();
|
||||
// });
|
||||
// }
|
||||
// }, 50);
|
||||
}
|
||||
|
||||
// 增加表单字段 Component
|
||||
if (['0', '1'].includes(myGlobalParams.cardUrl_lx)) {
|
||||
let selectZJComp;
|
||||
ModeForm.proxyFieldContentComp("field293946", function (info, compFn) {
|
||||
selectZJComp = selectZJComp ? selectZJComp : compFn();
|
||||
return compFn();
|
||||
});
|
||||
ModeForm.forceRenderField("field293946");
|
||||
$(`#myChart`).prepend(`<div class="selectZJ" style="position: absolute; top: 10px; left: 0px; z-index: 1000; width: 100%;"></div>`);
|
||||
ReactDOM.render(selectZJComp, $(`#myChart>div.selectZJ`)[0]);
|
||||
} else if (['2', '3'].includes(myGlobalParams.cardUrl_lx)) {
|
||||
$(`#myChart`).prepend(`<div class="ag-charts-title-diy-feeitem" style="display: flex; justify-content: center; align-items: center; font-size: 23px; position: absolute; top: 10px; left: 0px; z-index: 1000; width: 100%;"><span>年度总费用</span><div class="ag-charts-title-diy-feeitem-editor" style="padding-left: 5px;"></div></div>`);
|
||||
let editComp = React.createElement(antd.Button, { size: 'small', type: 'dashed', icon: 'edit', onClick: () => $(`#field294935span button`).click() });
|
||||
ReactDOM.render(editComp, $(`.ag-charts-title-diy-feeitem>div.ag-charts-title-diy-feeitem-editor`)[0]);
|
||||
}
|
||||
}
|
||||
|
||||
function agChartsDiyButtonKeyDownEvent(e) {
|
||||
if (e.key == ' ' || e.key == 'Enter') {
|
||||
this.click();
|
||||
}
|
||||
}
|
||||
|
||||
function agChartsSubMenuEraser(e = null) {
|
||||
if (e && (e.target.classList.contains('ag-charts-diy-button-submenu') || e.target.classList.contains('ag-charts-diy-button-submenu-label'))) return;
|
||||
$(`.ag-charts-canvas-overlay.ag-charts-tooltip-container>div:nth-child(4)`).empty();
|
||||
document.removeEventListener('mousedown', agChartsSubMenuEraser, true);
|
||||
}
|
||||
|
||||
ModeForm.bindFieldChangeEvent('field293946,field294935', async function (obj, id, value) {
|
||||
clearInterval(myGlobalParams.updateChartTO);
|
||||
if (id == 'field293946') {
|
||||
myGlobalParams.updateChartTO = setTimeout(async () => {
|
||||
myGlobalParams.zj = value;
|
||||
if (myGlobalParams.zj.length == 0) {
|
||||
myGlobalParams.options.data = [];
|
||||
} else {
|
||||
await AgChartOptionHandler();
|
||||
}
|
||||
myGlobalParams.agChart.updateDelta({ data: myGlobalParams.options.data });
|
||||
}, 300);
|
||||
} else if (id == 'field294935') {
|
||||
myGlobalParams.updateChartTO = setTimeout(async () => {
|
||||
if (value.length == 0) {
|
||||
$(`.ag-charts-title-diy-feeitem>span`)[0].innerHTML = '请选择费用项目';
|
||||
myGlobalParams.options.data = [];
|
||||
} else {
|
||||
$(`.ag-charts-title-diy-feeitem>span`)[0].innerHTML = ModeForm.getBrowserShowName(id);
|
||||
myGlobalParams.feeitem = value.match(/\d+$/g)[0];
|
||||
await AgChartOptionHandler();
|
||||
}
|
||||
myGlobalParams.agChart.updateDelta({ data: myGlobalParams.options.data });
|
||||
}, 300);
|
||||
}
|
||||
});
|
||||
|
||||
async function AgChartOptionHandler() {
|
||||
let res;
|
||||
if (myGlobalParams.cardUrl_lx == 1) {
|
||||
let resStr2 = await $.post(`/api/esb/oa/execute?eventkey=ExecuteMySQL¶ms={"SQLID":"91","vars":[{"value":"${myGlobalParams.compInfo.ID}"},{"value":"${myGlobalParams.indicator_type}"},{"value":"${myGlobalParams.zj}"}],"maxRunNum":"3"}`);
|
||||
res = JSON.parse(resStr2).data.res.map(m => JSON.parse(m));
|
||||
res.sort((a, b) => a.NF.localeCompare(b.NF));
|
||||
res.sort((a, b) => a.LDJC.localeCompare(b.LDJC));
|
||||
res.sort((a, b) => a.EJDW.localeCompare(b.EJDW));
|
||||
} else if (myGlobalParams.cardUrl_lx == 2) {
|
||||
let resStr2 = await $.post(`/api/esb/oa/execute?eventkey=ExecuteMySQL¶ms={"SQLID":"93","vars":[{"value":"1"},{"value":"${myGlobalParams.compInfo.ID}"},{"value":"${myGlobalParams.feeitem}"}],"maxRunNum":"3"}`);
|
||||
res = JSON.parse(resStr2).data.res.map(m => JSON.parse(m));
|
||||
res.sort((a, b) => a.NF.localeCompare(b.NF));
|
||||
res.sort((a, b) => a.LDJC.localeCompare(b.LDJC));
|
||||
res.sort((a, b) => a.EJDW.localeCompare(b.EJDW));
|
||||
} else if (myGlobalParams.cardUrl_lx == 3) {
|
||||
let resStr2 = await $.post(`/api/esb/oa/execute?eventkey=ExecuteMySQL¶ms={"SQLID":"94","vars":[{"value":"${myGlobalParams.compInfo.ID}"},{"value":"${myGlobalParams.indicator_type}"},{"value":"${myGlobalParams.feeitem}"}],"maxRunNum":"3"}`);
|
||||
res = JSON.parse(resStr2).data.res.map(m => JSON.parse(m));
|
||||
res.sort((a, b) => a.NF.localeCompare(b.NF));
|
||||
res.sort((a, b) => a.LDJC.localeCompare(b.LDJC));
|
||||
res.sort((a, b) => a.EJDW.localeCompare(b.EJDW));
|
||||
} else {
|
||||
let resStr2 = await $.post(`/api/esb/oa/execute?eventkey=ExecuteMySQL¶ms={"SQLID":"89","vars":[{"value":"${myGlobalParams.compInfo.ID}"},{"value":"${myGlobalParams.zj}"}],"maxRunNum":"3"}`);
|
||||
res = JSON.parse(resStr2).data.res.map(m => JSON.parse(m));
|
||||
res.sort((a, b) => a.NF.localeCompare(b.NF));
|
||||
res.sort((a, b) => a.LDJC.localeCompare(b.LDJC));
|
||||
res.sort((a, b) => a.EJDW.localeCompare(b.EJDW));
|
||||
}
|
||||
if (myGlobalParams.options.series) {
|
||||
let data = getData(res, myGlobalParams.compInfo);
|
||||
myGlobalParams.options.data = data;
|
||||
} else {
|
||||
let { series, data } = getDataAndSeries(res, myGlobalParams.compInfo);
|
||||
myGlobalParams.options.data = data;
|
||||
myGlobalParams.options.series = series;
|
||||
}
|
||||
}
|
||||
|
||||
function getData(data, companyInfo_GD) {
|
||||
if (['1', '3'].includes(myGlobalParams.cardUrl_lx)) {
|
||||
let res2 = [];
|
||||
let totalMap = new Map();
|
||||
let secTotalMap = new Map();
|
||||
let yKey;
|
||||
data.forEach((di, index) => {
|
||||
if (companyInfo_GD.CJ == 1) {
|
||||
if (secTotalMap.has(di.EJDW)) {
|
||||
if (secTotalMap.get(di.EJDW).has(di.NF)) {
|
||||
secTotalMap.get(di.EJDW).get(di.NF).set('fee', (secTotalMap.get(di.EJDW).get(di.NF).get('fee') || 0) + di.FY * 1);
|
||||
secTotalMap.get(di.EJDW).get(di.NF).set('ldcd', (secTotalMap.get(di.EJDW).get(di.NF).get('ldcd') || 0) + di.CD * 1);
|
||||
} else {
|
||||
secTotalMap.get(di.EJDW).set(di.NF, new Map([['fee', di.FY * 1], ['ldcd', di.CD * 1]]));
|
||||
}
|
||||
} else {
|
||||
secTotalMap.set(di.EJDW, new Map([[di.NF, new Map([['fee', di.FY * 1], ['ldcd', di.CD * 1]])]]));
|
||||
}
|
||||
}
|
||||
if (totalMap.has(di.NF)) {
|
||||
totalMap.get(di.NF).set('fee', (totalMap.get(di.NF).get('fee') || 0) + di.FY * 1);
|
||||
totalMap.get(di.NF).set('ldcd', (totalMap.get(di.NF).get('ldcd') || 0) + di.CD * 1);
|
||||
} else {
|
||||
totalMap.set(di.NF, new Map([['fee', di.FY * 1], ['ldcd', di.CD * 1]]));
|
||||
}
|
||||
yKey = myGlobalParams.options.series.find(f => f.yName == di.LDJC).yKey;
|
||||
res2.push(
|
||||
{
|
||||
year: di.NF,
|
||||
[yKey]: di.ZBZ * 1,
|
||||
}
|
||||
);
|
||||
});
|
||||
let totalInd = [];
|
||||
totalMap.forEach((value, key) => {
|
||||
if (value.get('ldcd') != 0) {
|
||||
totalInd.push({
|
||||
year: key,
|
||||
total: Math.round(value.get('fee') / value.get('ldcd') * 100) / 100,
|
||||
});
|
||||
}
|
||||
});
|
||||
totalInd.sort((a, b) => a.year.localeCompare(b.year));
|
||||
if (companyInfo_GD.CJ == 1) {
|
||||
secTotalMap.forEach((value, key) => {
|
||||
let secTotalInd = [];
|
||||
let yKeyi = myGlobalParams.options.series.find(f => f.yName == key).yKey;
|
||||
value.forEach((v, k) => {
|
||||
if (v.get('ldcd') != 0) {
|
||||
secTotalInd.push({
|
||||
year: k,
|
||||
[yKeyi]: Math.round(v.get('fee') / v.get('ldcd') * 100) / 100,
|
||||
});
|
||||
}
|
||||
});
|
||||
secTotalInd.sort((a, b) => a.year.localeCompare(b.year));
|
||||
totalInd = totalInd.concat(secTotalInd);
|
||||
});
|
||||
}
|
||||
return totalInd.concat(res2);
|
||||
} else if (['0', '2'].includes(myGlobalParams.cardUrl_lx)) {
|
||||
let res2 = [];
|
||||
let totalMap = new Map();
|
||||
let secTotalMap = new Map();
|
||||
let yKey;
|
||||
data.forEach((di, index) => {
|
||||
if (companyInfo_GD.CJ == 1) {
|
||||
if (secTotalMap.has(di.EJDW)) {
|
||||
secTotalMap.get(di.EJDW).set(di.NF, (secTotalMap.get(di.EJDW).get(di.NF) || 0) + di.FY * 1);
|
||||
} else {
|
||||
secTotalMap.set(di.EJDW, new Map([[di.NF, di.FY * 1]]));
|
||||
}
|
||||
}
|
||||
totalMap.set(di.NF, (totalMap.get(di.NF) || 0) + di.FY * 1);
|
||||
yKey = myGlobalParams.options.series.find(f => f.yName == di.LDJC).yKey;
|
||||
res2.push(
|
||||
{
|
||||
year: di.NF,
|
||||
[yKey]: di.FY * 1,
|
||||
}
|
||||
);
|
||||
});
|
||||
let totalFee = [];
|
||||
totalMap.forEach((value, key) => {
|
||||
totalFee.push({
|
||||
year: key,
|
||||
total: value,
|
||||
});
|
||||
});
|
||||
totalFee.sort((a, b) => a.year.localeCompare(b.year));
|
||||
if (companyInfo_GD.CJ == 1) {
|
||||
secTotalMap.forEach((value, key) => {
|
||||
let secTotalFee = [];
|
||||
let yKeyi = myGlobalParams.options.series.find(f => f.yName == key).yKey;
|
||||
value.forEach((v, k) => {
|
||||
secTotalFee.push({
|
||||
year: k,
|
||||
[yKeyi]: v,
|
||||
});
|
||||
});
|
||||
secTotalFee.sort((a, b) => a.year.localeCompare(b.year));
|
||||
totalFee = totalFee.concat(secTotalFee);
|
||||
});
|
||||
}
|
||||
return totalFee.concat(res2);
|
||||
}
|
||||
}
|
||||
|
||||
function getDataAndSeries(data, companyInfo_GDS) {
|
||||
if (['1', '3'].includes(myGlobalParams.cardUrl_lx)) {
|
||||
let res1 = [];
|
||||
let res2 = [];
|
||||
let lds = [];
|
||||
let totalMap = new Map();
|
||||
let secTotalMap = new Map();
|
||||
let yKey;
|
||||
data.forEach((di, index) => {
|
||||
if (companyInfo_GDS.CJ == 1) {
|
||||
if (secTotalMap.has(di.EJDW)) {
|
||||
if (secTotalMap.get(di.EJDW).has(di.NF)) {
|
||||
secTotalMap.get(di.EJDW).get(di.NF).set('fee', (secTotalMap.get(di.EJDW).get(di.NF).get('fee') || 0) + di.FY * 1);
|
||||
secTotalMap.get(di.EJDW).get(di.NF).set('ldcd', (secTotalMap.get(di.EJDW).get(di.NF).get('ldcd') || 0) + di.CD * 1);
|
||||
} else {
|
||||
secTotalMap.get(di.EJDW).set(di.NF, new Map([['fee', di.FY * 1], ['ldcd', di.CD * 1]]));
|
||||
}
|
||||
} else {
|
||||
secTotalMap.set(di.EJDW, new Map([[di.NF, new Map([['fee', di.FY * 1], ['ldcd', di.CD * 1]])]]));
|
||||
}
|
||||
}
|
||||
if (totalMap.has(di.NF)) {
|
||||
totalMap.get(di.NF).set('fee', (totalMap.get(di.NF).get('fee') || 0) + di.FY * 1);
|
||||
totalMap.get(di.NF).set('ldcd', (totalMap.get(di.NF).get('ldcd') || 0) + di.CD * 1);
|
||||
} else {
|
||||
totalMap.set(di.NF, new Map([['fee', di.FY * 1], ['ldcd', di.CD * 1]]));
|
||||
}
|
||||
if (!lds.includes(di.LDJC)) {
|
||||
yKey = `fee${lds.length}`;
|
||||
lds.push(di.LDJC);
|
||||
res1.push(
|
||||
{
|
||||
type: "line",
|
||||
yKey: yKey,
|
||||
yName: di.LDJC,
|
||||
xKey: "year",
|
||||
interpolation: { type: "smooth" },
|
||||
visible: false,
|
||||
}
|
||||
);
|
||||
} else {
|
||||
yKey = `fee${lds.indexOf(di.LDJC)}`;
|
||||
}
|
||||
res2.push(
|
||||
{
|
||||
year: di.NF,
|
||||
[yKey]: di.ZBZ * 1,
|
||||
}
|
||||
);
|
||||
});
|
||||
res1.sort((a, b) => a.yName.localeCompare(b.yName));
|
||||
if (res1.length == 1) {
|
||||
res1[0].visible = true;
|
||||
return { series: res1, data: res2 };
|
||||
}
|
||||
let totalItem = [{
|
||||
type: "line",
|
||||
yKey: 'total',
|
||||
yName: companyInfo_GDS.JC,
|
||||
xKey: "year",
|
||||
interpolation: { type: "smooth" },
|
||||
visible: true,
|
||||
}];
|
||||
let totalInd = [];
|
||||
totalMap.forEach((value, key) => {
|
||||
if (value.get('ldcd') != 0) {
|
||||
totalInd.push({
|
||||
year: key,
|
||||
total: Math.round(value.get('fee') / value.get('ldcd') * 100) / 100,
|
||||
});
|
||||
}
|
||||
});
|
||||
totalInd.sort((a, b) => a.year.localeCompare(b.year));
|
||||
if (companyInfo_GDS.CJ == 1) {
|
||||
let item = 0;
|
||||
secTotalMap.forEach((value, key) => {
|
||||
let secTotalInd = [];
|
||||
item++;
|
||||
let yKeyi = `total${item}`;
|
||||
totalItem.push({
|
||||
type: "line",
|
||||
yKey: yKeyi,
|
||||
yName: key,
|
||||
xKey: "year",
|
||||
interpolation: { type: "smooth" },
|
||||
visible: false,
|
||||
});
|
||||
value.forEach((v, k) => {
|
||||
if (v.get('ldcd') != 0) {
|
||||
secTotalInd.push({
|
||||
year: k,
|
||||
[yKeyi]: Math.round(v.get('fee') / v.get('ldcd') * 100) / 100,
|
||||
});
|
||||
}
|
||||
});
|
||||
secTotalInd.sort((a, b) => a.year.localeCompare(b.year));
|
||||
totalInd = totalInd.concat(secTotalInd);
|
||||
});
|
||||
}
|
||||
return { series: totalItem.concat(res1), data: totalInd.concat(res2) };
|
||||
} else {
|
||||
let res1 = [];
|
||||
let res2 = [];
|
||||
let lds = [];
|
||||
let totalMap = new Map();
|
||||
let secTotalMap = new Map();
|
||||
let yKey;
|
||||
data.forEach((di, index) => {
|
||||
if (companyInfo_GDS.CJ == 1) {
|
||||
if (secTotalMap.has(di.EJDW)) {
|
||||
secTotalMap.get(di.EJDW).set(di.NF, (secTotalMap.get(di.EJDW).get(di.NF) || 0) + di.FY * 1);
|
||||
} else {
|
||||
secTotalMap.set(di.EJDW, new Map([[di.NF, di.FY * 1]]));
|
||||
}
|
||||
}
|
||||
totalMap.set(di.NF, (totalMap.get(di.NF) || 0) + di.FY * 1);
|
||||
if (!lds.includes(di.LDJC)) {
|
||||
yKey = `fee${lds.length}`;
|
||||
lds.push(di.LDJC);
|
||||
res1.push(
|
||||
{
|
||||
type: "line",
|
||||
yKey: yKey,
|
||||
yName: di.LDJC,
|
||||
xKey: "year",
|
||||
interpolation: { type: "smooth" },
|
||||
visible: false,
|
||||
}
|
||||
);
|
||||
} else {
|
||||
yKey = `fee${lds.indexOf(di.LDJC)}`;
|
||||
}
|
||||
res2.push(
|
||||
{
|
||||
year: di.NF,
|
||||
[yKey]: di.FY * 1,
|
||||
}
|
||||
);
|
||||
});
|
||||
res1.sort((a, b) => a.yName.localeCompare(b.yName));
|
||||
if (res1.length == 1) {
|
||||
res1[0].visible = true;
|
||||
return { series: res1, data: res2 };
|
||||
}
|
||||
let totalItem = [{
|
||||
type: "line",
|
||||
yKey: 'total',
|
||||
yName: companyInfo_GDS.JC,
|
||||
xKey: "year",
|
||||
interpolation: { type: "smooth" },
|
||||
visible: true,
|
||||
}];
|
||||
let totalFee = [];
|
||||
totalMap.forEach((value, key) => {
|
||||
totalFee.push({
|
||||
year: key,
|
||||
total: value,
|
||||
});
|
||||
});
|
||||
totalFee.sort((a, b) => a.year.localeCompare(b.year));
|
||||
if (companyInfo_GDS.CJ == 1) {
|
||||
let item = 0;
|
||||
secTotalMap.forEach((value, key) => {
|
||||
let secTotalFee = [];
|
||||
item++;
|
||||
let yKeyi = `total${item}`;
|
||||
totalItem.push({
|
||||
type: "line",
|
||||
yKey: yKeyi,
|
||||
yName: key,
|
||||
xKey: "year",
|
||||
interpolation: { type: "smooth" },
|
||||
visible: false,
|
||||
});
|
||||
value.forEach((v, k) => {
|
||||
secTotalFee.push({
|
||||
year: k,
|
||||
[yKeyi]: v,
|
||||
});
|
||||
});
|
||||
secTotalFee.sort((a, b) => a.year.localeCompare(b.year));
|
||||
totalFee = totalFee.concat(secTotalFee);
|
||||
});
|
||||
}
|
||||
return { series: totalItem.concat(res1), data: totalFee.concat(res2) };
|
||||
}
|
||||
}
|
||||
|
||||
function axesYValueFormatterTT({ value }) {
|
||||
if (value < 10000) {
|
||||
return Number(value).toLocaleString('zh-CN', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
});
|
||||
}
|
||||
return `${(Number(value) / 10000).toLocaleString('zh-CN', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
})}万`;
|
||||
}
|
||||
|
||||
function axesYValueFormatterSD({ value }) {
|
||||
return Number(value).toLocaleString('zh-CN', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<style type="text/css">
|
||||
/* 隐藏右键菜单 */
|
||||
.wea-right-menu-show {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.wea-browser {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
.noDisplay {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* 扩展mask样式的适应性(如QQ浏览器) */
|
||||
.ag-charts-icon {
|
||||
-webkit-mask-image: var(--icon);
|
||||
-webkit-mask-size: contain;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
-webkit-mask-position: center;
|
||||
}
|
||||
</style>
|
||||
BIN
left-toolbar-after.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
left-toolbar-before.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
left-toolbar-reset-last-final.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
left-toolbar-reset-last-fixed.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
left-toolbar-reset-last.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
metric-vertical-button.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
@ -11,6 +11,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"ag-charts-community": "^13.2.1",
|
||||
"ag-charts-enterprise": "13.2.1",
|
||||
"ag-charts-react": "^13.2.1",
|
||||
"react": "^19.1.0",
|
||||
"react-dom": "^19.1.0"
|
||||
|
||||
375
src/App.tsx
@ -1,101 +1,364 @@
|
||||
import { useMemo, useState } from 'react';
|
||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { AgCharts } from 'ag-charts-react';
|
||||
import type { AgCartesianChartOptions } from 'ag-charts-community';
|
||||
import { ModuleRegistry } from 'ag-charts-community';
|
||||
import {
|
||||
AnnotationsModule,
|
||||
ContextMenuModule,
|
||||
CrosshairModule,
|
||||
LicenseManager,
|
||||
ZoomModule,
|
||||
} from 'ag-charts-enterprise';
|
||||
import { AG_CHARTS_LOCALE_ZH_CN } from 'ag-charts-locale';
|
||||
|
||||
const revenueData = [
|
||||
{ month: '1月', revenue: 146, orders: 92, margin: 36 },
|
||||
{ month: '2月', revenue: 158, orders: 101, margin: 39 },
|
||||
{ month: '3月', revenue: 171, orders: 117, margin: 43 },
|
||||
{ month: '4月', revenue: 185, orders: 126, margin: 45 },
|
||||
{ month: '5月', revenue: 193, orders: 133, margin: 47 },
|
||||
{ month: '6月', revenue: 221, orders: 148, margin: 52 },
|
||||
LicenseManager.setLicenseKey('[v3][RELEASE][0102]_NDg2Njc4MzY3MDgzNw==16d78ca762fb5d2ff740aed081e2af7b');
|
||||
ModuleRegistry.registerModules([AnnotationsModule, ContextMenuModule, ZoomModule, CrosshairModule]);
|
||||
|
||||
const yearlyCostData = [
|
||||
{ year: '2021', cost: 2200000, buildingArea: 18600, builtArea: 17200, usableArea: 14800 },
|
||||
{ year: '2022', cost: 2500000, buildingArea: 19100, builtArea: 17600, usableArea: 15300 },
|
||||
{ year: '2023', cost: 3450000, buildingArea: 20600, builtArea: 19000, usableArea: 16400 },
|
||||
{ year: '2024', cost: 9600000, buildingArea: 24800, builtArea: 23200, usableArea: 20100 },
|
||||
{ year: '2025', cost: null, buildingArea: null, builtArea: null, usableArea: null },
|
||||
];
|
||||
|
||||
function App() {
|
||||
const [chartType, setChartType] = useState<'bar' | 'line'>('bar');
|
||||
const metricOptions = [
|
||||
{ key: 'cost', label: '造价(元)', shortLabel: '造价' },
|
||||
{ key: 'buildingArea', label: '建筑面积指标(元/m²)', shortLabel: '建筑' },
|
||||
{ key: 'builtArea', label: '建造面积指标(元/m²)', shortLabel: '建造' },
|
||||
{ key: 'usableArea', label: '使用面积指标(元/m²)', shortLabel: '使用' },
|
||||
] as const;
|
||||
|
||||
const chartOptions = useMemo<AgCartesianChartOptions>(
|
||||
() => ({
|
||||
title: {
|
||||
text: '业务趋势',
|
||||
type MetricKey = (typeof metricOptions)[number]['key'];
|
||||
|
||||
function formatWan(value: number) {
|
||||
return `${Math.round(value / 10000).toLocaleString('zh-CN')}万`;
|
||||
}
|
||||
|
||||
function App() {
|
||||
const workspaceRef = useRef<HTMLElement>(null);
|
||||
const chartFrameRef = useRef<HTMLDivElement>(null);
|
||||
const [metricKey, setMetricKey] = useState<MetricKey>('cost');
|
||||
const [metricMenuOpen, setMetricMenuOpen] = useState(false);
|
||||
|
||||
const selectedMetric = metricOptions.find((option) => option.key === metricKey) ?? metricOptions[0];
|
||||
|
||||
useEffect(() => {
|
||||
const frame = chartFrameRef.current;
|
||||
const fullscreenTarget = workspaceRef.current;
|
||||
if (!frame || !fullscreenTarget) return;
|
||||
|
||||
const getFullscreenButton = () => frame.querySelector<HTMLButtonElement>('.chart-fullscreen-button');
|
||||
|
||||
const syncFullscreenButton = () => {
|
||||
const button = getFullscreenButton();
|
||||
if (!button) return;
|
||||
|
||||
let icon = button.querySelector<HTMLElement>('.ag-charts-myButton-fullScreen');
|
||||
if (!icon) {
|
||||
button.innerHTML = '<i class="anticon anticon-arrow-salt ag-charts-myButton-fullScreen ag-charts-diy-button"></i>';
|
||||
icon = button.querySelector<HTMLElement>('.ag-charts-myButton-fullScreen');
|
||||
}
|
||||
|
||||
const isFullscreen = document.fullscreenElement === fullscreenTarget;
|
||||
button.classList.toggle('ag-charts-toolbar__button--active', isFullscreen);
|
||||
icon?.classList.toggle('anticon-arrow-salt', !isFullscreen);
|
||||
icon?.classList.toggle('anticon-shrink', isFullscreen);
|
||||
};
|
||||
|
||||
const toggleFullscreen = () => {
|
||||
if (document.fullscreenElement === fullscreenTarget) {
|
||||
void document.exitFullscreen();
|
||||
} else {
|
||||
void fullscreenTarget.requestFullscreen();
|
||||
}
|
||||
};
|
||||
|
||||
const handleKeyDown = (event: KeyboardEvent) => {
|
||||
if (event.key !== 'F11') return;
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
toggleFullscreen();
|
||||
};
|
||||
|
||||
const handleFullscreenChange = () => {
|
||||
syncFullscreenButton();
|
||||
};
|
||||
|
||||
const handleToolbarClick = (event: MouseEvent) => {
|
||||
const target = event.target as Element | null;
|
||||
const button = target?.closest<HTMLButtonElement>(
|
||||
'.chart-fullscreen-button',
|
||||
);
|
||||
if (!button || !frame.contains(button)) return;
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
toggleFullscreen();
|
||||
};
|
||||
|
||||
const handleToolbarKeyDown = (event: KeyboardEvent) => {
|
||||
if (event.key !== ' ' && event.key !== 'Enter') return;
|
||||
|
||||
const target = event.target as Element | null;
|
||||
const button = target?.closest<HTMLButtonElement>(
|
||||
'.chart-fullscreen-button',
|
||||
);
|
||||
if (!button || !frame.contains(button)) return;
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
toggleFullscreen();
|
||||
};
|
||||
|
||||
const suppressBrowserContextMenu = (event: MouseEvent) => {
|
||||
event.preventDefault();
|
||||
};
|
||||
|
||||
const observer = new MutationObserver(syncFullscreenButton);
|
||||
document.addEventListener('keydown', handleKeyDown, true);
|
||||
document.addEventListener('fullscreenchange', handleFullscreenChange);
|
||||
document.addEventListener('contextmenu', suppressBrowserContextMenu);
|
||||
frame.addEventListener('contextmenu', suppressBrowserContextMenu);
|
||||
frame.addEventListener('click', handleToolbarClick, true);
|
||||
frame.addEventListener('keydown', handleToolbarKeyDown, true);
|
||||
observer.observe(frame, { childList: true, subtree: true });
|
||||
syncFullscreenButton();
|
||||
|
||||
return () => {
|
||||
document.removeEventListener('keydown', handleKeyDown, true);
|
||||
document.removeEventListener('fullscreenchange', handleFullscreenChange);
|
||||
document.removeEventListener('contextmenu', suppressBrowserContextMenu);
|
||||
frame.removeEventListener('contextmenu', suppressBrowserContextMenu);
|
||||
frame.removeEventListener('click', handleToolbarClick, true);
|
||||
frame.removeEventListener('keydown', handleToolbarKeyDown, true);
|
||||
observer.disconnect();
|
||||
};
|
||||
}, []);
|
||||
|
||||
const chartOptions = useMemo<AgCartesianChartOptions>(() => {
|
||||
const isCost = metricKey === 'cost';
|
||||
const chartData = yearlyCostData.map((datum) => ({
|
||||
year: datum.year,
|
||||
amount: datum.cost == null ? null : isCost ? datum.cost : Math.round((datum.cost / Number(datum[metricKey])) * 100) / 100,
|
||||
}));
|
||||
|
||||
return {
|
||||
theme: {
|
||||
palette: {
|
||||
fills: ['#006f9b', '#ff7faa', '#00994d', '#ff8833', '#00a0dd'],
|
||||
strokes: ['#003f58', '#934962', '#004a25', '#914d1d', '#006288'],
|
||||
},
|
||||
params: {
|
||||
foregroundColor: '#262a33',
|
||||
backgroundColor: '#fff1e5',
|
||||
accentColor: '#0d7680',
|
||||
fontFamily: '"Microsoft YaHei", "PingFang SC", "Segoe UI", Arial, sans-serif',
|
||||
fontSize: 14,
|
||||
tooltipBackgroundColor: '#fff7ef',
|
||||
tooltipTextColor: '#262a33',
|
||||
},
|
||||
},
|
||||
locale: {
|
||||
localeText: AG_CHARTS_LOCALE_ZH_CN,
|
||||
},
|
||||
background: {
|
||||
fill: 'transparent',
|
||||
},
|
||||
padding: {
|
||||
top: 16,
|
||||
right: 16,
|
||||
bottom: 18,
|
||||
left: 24,
|
||||
},
|
||||
data: chartData,
|
||||
zoom: {
|
||||
enabled: true,
|
||||
anchorPointX: 'pointer',
|
||||
anchorPointY: 'pointer',
|
||||
buttons: {
|
||||
enabled: true,
|
||||
visible: 'hover',
|
||||
buttons: [
|
||||
{ icon: 'zoom-out', value: 'zoom-out', section: 'zoom', tooltip: '缩小' },
|
||||
{ icon: 'zoom-in', value: 'zoom-in', section: 'zoom', tooltip: '放大' },
|
||||
{ icon: 'pan-left', value: 'pan-left', section: 'pan', tooltip: '左移' },
|
||||
{ icon: 'pan-right', value: 'pan-right', section: 'pan', tooltip: '右移' },
|
||||
{ icon: 'reset', value: 'reset', section: 'reset', tooltip: '重置' },
|
||||
],
|
||||
},
|
||||
},
|
||||
contextMenu: {
|
||||
enabled: true,
|
||||
items: ['defaults'],
|
||||
},
|
||||
annotations: {
|
||||
enabled: true,
|
||||
toolbar: {
|
||||
buttons: [
|
||||
{
|
||||
icon: 'trend-line-drawing',
|
||||
value: 'line-menu',
|
||||
tooltip: 'Line Tool',
|
||||
},
|
||||
{
|
||||
icon: 'text-annotation',
|
||||
value: 'text-menu',
|
||||
tooltip: 'Text Tool',
|
||||
},
|
||||
{
|
||||
icon: 'arrow-drawing',
|
||||
value: 'shape-menu',
|
||||
tooltip: 'Shape Tool',
|
||||
},
|
||||
{
|
||||
icon: 'fibonacci-retracement-drawing',
|
||||
value: 'fibonacci-menu',
|
||||
tooltip: 'Fibonacci Tool',
|
||||
},
|
||||
{
|
||||
icon: 'delete',
|
||||
value: 'clear',
|
||||
tooltip: 'Clear annotations',
|
||||
},
|
||||
],
|
||||
},
|
||||
subtitle: {
|
||||
text: '收入、订单与毛利表现',
|
||||
},
|
||||
data: revenueData,
|
||||
series: [
|
||||
{
|
||||
type: chartType,
|
||||
xKey: 'month',
|
||||
yKey: 'revenue',
|
||||
yName: '收入',
|
||||
fill: '#2563eb',
|
||||
stroke: '#2563eb',
|
||||
type: 'line',
|
||||
xKey: 'year',
|
||||
yKey: 'amount',
|
||||
yName: selectedMetric.label,
|
||||
stroke: '#0078a8',
|
||||
strokeWidth: 2,
|
||||
marker: {
|
||||
enabled: true,
|
||||
fill: '#0078a8',
|
||||
stroke: '#0078a8',
|
||||
size: 5,
|
||||
},
|
||||
{
|
||||
type: chartType,
|
||||
xKey: 'month',
|
||||
yKey: 'orders',
|
||||
yName: '订单',
|
||||
fill: '#059669',
|
||||
stroke: '#059669',
|
||||
interpolation: {
|
||||
type: 'smooth',
|
||||
},
|
||||
{
|
||||
type: chartType,
|
||||
xKey: 'month',
|
||||
yKey: 'margin',
|
||||
yName: '毛利',
|
||||
fill: '#d97706',
|
||||
stroke: '#d97706',
|
||||
},
|
||||
],
|
||||
axes: {
|
||||
x: {
|
||||
type: 'category',
|
||||
position: 'bottom',
|
||||
line: {
|
||||
enabled: true,
|
||||
stroke: '#c8b9a7',
|
||||
},
|
||||
tick: {
|
||||
enabled: false,
|
||||
},
|
||||
label: {
|
||||
color: '#1f2933',
|
||||
fontSize: 12,
|
||||
},
|
||||
crosshair: {
|
||||
snap: false,
|
||||
},
|
||||
},
|
||||
y: {
|
||||
type: 'number',
|
||||
position: 'left',
|
||||
title: {
|
||||
text: '数值',
|
||||
text: '',
|
||||
},
|
||||
label: {
|
||||
color: '#1f2933',
|
||||
fontSize: 12,
|
||||
formatter: ({ value }) =>
|
||||
isCost
|
||||
? formatWan(Number(value))
|
||||
: Number(value).toLocaleString('zh-CN', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 0,
|
||||
}),
|
||||
},
|
||||
line: {
|
||||
enabled: false,
|
||||
},
|
||||
tick: {
|
||||
enabled: false,
|
||||
},
|
||||
gridLine: {
|
||||
enabled: true,
|
||||
style: [
|
||||
{
|
||||
stroke: '#e5d9ca',
|
||||
lineDash: [0],
|
||||
},
|
||||
],
|
||||
},
|
||||
crosshair: {
|
||||
snap: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
legend: {
|
||||
position: 'bottom',
|
||||
enabled: false,
|
||||
},
|
||||
}),
|
||||
[chartType],
|
||||
);
|
||||
tooltip: {
|
||||
enabled: true,
|
||||
},
|
||||
};
|
||||
}, [metricKey, selectedMetric.label]);
|
||||
|
||||
return (
|
||||
<main className="app-shell">
|
||||
<section className="toolbar" aria-label="图表设置">
|
||||
<div>
|
||||
<h1>AG Chart Service</h1>
|
||||
<p>React 单页图表服务,无路由。</p>
|
||||
<main className="dashboard-shell">
|
||||
<div className="watermark-layer" aria-hidden="true">
|
||||
{Array.from({ length: 18 }).map((_, index) => (
|
||||
<span key={index}>众为数字化管理平台</span>
|
||||
))}
|
||||
</div>
|
||||
<div className="segmented-control" aria-label="切换图表类型">
|
||||
|
||||
<section className="workspace" aria-label="年度费用模板" ref={workspaceRef}>
|
||||
<section className="chart-area" aria-label="年度总费用图表">
|
||||
<div className="chart-frame" ref={chartFrameRef}>
|
||||
<div className="metric-switcher">
|
||||
<button
|
||||
className={chartType === 'bar' ? 'active' : ''}
|
||||
className="metric-switcher-button"
|
||||
type="button"
|
||||
onClick={() => setChartType('bar')}
|
||||
title="切换纵坐标指标"
|
||||
aria-expanded={metricMenuOpen}
|
||||
aria-haspopup="menu"
|
||||
onClick={() => setMetricMenuOpen((open) => !open)}
|
||||
>
|
||||
柱状
|
||||
{selectedMetric.label}
|
||||
</button>
|
||||
{metricMenuOpen ? (
|
||||
<div className="metric-switcher-menu" role="menu" aria-label="切换纵坐标指标">
|
||||
{metricOptions.map((option) => (
|
||||
<button
|
||||
className={chartType === 'line' ? 'active' : ''}
|
||||
className="metric-switcher-menu-item"
|
||||
type="button"
|
||||
onClick={() => setChartType('line')}
|
||||
role="menuitem"
|
||||
key={option.key}
|
||||
aria-current={option.key === metricKey}
|
||||
onClick={() => {
|
||||
setMetricKey(option.key);
|
||||
setMetricMenuOpen(false);
|
||||
}}
|
||||
>
|
||||
折线
|
||||
{option.label}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
<button className="chart-fullscreen-button ag-charts-toolbar__button" type="button" title="全屏(F11)">
|
||||
<i className="anticon anticon-arrow-salt ag-charts-myButton-fullScreen ag-charts-diy-button" />
|
||||
</button>
|
||||
<AgCharts options={chartOptions} />
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="chart-panel" aria-label="业务趋势图表">
|
||||
<AgCharts options={chartOptions} />
|
||||
<aside className="right-placeholder" aria-label="右侧预留区域" />
|
||||
</section>
|
||||
</main>
|
||||
);
|
||||
|
||||
468
src/styles.css
@ -1,9 +1,8 @@
|
||||
:root {
|
||||
color: #172033;
|
||||
background: #f4f7fb;
|
||||
color: #161616;
|
||||
background: #f5e8d8;
|
||||
font-family:
|
||||
Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
||||
sans-serif;
|
||||
"Microsoft YaHei", "PingFang SC", "Segoe UI", Arial, sans-serif;
|
||||
font-synthesis: none;
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
@ -15,102 +14,441 @@
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
min-width: 320px;
|
||||
min-height: 100vh;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
button {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.app-shell {
|
||||
display: grid;
|
||||
grid-template-rows: auto minmax(360px, 1fr);
|
||||
gap: 18px;
|
||||
width: min(1180px, calc(100vw - 32px));
|
||||
min-height: 100vh;
|
||||
margin: 0 auto;
|
||||
padding: 24px 0;
|
||||
.wea-right-menu-show {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.toolbar {
|
||||
.wea-right-menu,
|
||||
.wea-right-menu-show {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.dashboard-shell {
|
||||
position: relative;
|
||||
min-height: 100vh;
|
||||
background: #f5e8d8;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.watermark-layer {
|
||||
position: absolute;
|
||||
inset: -30px;
|
||||
z-index: 0;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(260px, 1fr));
|
||||
grid-auto-rows: 128px;
|
||||
align-items: center;
|
||||
pointer-events: none;
|
||||
color: rgba(150, 140, 128, 0.2);
|
||||
font-size: 16px;
|
||||
letter-spacing: 0;
|
||||
transform: rotate(-18deg);
|
||||
}
|
||||
|
||||
.watermark-layer span {
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.workspace {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(540px, 52vw) 1fr;
|
||||
gap: 28px;
|
||||
height: 100vh;
|
||||
padding: 8px 28px 18px 64px;
|
||||
}
|
||||
|
||||
.chart-area {
|
||||
display: grid;
|
||||
grid-template-rows: minmax(0, 1fr);
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.chart-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.toolbar h1 {
|
||||
.chart-title h1 {
|
||||
margin: 0;
|
||||
font-size: 28px;
|
||||
line-height: 1.15;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.toolbar p {
|
||||
margin: 6px 0 0;
|
||||
color: #5b6578;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.segmented-control {
|
||||
display: inline-grid;
|
||||
grid-template-columns: repeat(2, minmax(72px, 1fr));
|
||||
min-width: 160px;
|
||||
padding: 4px;
|
||||
border: 1px solid #cfd7e6;
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.segmented-control button {
|
||||
min-height: 34px;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
color: #4a5568;
|
||||
background: transparent;
|
||||
.chart-title button {
|
||||
display: grid;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
place-items: center;
|
||||
padding: 0;
|
||||
border: 1px solid rgba(95, 88, 80, 0.18);
|
||||
border-radius: 2px;
|
||||
color: #6d6258;
|
||||
background: rgba(255, 249, 241, 0.36);
|
||||
cursor: pointer;
|
||||
transition:
|
||||
background-color 120ms ease,
|
||||
border-color 120ms ease,
|
||||
color 120ms ease,
|
||||
transform 120ms ease,
|
||||
box-shadow 120ms ease;
|
||||
}
|
||||
|
||||
.segmented-control button.active {
|
||||
color: #ffffff;
|
||||
background: #1f4ed8;
|
||||
.chart-title button:hover {
|
||||
border-color: rgba(0, 120, 168, 0.36);
|
||||
color: #0078a8;
|
||||
background: rgba(255, 252, 248, 0.94);
|
||||
box-shadow: 0 1px 5px rgba(69, 54, 36, 0.12);
|
||||
}
|
||||
|
||||
.chart-panel {
|
||||
min-height: 520px;
|
||||
padding: 16px;
|
||||
border: 1px solid #d9e1ee;
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
.chart-title button:active {
|
||||
transform: translateY(1px);
|
||||
}
|
||||
|
||||
.chart-panel > div {
|
||||
.chart-title button:focus-visible {
|
||||
outline: 2px solid rgba(0, 120, 168, 0.34);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
.chart-title button span {
|
||||
position: relative;
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
}
|
||||
|
||||
.chart-title button span::before {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 1px;
|
||||
width: 10px;
|
||||
height: 1px;
|
||||
background: currentColor;
|
||||
transform: rotate(-35deg);
|
||||
content: "";
|
||||
}
|
||||
|
||||
.chart-title button span::after {
|
||||
position: absolute;
|
||||
right: 1px;
|
||||
bottom: 1px;
|
||||
width: 4px;
|
||||
height: 1px;
|
||||
background: currentColor;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.chart-frame {
|
||||
position: relative;
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
padding: 26px 0 0;
|
||||
}
|
||||
|
||||
.workspace:fullscreen {
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(540px, 52vw) 1fr;
|
||||
gap: 28px;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
padding: 8px 28px 18px 64px;
|
||||
background: #f5e8d8;
|
||||
}
|
||||
|
||||
.workspace:fullscreen .chart-area {
|
||||
height: calc(100vh - 26px);
|
||||
}
|
||||
|
||||
.workspace:fullscreen .right-placeholder {
|
||||
display: block;
|
||||
min-width: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.app-shell {
|
||||
width: min(100vw - 20px, 1180px);
|
||||
grid-template-rows: auto minmax(420px, 1fr);
|
||||
padding: 16px 0;
|
||||
.chart-frame > div {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.toolbar {
|
||||
align-items: stretch;
|
||||
flex-direction: column;
|
||||
.chart-frame .ag-charts-wrapper {
|
||||
--ag-charts-accent-color: #0078a8;
|
||||
--ag-charts-button-background-color: rgba(255, 249, 241, 0.72);
|
||||
--ag-charts-button-border-radius: 3px;
|
||||
--ag-charts-border-color: rgba(90, 82, 72, 0.22);
|
||||
--ag-charts-chrome-background-color: rgba(255, 249, 241, 0.84);
|
||||
}
|
||||
|
||||
.toolbar h1 {
|
||||
font-size: 24px;
|
||||
.chart-frame .ag-charts-toolbar {
|
||||
gap: 8px;
|
||||
padding: 0;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.segmented-control {
|
||||
.chart-frame .ag-charts-annotations__toolbar {
|
||||
left: -46px;
|
||||
top: 24px;
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-annotations__toolbar .ag-charts-toolbar {
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
.metric-switcher {
|
||||
position: absolute;
|
||||
left: 74px;
|
||||
top: 272px;
|
||||
z-index: 12;
|
||||
}
|
||||
|
||||
.metric-switcher-button {
|
||||
display: block;
|
||||
width: 22px;
|
||||
min-height: 112px;
|
||||
padding: 8px 2px;
|
||||
border: 1px solid rgba(90, 82, 72, 0.16);
|
||||
border-radius: 3px;
|
||||
color: #111827;
|
||||
background: rgba(255, 241, 229, 0.68);
|
||||
font-size: 12px;
|
||||
letter-spacing: 2px;
|
||||
line-height: 1.25;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
transition:
|
||||
background-color 120ms ease,
|
||||
border-color 120ms ease,
|
||||
color 120ms ease,
|
||||
box-shadow 120ms ease;
|
||||
writing-mode: vertical-rl;
|
||||
text-orientation: upright;
|
||||
}
|
||||
|
||||
.metric-switcher-button:hover,
|
||||
.metric-switcher-button[aria-expanded="true"] {
|
||||
color: #0078a8;
|
||||
border-color: rgba(0, 120, 168, 0.36);
|
||||
background: rgba(255, 252, 248, 0.94);
|
||||
box-shadow: 0 1px 5px rgba(69, 54, 36, 0.12);
|
||||
}
|
||||
|
||||
.metric-switcher-menu {
|
||||
position: absolute;
|
||||
left: 30px;
|
||||
top: 8px;
|
||||
width: max-content;
|
||||
min-width: 196px;
|
||||
padding: 4px 0;
|
||||
border: 1px solid rgba(90, 82, 72, 0.22);
|
||||
border-radius: 3px;
|
||||
background: #fbede1;
|
||||
box-shadow: 0 4px 14px rgba(69, 54, 36, 0.14);
|
||||
}
|
||||
|
||||
.metric-switcher-menu-item {
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-height: 30px;
|
||||
padding: 0 12px;
|
||||
border: 0;
|
||||
color: #262a33;
|
||||
background: transparent;
|
||||
font-size: 13px;
|
||||
line-height: 30px;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.chart-panel {
|
||||
min-height: 460px;
|
||||
padding: 10px;
|
||||
.metric-switcher-menu-item:hover,
|
||||
.metric-switcher-menu-item[aria-current="true"] {
|
||||
color: #0078a8;
|
||||
background: rgba(255, 252, 248, 0.94);
|
||||
}
|
||||
|
||||
.chart-frame .chart-fullscreen-button {
|
||||
position: absolute;
|
||||
left: 24px;
|
||||
top: 210px;
|
||||
z-index: 9;
|
||||
display: grid;
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
min-width: 34px;
|
||||
min-height: 34px;
|
||||
place-items: center;
|
||||
padding: 0;
|
||||
border: 1px solid rgba(90, 82, 72, 0.22);
|
||||
border-radius: 3px;
|
||||
color: #46413b;
|
||||
background: rgba(255, 249, 241, 0.72);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-toolbar__button[title="Clear annotations"] {
|
||||
transform: translateY(42px);
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-zoom-buttons {
|
||||
top: auto !important;
|
||||
right: 24px !important;
|
||||
bottom: 34px !important;
|
||||
left: auto !important;
|
||||
width: auto !important;
|
||||
height: auto !important;
|
||||
z-index: 8;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transform: translateY(4px);
|
||||
transition:
|
||||
opacity 140ms ease,
|
||||
transform 140ms ease;
|
||||
}
|
||||
|
||||
.chart-frame:hover .ag-charts-zoom-buttons,
|
||||
.chart-frame:focus-within .ag-charts-zoom-buttons,
|
||||
.chart-frame .ag-charts-zoom-buttons:focus-within {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-zoom-buttons .ag-charts-toolbar {
|
||||
position: relative !important;
|
||||
z-index: 9;
|
||||
gap: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
border-radius: 3px;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-toolbar__button {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
color: #46413b;
|
||||
border-color: rgba(90, 82, 72, 0.22);
|
||||
background: rgba(255, 249, 241, 0.72);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-zoom-buttons .ag-charts-toolbar__button {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
min-width: 26px;
|
||||
min-height: 26px;
|
||||
padding: 3px;
|
||||
background: rgba(255, 249, 241, 0.72);
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-toolbar__button:hover,
|
||||
.chart-frame .ag-charts-toolbar__button--active {
|
||||
color: #0078a8;
|
||||
border-color: rgba(0, 120, 168, 0.36);
|
||||
background: rgba(255, 252, 248, 0.94);
|
||||
box-shadow: 0 1px 5px rgba(69, 54, 36, 0.12);
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-myButton-fullScreen {
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-myButton-fullScreen::before,
|
||||
.chart-frame .ag-charts-myButton-fullScreen::after {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
display: block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.chart-frame .anticon-arrow-salt::before {
|
||||
border-top: 1px solid currentColor;
|
||||
border-right: 1px solid currentColor;
|
||||
clip-path: polygon(54% 0, 100% 0, 100% 46%, 86% 46%, 86% 14%, 54% 14%);
|
||||
}
|
||||
|
||||
.chart-frame .anticon-arrow-salt::after {
|
||||
border-bottom: 1px solid currentColor;
|
||||
border-left: 1px solid currentColor;
|
||||
clip-path: polygon(0 54%, 14% 54%, 14% 86%, 46% 86%, 46% 100%, 0 100%);
|
||||
}
|
||||
|
||||
.chart-frame .anticon-shrink::before {
|
||||
top: 2px;
|
||||
left: 2px;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-right: 1px solid currentColor;
|
||||
border-bottom: 1px solid currentColor;
|
||||
}
|
||||
|
||||
.chart-frame .anticon-shrink::after {
|
||||
right: 2px;
|
||||
bottom: 2px;
|
||||
left: auto;
|
||||
top: auto;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-top: 1px solid currentColor;
|
||||
border-left: 1px solid currentColor;
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-toolbar__button:disabled {
|
||||
cursor: not-allowed;
|
||||
opacity: 0.38;
|
||||
}
|
||||
|
||||
.chart-frame .ag-charts-toolbar__button[aria-disabled="true"] {
|
||||
cursor: not-allowed;
|
||||
opacity: 0.38;
|
||||
}
|
||||
|
||||
.right-placeholder {
|
||||
min-width: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
body {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.workspace {
|
||||
grid-template-columns: 1fr;
|
||||
height: auto;
|
||||
min-height: 100vh;
|
||||
padding: 8px 18px 18px 56px;
|
||||
}
|
||||
|
||||
.chart-area {
|
||||
min-height: 520px;
|
||||
}
|
||||
|
||||
.right-placeholder {
|
||||
min-height: 280px;
|
||||
}
|
||||
}
|
||||
|
||||
1
vite-dev.err.log
Normal file
@ -0,0 +1 @@
|
||||
$ vite --host 0.0.0.0 --port "5173"
|
||||
38
vite-dev.log
Normal file
@ -0,0 +1,38 @@
|
||||
Port 5173 is in use, trying another one...
|
||||
|
||||
[32m[1mVITE[22m v7.3.2[39m [2mready in [0m[1m271[22m[2m[0m ms[22m
|
||||
|
||||
[32m➜[39m [1mLocal[22m: [36mhttp://localhost:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://198.18.0.1:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://100.106.162.120:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://192.168.1.155:[1m5174[22m/[39m
|
||||
[2m[32m ➜[39m[22m[2m press [22m[1mh + enter[22m[2m to show help[22m
|
||||
[2m15:45:13[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m15:45:39[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m15:59:24[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m15:59:52[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:00:28[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:00:58[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:06:48[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:07:28[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:07:28[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32m✨ new dependencies optimized: [33mag-charts-enterprise, ag-charts-locale[32m[39m
|
||||
[2m16:07:28[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32m✨ optimized dependencies changed. reloading[39m
|
||||
[2m16:07:47[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:08:26[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:09:28[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:11:07[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:11:48[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:13:15[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:17:34[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:18:10[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:22:30[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:23:11[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:24:37[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:25:42[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mpage reload [39m[2mdemo.html[22m
|
||||
[2m16:25:42[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mpage reload [39m[2mdemo.html[22m
|
||||
[2m16:27:28[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:28:39[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||
[2m16:32:10[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:33:55[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:38:49[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
[2m16:39:34[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles.css[22m
|
||||