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

Reply via email to