From b9a86e0e6b9082abe53b89fd23c800de2b514cd0 Mon Sep 17 00:00:00 2001 From: wyc <1104749580@qq.com> Date: Sun, 9 Aug 2026 18:58:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Local_Server/Aircraft/aircraftlist_json.h | 46 +++++++++++++------ module/Local_Server/Data_Source/Database.cpp | 1 + .../Local_Server/server/Adminive_Config.cpp | 20 +++++--- 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/module/Local_Server/Aircraft/aircraftlist_json.h b/module/Local_Server/Aircraft/aircraftlist_json.h index 7f71ed1..123e1f1 100644 --- a/module/Local_Server/Aircraft/aircraftlist_json.h +++ b/module/Local_Server/Aircraft/aircraftlist_json.h @@ -59,29 +59,45 @@ struct Aircraft_List_JSON_Service_O { static Psc::JSON view_model() { auto columns = Psc::JSON::array(); const auto add_column = [&columns](const char* key, const char* label, const char* type, - const char* default_sort_order = nullptr) { + const char* default_sort_order = nullptr, + const char* fixed = nullptr, + const std::uint32_t width = 110) { auto column = Psc::JSON::object(); column.append({"key", key}); column.append({"label", label}); column.append({"type", type}); + column.append({"width", width}); + column.append({"sortable", std::string(type) != "index"}); + if (std::string(type) == "number") { + column.append({"filter", "range"}); + } else if (std::string(type) == "text") { + column.append({"filter", "text"}); + } else if (std::string(type) == "boolean") { + column.append({"filter", "boolean"}); + } if (default_sort_order != nullptr) { column.append({"defaultSortOrder", default_sort_order}); } + if (fixed != nullptr) { + column.append({"fixed", fixed}); + } columns.append(std::move(column)); }; - add_column("index", "序号", "index"); + add_column("index", "序号", "index", nullptr, "left", 64); + add_column("hex", "识别码(ICAO)", "text", nullptr, "left", 132); + add_column("fli", "呼号", "text", nullptr, "left", 120); auto time_column = Psc::JSON::object(); time_column.append({"key", "time"}); time_column.append({"label", "时间"}); time_column.append({"type", "timestamp"}); + time_column.append({"width", 190}); + time_column.append({"sortable", true}); time_column.append({"secondsKey", "uti"}); time_column.append({"nanosecondsKey", "ns"}); columns.append(std::move(time_column)); - add_column("times", "消息数", "number"); - add_column("hex", "识别码", "text"); - add_column("fli", "航班编号", "text"); + add_column("times", "Mode-S 消息数", "number", nullptr, nullptr, 132); add_column("ava", "数据来源标识", "text"); add_column("src", "首选数据源", "text"); add_column("cla", "ADS-B数据子类", "text"); @@ -90,7 +106,7 @@ struct Aircraft_List_JSON_Service_O { add_column("alt", "高度(米)", "number"); add_column("spd", "地速(节)", "number"); add_column("trk", "航向(真)", "number"); - add_column("vrt", "垂直速度()", "number"); + add_column("vrt", "垂直速度(ft/min)", "number", nullptr, nullptr, 150); add_column("gda", "空中/地面状态", "text"); add_column("cat", "机型分类", "text"); add_column("org", "起飞机场", "text"); @@ -102,28 +118,28 @@ struct Aircraft_List_JSON_Service_O { add_column("cou", "国家", "text"); add_column("dis", "接收器距离", "number"); add_column("tru", "信任值", "number"); - add_column("dbm", "信号强度()", "number"); + add_column("dbm", "信号强度(dBm)", "number", nullptr, nullptr, 140); add_column("lla", "位置数据延迟(秒)", "number"); add_column("tmp", "温度(℃)", "number"); add_column("wsp", "风速(节)", "number"); add_column("wdi", "风向(°)", "number"); add_column("mop", "ADS-B协议版本", "number"); - add_column("spi", "识别应答()", "text"); + add_column("spi", "识别应答(SPI)", "text"); add_column("alr", "告警状态", "boolean"); - add_column("ias", "指示空速()", "number"); - add_column("tas", "真空速()", "number"); + add_column("ias", "指示空速(IAS)", "number", nullptr, nullptr, 132); + add_column("tas", "真空速(TAS)", "number", nullptr, nullptr, 132); add_column("hdgm", "磁航向", "number"); add_column("hdgt", "真航向", "text"); - add_column("qnhs", "气压设定()", "text"); + add_column("qnhs", "气压设定(QNH)", "text", nullptr, nullptr, 140); add_column("alts", "选择高度", "text"); add_column("hdgs", "选择航向", "number"); add_column("altg", "GNSS椭球高度(英尺)", "number"); - add_column("pic", "", "text"); + add_column("pic", "Asterix PIC", "text"); add_column("tcm", "防撞系统状态", "text"); add_column("ape", "自动驾驶启用", "text"); - add_column("sil", "系统完整性等级()", "number"); - add_column("sda", "系统设计保证()", "text"); - add_column("nacp", "位置精度()", "number"); + add_column("sil", "系统完整性等级(SIL)", "number", nullptr, nullptr, 160); + add_column("sda", "系统设计保证(SDA)", "text", nullptr, nullptr, 160); + add_column("nacp", "位置精度(NACp)", "number", nullptr, nullptr, 150); add_column("pest", "位置估算次数每秒", "number"); add_column("nocl", "提供数据的接收机数", "number"); add_column("tq", "时间质量", "text"); diff --git a/module/Local_Server/Data_Source/Database.cpp b/module/Local_Server/Data_Source/Database.cpp index da1016a..a384e18 100644 --- a/module/Local_Server/Data_Source/Database.cpp +++ b/module/Local_Server/Data_Source/Database.cpp @@ -1,5 +1,6 @@ #include "Database.h" #include "Data_Source.h" +#include "../Aircraft/aircraftlist_json.h" #include "../server/Global.h" #include "../server/Performance_Monitor.h" #include "../server/WebSocket_Manager.h" diff --git a/module/Local_Server/server/Adminive_Config.cpp b/module/Local_Server/server/Adminive_Config.cpp index 4fc50e6..ad39671 100644 --- a/module/Local_Server/server/Adminive_Config.cpp +++ b/module/Local_Server/server/Adminive_Config.cpp @@ -714,18 +714,24 @@ Json data_source_descriptor() { const auto graphics_descriptor = adminive::to_descriptor_json(); descriptor["sidebar"] = Json{ {"title", "数据源配置"}, - {"common", Json{{"fields", Json::array({"update_form_gps", "base_station_has_valid_position", "keep_mode", "ignore_msg_time"})}}}, - {"position", Json{{"fields", Json::array({"lat", "lon", "alt"})}}}, + {"common", Json{{"layout", Json::array({Json{{"kind", "cards"}, {"fields", Json::array({"update_form_gps", "base_station_has_valid_position", "keep_mode", "ignore_msg_time"})}}})}}}, + {"position", Json{{"layout", Json::array({Json{{"kind", "vertical"}, {"fields", Json::array({"lat", "lon", "alt"})}}})}}}, {"display", Json{ {"map2d", Json{ {"title", "2D显示配置"}, {"object_path", "map_display.map2d"}, - {"fields", Json::array({"aircraft_show", "base_station_show", "show_icao", "show_call_sign", "show_fly_status", "aircraft_pixel_size", "base_station_pixel_size", "track_point_pixel_size", "color", "track_point_color", "base_station_color"})} + {"layout", Json::array({ + Json{{"kind", "cards"}, {"fields", Json::array({"aircraft_show", "base_station_show", "show_icao", "show_call_sign", "show_fly_status"})}}, + Json{{"kind", "vertical"}, {"fields", Json::array({"aircraft_pixel_size", "base_station_pixel_size", "track_point_pixel_size", "color", "track_point_color", "base_station_color"})}} + })} }}, {"map3d", Json{ {"title", "3D显示配置"}, {"object_path", "map_display.map3d"}, - {"fields", Json::array({"aircraft_show", "base_station_show", "constant_screen_size", "show_icao", "show_call_sign", "show_fly_status", "aircraft_scale", "base_station_scale", "track_point_pixel_size", "color", "track_point_color", "base_station_color"})} + {"layout", Json::array({ + Json{{"kind", "cards"}, {"fields", Json::array({"aircraft_show", "base_station_show", "constant_screen_size", "show_icao", "show_call_sign", "show_fly_status"})}}, + Json{{"kind", "vertical"}, {"fields", Json::array({"aircraft_scale", "base_station_scale", "track_point_pixel_size", "color", "track_point_color", "base_station_color"})}} + })} }} }}, {"rules", Json::array({ @@ -736,18 +742,18 @@ Json data_source_descriptor() { })}, {"tiles", Json{ {"title", "瓦片显示"}, - {"fields", Json::array({"tile_display_maximum_level"})}, + {"layout", Json::array({Json{{"kind", "vertical"}, {"fields", Json::array({"tile_display_maximum_level"})}}})}, {"descriptor_fields", tile_view_descriptor.at("fields")} }}, {"view3d", Json{ {"graphics", Json{ {"title", "辅助显示"}, - {"fields", Json::array({"surface_navigation_reference_visible", "view_axes_visible"})}, + {"layout", Json::array({Json{{"kind", "cards"}, {"fields", Json::array({"surface_navigation_reference_visible", "view_axes_visible"})}}})}, {"descriptor_fields", graphics_descriptor.at("fields")} }}, {"map_view", Json{ {"title", "定位视图"}, - {"fields", Json::array({"base_station_fly_to_height_offset_meters"})}, + {"layout", Json::array({Json{{"kind", "vertical"}, {"fields", Json::array({"base_station_fly_to_height_offset_meters"})}}})}, {"descriptor_fields", map_view_descriptor.at("fields")} }} }}