/* 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. */ // Main query code YUI({ base: 'js/yui3/', combine: false }).use("node", "datatable", "datatable-sort", "datatable-message", "json-stringify", "datatable-datasource", "datasource-io", "datasource-jsonschema", "cookie", function (Y) { var counter = 0, dataSource = null, dataTable = null, default_query = "assignedbugs"; // Grab last used query name from cookie or use default var query_cookie = Y.Cookie.get("my_dashboard_query"); if (query_cookie) { var cookie_value_found = 0; Y.one("#query").get("options").each( function() { if (this.get("value") == query_cookie) { this.set('selected', true); default_query = query_cookie; cookie_value_found = 1; } }); if (!cookie_value_found) { Y.Cookie.set("my_dashboard_query", ""); } } var updateQueryTable = function(query_name) { if (!query_name) return; counter = counter + 1; var callback = { success: function(e) { if (e.response) { Y.one("#query_container .query_description").setHTML(e.response.meta.description); Y.one("#query_container .query_heading").setHTML(e.response.meta.heading); Y.one("#query_bugs_found").setHTML( '' + e.response.results.length + ' bugs found'); dataTable.set('data', e.response.results); } }, failure: function(o) { var resp = o.responseText; alert("IO request failed : " + resp); } }; var json_object = { version: "1.1", method: "MyDashboard.run_bug_query", id: counter, params: { query : query_name } }; var stringified = Y.JSON.stringify(json_object); dataTable.set('data', []); dataTable.render("#query_table"); dataTable.showMessage('loadingMessage'); dataSource.sendRequest({ request: stringified, cfg: { method: "POST", headers: { 'Content-Type': 'application/json' } }, callback: callback }); }; dataSource = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); dataSource.plug(Y.Plugin.DataSourceJSONSchema, { schema: { resultListLocator: "result.result.bugs", resultFields: ["bug_id", "changeddate", "bug_status", "short_desc"], metaFields: { description: "result.result.description", heading: "result.result.heading", buffer: "result.result.buffer" } } }); dataTable = new Y.DataTable({ columns: [ { key:"bug_id", label:"Bug", sortable:true, formatter: '{value}', allowHTML: true }, { key:"changeddate", label:"Updated", sortable:true }, { key:"bug_status", label:"Status", sortable:true }, { key:"short_desc", label:"Summary", sortable:true }, ], }); dataTable.plug(Y.Plugin.DataTableSort); dataTable.plug(Y.Plugin.DataTableDataSource, { datasource: dataSource, initialRequest: updateQueryTable(default_query), }); Y.one('#query').on('change', function(e) { var index = e.target.get('selectedIndex'); var selected_value = e.target.get("options").item(index).getAttribute('value'); updateQueryTable(selected_value); Y.Cookie.set("my_dashboard_query", selected_value, { expires: new Date("January 12, 2025") }); }); Y.one('#query_refresh').on('click', function(e) { var query_select = Y.one('#query'); var index = query_select.get('selectedIndex'); var selected_value = query_select.get("options").item(index).getAttribute('value'); updateQueryTable(selected_value); }); });