From 9625aad197abef67b6489f4c3aa079fa90f0ee72 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Wed, 2 Jul 2014 19:24:14 -0700 Subject: [PATCH] CRM-14798 - crmCaseType - Load fresh list of activity-types, activity-statuses, and relationship-types. To avoid additional round-trips, consolidate all loads into a single API call. --- CRM/Case/Info.php | 21 +------------------- js/angular-crmCaseType.js | 41 +++++++++++++++++++++++++++------------ 2 files changed, 30 insertions(+), 32 deletions(-) diff --git a/CRM/Case/Info.php b/CRM/Case/Info.php index 6cdfb92650..d62a10cbdb 100644 --- a/CRM/Case/Info.php +++ b/CRM/Case/Info.php @@ -65,29 +65,10 @@ class CRM_Case_Info extends CRM_Core_Component_Info { 'js' => array('js/angular-crmCaseType.js'), 'css' => array('css/angular-crmCaseType.css'), ); - // Need full OptionValue records - $actStatuses = civicrm_api3('OptionValue', 'get', array('option_group_id' => 'activity_status')); - $actTypes = civicrm_api3('OptionValue', 'get', array( - 'option_group_id' => 'activity_type', - 'options' => array( - 'sort' => 'name', - 'limit' => 0, - ), - )); - $relTypes = civicrm_api3('RelationshipType', 'get', array( - 'options' => array( - 'sort' => CRM_Case_XMLProcessor::REL_TYPE_CNAME, - 'limit' => 0, - ) - )); CRM_Core_Resources::singleton()->addSetting(array( 'crmCaseType' => array( - 'actStatuses' => array_values($actStatuses['values']), - 'actTypes' => array_values($actTypes['values']), - 'relTypes' => array_values($relTypes['values']), - //CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'name'), - + 'REL_TYPE_CNAME' => CRM_Case_XMLProcessor::REL_TYPE_CNAME, ), )); return $result; diff --git a/js/angular-crmCaseType.js b/js/angular-crmCaseType.js index e4a8fdd2d0..e617064d2b 100644 --- a/js/angular-crmCaseType.js +++ b/js/angular-crmCaseType.js @@ -47,13 +47,30 @@ templateUrl: partialUrl('edit.html'), controller: 'CaseTypeCtrl', resolve: { - selectedCaseType: function($route, crmApi) { - if ( $route.current.params.id !== 'new') { - return crmApi('CaseType', 'getsingle', {id: $route.current.params.id}); - } - else { - return _.cloneDeep(newCaseTypeTemplate); + apiCalls: function($route, crmApi) { + var reqs = {}; + reqs.actStatuses = ['OptionValue', 'get', { + option_group_id: 'activity_status' + }]; + reqs.actTypes = ['OptionValue', 'get', { + option_group_id: 'activity_type', + options: { + sort: 'name', + limit: 0 + } + }]; + reqs.relTypes = ['RelationshipType', 'get', { + options: { + sort: CRM.crmCaseType.REL_TYPE_CNAME, + limit: 0 + } + }]; + if ($route.current.params.id !== 'new') { + reqs.caseType = ['CaseType', 'getsingle', { + id: $route.current.params.id + }]; } + return crmApi(reqs); } } }); @@ -105,13 +122,13 @@ }; }); - crmCaseType.controller('CaseTypeCtrl', function($scope, crmApi, selectedCaseType) { + crmCaseType.controller('CaseTypeCtrl', function($scope, crmApi, apiCalls) { $scope.partialUrl = partialUrl; - $scope.activityStatuses = CRM.crmCaseType.actStatuses; - $scope.activityTypes = CRM.crmCaseType.actTypes; - $scope.activityTypeNames = _.pluck(CRM.crmCaseType.actTypes, 'name'); - $scope.relationshipTypeNames = _.pluck(CRM.crmCaseType.relTypes, 'label_b_a'); // label_b_a is CRM_Case_XMLProcessor::REL_TYPE_CNAME + $scope.activityStatuses = _.values(apiCalls.actStatuses.values); + $scope.activityTypes = apiCalls.actTypes.values; + $scope.activityTypeNames = _.pluck(apiCalls.actTypes.values, 'name'); + $scope.relationshipTypeNames = _.pluck(apiCalls.relTypes.values, CRM.crmCaseType.REL_TYPE_CNAME); // CRM_Case_XMLProcessor::REL_TYPE_CNAME $scope.locks = {caseTypeName: true}; $scope.workflows = { @@ -119,7 +136,7 @@ 'sequence': 'Sequence' }; - $scope.caseType = selectedCaseType; + $scope.caseType = apiCalls.caseType ? apiCalls.caseType : _.cloneDeep(newCaseTypeTemplate); $scope.caseType.definition = $scope.caseType.definition || []; $scope.caseType.definition.activityTypes = $scope.caseType.definition.activityTypes || []; $scope.caseType.definition.activitySets = $scope.caseType.definition.activitySets || []; -- 2.25.1