MishkaDocumentWeb.Live.Admin.Dashboard.Home.StatsLive (Mishka Document v0.0.1)

Copy Markdown View Source

The row of figures across the top of the Documents dashboard, each read through Ash as the admin looking at it — a master across every site, a site admin on their own:

  • Total Documents — the documents (MishkaDocument.Workspace), and how many were added in the last seven days;
  • Contributors — the accounts the event log (MishkaDocument.EventLog) has writing a document, a version, a page, a note or a draft of either, and how many did in the last day;
  • Completion — the share of pages (MishkaDocument.Section) both their reviews approve;
  • Last Updated — when a document or a page was last changed.

A figure is drawn only when its records are the admin's to read: Completion needs the section area, and Last Updated reads the pages only for an admin holding it.

A live component of its own because it has its own reads: they run after the page is drawn (assign_async), so a slow count never holds the dashboard, and each figure is a card/1. Sending it refresh: true reads them again, keeping the figures shown until the new ones arrive.

<.live_component module={StatsLive} id="document-stats" current_user={@current_user} />

Summary

Functions

One figure: its icon and label, the figure, and a line under it.

The figures user may read, in the order they are drawn, each as card/1 takes it.

Functions

card(assigns)

One figure: its icon and label, the figure, and a line under it.

Attributes

  • id (:string) (required)
  • label (:string) (required)
  • icon (:string) (required)
  • tone (:string) (required)
  • value (:string) (required)
  • note (:string) (required)
  • note_tone (:string) (required)

cards(user)

@spec cards(MishkaCmsCore.Accounts.User.t()) :: [map()]

The figures user may read, in the order they are drawn, each as card/1 takes it.