xref: /aosp_15_r20/external/skia/tools/unicode_comparison/html/scripts.html (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker{{ define "scripts" }}
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard WorkercurrentId = '';
4*c8dee2aaSAndroid Build Coastguard WorkercurrentType = '';
5*c8dee2aaSAndroid Build Coastguard WorkercurrentChunk = '';
6*c8dee2aaSAndroid Build Coastguard Worker
7*c8dee2aaSAndroid Build Coastguard Workerfunction switchSign(element) {
8*c8dee2aaSAndroid Build Coastguard Worker  if (!element) return false;
9*c8dee2aaSAndroid Build Coastguard Worker  if (element.tagName !== "A") return false;
10*c8dee2aaSAndroid Build Coastguard Worker  if (!element.hasAttribute('href')) return false;
11*c8dee2aaSAndroid Build Coastguard Worker  if (element.innerHTML[0] == '+') {
12*c8dee2aaSAndroid Build Coastguard Worker      element.innerHTML = '-' + element.innerHTML.substring(1);
13*c8dee2aaSAndroid Build Coastguard Worker      return true;
14*c8dee2aaSAndroid Build Coastguard Worker  } else {
15*c8dee2aaSAndroid Build Coastguard Worker      element.innerHTML = '+' + element.innerHTML.substring(1);
16*c8dee2aaSAndroid Build Coastguard Worker      return true;
17*c8dee2aaSAndroid Build Coastguard Worker  }
18*c8dee2aaSAndroid Build Coastguard Worker}
19*c8dee2aaSAndroid Build Coastguard Worker
20*c8dee2aaSAndroid Build Coastguard Workerfunction recurse(id) {
21*c8dee2aaSAndroid Build Coastguard Worker  var children = document.getElementsByClassName(id);
22*c8dee2aaSAndroid Build Coastguard Worker  for (let i = 0; i < children.length; i++) {
23*c8dee2aaSAndroid Build Coastguard Worker    children[i].classList.toggle("open");
24*c8dee2aaSAndroid Build Coastguard Worker    if (switchSign(children[i])) {
25*c8dee2aaSAndroid Build Coastguard Worker      recursive(children[i].getAttribute('href').substring(1));
26*c8dee2aaSAndroid Build Coastguard Worker    }
27*c8dee2aaSAndroid Build Coastguard Worker  }
28*c8dee2aaSAndroid Build Coastguard Worker}
29*c8dee2aaSAndroid Build Coastguard Worker
30*c8dee2aaSAndroid Build Coastguard Workerdocument.getElementById("comparison").addEventListener("click", function (e) {
31*c8dee2aaSAndroid Build Coastguard Worker  if (!e) return;
32*c8dee2aaSAndroid Build Coastguard Worker  e.preventDefault();
33*c8dee2aaSAndroid Build Coastguard Worker  if (switchSign(e.target)) {
34*c8dee2aaSAndroid Build Coastguard Worker      recurse(e.target.getAttribute('href').substring(1));
35*c8dee2aaSAndroid Build Coastguard Worker  }
36*c8dee2aaSAndroid Build Coastguard Worker});
37*c8dee2aaSAndroid Build Coastguard Worker
38*c8dee2aaSAndroid Build Coastguard Workerfunction hideDiff() {
39*c8dee2aaSAndroid Build Coastguard Worker  if (currentId == '') {
40*c8dee2aaSAndroid Build Coastguard Worker    return;
41*c8dee2aaSAndroid Build Coastguard Worker  }
42*c8dee2aaSAndroid Build Coastguard Worker
43*c8dee2aaSAndroid Build Coastguard Worker  let spans = document.querySelectorAll(`#id_${currentId} > td > div > span.${currentType}`);
44*c8dee2aaSAndroid Build Coastguard Worker  [].forEach.call(spans, function(span) { span.classList.remove(`span_${currentType}`); });
45*c8dee2aaSAndroid Build Coastguard Worker
46*c8dee2aaSAndroid Build Coastguard Worker  let inactives = document.querySelectorAll(`#${currentType}_${currentChunk}${currentId}`);
47*c8dee2aaSAndroid Build Coastguard Worker  [].forEach.call(inactives, function(inactive) { inactive.classList.add('inactive'); });
48*c8dee2aaSAndroid Build Coastguard Worker
49*c8dee2aaSAndroid Build Coastguard Worker  let invisibles = document.querySelectorAll(`#id_${currentId} > td > div.${currentType}`);
50*c8dee2aaSAndroid Build Coastguard Worker  [].forEach.call(invisibles, function(invisible) { invisible.classList.add('invisible'); });
51*c8dee2aaSAndroid Build Coastguard Worker
52*c8dee2aaSAndroid Build Coastguard Worker  currentId = '';
53*c8dee2aaSAndroid Build Coastguard Worker  currentType = '';
54*c8dee2aaSAndroid Build Coastguard Worker  currentChunk = '';
55*c8dee2aaSAndroid Build Coastguard Worker}
56*c8dee2aaSAndroid Build Coastguard Worker
57*c8dee2aaSAndroid Build Coastguard Workerfunction showDiff(id, type, chunkType) {
58*c8dee2aaSAndroid Build Coastguard Worker  hideDiff();
59*c8dee2aaSAndroid Build Coastguard Worker
60*c8dee2aaSAndroid Build Coastguard Worker  let spans = document.querySelectorAll(`#id_${id} > td > div > span.${type}`);
61*c8dee2aaSAndroid Build Coastguard Worker  [].forEach.call(spans, function(span) { span.classList.add(`span_${type}`); });
62*c8dee2aaSAndroid Build Coastguard Worker
63*c8dee2aaSAndroid Build Coastguard Worker  let inactives = document.querySelectorAll(`#${type}_${chunkType}${id}`);
64*c8dee2aaSAndroid Build Coastguard Worker  [].forEach.call(inactives, function(inactive) { inactive.classList.remove('inactive'); });
65*c8dee2aaSAndroid Build Coastguard Worker
66*c8dee2aaSAndroid Build Coastguard Worker  let invisibles = document.querySelectorAll(`#id_${id} > td > div.${type}`);
67*c8dee2aaSAndroid Build Coastguard Worker  [].forEach.call(invisibles, function(invisible) { invisible.classList.remove('invisible'); });
68*c8dee2aaSAndroid Build Coastguard Worker
69*c8dee2aaSAndroid Build Coastguard Worker  currentId = id;
70*c8dee2aaSAndroid Build Coastguard Worker  currentType = type;
71*c8dee2aaSAndroid Build Coastguard Worker  currentChunk = chunkType;
72*c8dee2aaSAndroid Build Coastguard Worker}
73*c8dee2aaSAndroid Build Coastguard Worker
74*c8dee2aaSAndroid Build Coastguard Worker{{ end }}