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.
