|
|
module.exports = function ( graph ){ |
|
|
var debugMenu = {}, |
|
|
checkboxes = []; |
|
|
|
|
|
|
|
|
var hoverFlag = false; |
|
|
var specialCbx; |
|
|
debugMenu.setup = function (){ |
|
|
var menuEntry = d3.select("#debugMenuHref"); |
|
|
|
|
|
menuEntry.on("mouseover", function (){ |
|
|
if ( hoverFlag === false ) { |
|
|
var searchMenu = graph.options().searchMenu(); |
|
|
searchMenu.hideSearchEntries(); |
|
|
specialCbx.on("click")(true); |
|
|
if ( graph.editorMode() === false ) { |
|
|
d3.select("#useAccuracyHelper").style("color", "#979797"); |
|
|
d3.select("#useAccuracyHelper").style("pointer-events", "none"); |
|
|
|
|
|
|
|
|
d3.select("#showDraggerObject").style("color", "#979797"); |
|
|
d3.select("#showDraggerObject").style("pointer-events", "none"); |
|
|
} else { |
|
|
d3.select("#useAccuracyHelper").style("color", "#2980b9"); |
|
|
d3.select("#useAccuracyHelper").style("pointer-events", "auto"); |
|
|
} |
|
|
hoverFlag = true; |
|
|
} |
|
|
}); |
|
|
menuEntry.on("mouseout", function (){ |
|
|
hoverFlag = false; |
|
|
}); |
|
|
|
|
|
|
|
|
specialCbx = addCheckBox("useAccuracyHelper", "Use accuracy helper", "#useAccuracyHelper", graph.options().useAccuracyHelper, |
|
|
function ( enabled, silent ){ |
|
|
if ( !enabled ) { |
|
|
d3.select("#showDraggerObject").style("color", "#979797"); |
|
|
d3.select("#showDraggerObject").style("pointer-events", "none"); |
|
|
d3.select("#showDraggerObjectConfigCheckbox").node().checked = false; |
|
|
} else { |
|
|
d3.select("#showDraggerObject").style("color", "#2980b9"); |
|
|
d3.select("#showDraggerObject").style("pointer-events", "auto"); |
|
|
} |
|
|
|
|
|
if ( silent === true ) return; |
|
|
graph.lazyRefresh(); |
|
|
graph.updateDraggerElements(); |
|
|
} |
|
|
); |
|
|
addCheckBox("showDraggerObject", "Show accuracy helper", "#showDraggerObject", graph.options().showDraggerObject, |
|
|
function ( enabled, silent ){ |
|
|
if ( silent === true ) return; |
|
|
graph.lazyRefresh(); |
|
|
graph.updateDraggerElements(); |
|
|
}); |
|
|
addCheckBox("showFPS_Statistics", "Show rendering statistics", "#showFPS_Statistics", graph.options().showRenderingStatistic, |
|
|
function ( enabled, silent ){ |
|
|
|
|
|
if ( graph.options().getHideDebugFeatures() === false ) { |
|
|
d3.select("#FPS_Statistics").classed("hidden", !enabled); |
|
|
} else { |
|
|
d3.select("#FPS_Statistics").classed("hidden", true); |
|
|
} |
|
|
|
|
|
|
|
|
}); |
|
|
addCheckBox("showModeOfOperation", "Show input modality", "#showModeOfOperation", graph.options().showInputModality, |
|
|
function ( enabled ){ |
|
|
if ( graph.options().getHideDebugFeatures() === false ) { |
|
|
d3.select("#modeOfOperationString").classed("hidden", !enabled); |
|
|
} else { |
|
|
d3.select("#modeOfOperationString").classed("hidden", true); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
function addCheckBox( identifier, modeName, selector, onChangeFunc, _callbackFunction ){ |
|
|
var configOptionContainer = d3.select(selector) |
|
|
.append("div") |
|
|
.classed("checkboxContainer", true); |
|
|
var configCheckbox = configOptionContainer.append("input") |
|
|
.classed("moduleCheckbox", true) |
|
|
.attr("id", identifier + "ConfigCheckbox") |
|
|
.attr("type", "checkbox") |
|
|
.property("checked", onChangeFunc()); |
|
|
|
|
|
|
|
|
configCheckbox.on("click", function ( silent ){ |
|
|
var isEnabled = configCheckbox.property("checked"); |
|
|
onChangeFunc(isEnabled); |
|
|
_callbackFunction(isEnabled, silent); |
|
|
|
|
|
}); |
|
|
checkboxes.push(configCheckbox); |
|
|
configOptionContainer.append("label") |
|
|
.attr("for", identifier + "ConfigCheckbox") |
|
|
.text(modeName); |
|
|
|
|
|
return configCheckbox; |
|
|
} |
|
|
|
|
|
debugMenu.setCheckBoxValue = function ( identifier, value ){ |
|
|
for ( var i = 0; i < checkboxes.length; i++ ) { |
|
|
var cbdId = checkboxes[i].attr("id"); |
|
|
if ( cbdId === identifier ) { |
|
|
checkboxes[i].property("checked", value); |
|
|
break; |
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
debugMenu.getCheckBoxValue = function ( id ){ |
|
|
for ( var i = 0; i < checkboxes.length; i++ ) { |
|
|
var cbdId = checkboxes[i].attr("id"); |
|
|
if ( cbdId === id ) { |
|
|
return checkboxes[i].property("checked"); |
|
|
} |
|
|
} |
|
|
}; |
|
|
|
|
|
debugMenu.updateSettings = function (){ |
|
|
d3.selectAll(".debugOption").classed("hidden", graph.options().getHideDebugFeatures()); |
|
|
|
|
|
var silent = true; |
|
|
checkboxes.forEach(function ( checkbox ){ |
|
|
checkbox.on("click")(silent); |
|
|
}); |
|
|
if ( graph.editorMode() === false ) { |
|
|
|
|
|
d3.select("#useAccuracyHelper").style("color", "#979797"); |
|
|
d3.select("#useAccuracyHelper").style("pointer-events", "none"); |
|
|
|
|
|
|
|
|
d3.select("#showDraggerObject").style("color", "#979797"); |
|
|
d3.select("#showDraggerObject").style("pointer-events", "none"); |
|
|
} else { |
|
|
|
|
|
d3.select("#useAccuracyHelper").style("color", "#2980b9"); |
|
|
d3.select("#useAccuracyHelper").style("pointer-events", "auto"); |
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
return debugMenu; |
|
|
}; |
|
|
|