filterSet factory accepts a team argument and stashes it for logging.
[mkws-moved-to-github.git] / src / mkws-filter.js
1 // Factory function for sets of filters.
2 function filterSet(team) {
3     var m_team = team;
4     var m_list = [];
5
6     var that = {};
7
8     that.list = function() {
9         return m_list;
10     };
11
12     that.add = function(filter) {
13         m_list.push(filter);
14     };
15
16     that.removeMatching = function(matchFn) {
17         var newList = [];
18         for (var i in m_list) {
19             var filter = m_list[i];
20             if (matchFn(filter)) {
21                 m_team.log("removeMatching() removing filter " + $.toJSON(filter));
22             } else {
23                 m_team.log("removeMatching() keeping filter " + $.toJSON(filter));
24                 newList.push(filter);
25             }
26         }
27         m_list = newList;
28     };
29
30     that.targetFiltered = function(id) {
31         for (var i = 0; i < m_list.length; i++) {
32             if (m_list[i].id === id ||
33                 m_list[i].id === 'pz:id=' + id) {
34                 return true;
35             }
36         }
37         return false;
38     }
39
40     return that;
41 }
42
43
44 // Factory function for filters. These can be of several types.
45 function filter(id, name, field, value) {
46     var res;
47
48     if (id) {
49         res = { id: id, name: name };
50     } else {
51         res = { field: field, value: value };
52     }
53
54     return res;
55 }