/
content.js
112 lines (91 loc) · 3.09 KB
/
content.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
105
106
107
108
109
110
111
112
var busy = false;
function readingToHtml(reading) {
var div = $('<div class="accented_word"/>');
reading.map(({type, char}) => {
var sp = $('<span/>');
if (type!='') {
sp.addClass(type);
}
sp.text(char);
div.append(sp);
});
return div;
}
function add_pitch()
{
var d = $.Deferred();
var p = d.promise();
if (busy)
{
return;
}
busy = true;
var result = {};
var words = [];
$('#primary .concept_light-wrapper, article .concept_light-wrapper').each(function() {
if ($(this).parent().find('.ojad').length > 0) {
return;
}
var word = $(this).find('.concept_light-readings .text').text().trim();
words[words.length] = word;
p = p.then(function() {
var addAfter = $(this).parent().find('.meanings-wrapper').children().last();
if (!result.hasOwnProperty(word))
{
$('<div class="ojad meaning-tags">No pitch accent information</div>').insertAfter(addAfter);
return;
}
addAfter = $('<div class="ojad meaning-tags">Pitch accent</div>').insertAfter(addAfter);
for (var i in result[word])
{
var main = $('<div/>');
for (let reading of result[word][i].data[0])
{
main.append(readingToHtml(reading));
}
var obj;
addAfter = obj = $('<div class="ojad meaning-wrapper"></div>').append($('<div class="ojad-tooltip-hover"/>').html(main)).insertAfter(addAfter);
var table = $('<table/>');
for (var idx in result[word][i].header)
{
var tr = $('<tr/>');
var data = [ word ];
if (idx > 0)
{
data = result[word][i].data[idx-1];
}
if (data.length == 0)
{
continue;
}
tr.append($('<th/>').text(result[word][i].header[idx]))
td = $('<td/>');
for (let datum of data)
{
if (typeof(datum) == 'string') {
td.append($('<div/>').text(datum));
} else {
td.append(readingToHtml(datum));
}
}
tr.append(td)
table.append(tr);
}
obj.append($('<div class="ojad-tooltip"></div>').append(table));
}
}.bind(this));
});
p.then(function() { busy = false; });
chrome.runtime.sendMessage(null, {words: words}, function(obj) {
result = obj;
console.log(result);
d.resolve();
});
}
$(function() {
add_pitch();
var observer = new MutationObserver(function(mutations) {
add_pitch();
});
observer.observe($('body')[0], { subtree:true, childList: true });
});