Go Wails Docker图形界面管理工具 (5)

news2024/10/7 8:26:32

文章目录

  • 1. 前言
  • 2. 效果图
  • 3. 代码

1. 前言

接上篇,本次添加Docker存储卷功能
待优化:

  • 优化分页效果
  • 添加存储卷大小查看功能

2. 效果图

数据卷界面
删除数据卷操作

3. 代码

直接调用官方库

app.go

func (a *App) VolumeList() ([]*volume.Volume, error) {
	resp, err := Cli.VolumeList(context.Background(), filters.Args{})
	if err != nil {
		return nil, err
	}
	return resp.Volumes, nil
}

func (a *App) VolumeDelete(ID string) error {
	log.Printf("%v", ID)
	err := Cli.VolumeRemove(context.Background(), ID, true)
	return err
}

VolumeView.vue

<template>
    <a-spin :spinning="spinning">
        <div>
            <div class="table-operations">
                <a-button @click="handleRefresh">刷新数据卷</a-button>
                <a-popconfirm :title="'确定删除已选的 ' + selectedRows.length + ' 个数据卷?'" ok-text="确定" cancel-text="取消"
                    @confirm="handleDelete">
                    <a-button type="danger">删除数据卷</a-button>
                </a-popconfirm>
            </div>
            <a-table :row-selection="{ onChange: (selectedRowKeys, _selectedRows) => selectedRows = _selectedRows }"
            row-key="Name" :columns="columns" :data-source="data" :pagination="{ pageSize: 10 }" :scroll="{ x: 'max-content' }">
            </a-table>
        </div>
    </a-spin>
</template>
<script setup>
import { onBeforeMount, ref } from 'vue';
import { VolumeList, VolumeDelete } from "../../wailsjs/go/main/App";
import { message } from "ant-design-vue";

onBeforeMount(() => handleRefresh());

const spinning = ref(false);

const columns = [{
    title: 'NAME',
    dataIndex: 'Name',
    fixed: 'left',
    sorter: (a, b) => a.Name > b.Name,
}, {
    title: 'DRIVER',
    dataIndex: 'Driver',
    fixed: 'left',
}, {
    title: 'CreatedAt',
    dataIndex: 'CreatedAt',
    sorter: (a, b) => a.CreatedAt > b.CreatedAt,
}, {
    title: 'Mountpoint',
    dataIndex: 'Mountpoint',
}];

const data = ref([]);
const selectedRows = ref([]);

const handleRefresh = () => {
    VolumeList()
        .then((volumes) => {
            data.value = volumes;
        })
        .catch(e => message.error(e));
};

const handleDelete = () => {
    spinning.value = true;
    let promises = [];
    selectedRows.value.forEach((row) => {
        console.log(row);
        let p = VolumeDelete(row.Name)
        p.then(() => { message.success(`数据卷${row.Name}删除成功!`); }).catch((e) => message.error(`删除${row.Name}失败: ${e}!`));
        promises.push(p);
    });
    Promise.all(promises).finally(() => { spinning.value = false; handleRefresh() });
};

</script>

<style scoped>
.table-operations {
    margin-bottom: 16px;
}

.table-operations>button {
    margin-right: 8px;
}
</style>

项目地址 https://github.com/LeoBest2/my-docker-gui

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux中关于时间修改的命令

目录 Linux中关于时间修改的命令 data命令 语法格式 示例 date命令中的参数以及作用 常用格式示例 timedatectl命令 语法格式 timedatectl 命令中的参数以及作用 常用格式 Linux中关于时间修改的命令 data命令 data --- 用于显示或设置系统的时间与日期 用户只需在强…

干货丨警惕!14个容易导致拒稿的常见错误

Hello,大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 从做研究、到写论文、再到投稿&#xff0c;每一步都是巨大的挑战。以下列举了一些在这些过程中可能导致拒稿的常见错误&#xff0c;希望能帮助大家避开。 01 格式问题 1.没有遵守投稿须知 期刊提供了…

oracle基于时间点恢复遇到ORA-10877错误

一次给客户进行基于时间点恢复的时候,出现报错ORA-10877,如下: 这里很奇怪,这个归档日志有的,当前全库的备份是05-14 23点的,所以应该是可以恢复的,检查一下alter日志: 这里报错,指定的时间scn不属于当前的incarnation,那么检查一下当前的incarnation: 这里当前的incarnation是…

Linux实操篇---常用的基本命令3(用户(组)管理命令、文件权限类、搜索查找类、压缩解压类)

一、用户管理命令 Linux是一个多用户&#xff0c;多任务的分时操作系统。甚至有可能同时登录&#xff0c;同时操作。所以给用户不同的账号。 useradd添加新用户 基本语法&#xff1a; 只能用root进行操作。 useradd 用户名 添加新用户 useradd -g 组名 用户名 添加新用…

MyBatis Plus 代码生成器

一、引入POM依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><dependency><groupId>com.baomidou</groupId&g…

3ds Max云渲染平台哪个好?

3ds Max云渲染平台哪个好&#xff1f; 3ds Max是一款包含建模、动画、粒子动力学等强大功能的三维动画制作软件&#xff0c;3ds Max对特定如游戏建模、特效制作、产品模型设计等领域都具备了过硬的专业能力&#xff0c;同时3ds Max也是很多CGer青睐的CG软件。 作为支持3ds Ma…

