|
3 | 3 | using Altinn.App.Core.Helpers; |
4 | 4 | using Altinn.App.Core.Helpers.DataModel; |
5 | 5 | using Altinn.App.Core.Internal.Expressions; |
6 | | -using Altinn.App.Core.Models.Layout; |
7 | 6 | using Altinn.Platform.Storage.Interface.Models; |
8 | 7 |
|
9 | 8 | namespace Altinn.App.Core.Internal.Data; |
@@ -287,26 +286,22 @@ private static int InvokeReturnIntOrError(MethodInfo info, object instance) |
287 | 286 | } |
288 | 287 |
|
289 | 288 | /// <summary> |
290 | | - /// Get a list of all possible keys for the given data model |
| 289 | + /// Get a list of all possible keys for the given data model at the path |
291 | 290 | /// </summary> |
292 | 291 | /// <example> |
293 | | - /// intro.fnr |
294 | | - /// group[0].name |
295 | | - /// group[0].age |
296 | | - /// group[1].name |
297 | | - /// group[1].age |
| 292 | + /// group.name -> ["group[0].name", "group[1].name"] |
| 293 | + /// group.age -> ["group[0].age", "group[1].age"] |
298 | 294 | /// </example> |
299 | | - public static DataReference[] GetResolvedKeys(this IFormDataWrapper formDataWrapper, DataReference reference) |
| 295 | + public static string[] GetResolvedKeys(this IFormDataWrapper formDataWrapper, string path) |
300 | 296 | { |
301 | 297 | //TODO: write more efficient code that uses the formDataWrapper to resolve keys instead of reflection in DataModelWrapper |
| 298 | + // The current implementation also does not throw exceptions when the path ends in an enumerable. |
| 299 | + // When resolving "group" it is not clear if the result should be "group[0]", "group[1]", or just "group"." |
302 | 300 | var data = formDataWrapper.BackingData<object>(); |
303 | 301 | #pragma warning disable CS0618 // Type or member is obsolete |
304 | 302 | var dataModelWrapper = new DataModelWrapper(data); |
305 | 303 | #pragma warning restore CS0618 // Type or member is obsolete |
306 | | - return dataModelWrapper |
307 | | - .GetResolvedKeys(reference.Field) |
308 | | - .Select(resolvedField => reference with { Field = resolvedField }) |
309 | | - .ToArray(); |
| 304 | + return dataModelWrapper.GetResolvedKeys(path); |
310 | 305 | } |
311 | 306 |
|
312 | 307 | private static int GetMaxBufferLength(ReadOnlySpan<char> path, ReadOnlySpan<int> rowIndexes) |
|
0 commit comments