@processor/vue
Version:
Processor vue plugin.
3 lines (2 loc) • 3.16 kB
JavaScript
var e=require("vue");function n(e){return e instanceof Array?e:[e]}exports.useProcessor=function(t){if(!e.isReactive(t))throw new Error("config must be a reactive object");var r=function(e){var t={filter:{cache:[],handler:function(e){return e},update:function(){t.filter.cache=t.filter.handler(r)}},search:{cache:[],handler:function(e){return e},update:function(){t.search.cache=t.search.handler(t.filter.cache)}},sort:{cache:[],handler:function(e){return e},update:function(){t.sort.cache=t.sort.handler(t.search.cache)}},page:{cache:{current:[],page:1,pageCount:1,total:0},handler:function(e){return{current:e,page:1,pageCount:1,total:e.length}},update:function(){t.page.cache=t.page.handler(t.sort.cache)}}},r=[],c=null;function a(e){e.forEach(function(e){t[e].update()}),c&&c(t.page.cache)}var u={load:function(e){return r=e.concat(),a(["filter","search","sort","page"]),u},filter:function(e){return t.filter.handler=function(t){return t.filter(function(t){return Object.keys(e).every(function(r){var c=t[r];return n(e[r]).some(function(e){return!function(e){return void 0!==e}(e)||function(e,n){return"function"==typeof n?n(e):n===e}(c,e)})})})},a(["filter","search","sort","page"]),u},search:function(e,n){return t.search.handler=function(t){return e?"function"==typeof e?e(t.concat()):t.filter(function(t){var r=n||Object.keys(t),c=new RegExp(e,"i");return r.some(function(e){return function(e){return e.toString?e.toString():""}(t[e]).search(c)>-1})}):t.concat()},a(["search","sort","page"]),u},sort:function(e,r){return t.sort.handler=function(t){if(t=t.concat(),"function"==typeof e)return t.sort(e);var c=n(e),a=n(r);return t.sort(function(e,n){return c.map(function(t,r){var c=["acs","ascing",void 0].includes(a[r])?1:-1;return e[t]>n[t]?c:e[t]<n[t]?-c:0}).reduce(function(e,n){return e||n},0)}),t},a(["sort","page"]),u},page:function(e,n){return void 0===n&&(n=1),t.page.handler=function(t){var r=t.length;if(!e||e<=0)return{current:t.concat(),page:1,pageCount:1,total:r};n<1&&(n=1);var c=Math.ceil(r/e);return n=Math.min(n,c),{current:t.slice((n-1)*e,n*e),page:n,total:r,pageCount:c}},a(["page"]),u},onUpdate:function(e){return c=e,u},exec:function(){return a(["filter","search","sort","page"]),t.page.cache}};return u}(),c=e.ref(null),a=e.ref(0),u=e.ref(0),o=e.ref(0),i=e.ref(0);function f(){t.source?r.load(t.source):(c.value=null,a.value=0,u.value=0,o.value=0)}function l(){void 0!==t.searchOption&&r.search(t.searchOption,t.searchFields)}function s(){t.filterOption&&r.filter(t.filterOption)}function h(){t.sortOption&&r.sort(t.sortOption,t.sortOrder)}function p(){r.page(t.pageSize,u.value)}function d(e){c.value=e.current,a.value=e.total,u.value=e.page,i.value=e.pageCount}return e.watch(function(){return t.source},f,{deep:!0}),e.watch([function(){return t.searchOption},t.searchFields],l,{deep:!0}),e.watch(function(){return t.filterOption},s,{deep:!0}),e.watch([function(){return t.sortOption},function(){return t.sortOrder}],h,{deep:!0}),e.watch([function(){return t.pageSize},u],p),r.onUpdate(d),e.onBeforeMount(function(){f(),l(),s(),h(),p(),d(r.exec())}),{data:c,total:a,currentPage:u,pageCount:i}};
//# sourceMappingURL=index.js.map