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