Skip to content

[codex] add advanced project and personnel visualizations#19

Merged
jaromil merged 13 commits into
masterfrom
advanced-data-visualization
Jun 10, 2026
Merged

[codex] add advanced project and personnel visualizations#19
jaromil merged 13 commits into
masterfrom
advanced-data-visualization

Conversation

@jaromil

@jaromil jaromil commented Jun 9, 2026

Copy link
Copy Markdown
Member

What changed

  • Added Tablecloth and Tableplot as the production visualization boundary, with Clay isolated to the development :viz alias.
  • Added a local Plotly.js asset and HTMX-aware chart initialization.
  • Added reusable monthly, annual, period, heatmap, task-budget, and cumulative plan-versus-actual chart models.
  • Added hours-focused charts above existing detail tables in project and personnel views.
  • Added fixture-only Clay review output, eligibility and category-reduction safeguards, and visualization ownership documentation.
  • Made the Playwright harness portable and deterministic on Windows, including base-path execution and process-tree cleanup.

Why

Managers and personnel need to interpret activity patterns, contributors, task utilization, and plan progress without reading every detail table. The implementation keeps existing tables authoritative, preserves role boundaries, and avoids implying daily precision from monthly timesheet totals.

Impact

  • Managers receive hours-only visualizations with no cost fields.
  • Admin and personnel workflows retain their existing tables and controls.
  • H2020, infra, and rolling project views gain appropriate time-based interpretation where source data supports it.
  • Personnel pages gain twelve-month project activity, period totals, heatmap eligibility, and yearly summary facts.
  • The DHTMLX Gantt integration remains unchanged.

Validation

  • clj -M:test: 531 checks passed
  • npm run build:frontend: passed
  • npm run test:e2e: 30 passed, 1 expected skip outside base-path mode
  • npm run test:e2e:base-path: 1 passed
  • clj -M:viz -m agiladmin.visualization-notebook: static report generated successfully under target/visualization/

Limitation

The available application facts are monthly assignment totals. These charts do not claim daily, weekly, or within-month activity precision.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a production visualization boundary and integrates Plotly-based charts into project and personnel pages, while keeping the existing tabular views authoritative and improving E2E portability (notably for Windows/base-path execution).

Changes:

  • Introduces agiladmin.visualization (Tablecloth/Tableplot → Plotly spec) plus tests and a dev-only Clay notebook under :viz.
  • Serves Plotly.js as a local asset and initializes charts in app.js on page load and htmx:load, including resizing on tab activation.
  • Extends project/personnel views with hours-focused charts and updates Playwright harness/scripts for deterministic, base-path friendly runs.

Reviewed changes

Copilot reviewed 23 out of 28 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
test/e2e/project-access.spec.js Extends manager project E2E checks for Plotly presence, cost omission, mobile viewport, and console errors.
test/e2e/personnel-visibility.spec.js Adds Plotly initialization assertions, mobile viewport checks, and console error collection.
test/agiladmin/visualization_test.clj New Midje tests covering month parsing, safe JSON escaping, chart markup, and key chart model behaviors.
test/agiladmin/view_timesheet_test.clj Makes temp directory usage deterministic by writing under target/test-tmp.
test/agiladmin/version_test.clj Writes temp version fixture under target/test-tmp for determinism.
test/agiladmin/test_runner.clj Explicitly requires the full Midje namespace set, including the new visualization tests.
test/agiladmin/config_test.clj Normalizes path separators for Windows and switches tests to explicit YAML file paths.
src/agiladmin/webpage.clj Includes the local plotly.min.js asset in the page head.
src/agiladmin/visualization.clj New visualization boundary: month helpers, JSON escaping, chart wrappers, and reusable chart specs.
src/agiladmin/view_timesheet.clj Replaces fs/base-name with .getName when building destination filenames.
src/agiladmin/view_project.clj Adds project charts above detail tabs and refactors tab definitions into a helper.
src/agiladmin/view_person.clj Adds yearly activity summary + Plotly charts above existing monthly detail sections.
scripts/sync-frontend-assets.mjs Copies Plotly’s minified distribution into resources/public/static/js/.
scripts/e2e/start-agiladmin.mjs Improves Windows portability (repo-root resolution, temp dirs under .tmp, configurable Clojure command).
scripts/e2e/run-playwright.mjs Runs Playwright via Node, sets deterministic TEMP/TMP, adds process-tree cleanup.
scripts/e2e/run-base-path.mjs New helper script to run the base-path E2E suite portably (Windows-friendly env handling).
resources/public/static/js/app.js Adds Plotly chart init/fallback/resize logic and switches HTMX hook to htmx:load.
resources/public/static/css/app.css Updated compiled Tailwind/DaisyUI CSS to support new chart/layout classes.
README.md Documents visualization architecture, local Plotly asset syncing, and Clay report generation.
playwright.config.mjs Forces workers: 1 to reduce E2E flakiness/non-determinism.
package.json Adds plotly.js-dist-min and replaces base-path E2E script with a Node wrapper.
package-lock.json Locks Plotly dependency resolution.
dev/agiladmin/visualization_notebook.clj New Clay notebook for fixture-based chart review under :viz.
deps.edn Adds Tablecloth/Tableplot to prod deps; isolates Clay under :viz alias.
AGENTS.md Documents visualization ownership boundaries and role/capability constraints.
.gitignore Ignores .clj-config/ and .gestalt artifacts.
.gestalt/plans/advanced-data-visualization.org Adds implementation plan and acceptance criteria record.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/agiladmin/visualization.clj Outdated
Comment thread src/agiladmin/visualization.clj Outdated
Comment thread src/agiladmin/view_project.clj
Comment thread src/agiladmin/view_project.clj
@jaromil jaromil marked this pull request as ready for review June 10, 2026 06:11
@jaromil jaromil merged commit 670573f into master Jun 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants