Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- account1
- >contact1
- >Contact 2
- account 2
- >contact 3
- >contact 4
- <aura:component controller="TreeController" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" access="global" >
- <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
- <aura:attribute name="data" type="List" default="[]"/>
- <lightning:tree header="Accounts" class="slds-is-selected" items="{!v.data}" onselect="{!c.handleSelect}"/>
- </aura:component>
- ({
- doInit : function(component, event, helper) {
- console.log("Going here");
- var action = component.get("c.getAccountList");
- action.setParams({ accountId : component.get("v.recordId")});
- //action.setCallback(this, result => helper.parse(component, result));
- action.setCallback(this, function(response) {
- var state = response.getState();
- console.log('state'+state);
- console.log('response'+JSON.stringify(response.getReturnValue()));
- if (state === "SUCCESS") {
- var result = response.getReturnValue();
- helper.parse(component, result);
- console.log('result----'+JSON.stringify(result));
- }
- });
- $A.enqueueAction(action);
- },
- handleSelect: function (component, event, helper) {
- //return name of selected tree item
- var myName = event.getParam('name');
- alert("You selected: " + myName);
- }
- })
- ({
- parse: function(component, result) {
- var accounts = result;
- console.log('accounts'+JSON.stringify(accounts));
- var parents = { undefined: { items: [] }};
- var parentcontact = { undefined: { items: [] }};
- console.log('parentsA'+JSON.stringify(parents));
- accounts.forEach(account => parents[account.Id] = { items: [], name: account.Id, label:account.Name, expanded: false});
- console.log('parentsB'+JSON.stringify(parents));
- accounts.forEach(account => { if(account.Contacts) { account.Contacts.forEach(contact => parents[account.Id].items.push(parentcontact[contact.Id] = { items: [], name: contact.Id, label:contact.Name, expanded: false}))}});
- console.log('parentsC'+JSON.stringify(parents));
- accounts.forEach(account => { if(account.Contacts) { account.Contacts.forEach(contact => parents[account.Id].items.push( parentcontact[contact.parentId__c].items.push(parentcontact[contact.Id])))}});
- //account.Contacts.forEach(contact =>parentcontact[contact.parentId__c].items.push(parentcontact[contact.Id] ));
- console.log('parentsD'+JSON.stringify(parents));
- accounts.forEach(account => parents[account.ImmediateParent__c].items.push(parents[account.Id]));
- console.log('parentscontact'+JSON.stringify(parentcontact));
- console.log('parentsE'+JSON.stringify(parents[undefined].items));
- component.set("v.data",parents[undefined].items);
- }
- })
- @AuraEnabled
- public static List<Account> getAccountList(Id accountId) {
- List<Account> finalvalue = new List<Account>();
- for(Account accA : [ Select Id, Name,(SELECT Id,Contact.Name,parentId__c, Phone FROM contacts),ParentId,ImmediateChildFlag__c,ImmediateParent__c,ImmediateParent__r.Name From Account Where ParentId =: accountId or Name LIKE'TreeAccount%']) {
- finalvalue.add(accA);
- }
- System.debug('finalvalue:::' + finalvalue);
- return finalvalue;
- }
Add Comment
Please, Sign In to add comment