From f787d1661336f205db1cd6c8b04a0de84cebb2b7 Mon Sep 17 00:00:00 2001 From: Priec Date: Thu, 3 Sep 2026 22:38:50 +0200 Subject: [PATCH] import number vs index button implemented --- client-gui2 | 2 +- common/proto/tables_data.proto | 4 ++++ common/src/proto/descriptor.bin | Bin 245342 -> 245665 bytes common/src/proto/komp_ac.tables_data.rs | 5 +++++ komp-app/src/import_export.rs | 2 +- server | 2 +- web/src/pages/import_export/import/logic.rs | 2 +- 7 files changed, 13 insertions(+), 4 deletions(-) diff --git a/client-gui2 b/client-gui2 index ef4390c8..08a9b2e0 160000 --- a/client-gui2 +++ b/client-gui2 @@ -1 +1 @@ -Subproject commit ef4390c85e548cfd59987c281887e4ba818f68b8 +Subproject commit 08a9b2e01e129dcec7541d0b4f850758f96c7836 diff --git a/common/proto/tables_data.proto b/common/proto/tables_data.proto index 0ede6760..fdeffebd 100644 --- a/common/proto/tables_data.proto +++ b/common/proto/tables_data.proto @@ -208,6 +208,10 @@ message StageTableDataImportRequest { message TableDataImportRow { // Required. Data payload for one staged row. map data = 1; + // Link columns whose text must be resolved against the target table's exact + // row display value, including text made only of digits. Unlisted columns + // retain the normal table-write link semantics. + repeated string link_display_columns = 2; } message StageTableDataImportResponse { diff --git a/common/src/proto/descriptor.bin b/common/src/proto/descriptor.bin index 0bddda4a7d400d107828b60b33793fda71d15825..9239615e6e3ee34903419b30be7454f6750c85a3 100644 GIT binary patch delta 7001 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 MZd=+n(6`|K0EgdSGXMYp delta 6731 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 diff --git a/common/src/proto/komp_ac.tables_data.rs b/common/src/proto/komp_ac.tables_data.rs index 70930ffd..ae3aa9a6 100644 --- a/common/src/proto/komp_ac.tables_data.rs +++ b/common/src/proto/komp_ac.tables_data.rs @@ -109,6 +109,11 @@ pub struct TableDataImportRow { ::prost::alloc::string::String, ::prost_types::Value, >, + /// Link columns whose text must be resolved against the target table's exact + /// row display value, including text made only of digits. Unlisted columns + /// retain the normal table-write link semantics. + #[prost(string, repeated, tag = "2")] + pub link_display_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)] pub struct StageTableDataImportResponse { diff --git a/komp-app/src/import_export.rs b/komp-app/src/import_export.rs index 0e5fff17..9c1f3abc 100644 --- a/komp-app/src/import_export.rs +++ b/komp-app/src/import_export.rs @@ -425,7 +425,7 @@ pub fn row_to_table_data( }; data.insert(target_column.clone(), value); } - Ok(TableDataImportRow { data }) + Ok(TableDataImportRow { data, link_display_columns: Vec::new() }) } pub fn exportable_columns(schema: &TableStructureResponse) -> Vec { diff --git a/server b/server index 31aaa157..8ab030c7 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit 31aaa15724c946d0a275f468d503991fcc90e44e +Subproject commit 8ab030c7710a696f25c2f3aaf5383a7053d8d78f diff --git a/web/src/pages/import_export/import/logic.rs b/web/src/pages/import_export/import/logic.rs index e12f4295..a0c41ff0 100644 --- a/web/src/pages/import_export/import/logic.rs +++ b/web/src/pages/import_export/import/logic.rs @@ -666,7 +666,7 @@ fn import_row( )?; data.insert(column.clone(), value); } - Ok(TableDataImportRow { data }) + Ok(TableDataImportRow { data, link_display_columns: Vec::new() }) } async fn render_step(