Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.97 KB | None | 0 0
  1. var GMCS = GMCS || {}
  2. GMCS.FieldValidation = {
  3. ControlsWithRules: {},
  4. Init: function () {
  5. if (Xrm.Page.data.process) {
  6. Xrm.Page.data.process.addOnStageSelected(this.ApplyRules)
  7. Xrm.Page.data.process.addOnStageChange(this.ApplyRules)
  8. }
  9. this.ApplyRules()
  10. },
  11. ApplyRules: function() {
  12. var rules = GMCS.FieldValidationRules;
  13. if (!rules)
  14. return;
  15. try {
  16. Object.keys(rules).forEach(function (attributeName) {
  17. var attribute = Xrm.Page.getAttribute(attributeName)
  18. if (attribute && attribute.controls) {
  19. attribute.controls.forEach(function (control) {
  20. var controlName = control.getName();
  21. if (!GMCS.FieldValidation.ControlsWithRules[controlName]) {
  22. GMCS.FieldValidation.ApplyRule(controlName, rules[attributeName])
  23. GMCS.FieldValidation.ControlsWithRules[controlName] = true
  24. }
  25. })
  26. }
  27. })
  28. } catch (e) {
  29. console.error(e)
  30. }
  31. },
  32. ApplyRule: function (fieldName, rule) {
  33. var mask = GMCS.Conf.ValidationMasks[rule.maskName]
  34. var control = Xrm.Page.getControl(fieldName);
  35. var input = GMCS.FieldValidation.GetInput(fieldName)//$('#{0}_i'.format(fieldName))
  36. var maskSettings = mask.mask !== "email"
  37. ?
  38. {
  39. alias: mask.regex ? 'Regex' : undefined,
  40. regex: mask.regex,
  41. mask: mask.mask,
  42. greedy: !mask.nonGreedy,
  43. onincomplete: function() {
  44. if (input.inputmask('unmaskedvalue'))
  45. control.setNotification(rule.message, 'incomplete')
  46. else
  47. control.clearNotification('incomplete')
  48. },
  49. oncomplete: function() {
  50. control.clearNotification('incomplete')
  51. }
  52. }
  53. :
  54. mask.mask;
  55. if (!mask.unfocusedMask) {
  56. input.inputmask(maskSettings)
  57. }
  58. input.focus(function (e) {
  59. if (e.isTrigger && mask.unfocusedMask) {
  60. var value = input.val()
  61. input.val(Inputmask.unmask(input.val(), Inputmask.isValid(value, mask.unfocusedMask) ? mask.unfocusedMask : mask.mask)) //if not valid than value is not complete and partly masked
  62. setTimeout(function () {
  63. input.inputmask(maskSettings)
  64. }, 0)
  65. }
  66. })
  67. input.blur(function () {
  68. var attribute = control.getAttribute()
  69. var value = $(this).val()
  70. attribute.setValue(value) // otherwise attributeValue is not updated on standard forms
  71. setTimeout(function () {
  72. if (mask.unfocusedMask && input.inputmask('isComplete')) {
  73. input.inputmask('remove')
  74. var newValue = Inputmask.format(input.val(), mask.unfocusedMask)
  75. if (Inputmask.isValid(newValue, mask.unfocusedMask))
  76. attribute.setValue(newValue);
  77. }
  78. if (mask.converter && GMCS.FieldValidation.Converters[mask.converter]) {
  79. attribute.setValue(GMCS.FieldValidation.Converters[mask.converter](value))
  80. }
  81. }, 0)
  82. })
  83. },
  84. GetInput: function (fieldName) {
  85. return $(":input#{0}_i".format(fieldName)).val() != undefined ? $(":input#{0}_i".format(fieldName)) : $(":input#{0}".format(fieldName));
  86. },
  87. Converters: {
  88. "capitalize": function (value) {
  89. if (value != null) {
  90. value = value.endsWith("-") ? value.substring(0, value.length - 1) : value
  91. return value.split('-').map(function(part) {
  92. if (part != null && part != "")
  93. return part[0].toUpperCase() + part.substring(1)
  94. }).join('-')
  95. }
  96. },
  97. "phone": function(value) {
  98. return value.replace(/[^+\d]/g, '')
  99. }
  100. },
  101.  
  102. //public
  103. ChangeMask: function(fieldName, maskName, message) {
  104. var rule = GMCS.FieldValidationRules[fieldName];
  105. if (!rule)
  106. return;
  107. rule.maskName = maskName;
  108. rule.message = message;
  109. Xrm.Page.getAttribute(fieldName).controls.forEach(function(control) {
  110. if (!Inputmask.isValid(control.getAttribute().getValue(), GMCS.Conf.ValidationMasks[rule.maskName].mask))
  111. control.getAttribute().setValue(null)
  112. GMCS.FieldValidation.ApplyRule(control.getName(), rule)
  113. })
  114. },
  115.  
  116. RemoveMask: function(fieldName) {
  117. Xrm.Page.getAttribute(fieldName).controls.forEach(function (control) {
  118. GMCS.FieldValidation.GetInput(control.getName()).inputmask('remove')
  119. })
  120. }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement