Skip to content

Commit

Permalink
Merge pull request #203 from plotly/feature-wheel-sensivity
Browse files Browse the repository at this point in the history
Feature wheel sensitivity
  • Loading branch information
alexcjohnson authored Jan 26, 2024
2 parents 43433b0 + 169e0cd commit 4126adf
Show file tree
Hide file tree
Showing 20 changed files with 99 additions and 17 deletions.
6 changes: 3 additions & 3 deletions R/cytoCytoscape.R
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# AUTO GENERATED FILE - DO NOT EDIT

#' @export
cytoCytoscape <- function(id=NULL, autoRefreshLayout=NULL, autolock=NULL, autoungrabify=NULL, autounselectify=NULL, boxSelectionEnabled=NULL, className=NULL, clearOnUnhover=NULL, contextMenu=NULL, contextMenuData=NULL, elements=NULL, extent=NULL, generateImage=NULL, imageData=NULL, layout=NULL, maxZoom=NULL, minZoom=NULL, mouseoverEdgeData=NULL, mouseoverNodeData=NULL, pan=NULL, panningEnabled=NULL, responsive=NULL, selectedEdgeData=NULL, selectedNodeData=NULL, style=NULL, stylesheet=NULL, tapEdge=NULL, tapEdgeData=NULL, tapNode=NULL, tapNodeData=NULL, userPanningEnabled=NULL, userZoomingEnabled=NULL, zoom=NULL, zoomingEnabled=NULL) {
cytoCytoscape <- function(id=NULL, autoRefreshLayout=NULL, autolock=NULL, autoungrabify=NULL, autounselectify=NULL, boxSelectionEnabled=NULL, className=NULL, clearOnUnhover=NULL, contextMenu=NULL, contextMenuData=NULL, elements=NULL, extent=NULL, generateImage=NULL, imageData=NULL, layout=NULL, maxZoom=NULL, minZoom=NULL, mouseoverEdgeData=NULL, mouseoverNodeData=NULL, pan=NULL, panningEnabled=NULL, responsive=NULL, selectedEdgeData=NULL, selectedNodeData=NULL, style=NULL, stylesheet=NULL, tapEdge=NULL, tapEdgeData=NULL, tapNode=NULL, tapNodeData=NULL, userPanningEnabled=NULL, userZoomingEnabled=NULL, wheelSensitivity=NULL, zoom=NULL, zoomingEnabled=NULL) {

props <- list(id=id, autoRefreshLayout=autoRefreshLayout, autolock=autolock, autoungrabify=autoungrabify, autounselectify=autounselectify, boxSelectionEnabled=boxSelectionEnabled, className=className, clearOnUnhover=clearOnUnhover, contextMenu=contextMenu, contextMenuData=contextMenuData, elements=elements, extent=extent, generateImage=generateImage, imageData=imageData, layout=layout, maxZoom=maxZoom, minZoom=minZoom, mouseoverEdgeData=mouseoverEdgeData, mouseoverNodeData=mouseoverNodeData, pan=pan, panningEnabled=panningEnabled, responsive=responsive, selectedEdgeData=selectedEdgeData, selectedNodeData=selectedNodeData, style=style, stylesheet=stylesheet, tapEdge=tapEdge, tapEdgeData=tapEdgeData, tapNode=tapNode, tapNodeData=tapNodeData, userPanningEnabled=userPanningEnabled, userZoomingEnabled=userZoomingEnabled, zoom=zoom, zoomingEnabled=zoomingEnabled)
props <- list(id=id, autoRefreshLayout=autoRefreshLayout, autolock=autolock, autoungrabify=autoungrabify, autounselectify=autounselectify, boxSelectionEnabled=boxSelectionEnabled, className=className, clearOnUnhover=clearOnUnhover, contextMenu=contextMenu, contextMenuData=contextMenuData, elements=elements, extent=extent, generateImage=generateImage, imageData=imageData, layout=layout, maxZoom=maxZoom, minZoom=minZoom, mouseoverEdgeData=mouseoverEdgeData, mouseoverNodeData=mouseoverNodeData, pan=pan, panningEnabled=panningEnabled, responsive=responsive, selectedEdgeData=selectedEdgeData, selectedNodeData=selectedNodeData, style=style, stylesheet=stylesheet, tapEdge=tapEdge, tapEdgeData=tapEdgeData, tapNode=tapNode, tapNodeData=tapNodeData, userPanningEnabled=userPanningEnabled, userZoomingEnabled=userZoomingEnabled, wheelSensitivity=wheelSensitivity, zoom=zoom, zoomingEnabled=zoomingEnabled)
if (length(props) > 0) {
props <- props[!vapply(props, is.null, logical(1))]
}
component <- list(
props = props,
type = 'Cytoscape',
namespace = 'dash_cytoscape',
propNames = c('id', 'autoRefreshLayout', 'autolock', 'autoungrabify', 'autounselectify', 'boxSelectionEnabled', 'className', 'clearOnUnhover', 'contextMenu', 'contextMenuData', 'elements', 'extent', 'generateImage', 'imageData', 'layout', 'maxZoom', 'minZoom', 'mouseoverEdgeData', 'mouseoverNodeData', 'pan', 'panningEnabled', 'responsive', 'selectedEdgeData', 'selectedNodeData', 'style', 'stylesheet', 'tapEdge', 'tapEdgeData', 'tapNode', 'tapNodeData', 'userPanningEnabled', 'userZoomingEnabled', 'zoom', 'zoomingEnabled'),
propNames = c('id', 'autoRefreshLayout', 'autolock', 'autoungrabify', 'autounselectify', 'boxSelectionEnabled', 'className', 'clearOnUnhover', 'contextMenu', 'contextMenuData', 'elements', 'extent', 'generateImage', 'imageData', 'layout', 'maxZoom', 'minZoom', 'mouseoverEdgeData', 'mouseoverNodeData', 'pan', 'panningEnabled', 'responsive', 'selectedEdgeData', 'selectedNodeData', 'style', 'stylesheet', 'tapEdge', 'tapEdgeData', 'tapNode', 'tapNodeData', 'userPanningEnabled', 'userZoomingEnabled', 'wheelSensitivity', 'zoom', 'zoomingEnabled'),
package = 'dashCytoscape'
)

Expand Down
6 changes: 6 additions & 0 deletions dash_cytoscape/Cytoscape.py
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,9 @@ class attribute).
Whether user events (e.g. dragging the graph background) are
allowed to pan the graph.
- wheelSensitivity (number; default 1):
Changes the scroll wheel sensitivity when zooming.
- zoom (number; default 1):
The initial zoom level of the graph. You can set `minZoom` and
`maxZoom` to set restrictions on the zoom level.
Expand Down Expand Up @@ -530,6 +533,7 @@ def __init__(
maxZoom=Component.UNDEFINED,
zoomingEnabled=Component.UNDEFINED,
userZoomingEnabled=Component.UNDEFINED,
wheelSensitivity=Component.UNDEFINED,
boxSelectionEnabled=Component.UNDEFINED,
autoungrabify=Component.UNDEFINED,
autolock=Component.UNDEFINED,
Expand Down Expand Up @@ -583,6 +587,7 @@ def __init__(
"tapNodeData",
"userPanningEnabled",
"userZoomingEnabled",
"wheelSensitivity",
"zoom",
"zoomingEnabled",
]
Expand Down Expand Up @@ -620,6 +625,7 @@ def __init__(
"tapNodeData",
"userPanningEnabled",
"userZoomingEnabled",
"wheelSensitivity",
"zoom",
"zoomingEnabled",
]
Expand Down
2 changes: 1 addition & 1 deletion dash_cytoscape/dash_cytoscape.dev.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dash_cytoscape/dash_cytoscape.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dash_cytoscape/dash_cytoscape_extra.dev.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dash_cytoscape/dash_cytoscape_extra.min.js

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions dash_cytoscape/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,17 @@
"computed": false
}
},
"wheelSensitivity": {
"type": {
"name": "number"
},
"required": false,
"description": "Changes the scroll wheel sensitivity when zooming.",
"defaultValue": {
"value": "1",
"computed": false
}
},
"boxSelectionEnabled": {
"type": {
"name": "bool"
Expand Down
File renamed without changes.
53 changes: 53 additions & 0 deletions demos/usage-wheel-sensitivity.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import dash
from dash import html
import dash_cytoscape as cyto

app = dash.Dash(__name__)
server = app.server

elements = [
{"data": {"id": "Node 1", "label": "Node 1"}, "position": {"x": 0, "y": 0}},
{"data": {"id": "Node 2", "label": "Node 2"}, "position": {"x": 50, "y": 50}},
{"data": {"source": "Node 1", "target": "Node 2", "label": ""}},
]


app.layout = html.Div(
[
html.Div(
[
html.H1("Low wheel sensitivity (0.01)"),
cyto.Cytoscape(
id="cytoscape-slow",
elements=elements,
wheelSensitivity=0.01,
),
]
),
html.Div(
[
html.H1("Default wheel sensitivity (1)"),
cyto.Cytoscape(
id="cytoscape-normal",
elements=elements,
wheelSensitivity=1,
),
]
),
html.Div(
[
html.H1("High wheel sensitivity (100)"),
cyto.Cytoscape(
id="cytoscape-fast",
elements=elements,
wheelSensitivity=100,
),
]
),
],
style={"display": "flex"},
)


if __name__ == "__main__":
app.run_server(debug=True)
2 changes: 1 addition & 1 deletion deps/dash_cytoscape.dev.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion deps/dash_cytoscape.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion deps/dash_cytoscape_extra.dev.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion deps/dash_cytoscape_extra.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion inst/deps/dash_cytoscape.dev.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion inst/deps/dash_cytoscape.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion inst/deps/dash_cytoscape_extra.dev.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion inst/deps/dash_cytoscape_extra.min.js

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion man/cytoCytoscape.Rd
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ panningEnabled=NULL, responsive=NULL, selectedEdgeData=NULL,
selectedNodeData=NULL, style=NULL, stylesheet=NULL,
tapEdge=NULL, tapEdgeData=NULL, tapNode=NULL,
tapNodeData=NULL, userPanningEnabled=NULL,
userZoomingEnabled=NULL, zoom=NULL, zoomingEnabled=NULL)
userZoomingEnabled=NULL, wheelSensitivity=NULL, zoom=NULL,
zoomingEnabled=NULL)
}

\arguments{
Expand Down Expand Up @@ -269,6 +270,8 @@ pan the graph.}
\item{userZoomingEnabled}{Logical. Whether user events (e.g. dragging the graph background) are allowed
to pan the graph.}
\item{wheelSensitivity}{Numeric. Changes the scroll wheel sensitivity when zooming.}
\item{zoom}{Numeric. The initial zoom level of the graph. You can set `minZoom` and
`maxZoom` to set restrictions on the zoom level.}
Expand Down
3 changes: 2 additions & 1 deletion src/jl/cyto_cytoscape.jl
Original file line number Diff line number Diff line change
Expand Up @@ -221,13 +221,14 @@ Those elements have the following types:
pan the graph.
- `userZoomingEnabled` (Bool; optional): Whether user events (e.g. dragging the graph background) are allowed
to pan the graph.
- `wheelSensitivity` (Real; optional): Changes the scroll wheel sensitivity when zooming.
- `zoom` (Real; optional): The initial zoom level of the graph. You can set `minZoom` and
`maxZoom` to set restrictions on the zoom level.
- `zoomingEnabled` (Bool; optional): Whether zooming the graph is enabled (i.e., the zoom level of the graph
is mutable overall).
"""
function cyto_cytoscape(; kwargs...)
available_props = Symbol[:id, :autoRefreshLayout, :autolock, :autoungrabify, :autounselectify, :boxSelectionEnabled, :className, :clearOnUnhover, :contextMenu, :contextMenuData, :elements, :extent, :generateImage, :imageData, :layout, :maxZoom, :minZoom, :mouseoverEdgeData, :mouseoverNodeData, :pan, :panningEnabled, :responsive, :selectedEdgeData, :selectedNodeData, :style, :stylesheet, :tapEdge, :tapEdgeData, :tapNode, :tapNodeData, :userPanningEnabled, :userZoomingEnabled, :zoom, :zoomingEnabled]
available_props = Symbol[:id, :autoRefreshLayout, :autolock, :autoungrabify, :autounselectify, :boxSelectionEnabled, :className, :clearOnUnhover, :contextMenu, :contextMenuData, :elements, :extent, :generateImage, :imageData, :layout, :maxZoom, :minZoom, :mouseoverEdgeData, :mouseoverNodeData, :pan, :panningEnabled, :responsive, :selectedEdgeData, :selectedNodeData, :style, :stylesheet, :tapEdge, :tapEdgeData, :tapNode, :tapNodeData, :userPanningEnabled, :userZoomingEnabled, :wheelSensitivity, :zoom, :zoomingEnabled]
wild_props = Symbol[]
return Component("cyto_cytoscape", "Cytoscape", "dash_cytoscape", available_props, wild_props; kwargs...)
end
Expand Down
8 changes: 8 additions & 0 deletions src/lib/components/Cytoscape.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,7 @@ class Cytoscape extends Component {
maxZoom,
zoomingEnabled,
userZoomingEnabled,
wheelSensitivity,
boxSelectionEnabled,
autoungrabify,
autolock,
Expand Down Expand Up @@ -701,6 +702,7 @@ class Cytoscape extends Component {
maxZoom={maxZoom}
zoomingEnabled={zoomingEnabled}
userZoomingEnabled={userZoomingEnabled}
wheelSensitivity={wheelSensitivity}
boxSelectionEnabled={boxSelectionEnabled}
autoungrabify={autoungrabify}
autolock={autolock}
Expand Down Expand Up @@ -996,6 +998,11 @@ Cytoscape.propTypes = {
*/
userZoomingEnabled: PropTypes.bool,

/**
* Changes the scroll wheel sensitivity when zooming.
*/
wheelSensitivity: PropTypes.number,

/**
* Whether box selection (i.e. drag a box overlay around, and release it
* to select) is enabled. If enabled, the user must taphold to pan the graph.
Expand Down Expand Up @@ -1215,6 +1222,7 @@ Cytoscape.defaultProps = {
userZoomingEnabled: true,
panningEnabled: true,
userPanningEnabled: true,
wheelSensitivity: 1,
boxSelectionEnabled: false,
autolock: false,
autoungrabify: false,
Expand Down

0 comments on commit 4126adf

Please sign in to comment.