Skip to content

Commit eac0ea4

Browse files
Fix docker multi-row preview renderer
1 parent 8404b49 commit eac0ea4

9 files changed

Lines changed: 65 additions & 9 deletions

archive/folderview.plus-2026.03.22.23.txz.sha256

Lines changed: 0 additions & 1 deletion
This file was deleted.

archive/folderview.plus-2026.03.22.24.txz.sha256

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
d74ea2a2ed384ca4f7659a7b152656f0434de51445735fdec4230ddf0e87058a folderview.plus-2026.03.22.49.txz
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
d74ea2a2ed384ca4f7659a7b152656f0434de51445735fdec4230ddf0e87058a folderview.plus-2026.03.22.50.txz

folderview.plus.plg

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,23 @@
66
<!ENTITY launch "Settings/FolderViewPlus">
77
<!ENTITY plugdir "/usr/local/emhttp/plugins/&name;">
88
<!ENTITY pluginURL "https://raw.githubusercontent.com/&github;/dev/folderview.plus.plg">
9-
<!ENTITY version "2026.03.22.48">
10-
<!ENTITY md5 "d632fa48da1b4a092fc18a43a459a0e9">
9+
<!ENTITY version "2026.03.22.50">
10+
<!ENTITY md5 "c9e9c9d695741228fef35b380995c629">
1111
]>
1212

1313
<PLUGIN name="&name;" author="&author;" version="&version;" launch="&launch;" pluginURL="&pluginURL;" icon="folder-icon.png" support="https://forums.unraid.net/topic/197631-plugin-folderview-plus/" min="7.0.0">
1414
<CHANGES>
1515

