PageRenderTime 40ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/angular/content/assets/pages/scripts/components-form-tools.js

https://gitlab.com/worksmit/demo
JavaScript | 202 lines | 158 code | 37 blank | 7 comment | 11 complexity | 6cc7d4edf17f30b2da3f5c54fe6d9fc6 MD5 | raw file
  1. var ComponentsFormTools = function () {
  2. var handleBootstrapMaxlength = function() {
  3. $('#maxlength_defaultconfig').maxlength({
  4. limitReachedClass: "label label-danger",
  5. })
  6. $('#maxlength_thresholdconfig').maxlength({
  7. limitReachedClass: "label label-danger",
  8. threshold: 20
  9. });
  10. $('#maxlength_alloptions').maxlength({
  11. alwaysShow: true,
  12. warningClass: "label label-success",
  13. limitReachedClass: "label label-danger",
  14. separator: ' out of ',
  15. preText: 'You typed ',
  16. postText: ' chars available.',
  17. validate: true
  18. });
  19. $('#maxlength_textarea').maxlength({
  20. limitReachedClass: "label label-danger",
  21. alwaysShow: true
  22. });
  23. $('#maxlength_placement').maxlength({
  24. limitReachedClass: "label label-danger",
  25. alwaysShow: true,
  26. placement: App.isRTL() ? 'top-right' : 'top-left'
  27. });
  28. }
  29. var handlePasswordStrengthChecker = function () {
  30. var initialized = false;
  31. var input = $("#password_strength");
  32. input.keydown(function () {
  33. if (initialized === false) {
  34. // set base options
  35. input.pwstrength({
  36. raisePower: 1.4,
  37. minChar: 8,
  38. verdicts: ["Weak", "Normal", "Medium", "Strong", "Very Strong"],
  39. scores: [17, 26, 40, 50, 60]
  40. });
  41. // add your own rule to calculate the password strength
  42. input.pwstrength("addRule", "demoRule", function (options, word, score) {
  43. return word.match(/[a-z].[0-9]/) && score;
  44. }, 10, true);
  45. // set as initialized
  46. initialized = true;
  47. }
  48. });
  49. }
  50. var handleUsernameAvailabilityChecker1 = function () {
  51. var input = $("#username1_input");
  52. $("#username1_checker").click(function (e) {
  53. var pop = $(this);
  54. if (input.val() === "") {
  55. input.closest('.form-group').removeClass('has-success').addClass('has-error');
  56. pop.popover('destroy');
  57. pop.popover({
  58. 'placement': (App.isRTL() ? 'left' : 'right'),
  59. 'html': true,
  60. 'container': 'body',
  61. 'content': 'Please enter a username to check its availability.',
  62. });
  63. // add error class to the popover
  64. pop.data('bs.popover').tip().addClass('error');
  65. // set last poped popover to be closed on click(see App.js => handlePopovers function)
  66. App.setLastPopedPopover(pop);
  67. pop.popover('show');
  68. e.stopPropagation(); // prevent closing the popover
  69. return;
  70. }
  71. var btn = $(this);
  72. btn.attr('disabled', true);
  73. input.attr("readonly", true).
  74. attr("disabled", true).
  75. addClass("spinner");
  76. $.post('../demo/username_checker.php', {
  77. username: input.val()
  78. }, function (res) {
  79. btn.attr('disabled', false);
  80. input.attr("readonly", false).
  81. attr("disabled", false).
  82. removeClass("spinner");
  83. if (res.status == 'OK') {
  84. input.closest('.form-group').removeClass('has-error').addClass('has-success');
  85. pop.popover('destroy');
  86. pop.popover({
  87. 'html': true,
  88. 'placement': (App.isRTL() ? 'left' : 'right'),
  89. 'container': 'body',
  90. 'content': res.message,
  91. });
  92. pop.popover('show');
  93. pop.data('bs.popover').tip().removeClass('error').addClass('success');
  94. } else {
  95. input.closest('.form-group').removeClass('has-success').addClass('has-error');
  96. pop.popover('destroy');
  97. pop.popover({
  98. 'html': true,
  99. 'placement': (App.isRTL() ? 'left' : 'right'),
  100. 'container': 'body',
  101. 'content': res.message,
  102. });
  103. pop.popover('show');
  104. pop.data('bs.popover').tip().removeClass('success').addClass('error');
  105. App.setLastPopedPopover(pop);
  106. }
  107. }, 'json');
  108. });
  109. }
  110. var handleUsernameAvailabilityChecker2 = function () {
  111. $("#username2_input").change(function () {
  112. var input = $(this);
  113. if (input.val() === "") {
  114. input.closest('.form-group').removeClass('has-error').removeClass('has-success');
  115. $('.fa-check, fa-warning', input.closest('.form-group')).remove();
  116. return;
  117. }
  118. input.attr("readonly", true).
  119. attr("disabled", true).
  120. addClass("spinner");
  121. $.post('../demo/username_checker.php', {
  122. username: input.val()
  123. }, function (res) {
  124. input.attr("readonly", false).
  125. attr("disabled", false).
  126. removeClass("spinner");
  127. // change popover font color based on the result
  128. if (res.status == 'OK') {
  129. input.closest('.form-group').removeClass('has-error').addClass('has-success');
  130. $('.fa-warning', input.closest('.form-group')).remove();
  131. input.before('<i class="fa fa-check"></i>');
  132. input.data('bs.popover').tip().removeClass('error').addClass('success');
  133. } else {
  134. input.closest('.form-group').removeClass('has-success').addClass('has-error');
  135. $('.fa-check', input.closest('.form-group')).remove();
  136. input.before('<i class="fa fa-warning"></i>');
  137. input.popover('destroy');
  138. input.popover({
  139. 'html': true,
  140. 'placement': (App.isRTL() ? 'left' : 'right'),
  141. 'container': 'body',
  142. 'content': res.message,
  143. });
  144. input.popover('show');
  145. input.data('bs.popover').tip().removeClass('success').addClass('error');
  146. App.setLastPopedPopover(input);
  147. }
  148. }, 'json');
  149. });
  150. }
  151. return {
  152. //main function to initiate the module
  153. init: function () {
  154. handleBootstrapMaxlength();
  155. handlePasswordStrengthChecker();
  156. handleUsernameAvailabilityChecker1();
  157. handleUsernameAvailabilityChecker2();
  158. }
  159. };
  160. }();
  161. if (App.isAngularJsApp() === false) {
  162. jQuery(document).ready(function() {
  163. ComponentsFormTools.init(); // init metronic core componets
  164. });
  165. }