MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / datasetGetAlarmBands

Method datasetGetAlarmBands

app/src/API/Handlers/ProjectHandler.cpp:2514–2558  ·  view source on GitHub ↗

* @brief Returns the dataset's alarm bands as a JSON array. */

Source from the content-addressed store, hash-verified

2512 * @brief Returns the dataset's alarm bands as a JSON array.
2513 */
2514API::CommandResponse API::Handlers::ProjectHandler::datasetGetAlarmBands(const QString& id,
2515 const QJsonObject& params)
2516{
2517 const QStringList required{QString(Keys::GroupId), QString(Keys::DatasetId)};
2518 for (const auto& key : required)
2519 if (!params.contains(key))
2520 return CommandResponse::makeError(
2521 id, ErrorCode::MissingParam, QStringLiteral("Missing required parameter: %1").arg(key));
2522
2523 const int groupId = params.value(Keys::GroupId).toInt();
2524 const int datasetId = params.value(Keys::DatasetId).toInt();
2525
2526 auto& pm = DataModel::ProjectModel::instance();
2527 const auto& groups = pm.groups();
2528 const auto git = std::find_if(
2529 groups.begin(), groups.end(), [groupId](const auto& g) { return g.groupId == groupId; });
2530
2531 if (git == groups.end())
2532 return CommandResponse::makeError(
2533 id, ErrorCode::InvalidParam, QStringLiteral("Group id not found: %1").arg(groupId));
2534
2535 const auto& datasets = git->datasets;
2536 const auto dit = std::find_if(datasets.begin(), datasets.end(), [datasetId](const auto& d) {
2537 return d.datasetId == datasetId;
2538 });
2539
2540 if (dit == datasets.end())
2541 return CommandResponse::makeError(id,
2542 ErrorCode::InvalidParam,
2543 QStringLiteral("Dataset id not found in group: %1/%2")
2544 .arg(QString::number(groupId), QString::number(datasetId)));
2545
2546 QJsonArray bands;
2547 for (const auto& b : dit->alarmBands)
2548 bands.append(DataModel::serialize(b));
2549
2550 QJsonObject result;
2551 result[Keys::GroupId] = groupId;
2552 result[Keys::DatasetId] = datasetId;
2553 result[Keys::AlarmBands] = bands;
2554 result[QStringLiteral("count")] = bands.size();
2555 result[QStringLiteral("rangeMin")] = qMin(dit->wgtMin, dit->wgtMax);
2556 result[QStringLiteral("rangeMax")] = qMax(dit->wgtMin, dit->wgtMax);
2557 return CommandResponse::makeSuccess(id, result);
2558}
2559
2560/**
2561 * @brief Atomic write of the full alarmBands array onto a dataset.

Callers

nothing calls this directly

Calls 6

serializeFunction · 0.85
beginMethod · 0.80
containsMethod · 0.45
valueMethod · 0.45
appendMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected