mantenimento-app 2.1.6 → 2.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.js +24 -4
- package/frontend/public/app.js +24 -4
- package/frontend/public/index.html +1 -1
- package/frontend/public/styles.css +112 -5
- package/package.json +1 -1
package/app.js
CHANGED
|
@@ -4193,10 +4193,30 @@ const defaultExpenseItems = [
|
|
|
4193
4193
|
resultDetail = tr("spiegDetailResultTransfer");
|
|
4194
4194
|
} else {
|
|
4195
4195
|
const benefitRows = getCompensativeBenefitRows(m, c1n(), c2n());
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4196
|
+
if (benefitRows.length) {
|
|
4197
|
+
const rawBenefs = Array.isArray(m.compensativeBenefits)
|
|
4198
|
+
? m.compensativeBenefits.filter((r) => r && Number(r.amount || 0) > 0.005)
|
|
4199
|
+
: [];
|
|
4200
|
+
const typeIcons = { family: "\uD83C\uDFDB", "primary-home-mortgage": "\uD83C\uDFE1" };
|
|
4201
|
+
const cardsHtml = benefitRows
|
|
4202
|
+
.map((row, i) => {
|
|
4203
|
+
const icon = (rawBenefs[i] && typeIcons[rawBenefs[i].type]) || "\u2726";
|
|
4204
|
+
return `<li class="spieg-benefit-card"><span class="spieg-benefit-icon">${icon}</span><span class="spieg-benefit-label">${escapeHtml(row.label)}</span><strong class="spieg-benefit-amount">${eur(row.amount)}</strong></li>`;
|
|
4205
|
+
})
|
|
4206
|
+
.join("");
|
|
4207
|
+
const total = benefitRows.reduce((s, r) => s + r.amount, 0);
|
|
4208
|
+
const totalLabel = currentLang === "en" ? "Total allocated benefits" : "Totale benefici allocati";
|
|
4209
|
+
resultHtml = `
|
|
4210
|
+
<div class="spieg-no-transfer-badge">⚖️ ${escapeHtml(tr("calcNoTransferSuggested"))}</div>
|
|
4211
|
+
<div class="spieg-benefits-section">
|
|
4212
|
+
<div class="spieg-benefits-label">🎁 ${escapeHtml(tr("calcCompBenefitsLabel"))}</div>
|
|
4213
|
+
<ul class="spieg-benefits-cards">${cardsHtml}</ul>
|
|
4214
|
+
<div class="spieg-benefits-total"><span>${escapeHtml(totalLabel)}</span><strong>${eur(total)}</strong></div>
|
|
4215
|
+
</div>
|
|
4216
|
+
`;
|
|
4217
|
+
} else {
|
|
4218
|
+
resultHtml = `<div class="spieg-result-empty ok">${tr("calcNoTransferSuggested")}</div>`;
|
|
4219
|
+
}
|
|
4200
4220
|
resultDetail = tr("spiegDetailResultNoTransfer");
|
|
4201
4221
|
}
|
|
4202
4222
|
|
package/frontend/public/app.js
CHANGED
|
@@ -4193,10 +4193,30 @@ const defaultExpenseItems = [
|
|
|
4193
4193
|
resultDetail = tr("spiegDetailResultTransfer");
|
|
4194
4194
|
} else {
|
|
4195
4195
|
const benefitRows = getCompensativeBenefitRows(m, c1n(), c2n());
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4196
|
+
if (benefitRows.length) {
|
|
4197
|
+
const rawBenefs = Array.isArray(m.compensativeBenefits)
|
|
4198
|
+
? m.compensativeBenefits.filter((r) => r && Number(r.amount || 0) > 0.005)
|
|
4199
|
+
: [];
|
|
4200
|
+
const typeIcons = { family: "\uD83C\uDFDB", "primary-home-mortgage": "\uD83C\uDFE1" };
|
|
4201
|
+
const cardsHtml = benefitRows
|
|
4202
|
+
.map((row, i) => {
|
|
4203
|
+
const icon = (rawBenefs[i] && typeIcons[rawBenefs[i].type]) || "\u2726";
|
|
4204
|
+
return `<li class="spieg-benefit-card"><span class="spieg-benefit-icon">${icon}</span><span class="spieg-benefit-label">${escapeHtml(row.label)}</span><strong class="spieg-benefit-amount">${eur(row.amount)}</strong></li>`;
|
|
4205
|
+
})
|
|
4206
|
+
.join("");
|
|
4207
|
+
const total = benefitRows.reduce((s, r) => s + r.amount, 0);
|
|
4208
|
+
const totalLabel = currentLang === "en" ? "Total allocated benefits" : "Totale benefici allocati";
|
|
4209
|
+
resultHtml = `
|
|
4210
|
+
<div class="spieg-no-transfer-badge">⚖️ ${escapeHtml(tr("calcNoTransferSuggested"))}</div>
|
|
4211
|
+
<div class="spieg-benefits-section">
|
|
4212
|
+
<div class="spieg-benefits-label">🎁 ${escapeHtml(tr("calcCompBenefitsLabel"))}</div>
|
|
4213
|
+
<ul class="spieg-benefits-cards">${cardsHtml}</ul>
|
|
4214
|
+
<div class="spieg-benefits-total"><span>${escapeHtml(totalLabel)}</span><strong>${eur(total)}</strong></div>
|
|
4215
|
+
</div>
|
|
4216
|
+
`;
|
|
4217
|
+
} else {
|
|
4218
|
+
resultHtml = `<div class="spieg-result-empty ok">${tr("calcNoTransferSuggested")}</div>`;
|
|
4219
|
+
}
|
|
4200
4220
|
resultDetail = tr("spiegDetailResultNoTransfer");
|
|
4201
4221
|
}
|
|
4202
4222
|
|
|
@@ -1648,11 +1648,11 @@
|
|
|
1648
1648
|
}
|
|
1649
1649
|
|
|
1650
1650
|
.spieg-item-body--result {
|
|
1651
|
-
background:
|
|
1652
|
-
border:
|
|
1653
|
-
border-radius:
|
|
1654
|
-
padding:
|
|
1655
|
-
gap:
|
|
1651
|
+
background: transparent;
|
|
1652
|
+
border: none;
|
|
1653
|
+
border-radius: 0;
|
|
1654
|
+
padding: 0;
|
|
1655
|
+
gap: 8px;
|
|
1656
1656
|
}
|
|
1657
1657
|
|
|
1658
1658
|
.spieg-result-flow {
|
|
@@ -1681,6 +1681,113 @@
|
|
|
1681
1681
|
color: #0f6a61;
|
|
1682
1682
|
}
|
|
1683
1683
|
|
|
1684
|
+
.spieg-no-transfer-badge {
|
|
1685
|
+
display: flex;
|
|
1686
|
+
align-items: center;
|
|
1687
|
+
justify-content: center;
|
|
1688
|
+
gap: 8px;
|
|
1689
|
+
font-size: 1.0rem;
|
|
1690
|
+
font-weight: 900;
|
|
1691
|
+
color: #0a5a52;
|
|
1692
|
+
background: linear-gradient(135deg, #dbf5ed, #c5eedf);
|
|
1693
|
+
border: 1.5px solid #7ec4b2;
|
|
1694
|
+
border-radius: 999px;
|
|
1695
|
+
padding: 9px 20px;
|
|
1696
|
+
letter-spacing: 0.1px;
|
|
1697
|
+
box-shadow: 0 2px 10px rgba(14, 90, 82, 0.14), inset 0 1px 0 rgba(255,255,255,0.7);
|
|
1698
|
+
margin-bottom: 10px;
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1701
|
+
.spieg-benefits-section {
|
|
1702
|
+
display: grid;
|
|
1703
|
+
gap: 6px;
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1706
|
+
.spieg-benefits-label {
|
|
1707
|
+
font-size: 0.71rem;
|
|
1708
|
+
font-weight: 800;
|
|
1709
|
+
text-transform: uppercase;
|
|
1710
|
+
letter-spacing: 0.06em;
|
|
1711
|
+
color: #4e7068;
|
|
1712
|
+
display: flex;
|
|
1713
|
+
align-items: center;
|
|
1714
|
+
gap: 5px;
|
|
1715
|
+
padding-left: 2px;
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
.spieg-benefits-cards {
|
|
1719
|
+
margin: 0;
|
|
1720
|
+
padding: 0;
|
|
1721
|
+
list-style: none;
|
|
1722
|
+
display: grid;
|
|
1723
|
+
gap: 5px;
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
.spieg-benefit-card {
|
|
1727
|
+
display: grid;
|
|
1728
|
+
grid-template-columns: 28px 1fr auto;
|
|
1729
|
+
align-items: center;
|
|
1730
|
+
gap: 8px;
|
|
1731
|
+
padding: 8px 10px;
|
|
1732
|
+
border-radius: 10px;
|
|
1733
|
+
border: 1px solid #b8d9cf;
|
|
1734
|
+
background: linear-gradient(135deg, rgba(255,255,255,0.97), rgba(240,250,246,0.92));
|
|
1735
|
+
font-size: 0.83rem;
|
|
1736
|
+
line-height: 1.35;
|
|
1737
|
+
box-shadow: 0 1px 4px rgba(16, 74, 68, 0.08);
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
.spieg-benefit-icon {
|
|
1741
|
+
display: flex;
|
|
1742
|
+
align-items: center;
|
|
1743
|
+
justify-content: center;
|
|
1744
|
+
width: 28px;
|
|
1745
|
+
height: 28px;
|
|
1746
|
+
border-radius: 50%;
|
|
1747
|
+
background: linear-gradient(135deg, #e3f5ef, #d0ede5);
|
|
1748
|
+
border: 1px solid #b6d9cf;
|
|
1749
|
+
font-size: 1.0em;
|
|
1750
|
+
flex-shrink: 0;
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
.spieg-benefit-label {
|
|
1754
|
+
font-weight: 600;
|
|
1755
|
+
color: #1f4642;
|
|
1756
|
+
word-break: break-word;
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
.spieg-benefit-amount {
|
|
1760
|
+
white-space: nowrap;
|
|
1761
|
+
font-size: 0.94rem;
|
|
1762
|
+
font-weight: 900;
|
|
1763
|
+
color: #0c5e55;
|
|
1764
|
+
font-variant-numeric: tabular-nums;
|
|
1765
|
+
background: rgba(11, 98, 88, 0.09);
|
|
1766
|
+
border-radius: 7px;
|
|
1767
|
+
padding: 2px 8px;
|
|
1768
|
+
border: 1px solid rgba(11, 98, 88, 0.14);
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
.spieg-benefits-total {
|
|
1772
|
+
display: flex;
|
|
1773
|
+
justify-content: space-between;
|
|
1774
|
+
align-items: center;
|
|
1775
|
+
padding: 7px 12px;
|
|
1776
|
+
border-radius: 9px;
|
|
1777
|
+
background: linear-gradient(135deg, #c8eee3, #aee3d4);
|
|
1778
|
+
border: 1.5px solid #7ec9b6;
|
|
1779
|
+
font-size: 0.8rem;
|
|
1780
|
+
font-weight: 700;
|
|
1781
|
+
color: #0a4c47;
|
|
1782
|
+
}
|
|
1783
|
+
|
|
1784
|
+
.spieg-benefits-total strong {
|
|
1785
|
+
font-size: 1.05rem;
|
|
1786
|
+
font-weight: 900;
|
|
1787
|
+
color: #073e3a;
|
|
1788
|
+
font-variant-numeric: tabular-nums;
|
|
1789
|
+
}
|
|
1790
|
+
|
|
1684
1791
|
@page {
|
|
1685
1792
|
size: A4 landscape;
|
|
1686
1793
|
margin: 8mm;
|