mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-19 14:42:02 +00:00
Summary: - Grist document has a associated "locale" setting that affects how currency is formatted. - Currency selector for number format. Test Plan: not done Reviewers: dsagal Reviewed By: dsagal Subscribers: paulfitz Differential Revision: https://phab.getgrist.com/D2977
36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import * as kf from 'app/client/lib/koForm';
|
|
import {DataRowModel} from 'app/client/models/DataRowModel';
|
|
import {ViewFieldRec} from 'app/client/models/entities/ViewFieldRec';
|
|
import {NumericTextBox} from 'app/client/widgets/NumericTextBox';
|
|
import {buildNumberFormat} from 'app/common/NumberFormat';
|
|
import {dom} from 'grainjs';
|
|
import * as ko from 'knockout';
|
|
|
|
/**
|
|
* Spinner - A widget with a text field and spinner.
|
|
*/
|
|
export class Spinner extends NumericTextBox {
|
|
private _stepSize: ko.Computed<number>;
|
|
|
|
constructor(field: ViewFieldRec) {
|
|
super(field);
|
|
const resolved = this.autoDispose(ko.computed(() => {
|
|
const {numMode} = this.options();
|
|
const docSettings = this.field.documentSettings();
|
|
return buildNumberFormat({numMode}, docSettings).resolvedOptions();
|
|
}));
|
|
this._stepSize = this.autoDispose(ko.computed(() => {
|
|
const extraScaling = (this.options().numMode === 'percent') ? 2 : 0;
|
|
return Math.pow(10, -(this.options().decimals || resolved().minimumFractionDigits) - extraScaling);
|
|
}));
|
|
}
|
|
|
|
public buildDom(row: DataRowModel) {
|
|
const value = row.cells[this.field.colId.peek()];
|
|
return dom.update(super.buildDom(row),
|
|
dom.cls('widget_spinner'),
|
|
kf.spinner(value, this._stepSize)
|
|
);
|
|
}
|
|
}
|