-
-
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).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<design:component label="Lightning View Counter"> | |
</design:component> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
({ | |
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