modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java | 152 ------- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java | 177 ++------ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/ResourceMetricAvailabilityView.java | 208 ++++++++++ 3 files changed, 278 insertions(+), 259 deletions(-)
New commits: commit 9cd21d169957e369a2b57972face734491f84d07 Author: Mike Thompson mithomps@redhat.com Date: Tue Jul 16 15:01:37 2013 -0700
Consolidated Metrics - Add availability detail panel.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java index 25603fe..9273e0b 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java @@ -58,13 +58,14 @@ public class MetricsResourceView extends AbstractD3GraphListView { private Img expandCollapseArrow; private MetricsTableView metricsTableView; private MetricsViewDataSource dataSource; - private EnhancedHLayout availabilityDetails; + private ResourceMetricAvailabilityView availabilityDetails;
public MetricsResourceView(Resource resource) { super(); this.resource = resource; dataSource = new MetricsViewDataSource(resource); metricsTableView = new MetricsTableView(resource, this); + availabilityDetails = new ResourceMetricAvailabilityView(resource); }
private EnhancedHLayout createAvailabilityDetails() { @@ -115,7 +116,6 @@ public class MetricsResourceView extends AbstractD3GraphListView { } });
- availabilityDetails = createAvailabilityDetails();
availabilityGraph = new AvailabilityD3GraphView<AvailabilityOverUnderGraphType>( new AvailabilityOverUnderGraphType(resource.getId())); @@ -123,6 +123,7 @@ public class MetricsResourceView extends AbstractD3GraphListView { expandCollapseHLayout.addMember(expandCollapseArrow); expandCollapseHLayout.addMember(availabilityGraph); vLayout.addMember(expandCollapseHLayout); + availabilityDetails.hide(); vLayout.addMember(availabilityDetails);
metricsTableView.setHeight100(); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/ResourceMetricAvailabilityView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/ResourceMetricAvailabilityView.java new file mode 100644 index 0000000..9d6b892 --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/ResourceMetricAvailabilityView.java @@ -0,0 +1,208 @@ +/* + * RHQ Management Platform + * Copyright 2012, Red Hat Middleware LLC, and individual contributors + * as indicated by the @author tags. See the copyright.txt file in the + * distribution for a full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.table; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.FormItem; +import com.smartgwt.client.widgets.form.fields.StaticTextItem; + +import org.rhq.core.domain.measurement.MeasurementUnits; +import org.rhq.core.domain.resource.Resource; +import org.rhq.core.domain.resource.composite.ResourceAvailabilitySummary; +import org.rhq.enterprise.gui.coregui.client.CoreGUI; +import org.rhq.enterprise.gui.coregui.client.components.table.TimestampCellFormatter; +import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; +import org.rhq.enterprise.gui.coregui.client.util.MeasurementConverterClient; +import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedVLayout; + +/** + * This shows the availability history for a resource. + * + * @author Jay Shaughnessy + * @author John Mazzitelli + * @author Mike Thompson + */ +public class ResourceMetricAvailabilityView extends EnhancedVLayout { + + private Resource resource; + private StaticTextItem currentField; + private StaticTextItem availField; + private StaticTextItem availTimeField; + private StaticTextItem downField; + private StaticTextItem downTimeField; + private StaticTextItem disabledField; + private StaticTextItem disabledTimeField; + private StaticTextItem failureCountField; + private StaticTextItem disabledCountField; + private StaticTextItem mtbfField; + private StaticTextItem mttrField; + private StaticTextItem unknownField; + private StaticTextItem currentTimeField; + + public ResourceMetricAvailabilityView(Resource resource) { + super(); + + this.resource = resource; + + setWidth100(); + setHeight(165); + } + + @Override + protected void onInit() { + super.onInit(); + + addMember(createSummaryForm()); + } + + private DynamicForm createSummaryForm() { + DynamicForm form = new DynamicForm(); + form.setWidth100(); + form.setAutoHeight(); + form.setMargin(10); + form.setNumCols(4); + + // row 1 + currentField = new StaticTextItem("current", MSG.view_resource_monitor_availability_currentStatus()); + currentField.setWrapTitle(false); + currentField.setColSpan(4); + + // row 2 + availField = new StaticTextItem("avail", MSG.view_resource_monitor_availability_availability()); + availField.setWrapTitle(false); + prepareTooltip(availField, MSG.view_resource_monitor_availability_availability_tooltip()); + + availTimeField = new StaticTextItem("availTime", MSG.view_resource_monitor_availability_uptime()); + availTimeField.setWrapTitle(false); + prepareTooltip(availTimeField, MSG.view_resource_monitor_availability_uptime_tooltip()); + + // row 3 + downField = new StaticTextItem("down", MSG.view_resource_monitor_availability_down()); + downField.setWrapTitle(false); + prepareTooltip(downField, MSG.view_resource_monitor_availability_down_tooltip()); + + downTimeField = new StaticTextItem("downTime", MSG.view_resource_monitor_availability_downtime()); + downTimeField.setWrapTitle(false); + prepareTooltip(downTimeField, MSG.view_resource_monitor_availability_downtime_tooltip()); + + // row 4 + disabledField = new StaticTextItem("disabled", MSG.view_resource_monitor_availability_disabled()); + disabledField.setWrapTitle(false); + prepareTooltip(disabledField, MSG.view_resource_monitor_availability_disabled_tooltip()); + + disabledTimeField = new StaticTextItem("disabledTime", MSG.view_resource_monitor_availability_disabledTime()); + disabledTimeField.setWrapTitle(false); + prepareTooltip(disabledTimeField, MSG.view_resource_monitor_availability_disabledTime_tooltip()); + + // row 5 + failureCountField = new StaticTextItem("failureCount", MSG.view_resource_monitor_availability_numFailures()); + failureCountField.setWrapTitle(false); + prepareTooltip(failureCountField, MSG.view_resource_monitor_availability_numFailures_tooltip()); + + disabledCountField = new StaticTextItem("disabledCount", MSG.view_resource_monitor_availability_numDisabled()); + disabledCountField.setWrapTitle(false); + prepareTooltip(disabledCountField, MSG.view_resource_monitor_availability_numDisabled_tooltip()); + + // row 6 + mtbfField = new StaticTextItem("mtbf", MSG.view_resource_monitor_availability_mtbf()); + mtbfField.setWrapTitle(false); + prepareTooltip(mtbfField, MSG.view_resource_monitor_availability_mtbf_tooltip()); + + mttrField = new StaticTextItem("mttr", MSG.view_resource_monitor_availability_mttr()); + mttrField.setWrapTitle(false); + prepareTooltip(mttrField, MSG.view_resource_monitor_availability_mttr_tooltip()); + + // row 7 + unknownField = new StaticTextItem("unknown"); + unknownField.setWrapTitle(false); + unknownField.setColSpan(4); + unknownField.setShowTitle(false); + + // row 8 + currentTimeField = new StaticTextItem("currentTime"); + currentTimeField.setWrapTitle(false); + currentTimeField.setColSpan(4); + currentTimeField.setShowTitle(false); + + form.setItems(currentField, availField, availTimeField, downField, downTimeField, disabledField, + disabledTimeField, failureCountField, disabledCountField, mtbfField, mttrField, unknownField, + currentTimeField); + + reloadSummaryData(); + + return form; + } + + private void reloadSummaryData() { + GWTServiceLookup.getResourceService().getResourceAvailabilitySummary(resource.getId(), + new AsyncCallback<ResourceAvailabilitySummary>() { + + @Override + public void onSuccess(ResourceAvailabilitySummary result) { + + currentField.setValue(MSG.view_resource_monitor_availability_currentStatus_value(result + .getCurrent().getName(), TimestampCellFormatter.format(result.getLastChange().getTime()))); + availField.setValue(MeasurementConverterClient.format(result.getUpPercentage(), + MeasurementUnits.PERCENTAGE, true)); + availTimeField.setValue(MeasurementConverterClient.format((double) result.getUpTime(), + MeasurementUnits.MILLISECONDS, true)); + downField.setValue(MeasurementConverterClient.format(result.getDownPercentage(), + MeasurementUnits.PERCENTAGE, true)); + downTimeField.setValue(MeasurementConverterClient.format((double) result.getDownTime(), + MeasurementUnits.MILLISECONDS, true)); + disabledField.setValue(MeasurementConverterClient.format(result.getDisabledPercentage(), + MeasurementUnits.PERCENTAGE, true)); + disabledTimeField.setValue(MeasurementConverterClient.format((double) result.getDisabledTime(), + MeasurementUnits.MILLISECONDS, true)); + failureCountField.setValue(result.getFailures()); + disabledCountField.setValue(result.getDisabled()); + mtbfField.setValue(MeasurementConverterClient.format((double) result.getMTBF(), + MeasurementUnits.MILLISECONDS, true)); + mttrField.setValue(MeasurementConverterClient.format((double) result.getMTTR(), + MeasurementUnits.MILLISECONDS, true)); + + if (result.getUnknownTime() > 0L) { + unknownField.setValue(MSG.view_resource_monitor_availability_unknown(MeasurementConverterClient + .format((double) result.getUnknownTime(), MeasurementUnits.MILLISECONDS, true))); + } else { + unknownField.setValue(""); + } + + currentTimeField.setValue(MSG.view_resource_monitor_availability_currentAsOf(TimestampCellFormatter + .format(result.getCurrentTime()))); + } + + @Override + public void onFailure(Throwable caught) { + currentField.setValue(MSG.common_label_error()); + CoreGUI.getErrorHandler() + .handleError(MSG.view_resource_monitor_availability_summaryError(), caught); + } + }); + } + + private void prepareTooltip(FormItem item, String tooltip) { + item.setHoverWidth(400); + item.setPrompt(tooltip); + } + +}
commit 46d64c5f157d18d2778fdec15909e25226513b6d Author: Mike Thompson mithomps@redhat.com Date: Tue Jul 16 08:50:36 2013 -0700
Consolidated Metrics - more availability work.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java index e4785da..25603fe 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java @@ -18,43 +18,27 @@ */ package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.table;
-import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Set;
import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.smartgwt.client.types.ExpansionMode; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.types.VerticalAlignment; -import com.smartgwt.client.widgets.Canvas; -import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.Img; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; -import com.smartgwt.client.widgets.grid.ListGrid; -import com.smartgwt.client.widgets.grid.ListGridField; -import com.smartgwt.client.widgets.grid.ListGridRecord; -import com.smartgwt.client.widgets.grid.events.RecordExpandEvent; -import com.smartgwt.client.widgets.grid.events.RecordExpandHandler; import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.measurement.Availability; -import org.rhq.core.domain.measurement.MeasurementDefinition; -import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite; import org.rhq.core.domain.resource.Resource; -import org.rhq.core.domain.resource.ResourceType; import org.rhq.enterprise.gui.coregui.client.CoreGUI; import org.rhq.enterprise.gui.coregui.client.IconEnum; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractD3GraphListView; import org.rhq.enterprise.gui.coregui.client.inventory.common.graph.graphtype.AvailabilityOverUnderGraphType; -import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.MetricD3Graph; import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.avail.AvailabilityD3GraphView; -import org.rhq.enterprise.gui.coregui.client.util.BrowserUtility; import org.rhq.enterprise.gui.coregui.client.util.Log; import org.rhq.enterprise.gui.coregui.client.util.async.CountDownLatch; import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedHLayout; @@ -70,40 +54,17 @@ public class MetricsResourceView extends AbstractD3GraphListView { private static final String EXPANDED_TOOLTIP = MSG.chart_metrics_expand_tooltip();
private Resource resource; - private Set<Integer> definitionIds = null; private VLayout vLayout; private Img expandCollapseArrow; - MetricsTableListGrid metricsGrid; - MetricsViewDataSource dataSource; - EnhancedHLayout availabilityDetails; - + private MetricsTableView metricsTableView; + private MetricsViewDataSource dataSource; + private EnhancedHLayout availabilityDetails;
public MetricsResourceView(Resource resource) { super(); this.resource = resource; dataSource = new MetricsViewDataSource(resource); - metricsGrid = new MetricsTableListGrid(); - - ArrayList<ListGridField> fields = dataSource.getListGridFields(); - metricsGrid.setFields(fields.toArray(new ListGridField[0])); - metricsGrid.setCanExpandRecords(true); - metricsGrid.addRecordExpandHandler(new RecordExpandHandler() { - @Override - public void onRecordExpand(RecordExpandEvent recordExpandEvent) { - Log.debug("Record Expanded: " - + recordExpandEvent.getRecord().getAttribute(MetricsViewDataSource.FIELD_METRIC_LABEL)); - new Timer() { - - @Override - public void run() { - BrowserUtility.graphSparkLines(); - } - }.schedule(150); - - } - - }); - + metricsTableView = new MetricsTableView(resource, this); }
private EnhancedHLayout createAvailabilityDetails() { @@ -123,11 +84,10 @@ public class MetricsResourceView extends AbstractD3GraphListView { Log.debug("MetricResourceView.onDraw() for: " + resource.getName() + " id: " + resource.getId()); destroyMembers();
- vLayout = new VLayout(); vLayout.setOverflow(Overflow.AUTO); vLayout.setWidth100(); - vLayout.setHeight(220); + vLayout.setHeight100(); vLayout.addMember(buttonBarDateTimeRangeEditor);
EnhancedHLayout expandCollapseHLayout = new EnhancedHLayout(); @@ -146,8 +106,7 @@ public class MetricsResourceView extends AbstractD3GraphListView { expandCollapseArrow.setSrc(IconEnum.COLLAPSED_ICON.getIcon16x16Path()); expandCollapseArrow.setTooltip(COLLAPSED_TOOLTIP); availabilityDetails.hide(); - } - else { + } else { expandCollapseArrow.setSrc(IconEnum.EXPANDED_ICON.getIcon16x16Path()); expandCollapseArrow.setTooltip(EXPANDED_TOOLTIP); availabilityDetails.show(); @@ -166,13 +125,14 @@ public class MetricsResourceView extends AbstractD3GraphListView { vLayout.addMember(expandCollapseHLayout); vLayout.addMember(availabilityDetails);
- vLayout.addMember(metricsGrid); + metricsTableView.setHeight100(); + vLayout.addMember(metricsTableView);
addMember(vLayout);
if (resource != null) { queryAvailability(EntityContext.forResource(resource.getId()), buttonBarDateTimeRangeEditor.getStartTime(), - buttonBarDateTimeRangeEditor.getEndTime(), null); + buttonBarDateTimeRangeEditor.getEndTime(), null); } }
@@ -212,95 +172,4 @@ public class MetricsResourceView extends AbstractD3GraphListView { }); }
- private class MetricsTableListGrid extends ListGrid { - public MetricsTableListGrid() { - super(); - - setCanExpandRecords(true); - setCanExpandMultipleRecords(true); - setExpansionMode(ExpansionMode.DETAIL_FIELD); - } - - @Override - protected Canvas getExpansionComponent(final ListGridRecord record) { - final Integer definitionId = record.getAttributeAsInt(MetricsViewDataSource.FIELD_METRIC_DEF_ID); - final Integer resourceId = record.getAttributeAsInt(MetricsViewDataSource.FIELD_RESOURCE_ID); - VLayout vLayout = new VLayout(); - vLayout.setPadding(5); - - final String chartId = "rChart" + resourceId + "-" + definitionId; - HTMLFlow htmlFlow = new HTMLFlow(MetricD3Graph.createGraphMarkerTemplate(chartId, 200)); - vLayout.addMember(htmlFlow); - - new Timer() { - - @Override - public void run() { - BrowserUtility.graphSparkLines(); - } - }.schedule(150); - - - // Load the fully fetched ResourceType. - ResourceType resourceType = resource.getResourceType(); - - Set<MeasurementDefinition> definitions = resourceType.getMetricDefinitions(); - final MeasurementDefinition measurementDefinition; - - //build id mapping for measurementDefinition instances Ex. Free Memory -> MeasurementDefinition[100071] - final HashMap<String, MeasurementDefinition> measurementDefMap = new HashMap<String, MeasurementDefinition>(); - for (MeasurementDefinition definition : definitions) { - measurementDefMap.put(definition.getDisplayName(), definition); - if (definition.getId() == definitionId) { - measurementDefinition = definition; - break; - } - } - - int[] definitionArrayIds = new int[1]; - definitionArrayIds[0] = definitionId; - GWTServiceLookup.getMeasurementDataService().findDataForResource(resourceId, definitionArrayIds, - measurementUserPrefs.getMetricRangePreferences().begin, - measurementUserPrefs.getMetricRangePreferences().end, 60, - new AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() { - @Override - public void onFailure(Throwable caught) { - Log.debug("Error retrieving recent metrics charting data for resource [" + resourceId + "]:" - + caught.getMessage()); - } - - @Override - public void onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) { - if (!results.isEmpty()) { - - //load the data results for the given metric definition - List<MeasurementDataNumericHighLowComposite> data = results.get(0); - Log.debug(" *** Metric Data Results: "+data.size()); - -// MetricGraphData metricGraphData = MetricGraphData -// .createForResource(resourceId, resource.getName(), -// measurementDefinition, data, null); -// -// StackedBarMetricGraphImpl graph = GWT -// .create(StackedBarMetricGraphImpl.class); -// graph.setMetricGraphData(metricGraphData); -// final MetricD3Graph graphView = new MetricD3Graph(graph, this); -// new Timer() { -// @Override -// public void run() { -// graphView.drawJsniChart(); -// -// } -// }.schedule(150); - - } else { - Log.warn("No chart data retrieving for resource [" + resourceId + "]"); - - } - } - }); - - return vLayout; - } - } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java index 82fe2d2..3cb9233 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java @@ -22,7 +22,6 @@ package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitori import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -45,26 +44,21 @@ import com.smartgwt.client.widgets.grid.events.RecordExpandEvent; import com.smartgwt.client.widgets.grid.events.RecordExpandHandler; import com.smartgwt.client.widgets.layout.VLayout;
-import org.rhq.core.domain.criteria.ResourceCriteria; import org.rhq.core.domain.measurement.MeasurementData; import org.rhq.core.domain.measurement.MeasurementDefinition; import org.rhq.core.domain.measurement.MeasurementUnits; import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite; import org.rhq.core.domain.resource.Resource; -import org.rhq.core.domain.resource.ResourceType; -import org.rhq.core.domain.resource.composite.ResourceComposite; -import org.rhq.core.domain.util.PageList; import org.rhq.enterprise.gui.coregui.client.CoreGUI; import org.rhq.enterprise.gui.coregui.client.UserSessionManager; import org.rhq.enterprise.gui.coregui.client.components.table.Table; import org.rhq.enterprise.gui.coregui.client.components.table.TableAction; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; -import org.rhq.enterprise.gui.coregui.client.inventory.common.graph.ButtonBarDateTimeRangeEditor; +import org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractD3GraphListView; import org.rhq.enterprise.gui.coregui.client.inventory.common.graph.MetricGraphData; import org.rhq.enterprise.gui.coregui.client.inventory.common.graph.RedrawGraphs; import org.rhq.enterprise.gui.coregui.client.inventory.common.graph.graphtype.StackedBarMetricGraphImpl; import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.MetricD3Graph; -import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository; import org.rhq.enterprise.gui.coregui.client.util.BrowserUtility; import org.rhq.enterprise.gui.coregui.client.util.Log; import org.rhq.enterprise.gui.coregui.client.util.MeasurementConverterClient; @@ -76,20 +70,19 @@ import org.rhq.enterprise.gui.coregui.client.util.preferences.MeasurementUserPre * @author John Mazzitelli * @author Mike Thompson */ -@Deprecated -public class MetricsTableView extends Table<MetricsTableDataSource> implements RedrawGraphs { +public class MetricsTableView extends Table<MetricsViewDataSource> implements RedrawGraphs {
- private final int resourceId; + private final Resource resource; + private final AbstractD3GraphListView abstractD3GraphListView;
private MeasurementUserPreferences measurementUserPrefs; - private ButtonBarDateTimeRangeEditor buttonBarDateTimeRangeEditor;
- public MetricsTableView(int resourceId) { + public MetricsTableView(Resource resource, AbstractD3GraphListView abstractD3GraphListView) { super(); - this.resourceId = resourceId; - setDataSource(new MetricsTableDataSource(resourceId)); + this.resource = resource; + this.abstractD3GraphListView = abstractD3GraphListView; + setDataSource(new MetricsViewDataSource(resource)); measurementUserPrefs = new MeasurementUserPreferences(UserSessionManager.getUserPreferences()); - buttonBarDateTimeRangeEditor = new ButtonBarDateTimeRangeEditor(measurementUserPrefs, this); }
/** @@ -100,7 +93,7 @@ public class MetricsTableView extends Table<MetricsTableDataSource> implements R */ @Override protected ListGrid createListGrid() { - return new MetricsTableListGrid(); + return new MetricsTableListGrid(resource); }
protected void configureTable() { @@ -111,7 +104,7 @@ public class MetricsTableView extends Table<MetricsTableDataSource> implements R @Override public void onRecordExpand(RecordExpandEvent recordExpandEvent) { Log.debug("Record Expanded: " - + recordExpandEvent.getRecord().getAttribute(MetricsTableDataSource.FIELD_METRIC_LABEL)); + + recordExpandEvent.getRecord().getAttribute(MetricsViewDataSource.FIELD_METRIC_LABEL)); new Timer() {
@Override @@ -124,9 +117,8 @@ public class MetricsTableView extends Table<MetricsTableDataSource> implements R
});
- addExtraWidget(buttonBarDateTimeRangeEditor, true); addTableAction(MSG.view_measureTable_getLive(), new ShowLiveDataTableAction(this)); - addTableAction(MSG.view_measureTable_addToDashboard(), new AddToDashboardTableAction(this)); + //addTableAction(MSG.view_measureTable_addToDashboard(), new AddToDashboardTableAction(this));
}
@@ -152,12 +144,12 @@ public class MetricsTableView extends Table<MetricsTableDataSource> implements R int[] definitionIds = new int[selection.length]; int i = 0; for (ListGridRecord record : selection) { - Integer defId = record.getAttributeAsInt(MetricsTableDataSource.FIELD_METRIC_DEF_ID); + Integer defId = record.getAttributeAsInt(MetricsViewDataSource.FIELD_METRIC_DEF_ID); definitionIds[i++] = defId;
- String name = record.getAttribute(MetricsTableDataSource.FIELD_METRIC_NAME); - String label = record.getAttribute(MetricsTableDataSource.FIELD_METRIC_LABEL); - String units = record.getAttribute(MetricsTableDataSource.FIELD_METRIC_UNITS); + String name = record.getAttribute(MetricsViewDataSource.FIELD_METRIC_NAME); + String label = record.getAttribute(MetricsViewDataSource.FIELD_METRIC_LABEL); + String units = record.getAttribute(MetricsViewDataSource.FIELD_METRIC_UNITS); if (units == null || units.length() < 1) { units = MeasurementUnits.NONE.name(); } @@ -166,8 +158,8 @@ public class MetricsTableView extends Table<MetricsTableDataSource> implements R }
// actually go out and ask the agents for the data - GWTServiceLookup.getMeasurementDataService(60000).findLiveData(metricsTableView.resourceId, definitionIds, - new AsyncCallback<Set<MeasurementData>>() { + GWTServiceLookup.getMeasurementDataService(60000).findLiveData(metricsTableView.resource.getId(), + definitionIds, new AsyncCallback<Set<MeasurementData>>() { @Override public void onSuccess(Set<MeasurementData> result) { if (result == null) { @@ -281,9 +273,14 @@ public class MetricsTableView extends Table<MetricsTableDataSource> implements R }
private class MetricsTableListGrid extends ListGrid { - public MetricsTableListGrid() { - super();
+ private static final int TREEVIEW_DETAIL_CHART_HEIGHT = 205; + private static final int NUM_METRIC_POINTS = 60; + private Resource resource; + + public MetricsTableListGrid(Resource resource) { + super(); + this.resource = resource; setCanExpandRecords(true); setCanExpandMultipleRecords(true); setExpansionMode(ExpansionMode.DETAIL_FIELD); @@ -291,116 +288,60 @@ public class MetricsTableView extends Table<MetricsTableDataSource> implements R
@Override protected Canvas getExpansionComponent(final ListGridRecord record) { - final Integer definitionId = record.getAttributeAsInt(MetricsTableDataSource.FIELD_METRIC_DEF_ID); - final Integer resourceId = record.getAttributeAsInt(MetricsTableDataSource.FIELD_RESOURCE_ID); + final Integer definitionId = record.getAttributeAsInt(MetricsViewDataSource.FIELD_METRIC_DEF_ID); + final Integer resourceId = record.getAttributeAsInt(MetricsViewDataSource.FIELD_RESOURCE_ID); VLayout vLayout = new VLayout(); vLayout.setPadding(5);
- final String chartId = "rChart" + resourceId + "-" + definitionId; - HTMLFlow htmlFlow = new HTMLFlow(MetricD3Graph.createGraphMarkerTemplate(chartId, 200)); + final String chartId = "rChart-" + resourceId + "-" + definitionId; + Log.debug("getExpansionComponent for: " + chartId); + HTMLFlow htmlFlow = new HTMLFlow(MetricD3Graph.createGraphMarkerTemplate(chartId, TREEVIEW_DETAIL_CHART_HEIGHT)); vLayout.addMember(htmlFlow);
- //locate resource reference - ResourceCriteria criteria = new ResourceCriteria(); - criteria.addFilterId(resourceId); - - //locate the resource - GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria, - new AsyncCallback<PageList<ResourceComposite>>() { + int[] definitionArrayIds = new int[1]; + definitionArrayIds[0] = definitionId; + GWTServiceLookup.getMeasurementDataService().findDataForResource(resourceId, definitionArrayIds, + measurementUserPrefs.getMetricRangePreferences().begin, + measurementUserPrefs.getMetricRangePreferences().end, NUM_METRIC_POINTS, + new AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() { @Override public void onFailure(Throwable caught) { - Log.debug("Error retrieving resource resource composite for resource [" + resourceId + "]:" + Log.debug("Error retrieving recent metrics charting data for resource [" + resourceId + "]:" + caught.getMessage()); }
@Override - public void onSuccess(PageList<ResourceComposite> results) { + public void onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) { if (!results.isEmpty()) {
- new Timer() { + //load the data results for the given metric definition + List<MeasurementDataNumericHighLowComposite> measurementList = results.get(0); + Log.debug("getExpansionComponent MeasurementList.size: " + measurementList.size());
+ MeasurementDefinition measurementDefinition = null; + for (MeasurementDefinition definition : resource.getResourceType().getMetricDefinitions()) { + if (definition.getId() == definitionId) { + measurementDefinition = definition; + break; + } + } + + MetricGraphData metricGraphData = MetricGraphData.createForResource(resourceId, + resource.getName(), measurementDefinition, measurementList, null); + + StackedBarMetricGraphImpl graph = GWT.create(StackedBarMetricGraphImpl.class); + graph.setMetricGraphData(metricGraphData); + final MetricD3Graph graphView = new MetricD3Graph(graph, abstractD3GraphListView); + new Timer() { @Override public void run() { - BrowserUtility.graphSparkLines(); + graphView.drawJsniChart(); + } }.schedule(150);
- final Resource resource = results.get(0).getResource(); - //D3GraphListView graphListView = D3GraphListView.createSingleGraph(resource, definitionId, false); - - // Load the fully fetched ResourceType. - ResourceType resourceType = resource.getResourceType(); - ResourceTypeRepository.Cache.getInstance().getResourceTypes( - resourceType.getId(), - EnumSet.of(ResourceTypeRepository.MetadataType.content, - ResourceTypeRepository.MetadataType.operations, - ResourceTypeRepository.MetadataType.measurements, - ResourceTypeRepository.MetadataType.events, - ResourceTypeRepository.MetadataType.resourceConfigurationDefinition), - new ResourceTypeRepository.TypeLoadedCallback() { - public void onTypesLoaded(ResourceType type) { - resource.setResourceType(type); - //metric definitions - Set<MeasurementDefinition> definitions = type.getMetricDefinitions(); - final MeasurementDefinition measurementDefinition; - - //build id mapping for measurementDefinition instances Ex. Free Memory -> MeasurementDefinition[100071] - final HashMap<String, MeasurementDefinition> measurementDefMap = new HashMap<String, MeasurementDefinition>(); - for (MeasurementDefinition definition : definitions) { - measurementDefMap.put(definition.getDisplayName(), definition); - if (definition.getId() == definitionId) { - measurementDefinition = definition; - break; - } - } - - int[] definitionArrayIds = new int[1]; - definitionArrayIds[0] = definitionId; - GWTServiceLookup.getMeasurementDataService().findDataForResource(resourceId, - definitionArrayIds, measurementUserPrefs.getMetricRangePreferences().begin, - measurementUserPrefs.getMetricRangePreferences().end, 60, - new AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() { - @Override - public void onFailure(Throwable caught) { - Log.debug("Error retrieving recent metrics charting data for resource [" - + resourceId + "]:" + caught.getMessage()); - } - - @Override - public void onSuccess( - List<List<MeasurementDataNumericHighLowComposite>> results) { - if (!results.isEmpty()) { - - //load the data results for the given metric definition - List<MeasurementDataNumericHighLowComposite> data = results - .get(0); - -// MetricGraphData metricGraphData = MetricGraphData -// .createForResource(resourceId, resource.getName(), -// measurementDefinition, data, null); -// -// StackedBarMetricGraphImpl graph = GWT -// .create(StackedBarMetricGraphImpl.class); -// graph.setMetricGraphData(metricGraphData); -// final MetricD3Graph graphView = new MetricD3Graph(graph, this); -// new Timer() { -// @Override -// public void run() { -// graphView.drawJsniChart(); -// -// } -// }.schedule(150); - - } else { - Log.warn("No chart data retrieving for resource [" + resourceId - + "]"); - - } - } - }); - - } - }); + } else { + Log.warn("No chart data retrieving for resource [" + resourceId + "-"+definitionId+"]");
} }
rhq-commits@lists.fedorahosted.org