تخطَّ إلى المحتوى الرئيسي

لوحات المعلومات

حيث تعيش الأسئلة المثبتة من طاولة العمل: كل لوحة هي مجموعة من البلاطات المحفوظة، وكل بلاطة تعيد تشغيل استعلامها عند كل فتح، فالأرقام حية وليست لقطات. تبحث المكتبة بالاسم، وتُنشأ اللوحات وتُسمى وتُنسخ وتُحذف.

The dashboards library in the Live environment
The dashboards library, Live environment.
The dashboards library in the Live environment, dark theme
The dashboards library, Live environment.

The library

Every board in the project, searchable by name, with the count in the page head describing the whole library rather than the narrowed view. New dashboard names a board and opens it empty; a board's row menu renames, duplicates or deletes it, and deleting asks first because a board's tiles are the only copy of their saved questions. How the library presents, as cards, rows or a table, is a stored preference per person.

A board and its tiles

A dashboard opened to its tiles
A board open: every tile re-runs its saved query.
A dashboard opened to its tiles, dark theme
A board open: every tile re-runs its saved query.

Each tile is one saved question: its title, the current total, a signed delta against the preceding window and a sparkline of the series. Tiles are added by asking a question in the Analytics workbench and pinning the result here; the pin dialog offers every existing board and a new one. A trend tile carries the whole query forward: every metric, any formula, its breakdowns and its compared period, so a re-run always answers exactly what was pinned. A tile that fails to load says so on the tile, with its own retry, rather than poisoning the board; Refresh re-runs every tile at once, and a tile's menu renames it, switches it between standard and wide widths, moves it along the grid, or removes it.

Where this meets the API

The concept behind the boards is the Analytics pillar. On the wire: the library is the dashboards query, boards change through createDashboard, updateDashboard and deleteDashboard (pinning a tile is an updateDashboard carrying the new tile), and every tile renders by running its stored query through runQuery (GraphQL reference).