$scope.$watch('$ctrl.search.api_params', buildSettings, true);
};
- // Refresh current page
- this.refresh = function(row) {
- ctrl.runSearch();
- };
-
// Add callbacks for pre & post run
this.onPreRun.push(function(apiParams) {
apiParams.debug = true;
-<crm-search-display-editable row="row" col="col" on-success="$ctrl.refresh(row)" cancel="$ctrl.editing = null;" ng-if="col.editable && $ctrl.editing && $ctrl.editing[0] === rowIndex && $ctrl.editing[1] === col.key"></crm-search-display-editable>
+<crm-search-display-editable row="row" col="col" on-success="$ctrl.runSearch(row)" cancel="$ctrl.editing = null;" ng-if="col.editable && $ctrl.editing && $ctrl.editing[0] === rowIndex && $ctrl.editing[1] === col.key"></crm-search-display-editable>
<span ng-if="::!col.link" ng-class="{'crm-editable-enabled': col.editable && !$ctrl.editing && row[col.editable.id]}" ng-click="col.editable && !$ctrl.editing && ($ctrl.editing = [rowIndex, col.key])">
{{:: $ctrl.formatFieldValue(row, col) }}
</span>
},
// Call SearchDisplay.run and update ctrl.results and ctrl.rowCount
- runSearch: function() {
+ runSearch: function(editedRow) {
var ctrl = this,
apiParams = this.getApiParams();
this.loading = true;
}
}
_.each(ctrl.onPostRun, function(callback) {
- callback.call(ctrl, results, 'success');
+ callback.call(ctrl, results, 'success', editedRow);
});
}, function(error) {
ctrl.results = [];
ctrl.editing = ctrl.loading = false;
_.each(ctrl.onPostRun, function(callback) {
- callback.call(ctrl, error, 'error');
+ callback.call(ctrl, error, 'error', editedRow);
});
});
},
this.initializeDisplay($scope, $element);
};
- // Refresh current page
- this.refresh = function(row) {
- ctrl.runSearch();
- };
-
}
});
this.initializeDisplay($scope, $element);
};
- // Refresh page after inline-editing a row
- this.refresh = function(row) {
- var rowId = row.id;
- ctrl.runSearch()
- .then(function() {
- // If edited row disappears (because edits cause it to not meet search criteria), deselect it
- var index = ctrl.selectedRows.indexOf(rowId);
- if (index > -1 && !_.findWhere(ctrl.results, {id: rowId})) {
- ctrl.selectedRows.splice(index, 1);
- }
- });
- };
-
}
});
// Reset selection when filters are changed
this.selectedRows.length = 0;
this.allRowsSelected = false;
+ }],
+
+ // Overwrite empty onPostRun array from searchDisplayBaseTrait
+ onPostRun: [function(results, status, editedRow) {
+ if (editedRow && status === 'success') {
+ // If edited row disappears (because edits cause it to not meet search criteria), deselect it
+ var index = this.selectedRows.indexOf(editedRow.id);
+ if (index > -1 && !_.findWhere(results, {id: editedRow.id})) {
+ this.selectedRows.splice(index, 1);
+ }
+ }
}]
};