summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE/client/bower_components/angular-smart-table/src/stSearch.js
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-portal-FE/client/bower_components/angular-smart-table/src/stSearch.js')
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-smart-table/src/stSearch.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/ecomp-portal-FE/client/bower_components/angular-smart-table/src/stSearch.js b/ecomp-portal-FE/client/bower_components/angular-smart-table/src/stSearch.js
new file mode 100644
index 00000000..6105fbe6
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-smart-table/src/stSearch.js
@@ -0,0 +1,43 @@
+ng.module('smart-table')
+ .directive('stSearch', ['stConfig', '$timeout','$parse', function (stConfig, $timeout, $parse) {
+ return {
+ require: '^stTable',
+ link: function (scope, element, attr, ctrl) {
+ var tableCtrl = ctrl;
+ var promise = null;
+ var throttle = attr.stDelay || stConfig.search.delay;
+ var event = attr.stInputEvent || stConfig.search.inputEvent;
+
+ attr.$observe('stSearch', function (newValue, oldValue) {
+ var input = element[0].value;
+ if (newValue !== oldValue && input) {
+ ctrl.tableState().search = {};
+ tableCtrl.search(input, newValue);
+ }
+ });
+
+ //table state -> view
+ scope.$watch(function () {
+ return ctrl.tableState().search;
+ }, function (newValue, oldValue) {
+ var predicateExpression = attr.stSearch || '$';
+ if (newValue.predicateObject && $parse(predicateExpression)(newValue.predicateObject) !== element[0].value) {
+ element[0].value = $parse(predicateExpression)(newValue.predicateObject) || '';
+ }
+ }, true);
+
+ // view -> table state
+ element.bind(event, function (evt) {
+ evt = evt.originalEvent || evt;
+ if (promise !== null) {
+ $timeout.cancel(promise);
+ }
+
+ promise = $timeout(function () {
+ tableCtrl.search(evt.target.value, attr.stSearch || '');
+ promise = null;
+ }, throttle);
+ });
+ }
+ };
+ }]);