Commit fbcf9f9f authored by Maxime Chaillet's avatar Maxime Chaillet
Browse files

reshape doiController. Write tests on getBeamlineUrl(). It fixes icat/doi-landing-page#55

parent 14e1ad71
// Karma configuration
// Generated on Thu Oct 11 2018 23:09:22 GMT+0200 (CEST)
module.exports = function(config) {
config.set({
module.exports = function (config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine', 'browserify'],
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine', 'browserify'],
// list of files / patterns to load in the browser
files: [
'src/jsonextractor.js',
'src/constants.js',
'tests/jsonExtractor.test.js',
'bower_components/lodash/lodash.js'
],
// list of files / patterns to load in the browser
files: [
'src/beamlineurl.js',
'src/constants.js',
'src/doicontroller.js',
'src/doiview.js',
'src/experimentalreportcontroller.js',
'src/event.js',
'src/jsonextractor.js',
'tests/jsonExtractor.test.js',
'tests/doiController.test.js',
'bower_components/lodash/lodash.js',
'bower_components/moment/moment.js'
],
// list of files / patterns to exclude
exclude: [
],
// list of files / patterns to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'tests/jsonExtractor.test.js': [ 'browserify' ]
},
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'tests/jsonExtractor.test.js': ['browserify']
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress'],
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress'],
// web server port
port: 9876,
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Firefox', 'Chrome' ],
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['Firefox', 'Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
})
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
})
}
function Author(){}function Citation(e){this.isBuildable=!!(e&&e.creator&&0!==e.creator.length&&e.date_registered&&e.title&&e.publisher&&e.doi)}function DOIController(e){var t=this;this.doiServer="https://api.test.datacite.org/",this.acceptedPrefix=["10.5072","10.15151"],this.view=e,this.experimentalReportController=new ExperimentalReportController,this.experimentalReportController.onSuccess.attach(function(e,r){t.view.renderExperimentalReportData(r)}),this.experimentalReportController.onError.attach(function(e,r){console.log("Error when retrieving fileList from SMIS."),t.view.renderErrorForExperimentalReport()})}function DoiData(){}function DOIView(){this.mainPanelId="main",this.reportPanelId="expReport",this.badgePanelId="badges",this.metadataDivId="metadata",this.reportExperimentFileNames=null,this.failedRecievingExpReport=!1,this.isDOIAlreadyRendered=!1,this.onDOIRendered=new Event(this)}function Event(e){this._sender=e,this._listeners=[]}function ExperimentalReportController(){this.server="https://wwws.esrf.fr/misapps/SMISServer/rest/reports/fileNames",this.timeout=5e3,this.onSuccess=new Event(this),this.onError=new Event(this)}function JsonExtractor(e){}function proposalBeamlineTable(e,t,r,n){var a=n.mergedProposalBeamlines;if(e.write('<table class="table table-striped">'),e.write("<thead>"),e.write("<tr>"),e.write('<th scope="col">Proposals</th>'),e.write('<th scope="col">Beamlines</th>'),e.write("</tr>"),e.write("</thead>"),e.write("<tbody>"),a){for(var i=0;i<a.length;i++)if(a[i]){var o=a[i].proposal||"unknown",s=a[i].beamline||"unknown",l=a[i].beamlineUrl;e.write("<tr>"),e.write("<td>"+o+"</td>"),"noLink"===l?e.write("<td>"+s+"</td>"):e.write('<td> <a href="'+l+'" target="_blank">'+s+" </a> </td>"),e.write("</tr>")}else e.write("<tr>"),chunck.write("<td> unknown </td>"),chunck.write("<td> unknown </td>"),e.write("</tr>");return e.write("</tbody>"),e.write("</table>"),e.render(r.block,t)}}function abstract(e,t,r,n){var a=n.abstract;return e.write('<div class="myBorder-left">'),e.write("<label> Abstract </label>"),e.write('<div class="padding-left-15">'),a?e.write(a):e.write("There is no abstract for this session."),e.write("</div >"),e.write("</div >"),e.render(r.block,t)}Author.prototype.setFirstName=function(e){this.firstName=e},Author.prototype.setFamilyName=function(e){this.familyName=e},Author.prototype.setSingleName=function(e){this.singleName=e},Author.prototype.getRawFamilyName=function(){if(this.familyName)return this.familyName;if(this.singleName){var e=new RegExp(/(\S+)/g),t=this.singleName.match(e);if(2===t.length)return this.familyName=t[1],this.familyName;var r=new RegExp(/\s([^a-z]+$)/).exec(this.singleName);return r&&(this.familyName=r[1]),this.familyName}},Author.prototype.getRawFirstName=function(){if(this.firstName)return this.firstName;if(this.singleName){var e=new RegExp(/(\S+)/g),t=this.singleName.match(e);if(2===t.length)return this.firstName=t[0],this.firstName;var r=new RegExp(/^(.[^A-Z]+)+\b/).exec(this.singleName);return r&&(this.firstName=r[0]),r}},Author.prototype.getTitleCaseFamilyName=function(){if(this.familyName){allLowerCase=this.familyName.toLowerCase();var e=new RegExp(/^./);return allLowerCase.replace(e,function(e){return e.toUpperCase()})}return console.log("family name is undefined"),null},Author.prototype.getFirstNameInitials=function(){var e=new RegExp(/(\S+)/g);return this.firstName?this.firstName.replace(e,function(e){return e.charAt(0)+"."}):(console.log("first name is undefined"),null)};var BEAMLINEURL=[{name:"BM05",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/XNP/BM05"},{name:"BM29",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/BM29"},{name:"CM01",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/home/UsersAndScience/Experiments/MX/About_our_beamlines/CM01.html"},{name:"ID01",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID01"},{name:"ID06",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/home/UsersAndScience/Experiments/MEx/id06-large-volume-press.html"},{name:"ID11",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11"},{name:"ID16A",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/XNP/ID16A"},{name:"ID16B",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/XNP/ID16B"},{name:"ID17",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/CBS/ID17"},{name:"ID19",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/home/UsersAndScience/Experiments/StructMaterials/ID19.html"},{name:"ID21",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21"},{name:"ID22",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/id22"},{name:"ID23-1",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/ID23-1"},{name:"ID23-2",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/ID23-2"},{name:"ID29",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/home/UsersAndScience/Experiments/Beamlines/content/content/id29.html"},{name:"ID30A1",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/MASSIF1"},{name:"ID30A3",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/home/UsersAndScience/Experiments/MX/About_our_beamlines/id30a-3--massif-3.html"},{name:"ID30B",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/id30b"},{name:"ID32",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/ID32"}];Citation.prototype.getAuthorsForCitation=function(e){if(this.isBuildable){var t=_.transform(e,function(e,t,r,n){n instanceof Array||(t=n);var a=null;if(t.givenName?((a=new Author).setFamilyName(t.familyName),a.setFirstName(t.givenName),e.push(a.getTitleCaseFamilyName()+" "+a.getFirstNameInitials())):((a=new Author).setSingleName(t.name),a.getRawFamilyName()&&a.getRawFirstName()?e.push(a.getTitleCaseFamilyName()+" "+a.getFirstNameInitials()):e.push(t.name)),!(n instanceof Array))return!1},[]);return _.join(t,", ")}return console.log("the author list for the citation could not be generated."),""};var CONSTANTS={ES_RESOURCE_TYPE:"experimental session resource type",DC_RESOURCE_TYPE:"dataset collection resource type"};DOIController.prototype.isValidDOIData=function(e){return _.keysIn(e).length>3&&_.find(_.keysIn(e),function(e){return"title"===e}).length>0},DOIController.prototype.getData=function(e){var t=this;this.view.setDOIInTopBanner(e),this.hasAcceptedPrefix(e)?$.ajax({headers:{Accept:"application/vnd.datacite.datacite+json"},type:"GET",timeout:15e3,url:this.doiServer+e,beforeSend:function(e){t.view.setLoading("Retrieving data from Server"),e.setRequestHeader("Authorization","Basic "+btoa("DATACITE.ESRF:datacyte1"))},complete:function(){t.view.setLoading(!1)}}).done(function(r){if(r)if(t.isValidDOIData(r)){var n=new DoiData;n.title=r.title,n.doi=r.doi.toUpperCase(),n.dataciteLink=t.doiServer+e,n.publisher=r.publisher,n.creator=r.creator;var a=new JsonExtractor;if(n.abstract=a.getAbstract(r),n.mintingYear=a.getMintingYear(r),n.sessionDate=a.getSessionDate(r),n.publiclyAccessibleYear=r.publication_year,n.proposalType=a.getFieldFromSubject(r.subject,"Proposal Type Description"),n.proposalNames=a.getFieldFromSubject(r.subject,"Proposal"),console.log(n.proposalNames),t.experimentalReportController.requestFilenameList(n.proposalName),n.beamlines=a.getFieldFromSubject(r.subject,"Instrument"),n.investigationId=a.extractInvestigationId(r),n.resourceType=a.getResourceType(r),n.accessibility=n.getAccessibilityStatus(n.resourceType,n.sessionDate,n.publiclyAccessibleYear),n.accessMessage=t.view.setDataAccessMessage(n),n.citation=t.createCitation(r),n.resourceTypeGeneral=a.getResourceTypeGeneral(r),n.DC_RESOURCE_TYPE=CONSTANTS.DC_RESOURCE_TYPE,n.ES_RESOURCE_TYPE=CONSTANTS.ES_RESOURCE_TYPE,n.resourceType===CONSTANTS.ES_RESOURCE_TYPE&&r.date_collected){var i=moment(r.date_collected);n.beamlineUrls=t.getBeamlineUrl(n.beamlines,i)}if(n.resourceType===CONSTANTS.DC_RESOURCE_TYPE&&r.publication_year){var o=moment(r.publication_year,"YYYY");n.beamlineUrls=t.getBeamlineUrl(n.beamlines,o)}n.mergedProposalBeamlines=a.getMergedProposalAndBeamline(n.proposalNames,n.beamlines,n.beamlineUrls),t.view.renderDOIData(n)}else t.view.renderError("Not Found",t.origin)}).fail(function(e,r,n){t.view.renderError(e,n,t.origin),t.view.setLoading(!1)}):t.view.renderError("Bad Prefix",t.origin)},DOIController.prototype.hasAcceptedPrefix=function(e){var t=e.split("/")[0];return-1!=_.findIndex(this.acceptedPrefix,function(e){return t==e})},DOIController.prototype.displayMainContent=function(e){"welcome-page"===this.origin&&dust.render("welcome_tpl",{},function(e,t){$("#main").html(t)}),"index"===this.origin&&this.getData(e)},DOIController.prototype.setOrigin=function(e){this.origin=e},DOIController.prototype.getBeamlineUrl=function(e,t){var r=[];return e.forEach(function(e){for(var n=0;n<BEAMLINEURL.length;n++){var a="",i=moment(BEAMLINEURL[n].startDate),o=moment(BEAMLINEURL[n].endDate);if(BEAMLINEURL[n].name.toLowerCase()===e.toLowerCase()&&t>=i&&t<=o){a=BEAMLINEURL[n].url;break}}""===a?r.push("no link"):r.push(a)}),r},DOIController.prototype.createCitation=function(e){var t=new Citation(e);if(t.isBuildable){return t.getAuthorsForCitation(e.creator)+" ("+moment(e.date_registered).year()+"). "+e.title+". "+e.publisher+" (ESRF). <a href='https://doi.esrf.fr/"+e.doi+"'> doi:"+e.doi.toUpperCase()+"</a>"}return"The citation could not be generated."},DoiData.prototype.getAccessibilityStatus=function(e,t,r){if(e)if(e===CONSTANTS.ES_RESOURCE_TYPE){if(r&&t){var n=moment(r,"YYYY"),a=moment();if(a>n)return"Open access";if(a<=n)return"Restricted access"}}else if(e===CONSTANTS.DC_RESOURCE_TYPE)return"Open access";return console.log("Failed to determine whether the accessibility of the DOI."),"Accessibility status could not be determined"},DOIView.prototype.setLoading=function(e){0!=e?$("body").addClass("loading"):$("body").removeClass("loading")},DOIView.prototype.setDOIInTopBanner=function(e){$("#doiValue").text("DOI > "+e.toUpperCase())},DOIView.prototype.renderExperimentalReportData=function(e){if(e){var t=this;this.isDOIAlreadyRendered?dust.render("experimentalreport_tpl",{data:e},function(e,r){$("#"+t.reportPanelId).html(r)}):this.reportExperimentFileNames=e}},DOIView.prototype.renderDOIData=function(e){var t=this;dust.render("landingpage_tpl",{data:e},function(r,n){$("#"+t.mainPanelId).html(n),t.isDOIAlreadyRendered=!0,t.renderBadges(e),t.renderMetadata(e),t.failedRecievingExpReport?t.renderErrorForExperimentalReport():t.reportExperimentFileNames&&t.renderExperimentalReportData(t.reportExperimentFileNames)})},DOIView.prototype.renderError=function(e,t,r){var n="welcome-page"===r?"doinotfound2_tpl":"doinotfound_tpl",a="";a="Bad Prefix"===t?"welcome-page"===r?'<h3> Not found ! </h3> <p> The DOI was not found at ESRF because its prefix is not ESRF specific. Please use the DOI search engine at <a href="https://www.doi.org"> doi.org</a>. </p>':'<h2> Not found ! </h2> <p> The DOI was not found at ESRF because its prefix is not ESRF specific. </br> Please use the DOI search engine at <a href="https://www.doi.org"> doi.org</a>. </p>':"Not Found"===t?"welcome-page"===r?"<h3> Not found ! </h3> <p> Sorry, the requested DOI was not found. </p>":"<h2> Not found ! </h2> <p> Sorry, the requested DOI was not found. </p>":"timeout"===t?"welcome-page"===r?"<h3> Not found ! </h3> <p> Sorry, the server took too long to reply. Try again later. </p>":"<h2> Not found ! </h2> <p> Sorry, the server took too long to reply. Try again later. </p>":""===t&&"The resource you are looking for doesn't exist."===e.responseText?"welcome-page"===r?"<h3> Not found ! </h3> <p>It may take up to 24 hours for a newly generated DOI to become available. Please try again later.</p>":"<h2> Not found ! </h2> <p>It may take up to 24 hours for a newly generated DOI to become available. Please try again later.</p>":"welcome-page"===r?"<h3> Not found ! </h3> <p> Connexion problem to the datacite server. Please try again later.</p>":"<h2> Not found ! </h2> <p> Connexion problem to the datacite server. Please try again later.</p>",dust.render(n,{message:a},function(e,t){$("#error").html(t)})},DOIView.prototype.renderErrorForExperimentalReport=function(){this.failedRecievingExpReport=!0;$("#"+this.reportPanelId).html('<div class="card-header text-center"> <label>Experimental report </label> </div> <div class="card-body padding10"> <p> The filename list is not available. </p> </div>')},DOIView.prototype.renderBadges=function(e){if(e){var t=this;dust.render("badges_tpl",{data:e},function(e,r){$("#"+t.badgePanelId).html(r)})}},DOIView.prototype.renderMetadata=function(e){if(e){var t=this;dust.render("metadata_tpl",{data:e},function(e,r){$("#"+t.metadataDivId).html(r)})}},DOIView.prototype.setDataAccessMessage=function(e){return"Open access"===e.accessibility?"The data can be accessed by clicking on the link below":"Restricted access"===e.accessibility?"The data are under embargo until <b>"+e.publiclyAccessibleYear+"</b> but could be released earlier. Currently, they are only accessible to proposal team members.":void 0},Event.prototype={attach:function(e){this._listeners.push(e)},notify:function(e){for(var t=0;t<this._listeners.length;t++)this._listeners[t](this._sender,e)}},ExperimentalReportController.prototype.requestFilenameList=function(e){var t=this;if(e){aroundHyphenRegExp=new RegExp(/^(.*)-(.*)/);var r=aroundHyphenRegExp.exec(e)[1],n=aroundHyphenRegExp.exec(e)[2];r&&n&&$.ajax({type:"GET",timeout:this.timeout,url:this.server,data:{categoryCode:r,categoryCounter:n},dataType:"json",success:function(e){t.onSuccess.notify(e)},error:function(e){t.onError.notify(e)}})}else t.onError.notify("Proposal is null")},ExperimentalReportController.prototype.openFileInNewTab=function(e){if(e)try{window.open("ftp://www.esrf.eu/pub/UserReports/"+e,"_blank")}catch(t){alert("The requested file "+e+" could not be downloaded.")}},JsonExtractor.prototype.extractInvestigationId=function(e){RegExp(/\/\w*-*[Ee][Ss][Rr][Ff]-[Ee][Ss]-(\d+)$/);return"investigationId"},JsonExtractor.prototype.getFieldFromSubject=function(e,t){if(e&&e[0])for(var r=new RegExp("^"+t+"$","i"),n=0;n<e[0].length;n++)if(r.test(e[0][n].subject_scheme)&&e[0][n].text)return _.split(e[0][n].text,",");return null},JsonExtractor.prototype.getMintingYear=function(e){return e&&e.date_registered&&null!=e.date_registered?moment(e.date_registered).year():null},JsonExtractor.prototype.getSessionDate=function(e){return e&&e.date_collected&&null!=e.date_collected?moment(e.date_collected).format("YYYY-M-D"):null},JsonExtractor.prototype.getResourceTypeGeneral=function(e){return e&&e.resource_type_general?e.resource_type_general:null},JsonExtractor.prototype.getResourceType=function(e){if(e&&e.resource_type){if("Experiment Session"===e.resource_type)return CONSTANTS.ES_RESOURCE_TYPE;if("Datacollection"===e.resource_type)return CONSTANTS.DC_RESOURCE_TYPE}return null},JsonExtractor.prototype.getAbstract=function(e){if(e&&e.description){var t=e.description;if(t.type&&"Abstract"===t.type)return t.text}return null},JsonExtractor.prototype.getMergedProposalAndBeamline=function(e,t,r){if(e&&t&&r&&e.length===t.length&&e.length===r.length){for(var n=[],a=0;a<e.length;a++)n.push({proposal:e[a],beamline:t[a],beamlineUrl:r[a]});return _.uniqBy(n,function(e){return JSON.stringify(e)})}return null},dust.helpers.proposalBeamlineTable=proposalBeamlineTable,dust.helpers.abstract=abstract;
\ No newline at end of file
function Author(){}function Citation(e){this.isBuildable=!!(e&&e.creator&&0!==e.creator.length&&e.date_registered&&e.title&&e.publisher&&e.doi)}function DOIController(e){var t=this;this.doiServer="https://data.datacite.org/",this.acceptedPrefix=["10.5072","10.15151"],this.view=e,this.experimentalReportController=new ExperimentalReportController,this.experimentalReportController.onSuccess.attach(function(e,r){t.view.renderExperimentalReportData(r)}),this.experimentalReportController.onError.attach(function(e,r){console.log("Error when retrieving fileList from SMIS."),t.view.renderErrorForExperimentalReport()})}function DoiData(e,t,r,n,i,a){this.title=e,this.doi=t,this.dataciteLink=r,this.publisher=n,this.creator=i,this.publiclyAccessibleYear=a}function DOIView(){this.mainPanelId="main",this.reportPanelId="expReport",this.badgePanelId="badges",this.metadataDivId="metadata",this.reportExperimentFileNames=null,this.failedRecievingExpReport=!1,this.isDOIAlreadyRendered=!1,this.onDOIRendered=new Event(this)}function Event(e){this._sender=e,this._listeners=[]}function ExperimentalReportController(){this.server="https://wwws.esrf.fr/misapps/SMISServer/rest/reports/fileNames",this.timeout=5e3,this.onSuccess=new Event(this),this.onError=new Event(this)}function JsonExtractor(e){}function proposalBeamlineTable(e,t,r,n){var i=n.mergedProposalBeamlines;if(e.write('<table class="table table-striped">'),e.write("<thead>"),e.write("<tr>"),e.write('<th scope="col">Proposals</th>'),e.write('<th scope="col">Beamlines</th>'),e.write("</tr>"),e.write("</thead>"),e.write("<tbody>"),i){for(var a=0;a<i.length;a++)if(i[a]){var o=i[a].proposal||"unknown",s=i[a].beamline||"unknown",l=i[a].beamlineUrl;e.write("<tr>"),e.write("<td>"+o+"</td>"),"noLink"===l?e.write("<td>"+s+"</td>"):e.write('<td> <a href="'+l+'" target="_blank">'+s+" </a> </td>"),e.write("</tr>")}else e.write("<tr>"),chunck.write("<td> unknown </td>"),chunck.write("<td> unknown </td>"),e.write("</tr>");return e.write("</tbody>"),e.write("</table>"),e.render(r.block,t)}}function abstract(e,t,r,n){var i=n.abstract;return e.write('<div class="myBorder-left">'),e.write("<label> Abstract </label>"),e.write('<div class="padding-left-15">'),i?e.write(i):e.write("There is no abstract for this session."),e.write("</div >"),e.write("</div >"),e.render(r.block,t)}Author.prototype.setFirstName=function(e){this.firstName=e},Author.prototype.setFamilyName=function(e){this.familyName=e},Author.prototype.setSingleName=function(e){this.singleName=e},Author.prototype.getRawFamilyName=function(){if(this.familyName)return this.familyName;if(this.singleName){var e=new RegExp(/(\S+)/g),t=this.singleName.match(e);if(2===t.length)return this.familyName=t[1],this.familyName;var r=new RegExp(/\s([^a-z]+$)/).exec(this.singleName);return r&&(this.familyName=r[1]),this.familyName}},Author.prototype.getRawFirstName=function(){if(this.firstName)return this.firstName;if(this.singleName){var e=new RegExp(/(\S+)/g),t=this.singleName.match(e);if(2===t.length)return this.firstName=t[0],this.firstName;var r=new RegExp(/^(.[^A-Z]+)+\b/).exec(this.singleName);return r&&(this.firstName=r[0]),r}},Author.prototype.getTitleCaseFamilyName=function(){if(this.familyName){allLowerCase=this.familyName.toLowerCase();var e=new RegExp(/^./);return allLowerCase.replace(e,function(e){return e.toUpperCase()})}return console.log("family name is undefined"),null},Author.prototype.getFirstNameInitials=function(){var e=new RegExp(/(\S+)/g);return this.firstName?this.firstName.replace(e,function(e){return e.charAt(0)+"."}):(console.log("first name is undefined"),null)};var BEAMLINEURL=[{name:"BM05",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/XNP/BM05"},{name:"BM29",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/BM29"},{name:"CM01",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/home/UsersAndScience/Experiments/MX/About_our_beamlines/CM01.html"},{name:"ID01",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID01"},{name:"ID06",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/home/UsersAndScience/Experiments/MEx/id06-large-volume-press.html"},{name:"ID11",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11"},{name:"ID16A",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/XNP/ID16A"},{name:"ID16B",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/XNP/ID16B"},{name:"ID17",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/UsersAndScience/Experiments/CBS/ID17"},{name:"ID19",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.fr/home/UsersAndScience/Experiments/StructMaterials/ID19.html"},{name:"ID21",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21"},{name:"ID22",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/id22"},{name:"ID23-1",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/ID23-1"},{name:"ID23-2",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/ID23-2"},{name:"ID29",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/home/UsersAndScience/Experiments/Beamlines/content/content/id29.html"},{name:"ID30A1",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/MASSIF1"},{name:"ID30A3",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/home/UsersAndScience/Experiments/MX/About_our_beamlines/id30a-3--massif-3.html"},{name:"ID30B",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/id30b"},{name:"ID32",startDate:"2000-01-01T00:00+00:00",endDate:"2100-12-31T00:00+00:00",url:"http://www.esrf.eu/ID32"}];Citation.prototype.getAuthorsForCitation=function(e){if(this.isBuildable){var t=_.transform(e,function(e,t,r,n){n instanceof Array||(t=n);var i=null;if(t.givenName?((i=new Author).setFamilyName(t.familyName),i.setFirstName(t.givenName),e.push(i.getTitleCaseFamilyName()+" "+i.getFirstNameInitials())):((i=new Author).setSingleName(t.name),i.getRawFamilyName()&&i.getRawFirstName()?e.push(i.getTitleCaseFamilyName()+" "+i.getFirstNameInitials()):e.push(t.name)),!(n instanceof Array))return!1},[]);return _.join(t,", ")}return console.log("the author list for the citation could not be generated."),""};var CONSTANTS={ES_RESOURCE_TYPE:"experimental session resource type",DC_RESOURCE_TYPE:"dataset collection resource type"};DOIController.prototype.isValidDOIData=function(e){return _.keysIn(e).length>3&&_.find(_.keysIn(e),function(e){return"title"===e}).length>0},DOIController.prototype.getData=function(e){var t=this;this.view.setDOIInTopBanner(e),this.hasAcceptedPrefix(e)?$.ajax({headers:{Accept:"application/vnd.datacite.datacite+json"},type:"GET",timeout:15e3,url:this.doiServer+e,beforeSend:function(){t.view.setLoading("Retrieving data from Server")},complete:function(){t.view.setLoading(!1)}}).done(function(r){if(r)if(t.isValidDOIData(r)){var n=new DoiData(r.title,r.doi.toUpperCase(),t.doiServer+e,r.publisher,r.creator,r.publication_year),i=new JsonExtractor;n.abstract=i.getAbstract(r),n.investigationId=i.extractInvestigationId(r),n.mintingYear=i.getMintingYear(r),n.proposalType=i.getFieldFromSubject(r.subject,"Proposal Type Description"),n.resourceType=i.getResourceType(r),n.resourceTypeGeneral=i.getResourceTypeGeneral(r),n.sessionDate=i.getSessionDate(r);var a=i.getFieldFromSubject(r.subject,"Proposal"),o=i.getFieldFromSubject(r.subject,"Instrument");t.experimentalReportController.requestFilenameList(a[0]),n.accessibility=n.getAccessibilityStatus(n.resourceType,n.sessionDate,n.publiclyAccessibleYear),n.accessMessage=t.view.setDataAccessMessage(n),n.citation=t.createCitation(r),n.resourceType===CONSTANTS.ES_RESOURCE_TYPE&&(n.beamlineUrls=t.getBeamlineUrl(o,r.date_collected,n.resourceType)),n.resourceType===CONSTANTS.DC_RESOURCE_TYPE&&(n.beamlineUrls=t.getBeamlineUrl(o,r.publication_year,n.resourceType)),n.mergedProposalBeamlines=i.getMergedProposalAndBeamline(a,o,n.beamlineUrls),t.view.renderDOIData(n)}else t.view.renderError("Not Found",t.origin)}).fail(function(e,r,n){t.view.renderError(e,n,t.origin),t.view.setLoading(!1)}):t.view.renderError("Bad Prefix",t.origin)},DOIController.prototype.hasAcceptedPrefix=function(e){var t=e.split("/")[0];return-1!=_.findIndex(this.acceptedPrefix,function(e){return t==e})},DOIController.prototype.displayMainContent=function(e){"welcome-page"===this.origin&&dust.render("welcome_tpl",{},function(e,t){$("#main").html(t)}),"index"===this.origin&&this.getData(e)},DOIController.prototype.setOrigin=function(e){this.origin=e},DOIController.prototype.getBeamlineUrl=function(e,t,r){var n=[];return e.forEach(function(e){if(t){r===CONSTANTS.ES_RESOURCE_TYPE&&(t=moment(t)),r===CONSTANTS.DC_RESOURCE_TYPE&&(t=moment(t,"YYYY"));for(var i="",a=0;a<BEAMLINEURL.length;a++){var o=moment(BEAMLINEURL[a].startDate),s=moment(BEAMLINEURL[a].endDate);if(BEAMLINEURL[a].name.toLowerCase()===e.toLowerCase()&&t>=o&&t<=s){i=BEAMLINEURL[a].url;break}}""===i?n.push("noLink"):n.push(i)}else n.push("noLink")}),n},DOIController.prototype.createCitation=function(e){var t=new Citation(e);if(t.isBuildable){return t.getAuthorsForCitation(e.creator)+" ("+moment(e.date_registered).year()+"). "+e.title+". "+e.publisher+" (ESRF). <a href='https://doi.esrf.fr/"+e.doi+"'> doi:"+e.doi.toUpperCase()+"</a>"}return"The citation could not be generated."},DoiData.prototype.getAccessibilityStatus=function(e,t,r){if(e)if(e===CONSTANTS.ES_RESOURCE_TYPE){if(r&&t){var n=moment(r,"YYYY"),i=moment();if(i>n)return"Open access";if(i<=n)return"Restricted access"}}else if(e===CONSTANTS.DC_RESOURCE_TYPE)return"Open access";return console.log("Failed to determine whether the accessibility of the DOI."),"Accessibility status could not be determined"},DOIView.prototype.setLoading=function(e){0!=e?$("body").addClass("loading"):$("body").removeClass("loading")},DOIView.prototype.setDOIInTopBanner=function(e){$("#doiValue").text("DOI > "+e.toUpperCase())},DOIView.prototype.renderExperimentalReportData=function(e){if(e){var t=this;this.isDOIAlreadyRendered?dust.render("experimentalreport_tpl",{data:e},function(e,r){$("#"+t.reportPanelId).html(r)}):this.reportExperimentFileNames=e}},DOIView.prototype.renderDOIData=function(e){var t=this;dust.render("landingpage_tpl",{data:e},function(r,n){$("#"+t.mainPanelId).html(n),t.isDOIAlreadyRendered=!0,t.renderBadges(e),t.renderMetadata(e),t.failedRecievingExpReport?t.renderErrorForExperimentalReport():t.reportExperimentFileNames&&t.renderExperimentalReportData(t.reportExperimentFileNames)})},DOIView.prototype.renderError=function(e,t,r){var n="welcome-page"===r?"doinotfound2_tpl":"doinotfound_tpl",i="";i="Bad Prefix"===t?"welcome-page"===r?'<h3> Not found ! </h3> <p> The DOI was not found at ESRF because its prefix is not ESRF specific. Please use the DOI search engine at <a href="https://www.doi.org"> doi.org</a>. </p>':'<h2> Not found ! </h2> <p> The DOI was not found at ESRF because its prefix is not ESRF specific. </br> Please use the DOI search engine at <a href="https://www.doi.org"> doi.org</a>. </p>':"Not Found"===t?"welcome-page"===r?"<h3> Not found ! </h3> <p> Sorry, the requested DOI was not found. </p>":"<h2> Not found ! </h2> <p> Sorry, the requested DOI was not found. </p>":"timeout"===t?"welcome-page"===r?"<h3> Not found ! </h3> <p> Sorry, the server took too long to reply. Try again later. </p>":"<h2> Not found ! </h2> <p> Sorry, the server took too long to reply. Try again later. </p>":""===t&&"The resource you are looking for doesn't exist."===e.responseText?"welcome-page"===r?"<h3> Not found ! </h3> <p>It may take up to 24 hours for a newly generated DOI to become available. Please try again later.</p>":"<h2> Not found ! </h2> <p>It may take up to 24 hours for a newly generated DOI to become available. Please try again later.</p>":"welcome-page"===r?"<h3> Not found ! </h3> <p> Connexion problem to the datacite server. Please try again later.</p>":"<h2> Not found ! </h2> <p> Connexion problem to the datacite server. Please try again later.</p>",dust.render(n,{message:i},function(e,t){$("#error").html(t)})},DOIView.prototype.renderErrorForExperimentalReport=function(){this.failedRecievingExpReport=!0;$("#"+this.reportPanelId).html('<div class="card-header text-center"> <label>Experimental report </label> </div> <div class="card-body padding10"> <p> The filename list is not available. </p> </div>')},DOIView.prototype.renderBadges=function(e){if(e){var t=this;dust.render("badges_tpl",{data:e},function(e,r){$("#"+t.badgePanelId).html(r)})}},DOIView.prototype.renderMetadata=function(e){if(e){var t=this;dust.render("metadata_tpl",{data:e,constants:CONSTANTS},function(e,r){$("#"+t.metadataDivId).html(r)})}},DOIView.prototype.setDataAccessMessage=function(e){return"Open access"===e.accessibility?"The data can be accessed by clicking on the link below":"Restricted access"===e.accessibility?"The data are under embargo until <b>"+e.publiclyAccessibleYear+"</b> but could be released earlier. Currently, they are only accessible to proposal team members.":void 0},Event.prototype={attach:function(e){this._listeners.push(e)},notify:function(e){for(var t=0;t<this._listeners.length;t++)this._listeners[t](this._sender,e)}},ExperimentalReportController.prototype.requestFilenameList=function(e){var t=this;if(e){var r=new RegExp(/^(.*)-(.*)/),n=r.exec(e)[1],i=r.exec(e)[2];n&&i&&$.ajax({type:"GET",timeout:this.timeout,url:this.server,data:{categoryCode:n,categoryCounter:i},dataType:"json",success:function(e){t.onSuccess.notify(e)},error:function(e){t.onError.notify(e)}})}else t.onError.notify("Proposal is null")},ExperimentalReportController.prototype.openFileInNewTab=function(e){if(e)try{window.open("ftp://www.esrf.eu/pub/UserReports/"+e,"_blank")}catch(t){alert("The requested file "+e+" could not be downloaded.")}},JsonExtractor.prototype.extractInvestigationId=function(e){RegExp(/\/\w*-*[Ee][Ss][Rr][Ff]-[Ee][Ss]-(\d+)$/);return"investigationId"},JsonExtractor.prototype.getFieldFromSubject=function(e,t){if(e&&e[0])for(var r=new RegExp("^"+t+"$","i"),n=0;n<e[0].length;n++)if(r.test(e[0][n].subject_scheme)&&e[0][n].text)return _.split(e[0][n].text,",");return null},JsonExtractor.prototype.getMintingYear=function(e){return e&&e.date_registered&&null!=e.date_registered?moment(e.date_registered).year():null},JsonExtractor.prototype.getSessionDate=function(e){return e&&e.date_collected&&null!=e.date_collected?moment(e.date_collected).format("YYYY-M-D"):null},JsonExtractor.prototype.getResourceTypeGeneral=function(e){return e&&e.resource_type_general?e.resource_type_general:null},JsonExtractor.prototype.getResourceType=function(e){if(e&&e.resource_type){if("Experiment Session"===e.resource_type)return CONSTANTS.ES_RESOURCE_TYPE;if("Datacollection"===e.resource_type)return CONSTANTS.DC_RESOURCE_TYPE}return null},JsonExtractor.prototype.getAbstract=function(e){if(e&&e.description){var t=e.description;if(t.type&&"Abstract"===t.type)return t.text}return null},JsonExtractor.prototype.getMergedProposalAndBeamline=function(e,t,r){if(e&&t&&r&&e.length===t.length&&e.length===r.length){for(var n=[],i=0;i<e.length;i++)n.push({proposal:e[i],beamline:t[i],beamlineUrl:r[i]});return _.uniqBy(n,function(e){return JSON.stringify(e)})}return null},dust.helpers.proposalBeamlineTable=proposalBeamlineTable,dust.helpers.abstract=abstract;
\ No newline at end of file
......@@ -3,5 +3,5 @@
(function(dust){dust.register("doinotfound2_tpl",body_0);function body_0(chk,ctx){return chk.f(ctx.get(["message"], false),ctx,"h",["s"]);}body_0.__dustBody=!0;return body_0}(dust));
(function(dust){dust.register("experimentalreport_tpl",body_0);function body_0(chk,ctx){return chk.w("<div class=\"card-header text-center\"><label>Experimental report </label></div><div class=\"card-body padding10\">").x(ctx.get(["data"], false),ctx,{"else":body_1,"block":body_2},{});}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("<p class=\"card-text\"> There is currently no experimental report. </p></div>");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.h("eq",ctx,{"block":body_3},{"key":ctx.getPath(false, ["data","length"]),"value":1},"h").h("gt",ctx,{"block":body_4},{"key":ctx.getPath(false, ["data","length"]),"value":1},"h").w(" ");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<p class=\"card-text\"> <b> One </b> report has been found for this proposal. </p></div><div class=\"card-body\"> <button type=\"button\" class=\"btn btn-primary btn-lg btn-block\" onclick=\"javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('").f(ctx.getPath(false, ["data","0"]),ctx,"h").w("'); })()\" > <span class=\"fa fa-download whiteFont\"></span> ").f(ctx.getPath(false, ["data","0"]),ctx,"h").w(" </button></div>");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<p class=\"card-text\"> In total, <b> ").f(ctx.getPath(false, ["data","length"]),ctx,"h").w(" </b> reports have been found for this proposal: </p></div> <div class=\"card-body\"><div class=\"scroll-box\">").s(ctx.get(["data"], false),ctx,{"block":body_5},{}).w("</div> </div>");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w(" ").h("sep",ctx,{"block":body_6},{},"h").h("last",ctx,{"block":body_7},{},"h");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("<div class=\"row\"> <div class=\"col-1\"> </div><div class=\"col-10 padding-bottom-10\"><button type=\"button\" class=\"btn btn-primary btn-lg btn-block\" onclick=\"javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('").f(ctx.getPath(true, []),ctx,"h").w("'); })()\" > <span class=\"fa fa-download whiteFont\"></span> <span class=\"whitefont\"> ").f(ctx.getPath(true, []),ctx,"h").w("</span> </button></div><div class=\"col-1\"> </div> </div>");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("<div class=\"row\"> <div class=\"col-1\"> </div><div class=\"col-10\"><button type=\"button\" class=\"btn btn-primary btn-lg btn-block\" onclick=\"javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('").f(ctx.getPath(true, []),ctx,"h").w("'); })()\" > <span class=\"fa fa-download whiteFont\"></span> <span class=\"whitefont\"> ").f(ctx.getPath(true, []),ctx,"h").w("</span> </button></div><div class=\"col-1\"> </div> </div>");}body_7.__dustBody=!0;return body_0}(dust));
(function(dust){dust.register("landingpage_tpl",body_0);function body_0(chk,ctx){return chk.w("<div class=\"container-fluid\"><div class=\"row padding-top-15\"><div class=\"col-12 col-md-9\"><div class=\"row\"><div class=\"col-12\"><div id=\"badges\"> </div> </div></div><div class=\"row\"><div class=\"col-12 fontSize-20 text-center text-uppercase font-weight-bold py-3\">").f(ctx.getPath(false, ["data","title"]),ctx,"h").w("</div></div><div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><div><cite>").s(ctx.getPath(false, ["data","creator"]),ctx,{"block":body_1},{}).w("</cite></div></div></div></div><div class=\"padding-top-15\"></div></div><div class=\"col-12 col-md-3\"><div class=\"card\"><div class=\"card-body\"><div class=\"card-text\"><label> DOI </label><div class=\"padding-left-15\"> <span class=\"doiBadge borderRadius-5 font-1p4rem\"> <a id=\"doiLink\" href=").f(ctx.getPath(false, ["data","dataciteLink"]),ctx,"h").w("> ").f(ctx.getPath(false, ["data","doi"]),ctx,"h").w(" </a></span> </div><label class=\"padding-top-5\"> Licence (for files) </label><div class=\"padding-left-15\"><p> <a href=\"https://creativecommons.org/licenses/by/4.0/\"> Creative Commons Attribution 4.0 </a> </p></div> </div></div></div></div></div><hr> <div id=\"metadata\"> </div><hr><div class=\"row\"><div class=\"col-12\"> <div class=\"card\" id=\"expReport\"><div class=\"card-header text-center\"><label>Experimental report </label></div></div></div></div><br><div class=\"row\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header text-center\"><label>Experimental data </label></div><div class=\"card-body padding10\"><p class=\"card-text\" >").f(ctx.getPath(false, ["data","accessMessage"]),ctx,"h",["s"]).w("</p></div><div class=\"card-body\"><div class=\"row\"><div class=\"col-1\"> </div><div class=\"col-10\"><form action=\"https://icat.esrf.fr/#/browse/facility/ESRF/proposal/").f(ctx.getPath(false, ["data","proposalName"]),ctx,"h").w("/investigation/").f(ctx.getPath(false, ["data","investigationId"]),ctx,"h").w("/dataset\" target=\"_blank\"><button type=\"submit\" class=\"btn btn-primary btn-lg btn-block\"> Access data </button></form></div><div class=\"col-1\"> </div></div></div></div> </div></div><hr><div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><label class=\"greyGradientToRight padding-left-10 padding-right-20\"> Citation </label><div class=\"padding-left-25\"><p> Below is the recommended format for citing this work in a research publication.</p><div class=\"padding-left-25\"><cite> ").f(ctx.getPath(false, ["data","citation"]),ctx,"h",["s"]).w(" </cite></div></div></div> </div></div></div>");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.h("sep",ctx,{"block":body_2},{},"h").h("last",ctx,{"block":body_5},{},"h");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.x(ctx.getPath(true, ["givenName"]),ctx,{"else":body_3,"block":body_4},{});}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["name"]),ctx,"h").w(" ; ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["givenName"]),ctx,"h").w(" ").f(ctx.getPath(true, ["familyName"]),ctx,"h").w(" ; ");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.x(ctx.getPath(true, ["givenName"]),ctx,{"else":body_6,"block":body_7},{});}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["name"]),ctx,"h").w(". ");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["givenName"]),ctx,"h").w(" ").f(ctx.getPath(true, ["familyName"]),ctx,"h").w(". ");}body_7.__dustBody=!0;return body_0}(dust));
(function(dust){dust.register("metadata_tpl",body_0);function body_0(chk,ctx){return chk.h("eq",ctx,{"block":body_1},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["data","ES_RESOURCE_TYPE"])},"h").h("eq",ctx,{"block":body_17},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["data","DC_RESOURCE_TYPE"])},"h").w(" ");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("<div class=\"row\">").x(ctx.getPath(false, ["data","mergedProposalBeamlines"]),ctx,{"block":body_2},{}).w("</div><hr> <div class=\"row\"><div class=\"col-12\">").h("abstract",ctx,{"block":body_16},{"abstract":ctx.getPath(false, ["data","abstract"])},"h").w("</div></div>");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.x(ctx.getPath(false, ["data","mergedProposalBeamlines","0"]),ctx,{"block":body_3},{});}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<div class=\"col\"><div class=\"myBorder-left\"><label> Proposal </label>").x(ctx.getPath(false, ["data","mergedProposalBeamlines","0","proposal"]),ctx,{"else":body_4,"block":body_5},{}).w("</div></div><div class=\"col\"><div class=\"myBorder-left\"><label> Publication year </label>").x(ctx.getPath(false, ["data","mintingYear"]),ctx,{"else":body_6,"block":body_7},{}).w("</div></div><div class=\"col\"><div class=\"myBorder-left\"><label> Beamline </label> ").x(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,{"else":body_8,"block":body_9},{}).w("</div></div><div class=\"col\"><div class=\"myBorder-left\"><label> Session date </label>").x(ctx.getPath(false, ["data","sessionDate"]),ctx,{"else":body_12,"block":body_13},{}).w("</div></div> <div class=\"col-4\"><div class=\"myBorder-left\"><label>Category </label>").x(ctx.getPath(false, ["data","proposalType"]),ctx,{"else":body_14,"block":body_15},{}).w("</div></div> ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","proposal"]),ctx,"h").w("</div>");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mintingYear"]),ctx,"h").w("</div>");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("<div class=\"padding-left-15\">Not available</div>");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.h("eq",ctx,{"else":body_10,"block":body_11},{"key":ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamlineUrl"]),"value":"noLink"},"h");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.w("<div class=\"padding-left-15\"><a href=\"").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamlineUrl"]),ctx,"h").w("\" target=\"_blank\"> ").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,"h").w(" </a></div>");}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,"h").w("</div>");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","sessionDate"]),ctx,"h").w("</div>");}body_13.__dustBody=!0;function body_14(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_14.__dustBody=!0;function body_15(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","proposalType"]),ctx,"h").w("</div>");}body_15.__dustBody=!0;function body_16(chk,ctx){return chk.w(" ");}body_16.__dustBody=!0;function body_17(chk,ctx){return chk.w("<div class=\"container-fluid\"><div class=\"row\"><div class=\"col-md-12 col-xl-8\">").h("abstract",ctx,{"block":body_18},{"abstract":ctx.getPath(false, ["data","abstract"])},"h").w("</br></div><div class=\"col-sm-6 col-xl-2\"><div class=\"myBorder-left\">").h("proposalBeamlineTable",ctx,{"block":body_19},{"mergedProposalBeamlines":ctx.getPath(false, ["data","mergedProposalBeamlines"])},"h").w("</div></div><div class=\"col-sm-6 col-xl-2\"><div class=\"myBorder-left\"><label> Publication year </label>").x(ctx.getPath(false, ["data","mintingYear"]),ctx,{"else":body_20,"block":body_21},{}).w("</div></div></div></div>");}body_17.__dustBody=!0;function body_18(chk,ctx){return chk.w(" ");}body_18.__dustBody=!0;function body_19(chk,ctx){return chk.w(" ");}body_19.__dustBody=!0;function body_20(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_20.__dustBody=!0;function body_21(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mintingYear"]),ctx,"h").w("</div>");}body_21.__dustBody=!0;return body_0}(dust));
(function(dust){dust.register("metadata_tpl",body_0);function body_0(chk,ctx){return chk.h("eq",ctx,{"block":body_1},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["constants","ES_RESOURCE_TYPE"])},"h").h("eq",ctx,{"block":body_17},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["constants","DC_RESOURCE_TYPE"])},"h").w(" ");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("<div class=\"row\">").x(ctx.getPath(false, ["data","mergedProposalBeamlines"]),ctx,{"block":body_2},{}).w("</div><hr> <div class=\"row\"><div class=\"col-12\">").h("abstract",ctx,{"block":body_16},{"abstract":ctx.getPath(false, ["data","abstract"])},"h").w("</div></div>");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.x(ctx.getPath(false, ["data","mergedProposalBeamlines","0"]),ctx,{"block":body_3},{});}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<div class=\"col\"><div class=\"myBorder-left\"><label> Proposal </label>").x(ctx.getPath(false, ["data","mergedProposalBeamlines","0","proposal"]),ctx,{"else":body_4,"block":body_5},{}).w("</div></div><div class=\"col\"><div class=\"myBorder-left\"><label> Publication year </label>").x(ctx.getPath(false, ["data","mintingYear"]),ctx,{"else":body_6,"block":body_7},{}).w("</div></div><div class=\"col\"><div class=\"myBorder-left\"><label> Beamline </label> ").x(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,{"else":body_8,"block":body_9},{}).w("</div></div><div class=\"col\"><div class=\"myBorder-left\"><label> Session date </label>").x(ctx.getPath(false, ["data","sessionDate"]),ctx,{"else":body_12,"block":body_13},{}).w("</div></div> <div class=\"col-4\"><div class=\"myBorder-left\"><label>Category </label>").x(ctx.getPath(false, ["data","proposalType"]),ctx,{"else":body_14,"block":body_15},{}).w("</div></div> ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","proposal"]),ctx,"h").w("</div>");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mintingYear"]),ctx,"h").w("</div>");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("<div class=\"padding-left-15\">Not available</div>");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.h("eq",ctx,{"else":body_10,"block":body_11},{"key":ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamlineUrl"]),"value":"noLink"},"h");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.w("<div class=\"padding-left-15\"><a href=\"").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamlineUrl"]),ctx,"h").w("\" target=\"_blank\"> ").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,"h").w(" </a></div>");}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,"h").w("</div>");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","sessionDate"]),ctx,"h").w("</div>");}body_13.__dustBody=!0;function body_14(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_14.__dustBody=!0;function body_15(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","proposalType"]),ctx,"h").w("</div>");}body_15.__dustBody=!0;function body_16(chk,ctx){return chk.w(" ");}body_16.__dustBody=!0;function body_17(chk,ctx){return chk.w("<div class=\"container-fluid\"><div class=\"row\"><div class=\"col-md-12 col-xl-8\">").h("abstract",ctx,{"block":body_18},{"abstract":ctx.getPath(false, ["data","abstract"])},"h").w("</br></div><div class=\"col-sm-6 col-xl-2\"><div class=\"myBorder-left\">").h("proposalBeamlineTable",ctx,{"block":body_19},{"mergedProposalBeamlines":ctx.getPath(false, ["data","mergedProposalBeamlines"])},"h").w("</div></div><div class=\"col-sm-6 col-xl-2\"><div class=\"myBorder-left\"><label> Publication year </label>").x(ctx.getPath(false, ["data","mintingYear"]),ctx,{"else":body_20,"block":body_21},{}).w("</div></div></div></div>");}body_17.__dustBody=!0;function body_18(chk,ctx){return chk.w(" ");}body_18.__dustBody=!0;function body_19(chk,ctx){return chk.w(" ");}body_19.__dustBody=!0;function body_20(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_20.__dustBody=!0;function body_21(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mintingYear"]),ctx,"h").w("</div>");}body_21.__dustBody=!0;return body_0}(dust));
(function(dust){dust.register("welcome_tpl",body_0);function body_0(chk,ctx){return chk.w(" <div class=\"container-fluid\"><div class=\"row\"><div class=\"col-12 flexCentered whiteFont\" style=\"color:#132577; font-size: 6.4rem; height: 200px; margin-top: 10px; margin-bottom: 10px;\">ESRF DOI Portal</div></div></div><div class=\"container-fluid\"><div class=\"row\"><div class=\"col-12 col-md-4\"><div class=\"padding10\"><div class=\"card-header text-center\"><h1 class=\"font-3p2rem\">About the portal</h1></div><div class=\"card-body padding10\">This page centralizes the <a href=\"http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi.html\" target=\"_blank\"> DOI</a> services offered by the ESRF to access data stored at the facility as part of its data policy. Data referred to by ESRF DOIs are accessed via the ESRF data catalogue <a href=\"https://icat.esrf.fr\" target=\"_blank\"> icat.esrf.fr</a>.<p> In case you require a DOI for a subset of data please send an email with the following high level metadata - \"proposal\", \"title\", \"authors\", \"abstract\", \"datasets\" to datapolicy@esrf.fr </p></div></div></div><div class=\"col-12 col-md-4\"><div class=\"padding10\"><div class=\"card-header text-center \"><h1 class=\"font-3p2rem\">DOI resolver</h1></div><div class=\"card-body padding10\"><p>The search engine below only searches DOIs which have been minted at the ESRF. </br> Use <a href=\"https://doi.org\">doi.org </a> search engine for other DOIs.</p><div class=\"row\"><div class=\"col-xl-9 padding-right-0\"><p> <input id=\"doiSearchBox\" class=\"form-control\" placeholder=\"10.15151/ESRF-ES-90632078\" type=\"text\" required/> </p><div class=\"text-danger\" id=\"error\"> </div> </div><div class=\"col padding-left-0\"> <input class=\"btn btn-primary\" type=\"submit\" value=\"Search\" onclick=\"searchDOI()\" /> </div></div><div class=\"row\"><div class=\"col\"><p> <a href=\"https://search.datacite.org/works?query=10.15151\"> List all ESRF DOIs </a> </p></div></div></div> </div></div><div class=\"col-12 col-md-4\"><div class=\"padding10\"><div class=\"card-header text-center\"><h1 class=\"font-3p2rem\">About DOI </h1></div><div class=\"card-body padding10\">The Digital Object Identifier (<a href=\"http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi.html\">DOI</a>) is a code composed of digits and characters. It identifies data in a unique and permanent way thereby allowing data to be referenced worldwide. The DOI has two parts, namely the DOI prefix and the DOI suffix separated by a slash (\"/\"). The ESRF prefix is 10.15151 followed by a slash and the ESRF suffix. Currently the following suffix(es) are defined:</p><pre>ESRF-ES - for a session at the ESRF </pre>Refer to the <a href=\"http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi/doi---concepts.html\">DOI concepts</a> page to find out what a session is.</div></div></div></div></div>");}body_0.__dustBody=!0;return body_0}(dust));
\ No newline at end of file
var CONSTANTS = {
ES_RESOURCE_TYPE : "experimental session resource type",
DC_RESOURCE_TYPE : "dataset collection resource type"
};
//module.exports = CONSTANTS;
};
\ No newline at end of file
function DoiData() {
function DoiData(title, doi, dataciteLink, publisher, creator, publication_year) {
this.title = title;
this.doi = doi;
this.dataciteLink = dataciteLink;
this.publisher = publisher;
this.creator = creator;
this.publiclyAccessibleYear = publication_year;
}
/**
* Get the accessibility status
* @param {string} resourceType the resource type for this DOI
......
function DOIController(view) {
var _this = this;
// doiServer = the server which provides doi details from a given doi name.
//this.doiServer = "https://data.datacite.org/";
this.doiServer = "https://api.test.datacite.org/";
this.doiServer = "https://data.datacite.org/";
// 10.5072 is the test esrf doi prefix;
......@@ -50,9 +49,8 @@ DOIController.prototype.getData = function (doi) {
timeout: 15000, // triggers timeout when request pends longer than
// 5000ms
url: this.doiServer + doi,
beforeSend: function (xhr) {
beforeSend: function () {
_this.view.setLoading("Retrieving data from Server");
xhr.setRequestHeader("Authorization", "Basic " + btoa("DATACITE.ESRF" + ":" + "datacyte1")); // to be removed as well as the parameter
},
complete: function () {
_this.view.setLoading(false);
......@@ -65,56 +63,37 @@ DOIController.prototype.getData = function (doi) {
if (!_this.isValidDOIData(data)) {
_this.view.renderError("Not Found", _this.origin);
} else {
var doiData = new DoiData();
doiData.title = data.title;
doiData.doi = data.doi.toUpperCase();
doiData.dataciteLink = _this.doiServer + doi;
doiData.publisher = data.publisher;
doiData.creator = data.creator;
// Extract data and fill doiData with it
var doiData = new DoiData(data.title, data.doi.toUpperCase(), _this.doiServer + doi, data.publisher, data.creator, data.publication_year);
var jsonExtractor = new JsonExtractor();
doiData.abstract = jsonExtractor.getAbstract(data);
doiData.investigationId = jsonExtractor.extractInvestigationId(data);
doiData.mintingYear = jsonExtractor.getMintingYear(data);
doiData.sessionDate = jsonExtractor.getSessionDate(data);
doiData.publiclyAccessibleYear = data.publication_year;
doiData.proposalType = jsonExtractor.getFieldFromSubject(data.subject, "Proposal Type Description");
doiData.proposalNames = jsonExtractor.getFieldFromSubject(data.subject, "Proposal");
console.log(doiData.proposalNames);
_this.experimentalReportController.requestFilenameList(doiData.proposalName);
doiData.resourceType = jsonExtractor.getResourceType(data);
doiData.resourceTypeGeneral = jsonExtractor.getResourceTypeGeneral(data);
doiData.sessionDate = jsonExtractor.getSessionDate(data);
doiData.beamlines = jsonExtractor.getFieldFromSubject(data.subject, "Instrument");
var proposalNames = jsonExtractor.getFieldFromSubject(data.subject, "Proposal");
var beamlines = jsonExtractor.getFieldFromSubject(data.subject, "Instrument");
doiData.investigationId = jsonExtractor.extractInvestigationId(data);
doiData.resourceType = jsonExtractor.getResourceType(data);
_this.experimentalReportController.requestFilenameList(proposalNames[0]);
doiData.accessibility = doiData.getAccessibilityStatus(doiData.resourceType, doiData.sessionDate, doiData.publiclyAccessibleYear);
doiData.accessMessage = _this.view.setDataAccessMessage(doiData);
doiData.citation = _this.createCitation(data);
doiData.resourceTypeGeneral = jsonExtractor.getResourceTypeGeneral(data);
// constants passed for tests in the templates
doiData.DC_RESOURCE_TYPE = CONSTANTS.DC_RESOURCE_TYPE;
doiData.ES_RESOURCE_TYPE = CONSTANTS.ES_RESOURCE_TYPE;
// Set the URL corresponding to the beamline name.
if (doiData.resourceType === CONSTANTS.ES_RESOURCE_TYPE) {
if (data.date_collected) {
var experimentalDate = moment(data.date_collected);
doiData.beamlineUrls = _this.getBeamlineUrl(doiData.beamlines, experimentalDate);
}
}
doiData.beamlineUrls = _this.getBeamlineUrl(beamlines, data.date_collected, doiData.resourceType);
}
if (doiData.resourceType === CONSTANTS.DC_RESOURCE_TYPE) {
if (data.publication_year) {
var publicationDate = moment(data.publication_year, "YYYY");
doiData.beamlineUrls = _this.getBeamlineUrl(doiData.beamlines, publicationDate);
}
}
doiData.beamlineUrls = _this.getBeamlineUrl(beamlines, data.publication_year, doiData.resourceType);
}
doiData.mergedProposalBeamlines = jsonExtractor.getMergedProposalAndBeamline(doiData.proposalNames, doiData.beamlines, doiData.beamlineUrls);
// Create a table containing unique tuples [proposal, beamline, beamlineUrl]
doiData.mergedProposalBeamlines = jsonExtractor.getMergedProposalAndBeamline(proposalNames, beamlines, doiData.beamlineUrls);
// send to dust render
_this.view.renderDOIData(doiData);
}
}
......@@ -169,27 +148,40 @@ DOIController.prototype.setOrigin = function (origin) {
};
/**
* Get the corresponding url for a given beamline name
* @param {array} beamlines The beamline name
* @param {momentJS} date The date the experiment was performed.
* @return {array} an array containing urls of the beamLine(s).
*/
DOIController.prototype.getBeamlineUrl = function (beamlines, date) {
* Get the corresponding url for a given beamline name
* @param {array} beamlines The beamlines
* @param {momentJS} date The date the experiment was performed.
* @param {String} resourceType the data resource type
* @return {array} an array containing urls of the beamLine(s).
*/
DOIController.prototype.getBeamlineUrl = function (beamlines, date, resourceType) {
var result = [];
beamlines.forEach(function (beamline) {
for (var i = 0; i < BEAMLINEURL.length; i++) {
if (date) {
if (resourceType === CONSTANTS.ES_RESOURCE_TYPE) {
date = moment(date);
}
if (resourceType === CONSTANTS.DC_RESOURCE_TYPE) {
date = moment(date, "YYYY");
}
var foundUrl = "";
var startDate = moment(BEAMLINEURL[i].startDate);
var endDate = moment(BEAMLINEURL[i].endDate);
if (BEAMLINEURL[i].name.toLowerCase() === beamline.toLowerCase() && date >= startDate && date <= endDate) {
foundUrl = BEAMLINEURL[i].url;
break;
for (var i = 0; i < BEAMLINEURL.length; i++) {
var startDate = moment(BEAMLINEURL[i].startDate);
var endDate = moment(BEAMLINEURL[i].endDate);
if (BEAMLINEURL[i].name.toLowerCase() === beamline.toLowerCase() && date >= startDate && date <= endDate) {
foundUrl = BEAMLINEURL[i].url;
break;
}
}
}
if (foundUrl === "") {
result.push("no link");
if (foundUrl === "") {
result.push("noLink");
} else {
result.push(foundUrl);
}
} else {
result.push(foundUrl);
result.push("noLink");
}
});
return result;
......
......@@ -154,7 +154,8 @@ DOIView.prototype.renderMetadata = function (data) {
if (data) {
var _this = this;
dust.render('metadata_tpl', {
data: data
data: data,
constants : CONSTANTS
}, function (err, out) {
$('#' + _this.metadataDivId).html(out);
});
......
......@@ -8,17 +8,13 @@ function ExperimentalReportController() {
/**
* Request the experimental report filename list for the given proposal
*
* @param {string}
* proposal The proposal
*
* @param {string} proposal The proposal
*/
ExperimentalReportController.prototype.requestFilenameList = function(proposal) {
var _this = this;
if (proposal) {
// extract the proposal LetterCode (before the hyphen) and the digits (after
// the hyphen)
aroundHyphenRegExp = new RegExp(/^(.*)-(.*)/);
// extract the proposal LetterCode (before the hyphen) and the digits (after the hyphen)
var aroundHyphenRegExp = new RegExp(/^(.*)-(.*)/);
var beforeHyphen = aroundHyphenRegExp.exec(proposal)[1];
var afterHyphen = aroundHyphenRegExp.exec(proposal)[2];
......
{! Presentation of the metadata for the DOI which are from sessions !}
{@eq key=data.resourceType value=data.ES_RESOURCE_TYPE}
{@eq key=data.resourceType value=constants.ES_RESOURCE_TYPE}
<div class="row">
{?data.mergedProposalBeamlines}
{?data.mergedProposalBeamlines[0]}
......@@ -78,7 +78,7 @@
{! Presentation of the metadata for the DOI which are from dataset collections !}
{@eq key=data.resourceType value=data.DC_RESOURCE_TYPE}
{@eq key=data.resourceType value=constants.DC_RESOURCE_TYPE}
<div class="container-fluid">
<div class="row">
<div class="col-md-12 col-xl-8">
......
describe("Tests on doi controller", () => {
describe("getBeamlineUrl()", () => {
it("return beamlineurl for a 'ES' doi", () => {
let actualBeamlines = ['ID11'];
let actualDate = "2018-03-07"
let actualResourceType = CONSTANTS.ES_RESOURCE_TYPE;
let expectedBeamlineUrls = ["http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11"];
myDoiController = new DOIController(null);
expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls);
})
it("return beamlineurl for a 'ES' doi without date", () => {
let actualBeamlines = ['ID11'];
let actualDate = null;
let actualResourceType = CONSTANTS.ES_RESOURCE_TYPE;
let expectedBeamlineUrls = ["noLink"];
myDoiController = new DOIController(null);
expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls);