13b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardpackage autotest.tko;
23b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard
33b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardimport autotest.common.JsonRpcCallback;
43b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardimport autotest.common.Utils;
53b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardimport autotest.common.ui.SimpleDialog;
63b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard
7a5e4d84c9616b0a987e904d3b1d1d3fd9ca1be86showardimport com.google.gwt.event.dom.client.ClickEvent;
8a5e4d84c9616b0a987e904d3b1d1d3fd9ca1be86showardimport com.google.gwt.event.dom.client.ClickHandler;
93b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardimport com.google.gwt.json.client.JSONArray;
103b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardimport com.google.gwt.json.client.JSONObject;
113b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardimport com.google.gwt.json.client.JSONString;
123b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardimport com.google.gwt.json.client.JSONValue;
138a7f36583afe076a7198d1b34fe109aa491dc277jamesrenimport com.google.gwt.user.client.ui.Anchor;
143b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardimport com.google.gwt.user.client.ui.FlexTable;
153b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard
163b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showardclass MetricsPlot extends Plot {
173b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard    public MetricsPlot() {
18fbdab0b28c8084441225523a68db7f0ef63f5ca0showard        super("create_metrics_plot");
193b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard    }
203b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard
213b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard    /**
223b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard     * drilldownParams contains:
233b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard     * * query - SQL query for the selected series
243b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard     * * series - name of the selected series
253b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard     * * param - parameter to fill in query for the selected data point
263b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard     */
273b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard    @Override
283b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard    protected void showDrilldownImpl(JSONObject drilldownParams) {
293b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard        String query = Utils.jsonToString(drilldownParams.get("query"));
303b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard        final String series = Utils.jsonToString(drilldownParams.get("series"));
313b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard        final String param = Utils.jsonToString(drilldownParams.get("param"));
323b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard
333b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard        JSONObject params = new JSONObject();
343b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard        params.put("query", new JSONString(query));
353b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard        params.put("param", new JSONString(param));
363b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard        rpcProxy.rpcCall("execute_query_with_param", params, new JsonRpcCallback() {
373b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard            @Override
383b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard            public void onSuccess(JSONValue result) {
393b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                JSONArray data = result.isArray();
408a7f36583afe076a7198d1b34fe109aa491dc277jamesren
413b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                String title = series + " for " + param;
423b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                FlexTable contents = new FlexTable();
433b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                final SimpleDialog drill = new SimpleDialog(title, contents);
448a7f36583afe076a7198d1b34fe109aa491dc277jamesren
453b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                for (int i = 0; i < data.size(); i++) {
463b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                    final JSONArray row = data.get(i).isArray();
473b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                    final int testId = (int) row.get(0).isNumber().doubleValue();
483b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                    String yValue = Utils.jsonToString(row.get(1));
493b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard
508a7f36583afe076a7198d1b34fe109aa491dc277jamesren                    Anchor link = new Anchor(yValue);
51a5e4d84c9616b0a987e904d3b1d1d3fd9ca1be86showard                    link.addClickHandler(new ClickHandler() {
52a5e4d84c9616b0a987e904d3b1d1d3fd9ca1be86showard                        public void onClick(ClickEvent event) {
533b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                            drill.hide();
543b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                            listener.onSelectTest(testId);
553b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                        }
563b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                    });
573b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                    contents.setWidget(i, 0, link);
583b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                }
598a7f36583afe076a7198d1b34fe109aa491dc277jamesren
603b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard                drill.center();
613b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard            }
623b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard        });
633b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard    }
643b2b93007ba7ca0a8ace90f2ac0c2263ccbcbdf8showard}
65