Reorder state filters so start is first
This commit is contained in:
parent
70639194ea
commit
4a9b48caa0
@ -319,9 +319,8 @@ const toggleFilter = (type, value) => {
|
|||||||
filterVMs();
|
filterVMs();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Reset filters
|
// Reset all filters
|
||||||
const resetFilters = () => {
|
const resetFilters = () => {
|
||||||
// Reset all filters and apply immediately
|
|
||||||
Object.keys(appliedFilters.value.states).forEach(state => {
|
Object.keys(appliedFilters.value.states).forEach(state => {
|
||||||
appliedFilters.value.states[state] = false;
|
appliedFilters.value.states[state] = false;
|
||||||
});
|
});
|
||||||
@ -335,9 +334,17 @@ const resetFilters = () => {
|
|||||||
|
|
||||||
// Count active filters
|
// Count active filters
|
||||||
const activeFiltersCount = computed(() => {
|
const activeFiltersCount = computed(() => {
|
||||||
const stateFiltersCount = Object.values(appliedFilters.value.states).filter(v => v).length;
|
let count = 0;
|
||||||
const nodeFiltersCount = Object.values(appliedFilters.value.nodes).filter(v => v).length;
|
|
||||||
return stateFiltersCount + nodeFiltersCount;
|
Object.values(appliedFilters.value.states).forEach(isActive => {
|
||||||
|
if (isActive) count++;
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.values(appliedFilters.value.nodes).forEach(isActive => {
|
||||||
|
if (isActive) count++;
|
||||||
|
});
|
||||||
|
|
||||||
|
return count;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get available states from VM data
|
// Get available states from VM data
|
||||||
@ -346,7 +353,24 @@ const availableStates = computed(() => {
|
|||||||
vmData.value.forEach(vm => {
|
vmData.value.forEach(vm => {
|
||||||
if (vm.state) states.add(vm.state);
|
if (vm.state) states.add(vm.state);
|
||||||
});
|
});
|
||||||
return Array.from(states).sort();
|
// Get all states as an array
|
||||||
|
const statesArray = Array.from(states);
|
||||||
|
|
||||||
|
// Remove 'start' if it exists
|
||||||
|
const startIndex = statesArray.indexOf('start');
|
||||||
|
if (startIndex !== -1) {
|
||||||
|
statesArray.splice(startIndex, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort the remaining states
|
||||||
|
statesArray.sort();
|
||||||
|
|
||||||
|
// Add 'start' at the beginning if it was present
|
||||||
|
if (startIndex !== -1) {
|
||||||
|
statesArray.unshift('start');
|
||||||
|
}
|
||||||
|
|
||||||
|
return statesArray;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get available nodes from VM data
|
// Get available nodes from VM data
|
||||||
@ -365,27 +389,29 @@ const filteredVMs = computed(() => {
|
|||||||
let filtered = [...vmData.value];
|
let filtered = [...vmData.value];
|
||||||
|
|
||||||
// Apply search filter
|
// Apply search filter
|
||||||
if (searchQuery.value.trim()) {
|
if (searchQuery.value) {
|
||||||
const query = searchQuery.value.toLowerCase();
|
const query = searchQuery.value.toLowerCase();
|
||||||
filtered = filtered.filter(vm =>
|
filtered = filtered.filter(vm =>
|
||||||
vm.name.toLowerCase().includes(query)
|
vm.name.toLowerCase().includes(query)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply state filters
|
// Apply state filters if any are active
|
||||||
const hasStateFilters = Object.values(appliedFilters.value.states).some(v => v);
|
const activeStates = Object.entries(appliedFilters.value.states)
|
||||||
if (hasStateFilters) {
|
.filter(([_, isActive]) => isActive)
|
||||||
filtered = filtered.filter(vm => {
|
.map(([state]) => state);
|
||||||
return appliedFilters.value.states[vm.state] === true;
|
|
||||||
});
|
if (activeStates.length > 0) {
|
||||||
|
filtered = filtered.filter(vm => activeStates.includes(vm.state));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply node filters
|
// Apply node filters if any are active
|
||||||
const hasNodeFilters = Object.values(appliedFilters.value.nodes).some(v => v);
|
const activeNodes = Object.entries(appliedFilters.value.nodes)
|
||||||
if (hasNodeFilters) {
|
.filter(([_, isActive]) => isActive)
|
||||||
filtered = filtered.filter(vm => {
|
.map(([node]) => node);
|
||||||
return appliedFilters.value.nodes[vm.node] === true;
|
|
||||||
});
|
if (activeNodes.length > 0) {
|
||||||
|
filtered = filtered.filter(vm => activeNodes.includes(vm.node));
|
||||||
}
|
}
|
||||||
|
|
||||||
return filtered;
|
return filtered;
|
||||||
@ -399,19 +425,17 @@ const selectedVMData = computed(() => {
|
|||||||
|
|
||||||
// Get status class based on VM state
|
// Get status class based on VM state
|
||||||
const getStatusClass = (state) => {
|
const getStatusClass = (state) => {
|
||||||
if (!state) return 'status-unknown';
|
if (!state) return '';
|
||||||
|
|
||||||
switch (state) {
|
switch(state.toLowerCase()) {
|
||||||
case 'start':
|
case 'start':
|
||||||
return 'status-running';
|
return 'status-running';
|
||||||
case 'shutdown':
|
case 'stop':
|
||||||
return 'status-stopped';
|
return 'status-stopped';
|
||||||
case 'pause':
|
case 'disable':
|
||||||
return 'status-paused';
|
return 'status-disabled';
|
||||||
case 'crash':
|
|
||||||
return 'status-error';
|
|
||||||
default:
|
default:
|
||||||
return 'status-unknown';
|
return '';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user