daydreamer-json commited on
Commit
0cfe7b7
·
verified ·
1 Parent(s): 154bf42
Files changed (2) hide show
  1. index.html +51 -60
  2. script.js +48 -47
index.html CHANGED
@@ -10,9 +10,12 @@
10
  <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js"></script>
11
  <script src="https://cdn.jsdelivr.net/npm/moment@2/moment.min.js"></script>
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/js/bootstrap.bundle.min.js"></script>
 
13
  <!-- CSS load -->
14
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css">
15
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css">
 
 
16
  <link rel="preconnect" href="https://rsms.me">
17
  <link rel="stylesheet" href="https://rsms.me/inter/inter.css">
18
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/distr/fira_code.css">
@@ -97,11 +100,23 @@
97
  <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
98
  </div>
99
  <div class="modal-body">
100
- <h3>Download</h3>
101
  <table class="table table-sm table-responsive table-hover table-borderless align-middle">
102
  <tbody id="trackInfoModal-downloadTable">
103
  </tbody>
104
  </table>
 
 
 
 
 
 
 
 
 
 
 
 
105
  <h3>Metadata</h3>
106
  <h4>General</h4>
107
  <table class="table table-sm table-responsive table-hover table-borderless align-middle">
@@ -126,26 +141,6 @@
126
  <td>Arranger</td>
127
  <td id="trackInfoModal-metadataTable-arranger">---</td>
128
  </tr>
129
- <tr>
130
- <td>Track Title (Latin)</td>
131
- <td id="trackInfoModal-metadataTable-trackTitleLatin">---</td>
132
- </tr>
133
- <tr>
134
- <td>Artists (Latin)</td>
135
- <td id="trackInfoModal-metadataTable-artistsLatin">---</td>
136
- </tr>
137
- <tr>
138
- <td>Lyricist (Latin)</td>
139
- <td id="trackInfoModal-metadataTable-lyricistLatin">---</td>
140
- </tr>
141
- <tr>
142
- <td>Composer (Latin)</td>
143
- <td id="trackInfoModal-metadataTable-composerLatin">---</td>
144
- </tr>
145
- <tr>
146
- <td>Arranger (Latin)</td>
147
- <td id="trackInfoModal-metadataTable-arrangerLatin">---</td>
148
- </tr>
149
  <tr>
150
  <td>Track Duration (Readable)</td>
151
  <td id="trackInfoModal-metadataTable-trackDurationReadable">---</td>
@@ -170,14 +165,6 @@
170
  <td>Album Artist</td>
171
  <td id="trackInfoModal-metadataTable-albumArtist">---</td>
172
  </tr>
173
- <tr>
174
- <td>Album Title (Latin)</td>
175
- <td id="trackInfoModal-metadataTable-albumTitleLatin">---</td>
176
- </tr>
177
- <tr>
178
- <td>Album Artist (Latin)</td>
179
- <td id="trackInfoModal-metadataTable-albumArtistLatin">---</td>
180
- </tr>
181
  <tr>
182
  <td>Album Released</td>
183
  <td id="trackInfoModal-metadataTable-albumReleaseDate">YYYY/MM/DD</td>
@@ -200,15 +187,17 @@
200
  <h4>Cover Artwork Images</h4>
201
  <div class="mb-3" id="trackInfoModal-coverArtLinkDiv">
202
  </div>
203
- <h3>Debug Area</h3>
204
- <div class="accordion" id="trackInfoModal-DebugAcd">
205
- <div class="accordion-item">
206
- <h2 class="accordion-header">
207
- <button class="accordion-button collapsed user-select-none" type="button" data-bs-toggle="collapse" data-bs-target="#trackInfoModal-DebugAcdInCollapse">Parsed data output (album)</button>
208
- </h2>
209
- <div id="trackInfoModal-DebugAcdInCollapse" class="accordion-collapse collapse" data-bs-parent="#trackInfoModal-DebugAcd">
210
- <div class="accordion-body">
211
- <pre class=""><code id="trackInfoModal-DebugAcdOutputEl"></code></pre>
 
 
212
  </div>
213
  </div>
