Hi Gary, Thank you very much for reviewing the code. I will make the recommended changes asap and make the feature stable.
Thanks, Dammina On Sun, Oct 2, 2016 at 10:07 PM, Gary <[email protected]> wrote: > Hi Dammina, > > I notice that the batchcreate.js has some interesting indentation. It may > be good to fix it to help people in reviewing the code. From memory I think > we use 2 space indents in js code. There is also a surprising > > //line 537 > > > at the end of the file which does not look necessary. > > Cheers, > Gary > > On 01/10/16 14:30, [email protected] wrote: > >> Author: dammina >> Date: Sat Oct 1 13:30:09 2016 >> New Revision: 1763012 >> >> URL: http://svn.apache.org/viewvc?rev=1763012&view=rev >> Log: >> restructure the jquery code snippets related to BatchCreateTickets and >> CreatedTickets wiki macros >> >> Modified: >> bloodhound/branches/bep_0011_batch_create_tickets/bloodhoun >> d_theme/bhtheme/htdocs/js/batchcreate.js >> bloodhound/branches/bep_0011_batch_create_tickets/bloodhoun >> d_theme/bhtheme/theme.py >> >> Modified: bloodhound/branches/bep_0011_batch_create_tickets/bloodhound >> _theme/bhtheme/htdocs/js/batchcreate.js >> URL: http://svn.apache.org/viewvc/bloodhound/branches/bep_0011_ba >> tch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/ >> batchcreate.js?rev=1763012&r1=1763011&r2=1763012&view=diff >> ============================================================ >> ================== >> --- bloodhound/branches/bep_0011_batch_create_tickets/bloodhound >> _theme/bhtheme/htdocs/js/batchcreate.js (original) >> +++ bloodhound/branches/bep_0011_batch_create_tickets/bloodhound >> _theme/bhtheme/htdocs/js/batchcreate.js Sat Oct 1 13:30:09 2016 >> @@ -17,225 +17,218 @@ >> under the License. >> */ >> -function emptyTable(numOfRows,product,milestones,components,href,token) >> { >> - /* >> +/* >> This function will be invoked from the BatchCreateTickets wiki >> macro. >> The wiki macro will send the relevant details to create the empty >> ticket table within the wiki. >> Then this function will generate the empty ticket table containing >> appropriate number of rows to enter ticket data. >> - */ >> - created_rows=numOfRows; >> - form_token = token.split(";")[0].split("=")[1]; >> - if(numOfRows == ""){ >> - alert("Enter the ticket batch size.") >> - } >> - else if(numOfRows != "" && document.getElementById("empty-table") >> == null){ >> - var contentDiv = document.getElementById("div-empty-table"); >> - var headers = {"ticket":"","summary":"Summar >> y","description":"Description","product":"Product"," >> priority":"Priority","milestone":"Milestone","component":"Component"} >> - priorities = ["blocker", "critical", "major", "minor", "trivial"]; >> - types = ["defect", "enhancement", "task"]; >> - >> - var div = document.createElement("div"); >> - div.setAttribute("class","span12"); >> - div.setAttribute("id","empty-table"); >> - var h5 = document.createElement("h5"); >> - h5.appendChild(document.createTextNode("Batch Create Tickets")); >> - div.appendChild(h5); >> - >> - var form = document.createElement("form"); >> - form.setAttribute("id","bct-form"); >> - form.setAttribute("name","bct"); >> - form.setAttribute("method","post"); >> + */ >> +function emptyTable(numOfRows, products, milestones, components, href, >> token, unique_key) { >> + >> + var created_rows=numOfRows; >> + var form_token = token.split(";")[0].split("=")[1]; >> + >> + var headers = {"ticket":"","summary":"Summar >> y","description":"Description","product":"Product", >> + "priority":"Priority","milestone":"Milestone","component":" >> Component"}; >> + var priorities = ["blocker", "critical", "major", "minor", >> "trivial"]; >> + var types = ["defect", "enhancement", "task"]; >> + >> + var contentDiv = $('#div-empty-table' + unique_key); >> + >> + var div = $('<div/>', { >> + 'id':'empty-table' + unique_key, >> + 'class':'span12' >> + }).appendTo(contentDiv); >> + >> + var h5 = $('<h5/>').html('Batch Create Tickets').appendTo(div); >> >> - var div_token = document.createElement("div"); >> - var form_token_val = document.createElement("input"); >> - form_token_val.setAttribute("type","hidden"); >> - form_token_val.setAttribute("name","__FORM_TOKEN"); >> - form_token_val.setAttribute("value",form_token); >> - div_token.appendChild(form_token_val); >> - form.appendChild(div_token); >> + var form = $('<form/>', { >> + 'id':'bct-form' + unique_key, >> + 'name':'bct', >> + 'method':'post' >> + }).appendTo(div); >> + >> + $('<input/>', { >> + 'type':'hidden', >> + 'name':'__FORM_TOKEN', >> + 'value':form_token >> + }).appendTo($('<div>').appendTo(form)); >> >> - var table = document.createElement("table"); >> - table.setAttribute("class","listing tickets table table-bordered >> table-condensed query"); >> - table.setAttribute("style","border-radius: 0px 0px 4px 4px"); >> + var table = $('<table/>', { >> + 'class':'listing tickets table table-bordered table-condensed >> query', >> + 'style':'border-radius: 0px 0px 4px 4px' >> + }).appendTo(form); >> >> - var tr = document.createElement("tr"); >> - tr.setAttribute("class","trac-columns"); >> + var tr = $('<tr/>', { >> + 'class':'trac-columns' >> + }).appendTo(table); >> + >> for (header in headers){ >> - font = document.createElement("font"); >> - font.setAttribute("color","#1975D1"); >> - font.appendChild(document.cre >> ateTextNode(headers[header])) >> - th = document.createElement("th"); >> - th.appendChild(font); >> - tr.appendChild(th); >> + var th = $('<th/>').appendTo(tr); >> + $('<font/>', { >> + 'color':'#1975D1' >> + }).html(headers[header]).appendTo(th); >> } >> - table.appendChild(tr); >> >> - tbody = document.createElement("tbody"); >> - for (i=0;i<numOfRows;i++){ >> - tr_rows = document.createElement("tr"); >> - for (header in headers){ >> - if(header == "ticket"){ >> - td_row = document.createElement("td"); >> - input_ticket = >> document.createElement("input"); >> - input_ticket.setAttribute("ty >> pe","checkbox"); >> - input_ticket.setAttribute(" >> id","field-ticket"+i); >> - input_ticket.setAttribute("cl >> ass","input-block-level"); >> - input_ticket.setAttribute("na >> me","field_ticket"+i); >> - td_row.appendChild(input_ticket); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "summary"){ >> - td_row = document.createElement("td"); >> - input_summary = >> document.createElement("input"); >> - input_summary.setAttribute("t >> ype","text"); >> - input_summary.setAttribute("i >> d","field-summary"+i); >> - input_summary.setAttribute("c >> lass","input-block-level"); >> - input_summary.setAttribute("n >> ame","field_summary"+i); >> - td_row.appendChild(input_summary); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "description") { >> - td_row = document.createElement("td"); >> - input_description = >> document.createElement("textarea"); >> - input_description.setAttribut >> e("id","field-description"+i); >> - input_description.setAttribut >> e("class","input-block-level"); >> - input_description.setAttribut >> e("name","field_description"+i); >> - input_description.setAttribut >> e("rows","2"); >> - input_description.setAttribut >> e("cols","28"); >> - td_row.appendChild(input_description); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "priority") { >> - td_row = document.createElement("td"); >> - input_priority = >> document.createElement("select"); >> - input_priority.setAttribute(" >> id","field-priority"+i); >> - input_priority.setAttribute(" >> class","input-block-level"); >> - input_priority.setAttribute(" >> name","field_priority"+i); >> - for (priority in priorities){ >> - option = >> document.createElement("option"); >> - option.setAttribute("value",p >> riorities[priority]); >> - option.appendChild(document.c >> reateTextNode(priorities[priority])); >> - input_priority.appendChild(op >> tion); >> + var tbody = $('<tbody>').appendTo(table); >> + >> + for (var i=0; i < numOfRows; i++) { >> + >> + var tr_rows = $('<tr>').appendTo(tbody); >> + >> + for (var header in headers) { >> + var td; >> + if(header == "ticket") { >> + >> + td = $('<td>').appendTo(tr_rows); >> + var input_ticket = $('<input/>', { >> + 'id':'field-ticket' + unique_key + >> '-' + i, >> + 'type':'checkbox', >> + 'name':'field_ticket' + i, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + >> + } else if (header == "summary"){ >> + >> + td = $('<td>').appendTo(tr_rows); >> + var input_summary = $('<input/>', { >> + 'id':'field-summary' + unique_key + >> '-' + i, >> + 'type':'text', >> + 'name':'field_summary' + i, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + >> + } else if (header == "description") { >> + >> + td = $('<td>').appendTo(tr_rows); >> + var input_description = $('<textarea/>', { >> + 'id':'field-description' + unique_key >> + '-' + i, >> + 'name':'field_description' + i, >> + 'class':'input-block-level', >> + 'rows':'2', >> + 'cols':'28' >> + }).appendTo(td); >> + >> + } else if (header == "priority") { >> + >> + td = $('<td>').appendTo(tr_rows); >> + var input_priority = $('<select/>', { >> + 'id':'field-priority' + unique_key + >> '-' + i, >> + 'name':'field_priority' + i, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + >> + for (var priority in priorities){ >> + $('<option/>', { >> + 'value':priorities[priority] >> + }).html(priorities[priority]). >> appendTo(input_priority); >> } >> - td_row.appendChild(input_priority); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "product") { >> - td_row = document.createElement("td"); >> - field_product = >> document.createElement("select"); >> - field_product.setAttribute("i >> d","field-product"+i); >> - field_product.setAttribute("c >> lass","input-block-level"); >> - field_product.setAttribute("n >> ame","field_product"+i); >> - for (p in product){ >> - option = >> document.createElement("option"); >> - option.setAttribute("value",( >> product[p])[0]); >> - option.appendChild(document.c >> reateTextNode((product[p])[1])); >> - field_product.appendChild(opt >> ion); >> + >> + } else if (header == "product") { >> + >> + td = $('<td>').appendTo(tr_rows); >> + var field_product = $('<select/>', { >> + 'id':'field-product' + unique_key + >> '-' + i, >> + 'name':'field_product' + i, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + >> + for (var product in products){ >> + $('<option/>', { >> + 'value':(products[product])[0] >> + }).html((products[product])[1] >> ).appendTo(field_product); >> } >> - td_row.appendChild(field_product); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "milestone"){ >> - td_row = document.createElement("td"); >> - field_milestone = >> document.createElement("select"); >> - field_milestone.setAttribute( >> "id","field-milestone"+i); >> - field_milestone.setAttribute( >> "class","input-block-level"); >> - field_milestone.setAttribute( >> "name","field_milestone"+i); >> - for (milestone in milestones){ >> - option = >> document.createElement("option"); >> - option.setAttribute("value",( >> milestones[milestone])[0]); >> - option.appendChild(document.c >> reateTextNode((milestones[milestone])[0])); >> - field_milestone.appendChild(o >> ption); >> + >> + } else if (header == "milestone") { >> + >> + td = $('<td>').appendTo(tr_rows); >> + var field_milestone = $('<select/>', { >> + 'id':'field-milestone' + unique_key + >> '-' + i, >> + 'name':'field_milestone' + i, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + >> + for (var milestone in milestones){ >> + $('<option/>', { >> + 'value':(milestones[ >> milestone])[0] >> + }).html((milestones[milestone] >> )[0]).appendTo(field_milestone); >> } >> - td_row.appendChild(field_milestone); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "component"){ >> - td_row = document.createElement("td"); >> - field_component = >> document.createElement("select"); >> - field_component.setAttribute( >> "id","field-component"+i); >> - field_component.setAttribute( >> "class","input-block-level"); >> - field_component.setAttribute( >> "name","field_component"+i); >> - for (component in components){ >> - option = >> document.createElement("option"); >> - option.setAttribute("value",( >> components[component])[0]); >> - option.appendChild(document.c >> reateTextNode((components[component])[0])); >> - field_component.appendChild(o >> ption); >> + >> + } else if (header == "component") { >> + >> + td = $('<td>').appendTo(tr_rows); >> + var field_component = $('<select/>', { >> + 'id':'field-component' + unique_key + >> '-' + i, >> + 'name':'field_component' + i, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + >> + for (var component in components){ >> + $('<option/>', { >> + 'value':(components[ >> component])[0] >> + }).html((components[component] >> )[0]).appendTo(field_component); >> } >> - td_row.appendChild(field_component); >> - tr_rows.appendChild(td_row); >> } >> } >> - tbody.appendChild(tr_rows); >> } >> - table.appendChild(tbody); >> - form.appendChild(table); >> - remove_row_button = document.createElement("button"); >> - remove_row_button.setAttribute("class","btn pull-right"); >> - remove_row_button.setAttribute("type","button"); >> - remove_row_button.addEventListener("click", function(event) { >> - numOfRows=parseInt(numOfRows) >> -parseInt(remove_row_btn_action(numOfRows)); >> - event.preventDefault(); >> - }); >> - remove_row_button.setAttribute("id","bct-rmv-empty-row"); >> - remove_row_button.appendChild(document.createTextNode("-")); >> - form.appendChild(remove_row_button); >> - >> - add_row_button = document.createElement("button"); >> - add_row_button.setAttribute("class","btn pull-right"); >> - add_row_button.setAttribute("type","button"); >> - add_row_button.addEventListener("click", function(event) { >> - add_row_btn_action(product,mi >> lestones,components,created_rows); >> - numOfRows=parseInt(numOfRows)+1; >> - created_rows=parseInt(created_rows)+1; >> - event.preventDefault(); >> - }); >> - add_row_button.setAttribute("id","bct-add-empty-row"); >> - add_row_button.appendChild(document.createTextNode("+")); >> - form.appendChild(add_row_button); >> - >> - submit_button = document.createElement("button"); >> - submit_button.setAttribute("class","btn pull-right"); >> - submit_button.setAttribute("type","button"); >> - submit_button.addEventListener("click", function(event) { >> - var empty_row=false; >> - var cnt=0; >> - for (var k = 0; k <parseInt(numOfRows)+parseInt(cnt); >> k++) { >> - var element = document.getElementById("field >> -summary"+k); >> - if(element==null){ >> - cnt=parseInt(cnt)+1; >> - continue; >> - } >> - >> - var summary_val=document.getElemen >> tById("field-summary"+k).value; >> - if(summary_val==""){ >> - var line_number = parseInt(k)+1; >> - var confirmation = confirm("Summery field >> of one or more tickets are empty. They will not get created!"); >> - empty_row=true; >> - break; >> - } >> - }; >> - if(confirmation == true || !empty_row){ >> - submit_btn_action(); >> - event.preventDefault(); >> - } >> - }); >> - submit_button.setAttribute("id","bct-create"); >> - submit_button.setAttribute("data-target",href); >> - submit_button.appendChild(document.createTextNode("save")); >> - form.appendChild(submit_button); >> - >> - cancle_button = document.createElement("button"); >> - cancle_button.setAttribute("class","btn pull-right"); >> - cancle_button.setAttribute("type","button"); >> - cancle_button.setAttribute("onclick","deleteForm()"); >> - cancle_button.appendChild(document.createTextNode("cancel")); >> - form.appendChild(cancle_button); >> - >> - div.appendChild(form); >> - contentDiv.appendChild(div); >> - } >> + $('<button/>', { >> + 'id':'bct-rmv-empty-row' + unique_key, >> + 'type':'button', >> + 'class':'btn pull-right', >> + 'click':function() { >> + numOfRows = parseInt(numOfRows) - >> parseInt(remove_row_btn_action(numOfRows, unique_key)); >> + } >> + }).html('-').appendTo(form); >> + >> + $('<button/>', { >> + 'id':'bct-add-empty-row' + unique_key, >> + 'type':'button', >> + 'class':'btn pull-right', >> + 'click':function() { >> + add_row_btn_action(products, milestones, components, >> created_rows, unique_key, headers, tbody); >> + numOfRows = parseInt(numOfRows) + 1; >> + created_rows = parseInt(created_rows) + 1; >> + } >> + }).html('+').appendTo(form); >> + >> + $('<button/>', { >> + 'id':'bct-create' + unique_key, >> + 'type':'button', >> + 'class':'btn pull-right', >> + 'data-target':href, >> + 'click':function() { >> + var empty_row=false; >> + var cnt=0; >> + for (var k = 0; k < parseInt(numOfRows) + parseInt(cnt); >> k++) { >> + >> + var element = $("#field-summary" + k); >> + if(element == null) { >> + cnt = parseInt(cnt) + 1; >> + continue; >> + } >> + >> + var summary_val = element.val(); >> + if(summary_val == ""){ >> + var line_number = parseInt(k) + 1; >> + var confirmation = confirm("Summery field of one or >> more tickets are empty. " + >> + "They will not get created!"); >> + empty_row=true; >> + break; >> + } >> + } >> + if(confirmation == true || !empty_row){ >> + submit_btn_action(unique_key); >> + } >> + } >> + }).html('save').appendTo(form); >> + >> + $('<button/>', { >> + 'type':'button', >> + 'class':'btn pull-right', >> + 'click':function() { >> + deleteForm(unique_key); >> + } >> + }).html('cancel').appendTo(form); >> } >> @@ -243,216 +236,178 @@ function submitForm(){ >> document.getElementById("bct-form").submit(); >> } >> -function deleteForm(){ >> - /* >> - This function will invoke when the user clicks on cancel button >> under the empty table. >> - Then this function will remove the empty table from the wiki. >> - */ >> - document.getElementById("empty-table").remove(); >> +/* >> + Then this function will remove the empty table from the wiki. >> + */ >> +function deleteForm(unique_key){ >> + $("#empty-table" + unique_key).remove(); >> } >> -function submit_btn_action() { >> - /* >> - This function will send a HTTP POST request to the backend. >> - The form containing the empty table and its data will be submitted. >> - Then the empty table will be replaced with the ticket table >> containing details of the created tickets. >> - */ >> +/* >> +This function will send a HTTP POST request to the backend. >> +The form containing the empty table and its data will be submitted. >> +Then the empty table will be replaced with the ticket table containing >> details of the created tickets. >> + */ >> +function submit_btn_action(unique_key) { >> + >> // data-target is the base url for the product in current scope >> - var product_base_url = $('#bct-create').attr('data-target'); >> - if (product_base_url === '/') >> - product_base_url = ''; >> - $.post(product_base_url , $('#bct-form').serialize(), >> - function(ticket) { >> - deleteForm(); >> - >> - var headers = {"ticket":"Ticket","summary":" >> Summary","product":"Product","status":"Status","milestone":" >> Milestone","component":"Component"} >> - var contentDiv = document.getElementById("div-e >> mpty-table"); >> - var div = document.createElement("div"); >> - div.setAttribute("class","span12"); >> - var h5 = document.createElement("h5"); >> - h5.appendChild(document.createTextNode("Created >> Tickets")); >> - div.appendChild(h5); >> - var table = document.createElement("table"); >> - table.setAttribute("class","listing tickets >> table table-bordered table-condensed query"); >> - table.setAttribute("style","border-radius: 0px >> 0px 4px 4px"); >> - tr = document.createElement("tr"); >> - tr.setAttribute("class","trac-columns"); >> - >> - for (header in headers){ >> - th = document.createElement("th"); >> - font = document.createElement("font"); >> - font.setAttribute("color","#1975D1"); >> - font.appendChild(document.cre >> ateTextNode(headers[header])) >> - th = document.createElement("th"); >> - th.appendChild(font); >> - tr.appendChild(th); >> - } >> - table.appendChild(tr); >> - >> - for ( i=0 ; i<Object.keys(ticket.tickets).length >> ; i++ ){ >> - tr = document.createElement("tr"); >> - for (j=0;j<6;j++){ >> - if(j==0){ >> - td = >> document.createElement("td"); >> - a = >> document.createElement("a"); >> - tkt = >> JSON.parse(ticket.tickets[i]); >> - a.setAttribute("href",tkt. >> url); >> - >> a.appendChild(document.createTextNode("#"+tkt.id)); >> - td.appendChild(a); >> - } >> - else if(j==1){ >> - td = >> document.createElement("td"); >> - a = >> document.createElement("a"); >> - tkt = >> JSON.parse(ticket.tickets[i]); >> - a.setAttribute("href",tkt. >> url); >> - >> a.appendChild(document.createTextNode(tkt.summary)); >> - td.appendChild(a); >> - } >> - else if(j==2){ >> - td = >> document.createElement("td"); >> - tkt = >> JSON.parse(ticket.tickets[i]); >> - >> td.appendChild(document.createTextNode(tkt.product)); >> - } >> - else if(j==3){ >> - td = >> document.createElement("td"); >> - tkt = >> JSON.parse(ticket.tickets[i]); >> - >> td.appendChild(document.createTextNode(tkt.status)); >> - } >> - else if(j==4){ >> - td = >> document.createElement("td"); >> - tkt = >> JSON.parse(ticket.tickets[i]); >> - >> td.appendChild(document.createTextNode(tkt.milestone)); >> - } >> - else if(j==5){ >> - td = >> document.createElement("td"); >> - tkt = >> JSON.parse(ticket.tickets[i]); >> - >> td.appendChild(document.createTextNode(tkt.component)); >> - } >> - tr.appendChild(td); >> - } >> - table.appendChild(tr); >> - } >> - div.appendChild(table); >> - contentDiv.appendChild(div); >> - }); >> + var product_base_url = $('#bct-create' + >> unique_key).attr('data-target'); >> + >> + $.post(product_base_url , $('#bct-form' + unique_key).serialize(), >> + function(ticket) { >> + deleteForm(unique_key); >> + >> + var headers = {"ticket":"Ticket", "summary":"Summary", >> "product":"Product", "status":"Status", >> + "milestone":"Milestone", "component":"Component"}; >> + >> + var contentDiv = $("#div-empty-table" + unique_key); >> + >> + var div = $('<div/>', { >> + 'class':'span12' >> + }).appendTo(contentDiv); >> + >> + var h5 = $('<h5/>', { >> + 'class':'span12' >> + }).html("Created Tickets").appendTo(div); >> + >> + var table = $('<table/>', { >> + 'class':'listing tickets table table-bordered >> table-condensed query', >> + 'style':'border-radius: 0px 0px 4px 4px' >> + }).appendTo(div); >> + >> + var header_tr = $('<tr/>', { >> + 'class':'trac-columns' >> + }).appendTo(table); >> + >> + for (var header in headers){ >> + >> + var th = $('<th/>', { >> + 'class':'trac-columns' >> + }).appendTo(header_tr); >> + >> + $('<font/>', { >> + 'color':'#1975D1' >> + }).html(headers[header]).appendTo(th); >> + } >> + >> + for (var json_ticket in ticket.tickets) { >> + var tr = $('<tr/>').appendTo(table); >> + var tkt = JSON.parse(json_ticket); >> + for (var j = 0; j < 6; j++) { >> + var td = $('<td/>').appendTo(tr); >> + if(j < 2) { >> + $('<a/>', { >> + 'href':tkt.url >> + }).html(j == 0 ? '#' + tkt.id : >> tkt.summary).appendTo(td); >> + } else { >> + td.html(j == 2 ? tkt.product : (j == 3 ? tkt.status >> : (j == 4 ? tkt.milestone : tkt.component))); >> + } >> + } >> + } >> + }); >> } >> -function add_row_btn_action(product,milestones,components,i){ >> - /* >> - This function will be called when the users add a new row to the >> empty table. >> - The new empty row will be always appended to the end row of the >> empty table. >> - */ >> - var headers = {"ticket":"","summary":"Summar >> y","description":"Description","product":"Product"," >> priority":"Priority","milestone":"Milestone","component":"Component"} >> - //var statuses = ["new", "accepted", "assigned", "closed", >> "reopened"]; >> +/* >> +This function will be called when the users add a new row to the empty >> table. >> +The new empty row will be always appended to the end row of the empty >> table. >> + */ >> +function add_row_btn_action(products, milestones, components, i, random, >> headers, tbody) { >> + >> + var statuses = ["new", "accepted", "assigned", "closed", >> "reopened"]; >> var priorities = ["blocker", "critical", "major", "minor", >> "trivial"]; >> var types = ["defect", "enhancement", "task"]; >> - tr_rows = document.createElement("tr"); >> + var tr = $('<tr/>').appendTo(tbody); >> - for (header in headers){ >> - if(header == "ticket"){ >> - td_row = document.createElement("td"); >> - input_ticket = document.createElement("input"); >> - input_ticket.setAttribute("type","checkbox"); >> - input_ticket.setAttribute("id","field-ticket"+i); >> - input_ticket.setAttribute("cl >> ass","input-block-level"); >> - input_ticket.setAttribute("na >> me","field_ticket"+i); >> - td_row.appendChild(input_ticket); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "summary"){ >> - td_row = document.createElement("td"); >> - input_summary = >> document.createElement("input"); >> - input_summary.setAttribute("t >> ype","text"); >> - input_summary.setAttribute("i >> d","field-summary"+i); >> - input_summary.setAttribute("c >> lass","input-block-level"); >> - input_summary.setAttribute("n >> ame","field_summary"+i); >> - td_row.appendChild(input_summary); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "description") { >> - td_row = document.createElement("td"); >> - input_description = document.createElement("textar >> ea"); >> - input_description.setAttribut >> e("id","field-description"+i); >> - input_description.setAttribut >> e("class","input-block-level"); >> - input_description.setAttribut >> e("name","field_description"+i); >> - input_description.setAttribute("rows","2"); >> - input_description.setAttribute("cols","28"); >> - td_row.appendChild(input_description); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "priority") { >> - td_row = document.createElement("td"); >> - input_priority = document.createElement("select >> "); >> - input_priority.setAttribute(" >> id","field-priority"+i); >> - input_priority.setAttribute(" >> class","input-block-level"); >> - input_priority.setAttribute(" >> name","field_priority"+i); >> - for (priority in priorities){ >> - option = document.createElement("option >> "); >> - option.setAttribute("value",p >> riorities[priority]); >> - option.appendChild(document.c >> reateTextNode(priorities[priority])); >> - input_priority.appendChild(option); >> - } >> - td_row.appendChild(input_priority); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "product") { >> - td_row = document.createElement("td"); >> - field_product = document.createElement("select"); >> - field_product.setAttribute("i >> d","field-product"+i); >> - field_product.setAttribute("c >> lass","input-block-level"); >> - field_product.setAttribute("n >> ame","field_product"+i); >> - for (p in product){ >> - option = document.createElement("option >> "); >> - option.setAttribute("value",( >> product[p])[0]); >> - option.appendChild(document.c >> reateTextNode((product[p])[1])); >> - field_product.appendChild(option); >> - } >> - td_row.appendChild(field_product); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "milestone"){ >> - td_row = document.createElement("td"); >> - field_milestone = document.createElement("select >> "); >> - field_milestone.setAttribute( >> "id","field-milestone"+i); >> - field_milestone.setAttribute( >> "class","input-block-level"); >> - field_milestone.setAttribute( >> "name","field_milestone"+i); >> - for (milestone in milestones){ >> - option = document.createElement("option >> "); >> - option.setAttribute("value",( >> milestones[milestone])[0]); >> - option.appendChild(document.c >> reateTextNode((milestones[milestone])[0])); >> - field_milestone.appendChild(option); >> - } >> - td_row.appendChild(field_milestone); >> - tr_rows.appendChild(td_row); >> - } >> - else if (header == "component"){ >> - td_row = document.createElement("td"); >> - field_component = document.createElement("select >> "); >> - field_component.setAttribute( >> "id","field-component"+i); >> - field_component.setAttribute( >> "class","input-block-level"); >> - field_component.setAttribute( >> "name","field_component"+i); >> - for (component in components){ >> - option = document.createElement("option >> "); >> - option.setAttribute("value",( >> components[component])[0]); >> - option.appendChild(document.c >> reateTextNode((components[component])[0])); >> - field_component.appendChild(option); >> + for (var header in headers) { >> + >> + var td = $('<td/>').appendTo(tr); >> + var unique_key = random + '-' + i; >> + >> + if(header == 'ticket') { >> + $('<input/>', { >> + 'id':'field-ticket' + unique_key, >> + 'name':'field_ticket' + unique_key, >> + 'class':'input-block-level', >> + 'type':'checkbox' >> + }).appendTo(td); >> + } else if (header == "summary") { >> + >> + $('<input/>', { >> + 'id':'field-summary' + unique_key, >> + 'name':'field_summary' + unique_key, >> + 'class':'input-block-level', >> + 'type':'text' >> + }).appendTo(td); >> + } else if (header == "description") { >> + >> + $('<textarea/>', { >> + 'id':'field-description' + unique_key, >> + 'name':'field_description' + unique_key, >> + 'class':'input-block-level', >> + 'rows':'2', >> + 'cols':'28' >> + }).appendTo(td); >> + } else if (header == "priority") { >> + >> + var input_priority = $('<select/>', { >> + 'id':'field-priority' + unique_key, >> + 'name':'field_priority' + unique_key, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + for (var priority in priorities){ >> + $('<option/>', { >> + 'value':priorities[priority] >> + }).html(priorities[priority]).appendTo(input_priority); >> + } >> + } else if (header == "product") { >> + >> + var field_product = $('<select/>', { >> + 'id':'field-product' + unique_key, >> + 'name':'field_product' + unique_key, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + for (var product in products) { >> + $('<option/>', { >> + 'value':(products[product])[0] >> + }).html((products[product])[1]).appendTo(field_product); >> + } >> + } else if (header == "milestone") { >> + >> + var field_milestone = $('<select/>', { >> + 'id':'field-milestone' + unique_key, >> + 'name':'field_milestone' + unique_key, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + for (var milestone in milestones) { >> + $('<option/>', { >> + 'value':(milestones[milestone])[0] >> + }).html((milestones[milestone] >> )[0]).appendTo(field_milestone); >> + } >> + } else if (header == "component") { >> + >> + var field_component = $('<select/>', { >> + 'id':'field-component' + unique_key, >> + 'name':'field_component' + unique_key, >> + 'class':'input-block-level' >> + }).appendTo(td); >> + for (var component in components) { >> + $('<option/>', { >> + 'value':(components[component])[0] >> + }).html((components[component] >> )[0]).appendTo(field_component); >> } >> - td_row.appendChild(field_component); >> - tr_rows.appendChild(td_row); >> } >> } >> - document.getElementById("empty-table").childNodes[1].childN >> odes[1].childNodes[1].appendChild(tr_rows); >> } >> -function remove_row_btn_action(numOfRows){ >> - /* >> - This function will be called when the user removes a table row of >> the empty table. >> - */ >> - var cnt=0; >> - for(var i=0;i<parseInt(numOfRows)-parseInt(cnt);i++){ >> - if(document.getElementById("e >> mpty-table").childNodes[1].childNodes[1].childNodes[1].child >> Nodes[i].childNodes[0].childNodes[0].checked){ >> - document.getElementById("empt >> y-table").childNodes[1].childNodes[1].childNodes[1].childNod >> es[i].remove(); >> +/* >> +This function will be called when the user removes a table row of the >> empty table. >> + */ >> +function remove_row_btn_action(numOfRows, unique_key) { >> + var cnt = 0; >> + for(var i = 0; i < parseInt(numOfRows) - parseInt(cnt); i++) { >> + if(document.getElementById('empty-table' + >> unique_key).childNodes[1].childNodes[1].childNodes[1].childN >> odes[i].childNodes[0].childNodes[0].checked) { >> + document.getElementById('empty-table' + >> unique_key).childNodes[1].childNodes[1].childNodes[1].childN >> odes[i].remove(); >> cnt=cnt+1; >> i--; >> } >> @@ -460,78 +415,56 @@ function remove_row_btn_action(numOfRows >> return cnt; >> } >> -function display_created_tickets(ticket) { >> - /* >> - Take ticket data sent through the CreatedTickets wiki macro and >> display those data as a ticket table within the wiki. >> - This function will create a div element containing the ticket table >> data and append that div to div with >> - "div-created-ticket-table". >> - */ >> - var headers = {"ticket":"Ticket","summary":" >> Summary","product":"Product","status":"Status","milestone":" >> Milestone","component":"Component"} >> - var contentDiv = document.getElementById("div-c >> reated-ticket-table"); >> - var div = document.createElement("div"); >> - div.setAttribute("class","span12"); >> - var h5 = document.createElement("h5"); >> - h5.appendChild(document.createTextNode("Created Tickets")); >> - div.appendChild(h5); >> - var table = document.createElement("table"); >> - table.setAttribute("class","listing tickets table table-bordered >> table-condensed query"); >> - table.setAttribute("style","border-radius: 0px 0px 4px 4px"); >> - tr = document.createElement("tr"); >> - tr.setAttribute("class","trac-columns"); >> +/* >> +Take ticket data sent through the CreatedTickets wiki macro and display >> those data as a ticket table within the wiki. >> +This function will create a div element containing the ticket table data >> and append that div to div with >> +"div-created-ticket-table". >> + */ >> +function display_created_tickets(tickets, unique_key) { >> + >> + var headers = {"ticket":"Ticket", "summary":"Summary", >> "product":"Product", "status":"Status", >> + "milestone":"Milestone", "component":"Component"}; >> + >> + var contentDiv = $('#div-created-ticket-table' + unique_key); >> + var div = $('<div/>', { >> + 'class':'span12' >> + }).appendTo(contentDiv); >> + >> + $('<h5/>').html('Created Tickets').appendTo(div); >> + >> + var table = $('<table/>', { >> + 'class':'listing tickets table table-bordered table-condensed >> query', >> + 'style':'border-radius: 0px 0px 4px 4px' >> + }).appendTo(div); >> + >> + var tr_headers = $('<tr/>', { >> + 'class':'trac-columns' >> + }).appendTo(table); >> >> - for (header in headers){ >> - th = document.createElement("th"); >> - font = document.createElement("font"); >> - font.setAttribute("color","#1975D1"); >> - font.appendChild(document.cre >> ateTextNode(headers[header])) >> - th = document.createElement("th"); >> - th.appendChild(font); >> - tr.appendChild(th); >> + for (var header in headers){ >> + var th = $('<th/>').appendTo(tr_headers); >> + var font = $('<font/>', { >> + 'color':'#1975D1' >> + }).html(headers[header]).appendTo(th); >> } >> - table.appendChild(tr); >> - for ( i=0 ; i<Object.keys(ticket.tickets).length ; i++ ){ >> - tr = document.createElement("tr"); >> - for (j=0;j<6;j++){ >> - if(j==0){ >> - td = document.createElement("td"); >> - a = document.createElement("a"); >> - tkt = JSON.parse(ticket.tickets[i]); >> - a.setAttribute("href",tkt.url); >> - a.appendChild(document.create >> TextNode("#"+tkt.id)); >> - td.appendChild(a); >> - } >> - else if(j==1){ >> - td = document.createElement("td"); >> - a = document.createElement("a"); >> - tkt = JSON.parse(ticket.tickets[i]); >> - a.setAttribute("href",tkt.url); >> - a.appendChild(document.create >> TextNode(tkt.summary)); >> - td.appendChild(a); >> - } >> - else if(j==2){ >> - td = document.createElement("td"); >> - tkt = JSON.parse(ticket.tickets[i]); >> - td.appendChild(document.creat >> eTextNode(tkt.product)); >> - } >> - else if(j==3){ >> - td = document.createElement("td"); >> - tkt = JSON.parse(ticket.tickets[i]); >> - td.appendChild(document.creat >> eTextNode(tkt.status)); >> - } >> - else if(j==4){ >> - td = document.createElement("td"); >> - tkt = JSON.parse(ticket.tickets[i]); >> - td.appendChild(document.creat >> eTextNode(tkt.milestone)); >> + >> + for (var index in tickets) { >> + var tr = $('<tr/>').appendTo(table); >> + var tkt = JSON.parse(tickets[index]); >> + >> + for (var j = 0; j < 6; j++) { >> + var td = $('<td/>'); >> + if(j < 2) { >> + >> + $('<a/>', { >> + 'href':tkt.url >> + }).html(j == 0 ? "#" + tkt.id : >> tkt.summary).appendTo(td); >> } >> - else if(j==5){ >> - td = document.createElement("td"); >> - tkt = JSON.parse(ticket.tickets[i]); >> - td.appendChild(document.creat >> eTextNode(tkt.component)); >> + else { >> + td.html(j ==2 ? tkt.product : (j == 3 ? >> tkt.status : (j == 4 ? tkt.milestone : tkt.component))) >> } >> - tr.appendChild(td); >> + td.appendTo(tr) >> } >> - table.appendChild(tr); >> } >> - div.appendChild(table); >> - contentDiv.appendChild(div); >> } >> +//line 537 >> \ No newline at end of file >> >> Modified: bloodhound/branches/bep_0011_batch_create_tickets/bloodhound >> _theme/bhtheme/theme.py >> URL: http://svn.apache.org/viewvc/bloodhound/branches/bep_0011_ba >> tch_create_tickets/bloodhound_theme/bhtheme/theme.py?rev= >> 1763012&r1=1763011&r2=1763012&view=diff >> ============================================================ >> ================== >> --- >> bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py >> (original) >> +++ >> bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py >> Sat Oct 1 13:30:09 2016 > > -- Dammina Sahabandu SSE, AdroitLogic (pvt) Ltd. Committer, Apache Software Foundation AMIE (SL) Bsc Eng Hons (Moratuwa) +94716422775
