Completed
Push — master ( 4b5696...9476ec )
by Sander
11s
created

angular.filter(ꞌcredentialSearchꞌ)   C

Complexity

Conditions 8
Paths 10

Size

Total Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 8
c 1
b 0
f 0
nc 10
nop 1
dl 0
loc 22
rs 6.6037
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
								try {
51
									var patt = new RegExp(filter.filterText);
52
									if (patt.test(fieldValue)) {
53
										return true;
54
									}
55
								} catch (e){
56
									// Don't catch regex errors.
57
								}
58
							}
59
60
							if (fieldValue.toLowerCase().indexOf(filter.filterText.toLowerCase()) >= 0) {
61
								return true;
62
							}
63
						}
64
						return false;
65
					};
66
67
					for (var ci = 0; ci < credentials.length; ci++) {
68
						var c = credentials[ci];
69
						if (matchedWithFilter(c)) {
70
							_credentials.push(c);
71
						}
72
					}
73
					return _credentials;
74
				} else {
75
					return [];
76
				}
77
			};
78
		});
79
}());