diff options
author | Dave Lawrence <dlawrence@mozilla.com> | 2012-12-21 23:13:17 +0100 |
---|---|---|
committer | Dave Lawrence <dlawrence@mozilla.com> | 2012-12-21 23:13:17 +0100 |
commit | 1e95913315c21a2ce181007d66294c5f1f975038 (patch) | |
tree | bd8424a67bed0a121478603999d44ee3cf63ce44 /extensions/MyDashboard | |
parent | 63ed510dfa9ac705d16df4344da5e41fcab6137e (diff) | |
download | bugzilla-1e95913315c21a2ce181007d66294c5f1f975038.tar.gz bugzilla-1e95913315c21a2ce181007d66294c5f1f975038.tar.xz |
- Converted several pages to use the new ProdCompSearch extension
- Other MyDashboard improvements/fixes
Diffstat (limited to 'extensions/MyDashboard')
-rw-r--r-- | extensions/MyDashboard/lib/Queries.pm | 3 | ||||
-rw-r--r-- | extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl | 24 | ||||
-rw-r--r-- | extensions/MyDashboard/web/js/flags.js | 6 | ||||
-rw-r--r-- | extensions/MyDashboard/web/js/prod_comp_search.js | 88 | ||||
-rw-r--r-- | extensions/MyDashboard/web/js/query.js | 65 | ||||
-rw-r--r-- | extensions/MyDashboard/web/styles/mydashboard.css | 21 |
6 files changed, 56 insertions, 151 deletions
diff --git a/extensions/MyDashboard/lib/Queries.pm b/extensions/MyDashboard/lib/Queries.pm index 628e26a73..79247bf73 100644 --- a/extensions/MyDashboard/lib/Queries.pm +++ b/extensions/MyDashboard/lib/Queries.pm @@ -133,6 +133,9 @@ sub query_bugs { my $qdef = shift; my $dbh = Bugzilla->dbh; + ## HACK to remove POST + delete $ENV{REQUEST_METHOD}; + my $params = new Bugzilla::CGI($qdef->{params}); my $search = new Bugzilla::Search( fields => [ SELECT_COLUMNS ], diff --git a/extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl b/extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl index a386b6716..dcaad0441 100644 --- a/extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl +++ b/extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl @@ -10,11 +10,11 @@ [% PROCESS global/header.html.tmpl title = "My Dashboard" - style_urls = [ "extensions/MyDashboard/web/styles/mydashboard.css" ] - javascript_urls = [ "js/yui3/yui/yui-min.js", - "extensions/MyDashboard/web/js/query.js", + style_urls = [ "extensions/MyDashboard/web/styles/mydashboard.css", + "extensions/ProdCompSearch/web/styles/prod_comp_search.css" ] + javascript_urls = [ "extensions/MyDashboard/web/js/query.js", "extensions/MyDashboard/web/js/flags.js", - "extensions/MyDashboard/web/js/prod_comp_search.js" ] + "extensions/ProdCompSearch/web/js/prod_comp_search.js" ] %] [% standard_queries = [] %] @@ -51,22 +51,16 @@ <div class="query_description"></div> <span class="items_found" id="query_bugs_found">0 bugs found</span> | <a class="refresh" href="javascript:void(0);" id="query_refresh">Refresh</a> - <span class="status">Loading...</span> <div id="query_pagination_top"></div> <div id="query_table"></div> </div> </div> <div id="right"> - <div id="prod_comp_search_container"> - <div id="prod_comp_search_main"> - <div id="prod_comp_search_label"> - File [% terms.Bug %]: - <img id="prod_comp_throbber" src="extensions/BMO/web/images/throbber.gif" - class="bz_default_hidden" width="16" height="11"> - </div> - <input id="prod_comp_search" type="text" size="60"> - </div> + <div id="prod_comp_search_main"> + [% PROCESS prodcompsearch/form.html.tmpl + input_label = "File a $terms.Bug:" + %] </div> <div id="requestee_container"> @@ -75,7 +69,6 @@ </div> <span class="items_found" id="requestee_flags_found">0 flags found</span> | <a class="refresh" href="javascript:void(0);" id="requestee_refresh">Refresh</a> - <span class="status">Loading...</span> <div id="requestee_table"></div> </div> @@ -85,7 +78,6 @@ </div> <span class="items_found" id="requester_flags_found">0 flags found</span> | <a class="refresh" href="javascript:void(0);" id="requester_refresh">Refresh</a> - <span class="status">Loading...</span> <div id="requester_table"></div> </div> </div> diff --git a/extensions/MyDashboard/web/js/flags.js b/extensions/MyDashboard/web/js/flags.js index b1605e04e..925cb8b6a 100644 --- a/extensions/MyDashboard/web/js/flags.js +++ b/extensions/MyDashboard/web/js/flags.js @@ -33,9 +33,7 @@ YUI({ 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) { @@ -53,7 +51,9 @@ YUI({ var stringified = Y.JSON.stringify(json_object); - Y.one("#" + type + "_container .status").removeClass('bz_default_hidden'); + dataTable[type].set('data', []); + dataTable[type].render("#" + type + "_table"); + dataTable[type].showMessage('loadingMessage'); dataSource[type].sendRequest({ request: stringified, diff --git a/extensions/MyDashboard/web/js/prod_comp_search.js b/extensions/MyDashboard/web/js/prod_comp_search.js deleted file mode 100644 index d56baebec..000000000 --- a/extensions/MyDashboard/web/js/prod_comp_search.js +++ /dev/null @@ -1,88 +0,0 @@ -/* 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. - */ - -// Product and component search to file a new bug -YUI({ - base: 'js/yui3/', - combine: false -}).use("node", "json-stringify", "autocomplete", "escape", - "datasource-io", "datasource-jsonschema", "array-extras", function (Y) { - var counter = 0, - format = '', - cloned_bug_id = '', - dataSource = null, - autoComplete = null; - - var resultListFormat = function(query, results) { - return Y.Array.map(results, function (result) { - var data = result.raw; - return Y.Escape.html(data.product) + " :: " + - Y.Escape.html(data.component); - }); - }; - - var requestTemplate = function(query) { - counter = counter + 1; - var json_object = { - version: "1.1", - method : "MyDashboard.prod_comp_search", - id : counter, - params : { search: query } - }; - return Y.JSON.stringify(json_object); - }; - - var dataSource = new Y.DataSource.IO({ - source: 'jsonrpc.cgi', - ioConfig: { - method: "POST", - headers: { 'Content-Type': 'application/json' } - } - }); - - dataSource.plug(Y.Plugin.DataSourceJSONSchema, { - schema: { - resultListLocator : "result.products", - resultFields : [ "product", "component" ] - } - }); - - var input = Y.one('#prod_comp_search'); - - input.plug(Y.Plugin.AutoComplete, { - enableCache: true, - source: dataSource, - minQueryLength: 3, - queryDelay: 0.05, - resultFormatter: resultListFormat, - maxResultsDisplayed: 25, - suppressInputUpdate: true, - maxResults: 25, - requestTemplate: requestTemplate, - on: { - query: function() { - Y.one("#prod_comp_throbber").removeClass('bz_default_hidden'); - }, - results: function() { - Y.one("#prod_comp_throbber").addClass('bz_default_hidden'); - }, - select: function(e) { - var data = e.result.raw; - var url = "enter_bug.cgi?product=" + encodeURIComponent(data.product) + - "&component=" + encodeURIComponent(data.component); - window.location.href = url; - } - }, - }); - - input.on('focus', function (e) { - if (e.target.value && e.target.value.length > 3) { - dataSource.load(e.target.value); - } - }); -}); diff --git a/extensions/MyDashboard/web/js/query.js b/extensions/MyDashboard/web/js/query.js index b9248bf6b..746717e75 100644 --- a/extensions/MyDashboard/web/js/query.js +++ b/extensions/MyDashboard/web/js/query.js @@ -10,12 +10,28 @@ YUI({ base: 'js/yui3/', combine: false -}).use("node", "datatable", "datatable-sort", "json-stringify", - "datatable-datasource", "datasource-io", "datasource-jsonschema", - "gallery-paginator-view", "gallery-datatable-paginator", function (Y) { +}).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; + 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; @@ -30,9 +46,7 @@ YUI({ Y.one("#query_bugs_found").setHTML( '<a href="buglist.cgi?' + e.response.meta.buffer + '">' + e.response.results.length + ' bugs found</a>'); - Y.one("#query_container .status").addClass('bz_default_hidden'); dataTable.set('data', e.response.results); - dataTable.render("#query_table"); } }, failure: function(o) { @@ -50,7 +64,9 @@ YUI({ var stringified = Y.JSON.stringify(json_object); - Y.one("#query_container .status").removeClass('bz_default_hidden'); + dataTable.set('data', []); + dataTable.render("#query_table"); + dataTable.showMessage('loadingMessage'); dataSource.sendRequest({ request: stringified, @@ -63,6 +79,19 @@ YUI({ }; 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, @@ -71,38 +100,20 @@ YUI({ { key:"bug_status", label:"Status", sortable:true }, { key:"short_desc", label:"Summary", sortable:true }, ], - strings: { - emptyMessage: 'No query data found.', - }, - paginator: new Y.PaginatorView({ - model: new Y.PaginatorModel({ itemsPerPage: 25 }), - container: 'query_pagination_top', - }) }); dataTable.plug(Y.Plugin.DataTableSort); dataTable.plug(Y.Plugin.DataTableDataSource, { datasource: dataSource, - initialRequest: updateQueryTable("assignedbugs"), - }); - - 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" - } - } + 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) { diff --git a/extensions/MyDashboard/web/styles/mydashboard.css b/extensions/MyDashboard/web/styles/mydashboard.css index fd441ec7a..dc253c0d1 100644 --- a/extensions/MyDashboard/web/styles/mydashboard.css +++ b/extensions/MyDashboard/web/styles/mydashboard.css @@ -38,29 +38,16 @@ width: 40%; } -.items_found, .refresh, .status { +.items_found, .refresh { font-size: 80%; } -.status { - color: red; - float: right; -} - #query_list_container { text-align:center; } -#prod_comp_search_container, -#query_list_container { - margin-bottom: 10px; - border: 1px solid rgb(116,126,147); - padding: 10px; - height: 40px; -} - +#query_list_container, #prod_comp_search_main { - margin-left: auto; - margin-right: auto; - text-align: left; + padding: 20px !important; + height: 40px; } |