1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* Usage:
* <div matomo-multi-pair-field field1=".." field2="" ng-model="...">
*/
(function () {
angular.module('piwikApp').directive('matomoMultiPairField', matomoMultiPairField);
matomoMultiPairField.$inject = ['$document', 'piwik', '$filter'];
function matomoMultiPairField($document, piwik, $filter){
return {
restrict: 'A',
scope: {
field1: '=',
field2: '='
},
require: "?ngModel",
templateUrl: 'plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.html?cb=' + piwik.cacheBuster,
controller: 'MultiPairFieldController',
controllerAs: 'multiPairField',
compile: function (element, attrs) {
return function (scope, element, attrs, ngModel) {
if (ngModel) {
ngModel.$setViewValue(scope.formValue);
}
scope.$watch('formValue', function (newValue, oldValue) {
if (newValue != oldValue) {
element.trigger('change', newValue);
}
}, true);
if (ngModel) {
ngModel.$render = function() {
if (angular.isString(ngModel.$viewValue)) {
scope.formValue = JSON.parse(ngModel.$viewValue);
} else {
scope.formValue = ngModel.$viewValue;
}
};
}
scope.$watch('formValue', function (newValue, oldValue) {
if (ngModel) {
ngModel.$setViewValue(newValue);
}
}, true);
};
}
};
}
})();
|