* @brief Compacts a project.snapshot result into the assistant.snapshot shape. */
| 964 | * @brief Compacts a project.snapshot result into the assistant.snapshot shape. |
| 965 | */ |
| 966 | static QJsonObject compactProjectSnapshotResult(const QJsonObject& projectResult, |
| 967 | const QJsonObject& workspaceResult, |
| 968 | bool includeRaw) |
| 969 | { |
| 970 | const auto snapshot = projectResult.value(QStringLiteral("snapshot")).toObject(); |
| 971 | |
| 972 | QJsonObject compact; |
| 973 | compact[QStringLiteral("title")] = snapshot.value(QStringLiteral("title")).toString(); |
| 974 | compact[QStringLiteral("filePath")] = snapshot.value(QStringLiteral("filePath")).toString(); |
| 975 | compact[QStringLiteral("operationMode")] = |
| 976 | snapshot.value(QStringLiteral("operationMode")).toInt(); |
| 977 | compact[QStringLiteral("groupCount")] = snapshot.value(QStringLiteral("groupCount")).toInt(); |
| 978 | compact[QStringLiteral("datasetCount")] = snapshot.value(QStringLiteral("datasetCount")).toInt(); |
| 979 | compact[QStringLiteral("projectEpoch")] = projectResult.value(QStringLiteral("projectEpoch")); |
| 980 | compact[QStringLiteral("summary")] = snapshot.value(QStringLiteral("_explanations")) |
| 981 | .toObject() |
| 982 | .value(QStringLiteral("summary")) |
| 983 | .toString(); |
| 984 | |
| 985 | QJsonArray groups; |
| 986 | for (const auto& value : snapshot.value(QStringLiteral("groups")).toArray()) { |
| 987 | const auto group = value.toObject(); |
| 988 | QJsonObject row; |
| 989 | row[QStringLiteral("groupId")] = group.value(QStringLiteral("groupId")).toInt(); |
| 990 | row[QStringLiteral("title")] = group.value(QStringLiteral("title")).toString(); |
| 991 | row[QStringLiteral("widget")] = group.value(QStringLiteral("widget")).toString(); |
| 992 | row[QStringLiteral("datasetCount")] = group.value(QStringLiteral("datasetCount")).toInt(); |
| 993 | if (group.contains(QStringLiteral("compatibleWidgetTypeSlugs"))) |
| 994 | row[QStringLiteral("compatibleWidgetTypeSlugs")] = |
| 995 | group.value(QStringLiteral("compatibleWidgetTypeSlugs")).toArray(); |
| 996 | |
| 997 | row[QStringLiteral("datasets")] = |
| 998 | compactDatasets(group.value(QStringLiteral("datasets")).toArray()); |
| 999 | groups.append(row); |
| 1000 | } |
| 1001 | compact[QStringLiteral("groups")] = groups; |
| 1002 | |
| 1003 | const auto workspaceRows = workspaceResult.value(QStringLiteral("workspaces")).toArray(); |
| 1004 | compact[QStringLiteral("workspaces")] = workspaceRows.isEmpty() |
| 1005 | ? snapshot.value(QStringLiteral("workspaces")).toArray() |
| 1006 | : workspaceRows; |
| 1007 | compact[QStringLiteral("dataTables")] = snapshot.value(QStringLiteral("dataTables")).toArray(); |
| 1008 | compact[QStringLiteral("hint")] = projectResult.value(QStringLiteral("hint")).toString(); |
| 1009 | |
| 1010 | if (includeRaw) |
| 1011 | compact[QStringLiteral("rawProjectSnapshot")] = projectResult; |
| 1012 | |
| 1013 | return compact; |
| 1014 | } |
| 1015 | |
| 1016 | /** |
| 1017 | * @brief Maps a script kind + language pair to the matching scripting-docs key. |
no test coverage detected