Project

General

Profile

1
var module = angular.module('uniqueChecker', []);
2

    
3
module.directive('uniqueTerm', function() {
4
    return {
5
      restrict: 'A',
6
      require: 'ngModel',
7
      link: function (scope, element, attrs, ngModel) {
8
	            function validateTerm() {
9
	            	ngModel.$setValidity('unique', true);
10
	            	if (!scope.modalTerm.englishName || (scope.selectedTermIndex != -1 && scope.modalTerm.englishName.toLowerCase() == scope.entries[scope.selectedTermIndex].englishName.toLowerCase())) {
11
	            		return;
12
	            	}
13
	            	for (i in scope.entries) {
14
	            		if (scope.entries[i].englishName.toLowerCase() == scope.modalTerm.englishName.toLowerCase()) {
15
	            			ngModel.$setValidity('unique', false);
16
	            			return;
17
	            		}
18
	            		for (j in scope.entries[i].synonyms) {
19
	            			if (scope.entries[i].synonyms[j].term.toLowerCase() == scope.modalTerm.englishName.toLowerCase()) {
20
		            			ngModel.$setValidity('unique', false);
21
		            			return;
22
		            		}
23
	            		}
24
	            	}
25
	            }
26
	            
27
	            // register callback (validate) for $scope.modalTerm.englishName
28
	            scope.$watch( 
29
	        		function() {
30
	        			return scope.modalTerm.englishName;
31
	        		}, validateTerm);
32
	        }
33
    };
34
});
35

    
36
module.directive('uniqueCode', function() {
37
  return {
38
    restrict: 'A',
39
    require: 'ngModel',
40
    link: function (scope, element, attrs, ngModel) {
41
	          function validateCode() {
42
		          	ngModel.$setValidity('unique', true);
43
		          	if (!scope.modalTerm.code || (scope.selectedTermIndex != -1 && scope.modalTerm.code.toLowerCase() == scope.entries[scope.selectedTermIndex].code.toLowerCase())) {
44
		          		return;
45
		          	}
46
		          	for (i in scope.entries) {
47
		          		if (scope.modalTerm.code.toLowerCase() == scope.entries[i].code.toLowerCase()) {
48
		          			ngModel.$setValidity('unique', false);
49
		          		}
50
		          	}
51
	          	}
52
	
53
	          // register callback (validate) for $scope.modalTerm.code
54
	          scope.$watch( 
55
	          		function() {
56
	          			return scope.modalTerm.code;
57
	          		}, validateCode);
58
	      	}
59
  };
60
});
61

    
62
module.directive('uniqueSynonym', function() {
63
  return {
64
    restrict: 'A',
65
    require: 'ngModel',
66
    link: function (scope, element, attrs, ngModel) {
67
	    	  function validateSynonym() {
68
	    		  ngModel.$setValidity('unique', true);
69
	          		if (!scope.modalSynonym.term || (scope.selectedSynonymIndex != -1 && scope.modalSynonym.term.toLowerCase() == scope.entries[scope.selectedTermIndex].synonyms[scope.selectedSynonymIndex].term.toLowerCase())) {
70
	          			return;
71
	          		}
72
	          		for (i in scope.entries) {
73
		          		for (j in scope.entries[i].synonyms) {
74
		          			if (scope.entries[i].synonyms[j].term.toLowerCase() == scope.modalSynonym.term.toLowerCase()) {
75
		            			ngModel.$setValidity('unique', false);
76
		            			return;
77
		            		}
78
		          		}
79
	          		}
80
	          	}
81
	          
82
	          	// register callback (validate) for $scope.modalTerm.englishName
83
	          	scope.$watch( 
84
		      		function() {
85
		      			return scope.modalSynonym.term;
86
		      		}, validateSynonym);
87
	      }
88
  };
89
});
(32-32/34)