Skip to content

Instantly share code, notes, and snippets.

@F4bsi
Forked from JitendraZaa/AccountEdit.cmp.html
Last active August 2, 2019 14:39
Show Gist options
  • Save F4bsi/6385281711481d2a7c221bf5e7b04975 to your computer and use it in GitHub Desktop.
Save F4bsi/6385281711481d2a7c221bf5e7b04975 to your computer and use it in GitHub Desktop.
Salesforce Lightning view Counter Component which can be added to a Record Page to count the views on that record. The sObject needs the custom field "View_Count__c" as Number(18, 0).
<aura:component implements="flexipage:availableForRecordHome,force:hasRecordId" access="global">
<aura:attribute name="toUpdate" type="Object"
description="The record object to be displayed"/>
<aura:attribute name="toUpdateRecord" type="Object"
description="A simplified view record object to be displayed"/>
<aura:attribute name="recordSaveError" type="String"
description="An error message bound to force:recordData"/>
<aura:attribute name="viewCounted" type="Boolean" default="false"
description="Was the current view already added to the view Count?"/>
<force:recordData aura:id="toCountRec"
layoutType="FULL"
recordId="{!v.recordId}"
targetError="{!v.recordSaveError}"
targetRecord="{!v.toUpdate}"
targetFields="{!v.toUpdateRecord}"
mode="EDIT"
recordUpdated="{!c.recordUpdated}"/>
</aura:component>
<design:component label="Lightning View Counter">
</design:component>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
({
savetoUpdate : function(component, event, helper) {
component.find("toCountRec").saveRecord($A.getCallback(function(saveResult) {
if (saveResult.state === "SUCCESS" || saveResult.state === "DRAFT") {
console.log("Save completed successfully.");
} else if (saveResult.state === "INCOMPLETE") {
component.set("v.recordSaveError","User is offline, device doesn't support drafts.");
} else if (saveResult.state === "ERROR") {
var errMsg = "";
// saveResult.error is an array of errors,
// so collect all errors into one message
for (var i = 0; i < saveResult.error.length; i++) {
errMsg += saveResult.error[i].message + "\n";
}
component.set("v.recordSaveError", errMsg);
} else {
component.set("v.recordSaveError",'Unknown problem, state: ' + saveResult.state + ', error: ' +
JSON.stringify(saveResult.error));
}
}));
},
recordUpdated : function(component, event, helper) {
var changeType = event.getParams().changeType;
if (changeType === "CHANGED") {
component.find("toCountRec").reloadRecord();
} else if (changeType === "LOADED") {
let count = component.get('v.toUpdateRecord.View_Count__c');
component.set('v.toUpdateRecord.View_Count__c', count + 1);
if ( !component.get('v.viewCounted') ) {
component.set('v.viewCounted', true);
var a = component.get('c.savetoUpdate');
$A.enqueueAction(a);
}
}
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment