mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
commit
e7b4a80941
12 changed files with 76 additions and 24 deletions
|
@ -158,11 +158,22 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage
|
||||||
*/
|
*/
|
||||||
function getScrollableParent(element, vertical) {
|
function getScrollableParent(element, vertical) {
|
||||||
if (element) {
|
if (element) {
|
||||||
|
var nameScroll = "scrollWidth";
|
||||||
|
var nameClient = "clientWidth";
|
||||||
|
var nameClass = "scrollX";
|
||||||
|
|
||||||
|
if (vertical) {
|
||||||
|
nameScroll = "scrollHeight";
|
||||||
|
nameClient = "clientHeight";
|
||||||
|
nameClass = "scrollY";
|
||||||
|
}
|
||||||
|
|
||||||
var parent = element.parentElement;
|
var parent = element.parentElement;
|
||||||
|
|
||||||
while (parent) {
|
while (parent) {
|
||||||
if ((!vertical && parent.scrollWidth > parent.clientWidth && parent.classList.contains("scrollX")) ||
|
// Skip 'emby-scroller' because it scrolls by itself
|
||||||
(vertical && parent.scrollHeight > parent.clientHeight && parent.classList.contains("scrollY"))) {
|
if (!parent.classList.contains("emby-scroller") &&
|
||||||
|
parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) {
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
<div class="dashboardSections" style="padding-top:.5em;">
|
<div class="dashboardSections" style="padding-top:.5em;">
|
||||||
<div class="dashboardColumn dashboardColumn-2-60 dashboardColumn-3-46">
|
<div class="dashboardColumn dashboardColumn-2-60 dashboardColumn-3-46">
|
||||||
<div class="dashboardSection" style="padding-left: 0;">
|
<div class="dashboardSection">
|
||||||
<a is="emby-linkbutton" href="dashboardgeneral.html" class="button-flat sectionTitleTextButton">
|
<a is="emby-linkbutton" href="dashboardgeneral.html" class="button-flat sectionTitleTextButton">
|
||||||
<h3>${TabServer}</h3>
|
<h3>${TabServer}</h3>
|
||||||
<i class="material-icons">chevron_right</i>
|
<i class="material-icons">chevron_right</i>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="dashboardSection" style="padding-left: 0;">
|
<div class="dashboardSection">
|
||||||
<a is="emby-linkbutton" href="devices.html" class="button-flat sectionTitleTextButton">
|
<a is="emby-linkbutton" href="devices.html" class="button-flat sectionTitleTextButton">
|
||||||
<h3>${HeaderActiveDevices}</h3>
|
<h3>${HeaderActiveDevices}</h3>
|
||||||
<i class="material-icons">chevron_right</i>
|
<i class="material-icons">chevron_right</i>
|
||||||
|
|
|
@ -254,24 +254,40 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli
|
||||||
cancelable: false
|
cancelable: false
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Reset dragging (from 'input' event) so that real dragging can be detected
|
// Prevent 'pointermove' and 'click' after 'touch*'
|
||||||
var range = this;
|
// FIXME: Still have some 'pointermove' and 'click' that bypass 'touchstart'
|
||||||
setTimeout(function () {
|
e.preventDefault();
|
||||||
range.dragging = false;
|
}, {
|
||||||
}, 0);
|
capture: true
|
||||||
|
});
|
||||||
|
|
||||||
|
dom.addEventListener(this, 'touchmove', function (e) {
|
||||||
|
if (!this.touched || e.targetTouches.length !== 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var fraction = mapClientToFraction(this, e.targetTouches[0].clientX);
|
||||||
|
this.value = mapFractionToValue(this, fraction);
|
||||||
|
|
||||||
|
this.dispatchEvent(new Event('input', {
|
||||||
|
bubbles: true,
|
||||||
|
cancelable: false
|
||||||
|
}));
|
||||||
}, {
|
}, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
|
|
||||||
dom.addEventListener(this, 'touchend', function (e) {
|
dom.addEventListener(this, 'touchend', function (e) {
|
||||||
if (!this.dragging) {
|
var range = this;
|
||||||
this.dispatchEvent(new Event('change', {
|
|
||||||
|
setTimeout(function () {
|
||||||
|
range.touched = false;
|
||||||
|
|
||||||
|
range.dispatchEvent(new Event('change', {
|
||||||
bubbles: true,
|
bubbles: true,
|
||||||
cancelable: false
|
cancelable: false
|
||||||
}));
|
}));
|
||||||
}
|
}, 0);
|
||||||
|
|
||||||
this.touched = false;
|
|
||||||
}, {
|
}, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
<option value="vaapi">Video Acceleration API (VAAPI)</option>
|
<option value="vaapi">Video Acceleration API (VAAPI)</option>
|
||||||
<option value="h264_v4l2m2m">Exynos V4L2 MFC</option>
|
<option value="h264_v4l2m2m">Exynos V4L2 MFC</option>
|
||||||
</select>
|
</select>
|
||||||
<div class="fieldDescription">${LabelHardwareAccelerationTypeHelp}</div>
|
<div class="fieldDescription">
|
||||||
|
<a is="emby-linkbutton" class="button-link" href="https://docs.jellyfin.org/general/administration/hardware-acceleration.html" target="_blank">${LabelHardwareAccelerationTypeHelp}</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="inputContainer hide fldVaapiDevice">
|
<div class="inputContainer hide fldVaapiDevice">
|
||||||
|
|
|
@ -1487,5 +1487,6 @@
|
||||||
"EnableFastImageFadeIn": "Schnelle Bildeinblendung",
|
"EnableFastImageFadeIn": "Schnelle Bildeinblendung",
|
||||||
"LabelPlayerDimensions": "Playerabmessungen:",
|
"LabelPlayerDimensions": "Playerabmessungen:",
|
||||||
"LabelDroppedFrames": "Verlorene Frames:",
|
"LabelDroppedFrames": "Verlorene Frames:",
|
||||||
"LabelCorruptedFrames": "Fehlerhafte Frames:"
|
"LabelCorruptedFrames": "Fehlerhafte Frames:",
|
||||||
|
"OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1465,5 +1465,13 @@
|
||||||
"OptionRandom": "Random",
|
"OptionRandom": "Random",
|
||||||
"SelectAdminUsername": "Please select a username for the admin account.",
|
"SelectAdminUsername": "Please select a username for the admin account.",
|
||||||
"ButtonSplit": "Split",
|
"ButtonSplit": "Split",
|
||||||
"HeaderNavigation": "Navigation"
|
"HeaderNavigation": "Navigation",
|
||||||
|
"OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)",
|
||||||
|
"MessageConfirmAppExit": "Do you want to exit?",
|
||||||
|
"LabelVideoResolution": "Video resolution:",
|
||||||
|
"LabelStreamType": "Stream type:",
|
||||||
|
"LabelPlayerDimensions": "Player dimensions:",
|
||||||
|
"LabelDroppedFrames": "Dropped frames:",
|
||||||
|
"LabelCorruptedFrames": "Corrupted frames:",
|
||||||
|
"CopyStreamURLError": "There was an error copying the URL."
|
||||||
}
|
}
|
||||||
|
|
|
@ -655,7 +655,7 @@
|
||||||
"LabelH264Crf": "H264 encoding CRF:",
|
"LabelH264Crf": "H264 encoding CRF:",
|
||||||
"LabelEncoderPreset": "H264 and H265 encoding preset:",
|
"LabelEncoderPreset": "H264 and H265 encoding preset:",
|
||||||
"LabelHardwareAccelerationType": "Hardware acceleration:",
|
"LabelHardwareAccelerationType": "Hardware acceleration:",
|
||||||
"LabelHardwareAccelerationTypeHelp": "This is an experimental feature only available on supported systems.",
|
"LabelHardwareAccelerationTypeHelp": "Hardware acceleration requires additional configuration.",
|
||||||
"LabelHomeNetworkQuality": "Home network quality:",
|
"LabelHomeNetworkQuality": "Home network quality:",
|
||||||
"LabelHomeScreenSectionValue": "Home screen section {0}:",
|
"LabelHomeScreenSectionValue": "Home screen section {0}:",
|
||||||
"LabelHttpsPort": "Local HTTPS port number:",
|
"LabelHttpsPort": "Local HTTPS port number:",
|
||||||
|
|
1
src/strings/es_DO.json
Normal file
1
src/strings/es_DO.json
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{}
|
|
@ -916,7 +916,7 @@
|
||||||
"MetadataSettingChangeHelp": "Les modifications des paramètres des métadonnées auront une incidence sur le nouveau contenu ajouté. Pour actualiser le contenu existant, ouvrez l'écran des détails et cliquez sur le bouton Actualiser, ou effectuez des actualisations en masse en utilisant le gestionnaire de métadonnées.",
|
"MetadataSettingChangeHelp": "Les modifications des paramètres des métadonnées auront une incidence sur le nouveau contenu ajouté. Pour actualiser le contenu existant, ouvrez l'écran des détails et cliquez sur le bouton Actualiser, ou effectuez des actualisations en masse en utilisant le gestionnaire de métadonnées.",
|
||||||
"MinutesAfter": "minutes après",
|
"MinutesAfter": "minutes après",
|
||||||
"MinutesBefore": "minutes avant",
|
"MinutesBefore": "minutes avant",
|
||||||
"Mobile": "Mobile",
|
"Mobile": "Pour appareil Mobile",
|
||||||
"Monday": "Lundi",
|
"Monday": "Lundi",
|
||||||
"MoreFromValue": "Plus de {0}",
|
"MoreFromValue": "Plus de {0}",
|
||||||
"MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront être ajoutés ultérieurement à partir du tableau de bord.",
|
"MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront être ajoutés ultérieurement à partir du tableau de bord.",
|
||||||
|
@ -1455,5 +1455,15 @@
|
||||||
"OptionRandom": "Aléatoire",
|
"OptionRandom": "Aléatoire",
|
||||||
"ButtonSplit": "Séparer",
|
"ButtonSplit": "Séparer",
|
||||||
"SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.",
|
"SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.",
|
||||||
"HeaderNavigation": "Navigation"
|
"HeaderNavigation": "Navigation",
|
||||||
|
"OptionForceRemoteSourceTranscoding": "Transcodafe forcé pour source de media à distance (comme Télé)",
|
||||||
|
"MessageConfirmAppExit": "Sortir?",
|
||||||
|
"LabelVideoResolution": "Résolution vidéo",
|
||||||
|
"LabelStreamType": "Type de flux",
|
||||||
|
"EnableFastImageFadeInHelp": "Activer un transition plus rapide pour images téléchargées",
|
||||||
|
"EnableFastImageFadeIn": "Transition d'image rapide",
|
||||||
|
"LabelPlayerDimensions": "Dimension du lecteur",
|
||||||
|
"LabelDroppedFrames": "Cadre informatique oublié",
|
||||||
|
"LabelCorruptedFrames": "Cadre informatique corrompu",
|
||||||
|
"CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL."
|
||||||
}
|
}
|
||||||
|
|
|
@ -434,7 +434,7 @@
|
||||||
"LabelCustomCssHelp": "Bruk tilpasset CSS-kode for å endre stil på web-grensesnittet.",
|
"LabelCustomCssHelp": "Bruk tilpasset CSS-kode for å endre stil på web-grensesnittet.",
|
||||||
"LabelCustomDeviceDisplayName": "Visningsnavn:",
|
"LabelCustomDeviceDisplayName": "Visningsnavn:",
|
||||||
"LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.",
|
"LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.",
|
||||||
"LabelCustomRating": "Egen anmeldelse:",
|
"LabelCustomRating": "Egen aldersgrense:",
|
||||||
"LabelDateAdded": "Dato lagt til:",
|
"LabelDateAdded": "Dato lagt til:",
|
||||||
"LabelDateAddedBehavior": "Hvordan bestemme \"Dato lagt til\" for nytt innhold:",
|
"LabelDateAddedBehavior": "Hvordan bestemme \"Dato lagt til\" for nytt innhold:",
|
||||||
"LabelDateAddedBehaviorHelp": "Hvis en metadataverdi finnes, vil den alltid bli brukt fremfor noen av disse valgene.",
|
"LabelDateAddedBehaviorHelp": "Hvis en metadataverdi finnes, vil den alltid bli brukt fremfor noen av disse valgene.",
|
||||||
|
@ -1463,5 +1463,6 @@
|
||||||
"LabelPlayerDimensions": "Dimensjoner på avspiller:",
|
"LabelPlayerDimensions": "Dimensjoner på avspiller:",
|
||||||
"LabelCorruptedFrames": "Korrupte bilder:",
|
"LabelCorruptedFrames": "Korrupte bilder:",
|
||||||
"LabelStreamType": "Type strøm:",
|
"LabelStreamType": "Type strøm:",
|
||||||
"LabelDroppedFrames": "Fortapte bilder:"
|
"LabelDroppedFrames": "Fortapte bilder:",
|
||||||
|
"OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1462,5 +1462,6 @@
|
||||||
"LabelStreamType": "Tipul streamului:",
|
"LabelStreamType": "Tipul streamului:",
|
||||||
"LabelPlayerDimensions": "Dimensiunile soft redare:",
|
"LabelPlayerDimensions": "Dimensiunile soft redare:",
|
||||||
"LabelDroppedFrames": "Cadre abandonate:",
|
"LabelDroppedFrames": "Cadre abandonate:",
|
||||||
"LabelCorruptedFrames": "Cadre corupte:"
|
"LabelCorruptedFrames": "Cadre corupte:",
|
||||||
|
"OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1464,5 +1464,6 @@
|
||||||
"LabelPlayerDimensions": "Rozmery prehrávača:",
|
"LabelPlayerDimensions": "Rozmery prehrávača:",
|
||||||
"LabelDroppedFrames": "Vynechané snímky:",
|
"LabelDroppedFrames": "Vynechané snímky:",
|
||||||
"LabelCorruptedFrames": "Poškodené snímky:",
|
"LabelCorruptedFrames": "Poškodené snímky:",
|
||||||
"CopyStreamURLError": "Pri kopírovaní URL nastala chyba."
|
"CopyStreamURLError": "Pri kopírovaní URL nastala chyba.",
|
||||||
|
"OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue