Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: sitescripts/reports/static/reports.js

Issue 8625042: Reports - user usefullness (Closed)
Patch Set: Reports - report update UI Created Oct. 18, 2012, 1:35 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 if (typeof localStorage == "undefined") 1 if (typeof localStorage == "undefined")
2 window.localStorage = {}; 2 window.localStorage = {};
3 var templates; 3 var templates;
4 4
5 function migrateCookies() 5 function migrateCookies()
6 { 6 {
7 var cookies = document.cookie.split(/\s*;\s*/); 7 var cookies = document.cookie.split(/\s*;\s*/);
8 for (var i = 0; i < cookies.length; i++) 8 for (var i = 0; i < cookies.length; i++)
9 { 9 {
10 if (/^(.*?)=(.*)/.test(cookies[i])) 10 if (/^(.*?)=(.*)/.test(cookies[i]))
(...skipping 11 matching lines...) Expand all
22 document.cookie = encodeURIComponent(key) + "=;expires=Thu, 01-Jan-1970 00:00:01 GMT"; 22 document.cookie = encodeURIComponent(key) + "=;expires=Thu, 01-Jan-1970 00:00:01 GMT";
23 } 23 }
24 } 24 }
25 } 25 }
26 26
27 function escapeHTML(value) 27 function escapeHTML(value)
28 { 28 {
29 return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;" ).replace(/"/g, "&quot;"); 29 return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;" ).replace(/"/g, "&quot;");
30 } 30 }
31 31
32 function setRadio(radio, value)
33 {
34 for (i = 0; i < radio.length; i++)
35 {
36 if (radio[i].value == value)
37 radio[i].checked = true;
38 else
39 radio[i].checked = false;
40 }
41 }
42
32 function saveSecret(guid, secret) 43 function saveSecret(guid, secret)
33 { 44 {
34 var secrets = localStorage.secrets; 45 var secrets = localStorage.secrets;
35 if (secrets) 46 if (secrets)
36 secrets = JSON.parse(secrets); 47 secrets = JSON.parse(secrets);
37 else 48 else
38 secrets = {}; 49 secrets = {};
39 secrets[guid] = {value: secret, expiration: new Date().getTime() + 1000*60*60* 24*30}; 50 secrets[guid] = {value: secret, expiration: new Date().getTime() + 1000*60*60* 24*30};
40 localStorage.secrets = JSON.stringify(secrets); 51 localStorage.secrets = JSON.stringify(secrets);
41 } 52 }
42 53
43 function setSecret(guid, secret) 54 function setSecret(guid, secret)
44 { 55 {
45 saveSecret(guid, secret); 56 saveSecret(guid, secret);
46 57
47 var status = ""; 58 var status = "";
48 var statusCell = document.getElementById("statusCell"); 59 var statusCell = document.getElementById("statusCell");
49 if (statusCell) 60 if (statusCell)
50 status = statusCell.textContent; 61 status = statusCell.textContent;
62
63 var utility = "0";
64 var utilityCell = document.getElementById("utilityCell");
51 65
52 var div = document.createElement("div"); 66 var div = document.createElement("div");
53 div.className = "updateLink" 67 div.className = "updateLink"
54 var link = document.createElement("a"); 68 var link = document.createElement("a");
55 link.setAttribute("href", "javascript:void(0);"); 69 link.setAttribute("href", "javascript:void(0);");
56 link.textContent = "Update status" 70 link.textContent = "Update status"
57 div.appendChild(link); 71 div.appendChild(link);
58 72
59 if (statusCell) 73 if (statusCell)
60 statusCell.appendChild(div); 74 statusCell.appendChild(div);
61 else 75 else
62 document.body.insertBefore(div, document.body.firstChild); 76 document.body.insertBefore(div, document.body.firstChild);
63 77
64 link.onclick = function() 78 link.onclick = function()
65 { 79 {
66 var notifyBox = ""; 80 var notifyBox = "";
81 var utilityRadios = "";
67 if (document.getElementById("emailCell")) 82 if (document.getElementById("emailCell"))
83 {
68 notifyBox = '<span id="notifyField"><input type="checkbox" id="notify" nam e="notify" value="1" /> <label for="notify">Notify user</label></span>'; 84 notifyBox = '<span id="notifyField"><input type="checkbox" id="notify" nam e="notify" value="1" /> <label for="notify">Notify user</label></span>';
69 85 utilityRadios = '<br />Utility: <input type="radio" name="utility" value=" 0" checked="checked" /> not established <input type="radio" name="utility" value ="1" /> usefull <input type="radio" name="utility" value="-1" /> harmful';
Wladimir Palant 2012/10/18 15:41:24 Not "harmful" but "useless". And it is "useful", n
Andrey Novikov 2012/10/18 15:51:29 Done.
70 div.innerHTML = '<form action="/updateReport" method="POST">' + 86 }
87
88 div.innerHTML = '<form id="updateForm" action="/updateReport" method="POST"> ' +
71 '<input type="hidden" name="secret" value="' + escapeHTML(secret) + '" />' + 89 '<input type="hidden" name="secret" value="' + escapeHTML(secret) + '" />' +
72 '<input type="hidden" name="guid" value="' + escapeHTML(guid) + '" />' + 90 '<input type="hidden" name="guid" value="' + escapeHTML(guid) + '" />' +
73 '<p>' + 91 '<p>' +
74 'Status templates: <br />' + 92 'Status templates: <br />' +
75 '<select id="templatesField"><option value="" selected="selected" disabl ed="true">(select one)</option></select>' + 93 '<select id="templatesField"><option value="" selected="selected" disabl ed="true">(select one)</option></select>' +
76 '</p>' + 94 '</p>' +
77 '<p>' + 95 '<p>' +
78 'Enter new status:' + notifyBox + '<br />' + 96 'Enter new status:' + notifyBox + '<br />' +
79 '<textarea id="statusField" name="status" oninput="updateTemplateButtons ();"></textarea>' + 97 '<textarea id="statusField" name="status" oninput="updateTemplateButtons ();"></textarea>' +
98 » utilityRadios +
80 '</p>' + 99 '</p>' +
81 '<div>' + 100 '<div>' +
82 '<button id="addTemplateButton" type="button" onclick="addTemplate();">A dd as template</button>' + 101 '<button id="addTemplateButton" type="button" onclick="addTemplate();">A dd as template</button>' +
83 '<button id="removeTemplateButton" type="button" onclick="removeTemplate ();">Remove template</button>' + 102 '<button id="removeTemplateButton" type="button" onclick="removeTemplate ();">Remove template</button>' +
84 '<input type="submit" value="Change status"/>' + 103 '<input type="submit" value="Change status"/>' +
85 '</div>' + 104 '</div>' +
86 '</form>'; 105 '</form>';
87 document.getElementById("templatesField").addEventListener("change", functio n() 106 document.getElementById("templatesField").addEventListener("change", functio n()
88 { 107 {
89 if (this.selectedIndex > 0) 108 if (this.selectedIndex > 0)
90 { 109 {
91 document.getElementById("statusField").value = this.options[this.selecte dIndex].value; 110 document.getElementById("statusField").value = this.options[this.selecte dIndex].value;
92 var notifyField = document.getElementById("notify"); 111 var notifyField = document.getElementById("notify");
93 if (notifyField) 112 if (notifyField)
94 notifyField.checked = true; 113 notifyField.checked = true;
95 updateTemplateButtons(); 114 updateTemplateButtons();
96 } 115 }
97 }, false); 116 }, false);
98 var statusField = document.getElementById("statusField"); 117 var statusField = document.getElementById("statusField");
99 statusField.value = status; 118 statusField.value = status;
119 if (utilityCell)
120 {
121 utility = utilityCell.getAttribute("value");
122 setRadio(document.getElementById("updateForm").elements.utility, utility);
123 }
124
100 updateTemplates(); 125 updateTemplates();
101 statusField.focus(); 126 statusField.focus();
102 } 127 }
103 } 128 }
104 129
105 function updateTemplates() 130 function updateTemplates()
106 { 131 {
107 var templatesField = document.getElementById("templatesField"); 132 var templatesField = document.getElementById("templatesField");
108 while (templatesField.options.length > 1) 133 while (templatesField.options.length > 1)
109 templatesField.remove(1); 134 templatesField.remove(1);
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 var spans = nodes[j].getElementsByTagName("span"); 342 var spans = nodes[j].getElementsByTagName("span");
318 for (var k = 0; k < spans.length; k++) 343 for (var k = 0; k < spans.length; k++)
319 if (spans[k].hasAttribute("title")) 344 if (spans[k].hasAttribute("title"))
320 spans[k].setAttribute("title", toLocalDate(spans[k].getAttribute("titl e"))); 345 spans[k].setAttribute("title", toLocalDate(spans[k].getAttribute("titl e")));
321 } 346 }
322 } 347 }
323 } 348 }
324 349
325 window.addEventListener("DOMContentLoaded", initTables, false); 350 window.addEventListener("DOMContentLoaded", initTables, false);
326 window.addEventListener("DOMContentLoaded", changeDates, false); 351 window.addEventListener("DOMContentLoaded", changeDates, false);
OLDNEW

Powered by Google App Engine
This is Rietveld