Hi there,
I'm setting up EspoCRM to keep track of the recordings that I am working on (I'm a record producer), and am trying to setup some PrimaryFilters to use in Record Lists on the Dashboard that show me a list of tracks that are both currently pending feedback and 'in edit'.
I have setup a custom entity, CTrack, which has a "status" column - there are quite a few different statuses, but the ones that are relevant here are "Feedback", "QA" and "In Edit".
Following this guide, I am attempting to setup two new PrimaryFilters that can be used in the Record List dashlet on the Dashboard.
Under ~/crm/custom/Espo/Custom/Select/CTrack/PrimaryFilters I have created two files:
Feedback.php:
InEdit.php:
And then I have created/modified the following, as instructed in the guide:
~/crm/custom/Espo/Custom/Resources/metadata/selectDefs/CTrack.php:
~/crm/custom/Espo/Custom/Resources/metadata/clientDefs/CTrack.php:
~/crm/custom/Espo/Custom/Resources/i18n/en_GB/CTrack.json:
These filters are appearing in the list of options within the Record List dashlet and in the filter dropdown of the CTrack list, but I'm getting the following error when trying to use them:
I have cleared the cache and hard reloaded the tab in my browser.
What am I missing here? This is the last thing that I'm getting setup before I have the perfect system!
Your help is much appreciated. Thank you!
~ Don
I'm setting up EspoCRM to keep track of the recordings that I am working on (I'm a record producer), and am trying to setup some PrimaryFilters to use in Record Lists on the Dashboard that show me a list of tracks that are both currently pending feedback and 'in edit'.
I have setup a custom entity, CTrack, which has a "status" column - there are quite a few different statuses, but the ones that are relevant here are "Feedback", "QA" and "In Edit".
Following this guide, I am attempting to setup two new PrimaryFilters that can be used in the Record List dashlet on the Dashboard.
Under ~/crm/custom/Espo/Custom/Select/CTrack/PrimaryFilters I have created two files:
Feedback.php:
PHP Code:
<?php
namespace Espo\Custom\Select\CTrack\PrimaryFilters;
use Espo\Core\Select\Primary\Filter;
use Espo\ORM\Query\SelectBuilder;
use Espo\ORM\Query\Part\Condition as Cond;
class Feedback implements Filter {
public function apply(SelectBuilder $queryBuilder): void {
$queryBuilder->where(
Cond::in(
Cond::column('status'),
['Feedback','QA']
)
);
}
}
PHP Code:
<?php
namespace Espo\Custom\Select\CTrack\PrimaryFilters;
use Espo\Core\Select\Primary\Filter;
use Espo\ORM\Query\SelectBuilder;
use Espo\ORM\Query\Part\Condition as Cond;
class InEdit implements Filter {
public function apply(SelectBuilder $queryBuilder): void {
$queryBuilder->where(
Cond::in(
Cond::column('status'),
['In Edit','Mixing', 'Mastering']
)
);
}
}
~/crm/custom/Espo/Custom/Resources/metadata/selectDefs/CTrack.php:
PHP Code:
{
"primaryFilterClassNameMap": {
"inedit": "Espo\\Custom\\Select\\CTrack\\PrimaryFilters\\InEdit",
"feedback": "Espo\\Custom\\Select\\CTrack\\PrimaryFilters\\Feedback"
}
}
PHP Code:
{
"controller": "controllers/record",
"boolFilterList": [
"onlyMy"
],
"filterList": [
{
"name":"inedit"
},
{
"name":"feedback"
}
],
"sidePanels": {
"detail": [
{
"name": "activities",
"label": "Activities",
"view": "crm:views/record/panels/activities",
"aclScope": "Activities"
},
{
"name": "history",
"label": "History",
"view": "crm:views/record/panels/history",
"aclScope": "Activities"
},
{
"name": "tasks",
"label": "Tasks",
"view": "crm:views/record/panels/tasks",
"aclScope": "Task"
}
]
},
"color": "#0ae4b6",
"iconClass": "fas fa-compact-disc",
"kanbanViewMode": false,
"relationshipPanels": {
"recordingSession": {
"layout": null,
"selectPrimaryFilterName": null
},
"productionPersonnels": {
"layout": null,
"selectPrimaryFilterName": null
},
"artists": {
"layout": null,
"selectPrimaryFilterName": null
}
},
"dynamicLogic": {
"fields": {
"requestSent": {
"visible": null,
"required": null,
"invalid": null
}
}
}
}
~/crm/custom/Espo/Custom/Resources/i18n/en_GB/CTrack.json:
PHP Code:
{
"fields": {
"recordingSession": "Recording Session",
"status": "Status",
"priority": "Priority",
"productionPersonnels": "Production Personnel",
"iSRC": "ISRC",
"name": "Track Title",
"composers": "Composer(s)",
"arrangers": "Arranger(s)",
"forces": "Forces",
"deadline": "Deadline",
"waitingOn": "Waiting On",
"requestSent": "Request Sent",
"artists": "Artists",
"stakeholders": "Stakeholders",
"producerSignedOff": "Producer Signed Off",
"conductorSignedOff": "Conductor Signed Off",
"composerSignedOff": "Composer Signed Off",
"accompanistSignedOff": "Accompanist Signed Off",
"othersSignedOff": "Others Signed Off",
"labelSignedOff": "Label Signed Off"
},
"links": {
"recordingSession": "Recording Session",
"productionPersonnels": "Production Personnel",
"artists": "Artists"
},
"options": {
"status": {
"Planning": "06 Planning",
"Backlog": "05 Backlog",
"In Edit": "01 In Edit",
"Feedback": "00 Feedback",
"Mixing": "02 Mixing",
"Mastering": "03 Mastering",
"QA": "00 QA",
"Approved": "04 Approved",
"Delivered": "07 Delivered",
"Cancelled": "99 Cancelled"
},
"priority": {
"P1 (Critical)": "P1 (Critical)",
"P2 (High)": "P2 (High)",
"P3 (Medium)": "P3 (Medium)",
"P4 (Low)": "P4 (Low)",
"P5 (Trivial)": "P5 (Trivial)"
},
"composers": [],
"arrangers": [],
"waitingOn": [],
"stakeholders": []
},
"tooltips": {
"iSRC": "Format: CC-RRC-YY-SSSSS"
},
"presetFilters": {
"inedit": "In Edit",
"feedback": "Out for Feedback"
}
}
No primary filter 'feedback' for 'CTrack'.
What am I missing here? This is the last thing that I'm getting setup before I have the perfect system!
Your help is much appreciated. Thank you!
~ Don
Comment