Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.76 KB | None | 0 0
  1. <aura:component controller="fetchContactDetails" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId" access="global" >
  2.  
  3. <aura:attribute name="Tasklist" type="Task[]" />
  4. <aura:attribute name="mycolumns" type="List"/>
  5.  
  6. <aura:attribute name="sortedBy" type="String" default="Name"/>
  7. <aura:attribute name="sortedDirection" type="String" default="asc"/>
  8.  
  9. <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
  10. <aura:handler event="force:refreshView" action="{!c.doInit}" />
  11. <aura:handler event="force:refreshView" action="{!c.isRefreshed}" />
  12.  
  13.  
  14. <aura:attribute name="isSending" type="boolean" />
  15.  
  16. <!-- Attribute Declration For Pagination -->
  17. <aura:attribute name="PaginationList" type="Contact"/>
  18. <aura:attribute name="startPage" type="Integer" />
  19. <aura:attribute name="endPage" type="Integer"/>
  20. <aura:attribute name="totalRecords" type="Integer"/>
  21. <aura:attribute name="pageSize" type="Integer" default="10"/>
  22. <!-- Attribute Declration For Pagination End-->
  23.  
  24.  
  25.  
  26.  
  27. <div class="slds-scrollable_y" style="height: 30rem; width: 55rem;">
  28. <lightning:datatable
  29. data="{! v.PaginationList }"
  30. class="slds-m-top_medium"
  31. columns="{! v.mycolumns }"
  32. keyField="id"
  33. hideCheckboxColumn="true"
  34. onsort="{!c.updateColumnSorting}"
  35. sortedBy="{!v.sortedBy}"
  36. sortedDirection="{!v.sortedDirection}"
  37. onrowaction="{!c.EditRecord}"
  38. onrowselection="{! c.getSelectedName }"/>
  39. </div>
  40. <div class="slds-m-top_medium" >
  41. <lightning:buttonGroup >
  42. <lightning:button label="Previous" disabled="{!v.startPage == 0}"
  43. onclick="{!c.previous}" variant="brand"
  44. iconName='utility:back'/>
  45. &nbsp; &nbsp; &nbsp;
  46. <lightning:button label="Next" disabled="{!v.endPage >= v.totalRecords}"
  47. onclick="{!c.next}" variant="brand"
  48. iconName='utility:forward' iconPosition='right'/>
  49. </lightning:buttonGroup>
  50. </div>
  51.  
  52. controller.js:
  53. ({
  54. doInit : function(component, event, helper) {
  55.  
  56. component.set("v.mycolumns",[
  57. {type: "button" , typeAttributes: {
  58. label: 'Edit',
  59. name: 'Edit',
  60. title: 'Edit',
  61. disabled: false,
  62. value: 'edit',
  63. iconPosition: 'left'
  64. }},
  65.  
  66. {label: 'Priority', fieldName: 'Priority', type: 'list',sortable: true },
  67. {label: 'Status', fieldName: 'Status', type: 'list',sortable: true },
  68. {label: 'Subject', fieldName: 'Subject', type: 'string',sortable: true,
  69. cellAttributes: { class: { fieldName: 'Priority' } }},
  70. {label: 'Createddate', fieldName: 'CreatedDate', type: 'Date',sortable: true},
  71. {label: 'Owner Name', fieldName: 'OwnerName', type: 'String',sortable: true},
  72. ] );
  73.  
  74. var action = component.get("c.fetchTasklist");
  75.  
  76. /* It should be outside the callback and before the enqueue method call, and no need to do this if there is no parameter to pass.*/
  77. action.setParams({});
  78.  
  79. action.setCallback(this, function(response){
  80. var pageSize = component.get("v.pageSize");
  81. console.log('action called');
  82. var state = response.getState();
  83. if (state === "SUCCESS") {
  84. var taskList = response.getReturnValue();
  85. console.log('taskList -- > '+taskList);
  86.  
  87. taskList.forEach(function(task){
  88.  
  89.  
  90. console.log('for each -- > ');
  91. try{
  92. for(var propName in task) {
  93. var propValue = task[propName];
  94. console.log(propName,propValue);
  95.  
  96. }
  97. console.log('owner -- > '+task['Owner']['Name']);
  98.  
  99. task['OwnerName'] = task['Owner']['Name'];
  100. console.log('Phone -- > '+task['Who']['Phone']);
  101. }catch(e){}
  102. });
  103. component.set("v.Tasklist", taskList);
  104.  
  105. component.set("v.totalRecords", component.get("v.Tasklist").length);
  106. // set star as 0
  107. component.set("v.startPage",0);
  108.  
  109. component.set("v.endPage",pageSize-1);
  110. var PaginationList = [];
  111. for(var i=0; i< pageSize; i++){
  112. if(component.get("v.Tasklist").length> i)
  113. PaginationList.push(response.getReturnValue()[i]);
  114. }
  115. component.set('v.PaginationList', PaginationList);
  116. component.set('v.isSending',false);
  117.  
  118.  
  119. helper.sortData(component, component.get("v.sortedBy"),
  120. component.get("v.sortedDirection"));
  121.  
  122. }
  123.  
  124.  
  125.  
  126. });
  127. $A.enqueueAction(action);
  128.  
  129. },
  130. updateColumnSorting: function (cmp, event, helper) {
  131. var fieldName = event.getParam('fieldName');
  132. var sortDirection = event.getParam('sortDirection');
  133. cmp.set("v.sortedBy", fieldName);
  134. cmp.set("v.sortedDirection", sortDirection);
  135. helper.sortData(cmp, fieldName, sortDirection);
  136. },
  137.  
  138. navigateUrl : function (component, event, helper) {
  139. var urlEvent = $A.get("e.force:navigateToURL");
  140. urlEvent.setParams({
  141. "url": "/lightning/page/home"
  142. });
  143. urlEvent.fire();
  144. },
  145. EditRecord : function(component, event, helper) {
  146.  
  147. var recId = event.getParam('row').Id;
  148. var actionName = event.getParam('action').name;
  149. if ( actionName == 'Edit' ) {
  150. var editRecordEvent = $A.get("e.force:editRecord");
  151. editRecordEvent.setParams({
  152. "recordId": recId
  153. });
  154. console.log("recid",recId);
  155. editRecordEvent.fire();
  156. }
  157. recId= window.location.href = '/';
  158. },
  159.  
  160.  
  161.  
  162. save : function(component, event) {
  163. var action = component.get("c.fetchTasklist");
  164. action.setCallback(this, function(action) {
  165. $A.get('e.force:refreshView').fire();
  166. });
  167. $A.enqueueAction(action);
  168. },
  169.  
  170. getSelectedName: function (component, event) {
  171. var selectedRows = event.getParam('selectedRows');
  172. // Display that fieldName of the selected rows
  173. for (var i = 0; i < selectedRows.length; i++){
  174. //alert("You selected: " + selectedRows[i].Name);
  175. }
  176. },
  177. next: function (component, event, helper) {
  178. helper.next(component, event);
  179. },
  180. previous: function (component, event, helper) {
  181. helper.previous(component, event);
  182. },
  183. isRefreshed: function(component, event, helper) {
  184. location.reload();
  185. }
  186.  
  187. })
  188.  
  189. helper.js:
  190. ({
  191. sortData: function (cmp, fieldName, sortDirection) {
  192. var data = cmp.get("v.Tasklist");
  193. var reverse = sortDirection !== 'asc';
  194. data.sort(this.sortBy(fieldName, reverse))
  195. cmp.set("v.Tasklist", data);
  196. },
  197. sortBy: function (field, reverse, primer) {
  198. var key = primer ?
  199. function(x) {return primer(x[field])} :
  200. function(x) {return x[field]};
  201. reverse = !reverse ? 1 : -1;
  202. return function (a, b) {
  203. return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
  204. }
  205. },
  206.  
  207.  
  208. next : function(component, event){
  209. var sObjectList = component.get("v.Tasklist");
  210. var end = component.get("v.endPage");
  211. var start = component.get("v.startPage");
  212. var pageSize = component.get("v.pageSize");
  213. var Paginationlist = [];
  214. var counter = 0;
  215. for(var i=end+1; i<end+pageSize+1; i++){
  216. if(sObjectList.length > i){
  217. Paginationlist.push(sObjectList[i]);
  218. }
  219. counter ++ ;
  220. }
  221. start = start + counter;
  222. end = end + counter;
  223. component.set("v.startPage",start);
  224. component.set("v.endPage",end);
  225. component.set('v.PaginationList', Paginationlist);
  226. },
  227.  
  228. previous : function(component, event){
  229. var sObjectList = component.get("v.Tasklist");
  230. var end = component.get("v.endPage");
  231. var start = component.get("v.startPage");
  232. var pageSize = component.get("v.pageSize");
  233. var Paginationlist = [];
  234. var counter = 0;
  235. for(var i= start-pageSize; i < start ; i++){
  236. if(i > -1){
  237. Paginationlist.push(sObjectList[i]);
  238. counter ++;
  239. }else{
  240. start++;
  241. }
  242. }
  243. start = start - counter;
  244. end = end - counter;
  245. component.set("v.startPage",start);
  246. component.set("v.endPage",end);
  247. component.set('v.PaginationList', Paginationlist);
  248. },
  249. })
  250.  
  251. [![enter image description here][1]][1]@AuraEnabled
  252.  
  253. Public static List<Task> fetchTasklist(){
  254.  
  255. List<Task> Tasklist =[select Subject,Who.Email,Who.Phone,CreatedBy.Name,OwnerId, Priority,Owner.Name,Status,Createddate from Task ];
  256. return Tasklist;
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement