anmolbabu has uploaded a new change for review. Change subject: webadmin : sort status and cluster column under volumes ......................................................................
webadmin : sort status and cluster column under volumes sort status and cluster column under volumes Change-Id: I73036f5a5d8e14df2bebdaeb2b3fa95938db2e8a Signed-off-by: Anmol Babu <anb...@redhat.com> --- M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusCell.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusColumn.java 3 files changed, 87 insertions(+), 36 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/92/30192/1 diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java index eec47f3..a2ab7f1 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java @@ -55,7 +55,9 @@ void initTable(ApplicationConstants constants) { getTable().enableColumnResizing(); - getTable().addColumn(new VolumeStatusColumn(), constants.empty(), "30px"); //$NON-NLS-1$ + VolumeStatusColumn statusColumn = new VolumeStatusColumn(); + statusColumn.makeSortable(); + getTable().addColumn(statusColumn, constants.empty(), "30px"); //$NON-NLS-1$ TextColumnWithTooltip<GlusterVolumeEntity> nameColumn = new TextColumnWithTooltip<GlusterVolumeEntity>() { @Override @@ -73,6 +75,7 @@ return object.getVdsGroupName(); } }; + clusterColumn.makeSortable(); getTable().addColumn(clusterColumn, constants.clusterVolume(), "150px"); //$NON-NLS-1$ TextColumnWithTooltip<GlusterVolumeEntity> volumeTypeColumn = diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusCell.java index f790711..f8612f5 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusCell.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusCell.java @@ -23,43 +23,76 @@ ApplicationTemplates applicationTemplates = ClientGinjectorProvider.getApplicationTemplates(); + protected enum VOLUMESTATUS { + UP, + DOWN, + ALLBRICKSDOWN, + SOMEBRICKSDOWN; + }; + + protected VOLUMESTATUS getVolumeStatus(GlusterVolumeEntity volume) { + GlusterStatus status = volume.getStatus(); + int count = 0; + int brickCount = volume.getBricks().size(); + switch (status) { + case DOWN : + return VOLUMESTATUS.DOWN; + case UP : + count = countDownBricks(volume); + if (count == 0) { + return VOLUMESTATUS.UP; + } else if (count < brickCount) { + return VOLUMESTATUS.SOMEBRICKSDOWN; + } else { + return VOLUMESTATUS.ALLBRICKSDOWN; + } + default : + return VOLUMESTATUS.DOWN; + } + } + + protected ImageResource getStatusImage(VOLUMESTATUS vStatus) { + // Find the image corresponding to the status of the volume: + ImageResource statusImage = null; + + switch (vStatus) { + case DOWN: + return resources.downImage(); + case UP : + return resources.upImage(); + case ALLBRICKSDOWN : + return resources.volumeAllBricksDownWarning(); + case SOMEBRICKSDOWN : + return resources.volumeBricksDownWarning(); + } + + return statusImage; + } + + private String getToolTip(VOLUMESTATUS status) { + switch (status) { + case DOWN: + return constants.down(); + case UP: + return constants.up(); + case SOMEBRICKSDOWN: + return constants.volumeBricksDown(); + case ALLBRICKSDOWN: + return constants.volumeAllBricksDown(); + default: + return constants.down(); + } + } + @Override public void render(Context context, GlusterVolumeEntity volume, SafeHtmlBuilder sb) { // Nothing to render if no volume is provided: if (volume == null) { return; } - int brickCount = volume.getBricks().size(); - int count = 0; - - // Find the image corresponding to the status of the volume: - GlusterStatus status = volume.getStatus(); - ImageResource statusImage = null; - String tooltip; - - switch (status) { - case DOWN: - statusImage = resources.downImage(); - tooltip = constants.down(); - break; - case UP: - count = countDownBricks(volume); - if (count == 0) { - statusImage = resources.upImage(); - tooltip = constants.up(); - } else if (count < brickCount) { - statusImage = resources.volumeBricksDownWarning(); - tooltip = constants.volumeBricksDown(); - } else { - statusImage = resources.volumeAllBricksDownWarning(); - tooltip = constants.volumeAllBricksDown(); - } - break; - default: - statusImage = resources.downImage(); - tooltip = constants.down(); - } - + VOLUMESTATUS vStatus = getVolumeStatus(volume); + ImageResource statusImage = getStatusImage(vStatus); + String tooltip = getToolTip(vStatus); // Generate the HTML for the image: SafeHtml statusImageHtml = SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(statusImage).getHTML()); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusColumn.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusColumn.java index bc6e916..862b8b6 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusColumn.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeStatusColumn.java @@ -1,13 +1,16 @@ package org.ovirt.engine.ui.webadmin.widget.table.column; +import java.util.Comparator; + import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; +import org.ovirt.engine.ui.common.widget.table.column.SimpleStatusImageComparator; +import org.ovirt.engine.ui.common.widget.table.column.SortableColumn; -import com.google.gwt.user.cellview.client.Column; +public class VolumeStatusColumn extends SortableColumn<GlusterVolumeEntity, GlusterVolumeEntity> { -public class VolumeStatusColumn extends Column<GlusterVolumeEntity, GlusterVolumeEntity> { - + static VolumeStatusCell statusCell = new VolumeStatusCell(); public VolumeStatusColumn() { - super(new VolumeStatusCell()); + super(statusCell); } @Override @@ -15,4 +18,16 @@ return object; } + public void makeSortable() { + makeSortable(new Comparator<GlusterVolumeEntity>() { + + private final SimpleStatusImageComparator imageComparator = new SimpleStatusImageComparator(); + + @Override + public int compare(GlusterVolumeEntity o1, GlusterVolumeEntity o2) { + return imageComparator.compare(statusCell.getStatusImage(statusCell.getVolumeStatus(o1)), statusCell.getStatusImage(statusCell.getVolumeStatus(o2))); + } + }); + } + } -- To view, visit http://gerrit.ovirt.org/30192 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I73036f5a5d8e14df2bebdaeb2b3fa95938db2e8a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: anmolbabu <anb...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches