From ce6f5b40e1f1d7180aaf6c91caacec68f10348f3 Mon Sep 17 00:00:00 2001 From: Dave Lawrence Date: Tue, 4 Dec 2012 16:17:00 -0500 Subject: Current dashboard work --- extensions/MyDashboard/web/js/flags.js | 135 +++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 extensions/MyDashboard/web/js/flags.js (limited to 'extensions/MyDashboard/web/js/flags.js') diff --git a/extensions/MyDashboard/web/js/flags.js b/extensions/MyDashboard/web/js/flags.js new file mode 100644 index 000000000..b1605e04e --- /dev/null +++ b/extensions/MyDashboard/web/js/flags.js @@ -0,0 +1,135 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This Source Code Form is "Incompatible With Secondary Licenses", as + * defined by the Mozilla Public License, v. 2.0. + */ + +// Flag tables +YUI({ + base: 'js/yui3/', + combine: false +}).use("node", "datatable", "datatable-sort", "json-stringify", + "datatable-datasource", "datasource-io", "datasource-jsonschema", function (Y) { + // Common + var counter = 0; + var dataSource = { + requestee: null, + requester: null + }; + var dataTable = { + requestee: null, + requester: null + }; + + var updateFlagTable = function (type) { + if (!type) return; + + counter = counter + 1; + + var callback = { + success: function(e) { + if (e.response) { + Y.one("#" + type + "_flags_found").setHTML( + e.response.results.length + ' flags found'); + Y.one("#" + type + "_container .status").addClass('bz_default_hidden'); + dataTable[type].set('data', e.response.results); + dataTable[type].render("#" + type + "_table"); + } + }, + failure: function(o) { + var resp = o.responseText; + alert("IO request failed : " + resp); + } + }; + + var json_object = { + version: "1.1", + method: "MyDashboard.run_flag_query", + id: counter, + params: { type : type } + }; + + var stringified = Y.JSON.stringify(json_object); + + Y.one("#" + type + "_container .status").removeClass('bz_default_hidden'); + + dataSource[type].sendRequest({ + request: stringified, + cfg: { + method: "POST", + headers: { 'Content-Type': 'application/json' } + }, + callback: callback + }); + }; + + // Requestee + dataSource.requestee = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); + dataTable.requestee = new Y.DataTable({ + columns: [ + { key:"requester", label:"Requester", sortable:true }, + { key:"type", label:"Flag", sortable:true }, + { key:"bug_id", label:"Bug", sortable:true, + formatter: '{value}', allowHTML: true }, + { key:"created", label:"Created", sortable:true } + ], + strings: { + emptyMessage: 'No flag data found.', + } + }); + + dataTable.requestee.plug(Y.Plugin.DataTableSort); + + dataTable.requestee.plug(Y.Plugin.DataTableDataSource, { + datasource: dataSource, + initialRequest: updateFlagTable("requestee"), + }); + + dataSource.requestee.plug(Y.Plugin.DataSourceJSONSchema, { + schema: { + resultListLocator: "result.result.requestee", + resultFields: ["requester", "type", "bug_id", "created"] + } + }); + + dataTable.requestee.render("#requestee_table"); + + Y.one('#requestee_refresh').on('click', function(e) { + updateFlagTable('requestee'); + }); + + // Requester + dataSource.requester = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); + dataTable.requester = new Y.DataTable({ + columns: [ + { key:"requestee", label:"Requestee", sortable:true }, + { key:"type", label:"Flag", sortable:true }, + { key:"bug_id", label:"Bug", sortable:true, + formatter: '{value}', allowHTML: true }, + { key:"created", label:"Created", sortable:true } + ], + strings: { + emptyMessage: 'No flag data found.', + } + }); + + dataTable.requester.plug(Y.Plugin.DataTableSort); + + dataTable.requester.plug(Y.Plugin.DataTableDataSource, { + datasource: dataSource, + initialRequest: updateFlagTable("requester"), + }); + + dataSource.requester.plug(Y.Plugin.DataSourceJSONSchema, { + schema: { + resultListLocator: "result.result.requester", + resultFields: ["requestee", "type", "bug_id", "created"] + } + }); + + Y.one('#requester_refresh').on('click', function(e) { + updateFlagTable('requester'); + }); +}); -- cgit v1.2.3-24-g4f1b