mirror of
https://codeberg.org/artfulrobot/contactcats.git
synced 2025-06-25 13:08:04 +02:00
114 lines
4.3 KiB
JavaScript
114 lines
4.3 KiB
JavaScript
console.log('crmSearchDisplayContactCat.js loaded');
|
|
// see https://docs.civicrm.org/dev/en/latest/searchkit/displays/
|
|
(function(angular, $, _) {
|
|
// Declare a list of dependencies.
|
|
angular.module('crmSearchDisplayContactCat', CRM.angRequires('crmSearchDisplayContactCat'));
|
|
// angular.module('crmContactcats').component();
|
|
|
|
console.log('crmSearchDisplayContactCat module registered');
|
|
// This is to be the display
|
|
// NOTE: the component name is {CamelCaseNameFromOptionValue}
|
|
// Standard seems to be to name crmSearchDisplay{YourName}
|
|
angular.module("crmSearchDisplayContactCat").component("crmSearchDisplayContactCat", {
|
|
templateUrl: "~/crmSearchDisplayContactCat/crmSearchDisplayContactCat.html",
|
|
bindings: {
|
|
apiEntity: '@',
|
|
search: '<',
|
|
display: '<',
|
|
apiParams: '<',
|
|
settings: '<',
|
|
filters: '<',
|
|
totalCount: '=?'
|
|
},
|
|
// controller: function($scope, $timeout, crmApi4, crmStatus, $document) {
|
|
controller: function($scope, $element, crmApi4, searchDisplayBaseTrait, searchDisplayTasksTrait) {
|
|
console.log('crmSearchDisplayContactCat controller called');
|
|
// Mix in required traits
|
|
ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait), _.cloneDeep(searchDisplayTasksTrait));
|
|
console.log("hello display");
|
|
var ts = ($scope.ts = CRM.ts(null)),
|
|
ctrl = this;
|
|
|
|
ctrl.catDefs = null;
|
|
ctrl.resultsVM = {};
|
|
ctrl.n = 1;
|
|
// this.$onInit gets run after the this controller is called, and after the bindings have been applied.
|
|
this.$onInit = function() {
|
|
console.log("calling initializeDisplay");
|
|
// Grab all the category definitions
|
|
crmApi4('ContactCategoryDefinition', 'get', {
|
|
orderBy: {presentation_order: 'ASC'}
|
|
}, 'id').then(r => { ctrl.catDefs = r; console.log('catDefs', ctrl.catDefs); ctrl.n++; });
|
|
this.initializeDisplay($scope, $element);
|
|
};
|
|
|
|
$scope.$watch('$ctrl.results', () => { ctrl.n++; }, true);
|
|
$scope.$watch('$ctrl.n', () => {
|
|
console.log("watch n running");
|
|
if (!ctrl.catDefs || !ctrl.results?.count) {
|
|
console.log("...waiting for all the data we need");
|
|
ctrl.ourData = {
|
|
rows: [],
|
|
count: 0,
|
|
};
|
|
return ctrl.n;
|
|
}
|
|
|
|
const rows = ctrl.results.map((row) => {
|
|
const d = (new Date(row.data.activity_date_time.replace(' ', 'T'))).toLocaleString('UTC', {
|
|
weekday: 'short',
|
|
day: 'numeric',
|
|
month: 'short',
|
|
year: 'numeric',
|
|
});
|
|
return {
|
|
contact_id: row.data['Activity_ActivityContact_Contact_01.id'],
|
|
new: ctrl.catDefs[row.data['Category_changes.new_category_id']],
|
|
when: d,
|
|
};
|
|
});
|
|
ctrl.ourData = {rows, count:rows.length};
|
|
console.log("new ourData", ctrl.ourData);
|
|
return ctrl.n;
|
|
});
|
|
}
|
|
});
|
|
|
|
console.log('crmSearchDisplayContactCat registering admin bit');
|
|
// This is to be the admin settings for the display
|
|
// NOTE: the component name is 'searchAdminDisplay'{CamelCaseValueFromOptionValue}
|
|
angular.module("crmSearchDisplayContactCat").component("searchAdminDisplayContactCat", {
|
|
templateUrl: "~/crmSearchDisplayContactCat/searchAdminDisplayContactCat.html",
|
|
bindings: {
|
|
display: '<',
|
|
apiEntity: '<',
|
|
apiParams: '<'
|
|
},
|
|
require: {
|
|
parent: '^crmSearchAdminDisplay'
|
|
},
|
|
controller: function($scope, searchMeta, crmUiHelp) {
|
|
console.log("hello admin controller");
|
|
let ctrl = this;
|
|
// var ts = ($scope.ts = CRM.ts(null)),
|
|
// ctrl = this;
|
|
this.getColTypes = function() {
|
|
return ctrl.parent.colTypes;
|
|
};
|
|
// this.$onInit gets run after the this controller is called, and after the bindings have been applied.
|
|
this.$onInit = async function() {
|
|
if (!ctrl.display.settings) {
|
|
console.log("applying display.settings as was nonwl");
|
|
ctrl.display.settings = {
|
|
something: 'nothing',
|
|
limit: ctrl.parent.getDefaultLimit(),
|
|
sort: ctrl.parent.getDefaultSort(),
|
|
pager: {}
|
|
};
|
|
}
|
|
ctrl.parent.initColumns({});
|
|
};
|
|
}});
|
|
console.log('crmSearchDisplayContactCat ends');
|
|
|
|
})(angular, CRM.$, CRM._);
|