diff --git a/Classes/Controller/PersonController.php b/Classes/Controller/PersonController.php index 111c1c6..74ac386 100755 --- a/Classes/Controller/PersonController.php +++ b/Classes/Controller/PersonController.php @@ -46,6 +46,7 @@ public function showAction(GndPerson $person) pluck('published_subitems')-> flatten(1)-> pluck('prints_by_date')-> + flatten(1)-> filter()-> count(); diff --git a/Classes/Controller/PublishedItemController.php b/Classes/Controller/PublishedItemController.php index 22ae1fe..7f76680 100755 --- a/Classes/Controller/PublishedItemController.php +++ b/Classes/Controller/PublishedItemController.php @@ -59,6 +59,7 @@ public function showAction(PublishedItem $publishedItem) $hasPrints = $document-> get('published_subitems')-> pluck('prints_by_date')-> + flatten(1)-> count(); $visualizationCall = $this->getJsCall($document, $this->publishers, $publishedItem->getMvdbId()); diff --git a/Classes/Controller/WorkController.php b/Classes/Controller/WorkController.php index 55d68d5..bc6dfc7 100755 --- a/Classes/Controller/WorkController.php +++ b/Classes/Controller/WorkController.php @@ -61,6 +61,7 @@ public function showAction(GndWork $work) pluck('published_subitems')-> flatten(1)-> pluck('prints_by_date')-> + flatten(1)-> filter()-> count(); $publishedItems = $this->publishedItemRepository->findByContainedWorks($work->getUid()); diff --git a/Resources/Private/Templates/Person/Show.html b/Resources/Private/Templates/Person/Show.html index 28be875..d042404 100755 --- a/Resources/Private/Templates/Person/Show.html +++ b/Resources/Private/Templates/Person/Show.html @@ -124,9 +124,17 @@

+ +
+
-
+ +
+
+ +
+
{visualizationCall->f:format.raw()}
diff --git a/Resources/Private/Templates/PublishedItem/Show.html b/Resources/Private/Templates/PublishedItem/Show.html index 872fefd..57cbc32 100755 --- a/Resources/Private/Templates/PublishedItem/Show.html +++ b/Resources/Private/Templates/PublishedItem/Show.html @@ -185,9 +185,17 @@

{publishedItem.publicComment}

-
-
-
+ +
+
+
+ +
+
+
+ +
+
{visualizationCall->f:format.raw()}
diff --git a/Resources/Private/Templates/Work/Show.html b/Resources/Private/Templates/Work/Show.html index 01ac929..3c7bae4 100755 --- a/Resources/Private/Templates/Work/Show.html +++ b/Resources/Private/Templates/Work/Show.html @@ -220,9 +220,17 @@

