| package autotest.tko; |
| |
| import autotest.common.JsonRpcCallback; |
| import autotest.common.Utils; |
| import autotest.common.ui.SimpleDialog; |
| |
| import com.google.gwt.event.dom.client.ClickEvent; |
| import com.google.gwt.event.dom.client.ClickHandler; |
| import com.google.gwt.json.client.JSONArray; |
| import com.google.gwt.json.client.JSONObject; |
| import com.google.gwt.json.client.JSONString; |
| import com.google.gwt.json.client.JSONValue; |
| import com.google.gwt.user.client.ui.Anchor; |
| import com.google.gwt.user.client.ui.FlexTable; |
| |
| class MetricsPlot extends Plot { |
| public MetricsPlot() { |
| super("create_metrics_plot"); |
| } |
| |
| /** |
| * drilldownParams contains: |
| * * query - SQL query for the selected series |
| * * series - name of the selected series |
| * * param - parameter to fill in query for the selected data point |
| */ |
| @Override |
| protected void showDrilldownImpl(JSONObject drilldownParams) { |
| String query = Utils.jsonToString(drilldownParams.get("query")); |
| final String series = Utils.jsonToString(drilldownParams.get("series")); |
| final String param = Utils.jsonToString(drilldownParams.get("param")); |
| |
| JSONObject params = new JSONObject(); |
| params.put("query", new JSONString(query)); |
| params.put("param", new JSONString(param)); |
| rpcProxy.rpcCall("execute_query_with_param", params, new JsonRpcCallback() { |
| @Override |
| public void onSuccess(JSONValue result) { |
| JSONArray data = result.isArray(); |
| |
| String title = series + " for " + param; |
| FlexTable contents = new FlexTable(); |
| final SimpleDialog drill = new SimpleDialog(title, contents); |
| |
| for (int i = 0; i < data.size(); i++) { |
| final JSONArray row = data.get(i).isArray(); |
| final int testId = (int) row.get(0).isNumber().doubleValue(); |
| String yValue = Utils.jsonToString(row.get(1)); |
| |
| Anchor link = new Anchor(yValue); |
| link.addClickHandler(new ClickHandler() { |
| public void onClick(ClickEvent event) { |
| drill.hide(); |
| listener.onSelectTest(testId); |
| } |
| }); |
| contents.setWidget(i, 0, link); |
| } |
| |
| drill.center(); |
| } |
| }); |
| } |
| } |