-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
Copy pathviewer.js
104 lines (86 loc) · 3.25 KB
/
viewer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var fs = require('fs');
var path = require('path');
var d3Json = require('../../test/strict_d3').json;
var $plotlist = document.getElementById('plot-list');
var $toggles = document.getElementById('plot-toggles');
var $images = document.getElementById('plot-images');
var $mock = document.getElementById('plot-mock');
var $toggleBaseline = document.createElement('button');
var $toggleTest = document.createElement('button');
var $toggleDiff = document.createElement('button');
var $imgBaseline = document.createElement('img');
var $imgTest = document.createElement('img');
var $imgDiff = document.createElement('img');
$toggles.style.display = 'none';
$images.style.display = 'none';
setupToggle($toggleBaseline, $imgBaseline, 'Baseline');
setupToggle($toggleTest, $imgTest, 'Test');
setupToggle($toggleDiff, $imgDiff, 'Diff');
var pathToRoot = path.join(__dirname, '../../');
var pathToImageTest = path.join(pathToRoot, 'test/image');
var pathToBuild = path.join(pathToRoot, 'build/');
var dirMocks = path.join(pathToImageTest, 'mocks/');
var dirBaseline = path.join(pathToImageTest, 'baselines/');
var dirTest = path.join(pathToBuild, 'test_images/');
var dirDiff = path.join(pathToBuild, 'test_images_diff/');
// N.B. brfs only understand hard-coded paths
var imageNames = fs.readFileSync(
__dirname + '/../../build/list_of_incorrect_images.txt',
'utf8'
)
.split('\n')
.filter(function(x) { return x; })
.map(function(x) {
return x.split('diff-')[1].split('.png')[0];
});
imageNames.forEach(function(imageName) {
$plotlist.appendChild(createButton(imageName));
});
function createButton(imageName) {
var button = document.createElement('button');
button.style.cssFloat = 'left';
button.style.height = '40px';
button.innerHTML = imageName;
button.style.padding = '0.5em';
button.style.border = '0';
button.style.margin = '1px';
button.style.cursor = 'pointer';
button.addEventListener('click', function() {
d3Json(dirMocks + imageName + '.json', function(err, mock) {
$toggles.style.display = 'block';
$images.style.display = 'block';
$imgBaseline.src = dirBaseline + imageName + '.png';
$imgTest.src = dirTest + imageName + '.png';
$imgDiff.src = dirDiff + 'diff-' + imageName + '.png';
$mock.innerHTML = JSON.stringify(mock, null, 2);
});
});
return button;
}
function setupToggle(toggle, img, title) {
img.title = title;
toggle.innerHTML = title;
toggle.style.padding = '0.5em';
toggle.style.border = '0';
toggle.style.margin = '1px';
toggle.style.cursor = 'pointer';
checkToggle(toggle, img);
toggle.addEventListener('click', function() {
if(toggle.value === 'checked') uncheckToggle(toggle, img);
else checkToggle(toggle, img);
});
$toggles.appendChild(toggle);
$images.appendChild(img);
}
function checkToggle(toggle, img) {
toggle.value = 'checked';
toggle.style.color = '#4c4c4c';
toggle.style.backgroundColor = '#f2f1f0';
img.style.display = 'inline';
}
function uncheckToggle(toggle, img) {
toggle.value = 'unchecked';
toggle.style.color = '#f2f1f0';
toggle.style.backgroundColor = '#4c4c4c';
img.style.display = 'none';
}