Compare commits

..
17 Commits
Author SHA1 Message Date
zwgczx f2b99c3e54 1 2026-08-21 14:39:39 +08:00
zwgczx 3a4e7d73bc 1 2026-08-18 16:37:11 +08:00
zwgczx f0dd3b830c 1 2026-08-17 11:18:34 +08:00
wintsa 66500f66b7 1 2026-08-16 18:11:46 +08:00
wintsa 0eedbfc113 fix 2026-08-16 15:41:14 +08:00
wintsa f594968946 1 2026-08-16 15:25:08 +08:00
zwgczx 2380b3680d 1 2026-08-14 18:12:41 +08:00
zwgczx d5cce5fd21 1 2026-08-12 09:40:53 +08:00
zwgczx 2e489de7a3 导表 2026-08-11 15:25:14 +08:00
zwgczx 1f8325b1c1 1 2026-08-07 10:43:15 +08:00
zwgczx 01ee0ce1f4 '1' 2026-06-01 14:53:26 +08:00
zwgczx c413072afc 1 2026-05-22 09:12:38 +08:00
zwgczx 1d12668e9b 1 2026-05-14 16:43:53 +08:00
zwgczx 6d25ac942f 表格 2026-05-14 14:12:54 +08:00
zwgczx af0bea2e9f 按钮允许点击 2026-05-13 16:32:41 +08:00
zwgczx 6b20b9190e fix 2026-05-12 17:47:25 +08:00
zwgczx 53c1b6f523 fix 2026-05-12 15:56:50 +08:00
70 changed files with 4139 additions and 393 deletions

No files matched your search

