Commit 5a43330c authored by Maxime Chaillet's avatar Maxime Chaillet
Browse files

Merge branch 'issue50' into 'master'

Issue50

Closes #50

See merge request !54
parents 1e3755c0 c4d92ee8
......@@ -12,6 +12,7 @@
<script src="src/beamlineurl.js"></script>
<script src="src/citation.js"></script>
<script src="src/doicontroller.js"></script>
<script src="src/doiData.js"></script>
<script src="src/doiview.js"></script>
<script src="src/event.js"></script>
<script src="src/experimentalreportcontroller.js"></script>
......
This diff is collapsed.
(function(dust){dust.register("badges_tpl",body_0);function body_0(chk,ctx){return chk.h("eq",ctx,{"block":body_1},{"key":ctx.getPath(false, ["data","resourceTypeGeneral"]),"value":"Dataset"},"h").h("eq",ctx,{"block":body_3},{"key":ctx.getPath(false, ["data","accessibility"]),"value":"Open access"},"h").h("eq",ctx,{"block":body_4},{"key":ctx.getPath(false, ["data","accessibility"]),"value":"Under embargo"},"h");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w(" ").h("eq",ctx,{"block":body_2},{"key":ctx.getPath(false, ["data","resourceType"]),"value":"Experiment Session"},"h");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("<div class=\"col-auto\"><span class=\"badge badge-secondary\" style=\"font-size:14px;\"> Dataset(s) / session </span></div>");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<div class=\"col-auto\"><span class=\"badge badge-success\" style=\"font-size:14px;\"> Open access </span></div>");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<div class=\"col-auto\"><span class=\"badge badge-warning\" style=\"font-size:14px;\"> Under embargo </span></div>");}body_4.__dustBody=!0;return body_0}(dust));
(function(dust){dust.register("doinotfound_tpl",body_0);function body_0(chk,ctx){return chk.w("<div class=\"container-fluid \" style=\"color:black;\"><div class=\"row\"><div class=\"col-3\"> </div><div class=\"col-6 lightRedBackground text-center rounded\"> <p> ").f(ctx.get(["message"], false),ctx,"h",["s"]).w(" </p> </div></div><div class=\"col-3\"> </div></div> ");}body_0.__dustBody=!0;return body_0}(dust));
(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> 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(" </div>");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<p> <b> One </b> report has been found for this proposal. </p></div><div class=\"card-footer\"> <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> In total, <b> ").f(ctx.getPath(false, ["data","length"]),ctx,"h").w(" </b> reports have been found for this proposal: </p><div class=\"scroll-box\">").s(ctx.get(["data"], false),ctx,{"block":body_5},{}).w("</div>");}body_4.__dustBody=!0;function body_5(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_5.__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\"><br /><div class=\"row padding-top-15\"><div class=\"col-8\"><div class=\"row\"><div class=\"col-12 fontSize-20 text-center text-uppercase font-weight-bold\">").f(ctx.getPath(false, ["data","title"]),ctx,"h").w("</div></div><hr><div class=\"row\"><div class=\"col-4\"><div class=\"myBorder-left\"><label> Proposal </label>").x(ctx.getPath(false, ["data","proposalNumber"]),ctx,{"else":body_1,"block":body_2},{}).w("</div></div><div class=\"col-4\"><div class=\"myBorder-left\"><label> Publication year </label>").x(ctx.getPath(false, ["data","mintingYear"]),ctx,{"else":body_3,"block":body_4},{}).w("</div></div> <div class=\"col-4\"><div class=\"myBorder-left\"><label> Beamline </label> ").x(ctx.getPath(false, ["data","beamline"]),ctx,{"else":body_5,"block":body_6},{}).w("</div></div></div><div class=\"padding-top-15\"></div><div class=\"row\"><div class=\"col-4\"><div class=\"myBorder-left\"><label> Session date </label>").x(ctx.getPath(false, ["data","sessionDate"]),ctx,{"else":body_9,"block":body_10},{}).w("</div></div> <div class=\"col-4\"><div class=\"myBorder-left\"><label>Category </label>").x(ctx.getPath(false, ["data","proposalType"]),ctx,{"else":body_11,"block":body_12},{}).w("</div></div> <div class=\"col-4\"> <div class=\"myBorder-left\"><label>Publisher </label> <div class=\"padding-left-15\"><a href=\"http://www.esrf.fr\"> ").f(ctx.getPath(false, ["data","publisher"]),ctx,"h").w(" </a> </div></div></div> </div><hr><div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><label> Abstract </label><div class=\"padding-left-15\">There is no abstract for this session.</div></div> </div></div><hr><div class=\"row\"><div class=\"col-12\"><div class=\"card-deck\"><div class=\"card\" id=\"expReport\"><div class=\"card-header text-center\"><label>Experimental report </label></div></div><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-footer\"><form action=\"https://icat.esrf.fr/#/browse/facility/ESRF/proposal/").f(ctx.getPath(false, ["data","proposalNumber"]),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></div></div></div><hr><div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><label> Citation </label><div class=\"padding-left-15\"><p> Below is the recommended format for citing this work in a research publication.</p><div class=\"padding-left-15\"><cite> ").f(ctx.getPath(false, ["data","citation"]),ctx,"h",["s"]).w(" </cite></div></div></div> </div></div> </div><div class=\"col-4\"><div class=\"row\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header text-center\"><label>Authors </label></div><div class=\"card-body text-center\">").s(ctx.getPath(false, ["data","creator"]),ctx,{"block":body_13},{}).w("</div></div></div></div></div></div> </div>");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","proposalNumber"]),ctx,"h").w("</div>");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mintingYear"]),ctx,"h").w("</div>");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("<div class=\"padding-left-15\">Not available</div>");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.h("eq",ctx,{"else":body_7,"block":body_8},{"key":ctx.getPath(false, ["data","beamlineUrl"]),"value":"noLink"},"h");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("<div class=\"padding-left-15\"><a href=\"").f(ctx.getPath(false, ["data","beamlineUrl"]),ctx,"h").w("\" target=\"_blank\"> ").f(ctx.getPath(false, ["data","beamline"]),ctx,"h").w(" </a></div>");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","beamline"]),ctx,"h").w("</div>");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","sessionDate"]),ctx,"h").w("</div>");}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","proposalType"]),ctx,"h").w("</div>");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.w(" ").x(ctx.getPath(true, ["givenName"]),ctx,{"else":body_14,"block":body_15},{}).w(" ");}body_13.__dustBody=!0;function body_14(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["name"]),ctx,"h").w(" </br> ");}body_14.__dustBody=!0;function body_15(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["givenName"]),ctx,"h").w(" ").f(ctx.getPath(true, ["familyName"]),ctx,"h").w(" </br> ");}body_15.__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-8\"><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><hr><div class=\"row\"><div class=\"col-4\"><div class=\"myBorder-left\"><label> Proposal </label>").x(ctx.getPath(false, ["data","proposalNumber"]),ctx,{"else":body_1,"block":body_2},{}).w("</div></div><div class=\"col-4\"><div class=\"myBorder-left\"><label> Publication year </label>").x(ctx.getPath(false, ["data","mintingYear"]),ctx,{"else":body_3,"block":body_4},{}).w("</div></div> <div class=\"col-4\"><div class=\"myBorder-left\"><label> Beamline </label> ").x(ctx.getPath(false, ["data","beamline"]),ctx,{"else":body_5,"block":body_6},{}).w("</div></div></div><div class=\"padding-top-15\"></div><div class=\"row\"><div class=\"col-4\"><div class=\"myBorder-left\"><label> Session date </label>").x(ctx.getPath(false, ["data","sessionDate"]),ctx,{"else":body_9,"block":body_10},{}).w("</div></div> <div class=\"col-4\"><div class=\"myBorder-left\"><label>Category </label>").x(ctx.getPath(false, ["data","proposalType"]),ctx,{"else":body_11,"block":body_12},{}).w("</div></div> <div class=\"col-4\"> <div class=\"myBorder-left\"><label>Publisher </label> <div class=\"padding-left-15\"><a href=\"http://www.esrf.fr\"> ").f(ctx.getPath(false, ["data","publisher"]),ctx,"h").w(" </a> </div></div></div> </div><hr><div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><label> Abstract </label><div class=\"padding-left-15\">There is no abstract for this session.</div></div> </div></div><hr><div class=\"row\"><div class=\"col-12\"><div class=\"card-deck\"><div class=\"card\" id=\"expReport\"><div class=\"card-header text-center\"><label>Experimental report </label></div></div><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-footer\"><form action=\"https://icat.esrf.fr/#/browse/facility/ESRF/proposal/").f(ctx.getPath(false, ["data","proposalNumber"]),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></div></div></div><hr><div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><label> Citation </label><div class=\"padding-left-15\"><p> Below is the recommended format for citing this work in a research publication.</p><div class=\"padding-left-15\"><cite> ").f(ctx.getPath(false, ["data","citation"]),ctx,"h",["s"]).w(" </cite></div></div></div> </div></div> </div><div class=\"col-4\"><div id=\"badges\" class=\"row py-4\"> </div> <br><div class=\"row\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header text-center\"><label>Authors </label></div><div class=\"card-body text-center\">").s(ctx.getPath(false, ["data","creator"]),ctx,{"block":body_13},{}).w("</div></div></div></div></div></div> </div>");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","proposalNumber"]),ctx,"h").w("</div>");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mintingYear"]),ctx,"h").w("</div>");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("<div class=\"padding-left-15\">Not available</div>");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.h("eq",ctx,{"else":body_7,"block":body_8},{"key":ctx.getPath(false, ["data","beamlineUrl"]),"value":"noLink"},"h");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("<div class=\"padding-left-15\"><a href=\"").f(ctx.getPath(false, ["data","beamlineUrl"]),ctx,"h").w("\" target=\"_blank\"> ").f(ctx.getPath(false, ["data","beamline"]),ctx,"h").w(" </a></div>");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","beamline"]),ctx,"h").w("</div>");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","sessionDate"]),ctx,"h").w("</div>");}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","proposalType"]),ctx,"h").w("</div>");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.w(" ").x(ctx.getPath(true, ["givenName"]),ctx,{"else":body_14,"block":body_15},{}).w(" ");}body_13.__dustBody=!0;function body_14(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["name"]),ctx,"h").w(" </br> ");}body_14.__dustBody=!0;function body_15(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["givenName"]),ctx,"h").w(" ").f(ctx.getPath(true, ["familyName"]),ctx,"h").w(" </br> ");}body_15.__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: 4rem; height: 200px; margin-top: 10px; margin-bottom: 10px;\">ESRF Data 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\"><h2>About the portal</h2></div><div class=\"card-body padding10\">This page centralizes the services offered by the ESRF to access data stored at the facility as part of its data policy.<ul><li>DOI search engine</li><li>Data catalogue <a href=\"https://icat.esrf.fr\" target=\"_blank\"> icat.esrf.fr</a></li></ul></div></div></div><div class=\"col-12 col-md-4\"><div class=\"padding10\"><div class=\"card-header text-center \"><h2>DOI resolver</h2></div><div class=\"card-body padding10\"><p>The search engine below only finds DOI which have been minted at ESRF. </br> Use <a href=\"https://doi.org\">doi.org </a> search engine for any other DOI.</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\"> Advanced search </a> </p></div></div></div> </div></div><div class=\"col-12 col-md-4\"><div class=\"padding10\"><div class=\"card-header text-center\"><h2>About DOI</h2></div><div class=\"card-body padding10\">The Digital Object Identifier (<a href=\"https://www.doi.org/\">DOI</a>) is a code composed of digits and characters. It identifies data in aunique and perennial way thus referencing this data worldwide. The DOI has two parts namely the DOI prefixand the DOI suffix separated by a slash (\"/\") as depicted below :</p><pre>prefix/suffix </pre></div></div></div></div></div>");}body_0.__dustBody=!0;return body_0}(dust));
\ No newline at end of file
function DoiData() {
}
/**
* Get the accessibility status
*
* */
DoiData.prototype.getAccessibilityStatus = function( sessionDate, publiclyAccessibleYear ) {
if ( publiclyAccessibleYear && sessionDate ) {
var publiclyAvailableDate = moment( publiclyAccessibleYear, "YYYY" );
var now = moment();
if ( now > publiclyAvailableDate ) {
return "Open access";
} else if ( now <= publiclyAvailableDate ) {
return "Under embargo";
}
}
console.log( "Failed to determine whether the accessibility of the DOI." );
return "Accessibility status could not be determined";
};
......@@ -57,32 +57,40 @@ DOIController.prototype.getData = function(doi) {
}
})
.done(function(doiData) {
if (doiData) {
.done(function(data) {
if (data) {
// Test abnormal length of the json object
if (!_this.isValidDOIData(doiData)) {
if (!_this.isValidDOIData(data)) {
_this.view.renderError("Not Found", _this.origin);
} else {
var doiData = new DoiData();
doiData.title = data.title;
doiData.publisher = data.publisher;
doiData.creator = data.creator;
var jsonExtractor = new JsonExtractor();
doiData.mintingYear = jsonExtractor.getMintingYear(doiData);
doiData.sessionDate = jsonExtractor.getSessionDate(doiData);
doiData.mintingYear = jsonExtractor.getMintingYear(data);
doiData.sessionDate = jsonExtractor.getSessionDate(data);
doiData.publiclyAccessibleYear = data.publication_year;
doiData.proposalType = jsonExtractor.getFieldFromSubject(doiData.subject, "Proposal Type Description");
doiData.proposalNumber = jsonExtractor.getFieldFromSubject(doiData.subject, "Proposal");
doiData.proposalType = jsonExtractor.getFieldFromSubject(data.subject, "Proposal Type Description");
doiData.proposalNumber = jsonExtractor.getFieldFromSubject(data.subject, "Proposal");
_this.experimentalReportController.requestFilenameList(doiData.proposalNumber);
doiData.beamline = jsonExtractor.getFieldFromSubject(doiData.subject, "instrument");
doiData.beamline = jsonExtractor.getFieldFromSubject(data.subject, "instrument");
jsonExtractor.extractInvestigationId(doiData);
_this.view.setDataAccessMessage(doiData);
_this.createCitation(doiData);
doiData.investigationId = jsonExtractor.extractInvestigationId(data);
doiData.accessibility = doiData.getAccessibilityStatus(doiData.sessionDate, doiData.publiclyAccessibleYear);
doiData.accessMessage = _this.view.setDataAccessMessage(doiData);
doiData.citation = _this.createCitation(data);
doiData.resourceTypeGeneral = jsonExtractor.getResourceTypeGeneral(data);
doiData.resourceType = jsonExtractor.getResourceType(data);
// Set the URL corresponding to the beamline name.
if (doiData.date_collected) {
var experimentalDate = moment(doiData.date_collected);
if (data.date_collected) {
var experimentalDate = moment(data.date_collected);
doiData.beamlineUrl = _this.getBeamlineUrl(doiData.beamline, experimentalDate);
} else {
doiData.beamlineUrl = "noLink";
......@@ -170,6 +178,8 @@ DOIController.prototype.getBeamlineUrl = function(beamline, date) {
*
* @param {string}
* data: the data object, it is a reference
* @return {string}
* citation : the citation to be displayed
*/
DOIController.prototype.createCitation = function(data) {
// Authors sent in json can be in several format. The following call find
......@@ -177,16 +187,13 @@ DOIController.prototype.createCitation = function(data) {
var citation = new Citation(data);
if (!citation.isBuildable) {
data.citation = "The citation could not be generated.";
return "The citation could not be generated.";
} else {
var authorInCitation = citation.getAuthorsForCitation(data.creator);
var doiRegistrationYear = moment(data.date_registered).year();
var fullCitation = authorInCitation + ' (' + doiRegistrationYear + '). ' + data.title + '. ' + data.publisher + ' (ESRF). ' +
" <a href='https://doi.esrf.fr/" + data.doi + "'> doi:" + data.doi.toUpperCase() + "</a>";
data.citation = fullCitation;
return fullCitation;
}
};
......@@ -2,6 +2,7 @@ function DOIView() {
this.mainPanelId = "main";
this.reportPanelId = "expReport";
this.badgePanelId = "badges";
this.reportExperimentFileNames = null;
this.failedRecievingExpReport = false;
......@@ -24,23 +25,23 @@ DOIView.prototype.setLoading = function( message ) {
DOIView.prototype.setDOI = function( doiCode ) {
// $( "#doiPanel" ).text( doiCode.toUpperCase() );
$( "#doiPanel" ).html(
"<div class='col'> </div> " +
"<div class='col-auto mr-3 borderRadius-5 whiteBackground' style='padding:10px;'>" +
"<span class='doiBadge borderRadius-5 fontSize-20'> <a href=''>" +
doiCode.toUpperCase() +
"</a> </span> </div>");
"<div class='col'> </div> " +
"<div class='col-auto mr-3 borderRadius-5 whiteBackground' style='padding:10px;'>" +
"<span class='doiBadge borderRadius-5 fontSize-20'> <a id='doiLink' href=''>" +
doiCode.toUpperCase() +
"</a> </span> </div>" );
};
/**
* Set the doi http link in the doi landing page. It is the http adress at datacite server which will redirect to the DOI landing page.
* Set the doi http link in the doi landing page. It is the http address at datacite server which will redirect to the DOI landing page.
*
*/
DOIView.prototype.setDOILink = function( doiLink ) {
$( "#doiPanel" ).attr("href", doiLink.toUpperCase() );
$( "#doiLink" ).attr( "href", doiLink.toUpperCase() );
};
/**
* Render experimental Report data *
* Render experimental Report data
*
* @param {array}
* data The filename list to be displayed
......@@ -63,16 +64,17 @@ DOIView.prototype.renderExperimentalReportData = function( data ) {
}
};
DOIView.prototype.renderDOIData = function( doiData, target ) {
DOIView.prototype.renderDOIData = function( doiData ) {
var _this = this;
dust.render( 'landingpage_tpl', {
data: doiData
}, function( err, out ) {
$( '#' + _this.mainPanelId ).html( out );
_this.isDOIAlreadyRendered = true;
_this.renderBadges( doiData );
/**
* If there are experimental reports already retrieved then reder them after
* the rendering of the DOI *
* If there are experimental reports already retrieved then render them after
* the rendering of the DOI
*/
if ( _this.failedRecievingExpReport ) {
_this.renderErrorForExperimentalReport();
......@@ -134,20 +136,39 @@ DOIView.prototype.renderErrorForExperimentalReport = function() {
$( '#' + this.reportPanelId ).html( out );
};
/**
* Render the badge template in the corresponding div
*
* */
DOIView.prototype.renderBadges = function( data ) {
if ( data ) {
var _this = this;
dust.render( 'badges_tpl', {
data: data
}, function( err, out ) {
$( '#' + _this.badgePanelId ).html( out );
} );
}
};
/**
* Set the message which is displayed just above the "Access data button"
* Set the message which is displayed just above the "Access data button" in experimental data box.
*
* @param {object}
* data The json object reference.
* @return {string}
* the message to display
*/
DOIView.prototype.setDataAccessMessage = function( data ) {
var publicationDate = moment( data.publication_year, "YYYY" );
var now = moment();
if ( now > publicationDate ) {
data.accessMessage = "The data can be accessed by clicking on the link below";
} else {
data.accessMessage = "The data is under embargo until <b>" + data.publication_year + "</b> but could be released earlier. </p> " +
DOIView.prototype.setDataAccessMessage = function( doiData ) {
if ( doiData.accessibility === "Open access" ) {
return "The data can be accessed by clicking on the link below";
} else if ( doiData.accessibility === "Under embargo" ) {
return "The data is under embargo until <b>" + doiData.publiclyAccessibleYear + "</b> but could be released earlier. </p> " +
" <p> Currently, it is only accessible to proposal team members. </p>";
}
......
function JsonExtractor(json) {
function JsonExtractor( json ) {
}
/**
* Extract investigationId from the data.doi field as received from the json
* response. Add the corresponding fields in the data object
* response.
*
* @param {string}
* data The data object reference which is sent to the dustjs
* template
* data The data object provided by datacite
* @return {string}
* investigationId The investigationID requested for accessing data in ICAT.
*/
JsonExtractor.prototype.extractInvestigationId = function(data) {
var regExp = RegExp(/\/\w*-*[Ee][Ss][Rr][Ff]-[Ee][Ss]-(\d+)$/);
data.investigationId = regExp.exec(data.doi)[1];
JsonExtractor.prototype.extractInvestigationId = function( data ) {
var regExp = RegExp( /\/\w*-*[Ee][Ss][Rr][Ff]-[Ee][Ss]-(\d+)$/ );
return regExp.exec( data.doi )[1];
};
/**
* Extract field value (beamline, proposal number and proposal type) from the
* data json object. Returns nullif the field is not found.
* data json object. Returns null if the field is not found.
*
* @param {array}
* subject The array containing objects of interest template
* @param {string}
* field The text field which is searched
*/
JsonExtractor.prototype.getFieldFromSubject = function(subject, field) {
if (subject) {
if (subject[0]) {
for (var i = 0; i < subject[0].length; i++) {
if (subject[0][i].subject_scheme === field) {
return subject[0][i].text;
JsonExtractor.prototype.getFieldFromSubject = function( subject, field ) {
if ( subject ) {
if ( subject[0] ) {
for ( var i = 0; i < subject[0].length; i++ ) {
if ( subject[0][i].subject_scheme === field ) {
return subject[0][i].text;
}
}
}
}
}
}
return null;
return null;
};
/**
* Get minting year from the data object.
*
* @param {object}
* data The data object reference which is sent to the dustjs
* template
* @return {string} The minting year. Null if it does not exist.
* data The data object provided by datacite template
* @return {string}
* The minting year. Null if it does not exist.
*/
JsonExtractor.prototype.getMintingYear = function(data) {
if (data) {
if (data.date_registered && data.date_registered != null) {
return moment(data.date_registered).year();
JsonExtractor.prototype.getMintingYear = function( data ) {
if ( data ) {
if ( data.date_registered && data.date_registered != null ) {
return moment( data.date_registered ).year();
}
}
}
return null;
return null;
};
/**
* Get session date from the data object.
*
* @param {object}
* data The data object reference which is sent to the dustjs
* template
* @return {string} The formatted (YYY-M-D) session date. Null if it does not
* exist.
* data The data object provided by datacite
* @return {string}
* The formatted (YYY-M-D) session date. Null if it does not exist.
*/
JsonExtractor.prototype.getSessionDate = function(data) {
if (data) {
if (data.date_collected && data.date_collected != null) {
return moment(data.date_collected).format('YYYY-M-D');
JsonExtractor.prototype.getSessionDate = function( data ) {
if ( data ) {
if ( data.date_collected && data.date_collected != null ) {
return moment( data.date_collected ).format( 'YYYY-M-D' );
}
}
return null;
};
/**
* Get the resource type general
* @param {object}
* data The data object provided by datacite
* @return {string}
* The resource tyoe general. Null if it does not exist.
* */
JsonExtractor.prototype.getResourceTypeGeneral = function( data ) {
if ( data && data.resource_type_general ) {
return data.resource_type_general;
}
return null;
};
/**
* Get the resource type
* @param {object}
* data The data object provided by datacite
* @return {string}
* The resource tyoe. Null if it does not exist.
* */
JsonExtractor.prototype.getResourceType = function( data ) {
if ( data && data.resource_type ) {
return data.resource_type;
}
}
return null;
return null;
};
{@eq key=data.resourceTypeGeneral value="Dataset"}
{@eq key=data.resourceType value="Experiment Session"}
<div class="col-auto">
<span class="badge badge-secondary" style="font-size:14px;"> Dataset(s) / session </span>
</div>
{/eq}
{/eq}
{@eq key=data.accessibility value="Open access"}
<div class="col-auto">
<span class="badge badge-success" style="font-size:14px;"> Open access </span>
</div>
{/eq}
{@eq key=data.accessibility value="Under embargo"}
<div class="col-auto">
<span class="badge badge-warning" style="font-size:14px;"> Under embargo </span>
</div>
{/eq}
\ No newline at end of file
<div class="container-fluid">
<br />
<div class="row padding-top-15">
<div class="col-8">
<div class="row">
<div class="col-12 fontSize-20 text-center text-uppercase font-weight-bold">{data.title}</div>
<div class="col-12 fontSize-20 text-center text-uppercase font-weight-bold py-3">{data.title}</div>
</div>
<hr>
......@@ -135,6 +134,10 @@
</div>
<div class="col-4">
<div id="badges" class="row py-4"> </div>
<br>
<div class="row">
<div class="col-12">
<div class="card">
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment