Skip to content

Commit b5331e3

Browse files
committed
Merge pull request #414 from n-riesco/image-viewer
devtools: Show diff image first
2 parents 96887ac + 3b315cb commit b5331e3

File tree

2 files changed

+57
-21
lines changed

2 files changed

+57
-21
lines changed

devtools/image_viewer/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
</head>
44
<body>
55
<div id="plot-list" style="overflow:auto; height:100px;"></div>
6+
<div id="plot-toggles"></div>
67
<div id="plot-images"></div>
7-
<div id="plot-mock"></div>
8+
<pre id="plot-mock"></pre>
89

910
<script type="text/javascript" src="../../build/image_viewer-bundle.js"></script>
1011
</body>

devtools/image_viewer/viewer.js

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,22 @@ var path = require('path');
44
var d3 = require('d3');
55

66
var $plotlist = document.getElementById('plot-list'),
7+
$toggles = document.getElementById('plot-toggles'),
78
$images = document.getElementById('plot-images'),
8-
$mock = document.getElementById('plot-mock');
9+
$mock = document.getElementById('plot-mock'),
10+
$toggleBaseline = document.createElement('button'),
11+
$toggleTest = document.createElement('button'),
12+
$toggleDiff = document.createElement('button'),
13+
$imgBaseline = document.createElement('img'),
14+
$imgTest = document.createElement('img'),
15+
$imgDiff = document.createElement('img');
16+
17+
$toggles.style.display = 'none';
18+
$images.style.display = 'none';
19+
20+
setupToggle($toggleBaseline, $imgBaseline, 'Baseline');
21+
setupToggle($toggleTest, $imgTest, 'Test');
22+
setupToggle($toggleDiff, $imgDiff, 'Diff');
923

1024
var pathToRoot = path.join(__dirname, '../../'),
1125
pathToImageTest = path.join(pathToRoot, 'test/image'),
@@ -33,37 +47,58 @@ imageNames.forEach(function(imageName) {
3347
function createButton(imageName) {
3448
var button = document.createElement('button');
3549
button.style.cssFloat = 'left';
36-
button.style.width = '100px';
3750
button.style.height = '40px';
3851
button.innerHTML = imageName;
52+
button.style.padding = '0.5em';
53+
button.style.border = '0';
54+
button.style.margin = '1px';
55+
button.style.cursor = 'pointer';
3956

4057
button.addEventListener('click', function() {
41-
var imgBaseline = createImg(dirBaseline, imageName),
42-
imgTest = createImg(dirTest, imageName),
43-
imgDiff = createImg(dirDiff, 'diff-' + imageName);
44-
4558
d3.json(dirMocks + imageName + '.json', function(err, mock) {
46-
$images.innerHTML = '';
47-
$images.appendChild(imgBaseline);
48-
$images.appendChild(imgTest);
49-
$images.appendChild(imgDiff);
59+
$toggles.style.display = 'block';
5060

51-
$mock.innerHTML = '';
52-
$mock.appendChild(createJSONview(mock));
61+
$images.style.display = 'block';
62+
$imgBaseline.src = dirBaseline + imageName + '.png';
63+
$imgTest.src = dirTest + imageName + '.png';
64+
$imgDiff.src = dirDiff + 'diff-' + imageName + '.png';
65+
66+
$mock.innerHTML = JSON.stringify(mock, null, 2);
5367
});
5468
});
5569

5670
return button;
5771
}
5872

59-
function createImg(dir, name) {
60-
var img = new Image();
61-
img.src = dir + name + '.png';
62-
return img;
73+
function setupToggle(toggle, img, title) {
74+
img.title = title;
75+
toggle.innerHTML = title;
76+
toggle.style.padding = '0.5em';
77+
toggle.style.border = '0';
78+
toggle.style.margin = '1px';
79+
toggle.style.cursor = 'pointer';
80+
81+
checkToggle(toggle, img);
82+
83+
toggle.addEventListener('click', function() {
84+
if(toggle.value === 'checked') uncheckToggle(toggle, img);
85+
else checkToggle(toggle, img);
86+
});
87+
88+
$toggles.appendChild(toggle);
89+
$images.appendChild(img);
90+
}
91+
92+
function checkToggle(toggle, img) {
93+
toggle.value = 'checked';
94+
toggle.style.color = '#4c4c4c';
95+
toggle.style.backgroundColor = '#f2f1f0';
96+
img.style.display = 'inline';
6397
}
6498

65-
function createJSONview(mock) {
66-
var jsonView = document.createElement('pre');
67-
jsonView.innerHTML = JSON.stringify(mock, null, 2);
68-
return jsonView;
99+
function uncheckToggle(toggle, img) {
100+
toggle.value = 'unchecked';
101+
toggle.style.color = '#f2f1f0';
102+
toggle.style.backgroundColor = '#4c4c4c';
103+
img.style.display = 'none';
69104
}

0 commit comments

Comments
 (0)