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

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordizzy <diosmosis@users.noreply.github.com>2021-12-12 21:42:33 +0300
committerGitHub <noreply@github.com>2021-12-12 21:42:33 +0300
commit9c83ceff60b8eddd39f54d95145adff481bbdd46 (patch)
treecad97cb90d33d07b05600681f447dde72f237a40
parent6639cce822c4db6d71124030448c9ea1f7b40c68 (diff)
[Vue] two bug fixes: use correct base for site change + correct URL for launching new site (#18477)
* use correct base for site change * another fix, date & period are generally expected to be in the hash since angularjs code will directly forward them w/o looking at the base query string * forward hash as well * a better fix, make sure the required params are added if not present in MatomoUrl store * remove single case fix * built vue files * apply review feedback * fix frontend unit tests Co-authored-by: sgiehl <stefan@matomo.org>
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.js21
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.min.js4
-rw-r--r--plugins/CoreHome/vue/src/Comparisons/Comparisons.store.spec.ts4
-rw-r--r--plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts18
-rw-r--r--plugins/CoreHome/vue/src/SiteSelector/SitesStore.ts6
5 files changed, 43 insertions, 10 deletions
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js
index 0f81c17636..824742bb55 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js
@@ -1129,7 +1129,8 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
MatomoUrl_createClass(MatomoUrl, [{
key: "updateHash",
value: function updateHash(params) {
- var serializedParams = typeof params !== 'string' ? this.stringify(params) : params;
+ var modifiedParams = this.getFinalHashParams(params);
+ var serializedParams = this.stringify(modifiedParams);
var $location = Matomo_Matomo.helper.getAngularDependency('$location');
$location.search(serializedParams);
}
@@ -1138,7 +1139,8 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
value: function updateUrl(params) {
var hashParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var serializedParams = typeof params !== 'string' ? this.stringify(params) : params;
- var serializedHashParams = typeof hashParams !== 'string' ? this.stringify(hashParams) : hashParams;
+ var modifiedHashParams = this.getFinalHashParams(hashParams);
+ var serializedHashParams = this.stringify(modifiedHashParams);
var url = "?".concat(serializedParams);
if (serializedHashParams.length) {
@@ -1146,6 +1148,16 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
}
window.broadcast.propagateNewPage('', undefined, undefined, undefined, url);
+ }
+ }, {
+ key: "getFinalHashParams",
+ value: function getFinalHashParams(params) {
+ return _objectSpread({
+ // these params must always be present in the hash
+ period: this.parsed.value.period,
+ date: this.parsed.value.date,
+ segment: this.parsed.value.segment
+ }, typeof params !== 'string' ? params : MatomoUrl_broadcast.getValuesFromUrl("?".concat(params), true));
} // if we're in an embedded context, loads an entire new URL, otherwise updates the hash
}, {
@@ -5297,7 +5309,10 @@ var SitesStore_SitesStore = /*#__PURE__*/function () {
period: src_MatomoUrl_MatomoUrl.parsed.value.period
}));
} else {
- src_MatomoUrl_MatomoUrl.updateUrl(SitesStore_objectSpread(SitesStore_objectSpread({}, src_MatomoUrl_MatomoUrl.parsed.value), {}, {
+ src_MatomoUrl_MatomoUrl.updateUrl(SitesStore_objectSpread(SitesStore_objectSpread({}, src_MatomoUrl_MatomoUrl.urlParsed.value), {}, {
+ segment: '',
+ idSite: idSite
+ }), SitesStore_objectSpread(SitesStore_objectSpread({}, src_MatomoUrl_MatomoUrl.hashParsed.value), {}, {
segment: '',
idSite: idSite
}));
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
index c7983c4879..5f97289de5 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
@@ -79,7 +79,7 @@ function se(e,t){return me(e)||fe(e,t)||de(e,t)||ue()}function ue(){throw new Ty
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */p.addCustomPeriod("year",le);var we=window,je=we.piwik,ke=we.broadcast;function Se(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var Ce=function(){function e(){var t=this;ve(this,e),Oe(this,"urlQuery",Object(a["ref"])("")),Oe(this,"hashQuery",Object(a["ref"])("")),Oe(this,"urlParsed",Object(a["computed"])((function(){return Object(a["readonly"])(ke.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),Oe(this,"hashParsed",Object(a["computed"])((function(){return Object(a["readonly"])(ke.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),Oe(this,"parsed",Object(a["computed"])((function(){return Object(a["readonly"])(ge(ge({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),S.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return ye(e,[{key:"updateHash",value:function(e){var t="string"!==typeof e?this.stringify(e):e,n=S.helper.getAngularDependency("$location");n.search(t)}},{key:"updateUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?this.stringify(e):e,r="string"!==typeof t?this.stringify(t):t,i="?".concat(n);r.length&&(i="".concat(i,"#?").concat(r)),window.broadcast.propagateNewPage("",void 0,void 0,void 0,i)}},{key:"updateLocation",value:function(e){S.helper.isAngularRenderingThePage()?this.updateHash(e):this.updateUrl(e)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"stringify",value:function(e){var t=Object.fromEntries(Object.entries(e).filter((function(e){var t=se(e,2),n=t[1];return""!==n&&null!==n&&void 0!==n})));return $.param(t).replace(/%5B%5D/g,"[]").replace(/%2C/g,",")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(Se(t,e)&&(je.period!==t||je.currentDateString!==e)){je.period=t;var n=p.parse(t,e).getDateRange();je.startDateString=D(n[0]),je.endDateString=D(n[1]),je.updateDateInTitle(e,t),"range"===je.period&&(e="".concat(je.startDateString,",").concat(je.endDateString)),je.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),De=new Ce,Pe=De;
+ */p.addCustomPeriod("year",le);var we=window,je=we.piwik,ke=we.broadcast;function Se(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var Ce=function(){function e(){var t=this;ve(this,e),Oe(this,"urlQuery",Object(a["ref"])("")),Oe(this,"hashQuery",Object(a["ref"])("")),Oe(this,"urlParsed",Object(a["computed"])((function(){return Object(a["readonly"])(ke.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),Oe(this,"hashParsed",Object(a["computed"])((function(){return Object(a["readonly"])(ke.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),Oe(this,"parsed",Object(a["computed"])((function(){return Object(a["readonly"])(ge(ge({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),S.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return ye(e,[{key:"updateHash",value:function(e){var t=this.getFinalHashParams(e),n=this.stringify(t),r=S.helper.getAngularDependency("$location");r.search(n)}},{key:"updateUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?this.stringify(e):e,r=this.getFinalHashParams(t),i=this.stringify(r),a="?".concat(n);i.length&&(a="".concat(a,"#?").concat(i)),window.broadcast.propagateNewPage("",void 0,void 0,void 0,a)}},{key:"getFinalHashParams",value:function(e){return ge({period:this.parsed.value.period,date:this.parsed.value.date,segment:this.parsed.value.segment},"string"!==typeof e?e:ke.getValuesFromUrl("?".concat(e),!0))}},{key:"updateLocation",value:function(e){S.helper.isAngularRenderingThePage()?this.updateHash(e):this.updateUrl(e)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"stringify",value:function(e){var t=Object.fromEntries(Object.entries(e).filter((function(e){var t=se(e,2),n=t[1];return""!==n&&null!==n&&void 0!==n})));return $.param(t).replace(/%5B%5D/g,"[]").replace(/%2C/g,",")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(Se(t,e)&&(je.period!==t||je.currentDateString!==e)){je.period=t;var n=p.parse(t,e).getDateRange();je.startDateString=D(n[0]),je.endDateString=D(n[1]),je.updateDateInTitle(e,t),"range"===je.period&&(e="".concat(je.startDateString,",").concat(je.endDateString)),je.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),De=new Ce,Pe=De;
/*!
* Matomo - free/libre analytics platform
*
@@ -264,7 +264,7 @@ function vt(e){return{restrict:"A",priority:10,link:function(t,n,r){var i={insta
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var ai=function(){function e(){var t=this;ti(this,e),ii(this,"state",Object(a["reactive"])({initialSites:[],isInitialized:!1})),ii(this,"currentRequest",void 0),ii(this,"limitRequest",void 0),ii(this,"initialSites",Object(a["computed"])((function(){return Object(a["readonly"])(t.state.initialSites)})))}return ri(e,[{key:"loadInitialSites",value:function(){var e=this;return this.state.isInitialized?Promise.resolve(Object(a["readonly"])(this.state.initialSites)):this.searchSite("%").then((function(t){return e.state.isInitialized=!0,e.state.initialSites=t,Object(a["readonly"])(t)}))}},{key:"loadSite",value:function(e){"all"===e?Pe.updateUrl(ei(ei({},Pe.urlParsed.value),{},{module:"MultiSites",action:"index",date:Pe.parsed.value.date,period:Pe.parsed.value.period})):Pe.updateUrl(ei(ei({},Pe.parsed.value),{},{segment:"",idSite:e}))}},{key:"searchSite",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?(this.currentRequest&&this.currentRequest.abort(),this.limitRequest||(this.limitRequest=Le.fetch({method:"SitesManager.getNumWebsitesToDisplayPerPage"})),this.limitRequest.then((function(r){var i=r.value,a="SitesManager.getPatternMatchSites";return n&&(a="SitesManager.getSitesWithAdminAccess"),t.currentRequest=Le.fetch({method:a,limit:i,pattern:e}),t.currentRequest})).then((function(e){return e?t.processWebsitesList(e):null})).finally((function(){t.currentRequest=null}))):this.loadInitialSites()}},{key:"processWebsitesList",value:function(e){var t=e;return t&&t.length?(t=t.map((function(e){return ei(ei({},e),{},{name:e.group?"[".concat(e.group,"] ").concat(e.name):e.name})})),t.sort((function(e,t){return e.name.toLowerCase()<t.name.toLowerCase()?-1:e.name.toLowerCase()>t.name.toLowerCase()?1:0})),t):[]}}]),e}(),oi=new ai,ci=300;function li(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ci;return function(){for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];t&&clearTimeout(t),t=setTimeout((function(){e.apply(void 0,i)}),n)}}function si(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ui(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?si(Object(n),!0).forEach((function(t){di(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):si(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function di(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var pi=Object(a["defineComponent"])({props:{modelValue:{Object:Object,default:function(e){return e.modelValue?e.modelValue:S.idSite?{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}:void 0}},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:C("General_MultiSitesSummary")},allSitesLocation:{type:String,default:"bottom"},placeholder:String},emits:["update:modelValue","blur"],components:{AllSitesLink:Xr},directives:{FocusAnywhereButHere:ze,FocusIf:Qe},watch:{searchTerm:function(){this.onSearchTermChanged()}},data:function(){return{searchTerm:"",activeSiteId:S.idSite,showSitesList:!1,isLoading:!1,sites:[],autocompleteMinSites:parseInt(S.config.autocomplete_min_sites,10)}},mounted:function(){var e=this;window.initTopControls(),this.loadInitialSites().then((function(){e.modelValue&&e.modelValue.id||e.hasMultipleSites||!e.sites[0]||e.$emit("update:modelValue",{id:e.sites[0].idsite,name:e.sites[0].name})}));var t=C("CoreHome_ShortcutWebsiteSelector");S.helper.registerShortcut("w",t,(function(t){t.altKey||(t.preventDefault?t.preventDefault():t.returnValue=!1,e.$refs.selectorLink.click(),e.$refs.selectorLink.focus())}))},computed:{shouldFocusOnSearch:function(){return this.showSitesList&&this.autocompleteMinSites<=this.sites.length||this.searchTerm},selectorLinkTitle:function(){var e;return this.hasMultipleSites?C("CoreHome_ChangeCurrentWebsite",(null===(e=this.modelValue)||void 0===e?void 0:e.name)||this.firstSiteName):""},hasMultipleSites:function(){return oi.initialSites.value&&oi.initialSites.value.length>1},firstSiteName:function(){var e=oi.initialSites.value;return e&&e.length>0?e[0].name:""},urlAllSites:function(){var e=Pe.stringify(ui(ui({},Pe.urlParsed.value),{},{module:"MultiSites",action:"index",date:Pe.parsed.value.date,period:Pe.parsed.value.period}));return"?".concat(e)}},created:function(){this.searchSite=li(this.searchSite.bind(this))},methods:{onSearchTermChanged:function(){this.searchTerm?(this.isLoading=!0,this.searchSite(this.searchTerm)):(this.isLoading=!1,this.loadInitialSites())},onAllSitesClick:function(e){this.switchSite({idsite:"all",name:this.allSitesText},e),this.showSitesList=!1},switchSite:function(e,t){var n=-1!==navigator.userAgent.indexOf("Mac OS X")?t.metaKey:t.ctrlKey;t&&n&&t.target&&t.target.href?window.open(t.target.href,"_blank"):(this.$emit("update:modelValue",{id:e.idsite,name:e.name}),this.switchSiteOnSelect&&this.activeSiteId!==e.idsite&&oi.loadSite(e.idsite))},onBlur:function(){this.showSitesList=!1,this.$emit("blur")},onClickSelector:function(){this.hasMultipleSites&&(this.showSitesList=!this.showSitesList,this.isLoading||this.searchTerm||this.loadInitialSites())},onPressEnter:function(e){"Enter"===e.key&&(e.preventDefault(),this.showSitesList=!this.showSitesList,this.showSitesList&&!this.isLoading&&this.loadInitialSites())},getMatchedSiteName:function(e){var t=e.toUpperCase().indexOf(this.searchTerm.toUpperCase());if(-1===t||this.isLoading)return S.helper.htmlEntities(e);var n=S.helper.htmlEntities(e.substring(0,t)),r=S.helper.htmlEntities(e.substring(t+this.searchTerm.length));return"".concat(n,'<span class="autocompleteMatched">').concat(this.searchTerm,"</span>").concat(r)},loadInitialSites:function(){var e=this;return oi.loadInitialSites().then((function(t){e.sites=t||[]}))},searchSite:function(e){var t=this;this.isLoading=!0,oi.searchSite(e,this.onlySitesWithAdminAccess).then((function(n){e===t.searchTerm&&n&&(t.sites=n)})).finally((function(){t.isLoading=!1}))},getUrlForSiteId:function(e){var t=Pe.stringify(ui(ui({},Pe.urlParsed.value),{},{segment:"",idSite:e})),n=Pe.stringify(ui(ui({},Pe.hashParsed.value),{},{segment:"",idSite:e}));return"?".concat(t,"#?").concat(n)}}});pi.render=Wr;var fi=pi,mi=(xt({component:fi,require:"?ngModel",scope:{showSelectedSite:{angularJsBind:"="},showAllSitesItem:{angularJsBind:"="},switchSiteOnSelect:{angularJsBind:"="},onlySitesWithAdminAccess:{angularJsBind:"="},name:{angularJsBind:"@"},allSitesText:{angularJsBind:"@"},allSitesLocation:{angularJsBind:"@"},placeholder:{angularJsBind:"@"},modelValue:{default:function(e,t,n){return n.siteid&&n.sitename?{id:n.siteid,name:S.helper.htmlDecode(n.sitename)}:S.idSite?{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}:void 0}}},$inject:["$timeout"],directiveName:"piwikSiteselector",events:{"update:modelValue":function(e,t,n,r,i,a,o){(e&&!t.modelValue||!e&&t.modelValue||e.id!==t.modelValue.id)&&o((function(){n.value=e,r.attr("siteid",e.id),r.trigger("change",e),a&&(a.$setViewValue(e),a.$render())}))},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}},postCreate:function(e,t,n,r,i){var o=i;t.$watch("value",(function(t){Object(a["nextTick"])((function(){t!==e.modelValue&&(e.modelValue=t)}))})),o&&(o.$setViewValue(e.modelValue),o.$render=function(){Object(a["nextTick"])((function(){Object(a["nextTick"])((function(){angular.isString(o.$viewValue)?e.modelValue=JSON.parse(o.$viewValue):e.modelValue=o.$viewValue}))}))})}}),{ref:"root",class:"quickAccessInside"}),hi=["title"],gi={class:"dropdown"},vi={class:"no-result"},bi=["onClick"],yi=["onMouseenter","onClick"],Oi={class:"quickAccessMatomoSearch"},wi=["onMouseenter","onClick"],ji=["textContent"],ki={class:"quick-access-category helpCategory"},Si=["href"];
+ */var ai=function(){function e(){var t=this;ti(this,e),ii(this,"state",Object(a["reactive"])({initialSites:[],isInitialized:!1})),ii(this,"currentRequest",void 0),ii(this,"limitRequest",void 0),ii(this,"initialSites",Object(a["computed"])((function(){return Object(a["readonly"])(t.state.initialSites)})))}return ri(e,[{key:"loadInitialSites",value:function(){var e=this;return this.state.isInitialized?Promise.resolve(Object(a["readonly"])(this.state.initialSites)):this.searchSite("%").then((function(t){return e.state.isInitialized=!0,e.state.initialSites=t,Object(a["readonly"])(t)}))}},{key:"loadSite",value:function(e){"all"===e?Pe.updateUrl(ei(ei({},Pe.urlParsed.value),{},{module:"MultiSites",action:"index",date:Pe.parsed.value.date,period:Pe.parsed.value.period})):Pe.updateUrl(ei(ei({},Pe.urlParsed.value),{},{segment:"",idSite:e}),ei(ei({},Pe.hashParsed.value),{},{segment:"",idSite:e}))}},{key:"searchSite",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?(this.currentRequest&&this.currentRequest.abort(),this.limitRequest||(this.limitRequest=Le.fetch({method:"SitesManager.getNumWebsitesToDisplayPerPage"})),this.limitRequest.then((function(r){var i=r.value,a="SitesManager.getPatternMatchSites";return n&&(a="SitesManager.getSitesWithAdminAccess"),t.currentRequest=Le.fetch({method:a,limit:i,pattern:e}),t.currentRequest})).then((function(e){return e?t.processWebsitesList(e):null})).finally((function(){t.currentRequest=null}))):this.loadInitialSites()}},{key:"processWebsitesList",value:function(e){var t=e;return t&&t.length?(t=t.map((function(e){return ei(ei({},e),{},{name:e.group?"[".concat(e.group,"] ").concat(e.name):e.name})})),t.sort((function(e,t){return e.name.toLowerCase()<t.name.toLowerCase()?-1:e.name.toLowerCase()>t.name.toLowerCase()?1:0})),t):[]}}]),e}(),oi=new ai,ci=300;function li(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ci;return function(){for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];t&&clearTimeout(t),t=setTimeout((function(){e.apply(void 0,i)}),n)}}function si(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ui(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?si(Object(n),!0).forEach((function(t){di(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):si(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function di(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var pi=Object(a["defineComponent"])({props:{modelValue:{Object:Object,default:function(e){return e.modelValue?e.modelValue:S.idSite?{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}:void 0}},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:C("General_MultiSitesSummary")},allSitesLocation:{type:String,default:"bottom"},placeholder:String},emits:["update:modelValue","blur"],components:{AllSitesLink:Xr},directives:{FocusAnywhereButHere:ze,FocusIf:Qe},watch:{searchTerm:function(){this.onSearchTermChanged()}},data:function(){return{searchTerm:"",activeSiteId:S.idSite,showSitesList:!1,isLoading:!1,sites:[],autocompleteMinSites:parseInt(S.config.autocomplete_min_sites,10)}},mounted:function(){var e=this;window.initTopControls(),this.loadInitialSites().then((function(){e.modelValue&&e.modelValue.id||e.hasMultipleSites||!e.sites[0]||e.$emit("update:modelValue",{id:e.sites[0].idsite,name:e.sites[0].name})}));var t=C("CoreHome_ShortcutWebsiteSelector");S.helper.registerShortcut("w",t,(function(t){t.altKey||(t.preventDefault?t.preventDefault():t.returnValue=!1,e.$refs.selectorLink.click(),e.$refs.selectorLink.focus())}))},computed:{shouldFocusOnSearch:function(){return this.showSitesList&&this.autocompleteMinSites<=this.sites.length||this.searchTerm},selectorLinkTitle:function(){var e;return this.hasMultipleSites?C("CoreHome_ChangeCurrentWebsite",(null===(e=this.modelValue)||void 0===e?void 0:e.name)||this.firstSiteName):""},hasMultipleSites:function(){return oi.initialSites.value&&oi.initialSites.value.length>1},firstSiteName:function(){var e=oi.initialSites.value;return e&&e.length>0?e[0].name:""},urlAllSites:function(){var e=Pe.stringify(ui(ui({},Pe.urlParsed.value),{},{module:"MultiSites",action:"index",date:Pe.parsed.value.date,period:Pe.parsed.value.period}));return"?".concat(e)}},created:function(){this.searchSite=li(this.searchSite.bind(this))},methods:{onSearchTermChanged:function(){this.searchTerm?(this.isLoading=!0,this.searchSite(this.searchTerm)):(this.isLoading=!1,this.loadInitialSites())},onAllSitesClick:function(e){this.switchSite({idsite:"all",name:this.allSitesText},e),this.showSitesList=!1},switchSite:function(e,t){var n=-1!==navigator.userAgent.indexOf("Mac OS X")?t.metaKey:t.ctrlKey;t&&n&&t.target&&t.target.href?window.open(t.target.href,"_blank"):(this.$emit("update:modelValue",{id:e.idsite,name:e.name}),this.switchSiteOnSelect&&this.activeSiteId!==e.idsite&&oi.loadSite(e.idsite))},onBlur:function(){this.showSitesList=!1,this.$emit("blur")},onClickSelector:function(){this.hasMultipleSites&&(this.showSitesList=!this.showSitesList,this.isLoading||this.searchTerm||this.loadInitialSites())},onPressEnter:function(e){"Enter"===e.key&&(e.preventDefault(),this.showSitesList=!this.showSitesList,this.showSitesList&&!this.isLoading&&this.loadInitialSites())},getMatchedSiteName:function(e){var t=e.toUpperCase().indexOf(this.searchTerm.toUpperCase());if(-1===t||this.isLoading)return S.helper.htmlEntities(e);var n=S.helper.htmlEntities(e.substring(0,t)),r=S.helper.htmlEntities(e.substring(t+this.searchTerm.length));return"".concat(n,'<span class="autocompleteMatched">').concat(this.searchTerm,"</span>").concat(r)},loadInitialSites:function(){var e=this;return oi.loadInitialSites().then((function(t){e.sites=t||[]}))},searchSite:function(e){var t=this;this.isLoading=!0,oi.searchSite(e,this.onlySitesWithAdminAccess).then((function(n){e===t.searchTerm&&n&&(t.sites=n)})).finally((function(){t.isLoading=!1}))},getUrlForSiteId:function(e){var t=Pe.stringify(ui(ui({},Pe.urlParsed.value),{},{segment:"",idSite:e})),n=Pe.stringify(ui(ui({},Pe.hashParsed.value),{},{segment:"",idSite:e}));return"?".concat(t,"#?").concat(n)}}});pi.render=Wr;var fi=pi,mi=(xt({component:fi,require:"?ngModel",scope:{showSelectedSite:{angularJsBind:"="},showAllSitesItem:{angularJsBind:"="},switchSiteOnSelect:{angularJsBind:"="},onlySitesWithAdminAccess:{angularJsBind:"="},name:{angularJsBind:"@"},allSitesText:{angularJsBind:"@"},allSitesLocation:{angularJsBind:"@"},placeholder:{angularJsBind:"@"},modelValue:{default:function(e,t,n){return n.siteid&&n.sitename?{id:n.siteid,name:S.helper.htmlDecode(n.sitename)}:S.idSite?{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}:void 0}}},$inject:["$timeout"],directiveName:"piwikSiteselector",events:{"update:modelValue":function(e,t,n,r,i,a,o){(e&&!t.modelValue||!e&&t.modelValue||e.id!==t.modelValue.id)&&o((function(){n.value=e,r.attr("siteid",e.id),r.trigger("change",e),a&&(a.$setViewValue(e),a.$render())}))},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}},postCreate:function(e,t,n,r,i){var o=i;t.$watch("value",(function(t){Object(a["nextTick"])((function(){t!==e.modelValue&&(e.modelValue=t)}))})),o&&(o.$setViewValue(e.modelValue),o.$render=function(){Object(a["nextTick"])((function(){Object(a["nextTick"])((function(){angular.isString(o.$viewValue)?e.modelValue=JSON.parse(o.$viewValue):e.modelValue=o.$viewValue}))}))})}}),{ref:"root",class:"quickAccessInside"}),hi=["title"],gi={class:"dropdown"},vi={class:"no-result"},bi=["onClick"],yi=["onMouseenter","onClick"],Oi={class:"quickAccessMatomoSearch"},wi=["onMouseenter","onClick"],ji=["textContent"],ki={class:"quick-access-category helpCategory"},Si=["href"];
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.spec.ts b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.spec.ts
index 97e1ad3f22..2dc4ef3157 100644
--- a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.spec.ts
+++ b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.spec.ts
@@ -177,7 +177,7 @@ describe('CoreHome/Comparisons.store', () => {
angularApply();
await wait();
- expect(window.location.href).toEqual('http://localhost/#?category=MyModule1&subcategory=enabledPage&date=2018-01-02&period=day&segment=abcdefg&compareDates%5B%5D=2018-03-04&comparePeriods%5B%5D=week&compareSegments%5B%5D=');
+ expect(window.location.href).toEqual('http://localhost/#?period=day&date=2018-01-02&segment=abcdefg&category=MyModule1&subcategory=enabledPage&compareDates%5B%5D=2018-03-04&comparePeriods%5B%5D=week&compareSegments%5B%5D=');
});
it('should change the base comparison if the first segment is removed', async () => {
@@ -187,7 +187,7 @@ describe('CoreHome/Comparisons.store', () => {
angularApply();
await wait();
- expect(window.location.href).toEqual('http://localhost/#?category=MyModule1&subcategory=enabledPage&date=2018-01-02&period=day&segment=comparedsegment&compareDates%5B%5D=2018-03-04&comparePeriods%5B%5D=week&compareSegments%5B%5D=');
+ expect(window.location.href).toEqual('http://localhost/#?period=day&date=2018-01-02&segment=comparedsegment&category=MyModule1&subcategory=enabledPage&compareDates%5B%5D=2018-03-04&comparePeriods%5B%5D=week&compareSegments%5B%5D=');
});
});
diff --git a/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts b/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
index a03f64bf2b..5639725464 100644
--- a/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
+++ b/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
@@ -62,7 +62,8 @@ class MatomoUrl {
}
updateHash(params: QueryParameters|string) {
- const serializedParams: string = typeof params !== 'string' ? this.stringify(params) : params;
+ const modifiedParams = this.getFinalHashParams(params);
+ const serializedParams = this.stringify(modifiedParams);
const $location: ILocationService = Matomo.helper.getAngularDependency('$location');
$location.search(serializedParams);
@@ -70,7 +71,9 @@ class MatomoUrl {
updateUrl(params: QueryParameters|string, hashParams: QueryParameters|string = {}) {
const serializedParams: string = typeof params !== 'string' ? this.stringify(params) : params;
- const serializedHashParams: string = typeof hashParams !== 'string' ? this.stringify(hashParams) : hashParams;
+
+ const modifiedHashParams = this.getFinalHashParams(hashParams);
+ const serializedHashParams: string = this.stringify(modifiedHashParams);
let url = `?${serializedParams}`;
if (serializedHashParams.length) {
@@ -80,6 +83,17 @@ class MatomoUrl {
window.broadcast.propagateNewPage('', undefined, undefined, undefined, url);
}
+ private getFinalHashParams(params: QueryParameters|string) {
+ return {
+ // these params must always be present in the hash
+ period: this.parsed.value.period,
+ date: this.parsed.value.date,
+ segment: this.parsed.value.segment,
+
+ ...(typeof params !== 'string' ? params : broadcast.getValuesFromUrl(`?${params}`, true)),
+ };
+ }
+
// if we're in an embedded context, loads an entire new URL, otherwise updates the hash
updateLocation(params: QueryParameters|string) {
if (Matomo.helper.isAngularRenderingThePage()) {
diff --git a/plugins/CoreHome/vue/src/SiteSelector/SitesStore.ts b/plugins/CoreHome/vue/src/SiteSelector/SitesStore.ts
index 120df541c1..e1e8be476e 100644
--- a/plugins/CoreHome/vue/src/SiteSelector/SitesStore.ts
+++ b/plugins/CoreHome/vue/src/SiteSelector/SitesStore.ts
@@ -54,7 +54,11 @@ class SitesStore {
});
} else {
MatomoUrl.updateUrl({
- ...MatomoUrl.parsed.value,
+ ...MatomoUrl.urlParsed.value,
+ segment: '',
+ idSite,
+ }, {
+ ...MatomoUrl.hashParsed.value,
segment: '',
idSite,
});