214
  </div>
@@ -221,34 +210,36 @@
221
  </div>
222
  </div>
223
  <hr class="my-4">
224
- <h3 class="user-select-none">Debug Area</h3>
225
- <button id="trackListingTestButton" class="btn btn-primary mb-3" type="button"><i class="bi bi-menu-button-wide me-1"></i>List track</button>
226
- <h4 class="user-select-none">Fetch data output testing</h3>
227
- <button id="loadDatabaseTestButton" class="btn btn-primary mb-3" type="button"><i class="bi bi-database-down me-1"></i>Load Database</button>
228
- <div class="fetchingDataNowLabel user-select-none d-none">
229
- <div class="d-inline-flex align-items-center mb-3">
230
- <div class="spinner-border text-primary me-2" role="status">
231
- <span class="visually-hidden">Loading...</span>
 
 
 
232
  </div>
233
- <span>Fetching data ...</span>
234
  </div>
235
- </div>
236
- <div class="accordion" id="databaseTestOutputAccordion">
237
- <div class="accordion-item">
238
- <h2 class="accordion-header">
239
- <button class="accordion-button collapsed user-select-none" type="button" data-bs-toggle="collapse" data-bs-target="#databaseTestRawOutputCollapse">
240
- Raw data output
241
- </button>
242
- </h2>
243
- <div id="databaseTestRawOutputCollapse" class="accordion-collapse collapse" data-bs-parent="#databaseTestOutputAccordion">
244
- <div class="accordion-body">
245
- <pre class=""><code id="databaseTestInfoCodeEl"></code></pre>
246
- <pre class=""><code id="databaseTestOutputCodeEl"></code></pre>
247
  </div>
248
  </div>
249
  </div>
 
250
  </div>
251
- <hr class="my-4">
252
  <iframe data-aa='2297053' src='//acceptable.a-ads.com/2297053' style='border:0px; padding:0; width:100%; height:100%; overflow:hidden; background-color: transparent;'></iframe>
253
  <footer>
254
  <p class="my-1"><small class="text-body-tertiary user-select-none">This page using: Bootstrap, Axios, CryptoJS, A-ADS, Inter, Fira Code, Noto Sans JP</small></p>
 
10
  <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js"></script>
11
  <script src="https://cdn.jsdelivr.net/npm/moment@2/moment.min.js"></script>
12
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/js/bootstrap.bundle.min.js"></script>
13
+ <script src="https://cdn.jsdelivr.net/npm/[email protected]/cdn/with-layouts/vidstack.js" type="module"></script>
14
  <!-- CSS load -->
15
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css">
16
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css">
17
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/player/styles/default/theme.min.css">
18
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/player/styles/default/layouts/audio.min.css">
19
  <link rel="preconnect" href="https://rsms.me">
20
  <link rel="stylesheet" href="https://rsms.me/inter/inter.css">
21
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/distr/fira_code.css">
 
100
  <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
101
  </div>
102
  <div class="modal-body">
103
+ <h3>Direct Download</h3>
104
  <table class="table table-sm table-responsive table-hover table-borderless align-middle">
105
  <tbody id="trackInfoModal-downloadTable">
106
  </tbody>
107
  </table>
108
+ <h3>Preview</h3>
109
+ <!-- <table class="table table-sm table-responsive table-hover table-borderless align-middle">
110
+ <tbody id="trackInfoModal-previewTable">
111
+ <tr>
112
+ <td>FLAC</td>
113
+ <td class="w-100">
114
+ <audio class="w-100 align-middle" controls controlslist="nodownload" src="https://hf.co/datasets/DeliberatorArchiver/discography_v2_cdn/resolve/main/media/018d269e-89c0-7371-b748-79730286a132/flac/018d2827-8ae1-7a2d-823e-2558c99d6eed.flac"></audio>
115
+ </td>
116
+ </tr>
117
+ </tbody>
118
+ </table> -->
119
+ <audio id="trackInfoModal-previewAudio" class="w-100 align-middle text-center mb-3" controls controlslist="nodownload" src=""></audio>
120
  <h3>Metadata</h3>
121
  <h4>General</h4>
122
  <table class="table table-sm table-responsive table-hover table-borderless align-middle">
 
141
  <td>Arranger</td>
142
  <td id="trackInfoModal-metadataTable-arranger">---</td>
143
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  <tr>
145
  <td>Track Duration (Readable)</td>
146
  <td id="trackInfoModal-metadataTable-trackDurationReadable">---</td>
 
165
  <td>Album Artist</td>
166
  <td id="trackInfoModal-metadataTable-albumArtist">---</td>
167
  </tr>
 
 
 
 
 
 
 
 
168
  <tr>
169
  <td>Album Released</td>
170
  <td id="trackInfoModal-metadataTable-albumReleaseDate">YYYY/MM/DD</td>
 
187
  <h4>Cover Artwork Images</h4>
188
  <div class="mb-3" id="trackInfoModal-coverArtLinkDiv">
189
  </div>
190
+ <div id="debugAreaSection" class="d-none">
191
+ <h3>Debug Area</h3>
192
+ <div class="accordion" id="trackInfoModal-DebugAcd">
193
+ <div class="accordion-item">
194
+ <h2 class="accordion-header">
195
+ <button class="accordion-button collapsed user-select-none" type="button" data-bs-toggle="collapse" data-bs-target="#trackInfoModal-DebugAcdInCollapse">Parsed data output (album)</button>
196
+ </h2>
197
+ <div id="trackInfoModal-DebugAcdInCollapse" class="accordion-collapse collapse" data-bs-parent="#trackInfoModal-DebugAcd">
198
+ <div class="accordion-body">
199
+ <pre class=""><code id="trackInfoModal-DebugAcdOutputEl"></code></pre>
200
+ </div>
201
  </div>
202
  </div>
203
  </div>
 
210
  </div>
211
  </div>
212
  <hr class="my-4">
213
+ <div id="debugAreaSection" class="d-none">
214
+ <h3 class="user-select-none">Debug Area</h3>
215
+ <button id="trackListingTestButton" class="btn btn-primary mb-3" type="button"><i class="bi bi-menu-button-wide me-1"></i>List track</button>
216
+ <h4 class="user-select-none">Fetch data output testing</h3>
217
+ <button id="loadDatabaseTestButton" class="btn btn-primary mb-3" type="button"><i class="bi bi-database-down me-1"></i>Load Database</button>
218
+ <div class="fetchingDataNowLabel user-select-none d-none">
219
+ <div class="d-inline-flex align-items-center mb-3">
220
+ <div class="spinner-border text-primary me-2" role="status">
221
+ <span class="visually-hidden">Loading...</span>
222
+ </div>
223
+ <span>Fetching data ...</span>
224
  </div>
 
225
  </div>
226
+ <div class="accordion" id="databaseTestOutputAccordion">
227
+ <div class="accordion-item">
228
+ <h2 class="accordion-header">
229
+ <button class="accordion-button collapsed user-select-none" type="button" data-bs-toggle="collapse" data-bs-target="#databaseTestRawOutputCollapse">
230
+ Raw data output
231
+ </button>
232
+ </h2>
233
+ <div id="databaseTestRawOutputCollapse" class="accordion-collapse collapse" data-bs-parent="#databaseTestOutputAccordion">
234
+ <div class="accordion-body">
235
+ <pre class=""><code id="databaseTestInfoCodeEl"></code></pre>
236
+ <pre class=""><code id="databaseTestOutputCodeEl"></code></pre>
237
+ </div>
238
  </div>
239
  </div>
240
  </div>
241
+ <hr class="my-4">
242
  </div>
 
243
  <iframe data-aa='2297053' src='//acceptable.a-ads.com/2297053' style='border:0px; padding:0; width:100%; height:100%; overflow:hidden; background-color: transparent;'></iframe>
244
  <footer>
245
  <p class="my-1"><small class="text-body-tertiary user-select-none">This page using: Bootstrap, Axios, CryptoJS, A-ADS, Inter, Fira Code, Noto Sans JP</small></p>
