1 | import { pick, omit, isObject } from './lib';
|
2 |
|
3 | export default class Controller {
|
4 |
|
5 | filterMode = 'omit';
|
6 | filter;
|
7 |
|
8 | bindMethods(array) {
|
9 | array.map(method => {
|
10 | this[method] = this['can'].bind(this);
|
11 | });
|
12 | }
|
13 |
|
14 | filtrate(target) {
|
15 | if (!target) return false;
|
16 | if (!isObject(target)) {
|
17 | throw new Error(`method "filtrate" in "BaseController" gets only object`);
|
18 | }
|
19 | let {filter, filterMode} = this;
|
20 | if (!filter) return target;
|
21 |
|
22 | switch (filterMode) {
|
23 |
|
24 | case 'omit':
|
25 | if (target.length > 0) {
|
26 | return target.map(target => {
|
27 | return omit(target, filter);
|
28 | });
|
29 | } else {
|
30 | return omit(target, filter);
|
31 | }
|
32 |
|
33 | case 'pick':
|
34 | if (target.length > 0) {
|
35 | return target.map(target => {
|
36 | return pick(target, filter);
|
37 | });
|
38 | } else {
|
39 | return pick(target, filter);
|
40 | }
|
41 |
|
42 | }
|
43 | }
|
44 |
|
45 | }
|