modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/graph/ResourceGraphPortlet.java
| 68 +----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractD3GraphListView.java
| 84 ++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMetricD3GraphView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/charttype/MetricStackedBarGraph.java
| 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/D3GroupGraphListView.java
| 124 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/ResourceGroupMetricGraphView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
| 100 +-------
8 files changed, 188 insertions(+), 195 deletions(-)
New commits:
commit cb3e2ff994e904218e220058fb5ad7e9b67f2ffe
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Thu Feb 28 14:11:42 2013 -0800
Charting - Add Availability charts to Group screens and pull-up the common
availability code to a shared super class.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/graph/ResourceGraphPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/graph/ResourceGraphPortlet.java
index 0718e15..b2a168e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/graph/ResourceGraphPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/graph/ResourceGraphPortlet.java
@@ -37,17 +37,13 @@ import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.criteria.AvailabilityCriteria;
import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.dashboard.DashboardPortlet;
-import org.rhq.core.domain.measurement.Availability;
-import org.rhq.core.domain.measurement.AvailabilityType;
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.core.domain.util.PageList;
-import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import
org.rhq.enterprise.gui.coregui.client.components.lookup.ResourceLookupComboBoxItem;
import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet;
@@ -92,7 +88,7 @@ public class ResourceGraphPortlet extends ResourceMetricD3Graph
implements Custo
@Override
public void configure(PortletWindow portletWindow, DashboardPortlet storedPortlet) {
- Log.debug("\n\n\nPortlet Configure !!");
+ Log.debug("\nPortlet Configure !!");
if (null == this.portletWindow && null != portletWindow) {
this.portletWindow = portletWindow;
@@ -108,11 +104,10 @@ public class ResourceGraphPortlet extends ResourceMetricD3Graph
implements Custo
if (resourceIdProperty != null && measurementDefIdProperty != null)
{
final Integer entityId = resourceIdProperty.getIntegerValue();
final Integer measurementDefId =
measurementDefIdProperty.getIntegerValue();
- graph.setDefinitionId(measurementDefId);
- graph.setEntityId(entityId);
- Log.debug("Metric Graph Data: "+ graph.getMetricGraphData());
-
if (entityId != null && measurementDefId != null) {
+ graph.setDefinitionId(measurementDefId);
+ graph.setEntityId(entityId);
+ Log.debug("Metric Graph Data: " +
graph.getMetricGraphData());
queryResource(entityId, measurementDefId);
}
@@ -122,8 +117,6 @@ public class ResourceGraphPortlet extends ResourceMetricD3Graph
implements Custo
}
private void queryResource(Integer entityId, final Integer measurementDefId) {
- //final long startTime = System.currentTimeMillis();
-
ResourceGWTServiceAsync resourceService = GWTServiceLookup.getResourceService();
ResourceCriteria resourceCriteria = new ResourceCriteria();
@@ -176,61 +169,29 @@ public class ResourceGraphPortlet extends ResourceMetricD3Graph
implements Custo
final long startTime = System.currentTimeMillis();
// setting up a deferred Command to execute after all resource queries have
completed (successfully or unsuccessfully)
- // we know there are exactly 2 resources
+ // we know there are exactly 1 resources
final CountDownLatch countDownLatch = CountDownLatch.create(1, new Command() {
@Override
/**
* Satisfied only after ALL of the metric queries AND availability have
completed
*/
public void execute() {
- Log.debug("Dashboard chart query total time for entity:
"+entityId+", MeasurementDef: "+def.getId() +" in "+
(System.currentTimeMillis() - startTime)+" ms");
+ Log.debug("Dashboard chart query total time for entity: " +
entityId + ", MeasurementDef: "
+ + def.getId() + " in " + (System.currentTimeMillis() -
startTime) + " ms");
drawGraph();
}
});
queryMeasurementsAndMetricData(entityId, def.getId(), countDownLatch);
- //queryAvailability(entityId, countDownLatch);
// now the countDown latch will run sometime asynchronously after BOTH the
previous 2 queries have executed
}
-// private void queryAvailability(final Integer entityId, final CountDownLatch
countDownLatch) {
-//
-// final long startTime = System.currentTimeMillis();
-//
-// // now return the availability
-// AvailabilityCriteria c = new AvailabilityCriteria();
-// c.addFilterResourceId(entityId);
-// c.addFilterInitialAvailability(false);
-// c.addSortStartTime(PageOrdering.ASC);
-// GWTServiceLookup.getAvailabilityService().findAvailabilityByCriteria(c,
-// new AsyncCallback<PageList<Availability>>() {
-// @Override
-// public void onFailure(Throwable caught) {
-//
CoreGUI.getErrorHandler().handleError(MSG.view_resource_monitor_availability_loadFailed(),
caught);
-// countDownLatch.countDown();
-// }
-//
-// @Override
-// public void onSuccess(PageList<Availability> availList) {
-// Log.debug("Dashboard chart availability query for:
"+entityId+", in: "
-// + (System.currentTimeMillis() - startTime) + "
ms.");
-// PageList<Availability> availabilityList = new
PageList<Availability>();
-// for (Availability availability : availList) {
-// if
(!availability.getAvailabilityType().equals(AvailabilityType.UP)){
-// availabilityList.add(availability);
-// }
-// }
-//
//graph.getMetricGraphData().setAvailabilityList(availabilityList);
-// countDownLatch.countDown();
-// }
-// });
-// }
-
- private void queryMeasurementsAndMetricData(final Integer entityId, final Integer
definitionId, final CountDownLatch countDownLatch) {
+ private void queryMeasurementsAndMetricData(final Integer entityId, final Integer
definitionId,
+ final CountDownLatch countDownLatch) {
final long startTime = System.currentTimeMillis();
//
-
GWTServiceLookup.getMeasurementDataService().findDataForResourceForLast(entityId,
- new int[] { definitionId }, 8, MeasurementUtils.UNIT_HOURS, 60,
+ GWTServiceLookup.getMeasurementDataService().findDataForResourceForLast(entityId,
new int[] { definitionId },
+ 8, MeasurementUtils.UNIT_HOURS, 60,
new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
@Override
public void onFailure(Throwable caught) {
@@ -240,8 +201,7 @@ public class ResourceGraphPortlet extends ResourceMetricD3Graph
implements Custo
@Override
public void onSuccess(final
List<List<MeasurementDataNumericHighLowComposite>> measurementData) {
- Log.debug("Dashboard Metric data in: "
- + (System.currentTimeMillis() - startTime) + " ms.");
+ Log.debug("Dashboard Metric data in: " +
(System.currentTimeMillis() - startTime) + " ms.");
graph.getMetricGraphData().setMetricData(measurementData.get(0));
countDownLatch.countDown();
}
@@ -337,7 +297,7 @@ public class ResourceGraphPortlet extends ResourceMetricD3Graph
implements Custo
@Override
public void redraw() {
- Log.debug(" *** Redraw Portlet and set data");
+ Log.debug("Redraw Portlet and set data");
super.redraw();
removeMembers(getMembers());
@@ -350,8 +310,6 @@ public class ResourceGraphPortlet extends ResourceMetricD3Graph
implements Custo
} else {
graph.getMetricGraphData().setEntityId(simple.getIntegerValue());
PropertySimple simpleDefId =
storedPortlet.getConfiguration().getSimple(CFG_DEFINITION_ID);
- Log.debug("EntityId from portal config: " +
simple.getIntegerValue());
- Log.debug("DefintionId from portal config: " +
simpleDefId.getIntegerValue());
graph.getMetricGraphData().setDefinitionId(simpleDefId.getIntegerValue());
drawGraph();
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractD3GraphListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractD3GraphListView.java
new file mode 100644
index 0000000..76eb8d2
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractD3GraphListView.java
@@ -0,0 +1,84 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * 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.common;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.widgets.Label;
+
+import org.rhq.core.domain.criteria.AvailabilityCriteria;
+import org.rhq.core.domain.measurement.Availability;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.core.domain.util.PageOrdering;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import
org.rhq.enterprise.gui.coregui.client.components.measurement.UserPreferencesMeasurementRangeEditor;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.AvailabilityD3Graph;
+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.selenium.LocatableVLayout;
+
+public class AbstractD3GraphListView extends LocatableVLayout {
+ protected PageList<Availability> availabilityList;
+ protected AvailabilityD3Graph availabilityGraph;
+ protected static Label loadingLabel = new Label(MSG.common_msg_loading());
+ protected UserPreferencesMeasurementRangeEditor measurementRangeEditor;
+ protected boolean monitorDetailView = false;
+
+ public AbstractD3GraphListView(String locatorId){
+ super(locatorId);
+ measurementRangeEditor = new
UserPreferencesMeasurementRangeEditor(this.getLocatorId());
+ }
+
+ protected void queryAvailability(final int resourceId, final CountDownLatch
countDownLatch) {
+
+ final long startTime = System.currentTimeMillis();
+
+ // now return the availability
+ AvailabilityCriteria c = new AvailabilityCriteria();
+ c.addFilterResourceId(resourceId);
+ c.addFilterInitialAvailability(false);
+ c.addSortStartTime(PageOrdering.ASC);
+ GWTServiceLookup.getAvailabilityService().findAvailabilityByCriteria(c,
+ new AsyncCallback<PageList<Availability>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_resource_monitor_availability_loadFailed(),
caught);
+ if (countDownLatch != null) {
+ countDownLatch.countDown();
+ }
+ }
+
+ @Override
+ public void onSuccess(PageList<Availability> availList) {
+ Log.debug("\nSuccessfully queried availability in: " +
(System.currentTimeMillis() - startTime)
+ + " ms.");
+ availabilityList = new PageList<Availability>();
+ for (Availability availability : availList) {
+ availabilityList.add(availability);
+ }
+ Log.debug("avail list size: " +
availabilityList.size());
+ if (countDownLatch != null) {
+ countDownLatch.countDown();
+ }
+ }
+ });
+ }
+
+
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMetricD3GraphView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMetricD3GraphView.java
index 954e19c..767daa9 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMetricD3GraphView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMetricD3GraphView.java
@@ -111,7 +111,7 @@ public abstract class AbstractMetricD3GraphView extends
LocatableVLayout {
StringBuilder divAndSvgDefs = new StringBuilder();
divAndSvgDefs.append("<div id=\"rChart-" +
graph.getMetricGraphData().getChartId()
- + "\" ><svg
xmlns=\"http://www.w3.org/2000/svg\"
version=\"1.1\" style=\"height:" + getChartHeight()
+ + "\" ><svg
xmlns=\"http://www.w3.org/2000/svg\"
version=\"1.1\"
xmlns:xlink=\"http://www.w3.org/1999/xlink\"
style=\"height:" + getChartHeight()
+ "px;\">");
divAndSvgDefs.append(getSvgDefs());
divAndSvgDefs.append("</svg></div>");
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/charttype/MetricStackedBarGraph.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/charttype/MetricStackedBarGraph.java
index df8635f..fddffe1 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/charttype/MetricStackedBarGraph.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/charttype/MetricStackedBarGraph.java
@@ -72,7 +72,6 @@ public final class MetricStackedBarGraph extends AbstractGraph {
"use strict";
// privates
- console.log("Chart Height: "+chartContext.height);
var margin = {top: 10, right: 5, bottom: 5, left: 40},
width = 750 - margin.left - margin.right,
adjustedChartHeight = chartContext.chartHeight - 50,
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/D3GroupGraphListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/D3GroupGraphListView.java
index f7e9eae..1d4c80d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/D3GroupGraphListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/D3GroupGraphListView.java
@@ -26,7 +26,6 @@ import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
-import com.smartgwt.client.widgets.Label;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.DisplayType;
@@ -35,28 +34,27 @@ import
org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowCo
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import
org.rhq.enterprise.gui.coregui.client.components.measurement.UserPreferencesMeasurementRangeEditor;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import
org.rhq.enterprise.gui.coregui.client.inventory.common.charttype.AvailabilityLineGraphType;
import org.rhq.enterprise.gui.coregui.client.inventory.common.charttype.MetricGraphData;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.charttype.MetricStackedBarGraph;
+import org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractD3GraphListView;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.AvailabilityD3Graph;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.ResourceMetricD3Graph;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* Build the Group version of the View that shows the individual graph views.
* @author Mike Thompson
*/
-public class D3GroupGraphListView extends LocatableVLayout {
+public class D3GroupGraphListView extends AbstractD3GraphListView {
private ResourceGroup resourceGroup;
- private Label loadingLabel = new Label(MSG.common_msg_loading());
- private UserPreferencesMeasurementRangeEditor measurementRangeEditor;
- public D3GroupGraphListView(String locatorId, ResourceGroup resourceGroup) {
+ public D3GroupGraphListView(String locatorId, ResourceGroup resourceGroup, boolean
monitorDetailView) {
super(locatorId);
- measurementRangeEditor = new
UserPreferencesMeasurementRangeEditor(this.getLocatorId());
this.resourceGroup = resourceGroup;
+ this.monitorDetailView = monitorDetailView;
setOverflow(Overflow.AUTO);
}
@@ -67,6 +65,13 @@ public class D3GroupGraphListView extends LocatableVLayout {
destroyMembers();
addMember(measurementRangeEditor);
+ if (monitorDetailView) {
+ availabilityGraph = new AvailabilityD3Graph("avail", new
AvailabilityLineGraphType(resourceGroup.getId()));
+ // first step in 2 step to create d3 chart
+ // create a placeholder for avail graph
+ availabilityGraph.createGraphMarker();
+ addMember(availabilityGraph);
+ }
if (resourceGroup != null) {
buildGraphs();
@@ -78,77 +83,78 @@ public class D3GroupGraphListView extends LocatableVLayout {
*/
private void buildGraphs() {
- List<Long> startEndList = measurementRangeEditor.getBeginEndTimes();
+ List<Long> startEndList = measurementRangeEditor.getBeginEndTimes();
final long startTime = startEndList.get(0);
final long endTime = startEndList.get(1);
+ queryAvailability(resourceGroup.getId(), null);
+
ResourceTypeRepository.Cache.getInstance().getResourceTypes(resourceGroup.getResourceType().getId(),
- EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
- new ResourceTypeRepository.TypeLoadedCallback() {
- public void onTypesLoaded(final ResourceType type) {
+ EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
+ new ResourceTypeRepository.TypeLoadedCallback() {
+ public void onTypesLoaded(final ResourceType type) {
- final ArrayList<MeasurementDefinition>
measurementDefinitions = new ArrayList<MeasurementDefinition>();
+ final ArrayList<MeasurementDefinition> measurementDefinitions =
new ArrayList<MeasurementDefinition>();
- for (MeasurementDefinition def : type.getMetricDefinitions()) {
- if (def.getDataType() == DataType.MEASUREMENT &&
def.getDisplayType() == DisplayType.SUMMARY) {
- measurementDefinitions.add(def);
- }
+ for (MeasurementDefinition def : type.getMetricDefinitions()) {
+ if (def.getDataType() == DataType.MEASUREMENT &&
def.getDisplayType() == DisplayType.SUMMARY) {
+ measurementDefinitions.add(def);
}
+ }
- Collections.sort(measurementDefinitions, new
Comparator<MeasurementDefinition>() {
- public int compare(MeasurementDefinition o1,
MeasurementDefinition o2) {
- return new
Integer(o1.getDisplayOrder()).compareTo(o2.getDisplayOrder());
- }
- });
-
- int[] measDefIdArray = new int[measurementDefinitions.size()];
- for (int i = 0; i < measDefIdArray.length; i++) {
- measDefIdArray[i] = measurementDefinitions.get(i).getId();
+ Collections.sort(measurementDefinitions, new
Comparator<MeasurementDefinition>() {
+ public int compare(MeasurementDefinition o1,
MeasurementDefinition o2) {
+ return new
Integer(o1.getDisplayOrder()).compareTo(o2.getDisplayOrder());
}
+ });
-
GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(resourceGroup.getId(),
measDefIdArray, startTime, endTime,60,
- new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>()
- {
- @Override
- public void onFailure(Throwable caught)
- {
-
CoreGUI.getErrorHandler().handleError(MSG.view_resource_monitor_graphs_loadFailed(),
- caught);
-
loadingLabel.setContents(MSG.view_resource_monitor_graphs_loadFailed());
- }
+ int[] measDefIdArray = new int[measurementDefinitions.size()];
+ for (int i = 0; i < measDefIdArray.length; i++) {
+ measDefIdArray[i] = measurementDefinitions.get(i).getId();
+ }
+
+
GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(resourceGroup.getId(),
+ measDefIdArray, startTime, endTime, 60,
+ new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_resource_monitor_graphs_loadFailed(),
+ caught);
+
loadingLabel.setContents(MSG.view_resource_monitor_graphs_loadFailed());
+ }
- @Override
- public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> result)
- {
- if (result.isEmpty())
- {
-
loadingLabel.setContents(MSG.view_resource_monitor_graphs_noneAvailable());
- }
- else
- {
- loadingLabel.hide();
- int i = 0;
- for
(List<MeasurementDataNumericHighLowComposite> data : result)
- {
-
buildIndividualGraph(measurementDefinitions.get(i++), data);
- }
- }
+ @Override
+ public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> result) {
+ if (result.isEmpty()) {
+
loadingLabel.setContents(MSG.view_resource_monitor_graphs_noneAvailable());
+ } else {
+ loadingLabel.hide();
+ int i = 0;
+ for
(List<MeasurementDataNumericHighLowComposite> data : result) {
+
buildIndividualGraph(measurementDefinitions.get(i++), data);
}
- });
+ availabilityGraph.setMetricData(result.get(0));
+
availabilityGraph.setAvailabilityList(availabilityList);
+ availabilityGraph.drawGraph();
+ }
+ }
+ });
- }
- });
+ }
+ });
}
- private void buildIndividualGraph(MeasurementDefinition measurementDefinition,
List<MeasurementDataNumericHighLowComposite> data) {
+ private void buildIndividualGraph(MeasurementDefinition measurementDefinition,
+ List<MeasurementDataNumericHighLowComposite> data) {
MetricGraphData metricGraphData = new MetricGraphData(resourceGroup.getId(),
resourceGroup.getName(),
- measurementDefinition, data);
+ measurementDefinition, data);
MetricStackedBarGraph graph = new MetricStackedBarGraph(metricGraphData);
- ResourceMetricD3Graph graphView = new
ResourceMetricD3Graph(extendLocatorId(measurementDefinition.getName()), graph);
+ ResourceMetricD3Graph graphView = new
ResourceMetricD3Graph(extendLocatorId(measurementDefinition.getName()),
+ graph);
graphView.setWidth("95%");
- graphView.setHeight(250);
+ graphView.setHeight(225);
addMember(graphView);
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index 116bfed..12a7796 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
@@ -325,7 +325,7 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
viewFactory = (!visibleToIE8) ? null : new ViewFactory() {
@Override
public Canvas createView() {
- return new
D3GroupGraphListView(monitoringTab.extendLocatorId("NewGraphs"),
groupComposite.getResourceGroup());
+ return new
D3GroupGraphListView(monitoringTab.extendLocatorId("NewGraphs"),
groupComposite.getResourceGroup(), true);
}
};
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/ResourceGroupMetricGraphView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/ResourceGroupMetricGraphView.java
index 6e45af9..f8c5dad 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/ResourceGroupMetricGraphView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/ResourceGroupMetricGraphView.java
@@ -36,6 +36,7 @@ import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGroupGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractMetricGraphView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
+import org.rhq.enterprise.gui.coregui.client.util.Log;
import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility;
import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
@@ -66,6 +67,7 @@ public class ResourceGroupMetricGraphView extends
AbstractMetricGraphView {
@Override
protected void renderGraph() {
if (null == getDefinition()) {
+ Log.debug(" **** Mike Group Metric Graph");
ResourceGroupGWTServiceAsync groupService =
GWTServiceLookup.getResourceGroupService();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
index 1315565..e17bddd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
@@ -28,11 +28,8 @@ import java.util.TreeSet;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
-import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
-import org.rhq.core.domain.criteria.AvailabilityCriteria;
-import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.DisplayType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
@@ -41,10 +38,10 @@ import
org.rhq.core.domain.measurement.composite.MeasurementOOBComposite;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import
org.rhq.enterprise.gui.coregui.client.components.measurement.UserPreferencesMeasurementRangeEditor;
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.charttype.AvailabilityLineGraphType;
import org.rhq.enterprise.gui.coregui.client.inventory.common.charttype.MetricGraphData;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.charttype.MetricStackedBarGraph;
@@ -52,7 +49,6 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTyp
import org.rhq.enterprise.gui.coregui.client.util.Log;
import org.rhq.enterprise.gui.coregui.client.util.async.Command;
import org.rhq.enterprise.gui.coregui.client.util.async.CountDownLatch;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* Build the View that shows the individual graph views for multi-graph
@@ -61,20 +57,16 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*
* @author Mike Thompson
*/
-public class D3GraphListView extends LocatableVLayout {
+public class D3GraphListView extends AbstractD3GraphListView {
private static int NUM_ASYNC_CALLS = 2; // wait for X async calls in Latch
private Resource resource;
private Set<Integer> definitionIds = null;
- private Label loadingLabel = new Label(MSG.common_msg_loading());
private UserPreferencesMeasurementRangeEditor measurementRangeEditor;
private boolean useSummaryData = false;
- private boolean monitorDetailView = false;
- private PageList<Availability> availabilityList;
private PageList<MeasurementOOBComposite> measurementOOBCompositeList;
private List<List<MeasurementDataNumericHighLowComposite>>
metricsDataList;
- private AvailabilityD3Graph availabilityGraph;
public static D3GraphListView createMultipleGraphs(String locatorId, Resource
resource, Set<Integer> definitionIds,
boolean monitorDetailView) {
@@ -119,41 +111,6 @@ public class D3GraphListView extends LocatableVLayout {
measurementRangeEditor.getSetButton().addClickHandler(clickHandler);
}
- private void queryAvailability(final Resource resource, final CountDownLatch
countDownLatch) {
-
- final long startTime = System.currentTimeMillis();
-
- // now return the availability
- AvailabilityCriteria c = new AvailabilityCriteria();
- c.addFilterResourceId(resource.getId());
- c.addFilterInitialAvailability(false);
- c.addSortStartTime(PageOrdering.ASC);
- GWTServiceLookup.getAvailabilityService().findAvailabilityByCriteria(c,
- new AsyncCallback<PageList<Availability>>() {
- @Override
- public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_resource_monitor_availability_loadFailed(),
caught);
- if (countDownLatch != null) {
- countDownLatch.countDown();
- }
- }
-
- @Override
- public void onSuccess(PageList<Availability> availList) {
- Log.debug("\nSuccessfully queried availability in: " +
(System.currentTimeMillis() - startTime)
- + " ms.");
- availabilityList = new PageList<Availability>();
- for (Availability availability : availList) {
- availabilityList.add(availability);
- }
- Log.debug("avail list size: " + availabilityList.size());
- if (countDownLatch != null) {
- countDownLatch.countDown();
- }
- }
- });
- }
-
@Override
protected void onDraw() {
super.onDraw();
@@ -162,7 +119,6 @@ public class D3GraphListView extends LocatableVLayout {
addMember(measurementRangeEditor);
if (monitorDetailView) {
- Log.debug("show monitor view");
availabilityGraph = new AvailabilityD3Graph("avail", new
AvailabilityLineGraphType(resource.getId()));
// first step in 2 step to create d3 chart
// create a placeholder for avail graph
@@ -191,7 +147,7 @@ public class D3GraphListView extends LocatableVLayout {
final long startTime = startEndList.get(0);
final long endTime = startEndList.get(1);
- queryAvailability(resource, null);
+ queryAvailability(resource.getId(), null);
ResourceTypeRepository.Cache.getInstance().getResourceTypes(resource.getResourceType().getId(),
EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
commit 10c476be0877fcdbe4e48d4c728e34c0d328b512
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Thu Feb 28 11:42:35 2013 -0800
Charting - Move availability call out of latch enabling it to called only once for the
resource.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
index 5bbdb95..1315565 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
@@ -33,7 +33,6 @@ import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
import org.rhq.core.domain.criteria.AvailabilityCriteria;
import org.rhq.core.domain.measurement.Availability;
-import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.DisplayType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
@@ -64,13 +63,12 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*/
public class D3GraphListView extends LocatableVLayout {
- private static int NUM_ASYNC_CALLS = 3; // wait for X async calls in Latch
+ private static int NUM_ASYNC_CALLS = 2; // wait for X async calls in Latch
private Resource resource;
private Set<Integer> definitionIds = null;
private Label loadingLabel = new Label(MSG.common_msg_loading());
private UserPreferencesMeasurementRangeEditor measurementRangeEditor;
- //private SliderRangeEditor sliderRangeEditor;
private boolean useSummaryData = false;
private boolean monitorDetailView = false;
private PageList<Availability> availabilityList;
@@ -78,12 +76,14 @@ public class D3GraphListView extends LocatableVLayout {
private List<List<MeasurementDataNumericHighLowComposite>>
metricsDataList;
private AvailabilityD3Graph availabilityGraph;
- public static D3GraphListView createMultipleGraphs(String locatorId, Resource
resource, Set<Integer> definitionIds, boolean monitorDetailView) {
+ public static D3GraphListView createMultipleGraphs(String locatorId, Resource
resource, Set<Integer> definitionIds,
+ boolean monitorDetailView) {
return new D3GraphListView(locatorId, resource, definitionIds,
monitorDetailView);
}
- public static D3GraphListView createSummaryMultipleGraphs(String locatorId, Resource
resource, boolean monitorDetailView) {
+ public static D3GraphListView createSummaryMultipleGraphs(String locatorId, Resource
resource,
+ boolean monitorDetailView) {
return new D3GraphListView(locatorId, resource, monitorDetailView);
}
@@ -110,13 +110,11 @@ public class D3GraphListView extends LocatableVLayout {
}
private void commonConstructorSettings() {
- //sliderRangeEditor = new SliderRangeEditor(this.getLocatorId());
measurementRangeEditor = new
UserPreferencesMeasurementRangeEditor(this.getLocatorId());
setOverflow(Overflow.AUTO);
}
public void addSetButtonClickHandler(ClickHandler clickHandler) {
- //Log.debug("measurementRangeEditor " + sliderRangeEditor);
Log.debug("measurementRangeEditor " + measurementRangeEditor);
measurementRangeEditor.getSetButton().addClickHandler(clickHandler);
}
@@ -131,45 +129,40 @@ public class D3GraphListView extends LocatableVLayout {
c.addFilterInitialAvailability(false);
c.addSortStartTime(PageOrdering.ASC);
GWTServiceLookup.getAvailabilityService().findAvailabilityByCriteria(c,
- new AsyncCallback<PageList<Availability>>() {
- @Override
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(
- MSG.view_resource_monitor_availability_loadFailed(),
caught);
- if(countDownLatch != null){
- countDownLatch.countDown();
- }
+ new AsyncCallback<PageList<Availability>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_resource_monitor_availability_loadFailed(),
caught);
+ if (countDownLatch != null) {
+ countDownLatch.countDown();
}
+ }
- @Override
- public void onSuccess(PageList<Availability> availList) {
- Log.debug("\nSuccessfully queried availability in: "
- + (System.currentTimeMillis() - startTime) + "
ms.");
- availabilityList = new PageList<Availability>();
- for (Availability availability : availList) {
- availabilityList.add(availability);
- }
- Log.debug("avail list size: " +
availabilityList.size());
- if(countDownLatch != null){
- countDownLatch.countDown();
- }
+ @Override
+ public void onSuccess(PageList<Availability> availList) {
+ Log.debug("\nSuccessfully queried availability in: " +
(System.currentTimeMillis() - startTime)
+ + " ms.");
+ availabilityList = new PageList<Availability>();
+ for (Availability availability : availList) {
+ availabilityList.add(availability);
+ }
+ Log.debug("avail list size: " + availabilityList.size());
+ if (countDownLatch != null) {
+ countDownLatch.countDown();
}
- });
+ }
+ });
}
-
@Override
protected void onDraw() {
super.onDraw();
Log.debug("D3GraphListView.onDraw()");
destroyMembers();
-
- //addMember(sliderRangeEditor);
addMember(measurementRangeEditor);
- if(monitorDetailView){
+ if (monitorDetailView) {
Log.debug("show monitor view");
- //List<Long> startEndList = sliderRangeEditor.getBeginEndTimes();
availabilityGraph = new AvailabilityD3Graph("avail", new
AvailabilityLineGraphType(resource.getId()));
// first step in 2 step to create d3 chart
// create a placeholder for avail graph
@@ -195,10 +188,11 @@ public class D3GraphListView extends LocatableVLayout {
private void buildGraphs() {
final long startTimer = System.currentTimeMillis();
List<Long> startEndList = measurementRangeEditor.getBeginEndTimes();
- //List<Long> startEndList = sliderRangeEditor.getBeginEndTimes();
final long startTime = startEndList.get(0);
final long endTime = startEndList.get(1);
+ queryAvailability(resource, null);
+
ResourceTypeRepository.Cache.getInstance().getResourceTypes(resource.getResourceType().getId(),
EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
new ResourceTypeRepository.TypeLoadedCallback() {
@@ -263,7 +257,6 @@ public class D3GraphListView extends LocatableVLayout {
});
queryMetricData(measDefIdArray, countDownLatch);
- queryAvailability(resource, countDownLatch);
queryOOBMetrics(resource, countDownLatch);
// now the countDown latch will run sometime asynchronously
@@ -292,12 +285,10 @@ public class D3GraphListView extends LocatableVLayout {
});
}
-
private void queryOOBMetrics(final Resource resource, final
CountDownLatch countDownLatch) {
final long startTime = System.currentTimeMillis();
- // now return the availability
GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForResource(resource.getId(),
60,
new AsyncCallback<PageList<MeasurementOOBComposite>>() {
@@ -305,10 +296,10 @@ public class D3GraphListView extends LocatableVLayout {
public void onSuccess(PageList<MeasurementOOBComposite>
measurementOOBComposites) {
measurementOOBCompositeList = measurementOOBComposites;
- Log.debug("\nSuccessfully queried OOB data in: "
- + (System.currentTimeMillis() - startTime) + "
ms.");
- Log.debug("OOB Data size:
"+measurementOOBCompositeList.size());
- if(null != measurementOOBCompositeList){
+ Log.debug("\nSuccessfully queried OOB data in: " +
(System.currentTimeMillis() - startTime)
+ + " ms.");
+ Log.debug("OOB Data size: " +
measurementOOBCompositeList.size());
+ if (null != measurementOOBCompositeList) {
for (MeasurementOOBComposite measurementOOBComposite :
measurementOOBComposites) {
Log.debug("measurementOOBComposite = " +
measurementOOBComposite);
}
@@ -344,7 +335,7 @@ public class D3GraphListView extends LocatableVLayout {
int i = 0;
for (MeasurementDefinition measurementDefinition :
measurementDefinitions) {
if (summaryIds.contains(measurementDefinition.getId())) {
- buildSingleGraph(availabilityList,
measurementOOBCompositeList, measurementDefinition,
+ buildSingleGraph(measurementOOBCompositeList,
measurementDefinition,
measurementData.get(i), 225);
}
i++;
@@ -364,13 +355,11 @@ public class D3GraphListView extends LocatableVLayout {
if (null != selectedDefinitionId) {
// single graph case
if (measurementId == selectedDefinitionId) {
- buildSingleGraph(availabilityList,
measurementOOBCompositeList, measurementDefinition,
- metric, 225);
+ buildSingleGraph(measurementOOBCompositeList,
measurementDefinition, metric, 225);
}
} else {
// multiple graph case
- buildSingleGraph(availabilityList,
measurementOOBCompositeList, measurementDefinition,
- metric, 225);
+ buildSingleGraph(measurementOOBCompositeList,
measurementDefinition, metric, 225);
}
}
i++;
@@ -380,16 +369,15 @@ public class D3GraphListView extends LocatableVLayout {
}
- private void buildSingleGraph(PageList<Availability> downAvailList,
- PageList<MeasurementOOBComposite> measurementOOBCompositeList,
MeasurementDefinition measurementDefinition,
- List<MeasurementDataNumericHighLowComposite> data, int height) {
+ private void buildSingleGraph(PageList<MeasurementOOBComposite>
measurementOOBCompositeList,
+ MeasurementDefinition measurementDefinition,
List<MeasurementDataNumericHighLowComposite> data, int height) {
MetricGraphData metricGraphData = new MetricGraphData(resource.getId(),
resource.getName(),
- measurementDefinition, data, measurementOOBCompositeList);
+ measurementDefinition, data, measurementOOBCompositeList);
MetricStackedBarGraph graph = new MetricStackedBarGraph(metricGraphData);
- ResourceMetricD3Graph graphView = new ResourceMetricD3Graph(
- extendLocatorId(measurementDefinition.getName()), graph);
+ ResourceMetricD3Graph graphView = new
ResourceMetricD3Graph(extendLocatorId(measurementDefinition.getName()),
+ graph);
graphView.setWidth("95%");
graphView.setHeight(height);