deprecate singlular case insert delete rows columns

This commit is contained in:
BrianHung
2025-07-13 11:04:32 -07:00
committed by Nicolás Hatcher Andrés
parent 87cdfb2ba1
commit 51f2da8663
8 changed files with 52 additions and 92 deletions

View File

@@ -65,8 +65,8 @@ fn queue_undo_redo_multiple() {
model1.set_user_input(0, row, 17, "=ROW()").unwrap(); model1.set_user_input(0, row, 17, "=ROW()").unwrap();
} }
model1.insert_row(0, 3).unwrap(); model1.insert_rows(0, 3, 1).unwrap();
model1.insert_row(0, 3).unwrap(); model1.insert_rows(0, 3, 1).unwrap();
// undo al of them // undo al of them
while model1.can_undo() { while model1.can_undo() {

View File

@@ -62,7 +62,7 @@ fn insert_remove_rows() {
assert!(model.set_rows_height(0, 5, 5, 3.0 * height).is_ok()); assert!(model.set_rows_height(0, 5, 5, 3.0 * height).is_ok());
// remove the row // remove the row
assert!(model.delete_row(0, 5).is_ok()); assert!(model.delete_rows(0, 5, 1).is_ok());
// Row 5 has now the normal height // Row 5 has now the normal height
assert_eq!(model.get_row_height(0, 5), Ok(height)); assert_eq!(model.get_row_height(0, 5), Ok(height));
// There is no value in A5 // There is no value in A5
@@ -99,7 +99,7 @@ fn insert_remove_columns() {
assert_eq!(model.get_column_width(0, 5).unwrap(), 3.0 * column_width); assert_eq!(model.get_column_width(0, 5).unwrap(), 3.0 * column_width);
// remove the column // remove the column
assert!(model.delete_column(0, 5).is_ok()); assert!(model.delete_columns(0, 5, 1).is_ok());
// Column 5 has now the normal width // Column 5 has now the normal width
assert_eq!(model.get_column_width(0, 5), Ok(column_width)); assert_eq!(model.get_column_width(0, 5), Ok(column_width));
// There is no value in E5 // There is no value in E5

View File

@@ -14,7 +14,7 @@ fn simple_insert_row() {
for row in 1..5 { for row in 1..5 {
assert!(model.set_user_input(sheet, row, column, "123").is_ok()); assert!(model.set_user_input(sheet, row, column, "123").is_ok());
} }
assert!(model.insert_row(sheet, 3).is_ok()); assert!(model.insert_rows(sheet, 3, 1).is_ok());
assert_eq!( assert_eq!(
model.get_formatted_cell_value(sheet, 3, column).unwrap(), model.get_formatted_cell_value(sheet, 3, column).unwrap(),
"" ""
@@ -40,7 +40,7 @@ fn simple_insert_column() {
for column in 1..5 { for column in 1..5 {
assert!(model.set_user_input(sheet, row, column, "123").is_ok()); assert!(model.set_user_input(sheet, row, column, "123").is_ok());
} }
assert!(model.insert_column(sheet, 3).is_ok()); assert!(model.insert_columns(sheet, 3, 1).is_ok());
assert_eq!(model.get_formatted_cell_value(sheet, row, 3).unwrap(), ""); assert_eq!(model.get_formatted_cell_value(sheet, row, 3).unwrap(), "");
assert!(model.undo().is_ok()); assert!(model.undo().is_ok());
@@ -62,7 +62,7 @@ fn simple_delete_column() {
.set_columns_width(0, 5, 5, DEFAULT_COLUMN_WIDTH * 3.0) .set_columns_width(0, 5, 5, DEFAULT_COLUMN_WIDTH * 3.0)
.unwrap(); .unwrap();
model.delete_column(0, 5).unwrap(); model.delete_columns(0, 5, 1).unwrap();
assert_eq!(model.get_formatted_cell_value(0, 2, 5), Ok("".to_string())); assert_eq!(model.get_formatted_cell_value(0, 2, 5), Ok("".to_string()));
assert_eq!(model.get_column_width(0, 5), Ok(DEFAULT_COLUMN_WIDTH)); assert_eq!(model.get_column_width(0, 5), Ok(DEFAULT_COLUMN_WIDTH));
@@ -92,20 +92,20 @@ fn delete_column_errors() {
let model = new_empty_model(); let model = new_empty_model();
let mut model = UserModel::from_model(model); let mut model = UserModel::from_model(model);
assert_eq!( assert_eq!(
model.delete_column(1, 1), model.delete_columns(1, 1, 1),
Err("Invalid sheet index".to_string()) Err("Invalid sheet index".to_string())
); );
assert_eq!( assert_eq!(
model.delete_column(0, 0), model.delete_columns(0, 0, 1),
Err("Column number '0' is not valid.".to_string()) Err("Column number '0' is not valid.".to_string())
); );
assert_eq!( assert_eq!(
model.delete_column(0, LAST_COLUMN + 1), model.delete_columns(0, LAST_COLUMN + 1, 1),
Err("Column number '16385' is not valid.".to_string()) Err(format!("Column number '{}' is not valid.", LAST_COLUMN + 1))
); );
assert_eq!(model.delete_column(0, LAST_COLUMN), Ok(())); assert_eq!(model.delete_columns(0, LAST_COLUMN, 1), Ok(()));
} }
#[test] #[test]
@@ -119,7 +119,7 @@ fn simple_delete_row() {
.set_rows_height(0, 15, 15, DEFAULT_ROW_HEIGHT * 3.0) .set_rows_height(0, 15, 15, DEFAULT_ROW_HEIGHT * 3.0)
.unwrap(); .unwrap();
model.delete_row(0, 15).unwrap(); model.delete_rows(0, 15, 1).unwrap();
assert_eq!(model.get_formatted_cell_value(0, 15, 6), Ok("".to_string())); assert_eq!(model.get_formatted_cell_value(0, 15, 6), Ok("".to_string()));
assert_eq!(model.get_row_height(0, 15), Ok(DEFAULT_ROW_HEIGHT)); assert_eq!(model.get_row_height(0, 15), Ok(DEFAULT_ROW_HEIGHT));
@@ -150,7 +150,7 @@ fn simple_delete_row_no_style() {
let mut model = UserModel::from_model(model); let mut model = UserModel::from_model(model);
model.set_user_input(0, 15, 4, "3").unwrap(); model.set_user_input(0, 15, 4, "3").unwrap();
model.set_user_input(0, 15, 6, "=D15*2").unwrap(); model.set_user_input(0, 15, 6, "=D15*2").unwrap();
model.delete_row(0, 15).unwrap(); model.delete_rows(0, 15, 1).unwrap();
assert_eq!(model.get_formatted_cell_value(0, 15, 6), Ok("".to_string())); assert_eq!(model.get_formatted_cell_value(0, 15, 6), Ok("".to_string()));
} }
@@ -180,14 +180,14 @@ fn insert_row_evaluates() {
model.set_user_input(0, 1, 1, "42").unwrap(); model.set_user_input(0, 1, 1, "42").unwrap();
model.set_user_input(0, 1, 2, "=A1*2").unwrap(); model.set_user_input(0, 1, 2, "=A1*2").unwrap();
assert!(model.insert_row(0, 1).is_ok()); assert!(model.insert_rows(0, 1, 1).is_ok());
assert_eq!(model.get_formatted_cell_value(0, 2, 2).unwrap(), "84"); assert_eq!(model.get_formatted_cell_value(0, 2, 2).unwrap(), "84");
model.undo().unwrap(); model.undo().unwrap();
assert_eq!(model.get_formatted_cell_value(0, 1, 2).unwrap(), "84"); assert_eq!(model.get_formatted_cell_value(0, 1, 2).unwrap(), "84");
model.redo().unwrap(); model.redo().unwrap();
assert_eq!(model.get_formatted_cell_value(0, 2, 2).unwrap(), "84"); assert_eq!(model.get_formatted_cell_value(0, 2, 2).unwrap(), "84");
model.delete_row(0, 1).unwrap(); model.delete_rows(0, 1, 1).unwrap();
assert_eq!(model.get_formatted_cell_value(0, 1, 2).unwrap(), "84"); assert_eq!(model.get_formatted_cell_value(0, 1, 2).unwrap(), "84");
assert_eq!(model.get_cell_content(0, 1, 2).unwrap(), "=A1*2"); assert_eq!(model.get_cell_content(0, 1, 2).unwrap(), "=A1*2");
} }
@@ -199,7 +199,7 @@ fn insert_column_evaluates() {
model.set_user_input(0, 1, 1, "42").unwrap(); model.set_user_input(0, 1, 1, "42").unwrap();
model.set_user_input(0, 10, 1, "=A1*2").unwrap(); model.set_user_input(0, 10, 1, "=A1*2").unwrap();
assert!(model.insert_column(0, 1).is_ok()); assert!(model.insert_columns(0, 1, 1).is_ok());
assert_eq!(model.get_formatted_cell_value(0, 10, 2).unwrap(), "84"); assert_eq!(model.get_formatted_cell_value(0, 10, 2).unwrap(), "84");
model.undo().unwrap(); model.undo().unwrap();
@@ -207,7 +207,7 @@ fn insert_column_evaluates() {
model.redo().unwrap(); model.redo().unwrap();
assert_eq!(model.get_formatted_cell_value(0, 10, 2).unwrap(), "84"); assert_eq!(model.get_formatted_cell_value(0, 10, 2).unwrap(), "84");
model.delete_column(0, 1).unwrap(); model.delete_columns(0, 1, 1).unwrap();
assert_eq!(model.get_formatted_cell_value(0, 10, 1).unwrap(), "84"); assert_eq!(model.get_formatted_cell_value(0, 10, 1).unwrap(), "84");
assert_eq!(model.get_cell_content(0, 10, 1).unwrap(), "=A1*2"); assert_eq!(model.get_cell_content(0, 10, 1).unwrap(), "=A1*2");
} }

View File

@@ -858,38 +858,6 @@ impl UserModel {
Ok(()) Ok(())
} }
/// Inserts a row
///
/// See also:
/// * [Model::insert_rows]
pub fn insert_row(&mut self, sheet: u32, row: i32) -> Result<(), String> {
self.insert_rows(sheet, row, 1)
}
/// Deletes a row
///
/// See also:
/// * [Model::delete_rows]
pub fn delete_row(&mut self, sheet: u32, row: i32) -> Result<(), String> {
self.delete_rows(sheet, row, 1)
}
/// Inserts a column
///
/// See also:
/// * [Model::insert_columns]
pub fn insert_column(&mut self, sheet: u32, column: i32) -> Result<(), String> {
self.insert_columns(sheet, column, 1)
}
/// Deletes a column
///
/// See also:
/// * [Model::delete_columns]
pub fn delete_column(&mut self, sheet: u32, column: i32) -> Result<(), String> {
self.delete_columns(sheet, column, 1)
}
/// Inserts several rows at once /// Inserts several rows at once
pub fn insert_rows(&mut self, sheet: u32, row: i32, row_count: i32) -> Result<(), String> { pub fn insert_rows(&mut self, sheet: u32, row: i32, row_count: i32) -> Result<(), String> {
let mut diff_list = Vec::new(); let mut diff_list = Vec::new();

View File

@@ -59,10 +59,10 @@ export declare class UserModel {
setSheetColor(sheet: number, color: string): void setSheetColor(sheet: number, color: string): void
rangeClearAll(sheet: number, startRow: number, startColumn: number, endRow: number, endColumn: number): void rangeClearAll(sheet: number, startRow: number, startColumn: number, endRow: number, endColumn: number): void
rangeClearContents(sheet: number, startRow: number, startColumn: number, endRow: number, endColumn: number): void rangeClearContents(sheet: number, startRow: number, startColumn: number, endRow: number, endColumn: number): void
insertRow(sheet: number, row: number): void insertRows(sheet: number, row: number, rowCount: number): void
insertColumn(sheet: number, column: number): void insertColumns(sheet: number, column: number, columnCount: number): void
deleteRow(sheet: number, row: number): void deleteRows(sheet: number, row: number, rowCount: number): void
deleteColumn(sheet: number, column: number): void deleteColumns(sheet: number, column: number, columnCount: number): void
setRowHeight(sheet: number, row: number, height: number): void setRowHeight(sheet: number, row: number, height: number): void
setColumnWidth(sheet: number, column: number, width: number): void setColumnWidth(sheet: number, column: number, width: number): void
getRowHeight(sheet: number, row: number): number getRowHeight(sheet: number, row: number): number

View File

@@ -183,24 +183,36 @@ impl UserModel {
.map_err(to_js_error) .map_err(to_js_error)
} }
#[napi(js_name = "insertRow")] #[napi(js_name = "insertRows")]
pub fn insert_row(&mut self, sheet: u32, row: i32) -> Result<()> { pub fn insert_rows(&mut self, sheet: u32, row: i32, row_count: i32) -> Result<()> {
self.model.insert_row(sheet, row).map_err(to_js_error) self
.model
.insert_rows(sheet, row, row_count)
.map_err(to_js_error)
} }
#[napi(js_name = "insertColumn")] #[napi(js_name = "insertColumns")]
pub fn insert_column(&mut self, sheet: u32, column: i32) -> Result<()> { pub fn insert_columns(&mut self, sheet: u32, column: i32, column_count: i32) -> Result<()> {
self.model.insert_column(sheet, column).map_err(to_js_error) self
.model
.insert_columns(sheet, column, column_count)
.map_err(to_js_error)
} }
#[napi(js_name = "deleteRow")] #[napi(js_name = "deleteRows")]
pub fn delete_row(&mut self, sheet: u32, row: i32) -> Result<()> { pub fn delete_rows(&mut self, sheet: u32, row: i32, row_count: i32) -> Result<()> {
self.model.delete_row(sheet, row).map_err(to_js_error) self
.model
.delete_rows(sheet, row, row_count)
.map_err(to_js_error)
} }
#[napi(js_name = "deleteColumn")] #[napi(js_name = "deleteColumns")]
pub fn delete_column(&mut self, sheet: u32, column: i32) -> Result<()> { pub fn delete_columns(&mut self, sheet: u32, column: i32, column_count: i32) -> Result<()> {
self.model.delete_column(sheet, column).map_err(to_js_error) self
.model
.delete_columns(sheet, column, column_count)
.map_err(to_js_error)
} }
#[napi(js_name = "setRowsHeight")] #[napi(js_name = "setRowsHeight")]

View File

@@ -196,26 +196,6 @@ impl Model {
.map_err(to_js_error) .map_err(to_js_error)
} }
#[wasm_bindgen(js_name = "insertRow")]
pub fn insert_row(&mut self, sheet: u32, row: i32) -> Result<(), JsError> {
self.model.insert_row(sheet, row).map_err(to_js_error)
}
#[wasm_bindgen(js_name = "insertColumn")]
pub fn insert_column(&mut self, sheet: u32, column: i32) -> Result<(), JsError> {
self.model.insert_column(sheet, column).map_err(to_js_error)
}
#[wasm_bindgen(js_name = "deleteRow")]
pub fn delete_row(&mut self, sheet: u32, row: i32) -> Result<(), JsError> {
self.model.delete_row(sheet, row).map_err(to_js_error)
}
#[wasm_bindgen(js_name = "deleteColumn")]
pub fn delete_column(&mut self, sheet: u32, column: i32) -> Result<(), JsError> {
self.model.delete_column(sheet, column).map_err(to_js_error)
}
#[wasm_bindgen(js_name = "insertRows")] #[wasm_bindgen(js_name = "insertRows")]
pub fn insert_rows(&mut self, sheet: u32, row: i32, row_count: i32) -> Result<(), JsError> { pub fn insert_rows(&mut self, sheet: u32, row: i32, row_count: i32) -> Result<(), JsError> {
self.model self.model

View File

@@ -340,22 +340,22 @@ const Worksheet = forwardRef(
anchorEl={cellOutline.current} anchorEl={cellOutline.current}
onInsertRowAbove={(): void => { onInsertRowAbove={(): void => {
const view = model.getSelectedView(); const view = model.getSelectedView();
model.insertRow(view.sheet, view.row); model.insertRows(view.sheet, view.row, 1);
setContextMenuOpen(false); setContextMenuOpen(false);
}} }}
onInsertRowBelow={(): void => { onInsertRowBelow={(): void => {
const view = model.getSelectedView(); const view = model.getSelectedView();
model.insertRow(view.sheet, view.row + 1); model.insertRows(view.sheet, view.row + 1, 1);
setContextMenuOpen(false); setContextMenuOpen(false);
}} }}
onInsertColumnLeft={(): void => { onInsertColumnLeft={(): void => {
const view = model.getSelectedView(); const view = model.getSelectedView();
model.insertColumn(view.sheet, view.column); model.insertColumns(view.sheet, view.column, 1);
setContextMenuOpen(false); setContextMenuOpen(false);
}} }}
onInsertColumnRight={(): void => { onInsertColumnRight={(): void => {
const view = model.getSelectedView(); const view = model.getSelectedView();
model.insertColumn(view.sheet, view.column + 1); model.insertColumns(view.sheet, view.column + 1, 1);
setContextMenuOpen(false); setContextMenuOpen(false);
}} }}
onFreezeColumns={(): void => { onFreezeColumns={(): void => {
@@ -380,12 +380,12 @@ const Worksheet = forwardRef(
}} }}
onDeleteRow={(): void => { onDeleteRow={(): void => {
const view = model.getSelectedView(); const view = model.getSelectedView();
model.deleteRow(view.sheet, view.row); model.deleteRows(view.sheet, view.row, 1);
setContextMenuOpen(false); setContextMenuOpen(false);
}} }}
onDeleteColumn={(): void => { onDeleteColumn={(): void => {
const view = model.getSelectedView(); const view = model.getSelectedView();
model.deleteColumn(view.sheet, view.column); model.deleteColumns(view.sheet, view.column, 1);
setContextMenuOpen(false); setContextMenuOpen(false);
}} }}
row={model.getSelectedView().row} row={model.getSelectedView().row}