search on input

This commit is contained in:
Anton Schubert 2017-09-22 15:56:42 +02:00
parent f3825e3ba6
commit ce89e9a77c
2 changed files with 40 additions and 3 deletions

View File

@ -1,6 +1,6 @@
<template>
<div class="Scroll-Table">
<my-input :props="{type: 'text', placeholder: 'Suche'}" @change="searchChanged" v-model="currentSearch"></my-input>
<my-input :props="{type: 'text', placeholder: 'Suche'}" @input="searchChanged" v-model="currentSearch"></my-input>
<my-table :actions="actions" :columns="columns" :rows="rows"
:currentOrderBy="currentOrderBy"
:currentOrderDesc="currentOrderDesc"
@ -18,6 +18,7 @@ import MyTable from 'components/my-table';
import MyInput from 'components/my-input';
import { ObserveVisibility } from 'vue-observe-visibility/dist/vue-observe-visibility';
import { debounce } from 'lib/util';
export default {
name: "ScrollTable",
@ -141,11 +142,11 @@ export default {
this.reloadTriggered = true;
this.clear();
},
searchChanged(e) {
searchChanged: debounce(function(e) {
this.currentSearch = e;
this.reloadTriggered = true;
this.clear();
}
}, 300)
}
}
</script>

36
src/lib/util.js Normal file
View File

@ -0,0 +1,36 @@
const now = Date.now || function() {
return new Date().getTime();
};
export function debounce(func, wait, immediate) {
var timeout, args, context, timestamp, result;
var later = function() {
var last = now() - timestamp;
if (last < wait && last >= 0) {
timeout = setTimeout(later, wait - last);
} else {
timeout = null;
if (!immediate) {
result = func.apply(context, args);
if (!timeout) context = args = null;
}
}
};
return function() {
context = this;
args = arguments;
timestamp = now();
var callNow = immediate && !timeout;
if (!timeout) timeout = setTimeout(later, wait);
if (callNow) {
result = func.apply(context, args);
context = args = null;
}
return result;
};
}