Welcome to mirror list, hosted at ThFree Co, Russian Federation.

multipairfield.directive.js « multipairfield « angularjs « CoreHome « plugins - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d877c05609ddccb8616318cb59d7ee4ac66ddbee (plain)
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
62
63
64
/*!
 * 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: {
                name: '=',
                field1: '=',
                field2: '=',
                field3: '=',
                field4: '='
            },
            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);
                };
            }
        };
    }
})();