@@ -0,0 +1,86 @@
---
name: gitnexus-cli
description: "Use when the user needs to run GitNexus CLI commands like analyze/index a repo, check status, clean the index, generate a wiki, or list indexed repos. Examples: \"Index this repo\", \"Reanalyze the codebase\", \"Generate a wiki\""
---
# GitNexus CLI Commands
Commands below use `node .gitnexus/run.cjs <command>` — the project-local runner `gitnexus analyze` drops next to the index. It auto-selects an available runner at call time (global `gitnexus`, else `pnpm dlx`, else `npx`), so no package-manager assumption and no global install is required.
> **Not analyzed yet, or `node .gitnexus/run.cjs` reports `Cannot find module`** (the gitignored runner is absent — e.g. a fresh clone or `git clean`)? (Re)generate it with `npx gitnexus analyze` from the project root. On **npm 11.x**, if `npx` crashes during install (`node.target is null`), install once with `npm i -g gitnexus` (then `gitnexus analyze`) or use `pnpm --allow-build=@ladybugdb/core --allow-build=gitnexus --allow-build=tree-sitter dlx gitnexus@latest analyze`. See [#1939](https://github.com/abhigyanpatwari/GitNexus/issues/1939).
## Commands
### analyze — Build or refresh the index
```bash
node .gitnexus/run.cjs analyze
```
Run from the project root. This parses all source files, builds the knowledge graph, writes it to `.gitnexus/`, and generates CLAUDE.md / AGENTS.md context files.
| Flag | Effect |
| -------------- | ---------------------------------------------------------------- |
| `--force` | Force full re-index even if up to date |
| `--embeddings` | Enable embedding generation for semantic search (off by default) |
| `--drop-embeddings` | Drop existing embeddings on rebuild. By default, an `analyze` without `--embeddings` preserves them. |
| `--pdg` | Build the program-dependence layers used by `explain` and `pdg_query` (taint, CDG, and REACHING_DEF). |
**When to run:** First time in a project, after major code changes, or when `gitnexus://repo/{name}/context` reports the index is stale. In Claude Code, a PostToolUse hook detects staleness after `git commit` and `git merge` and notifies the agent to run `analyze` — the hook does not run analyze itself, to avoid blocking the agent for up to 120s and risking KuzuDB corruption on timeout.
### status — Check index freshness
```bash
node .gitnexus/run.cjs status
```
Shows whether the current repo has a GitNexus index, when it was last updated, and symbol/relationship counts. Use this to check if re-indexing is needed.
### clean — Delete the index
```bash
node .gitnexus/run.cjs clean
```
Deletes the `.gitnexus/` directory and unregisters the repo from the global registry. Use before re-indexing if the index is corrupt or after removing GitNexus from a project.
| Flag | Effect |
| --------- | ------------------------------------------------- |
| `--force` | Skip confirmation prompt |
| `--all` | Clean all indexed repos, not just the current one |
### wiki — Generate documentation from the graph
```bash
node .gitnexus/run.cjs wiki
```
Generates repository documentation from the knowledge graph using an LLM. Requires an API key (saved to `~/.gitnexus/config.json` on first use).
| Flag | Effect |
| ------------------- | ----------------------------------------- |
| `--force` | Force full regeneration |
| `--model <model>` | LLM model (default: minimax/minimax-m2.5) |
| `--base-url <url>` | LLM API base URL |
| `--api-key <key>` | LLM API key |
| `--concurrency <n>` | Parallel LLM calls (default: 3) |
| `--gist` | Publish wiki as a public GitHub Gist |
### list — Show all indexed repos
```bash
node .gitnexus/run.cjs list
```
Lists all repositories registered in `~/.gitnexus/registry.json`. The MCP `list_repos` tool provides the same information.
## After Indexing
1. **Read `gitnexus://repo/{name}/context`** to verify the index loaded
2. Use the other GitNexus skills (`exploring`, `debugging`, `impact-analysis`, `refactoring`) for your task
## Troubleshooting
- **"Not inside a git repository"**: Run from a directory inside a git repo
- **Index is stale after re-analyzing**: Restart Claude Code to reload the MCP server
- **Embeddings slow**: Omit `--embeddings` (it's off by default) or set `OPENAI_API_KEY` for faster API-based embedding
@@ -0,0 +1,101 @@
---
name: gitnexus-debugging
description: "Use when the user is debugging a bug, tracing an error, or asking why something fails. Examples: \"Why is X failing?\", \"Where does this error come from?\", \"Trace this bug\""
---
# Debugging with GitNexus
## When to Use
- "Why is this function failing?"
- "Trace where this error comes from"
- "Who calls this method?"
- "This endpoint returns 500"
- Investigating bugs, errors, or unexpected behavior
## Workflow
```
1. query({search_query: "<error or symptom>"}) → Find related execution flows
2. context({name: "<suspect>"}) → See callers/callees/processes
3. READ gitnexus://repo/{name}/process/{name} → Trace execution flow
4. cypher({statement: "MATCH path..."}) → Custom traces if needed
```
> If "Index is stale" → run `node .gitnexus/run.cjs analyze` in terminal.
## Checklist
```
- [ ] Understand the symptom (error message, unexpected behavior)
- [ ] query for error text or related code
- [ ] Identify the suspect function from returned processes
- [ ] context to see callers and callees
- [ ] Trace execution flow via process resource if applicable
- [ ] cypher for custom call chain traces if needed
- [ ] Read source files to confirm root cause
```
## Debugging Patterns
| Symptom | GitNexus Approach |
| -------------------- | ---------------------------------------------------------- |
| Error message | `query` for error text → `context` on throw sites |
| Wrong return value | `context` on the function → trace callees for data flow |
| Intermittent failure | `context` → look for external calls, async deps |
| Performance issue | `context` → find symbols with many callers (hot paths) |
| Recent regression | `detect_changes` to see what your changes affect |
| "How does A reach B?" | `trace` between the two symbols — shortest call chain in one call |
## Tools
**query** — find code related to error:
```
query({search_query: "payment validation error"})
→ Processes: CheckoutFlow, ErrorHandling
→ Symbols: validatePayment, handlePaymentError, PaymentException
```
**context** — full context for a suspect:
```
context({name: "validatePayment"})
→ Incoming calls: processCheckout, webhookHandler
→ Outgoing calls: verifyCard, fetchRates (external API!)
→ Processes: CheckoutFlow (step 3/7)
```
**cypher** — custom call chain traces:
```cypher
MATCH path = (a)-[:CodeRelation {type: 'CALLS'}*1..2]->(b:Function {name: "validatePayment"})
RETURN [n IN nodes(path) | n.name] AS chain
```
**trace** — shortest call chain between two symbols ("how does A reach B?"), one call instead of chaining `context` hops:
```
trace({ from: "processCheckout", to: "fetchRates" })
→ status: ok, hopCount: 3
→ hops: processCheckout → validatePayment → verifyCard → fetchRates
→ edges: CALLS (1.0), CALLS (0.95), CALLS (1.0)
```
When no path exists, `trace` reports the furthest reachable node — exactly where the chain breaks (dynamic dispatch, reflection, or an external boundary).
## Example: "Payment endpoint returns 500 intermittently"
```
1. query({search_query: "payment error handling"})
→ Processes: CheckoutFlow, ErrorHandling
→ Symbols: validatePayment, handlePaymentError
2. context({name: "validatePayment"})
→ Outgoing calls: verifyCard, fetchRates (external API!)
3. READ gitnexus://repo/my-app/process/CheckoutFlow
→ Step 3: validatePayment → calls fetchRates (external)
4. Root cause: fetchRates calls external API without proper timeout
```
@@ -0,0 +1,78 @@
---
name: gitnexus-exploring
description: "Use when the user asks how code works, wants to understand architecture, trace execution flows, or explore unfamiliar parts of the codebase. Examples: \"How does X work?\", \"What calls this function?\", \"Show me the auth flow\""
---
# Exploring Codebases with GitNexus
## When to Use
- "How does authentication work?"
- "What's the project structure?"
- "Show me the main components"
- "Where is the database logic?"
- Understanding code you haven't seen before
## Workflow
```
1. READ gitnexus://repos → Discover indexed repos
2. READ gitnexus://repo/{name}/context → Codebase overview, check staleness
3. query({search_query: "<what you want to understand>"}) → Find related execution flows
4. context({name: "<symbol>"}) → Deep dive on specific symbol
5. READ gitnexus://repo/{name}/process/{name} → Trace full execution flow
```
> If step 2 says "Index is stale" → run `node .gitnexus/run.cjs analyze` in terminal.
## Checklist
```
- [ ] READ gitnexus://repo/{name}/context
- [ ] query for the concept you want to understand
- [ ] Review returned processes (execution flows)
- [ ] context on key symbols for callers/callees
- [ ] READ process resource for full execution traces
- [ ] Read source files for implementation details
```
## Resources
| Resource | What you get |
| --------------------------------------- | ------------------------------------------------------- |
| `gitnexus://repo/{name}/context` | Stats, staleness warning (~150 tokens) |
| `gitnexus://repo/{name}/clusters` | All functional areas with cohesion scores (~300 tokens) |
| `gitnexus://repo/{name}/cluster/{name}` | Area members with file paths (~500 tokens) |
| `gitnexus://repo/{name}/process/{name}` | Step-by-step execution trace (~200 tokens) |
## Tools
**query** — find execution flows related to a concept:
```
query({search_query: "payment processing"})
→ Processes: CheckoutFlow, RefundFlow, WebhookHandler
→ Symbols grouped by flow with file locations
```
**context** — 360-degree view of a symbol:
```
context({name: "validateUser"})
→ Incoming calls: loginHandler, apiMiddleware
→ Outgoing calls: checkToken, getUserById
→ Processes: LoginFlow (step 2/5), TokenRefresh (step 1/3)
```
## Example: "How does payment processing work?"
```
1. READ gitnexus://repo/my-app/context → 918 symbols, 45 processes
2. query({search_query: "payment processing"})
→ CheckoutFlow: processPayment → validateCard → chargeStripe
→ RefundFlow: initiateRefund → calculateRefund → processRefund
3. context({name: "processPayment"})
→ Incoming: checkoutHandler, webhookHandler
→ Outgoing: validateCard, chargeStripe, saveTransaction
4. Read src/payments/processor.ts for implementation details
```
@@ -0,0 +1,138 @@
---
name: gitnexus-guide
description: "Use when the user asks about GitNexus itself — available tools, how to query the knowledge graph, MCP resources, graph schema, or workflow reference. Examples: \"What GitNexus tools are available?\", \"How do I use GitNexus?\""
---
# GitNexus Guide
Quick reference for all GitNexus MCP tools, resources, and the knowledge graph schema.
## Always Start Here
For any task involving code understanding, debugging, impact analysis, or refactoring:
1. **Read `gitnexus://repo/{name}/context`** — codebase overview + check index freshness
2. **Match your task to a skill below** and **read that skill file**
3. **Follow the skill's workflow and checklist**
> If step 1 warns the index is stale, run `node .gitnexus/run.cjs analyze` in the terminal first.
## Skills
| Task | Skill to read |
| -------------------------------------------- | ------------------- |
| Understand architecture / "How does X work?" | `gitnexus-exploring` |
| Blast radius / "What breaks if I change X?" | `gitnexus-impact-analysis` |
| Trace bugs / "Why is X failing?" | `gitnexus-debugging` |
| Rename / extract / split / refactor | `gitnexus-refactoring` |
| Tools, resources, schema reference | `gitnexus-guide` (this file) |
| Index, status, clean, wiki CLI commands | `gitnexus-cli` |
## Tools Reference
| Tool | What it gives you |
| ---------------- | ------------------------------------------------------------------------ |
| `query` | Process-grouped code intelligence — execution flows related to a concept |
| `context` | 360-degree symbol view — categorized refs, processes it participates in |
| `impact` | Symbol blast radius — what breaks at depth 1/2/3 with confidence |
| `trace` | Shortest path between two symbols — "how does A reach B?" in one call |
| `detect_changes` | Git-diff impact — what do your current changes affect |
| `rename` | Multi-file coordinated rename with confidence-tagged edits |
| `cypher` | Raw graph queries (read `gitnexus://repo/{name}/schema` first) |
| `explain` | Persisted taint findings — source→sink data flows (needs `analyze --pdg`) |
| `pdg_query` | Control/data dependence — what gates X (CDG) / where Y flows (REACHING_DEF); needs `analyze --pdg` |
| `check` | Check graph invariants such as circular imports |
| `route_map` | API route map — which components/hooks fetch which endpoints, and the handler files that serve them |
| `shape_check` | Response-shape drift — keys each route returns vs keys its consumers access (flags MISMATCH) |
| `api_impact` | Pre-change report for an API route — consumers, middleware, shape mismatches, risk level |
| `tool_map` | MCP/RPC tool definitions and the files that handle them |
| `group_list` | List configured multi-repo groups, or one group's config |
| `group_sync` | Rebuild a group's Contract Registry (cross-repo HTTP contract links); run after `group.yaml` changes or member re-index |
| `list_repos` | Discover indexed repos (paginated — `limit`/`offset`) |
### Paginating `list_repos`
`list_repos` is paginated so a large registry is not truncated by MCP/LLM token limits. It takes optional `limit` (default **50**, max **200**) and `offset`, and returns:
```jsonc
{
"repositories": [
{ "name": "...", "path": "...", "indexedAt": "...", "lastCommit": "...", "stats": { } }
],
"pagination": {
"total": 437,
"limit": 50,
"offset": 0,
"returned": 50,
"hasMore": true,
"nextOffset": 50
}
}
```
To enumerate **every** repository, keep calling with `offset` set to `pagination.nextOffset` until `hasMore` is `false`:
```text
list_repos {} → repos 1–50, nextOffset 50, hasMore true
list_repos { offset: 50 } → repos 51–100, nextOffset 100, hasMore true
…
list_repos { offset: 400 } → repos 401–437, hasMore false (done)
```
Notes: `offset` ≥ `total` returns an empty page (with `total` still reported). Out-of-range or malformed `limit`/`offset` (non-integer, `limit` outside `[1, 200]`, `offset < 0`) are rejected with a clear error — `limit` above the max is rejected, not silently capped. The order is deterministic (lower-cased name, then path), so paging never skips or duplicates an entry while the registry is unchanged.
### Taint findings (`explain`)
`explain` returns taint findings recorded by `gitnexus analyze --pdg` — intra-procedural `TAINTED` edges plus cross-function `TAINT_PATH` hops where the interprocedural taint phase found a function-level source→sink chain. Each finding includes a sink category (command-injection, code-injection, path-traversal, sql-injection, xss), source/sink lines, and the ordered hop path with the variable carried on each hop.
- `explain {}` — enumerate all findings for the repo (bounded by `limit`, deterministic order)
- `explain { target: "src/vuln.ts" }` — findings in a file (suffix path match accepted)
- `explain { target: "runUserCommand" }` — findings in a function (resolved like `context`; ambiguous names return ranked candidates)
A repo indexed without `--pdg` returns a clear "no taint layer" note. Caveats: closure/callback, property/field, and implicit flows are not modeled, and interprocedural findings are function-level `TAINT_PATH` hops rather than statement-level path proof, so the absence of a finding is **not** proof of safety. `SANITIZES` (sanitizer-kill) edges are queryable via `cypher`.
### Control & data dependence (`pdg_query`)
`pdg_query` reads the control/data-dependence layers `gitnexus analyze --pdg` records (CDG + REACHING_DEF, basic-block granular) — the control/data analog of `explain`. It is **always anchored** (a `target` file path or symbol, resolved like `context`) and has two modes:
- `pdg_query { mode: "controls", target: "..." }` — CDG: "under what condition does X run?". Each edge is a controlling predicate block → dependent block with the branch sense (`'T'`/`'F'`) in `reason`; an edge into an early `return`/`throw` is flagged `guard: true` (guard-clause discovery — the sense depends on the predicate, so don't filter guards by a fixed label).
- `pdg_query { mode: "flows", target: "...", variable?: "..." }` — REACHING_DEF def→use edges within the function; pass `variable` to trace one binding.
A repo indexed without `--pdg` returns a "no PDG layer" note (or "status unknown" when the layer can't be confirmed). Intra-procedural only — cross-function flow is taint's domain (`explain`). The raw CDG/REACHING_DEF edges are also queryable via `cypher`. See the `gitnexus-pdg-query` skill for the full query surface.
### Shortest path between two symbols (`trace`)
`trace` answers "how does A reach B?" in one call — the shortest directed path over `CALLS` (plus `HAS_METHOD`, so a class-rooted trace descends into its methods) instead of chaining 3–8 `context`/`impact` hops by hand.
- `trace { from: "validateUser", to: "executeQuery" }` — shortest path between two symbols.
- Disambiguate common names with `from_uid`/`to_uid` (zero-ambiguity) or `from_file`/`to_file`; an ambiguous name returns ranked candidates.
- `maxDepth` (default 10, max 30) bounds the search; `includeTests` (default false) lets the traversal pass through test-file symbols.
Returns ordered `hops` (each `{ name, filePath, startLine }`) and an aligned `edges[]` of `{ relType, confidence }`, so call hops and containment (`HAS_METHOD`) hops stay distinguishable. When no path exists it reports the **furthest** reachable node (where the chain breaks) and sets `truncated: true` if a traversal cap was hit first. Every result carries a `status`: `ok` / `no_path` / `ambiguous` / `not_found` / `error`.
Cross-repo (experimental): pass `repo: "@groupName"` to trace across a group's member repos — the path may cross **one** `ContractLink` boundary (reported as a `CONTRACT_LINK` hop with the bridged contract in `crossings[]`). Omit `to` entirely to follow `from`'s outgoing HTTP call to whatever provider endpoint it lands on. Groups are configured via `group_list` / `group_sync`.
## Resources Reference
Lightweight reads (~100-500 tokens) for navigation:
| Resource | Content |
| ---------------------------------------------- | ----------------------------------------- |
| `gitnexus://repo/{name}/context` | Stats, staleness check |
| `gitnexus://repo/{name}/clusters` | All functional areas with cohesion scores |
| `gitnexus://repo/{name}/cluster/{clusterName}` | Area members |
| `gitnexus://repo/{name}/processes` | All execution flows |
| `gitnexus://repo/{name}/process/{processName}` | Step-by-step trace |
| `gitnexus://repo/{name}/schema` | Graph schema for Cypher |
## Graph Schema
**Nodes:** File, Folder, Function, Class, Interface, Method, CodeElement, Community, Process, Route, Tool, plus language-specific types (Struct, Enum, Trait, Impl, Namespace, Module, …) and BasicBlock (`--pdg` indexes only). The full node list lives in `gitnexus://repo/{name}/schema`.
**Edges (via CodeRelation.type):** CALLS, IMPORTS, EXTENDS, IMPLEMENTS, DEFINES, CONTAINS, MEMBER_OF, HAS_METHOD, HAS_PROPERTY, ACCESSES, METHOD_OVERRIDES, METHOD_IMPLEMENTS, STEP_IN_PROCESS, HANDLES_ROUTE, FETCHES, HANDLES_TOOL, ENTRY_POINT_OF, WRAPS, QUERIES, INJECTS, plus `--pdg`-only types (CFG, REACHING_DEF, TAINTED, SANITIZES, TAINT_PATH, CDG — zero rows on a default index).
Read `gitnexus://repo/{name}/schema` before writing Cypher — it is the authoritative schema for the indexed repo.
```cypher
MATCH (caller)-[:CodeRelation {type: 'CALLS'}]->(f:Function {name: "myFunc"})
RETURN caller.name, caller.filePath
```
@@ -0,0 +1,97 @@
---
name: gitnexus-impact-analysis
description: "Use when the user wants to know what will break if they change something, or needs safety analysis before editing code. Examples: \"Is it safe to change X?\", \"What depends on this?\", \"What will break?\""
---
# Impact Analysis with GitNexus
## When to Use
- "Is it safe to change this function?"
- "What will break if I modify X?"
- "Show me the blast radius"
- "Who uses this code?"
- Before making non-trivial code changes
- Before committing — to understand what your changes affect
## Workflow
```
1. impact({target: "X", direction: "upstream"}) → What depends on this
2. READ gitnexus://repo/{name}/processes → Check affected execution flows
3. detect_changes() → Map current git changes to affected flows
4. Assess risk and report to user
```
> If "Index is stale" → run `node .gitnexus/run.cjs analyze` in terminal.
## Checklist
```
- [ ] impact({target, direction: "upstream"}) to find dependents
- [ ] Review d=1 items first (these WILL BREAK)
- [ ] Check high-confidence (>0.8) dependencies
- [ ] READ processes to check affected execution flows
- [ ] detect_changes() for pre-commit check
- [ ] Assess risk level and report to user
```
## Understanding Output
| Depth | Risk Level | Meaning |
| ----- | ---------------- | ------------------------ |
| d=1 | **WILL BREAK** | Direct callers/importers |
| d=2 | LIKELY AFFECTED | Indirect dependencies |
| d=3 | MAY NEED TESTING | Transitive effects |
## Risk Assessment
| Affected | Risk |
| ------------------------------ | -------- |
| <5 symbols, few processes | LOW |
| 5-15 symbols, 2-5 processes | MEDIUM |
| >15 symbols or many processes | HIGH |
| Critical path (auth, payments) | CRITICAL |
## Tools
**impact** — the primary tool for symbol blast radius:
```
impact({
target: "validateUser",
direction: "upstream",
minConfidence: 0.8,
maxDepth: 3
})
→ d=1 (WILL BREAK):
- loginHandler (src/auth/login.ts:42) [CALLS, 100%]
- apiMiddleware (src/api/middleware.ts:15) [CALLS, 100%]
→ d=2 (LIKELY AFFECTED):
- authRouter (src/routes/auth.ts:22) [CALLS, 95%]
```
**detect_changes** — git-diff based impact analysis:
```
detect_changes({scope: "staged"})
→ Changed: 5 symbols in 3 files
→ Affected: LoginFlow, TokenRefresh, APIMiddlewarePipeline
→ Risk: MEDIUM
```
## Example: "What breaks if I change validateUser?"
```
1. impact({target: "validateUser", direction: "upstream"})
→ d=1: loginHandler, apiMiddleware (WILL BREAK)
→ d=2: authRouter, sessionManager (LIKELY AFFECTED)
2. READ gitnexus://repo/my-app/processes
→ LoginFlow and TokenRefresh touch validateUser
3. Risk: 2 direct callers, 2 processes = MEDIUM
```
@@ -0,0 +1,121 @@
---
name: gitnexus-refactoring
description: "Use when the user wants to rename, extract, split, move, or restructure code safely. Examples: \"Rename this function\", \"Extract this into a module\", \"Refactor this class\", \"Move this to a separate file\""
---
# Refactoring with GitNexus
## When to Use
- "Rename this function safely"
- "Extract this into a module"
- "Split this service"
- "Move this to a new file"
- Any task involving renaming, extracting, splitting, or restructuring code
## Workflow
```
1. impact({target: "X", direction: "upstream"}) → Map all dependents
2. query({search_query: "X"}) → Find execution flows involving X
3. context({name: "X"}) → See all incoming/outgoing refs
4. Plan update order: interfaces → implementations → callers → tests
```
> If "Index is stale" → run `node .gitnexus/run.cjs analyze` in terminal.
## Checklists
### Rename Symbol
```
- [ ] rename({symbol_name: "oldName", new_name: "newName", dry_run: true}) — preview all edits
- [ ] Review graph edits (high confidence) and text_search edits (review carefully)
- [ ] If satisfied: rename({..., dry_run: false}) — apply edits
- [ ] detect_changes() — verify only expected files changed
- [ ] Run tests for affected processes
```
### Extract Module
```
- [ ] context({name: target}) — see all incoming/outgoing refs
- [ ] impact({target, direction: "upstream"}) — find all external callers
- [ ] Define new module interface
- [ ] Extract code, update imports
- [ ] detect_changes() — verify affected scope
- [ ] Run tests for affected processes
```
### Split Function/Service
```
- [ ] context({name: target}) — understand all callees
- [ ] Group callees by responsibility
- [ ] impact({target, direction: "upstream"}) — map callers to update
- [ ] Create new functions/services
- [ ] Update callers
- [ ] detect_changes() — verify affected scope
- [ ] Run tests for affected processes
```
## Tools
**rename** — automated multi-file rename:
```
rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: true})
→ 12 edits across 8 files
→ 10 graph edits (high confidence), 2 text_search edits (review)
→ Changes: [{file_path, edits: [{line, old_text, new_text, confidence}]}]
```
**impact** — map all dependents first:
```
impact({target: "validateUser", direction: "upstream"})
→ d=1: loginHandler, apiMiddleware, testUtils
→ Affected Processes: LoginFlow, TokenRefresh
```
**detect_changes** — verify your changes after refactoring:
```
detect_changes({scope: "all"})
→ Changed: 8 files, 12 symbols
→ Affected processes: LoginFlow, TokenRefresh
→ Risk: MEDIUM
```
**cypher** — custom reference queries:
```cypher
MATCH (caller)-[:CodeRelation {type: 'CALLS'}]->(f:Function {name: "validateUser"})
RETURN caller.name, caller.filePath ORDER BY caller.filePath
```
## Risk Rules
| Risk Factor | Mitigation |
| ------------------- | ----------------------------------------- |
| Many callers (>5) | Use rename for automated updates |
| Cross-area refs | Use detect_changes after to verify scope |
| String/dynamic refs | query to find them |
| External/public API | Version and deprecate properly |
## Example: Rename `validateUser` to `authenticateUser`
```
1. rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: true})
→ 12 edits: 10 graph (safe), 2 text_search (review)
→ Files: validator.ts, login.ts, middleware.ts, config.json...
2. Review text_search edits (config.json: dynamic reference!)
3. rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: false})
→ Applied 12 edits across 8 files
4. detect_changes({scope: "all"})
→ Affected: LoginFlow, TokenRefresh
→ Risk: MEDIUM — run tests for these flows
```
BIN
View File
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
[ 159ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
@@ -0,0 +1 @@
[ 158ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
@@ -0,0 +1 @@
[ 337ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
Whitespace-only changes.
@@ -0,0 +1,70 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e58]: 正在加载数据
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- generic [ref=e79]: 正在加载数据
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: 加载中
@@ -0,0 +1,80 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [active] [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e58]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- dialog "建筑性质筛选" [ref=e94]:
- generic [ref=e95]:
- heading "建筑性质" [level=2] [ref=e96]
- button "关闭" [ref=e97] [cursor=pointer]: ×
- searchbox "搜索" [ref=e99]
- generic [ref=e100]: 未选择
- generic [ref=e101]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- generic [ref=e103]:
- button "清空当前" [ref=e104] [cursor=pointer]
- button "取消" [ref=e105] [cursor=pointer]
- button "确认" [ref=e106] [cursor=pointer]
@@ -0,0 +1,69 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e58]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
@@ -0,0 +1,86 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [active] [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e58]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- dialog "建筑性质筛选" [ref=e108]:
- generic [ref=e109]:
- heading "建筑性质" [level=2] [ref=e110]
- button "关闭" [ref=e111] [cursor=pointer]: ×
- searchbox "搜索" [ref=e113]
- generic [ref=e114]: 未选择
- tree [ref=e116]:
- treeitem [ref=e117]:
- button "公共建筑" [ref=e120] [cursor=pointer]
- treeitem [ref=e123]:
- button "民用建筑" [ref=e126] [cursor=pointer]
- treeitem [ref=e129]:
- button "工业建筑" [ref=e132] [cursor=pointer]
- generic [ref=e135]:
- button "清空当前" [ref=e136] [cursor=pointer]
- button "取消" [ref=e137] [cursor=pointer]
- button "确认" [ref=e138] [cursor=pointer]
@@ -0,0 +1,82 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e58]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- dialog "建筑性质筛选" [ref=e108]:
- generic [ref=e109]:
- heading "建筑性质" [level=2] [ref=e110]
- button "关闭" [ref=e111] [cursor=pointer]: ×
- searchbox "搜索" [ref=e113]: 公共
- generic [ref=e114]: 已选 1 项
- tree [ref=e139]:
- treeitem [ref=e140]:
- button "公共建筑" [active] [pressed] [ref=e143] [cursor=pointer]
- generic [ref=e135]:
- button "清空当前" [ref=e136] [cursor=pointer]
- button "取消" [ref=e137] [cursor=pointer]
- button "确认" [ref=e138] [cursor=pointer]
@@ -0,0 +1,72 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质 1" [pressed] [ref=e146] [cursor=pointer]:
- generic [ref=e27]: 建筑性质
- strong [ref=e147]: "1"
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- button "清空" [ref=e148] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e149]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
@@ -0,0 +1,89 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质 1" [active] [pressed] [ref=e146] [cursor=pointer]:
- generic [ref=e27]: 建筑性质
- strong [ref=e147]: "1"
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- button "清空" [ref=e148] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e149]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
- dialog "建筑性质筛选" [ref=e150]:
- generic [ref=e151]:
- heading "建筑性质" [level=2] [ref=e152]
- button "关闭" [ref=e153] [cursor=pointer]: ×
- searchbox "搜索" [ref=e155]
- generic [ref=e156]: 已选 1 项
- tree [ref=e158]:
- treeitem [ref=e159]:
- button "公共建筑" [pressed] [ref=e162] [cursor=pointer]
- treeitem [ref=e165]:
- button "民用建筑" [ref=e168] [cursor=pointer]
- treeitem [ref=e171]:
- button "工业建筑" [ref=e174] [cursor=pointer]
- generic [ref=e177]:
- button "清空当前" [ref=e178] [cursor=pointer]
- button "取消" [ref=e179] [cursor=pointer]
- button "确认" [ref=e180] [cursor=pointer]
Whitespace-only changes.
@@ -0,0 +1,70 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e58]: 正在加载数据
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- generic [ref=e79]: 正在加载数据
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: 加载中
@@ -0,0 +1,85 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [active] [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e59]:
- figure "图表,共有0个系列":
- generic [ref=e60]:
- img "interactive chart"
- region [ref=e61]
- toolbar "标注" [ref=e62]:
- button "库" [ref=e63] [cursor=pointer]
- button "指" [ref=e64] [cursor=pointer]
- button "均" [ref=e65] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e66]
- button "Text Tool" [disabled] [ref=e67]
- button "Shape Tool" [disabled] [ref=e68]
- button "Fibonacci Tool" [disabled] [ref=e69]
- button "全屏(F11)" [ref=e70] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e71]
- button "切换到表格" [ref=e72] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e73]:
- button "缩小" [disabled] [ref=e74]
- button "放大" [ref=e75] [cursor=pointer]
- button "左移" [disabled] [ref=e76]
- button "右移" [disabled] [ref=e77]
- button "重置" [disabled] [ref=e78]
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
- complementary "选择内容" [ref=e85]:
- tablist "选择内容切换项" [ref=e86]:
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
- tab "设施类别" [ref=e88] [cursor=pointer]
- tab "建设阶段" [ref=e89] [cursor=pointer]
- tab "规划形式" [ref=e90] [cursor=pointer]
- generic [ref=e91]:
- generic [ref=e92]: 自然地理区位
- generic [ref=e93]: 接口待接入
- dialog "建筑性质筛选" [ref=e94]:
- generic [ref=e95]:
- heading "建筑性质" [level=2] [ref=e96]
- button "关闭" [ref=e97] [cursor=pointer]: ×
- searchbox "搜索" [ref=e99]
- generic [ref=e100]: 未选择
- tree [ref=e102]:
- treeitem [ref=e103]:
- button "公共建筑" [ref=e106] [cursor=pointer]
- treeitem [ref=e109]:
- button "民用建筑" [ref=e112] [cursor=pointer]
- treeitem [ref=e115]:
- button "工业建筑" [ref=e118] [cursor=pointer]
- generic [ref=e121]:
- button "清空当前" [ref=e122] [cursor=pointer]
- button "取消" [ref=e123] [cursor=pointer]
- button "确认" [ref=e124] [cursor=pointer]
Whitespace-only changes.
@@ -0,0 +1,68 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
- generic [ref=e58]:
- figure "图表,共有0个系列":
- generic [ref=e59]:
- img "interactive chart"
- region [ref=e60]
- toolbar "标注" [ref=e61]:
- button "库" [ref=e62] [cursor=pointer]
- button "指" [ref=e63] [cursor=pointer]
- button "均" [ref=e64] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e65]
- button "Text Tool" [disabled] [ref=e66]
- button "Shape Tool" [disabled] [ref=e67]
- button "Fibonacci Tool" [disabled] [ref=e68]
- button "全屏(F11)" [ref=e69] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e70]
- button "切换到表格" [ref=e71] [cursor=pointer]:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e72]:
- button "缩小" [disabled] [ref=e73]
- button "放大" [ref=e74] [cursor=pointer]
- button "左移" [disabled] [ref=e75]
- button "右移" [disabled] [ref=e76]
- button "重置" [disabled] [ref=e77]
- button "收起选择区" [expanded] [ref=e78] [cursor=pointer]
- complementary "选择内容" [ref=e82]:
- tablist "选择内容切换项" [ref=e83]:
- tab "自然地理区位" [selected] [ref=e84] [cursor=pointer]
- tab "设施类别" [ref=e85] [cursor=pointer]
- tab "建设阶段" [ref=e86] [cursor=pointer]
- tab "规划形式" [ref=e87] [cursor=pointer]
- generic [ref=e88]:
- generic [ref=e89]: 自然地理区位
- generic [ref=e90]: 加载中
@@ -0,0 +1,116 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]
- button "自然地理区位" [ref=e12] [cursor=pointer]
- button "设施类别" [ref=e17] [cursor=pointer]
- button "建筑性质" [ref=e23] [cursor=pointer]
- button "建设阶段" [ref=e28] [cursor=pointer]
- button "规划形式" [ref=e35] [cursor=pointer]
- button "时间" [ref=e42] [cursor=pointer]
- button "面积" [ref=e46] [cursor=pointer]
- region "年度总费用图表" [ref=e54]:
- generic [ref=e55]:
- generic [ref=e58]:
- figure "图表,共有0个系列":
- generic [ref=e59]:
- img "interactive chart"
- region [ref=e60]
- toolbar "标注" [ref=e61]:
- button "库" [ref=e62] [cursor=pointer]
- button "指" [ref=e63] [cursor=pointer]
- button "均" [ref=e64] [cursor=pointer]
- button "Line Tool" [disabled] [ref=e65]
- button "Text Tool" [disabled] [ref=e66]
- button "Shape Tool" [disabled] [ref=e67]
- button "Fibonacci Tool" [disabled] [ref=e68]
- button "全屏(F11)" [ref=e69] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e70]
- button "切换到趋势图" [active] [pressed] [ref=e91] [cursor=pointer]:
- generic: 表
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e72]:
- button "缩小" [disabled] [ref=e73]
- button "放大" [ref=e74] [cursor=pointer]
- button "左移" [disabled] [ref=e75]
- button "右移" [disabled] [ref=e76]
- button "重置" [disabled] [ref=e77]
- generic [ref=e93]:
- button "模板库" [ref=e94] [cursor=pointer]: 库
- button "指标树形" [ref=e95] [cursor=pointer]: 指
- button "切换到趋势图" [ref=e96] [cursor=pointer]: 表
- button "全屏" [ref=e97] [cursor=pointer]
- button "纵坐标:造价(元)" [ref=e100] [cursor=pointer]: 价
- generic [ref=e101]:
- grid [ref=e103]:
- rowgroup [ref=e104]:
- row [ref=e105]:
- columnheader "基准阀值" [ref=e106]: 基准阀值  
- columnheader "样本统计值" [ref=e108]: 样本统计值  
- row [ref=e110]:
- columnheader "年度" [ref=e111]:
- generic [ref=e113] [cursor=pointer]:
- generic:      
- columnheader "名称" [ref=e115]:
- generic [ref=e117] [cursor=pointer]:
- generic:      
- columnheader "低值(万元)" [ref=e119]:
- generic [ref=e121] [cursor=pointer]:
- generic:      
- columnheader "中心值(万元)" [ref=e123]:
- generic [ref=e125] [cursor=pointer]:
- generic:      
- columnheader "高值(万元)" [ref=e127]:
- generic [ref=e129] [cursor=pointer]:
- generic:      
- columnheader "最大值(万元)" [ref=e131]:
- generic [ref=e133] [cursor=pointer]:
- generic:      
- columnheader "最小值(万元)" [ref=e135]:
- generic [ref=e137] [cursor=pointer]:
- generic:      
- columnheader "平均值(万元)" [ref=e139]:
- generic [ref=e141] [cursor=pointer]:
- generic:      
- columnheader "中位数(万元)" [ref=e143]:
- generic [ref=e145] [cursor=pointer]:
- generic:      
- columnheader "标准差(万元)" [ref=e147]:
- generic [ref=e149] [cursor=pointer]:
- generic:      
- rowgroup [ref=e151]
- rowgroup
- rowgroup
- rowgroup
- text: 请选择右侧分类项
- text:     
- button "收起选择区" [expanded] [ref=e78] [cursor=pointer]
- complementary "选择内容" [ref=e82]:
- tablist "选择内容切换项" [ref=e83]:
- tab "自然地理区位" [selected] [ref=e84] [cursor=pointer]
- tab "设施类别" [ref=e85] [cursor=pointer]
- tab "建设阶段" [ref=e86] [cursor=pointer]
- tab "规划形式" [ref=e87] [cursor=pointer]
- generic [ref=e88]:
- generic [ref=e89]: 自然地理区位
- generic [ref=e90]: 接口待接入
@@ -0,0 +1,2 @@
[ 1001ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
[ 1337ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5173/favicon.ico:0
@@ -0,0 +1,8 @@
[ 79ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
[ 255622ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
[ 255658ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
[ 268128ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
[ 268149ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
[ 282018ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
[ 282037ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
[ 282064ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
@@ -0,0 +1,4 @@
[ 47ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
[ 194ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
[ 244ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
[ 293ms] [WARNING] AG Charts - Option `annotations.toolbar.buttons[0].value` cannot be set to `"reset"`; 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://127.0.0.1:5173/node_modules/.vite/deps/chunk-XDC3NMYR.js?v=ae174d51:834
@@ -0,0 +1 @@
[ 26ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
@@ -0,0 +1,2 @@
[ 32ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
[ 371068ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
@@ -0,0 +1 @@
[ 99ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
@@ -0,0 +1,5 @@
[ 77ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
[ 1186370ms] [ERROR] The final argument passed to %s changed size between renders. The order and size of this array must remain constant.
Previous: %s
Incoming: %s useEffect [false] [[object Object], , [object Object], false] @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:5627
@@ -0,0 +1 @@
[ 854ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
@@ -0,0 +1 @@
[ 88ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
@@ -0,0 +1,5 @@
[ 219ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
[ 139728ms] [ERROR] Failed to load resource: the server responded with a status of 401 () @ https://nest.zwgczx.com/api/v1/zw/getBuildingFunctionCostFilterTree?key=templateLibrary&currenttime=1778560172021&__random__=1778560172021:0
[ 142705ms] [ERROR] Failed to load resource: the server responded with a status of 401 () @ https://nest.zwgczx.com/api/v1/zw/getBuildingFunctionCostFilterTree?key=indicatorTree&templateId=3&currenttime=1778560175114&__random__=1778560175114:0
[ 304362ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
[ 307069ms] [ERROR] Failed to load resource: the server responded with a status of 401 () @ https://nest.zwgczx.com/api/v1/zw/getBuildingFunctionCostFilterTree?key=indicatorTree&templateId=3&currenttime=1778560339458&__random__=1778560339458:0
@@ -0,0 +1 @@
[ 550538ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
@@ -0,0 +1,2 @@
[ 136ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
[ 595ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5173/favicon.ico:0
@@ -0,0 +1,2 @@
[ 221ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5179/node_modules/.vite/deps/react-dom_client.js?v=eccfa23d:20102
[ 1056ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5179/favicon.ico:0
@@ -0,0 +1,81 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "模板库 1" [pressed] [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e9]: 模板库
- strong [ref=e10]: "1"
- button "指标树形" [ref=e11] [cursor=pointer]:
- img [ref=e12]
- generic [ref=e19]: 指标树形
- button "省市区" [ref=e20] [cursor=pointer]:
- img [ref=e21]
- generic [ref=e25]: 省市区
- button "自然地理区位" [ref=e26] [cursor=pointer]:
- img [ref=e27]
- generic [ref=e30]: 自然地理区位
- button "设施类别" [ref=e31] [cursor=pointer]:
- img [ref=e32]
- generic [ref=e36]: 设施类别
- button "建设阶段" [ref=e37] [cursor=pointer]:
- img [ref=e38]
- generic [ref=e43]: 建设阶段
- button "规划形式" [ref=e44] [cursor=pointer]:
- img [ref=e45]
- generic [ref=e50]: 规划形式
- region "年度总费用图表" [ref=e51]:
- generic [ref=e52]:
- button "纵坐标:造价(元)" [ref=e54] [cursor=pointer]: 造价(元)
- button "全屏(F11)" [ref=e55] [cursor=pointer]
- generic [ref=e57]:
- figure "图表,共有0个系列":
- generic [ref=e58]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e59]
- toolbar "标注" [ref=e60]:
- button "均" [disabled] [ref=e61]:
- generic: 均
- button "Line Tool" [disabled] [ref=e62]
- button "Text Tool" [disabled] [ref=e63]
- button "Shape Tool" [disabled] [ref=e64]
- button "Fibonacci Tool" [disabled] [ref=e65]
- button "Clear annotations" [disabled] [ref=e66]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e67]:
- button "缩小" [disabled] [ref=e68]
- button "放大" [ref=e69] [cursor=pointer]
- button "左移" [disabled] [ref=e70]
- button "右移" [disabled] [ref=e71]
- button "重置" [disabled] [ref=e72]
- complementary "选择内容" [ref=e73]:
- tablist "选择内容切换项" [ref=e74]:
- tab "自然地理区位" [selected] [ref=e75] [cursor=pointer]
- tab "设施类别" [ref=e76] [cursor=pointer]
- tab "建设阶段" [ref=e77] [cursor=pointer]
- tab "规划形式" [ref=e78] [cursor=pointer]
- generic [ref=e79]:
- generic [ref=e80]: 自然地理区位
- generic [ref=e81]: 加载中
@@ -0,0 +1,81 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "模板库 1" [pressed] [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e9]: 模板库
- strong [ref=e10]: "1"
- button "指标树形" [ref=e11] [cursor=pointer]:
- img [ref=e12]
- generic [ref=e19]: 指标树形
- button "省市区" [ref=e20] [cursor=pointer]:
- img [ref=e21]
- generic [ref=e25]: 省市区
- button "自然地理区位" [ref=e26] [cursor=pointer]:
- img [ref=e27]
- generic [ref=e30]: 自然地理区位
- button "设施类别" [ref=e31] [cursor=pointer]:
- img [ref=e32]
- generic [ref=e36]: 设施类别
- button "建设阶段" [ref=e37] [cursor=pointer]:
- img [ref=e38]
- generic [ref=e43]: 建设阶段
- button "规划形式" [ref=e44] [cursor=pointer]:
- img [ref=e45]
- generic [ref=e50]: 规划形式
- region "年度总费用图表" [ref=e51]:
- generic [ref=e52]:
- button "纵坐标:造价(元)" [ref=e54] [cursor=pointer]: 造价(元)
- button "全屏(F11)" [ref=e55] [cursor=pointer]
- generic [ref=e57]:
- figure "图表,共有0个系列":
- generic [ref=e58]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e59]
- toolbar "标注" [ref=e60]:
- button "均" [disabled] [ref=e61]:
- generic: 均
- button "Line Tool" [disabled] [ref=e62]
- button "Text Tool" [disabled] [ref=e63]
- button "Shape Tool" [disabled] [ref=e64]
- button "Fibonacci Tool" [disabled] [ref=e65]
- button "Clear annotations" [disabled] [ref=e66]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e67]:
- button "缩小" [disabled] [ref=e68]
- button "放大" [ref=e69] [cursor=pointer]
- button "左移" [disabled] [ref=e70]
- button "右移" [disabled] [ref=e71]
- button "重置" [disabled] [ref=e72]
- complementary "选择内容" [ref=e73]:
- tablist "选择内容切换项" [ref=e74]:
- tab "自然地理区位" [selected] [ref=e75] [cursor=pointer]
- tab "设施类别" [ref=e76] [cursor=pointer]
- tab "建设阶段" [ref=e77] [cursor=pointer]
- tab "规划形式" [ref=e78] [cursor=pointer]
- generic [ref=e79]:
- generic [ref=e80]: 自然地理区位
- generic [ref=e81]: 加载中
@@ -0,0 +1,81 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "模板库 1" [pressed] [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e9]: 模板库
- strong [ref=e10]: "1"
- button "指标树形" [ref=e11] [cursor=pointer]:
- img [ref=e12]
- generic [ref=e19]: 指标树形
- button "省市区" [ref=e20] [cursor=pointer]:
- img [ref=e21]
- generic [ref=e25]: 省市区
- button "自然地理区位" [ref=e26] [cursor=pointer]:
- img [ref=e27]
- generic [ref=e30]: 自然地理区位
- button "设施类别" [ref=e31] [cursor=pointer]:
- img [ref=e32]
- generic [ref=e36]: 设施类别
- button "建设阶段" [ref=e37] [cursor=pointer]:
- img [ref=e38]
- generic [ref=e43]: 建设阶段
- button "规划形式" [ref=e44] [cursor=pointer]:
- img [ref=e45]
- generic [ref=e50]: 规划形式
- region "年度总费用图表" [ref=e51]:
- generic [ref=e52]:
- button "纵坐标:造价(元)" [ref=e54] [cursor=pointer]: 造价(元)
- generic [ref=e55]:
- figure "图表,共有0个系列":
- generic [ref=e56]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e57]
- toolbar "标注" [ref=e58]:
- button "全屏(F11)" [disabled] [ref=e59]
- button "均" [disabled] [ref=e60]:
- generic: 均
- button "Line Tool" [disabled] [ref=e61]
- button "Text Tool" [disabled] [ref=e62]
- button "Shape Tool" [disabled] [ref=e63]
- button "Fibonacci Tool" [disabled] [ref=e64]
- button "Clear annotations" [disabled] [ref=e65]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e66]:
- button "缩小" [disabled] [ref=e67]
- button "放大" [ref=e68] [cursor=pointer]
- button "左移" [disabled] [ref=e69]
- button "右移" [disabled] [ref=e70]
- button "重置" [disabled] [ref=e71]
- complementary "选择内容" [ref=e72]:
- tablist "选择内容切换项" [ref=e73]:
- tab "自然地理区位" [selected] [ref=e74] [cursor=pointer]
- tab "设施类别" [ref=e75] [cursor=pointer]
- tab "建设阶段" [ref=e76] [cursor=pointer]
- tab "规划形式" [ref=e77] [cursor=pointer]
- generic [ref=e78]:
- generic [ref=e79]: 自然地理区位
- generic [ref=e80]: 加载中
@@ -0,0 +1,81 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "模板库 1" [pressed] [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e9]: 模板库
- strong [ref=e10]: "1"
- button "指标树形" [ref=e11] [cursor=pointer]:
- img [ref=e12]
- generic [ref=e19]: 指标树形
- button "省市区" [ref=e20] [cursor=pointer]:
- img [ref=e21]
- generic [ref=e25]: 省市区
- button "自然地理区位" [ref=e26] [cursor=pointer]:
- img [ref=e27]
- generic [ref=e30]: 自然地理区位
- button "设施类别" [ref=e31] [cursor=pointer]:
- img [ref=e32]
- generic [ref=e36]: 设施类别
- button "建设阶段" [ref=e37] [cursor=pointer]:
- img [ref=e38]
- generic [ref=e43]: 建设阶段
- button "规划形式" [ref=e44] [cursor=pointer]:
- img [ref=e45]
- generic [ref=e50]: 规划形式
- region "年度总费用图表" [ref=e51]:
- generic [ref=e52]:
- button "纵坐标:造价(元)" [ref=e54] [cursor=pointer]: 造价(元)
- generic [ref=e55]:
- figure "图表,共有0个系列":
- generic [ref=e56]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e57]
- toolbar "标注" [ref=e58]:
- button "全屏(F11)" [disabled] [ref=e59]
- button "均" [disabled] [ref=e60]:
- generic: 均
- button "Line Tool" [disabled] [ref=e61]
- button "Text Tool" [disabled] [ref=e62]
- button "Shape Tool" [disabled] [ref=e63]
- button "Fibonacci Tool" [disabled] [ref=e64]
- button "Clear annotations" [disabled] [ref=e65]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e66]:
- button "缩小" [disabled] [ref=e67]
- button "放大" [ref=e68] [cursor=pointer]
- button "左移" [disabled] [ref=e69]
- button "右移" [disabled] [ref=e70]
- button "重置" [disabled] [ref=e71]
- complementary "选择内容" [ref=e72]:
- tablist "选择内容切换项" [ref=e73]:
- tab "自然地理区位" [selected] [ref=e74] [cursor=pointer]
- tab "设施类别" [ref=e75] [cursor=pointer]
- tab "建设阶段" [ref=e76] [cursor=pointer]
- tab "规划形式" [ref=e77] [cursor=pointer]
- generic [ref=e78]:
- generic [ref=e79]: 自然地理区位
- generic [ref=e80]: 加载中
@@ -0,0 +1,81 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "模板库 1" [pressed] [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e9]: 模板库
- strong [ref=e10]: "1"
- button "指标树形" [ref=e11] [cursor=pointer]:
- img [ref=e12]
- generic [ref=e19]: 指标树形
- button "省市区" [ref=e20] [cursor=pointer]:
- img [ref=e21]
- generic [ref=e25]: 省市区
- button "自然地理区位" [ref=e26] [cursor=pointer]:
- img [ref=e27]
- generic [ref=e30]: 自然地理区位
- button "设施类别" [ref=e31] [cursor=pointer]:
- img [ref=e32]
- generic [ref=e36]: 设施类别
- button "建设阶段" [ref=e37] [cursor=pointer]:
- img [ref=e38]
- generic [ref=e43]: 建设阶段
- button "规划形式" [ref=e44] [cursor=pointer]:
- img [ref=e45]
- generic [ref=e50]: 规划形式
- region "年度总费用图表" [ref=e51]:
- generic [ref=e52]:
- button "纵坐标:造价(元)" [ref=e54] [cursor=pointer]: 造价(元)
- generic [ref=e55]:
- figure "图表,共有0个系列":
- generic [ref=e56]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e57]
- toolbar "标注" [ref=e58]:
- button "全屏(F11)" [disabled] [ref=e59]
- button "均" [disabled] [ref=e60]:
- generic: 均
- button "Line Tool" [disabled] [ref=e61]
- button "Text Tool" [disabled] [ref=e62]
- button "Shape Tool" [disabled] [ref=e63]
- button "Fibonacci Tool" [disabled] [ref=e64]
- button "Clear annotations" [disabled] [ref=e65]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e66]:
- button "缩小" [disabled] [ref=e67]
- button "放大" [ref=e68] [cursor=pointer]
- button "左移" [disabled] [ref=e69]
- button "右移" [disabled] [ref=e70]
- button "重置" [disabled] [ref=e71]
- complementary "选择内容" [ref=e72]:
- tablist "选择内容切换项" [ref=e73]:
- tab "自然地理区位" [selected] [ref=e74] [cursor=pointer]
- tab "设施类别" [ref=e75] [cursor=pointer]
- tab "建设阶段" [ref=e76] [cursor=pointer]
- tab "规划形式" [ref=e77] [cursor=pointer]
- generic [ref=e78]:
- generic [ref=e79]: 自然地理区位
- generic [ref=e80]: 加载中
@@ -0,0 +1,81 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "模板库 1" [pressed] [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e9]: 模板库
- strong [ref=e10]: "1"
- button "指标树形" [ref=e11] [cursor=pointer]:
- img [ref=e12]
- generic [ref=e19]: 指标树形
- button "省市区" [ref=e20] [cursor=pointer]:
- img [ref=e21]
- generic [ref=e25]: 省市区
- button "自然地理区位" [ref=e26] [cursor=pointer]:
- img [ref=e27]
- generic [ref=e30]: 自然地理区位
- button "设施类别" [ref=e31] [cursor=pointer]:
- img [ref=e32]
- generic [ref=e36]: 设施类别
- button "建设阶段" [ref=e37] [cursor=pointer]:
- img [ref=e38]
- generic [ref=e43]: 建设阶段
- button "规划形式" [ref=e44] [cursor=pointer]:
- img [ref=e45]
- generic [ref=e50]: 规划形式
- region "年度总费用图表" [ref=e51]:
- generic [ref=e52]:
- button "纵坐标:造价(元)" [ref=e54] [cursor=pointer]: 造价(元)
- generic [ref=e55]:
- figure "图表,共有0个系列":
- generic [ref=e56]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e57]
- toolbar "标注" [ref=e58]:
- button "均" [disabled] [ref=e59]:
- generic: 均
- button "Line Tool" [disabled] [ref=e60]
- button "Text Tool" [disabled] [ref=e61]
- button "Shape Tool" [disabled] [ref=e62]
- button "Fibonacci Tool" [disabled] [ref=e63]
- button "全屏(F11)" [disabled] [ref=e64]
- button "Clear annotations" [disabled] [ref=e65]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e66]:
- button "缩小" [disabled] [ref=e67]
- button "放大" [ref=e68] [cursor=pointer]
- button "左移" [disabled] [ref=e69]
- button "右移" [disabled] [ref=e70]
- button "重置" [disabled] [ref=e71]
- complementary "选择内容" [ref=e72]:
- tablist "选择内容切换项" [ref=e73]:
- tab "自然地理区位" [selected] [ref=e74] [cursor=pointer]
- tab "设施类别" [ref=e75] [cursor=pointer]
- tab "建设阶段" [ref=e76] [cursor=pointer]
- tab "规划形式" [ref=e77] [cursor=pointer]
- generic [ref=e78]:
- generic [ref=e79]: 自然地理区位
- generic [ref=e80]: 加载中
@@ -0,0 +1,81 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "模板库 1" [pressed] [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e9]: 模板库
- strong [ref=e10]: "1"
- button "指标树形" [ref=e11] [cursor=pointer]:
- img [ref=e12]
- generic [ref=e19]: 指标树形
- button "省市区" [ref=e20] [cursor=pointer]:
- img [ref=e21]
- generic [ref=e25]: 省市区
- button "自然地理区位" [ref=e26] [cursor=pointer]:
- img [ref=e27]
- generic [ref=e30]: 自然地理区位
- button "设施类别" [ref=e31] [cursor=pointer]:
- img [ref=e32]
- generic [ref=e36]: 设施类别
- button "建设阶段" [ref=e37] [cursor=pointer]:
- img [ref=e38]
- generic [ref=e43]: 建设阶段
- button "规划形式" [ref=e44] [cursor=pointer]:
- img [ref=e45]
- generic [ref=e50]: 规划形式
- region "年度总费用图表" [ref=e51]:
- generic [ref=e52]:
- button "纵坐标:造价(元)" [ref=e54] [cursor=pointer]: 造价(元)
- generic [ref=e55]:
- figure "图表,共有0个系列":
- generic [ref=e56]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e57]
- toolbar "标注" [ref=e58]:
- button "均" [disabled] [ref=e59]:
- generic: 均
- button "Line Tool" [disabled] [ref=e60]
- button "Text Tool" [disabled] [ref=e61]
- button "Shape Tool" [disabled] [ref=e62]
- button "Fibonacci Tool" [disabled] [ref=e63]
- button "全屏(F11)" [disabled] [ref=e64]
- button "Clear annotations" [disabled] [ref=e65]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e66]:
- button "缩小" [disabled] [ref=e67]
- button "放大" [ref=e68] [cursor=pointer]
- button "左移" [disabled] [ref=e69]
- button "右移" [disabled] [ref=e70]
- button "重置" [disabled] [ref=e71]
- complementary "选择内容" [ref=e72]:
- tablist "选择内容切换项" [ref=e73]:
- tab "自然地理区位" [selected] [ref=e74] [cursor=pointer]
- tab "设施类别" [ref=e75] [cursor=pointer]
- tab "建设阶段" [ref=e76] [cursor=pointer]
- tab "规划形式" [ref=e77] [cursor=pointer]
- generic [ref=e78]:
- generic [ref=e79]: 自然地理区位
- generic [ref=e80]: 加载中
@@ -0,0 +1,80 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e11]: 省市区
- button "自然地理区位" [ref=e12] [cursor=pointer]:
- img [ref=e13]
- generic [ref=e16]: 自然地理区位
- button "设施类别" [ref=e17] [cursor=pointer]:
- img [ref=e18]
- generic [ref=e22]: 设施类别
- button "建设阶段" [ref=e23] [cursor=pointer]:
- img [ref=e24]
- generic [ref=e29]: 建设阶段
- button "规划形式" [ref=e30] [cursor=pointer]:
- img [ref=e31]
- generic [ref=e36]: 规划形式
- region "年度总费用图表" [ref=e37]:
- generic [ref=e38]:
- button "纵坐标:造价(元)" [ref=e40] [cursor=pointer]: 造价(元)
- generic [ref=e41]:
- figure "图表,共有0个系列":
- generic [ref=e42]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e43]
- toolbar "标注" [ref=e44]:
- button "库" [disabled] [ref=e45]:
- generic:
- generic: 库
- button "树" [disabled] [ref=e46]:
- generic:
- generic: 树
- button "均" [disabled] [ref=e47]:
- generic: 均
- button "Line Tool" [disabled] [ref=e48]
- button "Text Tool" [disabled] [ref=e49]
- button "Shape Tool" [disabled] [ref=e50]
- button "Fibonacci Tool" [disabled] [ref=e51]
- button "全屏(F11)" [disabled] [ref=e52]
- button "Clear annotations" [disabled] [ref=e53]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e54]:
- button "缩小" [disabled] [ref=e55]
- button "放大" [ref=e56] [cursor=pointer]
- button "左移" [disabled] [ref=e57]
- button "右移" [disabled] [ref=e58]
- button "重置" [disabled] [ref=e59]
- complementary "选择内容" [ref=e60]:
- tablist "选择内容切换项" [ref=e61]:
- tab "自然地理区位" [selected] [ref=e62] [cursor=pointer]
- tab "设施类别" [ref=e63] [cursor=pointer]
- tab "建设阶段" [ref=e64] [cursor=pointer]
- tab "规划形式" [ref=e65] [cursor=pointer]
- generic [ref=e66]:
- generic [ref=e67]: 自然地理区位
- generic [ref=e68]: 加载中
@@ -0,0 +1,80 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e11]: 省市区
- button "自然地理区位" [ref=e12] [cursor=pointer]:
- img [ref=e13]
- generic [ref=e16]: 自然地理区位
- button "设施类别" [ref=e17] [cursor=pointer]:
- img [ref=e18]
- generic [ref=e22]: 设施类别
- button "建设阶段" [ref=e23] [cursor=pointer]:
- img [ref=e24]
- generic [ref=e29]: 建设阶段
- button "规划形式" [ref=e30] [cursor=pointer]:
- img [ref=e31]
- generic [ref=e36]: 规划形式
- region "年度总费用图表" [ref=e37]:
- generic [ref=e38]:
- button "纵坐标:造价(元)" [ref=e40] [cursor=pointer]: 造价(元)
- generic [ref=e41]:
- figure "图表,共有0个系列":
- generic [ref=e42]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e43]
- toolbar "标注" [ref=e44]:
- button "库" [ref=e45] [cursor=pointer]:
- generic:
- generic: 库
- button "树" [ref=e46] [cursor=pointer]:
- generic:
- generic: 树
- button "均" [ref=e47] [cursor=pointer]:
- generic: 均
- button "Line Tool" [disabled] [ref=e48]
- button "Text Tool" [disabled] [ref=e49]
- button "Shape Tool" [disabled] [ref=e50]
- button "Fibonacci Tool" [disabled] [ref=e51]
- button "全屏(F11)" [ref=e52] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e53]
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e54]:
- button "缩小" [disabled] [ref=e55]
- button "放大" [ref=e56] [cursor=pointer]
- button "左移" [disabled] [ref=e57]
- button "右移" [disabled] [ref=e58]
- button "重置" [disabled] [ref=e59]
- complementary "选择内容" [ref=e60]:
- tablist "选择内容切换项" [ref=e61]:
- tab "自然地理区位" [selected] [ref=e62] [cursor=pointer]
- tab "设施类别" [ref=e63] [cursor=pointer]
- tab "建设阶段" [ref=e64] [cursor=pointer]
- tab "规划形式" [ref=e65] [cursor=pointer]
- generic [ref=e66]:
- generic [ref=e67]: 自然地理区位
- generic [ref=e68]: 加载中
@@ -0,0 +1,83 @@
- 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]:
- generic "筛选条件" [ref=e5]:
- button "省市区" [ref=e6] [cursor=pointer]:
- img [ref=e7]
- generic [ref=e11]: 省市区
- button "自然地理区位" [ref=e12] [cursor=pointer]:
- img [ref=e13]
- generic [ref=e16]: 自然地理区位
- button "设施类别" [ref=e17] [cursor=pointer]:
- img [ref=e18]
- generic [ref=e22]: 设施类别
- button "建设阶段" [ref=e23] [cursor=pointer]:
- img [ref=e24]
- generic [ref=e29]: 建设阶段
- button "规划形式" [ref=e30] [cursor=pointer]:
- img [ref=e31]
- generic [ref=e36]: 规划形式
- region "年度总费用图表" [ref=e37]:
- generic [ref=e38]:
- button "纵坐标:造价(元)" [ref=e40] [cursor=pointer]: 造价(元)
- generic [ref=e41]:
- figure "图表,共有0个系列":
- generic [ref=e42]:
- img "interactive chart":
- generic:
- img
- img
- region [ref=e43]
- toolbar "标注" [ref=e44]:
- button "库" [disabled] [ref=e45] [cursor=pointer]:
- generic:
- generic: 库
- button "指" [disabled] [ref=e46] [cursor=pointer]:
- generic:
- generic: 指
- button "均" [disabled] [ref=e47] [cursor=pointer]:
- generic: 均
- button "Line Tool" [disabled] [ref=e48]
- button "Text Tool" [disabled] [ref=e49]
- button "Shape Tool" [disabled] [ref=e50]
- button "Fibonacci Tool" [disabled] [ref=e51]
- button "全屏(F11)" [disabled] [ref=e52] [cursor=pointer]
- button "Clear annotations" [disabled] [ref=e53]
- button "切换到表格" [disabled] [ref=e54] [cursor=pointer]:
- generic:
- generic: 趋
- status:
- generic: 请选择右侧分类项
- toolbar "缩放" [ref=e55]:
- button "缩小" [disabled] [ref=e56]
- button "放大" [ref=e57] [cursor=pointer]
- button "左移" [disabled] [ref=e58]
- button "右移" [disabled] [ref=e59]
- button "重置" [disabled] [ref=e60]
- complementary "选择内容" [ref=e61]:
- tablist "选择内容切换项" [ref=e62]:
- tab "自然地理区位" [selected] [ref=e63] [cursor=pointer]
- tab "设施类别" [ref=e64] [cursor=pointer]
- tab "建设阶段" [ref=e65] [cursor=pointer]
- tab "规划形式" [ref=e66] [cursor=pointer]
- generic [ref=e67]:
- generic [ref=e68]: 自然地理区位
- generic [ref=e69]: Unexpected token '<', "<!doctype "... is not valid JSON
@@ -0,0 +1,8 @@
{
"topic_20260821-062201_c21eb2dbea49a53e": {
"stage": 1,
"userTurns": 1,
"basisHash": "10579074257f2c51",
"updatedAt": 1787293862779
}
}
+3
View File
@@ -0,0 +1,3 @@
{
"topic_20260821-062201_c21eb2dbea49a53e": 1787293321185
}
@@ -0,0 +1,3 @@
{
"topic_20260821-062201_c21eb2dbea49a53e": "auto"
}
+3
View File
@@ -0,0 +1,3 @@
{
"topic_20260821-062201_c21eb2dbea49a53e": "aggrid导出的时候数值不对,现在…"
}
+44
View File
@@ -0,0 +1,44 @@
<!-- gitnexus:start -->
# GitNexus — Code Intelligence
This project is indexed by GitNexus as **agchart** (187 symbols, 490 relationships, 20 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
> Index stale? Run `node .gitnexus/run.cjs analyze` from the project root — it auto-selects an available runner. No `.gitnexus/run.cjs` yet? `npx gitnexus analyze` (npm 11 crash → `npm i -g gitnexus`; #1939).
## Always Do
- **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user.
- **MUST run `detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows. For regression review, compare against the default branch: `detect_changes({scope: "compare", base_ref: "main"})`.
- **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits.
- When exploring unfamiliar code, use `query({search_query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance.
- When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `context({name: "symbolName"})`.
- For security review, `explain({target: "fileOrSymbol"})` lists taint findings (source→sink flows; needs `analyze --pdg`).
## Never Do
- NEVER edit a function, class, or method without first running `impact` on it.
- NEVER ignore HIGH or CRITICAL risk warnings from impact analysis.
- NEVER rename symbols with find-and-replace — use `rename` which understands the call graph.
- NEVER commit changes without running `detect_changes()` to check affected scope.
## Resources
| Resource | Use for |
|----------|---------|
| `gitnexus://repo/agchart/context` | Codebase overview, check index freshness |
| `gitnexus://repo/agchart/clusters` | All functional areas |
| `gitnexus://repo/agchart/processes` | All execution flows |
| `gitnexus://repo/agchart/process/{name}` | Step-by-step execution trace |
## CLI
| Task | Read this skill file |
|------|---------------------|
| Understand architecture / "How does X work?" | `.claude/skills/gitnexus/gitnexus-exploring/SKILL.md` |
| Blast radius / "What breaks if I change X?" | `.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md` |
| Trace bugs / "Why is X failing?" | `.claude/skills/gitnexus/gitnexus-debugging/SKILL.md` |
| Rename / extract / split / refactor | `.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md` |
| Tools, resources, schema reference | `.claude/skills/gitnexus/gitnexus-guide/SKILL.md` |
| Index, status, clean, wiki CLI commands | `.claude/skills/gitnexus/gitnexus-cli/SKILL.md` |
<!-- gitnexus:end -->
+44
View File
@@ -0,0 +1,44 @@
<!-- gitnexus:start -->
# GitNexus — Code Intelligence
This project is indexed by GitNexus as **agchart** (187 symbols, 490 relationships, 20 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
> Index stale? Run `node .gitnexus/run.cjs analyze` from the project root — it auto-selects an available runner. No `.gitnexus/run.cjs` yet? `npx gitnexus analyze` (npm 11 crash → `npm i -g gitnexus`; #1939).
## Always Do
- **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user.
- **MUST run `detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows. For regression review, compare against the default branch: `detect_changes({scope: "compare", base_ref: "main"})`.
- **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits.
- When exploring unfamiliar code, use `query({search_query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance.
- When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `context({name: "symbolName"})`.
- For security review, `explain({target: "fileOrSymbol"})` lists taint findings (source→sink flows; needs `analyze --pdg`).
## Never Do
- NEVER edit a function, class, or method without first running `impact` on it.
- NEVER ignore HIGH or CRITICAL risk warnings from impact analysis.
- NEVER rename symbols with find-and-replace — use `rename` which understands the call graph.
- NEVER commit changes without running `detect_changes()` to check affected scope.
## Resources
| Resource | Use for |
|----------|---------|
| `gitnexus://repo/agchart/context` | Codebase overview, check index freshness |
| `gitnexus://repo/agchart/clusters` | All functional areas |
| `gitnexus://repo/agchart/processes` | All execution flows |
| `gitnexus://repo/agchart/process/{name}` | Step-by-step execution trace |
## CLI
| Task | Read this skill file |
|------|---------------------|
| Understand architecture / "How does X work?" | `.claude/skills/gitnexus/gitnexus-exploring/SKILL.md` |
| Blast radius / "What breaks if I change X?" | `.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md` |
| Trace bugs / "Why is X failing?" | `.claude/skills/gitnexus/gitnexus-debugging/SKILL.md` |
| Rename / extract / split / refactor | `.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md` |
| Tools, resources, schema reference | `.claude/skills/gitnexus/gitnexus-guide/SKILL.md` |
| Index, status, clean, wiki CLI commands | `.claude/skills/gitnexus/gitnexus-cli/SKILL.md` |
<!-- gitnexus:end -->
+3 -3
View File
@@ -1,10 +1,10 @@
# 建筑设施对象趋势图
# 组团趋势图
这是一个基于 `React + AG Charts` 的建筑设施对象趋势图页面,用来查看不同分类维度下的年度统计趋势,并通过右侧筛选条件联动图表结果。
这是一个基于 `React + AG Charts` 的组团趋势图页面,用来查看不同分类维度下的年度统计趋势,并通过右侧筛选条件联动图表结果。
## 功能
- 左侧展示建筑设施对象趋势图,支持最低值、最高值、平均值、中位数和数据量切换
- 左侧展示组团趋势图,支持最低值、最高值、平均值、中位数和数据量切换
- 右侧展示分类树,支持按 `自然地理区位 / 设施类别 / 建设阶段 / 规划形式` 选择节点
- 筛选条件支持 `省市区`,后端会根据 `uf_xzqy` 展开到区级 `id` 后再过滤
- 支持搜索筛选树节点,支持多条件叠加
+16
View File
@@ -8,6 +8,8 @@
"ag-charts-community": "^13.2.1",
"ag-charts-enterprise": "13.2.1",
"ag-charts-react": "^13.2.1",
"ag-grid-community": "^35.3.0",
"ag-grid-react": "^35.3.0",
"lucide-react": "^1.14.0",
"react": "^19.1.0",
"react-dom": "^19.1.0",
@@ -202,6 +204,10 @@
"ag-charts-types": ["ag-charts-types@13.2.1", "", {}, "sha512-r7veb3QqJtIKlXmeUsLR4/oDPwmHxFI2tmbZra/203mdaz3uwQUrrgYNg628nrK+7L2YxXnwGc6L05tWjLLjNQ=="],
"ag-grid-community": ["ag-grid-community@35.3.0", "", { "dependencies": { "ag-charts-types": "13.3.0" } }, "sha512-c9WQWB88J965IjBC/GPUX30aAZix10o6oYT86DWipcxgLZTIQlLSilJJEr1bno/245rPEAIMjhoU1gp9VIfURg=="],
"ag-grid-react": ["ag-grid-react@35.3.0", "", { "dependencies": { "ag-grid-community": "35.3.0", "prop-types": "^15.8.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-3c6YEFGQGNZxEi1PdK0b+WhKkKRJ7KxuYzsG4UmISyax5/J7N93f8B1TZK1pq+AgzPhdk/++vjZe3KhFdF3tog=="],
"baseline-browser-mapping": ["baseline-browser-mapping@2.10.27", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA=="],
"browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="],
@@ -232,6 +238,8 @@
"json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="],
"loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],
"lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
"lucide-react": ["lucide-react@1.14.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-+1mdWcfSJVUsaTIjN9zoezmUhfXo5l0vP7ekBMPo3jcS/aIkxHnXqAPsByszMZx/Y8oQBRJxJx5xg+RH3urzxA=="],
@@ -242,16 +250,22 @@
"node-releases": ["node-releases@2.0.38", "", {}, "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw=="],
"object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
"picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="],
"postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="],
"prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="],
"react": ["react@19.2.5", "", {}, "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA=="],
"react-dom": ["react-dom@19.2.5", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.5" } }, "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag=="],
"react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
"react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="],
"rollup": ["rollup@4.60.3", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.3", "@rollup/rollup-android-arm64": "4.60.3", "@rollup/rollup-darwin-arm64": "4.60.3", "@rollup/rollup-darwin-x64": "4.60.3", "@rollup/rollup-freebsd-arm64": "4.60.3", "@rollup/rollup-freebsd-x64": "4.60.3", "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", "@rollup/rollup-linux-arm-musleabihf": "4.60.3", "@rollup/rollup-linux-arm64-gnu": "4.60.3", "@rollup/rollup-linux-arm64-musl": "4.60.3", "@rollup/rollup-linux-loong64-gnu": "4.60.3", "@rollup/rollup-linux-loong64-musl": "4.60.3", "@rollup/rollup-linux-ppc64-gnu": "4.60.3", "@rollup/rollup-linux-ppc64-musl": "4.60.3", "@rollup/rollup-linux-riscv64-gnu": "4.60.3", "@rollup/rollup-linux-riscv64-musl": "4.60.3", "@rollup/rollup-linux-s390x-gnu": "4.60.3", "@rollup/rollup-linux-x64-gnu": "4.60.3", "@rollup/rollup-linux-x64-musl": "4.60.3", "@rollup/rollup-openbsd-x64": "4.60.3", "@rollup/rollup-openharmony-arm64": "4.60.3", "@rollup/rollup-win32-arm64-msvc": "4.60.3", "@rollup/rollup-win32-ia32-msvc": "4.60.3", "@rollup/rollup-win32-x64-gnu": "4.60.3", "@rollup/rollup-win32-x64-msvc": "4.60.3", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A=="],
@@ -271,5 +285,7 @@
"vite": ["vite@7.3.2", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg=="],
"yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
"ag-grid-community/ag-charts-types": ["ag-charts-types@13.3.0", "", {}, "sha512-UMoAn908LC4ZIJSNfUckSBEFa79Mi1vFRA8qIRx+NusEuuFgXDioCZx4MxM7O3rDXlxTWH9DvQmcDjh7vyd89w=="],
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

+1 -1
View File
@@ -6,7 +6,7 @@
<title>AG Chart Service</title>
</head>
<body>
<div id="zbChart"></div>
<div id="ztChart"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

@@ -0,0 +1,14 @@
{
"browser": {
"launchOptions": {
"headless": true,
"executablePath": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
},
"contextOptions": {
"viewport": {
"width": 1440,
"height": 900
}
}
}
}
+2
View File
@@ -13,6 +13,8 @@
"ag-charts-community": "^13.2.1",
"ag-charts-enterprise": "13.2.1",
"ag-charts-react": "^13.2.1",
"ag-grid-community": "^35.3.0",
"ag-grid-react": "^35.3.0",
"lucide-react": "^1.14.0",
"react": "^19.1.0",
"react-dom": "^19.1.0"
+1224 -155
View File
File diff suppressed because it is too large. Load diff
+20 -5
View File
@@ -2,22 +2,37 @@ import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { AllCommunityModule, ModuleRegistry } from 'ag-charts-community';
import App from './App';
import 'ag-grid-community/styles/ag-grid.css';
import 'ag-grid-community/styles/ag-theme-quartz.css';
import './styles.css';
ModuleRegistry.registerModules([AllCommunityModule]);
declare global {
interface Window {
__zbChartRoot?: ReturnType<typeof createRoot>;
__chartReactRoots?: WeakMap<Element, ReturnType<typeof createRoot>>;
}
}
const chartContainerId = 'ztChart';
const getRootRegistry = () => {
window.__chartReactRoots ??= new WeakMap<Element, ReturnType<typeof createRoot>>();
return window.__chartReactRoots;
};
const mount = () => {
const container = document.getElementById('zbChart');
const container = document.getElementById(chartContainerId);
if (!container) return false;
window.__zbChartRoot ??= createRoot(container);
window.__zbChartRoot.render(
const roots = getRootRegistry();
let root = roots.get(container);
if (!root) {
root = createRoot(container);
roots.set(container, root);
}
root.render(
<StrictMode>
<App />
</StrictMode>,
@@ -32,7 +47,7 @@ if (!mount()) {
if (mount() || retryCount >= 40) {
window.clearInterval(timer);
if (retryCount >= 40) {
console.warn('zbChart container was not found.');
console.warn(`${chartContainerId} container was not found.`);
}
}
}, 50);
+374 -35
View File
@@ -64,15 +64,23 @@ button {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: minmax(540px, 52vw) 1fr;
grid-template-columns: minmax(0, 7fr) minmax(320px, 3fr);
grid-template-rows: auto minmax(0, 1fr);
gap: 12px 28px;
height: 100vh;
padding: 30px 28px 18px 64px;
transition: grid-template-columns 160ms ease, gap 160ms ease;
}
.workspace.is-right-panel-collapsed {
grid-template-columns: minmax(0, 1fr) 34px;
gap: 12px 12px;
}
.chart-area {
display: grid;
grid-column: 1;
grid-row: 2;
grid-template-rows: minmax(0, 1fr);
min-width: 0;
}
@@ -163,10 +171,11 @@ button {
.chart-filter-bar {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
min-width: 0;
overflow: hidden;
overflow: visible;
justify-content: center;
}
@@ -242,7 +251,7 @@ button {
position: relative;
z-index: 10;
display: grid;
grid-template-columns: minmax(540px, 52vw) 1fr;
grid-template-columns: minmax(0, 7fr) minmax(320px, 3fr);
grid-template-rows: auto minmax(0, 1fr);
gap: 12px 28px;
width: 100vw;
@@ -251,6 +260,11 @@ button {
background: #f5e8d8;
}
.workspace:fullscreen.is-right-panel-collapsed {
grid-template-columns: minmax(0, 1fr) 34px;
gap: 12px 12px;
}
.workspace:fullscreen .chart-area {
min-height: 0;
}
@@ -359,22 +373,204 @@ button {
background: rgba(255, 252, 248, 0.94);
}
.chart-frame .chart-statistic-button {
.chart-frame .chart-template-button,
.chart-frame .chart-indicator-button,
.chart-frame .chart-statistic-button,
.chart-frame .chart-pivot-button,
.chart-frame .chart-fullscreen-button {
color: #46413b;
cursor: pointer !important;
opacity: 1 !important;
overflow: visible !important;
pointer-events: auto !important;
}
.chart-frame .chart-statistic-button[aria-expanded="true"] {
.chart-frame .ag-charts-myButton-template,
.chart-frame .ag-charts-myButton-indicator,
.chart-frame .ag-charts-myButton-pivot {
position: relative;
display: block;
min-width: 16px;
height: 16px;
font-size: 14px;
font-weight: 600;
line-height: 16px;
text-align: center;
}
.chart-indicator-selection-label {
position: absolute;
left: 28px;
top: 6px;
z-index: 3;
max-width: min(560px, calc(100vw - 56px));
padding: 0;
border: 0;
border-radius: 0;
color: #0078a8;
background: transparent;
box-shadow: none;
font-size: 15px;
font-weight: 600;
line-height: 20px;
overflow: hidden;
pointer-events: none;
text-overflow: ellipsis;
white-space: nowrap;
}
.workspace:fullscreen .chart-indicator-selection-label {
left: 28px;
top: 6px;
}
.chart-frame .chart-template-button[aria-expanded="true"],
.chart-frame .chart-indicator-button[aria-expanded="true"],
.chart-frame .chart-statistic-button[aria-expanded="true"],
.chart-frame .chart-pivot-button.ag-charts-toolbar__button--active,
.chart-frame .chart-fullscreen-button.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-pivot-grid-panel {
position: absolute;
inset: 16px 0 0;
z-index: 10;
min-width: 0;
min-height: 0;
padding: 12px 16px 16px 74px;
border: 1px solid rgba(90, 82, 72, 0.22);
border-radius: 3px;
background: rgba(255, 249, 241, 0.96);
box-shadow: 0 6px 18px rgba(69, 54, 36, 0.08);
}
.chart-pivot-grid-panel .ag-root-wrapper {
border-color: rgba(90, 82, 72, 0.18);
border-radius: 3px;
}
.grid-context-menu {
position: fixed;
z-index: 50;
min-width: 128px;
padding: 4px;
border: 1px solid rgba(90, 82, 72, 0.22);
border-radius: 3px;
background: #fffaf4;
box-shadow: 0 6px 18px rgba(69, 54, 36, 0.18);
}
.grid-context-menu button {
display: block;
width: 100%;
min-height: 32px;
padding: 0 10px;
border: 0;
border-radius: 2px;
color: #262a33;
background: transparent;
font-size: 13px;
line-height: 32px;
text-align: left;
cursor: pointer;
}
.grid-context-menu button:hover,
.grid-context-menu button:focus-visible {
color: #0078a8;
background: rgba(0, 120, 168, 0.08);
outline: none;
}
.chart-grid-tool-button {
position: absolute;
left: 24px;
z-index: 12;
width: 26px;
height: 26px;
min-width: 26px;
min-height: 26px;
padding: 0;
border: 1px solid rgba(90, 82, 72, 0.22);
border-radius: 3px;
color: #46413b;
background: rgba(255, 249, 241, 0.72);
font-size: 14px;
font-weight: 600;
line-height: 24px;
text-align: center;
cursor: pointer;
}
.chart-grid-tool-button--template {
top: 12px;
}
.chart-grid-tool-button--indicator {
top: 46px;
}
.chart-grid-tool-button--trend {
top: 80px;
}
.chart-grid-tool-button--fullscreen {
top: 114px;
}
.chart-grid-tool-button:hover {
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-pivot-grid-panel.ag-theme-quartz {
--ag-active-color: #0078a8;
--ag-background-color: #fffaf4;
--ag-border-color: rgba(90, 82, 72, 0.18);
--ag-cell-horizontal-padding: 6px;
--ag-font-family: "Microsoft YaHei", "PingFang SC", "Segoe UI", Arial, sans-serif;
--ag-font-size: 12px;
--ag-foreground-color: #262a33;
--ag-header-cell-horizontal-padding: 6px;
--ag-header-background-color: #f6eadc;
--ag-row-hover-color: rgba(0, 120, 168, 0.08);
}
.chart-pivot-grid-panel .ag-header-cell,
.chart-pivot-grid-panel .ag-header-group-cell {
padding-left: 6px;
padding-right: 6px;
}
.chart-pivot-grid-panel .ag-cell {
padding-left: 6px;
padding-right: 6px;
}
.chart-pivot-grid-panel .ag-header-cell-label,
.chart-pivot-grid-panel .ag-header-group-cell-label {
justify-content: center;
}
.metric-switcher {
position: absolute;
z-index: 12;
}
.metric-switcher--chart {
left: 74px;
top: 272px;
z-index: 12;
}
.metric-switcher--grid {
left: 24px;
top: 148px;
}
.metric-switcher-button {
@@ -400,6 +596,23 @@ button {
text-orientation: upright;
}
.metric-switcher-button--grid {
width: 26px;
height: 26px;
min-width: 26px;
min-height: 26px;
padding: 0;
border-color: rgba(90, 82, 72, 0.22);
color: #46413b;
background: rgba(255, 249, 241, 0.72);
font-size: 14px;
font-weight: 600;
letter-spacing: 0;
line-height: 24px;
writing-mode: horizontal-tb;
text-orientation: mixed;
}
.metric-switcher-button:hover,
.metric-switcher-button[aria-expanded="true"] {
color: #0078a8;
@@ -456,29 +669,6 @@ button {
line-height: 18px;
}
.chart-frame .chart-fullscreen-button {
position: absolute;
left: 24px;
top: 252px;
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;
@@ -540,15 +730,19 @@ button {
box-shadow: 0 1px 5px rgba(69, 54, 36, 0.12);
}
.chart-frame .ag-charts-myButton-fullScreen {
.chart-frame .ag-charts-myButton-fullScreen,
.chart-grid-tool-button .ag-charts-myButton-fullScreen {
position: relative;
display: block;
width: 16px;
height: 16px;
margin: 4px auto;
}
.chart-frame .ag-charts-myButton-fullScreen::before,
.chart-frame .ag-charts-myButton-fullScreen::after {
.chart-frame .ag-charts-myButton-fullScreen::after,
.chart-grid-tool-button .ag-charts-myButton-fullScreen::before,
.chart-grid-tool-button .ag-charts-myButton-fullScreen::after {
position: absolute;
inset: 0;
display: block;
@@ -557,19 +751,22 @@ button {
content: "";
}
.chart-frame .anticon-arrow-salt::before {
.chart-frame .anticon-arrow-salt::before,
.chart-grid-tool-button .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 {
.chart-frame .anticon-arrow-salt::after,
.chart-grid-tool-button .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 {
.chart-frame .anticon-shrink::before,
.chart-grid-tool-button .anticon-shrink::before {
top: 2px;
left: 2px;
width: 6px;
@@ -578,7 +775,8 @@ button {
border-bottom: 1px solid currentColor;
}
.chart-frame .anticon-shrink::after {
.chart-frame .anticon-shrink::after,
.chart-grid-tool-button .anticon-shrink::after {
right: 2px;
bottom: 2px;
left: auto;
@@ -601,6 +799,8 @@ button {
.right-panel {
display: grid;
grid-column: 2;
grid-row: 2;
grid-template-rows: auto minmax(0, 1fr);
min-width: 0;
height: 100%;
@@ -609,6 +809,52 @@ button {
overflow: hidden;
}
.right-panel-toggle {
display: inline-grid;
grid-column: 2;
grid-row: 2;
justify-self: end;
align-self: start;
width: 28px;
height: 28px;
place-items: center;
padding: 0;
border: 1px solid rgba(90, 82, 72, 0.18);
border-radius: 3px;
color: #46413b;
background: rgba(255, 249, 241, 0.82);
cursor: pointer;
z-index: 4;
}
.right-panel-toggle:hover,
.right-panel-toggle:focus-visible {
color: #0078a8;
border-color: rgba(0, 120, 168, 0.36);
background: rgba(255, 252, 248, 0.96);
box-shadow: 0 1px 5px rgba(69, 54, 36, 0.12);
}
.right-panel-toggle:focus-visible {
outline: 2px solid rgba(0, 120, 168, 0.28);
outline-offset: 2px;
}
.right-panel-toggle-icon {
display: block;
width: 16px;
height: 16px;
}
.workspace.is-right-panel-collapsed .right-panel {
display: none;
}
.workspace.is-right-panel-collapsed .right-panel-toggle {
position: sticky;
top: 24px;
}
.content-tabs {
display: flex;
align-items: center;
@@ -796,6 +1042,57 @@ button {
overflow: hidden;
}
.filter-modal--range {
grid-template-rows: auto auto auto;
height: auto;
min-height: 0;
}
.filter-range-fields {
display: grid;
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
align-items: end;
gap: 12px;
padding: 22px 18px 26px;
}
.filter-range-fields label {
display: grid;
gap: 7px;
color: #5d554d;
font-size: 13px;
}
.filter-range-fields input {
width: 100%;
height: 36px;
padding: 0 10px;
border: 1px solid rgba(90, 82, 72, 0.2);
border-radius: 3px;
color: #262a33;
background: #fffdfa;
font-size: 14px;
outline: none;
}
.filter-range-fields input:focus {
border-color: rgba(0, 120, 168, 0.46);
box-shadow: 0 0 0 2px rgba(0, 120, 168, 0.12);
}
.filter-range-separator {
padding-bottom: 8px;
color: #776e65;
font-size: 13px;
}
.filter-range-error {
grid-column: 1 / -1;
min-height: 18px;
color: #a13f2c;
font-size: 12px;
}
.filter-modal-header {
display: flex;
align-items: center;
@@ -907,6 +1204,30 @@ button {
content: "";
}
.filter-tree-select.is-empty-data {
color: #8a8279;
}
.filter-tree-select.is-empty-data .content-tree-label {
opacity: 0.58;
}
.filter-tree-select.is-empty-data .filter-tree-check {
opacity: 0.62;
}
.filter-tree-empty-badge {
flex: 0 0 auto;
padding: 1px 5px;
border: 1px solid rgba(122, 112, 103, 0.22);
border-radius: 3px;
color: #7a7067;
background: rgba(255, 252, 248, 0.72);
font-size: 12px;
line-height: 18px;
white-space: nowrap;
}
.filter-modal-actions {
display: flex;
justify-content: flex-end;
@@ -955,15 +1276,33 @@ button {
padding: 8px 18px 18px 56px;
}
.workspace.is-right-panel-collapsed {
grid-template-columns: 1fr;
}
.chart-area {
grid-row: 2;
min-height: 520px;
}
.right-panel {
grid-column: 1;
grid-row: 3;
min-height: 280px;
}
.right-panel-toggle {
grid-column: 1;
grid-row: 3;
justify-self: end;
}
.content-tabs {
flex-wrap: wrap;
}
}
.filter-modal-confirm:disabled {
cursor: not-allowed;
opacity: 0.45;
}
+5 -193
View File
@@ -1,196 +1,8 @@
Port 5173 is in use, trying another one...
VITE v7.3.2 ready in 271 ms
VITE v7.3.2 ready in 303 ms
➜ Local: http://localhost:5174/
➜ Network: http://198.18.0.1:5174/
➜ Network: http://100.106.162.120:5174/
➜ Network: http://192.168.1.155:5174/
➜ Local: http://localhost:5173/
➜ Network: http://100.106.162.120:5173/
➜ Network: http://192.168.1.155:5173/
➜ Network: http://172.31.112.1:5173/
 ➜ press h + enter to show help
15:45:13 [vite] (client) hmr update /src/App.tsx
15:45:39 [vite] (client) hmr update /src/styles.css
15:59:24 [vite] (client) hmr update /src/App.tsx
15:59:52 [vite] (client) hmr update /src/styles.css
16:00:28 [vite] (client) hmr update /src/styles.css
16:00:58 [vite] (client) hmr update /src/styles.css
16:06:48 [vite] (client) hmr update /src/App.tsx
16:07:28 [vite] (client) hmr update /src/App.tsx
16:07:28 [vite] (client) ✨ new dependencies optimized: ag-charts-enterprise, ag-charts-locale
16:07:28 [vite] (client) ✨ optimized dependencies changed. reloading
16:07:47 [vite] (client) hmr update /src/styles.css
16:08:26 [vite] (client) hmr update /src/styles.css
16:09:28 [vite] (client) hmr update /src/App.tsx
16:11:07 [vite] (client) hmr update /src/App.tsx
16:11:48 [vite] (client) hmr update /src/styles.css
16:13:15 [vite] (client) hmr update /src/styles.css
16:17:34 [vite] (client) hmr update /src/App.tsx
16:18:10 [vite] (client) hmr update /src/styles.css
16:22:30 [vite] (client) hmr update /src/App.tsx
16:23:11 [vite] (client) hmr update /src/styles.css
16:24:37 [vite] (client) hmr update /src/App.tsx
16:25:42 [vite] (client) page reload demo.html
16:25:42 [vite] (client) page reload demo.html
16:27:28 [vite] (client) hmr update /src/App.tsx
16:28:39 [vite] (client) hmr update /src/styles.css
16:32:10 [vite] (client) hmr update /src/App.tsx
16:33:55 [vite] (client) hmr update /src/App.tsx
16:38:49 [vite] (client) hmr update /src/App.tsx
16:39:34 [vite] (client) hmr update /src/styles.css
16:46:57 [vite] (client) hmr update /src/App.tsx
16:47:20 [vite] (client) hmr update /src/App.tsx
16:53:41 [vite] (client) hmr update /src/App.tsx
16:54:18 [vite] (client) hmr update /src/styles.css
16:59:35 [vite] (client) hmr update /src/styles.css
17:01:23 [vite] (client) hmr update /src/styles.css
17:03:24 [vite] (client) hmr update /src/styles.css
17:06:50 [vite] (client) hmr update /src/styles.css
17:29:44 [vite] (client) hmr update /src/App.tsx
17:29:52 [vite] (client) hmr update /src/styles.css
17:32:17 [vite] (client) hmr update /src/App.tsx
17:32:43 [vite] (client) hmr update /src/styles.css
17:34:33 [vite] (client) hmr update /src/App.tsx
17:40:09 [vite] (client) hmr update /src/styles.css
17:40:37 [vite] (client) hmr update /src/App.tsx
17:41:32 [vite] (client) hmr update /src/styles.css
17:42:39 [vite] (client) hmr update /src/styles.css
17:44:42 [vite] (client) hmr update /src/App.tsx
09:11:33 [vite] (client) hmr update /src/App.tsx
09:11:59 [vite] (client) hmr update /src/styles.css
09:14:42 [vite] (client) hmr update /src/styles.css
09:15:32 [vite] (client) hmr update /src/styles.css
09:18:16 [vite] (client) hmr update /src/App.tsx
09:18:28 [vite] (client) hmr update /src/styles.css
09:35:28 [vite] (client) hmr update /src/App.tsx
09:35:53 [vite] (client) hmr update /src/App.tsx
09:35:53 [vite] (client) hmr update /src/styles.css
09:36:43 [vite] (client) hmr update /src/App.tsx
09:40:50 [vite] (client) hmr update /src/App.tsx
09:41:06 [vite] (client) hmr update /src/styles.css
09:42:18 [vite] (client) hmr update /src/styles.css
09:55:02 [vite] (client) hmr update /src/App.tsx
09:55:36 [vite] (client) hmr update /src/App.tsx
09:55:49 [vite] (client) hmr update /src/styles.css
10:07:23 [vite] (client) hmr update /src/App.tsx
10:26:33 [vite] (client) hmr update /src/App.tsx
10:27:25 [vite] (client) hmr update /src/App.tsx
10:27:56 [vite] (client) hmr update /src/styles.css
11:14:09 [vite] (client) hmr update /src/App.tsx
11:16:09 [vite] (client) page reload zbChart/index.html
11:17:29 [vite] (client) page reload index.html
11:17:43 [vite] (client) page reload src/main.tsx
11:32:17 [vite] (client) page reload src/main.tsx
11:35:33 [vite] (client) hmr update /src/App.tsx
11:35:45 [vite] (client) hmr update /src/styles.css
11:49:29 [vite] (client) hmr update /src/App.tsx
11:52:03 [vite] (client) hmr update /src/styles.css
11:53:37 [vite] (client) hmr update /src/App.tsx
11:57:22 [vite] (client) hmr update /src/App.tsx
11:59:02 [vite] (client) hmr update /src/App.tsx
15:00:25 [vite] (client) hmr update /src/App.tsx
15:14:46 [vite] (client) hmr update /src/App.tsx
15:14:56 [vite] (client) hmr update /src/App.tsx
15:15:05 [vite] (client) hmr update /src/App.tsx
15:15:18 [vite] (client) hmr update /src/App.tsx
15:15:29 [vite] (client) hmr update /src/App.tsx
15:15:39 [vite] (client) hmr update /src/App.tsx
15:15:49 [vite] (client) hmr update /src/styles.css
15:54:06 [vite] (client) hmr update /src/App.tsx
15:54:29 [vite] (client) hmr update /src/styles.css
16:29:28 [vite] (client) hmr update /src/App.tsx
16:29:37 [vite] (client) hmr update /src/App.tsx
17:53:09 [vite] (client) hmr update /src/App.tsx
17:53:24 [vite] (client) hmr update /src/styles.css
17:54:53 [vite] (client) hmr update /src/App.tsx
17:55:03 [vite] (client) hmr update /src/styles.css
18:10:22 [vite] (client) hmr update /src/App.tsx
09:43:29 [vite] (client) page reload zbChart/index.html
09:43:43 [vite] (client) page reload demo.html
09:44:24 [vite] (client) hmr update /src/App.tsx
09:47:32 [vite] (client) hmr update /src/App.tsx
09:56:50 [vite] (client) hmr update /src/App.tsx
10:03:05 [vite] (client) hmr update /src/App.tsx
10:04:28 [vite] (client) hmr update /src/App.tsx
10:04:35 [vite] (client) hmr update /src/styles.css
10:06:06 [vite] (client) hmr update /src/App.tsx
10:06:25 [vite] (client) hmr update /src/styles.css
14:21:06 [vite] (client) hmr update /src/App.tsx
14:26:18 [vite] (client) hmr update /src/App.tsx
14:26:51 [vite] (client) hmr update /src/styles.css
14:28:15 [vite] (client) hmr update /src/App.tsx
14:28:24 [vite] (client) hmr update /src/App.tsx
15:07:03 [vite] (client) hmr update /src/App.tsx
15:07:31 [vite] (client) hmr update /src/App.tsx
15:08:11 [vite] (client) hmr update /src/App.tsx
15:13:59 [vite] (client) hmr update /src/App.tsx
16:47:31 [vite] (client) hmr update /src/App.tsx
16:48:22 [vite] (client) hmr update /src/App.tsx
16:48:32 [vite] (client) hmr update /src/App.tsx
17:00:07 [vite] (client) hmr update /src/App.tsx
17:15:44 [vite] (client) hmr update /src/App.tsx
18:06:45 [vite] (client) hmr update /src/App.tsx
18:07:01 [vite] (client) hmr update /src/App.tsx
18:07:22 [vite] (client) hmr update /src/App.tsx
18:07:43 [vite] (client) hmr update /src/App.tsx
18:08:03 [vite] (client) hmr update /src/App.tsx
18:08:20 [vite] (client) hmr update /src/App.tsx
18:08:55 [vite] (client) hmr update /src/App.tsx
18:09:09 [vite] (client) hmr update /src/App.tsx
18:09:41 [vite] (client) hmr update /src/App.tsx
18:10:20 [vite] (client) hmr update /src/styles.css
18:11:00 [vite] (client) hmr update /src/styles.css
09:08:22 [vite] (client) hmr update /src/App.tsx
09:09:58 [vite] (client) hmr update /src/App.tsx
09:10:10 [vite] (client) hmr update /src/styles.css
09:12:48 [vite] (client) hmr update /src/styles.css
09:24:09 [vite] (client) hmr update /src/styles.css
09:24:54 [vite] (client) hmr update /src/styles.css
09:25:33 [vite] (client) hmr update /src/App.tsx
09:25:55 [vite] (client) hmr update /src/styles.css
09:31:55 [vite] (client) hmr update /src/App.tsx
09:32:05 [vite] (client) hmr update /src/App.tsx
09:32:12 [vite] (client) hmr update /src/App.tsx
09:32:32 [vite] (client) hmr update /src/styles.css
09:45:56 [vite] (client) hmr update /src/App.tsx
10:00:51 [vite] (client) hmr update /src/App.tsx
10:01:08 [vite] (client) hmr update /src/App.tsx
10:01:23 [vite] (client) hmr update /src/App.tsx
10:01:36 [vite] (client) hmr update /src/App.tsx
10:01:46 [vite] (client) hmr update /src/App.tsx
10:01:56 [vite] (client) hmr update /src/App.tsx
10:02:58 [vite] (client) hmr update /src/App.tsx
10:08:33 [vite] (client) hmr update /src/App.tsx
10:08:56 [vite] (client) hmr update /src/App.tsx
10:09:20 [vite] (client) hmr update /src/styles.css
10:09:29 [vite] (client) hmr update /src/styles.css
10:12:15 [vite] (client) hmr update /src/styles.css
10:17:02 [vite] (client) hmr update /src/App.tsx
10:54:20 [vite] (client) hmr update /src/App.tsx
10:54:44 [vite] (client) hmr update /src/App.tsx
10:59:54 [vite] (client) hmr update /src/App.tsx
11:00:16 [vite] (client) hmr update /src/App.tsx
11:00:32 [vite] (client) hmr update /src/App.tsx
11:00:55 [vite] (client) hmr update /src/App.tsx
11:12:15 [vite] (client) hmr update /src/App.tsx
11:16:52 [vite] (client) hmr update /src/App.tsx
11:20:34 [vite] (client) hmr update /src/App.tsx
11:22:39 [vite] (client) hmr update /src/App.tsx
11:30:32 [vite] (client) hmr update /src/App.tsx
11:42:14 [vite] (client) hmr update /src/App.tsx
11:48:40 [vite] (client) hmr update /src/App.tsx
12:07:11 [vite] (client) hmr update /src/App.tsx
12:07:25 [vite] (client) hmr update /src/App.tsx
12:07:50 [vite] (client) hmr update /src/App.tsx
14:44:40 [vite] (client) hmr update /src/App.tsx
14:47:46 [vite] (client) hmr update /src/App.tsx
14:48:15 [vite] (client) hmr update /src/App.tsx
14:51:05 [vite] (client) hmr update /src/App.tsx
15:13:54 [vite] (client) hmr update /src/App.tsx
15:14:22 [vite] (client) hmr update /src/App.tsx
15:17:54 [vite] (client) hmr update /src/App.tsx
15:18:05 [vite] (client) hmr update /src/App.tsx
15:18:58 [vite] (client) hmr update /src/App.tsx
15:37:07 [vite] (client) hmr update /src/App.tsx
15:37:17 [vite] (client) hmr update /src/App.tsx
15:44:06 [vite] (client) hmr update /src/App.tsx
16:32:19 [vite] (client) hmr update /src/App.tsx
17:15:32 [vite] (client) hmr update /src/App.tsx
+1
View File
@@ -0,0 +1 @@
$ vite --host 0.0.0.0 --host "127.0.0.1" --port "5173"
+5
View File
@@ -0,0 +1,5 @@
VITE v7.3.2 ready in 283 ms
➜ Local: http://127.0.0.1:5173/
 ➜ press h + enter to show help
+13 -1
View File
@@ -2,7 +2,19 @@ import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
plugins: [
react(),
{
name: 'weaver-script-scope-wrapper',
renderChunk(code, chunk) {
if (!chunk.isEntry) return null;
return {
code: `;(() => {\n${code}\n})();\n`,
map: null,
};
},
},
],
server: {
port: 5173,
},