collecting medal for hitxy members
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

263 lignes
7.5KB

  1. (function ($) {
  2. // http://davidwalsh.name/javascript-debounce-function
  3. function debounce(func, wait, immediate) {
  4. var timeout;
  5. return function () {
  6. var context = this, args = arguments;
  7. var later = function () {
  8. timeout = null;
  9. if (!immediate)
  10. func.apply(context, args);
  11. };
  12. var callNow = immediate && !timeout;
  13. clearTimeout(timeout);
  14. timeout = setTimeout(later, wait);
  15. if (callNow)
  16. func.apply(context, args);
  17. };
  18. };
  19. /*______________________________________________________*/
  20. $(function () {
  21. //$('#test').html(mm.display_name);
  22. console.log(mm);
  23. $("#cardloading").attr('src', mm.loading);
  24. $("#loading90").attr('src', mm.loading);
  25. $("#done").attr('src', mm.done);
  26. $("span.collector").text("Pactrick");
  27. init_clientname_input("#username");
  28. });
  29. function clientname_suggestions(){
  30. return new Bloodhound({
  31. datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
  32. queryTokenizer: Bloodhound.tokenizers.whitespace,
  33. remote: {
  34. url: mm.ajax_url + '?' + jQuery.param({
  35. _ajax_nonce: mm.nonce, // nonce
  36. action: "search_users", // action
  37. pattern: "QUERY", // search pattern
  38. }),
  39. wildcard: 'QUERY' // %QUERY will be replace by users input in
  40. }, // the url option.
  41. });
  42. }
  43. function onUpdateClientID (e, suggestion)
  44. {
  45. mm.current_user = suggestion.userid;
  46. $('#details').hide();
  47. $.post(mm.ajax_url, { // POST request
  48. _ajax_nonce: mm.nonce, // nonce
  49. action: "list_users", // action
  50. client : suggestion.userid,
  51. name : ''
  52. }, function(response, status, xhr){
  53. step2_verify_user(response);
  54. }).fail(function(){
  55. errUserName("Network Error, Please try again later");
  56. });
  57. }
  58. function init_clientname_input(selector){
  59. //console.log('selector = ' + selector);
  60. // init Typeahead
  61. jQuery(selector).typeahead(
  62. {
  63. minLength: 0,
  64. highlight: true,
  65. hint:false,
  66. },
  67. {
  68. name: 'clientnames',
  69. source: clientname_suggestions(), // suggestion engine is passed as the source
  70. display: function(item) { // display: 'name' will also work
  71. //console.log('display' + item.userid);
  72. return item.username;
  73. },
  74. limit: 5,
  75. templates: {
  76. suggestion: function(item) {
  77. //console.log(item);
  78. return '<div><i class="fusion-li-icon fa-user fas"></i> '+ item.username +'-'+ item.userid +'</div>';
  79. },
  80. pending: function (query) {
  81. return '<img src=' + mm.search_user + '>';
  82. },
  83. },
  84. 'updater' : function(item) {
  85. //console.log('selected +' + item);
  86. return item;
  87. }
  88. }).bind('typeahead:select', onUpdateClientID
  89. ).bind('typeahead:autocomplete', onUpdateClientID);
  90. }
  91. function errUserName(msg)
  92. {
  93. var el = $("#errUserName");
  94. el.html(msg);
  95. el.fadeIn();
  96. setTimeout(function(){
  97. el.fadeOut();
  98. }, 2000);
  99. }
  100. //step1
  101. $(document).on("click", "#step1", function(){
  102. var input = $("#username").val();
  103. if ( input == "" ){
  104. errUserName(" cannot be empty");
  105. return;
  106. }
  107. $.post(mm.ajax_url, { // POST request
  108. _ajax_nonce: mm.nonce, // nonce
  109. action: "list_users", // action
  110. client : mm.current_user,
  111. }, function(response, status, xhr){
  112. step2_verify_user(response);
  113. }).fail(function(){
  114. errUserName("Network Error, Please try again later");
  115. });
  116. });
  117. //step2
  118. function step2_verify_user(response)
  119. {
  120. console.log(response);
  121. var el = $("#userpass");
  122. el.slideUp();
  123. el.slideDown();
  124. $("#vmobile").text(response.phone);
  125. $("#vemail").text(response.email);
  126. }
  127. //verify
  128. $(document).on("click", "#step2", function(){
  129. var input = $("#verifycode").val();
  130. var method = $("#verify_method").val();
  131. $.post(mm.ajax_url, { // POST request
  132. _ajax_nonce: mm.nonce, // nonce
  133. action: "verify_user", // action
  134. client : mm.current_user,
  135. method: method,
  136. verifycode : input,
  137. }, function(response, status, xhr){
  138. step3_show_details(response);
  139. }).fail(function(){
  140. errUserName("Network Error, Please try again later");
  141. });
  142. });
  143. function step3_show_details(response)
  144. {
  145. var el = $('#details');
  146. el.slideDown();
  147. if ( response.pass ){
  148. el.slideDown();
  149. $("#errVerify").text("");
  150. }else {
  151. el.hide();
  152. $("#errVerify").text("Incorrect, please try again");
  153. }
  154. $("#postaladdr").val(response.addr);
  155. $("#states").val(response.state);
  156. $("span.collector").text(response.pickup);
  157. $("#pickupcontact").val(response.pp);
  158. $("#pickupwechat").val(response.ppwechat);
  159. $("#pickuplocation").val(response.loc);
  160. $("#pickuptime").val(response.time);
  161. $(':radio:not(:checked)').attr('disabled', false);
  162. $(':radio:checked').attr('disabled', false);
  163. //set delivery
  164. switch(response.delivery)
  165. {
  166. case 'pp':
  167. $('input:radio[name=delivery]:nth(2)').prop('checked',true);
  168. $('tr.pp').show();
  169. break;
  170. case 'dp':
  171. $('tr.pp').hide();
  172. $('input:radio[name=delivery]:nth(1)').prop('checked',true);
  173. break;
  174. default:
  175. $('tr.pp').hide();
  176. $('input:radio[name=delivery]:nth(0)').prop('checked',true);
  177. }
  178. $(':radio:not(:checked)').attr('disabled', true);
  179. $(':radio:checked').attr('disabled', false);
  180. //steps
  181. $("#medal").prop("checked", response.step >= 1);
  182. $("#posted").prop("checked", response.step >= 2);
  183. $("#received").prop("checked", response.step >= 3);
  184. $("#readyforpickup").prop("checked", response.step >= 4);
  185. $("#delivered").prop("checked", response.step >= 5);
  186. }
  187. //apply card
  188. $(document).on("click", "#cardbtn", function(){
  189. var loading = $('#cardloading');
  190. var check = $('#card');
  191. $(this).hide();
  192. loading.show();
  193. setTimeout(function(){
  194. loading.hide();
  195. check.show();
  196. }, 2000);
  197. });
  198. //apply 90 meda;
  199. $(document).on("click", "#btn90", function(){
  200. var loading = $('#loading90');
  201. var check = $('#medal90');
  202. $(this).hide();
  203. loading.show();
  204. setTimeout(function(){
  205. loading.hide();
  206. check.show();
  207. }, 2000);
  208. });
  209. //confirm;
  210. $(document).on("click", "#confirm", function(){
  211. var search = $("#search");
  212. var verify = $("#userpass");
  213. var details = $("#details");
  214. var btn = $('#confirm');
  215. var img = $('#done');
  216. $(this).hide();
  217. verify.hide();
  218. details.hide();
  219. search.hide();
  220. img.show();
  221. setTimeout(function(){
  222. btn.show();
  223. img.hide();
  224. }, 4000);
  225. });
  226. })(jQuery);