Spaces:
Sleeping
Sleeping
File size: 3,085 Bytes
58e6885 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | You are refactoring a single JavaScript (D3) chart function. Goal: enforce a clear block structure, centralized style control, strict config-driven behavior, and production-ready code.
I. Assumptions
• Input: one JS function using D3.
• Preserve any `/* REQUIREMENTS_BEGIN … REQUIREMENTS_END */` block exactly at the top.
II. Mandatory Block Skeleton (use comments)
0 Metadata & Requirements
1 Config Parsing & Validation
2 Style & Helper Definitions
3 SVG Root Init (no viewBox, width/height from config || 800×600)
4 Layout & Dimensions
5 Data Preprocessing
6 Scales
7 Defs (gradients, patterns, filters)
8 Components (axes, grid, legend — NO titles)
9 Main Marks (bars, lines, etc.)
10 Enhancements & Interaction
11 Cleanup & Return
III. Style Rules (all in Block 2)
• const fillStyle = {token: color|gradient|pattern};
• fillStyle.typography = {labelTextSize, dataTextSize, axisTickTextSize, …};
• Later blocks must reference these tokens only.
• Implement estimateTextWidth() with detached in-memory SVG.
IV. Content Restrictions
• Do not render titles/subtitles.
• Delete optional effects that are off by default.
• No per-datum try/catch or value checks before scale usage.
V. Class Naming (add class attr on creation)
value | label | text | icon | image | mark | axis | other
VI. Naming Conventions
config, chartDataArray, svgRoot, mainChartGroup, barElements, xAxisGroup, xScale, yScale, colorScale, chartMargins, containerWidth/Height, innerWidth/Height.
VII. Commenting
Block headers only; minimal inline comments (focus on “why”).
VIII. Metadata JSON Template (inside REQUIREMENTS block; keep exact keys, fill enumerations with one value — use "none" if not applicable)
```json
{
"chart_type": "Grouped Circular Bar Chart",
"chart_name": "grouped_circular_bar_chart_01",
"is_composite": false,
"required_fields": ["x", "y", "group"],
"hierarchy": ["group"],
"required_fields_type": [["categorical"], ["numerical"], ["categorical"]],
"required_fields_range": [[2,20],[0,"inf"],[2,5]],
"required_fields_icons": ["group"],
"required_other_icons": [],
"required_fields_colors": ["group"],
"required_other_colors": ["primary"],
"min_height": 400,
"min_width": 400,
"background": "no",
"elementAlignment": "none", // left | center | right | top | bottom
"xAxis": "none", // visible | minimal | none
"yAxis": "none", // visible | minimal | none
"gridLineType": "none", // subtle | prominent | none
"legend": "none", // normal | compact | detailed | none
"dataLabelPosition": "none", // outside | inside | center_element | auto | none
"artisticStyle": "clean", // clean | hand_drawn | gradient_gloss | shadow
"valueSortDirection": "none", // ascending | descending | none
"iconographyUsage": "none" // none | categorical_markers_overlay_internal | categorical_markers_overlay_edge | element_replacement | background_contextual | adjacent_indicator
}
``` |