-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlist.js
More file actions
87 lines (79 loc) · 2.58 KB
/
Copy pathlist.js
File metadata and controls
87 lines (79 loc) · 2.58 KB
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
const AVAILABLE_LANG = ['hiragana', 'chinese', 'english', 'korean', 'portuguese', 'spanish', 'vietnamese'];
(() => {
const search = document.getElementById('search')
search.addEventListener('input', () => {
const key = search.value
for (let i = 0; i < table.children.length; i++) {
const child = table.children[i]
const dataKey = child.getAttribute('data-key')
if (!dataKey) continue
if (dataKey.includes(key)) {
child.className = ''
} else {
child.className = 'hidden'
}
}
})
const loadLanguages = (lng) => {
return axios.get(`languages/${lng}.json`)
.then(res => {
return {data: res.data, lng}
})
}
const createDataList = (value) => {
const option = document.createElement('option')
option.value = value
option.textContent = value
return option
}
const getJapaneseColumns = (langFile) => {
return langFile.map(lngObj => lngObj.name_ja)
}
const createLanguageRow = (key, languageFiles) => {
const tr = document.createElement('tr')
let keys = key
const td = document.createElement('td')
td.textContent = key
tr.appendChild(td)
languageFiles.map(file => {
const translate = file.find(f => f.name_ja === key)
const td = document.createElement('td')
td.textContent = translate.name
keys = keys + `,${translate.name}`
tr.appendChild(td)
})
tr.setAttribute('data-key', keys.toLowerCase())
return tr
}
const createLanguageHeader = (languageFile) => {
const tr = document.createElement('tr')
const jaTh = document.createElement('th')
jaTh.textContent = '日本語'
tr.appendChild(jaTh)
languageFile.forEach(l => {
const th = document.createElement('th')
th.textContent = l.lng
tr.appendChild(th)
})
return tr
}
const dataList = document.getElementById('data')
const table = document.getElementById('tbody')
const thead = document.getElementById('thead')
Promise.all(AVAILABLE_LANG.map(loadLanguages))
.then(languages => {
const hiragana = languages.find(l => l.lng === 'hiragana')
languages = languages.filter(l => l.lng !== 'hiragana')
hiragana.lng = 'ひらがな'
languages.unshift(hiragana)
const header = createLanguageHeader(languages)
thead.appendChild(header)
const ja = getJapaneseColumns(languages[0].data)
ja.map(key => {
const option = createDataList(key)
const row = createLanguageRow(key, languages.map(l => l.data))
table.appendChild(row)
// dataList.appendChild(option)
})
})
})()