statistics icon indicating copy to clipboard operation
statistics copied to clipboard

Gewählter Zeitraum wird bei Switch in anderen Tab vergessen

Open oioix opened this issue 4 years ago • 14 comments

Cooles Addon Schön wäre es, wenn der individuell gewählte Zeitraum bei Switch in einen anderen Reiter (z.B. von Statistik zu Seitenaufrufe) erhalten bliebe. LG, Chris

(enhancement)

oioix avatar Apr 01 '22 22:04 oioix

Die Tabs für die Navigation zwischen den Seiten wird von Redaxo selbst generiert. Ich bin mir nicht sicher, ob ich da einen Parameter für den Filter mitgeben kann.

Ich lasse das Issue offen und bin natürlich auch über Pull requests glücklich :-)

AndiLeni avatar Apr 02 '22 09:04 AndiLeni

Hi Andreas, verstehe ;-)

Da gibt es sicher einen ExtensionPoint, wo man das eingestellte Datum (aus der Url extrahiert z.B. "&date_start=2022-02-15&date_end=2022-04-02") anhängen könnte.

Fragt sich nur welcher das ist. Evtl. geht es auch mit JS.

oioix avatar Apr 02 '22 09:04 oioix

Mache es dir einfach und speichere die Auswahl in der session. Dann kannst die dies über alle Seiten hinweg nutzen.

iceman-fx avatar Apr 02 '22 09:04 iceman-fx

Das ist eine sehr gute Idee :)

AndiLeni avatar Apr 02 '22 09:04 AndiLeni

Ansonsten... das JS macht den Job, solange man nur zwischen den drei relevanten Tabs wechselt:

`// -------------------------------------------------------------------------------------------------------------------------- // -- START DOCUMENT READY -------------------------------------------------------------------------------------------------- $(document).ready(function() {

// -------------------------------------------------------------------------------------
// rex addon statistics -> attach filtered date to addon tab links
// -------------------------------------------------------------------------------------
var header = $('.rex-page-nav').find('ul').find('a');

var linkStatsElem	= '';
var linkStatsVal	= '';

var linkPagesElem	= '';
var linkPagesVal	= '';

var linkRefererElem	= '';
var linkRefererVal	= '';

header.each(function(){
	var thisLink = $(this).attr('href');
	
	var inStrStats	= thisLink.includes('statistics/stats');
	var inStrPages	= thisLink.includes('statistics/pages');
	var inStrReferer = thisLink.includes('statistics/referer');
	
	if(inStrStats) {
		linkStatsElem = $(this);
		linkStatsVal = thisLink;
	}
	if(inStrPages) {
		linkPagesElem = $(this);
		linkPagesVal = thisLink;
	}
	if(inStrReferer) {
		linkRefererElem = $(this);
		linkRefererVal = thisLink;
	}
});

var filterStartDateElem = $('#statistics_datefilter_start');
var filterEndDateElem	= $('#statistics_datefilter_end');

// get current values
function getStatFilterDates(){
	var filterStartDate = filterStartDateElem.val();
	var filterEndDate	= filterEndDateElem.val();

	if(filterStartDate && filterEndDate) {
		
		var attachDateVal = '&date_start='+filterStartDate+'&date_end='+filterEndDate;
		
		linkStatsElem.attr('href',linkStatsVal+attachDateVal);
		linkPagesElem.attr('href',linkStatsVal+attachDateVal);
		linkRefererElem.attr('href',linkStatsVal+attachDateVal);
	}
}

// run on pageload
getStatFilterDates();

// run on change
filterStartDateElem.change(function(){
	getStatFilterDates();
});
filterEndDateElem.change(function(){
	getStatFilterDates();
});

});`

oioix avatar Apr 02 '22 10:04 oioix

Es liest die date-inputs aus. Wenn du die beiden Dati in der Session speicherst und die inputs wieder aus der Session befüllst, funktioniert es auch bei wiederkehr nach einem Wechsel zu anderen Seiten.

In jedem Fall hängt es die nötigen Parameter an die Links an.

oioix avatar Apr 02 '22 10:04 oioix

Ups, ich war zu vorschnell. Ist noch ein Bug drin.

Sofern interesse besteht, mach ich es aber noch gerne fertig.

oioix avatar Apr 02 '22 11:04 oioix

War nur ein Flüchtigkeitsfehler.

hier das Update nun auch mit api + media:

` // -------------------------------------------------------------------------------------------------------------------------- // -- START DOCUMENT READY -------------------------------------------------------------------------------------------------- $(document).ready(function() {

//alert('Swissknife script for Redaxo backend is available')


// -------------------------------------------------------------------------------------
// rex addon statistics -> attach filtered date to addon tab links
// -------------------------------------------------------------------------------------
var header = $('.rex-page-nav').find('ul').find('a');

var linkStatsElem	= '';
var linkStatsVal	= '';

var linkPagesElem	= '';
var linkPagesVal	= '';

var linkRefererElem	= '';
var linkRefererVal	= '';

var linkApiElem		= '';
var linkApiVal		= '';

var linkMediaElem	= '';
var linkMediaVal	= '';

header.each(function(){
	var thisLink = $(this).attr('href');
	
	var inStrStats	= thisLink.includes('statistics/stats');
	var inStrPages	= thisLink.includes('statistics/pages');
	var inStrReferer = thisLink.includes('statistics/referer');
	var inStrApi 	= thisLink.includes('statistics/api');
	var inStrMedia	= thisLink.includes('statistics/media');
	
	if(inStrStats) {
		linkStatsElem = $(this);
		linkStatsVal = thisLink;
	}
	if(inStrPages) {
		linkPagesElem = $(this);
		linkPagesVal = thisLink;
	}
	if(inStrReferer) {
		linkRefererElem = $(this);
		linkRefererVal = thisLink;
	}
	if(inStrApi) {
		linkApiElem = $(this);
		linkApiVal = thisLink;
	}
	if(inStrMedia) {
		linkMediaElem = $(this);
		linkMediaVal = thisLink;
	}
});

var filterStartDateElem = $('#statistics_datefilter_start');
var filterEndDateElem	= $('#statistics_datefilter_end');

// get current values
function getStatFilterDates(){
	var filterStartDate = filterStartDateElem.val();
	var filterEndDate	= filterEndDateElem.val();

	if(filterStartDate && filterEndDate) {
		
		var attachDateVal = '&date_start='+filterStartDate+'&date_end='+filterEndDate;
		
		linkStatsElem.attr('href',linkStatsVal+attachDateVal);
		linkPagesElem.attr('href',linkPagesVal+attachDateVal);
		linkRefererElem.attr('href',linkRefererVal+attachDateVal);
		linkApiElem.attr('href',linkApiVal+attachDateVal);
		linkMediaElem.attr('href',linkMediaVal+attachDateVal);
	}
}

// run on pageload
getStatFilterDates();

// run on change
filterStartDateElem.change(function(){
	getStatFilterDates();
});
filterEndDateElem.change(function(){
	getStatFilterDates();
});

}); `

oioix avatar Apr 02 '22 11:04 oioix