Spaces:
Sleeping
Sleeping
claim suggestion changes
Browse files- script.js +26 -5
- styles.css +33 -0
script.js
CHANGED
|
@@ -997,6 +997,22 @@ async function getJson(url) {
|
|
| 997 |
throw lastErr || new Error("Request failed.");
|
| 998 |
}
|
| 999 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1000 |
function formatProposalTitle(p) {
|
| 1001 |
const type = p.type || "";
|
| 1002 |
if (type === "new_subclaim") return "New subclaim";
|
|
@@ -1127,13 +1143,13 @@ function formatProposalBodyHtml(p) {
|
|
| 1127 |
String(payload.nearbySuperclaimId)
|
| 1128 |
)}</code>${payload.nearbySuperclaimText ? ` — ${escapeHtml(String(payload.nearbySuperclaimText))}` : ""}</div>`
|
| 1129 |
: "";
|
|
|
|
|
|
|
|
|
|
| 1130 |
return `
|
| 1131 |
-
<div class="proposal-line"><strong>Suggested original superclaim:</strong> ${escapeHtml(
|
| 1132 |
-
payload.superclaimText || ""
|
| 1133 |
-
)}</div>
|
| 1134 |
${conf}
|
| 1135 |
${near}
|
| 1136 |
-
${
|
| 1137 |
`;
|
| 1138 |
}
|
| 1139 |
return `
|
|
@@ -1172,12 +1188,17 @@ async function refreshPendingProposals() {
|
|
| 1172 |
if (p && p.id) byId.set(String(p.id), p);
|
| 1173 |
const card = document.createElement("article");
|
| 1174 |
card.className = "proposal-card";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1175 |
card.innerHTML = `
|
| 1176 |
<header class="proposal-header">
|
| 1177 |
<div class="proposal-title">${escapeHtml(formatProposalTitle(p))}</div>
|
| 1178 |
<div class="proposal-id"><code>${escapeHtml(p.id || "")}</code></div>
|
| 1179 |
</header>
|
| 1180 |
-
|
| 1181 |
<div class="proposal-body">${formatProposalBodyHtml(p)}${formatProposalMetaHtml(p)}</div>
|
| 1182 |
<div class="proposal-actions">
|
| 1183 |
<button class="action-btn" data-action="approve" data-id="${escapeHtmlAttr(
|
|
|
|
| 997 |
throw lastErr || new Error("Request failed.");
|
| 998 |
}
|
| 999 |
|
| 1000 |
+
function formatNewSuperclaimSectionsHtml(p) {
|
| 1001 |
+
const article = escapeHtml(p.paragraph || "");
|
| 1002 |
+
const payload = p.payload || {};
|
| 1003 |
+
const scText = escapeHtml(String(payload.superclaimText || "").trim());
|
| 1004 |
+
return `
|
| 1005 |
+
<div class="proposal-section">
|
| 1006 |
+
<div class="proposal-section-heading">Article</div>
|
| 1007 |
+
<div class="proposal-section-body">${article}</div>
|
| 1008 |
+
</div>
|
| 1009 |
+
<div class="proposal-section">
|
| 1010 |
+
<div class="proposal-section-heading">Suggested original superclaim</div>
|
| 1011 |
+
<div class="proposal-section-body proposal-section-body--superclaim">${scText}</div>
|
| 1012 |
+
</div>
|
| 1013 |
+
`;
|
| 1014 |
+
}
|
| 1015 |
+
|
| 1016 |
function formatProposalTitle(p) {
|
| 1017 |
const type = p.type || "";
|
| 1018 |
if (type === "new_subclaim") return "New subclaim";
|
|
|
|
| 1143 |
String(payload.nearbySuperclaimId)
|
| 1144 |
)}</code>${payload.nearbySuperclaimText ? ` — ${escapeHtml(String(payload.nearbySuperclaimText))}` : ""}</div>`
|
| 1145 |
: "";
|
| 1146 |
+
const reason = p.rationale
|
| 1147 |
+
? `<div class="proposal-line proposal-reason"><strong>Reasoning:</strong> ${escapeHtml(p.rationale)}</div>`
|
| 1148 |
+
: "";
|
| 1149 |
return `
|
|
|
|
|
|
|
|
|
|
| 1150 |
${conf}
|
| 1151 |
${near}
|
| 1152 |
+
${reason}
|
| 1153 |
`;
|
| 1154 |
}
|
| 1155 |
return `
|
|
|
|
| 1188 |
if (p && p.id) byId.set(String(p.id), p);
|
| 1189 |
const card = document.createElement("article");
|
| 1190 |
card.className = "proposal-card";
|
| 1191 |
+
const isNewSuperclaim = p.type === "new_superclaim";
|
| 1192 |
+
const topSections = isNewSuperclaim
|
| 1193 |
+
? formatNewSuperclaimSectionsHtml(p)
|
| 1194 |
+
: `<div class="proposal-paragraph">${escapeHtml(p.paragraph || "")}</div>`;
|
| 1195 |
+
|
| 1196 |
card.innerHTML = `
|
| 1197 |
<header class="proposal-header">
|
| 1198 |
<div class="proposal-title">${escapeHtml(formatProposalTitle(p))}</div>
|
| 1199 |
<div class="proposal-id"><code>${escapeHtml(p.id || "")}</code></div>
|
| 1200 |
</header>
|
| 1201 |
+
${topSections}
|
| 1202 |
<div class="proposal-body">${formatProposalBodyHtml(p)}${formatProposalMetaHtml(p)}</div>
|
| 1203 |
<div class="proposal-actions">
|
| 1204 |
<button class="action-btn" data-action="approve" data-id="${escapeHtmlAttr(
|
styles.css
CHANGED
|
@@ -602,6 +602,39 @@ body {
|
|
| 602 |
border: 1px solid rgba(51, 65, 85, 0.7);
|
| 603 |
}
|
| 604 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 605 |
.proposal-merge-claims {
|
| 606 |
display: grid;
|
| 607 |
gap: 10px;
|
|
|
|
| 602 |
border: 1px solid rgba(51, 65, 85, 0.7);
|
| 603 |
}
|
| 604 |
|
| 605 |
+
.proposal-section {
|
| 606 |
+
margin-bottom: 10px;
|
| 607 |
+
}
|
| 608 |
+
|
| 609 |
+
.proposal-section-heading {
|
| 610 |
+
font-size: 10px;
|
| 611 |
+
letter-spacing: 0.08em;
|
| 612 |
+
text-transform: uppercase;
|
| 613 |
+
color: #94a3b8;
|
| 614 |
+
margin-bottom: 5px;
|
| 615 |
+
}
|
| 616 |
+
|
| 617 |
+
.proposal-section-body {
|
| 618 |
+
font-size: 13px;
|
| 619 |
+
color: #e5e7eb;
|
| 620 |
+
line-height: 1.5;
|
| 621 |
+
padding: 8px 10px;
|
| 622 |
+
border-radius: var(--radius-md);
|
| 623 |
+
background: rgba(15, 23, 42, 0.65);
|
| 624 |
+
border: 1px solid rgba(51, 65, 85, 0.7);
|
| 625 |
+
}
|
| 626 |
+
|
| 627 |
+
.proposal-section-body--superclaim {
|
| 628 |
+
background: rgba(30, 27, 75, 0.35);
|
| 629 |
+
border-color: rgba(99, 102, 241, 0.35);
|
| 630 |
+
}
|
| 631 |
+
|
| 632 |
+
.proposal-card > .proposal-body {
|
| 633 |
+
margin-top: 8px;
|
| 634 |
+
padding-top: 10px;
|
| 635 |
+
border-top: 1px solid rgba(51, 65, 85, 0.55);
|
| 636 |
+
}
|
| 637 |
+
|
| 638 |
.proposal-merge-claims {
|
| 639 |
display: grid;
|
| 640 |
gap: 10px;
|