Repository navigation
admin pages sorted by "last updated" by default - #1271
Merged
Merged
Conversation
…tor now in the table #1270
NGPixel
approved these changes
Dec 15, 2019
jionggyu
pushed a commit
to jionggyu/wiki-2.5.302-patch
that referenced
this pull request
Jul 9, 2024
* admin pages sorted by "last updated" by default. Creator and last Editor now in the table requarks#1270 * Sort by 'Last Updated' by default
dylan-hart
added a commit
to dylan-hart/wiki
that referenced
this pull request
Aug 24, 2026
…s section (requarks#1260, requarks#1264, requarks#1266) (#5) * Backend: raw total-count queries alongside unique counts (requarks#1269) countsForGraph() and contributorCountsForGraph() now compute a sibling raw count(*) figure per window/clientType and per/via, additive alongside the existing distinct counts, threaded through assembleGraph, GraphNode and the graph API schemas. Contributor totals are deliberately not filtered to surviving authors -- a since-deleted account's edits still count as real history rows, unlike the unique-contributor figures. Verified against a real Postgres 17 container (DATABASE_URL-gated DB-backed suites pass alongside the pure-unit graph.test.ts). Co-Authored-By: Claude Sonnet 5 <[email protected]> * Add tri-state indeterminate support to WCheckbox (OpenProject requarks#1271) Adds an `indeterminate` prop that renders the standard dash/mixed glyph, visually distinct from both checked and unchecked, with aria-checked="mixed" for accessibility. Purely visual: the click handler still emits its usual boolean flip, leaving the parent to decide what a click on an indeterminate checkbox means -- the PAT scope tree (requarks#1272) uses this to select all children on click, the standard tri-state convention. * Rebuild PAT scope field as verb-grouped tri-state tree (OpenProject requarks#1272) Replaces the flat `w-select multiple use-chips` scope field in both ApiKeyCreateDialog.vue and ProfileApiKeyCreateDialog.vue with ApiKeyScopePicker.vue: a two-level tree, one tri-state group node per verb (access/manage/read/write/delete/review) that selects/deselects every scope under it in one click, with independently-checkable scopes nested under an expandable/collapsible group body. The wire shape (a flat array of scope strings) is unchanged -- this is a picker UX change only. Sources the scope list from one shared place (helpers/apiKeyScopes.js) instead of the two independently hand-maintained literals that existed before, and closes the gap against backend ALL_PERMISSIONS by adding the 4 scopes the frontend list was missing: read:users, read:groups, manage:glossary, manage:classification. * Frontend: Unique/Total sizing toggle, drop Uniform mode (requarks#1270) Adds a "Count" Unique/Total toggle next to "Size by" that radiusFor()/collideRadiusFor()/the hover tooltip all read through contributorCountFor()/pageviewCountFor(), backed by requarks#1269's new total fields. Drops the "Uniform" sizing option entirely -- sizeBy now defaults to (and the tracking-disabled watcher falls back to) 'edits' instead. Relabels "Edit volume"/"Page visits" to "Edits"/"Visits". Co-Authored-By: Claude Sonnet 5 <[email protected]> * Add features.showOtherGroups site setting (task 1273) Admin toggle in AdminGeneral.vue's Features card, backed by a new features.showOtherGroups key (default false) in both site default-config blocks in models/sites.ts and the sites API schema. Off by default, since this eventually names every group's identity to any logged in user. * Return non-member groups from GET /profile/groups (task 1274) Gated on the caller's site having features.showOtherGroups enabled: off, the response is exactly the pre-existing plain array; on, it becomes { groups, otherGroups } -- id+name only, resolved via the new users.getNonMemberGroups() model method. The gate is enforced server-side (never fetch-then-hide), preserving the route's no-read:groups design. * Add subdued Other Groups section to profile Groups tab (task 1275) Renders only when GET /profile/groups includes a non-empty otherGroups list. Styled subdued per project convention: opacity-60 on the row content (AdminApprovals.vue's disabled-rule pattern) and a grey avatar instead of secondary (AdminGroups.vue's muted-state convention) -- informational only, no click affordance. * Final review fixes: parallelize independent queries, use es-toolkit groupBy - graph.ts / pageHistory.ts / users.ts: three sequential-await sites where each query only depends on siteId/userId (not on each other) now run concurrently via Promise.all, cutting graph-load and profile-groups latency roughly 2-3x. - apiKeyScopes.js: groupScopesByVerb() now uses es-toolkit's groupBy instead of a hand-rolled Map loop, per this repo's "use es-toolkit, not a hand-rolled equivalent" convention. Found by the final code-review pass over this iteration's merged diff. --------- Co-authored-by: Claude Sonnet 5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
admin pages sorted by "last updated" by default.
#1270