-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhillerplatt.js
162 lines (121 loc) · 4.77 KB
/
hillerplatt.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
// Shuffle function from https://stackoverflow.com/a/12646864
// Creative Commons BY-SA by Laurens Holst
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
// Audioaufnahmen abspielen
function playAudio(name, ordner) {
let audio
if(ordner === 'redewendungen') {
audio = new Audio('audio/redewendungen/' + name + '.flac');
} else {
audio = new Audio('audio/recorder/' + name + '.flac');
}
audio.play();
}
// Randomisierte Wortliste füllen
wortlisteRandom = wortliste.slice(0)
function zufallsworte() {
shuffleArray(wortlisteRandom)
const wortlisteRandomFragment = document.createDocumentFragment()
wortlisteRandom.slice(0, 9).forEach(function(wort) {
let prefix = ''
// Präfixe basiert auf Sprecherin
if(wort.plattdeutsch.localeCompare('n', 'de') < 0) {
// Helga Wittenfeld: "hw-", Worte A bis M
prefix = 'hw'
} else if (wort.plattdeutsch.localeCompare('n', 'de') > 0) {
// Annette Borchardt: "ab-", Worte N bis Z
prefix = 'ab'
}
// Artikel sind in den Daten separat. Wir sortieren nach Wort, zeigen aber mit Artikel an.
if(wort.artikel) {
wort.plattdeutschKomplett = wort.artikel + ' ' + wort.plattdeutsch
} else {
wort.plattdeutschKomplett = wort.plattdeutsch
}
let wortblock = document.createElement('li')
wortblock.classList.add('col-md-4')
let block = ''
// HTML zusammenbauen
// Fragezeichen sind in Dateinamen nicht erlaubt
block += '<button type="button" onclick="playAudio(\'' + prefix + '-' + wort.plattdeutschKomplett.replace('?', '') + '\')">'
block += '<h3>' + wort.plattdeutschKomplett + '</h3>'
block += '<p>' + wort.hochdeutsch + '</p>'
block += '</button>'
wortblock.innerHTML = block
wortlisteRandomFragment.appendChild(wortblock)
})
document.getElementById('wortliste-random').innerHTML = ''
document.getElementById('wortliste-random').appendChild(wortlisteRandomFragment)
}
zufallsworte()
// Wortliste füllen
const wortlisteFragment = document.createDocumentFragment()
wortliste.forEach(function(wort) {
let prefix = ''
// Präfixe basiert auf Sprecherin
if(wort.plattdeutsch.localeCompare('n', 'de') < 0) {
// Helga Wittenfeld: "hw-", Worte A bis M
prefix = 'hw'
} else if (wort.plattdeutsch.localeCompare('n', 'de') > 0) {
// Annette Borchardt: "ab-", Worte N bis Z
prefix = 'ab'
}
// Artikel sind in den Daten separat. Wir sortieren nach Wort, zeigen aber mit Artikel an.
if(wort.artikel) {
wort.plattdeutschKomplett = wort.artikel + ' ' + wort.plattdeutsch
} else {
wort.plattdeutschKomplett = wort.plattdeutsch
}
let wortblock = document.createElement('li')
wortblock.classList.add('col-md-4')
let block = ''
// HTML zusammenbauen
// Fragezeichen sind in Dateinamen nicht erlaubt
block += '<button type="button" onclick="playAudio(\'' + prefix + '-' + wort.plattdeutschKomplett.replace('?', '') + '\')">'
block += '<h3>' + wort.plattdeutschKomplett + '</h3>'
block += '<p>' + wort.hochdeutsch + '</p>'
block += '</button>'
wortblock.innerHTML = block
wortlisteFragment.appendChild(wortblock)
})
document.getElementById('wortliste').appendChild(wortlisteFragment)
// Suchfunktion
document.querySelector('#search').addEventListener('keyup', function() {
var value = this.value.toLowerCase()
// Erst alle Wörter verstecken
document.querySelectorAll('#wortliste li').forEach(el => el.style.setProperty('display', 'none', 'important'))
// Auf Basis der Suche die Wörter zeigen
Array.from(document.querySelectorAll('#wortliste li'))
.filter(el => el.textContent.toLowerCase().match(value))
.forEach(el => el.style.display = null)
// Suchmeldung anfangs verstecken
document.querySelector('#search-error').style.visibility = 'hidden'
// Keine Suchergebnisse (leere Liste) → Suchmeldung anzeigen
if(document.querySelector('#wortliste').offsetHeight === 0) {
document.querySelector('.search-item').textContent = value
document.querySelector('#search-error').style.visibility = 'visible'
}
})
// Redewendungen füllen
const redewendungenFragment = document.createDocumentFragment()
redewendungen.forEach(function(wort) {
let wortblock = document.createElement('li')
wortblock.classList.add('col-md-4')
let block = ''
let prefix = ''
// Aktuell keine Präfixe, alles Marie Wiese
// HTML zusammenbauen
// Fragezeichen sind in Dateinamen nicht erlaubt
block += '<button type="button" onclick="playAudio(\'' + wort.plattdeutsch.replace('?', '') + '\', \'redewendungen\')">'
block += '<h3>' + wort.plattdeutsch + '</h3>'
block += '<p>' + wort.hochdeutsch + '</p>'
block += '</button>'
wortblock.innerHTML = block
redewendungenFragment.appendChild(wortblock)
})
document.getElementById('wortliste-redewendungen').appendChild(redewendungenFragment)