@@ -446,9 +446,6 @@ export class Paper {
446446 }
447447
448448 async toHTML ( ) {
449- await this . resolveReferences ( ) // .then(() => lively.notify("resolved references for " + this.key))
450- await this . findReferencedBy ( )
451-
452449 var bibtexEntries = await this . findBibtexFileEntries ( )
453450 var pdfs = this . value . S && this . value . S . filter ( ea => ea . Ty == 3 ) . map ( ea => ea . U ) ;
454451
@@ -490,8 +487,18 @@ export class Paper {
490487
491488 </div>
492489 ${
493- pdfs && pdfs . length > 0 ?
494- "<h3>Online PDFs</h3>" + pdfs . map ( url => `<a href="${ url } ">${ url . replace ( / .* \/ / , "" ) } </a>` ) : ""
490+ pdfs && pdfs . length > 0 ? "<h3>Import PDFs</h3>" +
491+ `<lively-script><script>
492+ var pdfs = ${ JSON . stringify ( pdfs ) }
493+ var container = lively.query(this, "lively-container")
494+ var result = <span>{...pdfs.map(ea => <a click={async () => {
495+ var comp = await lively.openComponentInWindow("external-resource")
496+ comp.importURL = ${ JSON . stringify ( await this . toImportURL ( ) ) }
497+ comp.src = ea
498+ }}>{ea.replace(/.*\\//,"")} </a>)}</span>
499+ result
500+ </script></lively-script>` : ""
501+ // + pdfs.map(url => `<a href="${url}" onclick="${}">${url.replace(/.*\//,"")}</a>`)
495502 }
496503 <h3>Bibliographies</h3>
497504 <div>${
@@ -520,10 +527,49 @@ export class Paper {
520527 <h3>Abstract</h3>
521528 <div class="abstract">${ this . abstract } </div>
522529 <h3>References</h3>
523- ${ this . papersToBibtex ( this . references ) }
530+ ${ `
531+ <lively-script><script>
532+ var paper = Paper.byId(${ this . microsoftid } )
533+ paper.resolveReferences().then(() => paper.papersToBibtex(paper.references))
534+ </script></lively-script>` }
535+
524536 <h3>Referenced By</h3>
525- ${ this . papersToBibtex ( this . referencedBy ) }
537+ ${ `
538+ <lively-script><script>
539+ var paper = Paper.byId(${ this . microsoftid } )
540+ paper.findReferencedBy().then(() => paper.papersToBibtex(paper.referencedBy))
541+ </script></lively-script>` }
542+
526543 </div>`
544+
545+
546+ /*
547+
548+ await this.resolveReferences() // .then(() => lively.notify("resolved references for " + this.key))
549+ await this.findReferencedBy()
550+
551+ ${this.papersToBibtex(this.references)}
552+
553+ ${this.papersToBibtex(this.referencedBy)}
554+ */
555+
556+ }
557+
558+ async generateFilename ( ) {
559+ var entry = this . toBibtexEntry ( )
560+ var bibentry = await ( < lively-bibtex-entry > </ lively-bibtex-entry > )
561+ bibentry . value = entry
562+ var filename = bibentry . generateFilename ( entry )
563+ return filename + ".pdf"
564+ }
565+
566+ async toImportURL ( ) {
567+ var filename = await this . generateFilename ( )
568+ var baseURL = await Paper . importBaseURL ( )
569+ if ( ! baseURL ) {
570+ throw new Error ( "[Paper] toImportURL error: could not find baseURL " + Paper . importBaseURLDirName ( ) )
571+ }
572+ return baseURL + filename
527573 }
528574
529575 toBibtex ( ) {
@@ -536,6 +582,17 @@ export class Paper {
536582 contentNode . appendChild ( inspector . display ( this . toBibtex ( ) , false , "#bibtex" , this ) )
537583 }
538584
585+ static importBaseURLDirName ( ) {
586+ return "_incoming" // #TODO add to preferences....
587+ }
588+
589+ static async importBaseURL ( ) {
590+ // #TODO make this also more customizeable
591+ var files = await FileIndex . current ( ) . db . files . toArray ( )
592+ var file = files . find ( ea => ea . url . match ( `/${ this . importBaseURLDirName ( ) } /` ) )
593+ return file && file . url . replace ( / [ ^ / ] * $ / , "" )
594+ }
595+
539596}
540597
541598
0 commit comments