Browse Source

🎉 init: Multiple docker endpoint ui

Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev>
Muhammed Hussein Karimi 1 year ago
parent
commit
7e6a5cbc21
4 changed files with 47 additions and 3 deletions
  1. 35 0
      frontend/src/components/settings/General.vue
  2. 4 3
      frontend/src/lang/en.json
  3. 1 0
      package.json
  4. 7 0
      pnpm-lock.yaml

+ 35 - 0
frontend/src/components/settings/General.vue

@@ -57,6 +57,24 @@
                 <div class="form-text"></div>
                 <div class="form-text"></div>
             </div>
             </div>
 
 
+            <!-- Docker Endpoint -->
+            <div class="mb-4">
+                <label class="form-label" for="dockerEndpointList">
+                    {{ $t("dockerEndpointList") }}
+                </label>
+
+                <Multiselect
+                    id="dockerEndpointList"
+                    v-model="settings.dockerEndpointList"
+                    mode="tags"
+                    :options="['/var/run/docker.sock']"
+                    :value="['/var/run/docker.sock']"
+                    :placeholder="$t('Enter The list of docker endpoints')"
+                    :searchable="true"
+                    :create-option="true"
+                ></Multiselect>
+            </div>
+
             <!-- Save Button -->
             <!-- Save Button -->
             <div>
             <div>
                 <button class="btn btn-primary" type="submit">
                 <button class="btn btn-primary" type="submit">
@@ -71,10 +89,12 @@
 import HiddenInput from "../../components/HiddenInput.vue";
 import HiddenInput from "../../components/HiddenInput.vue";
 import dayjs from "dayjs";
 import dayjs from "dayjs";
 import { timezoneList } from "../../util-frontend";
 import { timezoneList } from "../../util-frontend";
+import Multiselect from '@vueform/multiselect'
 
 
 export default {
 export default {
     components: {
     components: {
         HiddenInput,
         HiddenInput,
+        Multiselect,
     },
     },
 
 
     data() {
     data() {
@@ -112,3 +132,18 @@ export default {
 };
 };
 </script>
 </script>
 
 
+<style src="@vueform/multiselect/themes/default.css">
+</style>
+<style>
+.multiselect {
+    background: #070a10;
+    border-color: #1d2634;
+    border-radius: var(--bs-border-radius);
+}
+.multiselect-tags-search {
+    background: none;
+}
+.multiselect-tag {
+    border-radius: var(--bs-border-radius);
+}
+</style>

+ 4 - 3
frontend/src/lang/en.json

@@ -9,7 +9,7 @@
     "registry": "Registry",
     "registry": "Registry",
     "compose": "Compose",
     "compose": "Compose",
     "addFirstStackMsg": "Compose your first stack!",
     "addFirstStackMsg": "Compose your first stack!",
-    "stackName" : "Stack Name",
+    "stackName": "Stack Name",
     "deployStack": "Deploy",
     "deployStack": "Deploy",
     "deleteStack": "Delete",
     "deleteStack": "Delete",
     "stopStack": "Stop",
     "stopStack": "Stop",
@@ -19,7 +19,7 @@
     "editStack": "Edit",
     "editStack": "Edit",
     "discardStack": "Discard",
     "discardStack": "Discard",
     "saveStackDraft": "Save",
     "saveStackDraft": "Save",
-    "notAvailableShort" : "N/A",
+    "notAvailableShort": "N/A",
     "deleteStackMsg": "Are you sure you want to delete this stack?",
     "deleteStackMsg": "Are you sure you want to delete this stack?",
     "stackNotManagedByDockgeMsg": "This stack is not managed by Dockge.",
     "stackNotManagedByDockgeMsg": "This stack is not managed by Dockge.",
     "primaryHostname": "Primary Hostname",
     "primaryHostname": "Primary Hostname",
@@ -49,5 +49,6 @@
     "add": "Add",
     "add": "Add",
     "applyToYAML": "Apply to YAML",
     "applyToYAML": "Apply to YAML",
     "createExternalNetwork": "Create",
     "createExternalNetwork": "Create",
-    "addInternalNetwork": "Add"
+    "addInternalNetwork": "Add",
+    "dockerEndpointList": "Docker Endpoint List"
 }
 }

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
     "dependencies": {
     "dependencies": {
         "@homebridge/node-pty-prebuilt-multiarch": "~0.11.10",
         "@homebridge/node-pty-prebuilt-multiarch": "~0.11.10",
         "@louislam/sqlite3": "~15.1.6",
         "@louislam/sqlite3": "~15.1.6",
+        "@vueform/multiselect": "^2.6.6",
         "bcryptjs": "~2.4.3",
         "bcryptjs": "~2.4.3",
         "check-password-strength": "~2.0.7",
         "check-password-strength": "~2.0.7",
         "command-exists": "~1.2.9",
         "command-exists": "~1.2.9",

+ 7 - 0
pnpm-lock.yaml

@@ -11,6 +11,9 @@ dependencies:
   '@louislam/sqlite3':
   '@louislam/sqlite3':
     specifier: ~15.1.6
     specifier: ~15.1.6
     version: 15.1.6
     version: 15.1.6
+  '@vueform/multiselect':
+    specifier: ^2.6.6
+    version: 2.6.6
   bcryptjs:
   bcryptjs:
     specifier: ~2.4.3
     specifier: ~2.4.3
     version: 2.4.3
     version: 2.4.3
@@ -1036,6 +1039,10 @@ packages:
     resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==}
     resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==}
     dev: true
     dev: true
 
 
+  /@vueform/multiselect@2.6.6:
+    resolution: {integrity: sha512-JDWesVRmyGz9HmHp2Ooy1cb8XgKohiztwMDtjm8c0/Th+7wEZENZuYa0iY5CTvaJNANl3LVqh9BNnCc/YlM/Bg==}
+    dev: false
+
   /@vueuse/core@10.5.0(vue@3.3.8):
   /@vueuse/core@10.5.0(vue@3.3.8):
     resolution: {integrity: sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==}
     resolution: {integrity: sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==}
     dependencies:
     dependencies: