
public class AccountRecordTypes {
@AuraEnabled
public static Map<String,String> GetAvailableRecordTypeAccount()
{
Map<String,String> recordTypeMap = new Map<String,String>();
Schema.DescribeSObjectResult R = Account.SObjectType.getDescribe();
List<Schema.RecordTypeInfo> RT = R.getRecordTypeInfos();
for(RecordType rec : [SELECT Id, Name, DeveloperName, Description FROM RecordType WHERE SobjectType = 'Account']) {
recordTypeMap.put(rec.Id, rec.Description);
system.debug('recordtype' + recordtypemap);
}
}
return recordTypeMap;
}
}
Helper
Component({
getRecordTypes : function(component,event,helper){
var action = component.get("c.GetAvailableRecordTypeAccount");
action.setCallback(this,function(response){
var state = response.getState();
if(state === "SUCCESS"){
var returning = [];
var recordTypes = response.getReturnValue();
for(var key in recordTypes){
//alert("Record Type Id: "+key+" Name: "+recordTypes[key]);
returning.push({value:recordTypes[key],key:key});
}
component.set("v.availableRecordTypes",returning);
component.set("v.retrievedTypes",true);
}
else{
alert("Temporary Error: There is a problem getting the Record Types.");// Temporary, Will be changed to ToastError.
}
});
$A.enqueueAction(action);
}
<aura:component controller="LightningAccount" implements="lightning:actionOverride,force:lightningQuickAction" access="global">
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<aura:attribute name="availableRecordTypes" type="List" />
<aura:attribute name="recordTypeId" type="String" default=""/>
<aura:attribute name="loading" type="Boolean"/>
<aura:attribute name="retrievedTypes" type="Boolean"/>
<aura:renderIf isTrue="{!v.retrievedTypes}">
<fieldset class="slds-form-element">
<aura:if isTrue="{!v.loading}">
<lightning:spinner variant="brand" size="large" />
</aura:if>
<table>
<tr><td width="25%">
<legend class="slds-form-element__legend slds-form-element__label"><b>Select a Record Type</b></legend></td>
<div class="slds-form-element__control">
<aura:iteration items="{!v.availableRecordTypes}" var="type" indexVar="key">
<span class="slds-radio">
<input id="{!'radio-'+type.value}" value="{!type.value}" name="options" type="radio" onchange="{!c.optionSelected}"/>
<label class="slds-radio__label" for="{!'radio-'+type.value}">
<span class="slds-radio_faux"></span>
<span class="slds-form-element__label"><b>{!type.value}</b></span><br></br>
</label>
</span>
<br></br>
</aura:iteration>
</div>
</tr>
</table>
</fieldset>
</aura:renderIf>
Controller
({
doInit : function(component,event,helper){
helper.getRecordTypes(component,event,helper);
},
optionSelected : function(component,event,helper){
component.set("v.loading",true);
var recordName = event.target.getAttribute("value");
var recordTypes = component.get("v.availableRecordTypes");
for(var i=0;i<recordTypes.length;i++){
if(recordName==recordTypes[i].value){
component.set("v.recordTypeId",recordTypes[i].key);
break;
}
}
}
})
Hi,I trust you are doing very well.Please try the below code, I have made a few changes. I have checked in my org and it is displaying both record type name and description.Component: <aura:component controller="RecordTypeC"
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="availableRecordTypes" type="List" />
<aura:attribute name="recordTypeId" type="String" default=""/>
<aura:attribute name="loading" type="Boolean"/>
<aura:attribute name="retrievedTypes" type="Boolean"/>
<aura:renderIf isTrue="{!v.retrievedTypes}">
<fieldset class="slds-form-element">
<aura:if isTrue="{!v.loading}">
<lightning:spinner variant="brand" size="large" />
</aura:if>
<table>
<tr><td width="25%">
<legend class="slds-form-element__legend slds-form-element__label"><b>Select a Record Type</b></legend></td>
<div class="slds-form-element__control">
<aura:iteration items="{!v.availableRecordTypes}" var="type" indexVar="key">
<span class="slds-radio">
<input id="{!'radio-'+type.value}" value="{!type.value}" name="options" type="radio" onchange="{!c.optionSelected}"/>
<label class="slds-radio__label" for="{!'radio-'+type.value}">
<span class="slds-radio_faux"></span>
<span class="slds-form-element__label"><b>{!type.name}</b></span><br></br>
<div class="slds-p-left_xx-large">
<span class="slds-form-element__label"><b>{!type.value}</b></span><br></br>
</div>
</label>
</span>
<br></br>
</aura:iteration>
</div>
</tr>
</table>
</fieldset>
</aura:renderIf>
</aura:component>
Controller:
({
doInit : function(component,event,helper){
helper.getRecordTypes(component,event,helper);
},
optionSelected : function(component,event,helper){
component.set("v.loading",true);
var recordName = event.target.getAttribute("value");
var recordTypes = component.get("v.availableRecordTypes");
for(var i=0;i<recordTypes.length;i++){
if(recordName==recordTypes[i].value){
component.set("v.recordTypeId",recordTypes[i].key);
break;
}
}
}
})
Helper:
({
getRecordTypes : function(component,event,helper){
var action = component.get("c.GetAvailableRecordTypeAccount");
action.setCallback(this,function(response){
var state = response.getState();
if(state === "SUCCESS"){
var returning = [];
var recordTypes = response.getReturnValue();
console.log('recordTypes -> ' + JSON.stringify(recordTypes));
for(var key in recordTypes){
//alert("Record Type Name: " + recordTypes[key]);
returning.push({value:recordTypes[key],
name:key});
}
console.log('returning -> ' + JSON.stringify(returning));
component.set("v.availableRecordTypes",returning);
component.set("v.retrievedTypes",true);
}
else{
alert("Temporary Error: There is a problem getting the Record Types.");// Temporary, Will be changed to ToastError.
}
});
$A.enqueueAction(action);
}
})
Apex:
I hope it helps you.Kindly let me know if it helps you and close your query by marking it as solved so that it can help others in future.public class RecordTypeC {
@AuraEnabled
public static Map<String,String> GetAvailableRecordTypeAccount()
{
Map<String,String> recordTypeMap = new Map<String,String>();
Schema.DescribeSObjectResult R = Account.SObjectType.getDescribe();
List<Schema.RecordTypeInfo> RT = R.getRecordTypeInfos();
for(RecordType rec : [SELECT Id, Name, DeveloperName, Description FROM RecordType WHERE SobjectType = 'Account']) {
recordTypeMap.put(rec.Name, rec.Description);
system.debug('recordtype' + recordtypemap);
}
return recordTypeMap;
}
}
Thanks and Regards,
Khan Anas