minor refactor (DRY)

This commit is contained in:
gabrielburnworth 2018-05-15 16:15:45 -07:00
parent 668e530458
commit b90fa91a9b
3 changed files with 18 additions and 30 deletions

View file

@ -4,7 +4,7 @@ import * as _ from "lodash";
import { GardenPlant } from "../garden_plant";
import { PlantLayerProps, CropSpreadDict } from "../interfaces";
import { defensiveClone } from "../../../util";
import { getMode, Mode } from "../garden_map";
import { maybeNoPointer } from "../maybe_no_pointer";
const cropSpreadDict: CropSpreadDict = {};
@ -25,20 +25,6 @@ export function PlantLayer(props: PlantLayerProps) {
.filter(c => !!c.body.spread)
.map(c => cropSpreadDict[c.body.slug] = c.body.spread);
// TODO: This has a high similarity to code in `tool_slot_layers.tsx`. DRY up.
// -RC 14 May 18
const maybeNoPointer = (): React.SVGProps<SVGGElement>["style"] => {
switch (getMode()) {
case Mode.boxSelect:
case Mode.clickToAdd:
case Mode.moveTo:
case Mode.createPoint:
return { "pointerEvents": "none" };
default:
return {};
}
};
return <g id="plant-layer">
{visible &&
plants
@ -58,7 +44,7 @@ export function PlantLayer(props: PlantLayerProps) {
})
.map(p => {
return <Link className="plant-link-wrapper"
style={maybeNoPointer()}
style={maybeNoPointer({})}
to={"/app/designer/plants/" + p.plantId}
id={p.plantId}
onClick={_.noop}

View file

@ -3,7 +3,7 @@ import { SlotWithTool } from "../../../resources/interfaces";
import { ToolSlotPoint } from "../tool_slot_point";
import { MapTransformProps } from "../interfaces";
import { history, getPathArray } from "../../../history";
import { getMode, Mode } from "../garden_map";
import { maybeNoPointer } from "../maybe_no_pointer";
export interface ToolSlotLayerProps {
visible: boolean;
@ -23,22 +23,10 @@ export function ToolSlotLayer(props: ToolSlotLayerProps) {
const { slots, visible, mapTransformProps } = props;
const cursor = canClickTool ? "pointer" : "default";
const maybeNoPointer = (): React.SVGProps<SVGGElement>["style"] => {
switch (getMode()) {
case Mode.boxSelect:
case Mode.clickToAdd:
case Mode.moveTo:
case Mode.createPoint:
return { "pointerEvents": "none" };
default:
return { cursor: cursor };
}
};
return <g
id="toolslot-layer"
onClick={goToToolsPage}
style={maybeNoPointer()}>
style={maybeNoPointer({ cursor: cursor })}>
{visible &&
slots.map(slot =>
<ToolSlotPoint

View file

@ -0,0 +1,14 @@
import { getMode, Mode } from "./garden_map";
export const maybeNoPointer =
(defaultStyle: React.CSSProperties): React.SVGProps<SVGGElement>["style"] => {
switch (getMode()) {
case Mode.boxSelect:
case Mode.clickToAdd:
case Mode.moveTo:
case Mode.createPoint:
return { "pointerEvents": "none" };
default:
return defaultStyle;
}
};