Turn a Grist table into a website‑style dashboard — no code
Advanced Charts is a free custom widget for Grist by ANUPRESS. Point it at any Grist table and build a polished page of KPI cards, charts, group breakdowns and maps — edited in place, like a page builder. Your data never leaves your Grist document.
What it is & why use it
Grist is a modern spreadsheet‑database. A custom widget is simply a web page you embed inside a Grist document. ANUPRESS is that web page — except instead of showing one chart, it gives you a whole mini‑site: a header with your logo and menu, a body of cards and charts organised into tabs, and a footer.
If you can fill in a form, you can build a dashboard with it. There is nothing to install, no account to create, and no server in the middle.
📊 Every chart type
Bar, column, line, area, pie, doughnut, treemap, funnel, radar, scatter and gauge — powered by Apache ECharts.
🔢 Works with any table
Sales, people, inventory, samples — text, choice, date, number and yes/no columns are all supported.
🗺️ Maps & breakdowns
Plot latitude/longitude points, and show group‑wise counts as a list or a chart.
🎨 Fully designable
Colour palettes, fonts, dark mode, corners, spacing — a global design panel, like a page builder.
🔒 Private by design
No ANUPRESS server. Everything runs in your browser; your data stays inside Grist.
💸 Free
Load it by URL. No licence, no sign‑up, no usage limits.
Live, interactive demo
This is the real widget running on sample data — the same thing you’ll get on first load. It cycles through the tabs on its own; click anything to take over and explore. Try the moon/sun icon for dark mode and the Edit button to see the builder (it stays in demo mode here, so nothing is saved).
Quick start — 5 steps
- Open the widget panel in Grist. In your document, add a new widget (or convert a section) and choose the Custom widget type.
- Paste the URL. In the panel settings, find Enter Custom URL and paste:
https://anupress.github.io/grist-advanced-charts/ - Look around the demo. The widget loads with sample data so you can see what’s possible before connecting your own.
- Click Edit → Accept → Allow full access. ANUPRESS shows a consent screen (explained below), then Grist asks you to grant full document access. This lets it read your tables and save your design.
- Build & publish. Add blocks, pick your table and columns, then click Save & Publish. Your dashboard reloads automatically next time anyone opens the document.
https://anupress.github.io/grist-advanced-charts/?demo=1 in a browser tab.Permissions & privacy
The first time you click Edit, ANUPRESS shows a short consent screen. It explains, in plain language, exactly what happens next:
- One table is created —
ANUPRESS_Config— to store your design (layout, colours, logo). - Your tables are read so you can chart any column from any table.
- Your design is saved back into that table, so it reloads next time.
- Nothing leaves Grist — there is no ANUPRESS server, no analytics, and no third‑party calls.
After you accept, Grist itself asks you to grant full document access. That is required so the widget can read every table (not just one) and create the config table. You can change or revoke this any time from the widget’s settings panel in Grist.
The editor at a glance
In edit mode a dark bar appears at the top with everything you need:
| Button | What it does |
|---|---|
| Theme | Colour palettes, custom primary/accent colours, font pairing, light/dark. |
| Design | Site‑wide corners, density, content width, shadows and text size. |
| Pages | Add/rename/reorder tabs (drag the grip handle), per‑page hero, and URL menu links. |
| Header | Upload a logo, set the site title and slogan. |
| Done | Leave edit mode and return to the live view. |
| Save & Publish | Write your design into your Grist document. |
While editing, hover any block to reveal its drag, edit and delete buttons. Click the header, footer or hero to edit those directly. An Add a block tile sits at the end of every tab.
Building blocks
The body of every page is a grid of blocks. Click Add a block and choose one of five types. Each opens a side panel with a live preview so you see the result as you change settings.
① Stat card (a single KPI)
A big number with an optional trend and a sparkline — e.g. Total Revenue, Headcount.
- Value column — the column to measure. Every column is listed; text columns are marked
(text). - Summarize by — Sum, Average, Count, Distinct count, Min, Max, Median or Std. deviation. Pick a text column and it switches to Count automatically (great for “number of samples”).
- Compare over — optional. Pick a date/order column and the card shows the % change vs the previous period.
- Icon — choose a built‑in icon or upload your own (stored for reuse).
- Number format — compact (1.2K, 3.4M) and a currency symbol.
Revenue, Summarize = Sum, Compare over = Month,
Currency = $, Compact on → $905.48K ▼ 12% vs prev. period.② Charts
One Chart block, every chart type inside it. You pick the data first, and incompatible chart types grey out automatically — so you can’t build something that doesn’t make sense.
- Categories — the groups along the axis (e.g.
Region,Month). - Values — the numbers to plot (e.g.
Revenue). Add a second category to split into series. - Summarize by — the same aggregations as stat cards.
- Chart type — a grid with a ★ on the recommended type for your columns:
| Type | Best for | Needs |
|---|---|---|
| Column / Bar | Comparing categories | 1 category + 1+ value |
| Line / Area | Trends over time | a date/category + value(s) |
| Pie / Doughnut | Share of a whole | 1 category + 1 value |
| Treemap / Funnel | Composition / stages | 1 category + 1 value |
| Radar | Comparing several measures | several values or categories |
| Scatter | Correlation between two numbers | 2 number columns |
| Gauge | A single value vs a target | 1 number column |
Extra options appear per type: Stack series, Smooth curve, Sort by value, and custom colours (or inherit the theme palette).
Age and Salary,
Categories = Department → each point is a person, coloured by department.③ Breakdown (group‑wise counts)
Counts each distinct value of a column and shows the split with coloured dots, counts and percentages — like “Individual Sex: Male 1,108 (47%) · Female 1,178 (50%) · Empty 29 (1%)”. Empty/blank values get their own row, so it doubles as a quick data‑quality check.
- Group by column — any column.
- Show as — List (the count rows) or a Donut / Pie / Bar / Column chart of the same counts.
- Max rows — anything beyond the limit is rolled into an “Other” row.
④ Map (latitude / longitude)
Plots a pin for every row that has coordinates, on an interactive Leaflet map with marker clustering and Street / Satellite / Terrain layers.
- Latitude / Longitude columns — auto‑detected by name (e.g.
sample_latitude), or pick them. - Popup title — the bold line in each pin’s popup (e.g. a name or code).
- Colour points by — optional category; the legend lists the colours.
- Tooltip fields — choose up to 4 columns to show in the popup (raw lat/long is never shown).
⑤ Text
A heading and a block of text (basic HTML allowed) — for intros, notes or context between charts.
Aggregations in plain English
| Option | Meaning |
|---|---|
| Sum | Adds the numbers up. |
| Average | The mean. |
| Count | How many rows (works on any column — even text). |
| Distinct count | How many different values. |
| Min / Max | Smallest / largest. |
| Median | The middle value. |
| Std. deviation | How spread out the numbers are. |
Dynamic subtitles (write your own, with live numbers)
Every chart, breakdown and map block has a Subtitle field. Type whatever you like, and drop in placeholders that fill in automatically. Click the small (i) next to the field to see which placeholders that block supports.
| Block | Placeholders | Example template → result |
|---|---|---|
| Map | %count %missing %total | %count mapped · %missing without coordinates → “36 mapped · 0 without coordinates” |
| Breakdown | %total %groups %top %topcount %empty | %groups departments → “6 departments” |
| Chart | %count %groups %total | %count rows across %groups groups → “192 rows across 4 groups” |
Hero & slider
Each page can start with a hero — either a gradient banner with your headline, or a full‑width image slideshow (up to 340px tall). The text is fully designable, WordPress‑style:
Show / hide per page Alignment: left / center / right Vertical: top / middle / bottom Headline size S–XL Font: serif / sans / display / mono Text colour
Add images to turn the banner into a slider, give each slide its own caption, and set auto‑play speed. Edit a hero by clicking it, or from Pages → ✦ next to a page.
Pages & menu
Your dashboard can have multiple pages (tabs). The menu switches between them instantly — no page reload.
- Add / rename / delete pages, and drag the grip handle to reorder them.
- Per‑page hero — every page has its own headline/slider.
- URL menu links — add external links (label + URL) that appear in the menu and open in a new tab, e.g. a link back to your website or docs.
Theme & dark mode
- Colour templates — 10 ready‑made palettes; or set your own primary and accent colours.
- Font pairing — several heading/body combinations.
- Light / Dark — toggle from the Theme panel, or with the moon/sun icon in the header. A viewer’s own choice is remembered on their device.
Global design panel
The Design button gives you site‑wide controls that apply across both light and dark themes:
Corners: sharp → round Density: compact → roomy Content width: narrow → full Shadows: flat / soft / bold Text size: small / normal / large
Saving & publishing
Click Save & Publish to write your design into the ANUPRESS_Config table in your
document (a single row of settings). Anyone who opens the document then sees your published dashboard
instead of the demo. Done leaves edit mode. Delete the ANUPRESS_Config table and the
widget simply falls back to the demo.
FAQ & troubleshooting
Is it really free, and is there a catch?
It’s free and there’s no catch. It’s a static web page you load by URL — no account, no licence, no limits. The only credit is a small “Built with ANUPRESS” link in the footer.
Can ANUPRESS or anyone else see my data?
No. There is no ANUPRESS server. The widget runs entirely in your browser and talks only to your Grist document. The single exception is map tiles (see Permissions & privacy).
The column dropdown is empty / my chart has no data.
Check three things: you granted full document access, you selected the correct Data table, and — for charts — that your columns suit the chart type (incompatible types are greyed). Stat cards list every column; for text columns use Count.
My map is blank.
Make sure the Latitude and Longitude columns hold numbers in valid ranges (lat −90…90, lon −180…180). Rows without both are counted as “without coordinates”.
Does it work on a self‑hosted Grist?
Yes. Any Grist that supports custom widgets by URL works — Grist’s hosted service or your own instance.
How do I update or remove my dashboard?
Click Edit again to change it, then Save & Publish. To reset, delete the
ANUPRESS_Config table in Grist.
Request a feature or send feedback
Found a bug, or want a new chart type or option? Tell us — this widget grows from real requests.
💡 Suggest a feature
Found a bug, or want a new chart type or option? Tell us — this widget grows from real requests.
Advanced Charts is free and open source. If it saves you time and you’d like to help cover the running costs.
About ANUPRESS
ANUPRESS builds practical, no‑nonsense tools and honest reviews for people who run their own sites and data. If you found this useful, you might like our other hands‑on guides:
