Skip to content

Commit

Permalink
Chart viewer supports lean mode
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitry Voytsekhovskiy committed Apr 25, 2018
1 parent 19165e6 commit 7fd1e75
Show file tree
Hide file tree
Showing 4 changed files with 163 additions and 14 deletions.
7 changes: 5 additions & 2 deletions package.json
Expand Up @@ -5,9 +5,12 @@
"private": true,
"main": "Gruntfile.js",
"dependencies": {
"interactive-data-display": "~1.5.3",
"interactive-data-display": "^1.5.4",
"jquery": "~2.1.4",
"requirejs": "~2.1.22"
"require-css": "^0.1.10",
"requirejs": "~2.1.22",
"svg.js": "~2.3.6",
"rx": "~3.1.2"
},
"devDependencies": {
"grunt": "^0.4.5",
Expand Down
93 changes: 93 additions & 0 deletions src/Angara.ChartJS/samples/ChartViewer-Lean.html
@@ -0,0 +1,93 @@
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<!-- <link rel="stylesheet" href="../../../node_modules/interactive-data-display/dist/idd.css" />
<script src="../../../node_modules/jquery/dist/jquery.js"></script>
<script src="../../../node_modules/npm-modernizr/modernizr.js"></script>
<script src="../../../node_modules/rx/dist/rx.all.js"></script>
<script src="../../../node_modules/jqueryui/jquery-ui.js"></script>
<script src="../../../node_modules/interactive-data-display/dist/idd.js"></script>
<script src="../../../node_modules/jquery-mousewheel/jquery.mousewheel.js"></script>
<script src="../../../node_modules/datatables.net/js/jquery.dataTables.js"></script>
<link href="../../../dist/angara.tablejs.css" rel="stylesheet" />
<link href="../styles/samples.css" rel="stylesheet" />
<script src="../../../dist/Chart.js"></script> -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.js"></script>

<script type="text/javascript">
var source = {
"layout": "Lean",
"plots": [
{
"displayName": "Tu-tu-ruu",
"kind": "markers",
"properties": {
"borderColor": "black",
"color": "red",
"shape": "box",
"size": 10.0,
"x": [ 0, 0.1, 0.3, 0.5, 0.8, 1.0],
"y": [ 0.5, 0.6, 0.4, 0.1, 0.2, 0.8]
},
"titles": {
"x": "Xtutu",
"y": "YY"}
},
{
"displayName": "line",
"kind": "line",
"properties": {
"fill_68": "#1F497D",
"fill_95": "#1F497D",
"stroke": "#1F497D",
"thickness": 1.0,
"treatAs": "1",
"x": [ 0, 0.1, 0.3, 0.5, 0.8, 1.0],
"y": [ 0.5, 0.6, 0.4, 0.1, 0.2, 0.8]
},
"titles": {
"x": "XV",
"y": "YY"
}
}
],
"xAxis": {
"angle": 35.0,
"labels": [
"Alpha",
"bEtHaNy",
"F\nT"
],
"ticks:double array": [0, 0.5, 1.0]
},
"yAxis": {}
};

require.config({
baseUrl: "../../../dist",
paths: {
'jquery': '../node_modules/jquery/dist/jquery',
'idd.umd': '../node_modules/interactive-data-display/dist/idd.umd',
'idd-css': '../node_modules/interactive-data-display/dist/idd.umd',
'rx': '../node_modules/rx/dist/rx.lite',
'svg': '../node_modules/svg.js/dist/svg',
'filesaver': '../node_modules/file-saver/FileSaver',
'css': '../node_modules/require-css/css',
'jquery-ui': '../node_modules/jqueryui/jquery-ui',
'jquery-mousewheel': '../node_modules/jquery-mousewheel/jquery.mousewheel'
}
});
require(["../../../dist/Chart.js"], function(Viewer) {
Viewer.Show(source, $("#cv"));
});
</script>
</head>
<body>
<h2>Chart Viewer</h2>
<div id="cv" style="width:800px; height: 500px;"></div>
</body>
</html>
63 changes: 58 additions & 5 deletions src/Angara.ChartJS/scripts/Chart.js
@@ -1,14 +1,67 @@
define(["jquery", "idd.umd", "exports"], function ($, Charting, exports) {
exports.Show = function (plots, container) {
var plotMap = {};
for (var i = 0; i < plots.length; i++) {
var pi = plots[i];
exports.Show = function (chartInfo, container /*HTMLElement*/) {
var idd = Charting.InteractiveDataDisplay;

var plotMap = [];
for (var i = 0; i < chartInfo.plots.length; i++) {
var pi = chartInfo.plots[i];
var props = $.extend(true, {}, pi.properties);
props["kind"] = pi.kind;
props["displayName"] = pi.displayName;
props["titles"] = pi.titles;
plotMap[i] = props;
}
Charting.InteractiveDataDisplay.show(container, plotMap);

if(chartInfo["layout"] && chartInfo["layout"] === "Lean")
{
$(container).css("overflow", "hidden");
var navigationPanel = $("<div></div>").css("float", "right").width(65);
var chartElement = $("<div data-idd-plot='chart'></div>").css("float", "none").width("auto").css("overflow", "hidden");
$(container).append(navigationPanel); // the order of adding is important!
$(container).append(chartElement);
chartElement.height($(container).height());

var chart = idd.asPlot(chartElement);
var panel = new idd.NavigationPanel(chart, navigationPanel);

var viewState = new idd.PersistentViewState();
for (var i = 0; i < plotMap.length; i++) {
var p = plotMap[i];
var factory = idd.PlotRegistry[p.kind] ? idd.PlotRegistry[p.kind] : idd.PlotRegistry["fallback"];
factory.draw(factory.initialize(p, viewState, chart), p);
}

var titlesX = getTitles("x", plotMap), titlesY = getTitles("y", plotMap);
if (titlesX != "") {
var xAxisTitle = $(chart.addDiv('<div style="font-size: larger; text-align: center"></div>', "bottom"))
xAxisTitle.text(titlesX)
}
if (titlesY != "") {
var yAxisTitle =
$(chart.addDiv('<div class="idd-verticalTitle" style="font-size: larger;"></div>', "left"));
yAxisTitle.text(titlesY);
}
}
else
{
Charting.InteractiveDataDisplay.show(container, plotMap);
}
};

function getTitles(axis, plots){
var title = "";
var items = [];
for (var i = 0; i < plots.length; i++) {
var p = plots[i];
if(p["titles"] && p["titles"][axis]){
var x = p["titles"][axis];
if(items.indexOf(x) < 0){
items.push(x);
if(items.length > 1) title += ", ";
title += x;
}
}
}
return title;
}
});
14 changes: 7 additions & 7 deletions yarn.lock
Expand Up @@ -442,9 +442,9 @@ inherits@2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"

interactive-data-display@~1.5.3:
version "1.5.3"
resolved "https://registry.yarnpkg.com/interactive-data-display/-/interactive-data-display-1.5.3.tgz#0298f74312c5c67233c8e1ceadc11abd04575d59"
interactive-data-display@^1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/interactive-data-display/-/interactive-data-display-1.5.4.tgz#dcfba77da459f47a0521c90ece473ef9f0104e02"
dependencies:
file-saver "~1.3.3"
jasmine "~2.99.0"
Expand Down Expand Up @@ -705,7 +705,7 @@ request@<=2.81.0:
tunnel-agent "^0.6.0"
uuid "^3.0.0"

require-css@~0.1.8:
require-css@^0.1.10, require-css@~0.1.8:
version "0.1.10"
resolved "https://registry.yarnpkg.com/require-css/-/require-css-0.1.10.tgz#f1db8c6cfb2ad2a3a7409166cc6cf99b0d3f4502"

Expand All @@ -717,9 +717,9 @@ rimraf@~2.2.8:
version "2.2.8"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"

rx@~4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
rx@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx/-/rx-3.1.2.tgz#4fbd8d962cfa66972d71993c588ca7ebf48734a0"

safe-buffer@^5.0.1:
version "5.1.1"
Expand Down

0 comments on commit 7fd1e75

Please sign in to comment.