anmolbabu has uploaded a new change for review. Change subject: webadmin : Volume Capacity UI - Part2 ......................................................................
webadmin : Volume Capacity UI - Part2 This patch introduces capacity progress bar hover message. On hover of volume and brick capacity progress bars, a message containing the free, used and total capacities of hovered entity. Change-Id: I983daf32966527cdfa7773e07aa055a24519fbe2 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1144009 Signed-off-by: Anmol Babu <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java 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/tab/MainTabVolumeView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/VolumeCapacityLabel.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/VolumeCapacityRenderer.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/BrickCapacityCell.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/GlusterCapacityCell.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java 12 files changed, 260 insertions(+), 41 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/51/40351/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java index f2c51a5..41df6ff 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java @@ -22,6 +22,9 @@ private String nfsMountPoint; private Set<TransportType> transportTypes; private String snapMaxLimit; + private Long volumeTotalCapacity; + private Long volumeFreeCapacity; + private Long volumeUsedCapacity; public String getName() { return name; @@ -143,6 +146,15 @@ setNumOfBricks(entity.getBricks() != null ? Integer.toString(entity.getBricks().size()) : null); setTransportTypes(entity.getTransportTypes()); setSnapMaxLimit(entity.getSnapMaxLimit() != null ? entity.getSnapMaxLimit().toString() : null); + if(entity.getAdvancedDetails() != null && entity.getAdvancedDetails().getCapacityInfo() != null) { + setVolumeFreeCapacity(entity.getAdvancedDetails().getCapacityInfo().getFreeSize()); + setVolumeTotalCapacity(entity.getAdvancedDetails().getCapacityInfo().getTotalSize()); + setVolumeUsedCapacity(entity.getAdvancedDetails().getCapacityInfo().getUsedSize()); + } else { + setVolumeFreeCapacity(null); + setVolumeTotalCapacity(null); + setVolumeUsedCapacity(null); + } } public Set<TransportType> getTransportTypes() { @@ -152,4 +164,28 @@ public void setTransportTypes(Set<TransportType> transportTypes) { this.transportTypes = transportTypes; } + + public Long getVolumeTotalCapacity() { + return volumeTotalCapacity; + } + + public void setVolumeTotalCapacity(Long volumeTotalCapacity) { + this.volumeTotalCapacity = volumeTotalCapacity; + } + + public Long getVolumeFreeCapacity() { + return volumeFreeCapacity; + } + + public void setVolumeFreeCapacity(Long volumeFreeCapacity) { + this.volumeFreeCapacity = volumeFreeCapacity; + } + + public Long getVolumeUsedCapacity() { + return volumeUsedCapacity; + } + + public void setVolumeUsedCapacity(Long volumeUsedCapacity) { + this.volumeUsedCapacity = volumeUsedCapacity; + } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index a1a5719..eea7568 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -1552,6 +1552,9 @@ @DefaultStringValue("Physical Memory") String physMemHostGeneral(); + @DefaultStringValue("Capacity") + String volumeCapacityStatistics(); + @DefaultStringValue("Swap Size") String swapSizeHostGeneral(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java index 8a5e8a9..b2bc300 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java @@ -110,4 +110,6 @@ @DefaultMessage("Default ({0})") String defaultMtu(int mtu); + @DefaultMessage("Free {0}\nUsed {1} of total available {2}") + String glusterCapacityInfo(String freeSize, String usedSize, String totalSize); } 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 392e349..e0d0241 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 @@ -19,6 +19,11 @@ "<div class='engine-progress-text'>{1}</div></div>") SafeHtml progressBar(int progress, String text, String color); + @Template("<div title='{3}' class='engine-progress-box'>" + + "<div style='background: {2}; width: {0}%; height: 100%'></div>" + + "<div class='engine-progress-text'>{1}</div></div>") + SafeHtml glusterCapcityProgressBar(int progress, String sizeString, String color, String toolTip); + /** * Creates a tree-item HTML * 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 60fa8d9..ee57d24 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 @@ -139,12 +139,13 @@ } }); - getTable().addColumn(new Column<GlusterVolumeEntity, GlusterVolumeEntity>(new VolumeCapacityCell()) { + Column<GlusterVolumeEntity, GlusterVolumeEntity> capacityColumn = new Column<GlusterVolumeEntity, GlusterVolumeEntity>(new VolumeCapacityCell()) { @Override public GlusterVolumeEntity getValue(GlusterVolumeEntity object) { return object; } - }, constants.volumeCapacity(), "100px");//$NON-NLS-1$ + }; + getTable().addColumn(capacityColumn, constants.volumeCapacity(), "100px");//$NON-NLS-1$ getTable().addColumn(new VolumeActivityColumn<GlusterVolumeEntity>(new VolumeActivityCompositeCell<GlusterTaskSupport>(compositeList) { @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java index 0304b70..95f5e32 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java @@ -18,9 +18,9 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeBrickPresenter; import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView; import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; +import org.ovirt.engine.ui.webadmin.widget.table.column.BrickCapacityCell; import org.ovirt.engine.ui.webadmin.widget.table.column.BrickStatusColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.MenuCell; -import org.ovirt.engine.ui.webadmin.widget.table.column.PercentColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityCompositeCell; import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivitySeperatorCell; @@ -71,16 +71,12 @@ getTable().addColumn(directoryColumn, constants.brickDirectoryVolumeBrick(), "400px"); //$NON-NLS-1$ - getTable().addColumn(new PercentColumn<GlusterBrickEntity>() { + getTable().addColumn(new Column<GlusterBrickEntity, BrickProperties>( new BrickCapacityCell()) { @Override - protected Integer getProgressValue(GlusterBrickEntity object) { - if(object.getBrickProperties() == null) { - return 0; - } - BrickProperties brickProperties = object.getBrickProperties(); - return (int)(((brickProperties.getTotalSize() - brickProperties.getFreeSize())/ (brickProperties.getTotalSize())) * 100); + public BrickProperties getValue(GlusterBrickEntity object) { + return object.getBrickProperties(); } - }, constants.volumeCapacity(), "60px");//$NON-NLS-1$ + }, constants.volumeCapacity(), "100px");//$NON-NLS-1$ getTable().addColumn(new VolumeActivityColumn<GlusterBrickEntity>(getActivityCell(constants)), constants.activitiesOnVolume(), "100px"); //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java index 50ce5a6..97fdb81 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java @@ -1,5 +1,8 @@ package org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster; +import java.util.ArrayList; +import java.util.Arrays; + import javax.inject.Inject; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; @@ -10,6 +13,7 @@ import org.ovirt.engine.ui.common.widget.form.FormItem; import org.ovirt.engine.ui.common.widget.form.GeneralFormPanel; import org.ovirt.engine.ui.common.widget.label.TextBoxLabel; +import org.ovirt.engine.ui.common.widget.label.TextBoxLabelBase; import org.ovirt.engine.ui.common.widget.label.VolumeTransportTypeLabel; import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.volumes.VolumeListModel; @@ -21,6 +25,8 @@ import org.ovirt.engine.ui.uicompat.Translator; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeGeneralPresenter; +import org.ovirt.engine.ui.webadmin.widget.label.DetailsTextBoxLabel; +import org.ovirt.engine.ui.webadmin.widget.label.VolumeCapacityLabel; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.Editor; @@ -35,6 +41,8 @@ @UiField(provided = true) GeneralFormPanel formPanel; + protected static final ApplicationConstants constants = GWT.create(ApplicationConstants.class); + TextBoxLabel name = new TextBoxLabel(); TextBoxLabel volumeId = new TextBoxLabel(); TextBoxLabel volumeType = new TextBoxLabel(); @@ -46,16 +54,25 @@ VolumeTransportTypeLabel transportTypes = new VolumeTransportTypeLabel(); TextBoxLabel snapMaxLimit = new TextBoxLabel(); + VolumeCapacityLabel<Long> volumeTotalCapacity; + VolumeCapacityLabel<Long> volumeUsedCapacity; + VolumeCapacityLabel<Long> volumeFreeCapacity; + FormBuilder formBuilder; FormItem replicaFormItem; FormItem stripeFormItem; + + @Ignore + DetailsTextBoxLabel<ArrayList<TextBoxLabelBase<Long>>, Long> volumeCapacityDetailsLabel = new DetailsTextBoxLabel<ArrayList<TextBoxLabelBase<Long>>, Long>(constants.total(), constants.used(), constants.free()); private final Driver driver = GWT.create(Driver.class); @Inject public SubTabVolumeGeneralView(DetailModelProvider<VolumeListModel, VolumeGeneralModel> modelProvider, ApplicationConstants constants) { super(modelProvider); + + initCapacityLabel(constants); // Init form panel: formPanel = new GeneralFormPanel(); @@ -64,9 +81,10 @@ driver.initialize(this); // Build a form using the FormBuilder - formBuilder = new FormBuilder(formPanel, 1, 10); + formBuilder = new FormBuilder(formPanel, 1, 11); formBuilder.addFormItem(new FormItem(constants.NameVolume(), name, 0, 0)); + formBuilder.addFormItem(new FormItem(constants.volumeIdVolume(), volumeId, 1, 0)); formBuilder.addFormItem(new FormItem(constants.volumeTypeVolume(), volumeType, 2, 0)); @@ -82,6 +100,9 @@ formBuilder.addFormItem(new FormItem(constants.disperseCount(), disperseCount, 8, 0)); formBuilder.addFormItem(new FormItem(constants.redundancyCount(), redundancyCount, 9, 0)); + volumeCapacityDetailsLabel.setWidth("275px");//$NON-NLS-1$ + formBuilder.addFormItem(new FormItem(constants.volumeCapacityStatistics(), volumeCapacityDetailsLabel, 10, 0)); + getDetailModel().getPropertyChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { @@ -93,6 +114,12 @@ }); } + private void initCapacityLabel(ApplicationConstants constants) { + this.volumeTotalCapacity = new VolumeCapacityLabel<Long>(constants); + this.volumeFreeCapacity = new VolumeCapacityLabel<Long>(constants); + this.volumeUsedCapacity = new VolumeCapacityLabel<Long>(constants); + } + @Override public void setMainTabSelectedItem(GlusterVolumeEntity selectedItem) { driver.edit(getDetailModel()); @@ -102,6 +129,10 @@ disperseCount.setVisible(selectedItem.getVolumeType().isDispersedType()); redundancyCount.setVisible(selectedItem.getVolumeType().isDispersedType()); + ArrayList<TextBoxLabelBase<Long>> volumeCapacityDetails = + new ArrayList<TextBoxLabelBase<Long>>(Arrays.asList(volumeTotalCapacity, volumeUsedCapacity, volumeFreeCapacity)); + volumeCapacityDetailsLabel.setValue(volumeCapacityDetails); + formBuilder.update(getDetailModel()); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/VolumeCapacityLabel.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/VolumeCapacityLabel.java new file mode 100644 index 0000000..fbcbbe7 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/VolumeCapacityLabel.java @@ -0,0 +1,13 @@ +package org.ovirt.engine.ui.webadmin.widget.label; + +import org.ovirt.engine.ui.common.CommonApplicationConstants; +import org.ovirt.engine.ui.common.widget.label.TextBoxLabelBase; +import org.ovirt.engine.ui.webadmin.widget.renderer.VolumeCapacityRenderer; + +public class VolumeCapacityLabel<T extends Number> extends TextBoxLabelBase<T> { + + public VolumeCapacityLabel(CommonApplicationConstants constants) { + super(new VolumeCapacityRenderer<Number>(constants)); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/VolumeCapacityRenderer.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/VolumeCapacityRenderer.java new file mode 100644 index 0000000..18c7550 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/VolumeCapacityRenderer.java @@ -0,0 +1,32 @@ +package org.ovirt.engine.ui.webadmin.widget.renderer; + +import org.ovirt.engine.core.common.utils.Pair; +import org.ovirt.engine.core.common.utils.SizeConverter; +import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit; +import org.ovirt.engine.ui.common.CommonApplicationConstants; + +import com.google.gwt.i18n.client.NumberFormat; +import com.google.gwt.text.shared.AbstractRenderer; + +public class VolumeCapacityRenderer<T extends Number> extends AbstractRenderer<T> { + + private final CommonApplicationConstants constants; + + public VolumeCapacityRenderer(CommonApplicationConstants constants) { + this.constants = constants; + } + + @Override + public String render(T size) { + if (size != null) { + Pair<SizeUnit, Double> sizeWithUnits = SizeConverter.autoConvert(size.longValue(), SizeUnit.BYTES); + return formatSize(sizeWithUnits.getSecond()) + " " + sizeWithUnits.getFirst();//$NON-NLS-1$ + } else { + return constants.notAvailableLabel(); + } + } + + public String formatSize(double size) { + return NumberFormat.getFormat("#.##").format(size);//$NON-NLS-1$ + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/BrickCapacityCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/BrickCapacityCell.java new file mode 100644 index 0000000..7876719 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/BrickCapacityCell.java @@ -0,0 +1,20 @@ +package org.ovirt.engine.ui.webadmin.widget.table.column; + +import org.ovirt.engine.core.common.businessentities.gluster.BrickProperties; +import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit; + +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; + +public class BrickCapacityCell<P extends BrickProperties> extends GlusterCapacityCell<P> { + + @Override + public void render(Context context, BrickProperties value, SafeHtmlBuilder sb) { + if(value != null) { + setFreeSize(value.getFreeSize()); + setTotalSize(value.getTotalSize()); + setUsedSize(value.getTotalSize() - value.getFreeSize()); + setInUnit(SizeUnit.MB); + } + super.render(context, value == null ? null : value, sb); + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/GlusterCapacityCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/GlusterCapacityCell.java new file mode 100644 index 0000000..44b4271 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/GlusterCapacityCell.java @@ -0,0 +1,96 @@ +package org.ovirt.engine.ui.webadmin.widget.table.column; + +import java.io.Serializable; + +import org.ovirt.engine.core.common.utils.Pair; +import org.ovirt.engine.core.common.utils.SizeConverter; +import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationMessages; +import org.ovirt.engine.ui.webadmin.ApplicationTemplates; + +import com.google.gwt.cell.client.AbstractCell; +import com.google.gwt.core.client.GWT; +import com.google.gwt.i18n.client.NumberFormat; +import com.google.gwt.safehtml.shared.SafeHtml; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; + +public abstract class GlusterCapacityCell<P extends Serializable> extends AbstractCell<P>{ + + protected static final ApplicationConstants constants = GWT.create(ApplicationConstants.class); + protected static final ApplicationTemplates templates = GWT.create(ApplicationTemplates.class); + protected static final ApplicationMessages messages = GWT.create(ApplicationMessages.class); + + private Double freeSize; + private Double totalSize; + private Double usedSize; + private SizeUnit inUnit; + + protected String getSizeString(Double size, SizeUnit inUnit) { + if(size == null) { + return constants.notAvailableLabel(); + } else { + Pair<SizeUnit, Double> sizeWithUnits = SizeConverter.autoConvert(size.longValue(), inUnit); + return formatSize(sizeWithUnits.getSecond()) + " " + sizeWithUnits.getFirst().toString();//$NON-NLS-1$ + } + } + + private String formatSize(double size) { + return NumberFormat.getFormat("#.##").format(size);//$NON-NLS-1$ + } + + protected String getProgressText(Double freeSize, Double totalSize) { + if(freeSize == null || totalSize == null) { + return "?";//$NON-NLS-1$ + } else { + return ((int)(getPercentageUsage(freeSize, totalSize))) + "%";//$NON-NLS-1$ + } + } + + protected int getProgressValue(Double freeSize, Double totalSize) { + if(freeSize == null || totalSize == null) { + return 0; + } + return (int)(Math.round(getPercentageUsage(freeSize, totalSize))); + } + + private double getPercentageUsage(Double freeSize, Double totalSize) { + return (((totalSize - freeSize) * 100 )/totalSize); + } + + protected void setFreeSize(Double freeSize) { + this.freeSize = freeSize; + } + + protected void setTotalSize(Double totalSize) { + this.totalSize = totalSize; + } + + protected void setInUnit(SizeUnit inUnit) { + this.inUnit = inUnit; + } + + protected void setUsedSize(Double usedSize) { + this.usedSize = usedSize; + } + + public void clearAll() { + setFreeSize(null); + setTotalSize(null); + setUsedSize(null); + setInUnit(null); + } + + @Override + public void render(Context context, Serializable value, SafeHtmlBuilder sb) { + if(value == null) { + clearAll(); + } + int progress = getProgressValue(freeSize, totalSize); + String sizeString = getProgressText(freeSize, totalSize); + String color = progress < 70 ? "#669966" : progress < 95 ? "#FF9900" : "#FF0000"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + String toolTip = messages.glusterCapacityInfo(getSizeString(freeSize, inUnit), getSizeString(usedSize, inUnit), getSizeString(totalSize, inUnit)); + SafeHtml safeHtml = templates.glusterCapcityProgressBar(progress, sizeString, color, toolTip); + sb.append(safeHtml); + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java index fed948c..5ee501c 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java @@ -1,43 +1,27 @@ package org.ovirt.engine.ui.webadmin.widget.table.column; +import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSizeInfo; -import org.ovirt.engine.ui.webadmin.ApplicationTemplates; -import org.ovirt.engine.ui.webadmin.gin.ClientGinjectorProvider; +import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit; -import com.google.gwt.cell.client.AbstractCell; -import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -public class VolumeCapacityCell extends AbstractCell<GlusterVolumeEntity> { - - private ApplicationTemplates templates = ClientGinjectorProvider.getApplicationTemplates(); +public class VolumeCapacityCell<P extends GlusterVolumeEntity> extends GlusterCapacityCell<P> { @Override public void render(Context context, GlusterVolumeEntity object, SafeHtmlBuilder sb) { + GlusterVolumeAdvancedDetails advancedDetails = object.getAdvancedDetails(); GlusterVolumeSizeInfo sizeInfo = null; - int progress; - if (! (object.getAdvancedDetails() == null || object.getAdvancedDetails().getCapacityInfo() == null)) { - sizeInfo = object.getAdvancedDetails().getCapacityInfo(); - progress = getProgressValue(sizeInfo); - } else { - progress = 0; + if (advancedDetails != null) { + sizeInfo = advancedDetails.getCapacityInfo(); + if (sizeInfo != null) { + setFreeSize(sizeInfo.getFreeSize().doubleValue()); + setTotalSize(sizeInfo.getTotalSize().doubleValue()); + setUsedSize(sizeInfo.getUsedSize().doubleValue()); + setInUnit(SizeUnit.BYTES); + } } - String sizeString = getProgressText(sizeInfo); - String color = progress < 70 ? "#669966" : progress < 95 ? "#FF9900" : "#FF0000"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - SafeHtml safeHtml = templates.progressBar(progress, sizeString, color); - sb.append(safeHtml); - } - - private String getProgressText(GlusterVolumeSizeInfo sizeStats) { - if(sizeStats == null) { - return "?";//$NON-NLS-1$ - } else { - return ((int)((sizeStats.getUsedSize().floatValue() / sizeStats.getTotalSize().floatValue()) * 100)) + "%";//$NON-NLS-1$ - } - } - - private Integer getProgressValue(GlusterVolumeSizeInfo sizeStats) { - return (int)(Math.round((sizeStats.getUsedSize().floatValue() / sizeStats.getTotalSize().floatValue()) * 100)); + super.render(context, advancedDetails == null ? null : sizeInfo == null ? null : sizeInfo, sb); } } -- To view, visit https://gerrit.ovirt.org/40351 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I983daf32966527cdfa7773e07aa055a24519fbe2 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5-gluster Gerrit-Owner: anmolbabu <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
