popufare_admin.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. function _param2hash(p) {
  2. var h = {};
  3. p = p.substring(1);
  4. var tokval = p.split("&");
  5. for (var idx=0; idx<tokval.length; idx++) {
  6. pv = tokval[idx].split("=");
  7. h[pv[0]] = pv[1];
  8. }
  9. return h;
  10. }
  11. function _attach_button(btn_id, cb) {
  12. ele = document.getElementById(btn_id);
  13. if (ele) { ele.onclick = cb; }
  14. }
  15. function _redirect(rel_str) {
  16. console.log("redirect", rel_str);
  17. window.location.href = rel_str;
  18. }
  19. function _fill_input_field(fid, fdata) {
  20. var ele = document.getElementById(fid);
  21. if (ele) { ele.value = fdata; }
  22. }
  23. function _get_input_field(fid) {
  24. var ele = document.getElementById(fid);
  25. if (ele) { return ele.value; }
  26. return null;
  27. }
  28. function manage_card_find_fill(data) {
  29. var fields = [ "logical_card_id", "group", "mag_token", "rfid_token"];
  30. for (var idx=0; idx<fields.length; idx++) {
  31. if (fields[idx] in data) {
  32. _fill_input_field("manage_card:" + fields[idx], data[fields[idx]])
  33. }
  34. }
  35. }
  36. function manage_user_find_fill(data) {
  37. var fields = [ "userid", "username", "first_name", "last_name",
  38. "email", "phone", "address", "city", "state", "zip",
  39. "shipping_name", "shipping_city", "shipping_address",
  40. "shipping_zip", "password"];
  41. if ("user" in data) {
  42. var user_data = data["user"];
  43. for (var idx=0; idx<fields.length; idx++) {
  44. if (fields[idx] in user_data) {
  45. _fill_input_field("manage_user:" + fields[idx], user_data[fields[idx]])
  46. }
  47. }
  48. }
  49. if ("card" in data) {
  50. var card_table = document.getElementById("manage_user:list_cards");
  51. while (card_table.firstChild) {
  52. card_table.removeChild(card_table.lastChild);
  53. }
  54. var row = document.createElement("div");
  55. row.classList.add("row");
  56. row.classList.add("rowpop");
  57. row.classList.add("row-shade");
  58. var cell = document.createElement("div");
  59. cell.innerHTML = "Card Id";
  60. cell.classList.add("col-4");
  61. row.appendChild(cell);
  62. cell = document.createElement("div");
  63. cell.innerHTML = "Mag Stripe";
  64. cell.classList.add("col-4");
  65. row.appendChild(cell);
  66. cell = document.createElement("div");
  67. cell.innerHTML = "RFID";
  68. cell.classList.add("col-4");
  69. row.appendChild(cell);
  70. card_table.appendChild(row);
  71. var card_data = data["card"];
  72. for (var idx=0; idx<card_data.length; idx++) {
  73. var cardid = card_data[idx]["logical_card_id"];
  74. var magid = card_data[idx]["mag_token"];
  75. var rfid = card_data[idx]["rfid_token"];
  76. row = document.createElement("div");
  77. row.classList.add("row");
  78. row.classList.add("rowpop");
  79. if ((idx % 2) == 1) {
  80. row.classList.add("row-shade");
  81. }
  82. cell = document.createElement("div");
  83. cell.innerHTML = "<a href='/manage_card?logical_card_id=" + cardid + "'>" + cardid + "</a>";
  84. cell.classList.add("col-4");
  85. row.appendChild(cell);
  86. cell = document.createElement("div");
  87. cell.innerHTML = "<a href='/manage_card?logical_card_id=" + cardid + "'>" + magid + "</a>";
  88. cell.classList.add("col-4");
  89. row.appendChild(cell);
  90. cell = document.createElement("div");
  91. cell.innerHTML = "<a href='/manage_card?logical_card_id=" + cardid + "'>" + rfid + "</a>";
  92. cell.classList.add("col-4");
  93. row.appendChild(cell);
  94. card_table.appendChild(row);
  95. console.log("card", idx,
  96. card_data[idx]["logical_card_id"],
  97. card_data[idx]["mag_token"],
  98. card_data[idx]["rfid_token"] );
  99. }
  100. }
  101. window.history.replaceState({}, document.title, "/manage_user");
  102. }
  103. function api_resp(xhr,extra) {
  104. if (xhr.readyState === XMLHttpRequest.DONE) {
  105. if (xhr.status === 200) {
  106. var dat = JSON.parse(xhr.responseText);
  107. if (extra["ui_function"] === "manage_card.find") {
  108. if (("cards"in dat) &&
  109. (dat.cards.length>0)) {
  110. manage_card_find_fill(dat.cards[0]);
  111. }
  112. }
  113. else if (extra["ui_function"] === "create_user.finish") {
  114. _redirect( "manage_user?" + "action=get&userid=" + dat["userid"])
  115. }
  116. else if (extra["ui_function"] === "manage_user.find") {
  117. console.log("manage_user.find:", dat);
  118. manage_user_find_fill(dat);
  119. }
  120. else if (extra["ui_function"] === "manage_user.update") {
  121. console.log("manage_user.update resp:", dat)
  122. }
  123. }
  124. else {
  125. console.log("xhr error:", xhr);
  126. }
  127. }
  128. }
  129. // example usage:
  130. //
  131. // api_req({"ui_function":"manage_card.find", "api_function":"CardInfo", "data":[ ["action","search"],["mag_token","370000000007015"]]})
  132. //
  133. function api_req(ctx) {
  134. var xhr;
  135. xhr = new XMLHttpRequest();
  136. if (!xhr) { return false; }
  137. var param_val = [];
  138. for (var idx=0; idx<ctx.data.length; idx++) {
  139. param_val.push(ctx.data[idx][0] + '=' + ctx.data[idx][1]);
  140. }
  141. var api_func = "nop";
  142. if ("api_function" in ctx) { api_func = ctx["api_function"]; }
  143. var req_str = "api/v1/" + api_func + "?" + param_val.join("&");
  144. xhr.onreadystatechange = (function(_x,_f) {
  145. return function(v) { api_resp(_x, {"ui_function":_f}); }
  146. })(xhr, ctx["ui_function"])
  147. xhr.open("GET", req_str);
  148. xhr.send()
  149. }
  150. function manage_user_find_userid() {
  151. var ele = document.getElementById("manage_user:userid");
  152. var userid = ele.value;
  153. api_req({"api_function":"UserInfo", "ui_function":"manage_user.find", "data": [ ["userid",userid] ] });
  154. }
  155. function manage_user_find_username() {
  156. var ele = document.getElementById("manage_user:username");
  157. var username = ele.value;
  158. api_req({"api_function":"UserInfo", "ui_function":"manage_user.find", "data":[["username",username]]});
  159. }
  160. function manage_user_associate_card(data) {
  161. var ele = document.getElementById("manage_user:userid");
  162. var userid = ele.value;
  163. var ele = document.getElementById("manage_user:logical_card_id");
  164. var cardid = ele.value;
  165. var req_dat = { "api_function":"Card", "ui_function":"create_user.update",
  166. "data": [
  167. ["action","update"],
  168. ["userid", userid],
  169. ["logical_card_id",cardid]
  170. ] };
  171. api_req(req_dat);
  172. }
  173. function create_user_process_button() {
  174. var val_names = ["username", "first_name", "last_name",
  175. "email", "phone", "address", "city", "state", "zip",
  176. "shipping_name", "shipping_city", "shipping_address",
  177. "shipping_zip", "password"];
  178. var req_dat = { "api_function":"User", "ui_function":"create_user.finish",
  179. "data":[ ["action","add"]] };
  180. for (var idx=0; idx<val_names.length; idx++) {
  181. var v = _get_input_field("create_user:" + val_names[idx]);
  182. if (v) {
  183. req_dat.data.push([val_names[idx],v]);
  184. }
  185. }
  186. api_req(req_dat);
  187. }
  188. function admin_api_init() {
  189. var ele;
  190. var _func = location.pathname.substring(1);
  191. if (_func === "creat_user") {
  192. ele = document.getElementById("create_user:button_create");
  193. if (ele) { ele.onclick = create_user_process_button; }
  194. }
  195. else if (_func === "manage_user") {
  196. _attach_button( "manage_user:button_lookup_userid", manage_user_find_userid);
  197. _attach_button( "manage_user:button_lookup_username", manage_user_find_username);
  198. _attach_button( "manage_user:button_associate_card", manage_user_associate_card);
  199. console.log(window.location.search);
  200. var _h = _param2hash(window.location.search);
  201. if ("userid" in _h) {
  202. api_req({"api_function":"User", "ui_function":"manage_user.find", "data":[["action","get"],["userid",_h["userid"]]]});
  203. }
  204. }
  205. }
  206. admin_api_init();