Topics to learn-
1. How to populate picklist values in a field.
2. How to use modal to show popup
3. Use of slds-backdrop class
4. How to use LDS (lightning data service) to create/edit a record.
{!item}
{!item}
1. How to populate picklist values in a field.
2. How to use modal to show popup
3. Use of slds-backdrop class
4. How to use LDS (lightning data service) to create/edit a record.
Please refer the below code to learn the above topics-
PropertyDialog.cmp
<force:recordData aura:id="forceRecord"
recordId=”{!v.recordId}”
targetFields=”{!v.propertyRecord}”
fields=”Id,Name,Beds__c,Baths__c,Price__c,Status__c”
mode=”EDIT” />
{!v.modalContext} Record
{!item}
{!item}
PropertyDialogController.js
({
doInit : function(component, event, helper) {
var recId = component.get(“v.recordId”);
if (recId) {
component.set(“v.modalContext”, “Edit”);
}
if (!recId) {
component.find(“forceRecord”).getNewRecord(
“Property__c”,
null,
false,
$A.getCallback(function() {
var rec = component.get(“v.propertyRecord”);
var error = component.get(“v.recordError”);
if (error || (rec === null)) {
console.log(“Error initializing record template: ” + error);
return;
}
})
);
}
},
saveRecord : function(component, event, helper) {
var propBeds = parseInt(component.find(‘propBeds’).get(“v.value”), 10);
var propBaths = parseInt(component.find(‘propBaths’).get(“v.value”), 10);
var propPrice = parseInt(component.find(‘propPrice’).get(“v.value”), 10);
component.set(“v.propertyRecord.Name”, component.find(‘propName’).get(“v.value”));
component.set(“v.propertyRecord.Beds__c”, propBeds);
component.set(“v.propertyRecord.Baths__c”, propBaths);
component.set(“v.propertyRecord.Price__c”, propPrice);
component.set(“v.propertyRecord.Status__c”, component.find(‘propStatus’).get(“v.value”));
var tempRec = component.find(“forceRecord”);
tempRec.saveRecord($A.getCallback(function(result) {
console.log(result.state);
var resultsToast = $A.get(“e.force:showToast”);
if (result.state === “SUCCESS”) {
resultsToast.setParams({
“title”: “Saved”,
“message”: “The record was saved.”
});
resultsToast.fire();
var recId = result.recordId;
helper.navigateTo(component, recId);
} else if (result.state === “ERROR”) {
console.log(‘Error: ‘ + JSON.stringify(result.error));
resultsToast.setParams({
“title”: “Error”,
“message”: “There was an error saving the record: ” + JSON.stringify(result.error)
});
resultsToast.fire();
} else {
console.log(‘Unknown problem, state: ‘ + result.state + ‘, error: ‘ + JSON.stringify(result.error));
}
}));
},
cancelDialog: function(component, event, helper) {
var recId = component.get(“v.recordId”);
if (!recId) {
var homeEvt = $A.get(“e.force:navigateToObjectHome”);
homeEvt.setParams({
“scope”: “Property__c”
});
homeEvt.fire();
} else {
helper.navigateTo(component, recId);
}
}
})
PropertyDialogHelper.js
({
navigateTo: function(component, recId) {
var navEvt = $A.get(“e.force:navigateToSObject”);
navEvt.setParams({
“recordId”: recId
});
navEvt.fire();
}
})
PicklistController.apxc
public class PickListController {
@AuraEnabled
public static List getPickListValuesIntoList(String objectType, String selectedField){
List pickListValuesList = new List();
Schema.SObjectType convertToObj = Schema.getGlobalDescribe().get(objectType);
Schema.DescribeSObjectResult res = convertToObj.getDescribe();
Schema.DescribeFieldResult fieldResult = res.fields.getMap().get(selectedField).getDescribe();
List ple = fieldResult.getPicklistValues();
for( Schema.PicklistEntry pickListVal : ple){
pickListValuesList.add(pickListVal.getLabel());
}
return pickListValuesList;
}
}
PicklistValues.cmp
PicklistValuesController
({
doInit : function(component) {
var action = component.get(“c.getPickListValuesIntoList”);
action.setParams({
objectType: component.get(“v.sObjectName”),
selectedField: component.get(“v.fieldName”)
});
action.setCallback(this, function(response) {
var list = response.getReturnValue();
component.set(“v.picklistValues”, list);
})
$A.enqueueAction(action);
}
})
For more information, please comment in the commentbox or try the below trailhead-
https://trailhead.salesforce.com/content/learn/projects/workshop-override-standard-action