Projects: classes as entities, and the sidebar fits short windows
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
A project is a class with facts (description, status, kind, party, dates, links, notes) in one project.set event behind the format feature projects. Four tools (books.add_project, update_project, projects, project); documents and decisions link to projects; B-37: on-spec costs are expensed as incurred, repayment is revenue, and the unrecovered cost is never below zero (Kani). Viewer: a Projects list and a project page with its figures, by month and by account. The sidebar measures its footer instead of reserving a fixed 172 px. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
This commit is contained in:
71 files changed
+7446
-217
No files matched your search
@@ -49,6 +49,7 @@ fn crumbs_link_every_level_but_the_last() {
|
||||
let entry = b.entries.first().unwrap().id;
|
||||
let mut routes = vec![
|
||||
Route::Party(party),
|
||||
Route::Project(b.ledger.list_classes()[0].id),
|
||||
Route::Reconciliation(rec.id),
|
||||
Route::Entry(entry),
|
||||
Route::Reports(ReportKind::ProfitAndLoss),
|
||||
@@ -112,7 +113,11 @@ fn clicking_a_crumb_goes_there() {
|
||||
h.get_all_by_label(&account).next().unwrap().click();
|
||||
h.run_steps(3);
|
||||
assert_eq!(h.state().route(), &Route::Account(rec.account_id));
|
||||
h.get_by_label("Accounts").click();
|
||||
// The crumb, not the sidebar's link of the same name (left of it).
|
||||
h.get_all_by_label("Accounts")
|
||||
.max_by(|a, b| a.rect().left().total_cmp(&b.rect().left()))
|
||||
.unwrap()
|
||||
.click();
|
||||
h.run_steps(3);
|
||||
assert_eq!(h.state().route(), &Route::Accounts);
|
||||
}
|
||||
Reference in new issue
Block a user