16+
###2026.03.22.50
17+
- Fix: Route Docker multi-row previews through the real preview renderer instead of legacy cloned markup.
18+
- Fix: Keep multi-row member names horizontal beside the icon and send quick actions into the dedicated trailing action cluster.
19+
- UX: Preserve the stable single-row preview path while keeping multi-row wrapping isolated to folders that opt into it.
20+
21+
22+
###2026.03.22.49
23+
- UX: Refined settings and on-screen update messaging for clarity and consistency.
24+
25+
1626
###2026.03.22.48
1727
- Fix: Multi-row Docker previews now fill each row by available width before wrapping instead of stopping at a fixed item count.
1828
- UX: Added light vertical row padding so wrapped preview rows sit closer to the same centered feel as the normal single-row preview.

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/scripts/docker.js

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2968,11 +2968,33 @@ const createFolder = (folder, id, positionInMainOrder, liveOrderArray, container
29682968

29692969
let addPreview;
29702970
if (FOLDER_VIEW_DEBUG_MODE) console.log(`[FV3_DEBUG] createFolder (id: ${id}): Selecting addPreview function based on folder.settings.preview = ${folder.settings.preview}. Context setting: ${folder.settings.context}`);
2971-
const compactMultiRowPreview = false;
2971+
const compactMultiRowPreview = isCompactMultiRowPreview(folder.settings);
2972+
const appendCompactPreview = (folderTrId, ctid, autostart, previewEntry) => {
2973+
const { $item, $tooltipTrigger } = buildDockerPreviewItem({
2974+
entry: previewEntry || {},
2975+
settings: folder.settings,
2976+
autostart
2977+
});
2978+
$(`tr.folder-id-${folderTrId} div.folder-preview`).append($item);
2979+
if (folder.settings.context === 2 || folder.settings.context === 0) {
2980+
const $triggerTarget = $tooltipTrigger && $tooltipTrigger.length ? $tooltipTrigger : $item.find('.fv-preview-trigger').first();
2981+
if ($triggerTarget.length) {
2982+
$triggerTarget.attr("id", "folder-preview-" + ctid);
2983+
$triggerTarget.removeAttr("onclick");
2984+
if (folder.settings.context === 2) {
2985+
return $triggerTarget;
2986+
}
2987+
}
2988+
}
2989+
return $tooltipTrigger;
2990+
};
29722991
switch (folder.settings.preview) {
29732992
case 1:
29742993
addPreview = (folderTrId, ctid, autostart, previewEntry) => {
29752994
if (FOLDER_VIEW_DEBUG_MODE) console.log(`[FV3_DEBUG] addPreview (case 1 for ${folderTrId}): ctid=${ctid}, autostart=${autostart}`);
2995+
if (compactMultiRowPreview) {
2996+
return appendCompactPreview(folderTrId, ctid, autostart, previewEntry);
2997+
}
29762998
let clone = $(`tr.folder-id-${folderTrId} div.folder-storage > tr > td.ct-name > span.outer:last`).clone();
29772999
clone.find(`span.state`)[0].innerHTML = clone.find(`span.state`)[0].innerHTML.split("<br>")[0];
29783000
$(`tr.folder-id-${folderTrId} div.folder-preview`).append(clone.addClass(`${autostart ? 'autostart' : ''}`));
@@ -2988,6 +3010,9 @@ const createFolder = (folder, id, positionInMainOrder, liveOrderArray, container
29883010
case 2:
29893011
addPreview = (folderTrId, ctid, autostart, previewEntry) => {
29903012
if (FOLDER_VIEW_DEBUG_MODE) console.log(`[FV3_DEBUG] addPreview (case 2 for ${folderTrId}): ctid=${ctid}, autostart=${autostart}`);
3013+
if (compactMultiRowPreview) {
3014+
return appendCompactPreview(folderTrId, ctid, autostart, previewEntry);
3015+
}
29913016
$(`tr.folder-id-${folderTrId} div.folder-preview`).append($(`tr.folder-id-${folderTrId} div.folder-storage > tr > td.ct-name > span.outer > span.hand:last`).clone().addClass(`${autostart ? 'autostart' : ''}`));
29923017
if(folder.settings.context === 2 || folder.settings.context === 0) {
29933018
let tmpId = $(`tr.folder-id-${folderTrId} div.folder-preview > span.hand:last`);
@@ -2999,6 +3024,9 @@ const createFolder = (folder, id, positionInMainOrder, liveOrderArray, container
29993024
case 3:
30003025
addPreview = (folderTrId, ctid, autostart, previewEntry) => {
30013026
if (FOLDER_VIEW_DEBUG_MODE) console.log(`[FV3_DEBUG] addPreview (case 3 for ${folderTrId}): ctid=${ctid}, autostart=${autostart}`);
3027+
if (compactMultiRowPreview) {
3028+
return appendCompactPreview(folderTrId, ctid, autostart, previewEntry);
3029+
}
30023030
let clone = $(`tr.folder-id-${folderTrId} div.folder-storage > tr > td.ct-name > span.outer > span.inner:last`).clone();
30033031
clone.find(`span.state`)[0].innerHTML = clone.find(`span.state`)[0].innerHTML.split("<br>")[0];
30043032
$(`tr.folder-id-${folderTrId} div.folder-preview`).append(clone.addClass(`${autostart ? 'autostart' : ''}`));
@@ -3014,6 +3042,9 @@ const createFolder = (folder, id, positionInMainOrder, liveOrderArray, container
30143042
case 4:
30153043
addPreview = (folderTrId, ctid, autostart, previewEntry) => {
30163044
if (FOLDER_VIEW_DEBUG_MODE) console.log(`[FV3_DEBUG] addPreview (case 4 for ${folderTrId}): ctid=${ctid}, autostart=${autostart}`);
3045+
if (compactMultiRowPreview) {
3046+
return appendCompactPreview(folderTrId, ctid, autostart, previewEntry);
3047+
}
30173048
let lstSpan = $(`tr.folder-id-${folderTrId} div.folder-preview > span.outer:last`);
30183049
if(!lstSpan[0] || lstSpan.children().length >= 2) {
30193050
$(`tr.folder-id-${folderTrId} div.folder-preview`).append($('<span class="outer"></span>'));
@@ -3896,7 +3927,11 @@ const renderNestedAggregatePreview = (id, folder, runtimeContainers) => {
38963927
autostart: entry?.autostart === true
38973928
});
38983929
item.addClass('fv-nested-preview-item');
3930+
const compactMultiRowPreview = isCompactMultiRowPreview(folder?.settings || {});
38993931
const $inner = item.children('span.inner').last();
3932+
const $actionsTarget = compactMultiRowPreview
3933+
? item.find('.fv-preview-actions-compact').first()
3934+
: $inner;
39003935
const containerName = String(entry?.name || '');
39013936
const shellValue = String(entry?.shell || '/bin/sh');
39023937
const webuiUrl = String(entry?.webui || '').trim();
@@ -3907,7 +3942,7 @@ const renderNestedAggregatePreview = (id, folder, runtimeContainers) => {
39073942
.attr('target', '_blank')
39083943
.attr('rel', 'noopener noreferrer')
39093944
.append('<i class="fa fa-globe" aria-hidden="true"></i>');
3910-
$inner.append($('<span class="folder-element-custom-btn folder-element-webui"></span>').append($webuiLink));
3945+
$actionsTarget.append($('<span class="folder-element-custom-btn folder-element-webui"></span>').append($webuiLink));
39113946
}
39123947

39133948
if (allowConsoleQuickAction) {
@@ -3917,7 +3952,7 @@ const renderNestedAggregatePreview = (id, folder, runtimeContainers) => {
39173952
event.preventDefault();
39183953
openTerminal('docker', containerName, shellValue);
39193954
});
3920-
$inner.append($('<span class="folder-element-custom-btn folder-element-console"></span>').append($consoleLink));
3955+
$actionsTarget.append($('<span class="folder-element-custom-btn folder-element-console"></span>').append($consoleLink));
39213956
}
39223957

39233958
if (allowLogsQuickAction) {
@@ -3927,7 +3962,7 @@ const renderNestedAggregatePreview = (id, folder, runtimeContainers) => {
39273962
event.preventDefault();
39283963
openTerminal('docker', containerName, '.log');
39293964
});
3930-
$inner.append($('<span class="folder-element-custom-btn folder-element-logs"></span>').append($logsLink));
3965+
$actionsTarget.append($('<span class="folder-element-custom-btn folder-element-logs"></span>').append($logsLink));
39313966
}
39323967
decorateDockerPreviewMemberTriggers(
39333968
item.find('span.hand, span.inner > span.appname, span.inner > span.appname > a, span.inner > i.fa, span.inner > span.state'),

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/styles/docker.css

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ tr.folder.fv-parent-expanded div.folder-preview {
368368
min-height: calc(var(--fvplus-preview-row-height) - 0.9em);
369369
margin: 0;
370370
align-items: center;
371-
flex: 0 1 auto;
371+
flex: 0 0 auto;
372+
min-width: max-content;
372373
}
373374

374375
.folder-preview.fv-preview-multirow .fv-docker-preview-card {
@@ -381,6 +382,16 @@ tr.folder.fv-parent-expanded div.folder-preview {
381382
line-height: 1.05;
382383
}
383384

385+
.folder-preview.fv-preview-multirow .folder-preview-wrapper > span.outer {
386+
display: inline-flex;
387+
align-items: center;
388+
white-space: nowrap;
389+
}
390+
391+
.folder-preview.fv-preview-multirow .folder-preview-wrapper > span.outer > span.inner {
392+
white-space: nowrap;
393+
}
394+
384395
.folder-preview.fv-preview-multirow .fv-docker-preview-mode-1 {
385396
max-width: clamp(150px, 15vw, 210px);
386397
}

0 commit comments

Comments
 (0)