diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js
index 73d71a33393..cbf7619bd32 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js
@@ -4394,15 +4394,15 @@ const {
MenuItemsDropdownvue_type_script_lang_ts.render = MenuItemsDropdownvue_type_template_id_2ca24410_render
/* harmony default export */ var MenuItemsDropdown = (MenuItemsDropdownvue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/DatePicker/DatePicker.vue?vue&type=template&id=7b95c829
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/DatePicker/DatePicker.vue?vue&type=template&id=1d25bc09
-const DatePickervue_type_template_id_7b95c829_hoisted_1 = {
+const DatePickervue_type_template_id_1d25bc09_hoisted_1 = {
ref: "root"
};
-function DatePickervue_type_template_id_7b95c829_render(_ctx, _cache, $props, $setup, $data, $options) {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", DatePickervue_type_template_id_7b95c829_hoisted_1, null, 512);
+function DatePickervue_type_template_id_1d25bc09_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", DatePickervue_type_template_id_1d25bc09_hoisted_1, null, 512);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/DatePicker/DatePicker.vue?vue&type=template&id=7b95c829
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/DatePicker/DatePicker.vue?vue&type=template&id=1d25bc09
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/DatePicker/DatePicker.vue?vue&type=script&lang=ts
@@ -4416,6 +4416,8 @@ const {
props: {
selectedDateStart: Date,
selectedDateEnd: Date,
+ persistentHighlightedDateStart: Date,
+ persistentHighlightedDateEnd: Date,
highlightedDateStart: Date,
highlightedDateEnd: Date,
viewDate: [String, Date],
@@ -4428,19 +4430,40 @@ const {
const root = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null);
function setDateCellColor($dateCell, dateValue) {
const $dateCellLink = $dateCell.children('a');
- if (props.selectedDateStart && props.selectedDateEnd && dateValue >= props.selectedDateStart && dateValue <= props.selectedDateEnd) {
+ const {
+ selectedDateStart,
+ selectedDateEnd
+ } = props;
+ const dateValueTime = dateValue.getTime();
+ const isPersistentlyHighlightedDate = !!(props.persistentHighlightedDateStart && props.persistentHighlightedDateEnd && dateValue >= props.persistentHighlightedDateStart && dateValue <= props.persistentHighlightedDateEnd);
+ // Intentional UX: for custom date ranges (dual calendar) we only style the boundary dates
+ // as selected. The in-between span is not kept persistently highlighted.
+ const isBoundarySelectedDate = !!(selectedDateStart && selectedDateEnd && (dateValueTime === selectedDateStart.getTime() || dateValueTime === selectedDateEnd.getTime()));
+ if (isBoundarySelectedDate) {
$dateCell.addClass('ui-datepicker-current-period');
} else {
$dateCell.removeClass('ui-datepicker-current-period');
}
if (props.highlightedDateStart && props.highlightedDateEnd && dateValue >= props.highlightedDateStart && dateValue <= props.highlightedDateEnd) {
- // other-month cells don't have links, so the
must have the ui-state-hover class
- const elementToAddClassTo = $dateCellLink.length ? $dateCellLink : $dateCell;
- elementToAddClassTo.addClass('ui-state-hover');
+ // Always mark the td so hover can fill full cell area (including horizontal padding).
+ $dateCell.addClass('ui-state-hover');
+ // Keep anchor class too for existing link-focused hover styling.
+ if ($dateCellLink.length) {
+ $dateCellLink.addClass('ui-state-hover');
+ }
} else {
$dateCell.removeClass('ui-state-hover');
$dateCellLink.removeClass('ui-state-hover');
}
+ if (isPersistentlyHighlightedDate) {
+ $dateCell.addClass('ui-datepicker-persistent-highlight');
+ if ($dateCellLink.length) {
+ $dateCellLink.addClass('ui-datepicker-persistent-highlight');
+ }
+ } else {
+ $dateCell.removeClass('ui-datepicker-persistent-highlight');
+ $dateCellLink.removeClass('ui-datepicker-persistent-highlight');
+ }
}
function getCellDate($dateCell, month, year) {
if ($dateCell.hasClass('ui-datepicker-other-month')) {
@@ -4520,6 +4543,9 @@ const {
element.find('.ui-datepicker-current-day').removeClass('ui-datepicker-current-day');
// add href to left/right nav in calendar so they can be accessed via keyboard
element.find('.ui-datepicker-prev,.ui-datepicker-next').attr('href', '');
+ // Use explicit chevron classes so scoped styles can render modern nav icons.
+ element.find('.ui-datepicker-prev .ui-icon').removeClass('ui-icon-circle-triangle-w').addClass('icon-chevron-left');
+ element.find('.ui-datepicker-next .ui-icon').removeClass('ui-icon-circle-triangle-e').addClass('icon-chevron-right');
}
function stepMonthsChanged() {
const element = DatePickervue_type_script_lang_ts_$(root.value);
@@ -4568,7 +4594,7 @@ const {
// that is within the context of the date picker component, it's bearable.
Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(() => Object.assign({}, props), (newProps, oldProps) => {
let redraw = false;
- [x => x.selectedDateStart, x => x.selectedDateEnd, x => x.highlightedDateStart, x => x.highlightedDateEnd].forEach(selector => {
+ [x => x.selectedDateStart, x => x.selectedDateEnd, x => x.persistentHighlightedDateStart, x => x.persistentHighlightedDateEnd, x => x.highlightedDateStart, x => x.highlightedDateEnd].forEach(selector => {
if (redraw) {
return;
}
@@ -4593,7 +4619,7 @@ const {
if (newProps.disableMonthDropdown !== oldProps.disableMonthDropdown) {
enableDisableMonthDropdown();
}
- // redraw when selected/highlighted dates change
+ // redraw when selected or highlighted date props change
if (redraw) {
setDatePickerCellColors();
}
@@ -4677,61 +4703,67 @@ const {
-DatePickervue_type_script_lang_ts.render = DatePickervue_type_template_id_7b95c829_render
+DatePickervue_type_script_lang_ts.render = DatePickervue_type_template_id_1d25bc09_render
/* harmony default export */ var DatePicker = (DatePickervue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue?vue&type=template&id=7e956b79
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue?vue&type=template&id=2fba06f3
-const DateRangePickervue_type_template_id_7e956b79_hoisted_1 = {
+const DateRangePickervue_type_template_id_2fba06f3_hoisted_1 = {
class: "dateRangePicker"
};
-const DateRangePickervue_type_template_id_7e956b79_hoisted_2 = {
+const DateRangePickervue_type_template_id_2fba06f3_hoisted_2 = {
id: "calendarRangeFrom"
};
-const DateRangePickervue_type_template_id_7e956b79_hoisted_3 = {
+const DateRangePickervue_type_template_id_2fba06f3_hoisted_3 = {
+ class: "date-range-picker-label"
+};
+const DateRangePickervue_type_template_id_2fba06f3_hoisted_4 = {
id: "calendarRangeTo"
};
-function DateRangePickervue_type_template_id_7e956b79_render(_ctx, _cache, $props, $setup, $data, $options) {
+const DateRangePickervue_type_template_id_2fba06f3_hoisted_5 = {
+ class: "date-range-picker-label"
+};
+function DateRangePickervue_type_template_id_2fba06f3_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_DatePicker = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("DatePicker");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", DateRangePickervue_type_template_id_7e956b79_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DateRangePickervue_type_template_id_7e956b79_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h6", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_DateRangeFrom')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", DateRangePickervue_type_template_id_2fba06f3_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DateRangePickervue_type_template_id_2fba06f3_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h6", DateRangePickervue_type_template_id_2fba06f3_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_DateRangeFrom')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "text",
id: "inputCalendarFrom",
name: "inputCalendarFrom",
- class: "browser-default",
+ class: "browser-default date-range-picker-field",
"onUpdate:modelValue": _cache[0] || (_cache[0] = $event => _ctx.startDateText = $event),
onKeydown: _cache[1] || (_cache[1] = $event => _ctx.onRangeInputChanged('from', $event)),
onKeyup: _cache[2] || (_cache[2] = $event => _ctx.handleEnterPress($event))
}, null, 544), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.startDateText]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DatePicker, {
id: "calendarFrom",
"view-date": _ctx.startDate,
- "selected-date-start": _ctx.fromPickerSelectedDates[0],
- "selected-date-end": _ctx.fromPickerSelectedDates[1],
- "highlighted-date-start": _ctx.fromPickerHighlightedDates[0],
- "highlighted-date-end": _ctx.fromPickerHighlightedDates[1],
+ "selected-date-start": _ctx.fromPickerSelectedDate,
+ "selected-date-end": _ctx.fromPickerSelectedDate,
+ "highlighted-date-start": _ctx.fromPickerHoveredDate,
+ "highlighted-date-end": _ctx.fromPickerHoveredDate,
onDateSelect: _cache[3] || (_cache[3] = $event => _ctx.setStartRangeDate($event.date)),
- onCellHover: _cache[4] || (_cache[4] = $event => _ctx.fromPickerHighlightedDates = _ctx.getNewHighlightedDates($event.date, $event.$cell)),
- onCellHoverLeave: _cache[5] || (_cache[5] = $event => _ctx.fromPickerHighlightedDates = [null, null])
- }, null, 8, ["view-date", "selected-date-start", "selected-date-end", "highlighted-date-start", "highlighted-date-end"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DateRangePickervue_type_template_id_7e956b79_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h6", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_DateRangeTo')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ onCellHover: _cache[4] || (_cache[4] = $event => _ctx.fromPickerHoveredDate = _ctx.getNewHoveredDate($event.date, $event.$cell)),
+ onCellHoverLeave: _cache[5] || (_cache[5] = $event => _ctx.fromPickerHoveredDate = null)
+ }, null, 8, ["view-date", "selected-date-start", "selected-date-end", "highlighted-date-start", "highlighted-date-end"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DateRangePickervue_type_template_id_2fba06f3_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h6", DateRangePickervue_type_template_id_2fba06f3_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_DateRangeTo')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "text",
id: "inputCalendarTo",
name: "inputCalendarTo",
- class: "browser-default",
+ class: "browser-default date-range-picker-field",
"onUpdate:modelValue": _cache[6] || (_cache[6] = $event => _ctx.endDateText = $event),
onKeydown: _cache[7] || (_cache[7] = $event => _ctx.onRangeInputChanged('to', $event)),
onKeyup: _cache[8] || (_cache[8] = $event => _ctx.handleEnterPress($event))
}, null, 544), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.endDateText]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DatePicker, {
id: "calendarTo",
"view-date": _ctx.endDate,
- "selected-date-start": _ctx.toPickerSelectedDates[0],
- "selected-date-end": _ctx.toPickerSelectedDates[1],
- "highlighted-date-start": _ctx.toPickerHighlightedDates[0],
- "highlighted-date-end": _ctx.toPickerHighlightedDates[1],
+ "selected-date-start": _ctx.toPickerSelectedDate,
+ "selected-date-end": _ctx.toPickerSelectedDate,
+ "highlighted-date-start": _ctx.toPickerHoveredDate,
+ "highlighted-date-end": _ctx.toPickerHoveredDate,
onDateSelect: _cache[9] || (_cache[9] = $event => _ctx.setEndRangeDate($event.date)),
- onCellHover: _cache[10] || (_cache[10] = $event => _ctx.toPickerHighlightedDates = _ctx.getNewHighlightedDates($event.date, $event.$cell)),
- onCellHoverLeave: _cache[11] || (_cache[11] = $event => _ctx.toPickerHighlightedDates = [null, null])
+ onCellHover: _cache[10] || (_cache[10] = $event => _ctx.toPickerHoveredDate = _ctx.getNewHoveredDate($event.date, $event.$cell)),
+ onCellHoverLeave: _cache[11] || (_cache[11] = $event => _ctx.toPickerHoveredDate = null)
}, null, 8, ["view-date", "selected-date-start", "selected-date-end", "highlighted-date-start", "highlighted-date-end"])])]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue?vue&type=template&id=7e956b79
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue?vue&type=template&id=2fba06f3
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue?vue&type=script&lang=ts
@@ -4739,6 +4771,7 @@ function DateRangePickervue_type_template_id_7e956b79_render(_ctx, _cache, $prop
const DATE_FORMAT = 'YYYY-MM-DD';
/* harmony default export */ var DateRangePickervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ name: 'DateRangePicker',
props: {
startDate: String,
endDate: String
@@ -4764,10 +4797,10 @@ const DATE_FORMAT = 'YYYY-MM-DD';
// ignore
}
return {
- fromPickerSelectedDates: [startDate, startDate],
- toPickerSelectedDates: [endDate, endDate],
- fromPickerHighlightedDates: [null, null],
- toPickerHighlightedDates: [null, null],
+ fromPickerSelectedDate: startDate,
+ toPickerSelectedDate: endDate,
+ fromPickerHoveredDate: null,
+ toPickerHoveredDate: null,
startDateText: this.startDate,
endDateText: this.endDate,
startDateInvalid: false,
@@ -4790,11 +4823,11 @@ const DATE_FORMAT = 'YYYY-MM-DD';
},
methods: {
setStartRangeDate(date) {
- this.fromPickerSelectedDates = [date, date];
+ this.fromPickerSelectedDate = date;
this.rangeChanged();
},
setEndRangeDate(date) {
- this.toPickerSelectedDates = [date, date];
+ this.toPickerSelectedDate = date;
this.rangeChanged();
},
onRangeInputChanged(source, event) {
@@ -4806,11 +4839,11 @@ const DATE_FORMAT = 'YYYY-MM-DD';
}
});
},
- getNewHighlightedDates(date, $cell) {
+ getNewHoveredDate(date, $cell) {
if ($cell.hasClass('ui-datepicker-unselectable')) {
return null;
}
- return [date, date];
+ return date;
},
handleEnterPress($event) {
if ($event.keyCode !== 13) {
@@ -4832,7 +4865,7 @@ const DATE_FORMAT = 'YYYY-MM-DD';
// ignore
}
if (startDateParsed) {
- this.fromPickerSelectedDates = [startDateParsed, startDateParsed];
+ this.fromPickerSelectedDate = startDateParsed;
this.startDateInvalid = false;
this.rangeChanged();
}
@@ -4848,15 +4881,15 @@ const DATE_FORMAT = 'YYYY-MM-DD';
// ignore
}
if (endDateParsed) {
- this.toPickerSelectedDates = [endDateParsed, endDateParsed];
+ this.toPickerSelectedDate = endDateParsed;
this.endDateInvalid = false;
this.rangeChanged();
}
},
rangeChanged() {
this.$emit('rangeChange', {
- start: this.fromPickerSelectedDates[0] ? format(this.fromPickerSelectedDates[0]) : null,
- end: this.toPickerSelectedDates[0] ? format(this.toPickerSelectedDates[0]) : null
+ start: this.fromPickerSelectedDate ? format(this.fromPickerSelectedDate) : null,
+ end: this.toPickerSelectedDate ? format(this.toPickerSelectedDate) : null
});
}
}
@@ -4867,35 +4900,71 @@ const DATE_FORMAT = 'YYYY-MM-DD';
-DateRangePickervue_type_script_lang_ts.render = DateRangePickervue_type_template_id_7e956b79_render
+DateRangePickervue_type_script_lang_ts.render = DateRangePickervue_type_template_id_2fba06f3_render
/* harmony default export */ var DateRangePicker = (DateRangePickervue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue?vue&type=template&id=32009d07
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue?vue&type=template&id=1be3f516
-function PeriodDatePickervue_type_template_id_32009d07_render(_ctx, _cache, $props, $setup, $data, $options) {
+function PeriodDatePickervue_type_template_id_1be3f516_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_DatePicker = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("DatePicker");
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_DatePicker, {
"selected-date-start": _ctx.selectedDates[0],
"selected-date-end": _ctx.selectedDates[1],
- "highlighted-date-start": _ctx.highlightedDates[0],
- "highlighted-date-end": _ctx.highlightedDates[1],
+ "persistent-highlighted-date-start": _ctx.committedBetweenHighlightDates[0],
+ "persistent-highlighted-date-end": _ctx.committedBetweenHighlightDates[1],
+ "highlighted-date-start": _ctx.highlightedDates ? _ctx.highlightedDates[0] : null,
+ "highlighted-date-end": _ctx.highlightedDates ? _ctx.highlightedDates[1] : null,
"view-date": _ctx.viewDate,
"step-months": _ctx.period === 'year' ? 12 : 1,
"disable-month-dropdown": _ctx.period === 'year',
onCellHover: _cache[0] || (_cache[0] = $event => _ctx.onHoverNormalCell($event.date, $event.$cell)),
onCellHoverLeave: _cache[1] || (_cache[1] = $event => _ctx.onHoverLeaveNormalCells()),
onDateSelect: _cache[2] || (_cache[2] = $event => _ctx.onDateSelected($event.date))
- }, null, 8, ["selected-date-start", "selected-date-end", "highlighted-date-start", "highlighted-date-end", "view-date", "step-months", "disable-month-dropdown"]);
+ }, null, 8, ["selected-date-start", "selected-date-end", "persistent-highlighted-date-start", "persistent-highlighted-date-end", "highlighted-date-start", "highlighted-date-end", "view-date", "step-months", "disable-month-dropdown"]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue?vue&type=template&id=32009d07
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue?vue&type=template&id=1be3f516
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.types.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+const NBSP = '\u00A0';
+const COMPARE_PERIOD_TYPES = ['custom', 'previousPeriod', 'previousYear'];
+const COMPARE_PERIOD_OPTIONS = [{
+ key: 'custom',
+ value: translate('General_Custom')
+}, {
+ key: 'previousPeriod',
+ value: translate('General_PreviousPeriod').replace(/\s+/, NBSP)
+}, {
+ key: 'previousYear',
+ value: translate('General_PreviousYear').replace(/\s+/, NBSP)
+}];
+function getSiteMinAllowedDate() {
+ return new Date(window.piwik.minDateYear, window.piwik.minDateMonth - 1, window.piwik.minDateDay);
+}
+function getSiteMaxAllowedDate() {
+ return new Date(window.piwik.maxDateYear, window.piwik.maxDateMonth - 1, window.piwik.maxDateDay);
+}
+const RANGE_PERIOD = 'range';
+function isValidDate(candidateDate) {
+ if (Object.prototype.toString.call(candidateDate) !== '[object Date]') {
+ return false;
+ }
+ return !Number.isNaN(candidateDate.getTime());
+}
+function isSingleCalendarPeriod(period) {
+ return period === 'day' || period === 'week' || period === 'month' || period === 'year';
+}
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue?vue&type=script&lang=ts
-const PeriodDatePickervue_type_script_lang_ts_piwikMinDate = new Date(Matomo_Matomo.minDateYear, Matomo_Matomo.minDateMonth - 1, Matomo_Matomo.minDateDay);
-const piwikMaxDate = new Date(Matomo_Matomo.maxDateYear, Matomo_Matomo.maxDateMonth - 1, Matomo_Matomo.maxDateDay);
/* harmony default export */ var PeriodDatePickervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
props: {
period: {
@@ -4911,16 +4980,40 @@ const piwikMaxDate = new Date(Matomo_Matomo.maxDateYear, Matomo_Matomo.maxDateMo
setup(props, context) {
const viewDate = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(props.date);
const selectedDates = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])([null, null]);
- const highlightedDates = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])([null, null]);
+ const committedBetweenHighlightDates = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])([null, null]);
+ const highlightedDates = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null);
+ const piwikMinDate = getSiteMinAllowedDate();
+ const piwikMaxDate = getSiteMaxAllowedDate();
function getBoundedDateRange(date) {
const dates = Periods_Periods.get(props.period).parse(date).getDateRange();
// make sure highlighted date range is within min/max date range
- dates[0] = PeriodDatePickervue_type_script_lang_ts_piwikMinDate < dates[0] ? dates[0] : PeriodDatePickervue_type_script_lang_ts_piwikMinDate;
+ dates[0] = piwikMinDate < dates[0] ? dates[0] : piwikMinDate;
dates[1] = piwikMaxDate > dates[1] ? dates[1] : piwikMaxDate;
return dates;
}
+ function getExclusiveBetweenRange(startDate, endDate) {
+ if (!startDate || !endDate || startDate.getTime() >= endDate.getTime()) {
+ return [null, null];
+ }
+ const betweenStart = new Date(startDate);
+ betweenStart.setDate(betweenStart.getDate() + 1);
+ const betweenEnd = new Date(endDate);
+ betweenEnd.setDate(betweenEnd.getDate() - 1);
+ if (betweenStart.getTime() > betweenEnd.getTime()) {
+ return [null, null];
+ }
+ return [betweenStart, betweenEnd];
+ }
+ function refreshCommittedBetweenHighlightFromDate(date) {
+ if (!date) {
+ committedBetweenHighlightDates.value = [null, null];
+ return;
+ }
+ const boundedDateRange = getBoundedDateRange(date);
+ committedBetweenHighlightDates.value = getExclusiveBetweenRange(boundedDateRange[0], boundedDateRange[1]);
+ }
function onHoverNormalCell(cellDate, $cell) {
- const isOutOfMinMaxDateRange = cellDate < PeriodDatePickervue_type_script_lang_ts_piwikMinDate || cellDate > piwikMaxDate;
+ const isOutOfMinMaxDateRange = cellDate < piwikMinDate || cellDate > piwikMaxDate;
// don't highlight anything if the period is month or day, and we're hovering over calendar
// whitespace. since there are no dates, it's doesn't make sense what you're selecting.
const shouldNotHighlightFromWhitespace = $cell.hasClass('ui-datepicker-other-month') && (props.period === 'month' || props.period === 'day');
@@ -4928,10 +5021,11 @@ const piwikMaxDate = new Date(Matomo_Matomo.maxDateYear, Matomo_Matomo.maxDateMo
highlightedDates.value = [null, null];
return;
}
+ // Keep hover preview inclusive (start/end + in-between) for parity with historical UX.
highlightedDates.value = getBoundedDateRange(cellDate);
}
function onHoverLeaveNormalCells() {
- highlightedDates.value = [null, null];
+ highlightedDates.value = null;
}
function onDateSelected(date) {
context.emit('select', {
@@ -4941,16 +5035,21 @@ const piwikMaxDate = new Date(Matomo_Matomo.maxDateYear, Matomo_Matomo.maxDateMo
function onChanges() {
if (!props.period || !props.date) {
selectedDates.value = [null, null];
+ committedBetweenHighlightDates.value = [null, null];
+ highlightedDates.value = null;
viewDate.value = null;
return;
}
selectedDates.value = getBoundedDateRange(props.date);
+ refreshCommittedBetweenHighlightFromDate(props.date);
+ highlightedDates.value = null;
viewDate.value = parseDate(props.date);
}
Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(props, onChanges);
onChanges();
return {
selectedDates,
+ committedBetweenHighlightDates,
highlightedDates,
viewDate,
onHoverNormalCell,
@@ -4965,7 +5064,7 @@ const piwikMaxDate = new Date(Matomo_Matomo.maxDateYear, Matomo_Matomo.maxDateMo
-PeriodDatePickervue_type_script_lang_ts.render = PeriodDatePickervue_type_template_id_32009d07_render
+PeriodDatePickervue_type_script_lang_ts.render = PeriodDatePickervue_type_template_id_1be3f516_render
/* harmony default export */ var PeriodDatePicker = (PeriodDatePickervue_type_script_lang_ts);
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/Notification/Notification.vue?vue&type=template&id=50cb1ca6
@@ -6750,51 +6849,35 @@ const MultiPairFieldvue_type_script_lang_ts_Field = useExternalPluginComponent('
MultiPairFieldvue_type_script_lang_ts.render = MultiPairFieldvue_type_template_id_31708da0_render
/* harmony default export */ var MultiPairField = (MultiPairFieldvue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.vue?vue&type=template&id=901f7596
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.vue?vue&type=template&id=532ff66f
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_1 = ["disabled"];
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_1 = ["disabled"];
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-chevron-left"
}, null, -1);
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_3 = [PeriodSelectorvue_type_template_id_901f7596_hoisted_2];
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_4 = ["title"];
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_3 = [PeriodSelectorvue_type_template_id_532ff66f_hoisted_2];
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_4 = ["title"];
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon icon-calendar"
}, null, -1);
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_6 = {
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_6 = {
class: "flex"
};
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_7 = {
- class: "period-type period-selector-options-column"
-};
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_8 = {
- id: "otherPeriods"
-};
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_9 = {
- class: "period-selector-calendar-column"
-};
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_10 = {
- class: "apply-button-container"
-};
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_11 = ["disabled", "value"];
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_12 = {
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_7 = {
key: 0,
id: "ajaxLoadingCalendar"
};
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_13 = {
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_8 = {
class: "loadingSegment"
};
-const PeriodSelectorvue_type_template_id_901f7596_hoisted_14 = ["disabled"];
-const _hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_9 = ["disabled"];
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-chevron-right"
}, null, -1);
-const _hoisted_16 = [_hoisted_15];
-function PeriodSelectorvue_type_template_id_901f7596_render(_ctx, _cache, $props, $setup, $data, $options) {
- const _component_PeriodOptions = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PeriodOptions");
- const _component_PresetDateRanges = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PresetDateRanges");
- const _component_DateRangePicker = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("DateRangePicker");
- const _component_PeriodDatePicker = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PeriodDatePicker");
- const _component_PeriodSelectorCompareControls = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PeriodSelectorCompareControls");
+const PeriodSelectorvue_type_template_id_532ff66f_hoisted_11 = [PeriodSelectorvue_type_template_id_532ff66f_hoisted_10];
+function PeriodSelectorvue_type_template_id_532ff66f_render(_ctx, _cache, $props, $setup, $data, $options) {
+ const _component_PeriodSelectorOptionsColumn = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PeriodSelectorOptionsColumn");
+ const _component_PeriodSelectorCalendarColumn = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PeriodSelectorCalendarColumn");
const _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
const _directive_tooltips = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("tooltips");
const _directive_expand_on_click = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("expand-on-click");
@@ -6808,100 +6891,224 @@ function PeriodSelectorvue_type_template_id_901f7596_render(_ctx, _cache, $props
class: "move-period move-period-prev",
onClick: _cache[0] || (_cache[0] = $event => _ctx.movePeriod(-1)),
disabled: _ctx.isPeriodMoveDisabled(-1)
- }, PeriodSelectorvue_type_template_id_901f7596_hoisted_3, 8, PeriodSelectorvue_type_template_id_901f7596_hoisted_1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), 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"])("button", {
+ }, PeriodSelectorvue_type_template_id_532ff66f_hoisted_3, 8, PeriodSelectorvue_type_template_id_532ff66f_hoisted_1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), 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"])("button", {
ref: "title",
id: "date",
class: "title",
tabindex: "4",
title: _ctx.translate('General_ChooseDate', _ctx.currentlyViewingText)
- }, [PeriodSelectorvue_type_template_id_901f7596_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.currentlyViewingText), 1)], 8, PeriodSelectorvue_type_template_id_901f7596_hoisted_4)), [[_directive_tooltips]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ }, [PeriodSelectorvue_type_template_id_532ff66f_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.currentlyViewingText), 1)], 8, PeriodSelectorvue_type_template_id_532ff66f_hoisted_4)), [[_directive_tooltips]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
id: "periodMore",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["dropdown", _ctx.selectedPeriod === 'range' ? 'dual-calendar' : 'single-calendar'])
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorvue_type_template_id_901f7596_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorvue_type_template_id_901f7596_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h6", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("b", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ChoosePeriod')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorvue_type_template_id_901f7596_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PeriodOptions, {
- modelValue: _ctx.selectedPeriod,
- "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => _ctx.selectedPeriod = $event),
- periods: _ctx.periodsFiltered,
- "checked-period-id": _ctx.uiSelection.type === 'period' ? _ctx.uiSelection.id : null,
- "active-date-period": _ctx.committedPeriod,
- onSelect: _cache[2] || (_cache[2] = $event => _ctx.onPeriodOptionSelected($event)),
- onDblclick: _cache[3] || (_cache[3] = $event => _ctx.onPeriodOptionDblClick($event))
- }, null, 8, ["modelValue", "periods", "checked-period-id", "active-date-period"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PresetDateRanges, {
- modelValue: _ctx.activePresetId,
- "onUpdate:modelValue": _cache[4] || (_cache[4] = $event => _ctx.activePresetId = $event),
- "checked-preset-id": _ctx.uiSelection.type === 'preset' ? _ctx.uiSelection.id : null,
- "allowed-periods": _ctx.periodsFiltered,
- "min-date": _ctx.minAllowedDate,
- "max-date": _ctx.maxAllowedDate,
- onSelect: _cache[5] || (_cache[5] = $event => _ctx.onPresetDateRangeSelected($event))
- }, null, 8, ["modelValue", "checked-preset-id", "allowed-periods", "min-date", "max-date"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorvue_type_template_id_901f7596_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
- class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
- 'calendar-disabled': _ctx.uiSelection.type === 'preset'
- }),
- onClickCapture: _cache[8] || (_cache[8] = $event => _ctx.onRangePresetDateCellClickCapture($event))
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DateRangePicker, {
- class: "period-range",
- "start-date": _ctx.displayRangeStartDate,
- "end-date": _ctx.displayRangeEndDate,
- onRangeChange: _cache[6] || (_cache[6] = $event => _ctx.onRangeChange($event.start, $event.end)),
- onSubmit: _cache[7] || (_cache[7] = $event => _ctx.onApplyClicked())
- }, null, 8, ["start-date", "end-date"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.calendarViewport === 'range']])], 34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
- class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["period-date", {
- 'calendar-disabled': _ctx.uiSelection.type === 'preset'
- }])
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PeriodDatePicker, {
- id: "datepicker",
- period: _ctx.singleCalendarPeriod,
- date: _ctx.singleCalendarSelectedDate,
- onSelect: _cache[9] || (_cache[9] = $event => _ctx.onDatePickerSelected($event.date))
- }, null, 8, ["period", "date"])], 2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.calendarViewport === 'single']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PeriodSelectorCompareControls, {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorvue_type_template_id_532ff66f_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PeriodSelectorOptionsColumn, {
+ "ui-selected-period": _ctx.selectedPeriod,
+ "periods-filtered": _ctx.periodsFiltered,
+ "ui-selection": _ctx.uiSelection,
+ "applied-period": _ctx.committedPeriod,
+ "active-preset-id": _ctx.activePresetId,
+ "min-allowed-date": _ctx.minAllowedDate,
+ "max-allowed-date": _ctx.maxAllowedDate,
+ "onUpdate:uiSelectedPeriod": _cache[1] || (_cache[1] = $event => _ctx.selectedPeriod = $event),
+ "onUpdate:activePresetId": _cache[2] || (_cache[2] = $event => _ctx.activePresetId = $event),
+ onPeriodSelect: _cache[3] || (_cache[3] = $event => _ctx.onPeriodOptionSelected($event)),
+ onPeriodDblclick: _cache[4] || (_cache[4] = $event => _ctx.onPeriodOptionDblClick($event)),
+ onPresetSelect: _cache[5] || (_cache[5] = $event => _ctx.onPresetDateRangeSelected($event))
+ }, null, 8, ["ui-selected-period", "periods-filtered", "ui-selection", "applied-period", "active-preset-id", "min-allowed-date", "max-allowed-date"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PeriodSelectorCalendarColumn, {
+ "ui-selection": _ctx.uiSelection,
+ "calendar-viewport": _ctx.calendarViewport,
+ "display-range-start-date": _ctx.displayRangeStartDate,
+ "display-range-end-date": _ctx.displayRangeEndDate,
+ "single-calendar-period": _ctx.singleCalendarPeriod,
+ "single-calendar-selected-date": _ctx.singleCalendarSelectedDate,
"is-comparison-enabled": _ctx.isComparisonEnabled,
"is-comparing": _ctx.isComparing,
"compare-period-type": _ctx.comparePeriodType,
"compare-start-date": _ctx.compareStartDate,
"compare-end-date": _ctx.compareEndDate,
"compare-period-dropdown-options": _ctx.comparePeriodDropdownOptions,
+ "is-apply-enabled": _ctx.isApplyEnabled(),
+ onRangeChange: _cache[6] || (_cache[6] = $event => _ctx.onRangeChange($event.start, $event.end)),
+ onSingleDateSelect: _cache[7] || (_cache[7] = $event => _ctx.onDatePickerSelected($event)),
+ onApplyClick: _cache[8] || (_cache[8] = $event => _ctx.onApplyClicked()),
+ onRangePresetDateCellClickCapture: _cache[9] || (_cache[9] = $event => _ctx.onRangePresetDateCellClickCapture($event)),
"onUpdate:isComparing": _cache[10] || (_cache[10] = $event => _ctx.isComparing = $event),
"onUpdate:comparePeriodType": _cache[11] || (_cache[11] = $event => _ctx.comparePeriodType = $event),
"onUpdate:compareStartDate": _cache[12] || (_cache[12] = $event => _ctx.compareStartDate = $event),
"onUpdate:compareEndDate": _cache[13] || (_cache[13] = $event => _ctx.compareEndDate = $event)
- }, null, 8, ["is-comparison-enabled", "is-comparing", "compare-period-type", "compare-start-date", "compare-end-date", "compare-period-dropdown-options"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorvue_type_template_id_901f7596_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
- type: "submit",
- id: "calendarApply",
- class: "btn",
- onClick: _cache[14] || (_cache[14] = $event => _ctx.onApplyClicked()),
- disabled: !_ctx.isApplyEnabled(),
- value: _ctx.translate('General_Apply')
- }, null, 8, PeriodSelectorvue_type_template_id_901f7596_hoisted_11)])])]), _ctx.isLoadingNewPage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PeriodSelectorvue_type_template_id_901f7596_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ }, null, 8, ["ui-selection", "calendar-viewport", "display-range-start-date", "display-range-end-date", "single-calendar-period", "single-calendar-selected-date", "is-comparison-enabled", "is-comparing", "compare-period-type", "compare-start-date", "compare-end-date", "compare-period-dropdown-options", "is-apply-enabled"])]), _ctx.isLoadingNewPage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PeriodSelectorvue_type_template_id_532ff66f_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: true
- }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorvue_type_template_id_901f7596_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SegmentEditor_LoadingSegmentedDataMayTakeSomeTime')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2), _ctx.canShowMovePeriod ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
+ }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorvue_type_template_id_532ff66f_hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SegmentEditor_LoadingSegmentedDataMayTakeSomeTime')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2), _ctx.canShowMovePeriod ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
key: 1,
class: "move-period move-period-next",
- onClick: _cache[15] || (_cache[15] = $event => _ctx.movePeriod(1)),
+ onClick: _cache[14] || (_cache[14] = $event => _ctx.movePeriod(1)),
disabled: _ctx.isPeriodMoveDisabled(1)
- }, _hoisted_16, 8, PeriodSelectorvue_type_template_id_901f7596_hoisted_14)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2)), [[_directive_expand_on_click, {
+ }, PeriodSelectorvue_type_template_id_532ff66f_hoisted_11, 8, PeriodSelectorvue_type_template_id_532ff66f_hoisted_9)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2)), [[_directive_expand_on_click, {
expander: 'title',
onExpand: _ctx.onExpand,
onClosed: _ctx.onClosed
}]]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.vue?vue&type=template&id=901f7596
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.vue?vue&type=template&id=532ff66f
+
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.applyFlow.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+function isApplyEnabledFromState(state) {
+ // Invariant: non-range period mode intentionally cannot commit "compare to" via Apply button.
+ if (state.uiSelectionType === 'period' && state.uiSelectedPeriod !== RANGE_PERIOD) {
+ return false;
+ }
+ if (state.hasPendingNonRangePeriodChange) {
+ return false;
+ }
+ if (state.uiSelectedPeriod === RANGE_PERIOD && !state.hasPendingPresetSelection && !state.isRangeValid) {
+ return false;
+ }
+ if (state.isComparing && state.comparePeriodType === 'custom' && !state.isCompareRangeValid) {
+ return false;
+ }
+ return true;
+}
+function resolveNonRangeApplyAction(state) {
+ if (state.hasPendingNonRangePeriodChange) {
+ return {
+ type: 'stop'
+ };
+ }
+ if (!state.isCompareDirty) {
+ return state.shouldCloseSelectorWithoutApplying ? {
+ type: 'close'
+ } : {
+ type: 'stop'
+ };
+ }
+ if (state.appliedPeriod === RANGE_PERIOD) {
+ if (!state.hasCommittedRangeBounds) {
+ return {
+ type: 'stop'
+ };
+ }
+ const rangeDateValue = `${state.appliedRangeStartDate},${state.appliedRangeEndDate}`;
+ return {
+ type: 'commit',
+ date: state.rollingDateParam || rangeDateValue,
+ period: RANGE_PERIOD
+ };
+ }
+ if (!state.formattedAppliedAnchorDate) {
+ return {
+ type: 'stop'
+ };
+ }
+ return {
+ type: 'commit',
+ date: state.rollingDateParam || state.formattedAppliedAnchorDate,
+ period: state.appliedPeriod
+ };
+}
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.helpers.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function isKeyboardExpandEvent(event) {
+ return event.detail === 0;
+}
+function stripCompareDateParams(baseUrlParams) {
+ const paramsWithoutCompare = Object.assign({}, baseUrlParams);
+ // Intentionally keep compareSegments. Only date-period compare params are reset here.
+ delete paramsWithoutCompare.comparePeriods;
+ delete paramsWithoutCompare.comparePeriodType;
+ delete paramsWithoutCompare.compareDates;
+ return paramsWithoutCompare;
+}
+function shiftDateByPeriod(sourceDate, period, direction) {
+ const shiftedDate = new Date(sourceDate.getTime());
+ switch (period) {
+ case 'day':
+ shiftedDate.setDate(shiftedDate.getDate() + direction);
+ break;
+ case 'week':
+ shiftedDate.setDate(shiftedDate.getDate() + direction * 7);
+ break;
+ case 'month':
+ shiftedDate.setMonth(shiftedDate.getMonth() + direction);
+ break;
+ case 'year':
+ shiftedDate.setFullYear(shiftedDate.getFullYear() + direction);
+ break;
+ default:
+ break;
+ }
+ return shiftedDate;
+}
+function clampDateToBounds(date, minDate, maxDate) {
+ const clampedDate = new Date(date.getTime());
+ if (clampedDate < minDate) {
+ clampedDate.setTime(minDate.getTime());
+ }
+ if (clampedDate > maxDate) {
+ clampedDate.setTime(maxDate.getTime());
+ }
+ return clampedDate;
+}
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorOptionsColumn.vue?vue&type=template&id=0c87dbac
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PresetDateRanges.vue?vue&type=template&id=566bc3fc
+const PeriodSelectorOptionsColumnvue_type_template_id_0c87dbac_hoisted_1 = {
+ class: "period-type period-selector-options-column"
+};
+const PeriodSelectorOptionsColumnvue_type_template_id_0c87dbac_hoisted_2 = {
+ id: "otherPeriods"
+};
+function PeriodSelectorOptionsColumnvue_type_template_id_0c87dbac_render(_ctx, _cache, $props, $setup, $data, $options) {
+ const _component_PeriodOptions = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PeriodOptions");
+ const _component_PresetDateRanges = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PresetDateRanges");
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PeriodSelectorOptionsColumnvue_type_template_id_0c87dbac_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h6", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("b", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ChoosePeriod')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorOptionsColumnvue_type_template_id_0c87dbac_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PeriodOptions, {
+ "model-value": _ctx.uiSelectedPeriod,
+ periods: _ctx.periodsFiltered,
+ "checked-period-id": _ctx.uiSelection.type === 'period' ? _ctx.uiSelection.id : null,
+ "active-date-period": _ctx.appliedPeriod,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uiSelectedPeriod', $event)),
+ onSelect: _cache[1] || (_cache[1] = $event => _ctx.$emit('period-select', $event)),
+ onDblclick: _cache[2] || (_cache[2] = $event => _ctx.$emit('period-dblclick', $event))
+ }, null, 8, ["model-value", "periods", "checked-period-id", "active-date-period"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PresetDateRanges, {
+ "model-value": _ctx.activePresetId,
+ "checked-preset-id": _ctx.uiSelection.type === 'preset' ? _ctx.uiSelection.id : null,
+ "allowed-periods": _ctx.periodsFiltered,
+ "min-date": _ctx.minAllowedDate,
+ "max-date": _ctx.maxAllowedDate,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:activePresetId', $event)),
+ onSelect: _cache[4] || (_cache[4] = $event => _ctx.$emit('preset-select', $event))
+ }, null, 8, ["model-value", "checked-preset-id", "allowed-periods", "min-date", "max-date"])])]);
+}
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorOptionsColumn.vue?vue&type=template&id=0c87dbac
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PresetDateRanges.vue?vue&type=template&id=4ac3a57b
-const PresetDateRangesvue_type_template_id_566bc3fc_hoisted_1 = {
+const PresetDateRangesvue_type_template_id_4ac3a57b_hoisted_1 = {
class: "presetDateRanges"
};
-const PresetDateRangesvue_type_template_id_566bc3fc_hoisted_2 = {
+const PresetDateRangesvue_type_template_id_4ac3a57b_hoisted_2 = {
key: 0,
class: "preset-date-range-group-separator"
};
-const PresetDateRangesvue_type_template_id_566bc3fc_hoisted_3 = ["id", "checked", "onChange"];
-function PresetDateRangesvue_type_template_id_566bc3fc_render(_ctx, _cache, $props, $setup, $data, $options) {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PresetDateRangesvue_type_template_id_566bc3fc_hoisted_1, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.groupedPresetDateRanges, (group, index) => {
+const PresetDateRangesvue_type_template_id_4ac3a57b_hoisted_3 = ["name", "id", "checked", "onChange"];
+const PresetDateRangesvue_type_template_id_4ac3a57b_hoisted_4 = {
+ class: "preset-option-text"
+};
+function PresetDateRangesvue_type_template_id_4ac3a57b_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PresetDateRangesvue_type_template_id_4ac3a57b_hoisted_1, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.groupedPresetDateRanges, (group, index) => {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
key: index,
class: "preset-date-range-group"
- }, [index > 0 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PresetDateRangesvue_type_template_id_566bc3fc_hoisted_2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(group, preset => {
+ }, [index > 0 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PresetDateRangesvue_type_template_id_4ac3a57b_hoisted_2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(group, preset => {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
key: preset.id
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", {
@@ -6910,15 +7117,16 @@ function PresetDateRangesvue_type_template_id_566bc3fc_render(_ctx, _cache, $pro
})
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "radio",
- name: "presetDateRange",
+ class: "preset-option-input",
+ name: _ctx.presetInputName,
id: `preset_date_${preset.id}`,
checked: _ctx.checkedPresetId === preset.id,
onChange: $event => _ctx.handlePresetSelected(preset.id)
- }, null, 40, PresetDateRangesvue_type_template_id_566bc3fc_hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate(preset.labelKey)), 1)], 2)]);
+ }, null, 40, PresetDateRangesvue_type_template_id_4ac3a57b_hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PresetDateRangesvue_type_template_id_4ac3a57b_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate(preset.labelKey)), 1)], 2)]);
}), 128))]);
}), 128))]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PresetDateRanges.vue?vue&type=template&id=566bc3fc
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PresetDateRanges.vue?vue&type=template&id=4ac3a57b
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PresetDateRangeResolver.ts
/*!
@@ -7025,7 +7233,7 @@ function startOfQuarter(date) {
function makeRangeDateParam(startDate, endDate) {
return `${format(startDate)},${format(endDate)}`;
}
-function clampDateToBounds(date, minDate, maxDate) {
+function PresetDateRangeResolver_clampDateToBounds(date, minDate, maxDate) {
if (date < minDate) {
return new Date(minDate.getTime());
}
@@ -7198,6 +7406,7 @@ function resolvePresetDateRange(presetId, todayInput) {
const PRESET_DATE_RANGE_GROUPS = [['today', 'yesterday'], ['last7days', 'last30days', 'last90days'], ['lastWeekMonSun', 'lastMonth', 'lastQuarter', 'lastYear'], ['thisWeekMonToday', 'thisMonth', 'thisQuarter', 'thisYear']];
+let nextPresetDateRangeGroupId = 0;
/* harmony default export */ var PresetDateRangesvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
props: {
modelValue: {
@@ -7225,6 +7434,13 @@ const PRESET_DATE_RANGE_GROUPS = [['today', 'yesterday'], ['last7days', 'last30d
required: true
}
},
+ data() {
+ const presetInputName = `preset-date-range-${nextPresetDateRangeGroupId}`;
+ nextPresetDateRangeGroupId += 1;
+ return {
+ presetInputName
+ };
+ },
emits: ['update:modelValue', 'select'],
computed: {
presetDateRanges() {
@@ -7241,8 +7457,8 @@ const PRESET_DATE_RANGE_GROUPS = [['today', 'yesterday'], ['last7days', 'last30d
const resolvedPreset = resolvePresetDateRange(presetId, this.today);
this.$emit('update:modelValue', presetId);
this.$emit('select', Object.assign(Object.assign({}, resolvedPreset), {}, {
- startDate: clampDateToBounds(resolvedPreset.startDate, this.minDate, this.maxDate),
- endDate: clampDateToBounds(resolvedPreset.endDate, this.minDate, this.maxDate)
+ startDate: PresetDateRangeResolver_clampDateToBounds(resolvedPreset.startDate, this.minDate, this.maxDate),
+ endDate: PresetDateRangeResolver_clampDateToBounds(resolvedPreset.endDate, this.minDate, this.maxDate)
}));
}
}
@@ -7253,41 +7469,51 @@ const PRESET_DATE_RANGE_GROUPS = [['today', 'yesterday'], ['last7days', 'last30d
-PresetDateRangesvue_type_script_lang_ts.render = PresetDateRangesvue_type_template_id_566bc3fc_render
+PresetDateRangesvue_type_script_lang_ts.render = PresetDateRangesvue_type_template_id_4ac3a57b_render
/* harmony default export */ var PresetDateRanges = (PresetDateRangesvue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue?vue&type=template&id=2d7a8937
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue?vue&type=template&id=878f3d3a
-const PeriodOptionsvue_type_template_id_2d7a8937_hoisted_1 = ["aria-label"];
-const PeriodOptionsvue_type_template_id_2d7a8937_hoisted_2 = ["id", "aria-pressed", "title", "onClick", "onDblclick"];
-function PeriodOptionsvue_type_template_id_2d7a8937_render(_ctx, _cache, $props, $setup, $data, $options) {
+const PeriodOptionsvue_type_template_id_878f3d3a_hoisted_1 = ["aria-label"];
+const PeriodOptionsvue_type_template_id_878f3d3a_hoisted_2 = ["title", "onDblclick"];
+const PeriodOptionsvue_type_template_id_878f3d3a_hoisted_3 = ["name", "id", "checked", "onChange", "onKeydown"];
+const PeriodOptionsvue_type_template_id_878f3d3a_hoisted_4 = {
+ class: "period-option-text"
+};
+function PeriodOptionsvue_type_template_id_878f3d3a_render(_ctx, _cache, $props, $setup, $data, $options) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
class: "periodOptions",
- role: "group",
+ role: "radiogroup",
"aria-label": _ctx.translate('General_ChoosePeriod')
}, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.displayPeriods, period => {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
key: period
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
- type: "button",
- id: `period_id_${period}`,
- "aria-pressed": _ctx.checkedPeriodId === period ? 'true' : 'false',
- class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["period-option-label", {
'selected-period-label': _ctx.checkedPeriodId === period
- }),
+ }]),
title: period === _ctx.activeDatePeriod ? '' : _ctx.translate('General_DoubleClickToChangePeriod'),
- onClick: $event => _ctx.handlePeriodSelected(period),
onDblclick: $event => _ctx.handlePeriodDoubleClick(period)
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.getPeriodDisplayText(period)), 1)], 42, PeriodOptionsvue_type_template_id_2d7a8937_hoisted_2)]);
- }), 128))], 8, PeriodOptionsvue_type_template_id_2d7a8937_hoisted_1);
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ class: "period-option-input",
+ type: "radio",
+ name: _ctx.periodInputName,
+ id: `period_id_${period}`,
+ checked: _ctx.checkedPeriodId === period,
+ onChange: $event => _ctx.handlePeriodSelected(period),
+ onKeydown: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withKeys"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])($event => _ctx.handlePeriodEnter(period), ["prevent"]), ["enter"])
+ }, null, 40, PeriodOptionsvue_type_template_id_878f3d3a_hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PeriodOptionsvue_type_template_id_878f3d3a_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.getPeriodDisplayText(period)), 1)], 42, PeriodOptionsvue_type_template_id_878f3d3a_hoisted_2)]);
+ }), 128))], 8, PeriodOptionsvue_type_template_id_878f3d3a_hoisted_1);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue?vue&type=template&id=2d7a8937
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue?vue&type=template&id=878f3d3a
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue?vue&type=script&lang=ts
+let nextPeriodOptionsGroupId = 0;
/* harmony default export */ var PeriodOptionsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ name: 'PeriodOptions',
props: {
modelValue: {
type: String,
@@ -7306,6 +7532,13 @@ function PeriodOptionsvue_type_template_id_2d7a8937_render(_ctx, _cache, $props,
required: true
}
},
+ data() {
+ const periodInputName = `period-${nextPeriodOptionsGroupId}`;
+ nextPeriodOptionsGroupId += 1;
+ return {
+ periodInputName
+ };
+ },
emits: ['update:modelValue', 'select', 'dblclick'],
computed: {
displayPeriods() {
@@ -7328,6 +7561,9 @@ function PeriodOptionsvue_type_template_id_2d7a8937_render(_ctx, _cache, $props,
this.$emit('update:modelValue', period);
this.$emit('select', payload);
},
+ handlePeriodEnter(period) {
+ this.handlePeriodSelected(period);
+ },
handlePeriodDoubleClick(period) {
const payload = {
period
@@ -7342,40 +7578,157 @@ function PeriodOptionsvue_type_template_id_2d7a8937_render(_ctx, _cache, $props,
-PeriodOptionsvue_type_script_lang_ts.render = PeriodOptionsvue_type_template_id_2d7a8937_render
+PeriodOptionsvue_type_script_lang_ts.render = PeriodOptionsvue_type_template_id_878f3d3a_render
/* harmony default export */ var PeriodOptions = (PeriodOptionsvue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue?vue&type=template&id=6585cb20
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorOptionsColumn.vue?vue&type=script&lang=ts
+
+
+
-const PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_1 = {
+/* harmony default export */ var PeriodSelectorOptionsColumnvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ name: 'PeriodSelectorOptionsColumn',
+ components: {
+ PresetDateRanges: PresetDateRanges,
+ PeriodOptions: PeriodOptions
+ },
+ props: {
+ uiSelectedPeriod: {
+ type: String,
+ required: true
+ },
+ periodsFiltered: {
+ type: Array,
+ required: true
+ },
+ uiSelection: {
+ type: Object,
+ required: true
+ },
+ appliedPeriod: {
+ type: String,
+ required: true
+ },
+ activePresetId: {
+ type: String,
+ default: null
+ },
+ minAllowedDate: {
+ type: Date,
+ required: true
+ },
+ maxAllowedDate: {
+ type: Date,
+ required: true
+ }
+ },
+ emits: ['update:uiSelectedPeriod', 'update:activePresetId', 'period-select', 'period-dblclick', 'preset-select'],
+ methods: {
+ translate: translate
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorOptionsColumn.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorOptionsColumn.vue
+
+
+
+PeriodSelectorOptionsColumnvue_type_script_lang_ts.render = PeriodSelectorOptionsColumnvue_type_template_id_0c87dbac_render
+
+/* harmony default export */ var PeriodSelectorOptionsColumn = (PeriodSelectorOptionsColumnvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCalendarColumn.vue?vue&type=template&id=f7ee93d4
+
+const PeriodSelectorCalendarColumnvue_type_template_id_f7ee93d4_hoisted_1 = {
+ class: "period-selector-calendar-column"
+};
+const PeriodSelectorCalendarColumnvue_type_template_id_f7ee93d4_hoisted_2 = {
+ class: "apply-button-container"
+};
+const PeriodSelectorCalendarColumnvue_type_template_id_f7ee93d4_hoisted_3 = ["disabled", "value"];
+function PeriodSelectorCalendarColumnvue_type_template_id_f7ee93d4_render(_ctx, _cache, $props, $setup, $data, $options) {
+ const _component_DateRangePicker = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("DateRangePicker");
+ const _component_PeriodDatePicker = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PeriodDatePicker");
+ const _component_PeriodSelectorCompareControls = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PeriodSelectorCompareControls");
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PeriodSelectorCalendarColumnvue_type_template_id_f7ee93d4_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ 'calendar-disabled': _ctx.uiSelection.type === 'preset'
+ }),
+ onClickCapture: _cache[2] || (_cache[2] = $event => _ctx.$emit('range-preset-date-cell-click-capture', $event))
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DateRangePicker, {
+ class: "period-range",
+ "start-date": _ctx.displayRangeStartDate,
+ "end-date": _ctx.displayRangeEndDate,
+ onRangeChange: _cache[0] || (_cache[0] = $event => _ctx.$emit('range-change', $event)),
+ onSubmit: _cache[1] || (_cache[1] = $event => _ctx.$emit('apply-click'))
+ }, null, 8, ["start-date", "end-date"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.calendarViewport === 'range']])], 34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["period-date", {
+ 'calendar-disabled': _ctx.uiSelection.type === 'preset'
+ }])
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PeriodDatePicker, {
+ id: "datepicker",
+ period: _ctx.singleCalendarPeriod,
+ date: _ctx.singleCalendarSelectedDate,
+ onSelect: _cache[3] || (_cache[3] = $event => _ctx.$emit('single-date-select', $event.date))
+ }, null, 8, ["period", "date"])], 2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.calendarViewport === 'single']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PeriodSelectorCompareControls, {
+ "is-comparison-enabled": _ctx.isComparisonEnabled,
+ "is-comparing": _ctx.isComparing,
+ "compare-period-type": _ctx.comparePeriodType,
+ "compare-start-date": _ctx.compareStartDate,
+ "compare-end-date": _ctx.compareEndDate,
+ "compare-period-dropdown-options": _ctx.comparePeriodDropdownOptions,
+ "onUpdate:isComparing": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:isComparing', $event)),
+ "onUpdate:comparePeriodType": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:comparePeriodType', $event)),
+ "onUpdate:compareStartDate": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compareStartDate', $event)),
+ "onUpdate:compareEndDate": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compareEndDate', $event))
+ }, null, 8, ["is-comparison-enabled", "is-comparing", "compare-period-type", "compare-start-date", "compare-end-date", "compare-period-dropdown-options"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorCalendarColumnvue_type_template_id_f7ee93d4_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "submit",
+ id: "calendarApply",
+ class: "btn",
+ onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('apply-click')),
+ disabled: !_ctx.isApplyEnabled,
+ value: _ctx.translate('General_Apply')
+ }, null, 8, PeriodSelectorCalendarColumnvue_type_template_id_f7ee93d4_hoisted_3)])]);
+}
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCalendarColumn.vue?vue&type=template&id=f7ee93d4
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue?vue&type=template&id=451ba950
+
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_1 = {
key: 0,
class: "compare-checkbox"
};
-const PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_2 = ["checked"];
-const PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_3 = {
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_2 = {
+ class: "compare-checkbox-label"
+};
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_3 = ["checked"];
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_4 = {
+ class: "compare-checkbox-text"
+};
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_5 = {
id: "comparePeriodToDropdown"
};
-const PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_4 = {
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_6 = {
key: 1,
class: "compare-date-range"
};
-const PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_5 = {
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_7 = {
id: "comparePeriodStartDate"
};
-const PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "compare-dates-separator"
}, null, -1);
-const PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_7 = {
+const PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_9 = {
id: "comparePeriodEndDate"
};
-function PeriodSelectorCompareControlsvue_type_template_id_6585cb20_render(_ctx, _cache, $props, $setup, $data, $options) {
+function PeriodSelectorCompareControlsvue_type_template_id_451ba950_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.isComparisonEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.isComparisonEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ class: "compare-checkbox-input",
id: "comparePeriodTo",
type: "checkbox",
checked: !!_ctx.isComparing,
onChange: _cache[0] || (_cache[0] = $event => _ctx.onCompareToggle($event))
- }, null, 40, PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_CompareTo')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 40, PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_CompareTo')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": _ctx.comparePeriodType,
"onUpdate:modelValue": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:comparePeriodType', $event)),
style: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeStyle"])({
@@ -7386,7 +7739,7 @@ function PeriodSelectorCompareControlsvue_type_template_id_6585cb20_render(_ctx,
options: _ctx.comparePeriodDropdownOptions,
"full-width": true,
disabled: !_ctx.isComparing
- }, null, 8, ["model-value", "style", "options", "disabled"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.isComparing && _ctx.comparePeriodType === 'custom' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "style", "options", "disabled"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.isComparing && _ctx.comparePeriodType === 'custom' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": _ctx.compareStartDate,
"onUpdate:modelValue": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:compareStartDate', $event)),
name: 'comparePeriodStartDate',
@@ -7394,7 +7747,7 @@ function PeriodSelectorCompareControlsvue_type_template_id_6585cb20_render(_ctx,
"full-width": true,
title: _ctx.translate('CoreHome_StartDate'),
placeholder: 'YYYY-MM-DD'
- }, null, 8, ["model-value", "title"])])]), PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorCompareControlsvue_type_template_id_6585cb20_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "title"])])]), PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PeriodSelectorCompareControlsvue_type_template_id_451ba950_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": _ctx.compareEndDate,
"onUpdate:modelValue": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:compareEndDate', $event)),
name: 'comparePeriodEndDate',
@@ -7404,7 +7757,7 @@ function PeriodSelectorCompareControlsvue_type_template_id_6585cb20_render(_ctx,
placeholder: 'YYYY-MM-DD'
}, null, 8, ["model-value", "title"])])])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 64);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue?vue&type=template&id=6585cb20
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue?vue&type=template&id=451ba950
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue?vue&type=script&lang=ts
@@ -7412,6 +7765,7 @@ function PeriodSelectorCompareControlsvue_type_template_id_6585cb20_render(_ctx,
const PeriodSelectorCompareControlsvue_type_script_lang_ts_Field = useExternalPluginComponent('CorePluginsAdmin', 'Field');
/* harmony default export */ var PeriodSelectorCompareControlsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ name: 'PeriodSelectorCompareControls',
components: {
Field: PeriodSelectorCompareControlsvue_type_script_lang_ts_Field
},
@@ -7455,9 +7809,90 @@ const PeriodSelectorCompareControlsvue_type_script_lang_ts_Field = useExternalPl
-PeriodSelectorCompareControlsvue_type_script_lang_ts.render = PeriodSelectorCompareControlsvue_type_template_id_6585cb20_render
+PeriodSelectorCompareControlsvue_type_script_lang_ts.render = PeriodSelectorCompareControlsvue_type_template_id_451ba950_render
/* harmony default export */ var PeriodSelectorCompareControls = (PeriodSelectorCompareControlsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCalendarColumn.vue?vue&type=script&lang=ts
+
+
+
+
+
+/* harmony default export */ var PeriodSelectorCalendarColumnvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ name: 'PeriodSelectorCalendarColumn',
+ components: {
+ DateRangePicker: DateRangePicker,
+ PeriodDatePicker: PeriodDatePicker,
+ PeriodSelectorCompareControls: PeriodSelectorCompareControls
+ },
+ props: {
+ uiSelection: {
+ type: Object,
+ required: true
+ },
+ calendarViewport: {
+ type: String,
+ required: true
+ },
+ displayRangeStartDate: {
+ type: String,
+ default: null
+ },
+ displayRangeEndDate: {
+ type: String,
+ default: null
+ },
+ singleCalendarPeriod: {
+ type: String,
+ required: true
+ },
+ singleCalendarSelectedDate: {
+ type: Date,
+ default: null
+ },
+ isComparisonEnabled: {
+ type: Boolean,
+ required: true
+ },
+ isComparing: {
+ type: Boolean,
+ default: null
+ },
+ comparePeriodType: {
+ type: String,
+ required: true
+ },
+ compareStartDate: {
+ type: String,
+ required: true
+ },
+ compareEndDate: {
+ type: String,
+ required: true
+ },
+ comparePeriodDropdownOptions: {
+ type: Array,
+ required: true
+ },
+ isApplyEnabled: {
+ type: Boolean,
+ required: true
+ }
+ },
+ emits: ['range-change', 'single-date-select', 'apply-click', 'range-preset-date-cell-click-capture', 'update:isComparing', 'update:comparePeriodType', 'update:compareStartDate', 'update:compareEndDate'],
+ methods: {
+ translate: translate
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCalendarColumn.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCalendarColumn.vue
+
+
+
+PeriodSelectorCalendarColumnvue_type_script_lang_ts.render = PeriodSelectorCalendarColumnvue_type_template_id_f7ee93d4_render
+
+/* harmony default export */ var PeriodSelectorCalendarColumn = (PeriodSelectorCalendarColumnvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorHashSync.ts
/*!
* Matomo - free/libre analytics platform
@@ -7508,43 +7943,14 @@ function resolveSyncedUiSelection(currentSelectionKey, currentContextKey, nextHa
-const NBSP = Matomo_Matomo.helper.htmlDecode(' ');
-const COMPARE_PERIOD_TYPES = ['custom', 'previousPeriod', 'previousYear'];
-const COMPARE_PERIOD_OPTIONS = [{
- key: 'custom',
- value: translate('General_Custom')
-}, {
- key: 'previousPeriod',
- value: translate('General_PreviousPeriod').replace(/\s+/, NBSP)
-}, {
- key: 'previousYear',
- value: translate('General_PreviousYear').replace(/\s+/, NBSP)
-}];
-// the date when the site was created
-const siteMinAllowedDate = new Date(Matomo_Matomo.minDateYear, Matomo_Matomo.minDateMonth - 1, Matomo_Matomo.minDateDay);
-// today/now
-const siteMaxAllowedDate = new Date(Matomo_Matomo.maxDateYear, Matomo_Matomo.maxDateMonth - 1, Matomo_Matomo.maxDateDay);
-const RANGE_PERIOD = 'range';
-function isValidDate(d) {
- if (Object.prototype.toString.call(d) !== '[object Date]') {
- return false;
- }
- return !Number.isNaN(d.getTime());
-}
-function isSingleCalendarPeriod(period) {
- return period === 'day' || period === 'week' || period === 'month' || period === 'year';
-}
/* harmony default export */ var PeriodSelectorvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
name: 'PeriodSelector',
props: {
periods: Array
},
components: {
- DateRangePicker: DateRangePicker,
- PeriodDatePicker: PeriodDatePicker,
- PresetDateRanges: PresetDateRanges,
- PeriodOptions: PeriodOptions,
- PeriodSelectorCompareControls: PeriodSelectorCompareControls,
+ PeriodSelectorOptionsColumn: PeriodSelectorOptionsColumn,
+ PeriodSelectorCalendarColumn: PeriodSelectorCalendarColumn,
ActivityIndicator: ActivityIndicator
},
directives: {
@@ -7554,6 +7960,8 @@ function isSingleCalendarPeriod(period) {
data() {
const selectedPeriod = src_MatomoUrl_MatomoUrl.parsed.value.period;
const initialSinglePeriod = isSingleCalendarPeriod(selectedPeriod) ? selectedPeriod : 'day';
+ const siteMinAllowedDate = getSiteMinAllowedDate();
+ const siteMaxAllowedDate = getSiteMaxAllowedDate();
return {
uiSelection: {
type: 'period',
@@ -7686,7 +8094,7 @@ function isSingleCalendarPeriod(period) {
const newStartDate = Range_RangePeriod.getLastNRange(this.selectedPeriod, 2, this.committedAnchorDate).startDate;
return format(newStartDate);
},
- selectedDateParam() {
+ selectedDateString() {
if (this.selectedPeriod === 'range') {
const dateFrom = this.appliedRangeStartDate;
const dateTo = this.appliedRangeEndDate;
@@ -7764,14 +8172,12 @@ function isSingleCalendarPeriod(period) {
},
methods: {
onExpand(event) {
- const isKeyboardEvent = event.detail === 0;
- if (isKeyboardEvent) {
+ if (isKeyboardExpandEvent(event)) {
window.$(this.$refs.root).find('.ui-datepicker-month').focus();
}
},
onClosed(event) {
- const isKeyboardEvent = event.detail === 0;
- if (isKeyboardEvent) {
+ if (isKeyboardExpandEvent(event)) {
window.$(this.$refs.title).focus();
}
},
@@ -7894,12 +8300,7 @@ function isSingleCalendarPeriod(period) {
this.isLoadingNewPage = true;
baseParams = src_MatomoUrl_MatomoUrl.parsed.value;
}
- // get params without comparePeriods/comparePeriodType/compareDates
- const paramsWithoutCompare = Object.assign({}, baseParams);
- delete paramsWithoutCompare.comparePeriods;
- delete paramsWithoutCompare.comparePeriodType;
- delete paramsWithoutCompare.compareDates;
- src_MatomoUrl_MatomoUrl.updateLocation(Object.assign(Object.assign({}, paramsWithoutCompare), {}, {
+ src_MatomoUrl_MatomoUrl.updateLocation(Object.assign(Object.assign({}, stripCompareDateParams(baseParams)), {}, {
date,
period
}, compareParams));
@@ -7932,7 +8333,7 @@ function isSingleCalendarPeriod(period) {
if (this.selectedPeriod !== RANGE_PERIOD) {
return false;
}
- const dateString = this.selectedDateParam;
+ const dateString = this.selectedDateString;
if (!dateString) {
return true;
}
@@ -7941,27 +8342,30 @@ function isSingleCalendarPeriod(period) {
return true;
},
applyNonRangeOrCompareChanges() {
- if (this.hasPendingNonRangePeriodChange) {
- return;
- }
- if (!this.isCompareDirty) {
- if (this.shouldCloseSelectorWithoutApplying()) {
- this.closePeriodSelector();
- }
- return;
- }
- if (this.committedPeriod === RANGE_PERIOD) {
- if (!this.hasCommittedRangeBounds()) {
- return;
- }
- this.commitSelectionToUrl(this.getCurrentRollingDateParamIfOwnedByPreset() || `${this.appliedRangeStartDate},${this.appliedRangeEndDate}`, RANGE_PERIOD);
+ const action = resolveNonRangeApplyAction({
+ hasPendingNonRangePeriodChange: this.hasPendingNonRangePeriodChange,
+ isCompareDirty: this.isCompareDirty,
+ shouldCloseSelectorWithoutApplying: this.shouldCloseSelectorWithoutApplying(),
+ appliedPeriod: this.committedPeriod,
+ hasCommittedRangeBounds: this.hasCommittedRangeBounds(),
+ rollingDateParam: this.getCurrentRollingDateParamIfOwnedByPreset(),
+ appliedRangeStartDate: this.appliedRangeStartDate,
+ appliedRangeEndDate: this.appliedRangeEndDate,
+ formattedAppliedAnchorDate: this.committedAnchorDate ? format(this.committedAnchorDate) : null
+ });
+ if (action.type === 'stop') {
return;
}
- if (!this.committedAnchorDate) {
+ if (action.type === 'close') {
+ this.closePeriodSelector();
return;
}
- this.commitSelectionToUrl(this.getCurrentRollingDateParamIfOwnedByPreset() || format(this.committedAnchorDate), this.committedPeriod);
+ this.commitSelectionToUrl(action.date, action.period);
},
+ // Invariant: non-range period mode intentionally cannot commit compare-only via Apply.
+ // When a non-range period option owns the selection, 'Apply' button stays disabled.
+ // Compare controls can still be edited in this state, but users must click the calendar
+ // to commit date/compare changes.
onApplyClicked() {
if (this.applyPendingPresetSelection()) {
return;
@@ -8095,8 +8499,8 @@ function isSingleCalendarPeriod(period) {
},
setRangeStartEndFromPeriod(period, dateStr) {
const dateRange = Periods_Periods.parse(period, dateStr).getDateRange();
- this.appliedRangeStartDate = format(dateRange[0] < siteMinAllowedDate ? siteMinAllowedDate : dateRange[0]);
- this.appliedRangeEndDate = format(dateRange[1] > siteMaxAllowedDate ? siteMaxAllowedDate : dateRange[1]);
+ this.appliedRangeStartDate = format(dateRange[0] < this.minAllowedDate ? this.minAllowedDate : dateRange[0]);
+ this.appliedRangeEndDate = format(dateRange[1] > this.maxAllowedDate ? this.maxAllowedDate : dateRange[1]);
},
canInteractWithRangeCalendar() {
return this.calendarViewport === 'range' && this.uiSelection.type === 'period' && this.selectedPeriod === RANGE_PERIOD;
@@ -8131,22 +8535,16 @@ function isSingleCalendarPeriod(period) {
}
},
isApplyEnabled() {
- // When a non-range period option owns the selection, 'Apply' button stays disabled.
- // Compare controls can still be edited in this state, but users must click the calendar
- // to commit date/compare changes.
- if (this.uiSelection.type === 'period' && this.selectedPeriod !== RANGE_PERIOD) {
- return false;
- }
- if (this.hasPendingNonRangePeriodChange) {
- return false;
- }
- if (this.selectedPeriod === RANGE_PERIOD && !this.pendingPresetSelection && !this.isRangeValid) {
- return false;
- }
- if (this.isComparing && this.comparePeriodType === 'custom' && !this.isCompareRangeValid()) {
- return false;
- }
- return true;
+ return isApplyEnabledFromState({
+ uiSelectionType: this.uiSelection.type,
+ uiSelectedPeriod: this.selectedPeriod,
+ hasPendingNonRangePeriodChange: this.hasPendingNonRangePeriodChange,
+ hasPendingPresetSelection: !!this.pendingPresetSelection,
+ isRangeValid: this.isRangeValid,
+ isComparing: this.isComparing,
+ comparePeriodType: this.comparePeriodType,
+ isCompareRangeValid: this.isCompareRangeValid()
+ });
},
closePeriodSelector() {
this.$refs.root.classList.remove('expanded');
@@ -8168,31 +8566,10 @@ function isSingleCalendarPeriod(period) {
if (!this.canMovePeriod(direction)) {
return;
}
- const newDate = this.committedAnchorDate != null ? new Date(this.committedAnchorDate.getTime()) : new Date();
- switch (this.committedPeriod) {
- case 'day':
- newDate.setDate(newDate.getDate() + direction);
- break;
- case 'week':
- newDate.setDate(newDate.getDate() + direction * 7);
- break;
- case 'month':
- newDate.setMonth(newDate.getMonth() + direction);
- break;
- case 'year':
- newDate.setFullYear(newDate.getFullYear() + direction);
- break;
- default:
- break;
- }
- // Ensure the date is not outside the min and max dates
- if (newDate < siteMinAllowedDate) {
- newDate.setTime(siteMinAllowedDate.getTime());
- }
- if (newDate > siteMaxAllowedDate) {
- newDate.setTime(siteMaxAllowedDate.getTime());
- }
- this.setPiwikPeriodAndDate(this.committedPeriod, newDate);
+ const baseDate = this.committedAnchorDate || new Date();
+ const shiftedDate = shiftDateByPeriod(baseDate, this.committedPeriod, direction);
+ const clampedDate = clampDateToBounds(shiftedDate, this.minAllowedDate, this.maxAllowedDate);
+ this.setPiwikPeriodAndDate(this.committedPeriod, clampedDate);
},
isPeriodMoveDisabled(direction) {
// disable period move when date range is used or when we would go out of the min/max dates
@@ -8205,7 +8582,7 @@ function isSingleCalendarPeriod(period) {
if (this.committedAnchorDate === null) {
return false;
}
- const boundaryDate = direction === -1 ? siteMinAllowedDate : siteMaxAllowedDate;
+ const boundaryDate = direction === -1 ? this.minAllowedDate : this.maxAllowedDate;
return !datesAreInTheSamePeriod(this.committedAnchorDate, boundaryDate, this.committedPeriod);
}
}
@@ -8216,7 +8593,7 @@ function isSingleCalendarPeriod(period) {
-PeriodSelectorvue_type_script_lang_ts.render = PeriodSelectorvue_type_template_id_901f7596_render
+PeriodSelectorvue_type_script_lang_ts.render = PeriodSelectorvue_type_template_id_532ff66f_render
/* harmony default export */ var PeriodSelector = (PeriodSelectorvue_type_script_lang_ts);
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-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--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CoreHome/vue/src/ReportingMenu/ReportingMenu.vue?vue&type=template&id=ebf172cc
@@ -8250,10 +8627,10 @@ const ReportingMenuvue_type_template_id_ebf172cc_hoisted_14 = {
key: 1,
class: "collapsible collapsible-accordion"
};
-const ReportingMenuvue_type_template_id_ebf172cc_hoisted_15 = {
+const _hoisted_15 = {
class: "collapsible-header"
};
-const ReportingMenuvue_type_template_id_ebf172cc_hoisted_16 = {
+const _hoisted_16 = {
class: "collapsible-body"
};
const _hoisted_17 = ["onClick", "href"];
@@ -8333,9 +8710,9 @@ function ReportingMenuvue_type_template_id_ebf172cc_render(_ctx, _cache, $props,
}, [category.component ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDynamicComponent"])(category.component), {
key: 0,
onAction: $event => _ctx.loadCategory(category)
- }, null, 40, ["onAction"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !category.component ? 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"])("ul", ReportingMenuvue_type_template_id_ebf172cc_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", ReportingMenuvue_type_template_id_ebf172cc_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("i", {
+ }, null, 40, ["onAction"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !category.component ? 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"])("ul", ReportingMenuvue_type_template_id_ebf172cc_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("i", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(category.icon ? category.icon : 'icon-chevron-down')
- }, null, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(category.name), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ReportingMenuvue_type_template_id_ebf172cc_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(category.subcategories, subcategory => {
+ }, null, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(category.name), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(category.subcategories, subcategory => {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
key: subcategory.id
}, [subcategory.isGroup ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], {
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
index 48f5d60acba..7e789f16188 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
@@ -4,7 +4,7 @@
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */window.hasBlockedContent=!1},"8bbf":function(t,o){t.exports=e},fae3:function(e,t,o){"use strict";if(o.r(t),o.d(t,"createVueApp",(function(){return fe})),o.d(t,"importPluginUmd",(function(){return we})),o.d(t,"useExternalPluginComponent",(function(){return Se})),o.d(t,"DirectiveUtilities",(function(){return ke})),o.d(t,"debounce",(function(){return Ee})),o.d(t,"clone",(function(){return Pe})),o.d(t,"VueEntryContainer",(function(){return Ne})),o.d(t,"ActivityIndicator",(function(){return qe})),o.d(t,"MatomoLoader",(function(){return $e})),o.d(t,"translate",(function(){return a})),o.d(t,"translateOrDefault",(function(){return r})),o.d(t,"externalRawLink",(function(){return de})),o.d(t,"externalLink",(function(){return ue})),o.d(t,"Alert",(function(){return Ge})),o.d(t,"AjaxHelper",(function(){return te})),o.d(t,"setCookie",(function(){return q})),o.d(t,"getCookie",(function(){return W})),o.d(t,"deleteCookie",(function(){return z})),o.d(t,"MatomoUrl",(function(){return U})),o.d(t,"Matomo",(function(){return M})),o.d(t,"Periods",(function(){return c})),o.d(t,"Day",(function(){return f})),o.d(t,"Week",(function(){return O})),o.d(t,"Month",(function(){return j})),o.d(t,"Year",(function(){return S})),o.d(t,"Range",(function(){return k})),o.d(t,"format",(function(){return d})),o.d(t,"getToday",(function(){return u})),o.d(t,"parseDate",(function(){return m})),o.d(t,"todayIsInRange",(function(){return p})),o.d(t,"getWeekNumber",(function(){return h})),o.d(t,"datesAreInTheSamePeriod",(function(){return g})),o.d(t,"NumberFormatter",(function(){return ae})),o.d(t,"formatNumber",(function(){return me})),o.d(t,"formatPercent",(function(){return pe})),o.d(t,"formatCurrency",(function(){return he})),o.d(t,"formatEvolution",(function(){return ge})),o.d(t,"calculateAndFormatEvolution",(function(){return be})),o.d(t,"DropdownMenu",(function(){return Ye})),o.d(t,"FocusAnywhereButHere",(function(){return et})),o.d(t,"FocusIf",(function(){return ot})),o.d(t,"Tooltips",(function(){return rt})),o.d(t,"MatomoDialog",(function(){return dt})),o.d(t,"ExpandOnClick",(function(){return Ot})),o.d(t,"ExpandOnHover",(function(){return kt})),o.d(t,"ShowSensitiveData",(function(){return Et})),o.d(t,"DropdownButton",(function(){return Tt})),o.d(t,"SelectOnFocus",(function(){return It})),o.d(t,"CopyToClipboard",(function(){return Lt})),o.d(t,"SideNav",(function(){return Rt})),o.d(t,"EnrichedHeadline",(function(){return to})),o.d(t,"ContentBlock",(function(){return po})),o.d(t,"Comparisons",(function(){return Io})),o.d(t,"ComparisonsStore",(function(){return xo})),o.d(t,"ComparisonsStoreInstance",(function(){return No})),o.d(t,"MenuItemsDropdown",(function(){return Go})),o.d(t,"DatePicker",(function(){return Zo})),o.d(t,"DateRangePicker",(function(){return ri})),o.d(t,"PeriodDatePicker",(function(){return ui})),o.d(t,"Notification",(function(){return ji})),o.d(t,"NotificationGroup",(function(){return xi})),o.d(t,"NotificationsStore",(function(){return Ti})),o.d(t,"ShowHelpLink",(function(){return Li})),o.d(t,"SitesStore",(function(){return _i})),o.d(t,"SiteSelector",(function(){return ln})),o.d(t,"QuickAccess",(function(){return kn})),o.d(t,"FieldArray",(function(){return Nn})),o.d(t,"MultiPairField",(function(){return Hn})),o.d(t,"PeriodSelector",(function(){return tr})),o.d(t,"ReportingMenu",(function(){return Lr})),o.d(t,"ReportingMenuStore",(function(){return Vr})),o.d(t,"ReportingPagesStore",(function(){return Sr})),o.d(t,"ReportMetadataStore",(function(){return _r})),o.d(t,"WidgetsStore",(function(){return Ir})),o.d(t,"WidgetLoader",(function(){return Xr})),o.d(t,"WidgetContainer",(function(){return is})),o.d(t,"WidgetByDimensionContainer",(function(){return ps})),o.d(t,"Widget",(function(){return ys})),o.d(t,"ReportingPage",(function(){return Bs})),o.d(t,"ReportExport",(function(){return ll})),o.d(t,"Sparkline",(function(){return ml})),o.d(t,"Progressbar",(function(){return vl})),o.d(t,"ContentIntro",(function(){return Ol})),o.d(t,"ContentTable",(function(){return yl})),o.d(t,"AjaxForm",(function(){return kl})),o.d(t,"Passthrough",(function(){return Pl})),o.d(t,"DataTableActions",(function(){return Pc})),o.d(t,"VersionInfoHeaderMessage",(function(){return Hc})),o.d(t,"MobileLeftMenu",(function(){return Qc})),o.d(t,"scrollToAnchorInUrl",(function(){return nd})),o.d(t,"SearchFiltersPersistenceStore",(function(){return Qr})),o.d(t,"AutoClearPassword",(function(){return sd})),o.d(t,"PasswordStrength",(function(){return ud})),o.d(t,"EntityDuplicatorModal",(function(){return xd})),o.d(t,"EntityDuplicatorAction",(function(){return Md})),o.d(t,"EntityDuplicatorStore",(function(){return Ad})),o.d(t,"BaseDuplicatorAdapter",(function(){return Ld})),"undefined"!==typeof window){var i=window.document.currentScript,n=i&&i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);n&&(o.p=n[1])}o("2342");
+ */window.hasBlockedContent=!1},"8bbf":function(t,o){t.exports=e},fae3:function(e,t,o){"use strict";if(o.r(t),o.d(t,"createVueApp",(function(){return fe})),o.d(t,"importPluginUmd",(function(){return we})),o.d(t,"useExternalPluginComponent",(function(){return Se})),o.d(t,"DirectiveUtilities",(function(){return ke})),o.d(t,"debounce",(function(){return Ee})),o.d(t,"clone",(function(){return Pe})),o.d(t,"VueEntryContainer",(function(){return Ne})),o.d(t,"ActivityIndicator",(function(){return qe})),o.d(t,"MatomoLoader",(function(){return $e})),o.d(t,"translate",(function(){return a})),o.d(t,"translateOrDefault",(function(){return r})),o.d(t,"externalRawLink",(function(){return de})),o.d(t,"externalLink",(function(){return ue})),o.d(t,"Alert",(function(){return Ge})),o.d(t,"AjaxHelper",(function(){return te})),o.d(t,"setCookie",(function(){return q})),o.d(t,"getCookie",(function(){return W})),o.d(t,"deleteCookie",(function(){return z})),o.d(t,"MatomoUrl",(function(){return U})),o.d(t,"Matomo",(function(){return M})),o.d(t,"Periods",(function(){return c})),o.d(t,"Day",(function(){return f})),o.d(t,"Week",(function(){return O})),o.d(t,"Month",(function(){return j})),o.d(t,"Year",(function(){return S})),o.d(t,"Range",(function(){return k})),o.d(t,"format",(function(){return d})),o.d(t,"getToday",(function(){return u})),o.d(t,"parseDate",(function(){return p})),o.d(t,"todayIsInRange",(function(){return m})),o.d(t,"getWeekNumber",(function(){return h})),o.d(t,"datesAreInTheSamePeriod",(function(){return g})),o.d(t,"NumberFormatter",(function(){return ae})),o.d(t,"formatNumber",(function(){return pe})),o.d(t,"formatPercent",(function(){return me})),o.d(t,"formatCurrency",(function(){return he})),o.d(t,"formatEvolution",(function(){return ge})),o.d(t,"calculateAndFormatEvolution",(function(){return be})),o.d(t,"DropdownMenu",(function(){return Ke})),o.d(t,"FocusAnywhereButHere",(function(){return et})),o.d(t,"FocusIf",(function(){return ot})),o.d(t,"Tooltips",(function(){return rt})),o.d(t,"MatomoDialog",(function(){return dt})),o.d(t,"ExpandOnClick",(function(){return Ot})),o.d(t,"ExpandOnHover",(function(){return kt})),o.d(t,"ShowSensitiveData",(function(){return Et})),o.d(t,"DropdownButton",(function(){return Tt})),o.d(t,"SelectOnFocus",(function(){return It})),o.d(t,"CopyToClipboard",(function(){return Lt})),o.d(t,"SideNav",(function(){return Rt})),o.d(t,"EnrichedHeadline",(function(){return to})),o.d(t,"ContentBlock",(function(){return mo})),o.d(t,"Comparisons",(function(){return Io})),o.d(t,"ComparisonsStore",(function(){return xo})),o.d(t,"ComparisonsStoreInstance",(function(){return No})),o.d(t,"MenuItemsDropdown",(function(){return Go})),o.d(t,"DatePicker",(function(){return Zo})),o.d(t,"DateRangePicker",(function(){return li})),o.d(t,"PeriodDatePicker",(function(){return Oi})),o.d(t,"Notification",(function(){return Ti})),o.d(t,"NotificationGroup",(function(){return Ai})),o.d(t,"NotificationsStore",(function(){return Li})),o.d(t,"ShowHelpLink",(function(){return Wi})),o.d(t,"SitesStore",(function(){return Ki})),o.d(t,"SiteSelector",(function(){return bn})),o.d(t,"QuickAccess",(function(){return Bn})),o.d(t,"FieldArray",(function(){return _n})),o.d(t,"MultiPairField",(function(){return Yn})),o.d(t,"PeriodSelector",(function(){return yr})),o.d(t,"ReportingMenu",(function(){return os})),o.d(t,"ReportingMenuStore",(function(){return Yr})),o.d(t,"ReportingPagesStore",(function(){return $r})),o.d(t,"ReportMetadataStore",(function(){return as})),o.d(t,"WidgetsStore",(function(){return Zr})),o.d(t,"WidgetLoader",(function(){return fs})),o.d(t,"WidgetContainer",(function(){return ws})),o.d(t,"WidgetByDimensionContainer",(function(){return Ns})),o.d(t,"Widget",(function(){return As})),o.d(t,"ReportingPage",(function(){return Xs})),o.d(t,"ReportExport",(function(){return El})),o.d(t,"Sparkline",(function(){return xl})),o.d(t,"Progressbar",(function(){return Ll})),o.d(t,"ContentIntro",(function(){return Rl})),o.d(t,"ContentTable",(function(){return Al})),o.d(t,"AjaxForm",(function(){return ql})),o.d(t,"Passthrough",(function(){return Gl})),o.d(t,"DataTableActions",(function(){return Gc})),o.d(t,"VersionInfoHeaderMessage",(function(){return rd})),o.d(t,"MobileLeftMenu",(function(){return gd})),o.d(t,"scrollToAnchorInUrl",(function(){return Sd})),o.d(t,"SearchFiltersPersistenceStore",(function(){return gs})),o.d(t,"AutoClearPassword",(function(){return Dd})),o.d(t,"PasswordStrength",(function(){return Vd})),o.d(t,"EntityDuplicatorModal",(function(){return Qd})),o.d(t,"EntityDuplicatorAction",(function(){return eu})),o.d(t,"EntityDuplicatorStore",(function(){return nu})),o.d(t,"BaseDuplicatorAdapter",(function(){return ou})),"undefined"!==typeof window){var i=window.document.currentScript,n=i&&i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);n&&(o.p=n[1])}o("2342");
/*!
* Matomo - free/libre analytics platform
*
@@ -23,43 +23,43 @@ function a(e,...t){if(!e)return"";let o=t;return 1===t.length&&t[0]&&Array.isArr
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function d(e){return $.datepicker.formatDate("yy-mm-dd",e)}function u(){const 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 m(e){if(e instanceof Date)return e;const t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return u();if("yesterday"===t||"yesterdaySameTime"===t){const e=u();return e.setDate(e.getDate()-1),e}if(t.match(/last[ -]?week/i)){const e=u();return e.setDate(e.getDate()-7),e}if(t.match(/last[ -]?month/i)){const e=u();return e.setDate(1),e.setMonth(e.getMonth()-1),e}if(t.match(/last[ -]?year/i)){const e=u();return e.setFullYear(e.getFullYear()-1),e}return $.datepicker.parseDate("yy-mm-dd",t)}function p(e){return 2===e.length&&(u()>=e[0]&&u()<=e[1])}function h(e){const t=new Date(e.valueOf()),o=(e.getDay()+6)%7;t.setDate(t.getDate()-o+3);const i=t.valueOf();if(t.setMonth(0,1),4!==t.getDay()){const e=(4-t.getDay()+7)%7;t.setMonth(0,1+e)}return 1+Math.ceil((i-t.valueOf())/6048e5)}function g(e,t,o){const i=e.getFullYear(),n=e.getMonth(),a=e.getDate(),r=h(e),s=t.getFullYear(),l=t.getMonth(),c=t.getDate(),d=h(t);switch(o){case"day":return i===s&&n===l&&a===c;case"week":return i===s&&r===d;case"month":return i===s&&n===l;case"year":return i===s;default:return!1}}function b(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */function d(e){return $.datepicker.formatDate("yy-mm-dd",e)}function u(){const 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 p(e){if(e instanceof Date)return e;const t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return u();if("yesterday"===t||"yesterdaySameTime"===t){const e=u();return e.setDate(e.getDate()-1),e}if(t.match(/last[ -]?week/i)){const e=u();return e.setDate(e.getDate()-7),e}if(t.match(/last[ -]?month/i)){const e=u();return e.setDate(1),e.setMonth(e.getMonth()-1),e}if(t.match(/last[ -]?year/i)){const e=u();return e.setFullYear(e.getFullYear()-1),e}return $.datepicker.parseDate("yy-mm-dd",t)}function m(e){return 2===e.length&&(u()>=e[0]&&u()<=e[1])}function h(e){const t=new Date(e.valueOf()),o=(e.getDay()+6)%7;t.setDate(t.getDate()-o+3);const i=t.valueOf();if(t.setMonth(0,1),4!==t.getDay()){const e=(4-t.getDay()+7)%7;t.setMonth(0,1+e)}return 1+Math.ceil((i-t.valueOf())/6048e5)}function g(e,t,o){const i=e.getFullYear(),n=e.getMonth(),a=e.getDate(),r=h(e),s=t.getFullYear(),l=t.getMonth(),c=t.getDate(),d=h(t);switch(o){case"day":return i===s&&n===l&&a===c;case"week":return i===s&&r===d;case"month":return i===s&&n===l;case"year":return i===s;default:return!1}}function b(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */class f{constructor(e){b(this,"dateInPeriod",void 0),this.dateInPeriod=e}static parse(e){return new f(m(e))}static getDisplayText(){return a("Intl_PeriodDay")}getPrettyString(){return d(this.dateInPeriod)}getDateRange(){return[new Date(this.dateInPeriod.getTime()),new Date(this.dateInPeriod.getTime())]}containsToday(){return p(this.getDateRange())}}function v(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */class f{constructor(e){b(this,"dateInPeriod",void 0),this.dateInPeriod=e}static parse(e){return new f(p(e))}static getDisplayText(){return a("Intl_PeriodDay")}getPrettyString(){return d(this.dateInPeriod)}getDateRange(){return[new Date(this.dateInPeriod.getTime()),new Date(this.dateInPeriod.getTime())]}containsToday(){return m(this.getDateRange())}}function v(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */c.addCustomPeriod("day",f);class O{constructor(e){v(this,"dateInPeriod",void 0),this.dateInPeriod=e}static parse(e){return new O(m(e))}static getDisplayText(){return a("Intl_PeriodWeek")}getPrettyString(){const e=this.getDateRange(),t=d(e[0]),o=d(e[1]);return a("General_DateRangeFromTo",[t,o])}getDateRange(){const e=(this.dateInPeriod.getDay()+6)%7,t=new Date(this.dateInPeriod.getTime());t.setDate(this.dateInPeriod.getDate()-e);const o=new Date(t.getTime());return o.setDate(t.getDate()+6),[t,o]}containsToday(){return p(this.getDateRange())}}function y(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */c.addCustomPeriod("day",f);class O{constructor(e){v(this,"dateInPeriod",void 0),this.dateInPeriod=e}static parse(e){return new O(p(e))}static getDisplayText(){return a("Intl_PeriodWeek")}getPrettyString(){const e=this.getDateRange(),t=d(e[0]),o=d(e[1]);return a("General_DateRangeFromTo",[t,o])}getDateRange(){const e=(this.dateInPeriod.getDay()+6)%7,t=new Date(this.dateInPeriod.getTime());t.setDate(this.dateInPeriod.getDate()-e);const o=new Date(t.getTime());return o.setDate(t.getDate()+6),[t,o]}containsToday(){return m(this.getDateRange())}}function y(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */c.addCustomPeriod("week",O);class j{constructor(e){y(this,"dateInPeriod",void 0),this.dateInPeriod=e}static parse(e){return new j(m(e))}static getDisplayText(){return a("Intl_PeriodMonth")}getPrettyString(){const e=a("Intl_Month_Long_StandAlone_"+(this.dateInPeriod.getMonth()+1));return`${e} ${this.dateInPeriod.getFullYear()}`}getDateRange(){const e=new Date(this.dateInPeriod.getTime());e.setDate(1);const t=new Date(this.dateInPeriod.getTime());return t.setDate(1),t.setMonth(t.getMonth()+1),t.setDate(0),[e,t]}containsToday(){return p(this.getDateRange())}}function w(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */c.addCustomPeriod("week",O);class j{constructor(e){y(this,"dateInPeriod",void 0),this.dateInPeriod=e}static parse(e){return new j(p(e))}static getDisplayText(){return a("Intl_PeriodMonth")}getPrettyString(){const e=a("Intl_Month_Long_StandAlone_"+(this.dateInPeriod.getMonth()+1));return`${e} ${this.dateInPeriod.getFullYear()}`}getDateRange(){const e=new Date(this.dateInPeriod.getTime());e.setDate(1);const t=new Date(this.dateInPeriod.getTime());return t.setDate(1),t.setMonth(t.getMonth()+1),t.setDate(0),[e,t]}containsToday(){return m(this.getDateRange())}}function w(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */c.addCustomPeriod("month",j);class S{constructor(e){w(this,"dateInPeriod",void 0),this.dateInPeriod=e}static parse(e){return new S(m(e))}static getDisplayText(){return a("Intl_PeriodYear")}getPrettyString(){return this.dateInPeriod.getFullYear().toString()}getDateRange(){const e=new Date(this.dateInPeriod.getTime());e.setMonth(0),e.setDate(1);const t=new Date(this.dateInPeriod.getTime());return t.setMonth(12),t.setDate(0),[e,t]}containsToday(){return p(this.getDateRange())}}function C(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */c.addCustomPeriod("month",j);class S{constructor(e){w(this,"dateInPeriod",void 0),this.dateInPeriod=e}static parse(e){return new S(p(e))}static getDisplayText(){return a("Intl_PeriodYear")}getPrettyString(){return this.dateInPeriod.getFullYear().toString()}getDateRange(){const e=new Date(this.dateInPeriod.getTime());e.setMonth(0),e.setDate(1);const t=new Date(this.dateInPeriod.getTime());return t.setMonth(12),t.setDate(0),[e,t]}containsToday(){return m(this.getDateRange())}}function C(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */c.addCustomPeriod("year",S);class k{constructor(e,t,o){C(this,"startDate",void 0),C(this,"endDate",void 0),C(this,"childPeriodType",void 0),this.startDate=e,this.endDate=t,this.childPeriodType=o}static getLastNRange(e,t,o){const i=Math.max(parseInt(t.toString(),10)-1,0);if(Number.isNaN(i))throw new Error("Invalid range strAmount");let n=o?m(o):u(),a=new Date(n.getTime());if("day"===e)a.setDate(a.getDate()-i);else if("week"===e)a.setDate(a.getDate()-7*i);else if("month"===e)a.setDate(1),a.setMonth(a.getMonth()-i);else{if("year"!==e)throw new Error(`Unknown period type '${e}'.`);a.setFullYear(a.getFullYear()-i)}if("day"!==e){const t=c.periods[e].parse(a),o=c.periods[e].parse(n);[a]=t.getDateRange(),[,n]=o.getDateRange()}const r=new Date(1991,7,6);if(a.getTime()-r.getTime()<0)switch(e){case"year":a=new Date(1992,0,1);break;case"month":a=new Date(1991,8,1);break;case"week":a=new Date(1991,8,12);break;case"day":default:a=r;break}return new k(a,n,e)}static getLastNRangeChild(e,t,o){const i=t?m(t):u();let n=new Date(i.getTime()),a=new Date(i.getTime());if("day"===e)n.setDate(n.getDate()-o),a.setDate(a.getDate()-o);else if("week"===e)n.setDate(n.getDate()-7*o),a.setDate(a.getDate()-7*o);else if("month"===e)n.setDate(1),n.setMonth(n.getMonth()-o),a.setDate(1),a.setMonth(a.getMonth()-o);else{if("year"!==e)throw new Error(`Unknown period type '${e}'.`);n.setFullYear(n.getFullYear()-o),a.setFullYear(a.getFullYear()-o)}if("day"!==e){const t=c.periods[e].parse(n),o=c.periods[e].parse(a);[n]=t.getDateRange(),[,a]=o.getDateRange()}const r=new Date(1991,7,6);if(n.getTime()-r.getTime()<0)switch(e){case"year":n=new Date(1992,0,1);break;case"month":n=new Date(1991,8,1);break;case"week":n=new Date(1991,8,12);break;case"day":default:n=r;break}return new k(n,a,e)}static parse(e,t="day"){if(/^previous/.test(e)){const o=k.getLastNRange(t,"2").startDate;return k.getLastNRange(t,e.substring(8),o)}if(/^last/.test(e))return k.getLastNRange(t,e.substring(4));const o=decodeURIComponent(e).split(",");return new k(m(o[0]),m(o[1]),t)}static getDisplayText(){return a("General_DateRangeInPeriodList")}getPrettyString(){const e=d(this.startDate),t=d(this.endDate);return a("General_DateRangeFromTo",[e,t])}getDateRange(){return[this.startDate,this.endDate]}containsToday(){return p(this.getDateRange())}getDayCount(){return Math.ceil((this.endDate.getTime()-this.startDate.getTime())/864e5)+1}}c.addCustomPeriod("range",k);var D=o("8bbf");
+ */c.addCustomPeriod("year",S);class k{constructor(e,t,o){C(this,"startDate",void 0),C(this,"endDate",void 0),C(this,"childPeriodType",void 0),this.startDate=e,this.endDate=t,this.childPeriodType=o}static getLastNRange(e,t,o){const i=Math.max(parseInt(t.toString(),10)-1,0);if(Number.isNaN(i))throw new Error("Invalid range strAmount");let n=o?p(o):u(),a=new Date(n.getTime());if("day"===e)a.setDate(a.getDate()-i);else if("week"===e)a.setDate(a.getDate()-7*i);else if("month"===e)a.setDate(1),a.setMonth(a.getMonth()-i);else{if("year"!==e)throw new Error(`Unknown period type '${e}'.`);a.setFullYear(a.getFullYear()-i)}if("day"!==e){const t=c.periods[e].parse(a),o=c.periods[e].parse(n);[a]=t.getDateRange(),[,n]=o.getDateRange()}const r=new Date(1991,7,6);if(a.getTime()-r.getTime()<0)switch(e){case"year":a=new Date(1992,0,1);break;case"month":a=new Date(1991,8,1);break;case"week":a=new Date(1991,8,12);break;case"day":default:a=r;break}return new k(a,n,e)}static getLastNRangeChild(e,t,o){const i=t?p(t):u();let n=new Date(i.getTime()),a=new Date(i.getTime());if("day"===e)n.setDate(n.getDate()-o),a.setDate(a.getDate()-o);else if("week"===e)n.setDate(n.getDate()-7*o),a.setDate(a.getDate()-7*o);else if("month"===e)n.setDate(1),n.setMonth(n.getMonth()-o),a.setDate(1),a.setMonth(a.getMonth()-o);else{if("year"!==e)throw new Error(`Unknown period type '${e}'.`);n.setFullYear(n.getFullYear()-o),a.setFullYear(a.getFullYear()-o)}if("day"!==e){const t=c.periods[e].parse(n),o=c.periods[e].parse(a);[n]=t.getDateRange(),[,a]=o.getDateRange()}const r=new Date(1991,7,6);if(n.getTime()-r.getTime()<0)switch(e){case"year":n=new Date(1992,0,1);break;case"month":n=new Date(1991,8,1);break;case"week":n=new Date(1991,8,12);break;case"day":default:n=r;break}return new k(n,a,e)}static parse(e,t="day"){if(/^previous/.test(e)){const o=k.getLastNRange(t,"2").startDate;return k.getLastNRange(t,e.substring(8),o)}if(/^last/.test(e))return k.getLastNRange(t,e.substring(4));const o=decodeURIComponent(e).split(",");return new k(p(o[0]),p(o[1]),t)}static getDisplayText(){return a("General_DateRangeInPeriodList")}getPrettyString(){const e=d(this.startDate),t=d(this.endDate);return a("General_DateRangeFromTo",[e,t])}getDateRange(){return[this.startDate,this.endDate]}containsToday(){return m(this.getDateRange())}getDayCount(){return Math.ceil((this.endDate.getTime()-this.startDate.getTime())/864e5)+1}}c.addCustomPeriod("range",k);var D=o("8bbf");
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const{piwik:E,broadcast:P,piwikHelper:T}=window;function V(e){if("string"!==typeof e)return;const t=e.trim();return t&&/^[A-Za-z0-9_]+$/.test(t)?t:void 0}function x(){const{CoreHome:e}=window;return null===e||void 0===e?void 0:e.ReportingMenuStore}function N(){const{CoreHome:e}=window;return null===e||void 0===e?void 0:e.ComparisonStoreInstance}function B(e){var t;if("string"!==typeof e)return;const o=e.trim(),i=N();if(i){const t=i.getSegmentComparisons();if(!o&&t.length)return t[0].title;const n=t.find(t=>t.params.segment===e);if(n)return n.title}if(!o)return a("SegmentEditor_DefaultAllVisits");const n=document.querySelector(".segmentEditorPanel .segmentationTitle"),r=null===n||void 0===n||null===(t=n.textContent)||void 0===t?void 0:t.trim();return r||a("SegmentEditor_CustomSegment")}E.helper=T,E.broadcast=P,E.updateTitle=async function(e,t,o,i,n){let r="",s="",l="";""!==t&&""!==e&&(l=c.parse(t,e).getPrettyString());const d=a("CoreHome_WebAnalyticsReports")+" - Matomo",u=x();if(u&&o&&i){var m,p,h,g;let e=u.findSubcategory(o,i);e.category||(await u.fetchMenuItems(),e=u.findSubcategory(o,i)),r=null!==(m=null===(p=e)||void 0===p||null===(p=p.category)||void 0===p?void 0:p.name)&&void 0!==m?m:"",s=null!==(h=null===(g=e)||void 0===g||null===(g=g.subcategory)||void 0===g?void 0:g.name)&&void 0!==h?h:"",r===s&&(s=""),r=T.htmlEntities(r),s=T.htmlEntities(s);const t=r?`${r} ${s?"> "+s:""}`:"",a=B(n),c=a?T.htmlEntities(a):"";document.title=[E.siteName,l,t,c,d].filter(Boolean).join(" - ")}},E.hasUserCapability=function(e){return Array.isArray(E.userCapabilities)&&-1!==E.userCapabilities.indexOf(e)},E.on=function(e,t){function o(e){t(...e.detail)}t.wrapper=o,window.addEventListener(e,o)},E.off=function(e,t){t.wrapper&&window.removeEventListener(e,t.wrapper)},E.postEvent=function(e,...t){const o=new CustomEvent(e,{detail:t});window.dispatchEvent(o)},E.getLoginModule=function(){const e=V(E.loginModule);if(e)return e;const t=V(window.loginModule);return t||"Login"};const I=E;var M=I;
+ */const{piwik:E,broadcast:P,piwikHelper:T}=window;function V(e){if("string"!==typeof e)return;const t=e.trim();return t&&/^[A-Za-z0-9_]+$/.test(t)?t:void 0}function x(){const{CoreHome:e}=window;return null===e||void 0===e?void 0:e.ReportingMenuStore}function N(){const{CoreHome:e}=window;return null===e||void 0===e?void 0:e.ComparisonStoreInstance}function B(e){var t;if("string"!==typeof e)return;const o=e.trim(),i=N();if(i){const t=i.getSegmentComparisons();if(!o&&t.length)return t[0].title;const n=t.find(t=>t.params.segment===e);if(n)return n.title}if(!o)return a("SegmentEditor_DefaultAllVisits");const n=document.querySelector(".segmentEditorPanel .segmentationTitle"),r=null===n||void 0===n||null===(t=n.textContent)||void 0===t?void 0:t.trim();return r||a("SegmentEditor_CustomSegment")}E.helper=T,E.broadcast=P,E.updateTitle=async function(e,t,o,i,n){let r="",s="",l="";""!==t&&""!==e&&(l=c.parse(t,e).getPrettyString());const d=a("CoreHome_WebAnalyticsReports")+" - Matomo",u=x();if(u&&o&&i){var p,m,h,g;let e=u.findSubcategory(o,i);e.category||(await u.fetchMenuItems(),e=u.findSubcategory(o,i)),r=null!==(p=null===(m=e)||void 0===m||null===(m=m.category)||void 0===m?void 0:m.name)&&void 0!==p?p:"",s=null!==(h=null===(g=e)||void 0===g||null===(g=g.subcategory)||void 0===g?void 0:g.name)&&void 0!==h?h:"",r===s&&(s=""),r=T.htmlEntities(r),s=T.htmlEntities(s);const t=r?`${r} ${s?"> "+s:""}`:"",a=B(n),c=a?T.htmlEntities(a):"";document.title=[E.siteName,l,t,c,d].filter(Boolean).join(" - ")}},E.hasUserCapability=function(e){return Array.isArray(E.userCapabilities)&&-1!==E.userCapabilities.indexOf(e)},E.on=function(e,t){function o(e){t(...e.detail)}t.wrapper=o,window.addEventListener(e,o)},E.off=function(e,t){t.wrapper&&window.removeEventListener(e,t.wrapper)},E.postEvent=function(e,...t){const o=new CustomEvent(e,{detail:t});window.dispatchEvent(o)},E.getLoginModule=function(){const e=V(E.loginModule);if(e)return e;const t=V(window.loginModule);return t||"Login"};const I=E;var M=I;
/*!
* Matomo - free/libre analytics platform
*
@@ -77,13 +77,13 @@ function a(e,...t){if(!e)return"";let o=t;return 1===t.length&&t[0]&&Array.isArr
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */L.updatePeriodParamsFromUrl=H.updatePeriodParamsFromUrl.bind(H);const{$:Y}=window;function K(e,t){"abort"!==t&&e&&0!==e.status&&("undefined"!==typeof Piwik_Popover?Piwik_Popover.isOpen()&&e&&500===e.status?Y(document.body).html(piwikHelper.escape(e.responseText)):Y("#loadingError").show():console.log("Request failed: "+e.responseText))}function Q(e){return Object.prototype.hasOwnProperty.call(e,"segment")&&"undefined"!==typeof e.segment}window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(let e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(...e){return this.active+=e.length,this.clean(),Array.prototype.push.call(this,...e)},window.globalAjaxQueue.abort=function(){this.forEach(e=>e&&e.abort&&e.abort()),this.splice(0,this.length),this.active=0};class J extends Error{}class X extends Error{constructor(e,t,o){super("Chunked bulk request failed."),G(this,"xhr",void 0),G(this,"status",void 0),G(this,"errorThrown",void 0),this.xhr=e,this.status=t,this.errorThrown=o}}class Z extends Error{constructor(){super("Chunked bulk request was aborted.")}}class ee extends Error{constructor(){super("Chunked bulk request timed out due to session expiration.")}}class te{static fetch(e,t={}){if(Array.isArray(e)&&t.returnResponseObject)throw new Error(this.UNSUPPORTED_BULK_RESPONSE_OBJECT_ERROR);const o=new te;if(t.withTokenInUrl&&o.withTokenInUrl(),t.errorElement&&o.setErrorElement(t.errorElement),t.redirectOnSuccess&&o.redirectOnSuccess(!0!==t.redirectOnSuccess?t.redirectOnSuccess:void 0),o.setFormat(t.format||"json"),Array.isArray(e))o.setBulkRequests(...e);else{Object.keys(e).forEach(e=>{if(/password/i.test(e))throw new Error(`Password parameters are not allowed to be sent as GET parameter. Please send ${e} as POST parameter instead.`)});const i=Q(e);let n={};if(i){let t=null;null!==e.segment&&(t=encodeURIComponent(e.segment)),n={segment:t}}o.addParams(Object.assign(Object.assign({module:"API",format:t.format||"json"},e),n),"get")}t.postParams&&o.addParams(t.postParams,"post"),t.headers&&(o.headers=Object.assign(Object.assign({},o.headers),t.headers));let i=!0;return"undefined"===typeof t.createErrorNotification||t.createErrorNotification||(o.useCallbackInCaseOfError(),o.setErrorCallback(null),i=!1),t.abortController&&(o.abortController=t.abortController),t.returnResponseObject&&(o.resolveWithHelper=!0),!1===t.abortable&&(o.abortable=!1),o.send().then(e=>{const t=e instanceof te?e.requestHandle.responseJSON:e,i="API.getBulkRequest"===o.postParams.method&&Array.isArray(t)?t:[t],n=i.filter(e=>"error"===e.result).map(e=>e.message);if(n.length)throw new J(n.filter(e=>e.length).join("\n"));return e}).catch(e=>{if(i||e instanceof J)throw e;let t="Something went wrong";e instanceof Z&&(t="Request was possibly aborted"),e instanceof ee&&(t="Session timed out");const o="object"===typeof e&&null!==e&&"status"in e?e.status:null;throw 504===o&&(t="Request was possibly aborted"),429===o&&(t="Rate Limit was exceed"),new Error(t)})}static getBulkRequestLimit(){const e=parseInt(""+M.apiBulkRequestLimit,10);return Number.isNaN(e)?-1:e}static splitIntoChunks(e,t){const o=[];for(let i=0;i"error"===e.result).map(e=>e.message).filter(e=>e.length).reduce((e,t)=>(e[t]=(e[t]||0)+1,e),{});if(n&&Object.keys(n).length&&!this.useRegularCallbackInCaseOfError){let e="";Object.keys(n).forEach(t=>{e.length&&(e+=" "),n[t]>1?e+=`${t} (${n[t]}x)`:e+=t});let t=null,o="toast";Y(this.errorElement).length&&e.length&&(Y(this.errorElement).show(),t=this.errorElement,o=null);const i=!document.querySelector("#login_form");if(e&&i){const i=window["require"]("piwik/UI"),n=new i.Notification;n.show(e,{placeat:t,context:"error",type:o,id:"ajaxHelper"}),n.scrollToNotification()}}else this.callback&&this.callback(e,t,o)}buildRequestUrl(e){const t=this.mixinDefaultGetParams(e);let o=this.getUrl;if("?"!==o[o.length-1]&&(o+="&"),Object.prototype.hasOwnProperty.call(t,"segment")){const e=t.segment;delete t.segment,null!==e&&"undefined"!==typeof e&&(o=`${o}segment=${e}&`)}return t.date&&(o=`${o}date=${decodeURIComponent(t.date.toString())}&`,delete t.date),o+=Y.param(t),o}buildChunkedBulkAjaxCall(e){const t=this.buildRequestUrl(Object.assign({},this.getParams)),o=e.map(e=>"string"===typeof e?e:Y.param(e));return Y.ajax({type:"POST",async:!0,url:t,dataType:this.format||"json",headers:this.headers?this.headers:void 0,data:this.mixinDefaultPostParams(Object.assign(Object.assign({},this.postParams),{},{urls:o})),timeout:null!==this.timeout?this.timeout:void 0})}getBulkRequestUrls(){return"API.getBulkRequest"===this.postParams.method&&Array.isArray(this.postParams.urls)?this.postParams.urls:null}shouldSendBulkRequestInChunks(){const e=this.getBulkRequestUrls();if(!e)return!1;const t=te.getBulkRequestLimit();return t>0&&e.length>t}shouldRejectBulkResponseObjectRequest(){return!!this.getBulkRequestUrls()&&this.resolveWithHelper}sendBulkRequestInChunks(){const e=this.getBulkRequestUrls();if(!e)return Promise.resolve([]);const t=te.getBulkRequestLimit();if(t<=0)return Promise.resolve([]);const o=this.abortController||new AbortController;this.abortController=o;let i=null,n=!1,a=!1;const r=()=>{!n&&this.abortable&&(window.globalAjaxQueue.active-=1,n=!0)},s=(e,t)=>{!a&&this.completeCallback&&(a=!0,this.completeCallback(e,t))},l={readyState:1,status:0,statusText:"",responseJSON:[],abort:()=>{o.abort()}},c=l;let d=c;this.requestHandle=c,this.abortable&&window.globalAjaxQueue.push(c),o.signal.addEventListener("abort",()=>{i&&i.abort()});const u=te.splitIntoChunks(e,t),m=[],p=e=>e>=u.length?Promise.resolve(m):(i=this.buildChunkedBulkAjaxCall(u[e]),new Promise((e,t)=>{i.then((t,o,i)=>{d=i,l.readyState=i.readyState,l.status=i.status,l.statusText=i.statusText||o,Array.isArray(t)?m.push(...t):m.push(t),e(m)}).fail((e,o,i)=>{l.readyState=e.readyState,l.status=e.status,l.statusText=e.statusText||o,t(new X(e,o,i))})}).then(()=>p(e+1)));return p(0).then(e=>(l.readyState=4,l.responseJSON=e,this.handleApiErrorResponseOrCallback(e,"success",d),r(),s(d,"success"),M.ajaxRequestFinished&&M.ajaxRequestFinished(),e)).catch(e=>{if(!(e instanceof X))throw e;const{xhr:t,status:o,errorThrown:i}=e;if(r(),this.errorCallback&&this.errorCallback.apply(this,[t,o,i]),s(t,o),429===t.status)throw console.log(`Warning: the '${Y.param(this.getParams)}' request was rate limited!`),t;if("abort"===t.statusText||0===t.status)throw new Z;const n=!document.querySelector("#login_form"),a="1"===t.getResponseHeader("X-Matomo-Session-Timed-Out");if(a&&n)throw q("matomo_session_timed_out","1",6e4),M.helper.refreshAfter(0),new ee;throw console.log(`Warning: the ${Y.param(this.getParams)} request failed!`),t})}static post(e,t={},o={}){return te.fetch(e,Object.assign(Object.assign({},o),{},{postParams:t}))}static oneAtATime(e,t){let o=null;return(i,n)=>(o&&o.abort(),o=new AbortController,te.post(Object.assign(Object.assign({},i),{},{method:e}),n,Object.assign(Object.assign({},t),{},{abortController:o})).finally(()=>{o=null}))}constructor(){G(this,"format","json"),G(this,"timeout",null),G(this,"callback",null),G(this,"useRegularCallbackInCaseOfError",!1),G(this,"errorCallback",void 0),G(this,"withToken",!1),G(this,"completeCallback",void 0),G(this,"getParams",{}),G(this,"getUrl","?"),G(this,"postParams",{}),G(this,"loadingElement",null),G(this,"errorElement","#ajaxError"),G(this,"headers",{"X-Requested-With":"XMLHttpRequest"}),G(this,"requestHandle",null),G(this,"abortController",null),G(this,"abortable",!0),G(this,"defaultParams",["idSite","period","date","segment"]),G(this,"resolveWithHelper",!1),this.errorCallback=K}addParams(e,t){const o="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,i=["compareSegments","comparePeriods","compareDates"];Object.keys(o).forEach(e=>{let n=o[e];(-1===i.indexOf(e)||n)&&("boolean"===typeof n&&(n=n?1:0),"get"===t.toLowerCase()?this.getParams[e]=n:"post"===t.toLowerCase()&&(this.postParams[e]=n))})}withTokenInUrl(){this.withToken=!0}setUrl(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}setBulkRequests(...e){const t=e.map(e=>"string"===typeof e?e:Y.param(e));this.addParams({module:"API",method:"API.getBulkRequest",urls:t,format:"json"},"post")}setTimeout(e){this.timeout=e}setCallback(e){this.callback=e}useCallbackInCaseOfError(){this.useRegularCallbackInCaseOfError=!0}redirectOnSuccess(e){this.setCallback(()=>{piwikHelper.redirect(e)})}setErrorCallback(e){this.errorCallback=e}setCompleteCallback(e){this.completeCallback=e}setFormat(e){this.format=e}setLoadingElement(e){this.loadingElement=e||"#ajaxLoadingDiv"}setErrorElement(e){e&&(this.errorElement=e)}useGETDefaultParameter(e){if(e&&this.defaultParams)for(let t=0;t{this.requestHandle&&this.requestHandle.abort()});const e=new Promise((e,t)=>{this.requestHandle.then(t=>{this.resolveWithHelper?e(this):e(t)}).fail(e=>{if(429===e.status)return console.log(`Warning: the '${Y.param(this.getParams)}' request was rate limited!`),void t(e);if("abort"===e.statusText||0===e.status)return;const o=!document.querySelector("#login_form"),i="1"===e.getResponseHeader("X-Matomo-Session-Timed-Out");if(i&&o)return q("matomo_session_timed_out","1",6e4),void M.helper.refreshAfter(0);console.log(`Warning: the ${Y.param(this.getParams)} request failed!`),t(e)})});return e}abort(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}buildAjaxCall(){const e=this,t=this.buildRequestUrl(this.getParams),o={type:"POST",async:!0,url:t,dataType:this.format||"json",complete:this.completeCallback,headers:this.headers?this.headers:void 0,error:function(...t){e.abortable&&(window.globalAjaxQueue.active-=1),e.errorCallback&&e.errorCallback.apply(this,t)},success:(t,o,i)=>{this.handleApiErrorResponseOrCallback(t,o,i),e.abortable&&(window.globalAjaxQueue.active-=1),M.ajaxRequestFinished&&M.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return Y.ajax(o)}isRequestToApiMethod(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}isWidgetizedRequest(){return"Widgetize"===broadcast.getValueFromUrl("module")}getDefaultPostParams(){return this.withToken||this.isRequestToApiMethod()||M.shouldPropagateTokenAuth?{token_auth:M.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}mixinDefaultPostParams(e){const t=this.getDefaultPostParams(),o=Object.assign(Object.assign({},t),e);return o}mixinDefaultGetParams(e){const t=U.getSearchParam("segment"),o={idSite:M.idSite?M.idSite.toString():broadcast.getValueFromUrl("idSite"),period:M.period||broadcast.getValueFromUrl("period"),segment:t},i=e,n=Q(i)||Q(this.postParams);return i.token_auth&&(i.token_auth=null,delete i.token_auth),Object.keys(o).forEach(e=>{!this.useGETDefaultParameter(e)||"segment"===e&&n||null!==i[e]&&"undefined"!==typeof i[e]&&""!==i[e]||null!==this.postParams[e]&&"undefined"!==typeof this.postParams[e]&&""!==this.postParams[e]||!o[e]||(i[e]=o[e])}),!this.useGETDefaultParameter("date")||i.date||this.postParams.date||(i.date=M.currentDateString),i}getRequestHandle(){return this.requestHandle}}function oe(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */L.updatePeriodParamsFromUrl=H.updatePeriodParamsFromUrl.bind(H);const{$:K}=window;function Y(e,t){"abort"!==t&&e&&0!==e.status&&("undefined"!==typeof Piwik_Popover?Piwik_Popover.isOpen()&&e&&500===e.status?K(document.body).html(piwikHelper.escape(e.responseText)):K("#loadingError").show():console.log("Request failed: "+e.responseText))}function Q(e){return Object.prototype.hasOwnProperty.call(e,"segment")&&"undefined"!==typeof e.segment}window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(let e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(...e){return this.active+=e.length,this.clean(),Array.prototype.push.call(this,...e)},window.globalAjaxQueue.abort=function(){this.forEach(e=>e&&e.abort&&e.abort()),this.splice(0,this.length),this.active=0};class J extends Error{}class X extends Error{constructor(e,t,o){super("Chunked bulk request failed."),G(this,"xhr",void 0),G(this,"status",void 0),G(this,"errorThrown",void 0),this.xhr=e,this.status=t,this.errorThrown=o}}class Z extends Error{constructor(){super("Chunked bulk request was aborted.")}}class ee extends Error{constructor(){super("Chunked bulk request timed out due to session expiration.")}}class te{static fetch(e,t={}){if(Array.isArray(e)&&t.returnResponseObject)throw new Error(this.UNSUPPORTED_BULK_RESPONSE_OBJECT_ERROR);const o=new te;if(t.withTokenInUrl&&o.withTokenInUrl(),t.errorElement&&o.setErrorElement(t.errorElement),t.redirectOnSuccess&&o.redirectOnSuccess(!0!==t.redirectOnSuccess?t.redirectOnSuccess:void 0),o.setFormat(t.format||"json"),Array.isArray(e))o.setBulkRequests(...e);else{Object.keys(e).forEach(e=>{if(/password/i.test(e))throw new Error(`Password parameters are not allowed to be sent as GET parameter. Please send ${e} as POST parameter instead.`)});const i=Q(e);let n={};if(i){let t=null;null!==e.segment&&(t=encodeURIComponent(e.segment)),n={segment:t}}o.addParams(Object.assign(Object.assign({module:"API",format:t.format||"json"},e),n),"get")}t.postParams&&o.addParams(t.postParams,"post"),t.headers&&(o.headers=Object.assign(Object.assign({},o.headers),t.headers));let i=!0;return"undefined"===typeof t.createErrorNotification||t.createErrorNotification||(o.useCallbackInCaseOfError(),o.setErrorCallback(null),i=!1),t.abortController&&(o.abortController=t.abortController),t.returnResponseObject&&(o.resolveWithHelper=!0),!1===t.abortable&&(o.abortable=!1),o.send().then(e=>{const t=e instanceof te?e.requestHandle.responseJSON:e,i="API.getBulkRequest"===o.postParams.method&&Array.isArray(t)?t:[t],n=i.filter(e=>"error"===e.result).map(e=>e.message);if(n.length)throw new J(n.filter(e=>e.length).join("\n"));return e}).catch(e=>{if(i||e instanceof J)throw e;let t="Something went wrong";e instanceof Z&&(t="Request was possibly aborted"),e instanceof ee&&(t="Session timed out");const o="object"===typeof e&&null!==e&&"status"in e?e.status:null;throw 504===o&&(t="Request was possibly aborted"),429===o&&(t="Rate Limit was exceed"),new Error(t)})}static getBulkRequestLimit(){const e=parseInt(""+M.apiBulkRequestLimit,10);return Number.isNaN(e)?-1:e}static splitIntoChunks(e,t){const o=[];for(let i=0;i"error"===e.result).map(e=>e.message).filter(e=>e.length).reduce((e,t)=>(e[t]=(e[t]||0)+1,e),{});if(n&&Object.keys(n).length&&!this.useRegularCallbackInCaseOfError){let e="";Object.keys(n).forEach(t=>{e.length&&(e+=" "),n[t]>1?e+=`${t} (${n[t]}x)`:e+=t});let t=null,o="toast";K(this.errorElement).length&&e.length&&(K(this.errorElement).show(),t=this.errorElement,o=null);const i=!document.querySelector("#login_form");if(e&&i){const i=window["require"]("piwik/UI"),n=new i.Notification;n.show(e,{placeat:t,context:"error",type:o,id:"ajaxHelper"}),n.scrollToNotification()}}else this.callback&&this.callback(e,t,o)}buildRequestUrl(e){const t=this.mixinDefaultGetParams(e);let o=this.getUrl;if("?"!==o[o.length-1]&&(o+="&"),Object.prototype.hasOwnProperty.call(t,"segment")){const e=t.segment;delete t.segment,null!==e&&"undefined"!==typeof e&&(o=`${o}segment=${e}&`)}return t.date&&(o=`${o}date=${decodeURIComponent(t.date.toString())}&`,delete t.date),o+=K.param(t),o}buildChunkedBulkAjaxCall(e){const t=this.buildRequestUrl(Object.assign({},this.getParams)),o=e.map(e=>"string"===typeof e?e:K.param(e));return K.ajax({type:"POST",async:!0,url:t,dataType:this.format||"json",headers:this.headers?this.headers:void 0,data:this.mixinDefaultPostParams(Object.assign(Object.assign({},this.postParams),{},{urls:o})),timeout:null!==this.timeout?this.timeout:void 0})}getBulkRequestUrls(){return"API.getBulkRequest"===this.postParams.method&&Array.isArray(this.postParams.urls)?this.postParams.urls:null}shouldSendBulkRequestInChunks(){const e=this.getBulkRequestUrls();if(!e)return!1;const t=te.getBulkRequestLimit();return t>0&&e.length>t}shouldRejectBulkResponseObjectRequest(){return!!this.getBulkRequestUrls()&&this.resolveWithHelper}sendBulkRequestInChunks(){const e=this.getBulkRequestUrls();if(!e)return Promise.resolve([]);const t=te.getBulkRequestLimit();if(t<=0)return Promise.resolve([]);const o=this.abortController||new AbortController;this.abortController=o;let i=null,n=!1,a=!1;const r=()=>{!n&&this.abortable&&(window.globalAjaxQueue.active-=1,n=!0)},s=(e,t)=>{!a&&this.completeCallback&&(a=!0,this.completeCallback(e,t))},l={readyState:1,status:0,statusText:"",responseJSON:[],abort:()=>{o.abort()}},c=l;let d=c;this.requestHandle=c,this.abortable&&window.globalAjaxQueue.push(c),o.signal.addEventListener("abort",()=>{i&&i.abort()});const u=te.splitIntoChunks(e,t),p=[],m=e=>e>=u.length?Promise.resolve(p):(i=this.buildChunkedBulkAjaxCall(u[e]),new Promise((e,t)=>{i.then((t,o,i)=>{d=i,l.readyState=i.readyState,l.status=i.status,l.statusText=i.statusText||o,Array.isArray(t)?p.push(...t):p.push(t),e(p)}).fail((e,o,i)=>{l.readyState=e.readyState,l.status=e.status,l.statusText=e.statusText||o,t(new X(e,o,i))})}).then(()=>m(e+1)));return m(0).then(e=>(l.readyState=4,l.responseJSON=e,this.handleApiErrorResponseOrCallback(e,"success",d),r(),s(d,"success"),M.ajaxRequestFinished&&M.ajaxRequestFinished(),e)).catch(e=>{if(!(e instanceof X))throw e;const{xhr:t,status:o,errorThrown:i}=e;if(r(),this.errorCallback&&this.errorCallback.apply(this,[t,o,i]),s(t,o),429===t.status)throw console.log(`Warning: the '${K.param(this.getParams)}' request was rate limited!`),t;if("abort"===t.statusText||0===t.status)throw new Z;const n=!document.querySelector("#login_form"),a="1"===t.getResponseHeader("X-Matomo-Session-Timed-Out");if(a&&n)throw q("matomo_session_timed_out","1",6e4),M.helper.refreshAfter(0),new ee;throw console.log(`Warning: the ${K.param(this.getParams)} request failed!`),t})}static post(e,t={},o={}){return te.fetch(e,Object.assign(Object.assign({},o),{},{postParams:t}))}static oneAtATime(e,t){let o=null;return(i,n)=>(o&&o.abort(),o=new AbortController,te.post(Object.assign(Object.assign({},i),{},{method:e}),n,Object.assign(Object.assign({},t),{},{abortController:o})).finally(()=>{o=null}))}constructor(){G(this,"format","json"),G(this,"timeout",null),G(this,"callback",null),G(this,"useRegularCallbackInCaseOfError",!1),G(this,"errorCallback",void 0),G(this,"withToken",!1),G(this,"completeCallback",void 0),G(this,"getParams",{}),G(this,"getUrl","?"),G(this,"postParams",{}),G(this,"loadingElement",null),G(this,"errorElement","#ajaxError"),G(this,"headers",{"X-Requested-With":"XMLHttpRequest"}),G(this,"requestHandle",null),G(this,"abortController",null),G(this,"abortable",!0),G(this,"defaultParams",["idSite","period","date","segment"]),G(this,"resolveWithHelper",!1),this.errorCallback=Y}addParams(e,t){const o="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,i=["compareSegments","comparePeriods","compareDates"];Object.keys(o).forEach(e=>{let n=o[e];(-1===i.indexOf(e)||n)&&("boolean"===typeof n&&(n=n?1:0),"get"===t.toLowerCase()?this.getParams[e]=n:"post"===t.toLowerCase()&&(this.postParams[e]=n))})}withTokenInUrl(){this.withToken=!0}setUrl(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}setBulkRequests(...e){const t=e.map(e=>"string"===typeof e?e:K.param(e));this.addParams({module:"API",method:"API.getBulkRequest",urls:t,format:"json"},"post")}setTimeout(e){this.timeout=e}setCallback(e){this.callback=e}useCallbackInCaseOfError(){this.useRegularCallbackInCaseOfError=!0}redirectOnSuccess(e){this.setCallback(()=>{piwikHelper.redirect(e)})}setErrorCallback(e){this.errorCallback=e}setCompleteCallback(e){this.completeCallback=e}setFormat(e){this.format=e}setLoadingElement(e){this.loadingElement=e||"#ajaxLoadingDiv"}setErrorElement(e){e&&(this.errorElement=e)}useGETDefaultParameter(e){if(e&&this.defaultParams)for(let t=0;t{this.requestHandle&&this.requestHandle.abort()});const e=new Promise((e,t)=>{this.requestHandle.then(t=>{this.resolveWithHelper?e(this):e(t)}).fail(e=>{if(429===e.status)return console.log(`Warning: the '${K.param(this.getParams)}' request was rate limited!`),void t(e);if("abort"===e.statusText||0===e.status)return;const o=!document.querySelector("#login_form"),i="1"===e.getResponseHeader("X-Matomo-Session-Timed-Out");if(i&&o)return q("matomo_session_timed_out","1",6e4),void M.helper.refreshAfter(0);console.log(`Warning: the ${K.param(this.getParams)} request failed!`),t(e)})});return e}abort(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}buildAjaxCall(){const e=this,t=this.buildRequestUrl(this.getParams),o={type:"POST",async:!0,url:t,dataType:this.format||"json",complete:this.completeCallback,headers:this.headers?this.headers:void 0,error:function(...t){e.abortable&&(window.globalAjaxQueue.active-=1),e.errorCallback&&e.errorCallback.apply(this,t)},success:(t,o,i)=>{this.handleApiErrorResponseOrCallback(t,o,i),e.abortable&&(window.globalAjaxQueue.active-=1),M.ajaxRequestFinished&&M.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return K.ajax(o)}isRequestToApiMethod(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}isWidgetizedRequest(){return"Widgetize"===broadcast.getValueFromUrl("module")}getDefaultPostParams(){return this.withToken||this.isRequestToApiMethod()||M.shouldPropagateTokenAuth?{token_auth:M.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}mixinDefaultPostParams(e){const t=this.getDefaultPostParams(),o=Object.assign(Object.assign({},t),e);return o}mixinDefaultGetParams(e){const t=U.getSearchParam("segment"),o={idSite:M.idSite?M.idSite.toString():broadcast.getValueFromUrl("idSite"),period:M.period||broadcast.getValueFromUrl("period"),segment:t},i=e,n=Q(i)||Q(this.postParams);return i.token_auth&&(i.token_auth=null,delete i.token_auth),Object.keys(o).forEach(e=>{!this.useGETDefaultParameter(e)||"segment"===e&&n||null!==i[e]&&"undefined"!==typeof i[e]&&""!==i[e]||null!==this.postParams[e]&&"undefined"!==typeof this.postParams[e]&&""!==this.postParams[e]||!o[e]||(i[e]=o[e])}),!this.useGETDefaultParameter("date")||i.date||this.postParams.date||(i.date=M.currentDateString),i}getRequestHandle(){return this.requestHandle}}function oe(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */G(te,"UNSUPPORTED_BULK_RESPONSE_OBJECT_ERROR","AjaxHelper returnResponseObject is not supported for bulk requests."),window.ajaxHelper=te;const{$:ie}=window;class ne{constructor(){oe(this,"defaultMinFractionDigits",0),oe(this,"defaultMaxFractionDigits",2)}format(e,t,o,i){if(!ie.isNumeric(e))return String(e);let n=e,a=t||M.numbers.patternNumber;const r=a.split(";");1===r.length&&r.push("-"+r[0]);const s=n<0;if(a=s?r[1]:r[0],n=Math.abs(n),o>=0){const e=10**o;n=Math.round(n*e)/e}const l=n.toString().split(".");let c=l[0],d=l[1]||"";const u=-1!==a.indexOf(",");if(u){const e=a.match(/#+0/),t=(null===e||void 0===e?void 0:e[0].length)||0;let o=(null===e||void 0===e?void 0:e[0].length)||0;const i=a.split(",");i.length>2&&(o=i[1].length);const n=c.split("").reverse();let r=[];r.push(n.splice(0,t).reverse().join(""));while(n.length)r.push(n.splice(0,o).reverse().join(""));r=r.reverse(),c=r.join(",")}if(i>0&&(d=d.replace(/0+$/,""),d.length{let i=e;Object.entries(t).some(([e,t])=>-1!==i.indexOf(e)&&(i=i.replace(e,t),!0)),o+=i}),o}valOrDefault(e,t){return"undefined"===typeof e?t:e}getMaxFractionDigitsForCompactFormat(e){return 1===e?1:0}determineCorrectCompactPattern(e,t){let o=0,i=0,n="";if(Math.round(t)<1e3)return["0",1];for(o=1e3;o<=1e19;o*=10){const r=o+"One",s=o+"Other";if(1===Math.round(t/o)&&""!==(null===e||void 0===e?void 0:e[r])?(i=o,n=r):Math.round(t/o)>=1&&""!==(null===e||void 0===e?void 0:e[s])&&(i=o,n=s),null!==e&&void 0!==e&&e[n]){var a;const i=(null===e||void 0===e||null===(a=e[n].match(/0/g))||void 0===a?void 0:a.length)||1;if(Math.round(t*10**i/(10*o))<10**i)break}}return[(null===e||void 0===e?void 0:e[n])||"0",i]}formatCompact(e,t,o){var i;const n=(null===(i=e.match(/0/g))||void 0===i?void 0:i.length)||0;let a=t;n>1&&(a/=10**(n-1));const r=this.getMaxFractionDigitsForCompactFormat(n),s=10**r,l=Math.round(o/a*s)/s,c=this.formatNumber(l,r,0);return e.replace(/(0+)/,c).replace(/('\.')/,".")}parseFormattedNumber(e){const t=e.indexOf(M.numbers.symbolMinus)>-1||e.startsWith("-"),o=e.split(M.numbers.symbolDecimal);return o.forEach((e,t)=>{o[t]=e.replace(/[^0-9]/g,"")}),(t?-1:1)*parseFloat(o.join("."))}formatNumber(e,t,o){return this.format(e,M.numbers.patternNumber,this.valOrDefault(t,this.defaultMaxFractionDigits),this.valOrDefault(o,this.defaultMinFractionDigits))}formatPercent(e,t,o){return this.format(e,M.numbers.patternPercent,this.valOrDefault(t,this.defaultMaxFractionDigits),this.valOrDefault(o,this.defaultMinFractionDigits))}formatCurrency(e,t,o,i){const n=this.format(e,M.numbers.patternCurrency,this.valOrDefault(o,this.defaultMaxFractionDigits),this.valOrDefault(i,this.defaultMinFractionDigits));return n.replace("¤",t)}formatNumberCompact(e){const t=e,[o,i]=this.determineCorrectCompactPattern(M.numbers.patternsCompactNumber||[],t);return Math.round(t)<1e3||"0"===o?this.formatNumber(t,this.getMaxFractionDigitsForCompactFormat(Math.round(t)),0):this.formatCompact(o,i,t)}formatCurrencyCompact(e,t){const o=e,[i,n]=this.determineCorrectCompactPattern(M.numbers.patternsCompactCurrency||[],o);return Math.round(o)<1e3||"0"===i?this.formatCurrency(o,t,this.getMaxFractionDigitsForCompactFormat(Math.round(o)),0):this.formatCompact(i,n,o).replace("¤",t)}formatEvolution(e,t,o,i){if(i)return this.formatPercent(Math.abs(e),t,o);const n=this.formatPercent(e,t,o);return`${e>0?M.numbers.symbolPlus:""}${n}`}calculateAndFormatEvolution(e,t,o){const i=parseInt(t,10),n=parseInt(e,10)-i;let a;a=0===n||Number.isNaN(n)?0:0===i||Number.isNaN(i)?100:n/i*100;let r=3;return Math.abs(a)>100?r=0:Math.abs(a)>10?r=1:Math.abs(a)>1&&(r=2),this.formatEvolution(a,r,0,o)}}var ae=new ne;window.NumberFormatter=ae;
+ */G(te,"UNSUPPORTED_BULK_RESPONSE_OBJECT_ERROR","AjaxHelper returnResponseObject is not supported for bulk requests."),window.ajaxHelper=te;const{$:ie}=window;class ne{constructor(){oe(this,"defaultMinFractionDigits",0),oe(this,"defaultMaxFractionDigits",2)}format(e,t,o,i){if(!ie.isNumeric(e))return String(e);let n=e,a=t||M.numbers.patternNumber;const r=a.split(";");1===r.length&&r.push("-"+r[0]);const s=n<0;if(a=s?r[1]:r[0],n=Math.abs(n),o>=0){const e=10**o;n=Math.round(n*e)/e}const l=n.toString().split(".");let c=l[0],d=l[1]||"";const u=-1!==a.indexOf(",");if(u){const e=a.match(/#+0/),t=(null===e||void 0===e?void 0:e[0].length)||0;let o=(null===e||void 0===e?void 0:e[0].length)||0;const i=a.split(",");i.length>2&&(o=i[1].length);const n=c.split("").reverse();let r=[];r.push(n.splice(0,t).reverse().join(""));while(n.length)r.push(n.splice(0,o).reverse().join(""));r=r.reverse(),c=r.join(",")}if(i>0&&(d=d.replace(/0+$/,""),d.length{let i=e;Object.entries(t).some(([e,t])=>-1!==i.indexOf(e)&&(i=i.replace(e,t),!0)),o+=i}),o}valOrDefault(e,t){return"undefined"===typeof e?t:e}getMaxFractionDigitsForCompactFormat(e){return 1===e?1:0}determineCorrectCompactPattern(e,t){let o=0,i=0,n="";if(Math.round(t)<1e3)return["0",1];for(o=1e3;o<=1e19;o*=10){const r=o+"One",s=o+"Other";if(1===Math.round(t/o)&&""!==(null===e||void 0===e?void 0:e[r])?(i=o,n=r):Math.round(t/o)>=1&&""!==(null===e||void 0===e?void 0:e[s])&&(i=o,n=s),null!==e&&void 0!==e&&e[n]){var a;const i=(null===e||void 0===e||null===(a=e[n].match(/0/g))||void 0===a?void 0:a.length)||1;if(Math.round(t*10**i/(10*o))<10**i)break}}return[(null===e||void 0===e?void 0:e[n])||"0",i]}formatCompact(e,t,o){var i;const n=(null===(i=e.match(/0/g))||void 0===i?void 0:i.length)||0;let a=t;n>1&&(a/=10**(n-1));const r=this.getMaxFractionDigitsForCompactFormat(n),s=10**r,l=Math.round(o/a*s)/s,c=this.formatNumber(l,r,0);return e.replace(/(0+)/,c).replace(/('\.')/,".")}parseFormattedNumber(e){const t=e.indexOf(M.numbers.symbolMinus)>-1||e.startsWith("-"),o=e.split(M.numbers.symbolDecimal);return o.forEach((e,t)=>{o[t]=e.replace(/[^0-9]/g,"")}),(t?-1:1)*parseFloat(o.join("."))}formatNumber(e,t,o){return this.format(e,M.numbers.patternNumber,this.valOrDefault(t,this.defaultMaxFractionDigits),this.valOrDefault(o,this.defaultMinFractionDigits))}formatPercent(e,t,o){return this.format(e,M.numbers.patternPercent,this.valOrDefault(t,this.defaultMaxFractionDigits),this.valOrDefault(o,this.defaultMinFractionDigits))}formatCurrency(e,t,o,i){const n=this.format(e,M.numbers.patternCurrency,this.valOrDefault(o,this.defaultMaxFractionDigits),this.valOrDefault(i,this.defaultMinFractionDigits));return n.replace("¤",t)}formatNumberCompact(e){const t=e,[o,i]=this.determineCorrectCompactPattern(M.numbers.patternsCompactNumber||[],t);return Math.round(t)<1e3||"0"===o?this.formatNumber(t,this.getMaxFractionDigitsForCompactFormat(Math.round(t)),0):this.formatCompact(o,i,t)}formatCurrencyCompact(e,t){const o=e,[i,n]=this.determineCorrectCompactPattern(M.numbers.patternsCompactCurrency||[],o);return Math.round(o)<1e3||"0"===i?this.formatCurrency(o,t,this.getMaxFractionDigitsForCompactFormat(Math.round(o)),0):this.formatCompact(i,n,o).replace("¤",t)}formatEvolution(e,t,o,i){if(i)return this.formatPercent(Math.abs(e),t,o);const n=this.formatPercent(e,t,o);return`${e>0?M.numbers.symbolPlus:""}${n}`}calculateAndFormatEvolution(e,t,o){const i=parseInt(t,10),n=parseInt(e,10)-i;let a;a=0===n||Number.isNaN(n)?0:0===i||Number.isNaN(i)?100:n/i*100;let r=3;return Math.abs(a)>100?r=0:Math.abs(a)>10?r=1:Math.abs(a)>1&&(r=2),this.formatEvolution(a,r,0,o)}}var ae=new ne;window.NumberFormatter=ae;
/*!
* Matomo - free/libre analytics platform
*
@@ -109,7 +109,7 @@ function de(e,...t){const o=t;return window._pk_externalRawLink?window._pk_exter
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function me(e,t,o){return ae.formatNumber(e,t,o)}function pe(e,t,o){return ae.formatPercent(e,t,o)}function he(e,t,o,i){return ae.formatCurrency(e,t,o,i)}function ge(e,t,o,i){return ae.formatEvolution(e,t,o,i)}function be(e,t,o){return ae.calculateAndFormatEvolution(e,t,o)}
+ */function pe(e,t,o){return ae.formatNumber(e,t,o)}function me(e,t,o){return ae.formatPercent(e,t,o)}function he(e,t,o,i){return ae.formatCurrency(e,t,o,i)}function ge(e,t,o,i){return ae.formatEvolution(e,t,o,i)}function be(e,t,o){return ae.calculateAndFormatEvolution(e,t,o)}
/*!
* Matomo - free/libre analytics platform
*
@@ -121,7 +121,7 @@ function de(e,...t){const o=t;return window._pk_externalRawLink?window._pk_exter
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function fe(...e){const t=Object(D["createApp"])(...e);return t.config.globalProperties.$sanitize=window.vueSanitize,t.config.globalProperties.translate=a,t.config.globalProperties.translateOrDefault=r,t.config.globalProperties.externalLink=ue,t.config.globalProperties.externalRawLink=de,t.config.globalProperties.formatNumber=me,t.config.globalProperties.formatPercent=pe,t.config.globalProperties.formatCurrency=he,t.config.globalProperties.formatEvolution=ge,t.config.globalProperties.calculateAndFormatEvolution=be,t}
+ */function fe(...e){const t=Object(D["createApp"])(...e);return t.config.globalProperties.$sanitize=window.vueSanitize,t.config.globalProperties.translate=a,t.config.globalProperties.translateOrDefault=r,t.config.globalProperties.externalLink=ue,t.config.globalProperties.externalRawLink=de,t.config.globalProperties.formatNumber=pe,t.config.globalProperties.formatPercent=me,t.config.globalProperties.formatCurrency=he,t.config.globalProperties.formatEvolution=ge,t.config.globalProperties.calculateAndFormatEvolution=be,t}
/*!
* Matomo - free/libre analytics platform
*
@@ -145,7 +145,7 @@ function de(e,...t){const o=t;return window._pk_externalRawLink?window._pk_exter
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Pe(e){return"undefined"===typeof e?e:JSON.parse(JSON.stringify(e))}const Te={ref:"root"};function Ve(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Te,[e.componentWrapper?(Object(D["openBlock"])(),Object(D["createBlock"])(Object(D["resolveDynamicComponent"])(e.componentWrapper),{key:0})):Object(D["createCommentVNode"])("",!0)],512)}var xe=Object(D["defineComponent"])({props:{html:String},mounted(){M.helper.compileVueEntryComponents(this.$refs.root)},beforeUnmount(){M.helper.destroyVueComponent(this.$refs.root)},computed:{componentWrapper(){return this.html?Object(D["markRaw"])({template:this.html}):null}}});xe.render=Ve;var Ne=xe;const Be={class:"loadingPiwik"};function Ie(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("MatomoLoader");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Be,[Object(D["createVNode"])(r),Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.loadingMessage),1)],512)),[[D["vShow"],e.loading]])}const Me={class:"matomo-loader"},Fe=Object(D["createElementVNode"])("span",null,null,-1),Le=Object(D["createElementVNode"])("span",null,null,-1),Re=Object(D["createElementVNode"])("span",null,null,-1),Ae=[Fe,Le,Re];function _e(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("span",Me,Ae)}var He=Object(D["defineComponent"])({});He.render=_e;var $e=He,Ue=Object(D["defineComponent"])({components:{MatomoLoader:$e},props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:a("General_LoadingData")}}});Ue.render=Ie;var qe=Ue;function We(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])(["alert",{["alert-"+e.severity]:!0}])},[Object(D["renderSlot"])(e.$slots,"default")],2)}var ze=Object(D["defineComponent"])({props:{severity:{type:String,required:!0}}});ze.render=We;var Ge=ze,Ye={mounted(e,t){let o={};$(e).addClass("matomo-dropdown-menu");const i=!!$(e).parent().closest(".dropdown-content").length;var n;i&&(o={hover:!0},$(e).addClass("submenu"),$((null===(n=t.value)||void 0===n?void 0:n.activates)||$(e).data("target")).addClass("submenu-dropdown-content"),$(e).parents(".dropdown-content").addClass("submenu-container"));$(e).dropdown(o)},updated(e){Object(D["nextTick"])(()=>{$(e).addClass("matomo-dropdown-menu")})}};
+ */function Pe(e){return"undefined"===typeof e?e:JSON.parse(JSON.stringify(e))}const Te={ref:"root"};function Ve(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Te,[e.componentWrapper?(Object(D["openBlock"])(),Object(D["createBlock"])(Object(D["resolveDynamicComponent"])(e.componentWrapper),{key:0})):Object(D["createCommentVNode"])("",!0)],512)}var xe=Object(D["defineComponent"])({props:{html:String},mounted(){M.helper.compileVueEntryComponents(this.$refs.root)},beforeUnmount(){M.helper.destroyVueComponent(this.$refs.root)},computed:{componentWrapper(){return this.html?Object(D["markRaw"])({template:this.html}):null}}});xe.render=Ve;var Ne=xe;const Be={class:"loadingPiwik"};function Ie(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("MatomoLoader");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Be,[Object(D["createVNode"])(r),Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.loadingMessage),1)],512)),[[D["vShow"],e.loading]])}const Me={class:"matomo-loader"},Fe=Object(D["createElementVNode"])("span",null,null,-1),Le=Object(D["createElementVNode"])("span",null,null,-1),Re=Object(D["createElementVNode"])("span",null,null,-1),Ae=[Fe,Le,Re];function _e(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("span",Me,Ae)}var He=Object(D["defineComponent"])({});He.render=_e;var $e=He,Ue=Object(D["defineComponent"])({components:{MatomoLoader:$e},props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:a("General_LoadingData")}}});Ue.render=Ie;var qe=Ue;function We(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])(["alert",{["alert-"+e.severity]:!0}])},[Object(D["renderSlot"])(e.$slots,"default")],2)}var ze=Object(D["defineComponent"])({props:{severity:{type:String,required:!0}}});ze.render=We;var Ge=ze,Ke={mounted(e,t){let o={};$(e).addClass("matomo-dropdown-menu");const i=!!$(e).parent().closest(".dropdown-content").length;var n;i&&(o={hover:!0},$(e).addClass("submenu"),$((null===(n=t.value)||void 0===n?void 0:n.activates)||$(e).data("target")).addClass("submenu-dropdown-content"),$(e).parents(".dropdown-content").addClass("submenu-container"));$(e).dropdown(o)},updated(e){Object(D["nextTick"])(()=>{$(e).addClass("matomo-dropdown-menu")})}};
/*!
* Matomo - free/libre analytics platform
*
@@ -158,7 +158,7 @@ function de(e,...t){const o=t;return window._pk_externalRawLink?window._pk_exter
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Ke(e,t,o){const i=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,i||e.contains(o.target)||t.value&&t.value.blur()}function Qe(e,t){t.value.hasScrolled=!0}function Je(e,t){t.value.isMouseDown=!0,t.value.hasScrolled=!1}function Xe(e,t,o){27===o.which&&setTimeout(()=>{t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.blur&&t.value.blur()},0)}const Ze=document.documentElement;var et={mounted(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onEscapeHandler=Xe.bind(null,e,t),t.value.onMouseDown=Je.bind(null,e,t),t.value.onClickOutsideElement=Ke.bind(null,e,t),t.value.onScroll=Qe.bind(null,e,t),Ze.addEventListener("keyup",t.value.onEscapeHandler),Ze.addEventListener("mousedown",t.value.onMouseDown),Ze.addEventListener("mouseup",t.value.onClickOutsideElement),Ze.addEventListener("scroll",t.value.onScroll)},unmounted(e,t){Ze.removeEventListener("keyup",t.value.onEscapeHandler),Ze.removeEventListener("mousedown",t.value.onMouseDown),Ze.removeEventListener("mouseup",t.value.onClickOutsideElement),Ze.removeEventListener("scroll",t.value.onScroll)}};
+function Ye(e,t,o){const i=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,i||e.contains(o.target)||t.value&&t.value.blur()}function Qe(e,t){t.value.hasScrolled=!0}function Je(e,t){t.value.isMouseDown=!0,t.value.hasScrolled=!1}function Xe(e,t,o){27===o.which&&setTimeout(()=>{t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.blur&&t.value.blur()},0)}const Ze=document.documentElement;var et={mounted(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onEscapeHandler=Xe.bind(null,e,t),t.value.onMouseDown=Je.bind(null,e,t),t.value.onClickOutsideElement=Ye.bind(null,e,t),t.value.onScroll=Qe.bind(null,e,t),Ze.addEventListener("keyup",t.value.onEscapeHandler),Ze.addEventListener("mousedown",t.value.onMouseDown),Ze.addEventListener("mouseup",t.value.onClickOutsideElement),Ze.addEventListener("scroll",t.value.onScroll)},unmounted(e,t){Ze.removeEventListener("keyup",t.value.onEscapeHandler),Ze.removeEventListener("mousedown",t.value.onMouseDown),Ze.removeEventListener("mouseup",t.value.onClickOutsideElement),Ze.removeEventListener("scroll",t.value.onScroll)}};
/*!
* Matomo - free/libre analytics platform
*
@@ -176,7 +176,7 @@ function Ke(e,t,o){const i=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMo
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function ut(e,t,o){var i;e.classList.add("expanded"),null!==(i=t.value)&&void 0!==i&&i.onExpand&&t.value.onExpand(o);const n=e.querySelector(".dropdown.positionInViewport");n&&M.helper.setMarginLeftToBeInViewport(n)}function mt(e,t,o){var i;e.classList.contains("expanded")&&(e.classList.remove("expanded"),null!==(i=t.value)&&void 0!==i&&i.onClosed&&t.value.onClosed(o))}function pt(e,t,o){e.classList.contains("expanded")?mt(e,t,o):ut(e,t,o)}function ht(e,t,o){const i=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,i||e.contains(o.target)||mt(e,t,o)}function gt(e){e.value.hasScrolled=!0}function bt(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function ft(e,t,o){"Escape"===o.key&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,mt(e,t,o))}const vt=document.documentElement;var Ot={mounted(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onClickOnExpander=pt.bind(null,e,t),t.value.onEscapeHandler=ft.bind(null,e,t),t.value.onMouseDown=bt.bind(null,t),t.value.onClickOutsideElement=ht.bind(null,e,t),t.value.onScroll=gt.bind(null,t),setTimeout(()=>{const e=ke.getRef(t.value.expander,t);e&&e.addEventListener("click",t.value.onClickOnExpander)}),vt.addEventListener("keyup",t.value.onEscapeHandler),vt.addEventListener("mousedown",t.value.onMouseDown),vt.addEventListener("mouseup",t.value.onClickOutsideElement),vt.addEventListener("scroll",t.value.onScroll)},unmounted(e,t){const o=ke.getRef(t.value.expander,t);o&&vt.removeEventListener("click",t.value.onClickOnExpander),vt.removeEventListener("keyup",t.value.onEscapeHandler),vt.removeEventListener("mousedown",t.value.onMouseDown),vt.removeEventListener("mouseup",t.value.onClickOutsideElement),vt.removeEventListener("scroll",t.value.onScroll)}};
+ */function ut(e,t,o){var i;e.classList.add("expanded"),null!==(i=t.value)&&void 0!==i&&i.onExpand&&t.value.onExpand(o);const n=e.querySelector(".dropdown.positionInViewport");n&&M.helper.setMarginLeftToBeInViewport(n)}function pt(e,t,o){var i;e.classList.contains("expanded")&&(e.classList.remove("expanded"),null!==(i=t.value)&&void 0!==i&&i.onClosed&&t.value.onClosed(o))}function mt(e,t,o){e.classList.contains("expanded")?pt(e,t,o):ut(e,t,o)}function ht(e,t,o){const i=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,i||e.contains(o.target)||pt(e,t,o)}function gt(e){e.value.hasScrolled=!0}function bt(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function ft(e,t,o){"Escape"===o.key&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,pt(e,t,o))}const vt=document.documentElement;var Ot={mounted(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onClickOnExpander=mt.bind(null,e,t),t.value.onEscapeHandler=ft.bind(null,e,t),t.value.onMouseDown=bt.bind(null,t),t.value.onClickOutsideElement=ht.bind(null,e,t),t.value.onScroll=gt.bind(null,t),setTimeout(()=>{const e=ke.getRef(t.value.expander,t);e&&e.addEventListener("click",t.value.onClickOnExpander)}),vt.addEventListener("keyup",t.value.onEscapeHandler),vt.addEventListener("mousedown",t.value.onMouseDown),vt.addEventListener("mouseup",t.value.onClickOutsideElement),vt.addEventListener("scroll",t.value.onScroll)},unmounted(e,t){const o=ke.getRef(t.value.expander,t);o&&vt.removeEventListener("click",t.value.onClickOnExpander),vt.removeEventListener("keyup",t.value.onEscapeHandler),vt.removeEventListener("mousedown",t.value.onMouseDown),vt.removeEventListener("mouseup",t.value.onClickOutsideElement),vt.removeEventListener("scroll",t.value.onScroll)}};
/*!
* Matomo - free/libre analytics platform
*
@@ -212,7 +212,7 @@ function Ke(e,t,o){const i=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMo
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const At={key:0,class:"title",tabindex:"6"},_t=["href","title"],Ht={class:"iconsBar"},$t=["href","title"],Ut=Object(D["createElementVNode"])("span",{class:"icon-help"},null,-1),qt=[Ut],Wt=["title"],zt=Object(D["createElementVNode"])("span",{class:"icon-info"},null,-1),Gt=[zt],Yt={key:2,class:"ratingIcons"},Kt={class:"inlineHelp"},Qt=["innerHTML"],Jt=["innerHTML"],Xt=["href"];function Zt(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=t=>e.showIcons=!0),onMouseleave:t[2]||(t[2]=t=>e.showIcons=!1),ref:"root"},[e.editUrl?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",At,[Object(D["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.htmlEntities(e.actualFeatureName))},[Object(D["renderSlot"])(e.$slots,"default")],8,_t)):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])(Object(D["createElementVNode"])("span",Ht,[e.helpUrl&&!e.actualInlineHelp?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},qt,8,$t)):Object(D["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=t=>e.showInlineHelp=!e.showInlineHelp),class:Object(D["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},Gt,10,Wt)):Object(D["createCommentVNode"])("",!0),e.showRateFeature?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Yt,[(Object(D["openBlock"])(),Object(D["createBlock"])(Object(D["resolveDynamicComponent"])(e.rateFeature),{title:e.actualFeatureName},null,8,["title"]))])):Object(D["createCommentVNode"])("",!0)],512),[[D["vShow"],e.showIcons||e.showInlineHelp]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",Kt,[Object(D["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,Qt),""!=e.reportGenerated?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,class:"helpDate",innerHTML:e.$sanitize(e.reportGenerated)},null,8,Jt)):Object(D["createCommentVNode"])("",!0),e.helpUrl?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(D["toDisplayString"])(e.translate("General_MoreDetails")),9,Xt)):Object(D["createCommentVNode"])("",!0)],512),[[D["vShow"],e.showInlineHelp]])],544)}var eo=Object(D["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},data(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp(e){this.actualInlineHelp=e},featureName(e){this.actualFeatureName=e}},mounted(){const e=this.$refs.root;if(!this.actualInlineHelp){var t;let i=e.querySelector(".title .inlineHelp");if(!i&&null!==(t=e.parentElement)&&void 0!==t&&t.nextElementSibling&&(i=e.parentElement.nextElementSibling.querySelector(".reportDocumentation")),i){var o;const e=null===(o=i.getAttribute("data-content"))||void 0===o?void 0:o.trim();e&&e.length&&(this.actualInlineHelp=`${e} `,setTimeout(()=>i.remove(),0))}}var i;this.actualFeatureName||(this.actualFeatureName=null===(i=e.querySelector(".title"))||void 0===i?void 0:i.textContent);if(M.period&&M.currentDateString){const t=c.parse(M.period,M.currentDateString);this.reportGenerated&&t.containsToday()&&window.$(e.querySelector(".report-generated")).tooltip({track:!0,content:this.reportGenerated,items:"div",show:!1,hide:!1})}},methods:{htmlEntities(e){return M.helper.htmlEntities(e)}},computed:{showRateFeature(){return"Feedback_SendFeedback"!==r("Feedback_SendFeedback")},rateFeature(){return this.showRateFeature?Se("Feedback","RateFeature"):""}}});eo.render=Zt;var to=eo;const oo={class:"card-content"},io={key:0,class:"card-title"},no={key:1,class:"card-title"},ao={ref:"content"},ro={key:0,class:"card-image hide-on-med-and-down"},so=["src","alt"];function lo(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("EnrichedHeadline");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])({card:!0,"card-with-image":!!this.imageUrl}),ref:"root"},[Object(D["createElementVNode"])("div",oo,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText||e.editUrl?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("h2",io,Object(D["toDisplayString"])(e.decode(e.contentTitle)),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText||e.editUrl)?(Object(D["openBlock"])(),Object(D["createElementBlock"])("h2",no,[Object(D["createVNode"])(r,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"edit-url":e.editUrl,"inline-help":e.actualHelpText},{default:Object(D["withCtx"])(()=>[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.decode(e.contentTitle)),1)]),_:1},8,["feature-name","help-url","edit-url","inline-help"])])):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("div",ao,[Object(D["renderSlot"])(e.$slots,"default")],512)]),e.imageUrl?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ro,[Object(D["createElementVNode"])("img",{src:e.imageUrl,alt:e.actualImageAltText},null,8,so)])):Object(D["createCommentVNode"])("",!0)],2)}let co=null;const{$:uo}=window;var mo=Object(D["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,editUrl:String,helpText:String,anchor:String,imageUrl:String,imageAltText:String},components:{EnrichedHeadline:to},data(){return{actualFeature:this.feature,actualHelpText:this.helpText,actualImageAltText:this.imageAltText?this.imageAltText:this.contentTitle}},watch:{feature(e){this.actualFeature=e},helpText(e){this.actualHelpText=e}},mounted(){const e=this.$refs.root,t=this.$refs.content;if(this.anchor&&e&&e.parentElement){const t=document.createElement("a");t.id=this.anchor,uo(e.parentElement).prepend(t)}setTimeout(()=>{const e=t.querySelector(".contentHelp");e&&(this.actualHelpText=e.innerHTML,e.remove())},0),this.actualFeature&&"true"===this.actualFeature&&(this.actualFeature=this.contentTitle),null===co&&(co=document.querySelector("#content.admin"));let o=null;if(co&&(o=co.offsetTop),o||0===o){const t=e.closest(".widgetLoader"),i=t?t.offsetTop:e.offsetTop;i-o<17&&(e.style.marginTop="0")}},methods:{decode(e){return M.helper.htmlDecode(e)}}});mo.render=lo;var po=mo;const ho={key:0,ref:"root",class:"matomo-comparisons"},go={class:"comparison-type"},bo=["title"],fo=["href"],vo=["title"],Oo={class:"comparison-period-label"},yo=["onClick"],jo=["title"],wo={class:"loadingPiwik",style:{display:"none"}};function So(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("MatomoLoader"),s=Object(D["resolveDirective"])("tooltips");return e.isComparing?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ho,[Object(D["createElementVNode"])("h3",null,Object(D["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.segmentComparisons,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(D["createElementVNode"])("div",go,Object(D["toDisplayString"])(e.translate("General_Segment")),1),Object(D["createElementVNode"])("div",{class:"title",title:e.getTitleTooltip(t)},[Object(D["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(D["toDisplayString"])(t.title),9,fo)],8,bo),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.periodComparisons,o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"comparison-period",key:o.index,title:e.getComparisonTooltip(t,o)},[Object(D["createElementVNode"])("span",{class:"comparison-dot",style:Object(D["normalizeStyle"])({"background-color":e.getSeriesColor(t,o)})},null,4),Object(D["createElementVNode"])("span",Oo,Object(D["toDisplayString"])(o.title)+" ("+Object(D["toDisplayString"])(e.getComparisonPeriodType(o))+") ",1)],8,vo))),128)),e.segmentComparisons.length>1?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,class:"remove-button",onClick:t=>e.removeSegmentComparison(o)},[Object(D["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,jo)],8,yo)):Object(D["createCommentVNode"])("",!0)]))),128)),Object(D["createElementVNode"])("div",wo,[Object(D["createVNode"])(r),Object(D["createTextVNode"])(" "+Object(D["toDisplayString"])(e.translate("General_LoadingData")),1)])])),[[s,{duration:200,delay:200,content:e.transformTooltipContent}]]):Object(D["createCommentVNode"])("",!0)}function Co(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */const At={key:0,class:"title",tabindex:"6"},_t=["href","title"],Ht={class:"iconsBar"},$t=["href","title"],Ut=Object(D["createElementVNode"])("span",{class:"icon-help"},null,-1),qt=[Ut],Wt=["title"],zt=Object(D["createElementVNode"])("span",{class:"icon-info"},null,-1),Gt=[zt],Kt={key:2,class:"ratingIcons"},Yt={class:"inlineHelp"},Qt=["innerHTML"],Jt=["innerHTML"],Xt=["href"];function Zt(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=t=>e.showIcons=!0),onMouseleave:t[2]||(t[2]=t=>e.showIcons=!1),ref:"root"},[e.editUrl?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",At,[Object(D["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.htmlEntities(e.actualFeatureName))},[Object(D["renderSlot"])(e.$slots,"default")],8,_t)):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])(Object(D["createElementVNode"])("span",Ht,[e.helpUrl&&!e.actualInlineHelp?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},qt,8,$t)):Object(D["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=t=>e.showInlineHelp=!e.showInlineHelp),class:Object(D["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},Gt,10,Wt)):Object(D["createCommentVNode"])("",!0),e.showRateFeature?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Kt,[(Object(D["openBlock"])(),Object(D["createBlock"])(Object(D["resolveDynamicComponent"])(e.rateFeature),{title:e.actualFeatureName},null,8,["title"]))])):Object(D["createCommentVNode"])("",!0)],512),[[D["vShow"],e.showIcons||e.showInlineHelp]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",Yt,[Object(D["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,Qt),""!=e.reportGenerated?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,class:"helpDate",innerHTML:e.$sanitize(e.reportGenerated)},null,8,Jt)):Object(D["createCommentVNode"])("",!0),e.helpUrl?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(D["toDisplayString"])(e.translate("General_MoreDetails")),9,Xt)):Object(D["createCommentVNode"])("",!0)],512),[[D["vShow"],e.showInlineHelp]])],544)}var eo=Object(D["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},data(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp(e){this.actualInlineHelp=e},featureName(e){this.actualFeatureName=e}},mounted(){const e=this.$refs.root;if(!this.actualInlineHelp){var t;let i=e.querySelector(".title .inlineHelp");if(!i&&null!==(t=e.parentElement)&&void 0!==t&&t.nextElementSibling&&(i=e.parentElement.nextElementSibling.querySelector(".reportDocumentation")),i){var o;const e=null===(o=i.getAttribute("data-content"))||void 0===o?void 0:o.trim();e&&e.length&&(this.actualInlineHelp=`${e} `,setTimeout(()=>i.remove(),0))}}var i;this.actualFeatureName||(this.actualFeatureName=null===(i=e.querySelector(".title"))||void 0===i?void 0:i.textContent);if(M.period&&M.currentDateString){const t=c.parse(M.period,M.currentDateString);this.reportGenerated&&t.containsToday()&&window.$(e.querySelector(".report-generated")).tooltip({track:!0,content:this.reportGenerated,items:"div",show:!1,hide:!1})}},methods:{htmlEntities(e){return M.helper.htmlEntities(e)}},computed:{showRateFeature(){return"Feedback_SendFeedback"!==r("Feedback_SendFeedback")},rateFeature(){return this.showRateFeature?Se("Feedback","RateFeature"):""}}});eo.render=Zt;var to=eo;const oo={class:"card-content"},io={key:0,class:"card-title"},no={key:1,class:"card-title"},ao={ref:"content"},ro={key:0,class:"card-image hide-on-med-and-down"},so=["src","alt"];function lo(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("EnrichedHeadline");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])({card:!0,"card-with-image":!!this.imageUrl}),ref:"root"},[Object(D["createElementVNode"])("div",oo,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText||e.editUrl?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("h2",io,Object(D["toDisplayString"])(e.decode(e.contentTitle)),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText||e.editUrl)?(Object(D["openBlock"])(),Object(D["createElementBlock"])("h2",no,[Object(D["createVNode"])(r,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"edit-url":e.editUrl,"inline-help":e.actualHelpText},{default:Object(D["withCtx"])(()=>[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.decode(e.contentTitle)),1)]),_:1},8,["feature-name","help-url","edit-url","inline-help"])])):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("div",ao,[Object(D["renderSlot"])(e.$slots,"default")],512)]),e.imageUrl?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ro,[Object(D["createElementVNode"])("img",{src:e.imageUrl,alt:e.actualImageAltText},null,8,so)])):Object(D["createCommentVNode"])("",!0)],2)}let co=null;const{$:uo}=window;var po=Object(D["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,editUrl:String,helpText:String,anchor:String,imageUrl:String,imageAltText:String},components:{EnrichedHeadline:to},data(){return{actualFeature:this.feature,actualHelpText:this.helpText,actualImageAltText:this.imageAltText?this.imageAltText:this.contentTitle}},watch:{feature(e){this.actualFeature=e},helpText(e){this.actualHelpText=e}},mounted(){const e=this.$refs.root,t=this.$refs.content;if(this.anchor&&e&&e.parentElement){const t=document.createElement("a");t.id=this.anchor,uo(e.parentElement).prepend(t)}setTimeout(()=>{const e=t.querySelector(".contentHelp");e&&(this.actualHelpText=e.innerHTML,e.remove())},0),this.actualFeature&&"true"===this.actualFeature&&(this.actualFeature=this.contentTitle),null===co&&(co=document.querySelector("#content.admin"));let o=null;if(co&&(o=co.offsetTop),o||0===o){const t=e.closest(".widgetLoader"),i=t?t.offsetTop:e.offsetTop;i-o<17&&(e.style.marginTop="0")}},methods:{decode(e){return M.helper.htmlDecode(e)}}});po.render=lo;var mo=po;const ho={key:0,ref:"root",class:"matomo-comparisons"},go={class:"comparison-type"},bo=["title"],fo=["href"],vo=["title"],Oo={class:"comparison-period-label"},yo=["onClick"],jo=["title"],wo={class:"loadingPiwik",style:{display:"none"}};function So(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("MatomoLoader"),s=Object(D["resolveDirective"])("tooltips");return e.isComparing?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ho,[Object(D["createElementVNode"])("h3",null,Object(D["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.segmentComparisons,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(D["createElementVNode"])("div",go,Object(D["toDisplayString"])(e.translate("General_Segment")),1),Object(D["createElementVNode"])("div",{class:"title",title:e.getTitleTooltip(t)},[Object(D["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(D["toDisplayString"])(t.title),9,fo)],8,bo),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.periodComparisons,o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"comparison-period",key:o.index,title:e.getComparisonTooltip(t,o)},[Object(D["createElementVNode"])("span",{class:"comparison-dot",style:Object(D["normalizeStyle"])({"background-color":e.getSeriesColor(t,o)})},null,4),Object(D["createElementVNode"])("span",Oo,Object(D["toDisplayString"])(o.title)+" ("+Object(D["toDisplayString"])(e.getComparisonPeriodType(o))+") ",1)],8,vo))),128)),e.segmentComparisons.length>1?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,class:"remove-button",onClick:t=>e.removeSegmentComparison(o)},[Object(D["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,jo)],8,yo)):Object(D["createCommentVNode"])("",!0)]))),128)),Object(D["createElementVNode"])("div",wo,[Object(D["createVNode"])(r),Object(D["createTextVNode"])(" "+Object(D["toDisplayString"])(e.translate("General_LoadingData")),1)])])),[[s,{duration:200,delay:200,content:e.transformTooltipContent}]]):Object(D["createCommentVNode"])("",!0)}function Co(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
@@ -224,139 +224,157 @@ function Ke(e,t,o){const i=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMo
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const Po=8,To=3;function Vo(e){return e?Array.isArray(e)?e:[e]:[]}class xo{constructor(){Eo(this,"privateState",Object(D["reactive"])({comparisonsDisabledFor:[]})),Eo(this,"state",Object(D["readonly"])(this.privateState)),Eo(this,"colors",{}),Eo(this,"segmentComparisons",Object(D["computed"])(()=>this.parseSegmentComparisons())),Eo(this,"periodComparisons",Object(D["computed"])(()=>this.parsePeriodComparisons())),Eo(this,"isEnabled",Object(D["computed"])(()=>this.checkEnabledForCurrentPage())),"complete"===document.readyState||"interactive"===document.readyState?this.loadComparisonsDisabledFor():document.addEventListener("DOMContentLoaded",()=>{this.loadComparisonsDisabledFor()}),$(()=>{this.colors=this.getAllSeriesColors()}),Object(D["watch"])(()=>this.getComparisons(),()=>M.postEvent("piwikComparisonsChanged"),{deep:!0})}getComparisons(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}isComparing(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}isComparingPeriods(){return this.getPeriodComparisons().length>1}getSegmentComparisons(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}getPeriodComparisons(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}getSeriesColor(e,t,o=0){const i=this.getComparisonSeriesIndex(t.index,e.index)%Po;if(0===o)return this.colors["series"+i];const n=o%To;return this.colors[`series${i}-shade${n}`]}getSeriesColorName(e,t){let o="series"+e%Po;return t>0&&(o+="-shade"+t%To),o}isComparisonEnabled(){return this.isEnabled.value}getIndividualComparisonRowIndices(e){const t=this.getSegmentComparisons().length,o=e%t,i=Math.floor(e/t);return{segmentIndex:o,periodIndex:i}}getComparisonSeriesIndex(e,t){const o=this.getSegmentComparisons().length;return e*o+t}getAllComparisonSeries(){const e=[];let t=0;return this.getPeriodComparisons().forEach(o=>{this.getSegmentComparisons().forEach(i=>{e.push({index:t,params:Object.assign(Object.assign({},i.params),o.params),color:this.colors["series"+t]}),t+=1})}),e}removeSegmentComparison(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");const t=[...this.segmentComparisons.value];t.splice(e,1);const o={};0===e&&(o.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,o)}removeSegmentComparisonByDefinition(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");let t=null;this.getSegmentComparisons().forEach((o,i)=>{o&&o.params&&o.params.segment===e&&(t=i)}),null!==t&&this.removeSegmentComparison(t)}addSegmentComparison(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");const t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}updateQueryParamsFromComparisons(e,t,o={}){const i={},n={};let a=!1,r=!1;e.forEach(e=>{a?i[e.params.segment]=!0:a=!0}),t.forEach(e=>{r?n[`${e.params.period}|${e.params.date}`]=!0:r=!0});const s=[],l=[];Object.keys(n).forEach(e=>{const t=e.split("|");s.push(t[0]),l.push(t[1])});const c={compareSegments:Object.keys(i),comparePeriods:s,compareDates:l},d=M.helper.isReportingPage()?U.hashParsed.value:U.urlParsed.value;U.updateLocation(Object.assign(Object.assign(Object.assign({},d),c),o))}getAllSeriesColors(){const{ColorManager:e}=M;if(!e)return[];const t=[];for(let o=0;o{this.privateState.comparisonsDisabledFor=e})}parseSegmentComparisons(){const{availableSegments:e}=Do.state,t=[...Vo(U.parsed.value.compareSegments)];t.unshift(U.parsed.value.segment||"");const o=[];return t.forEach((t,i)=>{let n;e.forEach(e=>{e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(n=e)});let r=n?n.name:a("General_Unknown");""===t.trim()&&(r=a("SegmentEditor_DefaultAllVisits")),o.push({params:{segment:t},title:M.helper.htmlDecode(r),index:i})}),o}parsePeriodComparisons(){const e=[...Vo(U.parsed.value.comparePeriods)],t=[...Vo(U.parsed.value.compareDates)];e.unshift(U.parsed.value.period),t.unshift(U.parsed.value.date);const o=[];for(let n=0;nNo.isComparing()&&!window.broadcast.isNoDataPage()),t=Object(D["computed"])(()=>No.getSegmentComparisons()),o=Object(D["computed"])(()=>No.getPeriodComparisons()),i=No.getSeriesColor.bind(No);function n(){const e=window.$(this).attr("title");return e?window.vueSanitize(e.replace(/\n/g," ")):e}return{isComparing:e,segmentComparisons:t,periodComparisons:o,getSeriesColor:i,transformTooltipContent:n}},methods:{comparisonHasSegment(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison(e){window.$(this.$refs.root).tooltip("destroy"),No.removeSegmentComparison(e)},getComparisonPeriodType(e){const{period:t}=e.params;if("range"===t)return a("CoreHome_PeriodRange");const o=a(`Intl_Period${t.substring(0,1).toUpperCase()}${t.substring(1)}`);return o.substring(0,1).toUpperCase()+o.substring(1)},getComparisonTooltip(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getTitleTooltip(e){return this.htmlentities(e.title)+" "+this.htmlentities(decodeURIComponent(e.params.segment))},getUrlToSegment(e){const t=Object.assign({},U.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,`${window.location.search}#?${U.stringify(t)}`},onComparisonsChanged(){if(this.comparisonTooltips=null,!No.isComparing())return;const e=No.getPeriodComparisons(),t=No.getSegmentComparisons();te.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:U.getSearchParam("compareSegments"),comparePeriods:U.getSearchParam("comparePeriods"),compareDates:U.getSearchParam("compareDates"),format_metrics:"1"}).then(o=>{this.comparisonTooltips={},e.forEach(e=>{this.comparisonTooltips[e.index]={},t.forEach(t=>{const i=this.generateComparisonTooltip(o,e,t);this.comparisonTooltips[e.index][t.index]=i})})})},generateComparisonTooltip(e,t,o){if(!e.reportData.comparisons)return"";const i=No.getComparisonSeriesIndex(t.index,0),n=e.reportData.comparisons[i],r=No.getComparisonSeriesIndex(t.index,o.index),s=e.reportData.comparisons[r],l=e.reportData.comparisons[o.index];let c='',d=(s.nb_visits/n.nb_visits*100).toFixed(2);return d+="%",c+=a("General_ComparisonCardTooltip1",[`'${this.htmlentities(s.compareSegmentPretty)}'`,s.comparePeriodPretty,d,s.nb_visits.toString(),n.nb_visits.toString()]),t.index>0&&(c+="
",c+=a("General_ComparisonCardTooltip2",[s.nb_visits_change.toString(),this.htmlentities(l.compareSegmentPretty),l.comparePeriodPretty])),c+=" ",c},htmlentities(e){return M.helper.htmlEntities(e)}},mounted(){M.on("piwikComparisonsChanged",()=>{this.onComparisonsChanged()}),this.onComparisonsChanged()}});Bo.render=So;var Io=Bo;const Mo={ref:"root",class:"menuDropdown"},Fo=["title"],Lo=["innerHTML"],Ro=Object(D["createElementVNode"])("span",{class:"icon-chevron-down reporting-menu-sub-icon"},null,-1),Ao={class:"items"},_o={key:0,class:"search"},Ho=["placeholder"],$o=["title"],Uo=["title"];function qo(e,t,o,i,n,a){const r=Object(D["resolveDirective"])("focus-if"),s=Object(D["resolveDirective"])("focus-anywhere-but-here");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Mo,[Object(D["createElementVNode"])("span",{class:"title",onClick:t[0]||(t[0]=t=>e.showItems=!e.showItems),title:e.tooltip},[Object(D["createElementVNode"])("span",{class:"title-label",innerHTML:e.$sanitize(this.actualMenuTitle)},null,8,Lo),Ro],8,Fo),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",Ao,[e.showSearch&&e.showItems?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",_o,[Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[1]||(t[1]=t=>e.searchTerm=t),onKeydown:t[2]||(t[2]=t=>e.onSearchTermKeydown(t)),placeholder:e.translate("General_Search")},null,40,Ho),[[D["vModelText"],e.searchTerm],[r,{focused:e.showItems}]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",{class:"search_ico icon-search",title:e.translate("General_Search")},null,8,$o),[[D["vShow"],!e.searchTerm]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",{onClick:t[3]||(t[3]=t=>{e.searchTerm="",e.searchItems("")}),class:"reset icon-close",title:e.translate("General_Clear")},null,8,Uo),[[D["vShow"],e.searchTerm]])])):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("div",{onClick:t[4]||(t[4]=t=>e.selectItem(t))},[Object(D["renderSlot"])(e.$slots,"default")])],512),[[D["vShow"],e.showItems]])])),[[s,{blur:e.lostFocus}]])}const{$:Wo}=window;var zo=Object(D["defineComponent"])({props:{menuTitle:String,tooltip:String,showSearch:Boolean,menuTitleChangeOnClick:Boolean},directives:{FocusAnywhereButHere:et,FocusIf:ot},emits:["afterSelect"],watch:{menuTitle(){this.actualMenuTitle=this.menuTitle}},data(){return{showItems:!1,searchTerm:"",actualMenuTitle:this.menuTitle}},methods:{lostFocus(){this.showItems=!1},selectItem(e){const t=e.target.classList;!t.contains("item")||t.contains("disabled")||t.contains("separator")||(this.menuTitleChangeOnClick&&(this.actualMenuTitle=(e.target.textContent||"").replace(/[\u0000-\u2666]/g,e=>`${e.charCodeAt(0)};`)),this.showItems=!1,Wo(this.$slots.default()[0].el).find(".item").removeClass("active"),t.add("active"),this.$emit("afterSelect",e.target))},onSearchTermKeydown(){setTimeout(()=>{this.searchItems(this.searchTerm)})},searchItems(e){const t=e.toLowerCase();Wo(this.$refs.root).find(".item").each((e,o)=>{const i=Wo(o);-1===i.text().toLowerCase().indexOf(t)?i.hide():i.show()})}}});zo.render=qo;var Go=zo;const Yo={ref:"root"};function Ko(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Yo,null,512)}const Qo=1,{$:Jo}=window;var Xo=Object(D["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup(e,t){const o=Object(D["ref"])(null);function i(t,o){const i=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&o>=e.selectedDateStart&&o<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&o>=e.highlightedDateStart&&o<=e.highlightedDateEnd){const e=i.length?i:t;e.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),i.removeClass("ui-state-hover")}function n(e,t,o){if(e.hasClass("ui-datepicker-other-month"))return a(e,t,o);const i=parseInt(e.children("a,span").text(),10);return new Date(o,t,i)}function a(e,t,o){let i;const a=e.parent(),r=a.children("td");if(a.is(":first-child")){const s=a.children("td:not(.ui-datepicker-other-month)").first();return i=n(s,t,o),i.setDate(r.index(e)-r.index(s)+1),i}const s=a.children("td:not(.ui-datepicker-other-month)").last();return i=n(s,t,o),i.setDate(i.getDate()+r.index(e)-r.index(s)),i}function r(){const e=Jo(o.value),t=e.find("td[data-month]"),i=parseInt(t.attr("data-month"),10),n=parseInt(t.attr("data-year"),10);return[i,n]}function s(){const e=Jo(o.value),t=e.find(".ui-datepicker-calendar"),a=r(),s=t.find("td"),l=s.first(),c=n(l,a[0],a[1]);s.each((function(){i(Jo(this),c),c.setDate(c.getDate()+1)}))}function l(){if(!e.viewDate)return!1;let t;if("string"===typeof e.viewDate)try{t=m(e.viewDate)}catch(a){return!1}else t=e.viewDate;const i=Jo(o.value),n=r();return(n[0]!==t.getMonth()||n[1]!==t.getFullYear())&&(i.datepicker("setDate",t),!0)}function c(){const e=Jo(o.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(){const t=Jo(o.value),i=e.stepMonths||Qo;if(t.datepicker("option","stepMonths")===i)return!1;const n=Jo(".ui-datepicker-month",t).val(),a=Jo(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",i).datepicker("setDate",new Date(a,n)),c(),!0}function u(){const t=Jo(o.value),i=t.find(".ui-datepicker-month")[0];i&&(i.disabled=e.disableMonthDropdown)}function p(){if(!Jo(this).hasClass("ui-state-hover"))return;const e=Jo(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}function h(){u(),s()}return Object(D["watch"])(()=>Object.assign({},e),(e,t)=>{let o=!1;[e=>e.selectedDateStart,e=>e.selectedDateEnd,e=>e.highlightedDateStart,e=>e.highlightedDateEnd].forEach(i=>{if(o)return;const n=i(e),a=i(t);!n&&a&&(o=!0),n&&!a&&(o=!0),n&&a&&n.getTime()!==a.getTime()&&(o=!0)}),e.viewDate!==t.viewDate&&l()&&(o=!0),e.stepMonths!==t.stepMonths&&d(),e.disableMonthDropdown!==t.disableMonthDropdown&&u(),o&&s()}),Object(D["onMounted"])(()=>{const i=Jo(o.value),a=e.options||{},m=Object.assign(Object.assign(Object.assign({},M.getBaseDatePickerOptions()),a),{},{onChangeMonthYear:()=>{setTimeout(()=>{c()})}});i.datepicker(m),i.on("mouseover","tbody td a",e=>{e.originalEvent&&s()}),i.on("mouseenter","tbody td",(function(){const e=r(),o=Jo(this),i=n(o,e[0],e[1]);t.emit("cellHover",{date:i,$cell:o})})),i.on("mouseout","tbody td a",()=>{s()}),i.on("mouseleave","table",()=>t.emit("cellHoverLeave")).on("mouseenter","thead",()=>t.emit("cellHoverLeave")),i.on("click","tbody td.ui-datepicker-other-month",p),i.on("click",e=>{e.preventDefault();const t=Jo(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&h()}),i.on("click","td[data-month]",e=>{const o=Jo(e.target).closest("td"),i=parseInt(o.attr("data-month"),10),n=parseInt(o.attr("data-year"),10),a=parseInt(o.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(n,i,a)})});const g=d();l(),u(),g||c(),s()}),{root:o}}});Xo.render=Ko;var Zo=Xo;const ei={class:"dateRangePicker"},ti={id:"calendarRangeFrom"},oi={id:"calendarRangeTo"};function ii(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("DatePicker");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ei,[Object(D["createElementVNode"])("div",ti,[Object(D["createElementVNode"])("h6",null,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=t=>e.startDateText=t),onKeydown:t[1]||(t[1]=t=>e.onRangeInputChanged("from",t)),onKeyup:t[2]||(t[2]=t=>e.handleEnterPress(t))},null,544),[[D["vModelText"],e.startDateText]])]),Object(D["createVNode"])(r,{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]=t=>e.setStartRangeDate(t.date)),onCellHover:t[4]||(t[4]=t=>e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)),onCellHoverLeave:t[5]||(t[5]=t=>e.fromPickerHighlightedDates=[null,null])},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(D["createElementVNode"])("div",oi,[Object(D["createElementVNode"])("h6",null,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=t=>e.endDateText=t),onKeydown:t[7]||(t[7]=t=>e.onRangeInputChanged("to",t)),onKeyup:t[8]||(t[8]=t=>e.handleEnterPress(t))},null,544),[[D["vModelText"],e.endDateText]])]),Object(D["createVNode"])(r,{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]=t=>e.setEndRangeDate(t.date)),onCellHover:t[10]||(t[10]=t=>e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)),onCellHoverLeave:t[11]||(t[11]=t=>e.toPickerHighlightedDates=[null,null])},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])])}const ni="YYYY-MM-DD";var ai=Object(D["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:Zo},data(){let e=null;try{this.startDate&&(e=m(this.startDate))}catch(o){}let t=null;try{this.endDate&&(t=m(this.endDate))}catch(o){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate,startDateInvalid:!1,endDateInvalid:!1}},emits:["rangeChange","submit"],watch:{startDate(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted(){this.rangeChanged()},methods:{setStartRangeDate(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged(e,t){setTimeout(()=>{"from"===e?this.setStartRangeDateFromStr(t.target.value):this.setEndRangeDateFromStr(t.target.value)})},getNewHighlightedDates(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr(e){this.startDateInvalid=!0;let t=null;try{e&&e.length===ni.length&&(t=m(e))}catch(o){}t&&(this.fromPickerSelectedDates=[t,t],this.startDateInvalid=!1,this.rangeChanged())},setEndRangeDateFromStr(e){this.endDateInvalid=!0;let t=null;try{e&&e.length===ni.length&&(t=m(e))}catch(o){}t&&(this.toPickerSelectedDates=[t,t],this.endDateInvalid=!1,this.rangeChanged())},rangeChanged(){this.$emit("rangeChange",{start:this.fromPickerSelectedDates[0]?d(this.fromPickerSelectedDates[0]):null,end:this.toPickerSelectedDates[0]?d(this.toPickerSelectedDates[0]):null})}}});ai.render=ii;var ri=ai;function si(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("DatePicker");return Object(D["openBlock"])(),Object(D["createBlock"])(r,{"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]=t=>e.onHoverNormalCell(t.date,t.$cell)),onCellHoverLeave:t[1]||(t[1]=t=>e.onHoverLeaveNormalCells()),onDateSelect:t[2]||(t[2]=t=>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"])}const li=new Date(M.minDateYear,M.minDateMonth-1,M.minDateDay),ci=new Date(M.maxDateYear,M.maxDateMonth-1,M.maxDateDay);var di=Object(D["defineComponent"])({props:{period:{type:String,required:!0},date:[String,Date]},components:{DatePicker:Zo},emits:["select"],setup(e,t){const o=Object(D["ref"])(e.date),i=Object(D["ref"])([null,null]),n=Object(D["ref"])([null,null]);function a(t){const o=c.get(e.period).parse(t).getDateRange();return o[0]=lio[1]?o[1]:ci,o}function r(t,o){const i=tci,r=o.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);n.value=i||r?[null,null]:a(t)}function s(){n.value=[null,null]}function l(e){t.emit("select",{date:e})}function d(){if(!e.period||!e.date)return i.value=[null,null],void(o.value=null);i.value=a(e.date),o.value=m(e.date)}return Object(D["watch"])(e,d),d(),{selectedDates:i,highlightedDates:n,viewDate:o,onHoverNormalCell:r,onHoverLeaveNormalCells:s,onDateSelected:l}}});di.render=si;var ui=di;const mi={key:0},pi=["data-notification-instance-id"],hi={key:1},gi={class:"notification-body"},bi=["innerHTML"],fi={key:1};function vi(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createBlock"])(D["Transition"],{name:"toast"===e.type?"slow-fade-out":void 0,onAfterLeave:t[1]||(t[1]=t=>e.toastClosed())},{default:Object(D["withCtx"])(()=>[e.deleted?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",mi,[Object(D["createVNode"])(D["Transition"],{name:"toast"===e.type?"toast-slide-up":void 0,appear:""},{default:Object(D["withCtx"])(()=>[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(D["Transition"],{name:e.animate?"fade-in":void 0,appear:""},{default:Object(D["withCtx"])(()=>[Object(D["createElementVNode"])("div",{class:Object(D["normalizeClass"])(["notification system",e.cssClasses]),style:Object(D["normalizeStyle"])(e.style),ref:"root","data-notification-instance-id":e.notificationInstanceId},[e.canClose?(Object(D["openBlock"])(),Object(D["createElementBlock"])("button",{key:0,type:"button",class:"close","data-dismiss":"alert",onClick:t[0]||(t[0]=t=>e.closeNotification(t))}," × ")):Object(D["createCommentVNode"])("",!0),e.title?(Object(D["openBlock"])(),Object(D["createElementBlock"])("strong",hi,Object(D["toDisplayString"])(e.title),1)):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("div",gi,[e.message?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,innerHTML:e.$sanitize(e.message)},null,8,bi)):Object(D["createCommentVNode"])("",!0),e.message?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",fi,[Object(D["renderSlot"])(e.$slots,"default")]))])],14,pi)]),_:3},8,["name"])])]),_:3},8,["name"])]))]),_:3},8,["name"])}const{$:Oi}=window;var yi=Object(D["defineComponent"])({props:{notificationId:String,notificationInstanceId:String,title:String,context:String,type:String,noclear:Boolean,toastLength:{type:Number,default:12e3},style:[String,Object],animate:Boolean,message:String,cssClass:String},computed:{cssClasses(){const e={};return this.context&&(e["notification-"+this.context]=!0),this.cssClass&&(e[this.cssClass]=!0),e},canClose(){return"persistent"===this.type||!this.noclear}},emits:["closed"],data(){return{deleted:!1}},mounted(){const e=()=>{setTimeout(()=>{this.deleted=!0},this.toastLength)};"toast"===this.type&&e(),this.style&&Oi(this.$refs.root).css(this.style)},methods:{toastClosed(){Object(D["nextTick"])(()=>{this.$emit("closed")})},closeNotification(e){this.canClose&&e&&e.target&&(this.deleted=!0,Object(D["nextTick"])(()=>{this.$emit("closed")})),this.markNotificationAsRead()},markNotificationAsRead(){this.notificationId&&te.post({module:"CoreHome",action:"markNotificationAsRead"},{notificationId:this.notificationId},{withTokenInUrl:!0})}}});yi.render=vi;var ji=yi;const wi={class:"notification-group"},Si=["innerHTML"];function Ci(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Notification");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",wi,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.notifications,(t,o)=>(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:t.id||"no-id-"+o,"notification-id":t.id,title:t.title,context:t.context,type:t.type,noclear:t.noclear,"toast-length":t.toastLength,style:Object(D["normalizeStyle"])(t.style),animate:t.animate,message:t.message,"notification-instance-id":t.notificationInstanceId,"css-class":t.class,onClosed:o=>e.removeNotification(t.id)},{default:Object(D["withCtx"])(()=>[Object(D["createElementVNode"])("div",{innerHTML:e.$sanitize(t.message)},null,8,Si)]),_:2},1032,["notification-id","title","context","type","noclear","toast-length","style","animate","message","notification-instance-id","css-class","onClosed"]))),128))])}function ki(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */const Po=8,To=3;function Vo(e){return e?Array.isArray(e)?e:[e]:[]}class xo{constructor(){Eo(this,"privateState",Object(D["reactive"])({comparisonsDisabledFor:[]})),Eo(this,"state",Object(D["readonly"])(this.privateState)),Eo(this,"colors",{}),Eo(this,"segmentComparisons",Object(D["computed"])(()=>this.parseSegmentComparisons())),Eo(this,"periodComparisons",Object(D["computed"])(()=>this.parsePeriodComparisons())),Eo(this,"isEnabled",Object(D["computed"])(()=>this.checkEnabledForCurrentPage())),"complete"===document.readyState||"interactive"===document.readyState?this.loadComparisonsDisabledFor():document.addEventListener("DOMContentLoaded",()=>{this.loadComparisonsDisabledFor()}),$(()=>{this.colors=this.getAllSeriesColors()}),Object(D["watch"])(()=>this.getComparisons(),()=>M.postEvent("piwikComparisonsChanged"),{deep:!0})}getComparisons(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}isComparing(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}isComparingPeriods(){return this.getPeriodComparisons().length>1}getSegmentComparisons(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}getPeriodComparisons(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}getSeriesColor(e,t,o=0){const i=this.getComparisonSeriesIndex(t.index,e.index)%Po;if(0===o)return this.colors["series"+i];const n=o%To;return this.colors[`series${i}-shade${n}`]}getSeriesColorName(e,t){let o="series"+e%Po;return t>0&&(o+="-shade"+t%To),o}isComparisonEnabled(){return this.isEnabled.value}getIndividualComparisonRowIndices(e){const t=this.getSegmentComparisons().length,o=e%t,i=Math.floor(e/t);return{segmentIndex:o,periodIndex:i}}getComparisonSeriesIndex(e,t){const o=this.getSegmentComparisons().length;return e*o+t}getAllComparisonSeries(){const e=[];let t=0;return this.getPeriodComparisons().forEach(o=>{this.getSegmentComparisons().forEach(i=>{e.push({index:t,params:Object.assign(Object.assign({},i.params),o.params),color:this.colors["series"+t]}),t+=1})}),e}removeSegmentComparison(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");const t=[...this.segmentComparisons.value];t.splice(e,1);const o={};0===e&&(o.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,o)}removeSegmentComparisonByDefinition(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");let t=null;this.getSegmentComparisons().forEach((o,i)=>{o&&o.params&&o.params.segment===e&&(t=i)}),null!==t&&this.removeSegmentComparison(t)}addSegmentComparison(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");const t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}updateQueryParamsFromComparisons(e,t,o={}){const i={},n={};let a=!1,r=!1;e.forEach(e=>{a?i[e.params.segment]=!0:a=!0}),t.forEach(e=>{r?n[`${e.params.period}|${e.params.date}`]=!0:r=!0});const s=[],l=[];Object.keys(n).forEach(e=>{const t=e.split("|");s.push(t[0]),l.push(t[1])});const c={compareSegments:Object.keys(i),comparePeriods:s,compareDates:l},d=M.helper.isReportingPage()?U.hashParsed.value:U.urlParsed.value;U.updateLocation(Object.assign(Object.assign(Object.assign({},d),c),o))}getAllSeriesColors(){const{ColorManager:e}=M;if(!e)return[];const t=[];for(let o=0;o{this.privateState.comparisonsDisabledFor=e})}parseSegmentComparisons(){const{availableSegments:e}=Do.state,t=[...Vo(U.parsed.value.compareSegments)];t.unshift(U.parsed.value.segment||"");const o=[];return t.forEach((t,i)=>{let n;e.forEach(e=>{e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(n=e)});let r=n?n.name:a("General_Unknown");""===t.trim()&&(r=a("SegmentEditor_DefaultAllVisits")),o.push({params:{segment:t},title:M.helper.htmlDecode(r),index:i})}),o}parsePeriodComparisons(){const e=[...Vo(U.parsed.value.comparePeriods)],t=[...Vo(U.parsed.value.compareDates)];e.unshift(U.parsed.value.period),t.unshift(U.parsed.value.date);const o=[];for(let n=0;nNo.isComparing()&&!window.broadcast.isNoDataPage()),t=Object(D["computed"])(()=>No.getSegmentComparisons()),o=Object(D["computed"])(()=>No.getPeriodComparisons()),i=No.getSeriesColor.bind(No);function n(){const e=window.$(this).attr("title");return e?window.vueSanitize(e.replace(/\n/g," ")):e}return{isComparing:e,segmentComparisons:t,periodComparisons:o,getSeriesColor:i,transformTooltipContent:n}},methods:{comparisonHasSegment(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison(e){window.$(this.$refs.root).tooltip("destroy"),No.removeSegmentComparison(e)},getComparisonPeriodType(e){const{period:t}=e.params;if("range"===t)return a("CoreHome_PeriodRange");const o=a(`Intl_Period${t.substring(0,1).toUpperCase()}${t.substring(1)}`);return o.substring(0,1).toUpperCase()+o.substring(1)},getComparisonTooltip(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getTitleTooltip(e){return this.htmlentities(e.title)+" "+this.htmlentities(decodeURIComponent(e.params.segment))},getUrlToSegment(e){const t=Object.assign({},U.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,`${window.location.search}#?${U.stringify(t)}`},onComparisonsChanged(){if(this.comparisonTooltips=null,!No.isComparing())return;const e=No.getPeriodComparisons(),t=No.getSegmentComparisons();te.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:U.getSearchParam("compareSegments"),comparePeriods:U.getSearchParam("comparePeriods"),compareDates:U.getSearchParam("compareDates"),format_metrics:"1"}).then(o=>{this.comparisonTooltips={},e.forEach(e=>{this.comparisonTooltips[e.index]={},t.forEach(t=>{const i=this.generateComparisonTooltip(o,e,t);this.comparisonTooltips[e.index][t.index]=i})})})},generateComparisonTooltip(e,t,o){if(!e.reportData.comparisons)return"";const i=No.getComparisonSeriesIndex(t.index,0),n=e.reportData.comparisons[i],r=No.getComparisonSeriesIndex(t.index,o.index),s=e.reportData.comparisons[r],l=e.reportData.comparisons[o.index];let c='',d=(s.nb_visits/n.nb_visits*100).toFixed(2);return d+="%",c+=a("General_ComparisonCardTooltip1",[`'${this.htmlentities(s.compareSegmentPretty)}'`,s.comparePeriodPretty,d,s.nb_visits.toString(),n.nb_visits.toString()]),t.index>0&&(c+="
",c+=a("General_ComparisonCardTooltip2",[s.nb_visits_change.toString(),this.htmlentities(l.compareSegmentPretty),l.comparePeriodPretty])),c+=" ",c},htmlentities(e){return M.helper.htmlEntities(e)}},mounted(){M.on("piwikComparisonsChanged",()=>{this.onComparisonsChanged()}),this.onComparisonsChanged()}});Bo.render=So;var Io=Bo;const Mo={ref:"root",class:"menuDropdown"},Fo=["title"],Lo=["innerHTML"],Ro=Object(D["createElementVNode"])("span",{class:"icon-chevron-down reporting-menu-sub-icon"},null,-1),Ao={class:"items"},_o={key:0,class:"search"},Ho=["placeholder"],$o=["title"],Uo=["title"];function qo(e,t,o,i,n,a){const r=Object(D["resolveDirective"])("focus-if"),s=Object(D["resolveDirective"])("focus-anywhere-but-here");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Mo,[Object(D["createElementVNode"])("span",{class:"title",onClick:t[0]||(t[0]=t=>e.showItems=!e.showItems),title:e.tooltip},[Object(D["createElementVNode"])("span",{class:"title-label",innerHTML:e.$sanitize(this.actualMenuTitle)},null,8,Lo),Ro],8,Fo),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",Ao,[e.showSearch&&e.showItems?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",_o,[Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[1]||(t[1]=t=>e.searchTerm=t),onKeydown:t[2]||(t[2]=t=>e.onSearchTermKeydown(t)),placeholder:e.translate("General_Search")},null,40,Ho),[[D["vModelText"],e.searchTerm],[r,{focused:e.showItems}]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",{class:"search_ico icon-search",title:e.translate("General_Search")},null,8,$o),[[D["vShow"],!e.searchTerm]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",{onClick:t[3]||(t[3]=t=>{e.searchTerm="",e.searchItems("")}),class:"reset icon-close",title:e.translate("General_Clear")},null,8,Uo),[[D["vShow"],e.searchTerm]])])):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("div",{onClick:t[4]||(t[4]=t=>e.selectItem(t))},[Object(D["renderSlot"])(e.$slots,"default")])],512),[[D["vShow"],e.showItems]])])),[[s,{blur:e.lostFocus}]])}const{$:Wo}=window;var zo=Object(D["defineComponent"])({props:{menuTitle:String,tooltip:String,showSearch:Boolean,menuTitleChangeOnClick:Boolean},directives:{FocusAnywhereButHere:et,FocusIf:ot},emits:["afterSelect"],watch:{menuTitle(){this.actualMenuTitle=this.menuTitle}},data(){return{showItems:!1,searchTerm:"",actualMenuTitle:this.menuTitle}},methods:{lostFocus(){this.showItems=!1},selectItem(e){const t=e.target.classList;!t.contains("item")||t.contains("disabled")||t.contains("separator")||(this.menuTitleChangeOnClick&&(this.actualMenuTitle=(e.target.textContent||"").replace(/[\u0000-\u2666]/g,e=>`${e.charCodeAt(0)};`)),this.showItems=!1,Wo(this.$slots.default()[0].el).find(".item").removeClass("active"),t.add("active"),this.$emit("afterSelect",e.target))},onSearchTermKeydown(){setTimeout(()=>{this.searchItems(this.searchTerm)})},searchItems(e){const t=e.toLowerCase();Wo(this.$refs.root).find(".item").each((e,o)=>{const i=Wo(o);-1===i.text().toLowerCase().indexOf(t)?i.hide():i.show()})}}});zo.render=qo;var Go=zo;const Ko={ref:"root"};function Yo(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ko,null,512)}const Qo=1,{$:Jo}=window;var Xo=Object(D["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,persistentHighlightedDateStart:Date,persistentHighlightedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup(e,t){const o=Object(D["ref"])(null);function i(t,o){const i=t.children("a"),{selectedDateStart:n,selectedDateEnd:a}=e,r=o.getTime(),s=!!(e.persistentHighlightedDateStart&&e.persistentHighlightedDateEnd&&o>=e.persistentHighlightedDateStart&&o<=e.persistentHighlightedDateEnd),l=!(!n||!a||r!==n.getTime()&&r!==a.getTime());l?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&o>=e.highlightedDateStart&&o<=e.highlightedDateEnd?(t.addClass("ui-state-hover"),i.length&&i.addClass("ui-state-hover")):(t.removeClass("ui-state-hover"),i.removeClass("ui-state-hover")),s?(t.addClass("ui-datepicker-persistent-highlight"),i.length&&i.addClass("ui-datepicker-persistent-highlight")):(t.removeClass("ui-datepicker-persistent-highlight"),i.removeClass("ui-datepicker-persistent-highlight"))}function n(e,t,o){if(e.hasClass("ui-datepicker-other-month"))return a(e,t,o);const i=parseInt(e.children("a,span").text(),10);return new Date(o,t,i)}function a(e,t,o){let i;const a=e.parent(),r=a.children("td");if(a.is(":first-child")){const s=a.children("td:not(.ui-datepicker-other-month)").first();return i=n(s,t,o),i.setDate(r.index(e)-r.index(s)+1),i}const s=a.children("td:not(.ui-datepicker-other-month)").last();return i=n(s,t,o),i.setDate(i.getDate()+r.index(e)-r.index(s)),i}function r(){const e=Jo(o.value),t=e.find("td[data-month]"),i=parseInt(t.attr("data-month"),10),n=parseInt(t.attr("data-year"),10);return[i,n]}function s(){const e=Jo(o.value),t=e.find(".ui-datepicker-calendar"),a=r(),s=t.find("td"),l=s.first(),c=n(l,a[0],a[1]);s.each((function(){i(Jo(this),c),c.setDate(c.getDate()+1)}))}function l(){if(!e.viewDate)return!1;let t;if("string"===typeof e.viewDate)try{t=p(e.viewDate)}catch(a){return!1}else t=e.viewDate;const i=Jo(o.value),n=r();return(n[0]!==t.getMonth()||n[1]!==t.getFullYear())&&(i.datepicker("setDate",t),!0)}function c(){const e=Jo(o.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",""),e.find(".ui-datepicker-prev .ui-icon").removeClass("ui-icon-circle-triangle-w").addClass("icon-chevron-left"),e.find(".ui-datepicker-next .ui-icon").removeClass("ui-icon-circle-triangle-e").addClass("icon-chevron-right")}function d(){const t=Jo(o.value),i=e.stepMonths||Qo;if(t.datepicker("option","stepMonths")===i)return!1;const n=Jo(".ui-datepicker-month",t).val(),a=Jo(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",i).datepicker("setDate",new Date(a,n)),c(),!0}function u(){const t=Jo(o.value),i=t.find(".ui-datepicker-month")[0];i&&(i.disabled=e.disableMonthDropdown)}function m(){if(!Jo(this).hasClass("ui-state-hover"))return;const e=Jo(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}function h(){u(),s()}return Object(D["watch"])(()=>Object.assign({},e),(e,t)=>{let o=!1;[e=>e.selectedDateStart,e=>e.selectedDateEnd,e=>e.persistentHighlightedDateStart,e=>e.persistentHighlightedDateEnd,e=>e.highlightedDateStart,e=>e.highlightedDateEnd].forEach(i=>{if(o)return;const n=i(e),a=i(t);!n&&a&&(o=!0),n&&!a&&(o=!0),n&&a&&n.getTime()!==a.getTime()&&(o=!0)}),e.viewDate!==t.viewDate&&l()&&(o=!0),e.stepMonths!==t.stepMonths&&d(),e.disableMonthDropdown!==t.disableMonthDropdown&&u(),o&&s()}),Object(D["onMounted"])(()=>{const i=Jo(o.value),a=e.options||{},p=Object.assign(Object.assign(Object.assign({},M.getBaseDatePickerOptions()),a),{},{onChangeMonthYear:()=>{setTimeout(()=>{c()})}});i.datepicker(p),i.on("mouseover","tbody td a",e=>{e.originalEvent&&s()}),i.on("mouseenter","tbody td",(function(){const e=r(),o=Jo(this),i=n(o,e[0],e[1]);t.emit("cellHover",{date:i,$cell:o})})),i.on("mouseout","tbody td a",()=>{s()}),i.on("mouseleave","table",()=>t.emit("cellHoverLeave")).on("mouseenter","thead",()=>t.emit("cellHoverLeave")),i.on("click","tbody td.ui-datepicker-other-month",m),i.on("click",e=>{e.preventDefault();const t=Jo(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&h()}),i.on("click","td[data-month]",e=>{const o=Jo(e.target).closest("td"),i=parseInt(o.attr("data-month"),10),n=parseInt(o.attr("data-year"),10),a=parseInt(o.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(n,i,a)})});const g=d();l(),u(),g||c(),s()}),{root:o}}});Xo.render=Yo;var Zo=Xo;const ei={class:"dateRangePicker"},ti={id:"calendarRangeFrom"},oi={class:"date-range-picker-label"},ii={id:"calendarRangeTo"},ni={class:"date-range-picker-label"};function ai(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("DatePicker");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ei,[Object(D["createElementVNode"])("div",ti,[Object(D["createElementVNode"])("h6",oi,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default date-range-picker-field","onUpdate:modelValue":t[0]||(t[0]=t=>e.startDateText=t),onKeydown:t[1]||(t[1]=t=>e.onRangeInputChanged("from",t)),onKeyup:t[2]||(t[2]=t=>e.handleEnterPress(t))},null,544),[[D["vModelText"],e.startDateText]])]),Object(D["createVNode"])(r,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDate,"selected-date-end":e.fromPickerSelectedDate,"highlighted-date-start":e.fromPickerHoveredDate,"highlighted-date-end":e.fromPickerHoveredDate,onDateSelect:t[3]||(t[3]=t=>e.setStartRangeDate(t.date)),onCellHover:t[4]||(t[4]=t=>e.fromPickerHoveredDate=e.getNewHoveredDate(t.date,t.$cell)),onCellHoverLeave:t[5]||(t[5]=t=>e.fromPickerHoveredDate=null)},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(D["createElementVNode"])("div",ii,[Object(D["createElementVNode"])("h6",ni,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default date-range-picker-field","onUpdate:modelValue":t[6]||(t[6]=t=>e.endDateText=t),onKeydown:t[7]||(t[7]=t=>e.onRangeInputChanged("to",t)),onKeyup:t[8]||(t[8]=t=>e.handleEnterPress(t))},null,544),[[D["vModelText"],e.endDateText]])]),Object(D["createVNode"])(r,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDate,"selected-date-end":e.toPickerSelectedDate,"highlighted-date-start":e.toPickerHoveredDate,"highlighted-date-end":e.toPickerHoveredDate,onDateSelect:t[9]||(t[9]=t=>e.setEndRangeDate(t.date)),onCellHover:t[10]||(t[10]=t=>e.toPickerHoveredDate=e.getNewHoveredDate(t.date,t.$cell)),onCellHoverLeave:t[11]||(t[11]=t=>e.toPickerHoveredDate=null)},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])])}const ri="YYYY-MM-DD";var si=Object(D["defineComponent"])({name:"DateRangePicker",props:{startDate:String,endDate:String},components:{DatePicker:Zo},data(){let e=null;try{this.startDate&&(e=p(this.startDate))}catch(o){}let t=null;try{this.endDate&&(t=p(this.endDate))}catch(o){}return{fromPickerSelectedDate:e,toPickerSelectedDate:t,fromPickerHoveredDate:null,toPickerHoveredDate:null,startDateText:this.startDate,endDateText:this.endDate,startDateInvalid:!1,endDateInvalid:!1}},emits:["rangeChange","submit"],watch:{startDate(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted(){this.rangeChanged()},methods:{setStartRangeDate(e){this.fromPickerSelectedDate=e,this.rangeChanged()},setEndRangeDate(e){this.toPickerSelectedDate=e,this.rangeChanged()},onRangeInputChanged(e,t){setTimeout(()=>{"from"===e?this.setStartRangeDateFromStr(t.target.value):this.setEndRangeDateFromStr(t.target.value)})},getNewHoveredDate(e,t){return t.hasClass("ui-datepicker-unselectable")?null:e},handleEnterPress(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr(e){this.startDateInvalid=!0;let t=null;try{e&&e.length===ri.length&&(t=p(e))}catch(o){}t&&(this.fromPickerSelectedDate=t,this.startDateInvalid=!1,this.rangeChanged())},setEndRangeDateFromStr(e){this.endDateInvalid=!0;let t=null;try{e&&e.length===ri.length&&(t=p(e))}catch(o){}t&&(this.toPickerSelectedDate=t,this.endDateInvalid=!1,this.rangeChanged())},rangeChanged(){this.$emit("rangeChange",{start:this.fromPickerSelectedDate?d(this.fromPickerSelectedDate):null,end:this.toPickerSelectedDate?d(this.toPickerSelectedDate):null})}}});si.render=ai;var li=si;function ci(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("DatePicker");return Object(D["openBlock"])(),Object(D["createBlock"])(r,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"persistent-highlighted-date-start":e.committedBetweenHighlightDates[0],"persistent-highlighted-date-end":e.committedBetweenHighlightDates[1],"highlighted-date-start":e.highlightedDates?e.highlightedDates[0]:null,"highlighted-date-end":e.highlightedDates?e.highlightedDates[1]:null,"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=t=>e.onHoverNormalCell(t.date,t.$cell)),onCellHoverLeave:t[1]||(t[1]=t=>e.onHoverLeaveNormalCells()),onDateSelect:t[2]||(t[2]=t=>e.onDateSelected(t.date))},null,8,["selected-date-start","selected-date-end","persistent-highlighted-date-start","persistent-highlighted-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const{$:Di}=window;class Ei{constructor(){ki(this,"privateState",Object(D["reactive"])({notifications:[]})),ki(this,"nextNotificationId",0)}get state(){return Object(D["readonly"])(this.privateState)}appendNotification(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.push(e)}prependNotification(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.unshift(e)}remove(e){this.privateState.notifications=this.privateState.notifications.filter(t=>t.id!==e)}parseNotificationDivs(){const e=Di('[data-role="notification"]'),t=[];e.each((o,i)=>{const n=Di(i),a=n.data(),r=n.html();r&&t.push(Object.assign(Object.assign({},a),{},{message:r,animate:!1})),e.remove()}),t.forEach(e=>this.show(e))}clearTransientNotifications(){this.privateState.notifications=this.privateState.notifications.filter(e=>"transient"!==e.type)}show(e){this.checkMessage(e.message);let t=e.prepend?this.prependNotification:this.appendNotification,o="#notificationContainer";if(e.placeat)o=e.placeat;else{const e=".modal.open .modal-content",i=document.querySelector(e);i&&(i.querySelector("#modalNotificationContainer")||Di(i).prepend(''),o=e+" #modalNotificationContainer",t=this.prependNotification)}const i=e.group||(o?o.toString():"");this.initializeNotificationContainer(o,i);const n=(this.nextNotificationId+=1).toString();return t.call(this,Object.assign(Object.assign({},e),{},{noclear:!!e.noclear,group:i,notificationId:e.id,notificationInstanceId:n,type:e.type||"transient"})),n}scrollToNotification(e){setTimeout(()=>{const t=document.querySelector(`[data-notification-instance-id='${e}']`);t&&M.helper.lazyScrollTo(t,250)})}toast(e){this.checkMessage(e.message);const t=e.placeat?Di(e.placeat):void 0;if(!t||!t.length)throw new Error("A valid selector is required for the placeat option when using Notification.toast().");const o=document.createElement("div");o.style.position="absolute",o.style.top=t.offset().top+"px",o.style.left=t.offset().left+"px",o.style.zIndex="1000",document.body.appendChild(o);const i=fe({render:()=>Object(D["createVNode"])(ji,Object.assign(Object.assign({},e),{},{notificationId:e.id,type:"toast",onClosed:()=>{i.unmount()}}))});i.mount(o)}initializeNotificationContainer(e,t){if(!e)return;const o=Di(e);if(o.children(".notification-group").length)return;const i=window.CoreHome.NotificationGroup,n=fe({template:'',data:()=>({group:t})});n.component("NotificationGroup",i),n.mount(o[0])}checkMessage(e){if(!e)throw new Error("No message given, cannot display notification")}}const Pi=new Ei;var Ti=Pi;Di(()=>Pi.parseNotificationDivs());var Vi=Object(D["defineComponent"])({props:{group:String},components:{Notification:ji},computed:{notifications(){return Ti.state.notifications.filter(e=>this.group?this.group===e.group:!e.group)}},methods:{removeNotification(e){Ti.remove(e)}}});Vi.render=Ci;var xi=Vi;
+ */const di=" ",ui=["custom","previousPeriod","previousYear"],pi=[{key:"custom",value:a("General_Custom")},{key:"previousPeriod",value:a("General_PreviousPeriod").replace(/\s+/,di)},{key:"previousYear",value:a("General_PreviousYear").replace(/\s+/,di)}];function mi(){return new Date(window.piwik.minDateYear,window.piwik.minDateMonth-1,window.piwik.minDateDay)}function hi(){return new Date(window.piwik.maxDateYear,window.piwik.maxDateMonth-1,window.piwik.maxDateDay)}const gi="range";function bi(e){return"[object Date]"===Object.prototype.toString.call(e)&&!Number.isNaN(e.getTime())}function fi(e){return"day"===e||"week"===e||"month"===e||"year"===e}var vi=Object(D["defineComponent"])({props:{period:{type:String,required:!0},date:[String,Date]},components:{DatePicker:Zo},emits:["select"],setup(e,t){const o=Object(D["ref"])(e.date),i=Object(D["ref"])([null,null]),n=Object(D["ref"])([null,null]),a=Object(D["ref"])(null),r=mi(),s=hi();function l(t){const o=c.get(e.period).parse(t).getDateRange();return o[0]=ro[1]?o[1]:s,o}function d(e,t){if(!e||!t||e.getTime()>=t.getTime())return[null,null];const o=new Date(e);o.setDate(o.getDate()+1);const i=new Date(t);return i.setDate(i.getDate()-1),o.getTime()>i.getTime()?[null,null]:[o,i]}function u(e){if(!e)return void(n.value=[null,null]);const t=l(e);n.value=d(t[0],t[1])}function m(t,o){const i=ts,n=o.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);a.value=i||n?[null,null]:l(t)}function h(){a.value=null}function g(e){t.emit("select",{date:e})}function b(){if(!e.period||!e.date)return i.value=[null,null],n.value=[null,null],a.value=null,void(o.value=null);i.value=l(e.date),u(e.date),a.value=null,o.value=p(e.date)}return Object(D["watch"])(e,b),b(),{selectedDates:i,committedBetweenHighlightDates:n,highlightedDates:a,viewDate:o,onHoverNormalCell:m,onHoverLeaveNormalCells:h,onDateSelected:g}}});vi.render=ci;var Oi=vi;const yi={key:0},ji=["data-notification-instance-id"],wi={key:1},Si={class:"notification-body"},Ci=["innerHTML"],ki={key:1};function Di(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createBlock"])(D["Transition"],{name:"toast"===e.type?"slow-fade-out":void 0,onAfterLeave:t[1]||(t[1]=t=>e.toastClosed())},{default:Object(D["withCtx"])(()=>[e.deleted?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",yi,[Object(D["createVNode"])(D["Transition"],{name:"toast"===e.type?"toast-slide-up":void 0,appear:""},{default:Object(D["withCtx"])(()=>[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(D["Transition"],{name:e.animate?"fade-in":void 0,appear:""},{default:Object(D["withCtx"])(()=>[Object(D["createElementVNode"])("div",{class:Object(D["normalizeClass"])(["notification system",e.cssClasses]),style:Object(D["normalizeStyle"])(e.style),ref:"root","data-notification-instance-id":e.notificationInstanceId},[e.canClose?(Object(D["openBlock"])(),Object(D["createElementBlock"])("button",{key:0,type:"button",class:"close","data-dismiss":"alert",onClick:t[0]||(t[0]=t=>e.closeNotification(t))}," × ")):Object(D["createCommentVNode"])("",!0),e.title?(Object(D["openBlock"])(),Object(D["createElementBlock"])("strong",wi,Object(D["toDisplayString"])(e.title),1)):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("div",Si,[e.message?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,innerHTML:e.$sanitize(e.message)},null,8,Ci)):Object(D["createCommentVNode"])("",!0),e.message?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ki,[Object(D["renderSlot"])(e.$slots,"default")]))])],14,ji)]),_:3},8,["name"])])]),_:3},8,["name"])]))]),_:3},8,["name"])}const{$:Ei}=window;var Pi=Object(D["defineComponent"])({props:{notificationId:String,notificationInstanceId:String,title:String,context:String,type:String,noclear:Boolean,toastLength:{type:Number,default:12e3},style:[String,Object],animate:Boolean,message:String,cssClass:String},computed:{cssClasses(){const e={};return this.context&&(e["notification-"+this.context]=!0),this.cssClass&&(e[this.cssClass]=!0),e},canClose(){return"persistent"===this.type||!this.noclear}},emits:["closed"],data(){return{deleted:!1}},mounted(){const e=()=>{setTimeout(()=>{this.deleted=!0},this.toastLength)};"toast"===this.type&&e(),this.style&&Ei(this.$refs.root).css(this.style)},methods:{toastClosed(){Object(D["nextTick"])(()=>{this.$emit("closed")})},closeNotification(e){this.canClose&&e&&e.target&&(this.deleted=!0,Object(D["nextTick"])(()=>{this.$emit("closed")})),this.markNotificationAsRead()},markNotificationAsRead(){this.notificationId&&te.post({module:"CoreHome",action:"markNotificationAsRead"},{notificationId:this.notificationId},{withTokenInUrl:!0})}}});Pi.render=Di;var Ti=Pi;const Vi={class:"notification-group"},xi=["innerHTML"];function Ni(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Notification");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Vi,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.notifications,(t,o)=>(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:t.id||"no-id-"+o,"notification-id":t.id,title:t.title,context:t.context,type:t.type,noclear:t.noclear,"toast-length":t.toastLength,style:Object(D["normalizeStyle"])(t.style),animate:t.animate,message:t.message,"notification-instance-id":t.notificationInstanceId,"css-class":t.class,onClosed:o=>e.removeNotification(t.id)},{default:Object(D["withCtx"])(()=>[Object(D["createElementVNode"])("div",{innerHTML:e.$sanitize(t.message)},null,8,xi)]),_:2},1032,["notification-id","title","context","type","noclear","toast-length","style","animate","message","notification-instance-id","css-class","onClosed"]))),128))])}function Bi(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const Ni=Object(D["createElementVNode"])("span",{class:"icon-help"},null,-1),Bi=[Ni];function Ii(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{class:"item-help-icon",tabindex:"5",href:"javascript:",onClick:t[0]||(t[0]=(...t)=>e.showHelp&&e.showHelp(...t))},Bi)}const Mi="reportingMenu-help";var Fi=Object(D["defineComponent"])({props:{message:{type:String,required:!0},name:{type:String,required:!0}},data(){return{currentName:""}},methods:{showHelp(){if(""!==this.currentName)return Ti.remove(Mi),void(this.currentName="");Ti.show({context:"info",id:Mi,type:"help",noclear:!0,class:"help-notification",message:this.message,placeat:"#notificationContainer",prepend:!0}),""!==this.name&&(this.currentName=this.name)}}});Fi.render=Ii;var Li=Fi;function Ri(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */const{$:Ii}=window;class Mi{constructor(){Bi(this,"privateState",Object(D["reactive"])({notifications:[]})),Bi(this,"nextNotificationId",0)}get state(){return Object(D["readonly"])(this.privateState)}appendNotification(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.push(e)}prependNotification(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.unshift(e)}remove(e){this.privateState.notifications=this.privateState.notifications.filter(t=>t.id!==e)}parseNotificationDivs(){const e=Ii('[data-role="notification"]'),t=[];e.each((o,i)=>{const n=Ii(i),a=n.data(),r=n.html();r&&t.push(Object.assign(Object.assign({},a),{},{message:r,animate:!1})),e.remove()}),t.forEach(e=>this.show(e))}clearTransientNotifications(){this.privateState.notifications=this.privateState.notifications.filter(e=>"transient"!==e.type)}show(e){this.checkMessage(e.message);let t=e.prepend?this.prependNotification:this.appendNotification,o="#notificationContainer";if(e.placeat)o=e.placeat;else{const e=".modal.open .modal-content",i=document.querySelector(e);i&&(i.querySelector("#modalNotificationContainer")||Ii(i).prepend(''),o=e+" #modalNotificationContainer",t=this.prependNotification)}const i=e.group||(o?o.toString():"");this.initializeNotificationContainer(o,i);const n=(this.nextNotificationId+=1).toString();return t.call(this,Object.assign(Object.assign({},e),{},{noclear:!!e.noclear,group:i,notificationId:e.id,notificationInstanceId:n,type:e.type||"transient"})),n}scrollToNotification(e){setTimeout(()=>{const t=document.querySelector(`[data-notification-instance-id='${e}']`);t&&M.helper.lazyScrollTo(t,250)})}toast(e){this.checkMessage(e.message);const t=e.placeat?Ii(e.placeat):void 0;if(!t||!t.length)throw new Error("A valid selector is required for the placeat option when using Notification.toast().");const o=document.createElement("div");o.style.position="absolute",o.style.top=t.offset().top+"px",o.style.left=t.offset().left+"px",o.style.zIndex="1000",document.body.appendChild(o);const i=fe({render:()=>Object(D["createVNode"])(Ti,Object.assign(Object.assign({},e),{},{notificationId:e.id,type:"toast",onClosed:()=>{i.unmount()}}))});i.mount(o)}initializeNotificationContainer(e,t){if(!e)return;const o=Ii(e);if(o.children(".notification-group").length)return;const i=window.CoreHome.NotificationGroup,n=fe({template:'',data:()=>({group:t})});n.component("NotificationGroup",i),n.mount(o[0])}checkMessage(e){if(!e)throw new Error("No message given, cannot display notification")}}const Fi=new Mi;var Li=Fi;Ii(()=>Fi.parseNotificationDivs());var Ri=Object(D["defineComponent"])({props:{group:String},components:{Notification:Ti},computed:{notifications(){return Li.state.notifications.filter(e=>this.group?this.group===e.group:!e.group)}},methods:{removeNotification(e){Li.remove(e)}}});Ri.render=Ni;var Ai=Ri;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */class Ai{constructor(){Ri(this,"state",Object(D["reactive"])({initialSites:[],isInitialized:!1})),Ri(this,"stateFiltered",Object(D["reactive"])({initialSites:[],isInitialized:!1,excludedSites:[],onlySitesWithAdminAccess:!1,onlySitesWithAtLeastWriteAccess:!1,siteTypesToExclude:[]})),Ri(this,"currentRequestAbort",null),Ri(this,"limitRequest",void 0),Ri(this,"initialSites",Object(D["computed"])(()=>Object(D["readonly"])(this.state.initialSites))),Ri(this,"initialSitesFiltered",Object(D["computed"])(()=>Object(D["readonly"])(this.stateFiltered.initialSites)))}isFiltered(e=!1,t=[],o=!1,i=[]){return t.length>0||e||o||i.length>0}matchesCurrentFilteredState(e=!1,t=[],o=!1,i=[]){return!this.stateFiltered.isInitialized&&!this.isFiltered(e,t,o,i)||this.stateFiltered.isInitialized&&t.length===this.stateFiltered.excludedSites.length&&t.every((e,t)=>e===this.stateFiltered.excludedSites[t])&&e===this.stateFiltered.onlySitesWithAdminAccess&&o===this.stateFiltered.onlySitesWithAtLeastWriteAccess&&i.length===this.stateFiltered.siteTypesToExclude.length&&i.every((e,t)=>e===this.stateFiltered.siteTypesToExclude[t])}loadInitialSites(e=!1,t=[],o=!1,i=[]){return this.state.isInitialized&&!this.isFiltered(e,t,o,i)?Promise.resolve(Object(D["readonly"])(this.state.initialSites)):this.stateFiltered.isInitialized&&this.matchesCurrentFilteredState(e,t,o,i)?Promise.resolve(Object(D["readonly"])(this.stateFiltered.initialSites)):this.isFiltered(e,t,o,i)?this.searchSite("%",e,t,o,i).then(n=>(this.stateFiltered.isInitialized=!0,this.stateFiltered.excludedSites=t,this.stateFiltered.onlySitesWithAdminAccess=e,this.stateFiltered.onlySitesWithAtLeastWriteAccess=o,this.stateFiltered.siteTypesToExclude=i,null!==n&&(this.stateFiltered.initialSites=n),n)):this.state.isInitialized?Promise.resolve(Object(D["readonly"])(this.state.initialSites)):this.searchSite("%",e,t,o,i).then(e=>(this.state.isInitialized=!0,null!==e&&(this.state.initialSites=e),e))}loadSite(e){"all"===e?U.updateUrl(Object.assign(Object.assign({},U.urlParsed.value),{},{module:"MultiSites",action:"index",date:U.parsed.value.date,period:U.parsed.value.period})):U.updateUrl(Object.assign(Object.assign({},U.urlParsed.value),{},{segment:"",idSite:e}),Object.assign(Object.assign({},U.hashParsed.value),{},{segment:"",idSite:e}))}searchSite(e,t=!1,o=[],i=!1,n=[]){return e?(this.currentRequestAbort&&this.currentRequestAbort.abort(),this.limitRequest||(this.limitRequest=te.fetch({method:"SitesManager.getNumWebsitesToDisplayPerPage"})),this.limitRequest.then(a=>{const r=a.value;let s="view";return t?s="admin":i&&(s="write"),this.currentRequestAbort=new AbortController,te.fetch({method:"SitesManager.getSitesWithMinimumAccess",permission:s,limit:r,pattern:e,sitesToExclude:o,siteTypesToExclude:n},{abortController:this.currentRequestAbort,abortable:!1})}).then(e=>e?this.processWebsitesList(e):null).finally(()=>{this.currentRequestAbort=null})):this.loadInitialSites(t,o,i,n)}processWebsitesList(e){let t=e;return t&&t.length?(t=t.map(e=>Object.assign(Object.assign({},e),{},{name:e.group?`[${e.group}] ${e.name}`:e.name})),t.sort((e,t)=>e.name.toLowerCase()t.name.toLowerCase()?1:0),t):[]}}var _i=new Ai;const Hi=["value","name"],$i=["title"],Ui=["textContent"],qi={key:1,class:"placeholder"},Wi={class:"dropdown"},zi={class:"custom_select_search"},Gi=["placeholder"],Yi={key:0},Ki={class:"custom_select_container"},Qi=["onClick"],Ji=["innerHTML","href","title"],Xi={class:"custom_select_ul_list"},Zi={class:"noresult"},en={key:1};function tn(e,t,o,i,n,a){var r,s,l,c;const d=Object(D["resolveComponent"])("AllSitesLink"),u=Object(D["resolveDirective"])("tooltips"),m=Object(D["resolveDirective"])("focus-if"),p=Object(D["resolveDirective"])("focus-anywhere-but-here");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])(["siteSelector piwikSelector borderedControl",{expanded:e.showSitesList,disabled:!e.hasMultipleSites}])},[e.name?(Object(D["openBlock"])(),Object(D["createElementBlock"])("input",{key:0,type:"hidden",value:null===(r=e.displayedModelValue)||void 0===r?void 0:r.id,name:e.name},null,8,Hi)):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{ref:"selectorLink",onClick:t[0]||(t[0]=(...t)=>e.onClickSelector&&e.onClickSelector(...t)),onKeydown:t[1]||(t[1]=t=>e.onPressEnter(t)),href:"javascript:void(0)",class:Object(D["normalizeClass"])([{loading:e.isLoading},"title"]),tabindex:"4",title:e.selectorLinkTitle},[Object(D["createElementVNode"])("span",{class:Object(D["normalizeClass"])(["icon icon-chevron-down",{iconHidden:e.isLoading,collapsed:!e.showSitesList}])},null,2),Object(D["createElementVNode"])("span",null,[null!==(s=e.displayedModelValue)&&void 0!==s&&s.name||!e.placeholder?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,textContent:Object(D["toDisplayString"])((null===(l=e.displayedModelValue)||void 0===l?void 0:l.name)||e.firstSiteName)},null,8,Ui)):Object(D["createCommentVNode"])("",!0),null!==(c=e.displayedModelValue)&&void 0!==c&&c.name||!e.placeholder?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",qi,Object(D["toDisplayString"])(e.placeholder),1))])],42,$i)),[[u]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",Wi,[Object(D["withDirectives"])(Object(D["createElementVNode"])("div",zi,[Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{type:"text",onClick:t[2]||(t[2]=t=>{e.searchTerm="",e.loadInitialSites()}),"onUpdate:modelValue":t[3]||(t[3]=t=>e.searchTerm=t),tabindex:"4",class:"websiteSearch inp browser-default",placeholder:e.translate("General_Search")},null,8,Gi),[[D["vModelText"],e.searchTerm],[m,{focused:e.shouldFocusOnSearch}]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("img",{title:"Clear",onClick:t[4]||(t[4]=t=>{e.searchTerm="",e.loadInitialSites()}),class:"reset",src:"plugins/CoreHome/images/reset_search.png"},null,512),[[D["vShow"],e.searchTerm]])],512),[[D["vShow"],e.autocompleteMinSites<=e.sites.length||e.searchTerm]]),"top"===e.allSitesLocation&&e.showAllSitesItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Yi,[Object(D["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[5]||(t[5]=t=>e.onAllSitesClick(t))},null,8,["href","all-sites-text"])])):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ki,[Object(D["createElementVNode"])("ul",{class:"custom_select_ul_list",onClick:t[7]||(t[7]=t=>e.showSitesList=!1)},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.sites,(o,i)=>Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{onClick:t=>e.switchSite(Object.assign(Object.assign({},o),{},{id:o.idsite}),t),key:i},[Object(D["createElementVNode"])("a",{onClick:t[6]||(t[6]=e=>e.preventDefault()),innerHTML:e.$sanitize(e.getMatchedSiteName(o.name)),tabindex:"4",href:e.getUrlForSiteId(o.idsite),title:o.name},null,8,Ji)],8,Qi)),[[D["vShow"],!(!e.showSelectedSite&&""+e.activeSiteId===""+o.idsite)]])),128))]),Object(D["withDirectives"])(Object(D["createElementVNode"])("ul",Xi,[Object(D["createElementVNode"])("li",null,[Object(D["createElementVNode"])("div",Zi,Object(D["toDisplayString"])(e.translate("SitesManager_NotFound")+" "+e.searchTerm),1)])],512),[[D["vShow"],!e.sites.length&&e.searchTerm]])])),[[u,{content:e.tooltipContent}]]),"bottom"===e.allSitesLocation&&e.showAllSitesItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",en,[Object(D["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[8]||(t[8]=t=>e.onAllSitesClick(t))},null,8,["href","all-sites-text"])])):Object(D["createCommentVNode"])("",!0)],512),[[D["vShow"],e.showSitesList]])],2)),[[p,{blur:e.onBlur}]])}const on=["innerHTML","href"];function nn(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{onClick:t[1]||(t[1]=e=>this.onClick(e)),class:"custom_select_all"},[Object(D["createElementVNode"])("a",{onClick:t[0]||(t[0]=e=>e.preventDefault()),innerHTML:e.$sanitize(e.allSitesText),tabindex:"4",href:e.href},null,8,on)])}var an=Object(D["defineComponent"])({props:{href:String,allSitesText:String},emits:["click"],methods:{onClick(e){this.$emit("click",e)}}});an.render=nn;var rn=an,sn=Object(D["defineComponent"])({props:{modelValue:Object,showSelectedSite:{type:Boolean,default:!1},showAllSitesItem:{type:Boolean,default:!0},switchSiteOnSelect:{type:Boolean,default:!0},onlySitesWithAdminAccess:{type:Boolean,default:!1},name:{type:String,default:""},allSitesText:{type:String,default:a("General_MultiSitesSummary")},allSitesLocation:{type:String,default:"bottom"},placeholder:String,defaultToFirstSite:Boolean,sitesToExclude:{type:Array,default:()=>[]},onlySitesWithAtLeastWriteAccess:{type:Boolean,default:!1},siteTypesToExclude:{type:Array,default:()=>[]}},emits:["update:modelValue","blur"],components:{AllSitesLink:rn},directives:{FocusAnywhereButHere:et,FocusIf:ot,Tooltips:rt},watch:{searchTerm(){this.onSearchTermChanged()}},data(){return{searchTerm:"",activeSiteId:""+M.idSite,showSitesList:!1,isLoading:!1,sites:[],autocompleteMinSites:parseInt(M.config.autocomplete_min_sites,10)}},created(){this.searchSite=Ee(this.searchSite),!this.modelValue&&M.idSite&&this.$emit("update:modelValue",{id:M.idSite,name:M.helper.htmlDecode(M.siteName)})},mounted(){window.initTopControls(),this.loadInitialSites().then(()=>{this.shouldDefaultToFirstSite&&this.$emit("update:modelValue",{id:this.sites[0].idsite,name:this.sites[0].name})});const e=a("CoreHome_ShortcutWebsiteSelector");M.helper.registerShortcut("w",e,e=>{if(e.altKey)return;e.preventDefault?e.preventDefault():e.returnValue=!1;const t=this.$refs.selectorLink;t&&(t.click(),t.focus())})},computed:{shouldFocusOnSearch(){return this.showSitesList&&this.autocompleteMinSites<=this.sites.length||this.searchTerm},selectorLinkTitle(){return this.hasMultipleSites&&this.displayedModelValue?a("CoreHome_ChangeCurrentWebsite",this.htmlEntities(this.displayedModelValue.name)):""},hasMultipleSites(){const e=_i.matchesCurrentFilteredState(this.onlySitesWithAdminAccess,this.sitesToExclude?this.sitesToExclude:[],this.onlySitesWithAtLeastWriteAccess,this.siteTypesToExclude?this.siteTypesToExclude:[])&&_i.initialSitesFiltered.value&&_i.initialSitesFiltered.value.length?_i.initialSitesFiltered.value:_i.initialSites.value;return e&&e.length>1},firstSiteName(){const e=_i.initialSitesFiltered.value&&_i.initialSitesFiltered.value.length?_i.initialSitesFiltered.value:_i.initialSites.value;return e&&e.length>0?e[0].name:""},urlAllSites(){const e=U.stringify(Object.assign(Object.assign({},U.urlParsed.value),{},{module:"MultiSites",action:"index",date:U.parsed.value.date,period:U.parsed.value.period}));return"?"+e},shouldDefaultToFirstSite(){var e;return!(null!==(e=this.modelValue)&&void 0!==e&&e.id)&&(!this.hasMultipleSites||this.defaultToFirstSite)&&this.sites[0]},displayedModelValue(){return this.modelValue?this.modelValue:M.idSite?{id:M.idSite,name:M.helper.htmlDecode(M.siteName)}:this.shouldDefaultToFirstSite?{id:this.sites[0].idsite,name:this.sites[0].name}:null},tooltipContent(){return function(){const e=$(this).attr("title")||"";return M.helper.htmlEntities(e)}}},methods:{onSearchTermChanged(){this.searchTerm?(this.isLoading=!0,this.searchSite(this.searchTerm)):(this.isLoading=!1,this.loadInitialSites())},onAllSitesClick(e){this.switchSite({id:"all",name:this.$props.allSitesText},e),this.showSitesList=!1},switchSite(e,t){const o=-1!==navigator.userAgent.indexOf("Mac OS X")?t.metaKey:t.ctrlKey;t&&o&&t.target&&t.target.href?window.open(t.target.href,"_blank"):(this.$emit("update:modelValue",{id:e.id,name:e.name}),this.switchSiteOnSelect&&this.activeSiteId!==e.id&&_i.loadSite(e.id))},onBlur(){this.showSitesList=!1,this.$emit("blur")},onClickSelector(){this.hasMultipleSites&&(this.showSitesList=!this.showSitesList,this.isLoading||this.searchTerm||this.loadInitialSites())},onPressEnter(e){"Enter"===e.key&&(e.preventDefault(),this.showSitesList=!this.showSitesList,this.showSitesList&&!this.isLoading&&this.loadInitialSites())},getMatchedSiteName(e){const t=e.toUpperCase().indexOf(this.searchTerm.toUpperCase());if(-1===t||this.isLoading)return this.htmlEntities(e);const o=this.htmlEntities(e.substring(0,t)),i=this.htmlEntities(e.substring(t+this.searchTerm.length));return`${o}${this.searchTerm}${i}`},loadInitialSites(){return _i.loadInitialSites(this.onlySitesWithAdminAccess,this.sitesToExclude?this.sitesToExclude:[],this.onlySitesWithAtLeastWriteAccess,this.siteTypesToExclude?this.siteTypesToExclude:[]).then(e=>{this.sites=e||[]})},searchSite(e){this.isLoading=!0,_i.searchSite(e,this.onlySitesWithAdminAccess,this.sitesToExclude?this.sitesToExclude:[],this.onlySitesWithAtLeastWriteAccess,this.siteTypesToExclude?this.siteTypesToExclude:[]).then(t=>{e===this.searchTerm&&t&&(this.sites=t)}).finally(()=>{this.isLoading=!1})},getUrlForSiteId(e){const t=U.stringify(Object.assign(Object.assign({},U.urlParsed.value),{},{segment:"",idSite:e})),o=U.stringify(Object.assign(Object.assign({},U.hashParsed.value),{},{segment:"",idSite:e}));return`?${t}#?${o}`},htmlEntities(e){return M.helper.htmlEntities(e)}}});sn.render=tn;var ln=sn;const cn={ref:"root",class:"quickAccessInside"},dn=["title","placeholder"],un={class:"dropdown"},mn={class:"no-result"},pn=["onClick"],hn=["onMouseenter","onClick"],gn={class:"quickAccessMatomoSearch"},bn=["onMouseenter","onClick"],fn=["textContent"],vn={class:"quick-access-category helpCategory"},On=["href"];function yn(e,t,o,i,n,a){const r=Object(D["resolveDirective"])("focus-if"),s=Object(D["resolveDirective"])("tooltips"),l=Object(D["resolveDirective"])("focus-anywhere-but-here");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",cn,[Object(D["createElementVNode"])("span",{class:"icon-search",onMouseenter:t[0]||(t[0]=t=>e.searchActive=!0)},null,32),Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{class:"s",onKeydown:t[1]||(t[1]=t=>e.onKeypress(t)),onFocus:t[2]||(t[2]=t=>e.searchActive=!0),"onUpdate:modelValue":t[3]||(t[3]=t=>e.searchTerm=t),type:"text",tabindex:"2",title:e.quickAccessTitle,placeholder:e.translate("General_Search"),ref:"input"},null,40,dn),[[D["vModelText"],e.searchTerm],[r,{focused:e.searchActive}],[s]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",un,[Object(D["withDirectives"])(Object(D["createElementVNode"])("ul",null,[Object(D["createElementVNode"])("li",mn,Object(D["toDisplayString"])(e.translate("General_SearchNoResults")),1)],512),[[D["vShow"],!(e.numMenuItems>0||e.sites.length)]]),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.menuItems,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",{key:t.title},[Object(D["createElementVNode"])("li",{class:"quick-access-category",onClick:o=>{e.searchTerm=t.title,e.searchMenu(e.searchTerm)}},Object(D["toDisplayString"])(t.title),9,pn),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.items,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:Object(D["normalizeClass"])(["result",{selected:t.menuIndex===e.searchIndex}]),onMouseenter:o=>e.searchIndex=t.menuIndex,onClick:o=>e.selectMenuItem(t.index),key:t.index},[Object(D["createElementVNode"])("a",null,Object(D["toDisplayString"])(t.name.trim()),1)],42,hn))),128))]))),128)),Object(D["createElementVNode"])("ul",gn,[Object(D["withDirectives"])(Object(D["createElementVNode"])("li",{class:"quick-access-category websiteCategory"},Object(D["toDisplayString"])(e.translate("SitesManager_Sites")),513),[[D["vShow"],e.hasSitesSelector&&e.sites.length||e.isLoading]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("li",{class:"no-result"},Object(D["toDisplayString"])(e.translate("MultiSites_LoadingWebsites")),513),[[D["vShow"],e.hasSitesSelector&&e.isLoading]]),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.sites,(t,o)=>Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:Object(D["normalizeClass"])(["result",{selected:e.numMenuItems+o===e.searchIndex}]),onMouseenter:t=>e.searchIndex=e.numMenuItems+o,onClick:o=>e.selectSite(t.idsite),key:t.idsite},[Object(D["createElementVNode"])("a",{textContent:Object(D["toDisplayString"])(t.name)},null,8,fn)],42,bn)),[[D["vShow"],e.hasSitesSelector&&!e.isLoading]])),128))]),Object(D["createElementVNode"])("ul",null,[Object(D["createElementVNode"])("li",vn,Object(D["toDisplayString"])(e.translate("General_HelpResources")),1),Object(D["createElementVNode"])("li",{class:Object(D["normalizeClass"])([{selected:"help"===e.searchIndex},"quick-access-help"]),onMouseenter:t[4]||(t[4]=t=>e.searchIndex="help")},[Object(D["createElementVNode"])("a",{href:"https://matomo.org?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=QuickSearch&s="+encodeURIComponent(e.searchTerm),target:"_blank"},Object(D["toDisplayString"])(e.translate("CoreHome_SearchOnMatomo",e.searchTerm)),9,On)],34)])],512),[[D["vShow"],e.searchTerm&&e.searchActive]])])),[[l,{blur:e.onBlur}]])}const{ListingFormatter:jn}=window;function wn(e){const t=e.getBoundingClientRect(),o=window.$(window);return t.top>=0&&t.left>=0&&t.bottom<=o.height()&&t.right<=o.width()}function Sn(e){e&&e.scrollIntoView&&e.scrollIntoView()}var Cn=Object(D["defineComponent"])({directives:{FocusAnywhereButHere:et,FocusIf:ot,Tooltips:rt},watch:{searchActive(e){const t=this.$refs.root;if(!t||!t.parentElement)return;const o=t.parentElement.classList;o.toggle("active",e),o.toggle("expanded",e)}},mounted(){const e=this.$refs.root;e&&e.parentElement&&e.parentElement.classList.add("quick-access","piwikSelector"),"undefined"!==typeof window.initTopControls&&window.initTopControls&&window.initTopControls(),M.helper.registerShortcut("f",a("CoreHome_ShortcutSearch"),e=>{e.altKey||(e.preventDefault(),Sn(this.$refs.root),this.activateSearch())})},data(){const e=!!document.querySelector(".segmentEditorPanel");return{menuItems:[],numMenuItems:0,searchActive:!1,searchTerm:"",searchIndex:0,menuIndexCounter:-1,topMenuItems:null,leftMenuItems:null,segmentItems:null,hasSegmentSelector:e,sites:[],isLoading:!1}},created(){this.searchMenu=Ee(this.searchMenu.bind(this))},computed:{hasSitesSelector(){return!!document.querySelector('.top_controls .siteSelector,.top_controls [vue-entry="CoreHome.SiteSelector"]')},quickAccessTitle(){const e=[a("CoreHome_MenuEntries")];return this.hasSegmentSelector&&e.push(a("CoreHome_Segments")),this.hasSitesSelector&&e.push(a("SitesManager_Sites")),a("CoreHome_QuickAccessTitle",jn.formatAnd(e))}},emits:["itemSelected","blur"],methods:{onKeypress(e){const t=this.searchTerm&&this.searchActive,o=9===e.which,i=27===e.which;38===e.which?(this.highlightPreviousItem(),e.preventDefault()):40===e.which?(this.highlightNextItem(),e.preventDefault()):13===e.which?this.clickQuickAccessMenuItem():o&&t||i&&t?this.deactivateSearch():setTimeout(()=>{this.searchActive=!0,this.searchMenu(this.searchTerm)})},highlightPreviousItem(){this.searchIndex-1<0?this.searchIndex=0:this.searchIndex-=1,this.makeSureSelectedItemIsInViewport()},highlightNextItem(){const e=this.$refs.root.querySelectorAll("li.result").length;e<=this.searchIndex+1?this.searchIndex=e-1:this.searchIndex+=1,this.makeSureSelectedItemIsInViewport()},clickQuickAccessMenuItem(){const e=this.getCurrentlySelectedElement();e&&setTimeout(()=>{e.click(),this.$emit("itemSelected",e)},20)},deactivateSearch(){this.searchTerm="",this.searchActive=!1,this.$refs.input&&this.$refs.input.blur()},makeSureSelectedItemIsInViewport(){const e=this.getCurrentlySelectedElement();e&&!wn(e)&&Sn(e)},getCurrentlySelectedElement(){const e=this.$refs.root.querySelectorAll("li.result");if(e&&e.length&&e.item(this.searchIndex))return e.item(this.searchIndex)},searchMenu(e){const t=e.toLowerCase();let o=-1;const i={},n=[],a=e=>{const t=Object.assign({},e);o+=1,t.menuIndex=o;const{category:a}=t;a in i||(n.push({title:a,items:[]}),i[a]=n.length-1);const r=i[a];n[r].items.push(t)};this.resetSearchIndex(),this.hasSitesSelector&&(this.isLoading=!0,_i.searchSite(t).then(e=>{e&&(this.sites=e)}).finally(()=>{this.isLoading=!1}));const r=e=>-1!==e.name.toLowerCase().indexOf(t)||-1!==e.category.toLowerCase().indexOf(t);null===this.topMenuItems&&(this.topMenuItems=this.getTopMenuItems()),null===this.leftMenuItems&&(this.leftMenuItems=this.getLeftMenuItems()),null===this.segmentItems&&(this.segmentItems=this.getSegmentItems());const s=this.topMenuItems.filter(r),l=this.leftMenuItems.filter(r),c=this.segmentItems.filter(r);s.forEach(a),l.forEach(a),c.forEach(a),this.numMenuItems=s.length+l.length+c.length,this.menuItems=n},resetSearchIndex(){this.searchIndex=0,this.makeSureSelectedItemIsInViewport()},selectSite(e){_i.loadSite(e)},selectMenuItem(e){const t=document.querySelector(`[quick_access='${e}']`);if(t){this.deactivateSearch();const e=t.getAttribute("href");if(e&&e.length>10&&t&&t.click)try{t.click()}catch(o){window.$(t).click()}else window.$(t).click()}},onBlur(){this.searchActive=!1,this.$emit("blur")},activateSearch(){this.searchActive=!0},getTopMenuItems(){const e=a("CoreHome_Menu"),t=[];return document.querySelectorAll("nav .sidenav li > a, nav .sidenav li > div > a").forEach(o=>{var i;let n=null===(i=o.textContent)||void 0===i?void 0:i.trim();var a;(!n||null!=o.parentElement&&null!=o.parentElement.tagName&&"DIV"===o.parentElement.tagName)&&(n=null===(a=o.getAttribute("title"))||void 0===a?void 0:a.trim());n&&(t.push({name:n,index:this.menuIndexCounter+=1,category:e}),o.setAttribute("quick_access",""+this.menuIndexCounter))}),t},getLeftMenuItems(){const e=[];return document.querySelectorAll("#secondNavBar .menuTab").forEach(t=>{var o;const i=window.$(t).find("> .item");let n=(null===(o=i[0])||void 0===o?void 0:o.innerText.trim())||"";n&&-1!==n.lastIndexOf("\n")&&(n=n.slice(0,n.lastIndexOf("\n")).trim()),window.$(t).find("li .item").each((t,o)=>{var i;const a=null===(i=o.textContent)||void 0===i?void 0:i.trim();a&&(e.push({name:a,category:n,index:this.menuIndexCounter+=1}),o.setAttribute("quick_access",""+this.menuIndexCounter))})}),e},getSegmentItems(){if(!this.hasSegmentSelector)return[];const e=a("CoreHome_Segments"),t=[];return document.querySelectorAll(".segmentList [data-idsegment]").forEach(o=>{var i;const n=null===(i=o.querySelector(".segname"))||void 0===i||null===(i=i.textContent)||void 0===i?void 0:i.trim();n&&(t.push({name:n,category:e,index:this.menuIndexCounter+=1}),o.setAttribute("quick_access",""+this.menuIndexCounter))}),t}}});Cn.render=yn;var kn=Cn;const Dn={class:"fieldArray form-group"},En={key:0,class:"fieldUiControl"},Pn=["onClick","title"];function Tn(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Field");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Dn,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.modelValue,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])(["fieldArrayTable multiple valign-wrapper",{["fieldArrayTable"+o]:!0}]),key:o},[e.field.uiControl?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",En,[Object(D["createVNode"])(r,{"full-width":!0,"model-value":t,options:e.field.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(t,o),"model-modifiers":e.field.modelModifiers,placeholder:" ",uicontrol:e.field.uiControl,title:e.field.title,name:`${e.name}-${o}`,id:`${e.id}-${o}`,"template-file":e.field.templateFile,component:e.field.component},null,8,["model-value","options","onUpdate:modelValue","model-modifiers","uicontrol","title","name","id","template-file","component"])])):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])(Object(D["createElementVNode"])("span",{onClick:t=>e.removeEntry(o),class:"icon-minus valign",title:e.translate("General_Remove")},null,8,Pn),[[D["vShow"],o+1!==e.modelValue.length]])],2))),128))])}const Vn=Se("CorePluginsAdmin","Field");var xn=Object(D["defineComponent"])({props:{modelValue:Array,name:String,id:String,field:Object,rows:String},components:{Field:Vn},emits:["update:modelValue"],watch:{modelValue(e){this.checkEmptyModelValue(e)}},mounted(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue(e){e&&e.length&&""===e.slice(-1)[0]||this.rows&&!((this.modelValue||[]).length-1&&this.modelValue){const t=this.modelValue.filter((t,o)=>o!==e);this.$emit("update:modelValue",t)}}}});xn.render=Tn;var Nn=xn;const Bn={class:"multiPairField form-group"},In={key:1,class:"fieldUiControl fieldUiControl2"},Mn={key:2,class:"fieldUiControl fieldUiControl3"},Fn={key:3,class:"fieldUiControl fieldUiControl4"},Ln=["onClick","title"];function Rn(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Field");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Bn,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.modelValue,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])(["multiPairFieldTable multiple valign-wrapper",{["multiPairFieldTable"+o]:!0,[`has${e.fieldCount}Fields`]:!0}]),key:o},[e.field1?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,class:Object(D["normalizeClass"])(["fieldUiControl fieldUiControl1",{hasMultiFields:e.field1.type&&e.field2.type}])},[Object(D["createVNode"])(r,{"full-width":!0,"model-value":t[e.field1.key],options:e.field1.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(o,e.field1.key,t),"model-modifiers":e.field1.modelModifiers,placeholder:" ",uicontrol:e.field1.uiControl,name:`${e.name}-p1-${o}`,id:`${e.id}-p1-${o}`,title:e.field1.title,"template-file":e.field1.templateFile,component:e.field1.component},null,8,["model-value","options","onUpdate:modelValue","model-modifiers","uicontrol","name","id","title","template-file","component"])],2)):Object(D["createCommentVNode"])("",!0),e.field2?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",In,[Object(D["createVNode"])(r,{"full-width":!0,options:e.field2.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(o,e.field2.key,t),"model-value":t[e.field2.key],"model-modifiers":e.field2.modelModifiers,placeholder:" ",uicontrol:e.field2.uiControl,name:`${e.name}-p2-${o}`,id:`${e.id}-p2-${o}`,title:e.field2.title,"template-file":e.field2.templateFile,component:e.field2.component},null,8,["options","onUpdate:modelValue","model-value","model-modifiers","uicontrol","name","id","title","template-file","component"])])):Object(D["createCommentVNode"])("",!0),e.field3?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Mn,[Object(D["createVNode"])(r,{"full-width":!0,options:e.field3.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(o,e.field3.key,t),"model-value":t[e.field3.key],"model-modifiers":e.field3.modelModifiers,placeholder:" ",uicontrol:e.field3.uiControl,name:`${e.name}-p3-${o}`,id:`${e.id}-p3-${o}`,title:e.field3.title,"template-file":e.field3.templateFile,component:e.field3.component},null,8,["options","onUpdate:modelValue","model-value","model-modifiers","uicontrol","name","id","title","template-file","component"])])):Object(D["createCommentVNode"])("",!0),e.field4?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Fn,[Object(D["createVNode"])(r,{"full-width":!0,options:e.field4.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(o,e.field4.key,t),"model-value":t[e.field4.key],"model-modifiers":e.field4.modelModifiers,placeholder:" ",uicontrol:e.field4.uiControl,name:`${e.name}-p4-${o}`,id:`${e.id}-p4-${o}`,title:e.field4.title,"template-file":e.field4.templateFile,component:e.field4.component},null,8,["options","onUpdate:modelValue","model-value","model-modifiers","uicontrol","name","id","title","template-file","component"])])):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])(Object(D["createElementVNode"])("span",{onClick:t=>e.removeEntry(o),class:"icon-minus valign",title:e.translate("General_Remove")},null,8,Ln),[[D["vShow"],o+1!==e.modelValue.length]])],2))),128))])}const An=Se("CorePluginsAdmin","Field");var _n=Object(D["defineComponent"])({props:{modelValue:Array,name:String,id:String,field1:Object,field2:Object,field3:Object,field4:Object,rows:Number},components:{Field:An},computed:{fieldCount(){return this.field1&&this.field2&&this.field3&&this.field4?4:this.field1&&this.field2&&this.field3?3:this.field1&&this.field2?2:this.field1?1:0}},emits:["update:modelValue"],watch:{modelValue(e){this.checkEmptyModelValue(e)}},mounted(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue(e){e&&e.length&&!this.isEmptyValue(e.slice(-1)[0])||this.rows&&!(this.modelValue.length-1&&this.modelValue){const t=this.modelValue.filter((t,o)=>o!==e);this.$emit("update:modelValue",t)}},isEmptyValue(e){const{fieldCount:t}=this;if(4===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key]&&!e[this.field4.key])return!1}else if(3===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key])return!1}else if(2===t){if(!e[this.field1.key]&&!e[this.field2.key])return!1}else if(1===t&&!e[this.field1.key])return!1;return!0},makeEmptyValue(){const e={};return this.field1&&this.field1.key&&(e[this.field1.key]=""),this.field2&&this.field2.key&&(e[this.field2.key]=""),this.field3&&this.field3.key&&(e[this.field3.key]=""),this.field4&&this.field4.key&&(e[this.field4.key]=""),e}}});_n.render=Rn;var Hn=_n;const $n=["disabled"],Un=Object(D["createElementVNode"])("span",{class:"icon-chevron-left"},null,-1),qn=[Un],Wn=["title"],zn=Object(D["createElementVNode"])("span",{class:"icon icon-calendar"},null,-1),Gn={class:"flex"},Yn={class:"period-type period-selector-options-column"},Kn={id:"otherPeriods"},Qn={class:"period-selector-calendar-column"},Jn={class:"apply-button-container"},Xn=["disabled","value"],Zn={key:0,id:"ajaxLoadingCalendar"},ea={class:"loadingSegment"},ta=["disabled"],oa=Object(D["createElementVNode"])("span",{class:"icon-chevron-right"},null,-1),ia=[oa];function na(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("PeriodOptions"),s=Object(D["resolveComponent"])("PresetDateRanges"),l=Object(D["resolveComponent"])("DateRangePicker"),c=Object(D["resolveComponent"])("PeriodDatePicker"),d=Object(D["resolveComponent"])("PeriodSelectorCompareControls"),u=Object(D["resolveComponent"])("ActivityIndicator"),m=Object(D["resolveDirective"])("tooltips"),p=Object(D["resolveDirective"])("expand-on-click");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{ref:"root",class:Object(D["normalizeClass"])(["periodSelector piwikSelector",{"periodSelector-withPrevNext":e.canShowMovePeriod}])},[e.canShowMovePeriod?(Object(D["openBlock"])(),Object(D["createElementBlock"])("button",{key:0,class:"move-period move-period-prev",onClick:t[0]||(t[0]=t=>e.movePeriod(-1)),disabled:e.isPeriodMoveDisabled(-1)},qn,8,$n)):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("button",{ref:"title",id:"date",class:"title",tabindex:"4",title:e.translate("General_ChooseDate",e.currentlyViewingText)},[zn,Object(D["createTextVNode"])(" "+Object(D["toDisplayString"])(e.currentlyViewingText),1)],8,Wn)),[[m]]),Object(D["createElementVNode"])("div",{id:"periodMore",class:Object(D["normalizeClass"])(["dropdown","range"===e.selectedPeriod?"dual-calendar":"single-calendar"])},[Object(D["createElementVNode"])("div",Gn,[Object(D["createElementVNode"])("div",Yn,[Object(D["createElementVNode"])("h6",null,[Object(D["createElementVNode"])("b",null,Object(D["toDisplayString"])(e.translate("General_ChoosePeriod")),1)]),Object(D["createElementVNode"])("div",Kn,[Object(D["createVNode"])(r,{modelValue:e.selectedPeriod,"onUpdate:modelValue":t[1]||(t[1]=t=>e.selectedPeriod=t),periods:e.periodsFiltered,"checked-period-id":"period"===e.uiSelection.type?e.uiSelection.id:null,"active-date-period":e.committedPeriod,onSelect:t[2]||(t[2]=t=>e.onPeriodOptionSelected(t)),onDblclick:t[3]||(t[3]=t=>e.onPeriodOptionDblClick(t))},null,8,["modelValue","periods","checked-period-id","active-date-period"]),Object(D["createVNode"])(s,{modelValue:e.activePresetId,"onUpdate:modelValue":t[4]||(t[4]=t=>e.activePresetId=t),"checked-preset-id":"preset"===e.uiSelection.type?e.uiSelection.id:null,"allowed-periods":e.periodsFiltered,"min-date":e.minAllowedDate,"max-date":e.maxAllowedDate,onSelect:t[5]||(t[5]=t=>e.onPresetDateRangeSelected(t))},null,8,["modelValue","checked-preset-id","allowed-periods","min-date","max-date"])])]),Object(D["createElementVNode"])("div",Qn,[Object(D["createElementVNode"])("div",{class:Object(D["normalizeClass"])({"calendar-disabled":"preset"===e.uiSelection.type}),onClickCapture:t[8]||(t[8]=t=>e.onRangePresetDateCellClickCapture(t))},[Object(D["withDirectives"])(Object(D["createVNode"])(l,{class:"period-range","start-date":e.displayRangeStartDate,"end-date":e.displayRangeEndDate,onRangeChange:t[6]||(t[6]=t=>e.onRangeChange(t.start,t.end)),onSubmit:t[7]||(t[7]=t=>e.onApplyClicked())},null,8,["start-date","end-date"]),[[D["vShow"],"range"===e.calendarViewport]])],34),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",{class:Object(D["normalizeClass"])(["period-date",{"calendar-disabled":"preset"===e.uiSelection.type}])},[Object(D["createVNode"])(c,{id:"datepicker",period:e.singleCalendarPeriod,date:e.singleCalendarSelectedDate,onSelect:t[9]||(t[9]=t=>e.onDatePickerSelected(t.date))},null,8,["period","date"])],2),[[D["vShow"],"single"===e.calendarViewport]]),Object(D["createVNode"])(d,{"is-comparison-enabled":e.isComparisonEnabled,"is-comparing":e.isComparing,"compare-period-type":e.comparePeriodType,"compare-start-date":e.compareStartDate,"compare-end-date":e.compareEndDate,"compare-period-dropdown-options":e.comparePeriodDropdownOptions,"onUpdate:isComparing":t[10]||(t[10]=t=>e.isComparing=t),"onUpdate:comparePeriodType":t[11]||(t[11]=t=>e.comparePeriodType=t),"onUpdate:compareStartDate":t[12]||(t[12]=t=>e.compareStartDate=t),"onUpdate:compareEndDate":t[13]||(t[13]=t=>e.compareEndDate=t)},null,8,["is-comparison-enabled","is-comparing","compare-period-type","compare-start-date","compare-end-date","compare-period-dropdown-options"]),Object(D["createElementVNode"])("div",Jn,[Object(D["createElementVNode"])("input",{type:"submit",id:"calendarApply",class:"btn",onClick:t[14]||(t[14]=t=>e.onApplyClicked()),disabled:!e.isApplyEnabled(),value:e.translate("General_Apply")},null,8,Xn)])])]),e.isLoadingNewPage?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Zn,[Object(D["createVNode"])(u,{loading:!0}),Object(D["createElementVNode"])("div",ea,Object(D["toDisplayString"])(e.translate("SegmentEditor_LoadingSegmentedDataMayTakeSomeTime")),1)])):Object(D["createCommentVNode"])("",!0)],2),e.canShowMovePeriod?(Object(D["openBlock"])(),Object(D["createElementBlock"])("button",{key:1,class:"move-period move-period-next",onClick:t[15]||(t[15]=t=>e.movePeriod(1)),disabled:e.isPeriodMoveDisabled(1)},ia,8,ta)):Object(D["createCommentVNode"])("",!0)],2)),[[p,{expander:"title",onExpand:e.onExpand,onClosed:e.onClosed}]])}const aa={class:"presetDateRanges"},ra={key:0,class:"preset-date-range-group-separator"},sa=["id","checked","onChange"];function la(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",aa,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.groupedPresetDateRanges,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:o,class:"preset-date-range-group"},[o>0?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ra)):Object(D["createCommentVNode"])("",!0),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("p",{key:t.id},[Object(D["createElementVNode"])("label",{class:Object(D["normalizeClass"])({"selected-period-label":e.checkedPresetId===t.id})},[Object(D["createElementVNode"])("input",{type:"radio",name:"presetDateRange",id:"preset_date_"+t.id,checked:e.checkedPresetId===t.id,onChange:o=>e.handlePresetSelected(t.id)},null,40,sa),Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.translate(t.labelKey)),1)],2)]))),128))]))),128))])}
+ */const _i=Object(D["createElementVNode"])("span",{class:"icon-help"},null,-1),Hi=[_i];function $i(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{class:"item-help-icon",tabindex:"5",href:"javascript:",onClick:t[0]||(t[0]=(...t)=>e.showHelp&&e.showHelp(...t))},Hi)}const Ui="reportingMenu-help";var qi=Object(D["defineComponent"])({props:{message:{type:String,required:!0},name:{type:String,required:!0}},data(){return{currentName:""}},methods:{showHelp(){if(""!==this.currentName)return Li.remove(Ui),void(this.currentName="");Li.show({context:"info",id:Ui,type:"help",noclear:!0,class:"help-notification",message:this.message,placeat:"#notificationContainer",prepend:!0}),""!==this.name&&(this.currentName=this.name)}}});qi.render=$i;var Wi=qi;function zi(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const ca={today:"day",yesterday:"day",last7days:"range",last30days:"range",last90days:"range",lastWeekMonSun:"week",lastMonth:"month",lastQuarter:"range",lastYear:"year",thisWeekMonToday:"week",thisMonth:"month",thisQuarter:"range",thisYear:"year"},da=[{id:"today",labelKey:"CoreHome_PresetDateToday"},{id:"yesterday",labelKey:"CoreHome_PresetDateYesterday"},{id:"last7days",labelKey:"CoreHome_PresetDateLast7Days"},{id:"last30days",labelKey:"CoreHome_PresetDateLast30Days"},{id:"last90days",labelKey:"CoreHome_PresetDateLast90Days"},{id:"lastWeekMonSun",labelKey:"CoreHome_PresetDateLastWeekMonSun"},{id:"lastMonth",labelKey:"CoreHome_PresetDateLastMonth"},{id:"lastQuarter",labelKey:"CoreHome_PresetDateLastQuarter"},{id:"lastYear",labelKey:"CoreHome_PresetDateLastYear"},{id:"thisWeekMonToday",labelKey:"CoreHome_PresetDateThisWeekMonToday"},{id:"thisMonth",labelKey:"CoreHome_PresetDateThisMonth"},{id:"thisQuarter",labelKey:"CoreHome_PresetDateThisQuarter"},{id:"thisYear",labelKey:"CoreHome_PresetDateThisYear"}],ua={"day|today":"today","day|yesterday":"yesterday","range|last7":"last7days","range|last30":"last30days","range|last90":"last90days","week|lastweek":"lastWeekMonSun","month|lastmonth":"lastMonth","year|lastyear":"lastYear","week|today":"thisWeekMonToday","month|today":"thisMonth","year|today":"thisYear"};function ma(e,t){return ua[`${e}|${t}`]||null}function pa(e){return new Date(e.getTime())}function ha(e,t){const o=pa(e);return o.setDate(o.getDate()+t),o}function ga(e){return new Date(e.getFullYear(),e.getMonth(),1)}function ba(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function fa(e){const t=(e.getDay()+6)%7;return ha(e,-t)}function va(e){const t=e.getMonth(),o=t-t%3;return new Date(e.getFullYear(),o,1)}function Oa(e,t){return`${d(e)},${d(t)}`}function ya(e,t,o){return eo?new Date(o.getTime()):e}function ja(e,t){const o=pa(t);switch(e){case"today":return{id:e,period:"day",date:"today",startDate:o,endDate:o};case"yesterday":{const t=ha(o,-1);return{id:e,period:"day",date:"yesterday",startDate:t,endDate:t}}case"last7days":{const t=ha(o,-6);return{id:e,period:"range",date:"last7",startDate:t,endDate:o}}case"last30days":{const t=ha(o,-29);return{id:e,period:"range",date:"last30",startDate:t,endDate:o}}case"last90days":{const t=ha(o,-89);return{id:e,period:"range",date:"last90",startDate:t,endDate:o}}case"lastWeekMonSun":{const t=fa(o),i=ha(t,-7),n=ha(i,6);return{id:e,period:"week",date:"lastweek",startDate:i,endDate:n}}case"lastMonth":{const t=new Date(o.getFullYear(),o.getMonth()-1,1),i=ga(t),n=ba(t);return{id:e,period:"month",date:"lastmonth",startDate:i,endDate:n}}case"lastQuarter":{const t=va(o),i=ha(t,-1),n=va(i);return{id:e,period:"range",date:Oa(n,i),startDate:n,endDate:i}}case"lastYear":{const t=o.getFullYear()-1,i=new Date(t,0,1),n=new Date(t,11,31);return{id:e,period:"year",date:"lastyear",startDate:i,endDate:n}}case"thisWeekMonToday":{const t=fa(o);return{id:e,period:"week",date:"today",startDate:t,endDate:o}}case"thisMonth":{const t=ga(o);return{id:e,period:"month",date:"today",startDate:t,endDate:o}}case"thisQuarter":{const t=va(o);return{id:e,period:"range",date:Oa(t,o),startDate:t,endDate:o}}case"thisYear":{const t=new Date(o.getFullYear(),0,1);return{id:e,period:"year",date:"today",startDate:t,endDate:o}}default:throw new Error("Unknown preset date range: "+e)}}const wa=[["today","yesterday"],["last7days","last30days","last90days"],["lastWeekMonSun","lastMonth","lastQuarter","lastYear"],["thisWeekMonToday","thisMonth","thisQuarter","thisYear"]];var Sa=Object(D["defineComponent"])({props:{modelValue:{type:String,default:null},checkedPresetId:{type:String,default:null},minDate:{type:Date,required:!0},maxDate:{type:Date,required:!0},today:{type:Date,default:()=>u()},allowedPeriods:{type:Array,required:!0}},emits:["update:modelValue","select"],computed:{presetDateRanges(){return da.filter(e=>this.allowedPeriods.includes(ca[e.id]))},groupedPresetDateRanges(){const e=new Map(this.presetDateRanges.map(e=>[e.id,e]));return wa.map(t=>t.map(t=>e.get(t)).filter(e=>!!e)).filter(e=>e.length)}},methods:{translate:a,handlePresetSelected(e){const t=ja(e,this.today);this.$emit("update:modelValue",e),this.$emit("select",Object.assign(Object.assign({},t),{},{startDate:ya(t.startDate,this.minDate,this.maxDate),endDate:ya(t.endDate,this.minDate,this.maxDate)}))}}});Sa.render=la;var Ca=Sa;const ka=["aria-label"],Da=["id","aria-pressed","title","onClick","onDblclick"];function Ea(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"periodOptions",role:"group","aria-label":e.translate("General_ChoosePeriod")},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.displayPeriods,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("p",{key:t},[Object(D["createElementVNode"])("button",{type:"button",id:"period_id_"+t,"aria-pressed":e.checkedPeriodId===t?"true":"false",class:Object(D["normalizeClass"])({"selected-period-label":e.checkedPeriodId===t}),title:t===e.activeDatePeriod?"":e.translate("General_DoubleClickToChangePeriod"),onClick:o=>e.handlePeriodSelected(t),onDblclick:o=>e.handlePeriodDoubleClick(t)},[Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.getPeriodDisplayText(t)),1)],42,Da)]))),128))],8,ka)}var Pa=Object(D["defineComponent"])({props:{modelValue:{type:String,default:null},periods:{type:Array,required:!0},checkedPeriodId:{type:String,default:null},activeDatePeriod:{type:String,required:!0}},emits:["update:modelValue","select","dblclick"],computed:{displayPeriods(){return this.periods.includes("range")?["range"].concat(this.periods.filter(e=>"range"!==e)):this.periods}},methods:{translate:a,getPeriodDisplayText(e){const t="range"===e?`${a("General_Custom")} ${a("General_DateRangeInPeriodList")}`:c.get(e).getDisplayText();return t.charAt(0).toUpperCase()+t.slice(1)},handlePeriodSelected(e){const t={period:e};this.$emit("update:modelValue",e),this.$emit("select",t)},handlePeriodDoubleClick(e){const t={period:e};this.$emit("dblclick",t)}}});Pa.render=Ea;var Ta=Pa;const Va={key:0,class:"compare-checkbox"},xa=["checked"],Na={id:"comparePeriodToDropdown"},Ba={key:1,class:"compare-date-range"},Ia={id:"comparePeriodStartDate"},Ma=Object(D["createElementVNode"])("span",{class:"compare-dates-separator"},null,-1),Fa={id:"comparePeriodEndDate"};function La(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Field");return Object(D["openBlock"])(),Object(D["createElementBlock"])(D["Fragment"],null,[e.isComparisonEnabled?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Va,[Object(D["createElementVNode"])("label",null,[Object(D["createElementVNode"])("input",{id:"comparePeriodTo",type:"checkbox",checked:!!e.isComparing,onChange:t[0]||(t[0]=t=>e.onCompareToggle(t))},null,40,xa),Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.translate("General_CompareTo")),1)]),Object(D["createElementVNode"])("div",Na,[Object(D["createVNode"])(r,{"model-value":e.comparePeriodType,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:comparePeriodType",t)),style:Object(D["normalizeStyle"])({visibility:e.isComparing?"visible":"hidden"}),name:"comparePeriodToDropdown",uicontrol:"select",options:e.comparePeriodDropdownOptions,"full-width":!0,disabled:!e.isComparing},null,8,["model-value","style","options","disabled"])])])):Object(D["createCommentVNode"])("",!0),e.isComparing&&"custom"===e.comparePeriodType?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ba,[Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",Ia,[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(r,{"model-value":e.compareStartDate,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:compareStartDate",t)),name:"comparePeriodStartDate",uicontrol:"text","full-width":!0,title:e.translate("CoreHome_StartDate"),placeholder:"YYYY-MM-DD"},null,8,["model-value","title"])])]),Ma,Object(D["createElementVNode"])("div",Fa,[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(r,{"model-value":e.compareEndDate,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:compareEndDate",t)),name:"comparePeriodEndDate",uicontrol:"text","full-width":!0,title:e.translate("CoreHome_EndDate"),placeholder:"YYYY-MM-DD"},null,8,["model-value","title"])])])])])):Object(D["createCommentVNode"])("",!0)],64)}const Ra=Se("CorePluginsAdmin","Field");var Aa=Object(D["defineComponent"])({components:{Field:Ra},props:{isComparisonEnabled:{type:Boolean,required:!0},isComparing:{type:Boolean,default:null},comparePeriodType:{type:String,required:!0},compareStartDate:{type:String,required:!0},compareEndDate:{type:String,required:!0},comparePeriodDropdownOptions:{type:Array,required:!0}},emits:["update:isComparing","update:comparePeriodType","update:compareStartDate","update:compareEndDate"],methods:{translate:a,onCompareToggle(e){this.$emit("update:isComparing",e.target.checked)}}});Aa.render=La;var _a=Aa;
+ */class Gi{constructor(){zi(this,"state",Object(D["reactive"])({initialSites:[],isInitialized:!1})),zi(this,"stateFiltered",Object(D["reactive"])({initialSites:[],isInitialized:!1,excludedSites:[],onlySitesWithAdminAccess:!1,onlySitesWithAtLeastWriteAccess:!1,siteTypesToExclude:[]})),zi(this,"currentRequestAbort",null),zi(this,"limitRequest",void 0),zi(this,"initialSites",Object(D["computed"])(()=>Object(D["readonly"])(this.state.initialSites))),zi(this,"initialSitesFiltered",Object(D["computed"])(()=>Object(D["readonly"])(this.stateFiltered.initialSites)))}isFiltered(e=!1,t=[],o=!1,i=[]){return t.length>0||e||o||i.length>0}matchesCurrentFilteredState(e=!1,t=[],o=!1,i=[]){return!this.stateFiltered.isInitialized&&!this.isFiltered(e,t,o,i)||this.stateFiltered.isInitialized&&t.length===this.stateFiltered.excludedSites.length&&t.every((e,t)=>e===this.stateFiltered.excludedSites[t])&&e===this.stateFiltered.onlySitesWithAdminAccess&&o===this.stateFiltered.onlySitesWithAtLeastWriteAccess&&i.length===this.stateFiltered.siteTypesToExclude.length&&i.every((e,t)=>e===this.stateFiltered.siteTypesToExclude[t])}loadInitialSites(e=!1,t=[],o=!1,i=[]){return this.state.isInitialized&&!this.isFiltered(e,t,o,i)?Promise.resolve(Object(D["readonly"])(this.state.initialSites)):this.stateFiltered.isInitialized&&this.matchesCurrentFilteredState(e,t,o,i)?Promise.resolve(Object(D["readonly"])(this.stateFiltered.initialSites)):this.isFiltered(e,t,o,i)?this.searchSite("%",e,t,o,i).then(n=>(this.stateFiltered.isInitialized=!0,this.stateFiltered.excludedSites=t,this.stateFiltered.onlySitesWithAdminAccess=e,this.stateFiltered.onlySitesWithAtLeastWriteAccess=o,this.stateFiltered.siteTypesToExclude=i,null!==n&&(this.stateFiltered.initialSites=n),n)):this.state.isInitialized?Promise.resolve(Object(D["readonly"])(this.state.initialSites)):this.searchSite("%",e,t,o,i).then(e=>(this.state.isInitialized=!0,null!==e&&(this.state.initialSites=e),e))}loadSite(e){"all"===e?U.updateUrl(Object.assign(Object.assign({},U.urlParsed.value),{},{module:"MultiSites",action:"index",date:U.parsed.value.date,period:U.parsed.value.period})):U.updateUrl(Object.assign(Object.assign({},U.urlParsed.value),{},{segment:"",idSite:e}),Object.assign(Object.assign({},U.hashParsed.value),{},{segment:"",idSite:e}))}searchSite(e,t=!1,o=[],i=!1,n=[]){return e?(this.currentRequestAbort&&this.currentRequestAbort.abort(),this.limitRequest||(this.limitRequest=te.fetch({method:"SitesManager.getNumWebsitesToDisplayPerPage"})),this.limitRequest.then(a=>{const r=a.value;let s="view";return t?s="admin":i&&(s="write"),this.currentRequestAbort=new AbortController,te.fetch({method:"SitesManager.getSitesWithMinimumAccess",permission:s,limit:r,pattern:e,sitesToExclude:o,siteTypesToExclude:n},{abortController:this.currentRequestAbort,abortable:!1})}).then(e=>e?this.processWebsitesList(e):null).finally(()=>{this.currentRequestAbort=null})):this.loadInitialSites(t,o,i,n)}processWebsitesList(e){let t=e;return t&&t.length?(t=t.map(e=>Object.assign(Object.assign({},e),{},{name:e.group?`[${e.group}] ${e.name}`:e.name})),t.sort((e,t)=>e.name.toLowerCase()t.name.toLowerCase()?1:0),t):[]}}var Ki=new Gi;const Yi=["value","name"],Qi=["title"],Ji=["textContent"],Xi={key:1,class:"placeholder"},Zi={class:"dropdown"},en={class:"custom_select_search"},tn=["placeholder"],on={key:0},nn={class:"custom_select_container"},an=["onClick"],rn=["innerHTML","href","title"],sn={class:"custom_select_ul_list"},ln={class:"noresult"},cn={key:1};function dn(e,t,o,i,n,a){var r,s,l,c;const d=Object(D["resolveComponent"])("AllSitesLink"),u=Object(D["resolveDirective"])("tooltips"),p=Object(D["resolveDirective"])("focus-if"),m=Object(D["resolveDirective"])("focus-anywhere-but-here");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])(["siteSelector piwikSelector borderedControl",{expanded:e.showSitesList,disabled:!e.hasMultipleSites}])},[e.name?(Object(D["openBlock"])(),Object(D["createElementBlock"])("input",{key:0,type:"hidden",value:null===(r=e.displayedModelValue)||void 0===r?void 0:r.id,name:e.name},null,8,Yi)):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{ref:"selectorLink",onClick:t[0]||(t[0]=(...t)=>e.onClickSelector&&e.onClickSelector(...t)),onKeydown:t[1]||(t[1]=t=>e.onPressEnter(t)),href:"javascript:void(0)",class:Object(D["normalizeClass"])([{loading:e.isLoading},"title"]),tabindex:"4",title:e.selectorLinkTitle},[Object(D["createElementVNode"])("span",{class:Object(D["normalizeClass"])(["icon icon-chevron-down",{iconHidden:e.isLoading,collapsed:!e.showSitesList}])},null,2),Object(D["createElementVNode"])("span",null,[null!==(s=e.displayedModelValue)&&void 0!==s&&s.name||!e.placeholder?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,textContent:Object(D["toDisplayString"])((null===(l=e.displayedModelValue)||void 0===l?void 0:l.name)||e.firstSiteName)},null,8,Ji)):Object(D["createCommentVNode"])("",!0),null!==(c=e.displayedModelValue)&&void 0!==c&&c.name||!e.placeholder?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",Xi,Object(D["toDisplayString"])(e.placeholder),1))])],42,Qi)),[[u]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",Zi,[Object(D["withDirectives"])(Object(D["createElementVNode"])("div",en,[Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{type:"text",onClick:t[2]||(t[2]=t=>{e.searchTerm="",e.loadInitialSites()}),"onUpdate:modelValue":t[3]||(t[3]=t=>e.searchTerm=t),tabindex:"4",class:"websiteSearch inp browser-default",placeholder:e.translate("General_Search")},null,8,tn),[[D["vModelText"],e.searchTerm],[p,{focused:e.shouldFocusOnSearch}]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("img",{title:"Clear",onClick:t[4]||(t[4]=t=>{e.searchTerm="",e.loadInitialSites()}),class:"reset",src:"plugins/CoreHome/images/reset_search.png"},null,512),[[D["vShow"],e.searchTerm]])],512),[[D["vShow"],e.autocompleteMinSites<=e.sites.length||e.searchTerm]]),"top"===e.allSitesLocation&&e.showAllSitesItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",on,[Object(D["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[5]||(t[5]=t=>e.onAllSitesClick(t))},null,8,["href","all-sites-text"])])):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",nn,[Object(D["createElementVNode"])("ul",{class:"custom_select_ul_list",onClick:t[7]||(t[7]=t=>e.showSitesList=!1)},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.sites,(o,i)=>Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{onClick:t=>e.switchSite(Object.assign(Object.assign({},o),{},{id:o.idsite}),t),key:i},[Object(D["createElementVNode"])("a",{onClick:t[6]||(t[6]=e=>e.preventDefault()),innerHTML:e.$sanitize(e.getMatchedSiteName(o.name)),tabindex:"4",href:e.getUrlForSiteId(o.idsite),title:o.name},null,8,rn)],8,an)),[[D["vShow"],!(!e.showSelectedSite&&""+e.activeSiteId===""+o.idsite)]])),128))]),Object(D["withDirectives"])(Object(D["createElementVNode"])("ul",sn,[Object(D["createElementVNode"])("li",null,[Object(D["createElementVNode"])("div",ln,Object(D["toDisplayString"])(e.translate("SitesManager_NotFound")+" "+e.searchTerm),1)])],512),[[D["vShow"],!e.sites.length&&e.searchTerm]])])),[[u,{content:e.tooltipContent}]]),"bottom"===e.allSitesLocation&&e.showAllSitesItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",cn,[Object(D["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[8]||(t[8]=t=>e.onAllSitesClick(t))},null,8,["href","all-sites-text"])])):Object(D["createCommentVNode"])("",!0)],512),[[D["vShow"],e.showSitesList]])],2)),[[m,{blur:e.onBlur}]])}const un=["innerHTML","href"];function pn(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{onClick:t[1]||(t[1]=e=>this.onClick(e)),class:"custom_select_all"},[Object(D["createElementVNode"])("a",{onClick:t[0]||(t[0]=e=>e.preventDefault()),innerHTML:e.$sanitize(e.allSitesText),tabindex:"4",href:e.href},null,8,un)])}var mn=Object(D["defineComponent"])({props:{href:String,allSitesText:String},emits:["click"],methods:{onClick(e){this.$emit("click",e)}}});mn.render=pn;var hn=mn,gn=Object(D["defineComponent"])({props:{modelValue:Object,showSelectedSite:{type:Boolean,default:!1},showAllSitesItem:{type:Boolean,default:!0},switchSiteOnSelect:{type:Boolean,default:!0},onlySitesWithAdminAccess:{type:Boolean,default:!1},name:{type:String,default:""},allSitesText:{type:String,default:a("General_MultiSitesSummary")},allSitesLocation:{type:String,default:"bottom"},placeholder:String,defaultToFirstSite:Boolean,sitesToExclude:{type:Array,default:()=>[]},onlySitesWithAtLeastWriteAccess:{type:Boolean,default:!1},siteTypesToExclude:{type:Array,default:()=>[]}},emits:["update:modelValue","blur"],components:{AllSitesLink:hn},directives:{FocusAnywhereButHere:et,FocusIf:ot,Tooltips:rt},watch:{searchTerm(){this.onSearchTermChanged()}},data(){return{searchTerm:"",activeSiteId:""+M.idSite,showSitesList:!1,isLoading:!1,sites:[],autocompleteMinSites:parseInt(M.config.autocomplete_min_sites,10)}},created(){this.searchSite=Ee(this.searchSite),!this.modelValue&&M.idSite&&this.$emit("update:modelValue",{id:M.idSite,name:M.helper.htmlDecode(M.siteName)})},mounted(){window.initTopControls(),this.loadInitialSites().then(()=>{this.shouldDefaultToFirstSite&&this.$emit("update:modelValue",{id:this.sites[0].idsite,name:this.sites[0].name})});const e=a("CoreHome_ShortcutWebsiteSelector");M.helper.registerShortcut("w",e,e=>{if(e.altKey)return;e.preventDefault?e.preventDefault():e.returnValue=!1;const t=this.$refs.selectorLink;t&&(t.click(),t.focus())})},computed:{shouldFocusOnSearch(){return this.showSitesList&&this.autocompleteMinSites<=this.sites.length||this.searchTerm},selectorLinkTitle(){return this.hasMultipleSites&&this.displayedModelValue?a("CoreHome_ChangeCurrentWebsite",this.htmlEntities(this.displayedModelValue.name)):""},hasMultipleSites(){const e=Ki.matchesCurrentFilteredState(this.onlySitesWithAdminAccess,this.sitesToExclude?this.sitesToExclude:[],this.onlySitesWithAtLeastWriteAccess,this.siteTypesToExclude?this.siteTypesToExclude:[])&&Ki.initialSitesFiltered.value&&Ki.initialSitesFiltered.value.length?Ki.initialSitesFiltered.value:Ki.initialSites.value;return e&&e.length>1},firstSiteName(){const e=Ki.initialSitesFiltered.value&&Ki.initialSitesFiltered.value.length?Ki.initialSitesFiltered.value:Ki.initialSites.value;return e&&e.length>0?e[0].name:""},urlAllSites(){const e=U.stringify(Object.assign(Object.assign({},U.urlParsed.value),{},{module:"MultiSites",action:"index",date:U.parsed.value.date,period:U.parsed.value.period}));return"?"+e},shouldDefaultToFirstSite(){var e;return!(null!==(e=this.modelValue)&&void 0!==e&&e.id)&&(!this.hasMultipleSites||this.defaultToFirstSite)&&this.sites[0]},displayedModelValue(){return this.modelValue?this.modelValue:M.idSite?{id:M.idSite,name:M.helper.htmlDecode(M.siteName)}:this.shouldDefaultToFirstSite?{id:this.sites[0].idsite,name:this.sites[0].name}:null},tooltipContent(){return function(){const e=$(this).attr("title")||"";return M.helper.htmlEntities(e)}}},methods:{onSearchTermChanged(){this.searchTerm?(this.isLoading=!0,this.searchSite(this.searchTerm)):(this.isLoading=!1,this.loadInitialSites())},onAllSitesClick(e){this.switchSite({id:"all",name:this.$props.allSitesText},e),this.showSitesList=!1},switchSite(e,t){const o=-1!==navigator.userAgent.indexOf("Mac OS X")?t.metaKey:t.ctrlKey;t&&o&&t.target&&t.target.href?window.open(t.target.href,"_blank"):(this.$emit("update:modelValue",{id:e.id,name:e.name}),this.switchSiteOnSelect&&this.activeSiteId!==e.id&&Ki.loadSite(e.id))},onBlur(){this.showSitesList=!1,this.$emit("blur")},onClickSelector(){this.hasMultipleSites&&(this.showSitesList=!this.showSitesList,this.isLoading||this.searchTerm||this.loadInitialSites())},onPressEnter(e){"Enter"===e.key&&(e.preventDefault(),this.showSitesList=!this.showSitesList,this.showSitesList&&!this.isLoading&&this.loadInitialSites())},getMatchedSiteName(e){const t=e.toUpperCase().indexOf(this.searchTerm.toUpperCase());if(-1===t||this.isLoading)return this.htmlEntities(e);const o=this.htmlEntities(e.substring(0,t)),i=this.htmlEntities(e.substring(t+this.searchTerm.length));return`${o}${this.searchTerm}${i}`},loadInitialSites(){return Ki.loadInitialSites(this.onlySitesWithAdminAccess,this.sitesToExclude?this.sitesToExclude:[],this.onlySitesWithAtLeastWriteAccess,this.siteTypesToExclude?this.siteTypesToExclude:[]).then(e=>{this.sites=e||[]})},searchSite(e){this.isLoading=!0,Ki.searchSite(e,this.onlySitesWithAdminAccess,this.sitesToExclude?this.sitesToExclude:[],this.onlySitesWithAtLeastWriteAccess,this.siteTypesToExclude?this.siteTypesToExclude:[]).then(t=>{e===this.searchTerm&&t&&(this.sites=t)}).finally(()=>{this.isLoading=!1})},getUrlForSiteId(e){const t=U.stringify(Object.assign(Object.assign({},U.urlParsed.value),{},{segment:"",idSite:e})),o=U.stringify(Object.assign(Object.assign({},U.hashParsed.value),{},{segment:"",idSite:e}));return`?${t}#?${o}`},htmlEntities(e){return M.helper.htmlEntities(e)}}});gn.render=dn;var bn=gn;const fn={ref:"root",class:"quickAccessInside"},vn=["title","placeholder"],On={class:"dropdown"},yn={class:"no-result"},jn=["onClick"],wn=["onMouseenter","onClick"],Sn={class:"quickAccessMatomoSearch"},Cn=["onMouseenter","onClick"],kn=["textContent"],Dn={class:"quick-access-category helpCategory"},En=["href"];function Pn(e,t,o,i,n,a){const r=Object(D["resolveDirective"])("focus-if"),s=Object(D["resolveDirective"])("tooltips"),l=Object(D["resolveDirective"])("focus-anywhere-but-here");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",fn,[Object(D["createElementVNode"])("span",{class:"icon-search",onMouseenter:t[0]||(t[0]=t=>e.searchActive=!0)},null,32),Object(D["withDirectives"])(Object(D["createElementVNode"])("input",{class:"s",onKeydown:t[1]||(t[1]=t=>e.onKeypress(t)),onFocus:t[2]||(t[2]=t=>e.searchActive=!0),"onUpdate:modelValue":t[3]||(t[3]=t=>e.searchTerm=t),type:"text",tabindex:"2",title:e.quickAccessTitle,placeholder:e.translate("General_Search"),ref:"input"},null,40,vn),[[D["vModelText"],e.searchTerm],[r,{focused:e.searchActive}],[s]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",On,[Object(D["withDirectives"])(Object(D["createElementVNode"])("ul",null,[Object(D["createElementVNode"])("li",yn,Object(D["toDisplayString"])(e.translate("General_SearchNoResults")),1)],512),[[D["vShow"],!(e.numMenuItems>0||e.sites.length)]]),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.menuItems,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",{key:t.title},[Object(D["createElementVNode"])("li",{class:"quick-access-category",onClick:o=>{e.searchTerm=t.title,e.searchMenu(e.searchTerm)}},Object(D["toDisplayString"])(t.title),9,jn),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.items,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:Object(D["normalizeClass"])(["result",{selected:t.menuIndex===e.searchIndex}]),onMouseenter:o=>e.searchIndex=t.menuIndex,onClick:o=>e.selectMenuItem(t.index),key:t.index},[Object(D["createElementVNode"])("a",null,Object(D["toDisplayString"])(t.name.trim()),1)],42,wn))),128))]))),128)),Object(D["createElementVNode"])("ul",Sn,[Object(D["withDirectives"])(Object(D["createElementVNode"])("li",{class:"quick-access-category websiteCategory"},Object(D["toDisplayString"])(e.translate("SitesManager_Sites")),513),[[D["vShow"],e.hasSitesSelector&&e.sites.length||e.isLoading]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("li",{class:"no-result"},Object(D["toDisplayString"])(e.translate("MultiSites_LoadingWebsites")),513),[[D["vShow"],e.hasSitesSelector&&e.isLoading]]),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.sites,(t,o)=>Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:Object(D["normalizeClass"])(["result",{selected:e.numMenuItems+o===e.searchIndex}]),onMouseenter:t=>e.searchIndex=e.numMenuItems+o,onClick:o=>e.selectSite(t.idsite),key:t.idsite},[Object(D["createElementVNode"])("a",{textContent:Object(D["toDisplayString"])(t.name)},null,8,kn)],42,Cn)),[[D["vShow"],e.hasSitesSelector&&!e.isLoading]])),128))]),Object(D["createElementVNode"])("ul",null,[Object(D["createElementVNode"])("li",Dn,Object(D["toDisplayString"])(e.translate("General_HelpResources")),1),Object(D["createElementVNode"])("li",{class:Object(D["normalizeClass"])([{selected:"help"===e.searchIndex},"quick-access-help"]),onMouseenter:t[4]||(t[4]=t=>e.searchIndex="help")},[Object(D["createElementVNode"])("a",{href:"https://matomo.org?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=QuickSearch&s="+encodeURIComponent(e.searchTerm),target:"_blank"},Object(D["toDisplayString"])(e.translate("CoreHome_SearchOnMatomo",e.searchTerm)),9,En)],34)])],512),[[D["vShow"],e.searchTerm&&e.searchActive]])])),[[l,{blur:e.onBlur}]])}const{ListingFormatter:Tn}=window;function Vn(e){const t=e.getBoundingClientRect(),o=window.$(window);return t.top>=0&&t.left>=0&&t.bottom<=o.height()&&t.right<=o.width()}function xn(e){e&&e.scrollIntoView&&e.scrollIntoView()}var Nn=Object(D["defineComponent"])({directives:{FocusAnywhereButHere:et,FocusIf:ot,Tooltips:rt},watch:{searchActive(e){const t=this.$refs.root;if(!t||!t.parentElement)return;const o=t.parentElement.classList;o.toggle("active",e),o.toggle("expanded",e)}},mounted(){const e=this.$refs.root;e&&e.parentElement&&e.parentElement.classList.add("quick-access","piwikSelector"),"undefined"!==typeof window.initTopControls&&window.initTopControls&&window.initTopControls(),M.helper.registerShortcut("f",a("CoreHome_ShortcutSearch"),e=>{e.altKey||(e.preventDefault(),xn(this.$refs.root),this.activateSearch())})},data(){const e=!!document.querySelector(".segmentEditorPanel");return{menuItems:[],numMenuItems:0,searchActive:!1,searchTerm:"",searchIndex:0,menuIndexCounter:-1,topMenuItems:null,leftMenuItems:null,segmentItems:null,hasSegmentSelector:e,sites:[],isLoading:!1}},created(){this.searchMenu=Ee(this.searchMenu.bind(this))},computed:{hasSitesSelector(){return!!document.querySelector('.top_controls .siteSelector,.top_controls [vue-entry="CoreHome.SiteSelector"]')},quickAccessTitle(){const e=[a("CoreHome_MenuEntries")];return this.hasSegmentSelector&&e.push(a("CoreHome_Segments")),this.hasSitesSelector&&e.push(a("SitesManager_Sites")),a("CoreHome_QuickAccessTitle",Tn.formatAnd(e))}},emits:["itemSelected","blur"],methods:{onKeypress(e){const t=this.searchTerm&&this.searchActive,o=9===e.which,i=27===e.which;38===e.which?(this.highlightPreviousItem(),e.preventDefault()):40===e.which?(this.highlightNextItem(),e.preventDefault()):13===e.which?this.clickQuickAccessMenuItem():o&&t||i&&t?this.deactivateSearch():setTimeout(()=>{this.searchActive=!0,this.searchMenu(this.searchTerm)})},highlightPreviousItem(){this.searchIndex-1<0?this.searchIndex=0:this.searchIndex-=1,this.makeSureSelectedItemIsInViewport()},highlightNextItem(){const e=this.$refs.root.querySelectorAll("li.result").length;e<=this.searchIndex+1?this.searchIndex=e-1:this.searchIndex+=1,this.makeSureSelectedItemIsInViewport()},clickQuickAccessMenuItem(){const e=this.getCurrentlySelectedElement();e&&setTimeout(()=>{e.click(),this.$emit("itemSelected",e)},20)},deactivateSearch(){this.searchTerm="",this.searchActive=!1,this.$refs.input&&this.$refs.input.blur()},makeSureSelectedItemIsInViewport(){const e=this.getCurrentlySelectedElement();e&&!Vn(e)&&xn(e)},getCurrentlySelectedElement(){const e=this.$refs.root.querySelectorAll("li.result");if(e&&e.length&&e.item(this.searchIndex))return e.item(this.searchIndex)},searchMenu(e){const t=e.toLowerCase();let o=-1;const i={},n=[],a=e=>{const t=Object.assign({},e);o+=1,t.menuIndex=o;const{category:a}=t;a in i||(n.push({title:a,items:[]}),i[a]=n.length-1);const r=i[a];n[r].items.push(t)};this.resetSearchIndex(),this.hasSitesSelector&&(this.isLoading=!0,Ki.searchSite(t).then(e=>{e&&(this.sites=e)}).finally(()=>{this.isLoading=!1}));const r=e=>-1!==e.name.toLowerCase().indexOf(t)||-1!==e.category.toLowerCase().indexOf(t);null===this.topMenuItems&&(this.topMenuItems=this.getTopMenuItems()),null===this.leftMenuItems&&(this.leftMenuItems=this.getLeftMenuItems()),null===this.segmentItems&&(this.segmentItems=this.getSegmentItems());const s=this.topMenuItems.filter(r),l=this.leftMenuItems.filter(r),c=this.segmentItems.filter(r);s.forEach(a),l.forEach(a),c.forEach(a),this.numMenuItems=s.length+l.length+c.length,this.menuItems=n},resetSearchIndex(){this.searchIndex=0,this.makeSureSelectedItemIsInViewport()},selectSite(e){Ki.loadSite(e)},selectMenuItem(e){const t=document.querySelector(`[quick_access='${e}']`);if(t){this.deactivateSearch();const e=t.getAttribute("href");if(e&&e.length>10&&t&&t.click)try{t.click()}catch(o){window.$(t).click()}else window.$(t).click()}},onBlur(){this.searchActive=!1,this.$emit("blur")},activateSearch(){this.searchActive=!0},getTopMenuItems(){const e=a("CoreHome_Menu"),t=[];return document.querySelectorAll("nav .sidenav li > a, nav .sidenav li > div > a").forEach(o=>{var i;let n=null===(i=o.textContent)||void 0===i?void 0:i.trim();var a;(!n||null!=o.parentElement&&null!=o.parentElement.tagName&&"DIV"===o.parentElement.tagName)&&(n=null===(a=o.getAttribute("title"))||void 0===a?void 0:a.trim());n&&(t.push({name:n,index:this.menuIndexCounter+=1,category:e}),o.setAttribute("quick_access",""+this.menuIndexCounter))}),t},getLeftMenuItems(){const e=[];return document.querySelectorAll("#secondNavBar .menuTab").forEach(t=>{var o;const i=window.$(t).find("> .item");let n=(null===(o=i[0])||void 0===o?void 0:o.innerText.trim())||"";n&&-1!==n.lastIndexOf("\n")&&(n=n.slice(0,n.lastIndexOf("\n")).trim()),window.$(t).find("li .item").each((t,o)=>{var i;const a=null===(i=o.textContent)||void 0===i?void 0:i.trim();a&&(e.push({name:a,category:n,index:this.menuIndexCounter+=1}),o.setAttribute("quick_access",""+this.menuIndexCounter))})}),e},getSegmentItems(){if(!this.hasSegmentSelector)return[];const e=a("CoreHome_Segments"),t=[];return document.querySelectorAll(".segmentList [data-idsegment]").forEach(o=>{var i;const n=null===(i=o.querySelector(".segname"))||void 0===i||null===(i=i.textContent)||void 0===i?void 0:i.trim();n&&(t.push({name:n,category:e,index:this.menuIndexCounter+=1}),o.setAttribute("quick_access",""+this.menuIndexCounter))}),t}}});Nn.render=Pn;var Bn=Nn;const In={class:"fieldArray form-group"},Mn={key:0,class:"fieldUiControl"},Fn=["onClick","title"];function Ln(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Field");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",In,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.modelValue,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])(["fieldArrayTable multiple valign-wrapper",{["fieldArrayTable"+o]:!0}]),key:o},[e.field.uiControl?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Mn,[Object(D["createVNode"])(r,{"full-width":!0,"model-value":t,options:e.field.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(t,o),"model-modifiers":e.field.modelModifiers,placeholder:" ",uicontrol:e.field.uiControl,title:e.field.title,name:`${e.name}-${o}`,id:`${e.id}-${o}`,"template-file":e.field.templateFile,component:e.field.component},null,8,["model-value","options","onUpdate:modelValue","model-modifiers","uicontrol","title","name","id","template-file","component"])])):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])(Object(D["createElementVNode"])("span",{onClick:t=>e.removeEntry(o),class:"icon-minus valign",title:e.translate("General_Remove")},null,8,Fn),[[D["vShow"],o+1!==e.modelValue.length]])],2))),128))])}const Rn=Se("CorePluginsAdmin","Field");var An=Object(D["defineComponent"])({props:{modelValue:Array,name:String,id:String,field:Object,rows:String},components:{Field:Rn},emits:["update:modelValue"],watch:{modelValue(e){this.checkEmptyModelValue(e)}},mounted(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue(e){e&&e.length&&""===e.slice(-1)[0]||this.rows&&!((this.modelValue||[]).length-1&&this.modelValue){const t=this.modelValue.filter((t,o)=>o!==e);this.$emit("update:modelValue",t)}}}});An.render=Ln;var _n=An;const Hn={class:"multiPairField form-group"},$n={key:1,class:"fieldUiControl fieldUiControl2"},Un={key:2,class:"fieldUiControl fieldUiControl3"},qn={key:3,class:"fieldUiControl fieldUiControl4"},Wn=["onClick","title"];function zn(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Field");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Hn,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.modelValue,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])(["multiPairFieldTable multiple valign-wrapper",{["multiPairFieldTable"+o]:!0,[`has${e.fieldCount}Fields`]:!0}]),key:o},[e.field1?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,class:Object(D["normalizeClass"])(["fieldUiControl fieldUiControl1",{hasMultiFields:e.field1.type&&e.field2.type}])},[Object(D["createVNode"])(r,{"full-width":!0,"model-value":t[e.field1.key],options:e.field1.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(o,e.field1.key,t),"model-modifiers":e.field1.modelModifiers,placeholder:" ",uicontrol:e.field1.uiControl,name:`${e.name}-p1-${o}`,id:`${e.id}-p1-${o}`,title:e.field1.title,"template-file":e.field1.templateFile,component:e.field1.component},null,8,["model-value","options","onUpdate:modelValue","model-modifiers","uicontrol","name","id","title","template-file","component"])],2)):Object(D["createCommentVNode"])("",!0),e.field2?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",$n,[Object(D["createVNode"])(r,{"full-width":!0,options:e.field2.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(o,e.field2.key,t),"model-value":t[e.field2.key],"model-modifiers":e.field2.modelModifiers,placeholder:" ",uicontrol:e.field2.uiControl,name:`${e.name}-p2-${o}`,id:`${e.id}-p2-${o}`,title:e.field2.title,"template-file":e.field2.templateFile,component:e.field2.component},null,8,["options","onUpdate:modelValue","model-value","model-modifiers","uicontrol","name","id","title","template-file","component"])])):Object(D["createCommentVNode"])("",!0),e.field3?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Un,[Object(D["createVNode"])(r,{"full-width":!0,options:e.field3.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(o,e.field3.key,t),"model-value":t[e.field3.key],"model-modifiers":e.field3.modelModifiers,placeholder:" ",uicontrol:e.field3.uiControl,name:`${e.name}-p3-${o}`,id:`${e.id}-p3-${o}`,title:e.field3.title,"template-file":e.field3.templateFile,component:e.field3.component},null,8,["options","onUpdate:modelValue","model-value","model-modifiers","uicontrol","name","id","title","template-file","component"])])):Object(D["createCommentVNode"])("",!0),e.field4?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",qn,[Object(D["createVNode"])(r,{"full-width":!0,options:e.field4.availableValues,"onUpdate:modelValue":t=>e.onEntryChange(o,e.field4.key,t),"model-value":t[e.field4.key],"model-modifiers":e.field4.modelModifiers,placeholder:" ",uicontrol:e.field4.uiControl,name:`${e.name}-p4-${o}`,id:`${e.id}-p4-${o}`,title:e.field4.title,"template-file":e.field4.templateFile,component:e.field4.component},null,8,["options","onUpdate:modelValue","model-value","model-modifiers","uicontrol","name","id","title","template-file","component"])])):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])(Object(D["createElementVNode"])("span",{onClick:t=>e.removeEntry(o),class:"icon-minus valign",title:e.translate("General_Remove")},null,8,Wn),[[D["vShow"],o+1!==e.modelValue.length]])],2))),128))])}const Gn=Se("CorePluginsAdmin","Field");var Kn=Object(D["defineComponent"])({props:{modelValue:Array,name:String,id:String,field1:Object,field2:Object,field3:Object,field4:Object,rows:Number},components:{Field:Gn},computed:{fieldCount(){return this.field1&&this.field2&&this.field3&&this.field4?4:this.field1&&this.field2&&this.field3?3:this.field1&&this.field2?2:this.field1?1:0}},emits:["update:modelValue"],watch:{modelValue(e){this.checkEmptyModelValue(e)}},mounted(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue(e){e&&e.length&&!this.isEmptyValue(e.slice(-1)[0])||this.rows&&!(this.modelValue.length-1&&this.modelValue){const t=this.modelValue.filter((t,o)=>o!==e);this.$emit("update:modelValue",t)}},isEmptyValue(e){const{fieldCount:t}=this;if(4===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key]&&!e[this.field4.key])return!1}else if(3===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key])return!1}else if(2===t){if(!e[this.field1.key]&&!e[this.field2.key])return!1}else if(1===t&&!e[this.field1.key])return!1;return!0},makeEmptyValue(){const e={};return this.field1&&this.field1.key&&(e[this.field1.key]=""),this.field2&&this.field2.key&&(e[this.field2.key]=""),this.field3&&this.field3.key&&(e[this.field3.key]=""),this.field4&&this.field4.key&&(e[this.field4.key]=""),e}}});Kn.render=zn;var Yn=Kn;const Qn=["disabled"],Jn=Object(D["createElementVNode"])("span",{class:"icon-chevron-left"},null,-1),Xn=[Jn],Zn=["title"],ea=Object(D["createElementVNode"])("span",{class:"icon icon-calendar"},null,-1),ta={class:"flex"},oa={key:0,id:"ajaxLoadingCalendar"},ia={class:"loadingSegment"},na=["disabled"],aa=Object(D["createElementVNode"])("span",{class:"icon-chevron-right"},null,-1),ra=[aa];function sa(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("PeriodSelectorOptionsColumn"),s=Object(D["resolveComponent"])("PeriodSelectorCalendarColumn"),l=Object(D["resolveComponent"])("ActivityIndicator"),c=Object(D["resolveDirective"])("tooltips"),d=Object(D["resolveDirective"])("expand-on-click");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{ref:"root",class:Object(D["normalizeClass"])(["periodSelector piwikSelector",{"periodSelector-withPrevNext":e.canShowMovePeriod}])},[e.canShowMovePeriod?(Object(D["openBlock"])(),Object(D["createElementBlock"])("button",{key:0,class:"move-period move-period-prev",onClick:t[0]||(t[0]=t=>e.movePeriod(-1)),disabled:e.isPeriodMoveDisabled(-1)},Xn,8,Qn)):Object(D["createCommentVNode"])("",!0),Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("button",{ref:"title",id:"date",class:"title",tabindex:"4",title:e.translate("General_ChooseDate",e.currentlyViewingText)},[ea,Object(D["createTextVNode"])(" "+Object(D["toDisplayString"])(e.currentlyViewingText),1)],8,Zn)),[[c]]),Object(D["createElementVNode"])("div",{id:"periodMore",class:Object(D["normalizeClass"])(["dropdown","range"===e.selectedPeriod?"dual-calendar":"single-calendar"])},[Object(D["createElementVNode"])("div",ta,[Object(D["createVNode"])(r,{"ui-selected-period":e.selectedPeriod,"periods-filtered":e.periodsFiltered,"ui-selection":e.uiSelection,"applied-period":e.committedPeriod,"active-preset-id":e.activePresetId,"min-allowed-date":e.minAllowedDate,"max-allowed-date":e.maxAllowedDate,"onUpdate:uiSelectedPeriod":t[1]||(t[1]=t=>e.selectedPeriod=t),"onUpdate:activePresetId":t[2]||(t[2]=t=>e.activePresetId=t),onPeriodSelect:t[3]||(t[3]=t=>e.onPeriodOptionSelected(t)),onPeriodDblclick:t[4]||(t[4]=t=>e.onPeriodOptionDblClick(t)),onPresetSelect:t[5]||(t[5]=t=>e.onPresetDateRangeSelected(t))},null,8,["ui-selected-period","periods-filtered","ui-selection","applied-period","active-preset-id","min-allowed-date","max-allowed-date"]),Object(D["createVNode"])(s,{"ui-selection":e.uiSelection,"calendar-viewport":e.calendarViewport,"display-range-start-date":e.displayRangeStartDate,"display-range-end-date":e.displayRangeEndDate,"single-calendar-period":e.singleCalendarPeriod,"single-calendar-selected-date":e.singleCalendarSelectedDate,"is-comparison-enabled":e.isComparisonEnabled,"is-comparing":e.isComparing,"compare-period-type":e.comparePeriodType,"compare-start-date":e.compareStartDate,"compare-end-date":e.compareEndDate,"compare-period-dropdown-options":e.comparePeriodDropdownOptions,"is-apply-enabled":e.isApplyEnabled(),onRangeChange:t[6]||(t[6]=t=>e.onRangeChange(t.start,t.end)),onSingleDateSelect:t[7]||(t[7]=t=>e.onDatePickerSelected(t)),onApplyClick:t[8]||(t[8]=t=>e.onApplyClicked()),onRangePresetDateCellClickCapture:t[9]||(t[9]=t=>e.onRangePresetDateCellClickCapture(t)),"onUpdate:isComparing":t[10]||(t[10]=t=>e.isComparing=t),"onUpdate:comparePeriodType":t[11]||(t[11]=t=>e.comparePeriodType=t),"onUpdate:compareStartDate":t[12]||(t[12]=t=>e.compareStartDate=t),"onUpdate:compareEndDate":t[13]||(t[13]=t=>e.compareEndDate=t)},null,8,["ui-selection","calendar-viewport","display-range-start-date","display-range-end-date","single-calendar-period","single-calendar-selected-date","is-comparison-enabled","is-comparing","compare-period-type","compare-start-date","compare-end-date","compare-period-dropdown-options","is-apply-enabled"])]),e.isLoadingNewPage?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",oa,[Object(D["createVNode"])(l,{loading:!0}),Object(D["createElementVNode"])("div",ia,Object(D["toDisplayString"])(e.translate("SegmentEditor_LoadingSegmentedDataMayTakeSomeTime")),1)])):Object(D["createCommentVNode"])("",!0)],2),e.canShowMovePeriod?(Object(D["openBlock"])(),Object(D["createElementBlock"])("button",{key:1,class:"move-period move-period-next",onClick:t[14]||(t[14]=t=>e.movePeriod(1)),disabled:e.isPeriodMoveDisabled(1)},ra,8,na)):Object(D["createCommentVNode"])("",!0)],2)),[[d,{expander:"title",onExpand:e.onExpand,onClosed:e.onClosed}]])}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const Ha=["date","period","comparePeriods","comparePeriodType","compareDates","compareSegments"];function $a(e,t){return`${e}|${t}`}function Ua(e){const t={};return Object.keys(e).filter(e=>!Ha.includes(e)).sort().forEach(o=>{t[o]=e[o]}),JSON.stringify(t)}function qa(e,t,o,i,n){return!o&&e===i&&t===n}function Wa(e,t,o,i){const n=!!o&&i===e,a=n&&o?Object.assign({},o):null;return{syncedUiSelection:a,lastKnownHashSelectionKey:e,lastKnownHashContextKey:t,nextHashUiSelection:null,nextHashSelectionKey:null,lastInteractionSource:null}}const za=M.helper.htmlDecode(" "),Ga=["custom","previousPeriod","previousYear"],Ya=[{key:"custom",value:a("General_Custom")},{key:"previousPeriod",value:a("General_PreviousPeriod").replace(/\s+/,za)},{key:"previousYear",value:a("General_PreviousYear").replace(/\s+/,za)}],Ka=new Date(M.minDateYear,M.minDateMonth-1,M.minDateDay),Qa=new Date(M.maxDateYear,M.maxDateMonth-1,M.maxDateDay),Ja="range";function Xa(e){return"[object Date]"===Object.prototype.toString.call(e)&&!Number.isNaN(e.getTime())}function Za(e){return"day"===e||"week"===e||"month"===e||"year"===e}var er=Object(D["defineComponent"])({name:"PeriodSelector",props:{periods:Array},components:{DateRangePicker:ri,PeriodDatePicker:ui,PresetDateRanges:Ca,PeriodOptions:Ta,PeriodSelectorCompareControls:_a,ActivityIndicator:qe},directives:{ExpandOnClick:Ot,Tooltips:rt},data(){const e=U.parsed.value.period,t=Za(e)?e:"day";return{uiSelection:{type:"period",id:e},lastInteractionSource:null,nextHashUiSelection:null,nextHashSelectionKey:null,lastKnownHashSelectionKey:null,lastKnownHashContextKey:null,minAllowedDate:Ka,maxAllowedDate:Qa,activePresetId:null,pendingPresetSelection:null,committedPeriod:e,committedAnchorDate:null,selectedPeriod:e,calendarViewport:e===Ja?"range":"single",singleCalendarPeriod:t,singleCalendarSelectedDate:null,appliedRangeStartDate:null,appliedRangeEndDate:null,isRangeValid:null,isLoadingNewPage:!1,isComparing:null,comparePeriodType:"previousPeriod",compareStartDate:"",compareEndDate:"",compareAppliedSignature:""}},mounted(){M.on("hidePeriodSelector",()=>{window.$(this.$refs.root).parent("#periodString").hide()}),M.on("matomoPageChange",()=>{window.$(this.$refs.root).parent("#periodString").show()}),window.initTopControls(),this.handleZIndexPositionRelativeCompareDropdownIssue()},computed:{matomoParsed(){return U.parsed.value},isComparingStoreValue(){return No.isComparingPeriods()},periodComparisonsStoreValue(){return No.getPeriodComparisons()},comparePeriodDropdownOptions(){return Ya},currentlyViewingText(){let e;if("range"===this.committedPeriod){if(!this.appliedRangeStartDate||!this.appliedRangeEndDate)return a("General_Error");e=`${this.appliedRangeStartDate},${this.appliedRangeEndDate}`}else{if(!this.committedAnchorDate)return a("General_Error");e=d(this.committedAnchorDate)}try{return c.parse(this.committedPeriod,e).getPrettyString()}catch(t){return a("General_Error")}},isComparisonEnabled(){return No.isComparisonEnabled()},periodsFiltered(){return(this.periods||[]).filter(e=>c.isRecognizedPeriod(e))},selectedComparisonParams(){if(!this.isComparing)return{};if("custom"===this.comparePeriodType)return{comparePeriods:["range"],comparePeriodType:"custom",compareDates:[`${this.compareStartDate},${this.compareEndDate}`]};if("previousPeriod"===this.comparePeriodType)return{comparePeriods:[this.selectedPeriod],comparePeriodType:"previousPeriod",compareDates:[this.previousPeriodDateToSelectedPeriod]};if("previousYear"===this.comparePeriodType){const e="range"===this.selectedPeriod?`${this.appliedRangeStartDate},${this.appliedRangeEndDate}`:d(this.committedAnchorDate),t=c.parse(this.selectedPeriod,e).getDateRange();return t[0].setFullYear(t[0].getFullYear()-1),t[1].setFullYear(t[1].getFullYear()-1),"range"===this.selectedPeriod?{comparePeriods:["range"],comparePeriodType:"previousYear",compareDates:[`${d(t[0])},${d(t[1])}`]}:{comparePeriods:[this.selectedPeriod],comparePeriodType:"previousYear",compareDates:[d(t[0])]}}return console.warn("Unknown compare period type: "+this.comparePeriodType),{}},previousPeriodDateToSelectedPeriod(){if("range"===this.selectedPeriod){const e=m(this.appliedRangeStartDate),t=m(this.appliedRangeEndDate),o=k.getLastNRange("day",2,e).startDate,i=Math.floor((t.valueOf()-e.valueOf())/864e5),n=k.getLastNRange("day",1+i,o);return`${d(n.startDate)},${d(n.endDate)}`}const e=k.getLastNRange(this.selectedPeriod,2,this.committedAnchorDate).startDate;return d(e)},selectedDateParam(){if("range"===this.selectedPeriod){const e=this.appliedRangeStartDate,t=this.appliedRangeEndDate,o=m(e),i=m(t);return!Xa(o)||!Xa(i)||o>i?(window.$("#alert").find("h2").text(a("General_InvalidDateRange")),M.helper.modalConfirm("#alert",{}),null):`${e},${t}`}return d(this.committedAnchorDate)},isErrorDisplayed(){return this.currentlyViewingText===a("General_Error")},isRangeSelection(){return"range"===this.committedPeriod},canShowMovePeriod(){return!this.isRangeSelection&&!this.isErrorDisplayed},compareCurrentSignature(){return JSON.stringify({isComparing:!!this.isComparing,comparePeriodType:this.comparePeriodType||"",compareStartDate:this.compareStartDate||"",compareEndDate:this.compareEndDate||""})},isCompareDirty(){return this.compareCurrentSignature!==this.compareAppliedSignature},hasPendingNonRangePeriodChange(){return"period"===this.uiSelection.type&&"period"===this.lastInteractionSource&&this.selectedPeriod!==Ja&&this.selectedPeriod!==this.committedPeriod},isRangePresetSelection(){return"preset"===this.uiSelection.type&&this.selectedPeriod===Ja},displayRangeStartDate(){return this.isRangePresetSelection&&this.pendingPresetSelection?d(this.pendingPresetSelection.startDate):this.appliedRangeStartDate},displayRangeEndDate(){return this.isRangePresetSelection&&this.pendingPresetSelection?d(this.pendingPresetSelection.endDate):this.appliedRangeEndDate}},watch:{isComparingStoreValue:{immediate:!0,handler(e){this.isComparing=e}},matomoParsed:{immediate:!0,handler(){this.updateSelectedValuesFromHash()}},periodComparisonsStoreValue:{immediate:!0,handler(){this.updateComparisonValuesFromStore(),this.compareAppliedSignature=this.compareCurrentSignature}}},methods:{onExpand(e){const t=0===e.detail;t&&window.$(this.$refs.root).find(".ui-datepicker-month").focus()},onClosed(e){const t=0===e.detail;t&&window.$(this.$refs.title).focus()},handleZIndexPositionRelativeCompareDropdownIssue(){const e=window.$(this.$refs.root);e.on("focus","#comparePeriodToDropdown .select-dropdown",()=>{e.addClass("compare-dropdown-open")}).on("blur","#comparePeriodToDropdown .select-dropdown",()=>{e.removeClass("compare-dropdown-open")})},setUiSelection(e,t){this.uiSelection=e,this.lastInteractionSource=t},clearPresetSelection(){this.activePresetId=null,this.pendingPresetSelection=null},setPendingPeriodAndDate(e,t){this.committedPeriod=e,this.selectedPeriod=e,this.committedAnchorDate=t,this.setRangeStartEndFromPeriod(e,d(t)),Za(e)&&(this.singleCalendarPeriod=e,this.singleCalendarSelectedDate=t)},setPiwikPeriodAndDate(e,t){this.setPendingPeriodAndDate(e,t),this.setUiSelection({type:"period",id:e},"period");const o=d(t);this.clearPresetSelection(),this.commitSelectionToUrl(o,this.selectedPeriod)},commitSelectionToUrl(e,t){this.nextHashUiSelection=Object.assign({},this.uiSelection),this.nextHashSelectionKey=$a(t,e),this.compareAppliedSignature=this.compareCurrentSignature,this.propagateNewUrlParams(e,t),window.initTopControls()},onPeriodOptionSelected(e){if(this.setUiSelection({type:"period",id:e.period},"period"),this.selectedPeriod=e.period,this.clearPresetSelection(),e.period===Ja)return this.calendarViewport="range",void(this.isRangeValid=!0);this.calendarViewport="single",Za(e.period)&&(this.singleCalendarPeriod=e.period),this.singleCalendarSelectedDate=e.period===this.committedPeriod?this.committedAnchorDate:null},onPeriodOptionDblClick(e){this.onPeriodOptionSelected(e),e.period!==Ja&&e.period!==this.committedPeriod&&this.committedAnchorDate&&this.setPiwikPeriodAndDate(e.period,this.committedAnchorDate)},canInteractWithSingleCalendar(){return"single"===this.calendarViewport&&"period"===this.uiSelection.type&&this.selectedPeriod!==Ja},onDatePickerSelected(e){this.canInteractWithSingleCalendar()&&(this.setUiSelection({type:"period",id:this.selectedPeriod},"calendar"),this.setPendingPeriodAndDate(this.selectedPeriod,e),this.clearPresetSelection(),this.commitSelectionToUrl(d(e),this.selectedPeriod))},onPresetDateRangeSelected(e){this.periodsFiltered.includes(e.period)&&(this.setUiSelection({type:"preset",id:e.id},"preset"),this.activePresetId=e.id,this.selectedPeriod=e.period,this.isRangeValid=!0,this.pendingPresetSelection=e,e.period!==Ja?(this.calendarViewport="single",this.singleCalendarSelectedDate=e.startDate,Za(e.period)&&(this.singleCalendarPeriod=e.period)):this.calendarViewport="range")},propagateNewUrlParams(e,t){const o=this.selectedComparisonParams;let i;M.helper.isReportingPage()?(this.closePeriodSelector(),i=U.hashParsed.value):(this.isLoadingNewPage=!0,i=U.parsed.value);const n=Object.assign({},i);delete n.comparePeriods,delete n.comparePeriodType,delete n.compareDates,U.updateLocation(Object.assign(Object.assign({},n),{},{date:e,period:t},o))},hasPendingPresetSelectionOwnedByUi(){return!!this.pendingPresetSelection&&"preset"===this.uiSelection.type&&this.pendingPresetSelection.id===this.uiSelection.id},shouldCloseSelectorWithoutApplying(){return"preset"===this.uiSelection.type&&this.selectedPeriod!==Ja},hasCommittedRangeBounds(){return!!this.appliedRangeStartDate&&!!this.appliedRangeEndDate},applyPendingPresetSelection(){if(!this.hasPendingPresetSelectionOwnedByUi())return!1;const e=this.pendingPresetSelection;return this.committedPeriod=e.period,this.committedAnchorDate=e.startDate,this.appliedRangeStartDate=d(e.startDate),this.appliedRangeEndDate=d(e.endDate),this.commitSelectionToUrl(e.date,e.period),!0},applyRangeSelection(){if(this.selectedPeriod!==Ja)return!1;const e=this.selectedDateParam;return!e||(this.committedPeriod=Ja,this.commitSelectionToUrl(this.getCurrentRollingDateParamIfOwnedByPreset()||e,Ja),!0)},applyNonRangeOrCompareChanges(){if(!this.hasPendingNonRangePeriodChange)if(this.isCompareDirty)if(this.committedPeriod!==Ja)this.committedAnchorDate&&this.commitSelectionToUrl(this.getCurrentRollingDateParamIfOwnedByPreset()||d(this.committedAnchorDate),this.committedPeriod);else{if(!this.hasCommittedRangeBounds())return;this.commitSelectionToUrl(this.getCurrentRollingDateParamIfOwnedByPreset()||`${this.appliedRangeStartDate},${this.appliedRangeEndDate}`,Ja)}else this.shouldCloseSelectorWithoutApplying()&&this.closePeriodSelector()},onApplyClicked(){this.applyPendingPresetSelection()||this.applyRangeSelection()||this.applyNonRangeOrCompareChanges()},updateComparisonValuesFromStore(){this.comparePeriodType="previousPeriod",this.compareStartDate="",this.compareEndDate="";const e=No.getPeriodComparisons();if(e.length<2)return;const t=U.parsed.value.comparePeriodType;if(!Ga.includes(t))return;if(this.comparePeriodType=t,"custom"!==this.comparePeriodType||"range"!==e[1].params.period)return;let o;try{o=c.parse(e[1].params.period,e[1].params.date)}catch(a){return}const[i,n]=o.getDateRange();this.compareStartDate=d(i),this.compareEndDate=d(n)},getCurrentContextKey(){return Ua(U.parsed.value)},applyUiSelectionFromHash(e,t,o){if(o)return this.uiSelection=o,void(this.activePresetId="preset"===o.type?o.id:null);const i=ma(e,t);if(i&&this.periodsFiltered.includes(e))return this.uiSelection={type:"preset",id:i},this.activePresetId=i,void(this.pendingPresetSelection=null);this.setUiSelection({type:"period",id:e},null),this.clearPresetSelection()},getCurrentRollingDateParamIfOwnedByPreset(){if("preset"!==this.uiSelection.type)return null;const e=U.parsed.value.period||"",t=U.parsed.value.date||"";if(e!==this.committedPeriod||!t)return null;const o=ma(e,t);return o!==this.uiSelection.id?null:t},resetSelectedDateValues(){this.committedAnchorDate=null,this.appliedRangeStartDate=null,this.appliedRangeEndDate=null},applyDateValuesFromHash(e,t){if(e===Ja){const o=c.get(e).parse(t),[i,n]=o.getDateRange();return this.committedAnchorDate=i,this.appliedRangeStartDate=d(i),void(this.appliedRangeEndDate=d(n))}this.committedAnchorDate=m(t),this.setRangeStartEndFromPeriod(e,t),Za(e)&&(this.singleCalendarPeriod=e),this.singleCalendarSelectedDate=this.committedAnchorDate},updateSelectedValuesFromHash(){const e=U.parsed.value.date||"",t=U.parsed.value.period||"",o=$a(t,e),i=this.getCurrentContextKey();if(qa(o,i,this.nextHashUiSelection,this.lastKnownHashSelectionKey,this.lastKnownHashContextKey))return;const n=Wa(o,i,this.nextHashUiSelection,this.nextHashSelectionKey);this.nextHashUiSelection=n.nextHashUiSelection,this.nextHashSelectionKey=n.nextHashSelectionKey,this.lastInteractionSource=n.lastInteractionSource,this.lastKnownHashSelectionKey=n.lastKnownHashSelectionKey,this.lastKnownHashContextKey=n.lastKnownHashContextKey,this.applyUiSelectionFromHash(t,e,n.syncedUiSelection),this.committedPeriod=t,this.selectedPeriod=t,this.resetSelectedDateValues();try{c.parse(t,e)}catch(a){return void(this.isRangeValid=t!==Ja&&null)}this.applyDateValuesFromHash(t,e),this.isRangeValid=t===Ja||null,this.pendingPresetSelection=null,this.calendarViewport=t===Ja?"range":"single",this.compareAppliedSignature=this.compareCurrentSignature},setRangeStartEndFromPeriod(e,t){const o=c.parse(e,t).getDateRange();this.appliedRangeStartDate=d(o[0]Qa?Qa:o[1])},canInteractWithRangeCalendar(){return"range"===this.calendarViewport&&"period"===this.uiSelection.type&&this.selectedPeriod===Ja},onRangeChange(e,t){this.canInteractWithRangeCalendar()&&(e&&t?(this.isRangeValid=!0,this.appliedRangeStartDate=e,this.appliedRangeEndDate=t,this.setUiSelection({type:"period",id:Ja},"range")):this.isRangeValid=!1)},onRangePresetDateCellClickCapture(e){if(!this.isRangePresetSelection)return;const t=e.target;t&&t.closest(".ui-datepicker-calendar a")&&(e.preventDefault(),e.stopPropagation())},isApplyEnabled(){return("period"!==this.uiSelection.type||this.selectedPeriod===Ja)&&(!this.hasPendingNonRangePeriodChange&&(!(this.selectedPeriod===Ja&&!this.pendingPresetSelection&&!this.isRangeValid)&&!(this.isComparing&&"custom"===this.comparePeriodType&&!this.isCompareRangeValid())))},closePeriodSelector(){this.$refs.root.classList.remove("expanded")},isCompareRangeValid(){try{m(this.compareStartDate)}catch(e){return!1}try{m(this.compareEndDate)}catch(e){return!1}return!0},movePeriod(e){if(!this.canMovePeriod(e))return;const t=null!=this.committedAnchorDate?new Date(this.committedAnchorDate.getTime()):new Date;switch(this.committedPeriod){case"day":t.setDate(t.getDate()+e);break;case"week":t.setDate(t.getDate()+7*e);break;case"month":t.setMonth(t.getMonth()+e);break;case"year":t.setFullYear(t.getFullYear()+e);break;default:break}tQa&&t.setTime(Qa.getTime()),this.setPiwikPeriodAndDate(this.committedPeriod,t)},isPeriodMoveDisabled(e){return null===this.committedAnchorDate?this.isRangeSelection:this.isRangeSelection||!this.canMovePeriod(e)},canMovePeriod(e){if(null===this.committedAnchorDate)return!1;const t=-1===e?Ka:Qa;return!g(this.committedAnchorDate,t,this.committedPeriod)}}});er.render=na;var tr=er;const or={class:"reportingMenu"},ir=["aria-label"],nr=["data-category-id"],ar=["onClick"],rr={class:"hidden"},sr={key:2,role:"menu"},lr=["href","onClick","title"],cr=["href","onClick"],dr=["onClick"],ur=Object(D["createElementVNode"])("span",{class:"icon-help"},null,-1),mr=[ur],pr={id:"mobile-left-menu",class:"sidenav sidenav--reporting-menu-mobile hide-on-large-only"},hr=["data-category-id"],gr={key:1,class:"collapsible collapsible-accordion"},br={class:"collapsible-header"},fr={class:"collapsible-body"},vr=["onClick","href"],Or=["onClick","href"];function yr(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("MenuItemsDropdown"),s=Object(D["resolveDirective"])("side-nav");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",or,[Object(D["createElementVNode"])("ul",{class:"navbar hide-on-med-and-down collapsible",role:"menu","aria-label":e.translate("CoreHome_MainNavigation")},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.menu,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:Object(D["normalizeClass"])(["menuTab",{active:t.id===e.activeCategory}]),role:"menuitem",key:t.id,"data-category-id":t.id},[t.component?(Object(D["openBlock"])(),Object(D["createBlock"])(Object(D["resolveDynamicComponent"])(t.component),{key:0,onAction:o=>e.loadCategory(t)},null,40,["onAction"])):Object(D["createCommentVNode"])("",!0),t.component?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,class:"item",tabindex:"5",href:"",onClick:Object(D["withModifiers"])(o=>e.loadCategory(t),["prevent"])},[Object(D["createElementVNode"])("span",{class:Object(D["normalizeClass"])("menu-icon "+(t.icon?t.icon:t.subcategories&&t.id===e.activeCategory?"icon-chevron-down":"icon-chevron-right"))},null,2),Object(D["createTextVNode"])(Object(D["toDisplayString"])(t.name)+" ",1),Object(D["createElementVNode"])("span",rr,Object(D["toDisplayString"])(e.translate("CoreHome_Menu")),1)],8,ar)),t.component?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",sr,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.subcategories,o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{role:"menuitem",class:Object(D["normalizeClass"])({active:(o.id===e.displayedSubcategory||o.isGroup&&e.activeSubsubcategory===e.displayedSubcategory)&&t.id===e.displayedCategory}),key:o.id},[o.isGroup?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:0,"show-search":!0,"menu-title":e.htmlEntities(o.name)},{default:Object(D["withCtx"])(()=>[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(o.subcategories,i=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{class:Object(D["normalizeClass"])(["item",{active:i.id===e.activeSubsubcategory&&o.id===e.displayedSubcategory&&t.id===e.displayedCategory}]),tabindex:"5",href:"#?"+e.makeUrl(t,i),onClick:o=>e.loadSubcategory(t,i,o),title:i.tooltip,key:i.id},Object(D["toDisplayString"])(i.name),11,lr))),128))]),_:2},1032,["menu-title"])):Object(D["createCommentVNode"])("",!0),o.isGroup?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,href:"#?"+e.makeUrl(t,o),class:"item",onClick:i=>e.loadSubcategory(t,o,i),tabindex:"5"},Object(D["toDisplayString"])(o.name),9,cr)),o.help?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:2,class:Object(D["normalizeClass"])(["item-help-icon",{active:e.helpShownCategory&&e.helpShownCategory.subcategory===o.id&&e.helpShownCategory.category===t.id&&o.help}]),tabindex:"5",href:"javascript:",onClick:i=>e.showHelp(t,o,i)},mr,10,dr)):Object(D["createCommentVNode"])("",!0)],2))),128))]))],10,nr))),128))],8,ir),Object(D["createElementVNode"])("ul",pr,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.menu,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:"no-padding",key:t.id,"data-category-id":t.id},[t.component?(Object(D["openBlock"])(),Object(D["createBlock"])(Object(D["resolveDynamicComponent"])(t.component),{key:0,onAction:o=>e.loadCategory(t)},null,40,["onAction"])):Object(D["createCommentVNode"])("",!0),t.component?Object(D["createCommentVNode"])("",!0):Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",gr,[Object(D["createElementVNode"])("li",null,[Object(D["createElementVNode"])("a",br,[Object(D["createElementVNode"])("i",{class:Object(D["normalizeClass"])(t.icon?t.icon:"icon-chevron-down")},null,2),Object(D["createTextVNode"])(Object(D["toDisplayString"])(t.name),1)]),Object(D["createElementVNode"])("div",fr,[Object(D["createElementVNode"])("ul",null,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.subcategories,o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:o.id},[o.isGroup?(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],{key:0},Object(D["renderList"])(o.subcategories,o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{onClick:i=>e.loadSubcategory(t,o),href:"#?"+e.makeUrl(t,o),key:o.id},Object(D["toDisplayString"])(o.name),9,vr))),128)):Object(D["createCommentVNode"])("",!0),o.isGroup?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,onClick:i=>e.loadSubcategory(t,o),href:"#?"+e.makeUrl(t,o)},Object(D["toDisplayString"])(o.name),9,Or))]))),128))])])])])),[[s,{activator:e.sideNavActivator}]])],8,hr))),128))])])}function jr(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */function la(e){return("period"!==e.uiSelectionType||e.uiSelectedPeriod===gi)&&(!e.hasPendingNonRangePeriodChange&&(!(e.uiSelectedPeriod===gi&&!e.hasPendingPresetSelection&&!e.isRangeValid)&&!(e.isComparing&&"custom"===e.comparePeriodType&&!e.isCompareRangeValid)))}function ca(e){if(e.hasPendingNonRangePeriodChange)return{type:"stop"};if(!e.isCompareDirty)return e.shouldCloseSelectorWithoutApplying?{type:"close"}:{type:"stop"};if(e.appliedPeriod===gi){if(!e.hasCommittedRangeBounds)return{type:"stop"};const t=`${e.appliedRangeStartDate},${e.appliedRangeEndDate}`;return{type:"commit",date:e.rollingDateParam||t,period:gi}}return e.formattedAppliedAnchorDate?{type:"commit",date:e.rollingDateParam||e.formattedAppliedAnchorDate,period:e.appliedPeriod}:{type:"stop"}}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */class wr{constructor(){jr(this,"privateState",Object(D["reactive"])({pages:[]})),jr(this,"state",Object(D["computed"])(()=>Object(D["readonly"])(this.privateState))),jr(this,"fetchAllPagesPromise",void 0),jr(this,"pages",Object(D["computed"])(()=>this.state.value.pages))}findPageInCategory(e){return this.pages.value.find(t=>t&&t.category&&t.category.id===e&&t.subcategory&&t.subcategory.id)}findPage(e,t){return this.pages.value.find(o=>o&&o.category&&o.subcategory&&o.category.id===e&&""+o.subcategory.id===t)}reloadAllPages(){return delete this.fetchAllPagesPromise,this.getAllPages()}getAllPages(){return this.fetchAllPagesPromise||(this.fetchAllPagesPromise=te.fetch({method:"API.getReportPagesMetadata",filter_limit:"-1"}).then(e=>(this.privateState.pages=e,this.pages.value))),this.fetchAllPagesPromise.then(()=>this.pages.value)}}var Sr=new wr;
+ */function da(e){return 0===e.detail}function ua(e){const t=Object.assign({},e);return delete t.comparePeriods,delete t.comparePeriodType,delete t.compareDates,t}function pa(e,t,o){const i=new Date(e.getTime());switch(t){case"day":i.setDate(i.getDate()+o);break;case"week":i.setDate(i.getDate()+7*o);break;case"month":i.setMonth(i.getMonth()+o);break;case"year":i.setFullYear(i.getFullYear()+o);break;default:break}return i}function ma(e,t,o){const i=new Date(e.getTime());return io&&i.setTime(o.getTime()),i}const ha={class:"period-type period-selector-options-column"},ga={id:"otherPeriods"};function ba(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("PeriodOptions"),s=Object(D["resolveComponent"])("PresetDateRanges");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ha,[Object(D["createElementVNode"])("h6",null,[Object(D["createElementVNode"])("b",null,Object(D["toDisplayString"])(e.translate("General_ChoosePeriod")),1)]),Object(D["createElementVNode"])("div",ga,[Object(D["createVNode"])(r,{"model-value":e.uiSelectedPeriod,periods:e.periodsFiltered,"checked-period-id":"period"===e.uiSelection.type?e.uiSelection.id:null,"active-date-period":e.appliedPeriod,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uiSelectedPeriod",t)),onSelect:t[1]||(t[1]=t=>e.$emit("period-select",t)),onDblclick:t[2]||(t[2]=t=>e.$emit("period-dblclick",t))},null,8,["model-value","periods","checked-period-id","active-date-period"]),Object(D["createVNode"])(s,{"model-value":e.activePresetId,"checked-preset-id":"preset"===e.uiSelection.type?e.uiSelection.id:null,"allowed-periods":e.periodsFiltered,"min-date":e.minAllowedDate,"max-date":e.maxAllowedDate,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:activePresetId",t)),onSelect:t[4]||(t[4]=t=>e.$emit("preset-select",t))},null,8,["model-value","checked-preset-id","allowed-periods","min-date","max-date"])])])}const fa={class:"presetDateRanges"},va={key:0,class:"preset-date-range-group-separator"},Oa=["name","id","checked","onChange"],ya={class:"preset-option-text"};function ja(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",fa,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.groupedPresetDateRanges,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:o,class:"preset-date-range-group"},[o>0?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",va)):Object(D["createCommentVNode"])("",!0),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("p",{key:t.id},[Object(D["createElementVNode"])("label",{class:Object(D["normalizeClass"])({"selected-period-label":e.checkedPresetId===t.id})},[Object(D["createElementVNode"])("input",{type:"radio",class:"preset-option-input",name:e.presetInputName,id:"preset_date_"+t.id,checked:e.checkedPresetId===t.id,onChange:o=>e.handlePresetSelected(t.id)},null,40,Oa),Object(D["createElementVNode"])("span",ya,Object(D["toDisplayString"])(e.translate(t.labelKey)),1)],2)]))),128))]))),128))])}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Cr(e){const t=[...e||[]];return t.sort((e,t)=>e.ordert.order?1:0),t}
+ */const wa={today:"day",yesterday:"day",last7days:"range",last30days:"range",last90days:"range",lastWeekMonSun:"week",lastMonth:"month",lastQuarter:"range",lastYear:"year",thisWeekMonToday:"week",thisMonth:"month",thisQuarter:"range",thisYear:"year"},Sa=[{id:"today",labelKey:"CoreHome_PresetDateToday"},{id:"yesterday",labelKey:"CoreHome_PresetDateYesterday"},{id:"last7days",labelKey:"CoreHome_PresetDateLast7Days"},{id:"last30days",labelKey:"CoreHome_PresetDateLast30Days"},{id:"last90days",labelKey:"CoreHome_PresetDateLast90Days"},{id:"lastWeekMonSun",labelKey:"CoreHome_PresetDateLastWeekMonSun"},{id:"lastMonth",labelKey:"CoreHome_PresetDateLastMonth"},{id:"lastQuarter",labelKey:"CoreHome_PresetDateLastQuarter"},{id:"lastYear",labelKey:"CoreHome_PresetDateLastYear"},{id:"thisWeekMonToday",labelKey:"CoreHome_PresetDateThisWeekMonToday"},{id:"thisMonth",labelKey:"CoreHome_PresetDateThisMonth"},{id:"thisQuarter",labelKey:"CoreHome_PresetDateThisQuarter"},{id:"thisYear",labelKey:"CoreHome_PresetDateThisYear"}],Ca={"day|today":"today","day|yesterday":"yesterday","range|last7":"last7days","range|last30":"last30days","range|last90":"last90days","week|lastweek":"lastWeekMonSun","month|lastmonth":"lastMonth","year|lastyear":"lastYear","week|today":"thisWeekMonToday","month|today":"thisMonth","year|today":"thisYear"};function ka(e,t){return Ca[`${e}|${t}`]||null}function Da(e){return new Date(e.getTime())}function Ea(e,t){const o=Da(e);return o.setDate(o.getDate()+t),o}function Pa(e){return new Date(e.getFullYear(),e.getMonth(),1)}function Ta(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function Va(e){const t=(e.getDay()+6)%7;return Ea(e,-t)}function xa(e){const t=e.getMonth(),o=t-t%3;return new Date(e.getFullYear(),o,1)}function Na(e,t){return`${d(e)},${d(t)}`}function Ba(e,t,o){return eo?new Date(o.getTime()):e}function Ia(e,t){const o=Da(t);switch(e){case"today":return{id:e,period:"day",date:"today",startDate:o,endDate:o};case"yesterday":{const t=Ea(o,-1);return{id:e,period:"day",date:"yesterday",startDate:t,endDate:t}}case"last7days":{const t=Ea(o,-6);return{id:e,period:"range",date:"last7",startDate:t,endDate:o}}case"last30days":{const t=Ea(o,-29);return{id:e,period:"range",date:"last30",startDate:t,endDate:o}}case"last90days":{const t=Ea(o,-89);return{id:e,period:"range",date:"last90",startDate:t,endDate:o}}case"lastWeekMonSun":{const t=Va(o),i=Ea(t,-7),n=Ea(i,6);return{id:e,period:"week",date:"lastweek",startDate:i,endDate:n}}case"lastMonth":{const t=new Date(o.getFullYear(),o.getMonth()-1,1),i=Pa(t),n=Ta(t);return{id:e,period:"month",date:"lastmonth",startDate:i,endDate:n}}case"lastQuarter":{const t=xa(o),i=Ea(t,-1),n=xa(i);return{id:e,period:"range",date:Na(n,i),startDate:n,endDate:i}}case"lastYear":{const t=o.getFullYear()-1,i=new Date(t,0,1),n=new Date(t,11,31);return{id:e,period:"year",date:"lastyear",startDate:i,endDate:n}}case"thisWeekMonToday":{const t=Va(o);return{id:e,period:"week",date:"today",startDate:t,endDate:o}}case"thisMonth":{const t=Pa(o);return{id:e,period:"month",date:"today",startDate:t,endDate:o}}case"thisQuarter":{const t=xa(o);return{id:e,period:"range",date:Na(t,o),startDate:t,endDate:o}}case"thisYear":{const t=new Date(o.getFullYear(),0,1);return{id:e,period:"year",date:"today",startDate:t,endDate:o}}default:throw new Error("Unknown preset date range: "+e)}}const Ma=[["today","yesterday"],["last7days","last30days","last90days"],["lastWeekMonSun","lastMonth","lastQuarter","lastYear"],["thisWeekMonToday","thisMonth","thisQuarter","thisYear"]];let Fa=0;var La=Object(D["defineComponent"])({props:{modelValue:{type:String,default:null},checkedPresetId:{type:String,default:null},minDate:{type:Date,required:!0},maxDate:{type:Date,required:!0},today:{type:Date,default:()=>u()},allowedPeriods:{type:Array,required:!0}},data(){const e="preset-date-range-"+Fa;return Fa+=1,{presetInputName:e}},emits:["update:modelValue","select"],computed:{presetDateRanges(){return Sa.filter(e=>this.allowedPeriods.includes(wa[e.id]))},groupedPresetDateRanges(){const e=new Map(this.presetDateRanges.map(e=>[e.id,e]));return Ma.map(t=>t.map(t=>e.get(t)).filter(e=>!!e)).filter(e=>e.length)}},methods:{translate:a,handlePresetSelected(e){const t=Ia(e,this.today);this.$emit("update:modelValue",e),this.$emit("select",Object.assign(Object.assign({},t),{},{startDate:Ba(t.startDate,this.minDate,this.maxDate),endDate:Ba(t.endDate,this.minDate,this.maxDate)}))}}});La.render=ja;var Ra=La;const Aa=["aria-label"],_a=["title","onDblclick"],Ha=["name","id","checked","onChange","onKeydown"],$a={class:"period-option-text"};function Ua(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"periodOptions",role:"radiogroup","aria-label":e.translate("General_ChoosePeriod")},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.displayPeriods,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("p",{key:t},[Object(D["createElementVNode"])("label",{class:Object(D["normalizeClass"])(["period-option-label",{"selected-period-label":e.checkedPeriodId===t}]),title:t===e.activeDatePeriod?"":e.translate("General_DoubleClickToChangePeriod"),onDblclick:o=>e.handlePeriodDoubleClick(t)},[Object(D["createElementVNode"])("input",{class:"period-option-input",type:"radio",name:e.periodInputName,id:"period_id_"+t,checked:e.checkedPeriodId===t,onChange:o=>e.handlePeriodSelected(t),onKeydown:Object(D["withKeys"])(Object(D["withModifiers"])(o=>e.handlePeriodEnter(t),["prevent"]),["enter"])},null,40,Ha),Object(D["createElementVNode"])("span",$a,Object(D["toDisplayString"])(e.getPeriodDisplayText(t)),1)],42,_a)]))),128))],8,Aa)}let qa=0;var Wa=Object(D["defineComponent"])({name:"PeriodOptions",props:{modelValue:{type:String,default:null},periods:{type:Array,required:!0},checkedPeriodId:{type:String,default:null},activeDatePeriod:{type:String,required:!0}},data(){const e="period-"+qa;return qa+=1,{periodInputName:e}},emits:["update:modelValue","select","dblclick"],computed:{displayPeriods(){return this.periods.includes("range")?["range"].concat(this.periods.filter(e=>"range"!==e)):this.periods}},methods:{translate:a,getPeriodDisplayText(e){const t="range"===e?`${a("General_Custom")} ${a("General_DateRangeInPeriodList")}`:c.get(e).getDisplayText();return t.charAt(0).toUpperCase()+t.slice(1)},handlePeriodSelected(e){const t={period:e};this.$emit("update:modelValue",e),this.$emit("select",t)},handlePeriodEnter(e){this.handlePeriodSelected(e)},handlePeriodDoubleClick(e){const t={period:e};this.$emit("dblclick",t)}}});Wa.render=Ua;var za=Wa,Ga=Object(D["defineComponent"])({name:"PeriodSelectorOptionsColumn",components:{PresetDateRanges:Ra,PeriodOptions:za},props:{uiSelectedPeriod:{type:String,required:!0},periodsFiltered:{type:Array,required:!0},uiSelection:{type:Object,required:!0},appliedPeriod:{type:String,required:!0},activePresetId:{type:String,default:null},minAllowedDate:{type:Date,required:!0},maxAllowedDate:{type:Date,required:!0}},emits:["update:uiSelectedPeriod","update:activePresetId","period-select","period-dblclick","preset-select"],methods:{translate:a}});Ga.render=ba;var Ka=Ga;const Ya={class:"period-selector-calendar-column"},Qa={class:"apply-button-container"},Ja=["disabled","value"];function Xa(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("DateRangePicker"),s=Object(D["resolveComponent"])("PeriodDatePicker"),l=Object(D["resolveComponent"])("PeriodSelectorCompareControls");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ya,[Object(D["createElementVNode"])("div",{class:Object(D["normalizeClass"])({"calendar-disabled":"preset"===e.uiSelection.type}),onClickCapture:t[2]||(t[2]=t=>e.$emit("range-preset-date-cell-click-capture",t))},[Object(D["withDirectives"])(Object(D["createVNode"])(r,{class:"period-range","start-date":e.displayRangeStartDate,"end-date":e.displayRangeEndDate,onRangeChange:t[0]||(t[0]=t=>e.$emit("range-change",t)),onSubmit:t[1]||(t[1]=t=>e.$emit("apply-click"))},null,8,["start-date","end-date"]),[[D["vShow"],"range"===e.calendarViewport]])],34),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",{class:Object(D["normalizeClass"])(["period-date",{"calendar-disabled":"preset"===e.uiSelection.type}])},[Object(D["createVNode"])(s,{id:"datepicker",period:e.singleCalendarPeriod,date:e.singleCalendarSelectedDate,onSelect:t[3]||(t[3]=t=>e.$emit("single-date-select",t.date))},null,8,["period","date"])],2),[[D["vShow"],"single"===e.calendarViewport]]),Object(D["createVNode"])(l,{"is-comparison-enabled":e.isComparisonEnabled,"is-comparing":e.isComparing,"compare-period-type":e.comparePeriodType,"compare-start-date":e.compareStartDate,"compare-end-date":e.compareEndDate,"compare-period-dropdown-options":e.comparePeriodDropdownOptions,"onUpdate:isComparing":t[4]||(t[4]=t=>e.$emit("update:isComparing",t)),"onUpdate:comparePeriodType":t[5]||(t[5]=t=>e.$emit("update:comparePeriodType",t)),"onUpdate:compareStartDate":t[6]||(t[6]=t=>e.$emit("update:compareStartDate",t)),"onUpdate:compareEndDate":t[7]||(t[7]=t=>e.$emit("update:compareEndDate",t))},null,8,["is-comparison-enabled","is-comparing","compare-period-type","compare-start-date","compare-end-date","compare-period-dropdown-options"]),Object(D["createElementVNode"])("div",Qa,[Object(D["createElementVNode"])("input",{type:"submit",id:"calendarApply",class:"btn",onClick:t[8]||(t[8]=t=>e.$emit("apply-click")),disabled:!e.isApplyEnabled,value:e.translate("General_Apply")},null,8,Ja)])])}const Za={key:0,class:"compare-checkbox"},er={class:"compare-checkbox-label"},tr=["checked"],or={class:"compare-checkbox-text"},ir={id:"comparePeriodToDropdown"},nr={key:1,class:"compare-date-range"},ar={id:"comparePeriodStartDate"},rr=Object(D["createElementVNode"])("span",{class:"compare-dates-separator"},null,-1),sr={id:"comparePeriodEndDate"};function lr(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Field");return Object(D["openBlock"])(),Object(D["createElementBlock"])(D["Fragment"],null,[e.isComparisonEnabled?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Za,[Object(D["createElementVNode"])("label",er,[Object(D["createElementVNode"])("input",{class:"compare-checkbox-input",id:"comparePeriodTo",type:"checkbox",checked:!!e.isComparing,onChange:t[0]||(t[0]=t=>e.onCompareToggle(t))},null,40,tr),Object(D["createElementVNode"])("span",or,Object(D["toDisplayString"])(e.translate("General_CompareTo")),1)]),Object(D["createElementVNode"])("div",ir,[Object(D["createVNode"])(r,{"model-value":e.comparePeriodType,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:comparePeriodType",t)),style:Object(D["normalizeStyle"])({visibility:e.isComparing?"visible":"hidden"}),name:"comparePeriodToDropdown",uicontrol:"select",options:e.comparePeriodDropdownOptions,"full-width":!0,disabled:!e.isComparing},null,8,["model-value","style","options","disabled"])])])):Object(D["createCommentVNode"])("",!0),e.isComparing&&"custom"===e.comparePeriodType?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",nr,[Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",ar,[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(r,{"model-value":e.compareStartDate,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:compareStartDate",t)),name:"comparePeriodStartDate",uicontrol:"text","full-width":!0,title:e.translate("CoreHome_StartDate"),placeholder:"YYYY-MM-DD"},null,8,["model-value","title"])])]),rr,Object(D["createElementVNode"])("div",sr,[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(r,{"model-value":e.compareEndDate,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:compareEndDate",t)),name:"comparePeriodEndDate",uicontrol:"text","full-width":!0,title:e.translate("CoreHome_EndDate"),placeholder:"YYYY-MM-DD"},null,8,["model-value","title"])])])])])):Object(D["createCommentVNode"])("",!0)],64)}const cr=Se("CorePluginsAdmin","Field");var dr=Object(D["defineComponent"])({name:"PeriodSelectorCompareControls",components:{Field:cr},props:{isComparisonEnabled:{type:Boolean,required:!0},isComparing:{type:Boolean,default:null},comparePeriodType:{type:String,required:!0},compareStartDate:{type:String,required:!0},compareEndDate:{type:String,required:!0},comparePeriodDropdownOptions:{type:Array,required:!0}},emits:["update:isComparing","update:comparePeriodType","update:compareStartDate","update:compareEndDate"],methods:{translate:a,onCompareToggle(e){this.$emit("update:isComparing",e.target.checked)}}});dr.render=lr;var ur=dr,pr=Object(D["defineComponent"])({name:"PeriodSelectorCalendarColumn",components:{DateRangePicker:li,PeriodDatePicker:Oi,PeriodSelectorCompareControls:ur},props:{uiSelection:{type:Object,required:!0},calendarViewport:{type:String,required:!0},displayRangeStartDate:{type:String,default:null},displayRangeEndDate:{type:String,default:null},singleCalendarPeriod:{type:String,required:!0},singleCalendarSelectedDate:{type:Date,default:null},isComparisonEnabled:{type:Boolean,required:!0},isComparing:{type:Boolean,default:null},comparePeriodType:{type:String,required:!0},compareStartDate:{type:String,required:!0},compareEndDate:{type:String,required:!0},comparePeriodDropdownOptions:{type:Array,required:!0},isApplyEnabled:{type:Boolean,required:!0}},emits:["range-change","single-date-select","apply-click","range-preset-date-cell-click-capture","update:isComparing","update:comparePeriodType","update:compareStartDate","update:compareEndDate"],methods:{translate:a}});pr.render=Xa;var mr=pr;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function kr(e){const t=e;return t.subcategories?t.subcategories:[]}
+ */const hr=["date","period","comparePeriods","comparePeriodType","compareDates","compareSegments"];function gr(e,t){return`${e}|${t}`}function br(e){const t={};return Object.keys(e).filter(e=>!hr.includes(e)).sort().forEach(o=>{t[o]=e[o]}),JSON.stringify(t)}function fr(e,t,o,i,n){return!o&&e===i&&t===n}function vr(e,t,o,i){const n=!!o&&i===e,a=n&&o?Object.assign({},o):null;return{syncedUiSelection:a,lastKnownHashSelectionKey:e,lastKnownHashContextKey:t,nextHashUiSelection:null,nextHashSelectionKey:null,lastInteractionSource:null}}var Or=Object(D["defineComponent"])({name:"PeriodSelector",props:{periods:Array},components:{PeriodSelectorOptionsColumn:Ka,PeriodSelectorCalendarColumn:mr,ActivityIndicator:qe},directives:{ExpandOnClick:Ot,Tooltips:rt},data(){const e=U.parsed.value.period,t=fi(e)?e:"day",o=mi(),i=hi();return{uiSelection:{type:"period",id:e},lastInteractionSource:null,nextHashUiSelection:null,nextHashSelectionKey:null,lastKnownHashSelectionKey:null,lastKnownHashContextKey:null,minAllowedDate:o,maxAllowedDate:i,activePresetId:null,pendingPresetSelection:null,committedPeriod:e,committedAnchorDate:null,selectedPeriod:e,calendarViewport:e===gi?"range":"single",singleCalendarPeriod:t,singleCalendarSelectedDate:null,appliedRangeStartDate:null,appliedRangeEndDate:null,isRangeValid:null,isLoadingNewPage:!1,isComparing:null,comparePeriodType:"previousPeriod",compareStartDate:"",compareEndDate:"",compareAppliedSignature:""}},mounted(){M.on("hidePeriodSelector",()=>{window.$(this.$refs.root).parent("#periodString").hide()}),M.on("matomoPageChange",()=>{window.$(this.$refs.root).parent("#periodString").show()}),window.initTopControls(),this.handleZIndexPositionRelativeCompareDropdownIssue()},computed:{matomoParsed(){return U.parsed.value},isComparingStoreValue(){return No.isComparingPeriods()},periodComparisonsStoreValue(){return No.getPeriodComparisons()},comparePeriodDropdownOptions(){return pi},currentlyViewingText(){let e;if("range"===this.committedPeriod){if(!this.appliedRangeStartDate||!this.appliedRangeEndDate)return a("General_Error");e=`${this.appliedRangeStartDate},${this.appliedRangeEndDate}`}else{if(!this.committedAnchorDate)return a("General_Error");e=d(this.committedAnchorDate)}try{return c.parse(this.committedPeriod,e).getPrettyString()}catch(t){return a("General_Error")}},isComparisonEnabled(){return No.isComparisonEnabled()},periodsFiltered(){return(this.periods||[]).filter(e=>c.isRecognizedPeriod(e))},selectedComparisonParams(){if(!this.isComparing)return{};if("custom"===this.comparePeriodType)return{comparePeriods:["range"],comparePeriodType:"custom",compareDates:[`${this.compareStartDate},${this.compareEndDate}`]};if("previousPeriod"===this.comparePeriodType)return{comparePeriods:[this.selectedPeriod],comparePeriodType:"previousPeriod",compareDates:[this.previousPeriodDateToSelectedPeriod]};if("previousYear"===this.comparePeriodType){const e="range"===this.selectedPeriod?`${this.appliedRangeStartDate},${this.appliedRangeEndDate}`:d(this.committedAnchorDate),t=c.parse(this.selectedPeriod,e).getDateRange();return t[0].setFullYear(t[0].getFullYear()-1),t[1].setFullYear(t[1].getFullYear()-1),"range"===this.selectedPeriod?{comparePeriods:["range"],comparePeriodType:"previousYear",compareDates:[`${d(t[0])},${d(t[1])}`]}:{comparePeriods:[this.selectedPeriod],comparePeriodType:"previousYear",compareDates:[d(t[0])]}}return console.warn("Unknown compare period type: "+this.comparePeriodType),{}},previousPeriodDateToSelectedPeriod(){if("range"===this.selectedPeriod){const e=p(this.appliedRangeStartDate),t=p(this.appliedRangeEndDate),o=k.getLastNRange("day",2,e).startDate,i=Math.floor((t.valueOf()-e.valueOf())/864e5),n=k.getLastNRange("day",1+i,o);return`${d(n.startDate)},${d(n.endDate)}`}const e=k.getLastNRange(this.selectedPeriod,2,this.committedAnchorDate).startDate;return d(e)},selectedDateString(){if("range"===this.selectedPeriod){const e=this.appliedRangeStartDate,t=this.appliedRangeEndDate,o=p(e),i=p(t);return!bi(o)||!bi(i)||o>i?(window.$("#alert").find("h2").text(a("General_InvalidDateRange")),M.helper.modalConfirm("#alert",{}),null):`${e},${t}`}return d(this.committedAnchorDate)},isErrorDisplayed(){return this.currentlyViewingText===a("General_Error")},isRangeSelection(){return"range"===this.committedPeriod},canShowMovePeriod(){return!this.isRangeSelection&&!this.isErrorDisplayed},compareCurrentSignature(){return JSON.stringify({isComparing:!!this.isComparing,comparePeriodType:this.comparePeriodType||"",compareStartDate:this.compareStartDate||"",compareEndDate:this.compareEndDate||""})},isCompareDirty(){return this.compareCurrentSignature!==this.compareAppliedSignature},hasPendingNonRangePeriodChange(){return"period"===this.uiSelection.type&&"period"===this.lastInteractionSource&&this.selectedPeriod!==gi&&this.selectedPeriod!==this.committedPeriod},isRangePresetSelection(){return"preset"===this.uiSelection.type&&this.selectedPeriod===gi},displayRangeStartDate(){return this.isRangePresetSelection&&this.pendingPresetSelection?d(this.pendingPresetSelection.startDate):this.appliedRangeStartDate},displayRangeEndDate(){return this.isRangePresetSelection&&this.pendingPresetSelection?d(this.pendingPresetSelection.endDate):this.appliedRangeEndDate}},watch:{isComparingStoreValue:{immediate:!0,handler(e){this.isComparing=e}},matomoParsed:{immediate:!0,handler(){this.updateSelectedValuesFromHash()}},periodComparisonsStoreValue:{immediate:!0,handler(){this.updateComparisonValuesFromStore(),this.compareAppliedSignature=this.compareCurrentSignature}}},methods:{onExpand(e){da(e)&&window.$(this.$refs.root).find(".ui-datepicker-month").focus()},onClosed(e){da(e)&&window.$(this.$refs.title).focus()},handleZIndexPositionRelativeCompareDropdownIssue(){const e=window.$(this.$refs.root);e.on("focus","#comparePeriodToDropdown .select-dropdown",()=>{e.addClass("compare-dropdown-open")}).on("blur","#comparePeriodToDropdown .select-dropdown",()=>{e.removeClass("compare-dropdown-open")})},setUiSelection(e,t){this.uiSelection=e,this.lastInteractionSource=t},clearPresetSelection(){this.activePresetId=null,this.pendingPresetSelection=null},setPendingPeriodAndDate(e,t){this.committedPeriod=e,this.selectedPeriod=e,this.committedAnchorDate=t,this.setRangeStartEndFromPeriod(e,d(t)),fi(e)&&(this.singleCalendarPeriod=e,this.singleCalendarSelectedDate=t)},setPiwikPeriodAndDate(e,t){this.setPendingPeriodAndDate(e,t),this.setUiSelection({type:"period",id:e},"period");const o=d(t);this.clearPresetSelection(),this.commitSelectionToUrl(o,this.selectedPeriod)},commitSelectionToUrl(e,t){this.nextHashUiSelection=Object.assign({},this.uiSelection),this.nextHashSelectionKey=gr(t,e),this.compareAppliedSignature=this.compareCurrentSignature,this.propagateNewUrlParams(e,t),window.initTopControls()},onPeriodOptionSelected(e){if(this.setUiSelection({type:"period",id:e.period},"period"),this.selectedPeriod=e.period,this.clearPresetSelection(),e.period===gi)return this.calendarViewport="range",void(this.isRangeValid=!0);this.calendarViewport="single",fi(e.period)&&(this.singleCalendarPeriod=e.period),this.singleCalendarSelectedDate=e.period===this.committedPeriod?this.committedAnchorDate:null},onPeriodOptionDblClick(e){this.onPeriodOptionSelected(e),e.period!==gi&&e.period!==this.committedPeriod&&this.committedAnchorDate&&this.setPiwikPeriodAndDate(e.period,this.committedAnchorDate)},canInteractWithSingleCalendar(){return"single"===this.calendarViewport&&"period"===this.uiSelection.type&&this.selectedPeriod!==gi},onDatePickerSelected(e){this.canInteractWithSingleCalendar()&&(this.setUiSelection({type:"period",id:this.selectedPeriod},"calendar"),this.setPendingPeriodAndDate(this.selectedPeriod,e),this.clearPresetSelection(),this.commitSelectionToUrl(d(e),this.selectedPeriod))},onPresetDateRangeSelected(e){this.periodsFiltered.includes(e.period)&&(this.setUiSelection({type:"preset",id:e.id},"preset"),this.activePresetId=e.id,this.selectedPeriod=e.period,this.isRangeValid=!0,this.pendingPresetSelection=e,e.period!==gi?(this.calendarViewport="single",this.singleCalendarSelectedDate=e.startDate,fi(e.period)&&(this.singleCalendarPeriod=e.period)):this.calendarViewport="range")},propagateNewUrlParams(e,t){const o=this.selectedComparisonParams;let i;M.helper.isReportingPage()?(this.closePeriodSelector(),i=U.hashParsed.value):(this.isLoadingNewPage=!0,i=U.parsed.value),U.updateLocation(Object.assign(Object.assign({},ua(i)),{},{date:e,period:t},o))},hasPendingPresetSelectionOwnedByUi(){return!!this.pendingPresetSelection&&"preset"===this.uiSelection.type&&this.pendingPresetSelection.id===this.uiSelection.id},shouldCloseSelectorWithoutApplying(){return"preset"===this.uiSelection.type&&this.selectedPeriod!==gi},hasCommittedRangeBounds(){return!!this.appliedRangeStartDate&&!!this.appliedRangeEndDate},applyPendingPresetSelection(){if(!this.hasPendingPresetSelectionOwnedByUi())return!1;const e=this.pendingPresetSelection;return this.committedPeriod=e.period,this.committedAnchorDate=e.startDate,this.appliedRangeStartDate=d(e.startDate),this.appliedRangeEndDate=d(e.endDate),this.commitSelectionToUrl(e.date,e.period),!0},applyRangeSelection(){if(this.selectedPeriod!==gi)return!1;const e=this.selectedDateString;return!e||(this.committedPeriod=gi,this.commitSelectionToUrl(this.getCurrentRollingDateParamIfOwnedByPreset()||e,gi),!0)},applyNonRangeOrCompareChanges(){const e=ca({hasPendingNonRangePeriodChange:this.hasPendingNonRangePeriodChange,isCompareDirty:this.isCompareDirty,shouldCloseSelectorWithoutApplying:this.shouldCloseSelectorWithoutApplying(),appliedPeriod:this.committedPeriod,hasCommittedRangeBounds:this.hasCommittedRangeBounds(),rollingDateParam:this.getCurrentRollingDateParamIfOwnedByPreset(),appliedRangeStartDate:this.appliedRangeStartDate,appliedRangeEndDate:this.appliedRangeEndDate,formattedAppliedAnchorDate:this.committedAnchorDate?d(this.committedAnchorDate):null});"stop"!==e.type&&("close"!==e.type?this.commitSelectionToUrl(e.date,e.period):this.closePeriodSelector())},onApplyClicked(){this.applyPendingPresetSelection()||this.applyRangeSelection()||this.applyNonRangeOrCompareChanges()},updateComparisonValuesFromStore(){this.comparePeriodType="previousPeriod",this.compareStartDate="",this.compareEndDate="";const e=No.getPeriodComparisons();if(e.length<2)return;const t=U.parsed.value.comparePeriodType;if(!ui.includes(t))return;if(this.comparePeriodType=t,"custom"!==this.comparePeriodType||"range"!==e[1].params.period)return;let o;try{o=c.parse(e[1].params.period,e[1].params.date)}catch(a){return}const[i,n]=o.getDateRange();this.compareStartDate=d(i),this.compareEndDate=d(n)},getCurrentContextKey(){return br(U.parsed.value)},applyUiSelectionFromHash(e,t,o){if(o)return this.uiSelection=o,void(this.activePresetId="preset"===o.type?o.id:null);const i=ka(e,t);if(i&&this.periodsFiltered.includes(e))return this.uiSelection={type:"preset",id:i},this.activePresetId=i,void(this.pendingPresetSelection=null);this.setUiSelection({type:"period",id:e},null),this.clearPresetSelection()},getCurrentRollingDateParamIfOwnedByPreset(){if("preset"!==this.uiSelection.type)return null;const e=U.parsed.value.period||"",t=U.parsed.value.date||"";if(e!==this.committedPeriod||!t)return null;const o=ka(e,t);return o!==this.uiSelection.id?null:t},resetSelectedDateValues(){this.committedAnchorDate=null,this.appliedRangeStartDate=null,this.appliedRangeEndDate=null},applyDateValuesFromHash(e,t){if(e===gi){const o=c.get(e).parse(t),[i,n]=o.getDateRange();return this.committedAnchorDate=i,this.appliedRangeStartDate=d(i),void(this.appliedRangeEndDate=d(n))}this.committedAnchorDate=p(t),this.setRangeStartEndFromPeriod(e,t),fi(e)&&(this.singleCalendarPeriod=e),this.singleCalendarSelectedDate=this.committedAnchorDate},updateSelectedValuesFromHash(){const e=U.parsed.value.date||"",t=U.parsed.value.period||"",o=gr(t,e),i=this.getCurrentContextKey();if(fr(o,i,this.nextHashUiSelection,this.lastKnownHashSelectionKey,this.lastKnownHashContextKey))return;const n=vr(o,i,this.nextHashUiSelection,this.nextHashSelectionKey);this.nextHashUiSelection=n.nextHashUiSelection,this.nextHashSelectionKey=n.nextHashSelectionKey,this.lastInteractionSource=n.lastInteractionSource,this.lastKnownHashSelectionKey=n.lastKnownHashSelectionKey,this.lastKnownHashContextKey=n.lastKnownHashContextKey,this.applyUiSelectionFromHash(t,e,n.syncedUiSelection),this.committedPeriod=t,this.selectedPeriod=t,this.resetSelectedDateValues();try{c.parse(t,e)}catch(a){return void(this.isRangeValid=t!==gi&&null)}this.applyDateValuesFromHash(t,e),this.isRangeValid=t===gi||null,this.pendingPresetSelection=null,this.calendarViewport=t===gi?"range":"single",this.compareAppliedSignature=this.compareCurrentSignature},setRangeStartEndFromPeriod(e,t){const o=c.parse(e,t).getDateRange();this.appliedRangeStartDate=d(o[0]this.maxAllowedDate?this.maxAllowedDate:o[1])},canInteractWithRangeCalendar(){return"range"===this.calendarViewport&&"period"===this.uiSelection.type&&this.selectedPeriod===gi},onRangeChange(e,t){this.canInteractWithRangeCalendar()&&(e&&t?(this.isRangeValid=!0,this.appliedRangeStartDate=e,this.appliedRangeEndDate=t,this.setUiSelection({type:"period",id:gi},"range")):this.isRangeValid=!1)},onRangePresetDateCellClickCapture(e){if(!this.isRangePresetSelection)return;const t=e.target;t&&t.closest(".ui-datepicker-calendar a")&&(e.preventDefault(),e.stopPropagation())},isApplyEnabled(){return la({uiSelectionType:this.uiSelection.type,uiSelectedPeriod:this.selectedPeriod,hasPendingNonRangePeriodChange:this.hasPendingNonRangePeriodChange,hasPendingPresetSelection:!!this.pendingPresetSelection,isRangeValid:this.isRangeValid,isComparing:this.isComparing,comparePeriodType:this.comparePeriodType,isCompareRangeValid:this.isCompareRangeValid()})},closePeriodSelector(){this.$refs.root.classList.remove("expanded")},isCompareRangeValid(){try{p(this.compareStartDate)}catch(e){return!1}try{p(this.compareEndDate)}catch(e){return!1}return!0},movePeriod(e){if(!this.canMovePeriod(e))return;const t=this.committedAnchorDate||new Date,o=pa(t,this.committedPeriod,e),i=ma(o,this.minAllowedDate,this.maxAllowedDate);this.setPiwikPeriodAndDate(this.committedPeriod,i)},isPeriodMoveDisabled(e){return null===this.committedAnchorDate?this.isRangeSelection:this.isRangeSelection||!this.canMovePeriod(e)},canMovePeriod(e){if(null===this.committedAnchorDate)return!1;const t=-1===e?this.minAllowedDate:this.maxAllowedDate;return!g(this.committedAnchorDate,t,this.committedPeriod)}}});Or.render=sa;var yr=Or;const jr={class:"reportingMenu"},wr=["aria-label"],Sr=["data-category-id"],Cr=["onClick"],kr={class:"hidden"},Dr={key:2,role:"menu"},Er=["href","onClick","title"],Pr=["href","onClick"],Tr=["onClick"],Vr=Object(D["createElementVNode"])("span",{class:"icon-help"},null,-1),xr=[Vr],Nr={id:"mobile-left-menu",class:"sidenav sidenav--reporting-menu-mobile hide-on-large-only"},Br=["data-category-id"],Ir={key:1,class:"collapsible collapsible-accordion"},Mr={class:"collapsible-header"},Fr={class:"collapsible-body"},Lr=["onClick","href"],Rr=["onClick","href"];function Ar(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("MenuItemsDropdown"),s=Object(D["resolveDirective"])("side-nav");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",jr,[Object(D["createElementVNode"])("ul",{class:"navbar hide-on-med-and-down collapsible",role:"menu","aria-label":e.translate("CoreHome_MainNavigation")},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.menu,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:Object(D["normalizeClass"])(["menuTab",{active:t.id===e.activeCategory}]),role:"menuitem",key:t.id,"data-category-id":t.id},[t.component?(Object(D["openBlock"])(),Object(D["createBlock"])(Object(D["resolveDynamicComponent"])(t.component),{key:0,onAction:o=>e.loadCategory(t)},null,40,["onAction"])):Object(D["createCommentVNode"])("",!0),t.component?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,class:"item",tabindex:"5",href:"",onClick:Object(D["withModifiers"])(o=>e.loadCategory(t),["prevent"])},[Object(D["createElementVNode"])("span",{class:Object(D["normalizeClass"])("menu-icon "+(t.icon?t.icon:t.subcategories&&t.id===e.activeCategory?"icon-chevron-down":"icon-chevron-right"))},null,2),Object(D["createTextVNode"])(Object(D["toDisplayString"])(t.name)+" ",1),Object(D["createElementVNode"])("span",kr,Object(D["toDisplayString"])(e.translate("CoreHome_Menu")),1)],8,Cr)),t.component?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",Dr,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.subcategories,o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{role:"menuitem",class:Object(D["normalizeClass"])({active:(o.id===e.displayedSubcategory||o.isGroup&&e.activeSubsubcategory===e.displayedSubcategory)&&t.id===e.displayedCategory}),key:o.id},[o.isGroup?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:0,"show-search":!0,"menu-title":e.htmlEntities(o.name)},{default:Object(D["withCtx"])(()=>[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(o.subcategories,i=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{class:Object(D["normalizeClass"])(["item",{active:i.id===e.activeSubsubcategory&&o.id===e.displayedSubcategory&&t.id===e.displayedCategory}]),tabindex:"5",href:"#?"+e.makeUrl(t,i),onClick:o=>e.loadSubcategory(t,i,o),title:i.tooltip,key:i.id},Object(D["toDisplayString"])(i.name),11,Er))),128))]),_:2},1032,["menu-title"])):Object(D["createCommentVNode"])("",!0),o.isGroup?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,href:"#?"+e.makeUrl(t,o),class:"item",onClick:i=>e.loadSubcategory(t,o,i),tabindex:"5"},Object(D["toDisplayString"])(o.name),9,Pr)),o.help?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:2,class:Object(D["normalizeClass"])(["item-help-icon",{active:e.helpShownCategory&&e.helpShownCategory.subcategory===o.id&&e.helpShownCategory.category===t.id&&o.help}]),tabindex:"5",href:"javascript:",onClick:i=>e.showHelp(t,o,i)},xr,10,Tr)):Object(D["createCommentVNode"])("",!0)],2))),128))]))],10,Sr))),128))],8,wr),Object(D["createElementVNode"])("ul",Nr,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.menu,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:"no-padding",key:t.id,"data-category-id":t.id},[t.component?(Object(D["openBlock"])(),Object(D["createBlock"])(Object(D["resolveDynamicComponent"])(t.component),{key:0,onAction:o=>e.loadCategory(t)},null,40,["onAction"])):Object(D["createCommentVNode"])("",!0),t.component?Object(D["createCommentVNode"])("",!0):Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",Ir,[Object(D["createElementVNode"])("li",null,[Object(D["createElementVNode"])("a",Mr,[Object(D["createElementVNode"])("i",{class:Object(D["normalizeClass"])(t.icon?t.icon:"icon-chevron-down")},null,2),Object(D["createTextVNode"])(Object(D["toDisplayString"])(t.name),1)]),Object(D["createElementVNode"])("div",Fr,[Object(D["createElementVNode"])("ul",null,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.subcategories,o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:o.id},[o.isGroup?(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],{key:0},Object(D["renderList"])(o.subcategories,o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{onClick:i=>e.loadSubcategory(t,o),href:"#?"+e.makeUrl(t,o),key:o.id},Object(D["toDisplayString"])(o.name),9,Lr))),128)):Object(D["createCommentVNode"])("",!0),o.isGroup?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,onClick:i=>e.loadSubcategory(t,o),href:"#?"+e.makeUrl(t,o)},Object(D["toDisplayString"])(o.name),9,Rr))]))),128))])])])])),[[s,{activator:e.sideNavActivator}]])],8,Br))),128))])])}function _r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Dr(e){const t=e;return t.subcategories?t.subcategories:[]}function Er(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */class Hr{constructor(){_r(this,"privateState",Object(D["reactive"])({pages:[]})),_r(this,"state",Object(D["computed"])(()=>Object(D["readonly"])(this.privateState))),_r(this,"fetchAllPagesPromise",void 0),_r(this,"pages",Object(D["computed"])(()=>this.state.value.pages))}findPageInCategory(e){return this.pages.value.find(t=>t&&t.category&&t.category.id===e&&t.subcategory&&t.subcategory.id)}findPage(e,t){return this.pages.value.find(o=>o&&o.category&&o.subcategory&&o.category.id===e&&""+o.subcategory.id===t)}reloadAllPages(){return delete this.fetchAllPagesPromise,this.getAllPages()}getAllPages(){return this.fetchAllPagesPromise||(this.fetchAllPagesPromise=te.fetch({method:"API.getReportPagesMetadata",filter_limit:"-1"}).then(e=>(this.privateState.pages=e,this.pages.value))),this.fetchAllPagesPromise.then(()=>this.pages.value)}}var $r=new Hr;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Pr(e){const t=parseFloat(e);return!Number.isNaN(t)&&Number.isFinite(t)}class Tr{constructor(){Er(this,"privateState",Object(D["reactive"])({activeSubcategoryId:null,activeSubsubcategoryId:null})),Er(this,"state",Object(D["computed"])(()=>Object(D["readonly"])(this.privateState))),Er(this,"activeCategory",Object(D["computed"])(()=>"undefined"!==typeof this.state.value.activeCategoryId?this.state.value.activeCategoryId:U.parsed.value.category)),Er(this,"activeSubcategory",Object(D["computed"])(()=>this.state.value.activeSubcategoryId||U.parsed.value.subcategory)),Er(this,"activeSubsubcategory",Object(D["computed"])(()=>{const e=this.state.value.activeSubsubcategoryId;if(e)return e;const t=this.findSubcategory(this.activeCategory.value,this.activeSubcategory.value);return t.subsubcategory&&t.subsubcategory.id===this.activeSubcategory.value?t.subsubcategory.id:null})),Er(this,"menu",Object(D["computed"])(()=>this.buildMenuFromPages()))}fetchMenuItems(){return Sr.getAllPages().then(()=>this.menu.value)}reloadMenuItems(){return Sr.reloadAllPages().then(()=>this.menu.value)}findSubcategory(e,t){let o=void 0,i=void 0,n=void 0;return this.menu.value.forEach(a=>{a.id===e&&(kr(a)||[]).forEach(e=>{e.id===t&&(o=a,i=e),e.isGroup&&(Dr(e)||[]).forEach(r=>{r.id===t&&(o=a,i=e,n=r)})})}),{category:o,subcategory:i,subsubcategory:n}}buildMenuFromPages(){const e=[],t=U.parsed.value.category,o=U.parsed.value.subcategory,i=Sr.pages.value,n={};return i.forEach(r=>{const s=Object.assign({},r.category),l=s.id,c=l===t;if(n[l])return;n[l]=!0,s.subcategories=[];let d=null;const u=i.filter(e=>e.category.id===l);u.forEach(e=>{const t=Object.assign({},e.subcategory),i=t.id===o&&c;if(e.widgets&&e.widgets[0]&&Pr(e.subcategory.id)){d||(d=Object.assign({},t),d.name=a("CoreHome_ChooseX",[s.name]),d.isGroup=!0,d.subcategories=[],d.order=10),i&&(d.name=t.name);const e=t.id;return t.tooltip=`${t.name} (id = ${e})`,void d.subcategories.push(t)}s.subcategories.push(t)}),d&&d.subcategories&&d.subcategories.length<=5?d.subcategories.forEach(e=>s.subcategories.push(e)):d&&s.subcategories.push(d),s.subcategories=Cr(kr(s)),e.push(s)}),Cr(e)}toggleCategory(e){return this.privateState.activeSubcategoryId=null,this.privateState.activeSubsubcategoryId=null,this.activeCategory.value===e.id?(this.privateState.activeCategoryId=null,!1):(this.privateState.activeCategoryId=e.id,!0)}enterSubcategory(e,t,o){e&&t&&(this.privateState.activeCategoryId=e.id,this.privateState.activeSubcategoryId=t.id,o&&(this.privateState.activeSubsubcategoryId=o.id))}}var Vr=new Tr;function xr(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */function Ur(e){const t=[...e||[]];return t.sort((e,t)=>e.ordert.order?1:0),t}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Nr(e){const t=e;return t.widgets?t.widgets:[]}class Br{constructor(){xr(this,"privateState",Object(D["reactive"])({isFetchedFirstTime:!1,categorizedWidgets:{}})),xr(this,"state",Object(D["computed"])(()=>(this.privateState.isFetchedFirstTime||this.fetchAvailableWidgets(),Object(D["readonly"])(this.privateState)))),xr(this,"widgets",Object(D["computed"])(()=>this.state.value.categorizedWidgets))}fetchAvailableWidgets(){return U.parsed.value.idSite?(this.privateState.isFetchedFirstTime=!0,new Promise((e,t)=>{try{window.widgetsHelper.getAvailableWidgets(t=>{const o=t;this.privateState.categorizedWidgets=o,e(this.widgets.value)})}catch(o){t(o)}})):Promise.resolve(this.widgets.value)}reloadAvailableWidgets(){window.widgetsHelper.clearAvailableWidgets();const e=this.fetchAvailableWidgets();return e.then(()=>{M.postEvent("WidgetsStore.reloaded")}),e}}var Ir=new Br;const Mr="reportingmenu-help";var Fr=Object(D["defineComponent"])({components:{MenuItemsDropdown:Go},directives:{SideNav:Rt},props:{},data(){return{showSubcategoryHelpOnLoad:null,initialLoad:!0,helpShownCategory:null}},computed:{sideNavActivator(){return document.querySelector("nav .activateLeftMenu")},menu(){const e=Vr.menu.value;return e.forEach(e=>{if(e.widget&&e.widget.indexOf(".")>0){const[t,o]=e.widget.split(".");e.component=Se(t,o)}}),e},activeCategory(){return Vr.activeCategory.value},activeSubcategory(){return Vr.activeSubcategory.value},activeSubsubcategory(){return Vr.activeSubsubcategory.value},displayedCategory(){return U.parsed.value.category},displayedSubcategory(){return U.parsed.value.subcategory}},created(){Vr.fetchMenuItems().then(e=>{if(!U.parsed.value.subcategory){const t=e[0],o=t.subcategories[0];Vr.enterSubcategory(t,o),this.propagateUrlChange(t,o)}}),Object(D["watch"])(()=>U.parsed.value,e=>{const t=Vr.findSubcategory(e.category,e.subcategory);Vr.enterSubcategory(t.category,t.subcategory,t.subsubcategory)}),M.on("matomoPageChange",()=>{this.initialLoad||window.globalAjaxQueue.abort(),this.helpShownCategory=null,this.showSubcategoryHelpOnLoad&&(this.showHelp(this.showSubcategoryHelpOnLoad.category,this.showSubcategoryHelpOnLoad.subcategory),this.showSubcategoryHelpOnLoad=null),window.$("#loadingError,#loadingRateLimitError").hide(),this.initialLoad=!1}),M.on("updateReportingMenu",()=>{Vr.reloadMenuItems().then(()=>{const e=U.parsed.value.category,t=U.parsed.value.subcategory;if(e&&t){const o=Vr.findSubcategory(e,t);o.category&&Vr.enterSubcategory(o.category,o.subcategory,o.subsubcategory)}}),Ir.reloadAvailableWidgets()})},methods:{propagateUrlChange(e,t){const o=U.parsed.value;o.category===e.id&&o.subcategory===t.id?this.loadSubcategory(e,t):U.updateHash(Object.assign(Object.assign({},U.hashParsed.value),{},{category:e.id,subcategory:t.id}))},loadCategory(e){Ti.remove(Mr);const t=Vr.toggleCategory(e),{subcategories:o}=e,i=o&&1===o.length||e.widget&&o&&o.length;if(t&&i){this.helpShownCategory=null;const t=e.subcategories[0];this.propagateUrlChange(e,t)}},loadSubcategory(e,t,o){o&&(o.shiftKey||o.ctrlKey||o.metaKey)||(Ti.remove(Mr),t&&t.id===U.parsed.value.subcategory&&e.id===U.parsed.value.category&&(this.helpShownCategory=null,setTimeout(()=>{M.postEvent("loadPage",e.id,t.id)})))},makeUrl(e,t){const{idSite:o,period:i,date:n,segment:a,comparePeriods:r,compareDates:s,compareSegments:l}=U.parsed.value;return U.stringify({idSite:o,period:i,date:n,segment:a,comparePeriods:r,compareDates:s,compareSegments:l,category:e.id,subcategory:t.id})},htmlEntities(e){return M.helper.htmlEntities(e)},showHelp(e,t,o){const i=U.parsed.value,n=i.category,r=i.subcategory;if((n!==e.id||r!==t.id)&&o)return this.showSubcategoryHelpOnLoad={category:e,subcategory:t},void U.updateHash(Object.assign(Object.assign({},U.hashParsed.value),{},{category:e.id,subcategory:t.id}));if(this.helpShownCategory&&e.id===this.helpShownCategory.category&&t.id===this.helpShownCategory.subcategory)return Ti.remove(Mr),void(this.helpShownCategory=null);const s=a("CoreHome_ReportingCategoryHelpPrefix",e.name,t.name),l=`${s} `;Ti.show({context:"info",id:Mr,type:"help",noclear:!0,class:"help-notification",message:l+t.help,placeat:"#notificationContainer",prepend:!0}),this.helpShownCategory={category:e.id,subcategory:t.id}}}});Fr.render=yr;var Lr=Fr;function Rr(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */function qr(e){const t=e;return t.subcategories?t.subcategories:[]}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */class Ar{constructor(){Rr(this,"privateState",Object(D["reactive"])({reports:[]})),Rr(this,"state",Object(D["readonly"])(this.privateState)),Rr(this,"reports",Object(D["computed"])(()=>this.state.reports)),Rr(this,"reportsPromise",void 0)}findReport(e,t){return this.reports.value.find(o=>o.module===e&&o.action===t)}fetchReportMetadata(){return this.reportsPromise||(this.reportsPromise=te.fetch({method:"API.getReportMetadata",filter_limit:"-1",idSite:M.idSite||U.parsed.value.idSite}).then(e=>(this.privateState.reports=e,e))),this.reportsPromise.then(()=>this.reports.value)}}var _r=new Ar;const Hr={class:"widgetLoader"},$r={key:0},Ur={key:1,class:"notification system notification-error"},qr=["href"],Wr={key:2,class:"notification system notification-error"},zr={class:"theWidgetContent",ref:"widgetContent"};function Gr(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("ActivityIndicator");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Hr,[Object(D["createVNode"])(r,{"loading-message":e.finalLoadingMessage,loading:e.loading},null,8,["loading-message","loading"]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",null,[e.widgetName?(Object(D["openBlock"])(),Object(D["createElementBlock"])("h2",$r,Object(D["toDisplayString"])(e.widgetName),1)):Object(D["createCommentVNode"])("",!0),e.loadingFailedRateLimit?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Wr,Object(D["toDisplayString"])(e.translate("General_ErrorRateLimit")),1)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ur,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_ErrorRequest","",""))+" ",1),e.hasErrorFaqLink?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",href:e.externalRawLink("https://matomo.org/faq/troubleshooting/faq_19489/")},Object(D["toDisplayString"])(e.translate("General_ErrorRequestFaqLink")),9,qr)):Object(D["createCommentVNode"])("",!0)]))],512),[[D["vShow"],e.loadingFailed]]),Object(D["createElementVNode"])("div",zr,null,512)])}function Yr(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */function Wr(e){const t=e;return t.subcategories?t.subcategories:[]}function zr(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */class Kr{constructor(){Yr(this,"privateState",Object(D["reactive"])({module:"",action:"",category:"",subcategory:"",idSite:"",widgetSearchFilters:{}})),Yr(this,"state",Object(D["computed"])(()=>Object(D["readonly"])(this.privateState))),M.on("matomoPageChange",()=>{this.isCurrentPage()||this.resetSearchFilters(),this.updateCurrentRoutingFromUrl()})}resetSearchFilters(){this.privateState.widgetSearchFilters={}}getSearchFilters(e){return this.state.value.widgetSearchFilters[e]||{}}setSearchFilters(e,t){e&&(this.privateState.widgetSearchFilters[e]=t)}updateCurrentRoutingFromUrl(){const e=U.parsed.value;this.privateState.module=e.module,this.privateState.action=e.action,this.privateState.category=e.category,this.privateState.subcategory=e.subcategory,this.privateState.idSite=e.idSite}isCurrentPage(){const e=U.parsed.value;return this.state.value.module===e.module&&this.state.value.action===e.action&&this.state.value.category===e.category&&this.state.value.subcategory===e.subcategory&&this.state.value.idSite===e.idSite}}var Qr=new Kr,Jr=Object(D["defineComponent"])({props:{widgetParams:Object,widgetName:String,loadingMessage:String},components:{ActivityIndicator:qe},data(){return{loading:!1,loadingFailed:!1,loadingFailedRateLimit:!1,changeCounter:0,lastWidgetAbortController:null}},watch:{widgetParams(e){e&&this.loadWidgetUrl(e,this.changeCounter+=1)}},computed:{finalLoadingMessage(){return this.loadingMessage?this.loadingMessage:this.widgetName?a("General_LoadingPopover",this.widgetName):a("General_LoadingData")},hasErrorFaqLink(){const e=M.config.enable_general_settings_admin,t=M.config.enable_plugins_admin;return M.hasSuperUserAccess&&(e||t)}},mounted(){this.widgetParams&&this.loadWidgetUrl(this.widgetParams,this.changeCounter+=1)},beforeUnmount(){this.cleanupLastWidgetContent()},methods:{abortHttpRequestIfNeeded(){this.lastWidgetAbortController&&(this.lastWidgetAbortController.abort(),this.lastWidgetAbortController=null)},cleanupLastWidgetContent(){const e=this.$refs.widgetContent;M.helper.destroyVueComponent(e),e&&(e.innerHTML="")},getWidgetUrl(e){const t=U.parsed.value;let o=Object.assign({},e||{});const i=Object.keys(Object.assign(Object.assign({},U.hashParsed.value),{},{idSite:"",period:"",date:"",segment:"",widget:""}));return i.forEach(e=>{"category"!==e&&"subcategory"!==e&&(e in o||(o[e]=t[e]))}),No.isComparisonEnabled()&&(o=Object.assign(Object.assign({},o),{},{comparePeriods:t.comparePeriods,compareDates:t.compareDates,compareSegments:t.compareSegments})),e&&"showtitle"in e||(o.showtitle="1"),M.shouldPropagateTokenAuth&&t.token_auth&&(M.broadcast.isWidgetizeRequestWithoutSession()||(o.force_api_session="1"),o.token_auth=t.token_auth),o.random=Math.floor(1e4*Math.random()),o},loadWidgetUrl(e,t){this.loading=!0,this.abortHttpRequestIfNeeded(),this.cleanupLastWidgetContent(),this.lastWidgetAbortController=new AbortController;let o={};e.uniqueId&&(o=Qr.getSearchFilters(e.uniqueId)),te.fetch(this.getWidgetUrl(Object.assign(e,o)),{format:"html",abortController:this.lastWidgetAbortController}).then(o=>{if(t!==this.changeCounter||"string"!==typeof o)return;this.lastWidgetAbortController=null,this.loading=!1,this.loadingFailed=!1;const i=this.$refs.widgetContent;window.$(i).html(o);const n=window.$(i).children();if(this.widgetName){let e=n.find("> .card-content .card-title");e.length||(e=n.find("> h2")),e.length&&e.html(M.helper.htmlEntities(this.widgetName))}M.helper.compileVueEntryComponents(n),Ti.parseNotificationDivs(),setTimeout(()=>{M.postEvent("widget:loaded",{parameters:e,element:n})})}).catch(e=>{t===this.changeCounter&&(this.lastWidgetAbortController=null,this.cleanupLastWidgetContent(),this.loading=!1,"abort"!==e.xhrStatus&&(429===e.status&&(this.loadingFailedRateLimit=!0),this.loadingFailed=!0))})}}});Jr.render=Gr;var Xr=Jr;const Zr={class:"widget-container"};function es(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Widget");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Zr,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.actualContainer,(e,t)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:t},[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(r,{widget:e,"prevent-recursion":!0},null,8,["widget"])])]))),128))])}const ts=Se("CoreHome","Widget");var os=Object(D["defineComponent"])({props:{container:{type:Array,required:!0}},components:{Widget:ts},computed:{actualContainer(){var e,t,o;const i=this.container;if(null===i||void 0===i||null===(e=i[0])||void 0===e||!e.parameters)return i;const[n]=i,a="1"===(null===(t=n.parameters)||void 0===t?void 0:t.widget)||1===(null===(o=n.parameters)||void 0===o?void 0:o.widget),r=a&&"graphEvolution"===n.viewDataTable,s=r?Object.assign(Object.assign({},n),{},{parameters:Object.assign(Object.assign({},n.parameters),{},{showtitle:"0"})}):n;return[s,...i.slice(1)]}}});os.render=es;var is=os;const ns={class:"reportsByDimensionView"},as={class:"entityList"},rs={class:"listCircle"},ss=["onClick"],ls={class:"dimension"},cs={class:"reportContainer"},ds=Object(D["createElementVNode"])("div",{class:"clear"},null,-1);function us(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("WidgetLoader");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ns,[Object(D["createElementVNode"])("div",as,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.widgetsByCategory,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"dimensionCategory",key:t.name},[Object(D["createTextVNode"])(Object(D["toDisplayString"])(t.name)+" ",1),Object(D["createElementVNode"])("ul",rs,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.widgets,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:Object(D["normalizeClass"])(["reportDimension",{activeDimension:e.selectedWidget.uniqueId===t.uniqueId}]),key:t.uniqueId,onClick:o=>e.selectWidget(t)},[Object(D["createElementVNode"])("span",ls,Object(D["toDisplayString"])(t.name),1)],10,ss))),128))])]))),128))]),Object(D["createElementVNode"])("div",cs,[e.selectedWidget.parameters?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:0,"widget-params":e.selectedWidget.parameters,class:"dimensionReport"},null,8,["widget-params"])):Object(D["createCommentVNode"])("",!0)]),ds])}var ms=Object(D["defineComponent"])({props:{widgets:Array},components:{WidgetLoader:Xr},data(){return{selectedWidget:null}},created(){[this.selectedWidget]=this.widgetsSorted},computed:{widgetsSorted(){return Cr(this.widgets)},widgetsByCategory(){const e={};return this.widgetsSorted.forEach(t=>{var o;const i=null===(o=t.subcategory)||void 0===o?void 0:o.name;i&&(e[i]||(e[i]={name:i,order:t.order,widgets:[]}),e[i].widgets.push(t))}),Cr(Object.values(e))}},methods:{selectWidget(e){this.selectedWidget=Object.assign({},e)}}});ms.render=us;var ps=ms;const hs=["id"],gs={key:1},bs={key:2};function fs(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("WidgetLoader"),s=Object(D["resolveComponent"])("WidgetContainer"),l=Object(D["resolveComponent"])("WidgetByDimensionContainer"),c=Object(D["resolveDirective"])("tooltips");return e.actualWidget&&e.showWidget?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,class:Object(D["normalizeClass"])(["matomo-widget",{isFirstWidgetInPage:e.actualWidget.isFirstInPage}]),id:e.actualWidget.uniqueId},[!e.actualWidget.isContainer&&e.actualWidget.parameters?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:0,"widget-params":e.actualWidget.parameters,"widget-name":e.actualWidget.name},null,8,["widget-params","widget-name"])):Object(D["createCommentVNode"])("",!0),e.actualWidget.isContainer&&"ByDimension"!==e.actualWidget.layout&&!this.preventRecursion?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",gs,[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(s,{container:e.actualWidget.widgets},null,8,["container"])])])):Object(D["createCommentVNode"])("",!0),e.actualWidget.isContainer&&"ByDimension"===e.actualWidget.layout?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",bs,[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(l,{widgets:e.actualWidget.widgets},null,8,["widgets"])])])):Object(D["createCommentVNode"])("",!0)],10,hs)),[[c,{content:e.tooltipContent}]]):Object(D["createCommentVNode"])("",!0)}function vs(e,t){let o=void 0;return Object.values(e||{}).some(e=>(o=e.find(e=>{var o;return e&&e.isContainer&&(null===(o=e.parameters)||void 0===o?void 0:o.containerId)===t}),o)),o}var Os=Object(D["defineComponent"])({props:{widget:Object,widgetized:Boolean,containerid:String,preventRecursion:Boolean},components:{WidgetLoader:Xr,WidgetContainer:is,WidgetByDimensionContainer:ps},directives:{Tooltips:rt},data(){return{showWidget:!1}},setup(){function e(){const e=window.$(this);if(e.hasClass("matomo-form-field"))return"";const t=window.$(this).attr("title")||"";return window.vueSanitize(t.replace(/\n/g," "))}return{tooltipContent:e}},created(){const{actualWidget:e}=this;if(e&&e.middlewareParameters){const t=e.middlewareParameters;te.fetch(t).then(e=>{this.showWidget=!!e})}else this.showWidget=!0},computed:{allWidgets(){return Ir.widgets.value},actualWidget(){const e=this.widget;if(e){const t=Object.assign({},e);if(e&&e.isReport&&!e.documentation){const o=_r.findReport(e.module,e.action);o&&o.documentation&&(t.documentation=o.documentation)}return e.uniqueId&&(t.parameters=Object.assign(Object.assign({},t.parameters),{},{uniqueId:e.uniqueId})),t}if(this.containerid){const e=vs(this.allWidgets,this.containerid);if(e){const t=Object.assign({},e);if(this.widgetized){t.isFirstInPage=!0,t.parameters=Object.assign(Object.assign({},t.parameters),{},{widget:"1"});const e=Nr(t);e&&(t.widgets=e.map(e=>Object.assign(Object.assign({},e),{},{parameters:Object.assign(Object.assign({},e.parameters),{},{widget:"1",containerId:this.containerid})})))}return t}}return null}}});Os.render=fs;var ys=Os;const js={class:"reporting-page"},ws={key:1,class:"col s12 l6 leftWidgetColumn"},Ss={key:2,class:"col s12 l6 rightWidgetColumn"};function Cs(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("ActivityIndicator"),s=Object(D["resolveComponent"])("Widget");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",js,[Object(D["createVNode"])(r,{loading:e.loading},null,8,["loading"]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",null,Object(D["toDisplayString"])(e.translate("CoreHome_NoSuchPage")),513),[[D["vShow"],e.hasNoPage]]),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.widgets,e=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"row",key:e.uniqueId},[e.group?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createBlock"])(s,{key:0,class:"col s12 fullWidgetColumn",widget:e},null,8,["widget"])),e.group?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ws,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.left,e=>(Object(D["openBlock"])(),Object(D["createBlock"])(s,{widget:e,key:e.uniqueId},null,8,["widget"]))),128))])):Object(D["createCommentVNode"])("",!0),e.group?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ss,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.right,e=>(Object(D["openBlock"])(),Object(D["createBlock"])(s,{widget:e,key:e.uniqueId},null,8,["widget"]))),128))])):Object(D["createCommentVNode"])("",!0)]))),128))])}function ks(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */function Gr(e){const t=parseFloat(e);return!Number.isNaN(t)&&Number.isFinite(t)}class Kr{constructor(){zr(this,"privateState",Object(D["reactive"])({activeSubcategoryId:null,activeSubsubcategoryId:null})),zr(this,"state",Object(D["computed"])(()=>Object(D["readonly"])(this.privateState))),zr(this,"activeCategory",Object(D["computed"])(()=>"undefined"!==typeof this.state.value.activeCategoryId?this.state.value.activeCategoryId:U.parsed.value.category)),zr(this,"activeSubcategory",Object(D["computed"])(()=>this.state.value.activeSubcategoryId||U.parsed.value.subcategory)),zr(this,"activeSubsubcategory",Object(D["computed"])(()=>{const e=this.state.value.activeSubsubcategoryId;if(e)return e;const t=this.findSubcategory(this.activeCategory.value,this.activeSubcategory.value);return t.subsubcategory&&t.subsubcategory.id===this.activeSubcategory.value?t.subsubcategory.id:null})),zr(this,"menu",Object(D["computed"])(()=>this.buildMenuFromPages()))}fetchMenuItems(){return $r.getAllPages().then(()=>this.menu.value)}reloadMenuItems(){return $r.reloadAllPages().then(()=>this.menu.value)}findSubcategory(e,t){let o=void 0,i=void 0,n=void 0;return this.menu.value.forEach(a=>{a.id===e&&(qr(a)||[]).forEach(e=>{e.id===t&&(o=a,i=e),e.isGroup&&(Wr(e)||[]).forEach(r=>{r.id===t&&(o=a,i=e,n=r)})})}),{category:o,subcategory:i,subsubcategory:n}}buildMenuFromPages(){const e=[],t=U.parsed.value.category,o=U.parsed.value.subcategory,i=$r.pages.value,n={};return i.forEach(r=>{const s=Object.assign({},r.category),l=s.id,c=l===t;if(n[l])return;n[l]=!0,s.subcategories=[];let d=null;const u=i.filter(e=>e.category.id===l);u.forEach(e=>{const t=Object.assign({},e.subcategory),i=t.id===o&&c;if(e.widgets&&e.widgets[0]&&Gr(e.subcategory.id)){d||(d=Object.assign({},t),d.name=a("CoreHome_ChooseX",[s.name]),d.isGroup=!0,d.subcategories=[],d.order=10),i&&(d.name=t.name);const e=t.id;return t.tooltip=`${t.name} (id = ${e})`,void d.subcategories.push(t)}s.subcategories.push(t)}),d&&d.subcategories&&d.subcategories.length<=5?d.subcategories.forEach(e=>s.subcategories.push(e)):d&&s.subcategories.push(d),s.subcategories=Ur(qr(s)),e.push(s)}),Ur(e)}toggleCategory(e){return this.privateState.activeSubcategoryId=null,this.privateState.activeSubsubcategoryId=null,this.activeCategory.value===e.id?(this.privateState.activeCategoryId=null,!1):(this.privateState.activeCategoryId=e.id,!0)}enterSubcategory(e,t,o){e&&t&&(this.privateState.activeCategoryId=e.id,this.privateState.activeSubcategoryId=t.id,o&&(this.privateState.activeSubsubcategoryId=o.id))}}var Yr=new Kr;function Qr(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Ds(e){return!!(e.isContainer&&e.layout&&"ByDimension"===e.layout||"bydimension"===e.viewDataTable)||(!!e.isWide||e.viewDataTable&&("tableAllColumns"===e.viewDataTable||"sparklines"===e.viewDataTable||"graphEvolution"===e.viewDataTable))}function Es(e){if(e&&e[0]){const t=[...e],o=e[0];return o.group?t[0]=Object.assign(Object.assign({},t[0]),{},{left:Es(o.left||[]),right:Es(o.right||[])}):t[0]=Object.assign(Object.assign({},t[0]),{},{isFirstInPage:!0}),t}return e}class Ps{constructor(){ks(this,"privateState",Object(D["reactive"])({})),ks(this,"state",Object(D["computed"])(()=>Object(D["readonly"])(this.privateState))),ks(this,"page",Object(D["computed"])(()=>this.state.value.page)),ks(this,"widgets",Object(D["computed"])(()=>{const e=this.page.value;if(!e)return[];let t=[];const o={},i=e=>e.isReport&&o[`${e.module}.${e.action}`],n=e=>{if(!e.isReport)return[];const t=_r.findReport(e.module,e.action);return t&&t.relatedReports?t.relatedReports:[]};if((e.widgets||[]).forEach(e=>{i(e)||(n(e).forEach(e=>{o[`${e.module}.${e.action}`]=!0}),t.push(e))}),t=Cr(t),1===t.length)return Es(t);const a=[];for(let s=0;s(this.privateState.page=Sr.findPage(e,t),this.page.value))}resetPage(){this.privateState.page=void 0}}var Ts=new Ps;function Vs(){const e="category=General_Visitors&subcategory=Live_VisitorLog",t=window.broadcast.buildReportingUrl(e);let o=a("CoreHome_PeriodHasOnlyRawData",``,"");M.visitorLogEnabled||(o=a("CoreHome_PeriodHasOnlyRawDataNoVisitsLog")),Ti.show({id:"onlyRawData",animate:!1,context:"info",message:o,type:"transient"})}function xs(){Ti.remove("onlyRawData")}var Ns=Object(D["defineComponent"])({components:{ActivityIndicator:qe,Widget:ys},data(){return{loading:!1,hasRawData:!1,hasNoVisits:!1,dateLastChecked:null,hasNoPage:!1}},created(){Ts.resetPage(),this.loading=!0,this.renderInitialPage(),Object(D["watch"])(()=>U.parsed.value,(e,t)=>{e.category===t.category&&e.subcategory===t.subcategory&&e.period===t.period&&e.date===t.date&&e.segment===t.segment&&JSON.stringify(e.compareDates)===JSON.stringify(t.compareDates)&&JSON.stringify(e.comparePeriods)===JSON.stringify(t.comparePeriods)&&JSON.stringify(e.compareSegments)===JSON.stringify(t.compareSegments)&&JSON.stringify(e.columns||"")===JSON.stringify(t.columns||"")||(e.date===t.date&&e.period===t.period||(xs(),this.dateLastChecked=null,this.hasRawData=!1,this.hasNoVisits=!1),this.renderPage(e.category,e.subcategory,e.period,e.date,e.segment))}),M.on("loadPage",(e,t)=>{const o=U.parsed.value;this.renderPage(e,t,o.period,o.date,o.segment)})},computed:{widgets(){return Ts.widgets.value}},methods:{renderPage(e,t,o,i,n){if(!e||!t)return Ts.resetPage(),void(this.loading=!1);try{c.parse(o,i)}catch(s){return Ti.show({id:"invalidDate",animate:!1,context:"error",message:a("CoreHome_DateInvalid"),type:"transient"}),Ts.resetPage(),void(this.loading=!1)}Ti.remove("invalidDate"),M.postEvent("matomoPageChange",{}),Ti.clearTransientNotifications(),c.parse(o,i).containsToday()&&this.showOnlyRawDataMessageIfRequired(e,t,o,i,n);const r={category:e,subcategory:t};if(M.postEvent("ReportingPage.loadPage",r),r.promise)return this.loading=!0,void Promise.resolve(r.promise).finally(()=>{this.loading=!1});Ts.fetchPage(e,t).then(()=>{const t=!Ts.page.value;if(t){const t=Sr.findPageInCategory(e);if(t&&t.subcategory)return void U.updateHash(Object.assign(Object.assign({},U.hashParsed.value),{},{subcategory:t.subcategory.id}))}this.hasNoPage=t,this.loading=!1})},renderInitialPage(){const e=U.parsed.value;this.renderPage(e.category,e.subcategory,e.period,e.date,e.segment)},showOnlyRawDataMessageIfRequired(e,t,o,i,n){if(this.hasRawData&&this.hasNoVisits&&Vs(),n)return void xs();const a=["Live_VisitorLog","General_RealTime","UserCountryMap_RealTimeMap","MediaAnalytics_TypeAudienceLog","MediaAnalytics_TypeRealTime","FormAnalytics_TypeRealTime","Goals_AddNewGoal"],r=["HeatmapSessionRecording_Heatmaps","HeatmapSessionRecording_SessionRecordings","Marketplace_Marketplace"];if(-1!==a.indexOf(t)||-1!==r.indexOf(e)||-1!==t.toLowerCase().indexOf("manage"))return void xs();const s=6e4;this.dateLastChecked&&(new Date).valueOf()-this.dateLastChecked.valueOf()(this.dateLastChecked=new Date,e.value>0?(this.hasNoVisits=!1,void xs()):(this.hasNoVisits=!0,this.hasRawData?void Vs():te.fetch({method:"Live.getMostRecentVisitsDateTime",date:i,period:o}).then(e=>{if(!e||""===e.value)return this.hasRawData=!1,void xs();this.hasRawData=!0,Vs()}))))}}});Ns.render=Cs;var Bs=Ns;const Is={class:"report-export-popover row",id:"reportExport"},Ms={class:"col l6"},Fs={name:"format"},Ls={name:"option_flat"},Rs={name:"option_show_dimensions"},As={name:"option_expanded"},_s={name:"option_format_metrics"},Hs={class:"col l6"},$s={name:"filter_type"},Us={class:"filter_limit"},qs={name:"filter_limit_all"},Ws={key:0,name:"filter_limit"},zs={key:1,name:"filter_limit"},Gs={class:"col l12"},Ys=["value"],Ks=["innerHTML"],Qs={class:"col l12"},Js=["href","title"],Xs=["innerHTML"];function Zs(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Field"),s=Object(D["resolveDirective"])("select-on-focus");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Is,[Object(D["createElementVNode"])("div",Ms,[Object(D["createElementVNode"])("div",Fs,[Object(D["createVNode"])(r,{uicontrol:"radio",name:"format",title:e.translate("CoreHome_ExportFormat"),modelValue:e.reportFormat,"onUpdate:modelValue":t[0]||(t[0]=t=>e.reportFormat=t),"full-width":!0,options:e.availableReportFormats[e.reportType]},null,8,["title","modelValue","options"])]),Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",Ls,[Object(D["withDirectives"])(Object(D["createVNode"])(r,{uicontrol:"checkbox",name:"option_flat",title:e.translate("CoreHome_FlattenReport"),modelValue:e.optionFlatModel,"onUpdate:modelValue":t[1]||(t[1]=t=>e.optionFlatModel=t)},null,8,["title","modelValue"]),[[D["vShow"],e.canExportFlat]])])]),Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",Rs,[Object(D["withDirectives"])(Object(D["createVNode"])(r,{uicontrol:"checkbox",name:"option_show_dimensions",title:e.translate("CoreHome_IncludeDimensionsSeparately"),modelValue:e.optionShowDimensions,"onUpdate:modelValue":t[2]||(t[2]=t=>e.optionShowDimensions=t)},null,8,["title","modelValue"]),[[D["vShow"],e.canExportFlat&&e.hasMultipleDimensions&&e.optionFlatModel]])])]),Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",As,[Object(D["withDirectives"])(Object(D["createVNode"])(r,{uicontrol:"checkbox",name:"option_expanded",title:e.translate("CoreHome_ExpandSubtables"),modelValue:e.optionExpandedModel,"onUpdate:modelValue":t[3]||(t[3]=t=>e.optionExpandedModel=t)},null,8,["title","modelValue"]),[[D["vShow"],e.hasSubtables&&!e.isCsvOrTsv]])])]),Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",_s,[Object(D["createVNode"])(r,{uicontrol:"checkbox",name:"option_format_metrics",title:e.translate("CoreHome_FormatMetrics"),modelValue:e.optionFormatMetrics,"onUpdate:modelValue":t[4]||(t[4]=t=>e.optionFormatMetrics=t)},null,8,["title","modelValue"])])])]),Object(D["createElementVNode"])("div",Hs,[Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",$s,[Object(D["createVNode"])(r,{uicontrol:"radio",name:"filter_type",title:e.translate("CoreHome_ReportType"),modelValue:e.reportType,"onUpdate:modelValue":t[5]||(t[5]=t=>e.reportType=t),"full-width":!0,options:e.availableReportTypes},null,8,["title","modelValue","options"])])]),Object(D["createElementVNode"])("div",Us,[Object(D["withDirectives"])(Object(D["createElementVNode"])("div",qs,[Object(D["createVNode"])(r,{uicontrol:"radio",name:"filter_limit_all",title:e.translate("CoreHome_RowLimit"),modelValue:e.reportLimitAll,"onUpdate:modelValue":t[6]||(t[6]=t=>e.reportLimitAll=t),"full-width":!0,options:e.limitAllOptions},null,8,["title","modelValue","options"])],512),[[D["vShow"],!e.maxFilterLimit||e.maxFilterLimit<=0]]),"no"===e.reportLimitAll&&e.maxFilterLimit<=0?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ws,[Object(D["createVNode"])(r,{uicontrol:"number",name:"filter_limit",min:1,modelValue:e.reportLimit,"onUpdate:modelValue":t[7]||(t[7]=t=>e.reportLimit=t),"full-width":!0},null,8,["modelValue"])])):Object(D["createCommentVNode"])("",!0),"no"===e.reportLimitAll&&e.maxFilterLimit>0?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",zs,[Object(D["createVNode"])(r,{uicontrol:"number",name:"filter_limit",min:1,max:e.maxFilterLimit,modelValue:e.reportLimit,"onUpdate:modelValue":t[8]||(t[8]=t=>e.reportLimit=t),value:e.reportLimit,"full-width":!0,title:e.filterLimitTooltip},null,8,["max","modelValue","value","title"])])):Object(D["createCommentVNode"])("",!0)])]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",Gs,[Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("textarea",{readonly:"",class:"exportFullUrl",value:e.exportLinkWithoutToken},[Object(D["createTextVNode"])("\n ")],8,Ys)),[[s,{}]]),Object(D["createElementVNode"])("div",{class:"tooltip",innerHTML:e.$sanitize(e.translate("CoreHome_ExportTooltipWithLink","","","ENTER_YOUR_TOKEN_AUTH_HERE"))},null,8,Ks)],512),[[D["vShow"],e.showUrl]]),Object(D["createElementVNode"])("div",Qs,[Object(D["createElementVNode"])("a",{class:"btn",href:e.exportLink,target:"_new",title:e.translate("CoreHome_ExportTooltip")},Object(D["toDisplayString"])(e.translate("General_Export")),9,Js),Object(D["createElementVNode"])("a",{href:"javascript:",onClick:t[9]||(t[9]=t=>e.showUrl=!e.showUrl),class:"toggle-export-url"},[Object(D["withDirectives"])(Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.translate("CoreHome_ShowExportUrl")),513),[[D["vShow"],!e.showUrl]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.translate("CoreHome_HideExportUrl")),513),[[D["vShow"],e.showUrl]])])]),e.additionalContent?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,class:"col l12 report-export-popover-footer",innerHTML:e.$sanitize(e.additionalContent)},null,8,Xs)):Object(D["createCommentVNode"])("",!0)])}
+ */function Jr(e){const t=e;return t.widgets?t.widgets:[]}class Xr{constructor(){Qr(this,"privateState",Object(D["reactive"])({isFetchedFirstTime:!1,categorizedWidgets:{}})),Qr(this,"state",Object(D["computed"])(()=>(this.privateState.isFetchedFirstTime||this.fetchAvailableWidgets(),Object(D["readonly"])(this.privateState)))),Qr(this,"widgets",Object(D["computed"])(()=>this.state.value.categorizedWidgets))}fetchAvailableWidgets(){return U.parsed.value.idSite?(this.privateState.isFetchedFirstTime=!0,new Promise((e,t)=>{try{window.widgetsHelper.getAvailableWidgets(t=>{const o=t;this.privateState.categorizedWidgets=o,e(this.widgets.value)})}catch(o){t(o)}})):Promise.resolve(this.widgets.value)}reloadAvailableWidgets(){window.widgetsHelper.clearAvailableWidgets();const e=this.fetchAvailableWidgets();return e.then(()=>{M.postEvent("WidgetsStore.reloaded")}),e}}var Zr=new Xr;const es="reportingmenu-help";var ts=Object(D["defineComponent"])({components:{MenuItemsDropdown:Go},directives:{SideNav:Rt},props:{},data(){return{showSubcategoryHelpOnLoad:null,initialLoad:!0,helpShownCategory:null}},computed:{sideNavActivator(){return document.querySelector("nav .activateLeftMenu")},menu(){const e=Yr.menu.value;return e.forEach(e=>{if(e.widget&&e.widget.indexOf(".")>0){const[t,o]=e.widget.split(".");e.component=Se(t,o)}}),e},activeCategory(){return Yr.activeCategory.value},activeSubcategory(){return Yr.activeSubcategory.value},activeSubsubcategory(){return Yr.activeSubsubcategory.value},displayedCategory(){return U.parsed.value.category},displayedSubcategory(){return U.parsed.value.subcategory}},created(){Yr.fetchMenuItems().then(e=>{if(!U.parsed.value.subcategory){const t=e[0],o=t.subcategories[0];Yr.enterSubcategory(t,o),this.propagateUrlChange(t,o)}}),Object(D["watch"])(()=>U.parsed.value,e=>{const t=Yr.findSubcategory(e.category,e.subcategory);Yr.enterSubcategory(t.category,t.subcategory,t.subsubcategory)}),M.on("matomoPageChange",()=>{this.initialLoad||window.globalAjaxQueue.abort(),this.helpShownCategory=null,this.showSubcategoryHelpOnLoad&&(this.showHelp(this.showSubcategoryHelpOnLoad.category,this.showSubcategoryHelpOnLoad.subcategory),this.showSubcategoryHelpOnLoad=null),window.$("#loadingError,#loadingRateLimitError").hide(),this.initialLoad=!1}),M.on("updateReportingMenu",()=>{Yr.reloadMenuItems().then(()=>{const e=U.parsed.value.category,t=U.parsed.value.subcategory;if(e&&t){const o=Yr.findSubcategory(e,t);o.category&&Yr.enterSubcategory(o.category,o.subcategory,o.subsubcategory)}}),Zr.reloadAvailableWidgets()})},methods:{propagateUrlChange(e,t){const o=U.parsed.value;o.category===e.id&&o.subcategory===t.id?this.loadSubcategory(e,t):U.updateHash(Object.assign(Object.assign({},U.hashParsed.value),{},{category:e.id,subcategory:t.id}))},loadCategory(e){Li.remove(es);const t=Yr.toggleCategory(e),{subcategories:o}=e,i=o&&1===o.length||e.widget&&o&&o.length;if(t&&i){this.helpShownCategory=null;const t=e.subcategories[0];this.propagateUrlChange(e,t)}},loadSubcategory(e,t,o){o&&(o.shiftKey||o.ctrlKey||o.metaKey)||(Li.remove(es),t&&t.id===U.parsed.value.subcategory&&e.id===U.parsed.value.category&&(this.helpShownCategory=null,setTimeout(()=>{M.postEvent("loadPage",e.id,t.id)})))},makeUrl(e,t){const{idSite:o,period:i,date:n,segment:a,comparePeriods:r,compareDates:s,compareSegments:l}=U.parsed.value;return U.stringify({idSite:o,period:i,date:n,segment:a,comparePeriods:r,compareDates:s,compareSegments:l,category:e.id,subcategory:t.id})},htmlEntities(e){return M.helper.htmlEntities(e)},showHelp(e,t,o){const i=U.parsed.value,n=i.category,r=i.subcategory;if((n!==e.id||r!==t.id)&&o)return this.showSubcategoryHelpOnLoad={category:e,subcategory:t},void U.updateHash(Object.assign(Object.assign({},U.hashParsed.value),{},{category:e.id,subcategory:t.id}));if(this.helpShownCategory&&e.id===this.helpShownCategory.category&&t.id===this.helpShownCategory.subcategory)return Li.remove(es),void(this.helpShownCategory=null);const s=a("CoreHome_ReportingCategoryHelpPrefix",e.name,t.name),l=`${s} `;Li.show({context:"info",id:es,type:"help",noclear:!0,class:"help-notification",message:l+t.help,placeat:"#notificationContainer",prepend:!0}),this.helpShownCategory={category:e.id,subcategory:t.id}}}});ts.render=Ar;var os=ts;function is(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const el=["CSV","TSV"];function tl(e){return el.includes(e)}function ol(e,t,o){return e?tl(o)?{hasUserPreference:!1,preferredMode:null}:{hasUserPreference:!0,preferredMode:"flat"}:t?{hasUserPreference:!0,preferredMode:"expanded"}:{hasUserPreference:!0,preferredMode:null}}function il(e,t,o,i){const{hasUserPreference:n,preferredMode:a}=i;return e?tl(o)?t?{optionFlat:!n||"flat"===a,optionExpanded:!1}:{optionFlat:!1,optionExpanded:!1}:n?"flat"===a?t?{optionFlat:!0,optionExpanded:!1}:{optionFlat:!1,optionExpanded:!0}:"expanded"===a?{optionFlat:!1,optionExpanded:!0}:{optionFlat:!1,optionExpanded:!1}:{optionFlat:!1,optionExpanded:!0}:{optionFlat:!1,optionExpanded:!1}}const nl=Se("CorePluginsAdmin","Field");var al=Object(D["defineComponent"])({components:{Field:nl},directives:{SelectOnFocus:It},props:{hasSubtables:Boolean,canExportFlat:{type:Boolean,default:!1},availableReportTypes:Object,availableReportFormats:{type:Object,required:!0},maxFilterLimit:Number,limitAllOptions:Object,dataTable:{type:Object,required:!0},requestParams:[Object,String],apiMethod:{type:String,required:!0},initialReportType:{type:String,default:"default"},initialReportLimit:{type:[String,Number],default:100},initialReportLimitAll:{type:String,default:"yes"},initialOptionFlat:{type:Boolean,default:!1},initialOptionShowDimensions:{type:Boolean,default:!1},initialOptionExpanded:{type:Boolean,default:!0},initialOptionFormatMetrics:{type:Boolean,default:!1},initialReportFormat:{type:String,default:"TSV"}},mounted(){const e={content:this.additionalContent,dataTable:this.dataTable};M.postEvent("ReportExportPopover.additionalContent",e),this.additionalContent=e.content},data(){return{showUrl:!1,reportFormat:this.initialReportFormat,optionShowDimensions:this.initialOptionShowDimensions,subtablePreference:ol(this.initialOptionFlat,this.initialOptionExpanded,this.initialReportFormat),optionFormatMetrics:this.initialOptionFormatMetrics,reportType:this.initialReportType,reportLimitAll:this.initialReportLimitAll,reportLimit:"string"===typeof this.initialReportLimit?parseInt(this.initialReportLimit,10):this.initialReportLimit,additionalContent:""}},watch:{reportType(e){this.availableReportFormats[e][this.reportFormat]||(this.reportFormat="JSON")},reportLimit(e,t){this.maxFilterLimit&&this.maxFilterLimit>0&&e>this.maxFilterLimit&&(this.reportLimit=t)}},computed:{hasMultipleDimensions(){var e,t;return"function"===typeof(null===(e=this.dataTable)||void 0===e?void 0:e.getReportMetadata)&&Object.keys((null===(t=this.dataTable)||void 0===t?void 0:t.getReportMetadata().dimensions)||{}).length>1},filterLimitTooltip(){const e=a("CoreHome_RowLimit"),t=this.maxFilterLimit?a("General_ComputedMetricMax",this.maxFilterLimit.toString()):"";return`${e} (${t})`},isCsvOrTsv(){return tl(this.reportFormat)},effectiveSubtableOptions(){return il(this.hasSubtables,this.canExportFlat,this.reportFormat,this.subtablePreference)},optionFlatModel:{get(){return this.effectiveSubtableOptions.optionFlat},set(e){this.hasSubtables&&this.canExportFlat&&(e?this.subtablePreference={hasUserPreference:!0,preferredMode:"flat"}:this.optionExpandedModel||(this.subtablePreference={hasUserPreference:!0,preferredMode:null}))}},optionExpandedModel:{get(){return this.effectiveSubtableOptions.optionExpanded},set(e){this.hasSubtables&&!tl(this.reportFormat)&&(e?this.subtablePreference={hasUserPreference:!0,preferredMode:"expanded"}:this.optionFlatModel||(this.subtablePreference={hasUserPreference:!0,preferredMode:null}))}},exportLink(){return this.getExportLink(!0)},exportLinkWithoutToken(){return this.getExportLink(!1)}},methods:{getExportLink(e=!0){const{reportFormat:t,apiMethod:o,reportType:i}=this,n=this.dataTable;if(!t)return;let a={};const r="yes"===this.reportLimitAll?-1:this.reportLimit;this.requestParams&&"string"===typeof this.requestParams?a=JSON.parse(this.requestParams):this.requestParams&&"object"===typeof this.requestParams&&(a=this.requestParams);const{segment:s,label:l,idGoal:c,idDimension:d,idSite:u}=n.param;let{date:m,period:p}=n.param;"RSS"===t&&(m="last10"),"undefined"!==typeof n.param.dateUsedInGraph&&(m=n.param.dateUsedInGraph);const h=M.config.datatable_export_range_as_day.toLowerCase();-1!==h.indexOf(t.toLowerCase())&&"range"===n.param.period&&(p="day"),"range"===n.param.period&&"graphEvolution"===n.param.viewDataTable&&(p="day");const g={module:"API",format:t,idSite:u,period:p,date:m};"processed"===i?(g.method="API.getProcessedReport",[g.apiModule,g.apiAction]=o.split(".")):g.method=o,n.param.compareDates&&n.param.compareDates.length&&(g.compareDates=n.param.compareDates,g.compare="1"),n.param.comparePeriods&&n.param.comparePeriods.length&&(g.comparePeriods=n.param.comparePeriods,g.compare="1"),n.param.compareSegments&&n.param.compareSegments.length&&(g.compareSegments=n.param.compareSegments,g.compare="1"),"undefined"!==typeof n.param.filter_pattern&&(g.filter_pattern=n.param.filter_pattern),"undefined"!==typeof n.param.filter_pattern_recursive&&(g.filter_pattern_recursive=n.param.filter_pattern_recursive),window.$.isPlainObject(a)&&Object.entries(a).forEach(([e,t])=>{let o=t;!0===o?o=1:!1===o&&(o=0),g[e]=o});const{optionFlat:b,optionExpanded:f}=this.effectiveSubtableOptions;if(b&&(g.flat=1,this.optionShowDimensions&&(g.show_dimensions=1),"undefined"!==typeof n.param.include_aggregate_rows&&"1"===n.param.include_aggregate_rows&&(g.include_aggregate_rows=1)),this.hasSubtables&&!b&&f&&(g.expanded=1),this.optionFormatMetrics&&(g.format_metrics=1),n.param.pivotBy&&(g.pivotBy=n.param.pivotBy,g.pivotByColumnLimit=20,n.props.pivot_by_column&&(g.pivotByColumn=n.props.pivot_by_column)),"CSV"!==t&&"TSV"!==t&&"RSS"!==t||(g.translateColumnNames=1,g.language=M.language),"undefined"!==typeof s&&(g.segment=decodeURIComponent(s)),"undefined"!==typeof c&&"-1"!==c&&(g.idGoal=c),"undefined"!==typeof d&&"-1"!==d&&(g.idDimension=d),l){const e=l.split(",");e.length>1?g.label=e:[g.label]=e}g.showMetadata=0,g.token_auth="ENTER_YOUR_TOKEN_AUTH_HERE",!0===e&&(g.token_auth=M.token_auth,g.force_api_session=1),g.filter_limit=r;const v=window.location.href.split("?")[0];return`${v}?${U.stringify(g)}`}}});al.render=Zs;var rl=al;
+ */class ns{constructor(){is(this,"privateState",Object(D["reactive"])({reports:[]})),is(this,"state",Object(D["readonly"])(this.privateState)),is(this,"reports",Object(D["computed"])(()=>this.state.reports)),is(this,"reportsPromise",void 0)}findReport(e,t){return this.reports.value.find(o=>o.module===e&&o.action===t)}fetchReportMetadata(){return this.reportsPromise||(this.reportsPromise=te.fetch({method:"API.getReportMetadata",filter_limit:"-1",idSite:M.idSite||U.parsed.value.idSite}).then(e=>(this.privateState.reports=e,e))),this.reportsPromise.then(()=>this.reports.value)}}var as=new ns;const rs={class:"widgetLoader"},ss={key:0},ls={key:1,class:"notification system notification-error"},cs=["href"],ds={key:2,class:"notification system notification-error"},us={class:"theWidgetContent",ref:"widgetContent"};function ps(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("ActivityIndicator");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",rs,[Object(D["createVNode"])(r,{"loading-message":e.finalLoadingMessage,loading:e.loading},null,8,["loading-message","loading"]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",null,[e.widgetName?(Object(D["openBlock"])(),Object(D["createElementBlock"])("h2",ss,Object(D["toDisplayString"])(e.widgetName),1)):Object(D["createCommentVNode"])("",!0),e.loadingFailedRateLimit?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ds,Object(D["toDisplayString"])(e.translate("General_ErrorRateLimit")),1)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ls,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_ErrorRequest","",""))+" ",1),e.hasErrorFaqLink?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",href:e.externalRawLink("https://matomo.org/faq/troubleshooting/faq_19489/")},Object(D["toDisplayString"])(e.translate("General_ErrorRequestFaqLink")),9,cs)):Object(D["createCommentVNode"])("",!0)]))],512),[[D["vShow"],e.loadingFailed]]),Object(D["createElementVNode"])("div",us,null,512)])}function ms(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const{$:sl}=window;var ll={mounted(e,t){e.addEventListener("click",()=>{var o;const i=U.hashParsed.value.popover,n=sl(e).closest("[data-report]").data("uiControlObject"),r=window.Piwik_Popover.showLoading("Export"),s=t.value.reportFormats;let l=n.param.filter_limit;t.value.maxFilterLimit>0&&(l=Math.min(l,t.value.maxFilterLimit));const c=!0===n.param.flat||1===n.param.flat||"1"===n.param.flat,d=!0===n.param.show_dimensions||1===n.param.show_dimensions||"1"===n.param.show_dimensions,u=c||n.numberOfSubtables>0,m=(null!==(o=t.value.canExportFlat)&&void 0!==o?o:u)&&u,p=m,h=!1,g={initialReportType:"default",initialReportFormat:"TSV",initialReportLimit:l>0?l:100,initialReportLimitAll:-1===l?"yes":"no",initialOptionFlat:p,initialOptionShowDimensions:d,initialOptionExpanded:h,initialOptionFormatMetrics:!1,hasSubtables:u,canExportFlat:m,availableReportFormats:{default:s,processed:{JSON:s.JSON,XML:s.XML}},availableReportTypes:{default:a("CoreHome_StandardReport"),processed:a("CoreHome_ReportWithMetadata")},limitAllOptions:{yes:a("General_All"),no:a("CoreHome_CustomLimit")},maxFilterLimit:t.value.maxFilterLimit,dataTable:n,requestParams:t.value.requestParams,apiMethod:t.value.apiMethod},b=fe({template:'\n ',data(){return{bind:g}}});b.component("popover",rl);const f=document.createElement("div");b.mount(f);const{reportTitle:v}=t.value;window.Piwik_Popover.setTitle(`${a("General_Export")} ${M.helper.htmlEntities(v)}`),window.Piwik_Popover.setContent(f),window.Piwik_Popover.onClose(()=>{b.unmount(),""!==i&&setTimeout(()=>{U.updateHash(Object.assign(Object.assign({},U.hashParsed.value),{},{popover:i})),t.value.onClose&&t.value.onClose()},100)}),setTimeout(()=>{r.dialog(),sl(".exportFullUrl, .btn",r).tooltip({track:!0,show:!1,hide:!1})},100)})}};const cl=["src","width","height"];function dl(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("img",{class:"sparklineImg",loading:"lazy",alt:"",src:e.sparklineUrl,width:e.width,height:e.height},null,8,cl)}var ul=Object(D["defineComponent"])({props:{seriesIndices:Array,params:[Object,String],width:Number,height:Number},data(){return{isWidget:!1}},mounted(){this.isWidget=!!this.$el.closest("[widgetId]")},computed:{sparklineUrl(){const{seriesIndices:e,params:t}=this,o=M.getSparklineColors();e&&(o.lineColor=o.lineColor.filter((t,o)=>-1!==e.indexOf(o)));const i=JSON.stringify(o),n={forceView:"1",viewDataTable:"sparkline",widget:this.isWidget?"1":"0",showtitle:"1",colors:i,random:Date.now(),date:this.defaultDate,segment:U.parsed.value.segment},a="object"===typeof t?t:U.parse(t.substring(t.indexOf("?")+1)),r=new te,s=r.mixinDefaultGetParams(Object.assign(Object.assign({},n),a)),l=U.parsed.value.token_auth;return l&&l.length&&M.shouldPropagateTokenAuth&&(s.token_auth=l),"?"+U.stringify(s)},defaultDate(){if("range"===M.period)return`${M.startDateString},${M.endDateString}`;const e=k.getLastNRange(M.period,30,M.currentDateString).getDateRange(),t=new Date(M.minDateYear,M.minDateMonth-1,M.minDateDay);e[0]100?100:this.progress<0?0:this.progress}}});fl.render=bl;var vl=fl,Ol={mounted(e){e.classList.add("piwik-content-intro")},updated(e){Object(D["nextTick"])(()=>{e.classList.add("piwik-content-intro")})}},yl={mounted(e,t){var o;null!==t&&void 0!==t&&null!==(o=t.value)&&void 0!==o&&o.off||e.classList.add("card","card-table","entityTable")},updated(e,t){var o;null!==t&&void 0!==t&&null!==(o=t.value)&&void 0!==o&&o.off||Object(D["nextTick"])(()=>{e.classList.add("card","card-table","entityTable")})}};
+ */class hs{constructor(){ms(this,"privateState",Object(D["reactive"])({module:"",action:"",category:"",subcategory:"",idSite:"",widgetSearchFilters:{}})),ms(this,"state",Object(D["computed"])(()=>Object(D["readonly"])(this.privateState))),M.on("matomoPageChange",()=>{this.isCurrentPage()||this.resetSearchFilters(),this.updateCurrentRoutingFromUrl()})}resetSearchFilters(){this.privateState.widgetSearchFilters={}}getSearchFilters(e){return this.state.value.widgetSearchFilters[e]||{}}setSearchFilters(e,t){e&&(this.privateState.widgetSearchFilters[e]=t)}updateCurrentRoutingFromUrl(){const e=U.parsed.value;this.privateState.module=e.module,this.privateState.action=e.action,this.privateState.category=e.category,this.privateState.subcategory=e.subcategory,this.privateState.idSite=e.idSite}isCurrentPage(){const e=U.parsed.value;return this.state.value.module===e.module&&this.state.value.action===e.action&&this.state.value.category===e.category&&this.state.value.subcategory===e.subcategory&&this.state.value.idSite===e.idSite}}var gs=new hs,bs=Object(D["defineComponent"])({props:{widgetParams:Object,widgetName:String,loadingMessage:String},components:{ActivityIndicator:qe},data(){return{loading:!1,loadingFailed:!1,loadingFailedRateLimit:!1,changeCounter:0,lastWidgetAbortController:null}},watch:{widgetParams(e){e&&this.loadWidgetUrl(e,this.changeCounter+=1)}},computed:{finalLoadingMessage(){return this.loadingMessage?this.loadingMessage:this.widgetName?a("General_LoadingPopover",this.widgetName):a("General_LoadingData")},hasErrorFaqLink(){const e=M.config.enable_general_settings_admin,t=M.config.enable_plugins_admin;return M.hasSuperUserAccess&&(e||t)}},mounted(){this.widgetParams&&this.loadWidgetUrl(this.widgetParams,this.changeCounter+=1)},beforeUnmount(){this.cleanupLastWidgetContent()},methods:{abortHttpRequestIfNeeded(){this.lastWidgetAbortController&&(this.lastWidgetAbortController.abort(),this.lastWidgetAbortController=null)},cleanupLastWidgetContent(){const e=this.$refs.widgetContent;M.helper.destroyVueComponent(e),e&&(e.innerHTML="")},getWidgetUrl(e){const t=U.parsed.value;let o=Object.assign({},e||{});const i=Object.keys(Object.assign(Object.assign({},U.hashParsed.value),{},{idSite:"",period:"",date:"",segment:"",widget:""}));return i.forEach(e=>{"category"!==e&&"subcategory"!==e&&(e in o||(o[e]=t[e]))}),No.isComparisonEnabled()&&(o=Object.assign(Object.assign({},o),{},{comparePeriods:t.comparePeriods,compareDates:t.compareDates,compareSegments:t.compareSegments})),e&&"showtitle"in e||(o.showtitle="1"),M.shouldPropagateTokenAuth&&t.token_auth&&(M.broadcast.isWidgetizeRequestWithoutSession()||(o.force_api_session="1"),o.token_auth=t.token_auth),o.random=Math.floor(1e4*Math.random()),o},loadWidgetUrl(e,t){this.loading=!0,this.abortHttpRequestIfNeeded(),this.cleanupLastWidgetContent(),this.lastWidgetAbortController=new AbortController;let o={};e.uniqueId&&(o=gs.getSearchFilters(e.uniqueId)),te.fetch(this.getWidgetUrl(Object.assign(e,o)),{format:"html",abortController:this.lastWidgetAbortController}).then(o=>{if(t!==this.changeCounter||"string"!==typeof o)return;this.lastWidgetAbortController=null,this.loading=!1,this.loadingFailed=!1;const i=this.$refs.widgetContent;window.$(i).html(o);const n=window.$(i).children();if(this.widgetName){let e=n.find("> .card-content .card-title");e.length||(e=n.find("> h2")),e.length&&e.html(M.helper.htmlEntities(this.widgetName))}M.helper.compileVueEntryComponents(n),Li.parseNotificationDivs(),setTimeout(()=>{M.postEvent("widget:loaded",{parameters:e,element:n})})}).catch(e=>{t===this.changeCounter&&(this.lastWidgetAbortController=null,this.cleanupLastWidgetContent(),this.loading=!1,"abort"!==e.xhrStatus&&(429===e.status&&(this.loadingFailedRateLimit=!0),this.loadingFailed=!0))})}}});bs.render=ps;var fs=bs;const vs={class:"widget-container"};function Os(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Widget");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",vs,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.actualContainer,(e,t)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:t},[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(r,{widget:e,"prevent-recursion":!0},null,8,["widget"])])]))),128))])}const ys=Se("CoreHome","Widget");var js=Object(D["defineComponent"])({props:{container:{type:Array,required:!0}},components:{Widget:ys},computed:{actualContainer(){var e,t,o;const i=this.container;if(null===i||void 0===i||null===(e=i[0])||void 0===e||!e.parameters)return i;const[n]=i,a="1"===(null===(t=n.parameters)||void 0===t?void 0:t.widget)||1===(null===(o=n.parameters)||void 0===o?void 0:o.widget),r=a&&"graphEvolution"===n.viewDataTable,s=r?Object.assign(Object.assign({},n),{},{parameters:Object.assign(Object.assign({},n.parameters),{},{showtitle:"0"})}):n;return[s,...i.slice(1)]}}});js.render=Os;var ws=js;const Ss={class:"reportsByDimensionView"},Cs={class:"entityList"},ks={class:"listCircle"},Ds=["onClick"],Es={class:"dimension"},Ps={class:"reportContainer"},Ts=Object(D["createElementVNode"])("div",{class:"clear"},null,-1);function Vs(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("WidgetLoader");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ss,[Object(D["createElementVNode"])("div",Cs,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.widgetsByCategory,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"dimensionCategory",key:t.name},[Object(D["createTextVNode"])(Object(D["toDisplayString"])(t.name)+" ",1),Object(D["createElementVNode"])("ul",ks,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.widgets,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:Object(D["normalizeClass"])(["reportDimension",{activeDimension:e.selectedWidget.uniqueId===t.uniqueId}]),key:t.uniqueId,onClick:o=>e.selectWidget(t)},[Object(D["createElementVNode"])("span",Es,Object(D["toDisplayString"])(t.name),1)],10,Ds))),128))])]))),128))]),Object(D["createElementVNode"])("div",Ps,[e.selectedWidget.parameters?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:0,"widget-params":e.selectedWidget.parameters,class:"dimensionReport"},null,8,["widget-params"])):Object(D["createCommentVNode"])("",!0)]),Ts])}var xs=Object(D["defineComponent"])({props:{widgets:Array},components:{WidgetLoader:fs},data(){return{selectedWidget:null}},created(){[this.selectedWidget]=this.widgetsSorted},computed:{widgetsSorted(){return Ur(this.widgets)},widgetsByCategory(){const e={};return this.widgetsSorted.forEach(t=>{var o;const i=null===(o=t.subcategory)||void 0===o?void 0:o.name;i&&(e[i]||(e[i]={name:i,order:t.order,widgets:[]}),e[i].widgets.push(t))}),Ur(Object.values(e))}},methods:{selectWidget(e){this.selectedWidget=Object.assign({},e)}}});xs.render=Vs;var Ns=xs;const Bs=["id"],Is={key:1},Ms={key:2};function Fs(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("WidgetLoader"),s=Object(D["resolveComponent"])("WidgetContainer"),l=Object(D["resolveComponent"])("WidgetByDimensionContainer"),c=Object(D["resolveDirective"])("tooltips");return e.actualWidget&&e.showWidget?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,class:Object(D["normalizeClass"])(["matomo-widget",{isFirstWidgetInPage:e.actualWidget.isFirstInPage}]),id:e.actualWidget.uniqueId},[!e.actualWidget.isContainer&&e.actualWidget.parameters?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:0,"widget-params":e.actualWidget.parameters,"widget-name":e.actualWidget.name},null,8,["widget-params","widget-name"])):Object(D["createCommentVNode"])("",!0),e.actualWidget.isContainer&&"ByDimension"!==e.actualWidget.layout&&!this.preventRecursion?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Is,[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(s,{container:e.actualWidget.widgets},null,8,["container"])])])):Object(D["createCommentVNode"])("",!0),e.actualWidget.isContainer&&"ByDimension"===e.actualWidget.layout?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ms,[Object(D["createElementVNode"])("div",null,[Object(D["createVNode"])(l,{widgets:e.actualWidget.widgets},null,8,["widgets"])])])):Object(D["createCommentVNode"])("",!0)],10,Bs)),[[c,{content:e.tooltipContent}]]):Object(D["createCommentVNode"])("",!0)}function Ls(e,t){let o=void 0;return Object.values(e||{}).some(e=>(o=e.find(e=>{var o;return e&&e.isContainer&&(null===(o=e.parameters)||void 0===o?void 0:o.containerId)===t}),o)),o}var Rs=Object(D["defineComponent"])({props:{widget:Object,widgetized:Boolean,containerid:String,preventRecursion:Boolean},components:{WidgetLoader:fs,WidgetContainer:ws,WidgetByDimensionContainer:Ns},directives:{Tooltips:rt},data(){return{showWidget:!1}},setup(){function e(){const e=window.$(this);if(e.hasClass("matomo-form-field"))return"";const t=window.$(this).attr("title")||"";return window.vueSanitize(t.replace(/\n/g," "))}return{tooltipContent:e}},created(){const{actualWidget:e}=this;if(e&&e.middlewareParameters){const t=e.middlewareParameters;te.fetch(t).then(e=>{this.showWidget=!!e})}else this.showWidget=!0},computed:{allWidgets(){return Zr.widgets.value},actualWidget(){const e=this.widget;if(e){const t=Object.assign({},e);if(e&&e.isReport&&!e.documentation){const o=as.findReport(e.module,e.action);o&&o.documentation&&(t.documentation=o.documentation)}return e.uniqueId&&(t.parameters=Object.assign(Object.assign({},t.parameters),{},{uniqueId:e.uniqueId})),t}if(this.containerid){const e=Ls(this.allWidgets,this.containerid);if(e){const t=Object.assign({},e);if(this.widgetized){t.isFirstInPage=!0,t.parameters=Object.assign(Object.assign({},t.parameters),{},{widget:"1"});const e=Jr(t);e&&(t.widgets=e.map(e=>Object.assign(Object.assign({},e),{},{parameters:Object.assign(Object.assign({},e.parameters),{},{widget:"1",containerId:this.containerid})})))}return t}}return null}}});Rs.render=Fs;var As=Rs;const _s={class:"reporting-page"},Hs={key:1,class:"col s12 l6 leftWidgetColumn"},$s={key:2,class:"col s12 l6 rightWidgetColumn"};function Us(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("ActivityIndicator"),s=Object(D["resolveComponent"])("Widget");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",_s,[Object(D["createVNode"])(r,{loading:e.loading},null,8,["loading"]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",null,Object(D["toDisplayString"])(e.translate("CoreHome_NoSuchPage")),513),[[D["vShow"],e.hasNoPage]]),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.widgets,e=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:"row",key:e.uniqueId},[e.group?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createBlock"])(s,{key:0,class:"col s12 fullWidgetColumn",widget:e},null,8,["widget"])),e.group?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Hs,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.left,e=>(Object(D["openBlock"])(),Object(D["createBlock"])(s,{widget:e,key:e.uniqueId},null,8,["widget"]))),128))])):Object(D["createCommentVNode"])("",!0),e.group?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",$s,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.right,e=>(Object(D["openBlock"])(),Object(D["createBlock"])(s,{widget:e,key:e.uniqueId},null,8,["widget"]))),128))])):Object(D["createCommentVNode"])("",!0)]))),128))])}function qs(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const jl={ref:"root"};function wl(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",jl,[Object(D["renderSlot"])(e.$slots,"default",{formData:e.formData,submitApiMethod:e.submitApiMethod,sendJsonPayload:e.sendJsonPayload,noErrorNotification:e.noErrorNotification,noSuccessNotification:e.noSuccessNotification,submitForm:e.submitForm,isSubmitting:e.isSubmitting,successfulPostResponse:e.successfulPostResponse,errorPostResponse:e.errorPostResponse})],512)}const{$:Sl}=window;var Cl=Object(D["defineComponent"])({props:{formData:{type:Object,required:!0},submitApiMethod:{type:String,required:!0},sendJsonPayload:Boolean,noErrorNotification:Boolean,noSuccessNotification:Boolean},data(){return{isSubmitting:!1,successfulPostResponse:null,errorPostResponse:null}},emits:["update:modelValue"],mounted(){Sl(this.$refs.root).on("click","input[type=submit]",()=>{this.submitForm()})},methods:{submitForm(){this.successfulPostResponse=null,this.errorPostResponse=null;let e=this.formData;this.sendJsonPayload&&(e={data:JSON.stringify(this.formData)}),this.isSubmitting=!0,te.post({module:"API",method:this.submitApiMethod},e,{createErrorNotification:!this.noErrorNotification}).then(e=>{if(this.successfulPostResponse=e,!this.noSuccessNotification){const e=Ti.show({message:a("General_YourChangesHaveBeenSaved"),context:"success",type:"toast",id:"ajaxHelper"});Ti.scrollToNotification(e)}}).catch(e=>{this.errorPostResponse=e.message}).finally(()=>{this.isSubmitting=!1})}}});Cl.render=wl;var kl=Cl;function Dl(e,t,o,i,n,a){return Object(D["renderSlot"])(e.$slots,"default")}var El=Object(D["defineComponent"])({});El.render=Dl;var Pl=El;const Tl={key:0},Vl=["data-target","title"],xl=Object(D["createElementVNode"])("span",{class:"icon-configure"},null,-1),Nl=[xl],Bl=["data-target"],Il=["title"],Ml=["title","src"],Fl=["id"],Ll=["data-footer-icon-id"],Rl=["title"],Al=["title","src"],_l={key:2},Hl=Object(D["createElementVNode"])("li",{class:"divider"},null,-1),$l=Object(D["createElementVNode"])("li",{class:"divider"},null,-1),Ul=["title"],ql=Object(D["createElementVNode"])("span",{class:"icon-export"},null,-1),Wl=[ql],zl=["title"],Gl=Object(D["createElementVNode"])("span",{class:"icon-image"},null,-1),Yl=[Gl],Kl=["title"],Ql=Object(D["createElementVNode"])("span",{class:"icon-annotation"},null,-1),Jl=[Ql],Xl=["title"],Zl=Object(D["createElementVNode"])("span",{class:"icon-search",draggable:"false"},null,-1),ec=["title"],tc=["id","title"],oc=["title"],ic=["title","src"],nc=["id"],ac={key:0},rc=["innerHTML"],sc={key:1},lc=["innerHTML"],cc={key:2},dc=["innerHTML"],uc={key:3},mc=["innerHTML"],pc={key:4},hc=["innerHTML"],gc={key:5},bc=["innerHTML"],fc=["title","data-target"],vc=Object(D["createElementVNode"])("span",{class:"icon-calendar"},null,-1),Oc={class:"periodName"},yc=["id"],jc=["data-period"];function wc(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Passthrough"),s=Object(D["resolveDirective"])("dropdown-button"),l=Object(D["resolveDirective"])("report-export");return e.showFooter&&e.showFooterIcons?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Tl,[e.hasConfigItems&&(e.isAnyConfigureIconHighlighted||e.isTableView)?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,class:Object(D["normalizeClass"])(["dropdown-button dropdownConfigureIcon dataTableAction",{highlighted:e.isAnyConfigureIconHighlighted}]),href:"",onClick:t[0]||(t[0]=Object(D["withModifiers"])(()=>{},["prevent"])),"data-target":"dropdownConfigure"+e.randomIdForDropdown,title:e.translate("CoreHome_ReportConfigure"),style:{"margin-right":"3.5px"}},Nl,10,Vl)),[[s]]):Object(D["createCommentVNode"])("",!0),e.hasFooterIconsToShow?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,class:"dropdown-button dataTableAction activateVisualizationSelection",href:"","data-target":"dropdownVisualizations"+e.randomIdForDropdown,style:{"margin-right":"3.5px"},onClick:t[1]||(t[1]=Object(D["withModifiers"])(()=>{},["prevent"]))},[/^icon-/.test(e.activeFooterIcon||"")?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,title:e.translate("CoreHome_ChangeVisualization"),class:Object(D["normalizeClass"])(e.activeFooterIcon)},null,10,Il)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("img",{key:1,title:e.translate("CoreHome_ChangeVisualization"),width:"16",height:"16",src:e.activeFooterIcon},null,8,Ml))],8,Bl)),[[s]]):Object(D["createCommentVNode"])("",!0),e.showFooterIcons?(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",{key:2,id:"dropdownVisualizations"+e.randomIdForDropdown,class:"dropdown-content dataTableFooterIcons"},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.footerIcons,(t,o)=>(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:o},{default:Object(D["withCtx"])(()=>[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.buttons.filter(e=>!!e.icon),o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:o.id},[Object(D["createElementVNode"])("a",{class:Object(D["normalizeClass"])(`${t.class} tableIcon\n ${-1!==e.activeFooterIconIds.indexOf(o.id)?"activeIcon":""}`),"data-footer-icon-id":o.id},[/^icon-/.test(o.icon||"")?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,title:o.title,class:Object(D["normalizeClass"])(o.icon),style:{"margin-right":"5.5px"}},null,10,Rl)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("img",{key:1,width:"16",height:"16",title:o.title,src:o.icon,style:{"margin-right":"5.5px"}},null,8,Al)),o.title?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",_l,Object(D["toDisplayString"])(o.title),1)):Object(D["createCommentVNode"])("",!0)],10,Ll)]))),128)),Hl]),_:2},1024))),128)),$l],8,Fl)):Object(D["createCommentVNode"])("",!0),e.showExport?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:3,class:"dataTableAction activateExportSelection",title:e.translate("General_ExportThisReport"),href:"",style:{"margin-right":"3.5px"},onClick:t[2]||(t[2]=Object(D["withModifiers"])(()=>{},["prevent"]))},Wl,8,Ul)),[[l,{reportTitle:e.reportTitle,requestParams:e.requestParams,apiMethod:e.apiMethodToRequestDataTable,reportFormats:e.reportFormats,maxFilterLimit:e.maxFilterLimit}]]):Object(D["createCommentVNode"])("",!0),e.showExportAsImageIcon?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:4,class:"dataTableAction tableIcon",href:"",id:"dataTableFooterExportAsImageIcon",onClick:t[3]||(t[3]=Object(D["withModifiers"])(t=>e.showExportImage(t),["prevent"])),title:e.translate("General_ExportAsImage"),style:{"margin-right":"3.5px"}},Yl,8,zl)):Object(D["createCommentVNode"])("",!0),e.showAnnotations?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:5,class:"dataTableAction annotationView",href:"",title:e.translate("Annotations_Annotations"),onClick:t[4]||(t[4]=Object(D["withModifiers"])(()=>{},["prevent"])),style:{"margin-right":"3.5px"}},Jl,8,Kl)):Object(D["createCommentVNode"])("",!0),e.showSearch?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:6,class:"dropdown-button dataTableAction searchAction",href:"",title:e.translate("General_Search"),style:{"margin-right":"3.5px"},draggable:"false",onClick:t[5]||(t[5]=Object(D["withModifiers"])(()=>{},["prevent"]))},[Zl,Object(D["createElementVNode"])("span",{class:"icon-close",draggable:"false",title:e.translate("CoreHome_CloseSearch")},null,8,ec),Object(D["createElementVNode"])("input",{id:`widgetSearch_${e.reportId}_${e.placement}`,title:e.translate("CoreHome_DataTableHowToSearch"),type:"text",class:"dataTableSearchInput"},null,8,tc)],8,Xl)):Object(D["createCommentVNode"])("",!0),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.dataTableActions,e=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:e.id,class:Object(D["normalizeClass"])("dataTableAction "+e.id),href:"",onClick:t[6]||(t[6]=Object(D["withModifiers"])(()=>{},["prevent"])),title:e.title,style:{"margin-right":"3.5px"}},[/^icon-/.test(e.icon||"")?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,class:Object(D["normalizeClass"])(e.icon)},null,2)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("img",{key:1,width:"16",height:"16",title:e.title,src:e.icon},null,8,ic))],10,oc))),128)),Object(D["createElementVNode"])("ul",{id:"dropdownConfigure"+e.randomIdForDropdown,class:"dropdown-content tableConfiguration"},[e.showFlattenTable?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",ac,[Object(D["createElementVNode"])("div",{class:"configItem dataTableFlatten",innerHTML:e.$sanitize(e.flattenItemText)},null,8,rc)])):Object(D["createCommentVNode"])("",!0),e.showDimensionsConfigItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",sc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableShowDimensions",innerHTML:e.$sanitize(e.showDimensionsText)},null,8,lc)])):Object(D["createCommentVNode"])("",!0),e.showFlatConfigItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",cc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableIncludeAggregateRows",innerHTML:e.$sanitize(e.includeAggregateRowsText)},null,8,dc)])):Object(D["createCommentVNode"])("",!0),e.showTotalsConfigItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",uc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableShowTotalsRow",innerHTML:e.$sanitize(e.keepTotalsRowText)},null,8,mc)])):Object(D["createCommentVNode"])("",!0),e.showExcludeLowPopulation?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",pc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableExcludeLowPopulation",innerHTML:e.$sanitize(e.excludeLowPopText)},null,8,hc)])):Object(D["createCommentVNode"])("",!0),e.showPivotBySubtable?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",gc,[Object(D["createElementVNode"])("div",{class:"configItem dataTablePivotBySubtable",innerHTML:e.$sanitize(e.pivotByText)},null,8,bc)])):Object(D["createCommentVNode"])("",!0)],8,nc),e.showPeriods?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:7,class:"dropdown-button dataTableAction activatePeriodsSelection",href:"",onClick:t[7]||(t[7]=Object(D["withModifiers"])(()=>{},["prevent"])),title:e.translate("CoreHome_ChangePeriod"),"data-target":"dropdownPeriods"+e.randomIdForDropdown},[Object(D["createElementVNode"])("div",null,[vc,Object(D["createElementVNode"])("span",Oc,Object(D["toDisplayString"])(e.translations[e.clientSideParameters.period]||e.clientSideParameters.period),1)])],8,fc)),[[s]]):Object(D["createCommentVNode"])("",!0),e.showPeriods?(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",{key:8,id:"dropdownPeriods"+e.randomIdForDropdown,class:"dropdown-content dataTablePeriods"},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.selectablePeriods,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:t},[Object(D["createElementVNode"])("a",{"data-period":t,class:Object(D["normalizeClass"])("tableIcon "+(e.clientSideParameters.period===t?"activeIcon":""))},[Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.translations[t]||t),1)],10,jc)]))),128))],8,yc)):Object(D["createCommentVNode"])("",!0)])):Object(D["createCommentVNode"])("",!0)}const{$:Sc}=window;function Cc(e,t,o){if(/(%(.\$)?s+)/g.test(a(e))){const i=[' '];o&&i.push(o);let n=a(e,...i);return t&&(n+=` (${a("CoreHome_Default")})`),n+="",n}return a(e)}function kc(e,t,o){return e?Cc(t,!0):Cc(o)}function Dc(e){return!!e&&"0"!==e}var Ec=Object(D["defineComponent"])({props:{showPeriods:Boolean,showFooter:Boolean,showFooterIcons:Boolean,showSearch:Boolean,showFlattenTable:Boolean,footerIcons:{type:Array,required:!0},viewDataTable:{type:String,required:!0},reportTitle:String,requestParams:{type:Object,required:!0},apiMethodToRequestDataTable:{type:String,required:!0},maxFilterLimit:{type:Number,required:!0},showExport:Boolean,showExportAsImageIcon:Boolean,showAnnotations:Boolean,reportId:{type:String,required:!0},dataTableActions:{type:Array,required:!0},clientSideParameters:{type:Object,required:!0},hasMultipleDimensions:Boolean,isDataTableEmpty:Boolean,showTotalsRow:Boolean,showExcludeLowPopulation:Boolean,showPivotBySubtable:Boolean,selectablePeriods:Array,translations:{type:Object,required:!0},pivotDimensionName:String,placement:{type:String,default:"footer"}},components:{Passthrough:Pl},directives:{DropdownButton:Tt,ReportExport:ll},methods:{showExportImage(e){Sc(e.target).closest(".dataTable").find("div.jqplot-target").trigger("piwikExportAsImage")}},computed:{randomIdForDropdown(){return Math.floor(999999*Math.random())},allFooterIcons(){return this.footerIcons.reduce((e,t)=>(e.push(...t.buttons),e),[])},activeFooterIcons(){const e=this.clientSideParameters,t=[this.viewDataTable];return 0===e.abandonedCarts||"0"===e.abandonedCarts?t.push("ecommerceOrder"):1!==e.abandonedCarts&&"1"!==e.abandonedCarts||t.push("ecommerceAbandonedCart"),t.map(e=>this.allFooterIcons.find(t=>t.id===e)).filter(e=>!!e)},activeFooterIcon(){var e;return null===(e=this.activeFooterIcons[0])||void 0===e?void 0:e.icon},activeFooterIconIds(){return this.activeFooterIcons.map(e=>e.id)},numIcons(){return this.allFooterIcons.length},hasFooterIconsToShow(){return!!this.activeFooterIcons.length&&this.numIcons>1},reportFormats(){const e={TSV:"TSV (Excel)",HTML:"HTML",JSON:"JSON",XML:"XML",CSV:"CSV",RSS:"RSS"};return e},showDimensionsConfigItem(){return this.showFlattenTable&&""+this.clientSideParameters.flat==="1"&&this.hasMultipleDimensions},showFlatConfigItem(){return this.showFlattenTable&&""+this.clientSideParameters.flat==="1"},showTotalsConfigItem(){return!this.isDataTableEmpty&&this.showTotalsRow},hasConfigItems(){return this.showFlattenTable||this.showDimensionsConfigItem||this.showFlatConfigItem||this.showTotalsConfigItem||this.showExcludeLowPopulation||this.showPivotBySubtable},flattenItemText(){const e=this.clientSideParameters;return kc(Dc(e.flat),"CoreHome_UnFlattenDataTable","CoreHome_FlattenDataTable")},keepTotalsRowText(){const e=this.clientSideParameters;return kc(Dc(e.keep_totals_row),"CoreHome_RemoveTotalsRowDataTable","CoreHome_AddTotalsRowDataTable")},includeAggregateRowsText(){const e=this.clientSideParameters;return kc(Dc(e.include_aggregate_rows),"CoreHome_DataTableExcludeAggregateRows","CoreHome_DataTableIncludeAggregateRows")},showDimensionsText(){const e=this.clientSideParameters;return kc(Dc(e.show_dimensions),"CoreHome_DataTableCombineDimensions","CoreHome_DataTableShowDimensions")},pivotByText(){const e=this.clientSideParameters;return Dc(e.pivotBy)?Cc("CoreHome_UndoPivotBySubtable",!0):Cc("CoreHome_PivotBySubtable",!1,this.pivotDimensionName)},excludeLowPopText(){const e=this.clientSideParameters;return kc(Dc(e.enable_filter_excludelowpop),"CoreHome_IncludeRowsWithLowPopulation","CoreHome_ExcludeRowsWithLowPopulation")},isAnyConfigureIconHighlighted(){const e=this.clientSideParameters;return Dc(e.flat)||Dc(e.keep_totals_row)||Dc(e.include_aggregate_rows)||Dc(e.show_dimensions)||Dc(e.pivotBy)||Dc(e.enable_filter_excludelowpop)},isTableView(){return"table"===this.viewDataTable||"tableAllColumns"===this.viewDataTable||"tableGoals"===this.viewDataTable}}});Ec.render=wc;var Pc=Ec;const Tc={key:0,class:"title",style:{cursor:"pointer"},ref:"expander"},Vc=Object(D["createElementVNode"])("span",{class:"icon-warning"},null,-1),xc={key:1,class:"title",href:"?module=CoreUpdater&action=newVersionAvailable",style:{cursor:"pointer"},ref:"expander"},Nc=Object(D["createElementVNode"])("span",{class:"icon-warning"},null,-1),Bc=["innerHTML"],Ic=["href"],Mc={id:"updateCheckLinkContainer"},Fc={class:"dropdown positionInViewport"},Lc=["innerHTML"],Rc=["innerHTML"];function Ac(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Passthrough"),s=Object(D["resolveDirective"])("expand-on-hover");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{id:"header_message",class:Object(D["normalizeClass"])(["piwikSelector",{header_info:!e.latestVersionAvailable||e.lastUpdateCheckFailed,update_available:e.latestVersionAvailable}])},[e.latestVersionAvailable?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:0},{default:Object(D["withCtx"])(()=>[e.isMultiServerEnvironment?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",Tc,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_NewUpdatePiwikX",e.latestVersionAvailable))+" ",1),Vc],512)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",xc,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_NewUpdatePiwikX",e.latestVersionAvailable))+" ",1),Nc],512))]),_:1})):e.isSuperUser&&(e.isAdminArea||e.lastUpdateCheckFailed)?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:1},{default:Object(D["withCtx"])(()=>[e.isInternetEnabled?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,class:"title",innerHTML:e.$sanitize(e.updateCheck)},null,8,Bc)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,class:"title",href:e.externalRawLink("https://matomo.org/changelog/"),target:"_blank",rel:"noreferrer noopener"},[Object(D["createElementVNode"])("span",Mc,Object(D["toDisplayString"])(e.translate("CoreHome_SeeAvailableVersions")),1)],8,Ic))]),_:1})):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("div",Fc,[e.latestVersionAvailable&&e.isSuperUser?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,innerHTML:e.$sanitize(e.updateNowText)},null,8,Lc)):e.latestVersionAvailable&&e.hasSomeViewAccess&&!e.isAnonymous?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:1,innerHTML:e.$sanitize(e.updateAvailableText)},null,8,Rc)):Object(D["createCommentVNode"])("",!0),Object(D["createTextVNode"])(" "+Object(D["toDisplayString"])(e.translate("General_YouAreCurrentlyUsing",e.piwikVersion)),1)])],2)),[[s,{expander:"expander"}]])}var _c=Object(D["defineComponent"])({props:{isMultiServerEnvironment:Boolean,lastUpdateCheckFailed:Boolean,latestVersionAvailable:String,isSuperUser:Boolean,isAdminArea:Boolean,isInternetEnabled:Boolean,updateCheck:String,isAnonymous:Boolean,hasSomeViewAccess:Boolean,contactEmail:String,piwikVersion:String},components:{Passthrough:Pl},directives:{ExpandOnHover:kt},computed:{updateNowText(){let e="";if(this.isMultiServerEnvironment){const t=de(`https://builds.matomo.org/matomo-${this.latestVersionAvailable}.zip`);e=a("CoreHome_OneClickUpdateNotPossibleAsMultiServerEnvironment",`builds.matomo.org`)}else e=a("General_PiwikXIsAvailablePleaseUpdateNow",this.latestVersionAvailable||"",' ',"",ue("https://matomo.org/changelog/"),"");return e+" "},updateAvailableText(){const e=a("General_NewUpdatePiwikX",this.latestVersionAvailable||""),t=ue("https://matomo.org/")+"Matomo",o=ue("https://matomo.org/changelog/"),i=a("General_PiwikXIsAvailablePleaseNotifyPiwikAdmin",`${t} ${o}${this.latestVersionAvailable}`,``,"");return i+" "}}});_c.render=Ac;var Hc=_c;const $c={id:"mobile-left-menu",class:"sidenav hide-on-large-only"},Uc={class:"collapsible collapsible-accordion"},qc={class:"collapsible-header"},Wc={class:"collapsible-body"},zc=["title","href"];function Gc(e,t,o,i,n,a){const r=Object(D["resolveDirective"])("side-nav");return Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",$c,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.menuWithSubmenuItems,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:"no-padding",key:o},[Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",Uc,[Object(D["createElementVNode"])("li",null,[Object(D["createElementVNode"])("a",qc,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translateOrDefault(o)),1),Object(D["createElementVNode"])("i",{class:Object(D["normalizeClass"])(t._icon||"icon-chevron-down")},null,2)]),Object(D["createElementVNode"])("div",Wc,[Object(D["createElementVNode"])("ul",null,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(Object.entries(t).filter(([e])=>"_"!==e[0]),([t,o])=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:t},[Object(D["createElementVNode"])("a",{title:o._tooltip?e.translateIfNecessary(o._tooltip):"",target:"_self",href:e.getMenuUrl(o._url)},Object(D["toDisplayString"])(e.translateIfNecessary(t)),9,zc)]))),128))])])])])),[[r,{activator:e.activateLeftMenu}]])]))),128))])}const{$:Yc}=window;var Kc=Object(D["defineComponent"])({props:{menu:{type:Object,required:!0}},directives:{SideNav:Rt},methods:{getMenuUrl(e){return"?"+U.stringify(Object.assign(Object.assign({},U.urlParsed.value),e))},translateIfNecessary(e){return e.includes("_")?a(e):e}},computed:{menuWithSubmenuItems(){const e=this.menu||{};return Object.fromEntries(Object.entries(e).filter(([,e])=>{const t=Object.entries(e).filter(([e])=>"_"!==e[0]);return Object.keys(t).length}))},activateLeftMenu(){return Yc("nav .activateLeftMenu")[0]}}});Kc.render=Gc;var Qc=Kc;
+ */function Ws(e){return!!(e.isContainer&&e.layout&&"ByDimension"===e.layout||"bydimension"===e.viewDataTable)||(!!e.isWide||e.viewDataTable&&("tableAllColumns"===e.viewDataTable||"sparklines"===e.viewDataTable||"graphEvolution"===e.viewDataTable))}function zs(e){if(e&&e[0]){const t=[...e],o=e[0];return o.group?t[0]=Object.assign(Object.assign({},t[0]),{},{left:zs(o.left||[]),right:zs(o.right||[])}):t[0]=Object.assign(Object.assign({},t[0]),{},{isFirstInPage:!0}),t}return e}class Gs{constructor(){qs(this,"privateState",Object(D["reactive"])({})),qs(this,"state",Object(D["computed"])(()=>Object(D["readonly"])(this.privateState))),qs(this,"page",Object(D["computed"])(()=>this.state.value.page)),qs(this,"widgets",Object(D["computed"])(()=>{const e=this.page.value;if(!e)return[];let t=[];const o={},i=e=>e.isReport&&o[`${e.module}.${e.action}`],n=e=>{if(!e.isReport)return[];const t=as.findReport(e.module,e.action);return t&&t.relatedReports?t.relatedReports:[]};if((e.widgets||[]).forEach(e=>{i(e)||(n(e).forEach(e=>{o[`${e.module}.${e.action}`]=!0}),t.push(e))}),t=Ur(t),1===t.length)return zs(t);const a=[];for(let s=0;s(this.privateState.page=$r.findPage(e,t),this.page.value))}resetPage(){this.privateState.page=void 0}}var Ks=new Gs;function Ys(){const e="category=General_Visitors&subcategory=Live_VisitorLog",t=window.broadcast.buildReportingUrl(e);let o=a("CoreHome_PeriodHasOnlyRawData",``,"");M.visitorLogEnabled||(o=a("CoreHome_PeriodHasOnlyRawDataNoVisitsLog")),Li.show({id:"onlyRawData",animate:!1,context:"info",message:o,type:"transient"})}function Qs(){Li.remove("onlyRawData")}var Js=Object(D["defineComponent"])({components:{ActivityIndicator:qe,Widget:As},data(){return{loading:!1,hasRawData:!1,hasNoVisits:!1,dateLastChecked:null,hasNoPage:!1}},created(){Ks.resetPage(),this.loading=!0,this.renderInitialPage(),Object(D["watch"])(()=>U.parsed.value,(e,t)=>{e.category===t.category&&e.subcategory===t.subcategory&&e.period===t.period&&e.date===t.date&&e.segment===t.segment&&JSON.stringify(e.compareDates)===JSON.stringify(t.compareDates)&&JSON.stringify(e.comparePeriods)===JSON.stringify(t.comparePeriods)&&JSON.stringify(e.compareSegments)===JSON.stringify(t.compareSegments)&&JSON.stringify(e.columns||"")===JSON.stringify(t.columns||"")||(e.date===t.date&&e.period===t.period||(Qs(),this.dateLastChecked=null,this.hasRawData=!1,this.hasNoVisits=!1),this.renderPage(e.category,e.subcategory,e.period,e.date,e.segment))}),M.on("loadPage",(e,t)=>{const o=U.parsed.value;this.renderPage(e,t,o.period,o.date,o.segment)})},computed:{widgets(){return Ks.widgets.value}},methods:{renderPage(e,t,o,i,n){if(!e||!t)return Ks.resetPage(),void(this.loading=!1);try{c.parse(o,i)}catch(s){return Li.show({id:"invalidDate",animate:!1,context:"error",message:a("CoreHome_DateInvalid"),type:"transient"}),Ks.resetPage(),void(this.loading=!1)}Li.remove("invalidDate"),M.postEvent("matomoPageChange",{}),Li.clearTransientNotifications(),c.parse(o,i).containsToday()&&this.showOnlyRawDataMessageIfRequired(e,t,o,i,n);const r={category:e,subcategory:t};if(M.postEvent("ReportingPage.loadPage",r),r.promise)return this.loading=!0,void Promise.resolve(r.promise).finally(()=>{this.loading=!1});Ks.fetchPage(e,t).then(()=>{const t=!Ks.page.value;if(t){const t=$r.findPageInCategory(e);if(t&&t.subcategory)return void U.updateHash(Object.assign(Object.assign({},U.hashParsed.value),{},{subcategory:t.subcategory.id}))}this.hasNoPage=t,this.loading=!1})},renderInitialPage(){const e=U.parsed.value;this.renderPage(e.category,e.subcategory,e.period,e.date,e.segment)},showOnlyRawDataMessageIfRequired(e,t,o,i,n){if(this.hasRawData&&this.hasNoVisits&&Ys(),n)return void Qs();const a=["Live_VisitorLog","General_RealTime","UserCountryMap_RealTimeMap","MediaAnalytics_TypeAudienceLog","MediaAnalytics_TypeRealTime","FormAnalytics_TypeRealTime","Goals_AddNewGoal"],r=["HeatmapSessionRecording_Heatmaps","HeatmapSessionRecording_SessionRecordings","Marketplace_Marketplace"];if(-1!==a.indexOf(t)||-1!==r.indexOf(e)||-1!==t.toLowerCase().indexOf("manage"))return void Qs();const s=6e4;this.dateLastChecked&&(new Date).valueOf()-this.dateLastChecked.valueOf()(this.dateLastChecked=new Date,e.value>0?(this.hasNoVisits=!1,void Qs()):(this.hasNoVisits=!0,this.hasRawData?void Ys():te.fetch({method:"Live.getMostRecentVisitsDateTime",date:i,period:o}).then(e=>{if(!e||""===e.value)return this.hasRawData=!1,void Qs();this.hasRawData=!0,Ys()}))))}}});Js.render=Us;var Xs=Js;const Zs={class:"report-export-popover row",id:"reportExport"},el={class:"col l6"},tl={name:"format"},ol={name:"option_flat"},il={name:"option_show_dimensions"},nl={name:"option_expanded"},al={name:"option_format_metrics"},rl={class:"col l6"},sl={name:"filter_type"},ll={class:"filter_limit"},cl={name:"filter_limit_all"},dl={key:0,name:"filter_limit"},ul={key:1,name:"filter_limit"},pl={class:"col l12"},ml=["value"],hl=["innerHTML"],gl={class:"col l12"},bl=["href","title"],fl=["innerHTML"];function vl(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Field"),s=Object(D["resolveDirective"])("select-on-focus");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Zs,[Object(D["createElementVNode"])("div",el,[Object(D["createElementVNode"])("div",tl,[Object(D["createVNode"])(r,{uicontrol:"radio",name:"format",title:e.translate("CoreHome_ExportFormat"),modelValue:e.reportFormat,"onUpdate:modelValue":t[0]||(t[0]=t=>e.reportFormat=t),"full-width":!0,options:e.availableReportFormats[e.reportType]},null,8,["title","modelValue","options"])]),Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",ol,[Object(D["withDirectives"])(Object(D["createVNode"])(r,{uicontrol:"checkbox",name:"option_flat",title:e.translate("CoreHome_FlattenReport"),modelValue:e.optionFlatModel,"onUpdate:modelValue":t[1]||(t[1]=t=>e.optionFlatModel=t)},null,8,["title","modelValue"]),[[D["vShow"],e.canExportFlat]])])]),Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",il,[Object(D["withDirectives"])(Object(D["createVNode"])(r,{uicontrol:"checkbox",name:"option_show_dimensions",title:e.translate("CoreHome_IncludeDimensionsSeparately"),modelValue:e.optionShowDimensions,"onUpdate:modelValue":t[2]||(t[2]=t=>e.optionShowDimensions=t)},null,8,["title","modelValue"]),[[D["vShow"],e.canExportFlat&&e.hasMultipleDimensions&&e.optionFlatModel]])])]),Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",nl,[Object(D["withDirectives"])(Object(D["createVNode"])(r,{uicontrol:"checkbox",name:"option_expanded",title:e.translate("CoreHome_ExpandSubtables"),modelValue:e.optionExpandedModel,"onUpdate:modelValue":t[3]||(t[3]=t=>e.optionExpandedModel=t)},null,8,["title","modelValue"]),[[D["vShow"],e.hasSubtables&&!e.isCsvOrTsv]])])]),Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",al,[Object(D["createVNode"])(r,{uicontrol:"checkbox",name:"option_format_metrics",title:e.translate("CoreHome_FormatMetrics"),modelValue:e.optionFormatMetrics,"onUpdate:modelValue":t[4]||(t[4]=t=>e.optionFormatMetrics=t)},null,8,["title","modelValue"])])])]),Object(D["createElementVNode"])("div",rl,[Object(D["createElementVNode"])("div",null,[Object(D["createElementVNode"])("div",sl,[Object(D["createVNode"])(r,{uicontrol:"radio",name:"filter_type",title:e.translate("CoreHome_ReportType"),modelValue:e.reportType,"onUpdate:modelValue":t[5]||(t[5]=t=>e.reportType=t),"full-width":!0,options:e.availableReportTypes},null,8,["title","modelValue","options"])])]),Object(D["createElementVNode"])("div",ll,[Object(D["withDirectives"])(Object(D["createElementVNode"])("div",cl,[Object(D["createVNode"])(r,{uicontrol:"radio",name:"filter_limit_all",title:e.translate("CoreHome_RowLimit"),modelValue:e.reportLimitAll,"onUpdate:modelValue":t[6]||(t[6]=t=>e.reportLimitAll=t),"full-width":!0,options:e.limitAllOptions},null,8,["title","modelValue","options"])],512),[[D["vShow"],!e.maxFilterLimit||e.maxFilterLimit<=0]]),"no"===e.reportLimitAll&&e.maxFilterLimit<=0?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",dl,[Object(D["createVNode"])(r,{uicontrol:"number",name:"filter_limit",min:1,modelValue:e.reportLimit,"onUpdate:modelValue":t[7]||(t[7]=t=>e.reportLimit=t),"full-width":!0},null,8,["modelValue"])])):Object(D["createCommentVNode"])("",!0),"no"===e.reportLimitAll&&e.maxFilterLimit>0?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",ul,[Object(D["createVNode"])(r,{uicontrol:"number",name:"filter_limit",min:1,max:e.maxFilterLimit,modelValue:e.reportLimit,"onUpdate:modelValue":t[8]||(t[8]=t=>e.reportLimit=t),value:e.reportLimit,"full-width":!0,title:e.filterLimitTooltip},null,8,["max","modelValue","value","title"])])):Object(D["createCommentVNode"])("",!0)])]),Object(D["withDirectives"])(Object(D["createElementVNode"])("div",pl,[Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("textarea",{readonly:"",class:"exportFullUrl",value:e.exportLinkWithoutToken},[Object(D["createTextVNode"])("\n ")],8,ml)),[[s,{}]]),Object(D["createElementVNode"])("div",{class:"tooltip",innerHTML:e.$sanitize(e.translate("CoreHome_ExportTooltipWithLink","","","ENTER_YOUR_TOKEN_AUTH_HERE"))},null,8,hl)],512),[[D["vShow"],e.showUrl]]),Object(D["createElementVNode"])("div",gl,[Object(D["createElementVNode"])("a",{class:"btn",href:e.exportLink,target:"_new",title:e.translate("CoreHome_ExportTooltip")},Object(D["toDisplayString"])(e.translate("General_Export")),9,bl),Object(D["createElementVNode"])("a",{href:"javascript:",onClick:t[9]||(t[9]=t=>e.showUrl=!e.showUrl),class:"toggle-export-url"},[Object(D["withDirectives"])(Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.translate("CoreHome_ShowExportUrl")),513),[[D["vShow"],!e.showUrl]]),Object(D["withDirectives"])(Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.translate("CoreHome_HideExportUrl")),513),[[D["vShow"],e.showUrl]])])]),e.additionalContent?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,class:"col l12 report-export-popover-footer",innerHTML:e.$sanitize(e.additionalContent)},null,8,fl)):Object(D["createCommentVNode"])("",!0)])}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const{$:Jc}=window;function Xc(e){Jc.scrollTo(e,20)}function Zc(e){e&&e.preventDefault()}function ed(e,t){var o,i;if(!e)return;if(-1!==e.indexOf("&"))return;let n=null;try{n=Jc("#"+e)}catch(a){return}if(null!==(o=n)&&void 0!==o&&o.length)return Xc(n),void Zc(t);n=Jc(`a[name=${e}]`),null!==(i=n)&&void 0!==i&&i.length&&(Xc(n),Zc(t))}function td(e,t){return(!e||!e.origin||-1!==t.indexOf(e.origin))&&((!e||!e.pathname||-1!==t.indexOf(e.pathname))&&(!e||!e.search||-1!==t.indexOf(e.search)))}function od(){if("#/"===window.location.hash.slice(0,2)){const e=window.location.hash.slice(2);ed(e,null)}}function id(){Object(D["watch"])(()=>U.url.value,(e,t)=>{if(!e)return;const o=e.href.indexOf("#/");if(-1===o)return;if(t&&!td(t,e.href))return;const i=e.href.slice(o+2);ed(i,null)})}function nd(){Object(D["nextTick"])(od)}
+ */const Ol=["CSV","TSV"];function yl(e){return Ol.includes(e)}function jl(e,t,o){return e?yl(o)?{hasUserPreference:!1,preferredMode:null}:{hasUserPreference:!0,preferredMode:"flat"}:t?{hasUserPreference:!0,preferredMode:"expanded"}:{hasUserPreference:!0,preferredMode:null}}function wl(e,t,o,i){const{hasUserPreference:n,preferredMode:a}=i;return e?yl(o)?t?{optionFlat:!n||"flat"===a,optionExpanded:!1}:{optionFlat:!1,optionExpanded:!1}:n?"flat"===a?t?{optionFlat:!0,optionExpanded:!1}:{optionFlat:!1,optionExpanded:!0}:"expanded"===a?{optionFlat:!1,optionExpanded:!0}:{optionFlat:!1,optionExpanded:!1}:{optionFlat:!1,optionExpanded:!0}:{optionFlat:!1,optionExpanded:!1}}const Sl=Se("CorePluginsAdmin","Field");var Cl=Object(D["defineComponent"])({components:{Field:Sl},directives:{SelectOnFocus:It},props:{hasSubtables:Boolean,canExportFlat:{type:Boolean,default:!1},availableReportTypes:Object,availableReportFormats:{type:Object,required:!0},maxFilterLimit:Number,limitAllOptions:Object,dataTable:{type:Object,required:!0},requestParams:[Object,String],apiMethod:{type:String,required:!0},initialReportType:{type:String,default:"default"},initialReportLimit:{type:[String,Number],default:100},initialReportLimitAll:{type:String,default:"yes"},initialOptionFlat:{type:Boolean,default:!1},initialOptionShowDimensions:{type:Boolean,default:!1},initialOptionExpanded:{type:Boolean,default:!0},initialOptionFormatMetrics:{type:Boolean,default:!1},initialReportFormat:{type:String,default:"TSV"}},mounted(){const e={content:this.additionalContent,dataTable:this.dataTable};M.postEvent("ReportExportPopover.additionalContent",e),this.additionalContent=e.content},data(){return{showUrl:!1,reportFormat:this.initialReportFormat,optionShowDimensions:this.initialOptionShowDimensions,subtablePreference:jl(this.initialOptionFlat,this.initialOptionExpanded,this.initialReportFormat),optionFormatMetrics:this.initialOptionFormatMetrics,reportType:this.initialReportType,reportLimitAll:this.initialReportLimitAll,reportLimit:"string"===typeof this.initialReportLimit?parseInt(this.initialReportLimit,10):this.initialReportLimit,additionalContent:""}},watch:{reportType(e){this.availableReportFormats[e][this.reportFormat]||(this.reportFormat="JSON")},reportLimit(e,t){this.maxFilterLimit&&this.maxFilterLimit>0&&e>this.maxFilterLimit&&(this.reportLimit=t)}},computed:{hasMultipleDimensions(){var e,t;return"function"===typeof(null===(e=this.dataTable)||void 0===e?void 0:e.getReportMetadata)&&Object.keys((null===(t=this.dataTable)||void 0===t?void 0:t.getReportMetadata().dimensions)||{}).length>1},filterLimitTooltip(){const e=a("CoreHome_RowLimit"),t=this.maxFilterLimit?a("General_ComputedMetricMax",this.maxFilterLimit.toString()):"";return`${e} (${t})`},isCsvOrTsv(){return yl(this.reportFormat)},effectiveSubtableOptions(){return wl(this.hasSubtables,this.canExportFlat,this.reportFormat,this.subtablePreference)},optionFlatModel:{get(){return this.effectiveSubtableOptions.optionFlat},set(e){this.hasSubtables&&this.canExportFlat&&(e?this.subtablePreference={hasUserPreference:!0,preferredMode:"flat"}:this.optionExpandedModel||(this.subtablePreference={hasUserPreference:!0,preferredMode:null}))}},optionExpandedModel:{get(){return this.effectiveSubtableOptions.optionExpanded},set(e){this.hasSubtables&&!yl(this.reportFormat)&&(e?this.subtablePreference={hasUserPreference:!0,preferredMode:"expanded"}:this.optionFlatModel||(this.subtablePreference={hasUserPreference:!0,preferredMode:null}))}},exportLink(){return this.getExportLink(!0)},exportLinkWithoutToken(){return this.getExportLink(!1)}},methods:{getExportLink(e=!0){const{reportFormat:t,apiMethod:o,reportType:i}=this,n=this.dataTable;if(!t)return;let a={};const r="yes"===this.reportLimitAll?-1:this.reportLimit;this.requestParams&&"string"===typeof this.requestParams?a=JSON.parse(this.requestParams):this.requestParams&&"object"===typeof this.requestParams&&(a=this.requestParams);const{segment:s,label:l,idGoal:c,idDimension:d,idSite:u}=n.param;let{date:p,period:m}=n.param;"RSS"===t&&(p="last10"),"undefined"!==typeof n.param.dateUsedInGraph&&(p=n.param.dateUsedInGraph);const h=M.config.datatable_export_range_as_day.toLowerCase();-1!==h.indexOf(t.toLowerCase())&&"range"===n.param.period&&(m="day"),"range"===n.param.period&&"graphEvolution"===n.param.viewDataTable&&(m="day");const g={module:"API",format:t,idSite:u,period:m,date:p};"processed"===i?(g.method="API.getProcessedReport",[g.apiModule,g.apiAction]=o.split(".")):g.method=o,n.param.compareDates&&n.param.compareDates.length&&(g.compareDates=n.param.compareDates,g.compare="1"),n.param.comparePeriods&&n.param.comparePeriods.length&&(g.comparePeriods=n.param.comparePeriods,g.compare="1"),n.param.compareSegments&&n.param.compareSegments.length&&(g.compareSegments=n.param.compareSegments,g.compare="1"),"undefined"!==typeof n.param.filter_pattern&&(g.filter_pattern=n.param.filter_pattern),"undefined"!==typeof n.param.filter_pattern_recursive&&(g.filter_pattern_recursive=n.param.filter_pattern_recursive),window.$.isPlainObject(a)&&Object.entries(a).forEach(([e,t])=>{let o=t;!0===o?o=1:!1===o&&(o=0),g[e]=o});const{optionFlat:b,optionExpanded:f}=this.effectiveSubtableOptions;if(b&&(g.flat=1,this.optionShowDimensions&&(g.show_dimensions=1),"undefined"!==typeof n.param.include_aggregate_rows&&"1"===n.param.include_aggregate_rows&&(g.include_aggregate_rows=1)),this.hasSubtables&&!b&&f&&(g.expanded=1),this.optionFormatMetrics&&(g.format_metrics=1),n.param.pivotBy&&(g.pivotBy=n.param.pivotBy,g.pivotByColumnLimit=20,n.props.pivot_by_column&&(g.pivotByColumn=n.props.pivot_by_column)),"CSV"!==t&&"TSV"!==t&&"RSS"!==t||(g.translateColumnNames=1,g.language=M.language),"undefined"!==typeof s&&(g.segment=decodeURIComponent(s)),"undefined"!==typeof c&&"-1"!==c&&(g.idGoal=c),"undefined"!==typeof d&&"-1"!==d&&(g.idDimension=d),l){const e=l.split(",");e.length>1?g.label=e:[g.label]=e}g.showMetadata=0,g.token_auth="ENTER_YOUR_TOKEN_AUTH_HERE",!0===e&&(g.token_auth=M.token_auth,g.force_api_session=1),g.filter_limit=r;const v=window.location.href.split("?")[0];return`${v}?${U.stringify(g)}`}}});Cl.render=vl;var kl=Cl;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function ad(e){const t=[];if("INPUT"===e.tagName&&"password"===e.type)t.push(e);else{const o=e.querySelectorAll('input[type="password"]');o.forEach(e=>t.push(e))}return t}function rd(e,t){let o,i=e.value;const n=()=>{e.value="",e.dispatchEvent(new Event("input"))},a=()=>{o&&clearTimeout(o),o=setTimeout(n,1e3*t)},r=()=>a(),s=()=>a();e.addEventListener("input",r),e.addEventListener("change",s),e.dataset.autoClearEnabled="true";const l=setInterval(()=>{e.value!==i&&(i=e.value,a())},300);e.onUmounted={cleanup(){clearTimeout(o),clearInterval(l),e.removeEventListener("input",r),e.removeEventListener("change",s),delete e.dataset.autoClearEnabled}}}id(),Jc(od);var sd={mounted(e,t){const o=t.value&&t.value.delay||600,i=ad(e);i.forEach(e=>rd(e,o))},unmounted(e){const t=ad(e);t.forEach(e=>{e.onUmounted&&"function"===typeof e.onUmounted.cleanup&&(e.onUmounted.cleanup(),delete e.onUmounted)})}};const ld={key:0,class:"password-strength row"};function cd(e,t,o,i,n,a){return e.rules.length?(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",ld,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.rules,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:t.ruleText,class:Object(D["normalizeClass"])("col s12 xl6 rule rule-"+e.ruleStatus(t))},[Object(D["createElementVNode"])("span",{class:Object(D["normalizeClass"])({icon:!0,"icon-ok":"valid"===e.ruleStatus(t),"icon-close":"invalid"===e.ruleStatus(t),"icon-circle":"undefined"===e.ruleStatus(t)})},null,2),Object(D["createTextVNode"])(" "+Object(D["toDisplayString"])(t.ruleText),1)],2))),128))])):Object(D["createCommentVNode"])("",!0)}var dd=Object(D["defineComponent"])({props:{validationRules:{type:Array,required:!0},password:{type:String,default:""},externalInputSelector:{type:String,default:""}},data(){return{pwd:"",rules:[]}},emits:["check:isValid"],watch:{pwdValue:{immediate:!0,handler(e){const t=[];this.rules.forEach(o=>{if(e.length||"undefined"===typeof o.passed)try{const i=new RegExp(o.validationRegex.replace(/^\/|\/$/g,""));i.test(e)?(o.passed=!0,t.push(!0)):o.passed=!1}catch(i){console.log("Invalid password validation pattern:",i)}else delete o.passed}),this.rules.length>0&&t.length===this.rules.length&&this.$emit("check:isValid",!0)}}},computed:{pwdValue(){var e;return null!==(e=this.externalInputSelector)&&void 0!==e&&e.length?this.pwd:this.password}},mounted(){var e;if(this.rules=this.validationRules.length?this.validationRules.map(e=>Object.assign({},e)):[],null!==(e=this.externalInputSelector)&&void 0!==e&&e.length){const e=document.querySelector(this.externalInputSelector);e&&(e.addEventListener("input",this.handleExternalInput),this.pwd=e.value)}},unmounted(){var e;if(null!==(e=this.externalInputSelector)&&void 0!==e&&e.length){const e=document.querySelector(this.externalInputSelector);e&&e.removeEventListener("input",this.handleExternalInput)}},methods:{ruleStatus(e){return"undefined"===typeof e.passed?"undefined":e.passed?"valid":"invalid"},handleExternalInput(e){const t=e.target;this.pwd=t.value}}});dd.render=cd;var ud=dd;
+ */const{$:Dl}=window;var El={mounted(e,t){e.addEventListener("click",()=>{var o;const i=U.hashParsed.value.popover,n=Dl(e).closest("[data-report]").data("uiControlObject"),r=window.Piwik_Popover.showLoading("Export"),s=t.value.reportFormats;let l=n.param.filter_limit;t.value.maxFilterLimit>0&&(l=Math.min(l,t.value.maxFilterLimit));const c=!0===n.param.flat||1===n.param.flat||"1"===n.param.flat,d=!0===n.param.show_dimensions||1===n.param.show_dimensions||"1"===n.param.show_dimensions,u=c||n.numberOfSubtables>0,p=(null!==(o=t.value.canExportFlat)&&void 0!==o?o:u)&&u,m=p,h=!1,g={initialReportType:"default",initialReportFormat:"TSV",initialReportLimit:l>0?l:100,initialReportLimitAll:-1===l?"yes":"no",initialOptionFlat:m,initialOptionShowDimensions:d,initialOptionExpanded:h,initialOptionFormatMetrics:!1,hasSubtables:u,canExportFlat:p,availableReportFormats:{default:s,processed:{JSON:s.JSON,XML:s.XML}},availableReportTypes:{default:a("CoreHome_StandardReport"),processed:a("CoreHome_ReportWithMetadata")},limitAllOptions:{yes:a("General_All"),no:a("CoreHome_CustomLimit")},maxFilterLimit:t.value.maxFilterLimit,dataTable:n,requestParams:t.value.requestParams,apiMethod:t.value.apiMethod},b=fe({template:'\n ',data(){return{bind:g}}});b.component("popover",kl);const f=document.createElement("div");b.mount(f);const{reportTitle:v}=t.value;window.Piwik_Popover.setTitle(`${a("General_Export")} ${M.helper.htmlEntities(v)}`),window.Piwik_Popover.setContent(f),window.Piwik_Popover.onClose(()=>{b.unmount(),""!==i&&setTimeout(()=>{U.updateHash(Object.assign(Object.assign({},U.hashParsed.value),{},{popover:i})),t.value.onClose&&t.value.onClose()},100)}),setTimeout(()=>{r.dialog(),Dl(".exportFullUrl, .btn",r).tooltip({track:!0,show:!1,hide:!1})},100)})}};const Pl=["src","width","height"];function Tl(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("img",{class:"sparklineImg",loading:"lazy",alt:"",src:e.sparklineUrl,width:e.width,height:e.height},null,8,Pl)}var Vl=Object(D["defineComponent"])({props:{seriesIndices:Array,params:[Object,String],width:Number,height:Number},data(){return{isWidget:!1}},mounted(){this.isWidget=!!this.$el.closest("[widgetId]")},computed:{sparklineUrl(){const{seriesIndices:e,params:t}=this,o=M.getSparklineColors();e&&(o.lineColor=o.lineColor.filter((t,o)=>-1!==e.indexOf(o)));const i=JSON.stringify(o),n={forceView:"1",viewDataTable:"sparkline",widget:this.isWidget?"1":"0",showtitle:"1",colors:i,random:Date.now(),date:this.defaultDate,segment:U.parsed.value.segment},a="object"===typeof t?t:U.parse(t.substring(t.indexOf("?")+1)),r=new te,s=r.mixinDefaultGetParams(Object.assign(Object.assign({},n),a)),l=U.parsed.value.token_auth;return l&&l.length&&M.shouldPropagateTokenAuth&&(s.token_auth=l),"?"+U.stringify(s)},defaultDate(){if("range"===M.period)return`${M.startDateString},${M.endDateString}`;const e=k.getLastNRange(M.period,30,M.currentDateString).getDateRange(),t=new Date(M.minDateYear,M.minDateMonth-1,M.minDateDay);e[0]100?100:this.progress<0?0:this.progress}}});Fl.render=Ml;var Ll=Fl,Rl={mounted(e){e.classList.add("piwik-content-intro")},updated(e){Object(D["nextTick"])(()=>{e.classList.add("piwik-content-intro")})}},Al={mounted(e,t){var o;null!==t&&void 0!==t&&null!==(o=t.value)&&void 0!==o&&o.off||e.classList.add("card","card-table","entityTable")},updated(e,t){var o;null!==t&&void 0!==t&&null!==(o=t.value)&&void 0!==o&&o.off||Object(D["nextTick"])(()=>{e.classList.add("card","card-table","entityTable")})}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */const md={class:"main-duplicator-modal-content"},pd={class:"modal-header"},hd=Object(D["createElementVNode"])("span",{class:"btn-close modal-close"},[Object(D["createElementVNode"])("i",{class:"icon-close"})],-1),gd={key:0,class:"modal-sub-header"},bd={class:"loading-message"},fd={key:0,class:"modal-sub-header"},vd=["innerHTML"],Od={class:"modal-content"},yd={class:"modal-inputs"},jd={class:"modal-sub-footer"},wd=["innerHTML"],Sd=["innerHTML"],Cd={class:"modal-footer"},kd=["disabled"];function Dd(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("MatomoLoader"),s=Object(D["resolveComponent"])("Field"),l=Object(D["resolveDirective"])("form");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])({modal:!0,"entity-duplicator-modal":!0,"slot-configured":e.$slots.default}),ref:"root"},[Object(D["withDirectives"])(Object(D["createElementVNode"])("div",md,[Object(D["createElementVNode"])("div",pd,[hd,Object(D["createElementVNode"])("h2",null,Object(D["toDisplayString"])(e.getModalTitle),1)]),e.isLoading?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",gd,[Object(D["createVNode"])(r),Object(D["createElementVNode"])("span",bd,Object(D["toDisplayString"])(e.translate("General_Loading")),1)])):(Object(D["openBlock"])(),Object(D["createElementBlock"])(D["Fragment"],{key:1},[e.hideSiteSelector?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",fd,[Object(D["createElementVNode"])("p",null,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.getDuplicateDescription)+" ",1),e.descriptionLearnMoreLink?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,innerHTML:e.$sanitize(e.getLearnMoreLink)},null,8,vd)):Object(D["createCommentVNode"])("",!0)]),Object(D["createVNode"])(s,{uicontrol:"site",name:"siteSelector",title:e.translate("CoreHome_ChooseWebsite"),modelValue:e.destinationSite,"onUpdate:modelValue":t[0]||(t[0]=t=>e.destinationSite=t),"ui-control-attributes":{onlySitesWithAtLeastWriteAccess:!0,siteTypesToExclude:["rollup"]}},null,8,["title","modelValue"])])),Object(D["createElementVNode"])("div",Od,[Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",yd,[Object(D["renderSlot"])(e.$slots,"default")])),[[l]])]),Object(D["createElementVNode"])("div",jd,[e.duplicationErrors.length>0?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,class:Object(D["normalizeClass"])({alert:!0,"alert-danger":!0,"error-list":e.duplicationErrors.length>1})},[Object(D["createElementVNode"])("ul",null,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.duplicationErrors,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:o,innerHTML:e.$sanitize(t)},null,8,wd))),128))])],2)):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("p",{class:"note-text",innerHTML:e.$sanitize(e.getNoteText)},null,8,Sd)]),Object(D["createElementVNode"])("div",Cd,[Object(D["withDirectives"])(Object(D["createVNode"])(r,null,null,512),[[D["vShow"],e.hasBeenSubmitted]]),Object(D["createElementVNode"])("button",{class:"btn",disabled:!e.getIsValid||e.hasBeenSubmitted,onClick:t[1]||(t[1]=t=>e.submitRequest())},Object(D["toDisplayString"])(e.translate("General_Copy")),9,kd)])],64))],512),[[D["vShow"],e.isModalVisible]])],2)}const Ed=Se("CorePluginsAdmin","Field"),Pd=Se("CorePluginsAdmin","Form"),{$:Td}=window;var Vd=Object(D["defineComponent"])({directives:{Form:Pd},components:{Field:Ed,MatomoLoader:$e},props:{modalStore:{type:Object,required:!0},hideSiteSelector:{type:Boolean,default:!1},descriptionLearnMoreLink:{type:String,default:""}},data(){return{isLoading:!0,isValidated:!1,duplicationErrors:[],destinationSite:null,hasBeenSubmitted:!1}},watch:{isModalVisible(e){if(!e)return;let t;this.modalStore.adapter.beforeShowModal&&(t=this.modalStore.adapter.beforeShowModal()),t&&"undefined"!==typeof t||(t=new Promise(e=>e())),this.showModal(),t.then(()=>{this.isLoading=!1})},destinationSite(){this.isValidated=!1}},methods:{closeModal(){const e=this.$refs.root,t=Td(e);t.modal("close")},resetModal(){this.modalStore.hideModal(),this.destinationSite=null,this.isLoading=!0,this.isValidated=!1,this.duplicationErrors=[],this.hasBeenSubmitted=!1},showModal(){const e=this.$refs.root,t=Td(e);t.modal({dismissible:!0,onCloseEnd:()=>{this.resetModal()}}).modal("open")},submitRequest(){this.hasBeenSubmitted=!0,this.getValidationResultPromise().then(e=>{var t;if(!e.isValid&&e.errorMessages.length>0)return this.isValidated=!0,this.hasBeenSubmitted=!1,void(this.duplicationErrors=e.errorMessages);const o=this.modalStore.adapter.prepareApiParams(this.modalStore.getFormValues(null===(t=this.destinationSite)||void 0===t?void 0:t.id));this.modalStore.adapter.submitRequest(o).then(e=>{e&&e.success?(this.modalStore.adapter.onSuccess&&this.modalStore.adapter.onSuccess(e),this.closeModal()):this.setErrorMessages(e)}).catch(e=>{this.setErrorMessages(),this.modalStore.adapter.onFailure&&this.modalStore.adapter.onFailure(e),console.log("Unexpected server error during request.",e)}).finally(()=>{this.hasBeenSubmitted=!1})})},getValidationResultPromise(){var e;this.duplicationErrors=[];const t=this.modalStore.adapter.validateFormFields(this.modalStore.getFormValues(null===(e=this.destinationSite)||void 0===e?void 0:e.id));return"isValid"in t?new Promise(e=>e(t)):t},setErrorMessages(e=null){let t=(null===e||void 0===e?void 0:e.message)||"";t&&0!==t.length||(t=a("General_ErrorRequest","","")),this.duplicationErrors=[],this.duplicationErrors.push(t)}},mounted(){Object(D["watch"])(()=>this.modalStore.state.entityFormData,()=>{this.isValidated=!1},{deep:!0})},computed:{isModalVisible(){var e;return null!==(e=this.modalStore.state.isModalVisible)&&void 0!==e&&e},getModalTitle(){return a("CoreHome_CopyX",this.modalStore.getEntityTypeTranslation)},getNoteText(){const e=a("CoreHome_CopyModalNote","","",this.modalStore.getEntityTypeTranslation);return""+e},getDuplicateDescription(){return a("CoreHome_CopyXDescription",this.modalStore.getEntityTypeTranslation)},getLearnMoreLink(){if(!this.descriptionLearnMoreLink)return"";const e=ue(this.descriptionLearnMoreLink);return a("CoreHome_LearnMoreFullStop",e,"")},getIsValid(){return!this.isValidated||Array.isArray(this.duplicationErrors)&&0===this.duplicationErrors.length}}});Vd.render=Dd;var xd=Vd;const Nd=["title","aria-disabled"];function Bd(e,t,o,i,n,a){const r=Object(D["resolveDirective"])("tooltips");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{class:Object(D["normalizeClass"])([{"entity-duplicator-action":!0,"table-action":!0,"icon-content-copy":!0,"is-disabled":!e.isActionEnabled},e.extraClasses]),title:e.getActionTooltip,"aria-disabled":!e.isActionEnabled,onClick:t[0]||(t[0]=t=>!e.isActionEnabled||e.handleClick())},null,10,Nd)),[[r],[D["vShow"],e.isActionVisible]])}var Id=Object(D["defineComponent"])({props:{actionFormData:{type:Object,required:!0},modalStore:{type:Object,required:!0},isActionVisible:{type:Boolean,required:!0},isActionEnabled:{type:Boolean,default:!1},tooltipTextOverride:{type:String,default:""},tooltipTextOverrideDisabled:{type:String,default:""},extraClasses:{type:[String,Array,Object],default:""}},directives:{Tooltips:rt},methods:{handleClick(){this.modalStore.showModal(this.actionFormData)}},computed:{getActionTooltip(){return this.isActionEnabled&&this.tooltipTextOverride.length?r(this.tooltipTextOverride):!this.isActionEnabled&&this.tooltipTextOverrideDisabled.length?r(this.tooltipTextOverrideDisabled):a("CoreHome_CopyX",this.modalStore.getEntityTypeTranslation)}}});Id.render=Bd;var Md=Id;function Fd(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */const _l={ref:"root"};function Hl(e,t,o,i,n,a){return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",_l,[Object(D["renderSlot"])(e.$slots,"default",{formData:e.formData,submitApiMethod:e.submitApiMethod,sendJsonPayload:e.sendJsonPayload,noErrorNotification:e.noErrorNotification,noSuccessNotification:e.noSuccessNotification,submitForm:e.submitForm,isSubmitting:e.isSubmitting,successfulPostResponse:e.successfulPostResponse,errorPostResponse:e.errorPostResponse})],512)}const{$:$l}=window;var Ul=Object(D["defineComponent"])({props:{formData:{type:Object,required:!0},submitApiMethod:{type:String,required:!0},sendJsonPayload:Boolean,noErrorNotification:Boolean,noSuccessNotification:Boolean},data(){return{isSubmitting:!1,successfulPostResponse:null,errorPostResponse:null}},emits:["update:modelValue"],mounted(){$l(this.$refs.root).on("click","input[type=submit]",()=>{this.submitForm()})},methods:{submitForm(){this.successfulPostResponse=null,this.errorPostResponse=null;let e=this.formData;this.sendJsonPayload&&(e={data:JSON.stringify(this.formData)}),this.isSubmitting=!0,te.post({module:"API",method:this.submitApiMethod},e,{createErrorNotification:!this.noErrorNotification}).then(e=>{if(this.successfulPostResponse=e,!this.noSuccessNotification){const e=Li.show({message:a("General_YourChangesHaveBeenSaved"),context:"success",type:"toast",id:"ajaxHelper"});Li.scrollToNotification(e)}}).catch(e=>{this.errorPostResponse=e.message}).finally(()=>{this.isSubmitting=!1})}}});Ul.render=Hl;var ql=Ul;function Wl(e,t,o,i,n,a){return Object(D["renderSlot"])(e.$slots,"default")}var zl=Object(D["defineComponent"])({});zl.render=Wl;var Gl=zl;const Kl={key:0},Yl=["data-target","title"],Ql=Object(D["createElementVNode"])("span",{class:"icon-configure"},null,-1),Jl=[Ql],Xl=["data-target"],Zl=["title"],ec=["title","src"],tc=["id"],oc=["data-footer-icon-id"],ic=["title"],nc=["title","src"],ac={key:2},rc=Object(D["createElementVNode"])("li",{class:"divider"},null,-1),sc=Object(D["createElementVNode"])("li",{class:"divider"},null,-1),lc=["title"],cc=Object(D["createElementVNode"])("span",{class:"icon-export"},null,-1),dc=[cc],uc=["title"],pc=Object(D["createElementVNode"])("span",{class:"icon-image"},null,-1),mc=[pc],hc=["title"],gc=Object(D["createElementVNode"])("span",{class:"icon-annotation"},null,-1),bc=[gc],fc=["title"],vc=Object(D["createElementVNode"])("span",{class:"icon-search",draggable:"false"},null,-1),Oc=["title"],yc=["id","title"],jc=["title"],wc=["title","src"],Sc=["id"],Cc={key:0},kc=["innerHTML"],Dc={key:1},Ec=["innerHTML"],Pc={key:2},Tc=["innerHTML"],Vc={key:3},xc=["innerHTML"],Nc={key:4},Bc=["innerHTML"],Ic={key:5},Mc=["innerHTML"],Fc=["title","data-target"],Lc=Object(D["createElementVNode"])("span",{class:"icon-calendar"},null,-1),Rc={class:"periodName"},Ac=["id"],_c=["data-period"];function Hc(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Passthrough"),s=Object(D["resolveDirective"])("dropdown-button"),l=Object(D["resolveDirective"])("report-export");return e.showFooter&&e.showFooterIcons?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Kl,[e.hasConfigItems&&(e.isAnyConfigureIconHighlighted||e.isTableView)?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,class:Object(D["normalizeClass"])(["dropdown-button dropdownConfigureIcon dataTableAction",{highlighted:e.isAnyConfigureIconHighlighted}]),href:"",onClick:t[0]||(t[0]=Object(D["withModifiers"])(()=>{},["prevent"])),"data-target":"dropdownConfigure"+e.randomIdForDropdown,title:e.translate("CoreHome_ReportConfigure"),style:{"margin-right":"3.5px"}},Jl,10,Yl)),[[s]]):Object(D["createCommentVNode"])("",!0),e.hasFooterIconsToShow?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,class:"dropdown-button dataTableAction activateVisualizationSelection",href:"","data-target":"dropdownVisualizations"+e.randomIdForDropdown,style:{"margin-right":"3.5px"},onClick:t[1]||(t[1]=Object(D["withModifiers"])(()=>{},["prevent"]))},[/^icon-/.test(e.activeFooterIcon||"")?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,title:e.translate("CoreHome_ChangeVisualization"),class:Object(D["normalizeClass"])(e.activeFooterIcon)},null,10,Zl)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("img",{key:1,title:e.translate("CoreHome_ChangeVisualization"),width:"16",height:"16",src:e.activeFooterIcon},null,8,ec))],8,Xl)),[[s]]):Object(D["createCommentVNode"])("",!0),e.showFooterIcons?(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",{key:2,id:"dropdownVisualizations"+e.randomIdForDropdown,class:"dropdown-content dataTableFooterIcons"},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.footerIcons,(t,o)=>(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:o},{default:Object(D["withCtx"])(()=>[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(t.buttons.filter(e=>!!e.icon),o=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:o.id},[Object(D["createElementVNode"])("a",{class:Object(D["normalizeClass"])(`${t.class} tableIcon\n ${-1!==e.activeFooterIconIds.indexOf(o.id)?"activeIcon":""}`),"data-footer-icon-id":o.id},[/^icon-/.test(o.icon||"")?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,title:o.title,class:Object(D["normalizeClass"])(o.icon),style:{"margin-right":"5.5px"}},null,10,ic)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("img",{key:1,width:"16",height:"16",title:o.title,src:o.icon,style:{"margin-right":"5.5px"}},null,8,nc)),o.title?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",ac,Object(D["toDisplayString"])(o.title),1)):Object(D["createCommentVNode"])("",!0)],10,oc)]))),128)),rc]),_:2},1024))),128)),sc],8,tc)):Object(D["createCommentVNode"])("",!0),e.showExport?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:3,class:"dataTableAction activateExportSelection",title:e.translate("General_ExportThisReport"),href:"",style:{"margin-right":"3.5px"},onClick:t[2]||(t[2]=Object(D["withModifiers"])(()=>{},["prevent"]))},dc,8,lc)),[[l,{reportTitle:e.reportTitle,requestParams:e.requestParams,apiMethod:e.apiMethodToRequestDataTable,reportFormats:e.reportFormats,maxFilterLimit:e.maxFilterLimit}]]):Object(D["createCommentVNode"])("",!0),e.showExportAsImageIcon?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:4,class:"dataTableAction tableIcon",href:"",id:"dataTableFooterExportAsImageIcon",onClick:t[3]||(t[3]=Object(D["withModifiers"])(t=>e.showExportImage(t),["prevent"])),title:e.translate("General_ExportAsImage"),style:{"margin-right":"3.5px"}},mc,8,uc)):Object(D["createCommentVNode"])("",!0),e.showAnnotations?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:5,class:"dataTableAction annotationView",href:"",title:e.translate("Annotations_Annotations"),onClick:t[4]||(t[4]=Object(D["withModifiers"])(()=>{},["prevent"])),style:{"margin-right":"3.5px"}},bc,8,hc)):Object(D["createCommentVNode"])("",!0),e.showSearch?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:6,class:"dropdown-button dataTableAction searchAction",href:"",title:e.translate("General_Search"),style:{"margin-right":"3.5px"},draggable:"false",onClick:t[5]||(t[5]=Object(D["withModifiers"])(()=>{},["prevent"]))},[vc,Object(D["createElementVNode"])("span",{class:"icon-close",draggable:"false",title:e.translate("CoreHome_CloseSearch")},null,8,Oc),Object(D["createElementVNode"])("input",{id:`widgetSearch_${e.reportId}_${e.placement}`,title:e.translate("CoreHome_DataTableHowToSearch"),type:"text",class:"dataTableSearchInput"},null,8,yc)],8,fc)):Object(D["createCommentVNode"])("",!0),(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.dataTableActions,e=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:e.id,class:Object(D["normalizeClass"])("dataTableAction "+e.id),href:"",onClick:t[6]||(t[6]=Object(D["withModifiers"])(()=>{},["prevent"])),title:e.title,style:{"margin-right":"3.5px"}},[/^icon-/.test(e.icon||"")?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,class:Object(D["normalizeClass"])(e.icon)},null,2)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("img",{key:1,width:"16",height:"16",title:e.title,src:e.icon},null,8,wc))],10,jc))),128)),Object(D["createElementVNode"])("ul",{id:"dropdownConfigure"+e.randomIdForDropdown,class:"dropdown-content tableConfiguration"},[e.showFlattenTable?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",Cc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableFlatten",innerHTML:e.$sanitize(e.flattenItemText)},null,8,kc)])):Object(D["createCommentVNode"])("",!0),e.showDimensionsConfigItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",Dc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableShowDimensions",innerHTML:e.$sanitize(e.showDimensionsText)},null,8,Ec)])):Object(D["createCommentVNode"])("",!0),e.showFlatConfigItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",Pc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableIncludeAggregateRows",innerHTML:e.$sanitize(e.includeAggregateRowsText)},null,8,Tc)])):Object(D["createCommentVNode"])("",!0),e.showTotalsConfigItem?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",Vc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableShowTotalsRow",innerHTML:e.$sanitize(e.keepTotalsRowText)},null,8,xc)])):Object(D["createCommentVNode"])("",!0),e.showExcludeLowPopulation?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",Nc,[Object(D["createElementVNode"])("div",{class:"configItem dataTableExcludeLowPopulation",innerHTML:e.$sanitize(e.excludeLowPopText)},null,8,Bc)])):Object(D["createCommentVNode"])("",!0),e.showPivotBySubtable?(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",Ic,[Object(D["createElementVNode"])("div",{class:"configItem dataTablePivotBySubtable",innerHTML:e.$sanitize(e.pivotByText)},null,8,Mc)])):Object(D["createCommentVNode"])("",!0)],8,Sc),e.showPeriods?Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:7,class:"dropdown-button dataTableAction activatePeriodsSelection",href:"",onClick:t[7]||(t[7]=Object(D["withModifiers"])(()=>{},["prevent"])),title:e.translate("CoreHome_ChangePeriod"),"data-target":"dropdownPeriods"+e.randomIdForDropdown},[Object(D["createElementVNode"])("div",null,[Lc,Object(D["createElementVNode"])("span",Rc,Object(D["toDisplayString"])(e.translations[e.clientSideParameters.period]||e.clientSideParameters.period),1)])],8,Fc)),[[s]]):Object(D["createCommentVNode"])("",!0),e.showPeriods?(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",{key:8,id:"dropdownPeriods"+e.randomIdForDropdown,class:"dropdown-content dataTablePeriods"},[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.selectablePeriods,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:t},[Object(D["createElementVNode"])("a",{"data-period":t,class:Object(D["normalizeClass"])("tableIcon "+(e.clientSideParameters.period===t?"activeIcon":""))},[Object(D["createElementVNode"])("span",null,Object(D["toDisplayString"])(e.translations[t]||t),1)],10,_c)]))),128))],8,Ac)):Object(D["createCommentVNode"])("",!0)])):Object(D["createCommentVNode"])("",!0)}const{$:$c}=window;function Uc(e,t,o){if(/(%(.\$)?s+)/g.test(a(e))){const i=[' '];o&&i.push(o);let n=a(e,...i);return t&&(n+=` (${a("CoreHome_Default")})`),n+="",n}return a(e)}function qc(e,t,o){return e?Uc(t,!0):Uc(o)}function Wc(e){return!!e&&"0"!==e}var zc=Object(D["defineComponent"])({props:{showPeriods:Boolean,showFooter:Boolean,showFooterIcons:Boolean,showSearch:Boolean,showFlattenTable:Boolean,footerIcons:{type:Array,required:!0},viewDataTable:{type:String,required:!0},reportTitle:String,requestParams:{type:Object,required:!0},apiMethodToRequestDataTable:{type:String,required:!0},maxFilterLimit:{type:Number,required:!0},showExport:Boolean,showExportAsImageIcon:Boolean,showAnnotations:Boolean,reportId:{type:String,required:!0},dataTableActions:{type:Array,required:!0},clientSideParameters:{type:Object,required:!0},hasMultipleDimensions:Boolean,isDataTableEmpty:Boolean,showTotalsRow:Boolean,showExcludeLowPopulation:Boolean,showPivotBySubtable:Boolean,selectablePeriods:Array,translations:{type:Object,required:!0},pivotDimensionName:String,placement:{type:String,default:"footer"}},components:{Passthrough:Gl},directives:{DropdownButton:Tt,ReportExport:El},methods:{showExportImage(e){$c(e.target).closest(".dataTable").find("div.jqplot-target").trigger("piwikExportAsImage")}},computed:{randomIdForDropdown(){return Math.floor(999999*Math.random())},allFooterIcons(){return this.footerIcons.reduce((e,t)=>(e.push(...t.buttons),e),[])},activeFooterIcons(){const e=this.clientSideParameters,t=[this.viewDataTable];return 0===e.abandonedCarts||"0"===e.abandonedCarts?t.push("ecommerceOrder"):1!==e.abandonedCarts&&"1"!==e.abandonedCarts||t.push("ecommerceAbandonedCart"),t.map(e=>this.allFooterIcons.find(t=>t.id===e)).filter(e=>!!e)},activeFooterIcon(){var e;return null===(e=this.activeFooterIcons[0])||void 0===e?void 0:e.icon},activeFooterIconIds(){return this.activeFooterIcons.map(e=>e.id)},numIcons(){return this.allFooterIcons.length},hasFooterIconsToShow(){return!!this.activeFooterIcons.length&&this.numIcons>1},reportFormats(){const e={TSV:"TSV (Excel)",HTML:"HTML",JSON:"JSON",XML:"XML",CSV:"CSV",RSS:"RSS"};return e},showDimensionsConfigItem(){return this.showFlattenTable&&""+this.clientSideParameters.flat==="1"&&this.hasMultipleDimensions},showFlatConfigItem(){return this.showFlattenTable&&""+this.clientSideParameters.flat==="1"},showTotalsConfigItem(){return!this.isDataTableEmpty&&this.showTotalsRow},hasConfigItems(){return this.showFlattenTable||this.showDimensionsConfigItem||this.showFlatConfigItem||this.showTotalsConfigItem||this.showExcludeLowPopulation||this.showPivotBySubtable},flattenItemText(){const e=this.clientSideParameters;return qc(Wc(e.flat),"CoreHome_UnFlattenDataTable","CoreHome_FlattenDataTable")},keepTotalsRowText(){const e=this.clientSideParameters;return qc(Wc(e.keep_totals_row),"CoreHome_RemoveTotalsRowDataTable","CoreHome_AddTotalsRowDataTable")},includeAggregateRowsText(){const e=this.clientSideParameters;return qc(Wc(e.include_aggregate_rows),"CoreHome_DataTableExcludeAggregateRows","CoreHome_DataTableIncludeAggregateRows")},showDimensionsText(){const e=this.clientSideParameters;return qc(Wc(e.show_dimensions),"CoreHome_DataTableCombineDimensions","CoreHome_DataTableShowDimensions")},pivotByText(){const e=this.clientSideParameters;return Wc(e.pivotBy)?Uc("CoreHome_UndoPivotBySubtable",!0):Uc("CoreHome_PivotBySubtable",!1,this.pivotDimensionName)},excludeLowPopText(){const e=this.clientSideParameters;return qc(Wc(e.enable_filter_excludelowpop),"CoreHome_IncludeRowsWithLowPopulation","CoreHome_ExcludeRowsWithLowPopulation")},isAnyConfigureIconHighlighted(){const e=this.clientSideParameters;return Wc(e.flat)||Wc(e.keep_totals_row)||Wc(e.include_aggregate_rows)||Wc(e.show_dimensions)||Wc(e.pivotBy)||Wc(e.enable_filter_excludelowpop)},isTableView(){return"table"===this.viewDataTable||"tableAllColumns"===this.viewDataTable||"tableGoals"===this.viewDataTable}}});zc.render=Hc;var Gc=zc;const Kc={key:0,class:"title",style:{cursor:"pointer"},ref:"expander"},Yc=Object(D["createElementVNode"])("span",{class:"icon-warning"},null,-1),Qc={key:1,class:"title",href:"?module=CoreUpdater&action=newVersionAvailable",style:{cursor:"pointer"},ref:"expander"},Jc=Object(D["createElementVNode"])("span",{class:"icon-warning"},null,-1),Xc=["innerHTML"],Zc=["href"],ed={id:"updateCheckLinkContainer"},td={class:"dropdown positionInViewport"},od=["innerHTML"],id=["innerHTML"];function nd(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("Passthrough"),s=Object(D["resolveDirective"])("expand-on-hover");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{id:"header_message",class:Object(D["normalizeClass"])(["piwikSelector",{header_info:!e.latestVersionAvailable||e.lastUpdateCheckFailed,update_available:e.latestVersionAvailable}])},[e.latestVersionAvailable?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:0},{default:Object(D["withCtx"])(()=>[e.isMultiServerEnvironment?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",Kc,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_NewUpdatePiwikX",e.latestVersionAvailable))+" ",1),Yc],512)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",Qc,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translate("General_NewUpdatePiwikX",e.latestVersionAvailable))+" ",1),Jc],512))]),_:1})):e.isSuperUser&&(e.isAdminArea||e.lastUpdateCheckFailed)?(Object(D["openBlock"])(),Object(D["createBlock"])(r,{key:1},{default:Object(D["withCtx"])(()=>[e.isInternetEnabled?(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:0,class:"title",innerHTML:e.$sanitize(e.updateCheck)},null,8,Xc)):(Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{key:1,class:"title",href:e.externalRawLink("https://matomo.org/changelog/"),target:"_blank",rel:"noreferrer noopener"},[Object(D["createElementVNode"])("span",ed,Object(D["toDisplayString"])(e.translate("CoreHome_SeeAvailableVersions")),1)],8,Zc))]),_:1})):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("div",td,[e.latestVersionAvailable&&e.isSuperUser?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,innerHTML:e.$sanitize(e.updateNowText)},null,8,od)):e.latestVersionAvailable&&e.hasSomeViewAccess&&!e.isAnonymous?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:1,innerHTML:e.$sanitize(e.updateAvailableText)},null,8,id)):Object(D["createCommentVNode"])("",!0),Object(D["createTextVNode"])(" "+Object(D["toDisplayString"])(e.translate("General_YouAreCurrentlyUsing",e.piwikVersion)),1)])],2)),[[s,{expander:"expander"}]])}var ad=Object(D["defineComponent"])({props:{isMultiServerEnvironment:Boolean,lastUpdateCheckFailed:Boolean,latestVersionAvailable:String,isSuperUser:Boolean,isAdminArea:Boolean,isInternetEnabled:Boolean,updateCheck:String,isAnonymous:Boolean,hasSomeViewAccess:Boolean,contactEmail:String,piwikVersion:String},components:{Passthrough:Gl},directives:{ExpandOnHover:kt},computed:{updateNowText(){let e="";if(this.isMultiServerEnvironment){const t=de(`https://builds.matomo.org/matomo-${this.latestVersionAvailable}.zip`);e=a("CoreHome_OneClickUpdateNotPossibleAsMultiServerEnvironment",`builds.matomo.org`)}else e=a("General_PiwikXIsAvailablePleaseUpdateNow",this.latestVersionAvailable||"",' ',"",ue("https://matomo.org/changelog/"),"");return e+" "},updateAvailableText(){const e=a("General_NewUpdatePiwikX",this.latestVersionAvailable||""),t=ue("https://matomo.org/")+"Matomo",o=ue("https://matomo.org/changelog/"),i=a("General_PiwikXIsAvailablePleaseNotifyPiwikAdmin",`${t} ${o}${this.latestVersionAvailable}`,``,"");return i+" "}}});ad.render=nd;var rd=ad;const sd={id:"mobile-left-menu",class:"sidenav hide-on-large-only"},ld={class:"collapsible collapsible-accordion"},cd={class:"collapsible-header"},dd={class:"collapsible-body"},ud=["title","href"];function pd(e,t,o,i,n,a){const r=Object(D["resolveDirective"])("side-nav");return Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",sd,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.menuWithSubmenuItems,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{class:"no-padding",key:o},[Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",ld,[Object(D["createElementVNode"])("li",null,[Object(D["createElementVNode"])("a",cd,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.translateOrDefault(o)),1),Object(D["createElementVNode"])("i",{class:Object(D["normalizeClass"])(t._icon||"icon-chevron-down")},null,2)]),Object(D["createElementVNode"])("div",dd,[Object(D["createElementVNode"])("ul",null,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(Object.entries(t).filter(([e])=>"_"!==e[0]),([t,o])=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:t},[Object(D["createElementVNode"])("a",{title:o._tooltip?e.translateIfNecessary(o._tooltip):"",target:"_self",href:e.getMenuUrl(o._url)},Object(D["toDisplayString"])(e.translateIfNecessary(t)),9,ud)]))),128))])])])])),[[r,{activator:e.activateLeftMenu}]])]))),128))])}const{$:md}=window;var hd=Object(D["defineComponent"])({props:{menu:{type:Object,required:!0}},directives:{SideNav:Rt},methods:{getMenuUrl(e){return"?"+U.stringify(Object.assign(Object.assign({},U.urlParsed.value),e))},translateIfNecessary(e){return e.includes("_")?a(e):e}},computed:{menuWithSubmenuItems(){const e=this.menu||{};return Object.fromEntries(Object.entries(e).filter(([,e])=>{const t=Object.entries(e).filter(([e])=>"_"!==e[0]);return Object.keys(t).length}))},activateLeftMenu(){return md("nav .activateLeftMenu")[0]}}});hd.render=pd;var gd=hd;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */class Ld{constructor(e){Fd(this,"module",void 0),Fd(this,"method",void 0),Fd(this,"format",void 0),Fd(this,"requiredFields",void 0),this.module=e.module||"API",this.method=e.method,this.format=e.format||"json",this.requiredFields=e.requiredFields||["idSite","idDestinationSites"]}async validateFormFields(e){const t=[];return this.requiredFields.forEach(o=>{o in e&&e[o]||t.push(a("General_Required",o))}),new Promise(e=>e({errorMessages:t,isValid:0===t.length}))}prepareApiParams(e){return Object.assign({idSite:M.idSite||U.parsed.value.idSite,idDestinationSites:[e.idDestinationSite]},e)}async submitRequest(e){this.module=e.module||this.module,this.method=e.method||this.method,this.format=e.format||this.format;const t=e;if(!this.method||this.method.length<1)throw new Error("The POST method cannot be empty!");const o=new te;return o.useCallbackInCaseOfError(),o.setErrorCallback(null),o.removeDefaultParameter("date"),o.removeDefaultParameter("period"),o.removeDefaultParameter("segment"),o.addParams({module:this.module,method:this.method,format:this.format},"GET"),o.addParams(t,"POST"),o.setFormat(this.format),o.send()}onSuccess(e){let t=new Promise(e=>e());this.onSuccessCallback&&(t=this.onSuccessCallback(e)),t.then(()=>{setTimeout(()=>{const t=Ti.show({message:e.message,context:e.success?"success":"error",type:"toast",id:"entityDuplicationResult"});Ti.scrollToNotification(t)})})}}function Rd(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+ */const{$:bd}=window;function fd(e){bd.scrollTo(e,20)}function vd(e){e&&e.preventDefault()}function Od(e,t){var o,i;if(!e)return;if(-1!==e.indexOf("&"))return;let n=null;try{n=bd("#"+e)}catch(a){return}if(null!==(o=n)&&void 0!==o&&o.length)return fd(n),void vd(t);n=bd(`a[name=${e}]`),null!==(i=n)&&void 0!==i&&i.length&&(fd(n),vd(t))}function yd(e,t){return(!e||!e.origin||-1!==t.indexOf(e.origin))&&((!e||!e.pathname||-1!==t.indexOf(e.pathname))&&(!e||!e.search||-1!==t.indexOf(e.search)))}function jd(){if("#/"===window.location.hash.slice(0,2)){const e=window.location.hash.slice(2);Od(e,null)}}function wd(){Object(D["watch"])(()=>U.url.value,(e,t)=>{if(!e)return;const o=e.href.indexOf("#/");if(-1===o)return;if(t&&!yd(t,e.href))return;const i=e.href.slice(o+2);Od(i,null)})}function Sd(){Object(D["nextTick"])(jd)}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */class Ad{constructor(e,t,o){Rd(this,"state",Object(D["reactive"])({isModalVisible:!1,commonFormData:{},entityFormData:{},entityTypeTranslation:""})),Rd(this,"adapter",void 0),this.state.entityTypeTranslation=e,this.adapter="validateFormFields"in t?t:new Ld(t),this.state.commonFormData=null!==o&&void 0!==o?o:{}}static buildStoreInstance(e,t,o){return Object(D["reactive"])(new Ad(e,t,o))}showModal(e){this.resetFormData(),Object.entries(null!==e&&void 0!==e?e:{}).forEach(([e,t])=>{this.state.entityFormData[e]=t}),this.state.isModalVisible=!0}hideModal(){this.state.isModalVisible=!1,this.resetFormData()}resetFormData(){Object.keys(this.state.entityFormData).forEach(e=>{delete this.state.entityFormData[e]})}getFormValues(e){const t=Array.isArray(e)?e:[];return e&&!Array.isArray(e)&&t.push(e),Object.assign(Object.assign({idSite:M.idSite||U.parsed.value.idSite,idDestinationSites:t},this.state.commonFormData),this.state.entityFormData)}get getEntityTypeTranslation(){let e="CoreHome_ReportLowercase";return this.state.entityTypeTranslation&&(e=this.state.entityTypeTranslation),r(e)}}
+ */function Cd(e){const t=[];if("INPUT"===e.tagName&&"password"===e.type)t.push(e);else{const o=e.querySelectorAll('input[type="password"]');o.forEach(e=>t.push(e))}return t}function kd(e,t){let o,i=e.value;const n=()=>{e.value="",e.dispatchEvent(new Event("input"))},a=()=>{o&&clearTimeout(o),o=setTimeout(n,1e3*t)},r=()=>a(),s=()=>a();e.addEventListener("input",r),e.addEventListener("change",s),e.dataset.autoClearEnabled="true";const l=setInterval(()=>{e.value!==i&&(i=e.value,a())},300);e.onUmounted={cleanup(){clearTimeout(o),clearInterval(l),e.removeEventListener("input",r),e.removeEventListener("change",s),delete e.dataset.autoClearEnabled}}}wd(),bd(jd);var Dd={mounted(e,t){const o=t.value&&t.value.delay||600,i=Cd(e);i.forEach(e=>kd(e,o))},unmounted(e){const t=Cd(e);t.forEach(e=>{e.onUmounted&&"function"===typeof e.onUmounted.cleanup&&(e.onUmounted.cleanup(),delete e.onUmounted)})}};const Ed={key:0,class:"password-strength row"};function Pd(e,t,o,i,n,a){return e.rules.length?(Object(D["openBlock"])(),Object(D["createElementBlock"])("ul",Ed,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.rules,t=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:t.ruleText,class:Object(D["normalizeClass"])("col s12 xl6 rule rule-"+e.ruleStatus(t))},[Object(D["createElementVNode"])("span",{class:Object(D["normalizeClass"])({icon:!0,"icon-ok":"valid"===e.ruleStatus(t),"icon-close":"invalid"===e.ruleStatus(t),"icon-circle":"undefined"===e.ruleStatus(t)})},null,2),Object(D["createTextVNode"])(" "+Object(D["toDisplayString"])(t.ruleText),1)],2))),128))])):Object(D["createCommentVNode"])("",!0)}var Td=Object(D["defineComponent"])({props:{validationRules:{type:Array,required:!0},password:{type:String,default:""},externalInputSelector:{type:String,default:""}},data(){return{pwd:"",rules:[]}},emits:["check:isValid"],watch:{pwdValue:{immediate:!0,handler(e){const t=[];this.rules.forEach(o=>{if(e.length||"undefined"===typeof o.passed)try{const i=new RegExp(o.validationRegex.replace(/^\/|\/$/g,""));i.test(e)?(o.passed=!0,t.push(!0)):o.passed=!1}catch(i){console.log("Invalid password validation pattern:",i)}else delete o.passed}),this.rules.length>0&&t.length===this.rules.length&&this.$emit("check:isValid",!0)}}},computed:{pwdValue(){var e;return null!==(e=this.externalInputSelector)&&void 0!==e&&e.length?this.pwd:this.password}},mounted(){var e;if(this.rules=this.validationRules.length?this.validationRules.map(e=>Object.assign({},e)):[],null!==(e=this.externalInputSelector)&&void 0!==e&&e.length){const e=document.querySelector(this.externalInputSelector);e&&(e.addEventListener("input",this.handleExternalInput),this.pwd=e.value)}},unmounted(){var e;if(null!==(e=this.externalInputSelector)&&void 0!==e&&e.length){const e=document.querySelector(this.externalInputSelector);e&&e.removeEventListener("input",this.handleExternalInput)}},methods:{ruleStatus(e){return"undefined"===typeof e.passed?"undefined":e.passed?"valid":"invalid"},handleExternalInput(e){const t=e.target;this.pwd=t.value}}});Td.render=Pd;var Vd=Td;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */const xd={class:"main-duplicator-modal-content"},Nd={class:"modal-header"},Bd=Object(D["createElementVNode"])("span",{class:"btn-close modal-close"},[Object(D["createElementVNode"])("i",{class:"icon-close"})],-1),Id={key:0,class:"modal-sub-header"},Md={class:"loading-message"},Fd={key:0,class:"modal-sub-header"},Ld=["innerHTML"],Rd={class:"modal-content"},Ad={class:"modal-inputs"},_d={class:"modal-sub-footer"},Hd=["innerHTML"],$d=["innerHTML"],Ud={class:"modal-footer"},qd=["disabled"];function Wd(e,t,o,i,n,a){const r=Object(D["resolveComponent"])("MatomoLoader"),s=Object(D["resolveComponent"])("Field"),l=Object(D["resolveDirective"])("form");return Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{class:Object(D["normalizeClass"])({modal:!0,"entity-duplicator-modal":!0,"slot-configured":e.$slots.default}),ref:"root"},[Object(D["withDirectives"])(Object(D["createElementVNode"])("div",xd,[Object(D["createElementVNode"])("div",Nd,[Bd,Object(D["createElementVNode"])("h2",null,Object(D["toDisplayString"])(e.getModalTitle),1)]),e.isLoading?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Id,[Object(D["createVNode"])(r),Object(D["createElementVNode"])("span",Md,Object(D["toDisplayString"])(e.translate("General_Loading")),1)])):(Object(D["openBlock"])(),Object(D["createElementBlock"])(D["Fragment"],{key:1},[e.hideSiteSelector?Object(D["createCommentVNode"])("",!0):(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Fd,[Object(D["createElementVNode"])("p",null,[Object(D["createTextVNode"])(Object(D["toDisplayString"])(e.getDuplicateDescription)+" ",1),e.descriptionLearnMoreLink?(Object(D["openBlock"])(),Object(D["createElementBlock"])("span",{key:0,innerHTML:e.$sanitize(e.getLearnMoreLink)},null,8,Ld)):Object(D["createCommentVNode"])("",!0)]),Object(D["createVNode"])(s,{uicontrol:"site",name:"siteSelector",title:e.translate("CoreHome_ChooseWebsite"),modelValue:e.destinationSite,"onUpdate:modelValue":t[0]||(t[0]=t=>e.destinationSite=t),"ui-control-attributes":{onlySitesWithAtLeastWriteAccess:!0,siteTypesToExclude:["rollup"]}},null,8,["title","modelValue"])])),Object(D["createElementVNode"])("div",Rd,[Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("div",Ad,[Object(D["renderSlot"])(e.$slots,"default")])),[[l]])]),Object(D["createElementVNode"])("div",_d,[e.duplicationErrors.length>0?(Object(D["openBlock"])(),Object(D["createElementBlock"])("div",{key:0,class:Object(D["normalizeClass"])({alert:!0,"alert-danger":!0,"error-list":e.duplicationErrors.length>1})},[Object(D["createElementVNode"])("ul",null,[(Object(D["openBlock"])(!0),Object(D["createElementBlock"])(D["Fragment"],null,Object(D["renderList"])(e.duplicationErrors,(t,o)=>(Object(D["openBlock"])(),Object(D["createElementBlock"])("li",{key:o,innerHTML:e.$sanitize(t)},null,8,Hd))),128))])],2)):Object(D["createCommentVNode"])("",!0),Object(D["createElementVNode"])("p",{class:"note-text",innerHTML:e.$sanitize(e.getNoteText)},null,8,$d)]),Object(D["createElementVNode"])("div",Ud,[Object(D["withDirectives"])(Object(D["createVNode"])(r,null,null,512),[[D["vShow"],e.hasBeenSubmitted]]),Object(D["createElementVNode"])("button",{class:"btn",disabled:!e.getIsValid||e.hasBeenSubmitted,onClick:t[1]||(t[1]=t=>e.submitRequest())},Object(D["toDisplayString"])(e.translate("General_Copy")),9,qd)])],64))],512),[[D["vShow"],e.isModalVisible]])],2)}const zd=Se("CorePluginsAdmin","Field"),Gd=Se("CorePluginsAdmin","Form"),{$:Kd}=window;var Yd=Object(D["defineComponent"])({directives:{Form:Gd},components:{Field:zd,MatomoLoader:$e},props:{modalStore:{type:Object,required:!0},hideSiteSelector:{type:Boolean,default:!1},descriptionLearnMoreLink:{type:String,default:""}},data(){return{isLoading:!0,isValidated:!1,duplicationErrors:[],destinationSite:null,hasBeenSubmitted:!1}},watch:{isModalVisible(e){if(!e)return;let t;this.modalStore.adapter.beforeShowModal&&(t=this.modalStore.adapter.beforeShowModal()),t&&"undefined"!==typeof t||(t=new Promise(e=>e())),this.showModal(),t.then(()=>{this.isLoading=!1})},destinationSite(){this.isValidated=!1}},methods:{closeModal(){const e=this.$refs.root,t=Kd(e);t.modal("close")},resetModal(){this.modalStore.hideModal(),this.destinationSite=null,this.isLoading=!0,this.isValidated=!1,this.duplicationErrors=[],this.hasBeenSubmitted=!1},showModal(){const e=this.$refs.root,t=Kd(e);t.modal({dismissible:!0,onCloseEnd:()=>{this.resetModal()}}).modal("open")},submitRequest(){this.hasBeenSubmitted=!0,this.getValidationResultPromise().then(e=>{var t;if(!e.isValid&&e.errorMessages.length>0)return this.isValidated=!0,this.hasBeenSubmitted=!1,void(this.duplicationErrors=e.errorMessages);const o=this.modalStore.adapter.prepareApiParams(this.modalStore.getFormValues(null===(t=this.destinationSite)||void 0===t?void 0:t.id));this.modalStore.adapter.submitRequest(o).then(e=>{e&&e.success?(this.modalStore.adapter.onSuccess&&this.modalStore.adapter.onSuccess(e),this.closeModal()):this.setErrorMessages(e)}).catch(e=>{this.setErrorMessages(),this.modalStore.adapter.onFailure&&this.modalStore.adapter.onFailure(e),console.log("Unexpected server error during request.",e)}).finally(()=>{this.hasBeenSubmitted=!1})})},getValidationResultPromise(){var e;this.duplicationErrors=[];const t=this.modalStore.adapter.validateFormFields(this.modalStore.getFormValues(null===(e=this.destinationSite)||void 0===e?void 0:e.id));return"isValid"in t?new Promise(e=>e(t)):t},setErrorMessages(e=null){let t=(null===e||void 0===e?void 0:e.message)||"";t&&0!==t.length||(t=a("General_ErrorRequest","","")),this.duplicationErrors=[],this.duplicationErrors.push(t)}},mounted(){Object(D["watch"])(()=>this.modalStore.state.entityFormData,()=>{this.isValidated=!1},{deep:!0})},computed:{isModalVisible(){var e;return null!==(e=this.modalStore.state.isModalVisible)&&void 0!==e&&e},getModalTitle(){return a("CoreHome_CopyX",this.modalStore.getEntityTypeTranslation)},getNoteText(){const e=a("CoreHome_CopyModalNote","","",this.modalStore.getEntityTypeTranslation);return""+e},getDuplicateDescription(){return a("CoreHome_CopyXDescription",this.modalStore.getEntityTypeTranslation)},getLearnMoreLink(){if(!this.descriptionLearnMoreLink)return"";const e=ue(this.descriptionLearnMoreLink);return a("CoreHome_LearnMoreFullStop",e,"")},getIsValid(){return!this.isValidated||Array.isArray(this.duplicationErrors)&&0===this.duplicationErrors.length}}});Yd.render=Wd;var Qd=Yd;const Jd=["title","aria-disabled"];function Xd(e,t,o,i,n,a){const r=Object(D["resolveDirective"])("tooltips");return Object(D["withDirectives"])((Object(D["openBlock"])(),Object(D["createElementBlock"])("a",{class:Object(D["normalizeClass"])([{"entity-duplicator-action":!0,"table-action":!0,"icon-content-copy":!0,"is-disabled":!e.isActionEnabled},e.extraClasses]),title:e.getActionTooltip,"aria-disabled":!e.isActionEnabled,onClick:t[0]||(t[0]=t=>!e.isActionEnabled||e.handleClick())},null,10,Jd)),[[r],[D["vShow"],e.isActionVisible]])}var Zd=Object(D["defineComponent"])({props:{actionFormData:{type:Object,required:!0},modalStore:{type:Object,required:!0},isActionVisible:{type:Boolean,required:!0},isActionEnabled:{type:Boolean,default:!1},tooltipTextOverride:{type:String,default:""},tooltipTextOverrideDisabled:{type:String,default:""},extraClasses:{type:[String,Array,Object],default:""}},directives:{Tooltips:rt},methods:{handleClick(){this.modalStore.showModal(this.actionFormData)}},computed:{getActionTooltip(){return this.isActionEnabled&&this.tooltipTextOverride.length?r(this.tooltipTextOverride):!this.isActionEnabled&&this.tooltipTextOverrideDisabled.length?r(this.tooltipTextOverrideDisabled):a("CoreHome_CopyX",this.modalStore.getEntityTypeTranslation)}}});Zd.render=Xd;var eu=Zd;function tu(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */class ou{constructor(e){tu(this,"module",void 0),tu(this,"method",void 0),tu(this,"format",void 0),tu(this,"requiredFields",void 0),this.module=e.module||"API",this.method=e.method,this.format=e.format||"json",this.requiredFields=e.requiredFields||["idSite","idDestinationSites"]}async validateFormFields(e){const t=[];return this.requiredFields.forEach(o=>{o in e&&e[o]||t.push(a("General_Required",o))}),new Promise(e=>e({errorMessages:t,isValid:0===t.length}))}prepareApiParams(e){return Object.assign({idSite:M.idSite||U.parsed.value.idSite,idDestinationSites:[e.idDestinationSite]},e)}async submitRequest(e){this.module=e.module||this.module,this.method=e.method||this.method,this.format=e.format||this.format;const t=e;if(!this.method||this.method.length<1)throw new Error("The POST method cannot be empty!");const o=new te;return o.useCallbackInCaseOfError(),o.setErrorCallback(null),o.removeDefaultParameter("date"),o.removeDefaultParameter("period"),o.removeDefaultParameter("segment"),o.addParams({module:this.module,method:this.method,format:this.format},"GET"),o.addParams(t,"POST"),o.setFormat(this.format),o.send()}onSuccess(e){let t=new Promise(e=>e());this.onSuccessCallback&&(t=this.onSuccessCallback(e)),t.then(()=>{setTimeout(()=>{const t=Li.show({message:e.message,context:e.success?"success":"error",type:"toast",id:"entityDuplicationResult"});Li.scrollToNotification(t)})})}}function iu(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */class nu{constructor(e,t,o){iu(this,"state",Object(D["reactive"])({isModalVisible:!1,commonFormData:{},entityFormData:{},entityTypeTranslation:""})),iu(this,"adapter",void 0),this.state.entityTypeTranslation=e,this.adapter="validateFormFields"in t?t:new ou(t),this.state.commonFormData=null!==o&&void 0!==o?o:{}}static buildStoreInstance(e,t,o){return Object(D["reactive"])(new nu(e,t,o))}showModal(e){this.resetFormData(),Object.entries(null!==e&&void 0!==e?e:{}).forEach(([e,t])=>{this.state.entityFormData[e]=t}),this.state.isModalVisible=!0}hideModal(){this.state.isModalVisible=!1,this.resetFormData()}resetFormData(){Object.keys(this.state.entityFormData).forEach(e=>{delete this.state.entityFormData[e]})}getFormValues(e){const t=Array.isArray(e)?e:[];return e&&!Array.isArray(e)&&t.push(e),Object.assign(Object.assign({idSite:M.idSite||U.parsed.value.idSite,idDestinationSites:t},this.state.commonFormData),this.state.entityFormData)}get getEntityTypeTranslation(){let e="CoreHome_ReportLowercase";return this.state.entityTypeTranslation&&(e=this.state.entityTypeTranslation),r(e)}}
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreHome/vue/src/DatePicker/DatePicker.vue b/plugins/CoreHome/vue/src/DatePicker/DatePicker.vue
index fb51c458c3f..f65edd4e5bc 100644
--- a/plugins/CoreHome/vue/src/DatePicker/DatePicker.vue
+++ b/plugins/CoreHome/vue/src/DatePicker/DatePicker.vue
@@ -27,6 +27,8 @@ export default defineComponent({
props: {
selectedDateStart: Date,
selectedDateEnd: Date,
+ persistentHighlightedDateStart: Date,
+ persistentHighlightedDateEnd: Date,
highlightedDateStart: Date,
highlightedDateEnd: Date,
viewDate: [String, Date],
@@ -40,12 +42,27 @@ export default defineComponent({
function setDateCellColor($dateCell: JQuery, dateValue: Date): void {
const $dateCellLink = $dateCell.children('a');
-
- if (props.selectedDateStart
- && props.selectedDateEnd
- && dateValue >= props.selectedDateStart
- && dateValue <= props.selectedDateEnd
- ) {
+ const { selectedDateStart, selectedDateEnd } = props;
+ const dateValueTime = dateValue.getTime();
+ const isPersistentlyHighlightedDate = !!(
+ props.persistentHighlightedDateStart
+ && props.persistentHighlightedDateEnd
+ && dateValue >= props.persistentHighlightedDateStart
+ && dateValue <= props.persistentHighlightedDateEnd
+ );
+
+ // Intentional UX: for custom date ranges (dual calendar) we only style the boundary dates
+ // as selected. The in-between span is not kept persistently highlighted.
+ const isBoundarySelectedDate = !!(
+ selectedDateStart
+ && selectedDateEnd
+ && (
+ dateValueTime === selectedDateStart.getTime()
+ || dateValueTime === selectedDateEnd.getTime()
+ )
+ );
+
+ if (isBoundarySelectedDate) {
$dateCell.addClass('ui-datepicker-current-period');
} else {
$dateCell.removeClass('ui-datepicker-current-period');
@@ -56,13 +73,26 @@ export default defineComponent({
&& dateValue >= props.highlightedDateStart
&& dateValue <= props.highlightedDateEnd
) {
- // other-month cells don't have links, so the must have the ui-state-hover class
- const elementToAddClassTo = $dateCellLink.length ? $dateCellLink : $dateCell;
- elementToAddClassTo.addClass('ui-state-hover');
+ // Always mark the td so hover can fill full cell area (including horizontal padding).
+ $dateCell.addClass('ui-state-hover');
+ // Keep anchor class too for existing link-focused hover styling.
+ if ($dateCellLink.length) {
+ $dateCellLink.addClass('ui-state-hover');
+ }
} else {
$dateCell.removeClass('ui-state-hover');
$dateCellLink.removeClass('ui-state-hover');
}
+
+ if (isPersistentlyHighlightedDate) {
+ $dateCell.addClass('ui-datepicker-persistent-highlight');
+ if ($dateCellLink.length) {
+ $dateCellLink.addClass('ui-datepicker-persistent-highlight');
+ }
+ } else {
+ $dateCell.removeClass('ui-datepicker-persistent-highlight');
+ $dateCellLink.removeClass('ui-datepicker-persistent-highlight');
+ }
}
function getCellDate($dateCell: JQuery, month: number, year: number): Date {
@@ -168,6 +198,14 @@ export default defineComponent({
// add href to left/right nav in calendar so they can be accessed via keyboard
element.find('.ui-datepicker-prev,.ui-datepicker-next').attr('href', '');
+
+ // Use explicit chevron classes so scoped styles can render modern nav icons.
+ element.find('.ui-datepicker-prev .ui-icon')
+ .removeClass('ui-icon-circle-triangle-w')
+ .addClass('icon-chevron-left');
+ element.find('.ui-datepicker-next .ui-icon')
+ .removeClass('ui-icon-circle-triangle-e')
+ .addClass('icon-chevron-right');
}
function stepMonthsChanged(): boolean {
@@ -235,6 +273,8 @@ export default defineComponent({
[
(x: typeof props): Date|undefined => x.selectedDateStart,
(x: typeof props): Date|undefined => x.selectedDateEnd,
+ (x: typeof props): Date|undefined => x.persistentHighlightedDateStart,
+ (x: typeof props): Date|undefined => x.persistentHighlightedDateEnd,
(x: typeof props): Date|undefined => x.highlightedDateStart,
(x: typeof props): Date|undefined => x.highlightedDateEnd,
].forEach((selector) => {
@@ -273,7 +313,7 @@ export default defineComponent({
enableDisableMonthDropdown();
}
- // redraw when selected/highlighted dates change
+ // redraw when selected or highlighted date props change
if (redraw) {
setDatePickerCellColors();
}
diff --git a/plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.less b/plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.less
index 6196e508ea0..35e70cea7d9 100644
--- a/plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.less
+++ b/plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.less
@@ -1,3 +1,9 @@
.dateRangePicker {
display: block;
+ .date-range-picker-label {
+ margin-left: 10px;
+ .date-range-picker-field {
+ font-size: 13px !important;
+ }
+ }
}
\ No newline at end of file
diff --git a/plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue b/plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue
index 7a6cedd8774..d0a31572603 100644
--- a/plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue
+++ b/plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.vue
@@ -8,13 +8,13 @@
-
+
{{ translate('General_DateRangeFrom') }}
-
+
{{ translate('General_DateRangeTo') }}
@@ -71,10 +71,10 @@ import ChangeEvent = JQuery.ChangeEvent;
const DATE_FORMAT = 'YYYY-MM-DD';
interface DateRangePickerState {
- fromPickerSelectedDates: (Date|null)[];
- toPickerSelectedDates: (Date|null)[];
- fromPickerHighlightedDates: (Date|null)[];
- toPickerHighlightedDates: (Date|null)[];
+ fromPickerSelectedDate: Date|null;
+ toPickerSelectedDate: Date|null;
+ fromPickerHoveredDate: Date|null;
+ toPickerHoveredDate: Date|null;
startDateText?: string;
endDateText?: string;
startDateInvalid: boolean;
@@ -82,6 +82,7 @@ interface DateRangePickerState {
}
export default defineComponent({
+ name: 'DateRangePicker',
props: {
startDate: String,
endDate: String,
@@ -109,10 +110,10 @@ export default defineComponent({
}
return {
- fromPickerSelectedDates: [startDate, startDate],
- toPickerSelectedDates: [endDate, endDate],
- fromPickerHighlightedDates: [null, null],
- toPickerHighlightedDates: [null, null],
+ fromPickerSelectedDate: startDate,
+ toPickerSelectedDate: endDate,
+ fromPickerHoveredDate: null,
+ toPickerHoveredDate: null,
startDateText: this.startDate,
endDateText: this.endDate,
startDateInvalid: false,
@@ -135,12 +136,12 @@ export default defineComponent({
},
methods: {
setStartRangeDate(date: Date) {
- this.fromPickerSelectedDates = [date, date];
+ this.fromPickerSelectedDate = date;
this.rangeChanged();
},
setEndRangeDate(date: Date) {
- this.toPickerSelectedDates = [date, date];
+ this.toPickerSelectedDate = date;
this.rangeChanged();
},
@@ -153,12 +154,12 @@ export default defineComponent({
}
});
},
- getNewHighlightedDates(date: Date, $cell: JQuery) {
+ getNewHoveredDate(date: Date, $cell: JQuery): Date|null {
if ($cell.hasClass('ui-datepicker-unselectable')) {
return null;
}
- return [date, date];
+ return date;
},
handleEnterPress($event: KeyboardEvent) {
if ($event.keyCode !== 13) {
@@ -183,7 +184,7 @@ export default defineComponent({
}
if (startDateParsed) {
- this.fromPickerSelectedDates = [startDateParsed, startDateParsed];
+ this.fromPickerSelectedDate = startDateParsed;
this.startDateInvalid = false;
this.rangeChanged();
@@ -202,7 +203,7 @@ export default defineComponent({
}
if (endDateParsed) {
- this.toPickerSelectedDates = [endDateParsed, endDateParsed];
+ this.toPickerSelectedDate = endDateParsed;
this.endDateInvalid = false;
this.rangeChanged();
@@ -210,8 +211,8 @@ export default defineComponent({
},
rangeChanged() {
this.$emit('rangeChange', {
- start: this.fromPickerSelectedDates[0] ? format(this.fromPickerSelectedDates[0]) : null,
- end: this.toPickerSelectedDates[0] ? format(this.toPickerSelectedDates[0]) : null,
+ start: this.fromPickerSelectedDate ? format(this.fromPickerSelectedDate) : null,
+ end: this.toPickerSelectedDate ? format(this.toPickerSelectedDate) : null,
});
},
},
diff --git a/plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue b/plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue
index 07e072f8d57..4bf85de13da 100644
--- a/plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue
+++ b/plugins/CoreHome/vue/src/PeriodDatePicker/PeriodDatePicker.vue
@@ -9,8 +9,10 @@
import { defineComponent, watch, ref } from 'vue';
import DatePicker from '../DatePicker/DatePicker.vue';
-import Matomo from '../Matomo/Matomo';
import { Periods, parseDate } from '../Periods';
-
-const piwikMinDate = new Date(Matomo.minDateYear, Matomo.minDateMonth - 1, Matomo.minDateDay);
-const piwikMaxDate = new Date(Matomo.maxDateYear, Matomo.maxDateMonth - 1, Matomo.maxDateDay);
+import {
+ getSiteMaxAllowedDate,
+ getSiteMinAllowedDate,
+} from '../PeriodSelector/PeriodSelector.types';
export default defineComponent({
props: {
@@ -45,7 +47,10 @@ export default defineComponent({
setup(props, context) {
const viewDate = ref(props.date);
const selectedDates = ref<(Date|null)[]>([null, null]);
- const highlightedDates = ref<(Date|null)[]>([null, null]);
+ const committedBetweenHighlightDates = ref<(Date|null)[]>([null, null]);
+ const highlightedDates = ref<(Date|null)[]|null>(null);
+ const piwikMinDate = getSiteMinAllowedDate();
+ const piwikMaxDate = getSiteMaxAllowedDate();
function getBoundedDateRange(date: string|Date) {
const dates = Periods.get(props.period).parse(date).getDateRange();
@@ -57,6 +62,40 @@ export default defineComponent({
return dates;
}
+ function getExclusiveBetweenRange(
+ startDate: Date|null,
+ endDate: Date|null,
+ ): [Date|null, Date|null] {
+ if (!startDate || !endDate || startDate.getTime() >= endDate.getTime()) {
+ return [null, null];
+ }
+
+ const betweenStart = new Date(startDate);
+ betweenStart.setDate(betweenStart.getDate() + 1);
+
+ const betweenEnd = new Date(endDate);
+ betweenEnd.setDate(betweenEnd.getDate() - 1);
+
+ if (betweenStart.getTime() > betweenEnd.getTime()) {
+ return [null, null];
+ }
+
+ return [betweenStart, betweenEnd];
+ }
+
+ function refreshCommittedBetweenHighlightFromDate(date?: string|Date|null) {
+ if (!date) {
+ committedBetweenHighlightDates.value = [null, null];
+ return;
+ }
+
+ const boundedDateRange = getBoundedDateRange(date);
+ committedBetweenHighlightDates.value = getExclusiveBetweenRange(
+ boundedDateRange[0],
+ boundedDateRange[1],
+ );
+ }
+
function onHoverNormalCell(cellDate: Date, $cell: JQuery) {
const isOutOfMinMaxDateRange = cellDate < piwikMinDate || cellDate > piwikMaxDate;
@@ -72,11 +111,12 @@ export default defineComponent({
return;
}
+ // Keep hover preview inclusive (start/end + in-between) for parity with historical UX.
highlightedDates.value = getBoundedDateRange(cellDate);
}
function onHoverLeaveNormalCells() {
- highlightedDates.value = [null, null];
+ highlightedDates.value = null;
}
function onDateSelected(date: Date) {
@@ -86,11 +126,15 @@ export default defineComponent({
function onChanges() {
if (!props.period || !props.date) {
selectedDates.value = [null, null];
+ committedBetweenHighlightDates.value = [null, null];
+ highlightedDates.value = null;
viewDate.value = null;
return;
}
selectedDates.value = getBoundedDateRange(props.date);
+ refreshCommittedBetweenHighlightFromDate(props.date);
+ highlightedDates.value = null;
viewDate.value = parseDate(props.date);
}
@@ -100,6 +144,7 @@ export default defineComponent({
return {
selectedDates,
+ committedBetweenHighlightDates,
highlightedDates,
viewDate,
onHoverNormalCell,
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.component.spec.ts b/plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.component.spec.ts
index 414b8790677..37c2cd9e887 100644
--- a/plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.component.spec.ts
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.component.spec.ts
@@ -41,23 +41,15 @@ describe('PeriodOptions', () => {
it('should render all provided period options', () => {
const wrapper = mountComponent();
- expect(wrapper.findAll('.periodOptions button').length).toBe(5);
- expect(wrapper.findAll('.periodOptions button')[0].attributes('id')).toBe('period_id_range');
- });
-
- it('should expose group semantics for period options', () => {
- const wrapper = mountComponent();
- const optionsGroup = wrapper.find('.periodOptions');
-
- expect(optionsGroup.attributes('role')).toBe('group');
- expect(optionsGroup.attributes('aria-label')).toBe('Choose period');
+ expect(wrapper.findAll('.periodOptions input[type="radio"]').length).toBe(5);
+ expect(wrapper.findAll('.periodOptions input[type="radio"]')[0].attributes('id')).toBe('period_id_range');
});
it('should capitalize period labels and show custom date range for range', () => {
const wrapper = mountComponent();
- const dayText = wrapper.find('#period_id_day').text().trim();
- const rangeText = wrapper.find('#period_id_range').text().trim();
+ const dayText = wrapper.find('#period_id_day + span').text().trim();
+ const rangeText = wrapper.find('#period_id_range + span').text().trim();
expect(dayText?.charAt(0)).toBe(dayText?.charAt(0)?.toUpperCase());
expect(rangeText).toBe('Custom date range');
@@ -66,7 +58,7 @@ describe('PeriodOptions', () => {
it('should emit update:modelValue and select when period is selected', async () => {
const wrapper = mountComponent();
- await wrapper.find('#period_id_month').trigger('click');
+ await wrapper.find('#period_id_month').setValue(true);
expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(['month']);
expect(wrapper.emitted('select')?.[0]).toEqual([{ period: 'month' }]);
@@ -80,28 +72,18 @@ describe('PeriodOptions', () => {
expect(wrapper.emitted('dblclick')?.[0]).toEqual([{ period: 'week' }]);
});
- it('should render native button options', () => {
- const wrapper = mountComponent();
-
- const options = wrapper.findAll('.periodOptions button');
- expect(options.length).toBe(5);
- options.forEach((option) => {
- expect(option.attributes('type')).toBe('button');
- });
- });
-
- it('should expose selected state with aria-pressed', async () => {
+ it('should expose selected state through checked radio input', async () => {
const wrapper = mountComponent({
checkedPeriodId: 'day',
});
- expect(wrapper.find('#period_id_day').attributes('aria-pressed')).toBe('true');
- expect(wrapper.find('#period_id_week').attributes('aria-pressed')).toBe('false');
+ expect((wrapper.find('#period_id_day').element as HTMLInputElement).checked).toBe(true);
+ expect((wrapper.find('#period_id_week').element as HTMLInputElement).checked).toBe(false);
await wrapper.setProps({ checkedPeriodId: 'week' });
- expect(wrapper.find('#period_id_day').attributes('aria-pressed')).toBe('false');
- expect(wrapper.find('#period_id_week').attributes('aria-pressed')).toBe('true');
+ expect((wrapper.find('#period_id_day').element as HTMLInputElement).checked).toBe(false);
+ expect((wrapper.find('#period_id_week').element as HTMLInputElement).checked).toBe(true);
});
it('should check only when owner is active', async () => {
@@ -114,7 +96,8 @@ describe('PeriodOptions', () => {
await wrapper.setProps({ checkedPeriodId: 'month' });
- expect(wrapper.find('#period_id_month').classes()).toContain('selected-period-label');
+ expect(wrapper.find('#period_id_month').element.parentElement?.classList.contains('selected-period-label'))
+ .toBe(true);
});
it('should set empty tooltip for active date period and non-empty for others', () => {
@@ -123,8 +106,8 @@ describe('PeriodOptions', () => {
activeDatePeriod: 'day',
});
- const dayLabel = wrapper.find('#period_id_day').element as HTMLButtonElement;
- const weekLabel = wrapper.find('#period_id_week').element as HTMLButtonElement;
+ const dayLabel = wrapper.find('#period_id_day').element.parentElement as HTMLLabelElement;
+ const weekLabel = wrapper.find('#period_id_week').element.parentElement as HTMLLabelElement;
expect(dayLabel.title).toBe('');
expect(weekLabel.title).not.toBe('');
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue b/plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue
index 409694d8aea..e281aeab4ad 100644
--- a/plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodOptions.vue
@@ -8,26 +8,32 @@
@@ -41,7 +47,10 @@ interface PeriodSelectionPayload {
period: string;
}
+let nextPeriodOptionsGroupId = 0;
+
export default defineComponent({
+ name: 'PeriodOptions',
props: {
modelValue: {
type: String as PropType,
@@ -60,6 +69,14 @@ export default defineComponent({
required: true,
},
},
+ data() {
+ const periodInputName = `period-${nextPeriodOptionsGroupId}`;
+ nextPeriodOptionsGroupId += 1;
+
+ return {
+ periodInputName,
+ };
+ },
emits: ['update:modelValue', 'select', 'dblclick'],
computed: {
displayPeriods(): string[] {
@@ -84,6 +101,9 @@ export default defineComponent({
this.$emit('update:modelValue', period);
this.$emit('select', payload);
},
+ handlePeriodEnter(period: string) {
+ this.handlePeriodSelected(period);
+ },
handlePeriodDoubleClick(period: string) {
const payload: PeriodSelectionPayload = { period };
this.$emit('dblclick', payload);
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.applyFlow.ts b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.applyFlow.ts
new file mode 100644
index 00000000000..bd145b9a043
--- /dev/null
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.applyFlow.ts
@@ -0,0 +1,99 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { RANGE_PERIOD } from './PeriodSelector.types';
+
+export interface ApplyEnabledState {
+ uiSelectionType: 'period' | 'preset';
+ uiSelectedPeriod: string;
+ hasPendingNonRangePeriodChange: boolean;
+ hasPendingPresetSelection: boolean;
+ isRangeValid: boolean | null;
+ isComparing: boolean | null;
+ comparePeriodType: string;
+ isCompareRangeValid: boolean;
+}
+
+export function isApplyEnabledFromState(state: ApplyEnabledState): boolean {
+ // Invariant: non-range period mode intentionally cannot commit "compare to" via Apply button.
+ if (state.uiSelectionType === 'period' && state.uiSelectedPeriod !== RANGE_PERIOD) {
+ return false;
+ }
+
+ if (state.hasPendingNonRangePeriodChange) {
+ return false;
+ }
+
+ if (state.uiSelectedPeriod === RANGE_PERIOD
+ && !state.hasPendingPresetSelection
+ && !state.isRangeValid
+ ) {
+ return false;
+ }
+
+ if (state.isComparing
+ && state.comparePeriodType === 'custom'
+ && !state.isCompareRangeValid
+ ) {
+ return false;
+ }
+
+ return true;
+}
+
+export type NonRangeApplyAction =
+ | { type: 'stop' }
+ | { type: 'close' }
+ | { type: 'commit'; date: string; period: string };
+
+export interface NonRangeApplyState {
+ hasPendingNonRangePeriodChange: boolean;
+ isCompareDirty: boolean;
+ shouldCloseSelectorWithoutApplying: boolean;
+ appliedPeriod: string;
+ hasCommittedRangeBounds: boolean;
+ rollingDateParam: string | null;
+ appliedRangeStartDate: string | null;
+ appliedRangeEndDate: string | null;
+ formattedAppliedAnchorDate: string | null;
+}
+
+export function resolveNonRangeApplyAction(state: NonRangeApplyState): NonRangeApplyAction {
+ if (state.hasPendingNonRangePeriodChange) {
+ return { type: 'stop' };
+ }
+
+ if (!state.isCompareDirty) {
+ return state.shouldCloseSelectorWithoutApplying
+ ? { type: 'close' }
+ : { type: 'stop' };
+ }
+
+ if (state.appliedPeriod === RANGE_PERIOD) {
+ if (!state.hasCommittedRangeBounds) {
+ return { type: 'stop' };
+ }
+
+ const rangeDateValue = `${state.appliedRangeStartDate},${state.appliedRangeEndDate}`;
+
+ return {
+ type: 'commit',
+ date: state.rollingDateParam || rangeDateValue,
+ period: RANGE_PERIOD,
+ };
+ }
+
+ if (!state.formattedAppliedAnchorDate) {
+ return { type: 'stop' };
+ }
+
+ return {
+ type: 'commit',
+ date: state.rollingDateParam || state.formattedAppliedAnchorDate,
+ period: state.appliedPeriod,
+ };
+}
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.hashSync.spec.ts b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.hashSync.spec.ts
index e1bb8fde736..84b2fb1fccd 100644
--- a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.hashSync.spec.ts
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.hashSync.spec.ts
@@ -8,6 +8,7 @@
import { mount } from '@vue/test-utils';
import MatomoUrl from '../MatomoUrl/MatomoUrl';
import { Periods, format } from '../Periods';
+import PeriodSelector from './PeriodSelector.vue';
import {
getContextKeyFromParsed,
resolveSyncedUiSelection,
@@ -21,26 +22,28 @@ window.piwik.maxDateYear = 2014;
window.piwik.maxDateMonth = 3;
window.piwik.maxDateDay = 29;
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-const PeriodSelector = require('./PeriodSelector.vue').default;
-
function createContextKey(parsed: Record): string {
return getContextKeyFromParsed(parsed);
}
-describe('PeriodSelector hash sync', () => {
- const component = PeriodSelector as unknown as {
- methods: Record unknown>;
- };
- const { methods } = component;
- const baseContextKey = createContextKey({
+function createBaseContext(overrides: Record = {}): Record {
+ return {
module: 'CoreHome',
action: 'index',
category: 'General_Actions',
subcategory: 'General_Pages',
date: 'today',
period: 'day',
- });
+ ...overrides,
+ };
+}
+
+describe('PeriodSelector hash sync', () => {
+ const component = PeriodSelector as unknown as {
+ methods: Record unknown>;
+ };
+ const { methods } = component;
+ const baseContextKey = createContextKey(createBaseContext());
it('does not skip hash sync when context changes with same period/date', () => {
const vm: any = {
@@ -51,14 +54,10 @@ describe('PeriodSelector hash sync', () => {
expect(shouldSkipHashSync(
'day|today',
- createContextKey({
- module: 'CoreHome',
- action: 'index',
+ createContextKey(createBaseContext({
category: 'General_Visitors',
subcategory: 'General_Overview',
- date: 'today',
- period: 'day',
- }),
+ })),
vm.nextHashUiSelection,
vm.lastKnownHashSelectionKey,
vm.lastKnownHashContextKey,
@@ -94,55 +93,27 @@ describe('PeriodSelector hash sync', () => {
const vm: any = {
nextHashUiSelection: null,
lastKnownHashSelectionKey: 'day|today',
- lastKnownHashContextKey: createContextKey({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
- idSite: '1',
- date: 'today',
- period: 'day',
- }),
+ lastKnownHashContextKey: createContextKey(createBaseContext({ idSite: '1' })),
};
expect(shouldSkipHashSync(
'day|today',
- createContextKey({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
- idSite: '2',
- date: 'today',
- period: 'day',
- }),
+ createContextKey(createBaseContext({ idSite: '2' })),
vm.nextHashUiSelection,
vm.lastKnownHashSelectionKey,
vm.lastKnownHashContextKey,
)).toBe(false);
- vm.lastKnownHashContextKey = createContextKey({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
+ vm.lastKnownHashContextKey = createContextKey(createBaseContext({
idSite: '1',
segment: 'countryCode==US',
- date: 'today',
- period: 'day',
- });
+ }));
expect(shouldSkipHashSync(
'day|today',
- createContextKey({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
+ createContextKey(createBaseContext({
idSite: '1',
segment: 'countryCode==NZ',
- date: 'today',
- period: 'day',
- }),
+ })),
vm.nextHashUiSelection,
vm.lastKnownHashSelectionKey,
vm.lastKnownHashContextKey,
@@ -150,98 +121,49 @@ describe('PeriodSelector hash sync', () => {
});
it('changes context key when non-ignored params change', () => {
- const contextA = getContextKeyFromParsed({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
- idGoal: '1',
- date: 'today',
- period: 'day',
- });
- const contextB = getContextKeyFromParsed({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
- idGoal: '2',
- date: 'today',
- period: 'day',
- });
+ const contextA = getContextKeyFromParsed(createBaseContext({ idGoal: '1' }));
+ const contextB = getContextKeyFromParsed(createBaseContext({ idGoal: '2' }));
expect(contextA).not.toBe(contextB);
});
it('keeps context key unchanged for compare-only param changes', () => {
- const contextA = getContextKeyFromParsed({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
+ const contextA = getContextKeyFromParsed(createBaseContext({
compareSegments: ['countryCode==US'],
comparePeriods: ['day'],
comparePeriodType: 'previousPeriod',
compareDates: ['2026-02-01'],
- date: 'today',
- period: 'day',
- });
- const contextB = getContextKeyFromParsed({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
+ }));
+ const contextB = getContextKeyFromParsed(createBaseContext({
compareSegments: ['deviceType==desktop'],
comparePeriods: ['range'],
comparePeriodType: 'custom',
compareDates: ['2026-02-01,2026-02-07'],
- date: 'today',
- period: 'day',
- });
+ }));
expect(contextA).toBe(contextB);
});
it('keeps context key unchanged when only compareSegments changes', () => {
- const contextA = getContextKeyFromParsed({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
- compareSegments: ['countryCode==US'],
- date: 'today',
- period: 'day',
- });
- const contextB = getContextKeyFromParsed({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
- compareSegments: ['deviceType==desktop'],
- date: 'today',
- period: 'day',
- });
+ const contextA = getContextKeyFromParsed(createBaseContext({ compareSegments: ['countryCode==US'] }));
+ const contextB = getContextKeyFromParsed(createBaseContext({ compareSegments: ['deviceType==desktop'] }));
expect(contextA).toBe(contextB);
});
it('builds deterministic context keys regardless of object key order', () => {
- const contextA = getContextKeyFromParsed({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Actions',
- subcategory: 'General_Pages',
- segment: 'countryCode==US',
- date: 'today',
- period: 'day',
- });
+ const parsed = createBaseContext({ segment: 'countryCode==US', });
+
+ const contextA = getContextKeyFromParsed(parsed);
+ // Reorder the keys
const contextB = getContextKeyFromParsed({
- period: 'day',
- date: 'today',
- segment: 'countryCode==US',
- subcategory: 'General_Pages',
- category: 'General_Actions',
- action: 'index',
- module: 'CoreHome',
+ period: parsed.period,
+ date: parsed.date,
+ segment: parsed.segment,
+ subcategory: parsed.subcategory,
+ category: parsed.category,
+ action: parsed.action,
+ module: parsed.module,
});
expect(contextA).toBe(contextB);
@@ -286,6 +208,7 @@ describe('PeriodSelector hash sync', () => {
clearPresetSelection: methods.clearPresetSelection,
resetSelectedDateValues: methods.resetSelectedDateValues,
applyDateValuesFromHash: methods.applyDateValuesFromHash,
+ setRangeStartEndFromPeriod: methods.setRangeStartEndFromPeriod,
};
(MatomoUrl as any).url.value = new URL(
@@ -299,6 +222,47 @@ describe('PeriodSelector hash sync', () => {
expect(vm.isRangeValid).toBe(true);
expect(vm.appliedRangeStartDate).toBe(format(expectedStartDate));
expect(vm.appliedRangeEndDate).toBe(format(expectedEndDate));
+ expect(vm.calendarViewport).toBe('range');
+
+ (MatomoUrl as any).url.value = originalUrl;
+ });
+
+ it('sets single calendar viewport when hash sync hydrates a valid non-range period', () => {
+ const originalUrl = (MatomoUrl as any).url.value;
+ const vm: any = {
+ nextHashUiSelection: null,
+ nextHashSelectionKey: null,
+ lastKnownHashSelectionKey: null,
+ lastKnownHashContextKey: null,
+ periodsFiltered: ['day', 'week', 'month', 'year', 'range'],
+ uiSelection: { type: 'period', id: 'range' },
+ committedPeriod: 'range',
+ selectedPeriod: 'range',
+ committedAnchorDate: null,
+ appliedRangeStartDate: null,
+ appliedRangeEndDate: null,
+ pendingPresetSelection: { id: 'last30days' },
+ calendarViewport: 'range',
+ compareAppliedSignature: '',
+ compareCurrentSignature: '{}',
+ isRangeValid: null,
+ getCurrentContextKey: jest.fn(() => baseContextKey),
+ applyUiSelectionFromHash: methods.applyUiSelectionFromHash,
+ setUiSelection: methods.setUiSelection,
+ clearPresetSelection: methods.clearPresetSelection,
+ resetSelectedDateValues: methods.resetSelectedDateValues,
+ applyDateValuesFromHash: methods.applyDateValuesFromHash,
+ setRangeStartEndFromPeriod: methods.setRangeStartEndFromPeriod,
+ };
+
+ (MatomoUrl as any).url.value = new URL(
+ 'https://matomo.test/index.php?module=CoreHome&action=index&period=day&date=today'
+ + '#?period=day&date=today&category=General_Actions&subcategory=General_Pages',
+ );
+
+ expect(() => methods.updateSelectedValuesFromHash.call(vm)).not.toThrow();
+ expect(vm.isRangeValid).toBeNull();
+ expect(vm.calendarViewport).toBe('single');
(MatomoUrl as any).url.value = originalUrl;
});
@@ -352,14 +316,7 @@ describe('PeriodSelector hash sync', () => {
expect((wrapper.vm as any).activePresetId).toBe('today');
expect((wrapper.vm as any).uiSelection).toEqual({ type: 'preset', id: 'today' });
expect((wrapper.vm as any).lastKnownHashContextKey).toBe(
- createContextKey({
- module: 'CoreHome',
- action: 'index',
- category: 'General_Visitors',
- subcategory: 'General_Overview',
- date: 'today',
- period: 'day',
- }),
+ createContextKey(createBaseContext({ category: 'General_Visitors', subcategory: 'General_Overview' })),
);
wrapper.unmount();
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.helpers.ts b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.helpers.ts
new file mode 100644
index 00000000000..e930af541af
--- /dev/null
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.helpers.ts
@@ -0,0 +1,58 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+export function isKeyboardExpandEvent(event: MouseEvent | KeyboardEvent): boolean {
+ return event.detail === 0;
+}
+
+export function stripCompareDateParams(
+ baseUrlParams: Record,
+): Record {
+ const paramsWithoutCompare = { ...baseUrlParams };
+ // Intentionally keep compareSegments. Only date-period compare params are reset here.
+ delete paramsWithoutCompare.comparePeriods;
+ delete paramsWithoutCompare.comparePeriodType;
+ delete paramsWithoutCompare.compareDates;
+ return paramsWithoutCompare;
+}
+
+export function shiftDateByPeriod(sourceDate: Date, period: string, direction: number): Date {
+ const shiftedDate = new Date(sourceDate.getTime());
+
+ switch (period) {
+ case 'day':
+ shiftedDate.setDate(shiftedDate.getDate() + direction);
+ break;
+ case 'week':
+ shiftedDate.setDate(shiftedDate.getDate() + direction * 7);
+ break;
+ case 'month':
+ shiftedDate.setMonth(shiftedDate.getMonth() + direction);
+ break;
+ case 'year':
+ shiftedDate.setFullYear(shiftedDate.getFullYear() + direction);
+ break;
+ default:
+ break;
+ }
+
+ return shiftedDate;
+}
+
+export function clampDateToBounds(date: Date, minDate: Date, maxDate: Date): Date {
+ const clampedDate = new Date(date.getTime());
+
+ if (clampedDate < minDate) {
+ clampedDate.setTime(minDate.getTime());
+ }
+
+ if (clampedDate > maxDate) {
+ clampedDate.setTime(maxDate.getTime());
+ }
+
+ return clampedDate;
+}
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.less b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.less
index 216245e339d..ca5481e32d4 100644
--- a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.less
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.less
@@ -1,8 +1,24 @@
.periodSelector {
display: inline-block;
- [type=radio]:not(:checked) + span,
- [type=radio]:checked + span {
- padding-left: 30px;
+
+ .preset-option-text {
+ padding-left: 30px !important;
+ }
+
+ .preset-option-text:not(.lever):before,
+ .preset-option-text:not(.lever):after,
+ .compare-checkbox-text:not(.lever):before,
+ .compare-checkbox-text:not(.lever):after {
+ border: 2px solid @color-period-selector-input-radio;
+ }
+ .preset-option-input:checked + .preset-option-text:not(.lever):before,
+ .preset-option-input:checked + .preset-option-text:not(.lever):after {
+ border-color: @theme-color-brand;
+ }
+
+ .compare-checkbox-input:checked + .compare-checkbox-text:not(.lever):before {
+ border-top: 2px solid rgba(0, 0, 0, 0);
+ border-left: 2px solid rgba(0, 0, 0, 0);
}
&.compare-dropdown-open {
@@ -33,12 +49,11 @@
.compare-checkbox {
margin-bottom: 20px;
- label {
- span {
- padding-left:25px;
- font-size: 14px;
- margin-right: 3px;
- }
+
+ .compare-checkbox-text {
+ padding-left: 25px;
+ font-size: 14px;
+ margin-right: 3px;
}
}
@@ -112,7 +127,7 @@
height: 0.5px;
margin-left: 11px;
margin-right: 11px;
- background-color: @color-silver-l14;
+ background-color: @color-silver-l95;
width: 16px;
display: inline-block;
vertical-align: top;
@@ -125,12 +140,28 @@
.apply-button-container {
text-align: right;
+ margin-top: auto;
}
.flex {
display: flex;
}
+ #periodMore {
+ box-sizing: border-box;
+ left: 0;
+ max-width: calc(~'100vw - 16px');
+ right: auto;
+ }
+
+ @media (max-width: 600px) {
+ #periodMore {
+ max-width: 90%;
+ left: 25px;
+ right: auto;
+ }
+ }
+
.period-type {
min-width: 220px;
}
@@ -140,34 +171,46 @@
p:first-child {
margin-top: 5px;
}
- button {
- padding: 5px 0 5px 0;
+
+ .period-option-label {
background: transparent;
border: 0;
border-radius: 5px;
- color: @color-silver;
+ color: @color-period-selector;
cursor: pointer;
display: block;
font: inherit;
margin: 0;
outline: none;
padding-left: 8px;
+ position: relative;
text-align: left;
width: 100%;
font-size: 13px;
&:hover {
- background-color: @color-silver-l95;
+ background-color: @color-period-selector-options-hover-bg;
}
+ }
- &:focus-visible {
- background-color: @color-silver-l95;
- outline: 2px solid @theme-color-focus-ring;
- outline-offset: 0;
- }
+ .period-option-label:has(.period-option-input:focus-visible) {
+ background-color: @color-period-selector-options-hover-bg;
+ border-radius: 5px;
+ outline: 2px solid @theme-color-focus-ring;
+ outline-offset: 0;
+ }
+
+ // Period options are visually button-like; hide radio-marker pseudo elements.
+ .period-option-text {
+ padding-left: 0;
}
- button.selected-period-label {
+ .period-option-text:before,
+ .period-option-text:after {
+ display: none !important;
+ }
+
+ .selected-period-label {
color: @theme-color-text;
font-weight: 600;
}
@@ -180,11 +223,10 @@
label,
label span {
- color: @color-silver;
+ color: @color-period-selector;
}
- label.selected-period-label,
- label.selected-period-label span {
+ .selected-period-label {
color: @theme-color-text;
}
}
@@ -200,18 +242,150 @@
display: flex;
flex-direction: column;
margin-left: 16px;
+ min-width: 220px;
padding-left: 16px;
-
- .apply-button-container {
- margin-top: auto;
- }
+ width: 100%;
.calendar-disabled {
opacity: 0.75;
pointer-events: none;
}
}
+ .period-date{
+ min-width: 220px;
+ }
+ .period-date,
+ .period-range {
+ padding-right: 0 !important;
+ }
+
+ .dateRangePicker {
+ display: flex;
+ align-items: flex-start;
+ flex-wrap: nowrap;
+ gap: 16px;
+
+ #calendarRangeFrom,
+ #calendarRangeTo {
+ flex: 1 1 0;
+ min-width: 220px;
+ }
+
+ #calendarRangeFrom {
+ float: none;
+ }
+
+ #calendarRangeTo {
+ margin-left: 0;
+ }
+ }
+
+ @media (max-width: 900px) {
+ .flex {
+ flex-direction: column;
+ overflow-x: auto;
+ }
+
+ .period-selector-calendar-column {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: none;
+ }
+
+ .dateRangePicker {
+ flex-wrap: wrap;
+ }
+
+ #periodMore.dual-calendar .dateRangePicker {
+ flex-direction: column;
+ width: 100%;
+
+ #calendarRangeFrom,
+ #calendarRangeTo {
+ width: 100%;
+ }
+ }
+ }
+ .ui-datepicker {
+ border: none !important;
+ font-size: 13px !important;
+ width: 100% !important;
+
+ .ui-datepicker-month {
+ width: 46%;
+ }
+ .ui-datepicker-year {
+ width: 46%;
+ }
+ .ui-datepicker-prev .ui-icon,
+ .ui-datepicker-next .ui-icon {
+ top: 20%;
+ }
+ .ui-datepicker-prev .ui-icon {
+ left: 0%;
+ }
+
+ .ui-datepicker-header .ui-icon.icon-chevron-left,
+ .ui-datepicker-header .ui-icon.icon-chevron-right {
+ background-image: none !important;
+ text-indent: 0 !important;
+ overflow: visible !important;
+ width: auto !important;
+ height: auto !important;
+ margin: 0 !important;
+ font-size: 12px;
+ line-height: 1;
+ display: inline-block;
+
+ &::before {
+ display: inline-block;
+ line-height: 1;
+ }
+ }
+
+ .ui-datepicker-month, .ui-datepicker-year {
+ font-size: 13px;
+ }
+
+ .ui-datepicker-calendar, .ui-datepicker-header {
+ font-size: 13px !important;
+ border: none !important;
+
+ thead {
+ border: none !important;
+ }
+ }
+ .ui-datepicker-calendar {
+ table-layout: fixed;
+
+ tbody td {
+ padding: 0 !important;
+ width: 14.2857%;
+ }
+
+ tbody td > a,
+ tbody td > span {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 100%;
+ aspect-ratio: 1 / 1;
+ }
+
+ // Apply hover/persistent highlight to the square inner day box.
+ .ui-datepicker-persistent-highlight:not(.ui-datepicker-current-period),
+ .ui-datepicker-persistent-highlight:not(.ui-datepicker-current-period) > .ui-datepicker-persistent-highlight {
+ background: @period-selector-calendar-hover-bg !important;
+ opacity: 1;
+ }
+
+ .ui-datepicker-current-period > a,
+ .ui-datepicker-current-period > span {
+ background: @theme-color-text !important;
+ }
+ }
+ }
}
.periodSelector-withPrevNext {
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.mountedOwnership.spec.ts b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.mountedOwnership.spec.ts
index 83b92a2836b..e4039ff5140 100644
--- a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.mountedOwnership.spec.ts
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.mountedOwnership.spec.ts
@@ -7,6 +7,7 @@
import { mount } from '@vue/test-utils';
import MatomoUrl from '../MatomoUrl/MatomoUrl';
+import PeriodSelector from './PeriodSelector.vue';
window.piwik.minDateYear = 2011;
window.piwik.minDateMonth = 11;
@@ -15,9 +16,6 @@ window.piwik.maxDateYear = 2014;
window.piwik.maxDateMonth = 3;
window.piwik.maxDateDay = 29;
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-const PeriodSelector = require('./PeriodSelector.vue').default;
-
describe('CoreHome/PeriodSelector/PeriodSelector mounted ownership interactions', () => {
const originalInitTopControls = window.initTopControls;
const originalUrl = (MatomoUrl as any).url.value;
@@ -36,6 +34,10 @@ describe('CoreHome/PeriodSelector/PeriodSelector mounted ownership interactions'
mocks: {
translate: (key: string) => key,
},
+ stubs: {
+ PeriodSelectorOptionsColumn: false,
+ PeriodSelectorCalendarColumn: false,
+ },
},
});
}
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.selection.spec.ts b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.selection.spec.ts
index bc6544bf2f4..5e29119deaa 100644
--- a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.selection.spec.ts
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.selection.spec.ts
@@ -5,6 +5,8 @@
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
+import PeriodSelector from './PeriodSelector.vue';
+import { Periods, format } from '../Periods';
import MatomoUrl from '../MatomoUrl/MatomoUrl';
window.piwik.minDateYear = 2011;
@@ -14,9 +16,6 @@ window.piwik.maxDateYear = 2014;
window.piwik.maxDateMonth = 3;
window.piwik.maxDateDay = 29;
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-const PeriodSelector = require('./PeriodSelector.vue').default;
-
describe('PeriodSelector', () => {
const component = PeriodSelector as unknown as {
methods: Record unknown>;
@@ -41,7 +40,7 @@ describe('PeriodSelector', () => {
committedAnchorDate: new Date('2026-02-18'),
appliedRangeStartDate: '2026-02-01',
appliedRangeEndDate: '2026-02-18',
- selectedDateParam: '2026-02-01,2026-02-18',
+ selectedDateString: '2026-02-01,2026-02-18',
isCompareDirty: true,
hasPendingNonRangePeriodChange: false,
getCurrentRollingDateParamIfOwnedByPreset: jest.fn(() => null),
@@ -362,20 +361,6 @@ describe('PeriodSelector', () => {
expect(computed.hasPendingNonRangePeriodChange.call(changedPeriodVm)).toBe(true);
});
- it('allows compare apply path after same-period radio click', () => {
- const selectedDate = new Date('2026-02-18');
- const vm: any = createApplyVm({
- uiSelection: { type: 'period', id: 'day' },
- selectedPeriod: 'day',
- committedPeriod: 'day',
- committedAnchorDate: selectedDate,
- });
-
- callOnApplyClicked(vm);
-
- expectCommitSelection(vm, '2026-02-18', 'day');
- });
-
it('rehydrates preset ownership from tokenized hash values', () => {
const vm: any = {
periodsFiltered: ['day', 'week', 'month', 'year', 'range'],
@@ -457,6 +442,19 @@ describe('PeriodSelector', () => {
expectCommitSelection(vm, 'today', 'week');
});
+ it('commits explicit non-range date on compare-only apply when selection is already committed', () => {
+ const vm: any = createApplyVm({
+ selectedPeriod: 'week',
+ committedPeriod: 'week',
+ committedAnchorDate: new Date('2026-02-18'),
+ getCurrentRollingDateParamIfOwnedByPreset: jest.fn(() => null),
+ });
+
+ callOnApplyClicked(vm);
+
+ expectCommitSelection(vm, '2026-02-18', 'week');
+ });
+
it('closes selector for non-range preset no-op apply when compare is unchanged', () => {
const vm: any = createApplyVm({
uiSelection: { type: 'preset', id: 'today' },
@@ -486,6 +484,21 @@ describe('PeriodSelector', () => {
expect(methods.isApplyEnabled.call(vm)).toBe(false);
});
+ it('enables apply for a valid period-owned range selection', () => {
+ const vm: any = {
+ uiSelection: { type: 'period', id: 'range' },
+ selectedPeriod: 'range',
+ hasPendingNonRangePeriodChange: false,
+ pendingPresetSelection: null,
+ isRangeValid: true,
+ isComparing: false,
+ comparePeriodType: 'previousPeriod',
+ isCompareRangeValid: jest.fn(() => true),
+ };
+
+ expect(methods.isApplyEnabled.call(vm)).toBe(true);
+ });
+
it('disables apply when opening with non-range period option selected and no compare changes', () => {
const vm: any = {
uiSelection: { type: 'period', id: 'day' },
@@ -502,7 +515,7 @@ describe('PeriodSelector', () => {
expect(methods.isApplyEnabled.call(vm)).toBe(false);
});
- it('keeps Apply disabled for period-owned non-range selection even when compare is dirty', () => {
+ it('intentional: keeps Apply disabled for period-owned non-range selection even when compare is dirty', () => {
const vm: any = {
uiSelection: { type: 'period', id: 'day' },
selectedPeriod: 'day',
@@ -518,7 +531,7 @@ describe('PeriodSelector', () => {
expect(methods.isApplyEnabled.call(vm)).toBe(false);
});
- it('allows compare edits but requires calendar click to commit period-owned non-range changes', () => {
+ it('intentional: compare edits in period-owned non-range mode require calendar click to commit', () => {
const originalInitTopControls = window.initTopControls;
window.initTopControls = jest.fn();
const updateLocationSpy = jest.spyOn(MatomoUrl, 'updateLocation');
@@ -623,7 +636,7 @@ describe('PeriodSelector', () => {
selectedPeriod: 'day',
calendarViewport: 'single',
commitSelectionToUrl: jest.fn(),
- selectedDateParam: '2026-02-01,2026-02-18',
+ selectedDateString: '2026-02-01,2026-02-18',
getCurrentRollingDateParamIfOwnedByPreset: jest.fn(() => null),
setUiSelection(selection: { type: string; id: string }, source: string|null) {
this.uiSelection = selection;
@@ -658,7 +671,7 @@ describe('PeriodSelector', () => {
},
appliedRangeStartDate: '2026-02-01',
appliedRangeEndDate: '2026-02-18',
- selectedDateParam: '2026-02-01,2026-02-18',
+ selectedDateString: '2026-02-01,2026-02-18',
getCurrentRollingDateParamIfOwnedByPreset: jest.fn(() => null),
commitSelectionToUrl: jest.fn(),
setUiSelection(selection: { type: string; id: string }, source: string|null) {
@@ -827,6 +840,12 @@ describe('PeriodSelector', () => {
const vm: any = {
committedPeriod: 'day',
committedAnchorDate: new Date(maxDate.getTime()),
+ minAllowedDate: new Date(
+ window.piwik.minDateYear,
+ window.piwik.minDateMonth - 1,
+ window.piwik.minDateDay,
+ ),
+ maxAllowedDate: maxDate,
canMovePeriod: jest.fn(() => true),
setPiwikPeriodAndDate: jest.fn(),
};
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.templateContract.spec.ts b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.templateContract.spec.ts
new file mode 100644
index 00000000000..f4f3c8b7a6a
--- /dev/null
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.templateContract.spec.ts
@@ -0,0 +1,116 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { mount } from '@vue/test-utils';
+import MatomoUrl from '../MatomoUrl/MatomoUrl';
+import PeriodSelector from './PeriodSelector.vue';
+
+window.piwik.minDateYear = 2011;
+window.piwik.minDateMonth = 11;
+window.piwik.minDateDay = 15;
+window.piwik.maxDateYear = 2014;
+window.piwik.maxDateMonth = 3;
+window.piwik.maxDateDay = 29;
+
+describe('PeriodSelector template contract', () => {
+ const originalInitTopControls = window.initTopControls;
+ const originalUrl = (MatomoUrl as any).url.value;
+
+ const setUrl = (url: string) => {
+ (MatomoUrl as any).url.value = new URL(url);
+ };
+
+ function mountSelector() {
+ return mount(PeriodSelector, {
+ shallow: true,
+ props: {
+ periods: ['day', 'week', 'month', 'year', 'range'],
+ },
+ global: {
+ mocks: {
+ translate: (key: string) => key,
+ },
+ stubs: {
+ PeriodSelectorOptionsColumn: false,
+ PeriodSelectorCalendarColumn: false,
+ },
+ },
+ });
+ }
+
+ beforeEach(() => {
+ if (!window.initTopControls) {
+ window.initTopControls = jest.fn();
+ }
+
+ setUrl(
+ 'https://matomo.test/index.php?module=CoreHome&action=index&period=day&date=today'
+ + '#?period=day&date=today&category=General_Actions&subcategory=General_Pages',
+ );
+ });
+
+ afterEach(() => {
+ (MatomoUrl as any).url.value = originalUrl;
+ window.initTopControls = originalInitTopControls;
+ });
+
+ it('keeps DOM hooks used by styles and behavior', async () => {
+ const wrapper = mountSelector();
+
+ expect(wrapper.find('#periodMore').exists()).toBe(true);
+ expect(wrapper.find('#periodMore').classes()).toContain('single-calendar');
+ expect(wrapper.find('#otherPeriods').exists()).toBe(true);
+ expect(wrapper.find('#datepicker').exists()).toBe(true);
+ expect(wrapper.find('#calendarApply').exists()).toBe(true);
+ expect(wrapper.find('#ajaxLoadingCalendar').exists()).toBe(false);
+
+ await wrapper.setData({
+ isLoadingNewPage: true,
+ selectedPeriod: 'range',
+ });
+
+ expect(wrapper.find('#periodMore').classes()).toContain('dual-calendar');
+ expect(wrapper.find('#ajaxLoadingCalendar').exists()).toBe(true);
+ wrapper.unmount();
+ });
+
+ it('forwards child events to existing parent handlers/state', async () => {
+ const wrapper = mountSelector();
+
+ wrapper.findComponent({ name: 'PeriodSelectorOptionsColumn' }).vm.$emit('period-select', {
+ period: 'range',
+ });
+
+ expect((wrapper.vm as any).selectedPeriod).toBe('range');
+ expect((wrapper.vm as any).calendarViewport).toBe('range');
+
+ await wrapper.setData({
+ uiSelection: { type: 'period', id: 'range' },
+ selectedPeriod: 'range',
+ calendarViewport: 'range',
+ isRangeValid: null,
+ appliedRangeStartDate: null,
+ appliedRangeEndDate: null,
+ });
+
+ wrapper.findComponent({ name: 'PeriodSelectorCalendarColumn' }).vm.$emit('range-change', {
+ start: '2026-02-01',
+ end: '2026-02-18',
+ });
+
+ expect((wrapper.vm as any).appliedRangeStartDate).toBe('2026-02-01');
+ expect((wrapper.vm as any).appliedRangeEndDate).toBe('2026-02-18');
+
+ wrapper.findComponent({ name: 'PeriodSelectorCalendarColumn' }).vm.$emit(
+ 'update:comparePeriodType',
+ 'previousYear',
+ );
+
+ expect((wrapper.vm as any).comparePeriodType).toBe('previousYear');
+ wrapper.unmount();
+ });
+});
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.types.ts b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.types.ts
new file mode 100644
index 00000000000..d0b54d67085
--- /dev/null
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.types.ts
@@ -0,0 +1,87 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { translate } from '../translate';
+import type {
+ PresetDateRangeId,
+ PresetDateRangeSelection,
+} from './PresetDateRangeResolver';
+import type { UiSelection as HashSyncUiSelection } from './PeriodSelectorHashSync';
+
+const NBSP = '\u00A0';
+
+export const COMPARE_PERIOD_TYPES = ['custom', 'previousPeriod', 'previousYear'];
+
+export const COMPARE_PERIOD_OPTIONS = [
+ { key: 'custom', value: translate('General_Custom') },
+ {
+ key: 'previousPeriod',
+ value: translate('General_PreviousPeriod').replace(/\s+/, NBSP),
+ },
+ {
+ key: 'previousYear',
+ value: translate('General_PreviousYear').replace(/\s+/, NBSP),
+ },
+];
+
+export function getSiteMinAllowedDate(): Date {
+ return new Date(window.piwik.minDateYear, window.piwik.minDateMonth - 1, window.piwik.minDateDay);
+}
+
+export function getSiteMaxAllowedDate(): Date {
+ return new Date(window.piwik.maxDateYear, window.piwik.maxDateMonth - 1, window.piwik.maxDateDay);
+}
+
+export const RANGE_PERIOD = 'range';
+
+export type InteractionSource = 'period' | 'preset' | 'calendar' | 'range' | null;
+export type SingleCalendarPeriod = 'day' | 'week' | 'month' | 'year';
+export type CalendarViewport = 'single' | 'range';
+export type UiSelection = HashSyncUiSelection;
+
+export function isValidDate(candidateDate: unknown): boolean {
+ if (Object.prototype.toString.call(candidateDate) !== '[object Date]') {
+ return false;
+ }
+
+ return !Number.isNaN((candidateDate as Date).getTime());
+}
+
+export function isSingleCalendarPeriod(period: string): period is SingleCalendarPeriod {
+ return period === 'day'
+ || period === 'week'
+ || period === 'month'
+ || period === 'year';
+}
+
+export interface PeriodSelectorState {
+ uiSelection: UiSelection;
+ lastInteractionSource: InteractionSource;
+ nextHashUiSelection: UiSelection|null;
+ nextHashSelectionKey: string|null;
+ lastKnownHashSelectionKey: string|null;
+ lastKnownHashContextKey: string|null;
+ minAllowedDate: Date;
+ maxAllowedDate: Date;
+ activePresetId: PresetDateRangeId|null;
+ pendingPresetSelection: PresetDateRangeSelection|null;
+ committedPeriod: string;
+ committedAnchorDate: Date|null;
+ selectedPeriod: string;
+ calendarViewport: CalendarViewport;
+ singleCalendarPeriod: SingleCalendarPeriod;
+ singleCalendarSelectedDate: Date|null;
+ appliedRangeStartDate: string|null;
+ appliedRangeEndDate: string|null;
+ isRangeValid: boolean|null;
+ isLoadingNewPage: boolean;
+ isComparing: null|boolean;
+ comparePeriodType: string;
+ compareStartDate: string;
+ compareEndDate: string;
+ compareAppliedSignature: string;
+}
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.vue b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.vue
index c85ff26e6f5..bb7fd49a898 100644
--- a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.vue
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelector.vue
@@ -43,80 +43,43 @@
:class="selectedPeriod === 'range' ? 'dual-calendar' : 'single-calendar'"
>
-
- {{ translate('General_ChoosePeriod') }}
-
-
-
+
+
import { defineComponent } from 'vue';
import ExpandOnClick from '../ExpandOnClick/ExpandOnClick';
-import DateRangePicker from '../DateRangePicker/DateRangePicker.vue';
-import PeriodDatePicker from '../PeriodDatePicker/PeriodDatePicker.vue';
import ActivityIndicator from '../ActivityIndicator/ActivityIndicator.vue';
-import Matomo from '../Matomo/Matomo';
-import { translate } from '../translate';
import ComparisonsStore from '../Comparisons/Comparisons.store.instance';
+import Matomo from '../Matomo/Matomo';
+import MatomoUrl from '../MatomoUrl/MatomoUrl';
import {
Periods,
parseDate,
@@ -157,11 +118,20 @@ import {
format,
datesAreInTheSamePeriod,
} from '../Periods';
-import MatomoUrl from '../MatomoUrl/MatomoUrl';
import Tooltips from '../Tooltips/Tooltips';
-import PresetDateRanges from './PresetDateRanges.vue';
-import PeriodOptions from './PeriodOptions.vue';
-import PeriodSelectorCompareControls from './PeriodSelectorCompareControls.vue';
+import { translate } from '../translate';
+import {
+ isApplyEnabledFromState,
+ resolveNonRangeApplyAction,
+} from './PeriodSelector.applyFlow';
+import {
+ clampDateToBounds,
+ isKeyboardExpandEvent,
+ shiftDateByPeriod,
+ stripCompareDateParams,
+} from './PeriodSelector.helpers';
+import PeriodSelectorOptionsColumn from './PeriodSelectorOptionsColumn.vue';
+import PeriodSelectorCalendarColumn from './PeriodSelectorCalendarColumn.vue';
import type {
PresetDateRangeId,
PresetDateRangeSelection,
@@ -173,77 +143,20 @@ import {
resolveSyncedUiSelection,
shouldSkipHashSync,
} from './PeriodSelectorHashSync';
-import type { UiSelection as HashSyncUiSelection } from './PeriodSelectorHashSync';
-
-const NBSP = Matomo.helper.htmlDecode(' ');
-
-const COMPARE_PERIOD_TYPES = ['custom', 'previousPeriod', 'previousYear'];
-
-const COMPARE_PERIOD_OPTIONS = [
- { key: 'custom', value: translate('General_Custom') },
- {
- key: 'previousPeriod',
- value: translate('General_PreviousPeriod').replace(/\s+/, NBSP),
- },
- {
- key: 'previousYear',
- value: translate('General_PreviousYear').replace(/\s+/, NBSP),
- },
-];
-
-// the date when the site was created
-const siteMinAllowedDate = new Date(Matomo.minDateYear, Matomo.minDateMonth - 1, Matomo.minDateDay);
-// today/now
-const siteMaxAllowedDate = new Date(Matomo.maxDateYear, Matomo.maxDateMonth - 1, Matomo.maxDateDay);
-const RANGE_PERIOD = 'range';
-
-type InteractionSource = 'period' | 'preset' | 'calendar' | 'range' | null;
-type SingleCalendarPeriod = 'day' | 'week' | 'month' | 'year';
-type CalendarViewport = 'single' | 'range';
-type UiSelection = HashSyncUiSelection ;
-
-function isValidDate(d: any) { // eslint-disable-line @typescript-eslint/no-explicit-any
- if (Object.prototype.toString.call(d) !== '[object Date]') {
- return false;
- }
-
- return !Number.isNaN(d.getTime());
-}
-
-function isSingleCalendarPeriod(period: string): period is SingleCalendarPeriod {
- return period === 'day'
- || period === 'week'
- || period === 'month'
- || period === 'year';
-}
-
-interface PeriodSelectorState {
- uiSelection: UiSelection;
- lastInteractionSource: InteractionSource;
- nextHashUiSelection: UiSelection|null;
- nextHashSelectionKey: string|null;
- lastKnownHashSelectionKey: string|null;
- lastKnownHashContextKey: string|null;
- minAllowedDate: Date;
- maxAllowedDate: Date;
- activePresetId: PresetDateRangeId|null;
- pendingPresetSelection: PresetDateRangeSelection|null;
- committedPeriod: string;
- committedAnchorDate: Date|null;
- selectedPeriod: string;
- calendarViewport: CalendarViewport;
- singleCalendarPeriod: SingleCalendarPeriod;
- singleCalendarSelectedDate: Date|null;
- appliedRangeStartDate: string|null;
- appliedRangeEndDate: string|null;
- isRangeValid: boolean|null;
- isLoadingNewPage: boolean;
- isComparing: null|boolean;
- comparePeriodType: string;
- compareStartDate: string;
- compareEndDate: string;
- compareAppliedSignature: string;
-}
+import type {
+ InteractionSource,
+ PeriodSelectorState,
+ UiSelection,
+} from './PeriodSelector.types';
+import {
+ COMPARE_PERIOD_OPTIONS,
+ COMPARE_PERIOD_TYPES,
+ RANGE_PERIOD,
+ getSiteMaxAllowedDate,
+ getSiteMinAllowedDate,
+ isValidDate,
+ isSingleCalendarPeriod,
+} from './PeriodSelector.types';
export default defineComponent({
name: 'PeriodSelector',
@@ -251,11 +164,8 @@ export default defineComponent({
periods: Array,
},
components: {
- DateRangePicker,
- PeriodDatePicker,
- PresetDateRanges,
- PeriodOptions,
- PeriodSelectorCompareControls,
+ PeriodSelectorOptionsColumn,
+ PeriodSelectorCalendarColumn,
ActivityIndicator,
},
directives: {
@@ -267,6 +177,9 @@ export default defineComponent({
const initialSinglePeriod = isSingleCalendarPeriod(selectedPeriod)
? selectedPeriod
: 'day';
+ const siteMinAllowedDate = getSiteMinAllowedDate();
+ const siteMaxAllowedDate = getSiteMaxAllowedDate();
+
return {
uiSelection: { type: 'period', id: selectedPeriod },
lastInteractionSource: null,
@@ -425,7 +338,7 @@ export default defineComponent({
).startDate;
return format(newStartDate);
},
- selectedDateParam() {
+ selectedDateString() {
if (this.selectedPeriod === 'range') {
const dateFrom = this.appliedRangeStartDate!;
const dateTo = this.appliedRangeEndDate!;
@@ -517,14 +430,12 @@ export default defineComponent({
},
methods: {
onExpand(event: MouseEvent|KeyboardEvent) {
- const isKeyboardEvent = event.detail === 0;
- if (isKeyboardEvent) {
+ if (isKeyboardExpandEvent(event)) {
window.$(this.$refs.root as HTMLElement).find('.ui-datepicker-month').focus();
}
},
onClosed(event: MouseEvent|KeyboardEvent) {
- const isKeyboardEvent = event.detail === 0;
- if (isKeyboardEvent) {
+ if (isKeyboardExpandEvent(event)) {
window.$(this.$refs.title as HTMLElement).focus();
}
},
@@ -651,14 +562,8 @@ export default defineComponent({
baseParams = MatomoUrl.parsed.value;
}
- // get params without comparePeriods/comparePeriodType/compareDates
- const paramsWithoutCompare = { ...baseParams };
- delete paramsWithoutCompare.comparePeriods;
- delete paramsWithoutCompare.comparePeriodType;
- delete paramsWithoutCompare.compareDates;
-
MatomoUrl.updateLocation({
- ...paramsWithoutCompare,
+ ...stripCompareDateParams(baseParams),
date,
period,
...compareParams,
@@ -700,7 +605,7 @@ export default defineComponent({
return false;
}
- const dateString = this.selectedDateParam;
+ const dateString = this.selectedDateString;
if (!dateString) {
return true;
}
@@ -713,39 +618,36 @@ export default defineComponent({
return true;
},
applyNonRangeOrCompareChanges() {
- if (this.hasPendingNonRangePeriodChange) {
- return;
- }
-
- if (!this.isCompareDirty) {
- if (this.shouldCloseSelectorWithoutApplying()) {
- this.closePeriodSelector();
- }
- return;
- }
-
- if (this.committedPeriod === RANGE_PERIOD) {
- if (!this.hasCommittedRangeBounds()) {
- return;
- }
+ const action = resolveNonRangeApplyAction({
+ hasPendingNonRangePeriodChange: this.hasPendingNonRangePeriodChange,
+ isCompareDirty: this.isCompareDirty,
+ shouldCloseSelectorWithoutApplying: this.shouldCloseSelectorWithoutApplying(),
+ appliedPeriod: this.committedPeriod,
+ hasCommittedRangeBounds: this.hasCommittedRangeBounds(),
+ rollingDateParam: this.getCurrentRollingDateParamIfOwnedByPreset(),
+ appliedRangeStartDate: this.appliedRangeStartDate,
+ appliedRangeEndDate: this.appliedRangeEndDate,
+ formattedAppliedAnchorDate: this.committedAnchorDate
+ ? format(this.committedAnchorDate)
+ : null,
+ });
- this.commitSelectionToUrl(
- this.getCurrentRollingDateParamIfOwnedByPreset()
- || `${this.appliedRangeStartDate},${this.appliedRangeEndDate}`,
- RANGE_PERIOD,
- );
+ if (action.type === 'stop') {
return;
}
- if (!this.committedAnchorDate) {
+ if (action.type === 'close') {
+ this.closePeriodSelector();
return;
}
- this.commitSelectionToUrl(
- this.getCurrentRollingDateParamIfOwnedByPreset() || format(this.committedAnchorDate),
- this.committedPeriod,
- );
+ this.commitSelectionToUrl(action.date, action.period);
},
+
+ // Invariant: non-range period mode intentionally cannot commit compare-only via Apply.
+ // When a non-range period option owns the selection, 'Apply' button stays disabled.
+ // Compare controls can still be edited in this state, but users must click the calendar
+ // to commit date/compare changes.
onApplyClicked() {
if (this.applyPendingPresetSelection()) {
return;
@@ -754,7 +656,6 @@ export default defineComponent({
if (this.applyRangeSelection()) {
return;
}
-
this.applyNonRangeOrCompareChanges();
},
updateComparisonValuesFromStore() {
@@ -800,7 +701,11 @@ export default defineComponent({
getCurrentContextKey(): string {
return getContextKeyFromParsed(MatomoUrl.parsed.value as Record);
},
- applyUiSelectionFromHash(period: string, date: string, syncedUiSelection: UiSelection|null) {
+ applyUiSelectionFromHash(
+ period: string,
+ date: string,
+ syncedUiSelection: UiSelection|null,
+ ) {
if (syncedUiSelection) {
this.uiSelection = syncedUiSelection;
this.activePresetId = syncedUiSelection.type === 'preset'
@@ -889,7 +794,11 @@ export default defineComponent({
this.lastKnownHashSelectionKey = hashSyncState.lastKnownHashSelectionKey;
this.lastKnownHashContextKey = hashSyncState.lastKnownHashContextKey;
- this.applyUiSelectionFromHash(period, date, hashSyncState.syncedUiSelection);
+ this.applyUiSelectionFromHash(
+ period,
+ date,
+ hashSyncState.syncedUiSelection,
+ );
this.committedPeriod = period;
this.selectedPeriod = period;
this.resetSelectedDateValues();
@@ -914,10 +823,10 @@ export default defineComponent({
setRangeStartEndFromPeriod(period: string, dateStr: string) {
const dateRange = Periods.parse(period, dateStr).getDateRange();
this.appliedRangeStartDate = format(
- dateRange[0] < siteMinAllowedDate ? siteMinAllowedDate : dateRange[0],
+ dateRange[0] < this.minAllowedDate ? this.minAllowedDate : dateRange[0],
);
this.appliedRangeEndDate = format(
- dateRange[1] > siteMaxAllowedDate ? siteMaxAllowedDate : dateRange[1],
+ dateRange[1] > this.maxAllowedDate ? this.maxAllowedDate : dateRange[1],
);
},
canInteractWithRangeCalendar(): boolean {
@@ -956,34 +865,16 @@ export default defineComponent({
}
},
isApplyEnabled() {
- // When a non-range period option owns the selection, 'Apply' button stays disabled.
- // Compare controls can still be edited in this state, but users must click the calendar
- // to commit date/compare changes.
- if (this.uiSelection.type === 'period'
- && this.selectedPeriod !== RANGE_PERIOD
- ) {
- return false;
- }
-
- if (this.hasPendingNonRangePeriodChange) {
- return false;
- }
-
- if (this.selectedPeriod === RANGE_PERIOD
- && !this.pendingPresetSelection
- && !this.isRangeValid
- ) {
- return false;
- }
-
- if (this.isComparing
- && this.comparePeriodType === 'custom'
- && !this.isCompareRangeValid()
- ) {
- return false;
- }
-
- return true;
+ return isApplyEnabledFromState({
+ uiSelectionType: this.uiSelection.type,
+ uiSelectedPeriod: this.selectedPeriod,
+ hasPendingNonRangePeriodChange: this.hasPendingNonRangePeriodChange,
+ hasPendingPresetSelection: !!this.pendingPresetSelection,
+ isRangeValid: this.isRangeValid,
+ isComparing: this.isComparing,
+ comparePeriodType: this.comparePeriodType,
+ isCompareRangeValid: this.isCompareRangeValid(),
+ });
},
closePeriodSelector() {
(this.$refs.root as HTMLElement).classList.remove('expanded');
@@ -1008,36 +899,11 @@ export default defineComponent({
return;
}
- const newDate = this.committedAnchorDate != null
- ? new Date(this.committedAnchorDate.getTime())
- : new Date();
-
- switch (this.committedPeriod) {
- case 'day':
- newDate.setDate(newDate.getDate() + direction);
- break;
- case 'week':
- newDate.setDate(newDate.getDate() + direction * 7);
- break;
- case 'month':
- newDate.setMonth(newDate.getMonth() + direction);
- break;
- case 'year':
- newDate.setFullYear(newDate.getFullYear() + direction);
- break;
- default:
- break;
- }
-
- // Ensure the date is not outside the min and max dates
- if (newDate < siteMinAllowedDate) {
- newDate.setTime(siteMinAllowedDate.getTime());
- }
- if (newDate > siteMaxAllowedDate) {
- newDate.setTime(siteMaxAllowedDate.getTime());
- }
+ const baseDate = this.committedAnchorDate || new Date();
+ const shiftedDate = shiftDateByPeriod(baseDate, this.committedPeriod, direction);
+ const clampedDate = clampDateToBounds(shiftedDate, this.minAllowedDate, this.maxAllowedDate);
- this.setPiwikPeriodAndDate(this.committedPeriod, newDate);
+ this.setPiwikPeriodAndDate(this.committedPeriod, clampedDate);
},
isPeriodMoveDisabled(direction: number) {
// disable period move when date range is used or when we would go out of the min/max dates
@@ -1050,7 +916,7 @@ export default defineComponent({
if (this.committedAnchorDate === null) {
return false;
}
- const boundaryDate = (direction === -1) ? siteMinAllowedDate : siteMaxAllowedDate;
+ const boundaryDate = (direction === -1) ? this.minAllowedDate : this.maxAllowedDate;
return !datesAreInTheSamePeriod(
this.committedAnchorDate!,
boundaryDate,
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCalendarColumn.vue b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCalendarColumn.vue
new file mode 100644
index 00000000000..7aca1c1ab73
--- /dev/null
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCalendarColumn.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
diff --git a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue
index c71c085e6d3..ac1f4cabb52 100644
--- a/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue
+++ b/plugins/CoreHome/vue/src/PeriodSelector/PeriodSelectorCompareControls.vue
@@ -10,14 +10,15 @@
class="compare-checkbox"
v-if="isComparisonEnabled"
>
- | |