modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/graph/ButtonBarDateTimeRangeEditor.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/D3GroupGraphListView.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
| 191 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/D3GraphListView.java
| 3
4 files changed, 129 insertions(+), 78 deletions(-)
New commits:
commit 226b0a806bbbd18dcffa69335f201238331ffbe8
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Thu Sep 26 09:59:17 2013 -0700
[BZ 1012589] Multi-line Graph Auto-refresh not working.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
index 7408f62..c3cfb75 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
@@ -42,8 +42,10 @@ import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.JsonMetricProducer;
import org.rhq.enterprise.gui.coregui.client.Messages;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
+import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshUtil;
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.AutoRefresh;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.graph.ButtonBarDateTimeRangeEditor;
import org.rhq.enterprise.gui.coregui.client.inventory.common.graph.Refreshable;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
@@ -62,7 +64,7 @@ import
org.rhq.enterprise.gui.coregui.client.util.preferences.MeasurementUserPre
*
* @author Mike Thompson
*/
-public abstract class CompositeGroupD3GraphListView extends EnhancedVLayout implements
JsonMetricProducer, Refreshable {
+public abstract class CompositeGroupD3GraphListView extends EnhancedVLayout implements
JsonMetricProducer, AutoRefresh, Refreshable {
static protected final Messages MSG = CoreGUI.getMessages();
// string labels
@@ -89,6 +91,9 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
private String chartTitle;
private Integer chartHeight;
+ protected static Timer refreshTimer;
+ protected boolean isRefreshing;
+
public CompositeGroupD3GraphListView(int groupId, int defId, boolean isAutoGroup) {
super();
this.groupId = groupId;
@@ -100,6 +105,7 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
setHeight100();
setWidth100();
setPadding(10);
+ startRefreshCycle();
}
public void populateData() {
@@ -113,89 +119,89 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
measurementForEachResource.clear();
groupService.findResourceGroupCompositesByCriteria(criteria,
- new AsyncCallback<PageList<ResourceGroupComposite>>() {
- @Override
- public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_resource_monitor_graphs_lookupFailed(),
caught);
- }
-
- @Override
- public void onSuccess(PageList<ResourceGroupComposite> result) {
- if (result.isEmpty()) {
- return;
+ new AsyncCallback<PageList<ResourceGroupComposite>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_resource_monitor_graphs_lookupFailed(),
caught);
}
- final ResourceGroup parentGroup = result.get(0).getResourceGroup();
- chartTitle = parentGroup.getName();
- Log.debug("group name: " + parentGroup.getName());
- // setting up a deferred Command to execute after all resource
queries have completed (successfully or unsuccessfully)
- final CountDownLatch countDownLatch =
CountDownLatch.create(parentGroup.getExplicitResources()
- .size(), new Command() {
- @Override
- /**
- * Do this only after ALL of the metric queries for each
resource
- */
- public void execute() {
- if (parentGroup.getExplicitResources().size() !=
measurementForEachResource.size()) {
- Log.warn("Number of graphs doesn't match number
of resources");
- Log.warn("# of child resources: " +
parentGroup.getExplicitResources().size());
- Log.warn("# of charted graphs: " +
measurementForEachResource.size());
- }
- drawGraph();
+ @Override
+ public void onSuccess(PageList<ResourceGroupComposite> result)
{
+ if (result.isEmpty()) {
+ return;
}
- });
- final Set<Resource> childResources =
parentGroup.getExplicitResources();
- if (!childResources.isEmpty()) {
+ final ResourceGroup parentGroup =
result.get(0).getResourceGroup();
+ chartTitle = parentGroup.getName();
+ Log.debug("group name: " + parentGroup.getName());
+ // setting up a deferred Command to execute after all resource
queries have completed (successfully or unsuccessfully)
+ final CountDownLatch countDownLatch =
CountDownLatch.create(parentGroup.getExplicitResources()
+ .size(), new Command() {
+ @Override
+ /**
+ * Do this only after ALL of the metric queries for each
resource
+ */
+ public void execute() {
+ if (parentGroup.getExplicitResources().size() !=
measurementForEachResource.size()) {
+ Log.warn("Number of graphs doesn't match
number of resources");
+ Log.warn("# of child resources: " +
parentGroup.getExplicitResources().size());
+ Log.warn("# of charted graphs: " +
measurementForEachResource.size());
+ }
+ drawGraph();
+ }
+ });
- // resourceType will be the same for all autogroup children so
get first
- Resource childResource = childResources.iterator().next();
+ final Set<Resource> childResources =
parentGroup.getExplicitResources();
+ if (!childResources.isEmpty()) {
- ResourceTypeRepository.Cache.getInstance().getResourceTypes(
- childResource.getResourceType().getId(),
-
EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
- new ResourceTypeRepository.TypeLoadedCallback() {
- @Override
- public void onTypesLoaded(final ResourceType type) {
+ // resourceType will be the same for all autogroup children
so get first
+ Resource childResource = childResources.iterator().next();
- for (MeasurementDefinition def :
type.getMetricDefinitions()) {
- // only need the one selected measurement
- if (def.getId() == getDefinitionId()) {
- setDefinition(def);
- }
- }
-
- for (final Resource childResource : childResources)
{
- Log.debug("Adding child composite: " +
childResource.getName()
- + childResource.getId());
-
-
GWTServiceLookup.getMeasurementDataService().findDataForResource(
- childResource.getId(), new int[] {
getDefinitionId() },
- buttonBarDateTimeRangeEditor.getStartTime(),
- buttonBarDateTimeRangeEditor.getEndTime(),
60,
- new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
- @Override
- public void onFailure(Throwable caught)
{
-
CoreGUI.getErrorHandler().handleError(
-
MSG.view_resource_monitor_graphs_loadFailed(), caught);
- countDownLatch.countDown();
- }
+ ResourceTypeRepository.Cache.getInstance().getResourceTypes(
+ childResource.getResourceType().getId(),
+
EnumSet.of(ResourceTypeRepository.MetadataType.measurements),
+ new ResourceTypeRepository.TypeLoadedCallback() {
+ @Override
+ public void onTypesLoaded(final ResourceType
type) {
- @Override
- public void onSuccess(
-
List<List<MeasurementDataNumericHighLowComposite>> measurements) {
-
addMeasurementForEachResource(childResource.getName(),
- childResource.getId(),
measurements.get(0));
- countDownLatch.countDown();
+ for (MeasurementDefinition def :
type.getMetricDefinitions()) {
+ // only need the one selected
measurement
+ if (def.getId() == getDefinitionId()) {
+ setDefinition(def);
}
- });
- }
- }
- });
+ }
+
+ for (final Resource childResource :
childResources) {
+ Log.debug("Adding child composite:
" + childResource.getName()
+ + childResource.getId());
+
+
GWTServiceLookup.getMeasurementDataService().findDataForResource(
+ childResource.getId(), new
int[]{getDefinitionId()},
+
buttonBarDateTimeRangeEditor.getStartTime(),
+
buttonBarDateTimeRangeEditor.getEndTime(), 60,
+ new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
+ @Override
+ public void
onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(
+
MSG.view_resource_monitor_graphs_loadFailed(), caught);
+
countDownLatch.countDown();
+ }
+
+ @Override
+ public void onSuccess(
+
List<List<MeasurementDataNumericHighLowComposite>> measurements) {
+
addMeasurementForEachResource(childResource.getName(),
+
childResource.getId(), measurements.get(0));
+
countDownLatch.countDown();
+ }
+ });
+ }
+ }
+ });
+ }
}
- }
- });
+ });
}
@@ -418,6 +424,36 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
return MSG.chart_xaxis_time_format_hours();
}
+ @Override
+ public void startRefreshCycle() {
+ refreshTimer = AutoRefreshUtil.startRefreshCycleWithPageRefreshInterval(this,
this, refreshTimer);
+ }
+
+ @Override
+ protected void onDestroy() {
+ AutoRefreshUtil.onDestroy(refreshTimer);
+
+ super.onDestroy();
+ }
+
+ @Override
+ public boolean isRefreshing() {
+ return isRefreshing;
+ }
+
+ //Custom refresh operation as we are not directly extending Table
+ @Override
+ public void refresh() {
+ if (isVisible() && !isRefreshing()) {
+ isRefreshing = true;
+ try {
+ buttonBarDateTimeRangeEditor.updateTimeRangeToNow();
+ refreshData();
+ } finally {
+ isRefreshing = false;
+ }
+ }
+ }
/**
* Client can choose which graph types to render.
*/
commit 77312423e631cc63462868baedfb0e8fe129e1fc
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Thu Sep 26 07:52:06 2013 -0700
Update Summary metric portlet graphs for Date/Time range feedback of period being
selected for charting.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/graph/ButtonBarDateTimeRangeEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/graph/ButtonBarDateTimeRangeEditor.java
index 778bbb2..561f961 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/graph/ButtonBarDateTimeRangeEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/graph/ButtonBarDateTimeRangeEditor.java
@@ -64,9 +64,12 @@ public class ButtonBarDateTimeRangeEditor extends EnhancedVLayout {
private Label dateRangeLabel;
private DateTimeButtonBarClickHandler dateTimeButtonBarClickHandler;
private AbstractMeasurementRangeEditor.MetricRangePreferences prefs;
+ // just a reference to pass to CustomDateRangeWindow as it must be final
+ // so 'this' won't work
final private ButtonBarDateTimeRangeEditor self;
private RefreshIntervalMenu refreshIntervalMenu;
private boolean allowPreferenceUpdateRefresh;
+ private boolean isCustomDateRangeActive;
public ButtonBarDateTimeRangeEditor(MeasurementUserPreferences measurementUserPrefs,
Refreshable d3GraphListView) {
this.self = this;
@@ -110,6 +113,7 @@ public class ButtonBarDateTimeRangeEditor extends EnhancedVLayout {
CustomDateRangeWindow customDateRangeWindow = new
CustomDateRangeWindow(MSG
.common_buttonbar_custom_window_title(),
MSG.common_buttonbar_custom_window_subtitle(), self,
new Date(prefs.begin), new Date(prefs.end));
+ isCustomDateRangeActive = true;
customDateRangeWindow.show();
}
});
@@ -130,6 +134,10 @@ public class ButtonBarDateTimeRangeEditor extends EnhancedVLayout {
addMember(toolStrip);
}
+ public boolean isCustomTimeRangeActive(){
+ return isCustomDateRangeActive;
+ }
+
public void redrawGraphs() {
d3GraphListView.refreshData();
}
@@ -213,6 +221,7 @@ public class ButtonBarDateTimeRangeEditor extends EnhancedVLayout {
public void onClick(ClickEvent clickEvent) {
IButton button = (IButton) clickEvent.getSource();
String selectedDateTimeRange = button.getTitle();
+ isCustomDateRangeActive = false;
Date now = new Date();
Date calculatedStartDateTime = calculateStartDate(now,
selectedDateTimeRange);
saveDateRange(calculatedStartDateTime.getTime(), now.getTime());
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 dcfb744..561a7a5 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
@@ -141,7 +141,9 @@ public final class D3GroupGraphListView extends
AbstractD3GraphListView implemen
@Override
public void run() {
availabilityGraph.drawJsniChart();
- buttonBarDateTimeRangeEditor.updateTimeRangeToNow();
+
if(!buttonBarDateTimeRangeEditor.isCustomTimeRangeActive()){
+
buttonBarDateTimeRangeEditor.updateTimeRangeToNow();
+ }
}
}.schedule(150);
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
index 013696f..7408f62 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/monitoring/table/CompositeGroupD3GraphListView.java
@@ -103,7 +103,6 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
}
public void populateData() {
- buttonBarDateTimeRangeEditor.updateTimeRangeToNow();
ResourceGroupGWTServiceAsync groupService =
GWTServiceLookup.getResourceGroupService();
ResourceGroupCriteria criteria = new ResourceGroupCriteria();
@@ -143,7 +142,6 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
Log.warn("# of charted graphs: " +
measurementForEachResource.size());
}
drawGraph();
- buttonBarDateTimeRangeEditor.updateTimeRangeToNow();
}
});
@@ -284,6 +282,9 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
@Override
public void run() {
+ if(!buttonBarDateTimeRangeEditor.isCustomTimeRangeActive()){
+ buttonBarDateTimeRangeEditor.updateTimeRangeToNow();
+ }
drawJsniChart();
}
}.schedule(200);
@@ -357,7 +358,6 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
sb.append("{ \"x\":" + measurement.getTimestamp() +
",");
MeasurementNumericValueAndUnits dataValue =
normalizeUnitsAndValues(measurement.getValue(),
definition.getUnits());
- //sb.append(" \"y\":" +
MeasurementUnits.scaleUp(measurement.getValue(), definition.getUnits()) +
"},");
sb.append(" \"y\":" + dataValue.getValue() +
"},");
adjustedMeasurementUnits = dataValue.getUnits().toString();
}
@@ -381,8 +381,9 @@ public abstract class CompositeGroupD3GraphListView extends
EnhancedVLayout impl
}
sb.setLength(sb.length() - 1); // delete the last ','
sb.append("]");
+ Log.debug("Multi-resource Graph size: " +
measurementForEachResource.size());
}
- Log.debug("Multi-resource Graph json: " + sb.toString());
+ //Log.debug("Multi-resource Graph json: " + sb.toString());
return sb.toString();
}
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 6eab1e9..0086871 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
@@ -233,6 +233,9 @@ public class D3GraphListView extends AbstractD3GraphListView {
new Timer() {
@Override
public void run() {
+
if(!buttonBarDateTimeRangeEditor.isCustomTimeRangeActive()){
+ buttonBarDateTimeRangeEditor.updateTimeRangeToNow();
+ }
availabilityGraph.drawJsniChart();
}
}.schedule(150);