mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
1654a2681f
Summary: This moves all client code to core, and makes minimal fix-ups to get grist and grist-core to compile correctly. The client works in core, but I'm leaving clean-up around the build and bundles to follow-up. Test Plan: existing tests pass; server-dev bundle looks sane Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2627
33 lines
1.2 KiB
TypeScript
33 lines
1.2 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(() =>
|
|
buildNumberFormat({numMode: this.options().numMode}).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)
|
|
);
|
|
}
|
|
}
|