diff options
48 files changed, 1144 insertions, 374 deletions
diff --git a/package-lock.json b/package-lock.json index 793914e3b2..4c59f2a872 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,6 +37,7 @@ "devDependencies": { "@types/angular": "^1.8.2", "@types/jest": "^26.0.24", + "@types/materialize-css": "^1.0.11", "@typescript-eslint/eslint-plugin": "^4.29.3", "@typescript-eslint/parser": "^4.29.3", "@vue/cli-plugin-babel": "^4.5.13", @@ -4096,6 +4097,16 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "node_modules/@types/materialize-css": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@types/materialize-css/-/materialize-css-1.0.11.tgz", + "integrity": "sha512-V7/jSwuq6QrWAjzA2dkZhlqzrrcxcjB+RDfwhw8CosNYZgb+FaAJmmB6t7CT7SRFNRRSxG839e6iK32Vq6sZrQ==", + "dev": true, + "dependencies": { + "@types/jquery": "*", + "cash-dom": "*" + } + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -12676,6 +12687,12 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "node_modules/cash-dom": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cash-dom/-/cash-dom-8.1.0.tgz", + "integrity": "sha512-QTa50rFuPaX8klEDEbwLr+jVutwpvZEBQ0NpMMyng+je7gNe9Bz/JsOLHIG24tvNSSSIN/Q1QD0bnF6PQzWKHA==", + "dev": true + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -37850,6 +37867,16 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "@types/materialize-css": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@types/materialize-css/-/materialize-css-1.0.11.tgz", + "integrity": "sha512-V7/jSwuq6QrWAjzA2dkZhlqzrrcxcjB+RDfwhw8CosNYZgb+FaAJmmB6t7CT7SRFNRRSxG839e6iK32Vq6sZrQ==", + "dev": true, + "requires": { + "@types/jquery": "*", + "cash-dom": "*" + } + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -44877,6 +44904,12 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "cash-dom": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cash-dom/-/cash-dom-8.1.0.tgz", + "integrity": "sha512-QTa50rFuPaX8klEDEbwLr+jVutwpvZEBQ0NpMMyng+je7gNe9Bz/JsOLHIG24tvNSSSIN/Q1QD0bnF6PQzWKHA==", + "dev": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", diff --git a/package.json b/package.json index 96e973ec2e..e3bf6380ac 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "devDependencies": { "@types/angular": "^1.8.2", "@types/jest": "^26.0.24", + "@types/materialize-css": "^1.0.11", "@typescript-eslint/eslint-plugin": "^4.29.3", "@typescript-eslint/parser": "^4.29.3", "@vue/cli-plugin-babel": "^4.5.13", diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php index 1992b79e0c..ce05e819bc 100644 --- a/plugins/CoreHome/CoreHome.php +++ b/plugins/CoreHome/CoreHome.php @@ -147,7 +147,7 @@ class CoreHome extends \Piwik\Plugin $stylesheets[] = "plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.less"; $stylesheets[] = "plugins/CoreHome/angularjs/period-selector/period-selector.directive.less"; $stylesheets[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.less"; - $stylesheets[] = "plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.less"; + $stylesheets[] = "plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.less"; $stylesheets[] = "plugins/CoreHome/angularjs/sparkline/sparkline.component.less"; $stylesheets[] = "plugins/CoreHome/angularjs/field-array/field-array.directive.less"; $stylesheets[] = "plugins/CoreHome/vue/src/Comparisons/Comparisons.less"; @@ -211,10 +211,8 @@ class CoreHome extends \Piwik\Plugin $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/field-condition.js"; $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/show-sensitive-data.js"; $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/autocomplete-matched.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js"; $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/ignore-click.js"; $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/onenter.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/focusif.js"; $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/translate.js"; $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/dropdown-button.js"; $jsFiles[] = "plugins/CoreHome/angularjs/common/directives/select-on-focus.js"; @@ -234,7 +232,6 @@ class CoreHome extends \Piwik\Plugin $jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector.controller.js"; $jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector.directive.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js"; $jsFiles[] = "plugins/CoreHome/angularjs/content-intro/content-intro.directive.js"; @@ -274,8 +271,6 @@ class CoreHome extends \Piwik\Plugin $jsFiles[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.js"; $jsFiles[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.controller.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/field-array/field-array.directive.js"; $jsFiles[] = "plugins/CoreHome/angularjs/field-array/field-array.controller.js"; diff --git a/plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js b/plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js deleted file mode 100644 index 4b210b2974..0000000000 --- a/plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js +++ /dev/null @@ -1,76 +0,0 @@ -/*! - * Matomo - free/libre analytics platform - * - * @link https://matomo.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */ - -/** - * The given expression will be executed when the user presses either escape or presses something outside - * of this element - * - * Example: - * <div piwik-focus-anywhere-but-here="closeDialog()">my dialog</div> - */ -(function () { - angular.module('piwikApp.directive').directive('piwikFocusAnywhereButHere', piwikFocusAnywhereButHere); - - piwikFocusAnywhereButHere.$inject = ['$document']; - - function piwikFocusAnywhereButHere($document){ - return { - restrict: 'A', - link: function(scope, element, attr, ctrl) { - - var isMouseDown = false; - var hasScrolled = false; - - function onClickOutsideElement (event) { - var hadUsedScrollbar = isMouseDown && hasScrolled; - isMouseDown = false; - hasScrolled = false; - - if (hadUsedScrollbar) { - return; - } - - if (element.has(event.target).length === 0) { - setTimeout(function () { - scope.$apply(attr.piwikFocusAnywhereButHere); - }, 0); - } - } - - function onScroll (event) { - hasScrolled = true; - } - - function onMouseDown (event) { - isMouseDown = true; - hasScrolled = false; - } - - function onEscapeHandler (event) { - if (event.which === 27) { - setTimeout(function () { - isMouseDown = false; - hasScrolled = false; - scope.$apply(attr.piwikFocusAnywhereButHere); - }, 0); - } - } - - $document.on('keyup', onEscapeHandler); - $document.on('mousedown', onMouseDown); - $document.on('mouseup', onClickOutsideElement); - $document.on('scroll', onScroll); - scope.$on('$destroy', function() { - $document.off('keyup', onEscapeHandler); - $document.off('mousedown', onMouseDown); - $document.off('mouseup', onClickOutsideElement); - $document.off('scroll', onScroll); - }); - } - }; - } -})(); diff --git a/plugins/CoreHome/angularjs/common/directives/focusif.js b/plugins/CoreHome/angularjs/common/directives/focusif.js deleted file mode 100644 index 8db12603b6..0000000000 --- a/plugins/CoreHome/angularjs/common/directives/focusif.js +++ /dev/null @@ -1,33 +0,0 @@ -/*! - * Matomo - free/libre analytics platform - * - * @link https://matomo.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */ - -/** - * If the given expression evaluates to true the element will be focused - * - * Example: - * <input type="text" piwik-focus-if="view.editName"> - */ -(function () { - angular.module('piwikApp.directive').directive('piwikFocusIf', piwikFocusIf); - - piwikFocusIf.$inject = ['$timeout']; - - function piwikFocusIf($timeout) { - return { - restrict: 'A', - link: function(scope, element, attrs) { - scope.$watch(attrs.piwikFocusIf, function(newValue, oldValue) { - if (newValue) { - $timeout(function () { - element[0].focus(); - }, 5); - } - }); - } - }; - } -})(); diff --git a/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js b/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js deleted file mode 100644 index 8829b671a5..0000000000 --- a/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.js +++ /dev/null @@ -1,56 +0,0 @@ -/*! - * Matomo - free/libre analytics platform - * - * @link https://matomo.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */ - -/** - * A materializecss dropdown menu that supports submenus. - * - * To use a submenu, just use this directive within another dropdown. - * - * Note: if submenus are used, then dropdowns will never scroll. - * - * Usage: - * <a class='dropdown-trigger btn' href='' data-target='mymenu' piwik-dropdown-menu>Menu</a> - * <ul id='mymenu' class='dropdown-content'> - * <li> - * <a class='dropdown-trigger' data-target="mysubmenu" piwik-dropdown-menu>Submenu</a> - * <ul id="mysubmenu" class="dropdown-content"> - * <li>Submenu Item</li> - * </ul> - * </li> - * <li> - * <a href="">Another item</a> - * </li> - * </ul> - */ -(function () { - angular.module('piwikApp').directive('piwikDropdownMenu', piwikDropdownMenu); - - piwikDropdownMenu.$inject = ['$timeout']; - - function piwikDropdownMenu($timeout){ - return { - restrict: 'A', - link: function (scope, element, attrs) { - var options = {}; - - var isSubmenu = !! element.parent().closest('.dropdown-content').length; - if (isSubmenu) { - options = { hover: true }; - element.addClass('submenu'); - angular.element('#' + attrs.activates).addClass('submenu-dropdown-content'); - - // if a submenu is used, the dropdown will never scroll - element.parents('.dropdown-content').addClass('submenu-container'); - } - - $timeout(function () { - element.dropdown(options); - }); - } - }; - } -})();
\ No newline at end of file diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html b/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html deleted file mode 100644 index cbfbbb1ae1..0000000000 --- a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html +++ /dev/null @@ -1,33 +0,0 @@ -<div piwik-focus-anywhere-but-here="view.showItems=false" class="menuDropdown"> - - <span class="title" - ng-click="view.showItems=!view.showItems" - title="{{ tooltip }}"> - <span ng-bind-html="menuTitle"></span> - <span class="icon-arrow-bottom"></span> - </span> - - <div class="items" ng-show="view.showItems"> - <div class="search" ng-if="showSearch && view.showItems"> - <input type="text" - piwik-focus-if="view.showItems" - ng-model="view.searchTerm" - placeholder="{{ 'General_Search'|translate }}" - ng-change="searchItems(view.searchTerm)"> - - <img title="{{ 'General_Search'|translate }}" - ng-show="!view.searchTerm" - class="search_ico" - src="plugins/Morpheus/images/search_ico.png"/> - <img title="{{ 'General_Clear'|translate }}" - ng-show="view.searchTerm" - ng-click="view.searchTerm='';searchItems('')" - class="reset" - src="plugins/CoreHome/images/reset_search.png"/> - </div> - <div ng-transclude ng-click="selectItem($event)"> - - </div> - </div> - -</div>
\ No newline at end of file diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js b/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js deleted file mode 100644 index f51ce2abcf..0000000000 --- a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js +++ /dev/null @@ -1,76 +0,0 @@ -/*! - * 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 piwik-menudropdown menu-title="MyMenuItem" tooltip="My Tooltip" show-search="false"> - * <a class="item" href="/url">An Item</a> - * <a class="item disabled">Disabled</a> - * <a class="item active">Active item</a> - * <hr class="item separator"/> - * <a class="item disabled category">Category</a> - * <a class="item" href="/url"></a> - * </div> - */ -(function () { - angular.module('piwikApp').directive('piwikMenudropdown', piwikMenudropdown); - - function piwikMenudropdown(){ - - return { - transclude: true, - replace: true, - restrict: 'A', - scope: { - menuTitle: '@', - tooltip: '@', - showSearch: '=', - menuTitleChangeOnClick: '=' - }, - templateUrl: 'plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html?cb=' + piwik.cacheBuster, - link: function(scope, element, attrs) { - - scope.selectItem = function (event) { - var $self = angular.element(event.target); - - if (!$self.hasClass('item') || $self.hasClass('disabled') || $self.hasClass('separator')) { - return; - } - - if (scope.menuTitleChangeOnClick !== false) { - scope.menuTitle = $self.text().replace(/[\u0000-\u2666]/g, function(c) { - return '&#'+c.charCodeAt(0)+';'; - }); - } - scope.$eval('view.showItems = false'); - - setTimeout(function () { - scope.$apply(); - }, 0); - - element.find('.item').removeClass('active'); - $self.addClass('active'); - }; - - scope.searchItems = function (searchTerm) - { - searchTerm = searchTerm.toLowerCase(); - - element.find('.item').each(function (index, node) { - var $node = angular.element(node); - - if (-1 === $node.text().toLowerCase().indexOf(searchTerm)) { - $node.hide(); - } else { - $node.show(); - } - }); - }; - } - }; - } -})(); diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js index 00d50f2dbc..c649e0ca8b 100644 --- a/plugins/CoreHome/vue/dist/CoreHome.umd.js +++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js @@ -146,12 +146,16 @@ __webpack_require__.d(__webpack_exports__, "format", function() { return /* reex __webpack_require__.d(__webpack_exports__, "getToday", function() { return /* reexport */ getToday; }); __webpack_require__.d(__webpack_exports__, "parseDate", function() { return /* reexport */ parseDate; }); __webpack_require__.d(__webpack_exports__, "todayIsInRange", function() { return /* reexport */ todayIsInRange; }); +__webpack_require__.d(__webpack_exports__, "Dropdown", function() { return /* reexport */ DropdownMenu; }); +__webpack_require__.d(__webpack_exports__, "FocusAnywhereButHere", function() { return /* reexport */ FocusAnywhereButHere; }); +__webpack_require__.d(__webpack_exports__, "FocusIf", function() { return /* reexport */ FocusIf; }); __webpack_require__.d(__webpack_exports__, "MatomoDialog", function() { return /* reexport */ MatomoDialog; }); __webpack_require__.d(__webpack_exports__, "ExpandOnClick", function() { return /* reexport */ ExpandOnClick; }); __webpack_require__.d(__webpack_exports__, "ExpandOnHover", function() { return /* reexport */ ExpandOnHover; }); __webpack_require__.d(__webpack_exports__, "EnrichedHeadline", function() { return /* reexport */ EnrichedHeadline; }); __webpack_require__.d(__webpack_exports__, "ContentBlock", function() { return /* reexport */ ContentBlock; }); __webpack_require__.d(__webpack_exports__, "Comparisons", function() { return /* reexport */ Comparisons; }); +__webpack_require__.d(__webpack_exports__, "Menudropdown", function() { return /* reexport */ Menudropdown; }); __webpack_require__.d(__webpack_exports__, "DatePicker", function() { return /* reexport */ DatePicker; }); __webpack_require__.d(__webpack_exports__, "DateRangePicker", function() { return /* reexport */ DateRangePicker; }); __webpack_require__.d(__webpack_exports__, "PeriodDatePicker", function() { return /* reexport */ PeriodDatePicker; }); @@ -1842,6 +1846,264 @@ function ajaxQueue() { } angular.module('piwikApp.service').service('globalAjaxQueue', ajaxQueue); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +/** + * A materializecss dropdown menu that supports submenus. + * + * To use a submenu, just use this directive within another dropdown. + * + * Note: if submenus are used, then dropdowns will never scroll. + * + * Usage: + * <a class='dropdown-trigger btn' href='' data-target='mymenu' v-dropdown-menu>Menu</a> + * <ul id='mymenu' class='dropdown-content'> + * <li> + * <a class='dropdown-trigger' data-target="mysubmenu" v-dropdown-menu>Submenu</a> + * <ul id="mysubmenu" class="dropdown-content"> + * <li>Submenu Item</li> + * </ul> + * </li> + * <li> + * <a href="">Another item</a> + * </li> + * </ul> + */ +/* harmony default export */ var DropdownMenu = ({ + mounted: function mounted(element, binding) { + var options = {}; + $(element).addClass('matomo-dropdown-menu'); + var isSubmenu = !!$(element).parent().closest('.dropdown-content').length; + + if (isSubmenu) { + options = { + hover: true + }; + $(element).addClass('submenu'); + $(binding.value.activates).addClass('submenu-dropdown-content'); // if a submenu is used, the dropdown will never scroll + + $(element).parents('.dropdown-content').addClass('submenu-container'); + } + + $(element).dropdown(options); + } +}); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + + +function piwikDropdownMenu($timeout) { + return { + restrict: 'A', + link: function piwikDropdownMenuLink(scope, element, attrs) { + var binding = { + instance: null, + value: { + activates: $("#".concat(attrs.activates))[0] + }, + oldValue: null, + modifiers: {}, + dir: {} + }; + $timeout(function () { + DropdownMenu.mounted(element[0], binding); + }); + } + }; +} + +piwikDropdownMenu.$inject = ['$timeout']; +angular.module('piwikApp').directive('piwikDropdownMenu', piwikDropdownMenu); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +function onClickOutsideElement(element, binding, event) { + var hadUsedScrollbar = binding.value.isMouseDown && binding.value.hasScrolled; + binding.value.isMouseDown = false; + binding.value.hasScrolled = false; + + if (hadUsedScrollbar) { + return; + } + + if (!element.contains(event.target)) { + if (binding.value) { + binding.value.blur(); + } + } +} + +function onScroll(element, binding) { + binding.value.hasScrolled = true; +} + +function onMouseDown(element, binding) { + binding.value.isMouseDown = true; + binding.value.hasScrolled = false; +} + +function onEscapeHandler(element, binding, event) { + if (event.which === 27) { + setTimeout(function () { + binding.value.isMouseDown = false; + binding.value.hasScrolled = false; + + if (binding.value.blur) { + binding.value.blur(); + } + }, 0); + } +} + +var doc = document.documentElement; +/** + * Usage (in a component): + * + * directives: { + * // function call is important since we store state in this directive + * FocusAnywhereButHere: FocusAnywhereButHere(), + * } + * + * Note: the binding data needs to be static, changes will not be handled. + */ + +/* harmony default export */ var FocusAnywhereButHere = ({ + mounted: function mounted(el, binding) { + binding.value.isMouseDown = false; + binding.value.hasScrolled = false; + binding.value.onEscapeHandler = onEscapeHandler.bind(null, el, binding); + binding.value.onMouseDown = onMouseDown.bind(null, el, binding); + binding.value.onClickOutsideElement = onClickOutsideElement.bind(null, el, binding); + binding.value.onScroll = onScroll.bind(null, el, binding); + doc.addEventListener('keyup', binding.value.onEscapeHandler); + doc.addEventListener('mousedown', binding.value.onMouseDown); + doc.addEventListener('mouseup', binding.value.onClickOutsideElement); + doc.addEventListener('scroll', binding.value.onScroll); + }, + unmounted: function unmounted(el, binding) { + doc.removeEventListener('keyup', binding.value.onEscapeHandler); + doc.removeEventListener('mousedown', binding.value.onMouseDown); + doc.removeEventListener('mouseup', binding.value.onClickOutsideElement); + doc.removeEventListener('scroll', binding.value.onScroll); + } +}); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +/** + * The given expression will be executed when the user presses either escape or presses something + * outside of this element + * + * Example: + * <div piwik-focus-anywhere-but-here="closeDialog()">my dialog</div> + */ + +function piwikFocusAnywhereButHere() { + return { + restrict: 'A', + link: function focusAnywhereButHereLink(scope, element, attr) { + var binding = { + instance: null, + value: { + blur: function blur() { + setTimeout(function () { + scope.$apply(attr.piwikFocusAnywhereButHere); + }, 0); + } + }, + oldValue: null, + modifiers: {}, + dir: {} + }; + FocusAnywhereButHere.mounted(element[0], binding); + element.on('$destroy', function () { + return FocusAnywhereButHere.unmounted(element[0], binding); + }); + } + }; +} + +piwikFocusAnywhereButHere.$inject = []; +angular.module('piwikApp.directive').directive('piwikFocusAnywhereButHere', piwikFocusAnywhereButHere); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FocusIf/FocusIf.ts +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +/* harmony default export */ var FocusIf = ({ + updated: function updated(el, binding) { + if (binding.value.focusIf) { + setTimeout(function () { + el.focus(); + + if (binding.value.afterFocus) { + binding.value.afterFocus(); + } + }, 5); + } + } +}); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +/** + * If the given expression evaluates to true the element will be focused + * + * Example: + * <input type="text" piwik-focus-if="view.editName"> + */ + +function piwikFocusIf() { + return { + restrict: 'A', + link: function focusIfLink(scope, element, attrs) { + scope.$watch(attrs.piwikFocusIf, function (newValue) { + var binding = { + instance: null, + value: { + focusIf: !!newValue, + afterFocus: function afterFocus() { + return scope.$apply(); + } + }, + oldValue: null, + modifiers: {}, + dir: {} + }; + FocusIf.updated(element[0], binding); + }); + } + }; +} + +angular.module('piwikApp.directive').directive('piwikFocusIf', piwikFocusIf); // CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.ts /*! * Matomo - free/libre analytics platform @@ -1860,7 +2122,7 @@ function onExpand(element) { } } -function onClickOutsideElement(element, binding, event) { +function ExpandOnClick_onClickOutsideElement(element, binding, event) { var hadUsedScrollbar = binding.value.isMouseDown && binding.value.hasScrolled; binding.value.isMouseDown = false; binding.value.hasScrolled = false; @@ -1874,16 +2136,16 @@ function onClickOutsideElement(element, binding, event) { } } -function onScroll(binding) { +function ExpandOnClick_onScroll(binding) { binding.value.hasScrolled = true; } -function onMouseDown(binding) { +function ExpandOnClick_onMouseDown(binding) { binding.value.isMouseDown = true; binding.value.hasScrolled = false; } -function onEscapeHandler(element, binding, event) { +function ExpandOnClick_onEscapeHandler(element, binding, event) { if (event.which === 27) { binding.value.isMouseDown = false; binding.value.hasScrolled = false; @@ -1891,7 +2153,7 @@ function onEscapeHandler(element, binding, event) { } } -var doc = document.documentElement; +var ExpandOnClick_doc = document.documentElement; /** * Usage (in a component): * @@ -1906,22 +2168,22 @@ var doc = document.documentElement; binding.value.isMouseDown = false; binding.value.hasScrolled = false; binding.value.onExpand = onExpand.bind(null, el); - binding.value.onEscapeHandler = onEscapeHandler.bind(null, el, binding); - binding.value.onMouseDown = onMouseDown.bind(null, binding); - binding.value.onClickOutsideElement = onClickOutsideElement.bind(null, el, binding); - binding.value.onScroll = onScroll.bind(null, binding); + binding.value.onEscapeHandler = ExpandOnClick_onEscapeHandler.bind(null, el, binding); + binding.value.onMouseDown = ExpandOnClick_onMouseDown.bind(null, binding); + binding.value.onClickOutsideElement = ExpandOnClick_onClickOutsideElement.bind(null, el, binding); + binding.value.onScroll = ExpandOnClick_onScroll.bind(null, binding); binding.value.expander.addEventListener('click', binding.value.onExpand); - doc.addEventListener('keyup', binding.value.onEscapeHandler); - doc.addEventListener('mousedown', binding.value.onMouseDown); - doc.addEventListener('mouseup', binding.value.onClickOutsideElement); - doc.addEventListener('scroll', binding.value.onScroll); + ExpandOnClick_doc.addEventListener('keyup', binding.value.onEscapeHandler); + ExpandOnClick_doc.addEventListener('mousedown', binding.value.onMouseDown); + ExpandOnClick_doc.addEventListener('mouseup', binding.value.onClickOutsideElement); + ExpandOnClick_doc.addEventListener('scroll', binding.value.onScroll); }, unmounted: function unmounted(el, binding) { binding.value.expander.removeEventListener('click', binding.value.onExpand); - doc.removeEventListener('keyup', binding.value.onEscapeHandler); - doc.removeEventListener('mousedown', binding.value.onMouseDown); - doc.removeEventListener('mouseup', binding.value.onClickOutsideElement); - doc.removeEventListener('scroll', binding.value.onScroll); + ExpandOnClick_doc.removeEventListener('keyup', binding.value.onEscapeHandler); + ExpandOnClick_doc.removeEventListener('mousedown', binding.value.onMouseDown); + ExpandOnClick_doc.removeEventListener('mouseup', binding.value.onClickOutsideElement); + ExpandOnClick_doc.removeEventListener('scroll', binding.value.onScroll); } }); // CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts @@ -1945,10 +2207,9 @@ function piwikExpandOnClick() { modifiers: {}, dir: {} }; - var wrapped = ExpandOnClick; - wrapped.mounted(element[0], binding); + ExpandOnClick.mounted(element[0], binding); element.on('$destroy', function () { - return wrapped.unmounted(element[0], binding); + return ExpandOnClick.unmounted(element[0], binding); }); } }; @@ -2039,10 +2300,9 @@ function piwikExpandOnHover() { modifiers: {}, dir: {} }; - var wrapped = ExpandOnHover; - wrapped.mounted(element[0], binding); + ExpandOnHover.mounted(element[0], binding); element.on('$destroy', function () { - return wrapped.unmounted(element[0], binding); + return ExpandOnHover.unmounted(element[0], binding); }); } }; @@ -3154,6 +3414,11 @@ var Comparisons_store_ComparisonsStore = /*#__PURE__*/function () { key: "getAllSeriesColors", value: function getAllSeriesColors() { var ColorManager = Matomo_Matomo.ColorManager; + + if (!ColorManager) { + return []; + } + var seriesColorNames = []; for (var i = 0; i < SERIES_COLOR_COUNT; i += 1) { @@ -3171,6 +3436,13 @@ var Comparisons_store_ComparisonsStore = /*#__PURE__*/function () { value: function loadComparisonsDisabledFor() { var _this3 = this; + var matomoModule = src_MatomoUrl_MatomoUrl.parsed.value.module; + + if (matomoModule === 'CoreUpdater' || matomoModule === 'Installation') { + this.privateState.comparisonsDisabledFor = []; + return; + } + AjaxHelper_AjaxHelper.fetch({ module: 'API', method: 'API.getPagesComparisonsDisabledFor' @@ -3531,6 +3803,189 @@ angular.module('piwikApp.service').factory('piwikComparisonsService', Comparison directiveName: 'piwikComparisons', restrict: 'E' })); +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue?vue&type=template&id=6bbbef32 + +var Menudropdownvue_type_template_id_6bbbef32_hoisted_1 = { + ref: "root", + class: "menuDropdown" +}; +var Menudropdownvue_type_template_id_6bbbef32_hoisted_2 = ["title"]; +var Menudropdownvue_type_template_id_6bbbef32_hoisted_3 = ["innerHTML"]; + +var Menudropdownvue_type_template_id_6bbbef32_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + class: "icon-arrow-bottom" +}, null, -1); + +var Menudropdownvue_type_template_id_6bbbef32_hoisted_5 = { + class: "items" +}; +var Menudropdownvue_type_template_id_6bbbef32_hoisted_6 = { + key: 0, + class: "search" +}; +var Menudropdownvue_type_template_id_6bbbef32_hoisted_7 = ["placeholder"]; +var Menudropdownvue_type_template_id_6bbbef32_hoisted_8 = ["title"]; +var Menudropdownvue_type_template_id_6bbbef32_hoisted_9 = ["title"]; +function Menudropdownvue_type_template_id_6bbbef32_render(_ctx, _cache, $props, $setup, $data, $options) { + var _directive_focus_anywhere_but_here = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("focus-anywhere-but-here"); + + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Menudropdownvue_type_template_id_6bbbef32_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + class: "title", + onClick: _cache[0] || (_cache[0] = function ($event) { + return _ctx.showItems = !_ctx.showItems; + }), + title: _ctx.tooltip + }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + innerHTML: _ctx.$sanitize(this.actualMenuTitle) + }, null, 8, Menudropdownvue_type_template_id_6bbbef32_hoisted_3), Menudropdownvue_type_template_id_6bbbef32_hoisted_4], 8, Menudropdownvue_type_template_id_6bbbef32_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", Menudropdownvue_type_template_id_6bbbef32_hoisted_5, [_ctx.showSearch && _ctx.showItems ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Menudropdownvue_type_template_id_6bbbef32_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", { + type: "text", + "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) { + return _ctx.searchTerm = $event; + }), + onKeydown: _cache[2] || (_cache[2] = function ($event) { + return _ctx.onSearchTermKeydown($event); + }), + placeholder: _ctx.translate('General_Search') + }, null, 40, Menudropdownvue_type_template_id_6bbbef32_hoisted_7), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", { + class: "search_ico", + src: "plugins/Morpheus/images/search_ico.png", + title: _ctx.translate('General_Search') + }, null, 8, Menudropdownvue_type_template_id_6bbbef32_hoisted_8), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.searchTerm]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", { + onClick: _cache[3] || (_cache[3] = function ($event) { + _ctx.searchTerm = ''; + + _ctx.searchItems(''); + }), + class: "reset", + src: "plugins/CoreHome/images/reset_search.png", + title: _ctx.translate('General_Clear') + }, null, 8, Menudropdownvue_type_template_id_6bbbef32_hoisted_9), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", { + onClick: _cache[4] || (_cache[4] = function ($event) { + return _ctx.selectItem($event); + }) + }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default")])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showItems]])], 512)), [[_directive_focus_anywhere_but_here, { + blur: _ctx.lostFocus + }]]); +} +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue?vue&type=template&id=6bbbef32 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue?vue&type=script&lang=ts + + + +var Menudropdownvue_type_script_lang_ts_window = window, + Menudropdownvue_type_script_lang_ts_$ = Menudropdownvue_type_script_lang_ts_window.$; +/* harmony default export */ var Menudropdownvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + menuTitle: String, + tooltip: String, + showSearch: Boolean, + menuTitleChangeOnClick: String + }, + directives: { + FocusAnywhereButHere: FocusAnywhereButHere, + FocusIf: FocusIf + }, + emits: ['afterSelect'], + watch: { + menuTitle: function menuTitle() { + this.actualMenuTitle = this.menuTitle; + } + }, + data: function data() { + return { + showItems: false, + searchTerm: '', + actualMenuTitle: this.menuTitle + }; + }, + methods: { + lostFocus: function lostFocus() { + this.showItems = false; + }, + selectItem: function selectItem(event) { + var targetClasses = event.target.classList; + + if (!targetClasses.contains('item') || targetClasses.contains('disabled') || targetClasses.contains('separator')) { + return; + } + + if (this.menuTitleChangeOnClick !== false) { + this.actualMenuTitle = event.target.textContent.replace(/[\u0000-\u2666]/g, function (c) { + return "&#".concat(c.charCodeAt(0), ";"); + }); // eslint-disable-line + } + + this.showItems = false; + Menudropdownvue_type_script_lang_ts_$(this.$slots.default()).find('.item').removeClass('active'); + targetClasses.add('active'); + this.$emit('afterSelect'); + }, + onSearchTermKeydown: function onSearchTermKeydown() { + var _this = this; + + setTimeout(function () { + _this.searchItems(_this.searchTerm); + }); + }, + searchItems: function searchItems(unprocessedSearchTerm) { + var searchTerm = unprocessedSearchTerm.toLowerCase(); + Menudropdownvue_type_script_lang_ts_$(this.$refs.root).find('.item').each(function (index, node) { + var $node = Menudropdownvue_type_script_lang_ts_$(node); + + if ($node.text().toLowerCase().indexOf(searchTerm) === -1) { + $node.hide(); + } else { + $node.show(); + } + }); + } + } +})); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue + + + +Menudropdownvue_type_script_lang_ts.render = Menudropdownvue_type_template_id_6bbbef32_render + +/* harmony default export */ var Menudropdown = (Menudropdownvue_type_script_lang_ts); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + + +/* harmony default export */ var Menudropdown_adapter = (createAngularJsAdapter({ + component: Menudropdown, + scope: { + menuTitle: { + angularJsBind: '@' + }, + tooltip: { + angularJsBind: '@' + }, + showSearch: { + angularJsBind: '=' + }, + menuTitleChangeOnClick: { + angularJsBind: '=' + } + }, + directiveName: 'piwikMenudropdown', + transclude: true, + events: { + 'after-select': function afterSelect($event, scope) { + setTimeout(function () { + scope.$apply(); + }, 0); + } + } +})); // CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/DatePicker/DatePicker.vue?vue&type=template&id=c8c462d2 var DatePickervue_type_template_id_c8c462d2_hoisted_1 = { @@ -4452,6 +4907,14 @@ Alertvue_type_script_lang_ts.render = Alertvue_type_template_id_c3863ae2_render + + + + + + + + // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js index c5a9368621..381689e5a0 100644 --- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js +++ b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js @@ -4,13 +4,13 @@ * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"createAngularJsAdapter",(function(){return st})),n.d(t,"activityIndicatorAdapter",(function(){return Qn})),n.d(t,"ActivityIndicator",(function(){return Gn})),n.d(t,"translate",(function(){return P})),n.d(t,"alertAdapter",(function(){return Xn})),n.d(t,"AjaxHelper",(function(){return He})),n.d(t,"MatomoUrl",(function(){return ke})),n.d(t,"Matomo",(function(){return j})),n.d(t,"Periods",(function(){return p})),n.d(t,"Day",(function(){return Q})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return se})),n.d(t,"Range",(function(){return L})),n.d(t,"format",(function(){return C})),n.d(t,"getToday",(function(){return S})),n.d(t,"parseDate",(function(){return E})),n.d(t,"todayIsInRange",(function(){return T})),n.d(t,"MatomoDialog",(function(){return Xe})),n.d(t,"ExpandOnClick",(function(){return Ve})),n.d(t,"ExpandOnHover",(function(){return Qe})),n.d(t,"EnrichedHeadline",(function(){return Pt})),n.d(t,"ContentBlock",(function(){return $t})),n.d(t,"Comparisons",(function(){return wn})),n.d(t,"DatePicker",(function(){return In})),n.d(t,"DateRangePicker",(function(){return Nn})),n.d(t,"PeriodDatePicker",(function(){return Ln})),"undefined"!==typeof window){var r=window.document.currentScript,a=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}n("2342");var o=n("8bbf");function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"createAngularJsAdapter",(function(){return yt})),n.d(t,"activityIndicatorAdapter",(function(){return br})),n.d(t,"ActivityIndicator",(function(){return gr})),n.d(t,"translate",(function(){return C})),n.d(t,"alertAdapter",(function(){return Or})),n.d(t,"AjaxHelper",(function(){return He})),n.d(t,"MatomoUrl",(function(){return ke})),n.d(t,"Matomo",(function(){return j})),n.d(t,"Periods",(function(){return p})),n.d(t,"Day",(function(){return Q})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return se})),n.d(t,"Range",(function(){return R})),n.d(t,"format",(function(){return P})),n.d(t,"getToday",(function(){return S})),n.d(t,"parseDate",(function(){return E})),n.d(t,"todayIsInRange",(function(){return T})),n.d(t,"Dropdown",(function(){return Ae})),n.d(t,"FocusAnywhereButHere",(function(){return Re})),n.d(t,"FocusIf",(function(){return _e})),n.d(t,"MatomoDialog",(function(){return ct})),n.d(t,"ExpandOnClick",(function(){return Ke})),n.d(t,"ExpandOnHover",(function(){return at})),n.d(t,"EnrichedHeadline",(function(){return Mt})),n.d(t,"ContentBlock",(function(){return qt})),n.d(t,"Comparisons",(function(){return In})),n.d(t,"Menudropdown",(function(){return Gn})),n.d(t,"DatePicker",(function(){return nr})),n.d(t,"DateRangePicker",(function(){return lr})),n.d(t,"PeriodDatePicker",(function(){return pr})),"undefined"!==typeof window){var r=window.document.currentScript,a=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}n("2342");var o=n("8bbf");function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var u,d=function(){function e(){i(this,e),c(this,"periods",{}),c(this,"periodOrder",[])}return s(e,[{key:"addCustomPeriod",value:function(e,t){if(this.periods[e])throw new Error('The "'.concat(e,'" period already exists! It cannot be overridden.'));this.periods[e]=t,this.periodOrder.push(e)}},{key:"getAllLabels",value:function(){return Array().concat(this.periodOrder)}},{key:"get",value:function(e){var t=this.periods[e];if(!t)throw new Error("Invalid period label: ".concat(e));return t}},{key:"parse",value:function(e,t){return this.get(e).parse(t)}},{key:"isRecognizedPeriod",value:function(e){return!!this.periods[e]}}]),e}(),p=new d;function f(e){return v(e)||g(e)||h(e)||m()}function m(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(e,t){if(e){if("string"===typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}function g(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function v(e){if(Array.isArray(e))return b(e)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r} + */var u,d=function(){function e(){i(this,e),c(this,"periods",{}),c(this,"periodOrder",[])}return s(e,[{key:"addCustomPeriod",value:function(e,t){if(this.periods[e])throw new Error('The "'.concat(e,'" period already exists! It cannot be overridden.'));this.periods[e]=t,this.periodOrder.push(e)}},{key:"getAllLabels",value:function(){return Array().concat(this.periodOrder)}},{key:"get",value:function(e){var t=this.periods[e];if(!t)throw new Error("Invalid period label: ".concat(e));return t}},{key:"parse",value:function(e,t){return this.get(e).parse(t)}},{key:"isRecognizedPeriod",value:function(e){return!!this.periods[e]}}]),e}(),p=new d;function f(e){return g(e)||v(e)||h(e)||m()}function m(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(e,t){if(e){if("string"===typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}function v(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function g(e){if(Array.isArray(e))return b(e)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r} /*! * Matomo - free/libre analytics platform * @@ -23,50 +23,50 @@ * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=n;return 1===n.length&&n[0]&&n[0]instanceof Array&&(a=n[0]),window._pk_translate(e,a)} +function C(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=n;return 1===n.length&&n[0]&&n[0]instanceof Array&&(a=n[0]),window._pk_translate(e,a)} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function C(e){return $.datepicker.formatDate("yy-mm-dd",e)}function S(){var e=new Date(Date.now());return e.setTime(e.getTime()+60*e.getTimezoneOffset()*1e3),e.setHours(e.getHours()+(window.piwik.timezoneOffset||0)/3600),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e}function E(e){if(e instanceof Date)return e;var t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return S();if("yesterday"===t||"yesterdaySameTime"===t){var n=S();return n.setDate(n.getDate()-1),n}if(t.match(/last[ -]?week/i)){var r=S();return r.setDate(r.getDate()-7),r}if(t.match(/last[ -]?month/i)){var a=S();return a.setDate(1),a.setMonth(a.getMonth()-1),a}if(t.match(/last[ -]?year/i)){var o=S();return o.setFullYear(o.getFullYear()-1),o}return $.datepicker.parseDate("yy-mm-dd",t)}function T(e){return 2===e.length&&(S()>=e[0]&&S()<=e[1])}function x(e,t){return N(e)||B(e,t)||H(e,t)||I()}function I(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function H(e,t){if(e){if("string"===typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?A(e,t):void 0}}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function B(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(o.push(r.value),t&&o.length===t)break}catch(s){l=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return o}}function N(e){if(Array.isArray(e))return e}function M(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function R(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),e}function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */function P(e){return $.datepicker.formatDate("yy-mm-dd",e)}function S(){var e=new Date(Date.now());return e.setTime(e.getTime()+60*e.getTimezoneOffset()*1e3),e.setHours(e.getHours()+(window.piwik.timezoneOffset||0)/3600),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e}function E(e){if(e instanceof Date)return e;var t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return S();if("yesterday"===t||"yesterdaySameTime"===t){var n=S();return n.setDate(n.getDate()-1),n}if(t.match(/last[ -]?week/i)){var r=S();return r.setDate(r.getDate()-7),r}if(t.match(/last[ -]?month/i)){var a=S();return a.setDate(1),a.setMonth(a.getMonth()-1),a}if(t.match(/last[ -]?year/i)){var o=S();return o.setFullYear(o.getFullYear()-1),o}return $.datepicker.parseDate("yy-mm-dd",t)}function T(e){return 2===e.length&&(S()>=e[0]&&S()<=e[1])}function x(e,t){return M(e)||B(e,t)||H(e,t)||I()}function I(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function H(e,t){if(e){if("string"===typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?A(e,t):void 0}}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function B(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(o.push(r.value),t&&o.length===t)break}catch(s){l=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return o}}function M(e){if(Array.isArray(e))return e}function N(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function V(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),e}function L(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var L=function(){function e(t,n,r){M(this,e),V(this,"startDate",void 0),V(this,"endDate",void 0),V(this,"childPeriodType",void 0),this.startDate=t,this.endDate=n,this.childPeriodType=r}return R(e,[{key:"getPrettyString",value:function(){var e=C(this.startDate),t=C(this.endDate);return P("General_DateRangeFromTo",[e,t])}},{key:"getDateRange",value:function(){return[this.startDate,this.endDate]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"getLastNRange",value:function(t,n,r){var a=Math.max(parseInt(n.toString(),10)-1,0);if(Number.isNaN(a))throw new Error("Invalid range strAmount");var o=r?E(r):S(),i=new Date(o.getTime());if("day"===t)i.setDate(i.getDate()-a);else if("week"===t)i.setDate(i.getDate()-7*a);else if("month"===t)i.setDate(1),i.setMonth(i.getMonth()-a);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));i.setFullYear(i.getFullYear()-a)}if("day"!==t){var l=p.periods[t].parse(i),s=p.periods[t].parse(o),c=l.getDateRange(),u=x(c,1);i=u[0];var d=s.getDateRange(),f=x(d,2);o=f[1]}var m=new Date(1991,7,6);if(i.getTime()-m.getTime()<0)switch(t){case"year":i=new Date(1992,0,1);break;case"month":i=new Date(1991,8,1);break;case"week":i=new Date(1991,8,12);break;case"day":default:i=m;break}return new e(i,o,t)}},{key:"getLastNRangeChild",value:function(t,n,r){var a=n?E(n):S(),o=new Date(a.getTime()),i=new Date(a.getTime());if("day"===t)o.setDate(o.getDate()-r),i.setDate(i.getDate()-r);else if("week"===t)o.setDate(o.getDate()-7*r),i.setDate(i.getDate()-7*r);else if("month"===t)o.setDate(1),o.setMonth(o.getMonth()-r),i.setDate(1),i.setMonth(i.getMonth()-r);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));o.setFullYear(o.getFullYear()-r),i.setFullYear(i.getFullYear()-r)}if("day"!==t){var l=p.periods[t].parse(o),s=p.periods[t].parse(i),c=l.getDateRange(),u=x(c,1);o=u[0];var d=s.getDateRange(),f=x(d,2);i=f[1]}var m=new Date(1991,7,6);if(o.getTime()-m.getTime()<0)switch(t){case"year":o=new Date(1992,0,1);break;case"month":o=new Date(1991,8,1);break;case"week":o=new Date(1991,8,12);break;case"day":default:o=m;break}return new e(o,i,t)}},{key:"parse",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"day";if(/^previous/.test(t)){var r=e.getLastNRange(n,"2").startDate;return e.getLastNRange(n,t.substring(8),r)}if(/^last/.test(t))return e.getLastNRange(n,t.substring(4));var a=decodeURIComponent(t).split(",");return new e(E(a[0]),E(a[1]),n)}},{key:"getDisplayText",value:function(){return P("General_DateRangeInPeriodList")}}]),e}();function U(){return{getAllLabels:p.getAllLabels.bind(p),isRecognizedPeriod:p.isRecognizedPeriod.bind(p),get:p.get.bind(p),parse:p.parse.bind(p),parseDate:E,format:C,RangePeriod:L,todayIsInRange:T}}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function J(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function q(e,t,n){return t&&J(e.prototype,t),n&&J(e,n),e}function G(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */var R=function(){function e(t,n,r){N(this,e),L(this,"startDate",void 0),L(this,"endDate",void 0),L(this,"childPeriodType",void 0),this.startDate=t,this.endDate=n,this.childPeriodType=r}return V(e,[{key:"getPrettyString",value:function(){var e=P(this.startDate),t=P(this.endDate);return C("General_DateRangeFromTo",[e,t])}},{key:"getDateRange",value:function(){return[this.startDate,this.endDate]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"getLastNRange",value:function(t,n,r){var a=Math.max(parseInt(n.toString(),10)-1,0);if(Number.isNaN(a))throw new Error("Invalid range strAmount");var o=r?E(r):S(),i=new Date(o.getTime());if("day"===t)i.setDate(i.getDate()-a);else if("week"===t)i.setDate(i.getDate()-7*a);else if("month"===t)i.setDate(1),i.setMonth(i.getMonth()-a);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));i.setFullYear(i.getFullYear()-a)}if("day"!==t){var l=p.periods[t].parse(i),s=p.periods[t].parse(o),c=l.getDateRange(),u=x(c,1);i=u[0];var d=s.getDateRange(),f=x(d,2);o=f[1]}var m=new Date(1991,7,6);if(i.getTime()-m.getTime()<0)switch(t){case"year":i=new Date(1992,0,1);break;case"month":i=new Date(1991,8,1);break;case"week":i=new Date(1991,8,12);break;case"day":default:i=m;break}return new e(i,o,t)}},{key:"getLastNRangeChild",value:function(t,n,r){var a=n?E(n):S(),o=new Date(a.getTime()),i=new Date(a.getTime());if("day"===t)o.setDate(o.getDate()-r),i.setDate(i.getDate()-r);else if("week"===t)o.setDate(o.getDate()-7*r),i.setDate(i.getDate()-7*r);else if("month"===t)o.setDate(1),o.setMonth(o.getMonth()-r),i.setDate(1),i.setMonth(i.getMonth()-r);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));o.setFullYear(o.getFullYear()-r),i.setFullYear(i.getFullYear()-r)}if("day"!==t){var l=p.periods[t].parse(o),s=p.periods[t].parse(i),c=l.getDateRange(),u=x(c,1);o=u[0];var d=s.getDateRange(),f=x(d,2);i=f[1]}var m=new Date(1991,7,6);if(o.getTime()-m.getTime()<0)switch(t){case"year":o=new Date(1992,0,1);break;case"month":o=new Date(1991,8,1);break;case"week":o=new Date(1991,8,12);break;case"day":default:o=m;break}return new e(o,i,t)}},{key:"parse",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"day";if(/^previous/.test(t)){var r=e.getLastNRange(n,"2").startDate;return e.getLastNRange(n,t.substring(8),r)}if(/^last/.test(t))return e.getLastNRange(n,t.substring(4));var a=decodeURIComponent(t).split(",");return new e(E(a[0]),E(a[1]),n)}},{key:"getDisplayText",value:function(){return C("General_DateRangeInPeriodList")}}]),e}();function U(){return{getAllLabels:p.getAllLabels.bind(p),isRecognizedPeriod:p.isRecognizedPeriod.bind(p),get:p.get.bind(p),parse:p.parse.bind(p),parseDate:E,format:P,RangePeriod:R,todayIsInRange:T}}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function J(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function q(e,t,n){return t&&J(e.prototype,t),n&&J(e,n),e}function G(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */p.addCustomPeriod("range",L), + */p.addCustomPeriod("range",R), /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -window.piwik.addCustomPeriod=p.addCustomPeriod.bind(p),window.angular.module("piwikApp.service").factory("piwikPeriods",U);var Q=function(){function e(t){_(this,e),G(this,"dateInPeriod",void 0),this.dateInPeriod=t}return q(e,[{key:"getPrettyString",value:function(){return C(this.dateInPeriod)}},{key:"getDateRange",value:function(){return[new Date(this.dateInPeriod.getTime()),new Date(this.dateInPeriod.getTime())]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return P("Intl_PeriodDay")}}]),e}();function z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function W(e,t,n){return t&&Y(e.prototype,t),n&&Y(e,n),e}function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} +window.piwik.addCustomPeriod=p.addCustomPeriod.bind(p),window.angular.module("piwikApp.service").factory("piwikPeriods",U);var Q=function(){function e(t){_(this,e),G(this,"dateInPeriod",void 0),this.dateInPeriod=t}return q(e,[{key:"getPrettyString",value:function(){return P(this.dateInPeriod)}},{key:"getDateRange",value:function(){return[new Date(this.dateInPeriod.getTime()),new Date(this.dateInPeriod.getTime())]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodDay")}}]),e}();function z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function W(e,t,n){return t&&Y(e.prototype,t),n&&Y(e,n),e}function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */p.addCustomPeriod("day",Q);var X=function(){function e(t){z(this,e),K(this,"dateInPeriod",void 0),this.dateInPeriod=t}return W(e,[{key:"getPrettyString",value:function(){var e=this.getDateRange(),t=C(e[0]),n=C(e[1]);return P("General_DateRangeFromTo",[t,n])}},{key:"getDateRange",value:function(){var e=(this.dateInPeriod.getDay()+6)%7,t=new Date(this.dateInPeriod.getTime());t.setDate(this.dateInPeriod.getDate()-e);var n=new Date(t.getTime());return n.setDate(t.getDate()+6),[t,n]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return P("Intl_PeriodWeek")}}]),e}();function Z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function te(e,t,n){return t&&ee(e.prototype,t),n&&ee(e,n),e}function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */p.addCustomPeriod("day",Q);var X=function(){function e(t){z(this,e),K(this,"dateInPeriod",void 0),this.dateInPeriod=t}return W(e,[{key:"getPrettyString",value:function(){var e=this.getDateRange(),t=P(e[0]),n=P(e[1]);return C("General_DateRangeFromTo",[t,n])}},{key:"getDateRange",value:function(){var e=(this.dateInPeriod.getDay()+6)%7,t=new Date(this.dateInPeriod.getTime());t.setDate(this.dateInPeriod.getDate()-e);var n=new Date(t.getTime());return n.setDate(t.getDate()+6),[t,n]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodWeek")}}]),e}();function Z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function te(e,t,n){return t&&ee(e.prototype,t),n&&ee(e,n),e}function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */p.addCustomPeriod("week",X);var re=function(){function e(t){Z(this,e),ne(this,"dateInPeriod",void 0),this.dateInPeriod=t}return te(e,[{key:"getPrettyString",value:function(){var e=P("Intl_Month_Long_StandAlone_".concat(this.dateInPeriod.getMonth()+1));return"".concat(e," ").concat(this.dateInPeriod.getFullYear())}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setDate(1),t.setMonth(t.getMonth()+1),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return P("Intl_PeriodMonth")}}]),e}();function ae(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function oe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function ie(e,t,n){return t&&oe(e.prototype,t),n&&oe(e,n),e}function le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */p.addCustomPeriod("week",X);var re=function(){function e(t){Z(this,e),ne(this,"dateInPeriod",void 0),this.dateInPeriod=t}return te(e,[{key:"getPrettyString",value:function(){var e=C("Intl_Month_Long_StandAlone_".concat(this.dateInPeriod.getMonth()+1));return"".concat(e," ").concat(this.dateInPeriod.getFullYear())}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setDate(1),t.setMonth(t.getMonth()+1),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodMonth")}}]),e}();function ae(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function oe(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function ie(e,t,n){return t&&oe(e.prototype,t),n&&oe(e,n),e}function le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */p.addCustomPeriod("month",re);var se=function(){function e(t){ae(this,e),le(this,"dateInPeriod",void 0),this.dateInPeriod=t}return ie(e,[{key:"getPrettyString",value:function(){return this.dateInPeriod.getFullYear().toString()}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setMonth(0),e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setMonth(12),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return P("Intl_PeriodYear")}}]),e}(); + */p.addCustomPeriod("month",re);var se=function(){function e(t){ae(this,e),le(this,"dateInPeriod",void 0),this.dateInPeriod=t}return ie(e,[{key:"getPrettyString",value:function(){return this.dateInPeriod.getFullYear().toString()}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setMonth(0),e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setMonth(12),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(E(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodYear")}}]),e}(); /*! * Matomo - free/libre analytics platform * @@ -79,7 +79,7 @@ function ce(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Obj * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */p.addCustomPeriod("year",se);var he=window,ge=he.piwik,ve=he.broadcast;function be(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var ye=function(){function e(){var t=this;de(this,e),me(this,"urlQuery",Object(o["ref"])("")),me(this,"hashQuery",Object(o["ref"])("")),me(this,"urlParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ve.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),me(this,"hashParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ve.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),me(this,"parsed",Object(o["computed"])((function(){return Object(o["readonly"])(ue(ue({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),j.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return fe(e,[{key:"updateHash",value:function(e){var t="string"!==typeof e?this.stringify(e):e,n=j.helper.getAngularDependency("$location");n.search(t)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"stringify",value:function(e){return $.param(e).replace(/%5B%5D/g,"[]")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(be(t,e)&&(ge.period!==t||ge.currentDateString!==e)){ge.period=t;var n=p.parse(t,e).getDateRange();ge.startDateString=C(n[0]),ge.endDateString=C(n[1]),ge.updateDateInTitle(e,t),"range"===ge.period&&(e="".concat(ge.startDateString,",").concat(ge.endDateString)),ge.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),we=new ye,ke=we; + */p.addCustomPeriod("year",se);var he=window,ve=he.piwik,ge=he.broadcast;function be(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var ye=function(){function e(){var t=this;de(this,e),me(this,"urlQuery",Object(o["ref"])("")),me(this,"hashQuery",Object(o["ref"])("")),me(this,"urlParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ge.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),me(this,"hashParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ge.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),me(this,"parsed",Object(o["computed"])((function(){return Object(o["readonly"])(ue(ue({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),j.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return fe(e,[{key:"updateHash",value:function(e){var t="string"!==typeof e?this.stringify(e):e,n=j.helper.getAngularDependency("$location");n.search(t)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"stringify",value:function(e){return $.param(e).replace(/%5B%5D/g,"[]")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(be(t,e)&&(ve.period!==t||ve.currentDateString!==e)){ve.period=t;var n=p.parse(t,e).getDateRange();ve.startDateString=P(n[0]),ve.endDateString=P(n[1]),ve.updateDateInTitle(e,t),"range"===ve.period&&(e="".concat(ve.startDateString,",").concat(ve.endDateString)),ve.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),we=new ye,ke=we; /*! * Matomo - free/libre analytics platform * @@ -93,107 +93,151 @@ function De(){var e={getSearchParam:ke.getSearchParam.bind(ke)};return e} * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function Oe(){return j}function je(e,t){t.$oldEmit=t.$emit,t.$emit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return j.postEvent.apply(j,[e].concat(n))},t.$oldBroadcast=t.$broadcast,t.$broadcast=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return j.postEventNoEmit.apply(j,[e].concat(r)),t.$oldBroadcast.apply(t,[e].concat(r))},t.$on("$locationChangeSuccess",e.updatePeriodParamsFromUrl)}function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){xe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Se(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Te(e,t,n){return t&&Ee(e.prototype,t),n&&Ee(e,n),e}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} +function Oe(){return j}function je(e,t){t.$oldEmit=t.$emit,t.$emit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return j.postEvent.apply(j,[e].concat(n))},t.$oldBroadcast=t.$broadcast,t.$broadcast=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return j.postEventNoEmit.apply(j,[e].concat(r)),t.$oldBroadcast.apply(t,[e].concat(r))},t.$on("$locationChangeSuccess",e.updatePeriodParamsFromUrl)}function Ce(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ce(Object(n),!0).forEach((function(t){xe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ce(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Se(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ee(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Te(e,t,n){return t&&Ee(e.prototype,t),n&&Ee(e,n),e}function xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function Ie(e,t){if("abort"!==t)if("undefined"!==typeof Piwik_Popover){var n=$("#loadingError");Piwik_Popover.isOpen()&&e&&500===e.status?e&&500===e.status&&$(document.body).html(piwikHelper.escape(e.responseText)):n.show()}else console.log("Request failed: ".concat(e.responseText))}ge.updatePeriodParamsFromUrl=we.updatePeriodParamsFromUrl.bind(we),De.$inject=[],angular.module("piwikApp.service").service("piwikUrl",De),window.angular.module("piwikApp.service").service("piwik",Oe),je.$inject=["piwik","$rootScope"],window.angular.module("piwikApp.service").run(je),window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(var e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this.active+=n.length,this.clean(),(e=Array.prototype.push).call.apply(e,[this].concat(n))},window.globalAjaxQueue.abort=function(){this.forEach((function(e){return e&&e.abort&&e.abort()})),this.splice(0,this.length),this.active=0};var He=function(){function e(){Se(this,e),xe(this,"format","json"),xe(this,"timeout",null),xe(this,"callback",null),xe(this,"useRegularCallbackInCaseOfError",!1),xe(this,"errorCallback",void 0),xe(this,"withToken",!1),xe(this,"completeCallback",void 0),xe(this,"getParams",{}),xe(this,"getUrl","?"),xe(this,"postParams",{}),xe(this,"loadingElement",null),xe(this,"errorElement","#ajaxError"),xe(this,"requestHandle",null),xe(this,"defaultParams",["idSite","period","date","segment"]),this.errorCallback=Ie}return Te(e,[{key:"addParams",value:function(e,t){var n=this,r="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,a=["compareSegments","comparePeriods","compareDates"];Object.keys(r).forEach((function(e){var o=r[e];(-1===a.indexOf(e)||o)&&("get"===t.toLowerCase()?n.getParams[e]=o:"post"===t.toLowerCase()&&(n.postParams[e]=o))}))}},{key:"withTokenInUrl",value:function(){this.withToken=!0}},{key:"setUrl",value:function(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}},{key:"setBulkRequests",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.map((function(e){return"string"===typeof e?e:$.param(e)}));this.addParams({module:"API",method:"API.getBulkRequest",urls:r,format:"json"},"post")}},{key:"setTimeout",value:function(e){this.timeout=e}},{key:"setCallback",value:function(e){this.callback=e}},{key:"useCallbackInCaseOfError",value:function(){this.useRegularCallbackInCaseOfError=!0}},{key:"redirectOnSuccess",value:function(e){this.setCallback((function(){piwikHelper.redirect(e)}))}},{key:"setErrorCallback",value:function(e){this.errorCallback=e}},{key:"setCompleteCallback",value:function(e){this.completeCallback=e}},{key:"setFormat",value:function(e){this.format=e}},{key:"setLoadingElement",value:function(e){this.loadingElement=e||"#ajaxLoadingDiv"}},{key:"setErrorElement",value:function(e){e&&(this.errorElement=e)}},{key:"useGETDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)if(this.defaultParams[t]===e)return!0;return!1}},{key:"removeDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)this.defaultParams[t]===e&&this.defaultParams.splice(t,1)}},{key:"send",value:function(){var e=this;return $(this.errorElement).length&&$(this.errorElement).hide(),this.loadingElement&&$(this.loadingElement).fadeIn(),this.requestHandle=this.buildAjaxCall(),window.globalAjaxQueue.push(this.requestHandle),new Promise((function(t,n){e.requestHandle.then(t).fail((function(t){"abort"!==t.statusText&&(console.log("Warning: the ".concat($.param(e.getParams)," request failed!")),n(t))}))}))}},{key:"abort",value:function(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}},{key:"buildAjaxCall",value:function(){var e=this,t=this,n=this.mixinDefaultGetParams(this.getParams),r=this.getUrl;"?"!==r[r.length-1]&&(r+="&"),n.segment&&(r="".concat(r,"segment=").concat(n.segment,"&"),delete n.segment),n.date&&(r="".concat(r,"date=").concat(decodeURIComponent(n.date.toString()),"&"),delete n.date),r+=$.param(n);var a={type:"POST",async:!0,url:r,dataType:this.format||"json",complete:this.completeCallback,error:function(){if(window.globalAjaxQueue.active-=1,t.errorCallback){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.errorCallback.apply(this,n)}},success:function(t,n,r){if(e.loadingElement&&$(e.loadingElement).hide(),t&&"error"===t.result&&!e.useRegularCallbackInCaseOfError){var a=null,o="toast";if($(e.errorElement).length&&t.message&&($(e.errorElement).show(),a=e.errorElement,o=null),t.message){var i=window["require"]("piwik/UI"),l=new i.Notification;l.show(t.message,{placeat:a,context:"error",type:o,id:"ajaxHelper"}),l.scrollToNotification()}}else e.callback&&e.callback(t,n,r);window.globalAjaxQueue.active-=1,j.ajaxRequestFinished&&j.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return $.ajax(a)}},{key:"isRequestToApiMethod",value:function(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}},{key:"isWidgetizedRequest",value:function(){return"Widgetize"===broadcast.getValueFromUrl("module")}},{key:"getDefaultPostParams",value:function(){return this.withToken||this.isRequestToApiMethod()||j.shouldPropagateTokenAuth?{token_auth:j.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}},{key:"mixinDefaultPostParams",value:function(e){var t=this.getDefaultPostParams(),n=Ce(Ce({},t),e);return n}},{key:"mixinDefaultGetParams",value:function(e){var t=this,n=ke.getSearchParam("segment"),r={idSite:j.idSite?j.idSite.toString():broadcast.getValueFromUrl("idSite"),period:j.period||broadcast.getValueFromUrl("period"),segment:n},a=e;return a.token_auth&&(a.token_auth=null,delete a.token_auth),Object.keys(r).forEach((function(e){t.useGETDefaultParameter(e)&&!a[e]&&!t.postParams[e]&&r[e]&&(a[e]=r[e])})),!this.useGETDefaultParameter("date")||a.date||this.postParams.date||(a.date=j.currentDateString),a}}],[{key:"fetch",value:function(t){var n=new e;return n.setFormat("json"),n.addParams(Ce({module:"API",format:"json"},t),"get"),n.send()}}]),e}();function Ae(){return globalAjaxQueue} + */function Ie(e,t){if("abort"!==t)if("undefined"!==typeof Piwik_Popover){var n=$("#loadingError");Piwik_Popover.isOpen()&&e&&500===e.status?e&&500===e.status&&$(document.body).html(piwikHelper.escape(e.responseText)):n.show()}else console.log("Request failed: ".concat(e.responseText))}ve.updatePeriodParamsFromUrl=we.updatePeriodParamsFromUrl.bind(we),De.$inject=[],angular.module("piwikApp.service").service("piwikUrl",De),window.angular.module("piwikApp.service").service("piwik",Oe),je.$inject=["piwik","$rootScope"],window.angular.module("piwikApp.service").run(je),window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(var e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this.active+=n.length,this.clean(),(e=Array.prototype.push).call.apply(e,[this].concat(n))},window.globalAjaxQueue.abort=function(){this.forEach((function(e){return e&&e.abort&&e.abort()})),this.splice(0,this.length),this.active=0};var He=function(){function e(){Se(this,e),xe(this,"format","json"),xe(this,"timeout",null),xe(this,"callback",null),xe(this,"useRegularCallbackInCaseOfError",!1),xe(this,"errorCallback",void 0),xe(this,"withToken",!1),xe(this,"completeCallback",void 0),xe(this,"getParams",{}),xe(this,"getUrl","?"),xe(this,"postParams",{}),xe(this,"loadingElement",null),xe(this,"errorElement","#ajaxError"),xe(this,"requestHandle",null),xe(this,"defaultParams",["idSite","period","date","segment"]),this.errorCallback=Ie}return Te(e,[{key:"addParams",value:function(e,t){var n=this,r="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,a=["compareSegments","comparePeriods","compareDates"];Object.keys(r).forEach((function(e){var o=r[e];(-1===a.indexOf(e)||o)&&("get"===t.toLowerCase()?n.getParams[e]=o:"post"===t.toLowerCase()&&(n.postParams[e]=o))}))}},{key:"withTokenInUrl",value:function(){this.withToken=!0}},{key:"setUrl",value:function(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}},{key:"setBulkRequests",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.map((function(e){return"string"===typeof e?e:$.param(e)}));this.addParams({module:"API",method:"API.getBulkRequest",urls:r,format:"json"},"post")}},{key:"setTimeout",value:function(e){this.timeout=e}},{key:"setCallback",value:function(e){this.callback=e}},{key:"useCallbackInCaseOfError",value:function(){this.useRegularCallbackInCaseOfError=!0}},{key:"redirectOnSuccess",value:function(e){this.setCallback((function(){piwikHelper.redirect(e)}))}},{key:"setErrorCallback",value:function(e){this.errorCallback=e}},{key:"setCompleteCallback",value:function(e){this.completeCallback=e}},{key:"setFormat",value:function(e){this.format=e}},{key:"setLoadingElement",value:function(e){this.loadingElement=e||"#ajaxLoadingDiv"}},{key:"setErrorElement",value:function(e){e&&(this.errorElement=e)}},{key:"useGETDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)if(this.defaultParams[t]===e)return!0;return!1}},{key:"removeDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)this.defaultParams[t]===e&&this.defaultParams.splice(t,1)}},{key:"send",value:function(){var e=this;return $(this.errorElement).length&&$(this.errorElement).hide(),this.loadingElement&&$(this.loadingElement).fadeIn(),this.requestHandle=this.buildAjaxCall(),window.globalAjaxQueue.push(this.requestHandle),new Promise((function(t,n){e.requestHandle.then(t).fail((function(t){"abort"!==t.statusText&&(console.log("Warning: the ".concat($.param(e.getParams)," request failed!")),n(t))}))}))}},{key:"abort",value:function(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}},{key:"buildAjaxCall",value:function(){var e=this,t=this,n=this.mixinDefaultGetParams(this.getParams),r=this.getUrl;"?"!==r[r.length-1]&&(r+="&"),n.segment&&(r="".concat(r,"segment=").concat(n.segment,"&"),delete n.segment),n.date&&(r="".concat(r,"date=").concat(decodeURIComponent(n.date.toString()),"&"),delete n.date),r+=$.param(n);var a={type:"POST",async:!0,url:r,dataType:this.format||"json",complete:this.completeCallback,error:function(){if(window.globalAjaxQueue.active-=1,t.errorCallback){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.errorCallback.apply(this,n)}},success:function(t,n,r){if(e.loadingElement&&$(e.loadingElement).hide(),t&&"error"===t.result&&!e.useRegularCallbackInCaseOfError){var a=null,o="toast";if($(e.errorElement).length&&t.message&&($(e.errorElement).show(),a=e.errorElement,o=null),t.message){var i=window["require"]("piwik/UI"),l=new i.Notification;l.show(t.message,{placeat:a,context:"error",type:o,id:"ajaxHelper"}),l.scrollToNotification()}}else e.callback&&e.callback(t,n,r);window.globalAjaxQueue.active-=1,j.ajaxRequestFinished&&j.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return $.ajax(a)}},{key:"isRequestToApiMethod",value:function(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}},{key:"isWidgetizedRequest",value:function(){return"Widgetize"===broadcast.getValueFromUrl("module")}},{key:"getDefaultPostParams",value:function(){return this.withToken||this.isRequestToApiMethod()||j.shouldPropagateTokenAuth?{token_auth:j.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}},{key:"mixinDefaultPostParams",value:function(e){var t=this.getDefaultPostParams(),n=Pe(Pe({},t),e);return n}},{key:"mixinDefaultGetParams",value:function(e){var t=this,n=ke.getSearchParam("segment"),r={idSite:j.idSite?j.idSite.toString():broadcast.getValueFromUrl("idSite"),period:j.period||broadcast.getValueFromUrl("period"),segment:n},a=e;return a.token_auth&&(a.token_auth=null,delete a.token_auth),Object.keys(r).forEach((function(e){t.useGETDefaultParameter(e)&&!a[e]&&!t.postParams[e]&&r[e]&&(a[e]=r[e])})),!this.useGETDefaultParameter("date")||a.date||this.postParams.date||(a.date=j.currentDateString),a}}],[{key:"fetch",value:function(t){var n=new e;return n.setFormat("json"),n.addParams(Pe({module:"API",format:"json"},t),"get"),n.send()}}]),e}();function $e(){return globalAjaxQueue}window.ajaxHelper=He,angular.module("piwikApp.service").service("globalAjaxQueue",$e); +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */var Ae={mounted:function(e,t){var n={};$(e).addClass("matomo-dropdown-menu");var r=!!$(e).parent().closest(".dropdown-content").length;r&&(n={hover:!0},$(e).addClass("submenu"),$(t.value.activates).addClass("submenu-dropdown-content"),$(e).parents(".dropdown-content").addClass("submenu-container")),$(e).dropdown(n)}}; +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */function Be(e){return{restrict:"A",link:function(t,n,r){var a={instance:null,value:{activates:$("#".concat(r.activates))[0]},oldValue:null,modifiers:{},dir:{}};e((function(){Ae.mounted(n[0],a)}))}}} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function $e(e){e.classList.toggle("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function Be(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||e.classList.remove("expanded")}function Ne(e){e.value.hasScrolled=!0}function Me(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function Fe(e,t,n){27===n.which&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,e.classList.remove("expanded"))}window.ajaxHelper=He,angular.module("piwikApp.service").service("globalAjaxQueue",Ae);var Re=document.documentElement,Ve={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onExpand=$e.bind(null,e),t.value.onEscapeHandler=Fe.bind(null,e,t),t.value.onMouseDown=Me.bind(null,t),t.value.onClickOutsideElement=Be.bind(null,e,t),t.value.onScroll=Ne.bind(null,t),t.value.expander.addEventListener("click",t.value.onExpand),Re.addEventListener("keyup",t.value.onEscapeHandler),Re.addEventListener("mousedown",t.value.onMouseDown),Re.addEventListener("mouseup",t.value.onClickOutsideElement),Re.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){t.value.expander.removeEventListener("click",t.value.onExpand),Re.removeEventListener("keyup",t.value.onEscapeHandler),Re.removeEventListener("mousedown",t.value.onMouseDown),Re.removeEventListener("mouseup",t.value.onClickOutsideElement),Re.removeEventListener("scroll",t.value.onScroll)}}; +function Me(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||t.value&&t.value.blur()}function Ne(e,t){t.value.hasScrolled=!0}function Fe(e,t){t.value.isMouseDown=!0,t.value.hasScrolled=!1}function Ve(e,t,n){27===n.which&&setTimeout((function(){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.blur&&t.value.blur()}),0)}Be.$inject=["$timeout"],angular.module("piwikApp").directive("piwikDropdownMenu",Be);var Le=document.documentElement,Re={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onEscapeHandler=Ve.bind(null,e,t),t.value.onMouseDown=Fe.bind(null,e,t),t.value.onClickOutsideElement=Me.bind(null,e,t),t.value.onScroll=Ne.bind(null,e,t),Le.addEventListener("keyup",t.value.onEscapeHandler),Le.addEventListener("mousedown",t.value.onMouseDown),Le.addEventListener("mouseup",t.value.onClickOutsideElement),Le.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){Le.removeEventListener("keyup",t.value.onEscapeHandler),Le.removeEventListener("mousedown",t.value.onMouseDown),Le.removeEventListener("mouseup",t.value.onClickOutsideElement),Le.removeEventListener("scroll",t.value.onScroll)}}; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function Le(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}},r=Ve;r.mounted(t[0],n),t.on("$destroy",(function(){return r.unmounted(t[0],n)}))}}} +function Ue(){return{restrict:"A",link:function(e,t,n){var r={instance:null,value:{blur:function(){setTimeout((function(){e.$apply(n.piwikFocusAnywhereButHere)}),0)}},oldValue:null,modifiers:{},dir:{}};Re.mounted(t[0],r),t.on("$destroy",(function(){return Re.unmounted(t[0],r)}))}}}Ue.$inject=[],angular.module("piwikApp.directive").directive("piwikFocusAnywhereButHere",Ue); +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */var _e={updated:function(e,t){t.value.focusIf&&setTimeout((function(){e.focus(),t.value.afterFocus&&t.value.afterFocus()}),5)}}; +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */function Je(){return{restrict:"A",link:function(e,t,n){e.$watch(n.piwikFocusIf,(function(n){var r={instance:null,value:{focusIf:!!n,afterFocus:function(){return e.$apply()}},oldValue:null,modifiers:{},dir:{}};_e.updated(t[0],r)}))}}} +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +function qe(e){e.classList.toggle("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function Ge(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||e.classList.remove("expanded")}function Qe(e){e.value.hasScrolled=!0}function ze(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function Ye(e,t,n){27===n.which&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,e.classList.remove("expanded"))}angular.module("piwikApp.directive").directive("piwikFocusIf",Je);var We=document.documentElement,Ke={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onExpand=qe.bind(null,e),t.value.onEscapeHandler=Ye.bind(null,e,t),t.value.onMouseDown=ze.bind(null,t),t.value.onClickOutsideElement=Ge.bind(null,e,t),t.value.onScroll=Qe.bind(null,t),t.value.expander.addEventListener("click",t.value.onExpand),We.addEventListener("keyup",t.value.onEscapeHandler),We.addEventListener("mousedown",t.value.onMouseDown),We.addEventListener("mouseup",t.value.onClickOutsideElement),We.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){t.value.expander.removeEventListener("click",t.value.onExpand),We.removeEventListener("keyup",t.value.onEscapeHandler),We.removeEventListener("mousedown",t.value.onMouseDown),We.removeEventListener("mouseup",t.value.onClickOutsideElement),We.removeEventListener("scroll",t.value.onScroll)}}; +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +function Xe(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};Ke.mounted(t[0],n),t.on("$destroy",(function(){return Ke.unmounted(t[0],n)}))}}} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function Ue(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function _e(e){e.classList.remove("expanded")}function Je(e,t){e.contains(t.target)||e.classList.remove("expanded")}function qe(e,t){27===t.which&&e.classList.remove("expanded")}Le.$inject=[],angular.module("piwikApp").directive("piwikExpandOnClick",Le);var Ge=document.documentElement,Qe={mounted:function(e,t){t.value.onMouseEnter=Ue.bind(null,e),t.value.onMouseLeave=_e.bind(null,e),t.value.onClickOutsideElement=Je.bind(null,e),t.value.onEscapeHandler=qe.bind(null,e),t.value.expander.addEventListener("mouseenter",t.value.onMouseEnter),e.addEventListener("mouseleave",t.value.onMouseLeave),Ge.addEventListener("keyup",t.value.onEscapeHandler),Ge.addEventListener("mouseup",t.value.onClickOutsideElement)},unmounted:function(e,t){t.value.expander.removeEventListener("mouseenter",t.value.onMouseEnter),e.removeEventListener("mouseleave",t.value.onMouseLeave),document.removeEventListener("keyup",t.value.onEscapeHandler),document.removeEventListener("mouseup",t.value.onClickOutsideElement)}}; +function Ze(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function et(e){e.classList.remove("expanded")}function tt(e,t){e.contains(t.target)||e.classList.remove("expanded")}function nt(e,t){27===t.which&&e.classList.remove("expanded")}Xe.$inject=[],angular.module("piwikApp").directive("piwikExpandOnClick",Xe);var rt=document.documentElement,at={mounted:function(e,t){t.value.onMouseEnter=Ze.bind(null,e),t.value.onMouseLeave=et.bind(null,e),t.value.onClickOutsideElement=tt.bind(null,e),t.value.onEscapeHandler=nt.bind(null,e),t.value.expander.addEventListener("mouseenter",t.value.onMouseEnter),e.addEventListener("mouseleave",t.value.onMouseLeave),rt.addEventListener("keyup",t.value.onEscapeHandler),rt.addEventListener("mouseup",t.value.onClickOutsideElement)},unmounted:function(e,t){t.value.expander.removeEventListener("mouseenter",t.value.onMouseEnter),e.removeEventListener("mouseleave",t.value.onMouseLeave),document.removeEventListener("keyup",t.value.onEscapeHandler),document.removeEventListener("mouseup",t.value.onClickOutsideElement)}}; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function ze(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}},r=Qe;r.mounted(t[0],n),t.on("$destroy",(function(){return r.unmounted(t[0],n)}))}}}ze.$inject=[],angular.module("piwikApp").directive("piwikExpandOnHover",ze);var Ye={ref:"root"};function We(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ye,[Object(o["renderSlot"])(e.$slots,"default")],512)),[[o["vShow"],e.modelValue]])}var Ke=Object(o["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","update:modelValue"],activated:function(){this.$emit("update:modelValue",!1)},watch:{modelValue:function(e,t){var n=this;if(e){var r=this.element||this.$refs.root.firstElementChild;j.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")}},{onCloseEnd:function(){n.element||n.$refs.root.appendChild(r),n.$emit("update:modelValue",!1),n.$emit("closeEnd")}})}else!1===e&&!0===t&&this.$emit("close")}}});Ke.render=We;var Xe=Ke;function Ze(e,t){return at(e)||rt(e,t)||tt(e,t)||et()}function et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(e,t){if(e){if("string"===typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function rt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(o.push(r.value),t&&o.length===t)break}catch(s){l=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return o}}function at(e){if(Array.isArray(e))return e} +function ot(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};at.mounted(t[0],n),t.on("$destroy",(function(){return at.unmounted(t[0],n)}))}}}ot.$inject=[],angular.module("piwikApp").directive("piwikExpandOnHover",ot);var it={ref:"root"};function lt(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",it,[Object(o["renderSlot"])(e.$slots,"default")],512)),[[o["vShow"],e.modelValue]])}var st=Object(o["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","update:modelValue"],activated:function(){this.$emit("update:modelValue",!1)},watch:{modelValue:function(e,t){var n=this;if(e){var r=this.element||this.$refs.root.firstElementChild;j.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")}},{onCloseEnd:function(){n.element||n.$refs.root.appendChild(r),n.$emit("update:modelValue",!1),n.$emit("closeEnd")}})}else!1===e&&!0===t&&this.$emit("close")}}});st.render=lt;var ct=st;function ut(e,t){return ht(e)||mt(e,t)||pt(e,t)||dt()}function dt(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function pt(e,t){if(e){if("string"===typeof e)return ft(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ft(e,t):void 0}}function ft(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function mt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(o.push(r.value),t&&o.length===t)break}catch(s){l=!0,a=s}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return o}}function ht(e){if(Array.isArray(e))return e} +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */var vt=0;function gt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())}))}function bt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function yt(e){var t=e.component,n=e.scope,r=void 0===n?{}:n,a=e.events,i=void 0===a?{}:a,l=e.$inject,s=e.directiveName,c=e.transclude,u=e.mountPointFactory,d=e.postCreate,p=e.noScope,f=e.restrict,m=void 0===f?"A":f,h=vt;c&&(vt+=1);var v={};function g(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];var l={restrict:m,scope:p?void 0:v,compile:function(){return{post:function(e,a,l){var s=c?a.find("[ng-transclude][counter=".concat(h,"]")):null,p="<root-component";Object.entries(i).forEach((function(e){var t=ut(e,1),n=t[0];p+=" @".concat(n,"=\"onEventHandler('").concat(n,"', $event)\"")})),Object.entries(r).forEach((function(e){var t=ut(e,2),n=t[0],r=t[1];if("&"===r.angularJsBind){var a=gt(n);i[a]||(p+=" @".concat(a,"=\"onEventHandler('").concat(a,"', $event)\""))}else p+=" :".concat(r.vue,'="').concat(r.vue,'"')})),p+=">",c&&(p+='<div ref="transcludeTarget"/>'),p+="</root-component>";var f=Object(o["createApp"])({template:p,data:function(){var t={};return Object.entries(r).forEach((function(r){var o=ut(r,2),i=o[0],s=o[1],c=e[i];"undefined"===typeof c&&"undefined"!==typeof s.default&&(c=s.default instanceof Function?s.default.apply(s,[e,a,l].concat(n)):s.default),t[s.vue]=c})),t},setup:function(){if(c){var e=Object(o["ref"])(null);return{transcludeTarget:e}}},methods:{onEventHandler:function(t,r){var o=bt(t);e[o]&&e[o](r),i[t]&&i[t].apply(i,[r,e,a,l].concat(n))}}});f.config.globalProperties.$sanitize=window.vueSanitize,f.config.globalProperties.translate=C,f.component("root-component",t);var m=u?u.apply(void 0,[e,a,l].concat(n)):a[0],v=f.mount(m);Object.entries(r).forEach((function(t){var r=ut(t,2),o=r[0],i=r[1];i.angularJsBind&&"&"!==i.angularJsBind&&e.$watch(o,(function(t){"undefined"!==typeof i.default&&"undefined"===typeof t?v[o]=i.default instanceof Function?i.default.apply(i,[e,a,l].concat(n)):i.default:v[o]=t}))})),c&&$(v.transcludeTarget).append(s),d&&d.apply(void 0,[v,e,a,l].concat(n)),a.on("$destroy",(function(){f.unmount()}))}}}};return c&&(l.transclude=!0,l.template='<div ng-transclude counter="'.concat(h,'"/>')),l}return Object.entries(r).forEach((function(e){var t=ut(e,2),n=t[0],r=t[1];r.vue||(r.vue=n),r.angularJsBind&&(v[n]=r.angularJsBind)})),g.$inject=l||[],angular.module("piwikApp").directive(s,g),g} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var ot=0;function it(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())}))}function lt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function st(e){var t=e.component,n=e.scope,r=void 0===n?{}:n,a=e.events,i=void 0===a?{}:a,l=e.$inject,s=e.directiveName,c=e.transclude,u=e.mountPointFactory,d=e.postCreate,p=e.noScope,f=e.restrict,m=void 0===f?"A":f,h=ot;c&&(ot+=1);var g={};function v(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];var l={restrict:m,scope:p?void 0:g,compile:function(){return{post:function(e,a,l){var s=c?a.find("[ng-transclude][counter=".concat(h,"]")):null,p="<root-component";Object.entries(i).forEach((function(e){var t=Ze(e,1),n=t[0];p+=" @".concat(n,"=\"onEventHandler('").concat(n,"', $event)\"")})),Object.entries(r).forEach((function(e){var t=Ze(e,2),n=t[0],r=t[1];if("&"===r.angularJsBind){var a=it(n);i[a]||(p+=" @".concat(a,"=\"onEventHandler('").concat(a,"', $event)\""))}else p+=" :".concat(r.vue,'="').concat(r.vue,'"')})),p+=">",c&&(p+='<div ref="transcludeTarget"/>'),p+="</root-component>";var f=Object(o["createApp"])({template:p,data:function(){var t={};return Object.entries(r).forEach((function(r){var o=Ze(r,2),i=o[0],s=o[1],c=e[i];"undefined"===typeof c&&"undefined"!==typeof s.default&&(c=s.default instanceof Function?s.default.apply(s,[e,a,l].concat(n)):s.default),t[s.vue]=c})),t},setup:function(){if(c){var e=Object(o["ref"])(null);return{transcludeTarget:e}}},methods:{onEventHandler:function(t,r){var o=lt(t);e[o]&&e[o](r),i[t]&&i[t].apply(i,[r,e,a,l].concat(n))}}});f.config.globalProperties.$sanitize=window.vueSanitize,f.config.globalProperties.translate=P,f.component("root-component",t);var m=u?u.apply(void 0,[e,a,l].concat(n)):a[0],g=f.mount(m);Object.entries(r).forEach((function(t){var r=Ze(t,2),o=r[0],i=r[1];i.angularJsBind&&"&"!==i.angularJsBind&&e.$watch(o,(function(t){"undefined"!==typeof i.default&&"undefined"===typeof t?g[o]=i.default instanceof Function?i.default.apply(i,[e,a,l].concat(n)):i.default:g[o]=t}))})),c&&$(g.transcludeTarget).append(s),d&&d.apply(void 0,[g,e,a,l].concat(n)),a.on("$destroy",(function(){f.unmount()}))}}}};return c&&(l.transclude=!0,l.template='<div ng-transclude counter="'.concat(h,'"/>')),l}return Object.entries(r).forEach((function(e){var t=Ze(e,2),n=t[0],r=t[1];r.vue||(r.vue=n),r.angularJsBind&&(g[n]=r.angularJsBind)})),v.$inject=l||[],angular.module("piwikApp").directive(s,v),v} + */yt({component:ct,scope:{show:{vue:"modelValue",default:!1},element:{default:function(e,t){return t[0]}}},events:{yes:function(e,t,n,r){r.yes&&(t.$eval(r.yes),setTimeout((function(){t.$apply()}),0))},no:function(e,t,n,r){r.no&&(t.$eval(r.no),setTimeout((function(){t.$apply()}),0))},close:function(e,t,n,r){r.close&&(t.$eval(r.close),setTimeout((function(){t.$apply()}),0))},"update:modelValue":function(e,t,n,r,a){setTimeout((function(){t.$apply(a(r.piwikDialog).assign(t,e))}),0)}},$inject:["$parse"],directiveName:"piwikDialog",transclude:!0,mountPointFactory:function(e,t){var n=$('<div class="vue-placeholder"/>');return n.appendTo(t),n[0]},postCreate:function(e,t,n,r){t.$watch(r.piwikDialog,(function(t,n){n!==t&&(e.modelValue=t||!1)}))},noScope:!0});var wt={key:0,class:"title",tabindex:"6"},kt=["href","title"],Dt={class:"iconsBar"},Ot=["href","title"],jt=Object(o["createElementVNode"])("span",{class:"icon-help"},null,-1),Ct=[jt],Pt=["title"],St=Object(o["createElementVNode"])("span",{class:"icon-info"},null,-1),Et=[St],Tt={class:"ratingIcons"},xt={class:"inlineHelp"},It=["innerHTML"],Ht=["href"];function $t(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("RateFeature");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=function(t){return e.showIcons=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.showIcons=!1}),ref:"root"},[e.editUrl?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",wt,[Object(o["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.$sanitize(e.actualFeatureName))},[Object(o["renderSlot"])(e.$slots,"default")],8,kt)):Object(o["createCommentVNode"])("",!0),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",Dt,[e.helpUrl&&!e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},Ct,8,Ot)):Object(o["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=function(t){return e.showInlineHelp=!e.showInlineHelp}),class:Object(o["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},Et,10,Pt)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",Tt,[Object(o["createVNode"])(l,{title:e.actualFeatureName},null,8,["title"])])],512),[[o["vShow"],e.showIcons||e.showInlineHelp]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",xt,[Object(o["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,It),e.helpUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(o["toDisplayString"])(e.translate("General_MoreDetails")),9,Ht)):Object(o["createCommentVNode"])("",!0)],512),[[o["vShow"],e.showInlineHelp]])],544)}var At=Object(o["defineAsyncComponent"])((function(){return new Promise((function(e){window.$(document).ready((function(){e(window.Feedback.RateFeature)}))}))})),Bt=Object(o["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},components:{RateFeature:At},data:function(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp:function(e){this.actualInlineHelp=e},featureName:function(e){this.actualFeatureName=e}},mounted:function(){var e=this,t=this.$refs.root;setTimeout((function(){if(!e.actualInlineHelp){var n=t.querySelector(".title .inlineHelp");if(!n&&t.parentElement.nextElementSibling&&(n=t.parentElement.nextElementSibling.querySelector(".reportDocumentation")),n){var r=n.getAttribute("data-content").trim();r.length&&(e.actualInlineHelp="<p>".concat(r,"</p>"),setTimeout((function(){return n.remove()}),0))}}e.actualFeatureName||(e.actualFeatureName=t.querySelector(".title").textContent),e.reportGenerated&&p.parse(j.period,j.currentDateString).containsToday()&&window.$(t.querySelector(".report-generated")).tooltip({track:!0,content:e.reportGenerated,items:"div",show:!1,hide:!1})}))}});Bt.render=$t;var Mt=Bt,Nt=(yt({component:Mt,scope:{helpUrl:{angularJsBind:"@"},editUrl:{angularJsBind:"@"},reportGenerated:{angularJsBind:"@?"},featureName:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@?"}},directiveName:"piwikEnrichedHeadline",transclude:!0}),{class:"card",ref:"root"}),Ft={class:"card-content"},Vt={key:0,class:"card-title"},Lt={key:1,class:"card-title"},Rt={ref:"content"}; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */st({component:Xe,scope:{show:{vue:"modelValue",default:!1},element:{default:function(e,t){return t[0]}}},events:{yes:function(e,t,n,r){r.yes&&(t.$eval(r.yes),setTimeout((function(){t.$apply()}),0))},no:function(e,t,n,r){r.no&&(t.$eval(r.no),setTimeout((function(){t.$apply()}),0))},close:function(e,t,n,r){r.close&&(t.$eval(r.close),setTimeout((function(){t.$apply()}),0))},"update:modelValue":function(e,t,n,r,a){setTimeout((function(){t.$apply(a(r.piwikDialog).assign(t,e))}),0)}},$inject:["$parse"],directiveName:"piwikDialog",transclude:!0,mountPointFactory:function(e,t){var n=$('<div class="vue-placeholder"/>');return n.appendTo(t),n[0]},postCreate:function(e,t,n,r){t.$watch(r.piwikDialog,(function(t,n){n!==t&&(e.modelValue=t||!1)}))},noScope:!0});var ct={key:0,class:"title",tabindex:"6"},ut=["href","title"],dt={class:"iconsBar"},pt=["href","title"],ft=Object(o["createElementVNode"])("span",{class:"icon-help"},null,-1),mt=[ft],ht=["title"],gt=Object(o["createElementVNode"])("span",{class:"icon-info"},null,-1),vt=[gt],bt={class:"ratingIcons"},yt={class:"inlineHelp"},wt=["innerHTML"],kt=["href"];function Dt(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("RateFeature");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=function(t){return e.showIcons=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.showIcons=!1}),ref:"root"},[e.editUrl?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ct,[Object(o["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.$sanitize(e.actualFeatureName))},[Object(o["renderSlot"])(e.$slots,"default")],8,ut)):Object(o["createCommentVNode"])("",!0),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",dt,[e.helpUrl&&!e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},mt,8,pt)):Object(o["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=function(t){return e.showInlineHelp=!e.showInlineHelp}),class:Object(o["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},vt,10,ht)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",bt,[Object(o["createVNode"])(l,{title:e.actualFeatureName},null,8,["title"])])],512),[[o["vShow"],e.showIcons||e.showInlineHelp]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",yt,[Object(o["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,wt),e.helpUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(o["toDisplayString"])(e.translate("General_MoreDetails")),9,kt)):Object(o["createCommentVNode"])("",!0)],512),[[o["vShow"],e.showInlineHelp]])],544)}var Ot=Object(o["defineAsyncComponent"])((function(){return new Promise((function(e){window.$(document).ready((function(){e(window.Feedback.RateFeature)}))}))})),jt=Object(o["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},components:{RateFeature:Ot},data:function(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp:function(e){this.actualInlineHelp=e},featureName:function(e){this.actualFeatureName=e}},mounted:function(){var e=this,t=this.$refs.root;setTimeout((function(){if(!e.actualInlineHelp){var n=t.querySelector(".title .inlineHelp");if(!n&&t.parentElement.nextElementSibling&&(n=t.parentElement.nextElementSibling.querySelector(".reportDocumentation")),n){var r=n.getAttribute("data-content").trim();r.length&&(e.actualInlineHelp="<p>".concat(r,"</p>"),setTimeout((function(){return n.remove()}),0))}}e.actualFeatureName||(e.actualFeatureName=t.querySelector(".title").textContent),e.reportGenerated&&p.parse(j.period,j.currentDateString).containsToday()&&window.$(t.querySelector(".report-generated")).tooltip({track:!0,content:e.reportGenerated,items:"div",show:!1,hide:!1})}))}});jt.render=Dt;var Pt=jt,Ct=(st({component:Pt,scope:{helpUrl:{angularJsBind:"@"},editUrl:{angularJsBind:"@"},reportGenerated:{angularJsBind:"@?"},featureName:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@?"}},directiveName:"piwikEnrichedHeadline",transclude:!0}),{class:"card",ref:"root"}),St={class:"card-content"},Et={key:0,class:"card-title"},Tt={key:1,class:"card-title"},xt={ref:"content"}; + */function Ut(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("EnrichedHeadline");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Nt,[Object(o["createElementVNode"])("div",Ft,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Vt,Object(o["toDisplayString"])(e.contentTitle),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText)?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Lt,[Object(o["createVNode"])(l,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"inline-help":e.actualHelpText},{default:Object(o["withCtx"])((function(){return[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.contentTitle),1)]})),_:1},8,["feature-name","help-url","inline-help"])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",Rt,[Object(o["renderSlot"])(e.$slots,"default")],512)])],512)}var _t=null,Jt=Object(o["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,helpText:String,anchor:String},components:{EnrichedHeadline:Mt},data:function(){return{actualFeature:this.feature,actualHelpText:this.helpText}},watch:{feature:function(e){this.actualFeature=e},helpText:function(e){this.actualHelpText=e}},mounted:function(){var e,t=this,n=this.$refs,r=n.root,a=n.content;if(this.anchor){var o=document.createElement("a");o.id=this.anchor,r.parentElement.prepend(o)}if(setTimeout((function(){var e=a.querySelector(".contentHelp");e&&(t.actualHelpText=e.innerHTML,e.remove())}),0),!this.actualFeature||!0!==this.actualFeature&&"true"!==this.actualFeature||(this.actualFeature=this.contentTitle),null===_t&&(_t=document.querySelector("#content.admin")),_t&&(e=_t.offsetTop),e||0===e){var i=r.closest("[piwik-widget-loader]"),l=i?i.offsetTop:r.offsetTop;l-e<17&&(r.style.marginTop=0)}}});Jt.render=Ut;var qt=Jt; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function It(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("EnrichedHeadline");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ct,[Object(o["createElementVNode"])("div",St,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Et,Object(o["toDisplayString"])(e.contentTitle),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText)?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Tt,[Object(o["createVNode"])(l,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"inline-help":e.actualHelpText},{default:Object(o["withCtx"])((function(){return[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.contentTitle),1)]})),_:1},8,["feature-name","help-url","inline-help"])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",xt,[Object(o["renderSlot"])(e.$slots,"default")],512)])],512)}var Ht=null,At=Object(o["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,helpText:String,anchor:String},components:{EnrichedHeadline:Pt},data:function(){return{actualFeature:this.feature,actualHelpText:this.helpText}},watch:{feature:function(e){this.actualFeature=e},helpText:function(e){this.actualHelpText=e}},mounted:function(){var e,t=this,n=this.$refs,r=n.root,a=n.content;if(this.anchor){var o=document.createElement("a");o.id=this.anchor,r.parentElement.prepend(o)}if(setTimeout((function(){var e=a.querySelector(".contentHelp");e&&(t.actualHelpText=e.innerHTML,e.remove())}),0),!this.actualFeature||!0!==this.actualFeature&&"true"!==this.actualFeature||(this.actualFeature=this.contentTitle),null===Ht&&(Ht=document.querySelector("#content.admin")),Ht&&(e=Ht.offsetTop),e||0===e){var i=r.closest("[piwik-widget-loader]"),l=i?i.offsetTop:r.offsetTop;l-e<17&&(r.style.marginTop=0)}}});At.render=It;var $t=At; + */yt({component:qt,scope:{contentTitle:{angularJsBind:"@"},feature:{angularJsBind:"@"},helpUrl:{angularJsBind:"@"},helpText:{angularJsBind:"@"},anchor:{angularJsBind:"@?"}},directiveName:"piwikContentBlock",transclude:!0});function Gt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Qt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function zt(e,t,n){return t&&Qt(e.prototype,t),n&&Qt(e,n),e}function Yt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */st({component:$t,scope:{contentTitle:{angularJsBind:"@"},feature:{angularJsBind:"@"},helpUrl:{angularJsBind:"@"},helpText:{angularJsBind:"@"},anchor:{angularJsBind:"@?"}},directiveName:"piwikContentBlock",transclude:!0});function Bt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Nt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Mt(e,t,n){return t&&Nt(e.prototype,t),n&&Nt(e,n),e}function Ft(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */var Wt=function(){function e(){var t=this;Gt(this,e),Yt(this,"segmentState",Object(o["reactive"])({availableSegments:[]})),j.on("piwikSegmentationInited",(function(){return t.setSegmentState()}))}return zt(e,[{key:"state",get:function(){return Object(o["readonly"])(this.segmentState)}},{key:"setSegmentState",value:function(){try{var e=$(".segmentEditorPanel").data("uiControlObject");this.segmentState.availableSegments=e.impl.availableSegments||[]}catch(t){}}}]),e}(),Kt=new Wt;function Xt(e){return nn(e)||tn(e)||en(e)||Zt()}function Zt(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function en(e,t){if(e){if("string"===typeof e)return rn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?rn(e,t):void 0}}function tn(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function nn(e){if(Array.isArray(e))return rn(e)}function rn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function an(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function on(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?an(Object(n),!0).forEach((function(t){un(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):an(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ln(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function sn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function cn(e,t,n){return t&&sn(e.prototype,t),n&&sn(e,n),e}function un(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var Rt=function(){function e(){var t=this;Bt(this,e),Ft(this,"segmentState",Object(o["reactive"])({availableSegments:[]})),j.on("piwikSegmentationInited",(function(){return t.setSegmentState()}))}return Mt(e,[{key:"state",get:function(){return Object(o["readonly"])(this.segmentState)}},{key:"setSegmentState",value:function(){try{var e=$(".segmentEditorPanel").data("uiControlObject");this.segmentState.availableSegments=e.impl.availableSegments||[]}catch(t){}}}]),e}(),Vt=new Rt;function Lt(e){return qt(e)||Jt(e)||_t(e)||Ut()}function Ut(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _t(e,t){if(e){if("string"===typeof e)return Gt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Gt(e,t):void 0}}function Jt(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function qt(e){if(Array.isArray(e))return Gt(e)}function Gt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Qt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Qt(Object(n),!0).forEach((function(t){Xt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Yt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Wt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Kt(e,t,n){return t&&Wt(e.prototype,t),n&&Wt(e,n),e}function Xt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */var dn=8,pn=3;function fn(e){return e?e instanceof Array?e:[e]:[]}var mn=function(){function e(){var t=this;ln(this,e),un(this,"privateState",Object(o["reactive"])({comparisonsDisabledFor:[]})),un(this,"state",Object(o["readonly"])(this.privateState)),un(this,"colors",{}),un(this,"segmentComparisons",Object(o["computed"])((function(){return t.parseSegmentComparisons()}))),un(this,"periodComparisons",Object(o["computed"])((function(){return t.parsePeriodComparisons()}))),un(this,"isEnabled",Object(o["computed"])((function(){return t.checkEnabledForCurrentPage()}))),this.loadComparisonsDisabledFor(),$((function(){t.colors=t.getAllSeriesColors()})),Object(o["watch"])((function(){return t.getComparisons()}),(function(){return j.postEvent("piwikComparisonsChanged")}),{deep:!0})}return cn(e,[{key:"getComparisons",value:function(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}},{key:"isComparing",value:function(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}},{key:"isComparingPeriods",value:function(){return this.getPeriodComparisons().length>1}},{key:"getSegmentComparisons",value:function(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}},{key:"getPeriodComparisons",value:function(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}},{key:"getSeriesColor",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.getComparisonSeriesIndex(t.index,e.index)%dn;if(0===n)return this.colors["series".concat(r)];var a=n%pn;return this.colors["series".concat(r,"-shade").concat(a)]}},{key:"getSeriesColorName",value:function(e,t){var n="series".concat(e%dn);return t>0&&(n+="-shade".concat(t%pn)),n}},{key:"isComparisonEnabled",value:function(){return this.isEnabled.value}},{key:"getIndividualComparisonRowIndices",value:function(e){var t=this.getSegmentComparisons().length,n=e%t,r=Math.floor(e/t);return{segmentIndex:n,periodIndex:r}}},{key:"getComparisonSeriesIndex",value:function(e,t){var n=this.getSegmentComparisons().length;return e*n+t}},{key:"getAllComparisonSeries",value:function(){var e=this,t=[],n=0;return this.getPeriodComparisons().forEach((function(r){e.getSegmentComparisons().forEach((function(a){t.push({index:n,params:on(on({},a.params),r.params),color:e.colors["series".concat(n)]}),n+=1}))})),t}},{key:"removeSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=Xt(this.segmentComparisons.value);t.splice(e,1);var n={};0===e&&(n.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,n)}},{key:"addSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}},{key:"updateQueryParamsFromComparisons",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},a={},o=!1,i=!1;e.forEach((function(e){o?r[e.params.segment]=!0:o=!0})),t.forEach((function(e){i?a["".concat(e.params.period,"|").concat(e.params.date)]=!0:i=!0}));var l=[],s=[];Object.keys(a).forEach((function(e){var t=e.split("|");l.push(t[0]),s.push(t[1])}));var c={compareSegments:Object.keys(r),comparePeriods:l,compareDates:s};if(j.helper.isAngularRenderingThePage()){var u=ke.hashParsed.value,d=on(on(on({},u),c),n);return delete d["compareSegments[]"],delete d["comparePeriods[]"],delete d["compareDates[]"],void(JSON.stringify(d)!==JSON.stringify(u)&&ke.updateHash(d))}var p=[];["compareSegments","comparePeriods","compareDates"].forEach((function(e){c[e].length||p.push(e)}));var f=ke.stringify(n),m=ke.stringify(c);window.broadcast.propagateNewPage(f,void 0,m,p)}},{key:"getAllSeriesColors",value:function(){var e=j.ColorManager;if(!e)return[];for(var t=[],n=0;n<dn;n+=1){t.push("series".concat(n));for(var r=0;r<pn;r+=1)t.push("series".concat(n,"-shade").concat(r))}return e.getColors("comparison-series-color",t)}},{key:"loadComparisonsDisabledFor",value:function(){var e=this,t=ke.parsed.value.module;"CoreUpdater"!==t&&"Installation"!==t?He.fetch({module:"API",method:"API.getPagesComparisonsDisabledFor"}).then((function(t){e.privateState.comparisonsDisabledFor=t})):this.privateState.comparisonsDisabledFor=[]}},{key:"parseSegmentComparisons",value:function(){var e=Kt.state.availableSegments,t=Xt(fn(ke.parsed.value.compareSegments));t.unshift(ke.parsed.value.segment||"");var n=[];return t.forEach((function(t,r){var a;e.forEach((function(e){e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(a=e)}));var o=a?a.name:C("General_Unknown");""===t.trim()&&(o=C("SegmentEditor_DefaultAllVisits")),n.push({params:{segment:t},title:j.helper.htmlDecode(o),index:r})})),n}},{key:"parsePeriodComparisons",value:function(){var e=Xt(fn(ke.parsed.value.comparePeriods)),t=Xt(fn(ke.parsed.value.compareDates));e.unshift(ke.parsed.value.period),t.unshift(ke.parsed.value.date);for(var n=[],r=0;r<Math.min(t.length,e.length);r+=1){var a=void 0;try{a=p.parse(e[r],t[r]).getPrettyString()}catch(o){a=C("General_Error")}n.push({params:{date:t[r],period:e[r]},title:a,index:r})}return n}},{key:"checkEnabledForCurrentPage",value:function(){var e=ke.parsed.value.category||ke.parsed.value.module,t=ke.parsed.value.subcategory||ke.parsed.value.action,n="".concat(e,".").concat(t),r=-1===this.privateState.comparisonsDisabledFor.indexOf(n)&&-1===this.privateState.comparisonsDisabledFor.indexOf("".concat(e,".*"));return document.documentElement.classList.toggle("comparisonsDisabled",!r),r}}]),e}(),hn=new mn,vn={key:0,ref:"root",class:"matomo-comparisons"},gn={class:"comparison-type"},bn=["title"],yn=["href"],wn=["title"],kn={class:"comparison-period-label"},Dn=["onClick"],On=["title"],jn={class:"loadingPiwik",style:{display:"none"}},Cn=["alt"];function Pn(e,t,n,r,a,i){return e.isComparing?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",vn,[Object(o["createElementVNode"])("h3",null,Object(o["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.segmentComparisons,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(o["createElementVNode"])("div",gn,Object(o["toDisplayString"])(e.translate("General_Segment")),1),Object(o["createElementVNode"])("div",{class:"title",title:t.title+"<br/>"+decodeURIComponent(t.params.segment)},[Object(o["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(o["toDisplayString"])(t.title),9,yn)],8,bn),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.periodComparisons,(function(n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison-period",key:n.index,title:e.getComparisonTooltip(t,n)},[Object(o["createElementVNode"])("span",{class:"comparison-dot",style:Object(o["normalizeStyle"])({"background-color":e.getSeriesColor(t,n)})},null,4),Object(o["createElementVNode"])("span",kn,Object(o["toDisplayString"])(n.title)+" ("+Object(o["toDisplayString"])(e.getComparisonPeriodType(n))+") ",1)],8,wn)})),128)),e.segmentComparisons.length>1?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,class:"remove-button",onClick:function(t){return e.removeSegmentComparison(n)}},[Object(o["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,On)],8,Dn)):Object(o["createCommentVNode"])("",!0)])})),128)),Object(o["createElementVNode"])("div",jn,[Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,Cn),Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("General_LoadingData")),1)])],512)):Object(o["createCommentVNode"])("",!0)}function Sn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function En(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Sn(Object(n),!0).forEach((function(t){Tn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Tn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var xn=Object(o["defineComponent"])({props:{},data:function(){return{comparisonTooltips:null}},setup:function(){var e=Object(o["computed"])((function(){return hn.isComparing()})),t=Object(o["computed"])((function(){return hn.getSegmentComparisons()})),n=Object(o["computed"])((function(){return hn.getPeriodComparisons()})),r=hn.getSeriesColor.bind(hn);return{isComparing:e,segmentComparisons:t,periodComparisons:n,getSeriesColor:r}},methods:{comparisonHasSegment:function(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison:function(e){window.$(this.$refs.root).tooltip("destroy"),hn.removeSegmentComparison(e)},getComparisonPeriodType:function(e){var t=e.params.period;if("range"===t)return C("CoreHome_PeriodRange");var n=C("Intl_Period".concat(t.substring(0,1).toUpperCase()).concat(t.substring(1)));return n.substring(0,1).toUpperCase()+n.substring(1)},getComparisonTooltip:function(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getUrlToSegment:function(e){var t=En({},ke.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,"".concat(window.location.search,"#?").concat(ke.stringify(t))},setUpTooltips:function(){var e=window,t=e.$;t(this.$refs.root).tooltip({track:!0,content:function(){var e=t(this).attr("title");return window.vueSanitize(e.replace(/\n/g,"<br />"))},show:{delay:200,duration:200},hide:!1})},onComparisonsChanged:function(){var e=this;if(this.comparisonTooltips=null,hn.isComparing()){var t=hn.getPeriodComparisons(),n=hn.getSegmentComparisons();He.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:ke.getSearchParam("compareSegments"),comparePeriods:ke.getSearchParam("comparePeriods"),compareDates:ke.getSearchParam("compareDates"),format_metrics:"1"}).then((function(r){e.comparisonTooltips={},t.forEach((function(t){e.comparisonTooltips[t.index]={},n.forEach((function(n){var a=e.generateComparisonTooltip(r,t,n);e.comparisonTooltips[t.index][n.index]=a}))}))}))}},generateComparisonTooltip:function(e,t,n){if(!e.reportData.comparisons)return"";var r=hn.getComparisonSeriesIndex(t.index,0),a=e.reportData.comparisons[r],o=hn.getComparisonSeriesIndex(t.index,n.index),i=e.reportData.comparisons[o],l=e.reportData.comparisons[n.index],s='<div class="comparison-card-tooltip">',c=(i.nb_visits/a.nb_visits*100).toFixed(2);return c="".concat(c,"%"),s+=C("General_ComparisonCardTooltip1",["'".concat(i.compareSegmentPretty,"'"),i.comparePeriodPretty,c,i.nb_visits.toString(),a.nb_visits.toString()]),t.index>0&&(s+="<br/><br/>",s+=C("General_ComparisonCardTooltip2",[i.nb_visits_change.toString(),l.compareSegmentPretty,l.comparePeriodPretty])),s+="</div>",s}},updated:function(){var e=this;setTimeout((function(){return e.setUpTooltips()}))},mounted:function(){var e=this;j.on("piwikComparisonsChanged",(function(){e.onComparisonsChanged()})),this.onComparisonsChanged(),setTimeout((function(){return e.setUpTooltips()}))},beforeUnmount:function(){try{window.$(this.refs.root).tooltip("destroy")}catch(e){}}});xn.render=Pn;var In=xn; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var Zt=8,en=3;function tn(e){return e?e instanceof Array?e:[e]:[]}var nn=function(){function e(){var t=this;Yt(this,e),Xt(this,"privateState",Object(o["reactive"])({comparisonsDisabledFor:[]})),Xt(this,"state",Object(o["readonly"])(this.privateState)),Xt(this,"colors",{}),Xt(this,"segmentComparisons",Object(o["computed"])((function(){return t.parseSegmentComparisons()}))),Xt(this,"periodComparisons",Object(o["computed"])((function(){return t.parsePeriodComparisons()}))),Xt(this,"isEnabled",Object(o["computed"])((function(){return t.checkEnabledForCurrentPage()}))),this.loadComparisonsDisabledFor(),$((function(){t.colors=t.getAllSeriesColors()})),Object(o["watch"])((function(){return t.getComparisons()}),(function(){return j.postEvent("piwikComparisonsChanged")}),{deep:!0})}return Kt(e,[{key:"getComparisons",value:function(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}},{key:"isComparing",value:function(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}},{key:"isComparingPeriods",value:function(){return this.getPeriodComparisons().length>1}},{key:"getSegmentComparisons",value:function(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}},{key:"getPeriodComparisons",value:function(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}},{key:"getSeriesColor",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.getComparisonSeriesIndex(t.index,e.index)%Zt;if(0===n)return this.colors["series".concat(r)];var a=n%en;return this.colors["series".concat(r,"-shade").concat(a)]}},{key:"getSeriesColorName",value:function(e,t){var n="series".concat(e%Zt);return t>0&&(n+="-shade".concat(t%en)),n}},{key:"isComparisonEnabled",value:function(){return this.isEnabled.value}},{key:"getIndividualComparisonRowIndices",value:function(e){var t=this.getSegmentComparisons().length,n=e%t,r=Math.floor(e/t);return{segmentIndex:n,periodIndex:r}}},{key:"getComparisonSeriesIndex",value:function(e,t){var n=this.getSegmentComparisons().length;return e*n+t}},{key:"getAllComparisonSeries",value:function(){var e=this,t=[],n=0;return this.getPeriodComparisons().forEach((function(r){e.getSegmentComparisons().forEach((function(a){t.push({index:n,params:zt(zt({},a.params),r.params),color:e.colors["series".concat(n)]}),n+=1}))})),t}},{key:"removeSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=Lt(this.segmentComparisons.value);t.splice(e,1);var n={};0===e&&(n.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,n)}},{key:"addSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}},{key:"updateQueryParamsFromComparisons",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},a={},o=!1,i=!1;e.forEach((function(e){o?r[e.params.segment]=!0:o=!0})),t.forEach((function(e){i?a["".concat(e.params.period,"|").concat(e.params.date)]=!0:i=!0}));var l=[],s=[];Object.keys(a).forEach((function(e){var t=e.split("|");l.push(t[0]),s.push(t[1])}));var c={compareSegments:Object.keys(r),comparePeriods:l,compareDates:s};if(j.helper.isAngularRenderingThePage()){var u=ke.hashParsed.value,d=zt(zt(zt({},u),c),n);return delete d["compareSegments[]"],delete d["comparePeriods[]"],delete d["compareDates[]"],void(JSON.stringify(d)!==JSON.stringify(u)&&ke.updateHash(d))}var p=[];["compareSegments","comparePeriods","compareDates"].forEach((function(e){c[e].length||p.push(e)}));var f=ke.stringify(n),m=ke.stringify(c);window.broadcast.propagateNewPage(f,void 0,m,p)}},{key:"getAllSeriesColors",value:function(){for(var e=j.ColorManager,t=[],n=0;n<Zt;n+=1){t.push("series".concat(n));for(var r=0;r<en;r+=1)t.push("series".concat(n,"-shade").concat(r))}return e.getColors("comparison-series-color",t)}},{key:"loadComparisonsDisabledFor",value:function(){var e=this;He.fetch({module:"API",method:"API.getPagesComparisonsDisabledFor"}).then((function(t){e.privateState.comparisonsDisabledFor=t}))}},{key:"parseSegmentComparisons",value:function(){var e=Vt.state.availableSegments,t=Lt(tn(ke.parsed.value.compareSegments));t.unshift(ke.parsed.value.segment||"");var n=[];return t.forEach((function(t,r){var a;e.forEach((function(e){e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(a=e)}));var o=a?a.name:P("General_Unknown");""===t.trim()&&(o=P("SegmentEditor_DefaultAllVisits")),n.push({params:{segment:t},title:j.helper.htmlDecode(o),index:r})})),n}},{key:"parsePeriodComparisons",value:function(){var e=Lt(tn(ke.parsed.value.comparePeriods)),t=Lt(tn(ke.parsed.value.compareDates));e.unshift(ke.parsed.value.period),t.unshift(ke.parsed.value.date);for(var n=[],r=0;r<Math.min(t.length,e.length);r+=1){var a=void 0;try{a=p.parse(e[r],t[r]).getPrettyString()}catch(o){a=P("General_Error")}n.push({params:{date:t[r],period:e[r]},title:a,index:r})}return n}},{key:"checkEnabledForCurrentPage",value:function(){var e=ke.parsed.value.category||ke.parsed.value.module,t=ke.parsed.value.subcategory||ke.parsed.value.action,n="".concat(e,".").concat(t),r=-1===this.privateState.comparisonsDisabledFor.indexOf(n)&&-1===this.privateState.comparisonsDisabledFor.indexOf("".concat(e,".*"));return document.documentElement.classList.toggle("comparisonsDisabled",!r),r}}]),e}(),rn=new nn,an={key:0,ref:"root",class:"matomo-comparisons"},on={class:"comparison-type"},ln=["title"],sn=["href"],cn=["title"],un={class:"comparison-period-label"},dn=["onClick"],pn=["title"],fn={class:"loadingPiwik",style:{display:"none"}},mn=["alt"];function hn(e,t,n,r,a,i){return e.isComparing?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",an,[Object(o["createElementVNode"])("h3",null,Object(o["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.segmentComparisons,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(o["createElementVNode"])("div",on,Object(o["toDisplayString"])(e.translate("General_Segment")),1),Object(o["createElementVNode"])("div",{class:"title",title:t.title+"<br/>"+decodeURIComponent(t.params.segment)},[Object(o["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(o["toDisplayString"])(t.title),9,sn)],8,ln),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.periodComparisons,(function(n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison-period",key:n.index,title:e.getComparisonTooltip(t,n)},[Object(o["createElementVNode"])("span",{class:"comparison-dot",style:Object(o["normalizeStyle"])({"background-color":e.getSeriesColor(t,n)})},null,4),Object(o["createElementVNode"])("span",un,Object(o["toDisplayString"])(n.title)+" ("+Object(o["toDisplayString"])(e.getComparisonPeriodType(n))+") ",1)],8,cn)})),128)),e.segmentComparisons.length>1?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,class:"remove-button",onClick:function(t){return e.removeSegmentComparison(n)}},[Object(o["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,pn)],8,dn)):Object(o["createCommentVNode"])("",!0)])})),128)),Object(o["createElementVNode"])("div",fn,[Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,mn),Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("General_LoadingData")),1)])],512)):Object(o["createCommentVNode"])("",!0)}function gn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gn(Object(n),!0).forEach((function(t){bn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function bn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var yn=Object(o["defineComponent"])({props:{},data:function(){return{comparisonTooltips:null}},setup:function(){var e=Object(o["computed"])((function(){return rn.isComparing()})),t=Object(o["computed"])((function(){return rn.getSegmentComparisons()})),n=Object(o["computed"])((function(){return rn.getPeriodComparisons()})),r=rn.getSeriesColor.bind(rn);return{isComparing:e,segmentComparisons:t,periodComparisons:n,getSeriesColor:r}},methods:{comparisonHasSegment:function(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison:function(e){window.$(this.$refs.root).tooltip("destroy"),rn.removeSegmentComparison(e)},getComparisonPeriodType:function(e){var t=e.params.period;if("range"===t)return P("CoreHome_PeriodRange");var n=P("Intl_Period".concat(t.substring(0,1).toUpperCase()).concat(t.substring(1)));return n.substring(0,1).toUpperCase()+n.substring(1)},getComparisonTooltip:function(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getUrlToSegment:function(e){var t=vn({},ke.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,"".concat(window.location.search,"#?").concat(ke.stringify(t))},setUpTooltips:function(){var e=window,t=e.$;t(this.$refs.root).tooltip({track:!0,content:function(){var e=t(this).attr("title");return window.vueSanitize(e.replace(/\n/g,"<br />"))},show:{delay:200,duration:200},hide:!1})},onComparisonsChanged:function(){var e=this;if(this.comparisonTooltips=null,rn.isComparing()){var t=rn.getPeriodComparisons(),n=rn.getSegmentComparisons();He.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:ke.getSearchParam("compareSegments"),comparePeriods:ke.getSearchParam("comparePeriods"),compareDates:ke.getSearchParam("compareDates"),format_metrics:"1"}).then((function(r){e.comparisonTooltips={},t.forEach((function(t){e.comparisonTooltips[t.index]={},n.forEach((function(n){var a=e.generateComparisonTooltip(r,t,n);e.comparisonTooltips[t.index][n.index]=a}))}))}))}},generateComparisonTooltip:function(e,t,n){if(!e.reportData.comparisons)return"";var r=rn.getComparisonSeriesIndex(t.index,0),a=e.reportData.comparisons[r],o=rn.getComparisonSeriesIndex(t.index,n.index),i=e.reportData.comparisons[o],l=e.reportData.comparisons[n.index],s='<div class="comparison-card-tooltip">',c=(i.nb_visits/a.nb_visits*100).toFixed(2);return c="".concat(c,"%"),s+=P("General_ComparisonCardTooltip1",["'".concat(i.compareSegmentPretty,"'"),i.comparePeriodPretty,c,i.nb_visits.toString(),a.nb_visits.toString()]),t.index>0&&(s+="<br/><br/>",s+=P("General_ComparisonCardTooltip2",[i.nb_visits_change.toString(),l.compareSegmentPretty,l.comparePeriodPretty])),s+="</div>",s}},updated:function(){var e=this;setTimeout((function(){return e.setUpTooltips()}))},mounted:function(){var e=this;j.on("piwikComparisonsChanged",(function(){e.onComparisonsChanged()})),this.onComparisonsChanged(),setTimeout((function(){return e.setUpTooltips()}))},beforeUnmount:function(){try{window.$(this.refs.root).tooltip("destroy")}catch(e){}}});yn.render=hn;var wn=yn; + */function Hn(){return hn}Hn.$inject=[],angular.module("piwikApp.service").factory("piwikComparisonsService",Hn);yt({component:In,directiveName:"piwikComparisons",restrict:"E"});var $n={ref:"root",class:"menuDropdown"},An=["title"],Bn=["innerHTML"],Mn=Object(o["createElementVNode"])("span",{class:"icon-arrow-bottom"},null,-1),Nn={class:"items"},Fn={key:0,class:"search"},Vn=["placeholder"],Ln=["title"],Rn=["title"];function Un(e,t,n,r,a,i){var l=Object(o["resolveDirective"])("focus-anywhere-but-here");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",$n,[Object(o["createElementVNode"])("span",{class:"title",onClick:t[0]||(t[0]=function(t){return e.showItems=!e.showItems}),title:e.tooltip},[Object(o["createElementVNode"])("span",{innerHTML:e.$sanitize(this.actualMenuTitle)},null,8,Bn),Mn],8,An),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",Nn,[e.showSearch&&e.showItems?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Fn,[Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),onKeydown:t[2]||(t[2]=function(t){return e.onSearchTermKeydown(t)}),placeholder:e.translate("General_Search")},null,40,Vn),[[o["vModelText"],e.searchTerm]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("img",{class:"search_ico",src:"plugins/Morpheus/images/search_ico.png",title:e.translate("General_Search")},null,8,Ln),[[o["vShow"],!e.searchTerm]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("img",{onClick:t[3]||(t[3]=function(t){e.searchTerm="",e.searchItems("")}),class:"reset",src:"plugins/CoreHome/images/reset_search.png",title:e.translate("General_Clear")},null,8,Rn),[[o["vShow"],e.searchTerm]])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",{onClick:t[4]||(t[4]=function(t){return e.selectItem(t)})},[Object(o["renderSlot"])(e.$slots,"default")])],512),[[o["vShow"],e.showItems]])],512)),[[l,{blur:e.lostFocus}]])}var _n=window,Jn=_n.$,qn=Object(o["defineComponent"])({props:{menuTitle:String,tooltip:String,showSearch:Boolean,menuTitleChangeOnClick:String},directives:{FocusAnywhereButHere:Re,FocusIf:_e},emits:["afterSelect"],watch:{menuTitle:function(){this.actualMenuTitle=this.menuTitle}},data:function(){return{showItems:!1,searchTerm:"",actualMenuTitle:this.menuTitle}},methods:{lostFocus:function(){this.showItems=!1},selectItem:function(e){var t=e.target.classList;!t.contains("item")||t.contains("disabled")||t.contains("separator")||(!1!==this.menuTitleChangeOnClick&&(this.actualMenuTitle=e.target.textContent.replace(/[\u0000-\u2666]/g,(function(e){return"&#".concat(e.charCodeAt(0),";")}))),this.showItems=!1,Jn(this.$slots.default()).find(".item").removeClass("active"),t.add("active"),this.$emit("afterSelect"))},onSearchTermKeydown:function(){var e=this;setTimeout((function(){e.searchItems(e.searchTerm)}))},searchItems:function(e){var t=e.toLowerCase();Jn(this.$refs.root).find(".item").each((function(e,n){var r=Jn(n);-1===r.text().toLowerCase().indexOf(t)?r.hide():r.show()}))}}});qn.render=Un;var Gn=qn,Qn=(yt({component:Gn,scope:{menuTitle:{angularJsBind:"@"},tooltip:{angularJsBind:"@"},showSearch:{angularJsBind:"="},menuTitleChangeOnClick:{angularJsBind:"="}},directiveName:"piwikMenudropdown",transclude:!0,events:{"after-select":function(e,t){setTimeout((function(){t.$apply()}),0)}}}),{ref:"root"}); /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function kn(){return rn}kn.$inject=[],angular.module("piwikApp.service").factory("piwikComparisonsService",kn);st({component:wn,directiveName:"piwikComparisons",restrict:"E"});var Dn={ref:"root"};function On(e,t,n,r,a,i){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Dn,null,512)}function jn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?jn(Object(n),!0).forEach((function(t){Cn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Cn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Sn=1,En=window,Tn=En.$,xn=Object(o["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup:function(e,t){var n=Object(o["ref"])(null);function r(t,n){var r=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&n>=e.selectedDateStart&&n<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&n>=e.highlightedDateStart&&n<=e.highlightedDateEnd){var a=r.length?r:t;a.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),r.removeClass("ui-state-hover")}function a(e,t,n){if(e.hasClass("ui-datepicker-other-month"))return i(e,t,n);var r=parseInt(e.children("a,span").text(),10);return new Date(n,t,r)}function i(e,t,n){var r,o=e.parent(),i=o.children("td");if(o.is(":first-child")){var l=o.children("td:not(.ui-datepicker-other-month)").first();return r=a(l,t,n),r.setDate(i.index(e)-i.index(l)+1),r}var s=o.children("td:not(.ui-datepicker-other-month)").last();return r=a(s,t,n),r.setDate(r.getDate()+i.index(e)-i.index(s)),r}function l(){var e=Tn(n.value),t=e.find("td[data-month]"),r=parseInt(t.attr("data-month"),10),a=parseInt(t.attr("data-year"),10);return[r,a]}function s(){var e=Tn(n.value),t=e.find(".ui-datepicker-calendar"),o=l(),i=t.find("td"),s=i.first(),c=a(s,o[0],o[1]);i.each((function(){r(Tn(this),c),c.setDate(c.getDate()+1)}))}function c(){var t=e.viewDate;if(!t)return!1;if(!(t instanceof Date))try{t=E(t)}catch(o){return!1}var r=Tn(n.value),a=l();return(a[0]!==t.getMonth()||a[1]!==t.getFullYear())&&(r.datepicker("setDate",t),!0)}function u(){var e=Tn(n.value);e.find("td[data-event]").off("click"),e.find(".ui-state-active").removeClass("ui-state-active"),e.find(".ui-datepicker-current-day").removeClass("ui-datepicker-current-day"),e.find(".ui-datepicker-prev,.ui-datepicker-next").attr("href","")}function d(){var t=Tn(n.value),r=e.stepMonths||Sn;if(t.datepicker("option","stepMonths")===r)return!1;var a=Tn(".ui-datepicker-month",t).val(),o=Tn(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",r).datepicker("setDate",new Date(o,a)),u(),!0}function p(){var t=Tn(n.value);t.find(".ui-datepicker-month").attr("disabled",e.disableMonthDropdown)}function f(){if(Tn(this).hasClass("ui-state-hover")){var e=Tn(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}}function m(){p(),s()}return Object(o["watch"])((function(){return Pn({},e)}),(function(e,t){var n=!1;["selectedDateStart","selectedDateEnd","highlightedDateStart","highlightedDateEnd"].forEach((function(r){n||(!e[r]&&t[r]&&(n=!0),e[r]&&!t[r]&&(n=!0),e[r]&&t[r]&&e[r].getTime()!==t[r].getTime()&&(n=!0))})),e.viewDate!==t.viewDate&&c()&&(n=!0),e.stepMonths!==t.stepMonths&&d(),e.enableDisableMonthDropdown!==t.enableDisableMonthDropdown&&p(),n&&s()})),Object(o["onMounted"])((function(){var r=Tn(n.value),o=e.options||{},i=Pn(Pn(Pn({},j.getBaseDatePickerOptions()),o),{},{onChangeMonthYear:function(){setTimeout((function(){u()}))}});r.datepicker(i),r.on("mouseover","tbody td a",(function(e){e.originalEvent&&s()})),r.on("mouseenter","tbody td",(function(){var e=l(),n=Tn(this),r=a(n,e[0],e[1]);t.emit("cellHover",{date:r,$cell:n})})),r.on("mouseout","tbody td a",(function(){s()})),r.on("mouseleave","table",(function(){return t.emit("cellHoverLeave")})).on("mouseenter","thead",(function(){return t.emit("cellHoverLeave")})),r.on("click","tbody td.ui-datepicker-other-month",(function(){return f()})),r.on("click",(function(e){e.preventDefault();var t=Tn(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&m()})),r.on("click","td[data-month]",(function(e){var n=Tn(e.target).closest("td"),r=parseInt(n.attr("data-month"),10),a=parseInt(n.attr("data-year"),10),o=parseInt(n.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(a,r,o)})}));var h=d();c(),p(),h||u(),s()})),{root:n}}});xn.render=On;var In=xn,Hn=(st({component:In,scope:{selectedDateStart:{angularJsBind:"<"},selectedDateEnd:{angularJsBind:"<"},highlightedDateStart:{angularJsBind:"<"},highlightedDateEnd:{angularJsBind:"<"},viewDate:{angularJsBind:"<"},stepMonths:{angularJsBind:"<"},disableMonthDropdown:{angularJsBind:"<"},options:{angularJsBind:"<"},cellHover:{angularJsBind:"&"},cellHoverLeave:{angularJsBind:"&"},dateSelect:{angularJsBind:"&"}},directiveName:"piwikDatePicker",events:{"cell-hover":function(e,t,n,r,a){a()},"cell-hover-leave":function(e,t,n,r,a){a()},"date-select":function(e,t,n,r,a){a()}},$inject:["$timeout"]}),{id:"calendarRangeFrom"}),An={id:"calendarRangeTo"}; + */function zn(e,t,n,r,a,i){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Qn,null,512)}function Yn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Wn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yn(Object(n),!0).forEach((function(t){Kn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Kn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Xn=1,Zn=window,er=Zn.$,tr=Object(o["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup:function(e,t){var n=Object(o["ref"])(null);function r(t,n){var r=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&n>=e.selectedDateStart&&n<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&n>=e.highlightedDateStart&&n<=e.highlightedDateEnd){var a=r.length?r:t;a.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),r.removeClass("ui-state-hover")}function a(e,t,n){if(e.hasClass("ui-datepicker-other-month"))return i(e,t,n);var r=parseInt(e.children("a,span").text(),10);return new Date(n,t,r)}function i(e,t,n){var r,o=e.parent(),i=o.children("td");if(o.is(":first-child")){var l=o.children("td:not(.ui-datepicker-other-month)").first();return r=a(l,t,n),r.setDate(i.index(e)-i.index(l)+1),r}var s=o.children("td:not(.ui-datepicker-other-month)").last();return r=a(s,t,n),r.setDate(r.getDate()+i.index(e)-i.index(s)),r}function l(){var e=er(n.value),t=e.find("td[data-month]"),r=parseInt(t.attr("data-month"),10),a=parseInt(t.attr("data-year"),10);return[r,a]}function s(){var e=er(n.value),t=e.find(".ui-datepicker-calendar"),o=l(),i=t.find("td"),s=i.first(),c=a(s,o[0],o[1]);i.each((function(){r(er(this),c),c.setDate(c.getDate()+1)}))}function c(){var t=e.viewDate;if(!t)return!1;if(!(t instanceof Date))try{t=E(t)}catch(o){return!1}var r=er(n.value),a=l();return(a[0]!==t.getMonth()||a[1]!==t.getFullYear())&&(r.datepicker("setDate",t),!0)}function u(){var e=er(n.value);e.find("td[data-event]").off("click"),e.find(".ui-state-active").removeClass("ui-state-active"),e.find(".ui-datepicker-current-day").removeClass("ui-datepicker-current-day"),e.find(".ui-datepicker-prev,.ui-datepicker-next").attr("href","")}function d(){var t=er(n.value),r=e.stepMonths||Xn;if(t.datepicker("option","stepMonths")===r)return!1;var a=er(".ui-datepicker-month",t).val(),o=er(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",r).datepicker("setDate",new Date(o,a)),u(),!0}function p(){var t=er(n.value);t.find(".ui-datepicker-month").attr("disabled",e.disableMonthDropdown)}function f(){if(er(this).hasClass("ui-state-hover")){var e=er(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}}function m(){p(),s()}return Object(o["watch"])((function(){return Wn({},e)}),(function(e,t){var n=!1;["selectedDateStart","selectedDateEnd","highlightedDateStart","highlightedDateEnd"].forEach((function(r){n||(!e[r]&&t[r]&&(n=!0),e[r]&&!t[r]&&(n=!0),e[r]&&t[r]&&e[r].getTime()!==t[r].getTime()&&(n=!0))})),e.viewDate!==t.viewDate&&c()&&(n=!0),e.stepMonths!==t.stepMonths&&d(),e.enableDisableMonthDropdown!==t.enableDisableMonthDropdown&&p(),n&&s()})),Object(o["onMounted"])((function(){var r=er(n.value),o=e.options||{},i=Wn(Wn(Wn({},j.getBaseDatePickerOptions()),o),{},{onChangeMonthYear:function(){setTimeout((function(){u()}))}});r.datepicker(i),r.on("mouseover","tbody td a",(function(e){e.originalEvent&&s()})),r.on("mouseenter","tbody td",(function(){var e=l(),n=er(this),r=a(n,e[0],e[1]);t.emit("cellHover",{date:r,$cell:n})})),r.on("mouseout","tbody td a",(function(){s()})),r.on("mouseleave","table",(function(){return t.emit("cellHoverLeave")})).on("mouseenter","thead",(function(){return t.emit("cellHoverLeave")})),r.on("click","tbody td.ui-datepicker-other-month",(function(){return f()})),r.on("click",(function(e){e.preventDefault();var t=er(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&m()})),r.on("click","td[data-month]",(function(e){var n=er(e.target).closest("td"),r=parseInt(n.attr("data-month"),10),a=parseInt(n.attr("data-year"),10),o=parseInt(n.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(a,r,o)})}));var h=d();c(),p(),h||u(),s()})),{root:n}}});tr.render=zn;var nr=tr,rr=(yt({component:nr,scope:{selectedDateStart:{angularJsBind:"<"},selectedDateEnd:{angularJsBind:"<"},highlightedDateStart:{angularJsBind:"<"},highlightedDateEnd:{angularJsBind:"<"},viewDate:{angularJsBind:"<"},stepMonths:{angularJsBind:"<"},disableMonthDropdown:{angularJsBind:"<"},options:{angularJsBind:"<"},cellHover:{angularJsBind:"&"},cellHoverLeave:{angularJsBind:"&"},dateSelect:{angularJsBind:"&"}},directiveName:"piwikDatePicker",events:{"cell-hover":function(e,t,n,r,a){a()},"cell-hover-leave":function(e,t,n,r,a){a()},"date-select":function(e,t,n,r,a){a()}},$inject:["$timeout"]}),{id:"calendarRangeFrom"}),ar={id:"calendarRangeTo"}; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function $n(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createElementBlock"])(o["Fragment"],null,[Object(o["createElementVNode"])("div",Hn,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.startDateText=t}),onChange:t[1]||(t[1]=function(t){return e.onRangeInputChanged("from",t)}),onKeyup:t[2]||(t[2]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.startDateText]])]),Object(o["createVNode"])(l,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDates[0],"selected-date-end":e.fromPickerSelectedDates[1],"highlighted-date-start":e.fromPickerHighlightedDates[0],"highlighted-date-end":e.fromPickerHighlightedDates[1],onDateSelect:t[3]||(t[3]=function(t){return e.setStartRangeDate(t.date)}),onCellHover:t[4]||(t[4]=function(t){return e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[5]||(t[5]=function(t){return e.fromPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(o["createElementVNode"])("div",An,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.endDateText=t}),onChange:t[7]||(t[7]=function(t){return e.onRangeInputChanged("to",t)}),onKeyup:t[8]||(t[8]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.endDateText]])]),Object(o["createVNode"])(l,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDates[0],"selected-date-end":e.toPickerSelectedDates[1],"highlighted-date-start":e.toPickerHighlightedDates[0],"highlighted-date-end":e.toPickerHighlightedDates[1],onDateSelect:t[9]||(t[9]=function(t){return e.setEndRangeDate(t.date)}),onCellHover:t[10]||(t[10]=function(t){return e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[11]||(t[11]=function(t){return e.toPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])],64)}var Bn=Object(o["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:In},data:function(){var e=null;try{e=E(this.startDate)}catch(n){}var t=null;try{t=E(this.endDate)}catch(n){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate}},emits:["rangeChange","submit"],watch:{startDate:function(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate:function(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted:function(){this.rangeChanged()},methods:{setStartRangeDate:function(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate:function(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged:function(e,t){"from"===e?this.setStartRangeDateFromStr(t.target.value):this.setEndRangeDateFromStr(t.target.value)},getNewHighlightedDates:function(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress:function(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr:function(e){var t;try{t=E(e)}catch(n){this.startDateText=this.startDate}t&&(this.fromPickerSelectedDates=[t,t]),this.rangeChanged()},setEndRangeDateFromStr:function(e){var t;try{t=E(e)}catch(n){this.endDateText=this.endDate}t&&(this.toPickerSelectedDates=[t,t]),this.rangeChanged()},rangeChanged:function(){this.$emit("rangeChange",{start:C(this.fromPickerSelectedDates[0]),end:C(this.toPickerSelectedDates[0])})}}});Bn.render=$n;var Nn=Bn; + */function or(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createElementBlock"])(o["Fragment"],null,[Object(o["createElementVNode"])("div",rr,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.startDateText=t}),onChange:t[1]||(t[1]=function(t){return e.onRangeInputChanged("from",t)}),onKeyup:t[2]||(t[2]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.startDateText]])]),Object(o["createVNode"])(l,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDates[0],"selected-date-end":e.fromPickerSelectedDates[1],"highlighted-date-start":e.fromPickerHighlightedDates[0],"highlighted-date-end":e.fromPickerHighlightedDates[1],onDateSelect:t[3]||(t[3]=function(t){return e.setStartRangeDate(t.date)}),onCellHover:t[4]||(t[4]=function(t){return e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[5]||(t[5]=function(t){return e.fromPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(o["createElementVNode"])("div",ar,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.endDateText=t}),onChange:t[7]||(t[7]=function(t){return e.onRangeInputChanged("to",t)}),onKeyup:t[8]||(t[8]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.endDateText]])]),Object(o["createVNode"])(l,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDates[0],"selected-date-end":e.toPickerSelectedDates[1],"highlighted-date-start":e.toPickerHighlightedDates[0],"highlighted-date-end":e.toPickerHighlightedDates[1],onDateSelect:t[9]||(t[9]=function(t){return e.setEndRangeDate(t.date)}),onCellHover:t[10]||(t[10]=function(t){return e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[11]||(t[11]=function(t){return e.toPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])],64)}var ir=Object(o["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:nr},data:function(){var e=null;try{e=E(this.startDate)}catch(n){}var t=null;try{t=E(this.endDate)}catch(n){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate}},emits:["rangeChange","submit"],watch:{startDate:function(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate:function(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted:function(){this.rangeChanged()},methods:{setStartRangeDate:function(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate:function(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged:function(e,t){"from"===e?this.setStartRangeDateFromStr(t.target.value):this.setEndRangeDateFromStr(t.target.value)},getNewHighlightedDates:function(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress:function(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr:function(e){var t;try{t=E(e)}catch(n){this.startDateText=this.startDate}t&&(this.fromPickerSelectedDates=[t,t]),this.rangeChanged()},setEndRangeDateFromStr:function(e){var t;try{t=E(e)}catch(n){this.endDateText=this.endDate}t&&(this.toPickerSelectedDates=[t,t]),this.rangeChanged()},rangeChanged:function(){this.$emit("rangeChange",{start:P(this.fromPickerSelectedDates[0]),end:P(this.toPickerSelectedDates[0])})}}});ir.render=or;var lr=ir; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */st({component:Nn,scope:{startDate:{angularJsBind:"<"},endDate:{angularJsBind:"<"},rangeChange:{angularJsBind:"&"},submit:{angularJsBind:"&"}},directiveName:"piwikDateRangePicker",restrict:"E"});function Mn(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createBlock"])(l,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"highlighted-date-start":e.highlightedDates[0],"highlighted-date-end":e.highlightedDates[1],"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=function(t){return e.onHoverNormalCell(t.date,t.$cell)}),onCellHoverLeave:t[1]||(t[1]=function(t){return e.onHoverLeaveNormalCells()}),onDateSelect:t[2]||(t[2]=function(t){return e.onDateSelected(t.date)})},null,8,["selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}var Fn=new Date(j.minDateYear,j.minDateMonth-1,j.minDateDay),Rn=new Date(j.maxDateYear,j.maxDateMonth-1,j.maxDateDay),Vn=Object(o["defineComponent"])({props:{period:String,date:[String,Date]},components:{DatePicker:In},emits:["select"],setup:function(e,t){var n=Object(o["ref"])(e.date),r=Object(o["ref"])([null,null]),a=Object(o["ref"])([null,null]);function i(t){var n=p.get(e.period).parse(t).getDateRange();return n[0]=Fn<n[0]?n[0]:Fn,n[1]=Rn>n[1]?n[1]:Rn,n}function l(t,n){var r=t<Fn||t>Rn,o=n.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);a.value=r||o?[null,null]:i(t)}function s(){a.value=[null,null]}function c(e){t.emit("select",{date:e})}function u(){e.period&&e.date?r.value=i(e.date):r.value=[null,null]}return Object(o["watch"])(e,u),u(),{selectedDates:r,highlightedDates:a,viewDate:n,onHoverNormalCell:l,onHoverLeaveNormalCells:s,onDateSelected:c}}});Vn.render=Mn;var Ln=Vn,Un=(st({component:Ln,scope:{period:{angularJsBind:"<"},date:{angularJsBind:"<"},select:{angularJsBind:"&"}},directiveName:"piwikPeriodDatePicker",restrict:"E"}),{class:"loadingPiwik"}),_n=Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1); + */yt({component:lr,scope:{startDate:{angularJsBind:"<"},endDate:{angularJsBind:"<"},rangeChange:{angularJsBind:"&"},submit:{angularJsBind:"&"}},directiveName:"piwikDateRangePicker",restrict:"E"});function sr(e,t,n,r,a,i){var l=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createBlock"])(l,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"highlighted-date-start":e.highlightedDates[0],"highlighted-date-end":e.highlightedDates[1],"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=function(t){return e.onHoverNormalCell(t.date,t.$cell)}),onCellHoverLeave:t[1]||(t[1]=function(t){return e.onHoverLeaveNormalCells()}),onDateSelect:t[2]||(t[2]=function(t){return e.onDateSelected(t.date)})},null,8,["selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}var cr=new Date(j.minDateYear,j.minDateMonth-1,j.minDateDay),ur=new Date(j.maxDateYear,j.maxDateMonth-1,j.maxDateDay),dr=Object(o["defineComponent"])({props:{period:String,date:[String,Date]},components:{DatePicker:nr},emits:["select"],setup:function(e,t){var n=Object(o["ref"])(e.date),r=Object(o["ref"])([null,null]),a=Object(o["ref"])([null,null]);function i(t){var n=p.get(e.period).parse(t).getDateRange();return n[0]=cr<n[0]?n[0]:cr,n[1]=ur>n[1]?n[1]:ur,n}function l(t,n){var r=t<cr||t>ur,o=n.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);a.value=r||o?[null,null]:i(t)}function s(){a.value=[null,null]}function c(e){t.emit("select",{date:e})}function u(){e.period&&e.date?r.value=i(e.date):r.value=[null,null]}return Object(o["watch"])(e,u),u(),{selectedDates:r,highlightedDates:a,viewDate:n,onHoverNormalCell:l,onHoverLeaveNormalCells:s,onDateSelected:c}}});dr.render=sr;var pr=dr,fr=(yt({component:pr,scope:{period:{angularJsBind:"<"},date:{angularJsBind:"<"},select:{angularJsBind:"&"}},directiveName:"piwikPeriodDatePicker",restrict:"E"}),{class:"loadingPiwik"}),mr=Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1); /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function Jn(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Un,[_n,Object(o["createElementVNode"])("span",null,Object(o["toDisplayString"])(e.loadingMessage),1)],512)),[[o["vShow"],e.loading]])}var qn=Object(o["defineComponent"])({props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:P("General_LoadingData")}}});qn.render=Jn;var Gn=qn,Qn=st({component:Gn,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return P("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"}); + */function hr(e,t,n,r,a,i){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",fr,[mr,Object(o["createElementVNode"])("span",null,Object(o["toDisplayString"])(e.loadingMessage),1)],512)),[[o["vShow"],e.loading]])}var vr=Object(o["defineComponent"])({props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:C("General_LoadingData")}}});vr.render=hr;var gr=vr,br=yt({component:gr,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return C("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"}); /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function zn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Yn(e,t,n,r,a,i){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["alert",zn({},"alert-".concat(e.severity),!0)])},[Object(o["renderSlot"])(e.$slots,"default")],2)}var Wn=Object(o["defineComponent"])({props:{severity:{type:String,required:!0}}});Wn.render=Yn;var Kn=Wn,Xn=st({component:Kn,scope:{severity:{vue:"severity",angularJsBind:"@piwikAlert"}},directiveName:"piwikAlert",transclude:!0}); + */function yr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wr(e,t,n,r,a,i){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["alert",yr({},"alert-".concat(e.severity),!0)])},[Object(o["renderSlot"])(e.$slots,"default")],2)}var kr=Object(o["defineComponent"])({props:{severity:{type:String,required:!0}}});kr.render=wr;var Dr=kr,Or=yt({component:Dr,scope:{severity:{vue:"severity",angularJsBind:"@piwikAlert"}},directiveName:"piwikAlert",transclude:!0}); /*! * Matomo - free/libre analytics platform * diff --git a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts index f3204f163a..6d3b8462dd 100644 --- a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts +++ b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts @@ -299,6 +299,10 @@ export default class ComparisonsStore { private getAllSeriesColors() { const { ColorManager } = Matomo; + if (!ColorManager) { + return []; + } + const seriesColorNames = []; for (let i = 0; i < SERIES_COLOR_COUNT; i += 1) { @@ -312,6 +316,14 @@ export default class ComparisonsStore { } private loadComparisonsDisabledFor() { + const matomoModule: string = MatomoUrl.parsed.value.module as string; + if (matomoModule === 'CoreUpdater' + || matomoModule === 'Installation' + ) { + this.privateState.comparisonsDisabledFor = []; + return; + } + AjaxHelper.fetch({ module: 'API', method: 'API.getPagesComparisonsDisabledFor', diff --git a/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts new file mode 100644 index 0000000000..1e8598881a --- /dev/null +++ b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.adapter.ts @@ -0,0 +1,34 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { IDirective } from 'angular'; +import DropdownMenu from './DropdownMenu'; + +function piwikDropdownMenu($timeout): IDirective { + return { + restrict: 'A', + link: function piwikDropdownMenuLink(scope, element, attrs) { + const binding = { + instance: null, + value: { + activates: $(`#${attrs.activates}`)[0], + }, + oldValue: null, + modifiers: {}, + dir: {}, + }; + + $timeout(() => { + DropdownMenu.mounted(element[0], binding); + }); + }, + }; +} + +piwikDropdownMenu.$inject = ['$timeout']; + +angular.module('piwikApp').directive('piwikDropdownMenu', piwikDropdownMenu); diff --git a/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.less b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.less index 92f8ca8785..606b42bd1f 100644 --- a/plugins/CoreHome/angularjs/dropdown-menu/dropdown-menu.directive.less +++ b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.less @@ -1,4 +1,4 @@ -[piwik-dropdown-menu] { +[piwik-dropdown-menu],[matomo-dropdown-menu] { position: relative; &::after { diff --git a/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts new file mode 100644 index 0000000000..a39d288565 --- /dev/null +++ b/plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.ts @@ -0,0 +1,53 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { DirectiveBinding } from 'vue'; + +interface DropdownArgs { + activates: HTMLElement, +} + +/** + * A materializecss dropdown menu that supports submenus. + * + * To use a submenu, just use this directive within another dropdown. + * + * Note: if submenus are used, then dropdowns will never scroll. + * + * Usage: + * <a class='dropdown-trigger btn' href='' data-target='mymenu' v-dropdown-menu>Menu</a> + * <ul id='mymenu' class='dropdown-content'> + * <li> + * <a class='dropdown-trigger' data-target="mysubmenu" v-dropdown-menu>Submenu</a> + * <ul id="mysubmenu" class="dropdown-content"> + * <li>Submenu Item</li> + * </ul> + * </li> + * <li> + * <a href="">Another item</a> + * </li> + * </ul> + */ +export default { + mounted(element: HTMLElement, binding: DirectiveBinding<DropdownArgs>): void { + let options = {}; + + $(element).addClass('matomo-dropdown-menu'); + + const isSubmenu = !!$(element).parent().closest('.dropdown-content').length; + if (isSubmenu) { + options = { hover: true }; + $(element).addClass('submenu'); + $(binding.value.activates).addClass('submenu-dropdown-content'); + + // if a submenu is used, the dropdown will never scroll + $(element).parents('.dropdown-content').addClass('submenu-container'); + } + + $(element).dropdown(options); + }, +}; diff --git a/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts b/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts index f7dff78fde..c4d39aab52 100644 --- a/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts +++ b/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.adapter.ts @@ -22,9 +22,8 @@ export default function piwikExpandOnClick(): IDirective { dir: {}, }; - const wrapped = ExpandOnClick; - wrapped.mounted(element[0], binding); - element.on('$destroy', () => wrapped.unmounted(element[0], binding)); + ExpandOnClick.mounted(element[0], binding); + element.on('$destroy', () => ExpandOnClick.unmounted(element[0], binding)); }, }; } diff --git a/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts b/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts index 5ffdc00153..83ea6ff966 100644 --- a/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts +++ b/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.adapter.ts @@ -21,9 +21,8 @@ function piwikExpandOnHover() { dir: {}, }; - const wrapped = ExpandOnHover; - wrapped.mounted(element[0], binding); - element.on('$destroy', () => wrapped.unmounted(element[0], binding)); + ExpandOnHover.mounted(element[0], binding); + element.on('$destroy', () => ExpandOnHover.unmounted(element[0], binding)); }, }; } diff --git a/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts new file mode 100644 index 0000000000..348a51cd73 --- /dev/null +++ b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.adapter.ts @@ -0,0 +1,44 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { IDirective } from 'angular'; +import FocusAnywhereButHere from './FocusAnywhereButHere'; + +/** + * The given expression will be executed when the user presses either escape or presses something + * outside of this element + * + * Example: + * <div piwik-focus-anywhere-but-here="closeDialog()">my dialog</div> + */ +function piwikFocusAnywhereButHere(): IDirective { + return { + restrict: 'A', + link: function focusAnywhereButHereLink(scope, element, attr) { + const binding = { + instance: null, + value: { + blur: () => { + setTimeout(() => { + scope.$apply(attr.piwikFocusAnywhereButHere); + }, 0); + }, + }, + oldValue: null, + modifiers: {}, + dir: {}, + }; + + FocusAnywhereButHere.mounted(element[0], binding); + element.on('$destroy', () => FocusAnywhereButHere.unmounted(element[0], binding)); + }, + }; +} + +piwikFocusAnywhereButHere.$inject = []; + +angular.module('piwikApp.directive').directive('piwikFocusAnywhereButHere', piwikFocusAnywhereButHere); diff --git a/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts new file mode 100644 index 0000000000..dcfb3928f9 --- /dev/null +++ b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts @@ -0,0 +1,98 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { DirectiveBinding } from 'vue'; + +interface FocusAnywhereButHereArgs { + blur: () => void, + + isMouseDown?: boolean; + hasScrolled?: boolean; + onEscapeHandler?: (event: KeyboardEvent) => void; + onMouseDown?: () => void; + onClickOutsideElement?: (event: MouseEvent) => void; + onScroll?: () => void; +} + +function onClickOutsideElement( + element: HTMLElement, + binding: DirectiveBinding<FocusAnywhereButHereArgs>, + event: MouseEvent, +) { + const hadUsedScrollbar = binding.value.isMouseDown && binding.value.hasScrolled; + binding.value.isMouseDown = false; + binding.value.hasScrolled = false; + + if (hadUsedScrollbar) { + return; + } + + if (!element.contains(event.target as HTMLElement)) { + if (binding.value) { + binding.value.blur(); + } + } +} + +function onScroll(element: HTMLElement, binding: DirectiveBinding<FocusAnywhereButHereArgs>) { + binding.value.hasScrolled = true; +} + +function onMouseDown(element: HTMLElement, binding: DirectiveBinding<FocusAnywhereButHereArgs>) { + binding.value.isMouseDown = true; + binding.value.hasScrolled = false; +} + +function onEscapeHandler( + element: HTMLElement, + binding: DirectiveBinding<FocusAnywhereButHereArgs>, + event: KeyboardEvent, +) { + if (event.which === 27) { + setTimeout(() => { + binding.value.isMouseDown = false; + binding.value.hasScrolled = false; + if (binding.value.blur) { + binding.value.blur(); + } + }, 0); + } +} + +const doc = document.documentElement; + +/** + * Usage (in a component): + * + * directives: { + * // function call is important since we store state in this directive + * FocusAnywhereButHere: FocusAnywhereButHere(), + * } + * + * Note: the binding data needs to be static, changes will not be handled. + */ +export default { + mounted(el: HTMLElement, binding: DirectiveBinding<FocusAnywhereButHereArgs>): void { + binding.value.isMouseDown = false; + binding.value.hasScrolled = false; + binding.value.onEscapeHandler = onEscapeHandler.bind(null, el, binding); + binding.value.onMouseDown = onMouseDown.bind(null, el, binding); + binding.value.onClickOutsideElement = onClickOutsideElement.bind(null, el, binding); + binding.value.onScroll = onScroll.bind(null, el, binding); + + doc.addEventListener('keyup', binding.value.onEscapeHandler); + doc.addEventListener('mousedown', binding.value.onMouseDown); + doc.addEventListener('mouseup', binding.value.onClickOutsideElement); + doc.addEventListener('scroll', binding.value.onScroll); + }, + unmounted(el: HTMLElement, binding: DirectiveBinding<FocusAnywhereButHereArgs>): void { + doc.removeEventListener('keyup', binding.value.onEscapeHandler); + doc.removeEventListener('mousedown', binding.value.onMouseDown); + doc.removeEventListener('mouseup', binding.value.onClickOutsideElement); + doc.removeEventListener('scroll', binding.value.onScroll); + }, +}; diff --git a/plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts b/plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts new file mode 100644 index 0000000000..a2226866ad --- /dev/null +++ b/plugins/CoreHome/vue/src/FocusIf/FocusIf.adapter.ts @@ -0,0 +1,39 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { IDirective } from 'angular'; +import FocusIf from './FocusIf'; + +/** + * If the given expression evaluates to true the element will be focused + * + * Example: + * <input type="text" piwik-focus-if="view.editName"> + */ +function piwikFocusIf(): IDirective { + return { + restrict: 'A', + link: function focusIfLink(scope, element, attrs) { + scope.$watch(attrs.piwikFocusIf, (newValue) => { + const binding = { + instance: null, + value: { + focusIf: !!newValue, + afterFocus: () => scope.$apply(), + }, + oldValue: null, + modifiers: {}, + dir: {}, + }; + + FocusIf.updated(element[0], binding); + }); + }, + }; +} + +angular.module('piwikApp.directive').directive('piwikFocusIf', piwikFocusIf); diff --git a/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts b/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts new file mode 100644 index 0000000000..665f2774c3 --- /dev/null +++ b/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts @@ -0,0 +1,27 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { DirectiveBinding } from 'vue'; + +interface FocusIfArgs { + focusIf: boolean; + afterFocus?: () => void; +} + +export default { + updated(el: HTMLElement, binding: DirectiveBinding<FocusIfArgs>): void { + if (binding.value.focusIf) { + setTimeout(() => { + el.focus(); + + if (binding.value.afterFocus) { + binding.value.afterFocus(); + } + }, 5); + } + }, +}; diff --git a/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts new file mode 100644 index 0000000000..f56616f54d --- /dev/null +++ b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.adapter.ts @@ -0,0 +1,36 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import createAngularJsAdapter from '../createAngularJsAdapter'; +import Menudropdown from './Menudropdown.vue'; + +export default createAngularJsAdapter({ + component: Menudropdown, + scope: { + menuTitle: { + angularJsBind: '@', + }, + tooltip: { + angularJsBind: '@', + }, + showSearch: { + angularJsBind: '=', + }, + menuTitleChangeOnClick: { + angularJsBind: '=', + }, + }, + directiveName: 'piwikMenudropdown', + transclude: true, + events: { + 'after-select': ($event, scope) => { + setTimeout(() => { + scope.$apply(); + }, 0); + }, + }, +}); diff --git a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.less b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.less index 63e85640d7..2a04d675df 100644 --- a/plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.less +++ b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.less @@ -8,6 +8,10 @@ cursor: pointer; } + .icon-arrow-bottom { + margin-left: 4px; + } + .items { z-index: 200; position: absolute; diff --git a/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue new file mode 100644 index 0000000000..de879274bd --- /dev/null +++ b/plugins/CoreHome/vue/src/Menudropdown/Menudropdown.vue @@ -0,0 +1,132 @@ +<!-- + Matomo - free/libre analytics platform + @link https://matomo.org + @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +--> + +<template> + <div + ref="root" + class="menuDropdown" + v-focus-anywhere-but-here="{ blur: lostFocus }" + > + <span + class="title" + @click="showItems = !showItems" + :title="tooltip" + > + <span v-html="$sanitize(this.actualMenuTitle)" /> + <span class="icon-arrow-bottom" /> + </span> + <div + class="items" + v-show="showItems" + > + <div + class="search" + v-if="showSearch && showItems" + > + <input + type="text" + v-model="searchTerm" + @keydown="onSearchTermKeydown($event)" + :placeholder="translate('General_Search')" + /> + <img + v-show="!searchTerm" + class="search_ico" + src="plugins/Morpheus/images/search_ico.png" + :title="translate('General_Search')" + /> + <img + v-show="searchTerm" + v-on:click="searchTerm = '';searchItems('')" + class="reset" + src="plugins/CoreHome/images/reset_search.png" + :title="translate('General_Clear')" + /> + </div> + <div v-on:click="selectItem($event)"> + <slot /> + </div> + </div> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import FocusAnywhereButHere from '../FocusAnywhereButHere/FocusAnywhereButHere'; +import FocusIf from '../FocusIf/FocusIf'; + +const { $ } = window; + +export default defineComponent({ + props: { + menuTitle: String, + tooltip: String, + showSearch: Boolean, + menuTitleChangeOnClick: String, + }, + directives: { + FocusAnywhereButHere, + FocusIf, + }, + emits: ['afterSelect'], + watch: { + menuTitle() { + this.actualMenuTitle = this.menuTitle; + }, + }, + data() { + return { + showItems: false, + searchTerm: '', + actualMenuTitle: this.menuTitle, + }; + }, + methods: { + lostFocus() { + this.showItems = false; + }, + selectItem(event: MouseEvent) { + const targetClasses = (event.target as HTMLElement).classList; + if (!targetClasses.contains('item') + || targetClasses.contains('disabled') + || targetClasses.contains('separator') + ) { + return; + } + + if (this.menuTitleChangeOnClick !== false) { + this.actualMenuTitle = (event.target as HTMLElement).textContent + .replace(/[\u0000-\u2666]/g, (c) => `&#${c.charCodeAt(0)};`); // eslint-disable-line + } + + this.showItems = false; + + $(this.$slots.default()).find('.item').removeClass('active'); + targetClasses.add('active'); + + this.$emit('afterSelect'); + }, + onSearchTermKeydown() { + setTimeout(() => { + this.searchItems(this.searchTerm); + }); + }, + searchItems(unprocessedSearchTerm: string) { + const searchTerm = unprocessedSearchTerm.toLowerCase(); + + $(this.$refs.root).find('.item').each((index: number, node: HTMLElement) => { + const $node = $(node); + + if ($node.text().toLowerCase().indexOf(searchTerm) === -1) { + $node.hide(); + } else { + $node.show(); + } + }); + }, + }, +}); +</script> diff --git a/plugins/CoreHome/vue/src/index.ts b/plugins/CoreHome/vue/src/index.ts index d7c543baf3..0374f04f91 100644 --- a/plugins/CoreHome/vue/src/index.ts +++ b/plugins/CoreHome/vue/src/index.ts @@ -15,12 +15,16 @@ import './Periods/Year'; import './Periods/Range'; import './Periods/Periods.adapter'; import './AjaxHelper/AjaxHelper.adapter'; +import './DropdownMenu/DropdownMenu.adapter'; +import './FocusAnywhereButHere/FocusAnywhereButHere.adapter'; +import './FocusIf/FocusIf.adapter'; import './ExpandOnClick/ExpandOnClick.adapter'; import './ExpandOnHover/ExpandOnHover.adapter'; import './MatomoDialog/MatomoDialog.adapter'; import './EnrichedHeadline/EnrichedHeadline.adapter'; import './ContentBlock/ContentBlock.adapter'; import './Comparisons/Comparisons.adapter'; +import './Menudropdown/Menudropdown.adapter'; import './DatePicker/DatePicker.adapter'; import './DateRangePicker/DateRangePicker.adapter'; import './PeriodDatePicker/PeriodDatePicker.adapter'; @@ -34,12 +38,16 @@ export { default as AjaxHelper } from './AjaxHelper/AjaxHelper'; export { default as MatomoUrl } from './MatomoUrl/MatomoUrl'; export { default as Matomo } from './Matomo/Matomo'; export * from './Periods'; +export { default as Dropdown } from './DropdownMenu/DropdownMenu'; +export { default as FocusAnywhereButHere } from './FocusAnywhereButHere/FocusAnywhereButHere'; +export { default as FocusIf } from './FocusIf/FocusIf'; export { default as MatomoDialog } from './MatomoDialog/MatomoDialog.vue'; export { default as ExpandOnClick } from './ExpandOnClick/ExpandOnClick'; export { default as ExpandOnHover } from './ExpandOnHover/ExpandOnHover'; export { default as EnrichedHeadline } from './EnrichedHeadline/EnrichedHeadline.vue'; export { default as ContentBlock } from './ContentBlock/ContentBlock.vue'; export { default as Comparisons } from './Comparisons/Comparisons.vue'; +export { default as Menudropdown } from './Menudropdown/Menudropdown.vue'; export { default as DatePicker } from './DatePicker/DatePicker.vue'; export { default as DateRangePicker } from './DateRangePicker/DateRangePicker.vue'; export { default as PeriodDatePicker } from './PeriodDatePicker/PeriodDatePicker.vue'; diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php index e647fcdb42..dcfb7532d7 100644 --- a/plugins/CoreUpdater/Controller.php +++ b/plugins/CoreUpdater/Controller.php @@ -14,6 +14,7 @@ use Piwik\Common; use Piwik\Config; use Piwik\DataTable\Renderer\Json; use Piwik\DbHelper; +use Piwik\Development; use Piwik\Filechecks; use Piwik\FileIntegrity; use Piwik\Filesystem; @@ -22,6 +23,7 @@ use Piwik\Nonce; use Piwik\Option; use Piwik\Piwik; use Piwik\Plugin\Manager as PluginManager; +use Piwik\Plugins\CoreVue\CoreVue; use Piwik\Plugins\LanguagesManager\LanguagesManager; use Piwik\Plugins\Marketplace\Plugins; use Piwik\SettingsPiwik; @@ -98,6 +100,7 @@ class Controller extends \Piwik\Plugin\Controller 'node_modules/materialize-css/dist/js/materialize.min.js', "plugins/CoreHome/javascripts/materialize-bc.js", 'plugins/Morpheus/javascripts/piwikHelper.js', + "plugins/CoreHome/javascripts/broadcast.js", 'plugins/CoreUpdater/javascripts/updateLayout.js', 'node_modules/angular/angular.min.js', 'node_modules/angular-sanitize/angular-sanitize.min.js', @@ -108,12 +111,16 @@ class Controller extends \Piwik\Plugin\Controller 'plugins/CoreHome/angularjs/common/filters/filter.module.js', 'plugins/CoreHome/angularjs/common/filters/translate.js', 'plugins/CoreHome/angularjs/common/directives/directive.module.js', - 'plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js', 'plugins/CoreHome/angularjs/piwikApp.config.js', 'plugins/CoreHome/angularjs/piwikApp.js', 'plugins/Installation/javascripts/installation.js', ); + CoreVue::addJsFilesTo($files); + + $coreHomeUmd = Development::isEnabled() ? 'CoreHome.umd.js' : 'CoreHome.umd.min.js'; + $files[] = "plugins/CoreHome/vue/dist/$coreHomeUmd"; + return AssetManager::compileCustomJs($files); } diff --git a/plugins/CoreUpdater/templates/layout.twig b/plugins/CoreUpdater/templates/layout.twig index 5593435c4f..a78aff6603 100644 --- a/plugins/CoreUpdater/templates/layout.twig +++ b/plugins/CoreUpdater/templates/layout.twig @@ -8,6 +8,7 @@ <meta name="robots" content="noindex,nofollow"> <meta name="google" content="notranslate"> + <script>window.piwik = {};</script> <link rel="stylesheet" type="text/css" href="index.php?module=CoreUpdater&action=getUpdaterCss"/> <script type="text/javascript" src="index.php?module=CoreUpdater&action=getUpdaterJs"></script> diff --git a/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png b/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png index 0908ac8ef9..50221a34a2 100644 --- a/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png +++ b/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:88d2b601b770783a3cb9a71357859c6bf7ef48775ce2b7e59412ad6abb8099a9 -size 348613 +oid sha256:ffe28867eeb1e4bc3315f74360d1b6966063b2b396b90d318469f7184f43eb78 +size 348576 diff --git a/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png b/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png index 7e62977a0f..bb37df3ad0 100644 --- a/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png +++ b/plugins/CoreUpdater/tests/UI/expected-screenshots/CoreUpdaterDb_main_instance.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abe28d78c7cf52bcfd71a3b77641db7dbcdb428157ba10d7f07ea59e324576d1 -size 350194 +oid sha256:33282b0571e22f4aa815f3c8d3062150b5f53591776101571d0536a07b44aa8b +size 350156 diff --git a/plugins/CoreVue/CoreVue.php b/plugins/CoreVue/CoreVue.php index d115a25653..063a26894c 100644 --- a/plugins/CoreVue/CoreVue.php +++ b/plugins/CoreVue/CoreVue.php @@ -21,6 +21,11 @@ class CoreVue extends \Piwik\Plugin public function getJsFiles(&$jsFiles) { + self::addJsFilesTo($jsFiles); + } + + public static function addJsFilesTo(&$jsFiles) + { $jsFiles[] = Development::isEnabled() ? "node_modules/vue/dist/vue.global.js" : "node_modules/vue/dist/vue.global.prod.js"; $jsFiles[] = Development::isEnabled() ? "plugins/CoreVue/polyfills/dist/MatomoPolyfills.js" : "plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js"; } diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png index 5c691ad82c..e5726aac5d 100644 --- a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png +++ b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a07b081dc2be59969c55d42c713a61692e05aa9d17de04ea0ecff18762d20c0b -size 293532 +oid sha256:88acd2937275d3788a13c87619ec67643e9b89d33756f975c811e9d07ec0d67d +size 293490 diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php index 099496728c..a26a42fe1b 100644 --- a/plugins/Installation/Controller.php +++ b/plugins/Installation/Controller.php @@ -17,10 +17,12 @@ use Piwik\Container\StaticContainer; use Piwik\DataAccess\ArchiveTableCreator; use Piwik\Db; use Piwik\DbHelper; +use Piwik\Development; use Piwik\Filesystem; use Piwik\Option; use Piwik\Piwik; use Piwik\Plugin\Manager; +use Piwik\Plugins\CoreVue\CoreVue; use Piwik\Plugins\Diagnostics\DiagnosticService; use Piwik\Plugins\LanguagesManager\LanguagesManager; use Piwik\Plugins\SitesManager\API as APISitesManager; @@ -556,13 +558,18 @@ class Controller extends \Piwik\Plugin\ControllerAdmin 'plugins/CoreHome/angularjs/common/filters/filter.module.js', 'plugins/CoreHome/angularjs/common/filters/translate.js', 'plugins/CoreHome/angularjs/common/directives/directive.module.js', - 'plugins/CoreHome/angularjs/common/directives/focus-anywhere-but-here.js', 'plugins/CoreHome/angularjs/piwikApp.config.js', 'plugins/CoreHome/angularjs/piwikApp.js', 'plugins/Installation/javascripts/installation.js', 'plugins/Morpheus/javascripts/piwikHelper.js', + "plugins/CoreHome/javascripts/broadcast.js", ); + CoreVue::addJsFilesTo($files); + + $coreHomeUmd = Development::isEnabled() ? 'CoreHome.umd.js' : 'CoreHome.umd.min.js'; + $files[] = "plugins/CoreHome/vue/dist/$coreHomeUmd"; + if (defined('PIWIK_TEST_MODE') && PIWIK_TEST_MODE && file_exists(PIWIK_DOCUMENT_ROOT . '/tests/resources/screenshot-override/override.js')) { $files[] = 'tests/resources/screenshot-override/override.js'; diff --git a/plugins/Installation/templates/layout.twig b/plugins/Installation/templates/layout.twig index 05ebebd008..6a8e5be08f 100644 --- a/plugins/Installation/templates/layout.twig +++ b/plugins/Installation/templates/layout.twig @@ -6,6 +6,7 @@ <meta name="google" content="notranslate"> <title>Matomo {{ piwikVersion }} › {{ 'Installation_Installation'|translate }}</title> + <script>window.piwik = {};</script> <link rel="stylesheet" type="text/css" href="index.php?module=Installation&action=getInstallationCss"/> <script type="text/javascript" src="index.php?module=Installation&action=getInstallationJs"></script> diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png index 09484df48d..b9cf3b197e 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_congrats.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:419c0aab43421ffd4e266e882d774dd0852420066ec493f7a8c3bb18489ab72b -size 238482 +oid sha256:5b323f6efdbe5eb7d974bd5c8373ac6025ed1ee85cde2613169be49f64100c66 +size 238486 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png index abc3f12601..9787932fb2 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_created.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0fb592393904c7bfe7c6eb25e5724c0220d244ef8e58bdcaa05d6e4c70758215 +oid sha256:60290f6a6ecb90a3fcb4dbb23c8ba56dc71daca33179aac37df7b460df407409 size 45937 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png index 7fd7ea1a70..a3f2f51afe 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3478dc4c3f94c76436d0cdec26954f2bcb155689f0ca12dcc57a60a0e4a7b2fe -size 57339 +oid sha256:d93cce14d8524d53ba35b81621e6fba03f9a2d2495cd2c311bbab7823790a397 +size 57342 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png index 7c6def5e70..438e52b4fa 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_db_setup_fail.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07dcc84c6269d0fbd62705f61a79f13c496b4186aa6e2fa240238299ae427065 -size 66569 +oid sha256:67f3860a138e73acc9b05021651032c62eaeeb9375cacb290e68994a285542d4 +size 66572 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png index 9949dbf9a5..78b77b5b62 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d2f2db5abff964e2831016bb755ae8eef582d4ec58e0aa5789d4372679a9841 -size 240512 +oid sha256:b0ae5f7581cef949c2580b10c09ca3f3d712206e66e015f41b665437b860baca +size 240519 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png index 4fd6c64772..ef83cc8557 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71f9f3ec237041d08e9e969c0650ebf884ed8f0f6fbe549e305e92cf910df261 -size 79017 +oid sha256:f6d9f99d0e1af35cd3298495b5bd7a0bd06abb8515abac17533d9039a68aecb9 +size 79019 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png index b615ba3885..1e9f311160 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_setup_website_fail.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49ca3ce1148257b04c92b2fdb343813e7bad1b1cbc73965b3bf70b388a706fed -size 83895 +oid sha256:762600e40190b8e5d88383ef8cd3e39b374734e6850d6d2c0f57c537dd6b7ce6 +size 83896 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_start.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_start.png index 45bac029a5..7c03cb2fac 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_start.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_start.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59131ec24e226f041ecd2504a18079889da876134013e9798d066d6a99234c50 -size 52552 +oid sha256:fb9e4bdb29bb124a7eb5472e762dc6eea486cc1a4afee7a68c65cd717e35fad0 +size 52554 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png index 2b8e3da94a..8f45bb2b36 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74cd83a2193242d515f0c0808ba34469be6469cd9ed376212d8c084f3e580e9a -size 96619 +oid sha256:dec55a0fbcbfdc98d2efdd01415db4fc21d3b3a2a89cb46bdbafdb8421e897b2 +size 96621 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png index 2768e71815..b1945444f4 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f40e5b80761ea5bc925f39287276426d164322affc4ce3f21a28d0dda3da00e -size 112859 +oid sha256:c0c8420bc76c7a66c29f55a66dd0bd5ef5db223a42439695ed001e8d11febed0 +size 112864 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png index 336fa5c425..e240402fdb 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f9b9d2f22de6f1a90adf0987bfee64527d31452c9b213a37a44f7aa8b94770a -size 110900 +oid sha256:7f9fbbab42c25797d0974ca3b5e22f48ab10d93a9a8878fc0a570d0caa4994ad +size 110899 diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png index 71dfe71834..20afd7ed95 100644 --- a/plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png +++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_system_check.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f9633f41731d10927024857da1e781a4c8e9c0b605ecfb170eb372f42ca5f0f -size 276019 +oid sha256:9ddfc2753e52b4b95088c1e7af002feb721a72cb994a69408bfbe4d296c5813f +size 276022 diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php index 2976efcf2c..0dcfe9a29d 100644 --- a/plugins/LanguagesManager/LanguagesManager.php +++ b/plugins/LanguagesManager/LanguagesManager.php @@ -15,6 +15,7 @@ use Piwik\Common; use Piwik\Config; use Piwik\Container\StaticContainer; use Piwik\Cookie; +use Piwik\Development; use Piwik\Intl\Locale; use Piwik\Nonce; use Piwik\Piwik; @@ -73,7 +74,6 @@ class LanguagesManager extends \Piwik\Plugin { // piwik object & scripts aren't loaded in 'other' topbars $str .= "<script type='text/javascript'>if (!window.piwik) window.piwik={};</script>"; - $str .= "<script type='text/javascript' src='plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js'></script>"; $str .= "<script type='text/javascript' src='plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js'></script>"; $str .= $this->getLanguagesSelector(); } diff --git a/plugins/Morpheus/javascripts/piwikHelper.js b/plugins/Morpheus/javascripts/piwikHelper.js index 4cfc22e51d..390d257041 100644 --- a/plugins/Morpheus/javascripts/piwikHelper.js +++ b/plugins/Morpheus/javascripts/piwikHelper.js @@ -6,8 +6,9 @@ */ function _pk_translate(translationStringId, values) { - - if( typeof(piwik_translations[translationStringId]) != 'undefined' ){ + if (typeof(piwik_translations) !== 'undefined' + && typeof(piwik_translations[translationStringId]) != 'undefined' + ) { var translation = piwik_translations[translationStringId]; if (typeof values != 'undefined' && values && values.length) { values.unshift(translation); diff --git a/plugins/Morpheus/stylesheets/base.less b/plugins/Morpheus/stylesheets/base.less index f4951ddbcf..e2deb1c633 100644 --- a/plugins/Morpheus/stylesheets/base.less +++ b/plugins/Morpheus/stylesheets/base.less @@ -15,7 +15,7 @@ @import "uibase/_header.less"; @import "uibase/_headerMessage.less"; @import "../../CoreHome/angularjs/siteselector/siteselector.directive.less"; -@import "../../CoreHome/angularjs/menudropdown/menudropdown.directive.less"; +@import "../../CoreHome/vue/src/Menudropdown/Menudropdown.less"; @import "../../CoreHome/vue/src/Alert/alert.less"; @import "../../CoreHome/stylesheets/dataTable/_entityTable.less"; @import "uibase/_periodSelect.less"; diff --git a/tsconfig.json b/tsconfig.json index 65fa6f699c..25cb9f68e4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,7 +20,8 @@ "webpack-env", "angular", "jquery", - "jqueryui" + "jqueryui", + "materialize-css" ], "paths": { "@/*": [ |