黑马Redis笔记高级篇 | Redis最佳实践

黑马Redis笔记高级篇 | Redis最佳实践 1、Redis键值设计1.1、优雅的key结构1.2、拒绝BigKey1.3、恰当的数据类型1.4、总结 2、批处理优化1.1、Pipeline1.2、集群下的批处理 3、服务端优化3.1、持久化配置3.2、慢查询3.3、命令及安全配置3.4、内存配置 4、集群最佳实践 1、Redis…

深度学习用于医学预后-第二课第三周14-15节-评估方法比较以及Kaplan-Meier估计

评估对比 我们现在对 t25 的生存率得出了一个新的估计值&#xff0c;为0.56。现在&#xff0c;让我们将其与之前所做的估计进行比较。 当我们假设所有患者在他们截尾时间立即死亡时&#xff0c;我们获得了一个低生存概率为0.29。而在另一极端&#xff0c;如果我们假设他们永久…

LeetCode 周赛 345(2023/05/14)体验一题多解的算法之美

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 提问。 往期回顾&#xff1a;LeetCode 双周赛第 104 场 流水的动态规划&#xff0c;铁打的结构化思考 周赛概览 T1. 找出转圈游戏输家&#xff08;Easy&#xff09; 标签&#xff…

微信小程序入门02-安装mysql

我们上一篇介绍的是微信开发者工具的安装&#xff0c;开发一个小程序肯定要有后端服务&#xff0c;有后端服务首先要可以存储和查询数据。 数据库种类比较多&#xff0c;我们这里选择mysql&#xff0c;为啥选择这个呢&#xff0c;因为首先用的人多比较稳定&#xff0c;再一个免…

MapReduce:Index索引案例

案例需求 a.html hello world hello lucy hello jack hello liuyan b.html hello aaa aaa bbb bbb ccc hello liuyan liuyan tangyan c.html world hello liuyan tangyan tangyan aaa bbb ccc 计算每个单词在每个文件中出现的次数 aaa b.html-2 c.html-1 bbb b.h…

文本三剑客awk

awk 工作原理&#xff1a; 逐行读取文本&#xff0c;默认以空格或tab键为分隔符进行分隔&#xff0c;将分隔所得的各个字段保存到内建变量中&#xff0c;并按模式或者条件执行编辑命令。 sed命令常用于一整行的处理&#xff0c;而awk比较倾向于将一行分成多个“字段”然后再进…

Visual Studio Code 插件的开发、调试及发布完整详细教程

本篇文章主要讲解:Vscode的拓展插件,从环境安装到生成项目文件再到调试及部署发布的完整开发教程。 日期:2023年5月10日 vscode 1.78.1 一、准备node环境及安装yo 项目初始化,优先安装yo、再通过yo创建code及插件项目。 基础条件 需要先安装node,且node环境已经正确安装…

5.项目管理(测试)工具

目录 一、禅道 1.为什么需要禅道&#xff1f;&#xff08;仅从测试角度看&#xff09; 2.管理工具的对比 3.禅道的设计理念 4.软件开发的生命周期有哪些&#xff1f;&#xff08;软件开发的流程&#xff09; 二、selenium 1、什么是自动化测试&#xff1f; 2.UI自动化的…

2023年,最新linux c/c++后台开发学习路线分享

摘自零声教育课程大纲&#xff0c;8个技术维度项目实战&#xff0c;为你打通linux c/c后台开发的技术栈。 部分往期视频 c八股文重点&#xff0c;网络的posix api实现原理 8个方面讲解io_uring&#xff0c;重塑对异步io的理解 c后端开发中数据库异步连接、异步连接池的原理…

浅聊一下PTP

浅聊一下ptp 最近做了点时间同步相关工作&#xff0c;浅浅聊一下学习和了解的东西吧。 大概了解了一下PTP&#xff0c;NTP&#xff0c;PTPD&#xff0c;LinuxPTP 1.时钟同步 网络时钟同步包括频率同步和相位同步两个概念。 频率同步&#xff08;Frequency synchronization…

Hudi集成Spark与hudi表的创建

集成Hudi包 Spark-shell 方式启动 Spark SQL方式启动 SQL方式创建hudi建表 集成Hudi包 以下为hudi与spark版本的兼容 Hudi Supported Spark 3 version 0.12.x 3.3.x&#xff0c;3.2.x&#xff0c;3.1.x 0.11.x 3.2.x&#xff08;default build, Spark bundle only&…

浪漫行星,不浪漫你打我

先上效果图&#xff1a; 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>import "https://fonts.googleapis.com/css2?familyMegrim&…

tftp文件传输协议报文解析

1&#xff0c;接着上一篇描述bootp,我们现在了解一下tftp协议。 先来看看tftp的五种报文格式 操作码补充说明&#xff1a; 读文件请求包&#xff1a;Read request&#xff0c;简写为RRQ&#xff0c;对应Opcode字段值为1 写文件请求包&#xff1a;Write requst&#xff0c;简…

练习SSM微博项目

微博项目 项目概述 ​ 该项目是一款社交媒体应用&#xff0c;用户可以在平台上发表短文、图片等信息&#xff0c;分享自己的想法、心情和生活。微博的用户群体广泛&#xff0c;包括个人、娱乐明星、公司、政府官方等。 项目功能 用户管理 用户可以注册微博账号&#xff0c;登…