diff --git a/data/configs/default.json b/data/configs/default.json
index 3f2acea0d..9597d620c 100644
--- a/data/configs/default.json
+++ b/data/configs/default.json
@@ -1,20 +1,35 @@
{
"name": "default",
- "services": [
- {
- "name": "example",
- "id": "09c45847-8afc-4c1a-9697-f03192de948a",
- "type": "Other",
- "icon": "https://c.tenor.com/o656qFKDzeUAAAAC/rick-astley-never-gonna-give-you-up.gif",
- "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
- }
- ],
+ "services": [],
"settings": {
- "searchUrl": "https://google.com/search?q="
+ "searchUrl": "https://google.com/search?q=",
+ "appCardWidth": 0.8
},
"modules": {
"Search Bar": {
"enabled": true
+ },
+ "Docker": {
+ "enabled": true,
+ "options": {
+ "endpoint": {
+ "value": "http://192.168.1.56:2376"
+ }
+ }
+ },
+ "Weather": {
+ "enabled": true,
+ "options": {
+ "location": {
+ "value": "Perros-Guirec"
+ }
+ }
+ },
+ "Download Speed": {
+ "enabled": false
+ },
+ "Ping Services": {
+ "enabled": true
}
}
-}
\ No newline at end of file
+}
diff --git a/src/modules/docker/ContainerActionBar.tsx b/src/modules/docker/ContainerActionBar.tsx
index 0ae7e2ed1..b25c03c11 100644
--- a/src/modules/docker/ContainerActionBar.tsx
+++ b/src/modules/docker/ContainerActionBar.tsx
@@ -11,9 +11,9 @@ import {
} from '@tabler/icons';
import axios from 'axios';
import Dockerode from 'dockerode';
+import { useState } from 'react';
import { tryMatchService } from '../../tools/addToHomarr';
import { AddAppShelfItemForm } from '../../components/AppShelf/AddAppShelfItem';
-import { useState } from 'react';
function sendDockerCommand(
action: string,
@@ -30,7 +30,7 @@ function sendDockerCommand(
disallowClose: true,
});
axios
- .get(`/api/docker/container/${containerId}?action=${action}`)
+ .get(`localhost:2375/containers/${containerId}/${action}`)
.then((res) => {
updateNotification({
id: containerId,
@@ -88,6 +88,7 @@ export default function ContainerActionBar({ selected, reload }: ContainerAction
variant="light"
color="orange"
radius="md"
+ disabled={selected.length === 0}
>
Restart
@@ -103,6 +104,7 @@ export default function ContainerActionBar({ selected, reload }: ContainerAction
variant="light"
color="red"
radius="md"
+ disabled={selected.length === 0}
>
Stop
@@ -118,10 +120,11 @@ export default function ContainerActionBar({ selected, reload }: ContainerAction
variant="light"
color="green"
radius="md"
+ disabled={selected.length === 0}
>
Start
- } onClick={() => reload()} variant="light" radius="md">
+ } onClick={() => reload()} variant="light" color="violet" radius="md">
Refresh data
@@ -156,6 +160,7 @@ export default function ContainerActionBar({ selected, reload }: ContainerAction
)
)
}
+ disabled={selected.length === 0}
>
Remove
diff --git a/src/modules/docker/DockerModule.tsx b/src/modules/docker/DockerModule.tsx
index caca75306..3981b36ca 100644
--- a/src/modules/docker/DockerModule.tsx
+++ b/src/modules/docker/DockerModule.tsx
@@ -1,4 +1,4 @@
-import { ActionIcon, Drawer, Group, LoadingOverlay, Text, Tooltip } from '@mantine/core';
+import { ActionIcon, Drawer, Text, Tooltip } from '@mantine/core';
import axios from 'axios';
import { useEffect, useState } from 'react';
import Docker from 'dockerode';
@@ -14,6 +14,12 @@ export const DockerModule: IModule = {
description: 'Allows you to easily manage your torrents',
icon: IconBrandDocker,
component: DockerMenuButton,
+ options: {
+ endpoint: {
+ name: 'Docker Api endpoint entry',
+ value: '',
+ },
+ },
};
export default function DockerMenuButton(props: any) {
@@ -21,6 +27,7 @@ export default function DockerMenuButton(props: any) {
const [containers, setContainers] = useState([]);
const [selection, setSelection] = useState([]);
const { config } = useConfig();
+ const dockerApi = (config?.modules?.[DockerModule.title]?.options?.endpoint?.value as string) ?? ''; // http://192.168.1.56:2376
const moduleEnabled = config.modules?.[DockerModule.title]?.enabled ?? false;
useEffect(() => {
@@ -33,7 +40,7 @@ export default function DockerMenuButton(props: any) {
}
setTimeout(() => {
axios
- .get('/api/docker/containers')
+ .get(`${dockerApi}/v1.41/containers/json`)
.then((res) => {
setContainers(res.data);
setSelection([]);
@@ -54,8 +61,7 @@ export default function DockerMenuButton(props: any) {
if (!exists) {
return null;
}
- // Check if the user has at least one container
- if (containers.length < 1) return null;
+ // Always allow user to see DockerTable component through ActionIcon in order to set Docker's settings
return (
<>
}
value={search}
onChange={handleSearchChange}
+ disabled={usedContainers.length === 0}
/>
@@ -106,9 +107,10 @@ export default function DockerTable({
|
0}
indeterminate={selection.length > 0 && selection.length !== usedContainers.length}
transitionDuration={0}
+ disabled={usedContainers.length === 0}
/>
|
Name |