Guest User

Untitled

a guest
Jul 15th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.64 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. </aura:component>
  44.  
  45. <aura:component implements="force:hasRecordId" controller="LTNG_TestUserAuraCtrl">
  46. <aura:attribute name="testUser" type="Test_User__c" default="{sobjectType: 'Test_User__c'}" />
  47. <aura:attribute name="recordId" type="String" description="Case Study id"/>
  48.  
  49. <aura:registerEvent name="testUserInputErrorsEvent" type="c:LTNG_TestUserInputErrorsEvent" />
  50.  
  51. <ui:button class="slds-button slds-button--neutral" press="{!c.save}" label="Save User" />
  52.  
  53. ({
  54. save: function(component, event, helper) {
  55. var isValid = helper.validatePassword(component, event, helper)
  56. && helper.validateEmail(component, event, helper)
  57.  
  58. if (isValid) {
  59. component.set('v.hasErrors', false);
  60. helper.save(component, helper);
  61. }
  62. else {
  63. component.set('v.hasErrors', true);
  64. }
  65. }
  66. })
  67.  
  68. ({
  69. save : function(component, helper) {
  70. var testUser = component.get('v.testUser');
  71.  
  72. var action = component.get('c.save');
  73. action.setParams({
  74. 'name' : testUser.firstName + ' ' + testUser.lastName,
  75. 'password' : testUser.password,
  76. 'email': testUser.email,
  77. 'nickname': testUser.nickName,
  78. 'caseStudyId' : component.get('v.recordId')
  79. });
  80. action.setCallback(this, function(response){
  81. helper.saveResponseHandler(component, helper, action, response);
  82. });
  83. $A.enqueueAction(action);
  84. },
  85.  
  86. saveResponseHandler: function(component, helper, action, response) {
  87. var returnValue = response.getReturnValue();
  88.  
  89. var isValid = component.isValid();
  90. var state = action.getState();
  91.  
  92. if (isValid && state === 'SUCCESS') {
  93. helper.toastSuccess();
  94. }
  95. else {
  96. console.error('There was a problem and the state is: ' + action.getState());
  97. }
  98. },
  99.  
  100. toastSuccess: function() {
  101. var closeAction = $A.get('e.force:closeQuickAction');
  102. if (closeAction) {
  103. closeAction.fire();
  104. }
  105.  
  106. var toastEvent = $A.get('e.force:showToast');
  107. toastEvent.setParams({title: 'Success!', message: 'The test user has been created.'});
  108. toastEvent.fire();
  109. $A.get('e.force:refreshView').fire();
  110. },
  111.  
  112. fireInputErrorEvent: function(inputField, message, value) {
  113. var testUserInputErrorsEvent = $A.get('e.c:LTNG_TestUserInputErrorsEvent');
  114. testUserInputErrorsEvent.setParams({
  115. fieldName: inputField,
  116. errorMessage: message ? (message + ' (value: ' + value + ')') : null
  117. });
  118. testUserInputErrorsEvent.fire();
  119. },
  120.  
  121. validate: function(component, helper, inputField, testUserField, requirement, message) {
  122. var value = component.get('v.testUser.' + testUserField);
  123.  
  124. var isValid = requirement(value);
  125. if (!isValid) {
  126. helper.fireInputErrorEvent(inputField, message, value);
  127. }
  128. return isValid;
  129. },
  130.  
  131. validatePassword: function(component, event, helper) {
  132. var isValid = validate(helper.valueIsDefined, 'You must enter a password.')
  133. && validate(isCorrectLength, 'The password is the wrong length.')
  134. && validate(hasAtLeastOneNumber, 'The password must contain at least one number.')
  135. && validate(hasAtLeastOneLetter, 'The password must contain at least one letter.');
  136.  
  137. if (isValid){
  138. helper.fireInputErrorEvent('password');
  139. }
  140.  
  141. return isValid;
  142.  
  143. function isCorrectLength(value) {
  144. return value.length >= 7 || value.length <= 15;
  145. }
  146.  
  147. function hasAtLeastOneNumber(value) {
  148. return value.search(/[0-9]+/) !== -1;
  149. }
  150.  
  151. function hasAtLeastOneLetter(value) {
  152. return value.search(/[a-zA-Z]+/) !== -1
  153. }
  154.  
  155. function validate(requirement, message) {
  156. return helper.validate(component, helper, 'password', 'Password__c', requirement, message);
  157. }
  158. },
  159.  
  160. validateEmail: function(component, event, helper) {
  161. var isValid = validate(helper.valueIsDefined, 'You must enter an email.')
  162. && validate(hasCorrectFormat, 'Email is not in the correct format.')
  163. && validate(isGmail, 'Email must be a gmail account.');
  164.  
  165. if (isValid){
  166. helper.fireInputErrorEvent('email');
  167. }
  168.  
  169. return isValid;
  170.  
  171. function hasCorrectFormat(value) {
  172. 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,}))$/;
  173. return re.test(value);
  174. }
  175.  
  176. function isGmail(value) {
  177. var parts = value.split('@');
  178. var domain = parts[parts.length - 1];
  179. return domain.toLowerCase() === 'gmail.com';
  180. }
  181.  
  182. function validate(requirement, message) {
  183. return helper.validate(component, helper, 'email', 'Email__c', requirement, message);
  184. }
  185. },
  186.  
  187. valueIsDefined: function isDefined(value) {
  188. return value !== undefined;
  189. }
  190. })
  191.  
  192. ({
  193. save : function(component, helper) {
  194. var testUser = component.get('v.testUser');
  195.  
  196. var action = component.get('c.save');
  197. action.setParams({
  198. 'name' : testUser.firstName + ' ' + testUser.lastName,
  199. 'password' : testUser.password,
  200. 'email': testUser.email,
  201. 'nickname': testUser.nickName,
  202. 'caseStudyId' : component.get('v.recordId')
  203. });
  204. action.setCallback(this, function(response){
  205. helper.saveResponseHandler(component, helper, action, response);
  206. });
  207. $A.enqueueAction(action);
  208. },
  209.  
  210. saveResponseHandler: function(component, helper, action, response) {
  211. var returnValue = response.getReturnValue();
  212.  
  213. var isValid = component.isValid();
  214. var state = action.getState();
  215.  
  216. if (isValid && state === 'SUCCESS') {
  217. helper.toastSuccess();
  218. }
  219. else {
  220. console.error('There was a problem and the state is: ' + action.getState());
  221. }
  222. },
  223.  
  224. toastSuccess: function() {
  225. var closeAction = $A.get('e.force:closeQuickAction');
  226. if (closeAction) {
  227. closeAction.fire();
  228. }
  229.  
  230. var toastEvent = $A.get('e.force:showToast');
  231. toastEvent.setParams({title: 'Success!', message: 'The test user has been created.'});
  232. toastEvent.fire();
  233. $A.get('e.force:refreshView').fire();
  234. },
  235.  
  236. fireInputErrorEvent: function(inputField, message, value) {
  237. var testUserInputErrorsEvent = $A.get('e.c:LTNG_TestUserInputErrorsEvent');
  238. testUserInputErrorsEvent.setParams({
  239. fieldName: inputField,
  240. errorMessage: message ? (message + ' (value: ' + value + ')') : null
  241. });
  242. testUserInputErrorsEvent.fire();
  243. },
  244.  
  245. validate: function(component, helper, inputField, testUserField, requirement, message) {
  246. var value = component.get('v.testUser.' + testUserField);
  247.  
  248. var isValid = requirement(value);
  249. if (!isValid) {
  250. helper.fireInputErrorEvent(inputField, message, value);
  251. }
  252. return isValid;
  253. },
  254.  
  255. validatePassword: function(component, event, helper) {
  256. var isValid = validate(helper.valueIsDefined, 'You must enter a password.')
  257. && validate(isCorrectLength, 'The password is the wrong length.')
  258. && validate(hasAtLeastOneNumber, 'The password must contain at least one number.')
  259. && validate(hasAtLeastOneLetter, 'The password must contain at least one letter.');
  260.  
  261. if (isValid){
  262. helper.fireInputErrorEvent('password');
  263. }
  264.  
  265. return isValid;
  266.  
  267. function isCorrectLength(value) {
  268. return value.length >= 7 || value.length <= 15;
  269. }
  270.  
  271. function hasAtLeastOneNumber(value) {
  272. return value.search(/[0-9]+/) !== -1;
  273. }
  274.  
  275. function hasAtLeastOneLetter(value) {
  276. return value.search(/[a-zA-Z]+/) !== -1
  277. }
  278.  
  279. function validate(requirement, message) {
  280. return helper.validate(component, helper, 'password', 'Password__c', requirement, message);
  281. }
  282. },
  283.  
  284. validateEmail: function(component, event, helper) {
  285. var isValid = validate(helper.valueIsDefined, 'You must enter an email.')
  286. && validate(hasCorrectFormat, 'Email is not in the correct format.')
  287. && validate(isGmail, 'Email must be a gmail account.');
  288.  
  289. if (isValid){
  290. helper.fireInputErrorEvent('email');
  291. }
  292.  
  293. return isValid;
  294.  
  295. function hasCorrectFormat(value) {
  296. 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,}))$/;
  297. return re.test(value);
  298. }
  299.  
  300. function isGmail(value) {
  301. var parts = value.split('@');
  302. var domain = parts[parts.length - 1];
  303. return domain.toLowerCase() === 'gmail.com';
  304. }
  305.  
  306. function validate(requirement, message) {
  307. return helper.validate(component, helper, 'email', 'Email__c', requirement, message);
  308. }
  309. },
  310.  
  311. valueIsDefined: function isDefined(value) {
  312. return value !== undefined;
  313. }
  314. })
  315.  
  316. save : function(component, helper) {
  317. var testUser = component.get('v.testUser');
  318.  
  319. var action = component.get('c.serverSave');
Add Comment
Please, Sign In to add comment