fix: Detail page graphical fixes and proper sidebar#103
Open
rubenvdlinde wants to merge 188 commits intomainfrom
Open
fix: Detail page graphical fixes and proper sidebar#103rubenvdlinde wants to merge 188 commits intomainfrom
rubenvdlinde wants to merge 188 commits intomainfrom
Conversation
- Create phpunit.xml (PHPUnit 10 format) - Create tests/bootstrap.php with Nextcloud environment support - Add ProspectScoringServiceTest with 9 tests covering scoring logic
Move docusaurus project files from docusaurus/ into docs/ alongside content. Replace local documentation.yml with centralized caller. Replace local code-quality.yml with centralized caller.
…tent button styling
Based on analysis of 74 Dutch government tenders and 408 competitor specs: Tender-derived (6): kcc-werkplek, klantbeeld-360, contactmomenten-rapportage, omnichannel-registratie, kennisbank, terugbel-taakbeheer Competitor-derived (6): activity-timeline, email-calendar-sync, product-catalog-quoting, public-intake-forms, contact-relationship-mapping, crm-workflow-automation
- Pass app's objectStore to useListView in all 5 list views, fixing the mismatch between the app's 'object' store and the library's 'conduction-objects' store. - Call initializeStores() in main.js alongside mount so the retry logic in useListView can wait for type registration. - Deeplink support now works automatically via useListView's URL sync — filter/sort/page state is persisted in URL query params.
Spec enrichment: - All 27 base specs updated with implementation status and gap analysis - Key findings: assignee vs assignedTo field mismatch, no currency field on leads Bug fix: - LeadProducts discount: (qty*price)-discount -> (qty*price)*(1-discount/100) New specs: - prometheus-metrics: Prometheus metrics endpoint (/api/metrics, /api/health) - register-i18n: Multi-language register content support Implementation: - MetricsController: leads by status/pipeline, pipeline value, clients, contacts - HealthController: database + OpenRegister dependency checks - Dashboard: KPI cards migrated to CnStatsBlock with route props
Show NcEmptyContent empty state when OpenRegister is not installed, with install button for admins. Add ESLint rule enforcing scoped styles in Vue files, move global CSS to src/assets/app.css. Fix webpack build by aliasing @nextcloud/dialogs.
Support: support@conduction.nl SLA: sales@conduction.nl
…on files - Add @nextcloud/l10n import in main.js - Fix Dutch t() keys in widget components - Inject IL10N into 4 controllers - Expand l10n files from 64 to 393 translation keys (en + nl)
- Fix LessSpecificImplementedReturnType in Filter.php with typed array annotations - Fix UnusedClosureParam in Application.php by prefixing unused params with _ - Fix MissingTemplateParam in listeners by adding @implements template annotation - Fix UndefinedClass errors by adding OpenRegister + OC to psalm.xml suppressions - Fix InvalidNamedArgument in apcu_store (use positional args) - Fix InvalidNamedArgument in updateTag (description -> color) - Suppress UnusedParam for $objectId used in string interpolation
…r ternaries, named params, doc comments
…d deps, ignore optional OpenRegister dependency
Copied the standard PHPMD config from opencatalogi with default thresholds (CyclomaticComplexity 10, NPath 200, MethodLength 100, ClassLength 1000) and added the previously missing rules: BooleanArgumentFlag, ElseExpression, StaticAccess, UnusedFormalParameter. Resolved all 27 new warnings: - ElseExpression: replaced if/else with ternary assignments - StaticAccess on Util::addScript/addStyle: suppressed (Nextcloud API) - UnusedFormalParameter: suppressed (interface contracts) - BooleanArgumentFlag: suppressed (simple toggle params) - CyclomaticComplexity/NPathComplexity: suppressed (orchestrator method)
Pre-existing PHPMD warning: methods returning bool should use is/has prefix.
…epository Extract KvkResultMapper, OpenCorporatesResultMapper, IcpConfigReader, MetricsRepository, MetricsFormatter to reduce cyclomatic complexity and Halstead volume to zero phpmetrics violations.
…fig-recommended-vue
…itive Vue SFC exports
Add search input to pipeline board header that filters kanban cards and list items by title (case-insensitive). Column counts and values update to reflect filtered results. Add stage probability range validation (0-100) in PipelineForm. Includes OpenSpec change artifacts.
…nnels - Add case-insensitive duplicate name check on add and rename operations - Display translated error message when duplicate detected - Add en/nl translation key for duplicate error message
Validate that stage probability is between 0 and 100 in PipelineForm, implementing REQ-PIPE-005 Scenario 24.
feat: Client management summary statistics and @type mapping
feat: Implement register-i18n locale-aware formatting
feat: Pipeline search bar and stage validation
…into development
- playwright.config.ts with global-setup auth - 4 spec files: smoke, navigation, dashboard, pages - Pages spec verifies all 8 real pages with form fields - 7 test flow markdowns for LLM-based testing - Covers: dashboard, navigation, clients, leads, pipeline, requests, products, my-work
The register JSON file has never been valid JSON since creation. It had 8 missing commas in the schemas array, truncated schema definitions (queue, intakeForm, automation, automationLog, relationship, intakeSubmission), and duplicate entries. Fixed by regenerating with: - All 26 unique schemas properly defined - Removed duplicates (contactmoment, kennisartikel, etc.) - Removed taak (Dutch duplicate of task) - Every schema has slug, title, icon, version, summary, description, required, and properties - JSON validates with python3 json.load()
- MainMenu.vue: Fix corrupted template with escaped newlines, missing closing tags, and overlapping attributes. All 16 nav items now render. - SettingsLoadService: Expand SCHEMA_SLUGS from 11 to 26 entries to match all schemas in pipelinq_register.json - SettingsService: De-duplicate CONFIG_KEYS and add missing schema keys - RequestDetail.vue: Add missing closing brace for .queue-select CSS - KennisbankHome.vue: Add missing </style> tag before <script> These fixes resolve all webpack build errors and the "Object type X is not registered" console errors on every page.
- Navigation: verify all 16 sidebar items + 4 settings sub-items - Pages: add Tasks, Contactmomenten, Complaints, Surveys, Queues, Kennisbank, Reporting tests - Dashboard: refactor with beforeEach
Pass human-readable type labels to CnObjectSidebar title prop instead of showing raw object type strings like "pipelinq_client".
Pipelinq uses Vue Router history mode, not hash mode. Remove '#/' from URL templates so deep links navigate correctly.
…ient [#83] Add three action-oriented dashboard widgets: - StartRequestWidget: inline form to create service requests - CreateLeadWidget: inline form to create leads with pipeline selection - FindClientWidget: enhanced client search with action buttons (replaces ClientSearchWidget) Shared ClientAutocomplete component for client type-ahead in forms. Updated Application.php registrations and webpack entry points.
…pair maintenance:repair fails with 'Access denied' for configuration entities. Disabling and re-enabling the app triggers the repair step with proper app context.
- Tasks: new task form (Subject, Description, Priority, Deadline) - Contactmomenten: unique UI (heading, search, channel buttons, CSV export) - Complaints: new complaint form (Title, Description, Category, Channel) - Surveys: heading, New Survey button, form with Add Question - Queues: heading, Add queue modal with name/description/categories - Kennisbank: search, categories, New Article form with markdown editor - Reporting: KPI cards, Export CSV, Channel/Agent analytics tabs - Pipelines settings: Add pipeline, empty state prompt
- router/index.js: Remove duplicate imports and routes (ContactmomentDetail, TaskList, TaskDetail, KennisbankHome imported twice; routes duplicated) - store.js: Fix missing closing braces, remove task_schema registration (tasks use Nextcloud native system via OpenRegister bridge) - ClientDetail.vue: Add missing </CnDetailCard> closing tag, remove broken orphan try/catch in onContactmomentSaved - ContactmomentDetail.vue: Rewrite — two merged implementations caused SyntaxError; keep only CnDetailPage version with sidebar support - TaskList.vue: Rewrite — old manual template merged into script block; keep only CnIndexPage version - TaskDetail.vue: Rewrite — old/new implementations merged; keep only CnDetailPage version with sidebar and task business logic - TaskForm.vue: Rewrite — duplicate form sections broke template closure; keep complete version with assignee search
feat(pipelinq): Action widgets — Start Request, Create Lead, Find Client
fix: Resolve build-breaking syntax errors across multiple views
Add proposal, design, specs (6 capabilities), and tasks for replacing the built-in kennisbank with xWiki integration via reusable widget and sidebar tab components. Depends on nextcloud/xwiki NC 32 compatibility. Signed-off-by: Ruben van der Linde <rubenvdlinde@gmail.com>
Fix naming parameters, inline ternaries, missing doc comments, line length violations, and code style issues in 25 PHP files.
- Fix unused imports/variables in Vue components (formatNumber, PhoneInTalk, generateUrl, axios, currentValue) - Add formatNumber to methods blocks where used in templates - Auto-fix ESLint formatting (object-property-newline, indent, brace-style) - Auto-fix Stylelint issues (rule-empty-line-before, string-quotes) - Fix PHP parse error in PublicKennisbankControllerTest (orphaned code)
Fix merge artifacts causing syntax errors: - Remove duplicate property declarations in TaskExpiryJobTest - Remove orphaned code after method closures in KennisbankReviewJobTest - Fix missing doc comment opener and duplicate code in MetricsFormatterTest
- Fix Complaints nested inside Contactmomenten card (broken closing tags) - Replace empty states with NcEmptyContent - Add flush prop to table-containing CnDetailCards - Add objectSidebarState to App.vue for proper NcAppSidebar on detail pages - Dashboard: add flush to My Work and Client Overview widgets Closes #XX
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.
Summary
Depends on ConductionNL/nextcloud-vue#32
Closes #102