()
| 25 | } |
| 26 | |
| 27 | export function useRemoteNode() { |
| 28 | const operationForm = ref({ |
| 29 | name: "", |
| 30 | current: 1, |
| 31 | pageSize: 8, |
| 32 | total: 0 |
| 33 | }); |
| 34 | const ALL = "all"; |
| 35 | const currentStatus = ref<any>(ALL); |
| 36 | const { state, refresh } = useOverviewInfo(); |
| 37 | const refreshLoading = ref(false); |
| 38 | |
| 39 | const filterByName = (node: ComputedNodeInfo) => { |
| 40 | return operationForm.value.name !== "" |
| 41 | ? node.remarks.toLowerCase().includes(operationForm.value.name.toLowerCase()) |
| 42 | : true; |
| 43 | }; |
| 44 | |
| 45 | const remoteNodes = computed(() => { |
| 46 | const nodeList = state.value?.remote; |
| 47 | |
| 48 | const filteredNodes = |
| 49 | nodeList?.filter( |
| 50 | (node) => |
| 51 | (currentStatus.value === ALL || node.available === currentStatus.value) && |
| 52 | filterByName(node) |
| 53 | ) || []; |
| 54 | |
| 55 | operationForm.value.total = filteredNodes.length || 0; |
| 56 | |
| 57 | const startIndex = (operationForm.value.current - 1) * operationForm.value.pageSize; |
| 58 | const endIndex = startIndex + operationForm.value.pageSize; |
| 59 | |
| 60 | const sliceFilteredNodes = filteredNodes.slice(startIndex, endIndex); |
| 61 | |
| 62 | if (sliceFilteredNodes.length === 0 && operationForm.value.current > 1) { |
| 63 | operationForm.value.current -= 1; |
| 64 | refresh(); |
| 65 | } |
| 66 | |
| 67 | return sliceFilteredNodes; |
| 68 | }); |
| 69 | |
| 70 | const addNode = async (data: any) => { |
| 71 | await addNodeApi().execute({ |
| 72 | data |
| 73 | }); |
| 74 | await refresh(true); |
| 75 | }; |
| 76 | |
| 77 | const deleteNode = async (uuid: string) => { |
| 78 | await deleteNodeApi().execute({ |
| 79 | params: { |
| 80 | uuid |
| 81 | } |
| 82 | }); |
| 83 | await refresh(true); |
| 84 | }; |
no test coverage detected