You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: specs/001-advanced-table/spec.md
+18-13Lines changed: 18 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,7 @@
11
11
12
12
- Q: Search Highlight Color - Should search term highlighting use a hardcoded yellow color or adapt to themes? → A: Use theme-responsive highlight color (via CSS variable) that adapts to light/dark mode
13
13
- Q: Ellipsized Cell Expansion Behavior - Should full content appear in overlay, inline expansion, or side panel? → A: Modal/tooltip overlay that appears above the table (preserves table layout)
14
+
- Q: Theme Change Detection - How should plugin respond to YASGUI theme changes? → A: Use MutationObserver to watch data-theme attribute changes with 500ms polling fallback for dynamic theme adaptation
14
15
- Q: Visual Guides During Column Resize - What type of visual guides should appear (column highlight, vertical line, measurements)? → A: Standard behavior of the library that we are going to use to implement the table
15
16
- Q: Infinite Scroll Implementation Strategy - Should infinite scroll load all rows, use virtual scrolling, or batch loading? → A: Virtual scrolling (windowing) - render only visible rows plus buffer
16
17
- Q: Row Number Column Behavior During Horizontal Scroll - Should row numbers be fixed/sticky, scroll with content, or use floating overlay? → A: Whatever is used by the library that we are going to implement
@@ -121,18 +122,19 @@ Users can select individual cells, ranges of cells, or entire rows, and copy sel
121
122
122
123
### User Story 7 - Export Functionality (Priority: P3)
123
124
124
-
Users can export the complete table (or filtered results) to clipboard as Markdownor CSV, and download results as CSV file.
125
+
Users can export the complete table (or filtered results) to clipboard as Markdown, CSV, or TSV (tab-delimited) formats, and download results as CSV file through YASR's download interface.
125
126
126
-
**Why this priority**: While cell selection handles small data extraction, full table export is valuable for documentation (Markdown) and data analysis in external tools (CSV). Lower priority than core viewing and interaction features.
127
+
**Why this priority**: While cell selection handles small data extraction, full table export is valuable for documentation (Markdown) and data analysis in external tools (CSV/TSV). Lower priority than core viewing and interaction features.
127
128
128
-
**Independent Test**: Can be fully tested by clicking export controls and verifying that clipboard receives properly formatted Markdownor CSV, and that CSV download produces a valid file.
129
+
**Independent Test**: Can be fully tested by clicking export controls and verifying that clipboard receives properly formatted Markdown, CSV, or TSV, and that CSV download through YASR produces a valid file.
129
130
130
131
**Acceptance Scenarios**:
131
132
132
-
1.**Given** a table with data is displayed, **When** user clicks "Copy as Markdown", **Then** clipboard contains properly formatted Markdown table with headers and alignment
133
-
2.**Given** a table with data is displayed, **When** user clicks "Copy as CSV", **Then** clipboard contains CSV format with headers and quoted fields where necessary
134
-
3.**Given** a table is displayed, **When** user clicks "Download CSV", **Then** browser downloads a `.csv` file with all visible data (respecting active filters)
135
-
4.**Given** a search filter is active showing 50 of 500 rows, **When** user exports or downloads, **Then** only the 50 filtered rows are included
133
+
1.**Given** a table with data is displayed, **When** user clicks "Copy as Markdown", **Then** clipboard contains properly formatted Markdown table with headers and alignment, and visual notification confirms success
134
+
2.**Given** a table with data is displayed, **When** user clicks "Copy as CSV", **Then** clipboard contains CSV format with headers and quoted fields where necessary, and visual notification confirms success
135
+
3.**Given** a table with data is displayed, **When** user clicks "Copy as TSV", **Then** clipboard contains tab-delimited format with headers, and visual notification confirms success
136
+
4.**Given** a table is displayed, **When** user uses YASR's download interface, **Then** browser downloads a `.csv` file with all visible data (respecting active filters)
137
+
5.**Given** a search filter is active showing 50 of 500 rows, **When** user exports or downloads, **Then** only the 50 filtered rows are included
136
138
137
139
---
138
140
@@ -168,6 +170,7 @@ Users can export the complete table (or filtered results) to clipboard as Markdo
168
170
-**FR-010**: Plugin MUST provide a toggle control to show or hide datatype annotations on literals
169
171
-**FR-011**: Plugin MUST provide an ellipsis mode control that truncates cell content with "..." when enabled
170
172
-**FR-012**: Plugin MUST display full cell content in a modal or tooltip overlay when user clicks on an ellipsized cell, preserving table layout
173
+
-**FR-012a**: Plugin MUST display full cell content as tooltip when user hovers over any cell
171
174
172
175
#### Sorting
173
176
-**FR-013**: Plugin MUST allow users to sort rows by clicking on column headers
@@ -194,13 +197,14 @@ Users can export the complete table (or filtered results) to clipboard as Markdo
194
197
-**FR-028**: Plugin MUST format copied data as tab-separated values (rows separated by newlines)
195
198
196
199
#### Export and Download
197
-
-**FR-029**: Plugin MUST provide a control to copy entire table to clipboard as Markdown format
198
-
-**FR-030**: Plugin MUST provide a control to copy entire table to clipboard as CSV format
199
-
-**FR-031**: Plugin MUST provide a control to download table as CSV file
200
+
-**FR-029**: Plugin MUST provide a control to copy entire table to clipboard as Markdown format with visual notification
201
+
-**FR-030**: Plugin MUST provide a control to copy entire table to clipboard as CSV format with visual notification
202
+
-**FR-030a**: Plugin MUST provide a control to copy entire table to clipboard as TSV (tab-delimited) format with visual notification
203
+
-**FR-031**: Plugin MUST integrate with YASR's download interface to provide CSV download capability
200
204
-**FR-032**: Plugin MUST respect active search filters when exporting or downloading
201
205
202
206
#### Theming
203
-
-**FR-033**: Plugin MUST respond to YASGUI theme changes (light/dark mode)
207
+
-**FR-033**: Plugin MUST respond to YASGUI theme changes (light/dark mode) dynamically using MutationObserver with polling fallback
204
208
-**FR-034**: Plugin MUST use YASGUI CSS variables for colors, borders, and backgrounds
205
209
-**FR-035**: Plugin MUST ensure text contrast meets WCAG AA standards in both themes
206
210
@@ -238,8 +242,9 @@ Users can export the complete table (or filtered results) to clipboard as Markdo
238
242
1. SPARQL results are provided in standard YASGUI result format (JSON bindings)
239
243
2. Browser supports modern JavaScript features (ES2018) and CSS features required by YASGUI
240
244
3. Users have basic familiarity with SPARQL query results and table interfaces
241
-
4. Prefix definitions are available from YASQE or query context for URI abbreviation
245
+
4. Prefix definitions are fetched from YASR's getPrefixes() method and merged with common prefixes for URI abbreviation
242
246
5. LocalStorage is available for persisting user preferences
243
-
6. Clipboard API is available for copy operations (with appropriate fallbacks)
247
+
6. Clipboard API is available for copy operations (with execCommand fallback for older browsers)
244
248
7. Result sets are finite (not streaming) and fit in browser memory
245
249
8. The plugin is used within YASGUI/YASR environment with standard plugin lifecycle
250
+
9. Build system uses esbuild for UMD and ESM module generation
0 commit comments