refactor: removal of plugin batch operation

Signed-off-by: Ryan Wang <i@ryanc.cc>
pull/588/head
Ryan Wang 2022-07-13 17:39:31 +08:00
parent 700e12cafd
commit 284edbbee1
5 changed files with 17 additions and 96 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@halo-dev/components",
"version": "0.0.0-alpha.0",
"version": "0.0.0-alpha.1",
"description": "",
"files": [
"dist"

View File

@ -1,6 +1,6 @@
{
"name": "@halo-dev/admin-shared",
"version": "0.0.0-alpha.1",
"version": "0.0.0-alpha.2",
"description": "",
"files": [
"dist"

View File

@ -13,6 +13,7 @@ importers:
'@formkit/vue': 1.0.0-beta.9
'@halo-dev/admin-api': ^1.1.0
'@halo-dev/admin-shared': workspace:*
'@halo-dev/api-client': ^0.0.0
'@halo-dev/components': workspace:*
'@rushstack/eslint-patch': ^1.1.4
'@tailwindcss/aspect-ratio': ^0.4.0
@ -76,6 +77,7 @@ importers:
'@formkit/vue': 1.0.0-beta.9_jly5jqkcc2zgnt3crhnp3znzv4
'@halo-dev/admin-api': 1.1.0
'@halo-dev/admin-shared': link:packages/shared
'@halo-dev/api-client': 0.0.0
'@halo-dev/components': link:packages/components
'@vueuse/core': 8.9.2_vue@3.2.37
axios: 0.27.2
@ -149,10 +151,12 @@ importers:
packages/shared:
specifiers:
'@halo-dev/api-client': ^0.0.0
'@halo-dev/components': workspace:*
axios: ^0.27.2
vite-plugin-dts: ^1.2.1
dependencies:
'@halo-dev/api-client': 0.0.0
'@halo-dev/components': link:../components
axios: 0.27.2
devDependencies:
@ -1781,6 +1785,10 @@ packages:
- debug
dev: false
/@halo-dev/api-client/0.0.0:
resolution: {integrity: sha512-DC+0MsnX3e5IkqFFya3gz8JK893hGH+9ohKzLp1b7QqYj1Hvxxc1Nbr77IxvVbktZ14LUZTeHOdWHdqFAFQdvw==}
dev: false
/@halo-dev/logger/1.1.0:
resolution: {integrity: sha512-y0jVivYwF8MCVi/OdW2D0LN+GTM5rzMsR/ZmQVfgmKQw7Q7Q+EXPijxON6iCMZnWANGa4NaAcOO9k3ggG8oRwg==}
engines: {node: '>=12.0.0'}

View File

@ -126,7 +126,11 @@ async function loadPluginModules() {
}
if (stylesheet) {
await loadStyle(`http://localhost:8090${stylesheet}`);
try {
await loadStyle(`http://localhost:8090${stylesheet}`);
} catch (e) {
console.error(e);
}
}
pluginStore.registerPlugin(plugin);

View File

@ -13,26 +13,17 @@ import {
VSwitch,
VTag,
} from "@halo-dev/components";
import { onMounted, ref, watch } from "vue";
import { onMounted, ref } from "vue";
import { useRouter } from "vue-router";
import { apiClient } from "@halo-dev/admin-shared";
import type { Plugin } from "@halo-dev/api-client";
import cloneDeep from "lodash.clonedeep";
const checkedAll = ref(false);
const plugins = ref<Plugin[]>([] as Plugin[]);
const selectedPlugins = ref<string[]>([]);
const router = useRouter();
const dialog = useDialog();
watch(
() => selectedPlugins.value,
(newValue) => {
checkedAll.value = newValue.length === plugins.value?.length;
}
);
const handleRouteToDetail = (plugin: Plugin) => {
router.push({
name: "PluginDetail",
@ -75,46 +66,6 @@ const handleChangeStatus = (plugin: Plugin) => {
});
};
const handleCheckedAllChange = () => {
if (checkedAll.value) {
selectedPlugins.value = plugins.value.map((plugin) => plugin.metadata.name);
} else {
selectedPlugins.value.length = 0;
}
};
const handleChangeStatusInBatch = (enable: boolean) => {
const pluginsToUpdate = plugins.value.filter(
(plugin) =>
selectedPlugins.value.includes(plugin.metadata.name) &&
plugin.spec.enabled !== enable
);
if (pluginsToUpdate.length === 0) {
alert("没有需要更新的插件");
return;
}
dialog.warning({
title: `确定要${enable ? "启动" : "停止"}所选插件吗?`,
onConfirm: async () => {
try {
for (const plugin of pluginsToUpdate) {
plugin.spec.enabled = enable;
await apiClient.extension.plugin.updatepluginHaloRunV1alpha1Plugin(
plugin.metadata.name,
plugin
);
}
} catch (e) {
console.error(e);
} finally {
window.location.reload();
}
},
});
};
onMounted(handleFetchPlugins);
</script>
<template>
@ -139,35 +90,8 @@ onMounted(handleFetchPlugins);
<div
class="relative flex flex-col items-start sm:flex-row sm:items-center"
>
<div class="mr-4 hidden items-center sm:flex">
<input
v-model="checkedAll"
class="h-4 w-4 rounded border-gray-300 text-indigo-600"
type="checkbox"
@change="handleCheckedAllChange"
/>
</div>
<div class="flex w-full flex-1 sm:w-auto">
<FormKit
v-if="!selectedPlugins.length"
placeholder="输入关键词搜索"
type="text"
></FormKit>
<VSpace v-else>
<VButton
type="default"
@click="handleChangeStatusInBatch(true)"
>
启用
</VButton>
<VButton
type="default"
@click="handleChangeStatusInBatch(false)"
>
禁用
</VButton>
<VButton type="danger">卸载</VButton>
</VSpace>
<FormKit placeholder="输入关键词搜索" type="text"></FormKit>
</div>
<div class="mt-4 flex sm:mt-0">
<VSpace spacing="lg">
@ -294,24 +218,9 @@ onMounted(handleFetchPlugins);
<ul class="box-border h-full w-full divide-y divide-gray-100" role="list">
<li v-for="(plugin, index) in plugins" :key="index">
<div
:class="{
'bg-gray-100': selectedPlugins.includes(plugin.metadata.name),
}"
class="relative block cursor-pointer px-4 py-3 transition-all hover:bg-gray-50"
>
<div
v-show="selectedPlugins.includes(plugin.metadata.name)"
class="absolute inset-y-0 left-0 w-0.5 bg-themeable-primary"
></div>
<div class="relative flex flex-row items-center">
<div class="mr-4 hidden items-center sm:flex">
<input
v-model="selectedPlugins"
:value="plugin.metadata.name"
class="h-4 w-4 rounded border-gray-300 text-indigo-600"
type="checkbox"
/>
</div>
<div v-if="plugin.spec.logo" class="mr-4">
<div
class="h-12 w-12 rounded border bg-white p-1 hover:shadow-sm"