fixed details modal

This commit is contained in:
lllllllillllllillll 2024-06-08 16:53:28 -07:00
parent 842f83ea91
commit 109d9bc171
3 changed files with 582 additions and 457 deletions

View File

@ -305,10 +305,7 @@ export const InstallModal = async (req, res) => {
res.send(modal); res.send(modal);
return; return;
} else { } else {
let result = templates_global.find(t => t.name == input); let result = templates_global.find(t => t.name == input);
let name = result.name || result.title.toLowerCase(); let name = result.name || result.title.toLowerCase();
let short_name = name.slice(0, 25) + "..."; let short_name = name.slice(0, 25) + "...";
let desc = result.description.replaceAll(". ", ".\n") || "no description available"; let desc = result.description.replaceAll(". ", ".\n") || "no description available";

View File

@ -9,6 +9,7 @@ import { Op } from 'sequelize';
let hidden = ''; let hidden = '';
let alert = ''; let alert = '';
let [ cardList, newCards, stats ] = [ '', '', {}]; let [ cardList, newCards, stats ] = [ '', '', {}];
let [ports_data, volumes_data, env_data, label_data] = [[], [], [], []];
// The page // The page
export const Dashboard = (req, res) => { export const Dashboard = (req, res) => {
@ -74,11 +75,37 @@ export const DashboardAction = async (req, res) => {
res.send(modal); res.send(modal);
return; return;
case 'details': case 'details':
modal = readFileSync('./views/modals/json.html', 'utf8'); modal = readFileSync('./views/modals/details.html', 'utf8');
let details = await containerInfo(name); let details = await containerInfo(name);
modal = modal.replace(/AppName/g, details.name); modal = modal.replace(/AppName/g, details.name);
modal = modal.replace(/AppImage/g, details.image); modal = modal.replace(/AppImage/g, details.image);
for (let i = 0; i <= 6; i++) {
modal = modal.replaceAll(`Port${i}Check`, details.ports[i]?.check || '');
modal = modal.replaceAll(`Port${i}External`, details.ports[i]?.external || '');
modal = modal.replaceAll(`Port${i}Internal`, details.ports[i]?.internal || '');
modal = modal.replaceAll(`Port${i}Protocol`, details.ports[i]?.protocol || '');
}
for (let i = 0; i <= 6; i++) {
modal = modal.replaceAll(`Vol${i}Source`, details.volumes[i]?.Source || '');
modal = modal.replaceAll(`Vol${i}Destination`, details.volumes[i]?.Destination || '');
modal = modal.replaceAll(`Vol${i}RW`, details.volumes[i]?.RW || '');
}
for (let i = 0; i <= 19; i++) {
modal = modal.replaceAll(`Label${i}Key`, Object.keys(details.labels)[i] || '');
modal = modal.replaceAll(`Label${i}Value`, Object.values(details.labels)[i] || '');
}
// console.log(details.env);
for (let i = 0; i <= 19; i++) {
modal = modal.replaceAll(`Env${i}Key`, details.env[i]?.split('=')[0] || '');
modal = modal.replaceAll(`Env${i}Value`, details.env[i]?.split('=')[1] || '');
}
res.send(modal); res.send(modal);
return; return;
case 'updates': case 'updates':
@ -169,6 +196,7 @@ async function containerInfo (containerName) {
let ports_list = []; let ports_list = [];
let external = 0; let external = 0;
let internal = 0; let internal = 0;
try { try {
for (const [key, value] of Object.entries(info.HostConfig.PortBindings)) { for (const [key, value] of Object.entries(info.HostConfig.PortBindings)) {
let ports = { let ports = {
@ -184,6 +212,15 @@ async function containerInfo (containerName) {
external = ports_list[0].external; external = ports_list[0].external;
internal = ports_list[0].internal; internal = ports_list[0].internal;
} catch {} } catch {}
// console.log(ports_list);
// console.log(info.HostConfig.PortBindings);
// console.log(info.HostConfig.Binds);
// console.log(info.Config.Env);
// console.log(info.Config.Labels);
let details = { let details = {
name: containerName, name: containerName,
image: image, image: image,
@ -192,6 +229,9 @@ async function containerInfo (containerName) {
external_port: external, external_port: external,
internal_port: internal, internal_port: internal,
ports: ports_list, ports: ports_list,
volumes: info.Mounts,
env: info.Config.Env,
labels: info.Config.Labels,
link: 'localhost', link: 'localhost',
} }
return details; return details;
@ -224,8 +264,6 @@ async function createCard (details) {
} }
// if (name.startsWith('dweebui')) { disable = 'disabled=""'; } // if (name.startsWith('dweebui')) { disable = 'disabled=""'; }
let app_icon = details.service;
card = card.replace(/AppName/g, details.name); card = card.replace(/AppName/g, details.name);
card = card.replace(/AppShortName/g, shortname); card = card.replace(/AppShortName/g, shortname);
card = card.replace(/AppIcon/g, details.service); card = card.replace(/AppIcon/g, details.service);

File diff suppressed because it is too large Load Diff