From be20fee5e07679a392efa6f0d72617fc71d7fd78 Mon Sep 17 00:00:00 2001 From: Saagar Arya Date: Fri, 4 Oct 2024 13:07:00 -0400 Subject: [PATCH 1/2] [dictionary] Cohort Filter --- modules/datadict/jsx/dataDictIndex.js | 9 +++++++++ .../datadict/php/datadictrowprovisioner.class.inc | 5 ++++- modules/datadict/php/fields.class.inc | 8 +++++++- modules/dictionary/jsx/dataDictIndex.js | 9 +++++++++ modules/dictionary/php/datadictrow.class.inc | 5 +++++ .../dictionary/php/datadictrowprovisioner.class.inc | 13 ++++++++++++- modules/dictionary/php/dictionary.class.inc | 7 +++++++ 7 files changed, 53 insertions(+), 3 deletions(-) diff --git a/modules/datadict/jsx/dataDictIndex.js b/modules/datadict/jsx/dataDictIndex.js index 9116f80ab92..5904fc544ef 100644 --- a/modules/datadict/jsx/dataDictIndex.js +++ b/modules/datadict/jsx/dataDictIndex.js @@ -199,6 +199,15 @@ class DataDictIndex extends Component { }, }, }, + { + label: 'Cohorts', + show: true, + filter: { + name: 'Cohorts', + type: 'multiselect', + options: options.cohorts, + }, + }, ]; return ( user(); + $projects = $user->getProjectIDs(); + $cohorts = []; + foreach ($projects AS $projectID) { + $cohorts = $cohorts + \Utility::getCohortList($projectID); + } return new \LORIS\Http\Response\JSON\OK( - ['sourceFrom' => \Utility::getAllInstruments()] + ['sourceFrom' => \Utility::getAllInstruments(), 'cohorts' => $cohorts] ); } } diff --git a/modules/dictionary/jsx/dataDictIndex.js b/modules/dictionary/jsx/dataDictIndex.js index 8de4855d5ed..7e00138c566 100644 --- a/modules/dictionary/jsx/dataDictIndex.js +++ b/modules/dictionary/jsx/dataDictIndex.js @@ -317,6 +317,15 @@ class DataDictIndex extends Component { show: false, filter: null, }, + { + label: 'Cohorts', + show: false, + filter: { + name: 'Cohorts', + type: 'multiselect', + options: options.cohorts, + }, + }, ]; return ( itemmodule = $itemmodule; $this->itemcategory = $cat; @@ -46,6 +49,7 @@ class DataDictRow implements \LORIS\Data\DataInstance, $this->desc = $desc; $this->status = $descstatus; $this->visits = $visits; + $this->cohorts = $cohorts; } /** @@ -73,6 +77,7 @@ class DataDictRow implements \LORIS\Data\DataInstance, } if ($scope->__toString() == "session") { $val['visits'] = $this->visits; + $val['cohorts'] = $this->cohorts; } return $val; diff --git a/modules/dictionary/php/datadictrowprovisioner.class.inc b/modules/dictionary/php/datadictrowprovisioner.class.inc index 1ad37c42a3e..2fe133fe69b 100644 --- a/modules/dictionary/php/datadictrowprovisioner.class.inc +++ b/modules/dictionary/php/datadictrowprovisioner.class.inc @@ -69,6 +69,14 @@ class DataDictRowProvisioner extends \LORIS\Data\ProvisionerInstance $status = 'Empty'; } + $cohorts = $DB->pselectCol( + "SELECT DISTINCT tb.CohortID FROM test_names tn + JOIN test_battery tb ON tn.Test_name=tb.Test_name + WHERE tn.Test_name=:tn + ORDER BY tb.CohortID", + ['tn' => $cat->getName()] + ); + $visits = $qe->getVisitList($cat, $item); $dict[] = $this->getInstance( $module, @@ -77,6 +85,7 @@ class DataDictRowProvisioner extends \LORIS\Data\ProvisionerInstance $desc, $status, $visits, + $cohorts, ); } } @@ -96,6 +105,7 @@ class DataDictRowProvisioner extends \LORIS\Data\ProvisionerInstance * @param string $desc The overridden description of the item * @param string $descstatus The status of the description override * @param ?[]string $visits The visits for session scoped variables + * @param ?[]string $cohorts The cohorts for session scoped variables * * @return \LORIS\Data\DataInstance An instance representing this row. */ @@ -106,7 +116,8 @@ class DataDictRowProvisioner extends \LORIS\Data\ProvisionerInstance string $desc, string $descstatus, array $visits, + array $cohorts, ) : \LORIS\Data\DataInstance { - return new DataDictRow($module, $cat, $item, $desc, $descstatus, $visits); + return new DataDictRow($module, $cat, $item, $desc, $descstatus, $visits, $cohorts); } } diff --git a/modules/dictionary/php/dictionary.class.inc b/modules/dictionary/php/dictionary.class.inc index e3fe835bf30..c5846791b8e 100644 --- a/modules/dictionary/php/dictionary.class.inc +++ b/modules/dictionary/php/dictionary.class.inc @@ -52,9 +52,16 @@ class Dictionary extends \DataFrameworkMenu foreach ($this->modules as $module) { $amodules[$module->getName()] = $module->getLongName(); } + $user = \NDB_Factory::singleton()->user(); + $projects = $user->getProjectIDs(); + $cohorts = []; + foreach ($projects AS $projectID) { + $cohorts = $cohorts + \Utility::getCohortList($projectID); + } return [ 'modules' => $amodules, 'categories' => $this->categories, + 'cohorts' => $cohorts ]; } From 01c1285074cc6cc96840471430f909854053b9ba Mon Sep 17 00:00:00 2001 From: Saagar Arya Date: Fri, 4 Oct 2024 13:19:26 -0400 Subject: [PATCH 2/2] Update for php lint --- .../datadict/php/datadictrowprovisioner.class.inc | 4 ++-- modules/dictionary/php/datadictrow.class.inc | 2 +- .../dictionary/php/datadictrowprovisioner.class.inc | 12 ++++++++++-- modules/dictionary/php/dictionary.class.inc | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/datadict/php/datadictrowprovisioner.class.inc b/modules/datadict/php/datadictrowprovisioner.class.inc index 56434dfdb9e..b8ce641026d 100644 --- a/modules/datadict/php/datadictrowprovisioner.class.inc +++ b/modules/datadict/php/datadictrowprovisioner.class.inc @@ -53,8 +53,8 @@ class DataDictRowProvisioner extends \LORIS\Data\Provisioners\DBRowProvisioner LEFT JOIN parameter_type_override pto USING (Name) LEFT JOIN test_battery tb ON pt.sourceFrom=tb.Test_name WHERE pt.Queryable=1 - GROUP BY pt.sourceFrom, pt.name, pt.sourceField, description, description_status - ", + GROUP BY pt.sourceFrom, pt.name, pt.sourceField, + description, description_status", [] ); } diff --git a/modules/dictionary/php/datadictrow.class.inc b/modules/dictionary/php/datadictrow.class.inc index 1af3b422368..71c6739c3be 100644 --- a/modules/dictionary/php/datadictrow.class.inc +++ b/modules/dictionary/php/datadictrow.class.inc @@ -76,7 +76,7 @@ class DataDictRow implements \LORIS\Data\DataInstance, $val['options'] = $itype->getOptions(); } if ($scope->__toString() == "session") { - $val['visits'] = $this->visits; + $val['visits'] = $this->visits; $val['cohorts'] = $this->cohorts; } diff --git a/modules/dictionary/php/datadictrowprovisioner.class.inc b/modules/dictionary/php/datadictrowprovisioner.class.inc index 2fe133fe69b..d749ac9ade8 100644 --- a/modules/dictionary/php/datadictrowprovisioner.class.inc +++ b/modules/dictionary/php/datadictrowprovisioner.class.inc @@ -76,7 +76,7 @@ class DataDictRowProvisioner extends \LORIS\Data\ProvisionerInstance ORDER BY tb.CohortID", ['tn' => $cat->getName()] ); - + $visits = $qe->getVisitList($cat, $item); $dict[] = $this->getInstance( $module, @@ -118,6 +118,14 @@ class DataDictRowProvisioner extends \LORIS\Data\ProvisionerInstance array $visits, array $cohorts, ) : \LORIS\Data\DataInstance { - return new DataDictRow($module, $cat, $item, $desc, $descstatus, $visits, $cohorts); + return new DataDictRow( + $module, + $cat, + $item, + $desc, + $descstatus, + $visits, + $cohorts, + ); } } diff --git a/modules/dictionary/php/dictionary.class.inc b/modules/dictionary/php/dictionary.class.inc index c5846791b8e..35c1a2e3d90 100644 --- a/modules/dictionary/php/dictionary.class.inc +++ b/modules/dictionary/php/dictionary.class.inc @@ -54,7 +54,7 @@ class Dictionary extends \DataFrameworkMenu } $user = \NDB_Factory::singleton()->user(); $projects = $user->getProjectIDs(); - $cohorts = []; + $cohorts = []; foreach ($projects AS $projectID) { $cohorts = $cohorts + \Utility::getCohortList($projectID); }