diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-02-18 20:52:23 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-02-18 20:52:23 +0100 |
| commit | da20590943b833abcce72bd6d6de475a83d5df07 (patch) | |
| tree | 2b19c858e605931352a35fb40a7af6fc9a661d42 /server/src/ui | |
| parent | e1b67c885d5789268cec53ac68479a329fba9c8f (diff) | |
| download | jellything-da20590943b833abcce72bd6d6de475a83d5df07.tar jellything-da20590943b833abcce72bd6d6de475a83d5df07.tar.bz2 jellything-da20590943b833abcce72bd6d6de475a83d5df07.tar.zst | |
reverse credits
Diffstat (limited to 'server/src/ui')
| -rw-r--r-- | server/src/ui/node.rs | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/server/src/ui/node.rs b/server/src/ui/node.rs index 0f39213..853a96b 100644 --- a/server/src/ui/node.rs +++ b/server/src/ui/node.rs @@ -32,6 +32,7 @@ pub fn r_node(ri: RequestInfo<'_>, slug: &str) -> MyResult<UiResponse> { page.push(VIEW_NODE_PAGE, nku); c_children(&mut page, txn, row, &nku)?; c_credits(&mut page, txn, &nku)?; + c_credited(&mut page, txn, row)?; page_out = page.finish(); } @@ -108,7 +109,7 @@ fn c_credits( ) -> Result<()> { let mut list = ObjectBufferBuilder::default(); list.push(NODELIST_DISPLAYSTYLE, NLSTYLE_INLINE); - list.push(NODELIST_TITLE, "node.people"); + list.push(NODELIST_TITLE, "node.credits"); if !nku.get(NKU_NODE).unwrap_or_default().has(NO_CREDIT.0) { return Ok(()); @@ -129,3 +130,40 @@ fn c_credits( page.push(VIEW_NODE_LIST, list.finish().as_object()); Ok(()) } + +fn c_credited(page: &mut ObjectBufferBuilder, txn: &mut dyn Transaction, row: u64) -> Result<()> { + let children_rows = txn + .query(Query { + sort: Sort::Value(ValueSort { + multi: MultiBehaviour::First, + offset: None, + order: SortOrder::Ascending, + path: Path(vec![NO_TITLE.0]), + }), + filter: Filter::All(vec![ + Filter::Match(Path(vec![NO_VISIBILITY.0]), VISI_VISIBLE.into()), + Filter::Match(Path(vec![NO_CREDIT.0, CR_NODE.0]), row.into()), + ]), + })? + .collect::<Result<Vec<_>>>()?; + + if children_rows.is_empty() { + return Ok(()); + } + + let mut list = ObjectBufferBuilder::default(); + list.push(NODELIST_DISPLAYSTYLE, NLSTYLE_GRID); + list.push(NODELIST_TITLE, "node.credited"); + + for (row, _) in children_rows { + list.push( + NODELIST_ITEM, + Object::EMPTY + .insert(NKU_NODE, txn.get(row)?.unwrap().as_object()) + .as_object(), + ); + } + + page.push(VIEW_NODE_LIST, list.finish().as_object()); + Ok(()) +} |