Skip to content

navikt/crm-shared-timeline

Repository files navigation

crm-shared-timeline

Build GitHub version MIT License

Overview

LWC component based on the default Salesforce Activity Timeline, but extended to work with any Salesforce object.

Timeline

Dependencies

Configuration

You can easily configure which objects to be visible in a timeline, and you can even specify which Salesforce app the configuration is intended for.

Parent Config Child Config

Automatic Refresh on Record Create

You'll need to create a push topic for every SObject. Specify the push topic name in the Child Config. Create a push topic by running the following code (must also be done in production):

String sobjectName = 'SOBJECT';

insert new PushTopic(Name = 'TIMELINE_' + sobjectName, Query = 'SELECT Id FROM ' + sobjectName, NotifyForOperationCreate = true, NotifyForFields = 'All', ApiVersion = 52.0);

Limitations

Custom Views

To add a custom view for a child object:

  1. Create a Controller class and Custom component
  2. Update timelineCustomView component to show your custom component conditionaly
  3. Mark 'Custom View' checkbox in your Timeline Child Config.

Installation

  1. Install npm
  2. Install Salesforce DX CLI
    • Alternative: npm install sfdx-cli --global
  3. Clone this repository (GitHub Desktop is recommended for non-developers)
  4. Run npm install from the project root folder
  5. Install SSDX
    • Non-developers may stop after this step
  6. Install VS Code (recommended)
    • Install Salesforce Extension Pack
    • Install recommended plugins! A notification should appear when opening VS Code. It will prompt you to install recommended plugins.
  7. Install AdoptOpenJDK (only version 8 or 11)
  8. Open VS Code settings and search for salesforcedx-vscode-apex
  9. Under Java Home, add the following:
    • macOS: /Library/Java/JavaVirtualMachines/adoptopenjdk-[VERSION_NUMBER].jdk/Contents/Home
    • Windows: C:\\Program Files\\AdoptOpenJDK\\jdk-[VERSION_NUMBER]-hotspot

Build

To build locally without using SSDX, do the following:

  1. If you haven't authenticated a DX user to production / DevHub, run sfdx auth:web:login -d -a production and log in
    • Ask #crm-platform-team on Slack if you don't have a user
    • If you change from one repo to another, you can change the default DevHub username in .sfdx/sfdx-config.json, but you can also just run the command above
  2. Create a scratch org, install dependencies and push metadata:
sfdx force:org:create -f ./config/project-scratch-def.json --setalias scratch_org --durationdays 1 --setdefaultusername
echo y | sfdx plugins:install [email protected]
keys="" && for p in $(sfdx force:package:list --json | jq '.result | .[].Name' -r); do keys+=$p":{key} "; done
sfdx sfpowerkit:package:dependencies:install -u scratch_org -r -a -w 60 -k ${keys}
sfdx force:source:push
sfdx force:org:open

Other

Questions? Ask on #crm-platform-team on Slack.