{"id":"695823c051eccfbd2474822a","title":"2025 12 02 Issue 97","path":"how-to/committee/release-notes/2025-12-02-issue-97","contentMarkdown":"# 02-Dec-2025 — Content: 4 features [#97](https://github.com/nbarrett/ngx-ramblers/issues/97)\n\n## [Commit c426906](https://github.com/nbarrett/ngx-ramblers/commit/c426906318834d186857edd34f196892692290d4)\n\n_____\n\n## New Features\n\n### **content**: add search filtering and UI polish to Index [fixes #97 phase 4](https://github.com/nbarrett/ngx-ramblers/issues/97)\n\nUpdated row type selector:\n- Added displayValue() method to customize enum display\n- Maps ALBUM_INDEX to \"Index\" for cleaner UI\n- Keeps internal enum value unchanged for backward compatibility\nEnhanced album index view with search filtering:\n- Added search input with FontAwesome search icon\n- Only shows search when >5 items (shouldShowSearch)\n- filteredPageContent() filters columns by title and contentText\n- Search applies to both action buttons and map rendering\n- Case-insensitive substring matching\nAll phases complete for issue #97:\n- Phase 1: Location row type for dynamic content\n- Phase 2: Index multi-content support (albums + pages)\n- Phase 3: Map rendering with clustering\n- Phase 4: Search filtering and UI polish\n\n### **content**: add map rendering to Index with clustering [fixes #97 phase 3](https://github.com/nbarrett/ngx-ramblers/issues/97)\n\nCreated DynamicContentViewAlbumIndexMapComponent:\n- Leaflet-based map with marker clustering support\n- Configurable map height, clustering threshold\n- Click-to-navigate markers with rich popups\n- Image thumbnails, titles, descriptions in popups\n- Auto-fit bounds to show all markers\nUpdated content-text.model:\n- Added location property to PageContentColumn interface\n- Enables location data passthrough from pages to map\nEnhanced LocationExtractionService:\n- Now includes location coordinates in extracted columns\n- Supports geocoded data for map rendering\nUpdated album index view component:\n- Multi-render mode support (action buttons + map)\n- Renders modes in selection order\n- Passes map configuration from albumIndex to map component\n- getRenderModes() defaults to ACTION_BUTTONS for backward compatibility\nAdded map configuration UI to album index editor:\n- Render modes multi-select (action buttons, map)\n- Conditional map config section (height, clustering toggle, threshold)\n- ensureMapConfig() initializes defaults when MAP mode selected\n- Defaults: height 500px, clustering enabled, threshold 10 items\n\n### **content**: enhance Index with multi-content support [fixes #97 phase 2](https://github.com/nbarrett/ngx-ramblers/issues/97)\n\nExtended AlbumIndexService to support multiple content types:\n- Added contentTypes property to AlbumIndex interface\n- Defaults to [IndexContentType.ALBUMS] for backward compatibility\n- Refactored album extraction into extractAlbumColumns method\n- Integrated LocationExtractionService for PAGES content type\n- Aggregates albums and pages based on contentTypes selection\nUpdated album index edit UI:\n- Added ng-select multi-select for content type selection\n- Selection order determines display order\n- Initialization ensures backward compatibility\n- Changed summary text from \"albums\" to \"items\" for generic display\nFixed Location edit component:\n- Corrected AlertTarget import from alert-target.model\n- Properly initialized notify instance in ngOnInit\n- Added notification target template reference\n\n### **content**: add Location row type for dynamic content [fixes #97 phase 1](https://github.com/nbarrett/ngx-ramblers/issues/97)\n\nAdd new Location row type to capture and display location data within dynamic content pages.","contentHtml":"<h1>02-Dec-2025 — Content: 4 features <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/97\">#97</a></h1>\n<h2><a href=\"https://github.com/nbarrett/ngx-ramblers/commit/c426906318834d186857edd34f196892692290d4\">Commit c426906</a></h2>\n<hr>\n<h2>New Features</h2>\n<h3><strong>content</strong>: add search filtering and UI polish to Index <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/97\">fixes #97 phase 4</a></h3>\n<p>Updated row type selector:</p>\n<ul>\n<li>Added displayValue() method to customize enum display</li>\n<li>Maps ALBUM_INDEX to &quot;Index&quot; for cleaner UI</li>\n<li>Keeps internal enum value unchanged for backward compatibility\nEnhanced album index view with search filtering:</li>\n<li>Added search input with FontAwesome search icon</li>\n<li>Only shows search when &gt;5 items (shouldShowSearch)</li>\n<li>filteredPageContent() filters columns by title and contentText</li>\n<li>Search applies to both action buttons and map rendering</li>\n<li>Case-insensitive substring matching\nAll phases complete for issue #97:</li>\n<li>Phase 1: Location row type for dynamic content</li>\n<li>Phase 2: Index multi-content support (albums + pages)</li>\n<li>Phase 3: Map rendering with clustering</li>\n<li>Phase 4: Search filtering and UI polish</li>\n</ul>\n<h3><strong>content</strong>: add map rendering to Index with clustering <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/97\">fixes #97 phase 3</a></h3>\n<p>Created DynamicContentViewAlbumIndexMapComponent:</p>\n<ul>\n<li>Leaflet-based map with marker clustering support</li>\n<li>Configurable map height, clustering threshold</li>\n<li>Click-to-navigate markers with rich popups</li>\n<li>Image thumbnails, titles, descriptions in popups</li>\n<li>Auto-fit bounds to show all markers\nUpdated content-text.model:</li>\n<li>Added location property to PageContentColumn interface</li>\n<li>Enables location data passthrough from pages to map\nEnhanced LocationExtractionService:</li>\n<li>Now includes location coordinates in extracted columns</li>\n<li>Supports geocoded data for map rendering\nUpdated album index view component:</li>\n<li>Multi-render mode support (action buttons + map)</li>\n<li>Renders modes in selection order</li>\n<li>Passes map configuration from albumIndex to map component</li>\n<li>getRenderModes() defaults to ACTION_BUTTONS for backward compatibility\nAdded map configuration UI to album index editor:</li>\n<li>Render modes multi-select (action buttons, map)</li>\n<li>Conditional map config section (height, clustering toggle, threshold)</li>\n<li>ensureMapConfig() initializes defaults when MAP mode selected</li>\n<li>Defaults: height 500px, clustering enabled, threshold 10 items</li>\n</ul>\n<h3><strong>content</strong>: enhance Index with multi-content support <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/97\">fixes #97 phase 2</a></h3>\n<p>Extended AlbumIndexService to support multiple content types:</p>\n<ul>\n<li>Added contentTypes property to AlbumIndex interface</li>\n<li>Defaults to [IndexContentType.ALBUMS] for backward compatibility</li>\n<li>Refactored album extraction into extractAlbumColumns method</li>\n<li>Integrated LocationExtractionService for PAGES content type</li>\n<li>Aggregates albums and pages based on contentTypes selection\nUpdated album index edit UI:</li>\n<li>Added ng-select multi-select for content type selection</li>\n<li>Selection order determines display order</li>\n<li>Initialization ensures backward compatibility</li>\n<li>Changed summary text from &quot;albums&quot; to &quot;items&quot; for generic display\nFixed Location edit component:</li>\n<li>Corrected AlertTarget import from alert-target.model</li>\n<li>Properly initialized notify instance in ngOnInit</li>\n<li>Added notification target template reference</li>\n</ul>\n<h3><strong>content</strong>: add Location row type for dynamic content <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/97\">fixes #97 phase 1</a></h3>\n<p>Add new Location row type to capture and display location data within dynamic content pages.</p>\n"}