(value: unknown)
| 184 | * objects and arrays. |
| 185 | */ |
| 186 | export const getDisplayValue = (value: unknown): string => { |
| 187 | if (value == null || value === '') return '-' |
| 188 | |
| 189 | const parsedValue = tryParseJson(value) |
| 190 | |
| 191 | if (isMessagesArray(parsedValue)) { |
| 192 | const firstMessage = parsedValue[0] |
| 193 | if (!firstMessage?.content || firstMessage.content.trim() === '') return '-' |
| 194 | const content = firstMessage.content.trim() |
| 195 | return truncate(content, 50) |
| 196 | } |
| 197 | |
| 198 | if (isVariableAssignmentsArray(parsedValue)) { |
| 199 | const names = parsedValue.map((a) => a.variableName).filter((name): name is string => !!name) |
| 200 | return summarizeNames(names) ?? '-' |
| 201 | } |
| 202 | |
| 203 | if (isTagFilterArray(parsedValue)) { |
| 204 | const names = parsedValue |
| 205 | .filter((f) => typeof f.tagName === 'string' && f.tagName.trim() !== '') |
| 206 | .map((f) => f.tagName) |
| 207 | return summarizeNames(names) ?? '-' |
| 208 | } |
| 209 | |
| 210 | if (isDocumentTagArray(parsedValue)) { |
| 211 | const names = parsedValue |
| 212 | .filter((t) => typeof t.tagName === 'string' && t.tagName.trim() !== '') |
| 213 | .map((t) => t.tagName) |
| 214 | return summarizeNames(names) ?? '-' |
| 215 | } |
| 216 | |
| 217 | if (isFilterConditionArray(parsedValue)) { |
| 218 | const opLabels: Record<string, string> = { |
| 219 | eq: '=', |
| 220 | ne: '≠', |
| 221 | gt: '>', |
| 222 | gte: '≥', |
| 223 | lt: '<', |
| 224 | lte: '≤', |
| 225 | contains: '~', |
| 226 | in: 'in', |
| 227 | } |
| 228 | const names = parsedValue |
| 229 | .filter((c) => typeof c.column === 'string' && c.column.trim() !== '') |
| 230 | .map((c) => `${c.column} ${opLabels[c.operator] || c.operator} ${c.value || '?'}`) |
| 231 | return summarizeNames(names) ?? '-' |
| 232 | } |
| 233 | |
| 234 | if (isSortConditionArray(parsedValue)) { |
| 235 | const names = parsedValue |
| 236 | .filter((c) => typeof c.column === 'string' && c.column.trim() !== '') |
| 237 | .map((c) => `${c.column} ${c.direction === 'desc' ? '↓' : '↑'}`) |
| 238 | return summarizeNames(names) ?? '-' |
| 239 | } |
| 240 | |
| 241 | if (isTableRowArray(parsedValue)) { |
| 242 | const nonEmptyRows = parsedValue.filter((row) => { |
| 243 | const cellValues = Object.values(row.cells) |
no test coverage detected