feat: insert delete rows cols

This commit is contained in:
BrianHung
2025-07-11 09:09:44 -07:00
committed by Nicolás Hatcher Andrés
parent 56abac79ca
commit 2d23f5d4e4
3 changed files with 202 additions and 0 deletions

View File

@@ -216,6 +216,44 @@ impl Model {
self.model.delete_column(sheet, column).map_err(to_js_error)
}
#[wasm_bindgen(js_name = "insertRows")]
pub fn insert_rows(&mut self, sheet: u32, row: i32, row_count: i32) -> Result<(), JsError> {
self.model
.insert_rows(sheet, row, row_count)
.map_err(to_js_error)
}
#[wasm_bindgen(js_name = "insertColumns")]
pub fn insert_columns(
&mut self,
sheet: u32,
column: i32,
column_count: i32,
) -> Result<(), JsError> {
self.model
.insert_columns(sheet, column, column_count)
.map_err(to_js_error)
}
#[wasm_bindgen(js_name = "deleteRows")]
pub fn delete_rows(&mut self, sheet: u32, row: i32, row_count: i32) -> Result<(), JsError> {
self.model
.delete_rows(sheet, row, row_count)
.map_err(to_js_error)
}
#[wasm_bindgen(js_name = "deleteColumns")]
pub fn delete_columns(
&mut self,
sheet: u32,
column: i32,
column_count: i32,
) -> Result<(), JsError> {
self.model
.delete_columns(sheet, column, column_count)
.map_err(to_js_error)
}
#[wasm_bindgen(js_name = "setRowsHeight")]
pub fn set_rows_height(
&mut self,

View File

@@ -130,5 +130,47 @@ test("autofill", () => {
assert.strictEqual(result, "23");
});
test('insertRows shifts cells', () => {
const model = new Model('Workbook1', 'en', 'UTC');
model.setUserInput(0, 1, 1, '42');
model.insertRows(0, 1, 1);
assert.strictEqual(model.getCellContent(0, 1, 1), '');
assert.strictEqual(model.getCellContent(0, 2, 1), '42');
});
test('insertColumns shifts cells', () => {
const model = new Model('Workbook1', 'en', 'UTC');
model.setUserInput(0, 1, 1, 'A');
model.setUserInput(0, 1, 2, 'B');
model.insertColumns(0, 2, 1);
assert.strictEqual(model.getCellContent(0, 1, 2), '');
assert.strictEqual(model.getCellContent(0, 1, 3), 'B');
});
test('deleteRows removes cells', () => {
const model = new Model('Workbook1', 'en', 'UTC');
model.setUserInput(0, 1, 1, '1');
model.setUserInput(0, 2, 1, '2');
model.deleteRows(0, 1, 1);
assert.strictEqual(model.getCellContent(0, 1, 1), '2');
assert.strictEqual(model.getCellContent(0, 2, 1), '');
});
test('deleteColumns removes cells', () => {
const model = new Model('Workbook1', 'en', 'UTC');
model.setUserInput(0, 1, 1, 'A');
model.setUserInput(0, 1, 2, 'B');
model.deleteColumns(0, 1, 1);
assert.strictEqual(model.getCellContent(0, 1, 1), 'B');
assert.strictEqual(model.getCellContent(0, 1, 2), '');
});