+ +
+
-
+ +
+
+ +
+
{visualizationCall->f:format.raw()}
diff --git a/Resources/Public/JavaScript/DashboardController.js b/Resources/Public/JavaScript/DashboardController.js index 0761712..d0d0bc5 100644 --- a/Resources/Public/JavaScript/DashboardController.js +++ b/Resources/Public/JavaScript/DashboardController.js @@ -2,23 +2,70 @@ const tx_publisherdb_dashboardExcludedItem = 'excluded-item'; const tx_publisherdb_dashboardExcludedYear = 'excluded-year'; const tx_publisherdb_dashboardPublisher = 'publisher'; +const prefix = 'dashboard'; +const movingAverages = `${prefix}-moving-averages`; +const setMovingAverage = `${prefix}-set-moving-average`; +const setCumulative = `${prefix}-set-cumulative`; +const setPerYear = `${prefix}-set-per-year`; +const setByDate = `${prefix}-set-by-date`; +const btnClassList = 'primary button hollow'; + const tx_publisherdb_dashboardController = { - + set target(target) { this._target = target; this.render(); }, - render() { - const createIncludeButton = type => id => ` + `; - const createYearIncludeButton = createIncludeButton('year'); - const createElementIncludeButton = createIncludeButton('element'); - - const target = d3.select(`#${this._target}`); + draw(targetElement) { + const target = d3.select(targetElement); target.html(''); + const movingAverages = target.append('div') + .attr('class', 'display') + movingAverages.append('h3') + .html('Anzeige'); + const movingAveragesList = movingAverages.append('div') + .attr('class', 'tiny button-group'); + tx_publisherdb_visualizationStatus.movingAverages.forEach( ma => { + movingAveragesList + .append('a') + .attr('data', ma) + .attr('type', setMovingAverage) + .attr('class', btnClassList) + .html(`gleitender MW ${ma}`); + }); + movingAveragesList.append('a') + .attr('type', setCumulative) + .attr('class', btnClassList) + .html('kumulativ'); + movingAveragesList.append('a') + .attr('type', setPerYear) + .attr('class', btnClassList) + .html('pro Jahr'); + movingAveragesList.append('a') + .attr('type', setByDate) + .attr('class', btnClassList) + .html('nach Datum'); + + if (!tx_publisherdb_visualizationStatus.isPublishedItem) { + const publishers = target.append('div') + .attr('class', 'dashboard-publishers'); + publishers.append('h3') + .text('Verlage'); + const publisherList = publishers.append('div') + .attr('class', 'tiny button-group'); + publisherList.selectAll(`a.${tx_publisherdb_dashboardPublisher}`) + .data(tx_publisherdb_visualizationStatus.publishers) + .join('a') + .attr('class', `${tx_publisherdb_dashboardPublisher} primary button hollow include-year`) + .attr('class', d => d.id) + .html(d => d.id) + .attr('title', d => d.name); + } + const excludedItems = target.append('div') - .attr('id', 'dashboard-excluded-items'); + .attr('class', 'dashboard-excluded-items'); excludedItems.append('h3') .text('Ausgeschlossene Verlagsartikel'); if (tx_publisherdb_visualizationStatus.excludedElements.length) { @@ -39,54 +86,16 @@ const tx_publisherdb_dashboardController = { .text('Sie können in der tabellarischen Ansicht auf das "X" klicken, um einzelne Verlagsteilartikel aus den Ansichten auszuschließen.') } - /* - const excludedYears = target.append('div') - .attr('id', 'dashboard-excluded-years'); - excludedYears.append('h3') - .text('Ausgeschlossene Jahre'); - if (tx_publisherdb_visualizationStatus.excludedYears.length) { - const excludedYearList = excludedYears.append('div') - .attr('class', 'tiny button-group'); - excludedYearList.selectAll(`a.${tx_publisherdb_dashboardExcludedYear}`) - .data(tx_publisherdb_visualizationStatus.excludedYears.sort()) - .join('a') - .attr('class', `${tx_publisherdb_dashboardExcludedYear} primary button hollow include-year`) - .attr('id', d => d) - .html(d => d); - } - */ + }, - const movingAverages = target.append('div') - .attr('id', 'dashboard-moving-averages') - movingAverages.append('h3') - .html('Anzeige'); - const movingAveragesList = movingAverages.append('div') - .attr('class', 'tiny button-group'); - tx_publisherdb_visualizationStatus.movingAverages.forEach( ma => { - movingAveragesList - .append('a') - .attr('id', `dashboard-set-moving-average-${ma}`) - .attr('class', 'dashboard-set-moving-average primary button hollow') - .html(`gleitender MW ${ma}`); - }); - movingAveragesList.append('a') - .attr('id', 'dashboard-set-cumulative') - .attr('class', 'primary button hollow dashboard-set-cumulativity') - .html('kumulativ'); - /* - movingAveragesList.append('a') - .attr('id', 'dashboard-set-absolute') - .attr('class', 'primary button hollow dashboard-set-cumulativity') - .html('absolut'); - */ - movingAveragesList.append('a') - .attr('id', 'dashboard-set-per-year') - .attr('class', 'primary button hollow dashboard-set-granularity') - .html('pro Jahr'); - movingAveragesList.append('a') - .attr('id', 'dashboard-set-by-date') - .attr('class', 'primary button hollow dashboard-set-granularity') - .html('nach Datum'); + render() { + const createIncludeButton = type => id => ` + `; + const createYearIncludeButton = createIncludeButton('year'); + const createElementIncludeButton = createIncludeButton('element'); + const displayBtnList = `a[type=${setMovingAverage}], a[type=${setCumulative}], a[type=${setPerYear}], a[type=${setByDate}]`; + + const target = d3.selectAll(`.${this._target}`); + target.nodes().forEach(target => this.draw(target)); $('a.include-year').click( e => { const year = e.currentTarget.id; @@ -98,62 +107,50 @@ const tx_publisherdb_dashboardController = { tx_publisherdb_visualizationStatus.includeElement(element); }); - $('a.dashboard-set-moving-average').click ( e => { - const ma = e.currentTarget.id.replace('dashboard-set-moving-average-', ''); + $(`a[type=${setMovingAverage}]`).click ( e => { + const ma = e.currentTarget.attributes.data.nodeValue; tx_publisherdb_visualizationStatus.config = { granularity: tx_publisherdb_granularity.PER_YEAR, cumulativity: tx_publisherdb_cumulativity.MOVING_AVERAGE, movingAverage: ma }; + + $(displayBtnList).addClass('hollow'); + $(`a[type=${setMovingAverage}][data=${ma}]`).removeClass('hollow'); }); - $('a.dashboard-set-cumulativity').click ( e => { - if (e.currentTarget.id == 'dashboard-set-cumulative') { - tx_publisherdb_visualizationStatus.config = { - granularity: tx_publisherdb_granularity.PER_YEAR, - cumulativity: tx_publisherdb_cumulativity.CUMULATIVE, - movingAverage: -1 - } - } else { - tx_publisherdb_visualizationStatus.config = { - granularity: tx_publisherdb_visualizationStatus.config.granularity, - cumulativity: tx_publisherdb_cumulativity.ABSOLUTE, - movingAverage: -1 - } + $(`a[type=${setCumulative}]`).click ( e => { + tx_publisherdb_visualizationStatus.config = { + granularity: tx_publisherdb_granularity.PER_YEAR, + cumulativity: tx_publisherdb_cumulativity.CUMULATIVE, + movingAverage: -1 } + + $(displayBtnList).addClass('hollow'); + $(`a[type=${setCumulative}]`).removeClass('hollow'); }); - $('a.dashboard-set-granularity').click ( e => { - if (e.currentTarget.id == 'dashboard-set-per-year') { - tx_publisherdb_visualizationStatus.config = { - cumulativity: tx_publisherdb_cumulativity.ABSOLUTE, - granularity: tx_publisherdb_granularity.PER_YEAR, - movingAverage: -1 - } - } else { - tx_publisherdb_visualizationStatus.config = { - cumulativity: tx_publisherdb_cumulativity.ABSOLUTE, - granularity: tx_publisherdb_granularity.BY_DATE, - movingAverage: -1 - } + $(`a[type=${setPerYear}]`).click ( e => { + tx_publisherdb_visualizationStatus.config = { + cumulativity: tx_publisherdb_cumulativity.ABSOLUTE, + granularity: tx_publisherdb_granularity.PER_YEAR, + movingAverage: -1 } + + $(displayBtnList).addClass('hollow'); + $(`a[type=${setPerYear}]`).removeClass('hollow'); }); - if (!tx_publisherdb_visualizationStatus.isPublishedItem) { - const publishers = target.append('div') - .attr('id', 'dashboard-publishers'); - publishers.append('h3') - .text('Verlage'); - const publisherList = publishers.append('div') - .attr('class', 'tiny button-group'); - publisherList.selectAll(`a.${tx_publisherdb_dashboardPublisher}`) - .data(tx_publisherdb_visualizationStatus.publishers) - .join('a') - .attr('class', `${tx_publisherdb_dashboardPublisher} primary button hollow include-year`) - .attr('id', d => d.id) - .html(d => d.id) - .attr('title', d => d.name); - } + $(`a[type=${setByDate}]`).click ( e => { + tx_publisherdb_visualizationStatus.config = { + cumulativity: tx_publisherdb_cumulativity.ABSOLUTE, + granularity: tx_publisherdb_granularity.BY_DATE, + movingAverage: -1 + } + + $(displayBtnList).addClass('hollow'); + $(`a[type=${setByDate}]`).removeClass('hollow'); + }); $(`a.${tx_publisherdb_dashboardPublisher}`).click ( e => { tx_publisherdb_visualizationStatus.currentPublisher = e.currentTarget.id;