diff options
author | Dave Lawrence <dlawrence@mozilla.com> | 2013-01-03 20:41:44 +0100 |
---|---|---|
committer | Dave Lawrence <dlawrence@mozilla.com> | 2013-01-03 20:41:44 +0100 |
commit | a29bc8846fac5d7bcbe37ed306eb612bfc74acee (patch) | |
tree | 20e0b5e7531797d891a912749d068b34903cd7d7 /extensions/MyDashboard/web/js | |
parent | f3975a11266aad202f31ce6fe8e86f321c68cd3e (diff) | |
download | bugzilla-a29bc8846fac5d7bcbe37ed306eb612bfc74acee.tar.gz bugzilla-a29bc8846fac5d7bcbe37ed306eb612bfc74acee.tar.xz |
More MyDashboard work
Diffstat (limited to 'extensions/MyDashboard/web/js')
-rw-r--r-- | extensions/MyDashboard/web/js/mydashboard_yui2.js | 159 | ||||
-rw-r--r-- | extensions/MyDashboard/web/js/query.js | 43 |
2 files changed, 36 insertions, 166 deletions
diff --git a/extensions/MyDashboard/web/js/mydashboard_yui2.js b/extensions/MyDashboard/web/js/mydashboard_yui2.js deleted file mode 100644 index 25529d8c8..000000000 --- a/extensions/MyDashboard/web/js/mydashboard_yui2.js +++ /dev/null @@ -1,159 +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. - */ - -YAHOO.namespace('MyDashboard'); - -var MD = YAHOO.MyDashboard; - -MD.showQuerySection = function () { - var query_select = YAHOO.util.Dom.get('query'); - var selected_value = ''; - for (var i = 0, l = query_select.options.length; i < l; i++) { - if (query_select.options[i].selected) { - selected_value = query_select.options[i].value; - } - } - for (var i = 0, l = MD.full_query_list.length; i < l; i++) { - var query = MD.full_query_list[i]; - if (selected_value == MD.full_query_list[i]) { - YAHOO.util.Dom.removeClass(query + '_container', 'bz_default_hidden'); - } - else { - YAHOO.util.Dom.addClass(query + '_container', 'bz_default_hidden'); - } - } -} - -MD.query_column_defs = [ - { key:"id", label:"ID", sortable:true, sortOptions:{ sortFunction: MD.sortBugIdLinks } }, - { key:"updated", label:"Updated", sortable:true }, - { key:"bug_status", label:"Status", sortable:true }, - { key:"summary", label:"Summary", sortable:true }, -]; - -MD.query_fields = [ - { key:"id" }, - { key:"updated" }, - { key:"bug_status" }, - { key:"summary" } -]; - -MD.requestee_column_defs = [ - { key:"requester", label:"Requester", sortable:true }, - { key:"flag", label:"Flag", sortable:true }, - { key:"bug", label:"Bug", sortable:true }, - { key:"created", label:"Created", sortable:true } -]; - -MD.requestee_fields = [ - { key:"requester" }, - { key:"flag" }, - { key:"bug" }, - { key:"created" } -]; - -MD.requester_column_defs = [ - { key:"requestee", label:"Requestee", sortable:true }, - { key:"flag", label:"Flag", sortable:true }, - { key:"bug", label:"Bug", sortable:true }, - { key:"created", label:"Created", sortable:true } -]; - -MD.requester_fields = [ - { key:"requestee" }, - { key:"flag" }, - { key:"bug" }, - { key:"created" } -]; - -MD.addStatListener = function (div_name, table_name, column_defs, fields, options) { - YAHOO.util.Event.addListener(window, "load", function() { - YAHOO.example.StatsFromMarkup = new function() { - this.myDataSource = new YAHOO.util.DataSource(YAHOO.util.Dom.get(table_name)); - this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE; - this.myDataSource.responseSchema = { fields:fields }; - this.myDataTable = new YAHOO.widget.DataTable(div_name, column_defs, this.myDataSource, options); - this.myDataTable.subscribe("rowMouseoverEvent", this.myDataTable.onEventHighlightRow); - this.myDataTable.subscribe("rowMouseoutEvent", this.myDataTable.onEventUnhighlightRow); - }; - }); -} - -// Custom sort handler to sort by bug id inside an anchor tag -MD.sortBugIdLinks = function (a, b, desc) { - // Deal with empty values - if (!YAHOO.lang.isValue(a)) { - return (!YAHOO.lang.isValue(b)) ? 0 : 1; - } - else if(!YAHOO.lang.isValue(b)) { - return -1; - } - // Now we need to pull out the ID text and convert to Numbers - // First we do 'a' - var container = document.createElement("bug_id_link"); - container.innerHTML = a.getData("id"); - var anchors = container.getElementsByTagName("a"); - var text = anchors[0].textContent; - if (text === undefined) text = anchors[0].innerText; - var new_a = new Number(text); - // Then we do 'b' - container.innerHTML = b.getData("id"); - anchors = container.getElementsByTagName("a"); - text = anchors[0].textContent; - if (text == undefined) text = anchors[0].innerText; - var new_b = new Number(text); - - if (!desc) { - return YAHOO.util.Sort.compare(new_a, new_b); - } - else { - return YAHOO.util.Sort.compare(new_b, new_a); - } -} - -// Custom sort handler for bug severities -MD.sortBugSeverity = function (a, b, desc) { - // Deal with empty values - if (!YAHOO.lang.isValue(a)) { - return (!YAHOO.lang.isValue(b)) ? 0 : 1; - } - else if(!YAHOO.lang.isValue(b)) { - return -1; - } - - var new_a = new Number(MD.severities[YAHOO.lang.trim(a.getData('bug_severity'))]); - var new_b = new Number(MD.severities[YAHOO.lang.trim(b.getData('bug_severity'))]); - - if (!desc) { - return YAHOO.util.Sort.compare(new_a, new_b); - } - else { - return YAHOO.util.Sort.compare(new_b, new_a); - } -} - -// Custom sort handler for bug priorities -MD.sortBugPriority = function (a, b, desc) { - // Deal with empty values - if (!YAHOO.lang.isValue(a)) { - return (!YAHOO.lang.isValue(b)) ? 0 : 1; - } - else if(!YAHOO.lang.isValue(b)) { - return -1; - } - - var new_a = new Number(MD.priorities[YAHOO.lang.trim(a.getData('priority'))]); - var new_b = new Number(MD.priorities[YAHOO.lang.trim(b.getData('priority'))]); - - if (!desc) { - return YAHOO.util.Sort.compare(new_a, new_b); - } - else { - return YAHOO.util.Sort.compare(new_b, new_a); - } -} diff --git a/extensions/MyDashboard/web/js/query.js b/extensions/MyDashboard/web/js/query.js index 746717e75..865d255a6 100644 --- a/extensions/MyDashboard/web/js/query.js +++ b/extensions/MyDashboard/web/js/query.js @@ -9,9 +9,17 @@ // Main query code YUI({ base: 'js/yui3/', - combine: false + combine: false, + groups: { + gallery: { + combine: false, + base: 'js/yui3/', + patterns: { 'gallery-': {} } + } + } }).use("node", "datatable", "datatable-sort", "datatable-message", "json-stringify", - "datatable-datasource", "datasource-io", "datasource-jsonschema", "cookie", function (Y) { + "datatable-datasource", "datasource-io", "datasource-jsonschema", "cookie", + "gallery-datatable-row-expansion-bmo", "handlebars", function (Y) { var counter = 0, dataSource = null, dataTable = null, @@ -83,7 +91,8 @@ YUI({ dataSource.plug(Y.Plugin.DataSourceJSONSchema, { schema: { resultListLocator: "result.result.bugs", - resultFields: ["bug_id", "changeddate", "bug_status", "short_desc"], + resultFields: ["bug_id", "changeddate", "bug_status", + "short_desc", "last_changes"], metaFields: { description: "result.result.description", heading: "result.result.heading", @@ -94,14 +103,34 @@ YUI({ dataTable = new Y.DataTable({ columns: [ - { key:"bug_id", label:"Bug", sortable:true, + { key: Y.Plugin.DataTableRowExpansion.column_key, label: ' ' }, + { key: "bug_id", label: "Bug", sortable: true, formatter: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>', allowHTML: true }, - { key:"changeddate", label:"Updated", sortable:true }, - { key:"bug_status", label:"Status", sortable:true }, - { key:"short_desc", label:"Summary", sortable:true }, + { key: "changeddate", label: "Updated", sortable: true }, + { key: "bug_status", label: "Status", sortable: true }, + { key: "short_desc", label: "Summary", sortable: true }, ], }); + var last_changes_source = Y.one('#last-changes-template').getHTML(), + last_changes_template = Y.Handlebars.compile(last_changes_source); + + dataTable.plug(Y.Plugin.DataTableRowExpansion, { + uniqueIdKey: 'bug_id', + template: function(data) { + var last_changes = {}; + if (data.last_changes.email) { + last_changes = { + activity: data.last_changes.activity, + email: data.last_changes.email, + when: data.last_changes.when, + comment: data.last_changes.comment, + }; + } + return last_changes_template(last_changes); + } + }); + dataTable.plug(Y.Plugin.DataTableSort); dataTable.plug(Y.Plugin.DataTableDataSource, { |