Alexander Wels has uploaded a new change for review. Change subject: webadmin: host tab sorting ......................................................................
webadmin: host tab sorting - Implemented sorting in hosts main tab - Implemented sorting in hosts sub tabs. - Did NOT implement sort on Host Network Interfaces tab. Change-Id: Icf32960b4ad0c2510da2895f86950455766b5237 Signed-off-by: Alexander Wels <[email protected]> --- M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdsConditionFieldAutoCompleter.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlColumn.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostHookView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java 7 files changed, 176 insertions(+), 42 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/76/28376/1 diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdsConditionFieldAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdsConditionFieldAutoCompleter.java index d9c9e7f..5708d57 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdsConditionFieldAutoCompleter.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VdsConditionFieldAutoCompleter.java @@ -8,77 +8,87 @@ import org.ovirt.engine.core.common.businessentities.VDSStatus; public class VdsConditionFieldAutoCompleter extends BaseConditionFieldAutoCompleter { + public static final String NAME = "NAME"; + public static final String ADDRESS = "ADDRESS"; + public static final String CLUSTER = "CLUSTER"; + public static final String DATACENTER = "DATACENTER"; + public static final String STATUS = "STATUS"; + public static final String ACTIVE_VMS = "ACTIVE_VMS"; + public static final String MEM_USAGE = "MEM_USAGE"; + public static final String CPU_USAGE = "CPU_USAGE"; + public static final String NETWORK_USAGE = "NETWORK_USAGE"; + public VdsConditionFieldAutoCompleter() { super(); - mVerbs.add("NAME"); + mVerbs.add(NAME); mVerbs.add("COMMENT"); - mVerbs.add("STATUS"); - mVerbs.add("CLUSTER"); - mVerbs.add("ADDRESS"); - mVerbs.add("CPU_USAGE"); - mVerbs.add("MEM_USAGE"); - mVerbs.add("NETWORK_USAGE"); + mVerbs.add(STATUS); + mVerbs.add(CLUSTER); + mVerbs.add(ADDRESS); + mVerbs.add(CPU_USAGE); + mVerbs.add(MEM_USAGE); + mVerbs.add(NETWORK_USAGE); mVerbs.add("LOAD"); mVerbs.add("VERSION"); mVerbs.add("CPUS"); mVerbs.add("MEMORY"); mVerbs.add("CPU_SPEED"); mVerbs.add("CPU_MODEL"); - mVerbs.add("ACTIVE_VMS"); + mVerbs.add(ACTIVE_VMS); mVerbs.add("MIGRATING_VMS"); mVerbs.add("COMMITTED_MEM"); mVerbs.add("TAG"); mVerbs.add("TYPE"); - mVerbs.add("DATACENTER"); + mVerbs.add(DATACENTER); mVerbs.add("ARCHITECTURE"); // mVerbs.Add("NOTE", "NOTE"); buildCompletions(); mVerbs.add("ID"); // Building the types dict - getTypeDictionary().put("NAME", String.class); + getTypeDictionary().put(NAME, String.class); getTypeDictionary().put("COMMENT", String.class); - getTypeDictionary().put("STATUS", VDSStatus.class); - getTypeDictionary().put("CLUSTER", String.class); - getTypeDictionary().put("ADDRESS", String.class); - getTypeDictionary().put("CPU_USAGE", Integer.class); - getTypeDictionary().put("MEM_USAGE", Integer.class); - getTypeDictionary().put("NETWORK_USAGE", Integer.class); + getTypeDictionary().put(STATUS, VDSStatus.class); + getTypeDictionary().put(CLUSTER, String.class); + getTypeDictionary().put(ADDRESS, String.class); + getTypeDictionary().put(CPU_USAGE, Integer.class); + getTypeDictionary().put(MEM_USAGE, Integer.class); + getTypeDictionary().put(NETWORK_USAGE, Integer.class); getTypeDictionary().put("LOAD", BigDecimal.class); getTypeDictionary().put("VERSION", String.class); getTypeDictionary().put("CPUS", Integer.class); getTypeDictionary().put("MEMORY", Integer.class); getTypeDictionary().put("CPU_SPEED", BigDecimal.class); getTypeDictionary().put("CPU_MODEL", String.class); - getTypeDictionary().put("ACTIVE_VMS", Integer.class); + getTypeDictionary().put(ACTIVE_VMS, Integer.class); getTypeDictionary().put("MIGRATING_VMS", Integer.class); getTypeDictionary().put("COMMITTED_MEM", Integer.class); getTypeDictionary().put("TAG", String.class); getTypeDictionary().put("TYPE", VDSNiceType.class); - getTypeDictionary().put("DATACENTER", String.class); + getTypeDictionary().put(DATACENTER, String.class); getTypeDictionary().put("ID", UUID.class); getTypeDictionary().put("ARCHITECTURE", ArchitectureType.class); // mTypeDict.Add("NOTE", typeof(string)); // building the ColumnName Dict - columnNameDict.put("NAME", "vds_name"); + columnNameDict.put(NAME, "vds_name"); columnNameDict.put("COMMENT", "free_text_comment"); - columnNameDict.put("STATUS", "status"); - columnNameDict.put("CLUSTER", "vds_group_name"); - columnNameDict.put("ADDRESS", "host_name"); - columnNameDict.put("CPU_USAGE", "usage_cpu_percent"); - columnNameDict.put("MEM_USAGE", "usage_mem_percent"); - columnNameDict.put("NETWORK_USAGE", "usage_network_percent"); + columnNameDict.put(STATUS, "status"); + columnNameDict.put(CLUSTER, "vds_group_name"); + columnNameDict.put(ADDRESS, "host_name"); + columnNameDict.put(CPU_USAGE, "usage_cpu_percent"); + columnNameDict.put(MEM_USAGE, "usage_mem_percent"); + columnNameDict.put(NETWORK_USAGE, "usage_network_percent"); columnNameDict.put("LOAD", "cpu_load"); columnNameDict.put("VERSION", "software_version"); columnNameDict.put("CPUS", "cpu_cores"); columnNameDict.put("MEMORY", "physical_mem_mb"); columnNameDict.put("CPU_SPEED", "cpu_speed_mh"); columnNameDict.put("CPU_MODEL", "cpu_model"); - columnNameDict.put("ACTIVE_VMS", "vm_active"); + columnNameDict.put(ACTIVE_VMS, "vm_active"); columnNameDict.put("MIGRATING_VMS", "vm_migrating"); columnNameDict.put("COMMITTED_MEM", "mem_commited"); columnNameDict.put("TAG", "tag_name"); columnNameDict.put("TYPE", "vds_type"); - columnNameDict.put("DATACENTER", "storage_pool_name"); + columnNameDict.put(DATACENTER, "storage_pool_name"); columnNameDict.put("ID", "vds_id"); columnNameDict.put("ARCHITECTURE", "architecture"); // mColumnNameDict.Add("NOTE", "note"); @@ -89,9 +99,9 @@ @Override public IAutoCompleter getFieldRelationshipAutoCompleter(String fieldName) { if ("MEMORY".equals(fieldName) || "CPUS".equals(fieldName) - || "CPU_USAGE".equals(fieldName) || "MEM_USAGE".equals(fieldName) + || CPU_USAGE.equals(fieldName) || MEM_USAGE.equals(fieldName) || "LOAD".equals(fieldName) || "CPU_SPEED".equals(fieldName) - || "ACTIVE_VMS".equals(fieldName) || "NETWORK_USAGE".equals(fieldName) + || ACTIVE_VMS.equals(fieldName) || NETWORK_USAGE.equals(fieldName) || "COMMITTED_MEM".equals(fieldName)) { return NumericConditionRelationAutoCompleter.INSTANCE; } @@ -105,7 +115,7 @@ @Override public IConditionValueAutoCompleter getFieldValueAutoCompleter(String fieldName) { IConditionValueAutoCompleter retval = null; - if ("STATUS".equals(fieldName)) { + if (STATUS.equals(fieldName)) { retval = new EnumValueAutoCompleter(VDSStatus.class); } else if ("TYPE".equals(fieldName)) { diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlColumn.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlColumn.java index b2d7212..b6fe700 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlColumn.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlColumn.java @@ -2,7 +2,6 @@ import com.google.gwt.cell.client.SafeHtmlCell; import com.google.gwt.safehtml.shared.SafeHtml; -import com.google.gwt.user.cellview.client.Column; /** * Column for displaying {@link SafeHtml} instances. @@ -10,7 +9,7 @@ * @param <T> * Table row data type. */ -public abstract class SafeHtmlColumn<T> extends Column<T, SafeHtml> { +public abstract class SafeHtmlColumn<T> extends SortableColumn<T, SafeHtml> { public SafeHtmlColumn() { super(new SafeHtmlCell()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java index 6f25113..a62f47a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java @@ -31,7 +31,7 @@ }; /** - * Comparator for the name field in {@code VM}. + * Comparator for the uptime field in {@code VM}. */ public static final Comparator<VM> UPTIME = new Comparator<VM>() { @Override @@ -40,4 +40,80 @@ return ((Long)vm1.getRoundedElapsedTime().longValue()).compareTo(vm2.getRoundedElapsedTime().longValue()); } }; + + /** + * Comparator for the vds group name field in {@code VM}. + */ + public static final Comparator<VM> CLUSTER = new Comparator<VM>() { + @Override + public int compare(VM vm1, VM vm2) { + return lexoNumeric.compare(vm1.getVdsGroupName(), vm2.getVdsGroupName()); + } + }; + + /** + * Comparator for the Vm ipaddress field in {@code VM}. + */ + public static final Comparator<VM> IPADDRESS = new Comparator<VM>() { + @Override + public int compare(VM vm1, VM vm2) { + return ipStringToLong(vm1.getVmIp()).compareTo(ipStringToLong(vm2.getVmIp())); + } + }; + + /** + * Comparator for the fully qualified domain name field in {@code VM}. + */ + public static final Comparator<VM> FQDN = new Comparator<VM>() { + @Override + public int compare(VM vm1, VM vm2) { + return lexoNumeric.compare(vm1.getVmFQDN(), vm2.getVmFQDN()); + } + }; + + /** + * Comparator for the memory percentage field in {@code VM}. + */ + public static final Comparator<VM> MEMORY_PERCENTAGE = new Comparator<VM>() { + @Override + public int compare(VM vm1, VM vm2) { + return vm1.getUsageMemPercent().compareTo(vm2.getUsageMemPercent()); + } + }; + + /** + * Comparator for the cpu percentage field in {@code VM}. + */ + public static final Comparator<VM> CPU_PERCENTAGE = new Comparator<VM>() { + @Override + public int compare(VM vm1, VM vm2) { + return vm1.getUsageCpuPercent().compareTo(vm2.getUsageCpuPercent()); + } + }; + + /** + * Comparator for the cpu percentage field in {@code VM}. + */ + public static final Comparator<VM> NETWORK_PERCENTAGE = new Comparator<VM>() { + @Override + public int compare(VM vm1, VM vm2) { + return vm1.getUsageNetworkPercent().compareTo(vm2.getUsageNetworkPercent()); + } + }; + + /** + * Helper method to convert Ip address strings to Longs so we can sort them. + * @param ipAddress The ip address to convert. + * @return The {@code Long} representation of the ip address. + */ + private static Long ipStringToLong(String ipAddress) { + String[] ipAddressInArray = ipAddress.split("\\."); //$NON-NLS-1$ + + long result = 0; + for (int i = 0; i < ipAddressInArray.length; i++) { + int power = 3 - i; + result += (Integer.parseInt(ipAddressInArray[i]) % 256 * Math.pow(256, power)); + } + return result; + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java index 957bb70..fdf59d5 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java @@ -29,6 +29,7 @@ import org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.FenceActionType; +import org.ovirt.engine.core.common.businessentities.Permissions; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.RoleType; import org.ovirt.engine.core.common.businessentities.StoragePool; @@ -38,7 +39,6 @@ import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VDSType; import org.ovirt.engine.core.common.businessentities.VdsSpmStatus; -import org.ovirt.engine.core.common.businessentities.Permissions; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.mode.ApplicationMode; import org.ovirt.engine.core.common.queries.ConfigurationValues; @@ -1843,11 +1843,17 @@ @Override protected void syncSearch() { - SearchParameters tempVar = new SearchParameters(getSearchString(), SearchType.VDS, isCaseSensitiveSearch()); + SearchParameters tempVar = new SearchParameters(applySortOptions(getSearchString()), SearchType.VDS, + isCaseSensitiveSearch()); tempVar.setMaxCount(getSearchPageSize()); super.syncSearch(VdcQueryType.Search, tempVar); } + @Override + public boolean supportsServerSideSorting() { + return true; + } + public void cancel() { cancelConfirm(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java index 60d3daa..1c0e4c1 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java @@ -7,6 +7,7 @@ import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VdsSpmStatus; import org.ovirt.engine.core.common.mode.ApplicationMode; +import org.ovirt.engine.core.searchbackend.VdsConditionFieldAutoCompleter; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.common.widget.action.ActionButtonDefinition; @@ -98,6 +99,7 @@ return object.getName(); } }; + nameColumn.makeSortable(VdsConditionFieldAutoCompleter.NAME); getTable().addColumn(nameColumn, constants.nameHost(), "150px"); //$NON-NLS-1$ CommentColumn<VDS> commentColumn = new CommentColumn<VDS>(); @@ -109,6 +111,7 @@ return object.getHostName(); } }; + hostColumn.makeSortable(VdsConditionFieldAutoCompleter.ADDRESS); getTable().addColumn(hostColumn, constants.ipHost(), "150px"); //$NON-NLS-1$ TextColumnWithTooltip<VDS> clusterColumn = new TextColumnWithTooltip<VDS>() { @@ -117,6 +120,7 @@ return object.getVdsGroupName(); } }; + clusterColumn.makeSortable(VdsConditionFieldAutoCompleter.CLUSTER); getTable().addColumn(clusterColumn, constants.clusterHost(), "150px"); //$NON-NLS-1$ if (ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly) { @@ -126,6 +130,7 @@ return object.getStoragePoolName(); } }; + dcColumn.makeSortable(VdsConditionFieldAutoCompleter.DATACENTER); getTable().addColumn(dcColumn, constants.dcHost(), "150px"); //$NON-NLS-1$ } @@ -135,10 +140,13 @@ return object.getStatus(); } }; + statusColumn.makeSortable(VdsConditionFieldAutoCompleter.STATUS); getTable().addColumn(statusColumn, constants.statusHost(), "100px"); //$NON-NLS-1$ if (ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly) { - getTable().addColumn(new VmCountColumn(), constants.vmsCount(), "110px"); //$NON-NLS-1$ + VmCountColumn vmCountColumn = new VmCountColumn(); + vmCountColumn.makeSortable(VdsConditionFieldAutoCompleter.ACTIVE_VMS); + getTable().addColumn(vmCountColumn, constants.vmsCount(), "110px"); //$NON-NLS-1$ } PercentColumn<VDS> memColumn = new PercentColumn<VDS>() { @@ -147,6 +155,7 @@ return object.getUsageMemPercent(); } }; + memColumn.makeSortable(VdsConditionFieldAutoCompleter.MEM_USAGE); getTable().addColumn(memColumn, constants.memoryHost(), "60px"); //$NON-NLS-1$ PercentColumn<VDS> cpuColumn = new PercentColumn<VDS>() { @@ -155,6 +164,7 @@ return object.getUsageCpuPercent(); } }; + cpuColumn.makeSortable(VdsConditionFieldAutoCompleter.CPU_USAGE); getTable().addColumn(cpuColumn, constants.cpuHost(), "60px"); //$NON-NLS-1$ PercentColumn<VDS> netColumn = new PercentColumn<VDS>() { @@ -163,6 +173,7 @@ return object.getUsageNetworkPercent(); } }; + netColumn.makeSortable(VdsConditionFieldAutoCompleter.NETWORK_USAGE); getTable().addColumn(netColumn, constants.networkHost(), "60px"); //$NON-NLS-1$ if (ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostHookView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostHookView.java index fdfff96..b2b3878 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostHookView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostHookView.java @@ -1,10 +1,12 @@ package org.ovirt.engine.ui.webadmin.section.main.view.tab.host; +import java.util.Comparator; import java.util.Map; import javax.inject.Inject; import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostHooksListModel; @@ -15,6 +17,10 @@ public class SubTabHostHookView extends AbstractSubTabTableView<VDS, Map<String, String>, HostListModel, HostHooksListModel> implements SubTabHostHookPresenter.ViewDef { + private static final String EVENT_NAME = "EventName"; //$NON-NLS-1$ + private static final String SCRIPT_NAME = "ScriptName"; //$NON-NLS-1$ + private static final String PROPERTY_NAME = "PropertyName"; //$NON-NLS-1$ + private static final String PROPERTY_VALUE = "PropertyValue"; //$NON-NLS-1$ @Inject public SubTabHostHookView(SearchableDetailModelProvider<Map<String, String>, HostListModel, HostHooksListModel> modelProvider, ApplicationConstants constants) { @@ -29,34 +35,50 @@ TextColumnWithTooltip<Map<String, String>> eventColumn = new TextColumnWithTooltip<Map<String, String>>() { @Override public String getValue(Map<String, String> object) { - return object.get("EventName"); //$NON-NLS-1$ + return object.get(EVENT_NAME); } }; + eventColumn.makeSortable(new HostHookComparator(EVENT_NAME)); getTable().addColumn(eventColumn, constants.eventNameHook(), "220px"); //$NON-NLS-1$ TextColumnWithTooltip<Map<String, String>> scriptColumn = new TextColumnWithTooltip<Map<String, String>>() { @Override public String getValue(Map<String, String> object) { - return object.get("ScriptName"); //$NON-NLS-1$ + return object.get(SCRIPT_NAME); } }; + scriptColumn.makeSortable(new HostHookComparator(SCRIPT_NAME)); getTable().addColumn(scriptColumn, constants.scriptNameHook(), "220px"); //$NON-NLS-1$ TextColumnWithTooltip<Map<String, String>> propNameColumn = new TextColumnWithTooltip<Map<String, String>>() { @Override public String getValue(Map<String, String> object) { - return object.get("PropertyName"); //$NON-NLS-1$ + return object.get(PROPERTY_NAME); } }; + propNameColumn.makeSortable(new HostHookComparator(PROPERTY_NAME)); getTable().addColumn(propNameColumn, constants.propertyNameHook(), "220px"); //$NON-NLS-1$ TextColumnWithTooltip<Map<String, String>> propValueColumn = new TextColumnWithTooltip<Map<String, String>>() { @Override public String getValue(Map<String, String> object) { - return object.get("PropertyValue"); //$NON-NLS-1$ + return object.get(PROPERTY_VALUE); } }; + propValueColumn.makeSortable(new HostHookComparator(PROPERTY_VALUE)); getTable().addColumn(propValueColumn, constants.propertyValueHook(), "250px"); //$NON-NLS-1$ } + private static class HostHookComparator implements Comparator<Map<String, String>> { + private final String key; + + HostHookComparator(String key) { + this.key = key; + } + + @Override + public int compare(Map<String, String> map1, Map<String, String> map2) { + return new LexoNumericComparator().compare(map1.get(key), map2.get(key)); + } + }; } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java index 52291f0..86020cd 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java @@ -11,6 +11,7 @@ import org.ovirt.engine.ui.common.widget.table.column.EnumColumn; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.comparators.VMComparator; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostVmListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; @@ -53,6 +54,7 @@ return object.getName(); } }; + nameColumn.makeSortable(VMComparator.NAME); getTable().addColumn(nameColumn, constants.nameVm(), "160px"); //$NON-NLS-1$ getTable().addColumn(new VmTypeColumn(), constants.empty(), "30px"); //$NON-NLS-1$ @@ -63,6 +65,7 @@ return object.getVdsGroupName(); } }; + clusterColumn.makeSortable(VMComparator.CLUSTER); getTable().addColumn(clusterColumn, constants.clusterVm(), "160px"); //$NON-NLS-1$ TextColumnWithTooltip<VM> ipColumn = new TextColumnWithTooltip<VM>() { @@ -71,6 +74,7 @@ return object.getVmIp(); } }; + ipColumn.makeSortable(VMComparator.IPADDRESS); getTable().addColumn(ipColumn, constants.ipVm(), "200px"); //$NON-NLS-1$ TextColumnWithTooltip<VM> fqdnColumn = new TextColumnWithTooltip<VM>() { @@ -79,6 +83,7 @@ return object.getVmFQDN(); } }; + fqdnColumn.makeSortable(VMComparator.FQDN); getTable().addColumn(fqdnColumn, constants.fqdn(), "200px"); //$NON-NLS-1$ PercentColumn<VM> memColumn = new PercentColumn<VM>() { @@ -87,6 +92,7 @@ return object.getUsageMemPercent(); } }; + memColumn.makeSortable(VMComparator.MEMORY_PERCENTAGE); getTable().addColumn(memColumn, constants.memoryVm(), "120px"); //$NON-NLS-1$ PercentColumn<VM> cpuColumn = new PercentColumn<VM>() { @@ -95,6 +101,7 @@ return object.getUsageCpuPercent(); } }; + cpuColumn.makeSortable(VMComparator.CPU_PERCENTAGE); getTable().addColumn(cpuColumn, constants.cpuVm(), "120px"); //$NON-NLS-1$ PercentColumn<VM> netColumn = new PercentColumn<VM>() { @@ -103,6 +110,7 @@ return object.getUsageNetworkPercent(); } }; + netColumn.makeSortable(VMComparator.NETWORK_PERCENTAGE); getTable().addColumn(netColumn, constants.networkVm(), "120px"); //$NON-NLS-1$ TextColumnWithTooltip<VM> statusColumn = new EnumColumn<VM, VMStatus>() { @@ -117,15 +125,17 @@ return object.getStatus(); } }; + statusColumn.makeSortable(VMComparator.STATUS); getTable().addColumn(statusColumn, constants.statusVm(), "130px"); //$NON-NLS-1$ - TextColumnWithTooltip<VM> hostColumn = new UptimeColumn<VM>() { + TextColumnWithTooltip<VM> uptimeColumn = new UptimeColumn<VM>() { @Override protected Double getRawValue(VM object) { return object.getRoundedElapsedTime(); } }; - getTable().addColumn(hostColumn, constants.uptimeVm(), "110px"); //$NON-NLS-1$ + uptimeColumn.makeSortable(VMComparator.UPTIME); + getTable().addColumn(uptimeColumn, constants.uptimeVm(), "110px"); //$NON-NLS-1$ // add action buttons getTable().addActionButton(new WebAdminImageButtonDefinition<VM>(constants.suspendVm(), -- To view, visit http://gerrit.ovirt.org/28376 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icf32960b4ad0c2510da2895f86950455766b5237 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alexander Wels <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
