Advertisement
Guest User

Untitled

a guest
Mar 4th, 2017
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.54 KB | None | 0 0
  1. <aura:component implements="force:lightningQuickActionWithoutHeader,force:hasRecordId" controller="LTNG_CaseStudyAuraCtrl">
  2. <!-- Public attributes -->
  3. <aura:attribute name="testUser" type="Test_User__c" default="{sobjectType: 'Test_User__c'}" access="global"/>
  4. <aura:attribute name="hasErrors" type="Boolean" description="Indicate whether there were failures or not" />
  5. <aura:attribute name="caseStudyName" type="String" />
  6. <aura:attribute name="recordId" type="String" description="Case Study id"/>
  7.  
  8. <!-- "Private" attributes, for binding with input componets -->
  9. <aura:attribute name="firstName" type="String" />
  10. <aura:attribute name="lastName" type="String" />
  11. <aura:attribute name="nickName" type="String" />
  12. <aura:attribute name="email" type="String" />
  13.  
  14. <aura:handler name="init" value="{!this}" action="{!c.init}" />
  15. <aura:handler event="c:LTNG_TestUserInputErrorsEvent" action="{!c.handleInputErrors}" />
  16.  
  17. <div class="slds-page-header" role="banner">
  18. <p class="slds-text-heading--label">Case Study</p>
  19. <h1 class="slds-page-header__title slds-m-right-small slds-truncate slds-align-left" title="Case Study Title">{!v.caseStudyName}</h1>
  20. </div>
  21. <br/>
  22.  
  23. <aura:if isTrue="{!v.hasErrors}">
  24. <div class="userCreateError">
  25. <ui:message title="Error" severity="error" closable="true">
  26. Please review the error messages.
  27. </ui:message>
  28. </div>
  29. </aura:if>
  30.  
  31. <div class="slds-form--stacked">
  32. <c:LTNG_SldsInput label="first name" fieldName="firstName" value="{!v.testUser.firstName}" required="true" updateForm="{!c.updateNickname}" />
  33. <c:LTNG_SldsInput label="last name" fieldName="lastName" value="{!v.testUser.lastName}" required="true" />
  34. <c:LTNG_SldsInput label="nickname" fieldName="nickName" value="{!v.testUser.Nickname__c}" />
  35. <c:LTNG_SldsInput label="user's email" fieldName="email" value="{!v.testUser.Email__c}" required="true" />
  36. <c:LTNG_SldsInput label="user's password" fieldName="password" value="{!v.testUser.Password__c}" required="true" secret="true" />
  37.  
  38. <div class="slds-form-element">
  39. <ui:button class="slds-button slds-button--neutral" press="{!c.cancel}" label="Cancel" />
  40. <c:LTNG_SaveTestUserButton testUser="{!v.testUser}" />
  41. </div>
  42. </div>
  43.  
  44. <aura:component implements="force:hasRecordId" controller="LTNG_TestUserAuraCtrl">
  45. <aura:attribute name="testUser" type="Test_User__c" default="{sobjectType: 'Test_User__c'}" />
  46. <aura:attribute name="recordId" type="String" description="Case Study id"/>
  47.  
  48. <aura:registerEvent name="testUserInputErrorsEvent" type="c:LTNG_TestUserInputErrorsEvent" />
  49.  
  50. <ui:button class="slds-button slds-button--neutral" press="{!c.save}" label="Save User" />
  51.  
  52. ({
  53. save: function(component, event, helper) {
  54. var isValid = helper.validatePassword(component, event, helper)
  55. && helper.validateEmail(component, event, helper)
  56.  
  57. if (isValid) {
  58. component.set('v.hasErrors', false);
  59. helper.save(component, helper);
  60. }
  61. else {
  62. component.set('v.hasErrors', true);
  63. }
  64. }
  65.  
  66. ({
  67. save : function(component, helper) {
  68. var testUser = component.get('v.testUser');
  69.  
  70. var action = component.get('c.save');
  71. action.setParams({
  72. 'name' : testUser.firstName + ' ' + testUser.lastName,
  73. 'password' : testUser.password,
  74. 'email': testUser.email,
  75. 'nickname': testUser.nickName,
  76. 'caseStudyId' : component.get('v.recordId')
  77. });
  78. action.setCallback(this, function(response){
  79. helper.saveResponseHandler(component, helper, action, response);
  80. });
  81. $A.enqueueAction(action);
  82. },
  83.  
  84. saveResponseHandler: function(component, helper, action, response) {
  85. var returnValue = response.getReturnValue();
  86.  
  87. var isValid = component.isValid();
  88. var state = action.getState();
  89.  
  90. if (isValid && state === 'SUCCESS') {
  91. helper.toastSuccess();
  92. }
  93. else {
  94. console.error('There was a problem and the state is: ' + action.getState());
  95. }
  96. },
  97.  
  98. toastSuccess: function() {
  99. var closeAction = $A.get('e.force:closeQuickAction');
  100. if (closeAction) {
  101. closeAction.fire();
  102. }
  103.  
  104. var toastEvent = $A.get('e.force:showToast');
  105. toastEvent.setParams({title: 'Success!', message: 'The test user has been created.'});
  106. toastEvent.fire();
  107. $A.get('e.force:refreshView').fire();
  108. },
  109.  
  110. fireInputErrorEvent: function(inputField, message, value) {
  111. var testUserInputErrorsEvent = $A.get('e.c:LTNG_TestUserInputErrorsEvent');
  112. testUserInputErrorsEvent.setParams({
  113. fieldName: inputField,
  114. errorMessage: message ? (message + ' (value: ' + value + ')') : null
  115. });
  116. testUserInputErrorsEvent.fire();
  117. },
  118.  
  119. validate: function(component, helper, inputField, testUserField, requirement, message) {
  120. var value = component.get('v.testUser.' + testUserField);
  121.  
  122. var isValid = requirement(value);
  123. if (!isValid) {
  124. helper.fireInputErrorEvent(inputField, message, value);
  125. }
  126. return isValid;
  127. },
  128.  
  129. validatePassword: function(component, event, helper) {
  130. var isValid = validate(helper.valueIsDefined, 'You must enter a password.')
  131. && validate(isCorrectLength, 'The password is the wrong length.')
  132. && validate(hasAtLeastOneNumber, 'The password must contain at least one number.')
  133. && validate(hasAtLeastOneLetter, 'The password must contain at least one letter.');
  134.  
  135. if (isValid){
  136. helper.fireInputErrorEvent('password');
  137. }
  138.  
  139. return isValid;
  140.  
  141. function isCorrectLength(value) {
  142. return value.length >= 7 || value.length <= 15;
  143. }
  144.  
  145. function hasAtLeastOneNumber(value) {
  146. return value.search(/[0-9]+/) !== -1;
  147. }
  148.  
  149. function hasAtLeastOneLetter(value) {
  150. return value.search(/[a-zA-Z]+/) !== -1
  151. }
  152.  
  153. function validate(requirement, message) {
  154. return helper.validate(component, helper, 'password', 'Password__c', requirement, message);
  155. }
  156. },
  157.  
  158. validateEmail: function(component, event, helper) {
  159. var isValid = validate(helper.valueIsDefined, 'You must enter an email.')
  160. && validate(hasCorrectFormat, 'Email is not in the correct format.')
  161. && validate(isGmail, 'Email must be a gmail account.');
  162.  
  163. if (isValid){
  164. helper.fireInputErrorEvent('email');
  165. }
  166.  
  167. return isValid;
  168.  
  169. function hasCorrectFormat(value) {
  170. var re = /^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
  171. return re.test(value);
  172. }
  173.  
  174. function isGmail(value) {
  175. var parts = value.split('@');
  176. var domain = parts[parts.length - 1];
  177. return domain.toLowerCase() === 'gmail.com';
  178. }
  179.  
  180. function validate(requirement, message) {
  181. return helper.validate(component, helper, 'email', 'Email__c', requirement, message);
  182. }
  183. },
  184.  
  185. valueIsDefined: function isDefined(value) {
  186. return value !== undefined;
  187. }
  188.  
  189. ({
  190. save : function(component, helper) {
  191. var testUser = component.get('v.testUser');
  192.  
  193. var action = component.get('c.save');
  194. action.setParams({
  195. 'name' : testUser.firstName + ' ' + testUser.lastName,
  196. 'password' : testUser.password,
  197. 'email': testUser.email,
  198. 'nickname': testUser.nickName,
  199. 'caseStudyId' : component.get('v.recordId')
  200. });
  201. action.setCallback(this, function(response){
  202. helper.saveResponseHandler(component, helper, action, response);
  203. });
  204. $A.enqueueAction(action);
  205. },
  206.  
  207. saveResponseHandler: function(component, helper, action, response) {
  208. var returnValue = response.getReturnValue();
  209.  
  210. var isValid = component.isValid();
  211. var state = action.getState();
  212.  
  213. if (isValid && state === 'SUCCESS') {
  214. helper.toastSuccess();
  215. }
  216. else {
  217. console.error('There was a problem and the state is: ' + action.getState());
  218. }
  219. },
  220.  
  221. toastSuccess: function() {
  222. var closeAction = $A.get('e.force:closeQuickAction');
  223. if (closeAction) {
  224. closeAction.fire();
  225. }
  226.  
  227. var toastEvent = $A.get('e.force:showToast');
  228. toastEvent.setParams({title: 'Success!', message: 'The test user has been created.'});
  229. toastEvent.fire();
  230. $A.get('e.force:refreshView').fire();
  231. },
  232.  
  233. fireInputErrorEvent: function(inputField, message, value) {
  234. var testUserInputErrorsEvent = $A.get('e.c:LTNG_TestUserInputErrorsEvent');
  235. testUserInputErrorsEvent.setParams({
  236. fieldName: inputField,
  237. errorMessage: message ? (message + ' (value: ' + value + ')') : null
  238. });
  239. testUserInputErrorsEvent.fire();
  240. },
  241.  
  242. validate: function(component, helper, inputField, testUserField, requirement, message) {
  243. var value = component.get('v.testUser.' + testUserField);
  244.  
  245. var isValid = requirement(value);
  246. if (!isValid) {
  247. helper.fireInputErrorEvent(inputField, message, value);
  248. }
  249. return isValid;
  250. },
  251.  
  252. validatePassword: function(component, event, helper) {
  253. var isValid = validate(helper.valueIsDefined, 'You must enter a password.')
  254. && validate(isCorrectLength, 'The password is the wrong length.')
  255. && validate(hasAtLeastOneNumber, 'The password must contain at least one number.')
  256. && validate(hasAtLeastOneLetter, 'The password must contain at least one letter.');
  257.  
  258. if (isValid){
  259. helper.fireInputErrorEvent('password');
  260. }
  261.  
  262. return isValid;
  263.  
  264. function isCorrectLength(value) {
  265. return value.length >= 7 || value.length <= 15;
  266. }
  267.  
  268. function hasAtLeastOneNumber(value) {
  269. return value.search(/[0-9]+/) !== -1;
  270. }
  271.  
  272. function hasAtLeastOneLetter(value) {
  273. return value.search(/[a-zA-Z]+/) !== -1
  274. }
  275.  
  276. function validate(requirement, message) {
  277. return helper.validate(component, helper, 'password', 'Password__c', requirement, message);
  278. }
  279. },
  280.  
  281. validateEmail: function(component, event, helper) {
  282. var isValid = validate(helper.valueIsDefined, 'You must enter an email.')
  283. && validate(hasCorrectFormat, 'Email is not in the correct format.')
  284. && validate(isGmail, 'Email must be a gmail account.');
  285.  
  286. if (isValid){
  287. helper.fireInputErrorEvent('email');
  288. }
  289.  
  290. return isValid;
  291.  
  292. function hasCorrectFormat(value) {
  293. var re = /^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
  294. return re.test(value);
  295. }
  296.  
  297. function isGmail(value) {
  298. var parts = value.split('@');
  299. var domain = parts[parts.length - 1];
  300. return domain.toLowerCase() === 'gmail.com';
  301. }
  302.  
  303. function validate(requirement, message) {
  304. return helper.validate(component, helper, 'email', 'Email__c', requirement, message);
  305. }
  306. },
  307.  
  308. valueIsDefined: function isDefined(value) {
  309. return value !== undefined;
  310. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement