-
Notifications
You must be signed in to change notification settings - Fork 248
Commit
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
HTMLWidgets.widget({ | ||
|
||
name: 'grViz', | ||
|
||
type: 'output', | ||
|
||
initialize: function(el, width, height) { | ||
|
||
return { | ||
// TODO: add instance fields as required | ||
}; | ||
}, | ||
|
||
renderValue: function(el, x, instance) { | ||
// Use this to sort of make our diagram responsive | ||
// or at a minimum fit within the bounds set by htmlwidgets | ||
// for the parent container | ||
function makeResponsive(el){ | ||
var svg = el.getElementsByTagName("svg")[0]; | ||
if (svg) { | ||
if (svg.width) {svg.removeAttribute("width")} | ||
if (svg.height) {svg.removeAttribute("height")} | ||
svg.style.width = "100%"; | ||
svg.style.height = "100%"; | ||
} | ||
} | ||
|
||
if (x.diagram !== "") { | ||
|
||
if (typeof x.config === "undefined"){ | ||
x.config = {}; | ||
x.config.engine = "dot"; | ||
x.config.options = {}; | ||
} | ||
|
||
try { | ||
|
||
el.innerHTML = Viz(x.diagram, format="svg", engine=x.config.engine, options=x.config.options); | ||
|
||
makeResponsive(el); | ||
|
||
if (HTMLWidgets.shinyMode) { | ||
// Get widget id | ||
var id = el.id; | ||
|
||
$("#" + id + " .node").click(function(e) { | ||
// Get node id | ||
var nodeid = e.currentTarget.id; | ||
// Get node text object and make an array | ||
var node_texts = $("#" + id + " #" + nodeid + " text"); | ||
//var node_path = $("#" + nodeid + " path")[0]; | ||
var text_array = node_texts.map(function() {return $(this).text(); }).toArray(); | ||
// Build return object *obj* with node-id, node text values and node fill | ||
var obj = { | ||
id: nodeid, | ||
//fill: node_path.attributes.fill.nodeValue, | ||
//outerHMTL: node_path.outerHTML, | ||
nodeValues: text_array | ||
}; | ||
// Send *obj* to Shiny's inputs (input$[id]+_click e.g.: input$vtree_click)) | ||
Shiny.setInputValue(id + "_click", obj, {priority: "event"}); | ||
}); | ||
} | ||
|
||
// set up a container for tasks to perform after completion | ||
// one example would be add callbacks for event handling | ||
// styling | ||
if (typeof x.tasks !== "undefined") { | ||
if ((typeof x.tasks.length === "undefined") || | ||
(typeof x.tasks === "function")) { | ||
// handle a function not enclosed in array | ||
// should be able to remove once using jsonlite | ||
x.tasks = [x.tasks]; | ||
} | ||
x.tasks.map(function(t){ | ||
// for each tasks add it to the mermaid.tasks with el | ||
t.call(el); | ||
}); | ||
} | ||
} catch(e){ | ||
var p = document.createElement("pre"); | ||
p.innerText = e; | ||
el.appendChild(p); | ||
} | ||
} | ||
|
||
}, | ||
|
||
resize: function(el, width, height, instance) { | ||
} | ||
}); |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
HTMLWidgets.widget({ | ||
|
||
name: 'grViz', | ||
|
||
type: 'output', | ||
|
||
initialize: function(el, width, height) { | ||
|
||
return { | ||
// TODO: add instance fields as required | ||
}; | ||
}, | ||
|
||
renderValue: function(el, x, instance) { | ||
// Use this to sort of make our diagram responsive | ||
// or at a minimum fit within the bounds set by htmlwidgets | ||
// for the parent container | ||
function makeResponsive(el){ | ||
var svg = el.getElementsByTagName("svg")[0]; | ||
if (svg) { | ||
if (svg.width) {svg.removeAttribute("width")} | ||
if (svg.height) {svg.removeAttribute("height")} | ||
svg.style.width = "100%"; | ||
svg.style.height = "100%"; | ||
} | ||
} | ||
|
||
if (x.diagram !== "") { | ||
|
||
if (typeof x.config === "undefined"){ | ||
x.config = {}; | ||
x.config.engine = "dot"; | ||
x.config.options = {}; | ||
} | ||
|
||
try { | ||
|
||
el.innerHTML = Viz(x.diagram, format="svg", engine=x.config.engine, options=x.config.options); | ||
|
||
makeResponsive(el); | ||
|
||
if (HTMLWidgets.shinyMode) { | ||
// Get widget id | ||
var id = el.id; | ||
|
||
$("#" + id + " .node").click(function(e) { | ||
// Get node id | ||
var nodeid = e.currentTarget.id; | ||
// Get node text object and make an array | ||
var node_texts = $("#" + id + " #" + nodeid + " text"); | ||
//var node_path = $("#" + nodeid + " path")[0]; | ||
var text_array = node_texts.map(function() {return $(this).text(); }).toArray(); | ||
// Build return object *obj* with node-id, node text values and node fill | ||
var obj = { | ||
id: nodeid, | ||
//fill: node_path.attributes.fill.nodeValue, | ||
//outerHMTL: node_path.outerHTML, | ||
nodeValues: text_array | ||
}; | ||
// Send *obj* to Shiny's inputs (input$[id]+_click e.g.: input$vtree_click)) | ||
Shiny.setInputValue(id + "_click", obj, {priority: "event"}); | ||
}); | ||
} | ||
|
||
// set up a container for tasks to perform after completion | ||
// one example would be add callbacks for event handling | ||
// styling | ||
if (typeof x.tasks !== "undefined") { | ||
if ((typeof x.tasks.length === "undefined") || | ||
(typeof x.tasks === "function")) { | ||
// handle a function not enclosed in array | ||
// should be able to remove once using jsonlite | ||
x.tasks = [x.tasks]; | ||
} | ||
x.tasks.map(function(t){ | ||
// for each tasks add it to the mermaid.tasks with el | ||
t.call(el); | ||
}); | ||
} | ||
} catch(e){ | ||
var p = document.createElement("pre"); | ||
p.innerText = e; | ||
el.appendChild(p); | ||
} | ||
} | ||
|
||
}, | ||
|
||
resize: function(el, width, height, instance) { | ||
} | ||
}); |