Now the component will generate a ticket table after creating the
tickets. And that ticket table will contain the details of the tickets
that have being created by the user.

On Tue, Jul 1, 2014 at 9:35 AM,  <[email protected]> wrote:
> Author: dammina
> Date: Tue Jul  1 04:05:49 2014
> New Revision: 1606979
>
> URL: http://svn.apache.org/r1606979
> Log:
> Details of the created tickets appear in a ticket table
>
> Modified:
>     
> bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js
>     
> bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_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_batch_create_tickets/bloodhound_theme/bhtheme/htdocs/js/batchcreate.js?rev=1606979&r1=1606978&r2=1606979&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
>  Tue Jul  1 04:05:49 2014
> @@ -4,7 +4,7 @@ function emptyTable(products,href,token)
>         if(numOfRows != "" && document.getElementById("empty-table") == null){
>         var contentDiv = document.getElementById("content");
>         //var headers = 
> {"summary":"Summary","description":"Description","product":"Product","status":"Status","priority":"Priority","type":"Types","owner":"Owner","cc":"Cc","milestone":"Milestone","keywords":"Keywords"}
> -        var headers = 
> {"summary":"Summary","description":"Description","product":"Product","status":"Status","priority":"Priority"}
> +    var headers = 
> {"summary":"Summary","description":"Description","product":"Product","status":"Status","priority":"Priority"}
>         statuses = ["accepted", "assigned", "closed", "new", "reopened"];
>         priorities = ["blocker", "critical", "major", "minor", "trivial"];
>         types = ["defect", "enhancement", "task"];
> @@ -20,7 +20,6 @@ function emptyTable(products,href,token)
>         form.setAttribute("id","bct-form");
>         form.setAttribute("name","bct");
>         form.setAttribute("method","post");
> -       form.setAttribute("action",href);
>
>         var div_token = document.createElement("div");
>         var form_token_val = document.createElement("input");
> @@ -180,25 +179,107 @@ function emptyTable(products,href,token)
>      submit_button = document.createElement("button");
>         submit_button.setAttribute("class","btn pull-right");
>         submit_button.setAttribute("type","button");
> -       submit_button.setAttribute("onclick","submitForm()");
> +       submit_button.setAttribute("onclick","submit_btn_action()");
> +       submit_button.setAttribute("id","bct-create");
> +       submit_button.setAttribute("data-target",href);
>         submit_button.appendChild(document.createTextNode("save"));
> -       form.appendChild(submit_button);
> +       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);
>         }
>
> -    //var rowCount = table.rows.length;
> -    //var row = table.insertRow(rowCount);
>  }
>
>  function submitForm(){
>         document.getElementById("bct-form").submit();
>  }
> -
> -//function deleteRow(obj) {
> -
> -//    var index = obj.parentNode.parentNode.rowIndex;
> -//    var table = document.getElementById("myTableData");
> -//    table.deleteRow(index);
> -
> -//}
> +
> +function removeBatchCreate(){
> +       document.getElementById("bct-button").remove();
> +       document.getElementById("numOfRows").remove();
> +}
> +
> +function deleteForm(){
> +       document.getElementById("empty-table").remove();
> +}
> +
> +//$('#bct-create').click(
> +function submit_btn_action() {
> +        // 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();
> +                       removeBatchCreate();
> +
> +                       var headers = 
> {"id":"Ticket","summary":"Summary","product":"Product","status":"Status"}
> +                       var contentDiv = document.getElementById("content");
> +                       var div = document.createElement("div");
> +                       div.setAttribute("class","span12");
> +                       var h2 = document.createElement("h2");
> +                       h2.appendChild(document.createTextNode("Created 
> Tickets"));
> +                       div.appendChild(h2);
> +                       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.createTextNode(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<4;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));
> +                                       }
> +                                       tr.appendChild(td);
> +                               }
> +                               table.appendChild(tr);
> +                       }
> +                       div.appendChild(table);
> +                       contentDiv.appendChild(div);
> +        });
> +}
>
> Modified: 
> bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py
> URL: 
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0011_batch_create_tickets/bloodhound_theme/bhtheme/theme.py?rev=1606979&r1=1606978&r2=1606979&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
>  Tue Jul  1 04:05:49 2014
> @@ -789,17 +789,20 @@ class BatchCreateTicketDialog(Component)
>                           if k.startswith('field_'))
>              #new_tkts variable will contain the tickets that have been 
> created as a batch
>              #that information will be used to load the resultant query table
> -            product, tid, new_tkts = self.batch_create(req, attrs, True)
> +            product, tid, new_tkts,num_of_tkts = self.batch_create(req, 
> attrs, True)
> +            # product, tid = self.batch_create(req, attrs, True)
>          except Exception, exc:
>              self.log.exception("BH: Batch create tickets failed %s" % (exc,))
>              req.send(str(exc), 'plain/text', 500)
>          else:
> -            tres = Neighborhood('product', product)('ticket', tid)
> -            href = req.href
> -            req.send(to_json({'product': product, 'id': tid,
> -                              'url': get_resource_url(self.env, tres, 
> href)}),
> -                     'application/json')
> -
> +            tkt_list=[]
> +            tkt_dict={}
> +            for i in range(0,num_of_tkts):
> +                tres = Neighborhood('product', 
> new_tkts[i].values['product'])('ticket', tid-num_of_tkts+i+1)
> +                href = req.href
> +                tkt_list.append(to_json({'product': 
> new_tkts[i].values['product'], 'id': tid-num_of_tkts+i+1, 'url': 
> get_resource_url(self.env, tres, href), 'summary': 
> new_tkts[i].values['summary'] ,'status': 
> new_tkts[i].values['status'],'priority': 
> new_tkts[i].values['priority'],'description': 
> new_tkts[i].values['description']}))
> +            tkt_dict["tickets"]=tkt_list
> +            req.send(to_json(tkt_dict), 'application/json')
>
>      def _get_ticket_module(self):
>          ptm = None
> @@ -821,7 +824,7 @@ class BatchCreateTicketDialog(Component)
>              form = tag.form(method="get", style="display:inline", 
> id="batchcreate")
>              div = tag.div(class_="btn-group")
>              span = tag.span(class_="input-group-btn")
> -            button = tag.button(class_="btn btn-default", type="button", 
> onclick="Javascript:emptyTable("+to_json(products)+","+to_json(req.href()+"/bct")+","+to_json(str(req.environ["HTTP_COOKIE"]))+")")
> +            button = tag.button(id="bct-button", class_="btn btn-default", 
> type="button", 
> onclick="Javascript:emptyTable("+to_json(products)+","+to_json(req.href()+"/bct")+","+to_json(str(req.environ["HTTP_COOKIE"]))+")")
>              input = tag.input(id="numOfRows",type="text", 
> style="width:110px;", class_="form-control", placeholder="How many tickets?")
>              text = tag.text("Batch Create")
>              button.append(text)
> @@ -837,7 +840,9 @@ class BatchCreateTicketDialog(Component)
>          """ Create batch of tickets, returning created tickets.
>          """
>          num_of_tkts = attributes.__len__()/5
> +        created_tickets = []
>          for i in range(0,num_of_tkts):
> +
>              if 'product'+str(i) in attributes:
>                  env = self.env.parent or self.env
>                  if attributes['product'+str(i)]:
> @@ -859,6 +864,7 @@ class BatchCreateTicketDialog(Component)
>              t['product'] = product
>              t['priority'] = priority
>              t.insert()
> +            created_tickets.append(t)
>
>              if notify:
>                  try:
> @@ -867,7 +873,8 @@ class BatchCreateTicketDialog(Component)
>                  except Exception, e:
>                      self.log.exception("Failure sending notification on 
> creation "
>                                     "of ticket #%s: %s" % (t.id, e))
> -        start_id = self.env.db_query("SELECT MAX(uid) FROM ticket")[0][0] - 
> num_of_tkts
> -        created_tickets = self.env.db_query("SELECT * FROM ticket WHERE 
> uid>%s"%start_id)
> -        return t['product'], t.id, created_tickets
> +        # start_id = self.env.db_query("SELECT MAX(uid) FROM ticket")[0][0] 
> - num_of_tkts
> +        # created_tickets = self.env.db_query("SELECT * FROM ticket WHERE 
> uid>%s"%start_id)
> +        # return t['product'], t.id, created_tickets
> +        return t['product'], t.id, created_tickets, num_of_tkts
>
>
>



-- 
Dammina Sahabandu.
Committer for ASF (Apache Bloodhound)
Undergraduate Department of Computer Science and Engineering
University of Moratuwa
Sri Lanka.

Reply via email to