mirror of
https://github.com/we-promise/sure.git
synced 2026-04-17 02:54:10 +00:00
* First reporting version * Fixes for all tabs * Transactions table * Budget section re-design * FIX exports Fix transactions table aggregation * Add support for google sheets Remove pdf and xlsx for now * Multiple fixes - Trends & Insights now follows top filter - Transactions Breakdown removed filters, implemented sort by amount. - The entire section follows top filters. - Export to CSV adds per month breakdown * Linter and tests * Fix amounts - Correctly handle amounts across the views and controller. - Pass proper values to do calculation on, and not loose precision * Update Gemfile.lock * Add support for api-key on reports Also fix custom date filter * Review fixes * Move budget status calculations out of the view. * fix ensures that quarterly reports end at the quarter boundary * Fix bugdet days remaining Fix raw css style * Fix test * Implement google sheets properly with hotwire * Improve UX on period comparison * FIX csv export for non API key auth
68 lines
2.4 KiB
Plaintext
68 lines
2.4 KiB
Plaintext
<div class="pb-12">
|
|
<%= render "budgets/budget_header",
|
|
budget: @budget,
|
|
previous_budget: @previous_budget,
|
|
next_budget: @next_budget,
|
|
latest_budget: @latest_budget %>
|
|
|
|
<div class="space-y-4">
|
|
<%# Top Section: Donut and Summary side by side %>
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
<%# Budget Donut %>
|
|
<div class="h-[300px] bg-container rounded-xl shadow-border-xs p-8">
|
|
<% if @budget.available_to_allocate.negative? %>
|
|
<%= render "budgets/over_allocation_warning", budget: @budget %>
|
|
<% else %>
|
|
<%= render "budgets/budget_donut", budget: @budget %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<%# Actuals Summary %>
|
|
<div class="bg-container rounded-xl shadow-border-xs">
|
|
<% if @budget.initialized? && @budget.available_to_allocate.positive? %>
|
|
<%= render DS::Tabs.new(active_tab: params[:tab].presence || "budgeted") do |tabs| %>
|
|
<% tabs.with_nav do |nav| %>
|
|
<% nav.with_btn(id: "budgeted", label: "Budgeted") %>
|
|
<% nav.with_btn(id: "actuals", label: "Actual") %>
|
|
<% end %>
|
|
|
|
<% tabs.with_panel(tab_id: "budgeted") do %>
|
|
<div class="bg-container rounded-xl shadow-border-xs">
|
|
<%= render "budgets/budgeted_summary", budget: @budget %>
|
|
</div>
|
|
<% end %>
|
|
|
|
<% tabs.with_panel(tab_id: "actuals") do %>
|
|
<div class="bg-container rounded-xl shadow-border-xs">
|
|
<%= render "budgets/actuals_summary", budget: @budget %>
|
|
</div>
|
|
<% end %>
|
|
<% end %>
|
|
<% else %>
|
|
<%= render "budgets/actuals_summary", budget: @budget %>
|
|
<% end %>
|
|
</div>
|
|
</div>
|
|
|
|
<%# Bottom Section: Categories full width %>
|
|
<div class="w-full bg-container rounded-xl shadow-border-xs p-4">
|
|
<div class="flex items-center justify-between mb-4">
|
|
<h2 class="text-lg font-medium">Categories</h2>
|
|
|
|
<% if @budget.initialized? %>
|
|
<%= render DS::Link.new(
|
|
text: "Edit",
|
|
variant: "secondary",
|
|
icon: "settings-2",
|
|
href: budget_budget_categories_path(@budget)
|
|
) %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<div class="bg-container-inset rounded-xl p-1">
|
|
<%= render "budgets/budget_categories", budget: @budget %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|