* @brief Converts a Frame directly to a protobuf Struct. */
| 164 | * @brief Converts a Frame directly to a protobuf Struct. |
| 165 | */ |
| 166 | google::protobuf::Struct API::GRPC::ConversionUtils::frameToProtoStruct( |
| 167 | const DataModel::Frame& frame) |
| 168 | { |
| 169 | google::protobuf::Struct result; |
| 170 | setString(result, "title", frame.title); |
| 171 | |
| 172 | auto* groups_list = (*result.mutable_fields())["groups"].mutable_list_value(); |
| 173 | |
| 174 | for (const auto& group : frame.groups) { |
| 175 | auto* group_val = groups_list->add_values()->mutable_struct_value(); |
| 176 | setString(*group_val, "title", group.title); |
| 177 | setString(*group_val, "widget", group.widget); |
| 178 | |
| 179 | auto* ds_list = (*group_val->mutable_fields())["datasets"].mutable_list_value(); |
| 180 | |
| 181 | for (const auto& ds : group.datasets) { |
| 182 | auto* ds_val = ds_list->add_values()->mutable_struct_value(); |
| 183 | setString(*ds_val, "title", ds.title); |
| 184 | setString(*ds_val, "value", ds.value); |
| 185 | setString(*ds_val, "units", ds.units); |
| 186 | setNumber(*ds_val, "index", ds.index); |
| 187 | setNumber(*ds_val, "widgetMin", qMin(ds.wgtMin, ds.wgtMax)); |
| 188 | setNumber(*ds_val, "widgetMax", qMax(ds.wgtMin, ds.wgtMax)); |
| 189 | setNumber(*ds_val, "plotMin", qMin(ds.pltMin, ds.pltMax)); |
| 190 | setNumber(*ds_val, "plotMax", qMax(ds.pltMin, ds.pltMax)); |
| 191 | } |
| 192 | } |
| 193 | |
| 194 | return result; |
| 195 | } |
| 196 | |
| 197 | #endif // ENABLE_GRPC |