diff --git a/gui/src/main/java/org/jboss/as/console/client/core/NameTokens.java b/gui/src/main/java/org/jboss/as/console/client/core/NameTokens.java index 770ac73c9a..61636db318 100644 --- a/gui/src/main/java/org/jboss/as/console/client/core/NameTokens.java +++ b/gui/src/main/java/org/jboss/as/console/client/core/NameTokens.java @@ -59,6 +59,8 @@ public class NameTokens { public static final String StandaloneRuntimePresenter = "standalone-runtime"; public static final String DomainRuntimePresenter = "domain-runtime"; + public static final String TXMetrics = "tx-metrics"; + public static String getMainLayout() { return mainLayout; } diff --git a/gui/src/main/java/org/jboss/as/console/client/core/gin/CoreUI.java b/gui/src/main/java/org/jboss/as/console/client/core/gin/CoreUI.java index b3932c8538..8aef08a7d4 100644 --- a/gui/src/main/java/org/jboss/as/console/client/core/gin/CoreUI.java +++ b/gui/src/main/java/org/jboss/as/console/client/core/gin/CoreUI.java @@ -98,6 +98,7 @@ import org.jboss.as.console.client.standalone.deployment.DeploymentListPresenter; import org.jboss.as.console.client.standalone.path.PathToolPresenter; import org.jboss.as.console.client.standalone.runtime.StandaloneRuntimePresenter; +import org.jboss.as.console.client.standalone.runtime.TXMetricPresenter; import org.jboss.as.console.client.system.SystemApplicationPresenter; /** @@ -233,4 +234,5 @@ public interface CoreUI extends Ginjector { AsyncProvider getRuntimePresenter(); AsyncProvider getDomainRuntimePresenter(); + AsyncProvider getTXMetricPresenter(); } diff --git a/gui/src/main/java/org/jboss/as/console/client/core/gin/CoreUIModule.java b/gui/src/main/java/org/jboss/as/console/client/core/gin/CoreUIModule.java index 09e27ac251..d350b2f8e4 100644 --- a/gui/src/main/java/org/jboss/as/console/client/core/gin/CoreUIModule.java +++ b/gui/src/main/java/org/jboss/as/console/client/core/gin/CoreUIModule.java @@ -103,6 +103,7 @@ import org.jboss.as.console.client.shared.model.DeploymentStoreImpl; import org.jboss.as.console.client.shared.model.SubsystemStore; import org.jboss.as.console.client.shared.model.SubsystemStoreImpl; +import org.jboss.as.console.client.shared.runtime.TXMetricView; import org.jboss.as.console.client.shared.subsys.Baseadress; import org.jboss.as.console.client.shared.subsys.deploymentscanner.ScannerPresenter; import org.jboss.as.console.client.shared.subsys.deploymentscanner.ScannerView; @@ -151,6 +152,7 @@ import org.jboss.as.console.client.standalone.path.PathToolViewImpl; import org.jboss.as.console.client.standalone.runtime.StandaloneRuntimePresenter; import org.jboss.as.console.client.standalone.runtime.StandaloneRuntimeView; +import org.jboss.as.console.client.standalone.runtime.TXMetricPresenter; import org.jboss.as.console.client.system.SystemApplicationPresenter; import org.jboss.as.console.client.system.SystemApplicationViewImpl; @@ -445,6 +447,11 @@ protected void configure() { DomainRuntimePresenter.MyView.class, DomainRuntimeView.class, DomainRuntimePresenter.MyProxy.class); + + bindPresenter(TXMetricPresenter.class, + TXMetricPresenter.MyView.class, + TXMetricView.class, + TXMetricPresenter.MyProxy.class); } } diff --git a/gui/src/main/java/org/jboss/as/console/client/shared/runtime/TXMetricView.java b/gui/src/main/java/org/jboss/as/console/client/shared/runtime/TXMetricView.java new file mode 100644 index 0000000000..f7385ad881 --- /dev/null +++ b/gui/src/main/java/org/jboss/as/console/client/shared/runtime/TXMetricView.java @@ -0,0 +1,86 @@ +package org.jboss.as.console.client.shared.runtime; + +import com.google.gwt.dom.client.Style; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.ui.LayoutPanel; +import com.google.gwt.user.client.ui.ScrollPanel; +import com.google.gwt.user.client.ui.VerticalPanel; +import com.google.gwt.user.client.ui.Widget; +import org.jboss.as.console.client.Console; +import org.jboss.as.console.client.core.SuspendableViewImpl; +import org.jboss.as.console.client.shared.subsys.tx.TXExecutionView; +import org.jboss.as.console.client.shared.subsys.tx.TXRollbackView; +import org.jboss.as.console.client.shared.subsys.tx.model.RollbackMetric; +import org.jboss.as.console.client.shared.subsys.tx.model.TXMetric; +import org.jboss.as.console.client.standalone.runtime.TXMetricPresenter; +import org.jboss.ballroom.client.widgets.tabs.FakeTabPanel; +import org.jboss.ballroom.client.widgets.tools.ToolButton; +import org.jboss.ballroom.client.widgets.tools.ToolStrip; + +/** + * @author Heiko Braun + * @date 11/3/11 + */ +public class TXMetricView extends SuspendableViewImpl implements TXMetricPresenter.MyView{ + + private TXMetricPresenter presenter; + private TXExecutionView executionMetric; + private TXRollbackView rollbackMetric; + + + @Override + public void setPresenter(TXMetricPresenter presenter) { + this.presenter = presenter; + } + + @Override + public Widget createWidget() { + + LayoutPanel layout = new LayoutPanel(); + + FakeTabPanel titleBar = new FakeTabPanel("Transaction Metrics"); + layout.add(titleBar); + + // ---- + + final ToolStrip toolStrip = new ToolStrip(); + + toolStrip.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_refresh(), new ClickHandler(){ + @Override + public void onClick(ClickEvent event) { + + } + })); + + + layout.add(toolStrip); + + // --- + + VerticalPanel panel = new VerticalPanel(); + panel.setStyleName("rhs-content-panel"); + + ScrollPanel scrollPanel = new ScrollPanel(panel); + layout.add(scrollPanel); + + layout.setWidgetTopHeight(titleBar, 0, Style.Unit.PX, 28, Style.Unit.PX); + layout.setWidgetTopHeight(toolStrip, 28, Style.Unit.PX, 30, Style.Unit.PX); + layout.setWidgetTopHeight(scrollPanel, 58, Style.Unit.PX, 100, Style.Unit.PCT); + + // -------------- + + this.executionMetric = new TXExecutionView(); + panel.add(executionMetric.asWidget()); + + this.rollbackMetric = new TXRollbackView(); + panel.add(rollbackMetric.asWidget()); + + + // sample data + executionMetric.addSample(new TXMetric(55, 12, 33, 5)); + rollbackMetric.addSample(new RollbackMetric(77, 12)); + + return layout; + } +} diff --git a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/TXExecutionView.java b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/TXExecutionView.java index c1272a7f86..d4a1eee8c8 100644 --- a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/TXExecutionView.java +++ b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/TXExecutionView.java @@ -15,10 +15,15 @@ public class TXExecutionView implements TXExecutionSampler { private TransactionPresenter presenter; private TXExecutionSampler sampler = null; + @Deprecated public TXExecutionView(TransactionPresenter presenter) { this.presenter = presenter; } + public TXExecutionView() { + this.presenter = presenter; + } + public Widget asWidget() { return displayStrategy(); } @@ -26,7 +31,7 @@ public Widget asWidget() { private Widget displayStrategy() { if(Console.visAPILoaded()) { - sampler = new TXChartView(""); + sampler = new TXChartView("Transaction Outcome"); } else { diff --git a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/TXRollbackView.java b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/TXRollbackView.java index 96e75fefb6..27a74915e6 100644 --- a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/TXRollbackView.java +++ b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/TXRollbackView.java @@ -15,10 +15,15 @@ public class TXRollbackView implements TXRollbackSampler { private TransactionPresenter presenter; private TXRollbackSampler sampler = null; + @Deprecated public TXRollbackView(TransactionPresenter presenter) { this.presenter = presenter; } + public TXRollbackView() { + this.presenter = presenter; + } + public Widget asWidget() { return displayStrategy(); } @@ -26,7 +31,7 @@ public Widget asWidget() { private Widget displayStrategy() { if(Console.visAPILoaded()) { - sampler = new RollbackChartView(""); + sampler = new RollbackChartView("Rollback Origin"); } else { diff --git a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/charts/RollbackChartView.java b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/charts/RollbackChartView.java index 0344be58f0..8f3a145661 100644 --- a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/charts/RollbackChartView.java +++ b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/charts/RollbackChartView.java @@ -7,6 +7,7 @@ import com.google.gwt.visualization.client.AbstractDataTable; import com.google.gwt.visualization.client.DataTable; import com.google.gwt.visualization.client.visualizations.corechart.AxisOptions; +import com.google.gwt.visualization.client.visualizations.corechart.BarChart; import com.google.gwt.visualization.client.visualizations.corechart.CoreChart; import com.google.gwt.visualization.client.visualizations.corechart.LineChart; import com.google.gwt.visualization.client.visualizations.corechart.Options; @@ -23,7 +24,7 @@ public class RollbackChartView extends AbstractChartView implements TXRollbackSampler { private DataTable data; - private LineChart chart; + private BarChart chart; private HTML appLabel; private HTML resourceLabel; @@ -41,7 +42,7 @@ public Widget asWidget() { layout = new VerticalPanel(); // chart - chart = new LineChart(createTable(), createOptions()) ; + chart = new BarChart(createTable(), createOptions()) ; layout.add(chart); // labels @@ -81,7 +82,8 @@ public void addSample(RollbackMetric metric) { appLabel.setHTML("Applications: " + metric.getAppRollback()); resourceLabel.setHTML("Resources: "+metric.getResourceRollback()); - data.addRow(); + if(data.getNumberOfRows()==0) + data.addRow(); int nextRow = data.getNumberOfRows()-1; data.setValue(nextRow, 0, new Date(System.currentTimeMillis())); @@ -113,7 +115,7 @@ public void recycle() { if(chart!=null) { layout.remove(chart); - chart = new LineChart(createTable(), createOptions()) ; + chart = new BarChart(createTable(), createOptions()) ; layout.add(chart); } diff --git a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/charts/TXChartView.java b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/charts/TXChartView.java index 75c7593076..ce9444a4a3 100644 --- a/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/charts/TXChartView.java +++ b/gui/src/main/java/org/jboss/as/console/client/shared/subsys/tx/charts/TXChartView.java @@ -6,9 +6,10 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.visualization.client.AbstractDataTable; import com.google.gwt.visualization.client.DataTable; +import com.google.gwt.visualization.client.LegendPosition; import com.google.gwt.visualization.client.visualizations.corechart.AxisOptions; +import com.google.gwt.visualization.client.visualizations.corechart.BarChart; import com.google.gwt.visualization.client.visualizations.corechart.CoreChart; -import com.google.gwt.visualization.client.visualizations.corechart.LineChart; import com.google.gwt.visualization.client.visualizations.corechart.Options; import org.jboss.as.console.client.shared.jvm.charts.AbstractChartView; import org.jboss.as.console.client.shared.subsys.tx.TXExecutionSampler; @@ -23,7 +24,7 @@ public class TXChartView extends AbstractChartView implements TXExecutionSampler { private DataTable data; - private LineChart chart; + private BarChart chart; private HTML totalLabel; private HTML commitedLabel; @@ -44,7 +45,7 @@ public Widget asWidget() { layout = new VerticalPanel(); // chart - chart = new LineChart(createTable(), createOptions()) ; + chart = new BarChart(createTable(), createOptions()) ; layout.add(chart); // labels @@ -82,7 +83,9 @@ private Options createOptions() { options.setWidth(width); options.setHeight(height); options.setTitle(title); - options.setType(CoreChart.Type.LINE); + options.setType(CoreChart.Type.BARS); + options.setLegend(LegendPosition.BOTTOM); + return options; } @@ -91,7 +94,9 @@ public void addSample(TXMetric metric) { totalLabel.setHTML("Total: " + metric.getTotal()); commitedLabel.setHTML("Committed: "+metric.getCommitted()); - data.addRow(); + if(data.getNumberOfRows()==0) + data.addRow(); + //data.addRow(); only supports a single sample int nextRow = data.getNumberOfRows()-1; data.setValue(nextRow, 0, new Date(System.currentTimeMillis())); @@ -105,6 +110,7 @@ public void addSample(TXMetric metric) { AxisOptions haxis = AxisOptions.create(); haxis.set("showTextEvery", "10.00"); haxis.set("maxAlternation", "1"); + //haxis.set("titleTextStyle", "display:none"); options.setHAxisOptions(haxis); chart.draw(data, options); @@ -125,7 +131,8 @@ public void recycle() { if(chart!=null) { layout.remove(chart); - chart = new LineChart(createTable(), createOptions()) ; + chart = new BarChart(createTable(), createOptions()) ; + chart.setTitle(title); layout.add(chart); } diff --git a/gui/src/main/java/org/jboss/as/console/client/standalone/runtime/StandaloneRuntimeNavigation.java b/gui/src/main/java/org/jboss/as/console/client/standalone/runtime/StandaloneRuntimeNavigation.java index 154e55f2f9..5875d96438 100644 --- a/gui/src/main/java/org/jboss/as/console/client/standalone/runtime/StandaloneRuntimeNavigation.java +++ b/gui/src/main/java/org/jboss/as/console/client/standalone/runtime/StandaloneRuntimeNavigation.java @@ -46,7 +46,7 @@ public Widget asWidget() LHSNavTreeItem datasources = new LHSNavTreeItem("Datasources", "ds-metrics"); LHSNavTreeItem jmsQueues = new LHSNavTreeItem("JMS Destinations", "jms-metrics"); LHSNavTreeItem web = new LHSNavTreeItem("Web", "web-metrics"); - LHSNavTreeItem tx = new LHSNavTreeItem("Transactions", "tx-metrics"); + LHSNavTreeItem tx = new LHSNavTreeItem("Transactions", NameTokens.TXMetrics); statusTree.addItem(datasources); statusTree.addItem(jmsQueues); diff --git a/gui/src/main/java/org/jboss/as/console/client/standalone/runtime/TXMetricPresenter.java b/gui/src/main/java/org/jboss/as/console/client/standalone/runtime/TXMetricPresenter.java new file mode 100644 index 0000000000..d706f68573 --- /dev/null +++ b/gui/src/main/java/org/jboss/as/console/client/standalone/runtime/TXMetricPresenter.java @@ -0,0 +1,57 @@ +package org.jboss.as.console.client.standalone.runtime; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.gwtplatform.mvp.client.Presenter; +import com.gwtplatform.mvp.client.View; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit; +import com.gwtplatform.mvp.client.proxy.Place; +import com.gwtplatform.mvp.client.proxy.PlaceManager; +import com.gwtplatform.mvp.client.proxy.Proxy; +import com.gwtplatform.mvp.client.proxy.RevealContentEvent; +import org.jboss.as.console.client.core.NameTokens; +import org.jboss.as.console.client.standalone.ServerMgmtApplicationPresenter; + +/** + * @author Heiko Braun + * @date 11/3/11 + */ +public class TXMetricPresenter extends Presenter { + + private final PlaceManager placeManager; + + @ProxyCodeSplit + @NameToken(NameTokens.TXMetrics) + public interface MyProxy extends Proxy, Place { + } + + public interface MyView extends View { + void setPresenter(TXMetricPresenter presenter); + } + + @Inject + public TXMetricPresenter(EventBus eventBus, MyView view, MyProxy proxy, + PlaceManager placeManager) { + super(eventBus, view, proxy); + + this.placeManager = placeManager; + } + + @Override + protected void onBind() { + super.onBind(); + getView().setPresenter(this); + } + + + @Override + protected void onReset() { + super.onReset(); + } + + @Override + protected void revealInParent() { + RevealContentEvent.fire(getEventBus(), StandaloneRuntimePresenter.TYPE_MainContent, this); + } +} diff --git a/gui/src/main/java/org/jboss/as/console/public/lab.css b/gui/src/main/java/org/jboss/as/console/public/lab.css index 01019e9757..062f5a6eca 100644 --- a/gui/src/main/java/org/jboss/as/console/public/lab.css +++ b/gui/src/main/java/org/jboss/as/console/public/lab.css @@ -55,4 +55,4 @@ padding-left: 0; padding-right: 0; width: 100%; -} \ No newline at end of file +}