diff --git a/.gitignore b/.gitignore index 14d84b8..8937423 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,3 @@ dist/ build/ .pytest_cache/ planning/ -dashboard.log diff --git a/src/admin_analytics/dashboard/pages/about.py b/src/admin_analytics/dashboard/pages/about.py index 8663cc2..e3ade3f 100644 --- a/src/admin_analytics/dashboard/pages/about.py +++ b/src/admin_analytics/dashboard/pages/about.py @@ -20,7 +20,7 @@ All data is drawn from public, open-access sources: | Source | Publisher | What We Use | Coverage | |--------|-----------|-------------|----------| | **IPEDS** | U.S. Dept. of Education, NCES | Institutional directory, expenses by function, staffing by occupation, enrollment, endowment, philanthropic gifts | 2005-2024 | -| **IRS Form 990** | Internal Revenue Service | Executive compensation (Schedule J), filing financials for UD and UD Research Foundation | Tax years 2015-2025 | +| **IRS Form 990** | Internal Revenue Service | Executive compensation (Schedule J), filing financials for UD and UD Research Foundation | Tax years 2015-2023 | | **BLS CPI-U** | Bureau of Labor Statistics | Consumer Price Index for inflation adjustment (series CUUR0000SA0) | Full history | | **UD Staff Directories** | University of Delaware public web pages | Administrative office headcounts (College of Engineering line management, Provost's Office) | Current snapshot | @@ -80,6 +80,6 @@ employees only (FTPT=2). ### License -This project is released under the MIT License. +This project is released under the MIT License. Copyright (c) 2026 Eric Furst. """), ], style={"maxWidth": "900px", "margin": "0 auto", "lineHeight": "1.6"}) diff --git a/src/admin_analytics/dashboard/pages/compensation.py b/src/admin_analytics/dashboard/pages/compensation.py index 08a370e..922fc51 100644 --- a/src/admin_analytics/dashboard/pages/compensation.py +++ b/src/admin_analytics/dashboard/pages/compensation.py @@ -164,12 +164,12 @@ def layout(conn: duckdb.DuckDBPyConnection): ), html.Div( [ - html.Div(dcc.Graph(id="comp-breakdown-chart", config={"displaylogo": False}), style={"flex": "1"}), - html.Div(dcc.Graph(figure=cpi_fig, config={"displaylogo": False}), style={"flex": "1"}), + html.Div(dcc.Graph(id="comp-breakdown-chart"), style={"flex": "1"}), + html.Div(dcc.Graph(figure=cpi_fig), style={"flex": "1"}), ], style={"display": "flex", "gap": "16px", "marginTop": "16px"}, ), - dcc.Graph(figure=role_fig, config={"displaylogo": False}), + dcc.Graph(figure=role_fig), ]) diff --git a/src/admin_analytics/dashboard/pages/endowment.py b/src/admin_analytics/dashboard/pages/endowment.py index d2418e5..2774bf1 100644 --- a/src/admin_analytics/dashboard/pages/endowment.py +++ b/src/admin_analytics/dashboard/pages/endowment.py @@ -190,12 +190,12 @@ def layout(conn: duckdb.DuckDBPyConnection): charts = [ kpi_row, - dcc.Graph(figure=value_fig, config={"displaylogo": False}), - dcc.Graph(figure=eps_fig, config={"displaylogo": False}), - dcc.Graph(figure=components_fig, config={"displaylogo": False}), - dcc.Graph(figure=rate_fig, config={"displaylogo": False}), + dcc.Graph(figure=value_fig), + dcc.Graph(figure=eps_fig), + dcc.Graph(figure=components_fig), + dcc.Graph(figure=rate_fig), ] if cio_df.height > 1: - charts.append(dcc.Graph(figure=cio_fig, config={"displaylogo": False})) + charts.append(dcc.Graph(figure=cio_fig)) return html.Div(charts) diff --git a/src/admin_analytics/dashboard/pages/headcount.py b/src/admin_analytics/dashboard/pages/headcount.py index 3adf03e..9aa45ea 100644 --- a/src/admin_analytics/dashboard/pages/headcount.py +++ b/src/admin_analytics/dashboard/pages/headcount.py @@ -107,10 +107,10 @@ def layout(conn: duckdb.DuckDBPyConnection): kpi_row, html.Div( [ - html.Div(dcc.Graph(figure=unit_fig, config={"displaylogo": False}), style={"flex": "1"}), - html.Div(dcc.Graph(figure=pie_fig, config={"displaylogo": False}), style={"flex": "1"}), + html.Div(dcc.Graph(figure=unit_fig), style={"flex": "1"}), + html.Div(dcc.Graph(figure=pie_fig), style={"flex": "1"}), ], style={"display": "flex", "gap": "16px"}, ), - dcc.Graph(figure=cat_fig, config={"displaylogo": False}), + dcc.Graph(figure=cat_fig), ]) diff --git a/src/admin_analytics/dashboard/pages/overview.py b/src/admin_analytics/dashboard/pages/overview.py index cf46de2..714a9f3 100644 --- a/src/admin_analytics/dashboard/pages/overview.py +++ b/src/admin_analytics/dashboard/pages/overview.py @@ -156,12 +156,12 @@ def layout(conn: duckdb.DuckDBPyConnection): return html.Div([ kpi_row, - dcc.Graph(figure=ratio_fig, config={"displaylogo": False}), - dcc.Graph(figure=breakdown_fig, config={"displaylogo": False}), + dcc.Graph(figure=ratio_fig), + dcc.Graph(figure=breakdown_fig), html.Div( [ - html.Div(dcc.Graph(figure=aps_fig, config={"displaylogo": False}), style={"flex": "1"}), - html.Div(dcc.Graph(figure=afr_fig, config={"displaylogo": False}), style={"flex": "1"}), + html.Div(dcc.Graph(figure=aps_fig), style={"flex": "1"}), + html.Div(dcc.Graph(figure=afr_fig), style={"flex": "1"}), ], style={"display": "flex", "gap": "16px"}, ), diff --git a/src/admin_analytics/dashboard/pages/philanthropy.py b/src/admin_analytics/dashboard/pages/philanthropy.py index 0b77d9e..55236e4 100644 --- a/src/admin_analytics/dashboard/pages/philanthropy.py +++ b/src/admin_analytics/dashboard/pages/philanthropy.py @@ -123,10 +123,10 @@ def layout(conn: duckdb.DuckDBPyConnection): charts = [ kpi_row, - dcc.Graph(figure=gifts_fig, config={"displaylogo": False}), - dcc.Graph(figure=split_fig, config={"displaylogo": False}), + dcc.Graph(figure=gifts_fig), + dcc.Graph(figure=split_fig), ] if cvp_df.height > 1: - charts.append(dcc.Graph(figure=cvp_fig, config={"displaylogo": False})) + charts.append(dcc.Graph(figure=cvp_fig)) return html.Div(charts) diff --git a/src/admin_analytics/dashboard/pages/staffing.py b/src/admin_analytics/dashboard/pages/staffing.py index 5050960..635e882 100644 --- a/src/admin_analytics/dashboard/pages/staffing.py +++ b/src/admin_analytics/dashboard/pages/staffing.py @@ -85,17 +85,17 @@ def layout(conn: duckdb.DuckDBPyConnection): )) growth_fig.add_hline(y=100, line_dash="dot", line_color="#ccc") growth_fig.update_layout( - title="Management Growth (Indexed, Base Year = 100)", + title="Management vs Faculty vs Enrollment Growth (Indexed, Base Year = 100)", xaxis_title="Year", yaxis_title="Index", template="plotly_white", height=380, ) return html.Div([ - dcc.Graph(figure=comp_fig, config={"displaylogo": False}), + dcc.Graph(figure=comp_fig), html.Div( [ - html.Div(dcc.Graph(figure=ratio_fig, config={"displaylogo": False}), style={"flex": "1"}), - html.Div(dcc.Graph(figure=growth_fig, config={"displaylogo": False}), style={"flex": "1"}), + html.Div(dcc.Graph(figure=ratio_fig), style={"flex": "1"}), + html.Div(dcc.Graph(figure=growth_fig), style={"flex": "1"}), ], style={"display": "flex", "gap": "16px"}, ),