diff options
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.js | 43 |
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); + }); + } + }; + }]); |