| 256 | } |
| 257 | |
| 258 | func fillFormCardBufs(data map[string]any, outData map[string]any, bufs *[]BufD, keys []string) { |
| 259 | items, ok := data["items"] |
| 260 | if !ok { |
| 261 | return |
| 262 | } |
| 263 | itemsSlice, ok := items.([]any) |
| 264 | if !ok { |
| 265 | return |
| 266 | } |
| 267 | |
| 268 | keys = append(keys, "items") |
| 269 | for idx, item := range itemsSlice { |
| 270 | itemMap, ok := item.(map[string]any) |
| 271 | if !ok { |
| 272 | continue |
| 273 | } |
| 274 | if v, ok := itemMap["inline"]; ok { |
| 275 | if v, ok := v.(map[string]any); ok { |
| 276 | keys = append(keys, strconv.Itoa(idx), "inline") |
| 277 | fillFormCardBufs(v, outData, bufs, keys) |
| 278 | keys = keys[:len(keys)-2] |
| 279 | } |
| 280 | } |
| 281 | visualizationMap, ok := item.(map[string]any) |
| 282 | if !ok { |
| 283 | continue |
| 284 | } |
| 285 | v, ok := visualizationMap["visualization"] |
| 286 | if !ok { |
| 287 | continue |
| 288 | } |
| 289 | valueMap, ok := v.(map[string]any) |
| 290 | if !ok { |
| 291 | continue |
| 292 | } |
| 293 | b, ok := valueMap["data"] |
| 294 | if !ok { |
| 295 | continue |
| 296 | } |
| 297 | if b, ok := b.(Buf); ok { |
| 298 | key := fmt.Sprintf("%s.%d.visualization.data", strings.Join(keys, "."), idx) |
| 299 | outData[dataPrefix+key] = len(*bufs) |
| 300 | *bufs = append(*bufs, b.dump()) |
| 301 | } |
| 302 | } |
| 303 | //lint:ignore SA4006 this function is recursive so mutation is necessary. |
| 304 | keys = keys[:len(keys)-1] |
| 305 | } |