Skip to content

Commit

Permalink
Merge pull request #20 from cocopon/refactor-types
Browse files Browse the repository at this point in the history
Refactor InputParams and MonitorParams
  • Loading branch information
cocopon committed Oct 23, 2019
2 parents 152ea62 + 8a47b7d commit fbda969
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 27 deletions.
54 changes: 44 additions & 10 deletions src/main/js/api/types.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
export interface Point2dDimensionParams {
max?: number;
min?: number;
step?: number;
}

export interface InputParamsOption<T> {
text: string;
value: T;
Expand All @@ -13,27 +7,67 @@ export interface InputParamsOptionDictionary<T> {
[key: string]: T;
}

export interface InputParams {
export interface Point2dDimensionParams {
max?: number;
min?: number;
step?: number;
}

interface BaseInputParams {
label?: string;
presetKey?: string;
}

interface BooleanInputParams extends BaseInputParams {
options?: InputParamsOption<unknown>[] | InputParamsOptionDictionary<unknown>;
}

interface NumberInputParams extends BaseInputParams {
max?: number;
min?: number;
options?: InputParamsOption<unknown>[] | InputParamsOptionDictionary<unknown>;
presetKey?: string;
step?: number;
}

interface Point2dInputParams extends BaseInputParams {
options?: InputParamsOption<unknown>[] | InputParamsOptionDictionary<unknown>;
x?: Point2dDimensionParams;
y?: Point2dDimensionParams;
}

export interface MonitorParams {
interface StrintrigInputParams extends BaseInputParams {
options?: InputParamsOption<unknown>[] | InputParamsOptionDictionary<unknown>;
}

export type InputParams =
| BooleanInputParams
| NumberInputParams
| Point2dInputParams
| StrintrigInputParams;

interface BaseMonitorParams {
count?: number;
interval?: number;
label?: string;
}

type BooleanMonitorParams = BaseMonitorParams;

interface NumberMonitorParams extends BaseMonitorParams {
max?: number;
min?: number;
multiline?: boolean;
type?: string;
}

interface StringMonitorParams extends BaseMonitorParams {
multiline?: boolean;
}

export type MonitorParams =
| BooleanMonitorParams
| NumberMonitorParams
| StringMonitorParams;

export interface ButtonParams {
title: string;
}
Expand Down
7 changes: 5 additions & 2 deletions src/main/js/controller/binding-creators/number-input.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,18 @@ import * as UiUtil from '../ui-util';
function createConstraint(params: InputParams): Constraint<number> {
const constraints: Constraint<number>[] = [];

if (!TypeUtil.isEmpty(params.step)) {
if ('step' in params && !TypeUtil.isEmpty(params.step)) {
constraints.push(
new StepConstraint({
step: params.step,
}),
);
}

if (!TypeUtil.isEmpty(params.max) || !TypeUtil.isEmpty(params.min)) {
if (
('max' in params && !TypeUtil.isEmpty(params.max)) ||
('min' in params && !TypeUtil.isEmpty(params.min))
) {
constraints.push(
new RangeConstraint({
max: params.max,
Expand Down
12 changes: 9 additions & 3 deletions src/main/js/controller/binding-creators/number-monitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,14 @@ function createGraphMonitor(
}),
controller: new GraphMonitorController(document, {
formatter: createFormatter(),
maxValue: TypeUtil.getOrDefault<number>(params.max, 100),
minValue: TypeUtil.getOrDefault<number>(params.min, 0),
maxValue: TypeUtil.getOrDefault<number>(
'max' in params ? params.max : null,
100,
),
minValue: TypeUtil.getOrDefault<number>(
'min' in params ? params.min : null,
0,
),
value: value,
}),
label: params.label || target.key,
Expand All @@ -98,7 +104,7 @@ export function create(
return null;
}

if (params.type === 'graph') {
if ('type' in params && params.type === 'graph') {
return createGraphMonitor(document, target, params);
}

Expand Down
16 changes: 5 additions & 11 deletions src/main/js/controller/binding-creators/point-2d-input.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {Point2dDimensionParams} from '../../api/types';
import {InputParams, Point2dDimensionParams} from '../../api/types';
import {InputBinding} from '../../binding/input';
import {CompositeConstraint} from '../../constraint/composite';
import {Constraint} from '../../constraint/constraint';
Expand All @@ -18,12 +18,6 @@ import {InputBindingController} from '../input-binding';
import {Point2dPadTextInputController} from '../input/point-2d-pad-text';
import * as UiUtil from '../ui-util';

interface Params {
label?: string;
x?: Point2dDimensionParams;
y?: Point2dDimensionParams;
}

function createDimensionConstraint(
params: Point2dDimensionParams | undefined,
): Constraint<number> | undefined {
Expand Down Expand Up @@ -53,10 +47,10 @@ function createDimensionConstraint(
});
}

function createConstraint(params: Params): Constraint<Point2d> {
function createConstraint(params: InputParams): Constraint<Point2d> {
return new Point2dConstraint({
x: createDimensionConstraint(params.x),
y: createDimensionConstraint(params.y),
x: createDimensionConstraint('x' in params ? params.x : undefined),
y: createDimensionConstraint('y' in params ? params.y : undefined),
});
}

Expand Down Expand Up @@ -84,7 +78,7 @@ function createController(document: Document, value: InputValue<Point2d>) {
export function create(
document: Document,
target: Target,
params: Params,
params: InputParams,
): InputBindingController<Point2d, Point2dObject> | null {
const initialValue = target.read();
const p = AnyPoint2dParser(initialValue);
Expand Down
3 changes: 2 additions & 1 deletion src/main/js/controller/binding-creators/string-monitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ export function create(
TypeUtil.getOrDefault<number>(params.count, 1),
);

const multiline = value.totalCount > 1 || params.multiline;
const multiline =
value.totalCount > 1 || ('multiline' in params && params.multiline);
const controller = multiline
? new MultiLogMonitorController(document, {
formatter: new StringFormatter(),
Expand Down

0 comments on commit fbda969

Please sign in to comment.