module.exports = ['$filter', '$http', 'userService', '$element', function($filter, $http, userService, $element) { this.parentCtrl = this.afterCtrl.parentCtrl; var vm = this vm.is_epfl_IP = userService.isEpflIP(); // Vérifie si une ressource vient de CDI vm.is_pc = function(){ return vm.parentCtrl.result.context === 'PC'; } vm.is_ebook = function(){ if (vm.parentCtrl.result.pnx.control.hasOwnProperty('recordtype')){ return vm.parentCtrl.result.pnx.control.recordtype[0].indexOf('book')!==-1; } else if (vm.parentCtrl.result.pnx.display.hasOwnProperty('type')){ return vm.parentCtrl.result.pnx.display.type[0].toLowerCase().indexOf('book')!==-1; } else { return false; } } vm.is_article = function(){ if (vm.parentCtrl.result.pnx.control.hasOwnProperty('recordtype')){ return vm.parentCtrl.result.pnx.control.recordtype[0].indexOf('article')!==-1; } else { return false; } } vm.is_data_available = function(){ return Boolean(vm.parentCtrl.result && vm.parentCtrl.result.pnx && vm.parentCtrl.result.delivery); } vm.is_fulltext = function(){ let availability = vm.parentCtrl.result.delivery.availability return availability.indexOf('fulltext')!==-1 || availability.indexOf('not_restricted')!==-1; } // Supprime le lien original vm.suppress_original_link = function(){ $element[0].parentElement.parentElement.children[0].replaceWith(''); } /* Définit l'url de l'éditeur si celle-ci est disponible à la place de l'affichage de la notice détaillée. La fonction retourne true si l'url est modifiée */ vm.is_publisher_url = function(){ /* L'url n'est modifié que pour les ebooks et les articles. De plus, il faut être dans le range IP de l'EPFL */ if (!vm.checked && vm.is_data_available() && vm.is_epfl_IP && (vm.is_ebook() || vm.is_article())) { // L'adresse du service est différente selon que la ressource est dans cdi ou non (vm.is_pc()) if (!vm.parentCtrl.isFullView && vm.is_fulltext() && vm.is_pc()){ vm.checked = true; /* Les données ne contiennent pas des informations détaillées avec le lien direct. Il faut donc utiliser un service pour obtenir ces données. */ let url = `${ window.location.origin }/primaws/rest/pub/pcDelivery/${vm.parentCtrl.result.pnx.control.recordid[0]}?vid=${vm.parentCtrl.$stateParams.vid}`; $http.post(url, {doc:vm.parentCtrl.result}).then((e) => { vm.publisher_url = e.data.delivery.electronicServices[0].serviceUrl; vm.suppress_original_link(); }); } else if (!vm.parentCtrl.isFullView && vm.is_fulltext() && !vm.is_pc()){ vm.checked = true; let url = `${ window.location.origin }/primaws/rest/pub/edelivery/${vm.parentCtrl.result.pnx.control.recordid[0]}?vid=${vm.parentCtrl.$stateParams.vid}`; $http.post(url, {doc:vm.parentCtrl.result}).then((e) => { vm.publisher_url = e.data.electronicServices[0].serviceUrl; vm.suppress_original_link(); }) /* Dans la vue détaillée, l'url est accessible sans avoir à interroger le service */ } else if (vm.parentCtrl.isFullView && vm.parentCtrl.result.delivery.GetIt1 && typeof(vm.parentCtrl.result.delivery.GetIt1)==='object') { vm.checked = true; let rank = vm.parentCtrl.result.delivery.availability.indexOf('not_restricted') if (rank !== -1) { vm.publisher_url = vm.parentCtrl.result.delivery.GetIt1[0].links[rank].link; vm.suppress_original_link(); } } else if (!vm.is_fulltext()){ vm.checked = true; } } return vm.hasOwnProperty('publisher_url'); } // console.log(vm); }]