Skip to content

Use model lib #95

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import snapToTargetNode from "./snapToTargetNode"
import {snapToDistancesAndAngles} from "./geometricSnapping"
import {idsMatch} from "../model/Id"
import {idsMatch} from "@neo4j-arrows/model"
import {getVisualGraph} from "../selectors"
import {selectedNodeIds} from "../model/selection";
import {Guides} from "../model/guides/guides";
import {selectedNodeIds} from "@neo4j-arrows/model";
import {Guides} from "@neo4j-arrows/model";

export const activateRing = (sourceNodeId, nodeType) => {
return {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import {getPresentGraph} from "../selectors";
import {selectedNodes, selectedRelationships} from "../model/selection";
import {selectedNodes, selectedRelationships} from "@neo4j-arrows/model";
import { DispatchFunction, ImpureFunction } from "../type-patches";

export const handleCopy = () => {
return function (dispatch, getState) {
return function (dispatch:DispatchFunction, getState:ImpureFunction) {
const state = getState()
const graph = getPresentGraph(state)
const nodes = selectedNodes(graph, state.selection)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { getCommonCaption } from "../model/gang"
import { idsMatch, nextAvailableId } from "../model/Id"
import { getCommonCaption } from "@neo4j-arrows/model"
import { idsMatch, nextAvailableId } from "@neo4j-arrows/model"
import { moveNodes } from "./graph"
import { clearSelection } from "./selection";
import { getGraph, getPositionsOfSelectedNodes, getPresentGraph } from "../selectors";
import {nodeSelected} from "../model/selection";
import {Guides} from "../model/guides/guides";
import {nodeSelected} from "@neo4j-arrows/model";
import {Guides} from "@neo4j-arrows/model";
import { DispatchFunction, ImpureFunction } from "../type-patches";

export const createClusterGang = (nodePositions, initialPositions) => (dispatch, getState) => {
export const createClusterGang = (nodePositions, initialPositions) => (dispatch:DispatchFunction, getState:ImpureFunction) => {
const state = getState()
const graph = getPresentGraph(state)
const combinedNodeIds = nodePositions.map(nodePos => nodePos.nodeId)
Expand Down
12 changes: 6 additions & 6 deletions apps/arrows-ts/src/actions/geometricSnapping.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {Point} from "../model/Point";
import {idsMatch} from "../model/Id";
import {LineGuide} from "../model/guides/LineGuide";
import {CircleGuide} from "../model/guides/CircleGuide";
import {areParallel} from "../model/guides/intersections";
import {byAscendingError} from "../model/guides/guides";
import {Point} from "../model-old/Point";
import {idsMatch} from "../model-old/Id";
import {LineGuide} from "../model-old/guides/LineGuide";
import {CircleGuide} from "../model-old/guides/CircleGuide";
import {areParallel} from "../model-old/guides/intersections";
import {byAscendingError} from "../model-old/guides/guides";

export const snapTolerance = 20
const grossTolerance = snapTolerance * 2
Expand Down
2 changes: 1 addition & 1 deletion apps/arrows-ts/src/actions/googleDrive.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import config from "../config";
import {googleDriveSignInStatusChanged} from "./storage";
import {renderPngForThumbnail} from "../graphics/utils/offScreenCanvasRenderer";
import {indexableText} from "../model/Graph";
import {indexableText} from "../model-old/Graph";
export const DISCOVERY_DOCS = ["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"];
export const SCOPES = 'https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.install';

Expand Down
18 changes: 9 additions & 9 deletions apps/arrows-ts/src/actions/graph.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import {angleTolerance, snapTolerance, snapToNeighbourDistancesAndAngles} from "./geometricSnapping";
import {idsMatch, nextAvailableId, nextId} from "../model/Id";
import {average, Point} from "../model/Point";
import {Vector} from "../model/Vector";
import {idsMatch, nextAvailableId, nextId} from "../model-old/Id";
import {average, Point} from "../model-old/Point";
import {Vector} from "../model-old/Vector";
import {calculateBoundingBox} from "../graphics/utils/geometryUtils";
import {getPresentGraph, getVisualGraph} from "../selectors";
import {
nodeSelected,
selectedNodeIdMap, selectedNodeIds, selectedNodes,
selectedRelationshipIdMap, selectedRelationshipIds, selectedRelationships
} from "../model/selection";
} from "../model-old/selection";
import {defaultNodeRadius, defaultRelationshipLength} from "../graphics/constants";
import BoundingBox from "../graphics/utils/BoundingBox";
import {translate} from "../model/Node";
import {translate} from "../model-old/Node";
import {lockHandleDragType} from "./mouse";
import {CircleGuide} from "../model/guides/CircleGuide";
import {LineGuide} from "../model/guides/LineGuide";
import {HandleGuide} from "../model/guides/HandleGuide";
import {Guides} from "../model/guides/guides";
import {CircleGuide} from "../model-old/guides/CircleGuide";
import {LineGuide} from "../model-old/guides/LineGuide";
import {HandleGuide} from "../model-old/guides/HandleGuide";
import {Guides} from "../model-old/guides/guides";

export const createNode = () => (dispatch, getState) => {
let newNodePosition = new Point(0, 0)
Expand Down
6 changes: 3 additions & 3 deletions apps/arrows-ts/src/actions/import.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {importNodesAndRelationships, setArrowsProperty, setGraphStyle} from "./graph";
import {Point} from "../model/Point";
import {Point} from "../model-old/Point";
import {getPresentGraph} from "../selectors";
import {constructGraphFromFile} from "../storage/googleDriveStorage";
import {translate} from "../model/Node";
import {Vector} from "../model/Vector";
import {translate} from "../model-old/Node";
import {Vector} from "../model-old/Vector";
import {hideImportDialog} from "./applicationDialogs";
import {shrinkImageUrl} from "../graphics/utils/resizeImage";
import {Base64} from "js-base64";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
import {getPositionsOfSelectedNodes, getPresentGraph, getTransformationHandles, getVisualGraph} from "../selectors/"
import {getPositionsOfSelectedNodes, getPresentGraph, getTransformationHandles, getVisualGraph} from "../selectors"
import {activateEditing, clearSelection, toggleSelection} from "./selection"
import {connectNodes, createNodesAndRelationships, moveNodesEndDrag, tryMoveHandle, tryMoveNode} from "./graph"
import {adjustViewport} from "./viewTransformation"
import {activateRing, deactivateRing, tryDragRing} from "./dragToCreate"
import {selectItemsInMarquee, setMarquee} from "./selectionMarquee"
import {getEventHandlers} from "../selectors/layers";
import {canvasPadding, computeCanvasSize, subtractPadding} from "../model/applicationLayout";
import {Vector} from "../model/Vector";
import {Point, canvasPadding, computeCanvasSize, subtractPadding} from "@neo4j-arrows/model";
import {Vector} from "@neo4j-arrows/model";
import { DispatchFunction, FixThisType, ImpureFunction } from "../type-patches"
import {BoundingBox, BoxSize} from "@neo4j-arrows/graphics";

const toGraphPosition = (state, canvasPosition) => state.viewTransformation.inverse(canvasPosition)
const toGraphPosition = (state:FixThisType, canvasPosition:Point) => state.viewTransformation.inverse(canvasPosition)

export const wheel = (canvasPosition, vector, ctrlKey) => {
return function (dispatch, getState) {
const state = getState()
export const wheel = (canvasPosition:Point, vector:Vector, ctrlKey:boolean) => {
return function (dispatch:DispatchFunction, getState: ImpureFunction) {
const state = getState()
const boundingBox = getVisualGraph(state).boundingBox()
const currentScale = state.viewTransformation.scale
const canvasSize = subtractPadding(computeCanvasSize(state.applicationLayout))
Expand All @@ -36,10 +38,10 @@ export const wheel = (canvasPosition, vector, ctrlKey) => {
}
}

const moveTowardCenter = (minScale, offset, boundingBox, canvasSize) => {
const moveTowardCenter = (minScale:number, offset:Vector, boundingBox:BoundingBox, canvasSize:BoxSize) => {
const dimensions = [
{component: 'dx', min: 'left', max: 'right', extent: 'width'},
{component: 'dy', min: 'top', max: 'bottom', extent: 'height'}
{component: 'dx' as const, min: 'left' as const, max: 'right' as const, extent: 'width' as const},
{component: 'dy' as const, min: 'top' as const, max: 'bottom' as const, extent: 'height' as const}
]

const [dx, dy] = dimensions.map(d => {
Expand All @@ -54,15 +56,15 @@ const moveTowardCenter = (minScale, offset, boundingBox, canvasSize) => {
return new Vector(dx, dy)
}

const constrainScroll = (boundingBox, scale, effectiveOffset, canvasSize) => {
const constrainScroll = (boundingBox:BoundingBox, scale:number, effectiveOffset:Vector, canvasSize:BoxSize) => {
const constrainedOffset = new Vector(effectiveOffset.dx, effectiveOffset.dy)

const dimensions = [
{component: 'dx', min: 'left', max: 'right', extent: 'width'},
{component: 'dy', min: 'top', max: 'bottom', extent: 'height'}
{component: 'dx' as const, min: 'left' as const, max: 'right' as const, extent: 'width' as const},
{component: 'dy' as const, min: 'top' as const, max: 'bottom' as const, extent: 'height' as const}
]

const flip = (tooLarge, boundary) => {
const flip = (tooLarge:boolean, boundary:boolean) => {
return tooLarge ? !boundary : boundary
}

Expand All @@ -81,8 +83,8 @@ const constrainScroll = (boundingBox, scale, effectiveOffset, canvasSize) => {
return constrainedOffset
}

export const doubleClick = (canvasPosition) => {
return function (dispatch, getState) {
export const doubleClick = (canvasPosition:Point) => {
return function (dispatch:DispatchFunction, getState: ImpureFunction) {
const state = getState()
const visualGraph = getVisualGraph(state)
const graphPosition = toGraphPosition(state, canvasPosition)
Expand All @@ -93,8 +95,8 @@ export const doubleClick = (canvasPosition) => {
}
}

export const mouseDown = (canvasPosition, multiSelectModifierKey) => {
return function (dispatch, getState) {
export const mouseDown = (canvasPosition:Point, multiSelectModifierKey:boolean) => {
return function (dispatch:DispatchFunction, getState: ImpureFunction) {
const state = getState();
const visualGraph = getVisualGraph(state)
const transformationHandles = getTransformationHandles(state)
Expand Down Expand Up @@ -130,44 +132,44 @@ export const mouseDown = (canvasPosition, multiSelectModifierKey) => {
}
}

const mouseDownOnHandle = (corner, canvasPosition, nodePositions) => ({
const mouseDownOnHandle = (corner:Point, canvasPosition:Point, nodePositions:Point[]) => ({
type: 'MOUSE_DOWN_ON_HANDLE',
corner,
canvasPosition,
nodePositions
})

export const lockHandleDragType = (dragType) => ({
export const lockHandleDragType = (dragType:string) => ({
type: 'LOCK_HANDLE_DRAG_MODE',
dragType
})

const mouseDownOnNode = (node, canvasPosition, graphPosition) => ({
const mouseDownOnNode = (node:FixThisType, canvasPosition:Point, graphPosition:Point) => ({
type: 'MOUSE_DOWN_ON_NODE',
node,
position: canvasPosition,
graphPosition
})

const mouseDownOnNodeRing = (node, canvasPosition) => ({
const mouseDownOnNodeRing = (node:FixThisType, canvasPosition:Point) => ({
type: 'MOUSE_DOWN_ON_NODE_RING',
node,
position: canvasPosition
})

const mouseDownOnCanvas = (canvasPosition, graphPosition) => ({
const mouseDownOnCanvas = (canvasPosition:Point, graphPosition:Point) => ({
type: 'MOUSE_DOWN_ON_CANVAS',
canvasPosition,
graphPosition
})

const furtherThanDragThreshold = (previousPosition, newPosition) => {
const furtherThanDragThreshold = (previousPosition:Point, newPosition:Point) => {
const movementDelta = newPosition.vectorFrom(previousPosition)
return movementDelta.distance() >= 3
}

export const mouseMove = (canvasPosition) => {
return function (dispatch, getState) {
export const mouseMove = (canvasPosition:Point) => {
return function (dispatch:DispatchFunction, getState:ImpureFunction) {
const state = getState();
const visualGraph = getVisualGraph(state)
const graphPosition = toGraphPosition(state, canvasPosition)
Expand Down
2 changes: 1 addition & 1 deletion apps/arrows-ts/src/actions/selection.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getPresentGraph } from "../selectors"
import {nodeSelected, selectedNodeIds} from "../model/selection";
import {nodeSelected, selectedNodeIds} from "../model-old/selection";

export const activateEditing = (entity) => ({
type: 'ACTIVATE_EDITING',
Expand Down
2 changes: 1 addition & 1 deletion apps/arrows-ts/src/actions/snapToTargetNode.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {idsMatch} from "../model/Id";
import {idsMatch} from "../model-old/Id";

const snapToTargetNode = (visualGraph, excludedNodeId, naturalPosition) => {
const targetNode = visualGraph.closestNode(naturalPosition, (visualNode, distance) => {
Expand Down
Loading