feat(manifest): convert Voorstellen list page to declarative type:index#429
Merged
Merged
Conversation
…:index
`Voorstellen` was a `type:"custom"` page backed by VoorstelList.vue — a
hand-rolled table with filter-tabs, computed columns (step-progress, waiting
actor, days-in-step) and a parafering-reminder row action. With
@conduction/nextcloud-vue beta.38's `columns[].formatter`, `columns[].widget`
and `actions[].handler` (the registry-fn dispatch path), all of that is now
declarative:
- package.json: @conduction/nextcloud-vue ^1.0.0-beta.29 → ^1.0.0-beta.38.
- src/services/formatters.js (new): the cell-formatter registry —
voorstelType / voorstelStatus (also rendered via `widget:"badge"`) /
voorstelStepProgress / voorstelWaitingActor / voorstelDaysInStep, all pure
`(value, row) => string` fns ported from VoorstelList.vue. (Separate from
mapFormatters.js, which is the `type:"map"` registry.)
- src/main.js / src/App.vue: import + clone `formatters`, pass it to App and
forward `:formatters` to `<CnAppRoot>` (provided to CnDataTable/CnCellRenderer
as `cnFormatters`).
- src/manifest.json: `Voorstellen` → `type:"index"` on `voorstel` —
columns onderwerp / type (fmt) / status (fmt + badge) / Stap (fmt) /
Wacht op (fmt) / Dagen in stap (fmt) / steller; `actions: [{ id:"reminder",
handler:"voorstelReminder" }]`; `sidebar:{ enabled:true, showMetadata:true }`.
- src/customComponents.js: drop `VoorstellenView`; add `voorstelReminder` (a
function entry — CnIndexPage dispatches the `reminder` action to it with
`{ actionId, item }`, replacing the bespoke `sendReminder()` from the
deleted view).
- Delete src/views/voorstellen/VoorstelList.vue (~373 lines). VoorstelDetail
stays `type:"custom"` (the parafeerroute multi-step approver flow).
Rework note (accepted): the old active/afgerond/alle filter-tabs aren't carried
over — the page now shows all voorstellen with the index search box; a base
filter on the `index` config (a planned nc-vue follow-up) would restore the
"actief by default" view, or a `status` facet on the sidebar gives ad-hoc
filtering once the schema marks `status` facetable.
Build: webpack compiles (benign warnings only); `npm run lint` 0 errors;
manifest parses + no dup page ids. Browser verification pending on this PR
(the dev-container procest is on a different branch / lib version).
Contributor
Quality Report — ConductionNL/procest @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 420/420 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ❌ |
Coverage: 0% (0/81 statements)
Spec coverage: 4% (19 tests / 456 specs)
Quality workflow — 2026-05-12 19:39 UTC
Download the full PDF report from the workflow artifacts.
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.
Voorstellenwas atype:"custom"page backed byVoorstelList.vue— a hand-rolled table with filter-tabs, computed columns (step-progress, waiting actor, days-in-step) and a parafering-reminder row action. With@conduction/nextcloud-vue@1.0.0-beta.38'scolumns[].formatter,columns[].widgetandactions[].handler(registry-fn dispatch), all of that is now declarative.What changed
package.json—@conduction/nextcloud-vue^1.0.0-beta.29→^1.0.0-beta.38.src/services/formatters.js(new) — cell-formatter registry:voorstelType/voorstelStatus(also rendered viawidget:"badge") /voorstelStepProgress/voorstelWaitingActor/voorstelDaysInStep, pure(value, row) => stringfns ported fromVoorstelList.vue. (Separate frommapFormatters.js— thetype:"map"registry.)src/main.js/src/App.vue— import + cloneformatters, pass toApp, forward:formattersto<CnAppRoot>(→cnFormatters).src/manifest.json—Voorstellen→type:"index"onvoorstel: columns onderwerp / type (fmt) / status (fmt + badge) / Stap (fmt) / Wacht op (fmt) / Dagen in stap (fmt) / steller;actions:[{ id:"reminder", handler:"voorstelReminder" }];sidebar:{ enabled:true, showMetadata:true }.src/customComponents.js— dropVoorstellenView; addvoorstelReminder(function entry —CnIndexPagedispatches thereminderaction to it with{ actionId, item }, replacing the bespokesendReminder()).src/views/voorstellen/VoorstelList.vue(~373 lines).VoorstelDetailstaystype:"custom"(parafeerroute multi-step approver flow).Rework note (accepted)
The old active / afgerond / alle filter-tabs aren't carried over — the page shows all voorstellen with the index search box. A base filter on the
indexconfig (a planned nc-vue follow-up) would restore the "actief by default" view; astatussidebar facet gives ad-hoc filtering once the schema marksstatusfacetable.Verify
npm run buildcompiles (benign warnings only);npm run lint0 errors; manifest parses, no dup page ids. Browser verification pending on this PR (the dev-container procest is on a different branch / lib version).