Skip to content

Commit 7b51e50

Browse files
committed
Implement float cell type
1 parent cf44e2b commit 7b51e50

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

js/src/sheet.ts

+24-12
Original file line numberDiff line numberDiff line change
@@ -274,33 +274,45 @@ let put_values2d = function(grid, values) {
274274
});
275275

276276

277-
// Register `int` cell type
278-
let int_editor = Handsontable.editors.TextEditor.prototype.extend();
277+
// Register `int` and `float` cell types
278+
class NumberEditor extends Handsontable.editors.TextEditor {
279+
getValue() {
280+
return Number.parseFloat(this.TEXTAREA.value);
281+
}
282+
};
279283

280284
function int_renderer(hotInstance, td, row, column, prop, value, cellProperties) {
281285
const numeric_format = cellProperties.numericFormat || 'd';
282286
td.innerHTML = d3.format(numeric_format)(value);
283287
}
284288

285289
function int_validator(query, callback) {
286-
let is_integer = false;
287-
if (typeof query == 'number') {
288-
is_integer = Number.isInteger(query);
289-
} else {
290-
is_integer = Number.isInteger(parseFloat(query));
291-
}
292-
293-
console.log('is_integer?', query, is_integer);
294-
callback(is_integer);
290+
callback(Number.isInteger(query));
295291
}
296292

297293
(Handsontable.cellTypes as any).registerCellType('int', {
298-
editor: int_editor,
294+
editor: NumberEditor,
299295
renderer: int_renderer,
300296
validator: int_validator,
301297
allowInvalid: false
302298
});
303299

300+
function float_renderer(hotInstance, td, row, column, prop, value, cellProperties) {
301+
const numeric_format = cellProperties.numericFormat || '.2f';
302+
td.innerHTML = d3.format(numeric_format)(value);
303+
}
304+
305+
function float_validator(query, callback) {
306+
callback(Number.isInteger(query));
307+
}
308+
309+
(Handsontable.cellTypes as any).registerCellType('float', {
310+
editor: NumberEditor,
311+
renderer: float_renderer,
312+
validator: float_validator,
313+
allowInvalid: false
314+
});
315+
304316
let SheetView = widgets.DOMWidgetView.extend({
305317
render: function() {
306318
// this.widget_view_promises = {}

0 commit comments

Comments
 (0)