script.js CHANGED
@@ -29,9 +29,11 @@ window.addEventListener('load', async function(){
29
  } else {
30
  loadAppSettingsFromLocalStorage();
31
  if (window.matchMedia('(prefers-color-scheme:dark)').matches === true) {
32
- console.warn(`prefers-color-scheme:dark detected`)
33
- appSettingsSaveData.ui.uiThemeMode = 'dark';
34
- writeAppSettingsToLocalStorage();
 
 
35
  } else {
36
  appSettingsSaveData.ui.uiThemeMode = 'light';
37
  writeAppSettingsToLocalStorage();
@@ -112,74 +114,70 @@ function pushToTrackListGroupUi () {
112
 
113
  // ========== trackInfoModalの処理 ==========
114
 
 
115
  function loadTrackInfoModal (trackUuid) {
116
  const albumParsedObject = getParsedAlbumObjectFromAlbumUuid(getAlbumUuidFromTrackUuid(trackUuid));
117
  const trackParsedObject = albumParsedObject.tracks.find((obj) => obj.uuid === trackUuid);
118
- document.getElementById('trackInfoModal-metadataTable-trackTitleLatin').classList.add('text-body-tertiary');
119
- document.getElementById('trackInfoModal-metadataTable-artistsLatin').classList.add('text-body-tertiary');
120
- document.getElementById('trackInfoModal-metadataTable-lyricistLatin').classList.add('text-body-tertiary');
121
- document.getElementById('trackInfoModal-metadataTable-composerLatin').classList.add('text-body-tertiary');
122
- document.getElementById('trackInfoModal-metadataTable-arrangerLatin').classList.add('text-body-tertiary');
123
- document.getElementById('trackInfoModal-metadataTable-albumTitleLatin').classList.add('text-body-tertiary');
124
- document.getElementById('trackInfoModal-metadataTable-albumArtistLatin').classList.add('text-body-tertiary');
125
- document.getElementById('trackInfoModal-metadataTable-trackTitleLatin').previousElementSibling.classList.add('text-body-tertiary');
126
- document.getElementById('trackInfoModal-metadataTable-artistsLatin').previousElementSibling.classList.add('text-body-tertiary');
127
- document.getElementById('trackInfoModal-metadataTable-lyricistLatin').previousElementSibling.classList.add('text-body-tertiary');
128
- document.getElementById('trackInfoModal-metadataTable-composerLatin').previousElementSibling.classList.add('text-body-tertiary');
129
- document.getElementById('trackInfoModal-metadataTable-arrangerLatin').previousElementSibling.classList.add('text-body-tertiary');
130
- document.getElementById('trackInfoModal-metadataTable-albumTitleLatin').previousElementSibling.classList.add('text-body-tertiary');
131
- document.getElementById('trackInfoModal-metadataTable-albumArtistLatin').previousElementSibling.classList.add('text-body-tertiary');
132
  document.getElementById('trackInfoModal-metadataTable-trackTitle').innerHTML = trackParsedObject.title;
133
  if (trackParsedObject.titleLatin === null) {
134
- document.getElementById('trackInfoModal-metadataTable-trackTitleLatin').parentNode.classList.add('d-none');
 
135
  } else {
136
- document.getElementById('trackInfoModal-metadataTable-trackTitleLatin').parentNode.classList.remove('d-none');
137
- document.getElementById('trackInfoModal-metadataTable-trackTitleLatin').innerHTML = trackParsedObject.titleLatin;
138
  }
139
  document.getElementById('trackInfoModal-metadataTable-artists').innerHTML = trackParsedObject.artist.map((obj) => obj.name).join(', ');
140
- if (trackParsedObject.artist.some((obj) => obj.nameLatin === null)) {
141
- document.getElementById('trackInfoModal-metadataTable-artistsLatin').parentNode.classList.add('d-none');
 
142
  } else {
143
- document.getElementById('trackInfoModal-metadataTable-artistsLatin').parentNode.classList.remove('d-none');
144
- document.getElementById('trackInfoModal-metadataTable-artistsLatin').innerHTML = trackParsedObject.artist.map((obj) => obj.nameLatin).join(', ');
145
  }
146
  if (trackParsedObject.lyricist === null) {
147
  document.getElementById('trackInfoModal-metadataTable-lyricist').parentNode.classList.add('d-none');
148
- document.getElementById('trackInfoModal-metadataTable-lyricistLatin').parentNode.classList.add('d-none');
 
149
  } else {
150
  document.getElementById('trackInfoModal-metadataTable-lyricist').parentNode.classList.remove('d-none');
151
  document.getElementById('trackInfoModal-metadataTable-lyricist').innerHTML = trackParsedObject.lyricist.map((obj) => obj.name).join(', ');
152
- if (trackParsedObject.lyricist.some((obj) => obj.nameLatin === null)) {
153
- document.getElementById('trackInfoModal-metadataTable-lyricistLatin').parentNode.classList.add('d-none');
 
154
  } else {
155
- document.getElementById('trackInfoModal-metadataTable-lyricistLatin').parentNode.classList.remove('d-none');
156
- document.getElementById('trackInfoModal-metadataTable-lyricistLatin').innerHTML = trackParsedObject.lyricist.map((obj) => obj.nameLatin).join(', ');
157
  }
158
  }
159
  if (trackParsedObject.composer === null) {
160
  document.getElementById('trackInfoModal-metadataTable-composer').parentNode.classList.add('d-none');
161
- document.getElementById('trackInfoModal-metadataTable-composerLatin').parentNode.classList.add('d-none');
 
162
  } else {
163
  document.getElementById('trackInfoModal-metadataTable-composer').parentNode.classList.remove('d-none');
164
  document.getElementById('trackInfoModal-metadataTable-composer').innerHTML = trackParsedObject.composer.map((obj) => obj.name).join(', ');
165
- if (trackParsedObject.composer.some((obj) => obj.nameLatin === null)) {
166
- document.getElementById('trackInfoModal-metadataTable-composerLatin').parentNode.classList.add('d-none');
 
167
  } else {
168
- document.getElementById('trackInfoModal-metadataTable-composerLatin').parentNode.classList.remove('d-none');
169
- document.getElementById('trackInfoModal-metadataTable-composerLatin').innerHTML = trackParsedObject.composer.map((obj) => obj.nameLatin).join(', ');
170
  }
171
  }
172
  if (trackParsedObject.arranger === null) {
173
  document.getElementById('trackInfoModal-metadataTable-arranger').parentNode.classList.add('d-none');
174
- document.getElementById('trackInfoModal-metadataTable-arrangerLatin').parentNode.classList.add('d-none');
 
175
  } else {
176
  document.getElementById('trackInfoModal-metadataTable-arranger').parentNode.classList.remove('d-none');
177
  document.getElementById('trackInfoModal-metadataTable-arranger').innerHTML = trackParsedObject.arranger.map((obj) => obj.name).join(', ');
178
- if (trackParsedObject.arranger.some((obj) => obj.nameLatin === null)) {
179
- document.getElementById('trackInfoModal-metadataTable-arrangerLatin').parentNode.classList.add('d-none');
 
180
  } else {
181
- document.getElementById('trackInfoModal-metadataTable-arrangerLatin').parentNode.classList.remove('d-none');
182
- document.getElementById('trackInfoModal-metadataTable-arrangerLatin').innerHTML = trackParsedObject.arranger.map((obj) => obj.nameLatin).join(', ');
183
  }
184
  }
185
  document.getElementById('trackInfoModal-metadataTable-trackDurationReadable').innerHTML = msecToReadableTime(trackParsedObject.durationMsecs);
@@ -187,17 +185,19 @@ function loadTrackInfoModal (trackUuid) {
187
  document.getElementById('trackInfoModal-metadataTable-trackDurationSamples').innerHTML = `${trackParsedObject.durationSamples} samples`;
188
  document.getElementById('trackInfoModal-metadataTable-albumTitle').innerHTML = albumParsedObject.title;
189
  if (albumParsedObject.titleLatin === null) {
190
- document.getElementById('trackInfoModal-metadataTable-albumTitleLatin').parentNode.classList.add('d-none');
 
191
  } else {
192
- document.getElementById('trackInfoModal-metadataTable-albumTitleLatin').parentNode.classList.remove('d-none');
193
- document.getElementById('trackInfoModal-metadataTable-albumTitleLatin').innerHTML = albumParsedObject.titleLatin;
194
  }
195
  document.getElementById('trackInfoModal-metadataTable-albumArtist').innerHTML = albumParsedObject.artist.map((obj) => obj.name).join(', ');
196
- if (albumParsedObject.artist.some((obj) => obj.nameLatin === null)) {
197
- document.getElementById('trackInfoModal-metadataTable-albumArtistLatin').parentNode.classList.add('d-none');
 
198
  } else {
199
- document.getElementById('trackInfoModal-metadataTable-albumArtistLatin').parentNode.classList.remove('d-none');
200
- document.getElementById('trackInfoModal-metadataTable-albumArtistLatin').innerHTML = albumParsedObject.artist.map((obj) => obj.nameLatin).join(', ');
201
  }
202
  document.getElementById('trackInfoModal-metadataTable-albumReleaseDate').innerHTML = moment(albumParsedObject.releaseDate).format('YYYY/MM/DD');
203
  document.getElementById('trackInfoModal-metadataTable-albumBarcode').innerHTML = albumParsedObject.barCode;
@@ -309,8 +309,9 @@ function loadTrackInfoModal (trackUuid) {
309
  temp_dlTrEl.appendChild(temp_dlTdBtnEl);
310
  document.getElementById('trackInfoModal-downloadTable').appendChild(temp_dlTrEl);
311
  });
 
312
  const bootstrapTooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');
313
- const bootstrapTooltipList = [...bootstrapTooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl));
314
  document.getElementById('trackInfoModal-DebugAcdOutputEl').innerHTML = JSON.stringify(albumParsedObject, '', ' ');
315
  const trackInfoModal = new bootstrap.Modal(document.getElementById('trackInfoModal'));
316
  trackInfoModal.show();
 
29
  } else {
30
  loadAppSettingsFromLocalStorage();
31
  if (window.matchMedia('(prefers-color-scheme:dark)').matches === true) {
32
+ console.warn(`prefers-color-scheme:dark detected`);
33
+ if (appSettingsSaveData.ui.uiThemeMode !== 'dark') {
34
+ appSettingsSaveData.ui.uiThemeMode = 'dark';
35
+ writeAppSettingsToLocalStorage();
36
+ }
37
  } else {
38
  appSettingsSaveData.ui.uiThemeMode = 'light';
39
  writeAppSettingsToLocalStorage();
 
114
 
115
  // ========== trackInfoModalの処理 ==========
116
 
117
+ let bootstrapTooltipList = null;
118
  function loadTrackInfoModal (trackUuid) {
119
  const albumParsedObject = getParsedAlbumObjectFromAlbumUuid(getAlbumUuidFromTrackUuid(trackUuid));
120
  const trackParsedObject = albumParsedObject.tracks.find((obj) => obj.uuid === trackUuid);
121
+ if (bootstrapTooltipList !== null) {bootstrapTooltipList.forEach(el => el.dispose())}
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  document.getElementById('trackInfoModal-metadataTable-trackTitle').innerHTML = trackParsedObject.title;
123
  if (trackParsedObject.titleLatin === null) {
124
+ document.getElementById('trackInfoModal-metadataTable-trackTitle').removeAttribute('data-bs-toggle');
125
+ document.getElementById('trackInfoModal-metadataTable-trackTitle').removeAttribute('data-bs-title');
126
  } else {
127
+ document.getElementById('trackInfoModal-metadataTable-trackTitle').setAttribute('data-bs-toggle', 'tooltip');
128
+ document.getElementById('trackInfoModal-metadataTable-trackTitle').setAttribute('data-bs-title', trackParsedObject.titleLatin);
129
  }
130
  document.getElementById('trackInfoModal-metadataTable-artists').innerHTML = trackParsedObject.artist.map((obj) => obj.name).join(', ');
131
+ if (trackParsedObject.artist.some((obj) => obj.nameLatin !== null)) {
132
+ document.getElementById('trackInfoModal-metadataTable-artists').setAttribute('data-bs-toggle', 'tooltip');
133
+ document.getElementById('trackInfoModal-metadataTable-artists').setAttribute('data-bs-title', trackParsedObject.artist.map((obj) => {if (obj.nameLatin !== null) {return obj.nameLatin} else {return obj.name}}).join(', '));
134
  } else {
135
+ document.getElementById('trackInfoModal-metadataTable-artistsLatin').removeAttribute('data-bs-toggle');
136
+ document.getElementById('trackInfoModal-metadataTable-artistsLatin').removeAttribute('data-bs-title');
137
  }
138
  if (trackParsedObject.lyricist === null) {
139
  document.getElementById('trackInfoModal-metadataTable-lyricist').parentNode.classList.add('d-none');
140
+ document.getElementById('trackInfoModal-metadataTable-lyricist').removeAttribute('data-bs-toggle');
141
+ document.getElementById('trackInfoModal-metadataTable-lyricist').removeAttribute('data-bs-title');
142
  } else {
143
  document.getElementById('trackInfoModal-metadataTable-lyricist').parentNode.classList.remove('d-none');
144
  document.getElementById('trackInfoModal-metadataTable-lyricist').innerHTML = trackParsedObject.lyricist.map((obj) => obj.name).join(', ');
145
+ if (trackParsedObject.lyricist.some((obj) => obj.nameLatin !== null)) {
146
+ document.getElementById('trackInfoModal-metadataTable-lyricist').setAttribute('data-bs-toggle', 'tooltip');
147
+ document.getElementById('trackInfoModal-metadataTable-lyricist').setAttribute('data-bs-title', trackParsedObject.lyricist.map((obj) => {if (obj.nameLatin !== null) {return obj.nameLatin} else {return obj.name}}).join(', '));
148
  } else {
149
+ document.getElementById('trackInfoModal-metadataTable-lyricist').removeAttribute('data-bs-toggle');
150
+ document.getElementById('trackInfoModal-metadataTable-lyricist').removeAttribute('data-bs-title');
151
  }
152
  }
153
  if (trackParsedObject.composer === null) {
154
  document.getElementById('trackInfoModal-metadataTable-composer').parentNode.classList.add('d-none');
155
+ document.getElementById('trackInfoModal-metadataTable-composer').removeAttribute('data-bs-toggle');
156
+ document.getElementById('trackInfoModal-metadataTable-composer').removeAttribute('data-bs-title');
157
  } else {
158
  document.getElementById('trackInfoModal-metadataTable-composer').parentNode.classList.remove('d-none');
159
  document.getElementById('trackInfoModal-metadataTable-composer').innerHTML = trackParsedObject.composer.map((obj) => obj.name).join(', ');
160
+ if (trackParsedObject.composer.some((obj) => obj.nameLatin !== null)) {
161
+ document.getElementById('trackInfoModal-metadataTable-composer').setAttribute('data-bs-toggle', 'tooltip');
162
+ document.getElementById('trackInfoModal-metadataTable-composer').setAttribute('data-bs-title', trackParsedObject.composer.map((obj) => {if (obj.nameLatin !== null) {return obj.nameLatin} else {return obj.name}}).join(', '));
163
  } else {
164
+ document.getElementById('trackInfoModal-metadataTable-composer').removeAttribute('data-bs-toggle');
165
+ document.getElementById('trackInfoModal-metadataTable-composer').removeAttribute('data-bs-title');
166
  }
167
  }
168
  if (trackParsedObject.arranger === null) {
169
  document.getElementById('trackInfoModal-metadataTable-arranger').parentNode.classList.add('d-none');
170
+ document.getElementById('trackInfoModal-metadataTable-arranger').removeAttribute('data-bs-toggle');
171
+ document.getElementById('trackInfoModal-metadataTable-arranger').removeAttribute('data-bs-title');
172
  } else {
173
  document.getElementById('trackInfoModal-metadataTable-arranger').parentNode.classList.remove('d-none');
174
  document.getElementById('trackInfoModal-metadataTable-arranger').innerHTML = trackParsedObject.arranger.map((obj) => obj.name).join(', ');
175
+ if (trackParsedObject.arranger.some((obj) => obj.nameLatin !== null)) {
176
+ document.getElementById('trackInfoModal-metadataTable-arranger').setAttribute('data-bs-toggle', 'tooltip');
177
+ document.getElementById('trackInfoModal-metadataTable-arranger').setAttribute('data-bs-title', trackParsedObject.arranger.map((obj) => {if (obj.nameLatin !== null) {return obj.nameLatin} else {return obj.name}}).join(', '));
178
  } else {
179
+ document.getElementById('trackInfoModal-metadataTable-arranger').removeAttribute('data-bs-toggle');
180
+ document.getElementById('trackInfoModal-metadataTable-arranger').removeAttribute('data-bs-title');
181
  }
182
  }
183
  document.getElementById('trackInfoModal-metadataTable-trackDurationReadable').innerHTML = msecToReadableTime(trackParsedObject.durationMsecs);
 
185
  document.getElementById('trackInfoModal-metadataTable-trackDurationSamples').innerHTML = `${trackParsedObject.durationSamples} samples`;
186
  document.getElementById('trackInfoModal-metadataTable-albumTitle').innerHTML = albumParsedObject.title;
187
  if (albumParsedObject.titleLatin === null) {
188
+ document.getElementById('trackInfoModal-metadataTable-albumTitle').removeAttribute('data-bs-toggle');
189
+ document.getElementById('trackInfoModal-metadataTable-albumTitle').removeAttribute('data-bs-title');
190
  } else {
191
+ document.getElementById('trackInfoModal-metadataTable-albumTitle').setAttribute('data-bs-toggle', 'tooltip');
192
+ document.getElementById('trackInfoModal-metadataTable-albumTitle').setAttribute('data-bs-title', albumParsedObject.titleLatin);
193
  }
194
  document.getElementById('trackInfoModal-metadataTable-albumArtist').innerHTML = albumParsedObject.artist.map((obj) => obj.name).join(', ');
195
+ if (albumParsedObject.artist.some((obj) => obj.nameLatin !== null)) {
196
+ document.getElementById('trackInfoModal-metadataTable-albumArtist').setAttribute('data-bs-toggle', 'tooltip');
197
+ document.getElementById('trackInfoModal-metadataTable-albumArtist').setAttribute('data-bs-title', albumParsedObject.artist.map((obj) => {if (obj.nameLatin !== null) {return obj.nameLatin} else {return obj.name}}).join(', '));
198
  } else {
199
+ document.getElementById('trackInfoModal-metadataTable-albumArtist').removeAttribute('data-bs-toggle');
200
+ document.getElementById('trackInfoModal-metadataTable-albumArtist').removeAttribute('data-bs-title');
201
  }
202
  document.getElementById('trackInfoModal-metadataTable-albumReleaseDate').innerHTML = moment(albumParsedObject.releaseDate).format('YYYY/MM/DD');
203
  document.getElementById('trackInfoModal-metadataTable-albumBarcode').innerHTML = albumParsedObject.barCode;
 
309
  temp_dlTrEl.appendChild(temp_dlTdBtnEl);
310
  document.getElementById('trackInfoModal-downloadTable').appendChild(temp_dlTrEl);
311
  });
312
+ document.getElementById('trackInfoModal-previewAudio').src = `${apiDataConfig.response.config.decrypted.rawMediaUrlBase64}/media/${albumParsedObject.uuid}/${temp_codecListImported.slice(-1)[0].path}/${trackParsedObject.uuid}.${temp_codecListImported.slice(-1)[0].extension}`;
313
  const bootstrapTooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');
314
+ bootstrapTooltipList = [...bootstrapTooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl));
315
  document.getElementById('trackInfoModal-DebugAcdOutputEl').innerHTML = JSON.stringify(albumParsedObject, '', ' ');
316
  const trackInfoModal = new bootstrap.Modal(document.getElementById('trackInfoModal'));
317
  trackInfoModal.show();