From 5aa7617e97fb7871165d82e89bfb11902d952a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Hatcher?= Date: Tue, 18 Feb 2025 23:44:10 +0100 Subject: [PATCH] FIX: It it possible to have DF scoped to the first sheet --- .../src/test/user_model/test_defined_names.rs | 27 +++++++++++++++++++ .../NameManagerDialog/NameManagerDialog.tsx | 9 ++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/base/src/test/user_model/test_defined_names.rs b/base/src/test/user_model/test_defined_names.rs index 23c50dd..d1c7f58 100644 --- a/base/src/test/user_model/test_defined_names.rs +++ b/base/src/test/user_model/test_defined_names.rs @@ -396,3 +396,30 @@ fn undo_redo() { Ok("Hola!".to_string()) ); } + +#[test] +fn change_scope_to_first_sheet() { + let mut model = UserModel::new_empty("model", "en", "UTC").unwrap(); + model.new_sheet().unwrap(); + model.set_user_input(0, 1, 1, "Hello").unwrap(); + model + .set_user_input(1, 2, 1, r#"=CONCATENATE(MyName, " world!")"#) + .unwrap(); + model + .new_defined_name("myName", None, "Sheet1!$A$1") + .unwrap(); + + assert_eq!( + model.get_formatted_cell_value(1, 2, 1), + Ok("Hello world!".to_string()) + ); + + model + .update_defined_name("myName", None, "myName", Some(0), "Sheet1!$A$1") + .unwrap(); + + assert_eq!( + model.get_formatted_cell_value(1, 2, 1), + Ok("#NAME?".to_string()) + ); +} diff --git a/webapp/IronCalc/src/components/NameManagerDialog/NameManagerDialog.tsx b/webapp/IronCalc/src/components/NameManagerDialog/NameManagerDialog.tsx index 0c735b4..baa5921 100644 --- a/webapp/IronCalc/src/components/NameManagerDialog/NameManagerDialog.tsx +++ b/webapp/IronCalc/src/components/NameManagerDialog/NameManagerDialog.tsx @@ -98,9 +98,10 @@ function NameManagerDialog(properties: NameManagerDialogProperties) { ) : ( {definedNameList.map((definedName, index) => { - const scopeName = definedName.scope - ? worksheets[definedName.scope].name - : "[global]"; + const scopeName = + definedName.scope !== undefined + ? worksheets[definedName.scope].name + : "[global]"; if (index === editingNameIndex) { return ( s.name === newScope, ); - const scope = scope_index > 0 ? scope_index : undefined; + const scope = scope_index >= 0 ? scope_index : undefined; try { updateDefinedName( definedName.name,