Kanagaraj M has uploaded a new change for review. Change subject: webadmin: [WIP] adding bricks to rebalance/remove-bricks status ......................................................................
webadmin: [WIP] adding bricks to rebalance/remove-bricks status . Change-Id: Ie784b42fcd0ef1f77f7c8d289c3cfd37ab77389f Signed-off-by: Kanagaraj M <[email protected]> --- M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.ui.xml A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeRebalanceStatusHostCell.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeRebalanceStatusHostColumn.java 5 files changed, 115 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/86/23086/1 diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java index bfcfea7..74f25b3 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java @@ -159,4 +159,12 @@ @Template("<div style='width:90%; display:inline-block; vertical-align: top;'>{0}</div>") SafeHtml radioButtonLabel(String text); + + @Template("<table style='width: 100%;'> " + + "<tr>" + + "<td style='width: 70%;'> {0} </td>" + + "<td style='width: 30%;'> (<a href='javascript:;' style='display: inline-block'>{1} Bricks</a>)</td>" + + "</tr>" + + "</table>") + SafeHtml volumeRebalanceHostWithBricks(String host, int bricks); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.java index 2664929..17a5100 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.java @@ -26,10 +26,12 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.VolumeRebalanceStatusPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.widget.table.column.HumanReadableTimeColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.RebalanceFileSizeColumn; +import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeRebalanceStatusHostColumn; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.SimpleBeanEditorDriver; import com.google.gwt.event.shared.EventBus; +import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Label; @@ -99,6 +101,9 @@ private final Driver driver = GWT.create(Driver.class); + @UiField + WidgetStyle style; + @Inject public VolumeRebalanceStatusPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants, ApplicationMessages messages) { super(eventBus, resources); @@ -133,6 +138,8 @@ startTimeEditor = getInstanceOfDateEditor(); stopTimeEditor = getInstanceOfDateEditor(); + + rebalanceHostsTable.addColumn(new VolumeRebalanceStatusHostColumn(style), constants.rebalanceSessionHost()); rebalanceHostsTable.addEntityModelColumn(new EntityModelTextColumn<GlusterVolumeTaskStatusForHost>() { @Override @@ -239,4 +246,9 @@ super.setMessage(message); messageLabel.setText(message); } + + public interface WidgetStyle extends CssResource { + + String bricksPopup(); + } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.ui.xml index 5688de8..dfa49d0 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeRebalanceStatusPopupView.ui.xml @@ -4,7 +4,7 @@ xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"> - <ui:style> + <ui:style type="org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.VolumeRebalanceStatusPopupView.WidgetStyle"> .tablePanel { height: 415px; width: 981px; @@ -29,6 +29,10 @@ padding-top: 5px; padding-left: 5px; } + + .bricksPopup { + border: 1px solid #CED8DF; + } </ui:style> <d:SimpleDialogPanel width="1000px" height="550px"> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeRebalanceStatusHostCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeRebalanceStatusHostCell.java new file mode 100644 index 0000000..1cec3e8 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeRebalanceStatusHostCell.java @@ -0,0 +1,70 @@ +package org.ovirt.engine.ui.webadmin.widget.table.column; + +import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeTaskStatusForHost; +import org.ovirt.engine.ui.common.widget.PopupPanel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationTemplates; +import org.ovirt.engine.ui.webadmin.gin.ClientGinjectorProvider; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.VolumeRebalanceStatusPopupView.WidgetStyle; + +import com.google.gwt.cell.client.AbstractCell; +import com.google.gwt.cell.client.ValueUpdater; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.EventTarget; +import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Label; + +public class VolumeRebalanceStatusHostCell extends AbstractCell<GlusterVolumeTaskStatusForHost> { + + ApplicationConstants constants = ClientGinjectorProvider.getApplicationConstants(); + + ApplicationTemplates applicationTemplates = ClientGinjectorProvider.getApplicationTemplates(); + + private PopupPanel popupPanel; + + public VolumeRebalanceStatusHostCell(WidgetStyle style) { + super("click"); //$NON-NLS-1$ + popupPanel = new PopupPanel(true); + style.ensureInjected(); + popupPanel.setStylePrimaryName(style.bricksPopup()); + } + + @Override + public void render(Context context, GlusterVolumeTaskStatusForHost status, SafeHtmlBuilder sb) { + // Nothing to render if no status is provided: + if (status == null || status.getHostName() == null) { + return; + } + int brickCount = status.getBricks().size(); + sb.append(applicationTemplates.volumeRebalanceHostWithBricks(status.getHostName(), brickCount)); + } + + @Override + public void onBrowserEvent(Context context, + Element parent, + GlusterVolumeTaskStatusForHost value, + NativeEvent event, + ValueUpdater<GlusterVolumeTaskStatusForHost> valueUpdater) { + super.onBrowserEvent(context, parent, value, event, valueUpdater); + int eventX = event.getClientX(); + int eventY = event.getClientY(); + + // Handle the click event. + if ("click".equals(event.getType())) { //$NON-NLS-1$ + // Ignore clicks that occur outside of the outermost element. + EventTarget eventTarget = event.getEventTarget(); + if (parent.getFirstChildElement().isOrHasChild(Element.as(eventTarget))) { + popupPanel.clear(); + FlowPanel panel = new FlowPanel(); + for (GlusterBrickEntity brick : value.getBricks()) { + panel.add(new Label(brick.getQualifiedName())); + } + popupPanel.setWidget(panel); + popupPanel.showAndFitToScreen(eventX, eventY); + } + } + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeRebalanceStatusHostColumn.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeRebalanceStatusHostColumn.java new file mode 100644 index 0000000..e4ab7dd --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeRebalanceStatusHostColumn.java @@ -0,0 +1,20 @@ +package org.ovirt.engine.ui.webadmin.widget.table.column; + +import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeTaskStatusForHost; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.gluster.VolumeRebalanceStatusPopupView.WidgetStyle; + +import com.google.gwt.user.cellview.client.Column; + +public class VolumeRebalanceStatusHostColumn extends Column<EntityModel<GlusterVolumeTaskStatusForHost>, GlusterVolumeTaskStatusForHost> { + + public VolumeRebalanceStatusHostColumn(WidgetStyle style) { + super(new VolumeRebalanceStatusHostCell(style)); + } + + @Override + public GlusterVolumeTaskStatusForHost getValue(EntityModel<GlusterVolumeTaskStatusForHost> object) { + return object.getEntity(); + } + +} -- To view, visit http://gerrit.ovirt.org/23086 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie784b42fcd0ef1f77f7c8d289c3cfd37ab77389f Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Kanagaraj M <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
