</div>
<fieldset ng-if="availableParams.where" class="api4-where-fieldset" ng-mouseenter="help('where', availableParams.where)" ng-mouseleave="help()" crm-api4-where-clause="{where: params.where, required: availableParams.where.required, op: 'AND', label: 'where', fields: fieldsAndJoins}">
</fieldset>
- <fieldset ng-if="availableParams.values" ng-mouseenter="help('values', availableParams.values)" ng-mouseleave="help()">
- <legend>values<span class="crm-marker" ng-if="availableParams.values.required"> *</span></legend>
- <div class="api4-input form-inline" ng-repeat="clause in params.values" ng-mouseenter="help('value: ' + clause[0], fieldHelp(clause[0]))" ng-mouseleave="help('values', availableParams.values)">
- <input class="collapsible-optgroups form-control" ng-model="clause[0]" crm-ui-select="{formatResult: formatSelect2Item, formatSelection: formatSelect2Item, data: valuesFields, allowClear: true, placeholder: 'Field'}" />
+ <fieldset ng-repeat="name in ['values', 'defaults']" ng-if="availableParams[name]" ng-mouseenter="help(name, availableParams[name])" ng-mouseleave="help()">
+ <legend>{{ name }}<span class="crm-marker" ng-if="availableParams[name].required"> *</span></legend>
+ <div class="api4-input form-inline" ng-repeat="clause in params[name]" ng-mouseenter="help('value: ' + clause[0], fieldHelp(clause[0]))" ng-mouseleave="help(name, availableParams[name])">
+ <input class="collapsible-optgroups form-control" ng-model="clause[0]" crm-ui-select="{formatResult: formatSelect2Item, formatSelection: formatSelect2Item, data: fieldList(name), allowClear: true, placeholder: 'Field'}" />
<input class="form-control" ng-model="clause[1]" api4-exp-value="{field: clause[0], action: action === 'getFields' ? params.action || 'get' : action}" />
</div>
<div class="api4-input form-inline">
- <input class="collapsible-optgroups form-control" ng-model="controls.values" crm-ui-select="{formatResult: formatSelect2Item, formatSelection: formatSelect2Item, data: valuesFields}" placeholder="Add value" />
+ <input class="collapsible-optgroups form-control" ng-model="controls[name]" crm-ui-select="{formatResult: formatSelect2Item, formatSelection: formatSelect2Item, data: fieldList(name), placeholder: ts('Add %1', {1: name.slice(0, -1)})}"/>
</div>
</fieldset>
<fieldset ng-if="availableParams.orderBy" ng-mouseenter="help('orderBy', availableParams.orderBy)" ng-mouseleave="help()">
};
marked.setOptions({highlight: prettyPrintOne});
var getMetaParams = {},
- objectParams = {orderBy: 'ASC', values: '', chain: ['Entity', '', '{}']},
+ objectParams = {orderBy: 'ASC', values: '', defaults: '', chain: ['Entity', '', '{}']},
docs = CRM.vars.api4.docs,
helpTitle = '',
helpContent = {};
return info;
};
- $scope.valuesFields = function() {
- var fields = _.cloneDeep($scope.action === 'getFields' ? getFieldList($scope.params.action || 'get') : $scope.fields);
- // Disable fields that are already in use
- _.each($scope.params.values || [], function(val) {
- (_.findWhere(fields, {id: val[0]}) || {}).disabled = true;
- });
- return {results: fields};
+ $scope.fieldList = function(param) {
+ return function() {
+ var fields = _.cloneDeep($scope.action === 'getFields' ? getFieldList($scope.params.action || 'get') : $scope.fields);
+ // Disable fields that are already in use
+ _.each($scope.params[param] || [], function(val) {
+ (_.findWhere(fields, {id: val[0]}) || {}).disabled = true;
+ });
+ return {results: fields};
+ };
};
$scope.formatSelect2Item = function(row) {
};
$scope.isSpecial = function(name) {
- var specialParams = ['select', 'fields', 'action', 'where', 'values', 'orderBy', 'chain'];
+ var specialParams = ['select', 'fields', 'action', 'where', 'values', 'defaults', 'orderBy', 'chain'];
return _.contains(specialParams, name);
};
code.oop += "\n ->addWhere(" + phpFormat(clause).slice(1, -1) + ")";
}
});
- } else if (key === 'select' && isSelectRowCount) {
- code.oop += "\n ->selectRowCount()";
+ } else if (key === 'select') {
+ code.oop += "\n ";
+ // addSelect() is a variadic function & can take multiple arguments; selectRowCount() is a shortcut for addSelect('row_count')
+ code.oop += isSelectRowCount ? '->selectRowCount()' : '->addSelect(' + phpFormat(param).slice(1, -1) + ')';
} else {
code.oop += "\n ->set" + ucfirst(key) + '(' + phpFormat(param, 4) + ')';
}