Completed
Pull Request — master (#161)
by Sander
06:19
created

angular.filter(ꞌcredentialSearchꞌ)   B

Complexity

Conditions 6
Paths 6

Size

Total Lines 40

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
nc 6
nop 2
dl 0
loc 40
rs 8.439
c 0
b 0
f 0
1
/**
2
 * Nextcloud - passman
3
 *
4
 * @copyright Copyright (c) 2016, Sander Brand ([email protected])
5
 * @copyright Copyright (c) 2016, Marcos Zuriaga Miguel ([email protected])
6
 * @license GNU AGPL version 3 or any later version
7
 *
8
 * This program is free software: you can redistribute it and/or modify
9
 * it under the terms of the GNU Affero General Public License as
10
 * published by the Free Software Foundation, either version 3 of the
11
 * License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU Affero General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Affero General Public License
19
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
 *
21
 */
22
23
(function () {
24
	'use strict';
25
	/**
26
	 * @ngdoc filter
27
	 * @name passmanApp.filter:selectedTags
28
	 * @function
29
	 * @description
30
	 * # selectedTags
31
	 * Filter in the passmanApp.
32
	 */
33
	angular.module('passmanApp')
34
		.filter('credentialSearch', function () {
35
			return function (credentials, filter) {
36
				var _credentials = [];
37
				if (credentials) {
38
					if (!filter) {
39
						return credentials;
40
					}
41
					if (filter.filterText.trim() === "") {
42
						return credentials;
43
					}
44
					var matchedWithFilter = function (c) {
45
						for (var f = 0; f < filter.fields.length; f++) {
46
							var field = filter.fields[f];
47
							var fieldValue = (typeof c[field] === 'string') ? c[field] : JSON.stringify(c[field]);
48
49
							if (filter.hasOwnProperty('useRegex') && filter.useRegex === true) {
50
								var patt;
51
								patt = new RegExp(filter.filterText);
52
								if (patt.test(fieldValue)) {
53
									return true;
54
								}
55
							}
56
57
							if (fieldValue.toLowerCase().indexOf(filter.filterText.toLowerCase()) >= 0) {
58
								return true;
59
							}
60
						}
61
						return false;
62
					};
63
64
					for (var ci = 0; ci < credentials.length; ci++) {
65
						var c = credentials[ci];
66
						if (matchedWithFilter(c)) {
67
							_credentials.push(c);
68
						}
69
					}
70
					return _credentials;
71
				} else {
72
					return [];
73
				}
74
			};
75
		});
76
}());