Prechádzať zdrojové kódy

WIP

* reissue, still not implemented, needs api backend support and api function call
* recycle not implemented, needs api backend support
* added front end HTML updates for messages etc.
abetusk 4 rokov pred
rodič
commit
d30086f259

+ 123 - 8
main/app/static/js/popufare_admin.js

@@ -42,8 +42,6 @@ function api_resp(xhr,extra) {
 
       var dat = JSON.parse(xhr.responseText);
 
-      console.log(dat);
-
       if (extra["ui_function"] === "manage_card.find") {
 
         console.log("manage_card.find", dat);
@@ -143,10 +141,6 @@ function api_resp(xhr,extra) {
       else if (extra["ui_function"] === "manage_user.associate_card") {
 
         if (dat["result"] === "success") {
-
-          // After we've associated the card to the user, re-get user information to re-fill
-          // page
-          //
           update_message("ui.manage_user.message", "success", "")
           update_message("ui.manage_user.password_message", "success", "")
           update_message("ui.manage_user.card_message", "success", "")
@@ -158,6 +152,26 @@ function api_resp(xhr,extra) {
 
       }
 
+      else if (extra["ui_function"] === "reissue_card.find") {
+        if (dat["result"] === "success") {
+          update_message("ui.reissue_card.message", "success", "")
+          reissue_card_fill(dat);
+        }
+        else {
+          update_message("ui.reissue_card.message", "error", dat.api_comment);
+        }
+      }
+
+      else if (extra["ui_function"] === "recycle_card.find") {
+        if (dat["result"] === "success") {
+          update_message("ui.recycle_card.message", "success", "")
+          //recycle_card_fill(dat);
+        }
+        else {
+          update_message("ui.recycle_card.message", "error", dat.api_comment);
+        }
+      }
+
       else if (extra["ui_function"] === "group") {
       }
 
@@ -514,6 +528,74 @@ function manage_user_find_fill(data) {
 // --------------------------------------
 // --------------------------------------
 
+function reissue_card() {
+
+  var fields = [ "source_magstripe", "source_rfid_a", "source_rfid_b",
+                 "dest_magstripe", "dest_rfid_a", "dest_rfid_b" ];
+
+  var data = [];
+  for (var idx=0; idx<fields.length; idx++) {
+    var field = fields[idx];
+
+    var val = _get_input_field("ui.reissue_card." + field);
+    if (val.length > 0) {
+      data.push([ field, val ]);
+    }
+  }
+
+  console.log("REISSUE (not implemented):", data);
+  var dat = {
+    "api_function":"Reissue",
+    "ui_function":"reissue.update",
+    "data": [
+      ["source_logical_card_id",cardid],
+      ["source_mag_token","..."],
+      ["source_rfid_token","..."],
+      ["source_group","..."],
+
+      ["destination_mag_token","..."],
+      ["destination_rfid_token","..."]
+      ["destination_group","..."]
+    ]};
+  //api_req(dat);
+}
+
+function reissue_card_fill(card_data) {
+
+  if (typeof card_data === "undefined") { return; }
+  if ( (!("cards" in card_data)) || (card_data.cards.length==0)) {
+    return;
+  }
+
+  var card = card_data.cards[0];
+
+  if ("mag_token" in card) {
+    _fill_input_field("ui.reissue_card.source_magstripe", card["mag_token"]);
+  }
+
+  if ("rfid_token" in card) {
+    var tok = card["rfid_token"].split(":");
+    var rfid_a = "", rfid_b = "";
+    if (tok.length >= 3) {
+      rfid_a = tok[1];
+      rfid_b = tok[2];
+    }
+    _fill_input_field("ui.reissue_card.source_rfid_a", rfid_a);
+    _fill_input_field("ui.reissue_card.source_rfid_b", rfid_b);
+  }
+
+  if ("group" in card) {
+  }
+
+
+}
+
+// --------------------------------------
+// --------------------------------------
+// --------------------------------------
+// --------------------------------------
+// --------------------------------------
+
 function manage_card_redirect_manage_user() {
   var userid = _get_input_field("ui.manage_card.userid");
   _redirect( "manage_user?" + "action=get&userid=" + userid);
@@ -805,8 +887,8 @@ function admin_api_init() {
   var ele;
   var _func = location.pathname.substring(1);
 
-  console.log("...init", _func);
-  console.log(window.location.search);
+  //console.log("...init", _func);
+  //console.log(window.location.search);
   var _h = _param2hash(window.location.search);
 
   if (_func === "create_user") {
@@ -853,6 +935,39 @@ function admin_api_init() {
     }
   }
 
+  else if (_func === "reissue_card") {
+    _attach_button( "ui.reissue_card.reissue", reissue_card);
+
+    if ("logical_card_id" in _h) {
+      api_req({
+        "api_function":"CardInfo",
+        "ui_function":"reissue_card.find",
+        "data": [
+          ["action","search"],
+          ["logical_card_id",_h["logical_card_id"] ]
+        ]
+      });
+
+    }
+  }
+
+  else if (_func === "recycle_card") {
+    _attach_button( "ui.recycle_card.", reissue_card);
+
+    if ("logical_card_id" in _h) {
+      api_req({
+        "api_function":"CardInfo",
+        "ui_function":"recycle_card.find",
+        "data": [
+          ["action","search"],
+          ["logical_card_id",_h["logical_card_id"] ]
+        ]
+      });
+
+    }
+  }
+
+
 }
 
 admin_api_init();

+ 28 - 17
main/app/templates/recycle_card.html

@@ -2,7 +2,15 @@
 
 {% block content %}
 
-  <h1 class="mt-4">Recycle Card</h1>
+  <div class='row'>
+    <div class='col-6'>
+      <h1 class="mt-4">Recycle Card</h1>
+    </div>
+
+    <div class='col-6'>
+      <h2 class="mt-4" id='ui.recycle_card.message'>...</h2>
+    </div>
+  </div>
 
   <div class='container'>
 
@@ -16,20 +24,23 @@
 
           <div class='col-10'>
 
+            <input id='ui.recycle_card.logical_card_id' type='hidden' >
+
+
             <div class='row rowpop row-shade'>
               <div class='col-6'>MagStripe</div>
               <div class='col-6'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.recycle_card.mag_token' class='form-control form-control-sm' placeholder=''>
               </div>
             </div>
 
             <div class='row rowpop '>
               <div class='col-6'>RFID</div>
               <div class='col-2'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.recycle_card.rfid_token_a' class='form-control form-control-sm' placeholder=''>
               </div>
               <div class='col-4'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.recycle_card.rfid_token_b' class='form-control form-control-sm' placeholder=''>
               </div>
             </div>
 
@@ -38,7 +49,7 @@
               <div class='col-6'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.recycle_card.orig_group'>
                     {% for g in groups %}
                     <option id='{{ g.group_id }}'>{{ g.group_name }}</option>
                     {% endfor %}
@@ -53,7 +64,7 @@
               <div class='col-6'>Destination Group</div>
               <div class='col-6'>
 
-                <div class='input-group input-group-sm mb-3'>
+                <div class='input-group input-group-sm mb-3' id='ui.recycle_card.group'>
                   <select class='custom-select'>
                     {% for g in groups %}
                     <option id='{{ g.group_id }}'>{{ g.group_name }}</option>
@@ -103,7 +114,7 @@
             <!-- none -->
             <div class='row rowpop row-shade'>
               <div class='col-1'>
-                <input type='radio' aria-label='pass-none'>
+                <input type='radio' aria-label='pass-none' id='ui.recycle_card.pass_none'>
               </div>
               <div class='col-2'>None</div>
               <div class='col-3'></div>
@@ -114,13 +125,13 @@
             <!-- multi ride -->
             <div class='row rowpop '>
               <div class='col-1'>
-                <input type='radio' aria-label='initial-pass-multi-ride'>
+                <input type='radio' aria-label='initial-pass-multi-ride' id='ui.recycle_card.pass_nride'>
               </div>
               <div class='col-2'>Multi Ride</div>
               <div class='col-2'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.recycle_card.pass_nride_type'>
                     <option>Adult</option>
                     <option>Half</option>
                   </select>
@@ -131,7 +142,7 @@
               <div class='col-2'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.recycle_card.pass_nride_region'>
                     <option>Region 0</option>
                     <option>Region 1</option>
                   </select>
@@ -142,7 +153,7 @@
               <div class='col-2'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.recycle_card.pass_nride_quantity'>
                     <option>1</option>
                     <option>2</option>
                     <option>5</option>
@@ -158,7 +169,7 @@
                   <div class='input-group-prepend'>
                     <span class='input-group-text'>Other</span>
                   </div>
-                  <input type='text' class='form-control form-control-sm' placeholder=''>
+                  <input type='text' class='form-control form-control-sm' placeholder='' id='ui.recycle_card.pass_nride_other'>
                 </div>
               </div>
 
@@ -176,7 +187,7 @@
               <div class='col-2'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.recycle_card.pass_nday'>
                     <option>Adult</option>
                     <option>Half</option>
                   </select>
@@ -187,7 +198,7 @@
               <div class='col-2'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.recycle_card.pass_nday_region'>
                     <option>Region 0</option>
                     <option>Region 1</option>
                   </select>
@@ -198,7 +209,7 @@
               <div class='col-2'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.recycle_card.pass_nday_quantity'>
                     <option>1</option>
                     <option>2</option>
                     <option>5</option>
@@ -214,7 +225,7 @@
                   <div class='input-group-prepend'>
                     <span class='input-group-text'>Other</span>
                   </div>
-                  <input type='text' class='form-control form-control-sm' placeholder=''>
+                  <input type='text' class='form-control form-control-sm' placeholder='' id'ui.recycle_card.pass_nday_other'>
                 </div>
               </div>
 
@@ -228,7 +239,7 @@
               <div class='col-9'>
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.recycle_card.pass_other'>
                     {% for rc in cache["other_pass"] %}
                       <option id='{{ rc.rulename }}'>{{ rc.rulename }}</option>
                     {% endfor %}

+ 20 - 10
main/app/templates/reissue_card.html

@@ -2,7 +2,15 @@
 
 {% block content %}
 
-  <h1 class="mt-4">Re-Issue Card</h1>
+  <div class='row'>
+    <div class='col-6'>
+      <h1 class="mt-4">Re-Issue Card</h1>
+    </div>
+
+    <div class='col-6'>
+      <h2 class='mt-4' id='ui.reissue_card.message'>..</h2>
+    </div>
+  </div>
 
   <div class='container'>
 
@@ -15,20 +23,22 @@
 
           <div class='col-5'>
 
+            <input id='ui.reissue_card.source_logical_card_id' type='hidden' >
+
             <div class='row rowpop row-shade'>
               <div class='col-6'>Source MagStripe</div>
               <div class='col-6'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.reissue_card.source_magstripe' class='form-control form-control-sm' placeholder=''>
               </div>
             </div>
 
             <div class='row rowpop '>
               <div class='col-6'>Source RFID</div>
               <div class='col-2'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.reissue_card.source_rfid_a' class='form-control form-control-sm' placeholder=''>
               </div>
               <div class='col-4'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.reissue_card.source_rfid_b' class='form-control form-control-sm' placeholder=''>
               </div>
             </div>
 
@@ -38,7 +48,7 @@
                 <!-- <input type='text' class='form-control form-control-sm' placeholder=''> -->
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.reissue_card.source_group'>
                     {% for g in groups %}
                     <option id='{{ g.group_id }}'>{{ g.group_name }}</option>
                     {% endfor %}
@@ -57,17 +67,17 @@
             <div class='row rowpop row-shade'>
               <div class='col-6'>Destination MagStripe</div>
               <div class='col-6'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.reissue_card.dest_magstripe' class='form-control form-control-sm' placeholder=''>
               </div>
             </div>
 
             <div class='row rowpop '>
               <div class='col-6'>Destination RFID</div>
               <div class='col-2'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.reissue_card.dest_rfid_a' class='form-control form-control-sm' placeholder=''>
               </div>
               <div class='col-4'>
-                <input type='text' class='form-control form-control-sm' placeholder=''>
+                <input type='text' id='ui.reissue_card.dest_rfid_b' class='form-control form-control-sm' placeholder=''>
               </div>
             </div>
 
@@ -77,7 +87,7 @@
                 <!-- <input type='text' class='form-control form-control-sm' placeholder=''> -->
 
                 <div class='input-group input-group-sm mb-3'>
-                  <select class='custom-select'>
+                  <select class='custom-select' id='ui.reissue_card.dest_group'>
                     {% for g in groups %}
                     <option id='{{ g.group_id }}'>{{ g.group_name }}</option>
                     {% endfor %}
@@ -100,7 +110,7 @@
 
         <div class='row '>
           <div class='col-6'>
-            <button type='button' class='btn btn-secondary btn-sm'>Re-Issue</button>
+            <button type='button' id='ui.reissue_card.reissue' class='btn btn-secondary btn-sm'>Re-Issue</button>
           </div>
           <div class='col-6'></div>
         </div>