Skip to content

feat(applications): tables, members and stats on the overview - #28

Open
remko48 wants to merge 4 commits into
stack/a3-export-importfrom
stack/d1-overview-extras
Open

remko48 wants to merge 4 commits into
stack/a3-export-importfrom
stack/d1-overview-extras

Conversation

@remko48

@remko48 remko48 commented Oct 14, 2026

Copy link
Copy Markdown
Member

The application overview now shows which tables the application works on, who it is shared with, and a short summary.

What changes

  • Tables: every table the application uses, through its own resources, a table or view page, or a data widget on a page with widgets. Each row shows the row count, the number of views and what uses the table. A table the user cannot access is listed by id.
  • Members (owner only): the owner and everyone the application is shared with, with a button to change the shares. Only the owner gets the full list of shares, so others don't see this section.
  • Stats: a line counting the pages and tables, plus the members for the owner.
  • Page filter: a filter field appears once an application has more than six pages, matching label, type and what the page shows.
  • Tests: a Playwright test checks the tables list and the counts.

🖼️ Screenshots

🏚️ Before 🏡 After
|

🏁 Checklist

  • ⛑️ Tests (unit and/or integration) are included or not needed
  • 🔙 Backport requests are created or not needed: /backport to stableX.X
  • 📅 Milestone is set
  • 🌸 PR title is meaningful (if it should be in the changelog: is it meaningful to users?)

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI

- the overview lists every table the application uses, through its own
  resources, a page or a widget, and says what uses it
- the owner sees who the application is shared with
- a short line counts the pages, tables and, for the owner, the members
- a filter appears once an application has more than six pages

Signed-off-by: Remko <remko@conduction.nl>
Assisted-by: ClaudeCode:claude-opus-5-5
@remko48
remko48 added this pull request to stack #32 October 14, 2026 10:03
@remko48
remko48 removed this pull request from stack #32 October 14, 2026 10:21
@remko48
remko48 added this pull request to stack #33 October 14, 2026 10:21
@remko48 remko48 closed this Oct 14, 2026
@remko48 remko48 reopened this Oct 14, 2026
The Open button in the tables list navigates through the app's router, as NcButton's 'to' renders a plain button in this app.

Signed-off-by: Remko <remko@conduction.nl>
Assisted-by: ClaudeCode:claude-opus-5-5
Comment thread src/pages/Context.vue
<div class="context__section-header">
<h2>{{ t('tables', 'Pages') }}</h2>
<div class="context__section-actions">
<NcTextField v-if="pages.length > 6"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Minor — a filter query can get stuck with no field to clear it

The field only renders while pages.length > 6, but pageFilter keeps its value. When pages are removed down to six, the field disappears and the list can stay on "No page matches the filter." with nothing to clear it. Filtered child rows also show "1.1" without their parent row.

Impact: a page list that looks empty with no way out but a reload.

Suggested fix: clear pageFilter when the field goes away (or keep the field while the query is non-empty); optionally keep the parent row of a matching child.

Comment thread src/pages/Context.vue
type: share.receiver_type,
id: share.receiver,
name: share.receiver_display_name ?? share.receiver,
role: share.receiver_type === 'user' ? t('tables', 'Member') : t('tables', 'Group'),

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Minor — teams are labelled "Group", and a group counts as one member

receiver_type can be circle (a team), which gets the label "Group" here. The stats line also counts every group or team share as one member.

Impact: a slightly wrong label and member count.

Suggested fix: add a "Team" label for circle; count shares rather than members, or count users only.

Comment thread src/pages/Context.vue
return [...uses.values()].map(entry => ({
...entry,
table: this.tables.find(table => table.id === entry.id) ?? null,
viewCount: this.views.filter(view => view.tableId === entry.id && view.type !== 'grid').length,

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Minor — the "Views" column only counts views the browser happens to know

this.views holds the user's own and shared views plus those loaded for this application, not all views of the table.

Impact: the number under-reports and differs between users.

Suggested fix: drop the column, or label it as the views available to you.

@rubenvdlinde

Copy link
Copy Markdown
Collaborator

Superseded by #42 (rebuilt on application pages, see #13).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants