* @brief Load current project JSON into FrameBuilder */
| 4176 | * @brief Load current project JSON into FrameBuilder |
| 4177 | */ |
| 4178 | API::CommandResponse API::Handlers::ProjectHandler::loadIntoFrameBuilder(const QString& id, |
| 4179 | const QJsonObject& params) |
| 4180 | { |
| 4181 | Q_UNUSED(params) |
| 4182 | |
| 4183 | auto& project = DataModel::ProjectModel::instance(); |
| 4184 | auto& builder = DataModel::FrameBuilder::instance(); |
| 4185 | |
| 4186 | const bool hasDatasetlessGroup = |
| 4187 | std::any_of(project.groups().begin(), project.groups().end(), [](const DataModel::Group& g) { |
| 4188 | return g.widget == QLatin1String("image") || g.widget == QLatin1String("painter"); |
| 4189 | }); |
| 4190 | |
| 4191 | if (project.groupCount() == 0 || (project.datasetCount() == 0 && !hasDatasetlessGroup)) { |
| 4192 | return CommandResponse::makeError( |
| 4193 | id, ErrorCode::InvalidParam, QStringLiteral("Project has no groups or datasets")); |
| 4194 | } |
| 4195 | |
| 4196 | builder.syncFromProjectModel(); |
| 4197 | |
| 4198 | QJsonObject result; |
| 4199 | result[QStringLiteral("loaded")] = true; |
| 4200 | result[QStringLiteral("source")] = QStringLiteral("API"); |
| 4201 | result[QStringLiteral("title")] = project.title(); |
| 4202 | result[QStringLiteral("groupCount")] = project.groupCount(); |
| 4203 | result[QStringLiteral("datasetCount")] = project.datasetCount(); |
| 4204 | |
| 4205 | return CommandResponse::makeSuccess(id, result); |
| 4206 | } |
| 4207 | |
| 4208 | //-------------------------------------------------------------------------------------------------- |
| 4209 | // Painter (group widget JS) command surface |
nothing calls this directly
no test coverage detected