Skip to content

Commit

Permalink
Merge pull request #3154 from dzhw/moellerth/issue3095
Browse files Browse the repository at this point in the history
#3095 filter for related publications
  • Loading branch information
moellerth committed Dec 12, 2022
2 parents 3d2bd4e + b4d9a26 commit d863158
Show file tree
Hide file tree
Showing 18 changed files with 258 additions and 40 deletions.
2 changes: 1 addition & 1 deletion .jscsrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"preset": "google",
"requireSemicolons": true,
"requireDotNotation": false,
"maximumLineLength": 80,
"maximumLineLength": { "value": 80, "allExcept": [ "comments" ] },
"requireCamelCaseOrUpperCaseIdentifiers": {"ignoreProperties": true},
"excludeFiles": ["src/main/webapp/scripts/app/app.constants.js"]
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ angular.module('metadatamanagementApp').config(
'study-series': 'Studienreihen',
'survey-data-types': 'Erhebungsdatentyp',
'access-ways': 'Zugangswege',
'unavailable': 'Nicht vorhanden'
'unavailable': 'Nicht vorhanden',
'language': 'Sprache',
'year': 'Erscheinungsjahr'
},
'toolbar': {
'buttons': {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ angular.module('metadatamanagementApp').config(
'study-series': 'Study Series',
'survey-data-types': 'Survey Data Type',
'access-ways': 'Access Ways',
'unavailable': 'Not available'
'unavailable': 'Not available',
'language': 'Language',
'year': 'Publication Year'
},
'toolbar': {
'buttons': {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ angular.module('metadatamanagementApp').config(
'close-tooltip': 'Klicken, um die Produktauswahl zu verlassen.',
'data-package-tooltip': 'Klicken, um weitere Informationen zu Datenpaketen zu erhalten.',
'analysis-package-tooltip': 'Klicken, um weitere Informationen zu Analysepaketen zu erhalten.',
'related-publications-tooltip': 'Klicken, um weitere Informationen zu Publikationen zu erhalten.',
'data-package-version-tooltip': 'Klicken, um weitere Informationen zur Version von Datenpaketen zu erhalten.',
'analysis-package-version-tooltip': 'Klicken, um weitere Informationen zur Version von Analysepaketen zu erhalten.',
'data-package-access-way-tooltip': 'Klicken, um weitere Informationen zu Zugangswegen zu erhalten.'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ angular.module('metadatamanagementApp').config(
'data-package-version-tooltip': 'Click to get more information about versions of data packages',
'data-package-tooltip': 'Click to get more information about data packages',
'analysis-package-tooltip': 'Click to get more information about analysis packages',
'related-publications-tooltip': 'Click to get more information about publications',
'analysis-package-version-tooltip': 'Click to get more information about versions of analysis packages',
'data-package-access-way-tooltip': 'Click to get more information about access ways'
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ angular.module('metadatamanagementApp')
query.body.from = from;
query.body.size = size;
query.body._source = selectedAttributes;
query.body._source = selectedAttributes;
query.body.query = {
'bool': {
'must': [{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,25 @@
ng-if="!$ctrl.collapsed">
<li ng-repeat="item in $ctrl.options">
<md-checkbox
ng-if="$ctrl.property === 'access-ways'"
ng-checked="$ctrl.exists(item.key, $ctrl.property)"
md-no-ink=""
ng-click="$ctrl.toggleFilterItem(item.key, $ctrl.property)">
{{ $ctrl.property === "access-ways" ? (item.key | displayAccessWay) : item.key }} ({{ item.doc_count }})
{{ (item.key | displayAccessWay) }} ({{ item.doc_count }})
</md-checkbox>
<md-checkbox
ng-if="$ctrl.property === 'language'"
ng-checked="$ctrl.exists(item.key, $ctrl.property)"
md-no-ink=""
ng-click="$ctrl.toggleFilterItem(item.key, $ctrl.property)">
{{ (item.key | displayIsoLanguage) }} ({{ item.doc_count }})
</md-checkbox>
<md-checkbox
ng-if="$ctrl.property != 'language' && $ctrl.property != 'access-ways'"
ng-checked="$ctrl.exists(item.key, $ctrl.property)"
md-no-ink=""
ng-click="$ctrl.toggleFilterItem(item.key, $ctrl.property)">
{{ item.key }} ({{ item.doc_count }})
</md-checkbox>
</li>
<li ng-if="$ctrl.options.length === 0">{{'search-management.filter.no-record' | translate}}</li>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<md-dialog aria-label="{{'related-publication-management.detail.label.publications' | translate}}" layout="column" class="ms-flex" flex="50">
<md-toolbar>
<div class="md-toolbar-tools" layout="row" layout-align="space-between center">
<h2 class="fdz-truncate-string">
<span>{{'related-publication-management.detail.label.publications' | translate}}</span>
</h2>
<md-button class="md-icon-button" ng-click="closeDialog()">
<md-icon md-font-set="material-icons">clear</md-icon>
<md-tooltip md-direction="top" md-autohide="true" md-z-index="bowser.mobile || bowser.tablet ? -100 : 1000001">
{{'shopping-cart.version-info.close-tooltip' | translate }}
</md-tooltip>
</md-button>
</div>
</md-toolbar>
<md-divider></md-divider>
<md-dialog-content layout-padding flex layout="column" class="ms-flex">
<p>{{'search-management.detail.related-publications-info' | translate }}</p>
</md-dialog-content>

</md-dialog-content>
<md-dialog-actions layout="row">
<md-button class="md-primary" ng-click="closeDialog()">
<span>{{'global.entity.action.ok' | translate}}</span>
<md-tooltip md-direction="left" md-autohide="true" md-z-index="bowser.mobile || bowser.tablet ? -100 : 1000001">
{{'shopping-cart.version-info.close-tooltip' | translate }}
</md-tooltip>
</md-button>
</md-dialog-actions>
</md-dialog>
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
/* global _ */

(function() {
'use strict';

function SearchFilterController(
$scope, $location, MessageBus, $timeout, $mdDialog
) {

// Configuration for available filter options
var filterValueObject = {
related_publications: [
{
name: 'global.filter.language',
property: 'language', collapsed: false
},
{
name: 'global.filter.year',
property: 'year', collapsed: false
}
],
analysis_packages: [
{
name: 'global.filter.tags',
Expand Down Expand Up @@ -78,6 +91,10 @@
$ctrl.dataPackageSearchFilter = $ctrl.searchParams.type;
setFilterValues($ctrl.searchParams.type);
}
if ($ctrl.searchParams.type === 'related_publications') {
$ctrl.dataPackageSearchFilter = $ctrl.searchParams.type;
setFilterValues($ctrl.searchParams.type);
}
checkCollapsible();
_.assign($ctrl.searchFilterMapping, $ctrl.searchParams.filter);
}
Expand Down Expand Up @@ -111,6 +128,13 @@
});
}

/**
* Updates the search filter mapping and the search parameters when menu-toggle was clicked
* @param {*} item the filter item/value (e.g. 'fr')
* @param {*} prop the filter property (e.g. 'language')
*/

function toggleFilterItem(item, prop) {
readSearchParamsFromLocation();
if ($ctrl.searchFilterMapping &&
Expand Down Expand Up @@ -200,7 +224,8 @@
$ctrl.infoModal = function(type, $event) {
var url = {
data: 'data-package-info.html.tmpl',
analysis: 'analysis-package-info.html.tmpl'
analysis: 'analysis-package-info.html.tmpl',
publications: 'related-publications-info.html.tmpl'
};
$mdDialog.show({
controller: 'dataPackageInfoController',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<md-radio-group class="mt8" layout="column" id="searchPackageSwitch" ng-model="$ctrl.dataPackageSearchFilter" ng-change="$ctrl.changePackageFilter()" aria-labelledby="{{'search-management.packages.label' | translate}}">
<md-radio-button value="data_packages" class="md-primary">{{'search-management.packages.data-packages' | translate}} ({{ $ctrl.totalHits.data_packages ? $ctrl.totalHits.data_packages : 0 }})</md-radio-button>
<md-radio-button value="analysis_packages" class="md-primary mt4">{{'search-management.packages.analysis-packages' | translate}} ({{ $ctrl.totalHits.analysis_packages ? $ctrl.totalHits.analysis_packages : 0 }})</md-radio-button>
<md-radio-button value="related_publications" class="md-primary mt4">{{'search-management.packages.publications' | translate}} ({{ $ctrl.totalHits.related_publications ? $ctrl.totalHits.related_publications : 0 }})</md-radio-button>
</md-radio-group>
<div layout="column">
<md-button class="md-icon-button md-primary" ng-click="$ctrl.infoModal('data', $event)">
Expand All @@ -19,10 +20,16 @@
{{'shopping-cart.buttons.analysis-package-tooltip' | translate}}
</md-tooltip>
</md-button>
<md-button class="md-icon-button md-primary" ng-click="$ctrl.infoModal('publications', $event)">
<md-icon>info</md-icon>
<md-tooltip md-direction="top" md-autohide="true" md-z-index="bowser.mobile || bowser.tablet ? -100 : 100001">
{{'shopping-cart.buttons.related-publications-tooltip' | translate}}
</md-tooltip>
</md-button>
</div></div>
</md-card-content>
</md-card>
<md-card class="fdz-search-filter">
<md-card class="fdz-search-filter" ng-if="$ctrl.filterValues.length > 0">
<md-card-header>
<md-card-header-text>
<span class="md-title">Filter</span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ angular.module('metadatamanagementApp').config(
'packages': {
'label': 'Wonach suchen Sie?',
'data-packages': 'Datenpakete (SUFs, CUFs)',
'analysis-packages': 'Analysepakete (Skripte)'
'analysis-packages': 'Analysepakete (Skripte)',
'publications': 'Publikationen'
},
'delete-messages': {
'delete-variables-title': 'Alle Variablen ersetzen?',
Expand All @@ -28,7 +29,8 @@ angular.module('metadatamanagementApp').config(
},
'search-result': {
'dataPackageSearch': 'Suche "{{ searchQuery }}" im Datenpaket',
'analysisPackageSearch': 'Suche "{{ searchQuery }}" im Analysepaket'
'analysisPackageSearch': 'Suche "{{ searchQuery }}" im Analysepaket',
'relatedPublicationsSearch': 'Suche "{{ searchQuery }}" in Publikation'
},
'detail': {
'search': 'Datensuche',
Expand All @@ -38,7 +40,8 @@ angular.module('metadatamanagementApp').config(
'access-way': 'Zugangsweg',
'cart': 'In den Warenkorb legen',
'data-packages-info': 'Datenpakete enthalten Scientific Use Files und/oder Campus Use Files, die für eine breite Nutzung in Wissenschaft bzw. Lehre vorgesehen sind.',
'analysis-packages-info': 'Analysepakete enthalten Analyseskripte und Analysedaten, die zur Erstellung einer spezifischen Publikation verwendet wurden und ermöglichen damit deren Replikation.'
'analysis-packages-info': 'Analysepakete enthalten Analyseskripte und Analysedaten, die zur Erstellung einer spezifischen Publikation verwendet wurden und ermöglichen damit deren Replikation.',
'related-publications-info': 'Publikationen enthalten bibliografische Informationen zu Veröffentlichungen, die die Daten aus referenzierten Daten- und Analysepakete verwenden'
},
'buttons': {
'refresh-tooltip': 'Klicken, um die Suche zu aktualisieren',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ angular.module('metadatamanagementApp').config(
'packages': {
'label': 'What are you searching for?',
'data-packages': 'Data Packages (SUFs, CUFs)',
'analysis-packages': 'Analysis Packages (Scripts)'
'analysis-packages': 'Analysis Packages (Scripts)',
'publications': 'Publications'
},
'delete-messages': {
'delete-variables-title': 'Replace all Variables?',
Expand All @@ -28,7 +29,8 @@ angular.module('metadatamanagementApp').config(
},
'search-result': {
'dataPackageSearch': 'Search "{{ searchQuery }}" in Data Package',
'analysisPackageSearch': 'Search "{{ searchQuery }}" in Analysis Package'
'analysisPackageSearch': 'Search "{{ searchQuery }}" in Analysis Package',
'relatedPublicationsSearch': 'Search "{{ searchQuery }}" in Publications'
},
'detail': {
'search': 'Data Search',
Expand All @@ -38,7 +40,8 @@ angular.module('metadatamanagementApp').config(
'access-way': 'Access Way',
'cart': 'Add to shopping cart',
'data-packages-info': 'Data packages contain Scientific Use Files and/or Campus Use Files that are intended for broad use in science or teaching.',
'analysis-packages-info': 'Analysis packages contain analysis scripts and analysis data that were used to create a specific publication and thus enable its replication.'
'analysis-packages-info': 'Analysis packages contain analysis scripts and analysis data that were used to create a specific publication and thus enable its replication.',
'related-publications-info': 'Publications contain bibliographic information on publications that use the data of listed data and analysis packages.'
},
'buttons': {
'refresh-tooltip': 'Click to refresh the search results',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/* global _, document */

'use strict';

angular.module('metadatamanagementApp')
Expand All @@ -7,6 +8,12 @@ angular.module('metadatamanagementApp')
'$element', 'CleanJSObjectService', '$mdSelect',
function($scope, SearchHelperService, $timeout,
$element, CleanJSObjectService, $mdSelect) {

/* filters that need to be removed because they sould only be visible
in the sidenav for public users */
var irrelevantFiltersMapping = {
'related_publications': ['year', 'language']
};
var elasticSearchTypeChanged = false;
var searchParamsFilterChanged = false;
$scope.filtersCollapsed = false;
Expand All @@ -31,14 +38,16 @@ angular.module('metadatamanagementApp')
displayAvailableFilters.push(filter);
}
});

return displayAvailableFilters;
};

$scope.$watch('currentElasticsearchType', function() {
elasticSearchTypeChanged = true;
$scope.availableFilters = SearchHelperService.getAvailableFilters(
$scope.currentElasticsearchType);
/* as this is the search panel for logged in users we need to remove some
filters that sould only be shown in the sidenav for public users */
removeIrrelevantFilter();
$scope.displayAvailableFilters = createDisplayAvailableFilterList(
$scope.availableFilters);
$scope.availableHiddenFilters = _.intersection(
Expand Down Expand Up @@ -131,5 +140,22 @@ angular.module('metadatamanagementApp')
var minHeight = (56 * $scope.selectedFilters.length) + 'px';
return {'min-height': minHeight};
};

/**
* Function to remove the filters that are irrelevant for the search panel.
*/
var removeIrrelevantFilter = function() {
var irrelevantFilters = irrelevantFiltersMapping[
$scope.currentElasticsearchType];
if (irrelevantFilters) {
for (var i = 0; i < irrelevantFilters.length; i++) {
var filter = irrelevantFilters[i];
var filterIndex = $scope.availableFilters.indexOf(filter);
if (filterIndex > -1) {
$scope.availableFilters.splice(filterIndex, 1);
}
}
}
};
}
]);

0 comments on commit d863158

Please sign in to comment.