Spaces:
Running
Running
Commit
Β·
f9edd30
1
Parent(s):
2c0b974
Update 2026-01-30 20:17:14
Browse files- templates/index.html +92 -31
templates/index.html
CHANGED
|
@@ -13,6 +13,7 @@
|
|
| 13 |
|
| 14 |
body {
|
| 15 |
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
|
|
| 16 |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
| 17 |
min-height: 100vh;
|
| 18 |
padding: 20px;
|
|
@@ -30,13 +31,13 @@
|
|
| 30 |
}
|
| 31 |
|
| 32 |
header h1 {
|
| 33 |
-
font-size: 2.
|
| 34 |
margin-bottom: 10px;
|
| 35 |
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
|
| 36 |
}
|
| 37 |
|
| 38 |
header p {
|
| 39 |
-
font-size: 1.
|
| 40 |
opacity: 0.9;
|
| 41 |
}
|
| 42 |
|
|
@@ -57,7 +58,7 @@
|
|
| 57 |
.card h2 {
|
| 58 |
color: #333;
|
| 59 |
margin-bottom: 20px;
|
| 60 |
-
font-size: 1.
|
| 61 |
border-bottom: 3px solid #667eea;
|
| 62 |
padding-bottom: 10px;
|
| 63 |
}
|
|
@@ -69,7 +70,7 @@
|
|
| 69 |
border: 2px solid #e0e0e0;
|
| 70 |
border-radius: 8px;
|
| 71 |
font-family: 'Monaco', 'Courier New', monospace;
|
| 72 |
-
font-size:
|
| 73 |
resize: vertical;
|
| 74 |
transition: border-color 0.3s;
|
| 75 |
}
|
|
@@ -110,11 +111,12 @@
|
|
| 110 |
color: #333;
|
| 111 |
display: block;
|
| 112 |
margin-bottom: 3px;
|
|
|
|
| 113 |
}
|
| 114 |
|
| 115 |
.option-group label span {
|
| 116 |
color: #666;
|
| 117 |
-
font-size: 0.
|
| 118 |
}
|
| 119 |
|
| 120 |
button {
|
|
@@ -123,7 +125,7 @@
|
|
| 123 |
padding: 12px 30px;
|
| 124 |
border: none;
|
| 125 |
border-radius: 8px;
|
| 126 |
-
font-size:
|
| 127 |
cursor: pointer;
|
| 128 |
transition: all 0.3s;
|
| 129 |
font-weight: 600;
|
|
@@ -186,6 +188,7 @@
|
|
| 186 |
border-bottom: 3px solid transparent;
|
| 187 |
cursor: pointer;
|
| 188 |
font-weight: 600;
|
|
|
|
| 189 |
width: auto;
|
| 190 |
margin: 0;
|
| 191 |
transition: all 0.3s;
|
|
@@ -208,7 +211,7 @@
|
|
| 208 |
width: 100%;
|
| 209 |
border-collapse: collapse;
|
| 210 |
margin-top: 15px;
|
| 211 |
-
font-size: 0.
|
| 212 |
}
|
| 213 |
|
| 214 |
.results-table thead {
|
|
@@ -237,7 +240,7 @@
|
|
| 237 |
display: inline-block;
|
| 238 |
padding: 4px 12px;
|
| 239 |
border-radius: 20px;
|
| 240 |
-
font-size: 0.
|
| 241 |
font-weight: 600;
|
| 242 |
}
|
| 243 |
|
|
@@ -262,12 +265,38 @@
|
|
| 262 |
border-radius: 8px;
|
| 263 |
margin-top: 15px;
|
| 264 |
font-family: 'Monaco', 'Courier New', monospace;
|
| 265 |
-
font-size:
|
| 266 |
white-space: pre-wrap;
|
| 267 |
word-break: break-word;
|
| 268 |
border: 1px solid #e0e0e0;
|
| 269 |
max-height: 400px;
|
| 270 |
overflow-y: auto;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 271 |
}
|
| 272 |
|
| 273 |
.error {
|
|
@@ -309,7 +338,7 @@
|
|
| 309 |
}
|
| 310 |
|
| 311 |
.stat-box p {
|
| 312 |
-
font-size: 0.
|
| 313 |
opacity: 0.9;
|
| 314 |
}
|
| 315 |
|
|
@@ -339,10 +368,11 @@
|
|
| 339 |
display: flex;
|
| 340 |
justify-content: space-between;
|
| 341 |
align-items: center;
|
|
|
|
| 342 |
}
|
| 343 |
|
| 344 |
.db-entry-card .entry-meta {
|
| 345 |
-
font-size: 0.
|
| 346 |
color: #666;
|
| 347 |
margin-bottom: 10px;
|
| 348 |
}
|
|
@@ -354,7 +384,7 @@
|
|
| 354 |
.delete-btn {
|
| 355 |
background: #dc3545;
|
| 356 |
padding: 6px 12px;
|
| 357 |
-
font-size: 0.
|
| 358 |
width: auto;
|
| 359 |
margin: 0;
|
| 360 |
}
|
|
@@ -397,15 +427,21 @@
|
|
| 397 |
display: block;
|
| 398 |
margin-bottom: 8px;
|
| 399 |
font-weight: 600;
|
|
|
|
| 400 |
color: #333;
|
| 401 |
}
|
| 402 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 403 |
.file-upload input[type="file"] {
|
| 404 |
width: 100%;
|
| 405 |
padding: 8px;
|
| 406 |
border: 1px solid #ddd;
|
| 407 |
border-radius: 4px;
|
| 408 |
background: white;
|
|
|
|
| 409 |
}
|
| 410 |
|
| 411 |
.section-filter {
|
|
@@ -420,7 +456,7 @@
|
|
| 420 |
padding: 10px;
|
| 421 |
border: 2px solid #e0e0e0;
|
| 422 |
border-radius: 8px;
|
| 423 |
-
font-size:
|
| 424 |
background: white;
|
| 425 |
}
|
| 426 |
|
|
@@ -432,6 +468,7 @@
|
|
| 432 |
|
| 433 |
.empty-state h3 {
|
| 434 |
color: #666;
|
|
|
|
| 435 |
margin-bottom: 10px;
|
| 436 |
}
|
| 437 |
|
|
@@ -450,6 +487,7 @@
|
|
| 450 |
border-radius: 8px;
|
| 451 |
margin: 15px 0;
|
| 452 |
display: none;
|
|
|
|
| 453 |
}
|
| 454 |
|
| 455 |
.message.show {
|
|
@@ -467,7 +505,11 @@
|
|
| 467 |
padding: 12px;
|
| 468 |
border-radius: 8px;
|
| 469 |
margin: 10px 0;
|
| 470 |
-
font-size: 0.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 471 |
}
|
| 472 |
</style>
|
| 473 |
</head>
|
|
@@ -538,7 +580,7 @@
|
|
| 538 |
</div>
|
| 539 |
|
| 540 |
<div class="option-group">
|
| 541 |
-
<input type="checkbox" id="abbreviateCheckbox"
|
| 542 |
<label for="abbreviateCheckbox">
|
| 543 |
<strong>π Apply Journal Abbreviations</strong>
|
| 544 |
<span>Use ISO 4 standard abbreviations (e.g., "Energy" β "Ener.")</span>
|
|
@@ -546,7 +588,7 @@
|
|
| 546 |
</div>
|
| 547 |
|
| 548 |
<div class="option-group">
|
| 549 |
-
<input type="checkbox" id="protectCheckbox"
|
| 550 |
<label for="protectCheckbox">
|
| 551 |
<strong>π‘οΈ Protect Acronyms</strong>
|
| 552 |
<span>Wrap acronyms in braces to preserve capitalization</span>
|
|
@@ -588,7 +630,10 @@
|
|
| 588 |
</div>
|
| 589 |
|
| 590 |
<div id="bibtex" class="tab-content">
|
| 591 |
-
<div
|
|
|
|
|
|
|
|
|
|
| 592 |
</div>
|
| 593 |
|
| 594 |
<div class="message" id="resultMessage"></div>
|
|
@@ -651,9 +696,9 @@
|
|
| 651 |
<div id="help" class="tab-content">
|
| 652 |
<h2>βΉοΈ Help & Information</h2>
|
| 653 |
|
| 654 |
-
<div style="margin-top: 20px;">
|
| 655 |
<h3 style="color: #333; margin: 20px 0 10px;">Input Modes</h3>
|
| 656 |
-
<dl style="margin-left: 20px;
|
| 657 |
<dt style="font-weight: 600; margin-top: 10px;">π BibTeX Mode</dt>
|
| 658 |
<dd style="margin-left: 20px; color: #666;">Paste complete BibTeX entries. The system can enrich them with Crossref, apply abbreviations, and protect acronyms.</dd>
|
| 659 |
|
|
@@ -662,18 +707,18 @@
|
|
| 662 |
</dl>
|
| 663 |
|
| 664 |
<h3 style="color: #333; margin: 20px 0 10px;">LaTeX Manuscript Analysis (NEW!)</h3>
|
| 665 |
-
<p style="margin-left: 20px; color: #666;
|
| 666 |
Upload your LaTeX manuscript (.tex file) to enable advanced tracking:
|
| 667 |
</p>
|
| 668 |
-
<ul style="margin-left: 40px; color: #666;
|
| 669 |
<li><strong>Citation Frequency:</strong> How many times each reference is cited</li>
|
| 670 |
<li><strong>Section Tracking:</strong> Which sections cite each reference</li>
|
| 671 |
<li><strong>Section Filtering:</strong> View references by specific section (Introduction, Methods, etc.)</li>
|
| 672 |
</ul>
|
| 673 |
-
<p style="margin-left: 20px; color: #666;
|
| 674 |
Example LaTeX structure:
|
| 675 |
</p>
|
| 676 |
-
<pre style="margin-left: 40px; background: #f5f5f5; padding: 15px; border-radius: 5px; overflow-x: auto;">
|
| 677 |
\section{Introduction}
|
| 678 |
Text here \cite{reference_1} more text \cite{reference_2}
|
| 679 |
and again \cite{reference_1}
|
|
@@ -681,15 +726,15 @@ and again \cite{reference_1}
|
|
| 681 |
\section{Methods}
|
| 682 |
Description \cite{reference_3} and \cite{reference_1}
|
| 683 |
</pre>
|
| 684 |
-
<p style="margin-left: 20px; color: #666;
|
| 685 |
Results in: reference_1 appears in Introduction (2Γ) and Methods (1Γ)
|
| 686 |
</p>
|
| 687 |
|
| 688 |
<h3 style="color: #333; margin: 20px 0 10px;">Journal Abbreviations</h3>
|
| 689 |
-
<p style="margin-left: 20px; color: #666;
|
| 690 |
The system uses <strong>ISO 4 standard abbreviations with periods</strong>:
|
| 691 |
</p>
|
| 692 |
-
<ul style="margin-left: 40px; color: #666;
|
| 693 |
<li>"Energy" β "Ener."</li>
|
| 694 |
<li>"Applied Energy" β "Appl. Ener."</li>
|
| 695 |
<li>"Journal of Energy" β "J. of Ener."</li>
|
|
@@ -887,13 +932,11 @@ Natural language processing techniques`;
|
|
| 887 |
tableHtml += '</tbody></table>';
|
| 888 |
resultsTable.innerHTML = tableHtml;
|
| 889 |
|
|
|
|
| 890 |
let bibtexText = '';
|
| 891 |
-
const displayFullData = data.
|
| 892 |
displayFullData.forEach(row => {
|
| 893 |
-
|
| 894 |
-
'Crossref_BibTeX_Protected' :
|
| 895 |
-
'Crossref_BibTeX_Abbrev';
|
| 896 |
-
bibtexText += (row[bibField] || row.BibTeX) + '\n\n';
|
| 897 |
});
|
| 898 |
|
| 899 |
if (hasMore) {
|
|
@@ -903,6 +946,24 @@ Natural language processing techniques`;
|
|
| 903 |
bibtexPreview.textContent = bibtexText;
|
| 904 |
}
|
| 905 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 906 |
async function loadDatabaseEntries() {
|
| 907 |
try {
|
| 908 |
const response = await fetch('/api/database/entries');
|
|
|
|
| 13 |
|
| 14 |
body {
|
| 15 |
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
| 16 |
+
font-size: 15px;
|
| 17 |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
| 18 |
min-height: 100vh;
|
| 19 |
padding: 20px;
|
|
|
|
| 31 |
}
|
| 32 |
|
| 33 |
header h1 {
|
| 34 |
+
font-size: 2.8em;
|
| 35 |
margin-bottom: 10px;
|
| 36 |
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
|
| 37 |
}
|
| 38 |
|
| 39 |
header p {
|
| 40 |
+
font-size: 1.2em;
|
| 41 |
opacity: 0.9;
|
| 42 |
}
|
| 43 |
|
|
|
|
| 58 |
.card h2 {
|
| 59 |
color: #333;
|
| 60 |
margin-bottom: 20px;
|
| 61 |
+
font-size: 1.6em;
|
| 62 |
border-bottom: 3px solid #667eea;
|
| 63 |
padding-bottom: 10px;
|
| 64 |
}
|
|
|
|
| 70 |
border: 2px solid #e0e0e0;
|
| 71 |
border-radius: 8px;
|
| 72 |
font-family: 'Monaco', 'Courier New', monospace;
|
| 73 |
+
font-size: 14px;
|
| 74 |
resize: vertical;
|
| 75 |
transition: border-color 0.3s;
|
| 76 |
}
|
|
|
|
| 111 |
color: #333;
|
| 112 |
display: block;
|
| 113 |
margin-bottom: 3px;
|
| 114 |
+
font-size: 1em;
|
| 115 |
}
|
| 116 |
|
| 117 |
.option-group label span {
|
| 118 |
color: #666;
|
| 119 |
+
font-size: 0.95em;
|
| 120 |
}
|
| 121 |
|
| 122 |
button {
|
|
|
|
| 125 |
padding: 12px 30px;
|
| 126 |
border: none;
|
| 127 |
border-radius: 8px;
|
| 128 |
+
font-size: 1.05em;
|
| 129 |
cursor: pointer;
|
| 130 |
transition: all 0.3s;
|
| 131 |
font-weight: 600;
|
|
|
|
| 188 |
border-bottom: 3px solid transparent;
|
| 189 |
cursor: pointer;
|
| 190 |
font-weight: 600;
|
| 191 |
+
font-size: 1em;
|
| 192 |
width: auto;
|
| 193 |
margin: 0;
|
| 194 |
transition: all 0.3s;
|
|
|
|
| 211 |
width: 100%;
|
| 212 |
border-collapse: collapse;
|
| 213 |
margin-top: 15px;
|
| 214 |
+
font-size: 0.98em;
|
| 215 |
}
|
| 216 |
|
| 217 |
.results-table thead {
|
|
|
|
| 240 |
display: inline-block;
|
| 241 |
padding: 4px 12px;
|
| 242 |
border-radius: 20px;
|
| 243 |
+
font-size: 0.88em;
|
| 244 |
font-weight: 600;
|
| 245 |
}
|
| 246 |
|
|
|
|
| 265 |
border-radius: 8px;
|
| 266 |
margin-top: 15px;
|
| 267 |
font-family: 'Monaco', 'Courier New', monospace;
|
| 268 |
+
font-size: 13px;
|
| 269 |
white-space: pre-wrap;
|
| 270 |
word-break: break-word;
|
| 271 |
border: 1px solid #e0e0e0;
|
| 272 |
max-height: 400px;
|
| 273 |
overflow-y: auto;
|
| 274 |
+
position: relative;
|
| 275 |
+
}
|
| 276 |
+
|
| 277 |
+
.copy-btn {
|
| 278 |
+
position: absolute;
|
| 279 |
+
top: 10px;
|
| 280 |
+
right: 10px;
|
| 281 |
+
background: #28a745;
|
| 282 |
+
color: white;
|
| 283 |
+
border: none;
|
| 284 |
+
padding: 8px 16px;
|
| 285 |
+
border-radius: 5px;
|
| 286 |
+
cursor: pointer;
|
| 287 |
+
font-size: 0.9em;
|
| 288 |
+
font-weight: 600;
|
| 289 |
+
width: auto;
|
| 290 |
+
margin: 0;
|
| 291 |
+
z-index: 10;
|
| 292 |
+
}
|
| 293 |
+
|
| 294 |
+
.copy-btn:hover {
|
| 295 |
+
background: #218838;
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
.copy-btn.copied {
|
| 299 |
+
background: #667eea;
|
| 300 |
}
|
| 301 |
|
| 302 |
.error {
|
|
|
|
| 338 |
}
|
| 339 |
|
| 340 |
.stat-box p {
|
| 341 |
+
font-size: 0.95em;
|
| 342 |
opacity: 0.9;
|
| 343 |
}
|
| 344 |
|
|
|
|
| 368 |
display: flex;
|
| 369 |
justify-content: space-between;
|
| 370 |
align-items: center;
|
| 371 |
+
font-size: 1.05em;
|
| 372 |
}
|
| 373 |
|
| 374 |
.db-entry-card .entry-meta {
|
| 375 |
+
font-size: 0.95em;
|
| 376 |
color: #666;
|
| 377 |
margin-bottom: 10px;
|
| 378 |
}
|
|
|
|
| 384 |
.delete-btn {
|
| 385 |
background: #dc3545;
|
| 386 |
padding: 6px 12px;
|
| 387 |
+
font-size: 0.88em;
|
| 388 |
width: auto;
|
| 389 |
margin: 0;
|
| 390 |
}
|
|
|
|
| 427 |
display: block;
|
| 428 |
margin-bottom: 8px;
|
| 429 |
font-weight: 600;
|
| 430 |
+
font-size: 1em;
|
| 431 |
color: #333;
|
| 432 |
}
|
| 433 |
|
| 434 |
+
.file-upload p {
|
| 435 |
+
font-size: 0.95em;
|
| 436 |
+
}
|
| 437 |
+
|
| 438 |
.file-upload input[type="file"] {
|
| 439 |
width: 100%;
|
| 440 |
padding: 8px;
|
| 441 |
border: 1px solid #ddd;
|
| 442 |
border-radius: 4px;
|
| 443 |
background: white;
|
| 444 |
+
font-size: 0.95em;
|
| 445 |
}
|
| 446 |
|
| 447 |
.section-filter {
|
|
|
|
| 456 |
padding: 10px;
|
| 457 |
border: 2px solid #e0e0e0;
|
| 458 |
border-radius: 8px;
|
| 459 |
+
font-size: 1.05em;
|
| 460 |
background: white;
|
| 461 |
}
|
| 462 |
|
|
|
|
| 468 |
|
| 469 |
.empty-state h3 {
|
| 470 |
color: #666;
|
| 471 |
+
font-size: 1.3em;
|
| 472 |
margin-bottom: 10px;
|
| 473 |
}
|
| 474 |
|
|
|
|
| 487 |
border-radius: 8px;
|
| 488 |
margin: 15px 0;
|
| 489 |
display: none;
|
| 490 |
+
font-size: 1em;
|
| 491 |
}
|
| 492 |
|
| 493 |
.message.show {
|
|
|
|
| 505 |
padding: 12px;
|
| 506 |
border-radius: 8px;
|
| 507 |
margin: 10px 0;
|
| 508 |
+
font-size: 0.95em;
|
| 509 |
+
}
|
| 510 |
+
|
| 511 |
+
.mode-selector {
|
| 512 |
+
font-size: 1em;
|
| 513 |
}
|
| 514 |
</style>
|
| 515 |
</head>
|
|
|
|
| 580 |
</div>
|
| 581 |
|
| 582 |
<div class="option-group">
|
| 583 |
+
<input type="checkbox" id="abbreviateCheckbox">
|
| 584 |
<label for="abbreviateCheckbox">
|
| 585 |
<strong>π Apply Journal Abbreviations</strong>
|
| 586 |
<span>Use ISO 4 standard abbreviations (e.g., "Energy" β "Ener.")</span>
|
|
|
|
| 588 |
</div>
|
| 589 |
|
| 590 |
<div class="option-group">
|
| 591 |
+
<input type="checkbox" id="protectCheckbox">
|
| 592 |
<label for="protectCheckbox">
|
| 593 |
<strong>π‘οΈ Protect Acronyms</strong>
|
| 594 |
<span>Wrap acronyms in braces to preserve capitalization</span>
|
|
|
|
| 630 |
</div>
|
| 631 |
|
| 632 |
<div id="bibtex" class="tab-content">
|
| 633 |
+
<div style="position: relative;">
|
| 634 |
+
<button class="copy-btn" onclick="copyBibTeX()" id="copyButton">π Copy</button>
|
| 635 |
+
<div id="bibtexPreview" class="bibtex-preview">No results yet</div>
|
| 636 |
+
</div>
|
| 637 |
</div>
|
| 638 |
|
| 639 |
<div class="message" id="resultMessage"></div>
|
|
|
|
| 696 |
<div id="help" class="tab-content">
|
| 697 |
<h2>βΉοΈ Help & Information</h2>
|
| 698 |
|
| 699 |
+
<div style="margin-top: 20px; font-size: 1em; line-height: 1.7;">
|
| 700 |
<h3 style="color: #333; margin: 20px 0 10px;">Input Modes</h3>
|
| 701 |
+
<dl style="margin-left: 20px;">
|
| 702 |
<dt style="font-weight: 600; margin-top: 10px;">π BibTeX Mode</dt>
|
| 703 |
<dd style="margin-left: 20px; color: #666;">Paste complete BibTeX entries. The system can enrich them with Crossref, apply abbreviations, and protect acronyms.</dd>
|
| 704 |
|
|
|
|
| 707 |
</dl>
|
| 708 |
|
| 709 |
<h3 style="color: #333; margin: 20px 0 10px;">LaTeX Manuscript Analysis (NEW!)</h3>
|
| 710 |
+
<p style="margin-left: 20px; color: #666;">
|
| 711 |
Upload your LaTeX manuscript (.tex file) to enable advanced tracking:
|
| 712 |
</p>
|
| 713 |
+
<ul style="margin-left: 40px; color: #666;">
|
| 714 |
<li><strong>Citation Frequency:</strong> How many times each reference is cited</li>
|
| 715 |
<li><strong>Section Tracking:</strong> Which sections cite each reference</li>
|
| 716 |
<li><strong>Section Filtering:</strong> View references by specific section (Introduction, Methods, etc.)</li>
|
| 717 |
</ul>
|
| 718 |
+
<p style="margin-left: 20px; color: #666; margin-top: 10px;">
|
| 719 |
Example LaTeX structure:
|
| 720 |
</p>
|
| 721 |
+
<pre style="margin-left: 40px; background: #f5f5f5; padding: 15px; border-radius: 5px; overflow-x: auto; font-size: 0.95em;">
|
| 722 |
\section{Introduction}
|
| 723 |
Text here \cite{reference_1} more text \cite{reference_2}
|
| 724 |
and again \cite{reference_1}
|
|
|
|
| 726 |
\section{Methods}
|
| 727 |
Description \cite{reference_3} and \cite{reference_1}
|
| 728 |
</pre>
|
| 729 |
+
<p style="margin-left: 20px; color: #666;">
|
| 730 |
Results in: reference_1 appears in Introduction (2Γ) and Methods (1Γ)
|
| 731 |
</p>
|
| 732 |
|
| 733 |
<h3 style="color: #333; margin: 20px 0 10px;">Journal Abbreviations</h3>
|
| 734 |
+
<p style="margin-left: 20px; color: #666;">
|
| 735 |
The system uses <strong>ISO 4 standard abbreviations with periods</strong>:
|
| 736 |
</p>
|
| 737 |
+
<ul style="margin-left: 40px; color: #666;">
|
| 738 |
<li>"Energy" β "Ener."</li>
|
| 739 |
<li>"Applied Energy" β "Appl. Ener."</li>
|
| 740 |
<li>"Journal of Energy" β "J. of Ener."</li>
|
|
|
|
| 932 |
tableHtml += '</tbody></table>';
|
| 933 |
resultsTable.innerHTML = tableHtml;
|
| 934 |
|
| 935 |
+
// BibTeX preview - use Final_BibTeX from backend (respects abbreviate/protect settings)
|
| 936 |
let bibtexText = '';
|
| 937 |
+
const displayFullData = data.data.slice(0, previewLimit);
|
| 938 |
displayFullData.forEach(row => {
|
| 939 |
+
bibtexText += (row.Final_BibTeX || row.BibTeX || '') + '\n\n';
|
|
|
|
|
|
|
|
|
|
| 940 |
});
|
| 941 |
|
| 942 |
if (hasMore) {
|
|
|
|
| 946 |
bibtexPreview.textContent = bibtexText;
|
| 947 |
}
|
| 948 |
|
| 949 |
+
function copyBibTeX() {
|
| 950 |
+
const bibtexText = document.getElementById('bibtexPreview').textContent;
|
| 951 |
+
const button = document.getElementById('copyButton');
|
| 952 |
+
|
| 953 |
+
navigator.clipboard.writeText(bibtexText).then(() => {
|
| 954 |
+
button.textContent = 'β
Copied!';
|
| 955 |
+
button.classList.add('copied');
|
| 956 |
+
|
| 957 |
+
setTimeout(() => {
|
| 958 |
+
button.textContent = 'π Copy';
|
| 959 |
+
button.classList.remove('copied');
|
| 960 |
+
}, 2000);
|
| 961 |
+
}).catch(err => {
|
| 962 |
+
console.error('Failed to copy:', err);
|
| 963 |
+
alert('Failed to copy to clipboard');
|
| 964 |
+
});
|
| 965 |
+
}
|
| 966 |
+
|
| 967 |
async function loadDatabaseEntries() {
|
| 968 |
try {
|
| 969 |
const response = await fetch('/api/database/entries');
|