jupiter-dynamic-forms 1.9.10 → 1.10.0
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/dist/core/add-column-dialog.d.ts.map +1 -1
- package/dist/core/dynamic-form.d.ts.map +1 -1
- package/dist/core/filter-roles-dialog.d.ts.map +1 -1
- package/dist/core/form-section.d.ts.map +1 -1
- package/dist/index.js +67 -67
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +432 -198
- package/dist/index.mjs.map +1 -1
- package/dist/utils/i18n.d.ts +38 -0
- package/dist/utils/i18n.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -573,9 +573,9 @@ class XBRLFormBuilder {
|
|
|
573
573
|
return a2.role.localeCompare(b2.role);
|
|
574
574
|
});
|
|
575
575
|
sortedRoles.forEach((role) => {
|
|
576
|
-
const
|
|
577
|
-
this.assignFieldColumnIds(
|
|
578
|
-
sections.push(
|
|
576
|
+
const section2 = this.buildSectionFromRole(role, periodStartDate, periodEndDate, hypercubeData, language, periodPreferences);
|
|
577
|
+
this.assignFieldColumnIds(section2);
|
|
578
|
+
sections.push(section2);
|
|
579
579
|
});
|
|
580
580
|
return {
|
|
581
581
|
formId: `xbrl-form-${Date.now()}`,
|
|
@@ -789,12 +789,12 @@ class XBRLFormBuilder {
|
|
|
789
789
|
/**
|
|
790
790
|
* Assign appropriate column IDs to fields based on section's generated columns
|
|
791
791
|
*/
|
|
792
|
-
static assignFieldColumnIds(
|
|
793
|
-
if (!
|
|
792
|
+
static assignFieldColumnIds(section2) {
|
|
793
|
+
if (!section2.columns || section2.columns.length === 0) {
|
|
794
794
|
return;
|
|
795
795
|
}
|
|
796
|
-
const columnIds =
|
|
797
|
-
|
|
796
|
+
const columnIds = section2.columns.map((col) => col.id);
|
|
797
|
+
section2.concepts.forEach((conceptTree) => {
|
|
798
798
|
this.assignColumnIdsToConceptFields(conceptTree, columnIds);
|
|
799
799
|
});
|
|
800
800
|
}
|
|
@@ -961,52 +961,52 @@ class XBRLFormBuilder {
|
|
|
961
961
|
const previousYearColumns = [];
|
|
962
962
|
const prevStartDate = this.getPreviousYearDate(periodStartDate);
|
|
963
963
|
const prevEndDate = this.getPreviousYearDate(periodEndDate);
|
|
964
|
-
currentYearColumns.forEach((
|
|
965
|
-
let prevTitle =
|
|
964
|
+
currentYearColumns.forEach((column2, index) => {
|
|
965
|
+
let prevTitle = column2.title;
|
|
966
966
|
let prevDescription = "";
|
|
967
967
|
let prevId = "";
|
|
968
|
-
if (
|
|
969
|
-
prevTitle =
|
|
970
|
-
if (
|
|
968
|
+
if (column2.dimensionData) {
|
|
969
|
+
prevTitle = column2.title;
|
|
970
|
+
if (column2.description && column2.description.includes("/")) {
|
|
971
971
|
prevDescription = `${prevStartDate} / ${prevEndDate}`;
|
|
972
972
|
} else {
|
|
973
973
|
prevDescription = prevEndDate;
|
|
974
974
|
}
|
|
975
|
-
prevId = `${
|
|
975
|
+
prevId = `${column2.id}_prev`;
|
|
976
976
|
} else {
|
|
977
|
-
if (
|
|
977
|
+
if (column2.id === "instant" || column2.id.includes("instant")) {
|
|
978
978
|
prevTitle = prevEndDate;
|
|
979
979
|
prevDescription = "";
|
|
980
980
|
prevId = `instant_prev_${index}`;
|
|
981
|
-
} else if (
|
|
981
|
+
} else if (column2.id === "duration" || column2.id.includes("duration")) {
|
|
982
982
|
prevTitle = `${prevStartDate} / ${prevEndDate}`;
|
|
983
983
|
prevDescription = "";
|
|
984
984
|
prevId = `duration_prev_${index}`;
|
|
985
|
-
} else if (
|
|
985
|
+
} else if (column2.title.includes("/")) {
|
|
986
986
|
prevTitle = `${prevStartDate} / ${prevEndDate}`;
|
|
987
987
|
prevDescription = "";
|
|
988
|
-
prevId = `${
|
|
988
|
+
prevId = `${column2.id}_prev`;
|
|
989
989
|
} else {
|
|
990
990
|
prevTitle = prevEndDate;
|
|
991
991
|
prevDescription = "";
|
|
992
|
-
prevId = `${
|
|
992
|
+
prevId = `${column2.id}_prev`;
|
|
993
993
|
}
|
|
994
994
|
}
|
|
995
995
|
previousYearColumns.push({
|
|
996
|
-
...
|
|
996
|
+
...column2,
|
|
997
997
|
id: prevId,
|
|
998
998
|
title: prevTitle,
|
|
999
999
|
description: prevDescription,
|
|
1000
|
-
order:
|
|
1000
|
+
order: column2.order + 100,
|
|
1001
1001
|
// Place after current year columns
|
|
1002
1002
|
removable: true,
|
|
1003
1003
|
periodStartDate: prevStartDate,
|
|
1004
1004
|
// Set previous year start date
|
|
1005
1005
|
periodEndDate: prevEndDate,
|
|
1006
1006
|
// Set previous year end date
|
|
1007
|
-
dimensionData:
|
|
1008
|
-
...
|
|
1009
|
-
dimensionId: `${
|
|
1007
|
+
dimensionData: column2.dimensionData ? {
|
|
1008
|
+
...column2.dimensionData,
|
|
1009
|
+
dimensionId: `${column2.dimensionData.dimensionId}_prev`
|
|
1010
1010
|
} : void 0
|
|
1011
1011
|
});
|
|
1012
1012
|
});
|
|
@@ -1016,10 +1016,10 @@ class XBRLFormBuilder {
|
|
|
1016
1016
|
* Filter columns based on user's period preferences
|
|
1017
1017
|
*/
|
|
1018
1018
|
static filterColumnsByPeriodPreferences(columns, preferences) {
|
|
1019
|
-
return columns.filter((
|
|
1019
|
+
return columns.filter((column2) => {
|
|
1020
1020
|
var _a, _b, _c, _d;
|
|
1021
|
-
const isDuration =
|
|
1022
|
-
const isInstant =
|
|
1021
|
+
const isDuration = column2.id.includes("duration") || ((_b = (_a = column2.dimensionData) == null ? void 0 : _a.dimensionId) == null ? void 0 : _b.includes("duration"));
|
|
1022
|
+
const isInstant = column2.id.includes("instant") || ((_d = (_c = column2.dimensionData) == null ? void 0 : _c.dimensionId) == null ? void 0 : _d.includes("instant"));
|
|
1023
1023
|
if (!isDuration && !isInstant) {
|
|
1024
1024
|
return true;
|
|
1025
1025
|
}
|
|
@@ -1558,6 +1558,237 @@ class XBRLFormBuilder {
|
|
|
1558
1558
|
}];
|
|
1559
1559
|
}
|
|
1560
1560
|
}
|
|
1561
|
+
const form$1 = {
|
|
1562
|
+
loading: "Loading form...",
|
|
1563
|
+
submit: "Submit",
|
|
1564
|
+
saveDraft: "Save Draft",
|
|
1565
|
+
errors: "Errors",
|
|
1566
|
+
modified: "Modified",
|
|
1567
|
+
valid: "Valid",
|
|
1568
|
+
yes: "Yes",
|
|
1569
|
+
no: "No",
|
|
1570
|
+
noRoleSelected: "No Role Selected",
|
|
1571
|
+
pleaseSelectRole: "Please select a role from the list on the left."
|
|
1572
|
+
};
|
|
1573
|
+
const filter$1 = {
|
|
1574
|
+
selectRoles: "Select Roles",
|
|
1575
|
+
filterRoles: "Filter Roles",
|
|
1576
|
+
title: "Filter Roles",
|
|
1577
|
+
searchPlaceholder: "Search roles by name, ID, or URI...",
|
|
1578
|
+
clearSearch: "Clear search",
|
|
1579
|
+
showingResults: "Showing",
|
|
1580
|
+
of: "of",
|
|
1581
|
+
roles: "roles",
|
|
1582
|
+
matching: "matching",
|
|
1583
|
+
selectAll: "Select All",
|
|
1584
|
+
selectNone: "Select None",
|
|
1585
|
+
selectFiltered: "Select Filtered",
|
|
1586
|
+
deselectFiltered: "Deselect Filtered",
|
|
1587
|
+
deselectAll: "Deselect All",
|
|
1588
|
+
reset: "Reset",
|
|
1589
|
+
noRolesFound: "No roles found matching",
|
|
1590
|
+
tryDifferentSearch: "Try a different search term or clear the search.",
|
|
1591
|
+
noRolesAvailable: "No roles available.",
|
|
1592
|
+
cancel: "Cancel",
|
|
1593
|
+
applyFilter: "Apply Filter",
|
|
1594
|
+
showPeriodColumn: "Show Period Column:",
|
|
1595
|
+
additionalOptions: "Additional Options:",
|
|
1596
|
+
showPreviousYear: "Show previous year",
|
|
1597
|
+
duration: "Duration",
|
|
1598
|
+
instant: "Instant",
|
|
1599
|
+
uri: "URI"
|
|
1600
|
+
};
|
|
1601
|
+
const column$1 = {
|
|
1602
|
+
addColumn: "Add Column",
|
|
1603
|
+
columnType: "Column Type",
|
|
1604
|
+
instantSingleDate: "Instant (single date)",
|
|
1605
|
+
durationDates: "Duration (start and end dates)",
|
|
1606
|
+
instantDate: "Instant Date",
|
|
1607
|
+
startPeriodDate: "Start Period Date",
|
|
1608
|
+
endPeriodDate: "End Period Date",
|
|
1609
|
+
availableDimensions: "Available Dimensions",
|
|
1610
|
+
dimensionsDescription: "Select dimensions to include in the column. Domain members can be selected here, while typed dimension values will be entered directly in the column header.",
|
|
1611
|
+
enterValue: "Enter value for",
|
|
1612
|
+
enterValuePlaceholder: "Enter value...",
|
|
1613
|
+
selectMember: "Select member:",
|
|
1614
|
+
noMembersAvailable: "No members available for this dimension",
|
|
1615
|
+
cancel: "Cancel",
|
|
1616
|
+
removeColumn: "Remove column",
|
|
1617
|
+
required: "required"
|
|
1618
|
+
};
|
|
1619
|
+
const section$1 = {
|
|
1620
|
+
enterPlaceholder: "Enter"
|
|
1621
|
+
};
|
|
1622
|
+
const admin$1 = {
|
|
1623
|
+
title: "Configure Roles",
|
|
1624
|
+
description: "Select which roles should display the 'Show Previous Year' checkbox and configure period type columns."
|
|
1625
|
+
};
|
|
1626
|
+
const validation$1 = {
|
|
1627
|
+
summary: "Please fix the following errors before submitting:",
|
|
1628
|
+
errorsFound: "errors found"
|
|
1629
|
+
};
|
|
1630
|
+
const enTranslations = {
|
|
1631
|
+
form: form$1,
|
|
1632
|
+
filter: filter$1,
|
|
1633
|
+
column: column$1,
|
|
1634
|
+
section: section$1,
|
|
1635
|
+
admin: admin$1,
|
|
1636
|
+
validation: validation$1
|
|
1637
|
+
};
|
|
1638
|
+
const form = {
|
|
1639
|
+
loading: "Formulier laden...",
|
|
1640
|
+
submit: "Indienen",
|
|
1641
|
+
saveDraft: "Concept opslaan",
|
|
1642
|
+
errors: "Fouten",
|
|
1643
|
+
modified: "Gewijzigd",
|
|
1644
|
+
valid: "Geldig",
|
|
1645
|
+
yes: "Ja",
|
|
1646
|
+
no: "Nee",
|
|
1647
|
+
noRoleSelected: "Geen rol geselecteerd",
|
|
1648
|
+
pleaseSelectRole: "Selecteer een rol uit de lijst aan de linkerkant."
|
|
1649
|
+
};
|
|
1650
|
+
const filter = {
|
|
1651
|
+
selectRoles: "Rollen selecteren",
|
|
1652
|
+
filterRoles: "Rollen filteren",
|
|
1653
|
+
title: "Rollen filteren",
|
|
1654
|
+
searchPlaceholder: "Zoek rollen op naam, ID of URI...",
|
|
1655
|
+
clearSearch: "Zoekopdracht wissen",
|
|
1656
|
+
showingResults: "Weergeven",
|
|
1657
|
+
of: "van",
|
|
1658
|
+
roles: "rollen",
|
|
1659
|
+
matching: "overeenkomend met",
|
|
1660
|
+
selectAll: "Alles selecteren",
|
|
1661
|
+
selectNone: "Niets selecteren",
|
|
1662
|
+
selectFiltered: "Gefilterd selecteren",
|
|
1663
|
+
deselectFiltered: "Gefilterd deselecteren",
|
|
1664
|
+
deselectAll: "Alles deselecteren",
|
|
1665
|
+
reset: "Resetten",
|
|
1666
|
+
noRolesFound: "Geen rollen gevonden die overeenkomen met",
|
|
1667
|
+
tryDifferentSearch: "Probeer een andere zoekterm of wis de zoekopdracht.",
|
|
1668
|
+
noRolesAvailable: "Geen rollen beschikbaar.",
|
|
1669
|
+
cancel: "Annuleren",
|
|
1670
|
+
applyFilter: "Filter toepassen",
|
|
1671
|
+
showPeriodColumn: "Periodekolom weergeven:",
|
|
1672
|
+
additionalOptions: "Aanvullende opties:",
|
|
1673
|
+
showPreviousYear: "Vorig jaar weergeven",
|
|
1674
|
+
duration: "Duur",
|
|
1675
|
+
instant: "Moment",
|
|
1676
|
+
uri: "URI"
|
|
1677
|
+
};
|
|
1678
|
+
const column = {
|
|
1679
|
+
addColumn: "Kolom toevoegen",
|
|
1680
|
+
columnType: "Kolomtype",
|
|
1681
|
+
instantSingleDate: "Moment (enkele datum)",
|
|
1682
|
+
durationDates: "Duur (begin- en einddatum)",
|
|
1683
|
+
instantDate: "Momentdatum",
|
|
1684
|
+
startPeriodDate: "Startdatum periode",
|
|
1685
|
+
endPeriodDate: "Einddatum periode",
|
|
1686
|
+
availableDimensions: "Beschikbare dimensies",
|
|
1687
|
+
dimensionsDescription: "Selecteer dimensies om in de kolom op te nemen. Domeinleden kunnen hier worden geselecteerd, terwijl getypte dimensiewaarden direct in de kolomkop worden ingevoerd.",
|
|
1688
|
+
enterValue: "Voer waarde in voor",
|
|
1689
|
+
enterValuePlaceholder: "Voer waarde in...",
|
|
1690
|
+
selectMember: "Selecteer lid:",
|
|
1691
|
+
noMembersAvailable: "Geen leden beschikbaar voor deze dimensie",
|
|
1692
|
+
cancel: "Annuleren",
|
|
1693
|
+
removeColumn: "Kolom verwijderen",
|
|
1694
|
+
required: "verplicht"
|
|
1695
|
+
};
|
|
1696
|
+
const section = {
|
|
1697
|
+
enterPlaceholder: "Invoeren"
|
|
1698
|
+
};
|
|
1699
|
+
const admin = {
|
|
1700
|
+
title: "Rollen configureren",
|
|
1701
|
+
description: "Selecteer welke rollen het selectievakje 'Vorig jaar weergeven' moeten weergeven en configureer periodetype kolommen."
|
|
1702
|
+
};
|
|
1703
|
+
const validation = {
|
|
1704
|
+
summary: "Corrigeer de volgende fouten voordat u indient:",
|
|
1705
|
+
errorsFound: "fouten gevonden"
|
|
1706
|
+
};
|
|
1707
|
+
const nlTranslations = {
|
|
1708
|
+
form,
|
|
1709
|
+
filter,
|
|
1710
|
+
column,
|
|
1711
|
+
section,
|
|
1712
|
+
admin,
|
|
1713
|
+
validation
|
|
1714
|
+
};
|
|
1715
|
+
const translations = {
|
|
1716
|
+
en: enTranslations,
|
|
1717
|
+
nl: nlTranslations
|
|
1718
|
+
};
|
|
1719
|
+
class I18n {
|
|
1720
|
+
/**
|
|
1721
|
+
* Set the current language
|
|
1722
|
+
* @param language Language code ('en' or 'nl')
|
|
1723
|
+
*/
|
|
1724
|
+
static setLanguage(language) {
|
|
1725
|
+
if (translations[language]) {
|
|
1726
|
+
this.currentLanguage = language;
|
|
1727
|
+
} else {
|
|
1728
|
+
console.warn(`Language '${language}' not supported, falling back to 'en'`);
|
|
1729
|
+
this.currentLanguage = "en";
|
|
1730
|
+
}
|
|
1731
|
+
}
|
|
1732
|
+
/**
|
|
1733
|
+
* Get the current language
|
|
1734
|
+
*/
|
|
1735
|
+
static getLanguage() {
|
|
1736
|
+
return this.currentLanguage;
|
|
1737
|
+
}
|
|
1738
|
+
/**
|
|
1739
|
+
* Translate a key to the current language
|
|
1740
|
+
* @param key Translation key in dot notation (e.g., 'form.submit')
|
|
1741
|
+
* @param params Optional parameters to replace in the translation
|
|
1742
|
+
* @returns Translated string
|
|
1743
|
+
*/
|
|
1744
|
+
static t(key, params) {
|
|
1745
|
+
const keys = key.split(".");
|
|
1746
|
+
let value = translations[this.currentLanguage];
|
|
1747
|
+
for (const k of keys) {
|
|
1748
|
+
if (value && typeof value === "object" && k in value) {
|
|
1749
|
+
value = value[k];
|
|
1750
|
+
} else {
|
|
1751
|
+
console.warn(`Translation key '${key}' not found for language '${this.currentLanguage}'`);
|
|
1752
|
+
return key;
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
if (params && typeof value === "string") {
|
|
1756
|
+
return this.interpolate(value, params);
|
|
1757
|
+
}
|
|
1758
|
+
return value;
|
|
1759
|
+
}
|
|
1760
|
+
/**
|
|
1761
|
+
* Interpolate parameters into a string
|
|
1762
|
+
* Supports {{paramName}} syntax
|
|
1763
|
+
*/
|
|
1764
|
+
static interpolate(str, params) {
|
|
1765
|
+
return str.replace(/\{\{(\w+)\}\}/g, (match, key) => {
|
|
1766
|
+
return key in params ? String(params[key]) : match;
|
|
1767
|
+
});
|
|
1768
|
+
}
|
|
1769
|
+
/**
|
|
1770
|
+
* Check if a translation exists for a key
|
|
1771
|
+
*/
|
|
1772
|
+
static has(key) {
|
|
1773
|
+
const keys = key.split(".");
|
|
1774
|
+
let value = translations[this.currentLanguage];
|
|
1775
|
+
for (const k of keys) {
|
|
1776
|
+
if (value && typeof value === "object" && k in value) {
|
|
1777
|
+
value = value[k];
|
|
1778
|
+
} else {
|
|
1779
|
+
return false;
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
return value !== void 0;
|
|
1783
|
+
}
|
|
1784
|
+
/**
|
|
1785
|
+
* Get all available languages
|
|
1786
|
+
*/
|
|
1787
|
+
static getAvailableLanguages() {
|
|
1788
|
+
return Object.keys(translations);
|
|
1789
|
+
}
|
|
1790
|
+
}
|
|
1791
|
+
I18n.currentLanguage = "en";
|
|
1561
1792
|
const TYPE_INPUT_MAP = {
|
|
1562
1793
|
// ==========================================
|
|
1563
1794
|
// Dutch XBRL Types (nl-types namespace)
|
|
@@ -2236,8 +2467,8 @@ let JupiterConceptTree = class extends LitElement {
|
|
|
2236
2467
|
</td>
|
|
2237
2468
|
|
|
2238
2469
|
<!-- Input Field Cells (Period Columns) - Only for non-abstract concepts -->
|
|
2239
|
-
${this.columns.map((
|
|
2240
|
-
const field = this._getFieldForColumn(
|
|
2470
|
+
${this.columns.map((column2) => {
|
|
2471
|
+
const field = this._getFieldForColumn(column2.id);
|
|
2241
2472
|
const shouldShowField = !isAbstract && field;
|
|
2242
2473
|
return html`
|
|
2243
2474
|
<td class="field-cell ${!shouldShowField ? "empty" : ""} ${isAbstract ? "abstract-row" : ""}">
|
|
@@ -2246,7 +2477,7 @@ let JupiterConceptTree = class extends LitElement {
|
|
|
2246
2477
|
.field="${field}"
|
|
2247
2478
|
.conceptId="${this.concept.id}"
|
|
2248
2479
|
.conceptType="${this.concept.type}"
|
|
2249
|
-
.columnId="${
|
|
2480
|
+
.columnId="${column2.id}"
|
|
2250
2481
|
.value="${this._getFieldValue(field)}"
|
|
2251
2482
|
.disabled="${this.disabled}"
|
|
2252
2483
|
.locale="${this.locale}"
|
|
@@ -2551,29 +2782,29 @@ let JupiterAddColumnDialog = class extends LitElement {
|
|
|
2551
2782
|
return html`
|
|
2552
2783
|
<div class="dialog" @click="${(e2) => e2.stopPropagation()}">
|
|
2553
2784
|
<div class="dialog-header">
|
|
2554
|
-
<h2 class="dialog-title"
|
|
2785
|
+
<h2 class="dialog-title">${I18n.t("column.addColumn")}</h2>
|
|
2555
2786
|
|
|
2556
2787
|
</div>
|
|
2557
2788
|
|
|
2558
2789
|
<div class="dialog-content">
|
|
2559
2790
|
${this.periodType === "mixed" ? html`
|
|
2560
2791
|
<div class="form-group">
|
|
2561
|
-
<label class="form-label required"
|
|
2792
|
+
<label class="form-label required">${I18n.t("column.columnType")}</label>
|
|
2562
2793
|
<select
|
|
2563
2794
|
class="form-input"
|
|
2564
2795
|
.value="${this._selectedType}"
|
|
2565
2796
|
@change="${this._handleSelectedTypeChange}"
|
|
2566
2797
|
required
|
|
2567
2798
|
>
|
|
2568
|
-
<option value="instant"
|
|
2569
|
-
<option value="duration"
|
|
2799
|
+
<option value="instant">${I18n.t("column.instantSingleDate")}</option>
|
|
2800
|
+
<option value="duration">${I18n.t("column.durationDates")}</option>
|
|
2570
2801
|
</select>
|
|
2571
2802
|
</div>
|
|
2572
2803
|
` : ""}
|
|
2573
2804
|
|
|
2574
2805
|
${this.periodType === "instant" || this.periodType === "mixed" && this._selectedType === "instant" ? html`
|
|
2575
2806
|
<div class="form-group">
|
|
2576
|
-
<label class="form-label required"
|
|
2807
|
+
<label class="form-label required">${I18n.t("column.instantDate")}</label>
|
|
2577
2808
|
<input
|
|
2578
2809
|
type="date"
|
|
2579
2810
|
class="form-input"
|
|
@@ -2585,7 +2816,7 @@ let JupiterAddColumnDialog = class extends LitElement {
|
|
|
2585
2816
|
` : html`
|
|
2586
2817
|
<div class="form-group date-row">
|
|
2587
2818
|
<div class="date-field">
|
|
2588
|
-
<label class="form-label required"
|
|
2819
|
+
<label class="form-label required">${I18n.t("column.startPeriodDate")}</label>
|
|
2589
2820
|
<input
|
|
2590
2821
|
type="date"
|
|
2591
2822
|
class="form-input"
|
|
@@ -2595,7 +2826,7 @@ let JupiterAddColumnDialog = class extends LitElement {
|
|
|
2595
2826
|
/>
|
|
2596
2827
|
</div>
|
|
2597
2828
|
<div class="date-field">
|
|
2598
|
-
<label class="form-label required"
|
|
2829
|
+
<label class="form-label required">${I18n.t("column.endPeriodDate")}</label>
|
|
2599
2830
|
<input
|
|
2600
2831
|
type="date"
|
|
2601
2832
|
class="form-input"
|
|
@@ -2610,8 +2841,8 @@ let JupiterAddColumnDialog = class extends LitElement {
|
|
|
2610
2841
|
<!-- Dimensions Section -->
|
|
2611
2842
|
${this.availableDimensions.length > 0 ? html`
|
|
2612
2843
|
<div class="dimensions-section">
|
|
2613
|
-
<h3
|
|
2614
|
-
<p class="form-description"
|
|
2844
|
+
<h3>${I18n.t("column.availableDimensions")}</h3>
|
|
2845
|
+
<p class="form-description">${I18n.t("column.dimensionsDescription")}</p>
|
|
2615
2846
|
|
|
2616
2847
|
${this.availableDimensions.map((dimension) => {
|
|
2617
2848
|
const isSelected = this._selectedDimensions.has(dimension.id);
|
|
@@ -2637,20 +2868,20 @@ let JupiterAddColumnDialog = class extends LitElement {
|
|
|
2637
2868
|
${isTypedDimension ? html`
|
|
2638
2869
|
<!-- Typed Dimension Input -->
|
|
2639
2870
|
<div class="member-selection">
|
|
2640
|
-
<label
|
|
2871
|
+
<label>${I18n.t("column.enterValue")} ${dimension.conceptName}:</label>
|
|
2641
2872
|
<input
|
|
2642
2873
|
type="text"
|
|
2643
2874
|
class="typed-input"
|
|
2644
2875
|
.value="${(selection == null ? void 0 : selection.typedValue) || ""}"
|
|
2645
2876
|
@input="${(e2) => this._handleTypedValueChange(dimension.id, e2)}"
|
|
2646
|
-
placeholder="
|
|
2877
|
+
placeholder="${I18n.t("column.enterValuePlaceholder")}"
|
|
2647
2878
|
/>
|
|
2648
2879
|
</div>
|
|
2649
2880
|
` : html`
|
|
2650
2881
|
<!-- Domain Members Selection -->
|
|
2651
2882
|
${dimension.members && dimension.members.length > 0 ? html`
|
|
2652
2883
|
<div class="member-selection">
|
|
2653
|
-
<label
|
|
2884
|
+
<label>${I18n.t("column.selectMember")}</label>
|
|
2654
2885
|
<div class="member-list">
|
|
2655
2886
|
${dimension.members.map((member) => html`
|
|
2656
2887
|
<div class="member-option">
|
|
@@ -2669,7 +2900,7 @@ let JupiterAddColumnDialog = class extends LitElement {
|
|
|
2669
2900
|
</div>
|
|
2670
2901
|
</div>
|
|
2671
2902
|
` : html`
|
|
2672
|
-
<p class="form-description"
|
|
2903
|
+
<p class="form-description">${I18n.t("column.noMembersAvailable")}</p>
|
|
2673
2904
|
`}
|
|
2674
2905
|
`}
|
|
2675
2906
|
</div>
|
|
@@ -2683,14 +2914,14 @@ let JupiterAddColumnDialog = class extends LitElement {
|
|
|
2683
2914
|
|
|
2684
2915
|
<div class="dialog-actions">
|
|
2685
2916
|
<button class="btn btn-cancel" @click="${this._handleCancel}">
|
|
2686
|
-
|
|
2917
|
+
${I18n.t("column.cancel")}
|
|
2687
2918
|
</button>
|
|
2688
2919
|
<button
|
|
2689
2920
|
class="btn btn-primary"
|
|
2690
2921
|
?disabled="${!isValid}"
|
|
2691
2922
|
@click="${this._handleConfirm}"
|
|
2692
2923
|
>
|
|
2693
|
-
|
|
2924
|
+
${I18n.t("column.addColumn")}
|
|
2694
2925
|
</button>
|
|
2695
2926
|
</div>
|
|
2696
2927
|
</div>
|
|
@@ -3254,41 +3485,41 @@ let JupiterFormSection = class extends LitElement {
|
|
|
3254
3485
|
<thead class="table-header">
|
|
3255
3486
|
<tr class="header-row">
|
|
3256
3487
|
<th class="header-cell concept-column"></th>
|
|
3257
|
-
${this.columns.map((
|
|
3488
|
+
${this.columns.map((column2) => {
|
|
3258
3489
|
var _a, _b, _c;
|
|
3259
3490
|
return html`
|
|
3260
|
-
<th class="header-cell ${
|
|
3491
|
+
<th class="header-cell ${column2.removable ? "removable" : ""}">
|
|
3261
3492
|
<div class="column-header-content">
|
|
3262
3493
|
<div class="column-title">
|
|
3263
|
-
${
|
|
3264
|
-
${
|
|
3494
|
+
${column2.title}
|
|
3495
|
+
${column2.description ? html`<div style="font-weight: normal; font-size: 12px; color: var(--jupiter-text-secondary, #666);">${column2.description}</div>` : ""}
|
|
3265
3496
|
</div>
|
|
3266
3497
|
|
|
3267
3498
|
<!-- Typed member input fields in column header -->
|
|
3268
|
-
${((_a =
|
|
3499
|
+
${((_a = column2.dimensionData) == null ? void 0 : _a.hasTypedMembers) ? html`
|
|
3269
3500
|
<div class="typed-members-header">
|
|
3270
|
-
${(_c = (_b =
|
|
3501
|
+
${(_c = (_b = column2.dimensionData) == null ? void 0 : _b.typedMembers) == null ? void 0 : _c.map((typedMember) => html`
|
|
3271
3502
|
<div class="typed-member-header-input">
|
|
3272
3503
|
<input
|
|
3273
3504
|
type="text"
|
|
3274
3505
|
class="typed-member-header-field"
|
|
3275
|
-
placeholder="
|
|
3276
|
-
.value="${this._getTypedMemberHeaderValue(
|
|
3277
|
-
@input="${(e2) => this._handleTypedMemberHeaderChange(e2,
|
|
3506
|
+
placeholder="${I18n.t("section.enterPlaceholder")} ${typedMember.axisLabel}"
|
|
3507
|
+
.value="${this._getTypedMemberHeaderValue(column2.id, typedMember.axisId)}"
|
|
3508
|
+
@input="${(e2) => this._handleTypedMemberHeaderChange(e2, column2.id, typedMember.axisId)}"
|
|
3278
3509
|
/>
|
|
3279
3510
|
</div>
|
|
3280
3511
|
`)}
|
|
3281
3512
|
</div>
|
|
3282
3513
|
` : ""}
|
|
3283
3514
|
|
|
3284
|
-
${
|
|
3515
|
+
${column2.removable ? html`
|
|
3285
3516
|
<button
|
|
3286
3517
|
class="remove-column-btn"
|
|
3287
3518
|
@click="${(e2) => {
|
|
3288
3519
|
e2.stopPropagation();
|
|
3289
|
-
this._handleRemoveColumn(
|
|
3520
|
+
this._handleRemoveColumn(column2.id);
|
|
3290
3521
|
}}"
|
|
3291
|
-
title="
|
|
3522
|
+
title="${I18n.t("column.removeColumn")}"
|
|
3292
3523
|
>×</button>
|
|
3293
3524
|
` : ""}
|
|
3294
3525
|
</div>
|
|
@@ -3299,8 +3530,8 @@ let JupiterFormSection = class extends LitElement {
|
|
|
3299
3530
|
<button class="add-column-btn" @click="${(e2) => {
|
|
3300
3531
|
e2.stopPropagation();
|
|
3301
3532
|
this._handleAddColumn();
|
|
3302
|
-
}}" title="
|
|
3303
|
-
+
|
|
3533
|
+
}}" title="${I18n.t("column.addColumn")}">
|
|
3534
|
+
+ ${I18n.t("column.addColumn")}
|
|
3304
3535
|
</button>
|
|
3305
3536
|
</th>
|
|
3306
3537
|
</tr>
|
|
@@ -3850,7 +4081,7 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3850
4081
|
<svg class="filter-icon" viewBox="0 0 24 24">
|
|
3851
4082
|
<path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
|
|
3852
4083
|
</svg>
|
|
3853
|
-
<h2 class="dialog-title"
|
|
4084
|
+
<h2 class="dialog-title">${I18n.t("filter.title")}</h2>
|
|
3854
4085
|
<button class="close-button" @click="${this._handleCancel}">×</button>
|
|
3855
4086
|
</div>
|
|
3856
4087
|
|
|
@@ -3866,12 +4097,12 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3866
4097
|
<input
|
|
3867
4098
|
type="text"
|
|
3868
4099
|
class="search-input"
|
|
3869
|
-
placeholder="
|
|
4100
|
+
placeholder="${I18n.t("filter.searchPlaceholder")}"
|
|
3870
4101
|
.value="${this._searchQuery}"
|
|
3871
4102
|
@input="${this._handleSearchInput}"
|
|
3872
4103
|
/>
|
|
3873
4104
|
${this._searchQuery ? html`
|
|
3874
|
-
<button class="clear-search" @click="${this._clearSearch}" title="
|
|
4105
|
+
<button class="clear-search" @click="${this._clearSearch}" title="${I18n.t("filter.clearSearch")}">
|
|
3875
4106
|
×
|
|
3876
4107
|
</button>
|
|
3877
4108
|
` : html`
|
|
@@ -3884,8 +4115,8 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3884
4115
|
<!-- Search Results Info -->
|
|
3885
4116
|
${hasSearchQuery ? html`
|
|
3886
4117
|
<div class="search-results-info">
|
|
3887
|
-
|
|
3888
|
-
${filteredCount !== totalCount ? html
|
|
4118
|
+
${I18n.t("filter.showingResults")} ${filteredCount} ${I18n.t("filter.of")} ${totalCount} ${I18n.t("filter.roles")}
|
|
4119
|
+
${filteredCount !== totalCount ? html`${I18n.t("filter.matching")} "${this._searchQuery}"` : ""}
|
|
3889
4120
|
</div>
|
|
3890
4121
|
` : ""}
|
|
3891
4122
|
|
|
@@ -3893,27 +4124,27 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3893
4124
|
<div class="selection-controls">
|
|
3894
4125
|
${hasSearchQuery ? html`
|
|
3895
4126
|
<button class="selection-control" @click="${this._selectAll}">
|
|
3896
|
-
|
|
4127
|
+
${I18n.t("filter.selectFiltered")} (${filteredCount})
|
|
3897
4128
|
</button>
|
|
3898
4129
|
<button class="selection-control" @click="${this._selectNone}">
|
|
3899
|
-
|
|
4130
|
+
${I18n.t("filter.deselectFiltered")}
|
|
3900
4131
|
</button>
|
|
3901
4132
|
<button class="selection-control" @click="${this._selectAllGlobal}">
|
|
3902
|
-
|
|
4133
|
+
${I18n.t("filter.selectAll")} (${totalCount})
|
|
3903
4134
|
</button>
|
|
3904
4135
|
<button class="selection-control" @click="${this._selectNoneGlobal}">
|
|
3905
|
-
|
|
4136
|
+
${I18n.t("filter.deselectAll")}
|
|
3906
4137
|
</button>
|
|
3907
4138
|
` : html`
|
|
3908
4139
|
<button class="selection-control" @click="${this._selectAll}">
|
|
3909
|
-
|
|
4140
|
+
${I18n.t("filter.selectAll")}
|
|
3910
4141
|
</button>
|
|
3911
4142
|
<button class="selection-control" @click="${this._selectNone}">
|
|
3912
|
-
|
|
4143
|
+
${I18n.t("filter.selectNone")}
|
|
3913
4144
|
</button>
|
|
3914
4145
|
`}
|
|
3915
4146
|
<button class="selection-control" @click="${this._resetToOriginal}">
|
|
3916
|
-
|
|
4147
|
+
${I18n.t("filter.reset")}
|
|
3917
4148
|
</button>
|
|
3918
4149
|
</div>
|
|
3919
4150
|
|
|
@@ -3922,10 +4153,10 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3922
4153
|
${this._filteredRoles.length === 0 ? html`
|
|
3923
4154
|
<div class="no-results">
|
|
3924
4155
|
${hasSearchQuery ? html`
|
|
3925
|
-
|
|
3926
|
-
|
|
4156
|
+
${I18n.t("filter.noRolesFound")} "${this._searchQuery}".<br>
|
|
4157
|
+
${I18n.t("filter.tryDifferentSearch")}
|
|
3927
4158
|
` : html`
|
|
3928
|
-
|
|
4159
|
+
${I18n.t("filter.noRolesAvailable")}
|
|
3929
4160
|
`}
|
|
3930
4161
|
</div>
|
|
3931
4162
|
` : html`
|
|
@@ -3945,12 +4176,12 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3945
4176
|
<div class="role-info">
|
|
3946
4177
|
<h4 class="role-title">${role.title}</h4>
|
|
3947
4178
|
${((_a = role.metadata) == null ? void 0 : _a.roleURI) ? html`
|
|
3948
|
-
<p class="role-description"
|
|
4179
|
+
<p class="role-description">${I18n.t("filter.uri")}: ${role.metadata.roleURI}</p>
|
|
3949
4180
|
` : ""}
|
|
3950
4181
|
|
|
3951
4182
|
${showPeriodControls ? html`
|
|
3952
4183
|
<div class="period-controls">
|
|
3953
|
-
<p class="period-controls-label"
|
|
4184
|
+
<p class="period-controls-label">${I18n.t("filter.showPeriodColumn")}</p>
|
|
3954
4185
|
<div class="period-checkboxes">
|
|
3955
4186
|
<label class="period-checkbox-item">
|
|
3956
4187
|
<input
|
|
@@ -3959,7 +4190,7 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3959
4190
|
.checked="${preferences.showDuration}"
|
|
3960
4191
|
@change="${(e2) => this._handlePeriodCheckboxChange(e2, role.id, "duration")}"
|
|
3961
4192
|
/>
|
|
3962
|
-
<span class="period-checkbox-label"
|
|
4193
|
+
<span class="period-checkbox-label">${I18n.t("filter.duration")}</span>
|
|
3963
4194
|
</label>
|
|
3964
4195
|
<label class="period-checkbox-item">
|
|
3965
4196
|
<input
|
|
@@ -3968,14 +4199,14 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3968
4199
|
.checked="${preferences.showInstant}"
|
|
3969
4200
|
@change="${(e2) => this._handlePeriodCheckboxChange(e2, role.id, "instant")}"
|
|
3970
4201
|
/>
|
|
3971
|
-
<span class="period-checkbox-label"
|
|
4202
|
+
<span class="period-checkbox-label">${I18n.t("filter.instant")}</span>
|
|
3972
4203
|
</label>
|
|
3973
4204
|
</div>
|
|
3974
4205
|
</div>
|
|
3975
4206
|
` : ""}
|
|
3976
4207
|
|
|
3977
4208
|
<div class="period-controls">
|
|
3978
|
-
<p class="period-controls-label"
|
|
4209
|
+
<p class="period-controls-label">${I18n.t("filter.additionalOptions")}</p>
|
|
3979
4210
|
<div class="period-checkboxes">
|
|
3980
4211
|
<label class="period-checkbox-item">
|
|
3981
4212
|
<input
|
|
@@ -3984,7 +4215,7 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
3984
4215
|
.checked="${preferences.showPreviousYear}"
|
|
3985
4216
|
@change="${(e2) => this._handlePeriodCheckboxChange(e2, role.id, "previousYear")}"
|
|
3986
4217
|
/>
|
|
3987
|
-
<span class="period-checkbox-label"
|
|
4218
|
+
<span class="period-checkbox-label">${I18n.t("filter.showPreviousYear")}</span>
|
|
3988
4219
|
</label>
|
|
3989
4220
|
</div>
|
|
3990
4221
|
</div>
|
|
@@ -4001,14 +4232,14 @@ let JupiterFilterRolesDialog = class extends LitElement {
|
|
|
4001
4232
|
<!-- Dialog Actions -->
|
|
4002
4233
|
<div class="dialog-actions">
|
|
4003
4234
|
<button class="btn-secondary" @click="${this._handleCancel}">
|
|
4004
|
-
|
|
4235
|
+
${I18n.t("filter.cancel")}
|
|
4005
4236
|
</button>
|
|
4006
4237
|
<button
|
|
4007
4238
|
class="btn-primary"
|
|
4008
4239
|
@click="${this._handleApply}"
|
|
4009
4240
|
?disabled="${selectedCount === 0}"
|
|
4010
4241
|
>
|
|
4011
|
-
|
|
4242
|
+
${I18n.t("filter.applyFilter")} (${selectedCount})
|
|
4012
4243
|
</button>
|
|
4013
4244
|
</div>
|
|
4014
4245
|
</div>
|
|
@@ -4414,6 +4645,9 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4414
4645
|
this._initializeForm();
|
|
4415
4646
|
}
|
|
4416
4647
|
updated(changedProperties) {
|
|
4648
|
+
if (changedProperties.has("language")) {
|
|
4649
|
+
I18n.setLanguage(this.language);
|
|
4650
|
+
}
|
|
4417
4651
|
if (changedProperties.has("financialStatementsTypeAxis")) {
|
|
4418
4652
|
console.log("🔄 financialStatementsTypeAxis changed:", this.financialStatementsTypeAxis);
|
|
4419
4653
|
}
|
|
@@ -4446,7 +4680,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4446
4680
|
console.log("📊 Sections after filter:", this._allSections.length);
|
|
4447
4681
|
}
|
|
4448
4682
|
if (this._selectedRoleIds.length === 0) {
|
|
4449
|
-
this._selectedRoleIds = this._allSections.map((
|
|
4683
|
+
this._selectedRoleIds = this._allSections.map((section2) => section2.id);
|
|
4450
4684
|
console.log("✅ Auto-selected all roles:", this._selectedRoleIds.length);
|
|
4451
4685
|
}
|
|
4452
4686
|
this._applyRoleFilter();
|
|
@@ -4470,7 +4704,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4470
4704
|
} else if (this.schema) {
|
|
4471
4705
|
this._currentSchema = this.schema;
|
|
4472
4706
|
this._allSections = [...this.schema.sections];
|
|
4473
|
-
this._selectedRoleIds = this._allSections.map((
|
|
4707
|
+
this._selectedRoleIds = this._allSections.map((section2) => section2.id);
|
|
4474
4708
|
this._columns = this._getDefaultColumns();
|
|
4475
4709
|
} else {
|
|
4476
4710
|
this._currentSchema = this._getDefaultSchema();
|
|
@@ -4545,7 +4779,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4545
4779
|
}
|
|
4546
4780
|
this._preserveDataForHiddenSections();
|
|
4547
4781
|
const filteredSections = this._allSections.filter(
|
|
4548
|
-
(
|
|
4782
|
+
(section2) => this._selectedRoleIds.includes(section2.id)
|
|
4549
4783
|
);
|
|
4550
4784
|
console.log(`📊 Filtered sections: ${filteredSections.length} (IDs: ${filteredSections.map((s2) => s2.id).join(", ")})`);
|
|
4551
4785
|
this._restoreDataForVisibleSections(filteredSections);
|
|
@@ -4574,11 +4808,11 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4574
4808
|
const hypercubeData = this.xbrlInput.hypercubes[0];
|
|
4575
4809
|
const financialStatementsAxisId = "bw2-titel9_FinancialStatementsTypeAxis";
|
|
4576
4810
|
console.log("🔍 Filter values:", this.financialStatementsTypeAxis);
|
|
4577
|
-
return sections.filter((
|
|
4811
|
+
return sections.filter((section2) => {
|
|
4578
4812
|
var _a2;
|
|
4579
|
-
const hypercubeRole = (_a2 = hypercubeData.roles) == null ? void 0 : _a2.find((r2) => r2.roleId ===
|
|
4813
|
+
const hypercubeRole = (_a2 = hypercubeData.roles) == null ? void 0 : _a2.find((r2) => r2.roleId === section2.id);
|
|
4580
4814
|
if (!hypercubeRole || !hypercubeRole.items || hypercubeRole.items.length === 0) {
|
|
4581
|
-
console.log(`✅ ${
|
|
4815
|
+
console.log(`✅ ${section2.title}: No hypercube entry - INCLUDED`);
|
|
4582
4816
|
return true;
|
|
4583
4817
|
}
|
|
4584
4818
|
let hasFinancialStatementsAxis = false;
|
|
@@ -4630,20 +4864,20 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4630
4864
|
(sectionId) => !this._selectedRoleIds.includes(sectionId)
|
|
4631
4865
|
);
|
|
4632
4866
|
sectionsThatWillBeHidden.forEach((sectionId) => {
|
|
4633
|
-
const
|
|
4634
|
-
if (
|
|
4635
|
-
this._preserveSectionData(
|
|
4867
|
+
const section2 = this._allSections.find((s2) => s2.id === sectionId);
|
|
4868
|
+
if (section2) {
|
|
4869
|
+
this._preserveSectionData(section2);
|
|
4636
4870
|
}
|
|
4637
4871
|
});
|
|
4638
4872
|
}
|
|
4639
4873
|
_restoreDataForVisibleSections(visibleSections) {
|
|
4640
|
-
visibleSections.forEach((
|
|
4641
|
-
this._restoreSectionData(
|
|
4874
|
+
visibleSections.forEach((section2) => {
|
|
4875
|
+
this._restoreSectionData(section2);
|
|
4642
4876
|
});
|
|
4643
4877
|
console.log(`🔄 Restored data for ${visibleSections.length} visible sections`);
|
|
4644
4878
|
}
|
|
4645
|
-
_preserveSectionData(
|
|
4646
|
-
|
|
4879
|
+
_preserveSectionData(section2) {
|
|
4880
|
+
section2.concepts.forEach((concept) => {
|
|
4647
4881
|
this._preserveConceptData(concept);
|
|
4648
4882
|
});
|
|
4649
4883
|
}
|
|
@@ -4662,8 +4896,8 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4662
4896
|
});
|
|
4663
4897
|
}
|
|
4664
4898
|
}
|
|
4665
|
-
_restoreSectionData(
|
|
4666
|
-
|
|
4899
|
+
_restoreSectionData(section2) {
|
|
4900
|
+
section2.concepts.forEach((concept) => {
|
|
4667
4901
|
this._restoreConceptData(concept);
|
|
4668
4902
|
});
|
|
4669
4903
|
}
|
|
@@ -4721,8 +4955,8 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4721
4955
|
const schema = this._currentSchema;
|
|
4722
4956
|
if (!schema)
|
|
4723
4957
|
return;
|
|
4724
|
-
for (const
|
|
4725
|
-
for (const concept of
|
|
4958
|
+
for (const section2 of schema.sections) {
|
|
4959
|
+
for (const concept of section2.concepts) {
|
|
4726
4960
|
for (const field of concept.fields) {
|
|
4727
4961
|
const value = (_a = this._formData[concept.id]) == null ? void 0 : _a[field.columnId];
|
|
4728
4962
|
const fieldErrors = FormValidator.validateField(
|
|
@@ -4802,16 +5036,16 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4802
5036
|
_handleColumnRemove(event) {
|
|
4803
5037
|
const { columnId, sectionId } = event.detail;
|
|
4804
5038
|
if (this._currentSchema && sectionId) {
|
|
4805
|
-
const targetSection = this._currentSchema.sections.find((
|
|
5039
|
+
const targetSection = this._currentSchema.sections.find((section2) => section2.id === sectionId);
|
|
4806
5040
|
if (targetSection && targetSection.columns) {
|
|
4807
5041
|
targetSection.columns = targetSection.columns.filter((col) => col.id !== columnId);
|
|
4808
5042
|
}
|
|
4809
5043
|
} else {
|
|
4810
5044
|
this._columns = this._columns.filter((col) => col.id !== columnId);
|
|
4811
5045
|
if (this._currentSchema) {
|
|
4812
|
-
this._currentSchema.sections.forEach((
|
|
4813
|
-
if (
|
|
4814
|
-
|
|
5046
|
+
this._currentSchema.sections.forEach((section2) => {
|
|
5047
|
+
if (section2.columns) {
|
|
5048
|
+
section2.columns = section2.columns.filter((col) => col.id !== columnId);
|
|
4815
5049
|
}
|
|
4816
5050
|
});
|
|
4817
5051
|
}
|
|
@@ -4981,7 +5215,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
4981
5215
|
}
|
|
4982
5216
|
}
|
|
4983
5217
|
if (this._currentSchema) {
|
|
4984
|
-
const targetSection = this._currentSchema.sections.find((
|
|
5218
|
+
const targetSection = this._currentSchema.sections.find((section2) => section2.id === sectionId);
|
|
4985
5219
|
if (targetSection) {
|
|
4986
5220
|
if (!targetSection.columns) {
|
|
4987
5221
|
targetSection.columns = [...this._columns];
|
|
@@ -5001,7 +5235,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5001
5235
|
if (!this._currentSchema)
|
|
5002
5236
|
return;
|
|
5003
5237
|
if (sectionId) {
|
|
5004
|
-
const targetSection = this._currentSchema.sections.find((
|
|
5238
|
+
const targetSection = this._currentSchema.sections.find((section2) => section2.id === sectionId);
|
|
5005
5239
|
if (targetSection) {
|
|
5006
5240
|
this._removeColumnDataFromConcepts(targetSection.concepts, columnId);
|
|
5007
5241
|
}
|
|
@@ -5044,7 +5278,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5044
5278
|
if (!this._currentSchema)
|
|
5045
5279
|
return;
|
|
5046
5280
|
const formBuilder = new XBRLFormBuilder();
|
|
5047
|
-
const targetSection = this._currentSchema.sections.find((
|
|
5281
|
+
const targetSection = this._currentSchema.sections.find((section2) => section2.id === sectionId);
|
|
5048
5282
|
if (targetSection) {
|
|
5049
5283
|
this._replicateFieldsForSection(targetSection.concepts, columnId, request, formBuilder);
|
|
5050
5284
|
}
|
|
@@ -5158,8 +5392,8 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5158
5392
|
if (!this._currentSchema) {
|
|
5159
5393
|
return submissionData;
|
|
5160
5394
|
}
|
|
5161
|
-
this._currentSchema.sections.forEach((
|
|
5162
|
-
this._processConceptsForSubmission(
|
|
5395
|
+
this._currentSchema.sections.forEach((section2) => {
|
|
5396
|
+
this._processConceptsForSubmission(section2.concepts, submissionData, section2);
|
|
5163
5397
|
});
|
|
5164
5398
|
this._includePreservedDataInSubmission(submissionData);
|
|
5165
5399
|
const uniqueSubmissionData = this._removeDuplicateSubmissions(submissionData);
|
|
@@ -5184,8 +5418,8 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5184
5418
|
console.log(`📤 Included preserved data in submission. Total entries: ${submissionData.length}`);
|
|
5185
5419
|
}
|
|
5186
5420
|
_findConceptInAllSections(conceptId) {
|
|
5187
|
-
for (const
|
|
5188
|
-
const concept = this._findConceptInSection(
|
|
5421
|
+
for (const section2 of this._allSections) {
|
|
5422
|
+
const concept = this._findConceptInSection(section2.concepts, conceptId);
|
|
5189
5423
|
if (concept) {
|
|
5190
5424
|
return concept;
|
|
5191
5425
|
}
|
|
@@ -5207,45 +5441,45 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5207
5441
|
return null;
|
|
5208
5442
|
}
|
|
5209
5443
|
_findSectionForConcept(conceptId) {
|
|
5210
|
-
for (const
|
|
5211
|
-
const concept = this._findConceptInSection(
|
|
5444
|
+
for (const section2 of this._allSections) {
|
|
5445
|
+
const concept = this._findConceptInSection(section2.concepts, conceptId);
|
|
5212
5446
|
if (concept) {
|
|
5213
|
-
return
|
|
5447
|
+
return section2;
|
|
5214
5448
|
}
|
|
5215
5449
|
}
|
|
5216
5450
|
return null;
|
|
5217
5451
|
}
|
|
5218
|
-
_addConceptDataToSubmission(concept, columnId, value, submissionData,
|
|
5452
|
+
_addConceptDataToSubmission(concept, columnId, value, submissionData, section2) {
|
|
5219
5453
|
var _a;
|
|
5220
5454
|
const field = concept.fields.find((f2) => f2.columnId === columnId);
|
|
5221
5455
|
if (!field)
|
|
5222
5456
|
return;
|
|
5223
5457
|
const isInstant = concept.periodType === "instant";
|
|
5224
|
-
const
|
|
5458
|
+
const column2 = this._findColumnByIdInAllSections(columnId);
|
|
5225
5459
|
alert("hi");
|
|
5226
|
-
console.log(`🔍 [Submission] Concept: ${concept.id}, Column: ${columnId}, Column Period: ${(
|
|
5460
|
+
console.log(`🔍 [Submission] Concept: ${concept.id}, Column: ${columnId}, Column Period: ${(column2 == null ? void 0 : column2.periodStartDate) || "none"} - ${(column2 == null ? void 0 : column2.periodEndDate) || "none"}`);
|
|
5227
5461
|
const entry = {
|
|
5228
5462
|
conceptId: concept.originalConceptId || concept.id,
|
|
5229
5463
|
value,
|
|
5230
5464
|
period: {
|
|
5231
5465
|
type: concept.periodType || "duration",
|
|
5232
|
-
...isInstant ? { date: (
|
|
5233
|
-
startDate: (
|
|
5234
|
-
endDate: (
|
|
5466
|
+
...isInstant ? { date: (column2 == null ? void 0 : column2.periodEndDate) || field.periodStartDate || this.periodStartDate } : {
|
|
5467
|
+
startDate: (column2 == null ? void 0 : column2.periodStartDate) || field.periodStartDate || this.periodStartDate,
|
|
5468
|
+
endDate: (column2 == null ? void 0 : column2.periodEndDate) || field.periodEndDate || this.periodEndDate
|
|
5235
5469
|
}
|
|
5236
5470
|
}
|
|
5237
5471
|
};
|
|
5238
|
-
if ((_a =
|
|
5239
|
-
entry.dimension =
|
|
5472
|
+
if ((_a = column2 == null ? void 0 : column2.dimensionData) == null ? void 0 : _a.memberLabel) {
|
|
5473
|
+
entry.dimension = column2.dimensionData.memberLabel;
|
|
5240
5474
|
}
|
|
5241
5475
|
submissionData.push(entry);
|
|
5242
5476
|
}
|
|
5243
5477
|
_findColumnByIdInAllSections(columnId) {
|
|
5244
|
-
for (const
|
|
5245
|
-
if (
|
|
5246
|
-
const
|
|
5247
|
-
if (
|
|
5248
|
-
return
|
|
5478
|
+
for (const section2 of this._allSections) {
|
|
5479
|
+
if (section2.columns) {
|
|
5480
|
+
const column2 = section2.columns.find((col) => col.id === columnId);
|
|
5481
|
+
if (column2) {
|
|
5482
|
+
return column2;
|
|
5249
5483
|
}
|
|
5250
5484
|
}
|
|
5251
5485
|
}
|
|
@@ -5266,28 +5500,28 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5266
5500
|
if (!this._currentSchema) {
|
|
5267
5501
|
return void 0;
|
|
5268
5502
|
}
|
|
5269
|
-
for (const
|
|
5270
|
-
if (
|
|
5271
|
-
const
|
|
5272
|
-
if (
|
|
5273
|
-
return
|
|
5503
|
+
for (const section2 of this._currentSchema.sections) {
|
|
5504
|
+
if (section2.columns) {
|
|
5505
|
+
const column2 = section2.columns.find((col) => col.id === columnId);
|
|
5506
|
+
if (column2) {
|
|
5507
|
+
return column2;
|
|
5274
5508
|
}
|
|
5275
5509
|
}
|
|
5276
5510
|
}
|
|
5277
5511
|
return void 0;
|
|
5278
5512
|
}
|
|
5279
|
-
_findColumnByIdInSection(columnId,
|
|
5280
|
-
if (!(
|
|
5513
|
+
_findColumnByIdInSection(columnId, section2) {
|
|
5514
|
+
if (!(section2 == null ? void 0 : section2.columns)) {
|
|
5281
5515
|
return void 0;
|
|
5282
5516
|
}
|
|
5283
|
-
return
|
|
5517
|
+
return section2.columns.find((col) => col.id === columnId);
|
|
5284
5518
|
}
|
|
5285
|
-
_getTypedMemberNameForAxis(axisId,
|
|
5519
|
+
_getTypedMemberNameForAxis(axisId, section2) {
|
|
5286
5520
|
var _a, _b, _c, _d;
|
|
5287
5521
|
if (!((_b = (_a = this.xbrlInput) == null ? void 0 : _a.hypercubes) == null ? void 0 : _b[0])) {
|
|
5288
5522
|
return null;
|
|
5289
5523
|
}
|
|
5290
|
-
const sectionRoleId =
|
|
5524
|
+
const sectionRoleId = section2 == null ? void 0 : section2.id;
|
|
5291
5525
|
if (!sectionRoleId) {
|
|
5292
5526
|
return null;
|
|
5293
5527
|
}
|
|
@@ -5306,12 +5540,12 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5306
5540
|
}
|
|
5307
5541
|
return null;
|
|
5308
5542
|
}
|
|
5309
|
-
_doesConceptApplyToTypedDimension(concept,
|
|
5543
|
+
_doesConceptApplyToTypedDimension(concept, section2, columnId) {
|
|
5310
5544
|
var _a, _b, _c;
|
|
5311
5545
|
if (!((_b = (_a = this.xbrlInput) == null ? void 0 : _a.hypercubes) == null ? void 0 : _b[0])) {
|
|
5312
5546
|
return false;
|
|
5313
5547
|
}
|
|
5314
|
-
const sectionRoleId =
|
|
5548
|
+
const sectionRoleId = section2 == null ? void 0 : section2.id;
|
|
5315
5549
|
if (!sectionRoleId) {
|
|
5316
5550
|
return false;
|
|
5317
5551
|
}
|
|
@@ -5333,12 +5567,12 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5333
5567
|
/**
|
|
5334
5568
|
* Get the specific typed dimensions that apply to a concept in its role
|
|
5335
5569
|
*/
|
|
5336
|
-
_getApplicableTypedDimensions(concept,
|
|
5570
|
+
_getApplicableTypedDimensions(concept, section2) {
|
|
5337
5571
|
var _a, _b, _c;
|
|
5338
|
-
if (!((_b = (_a = this.xbrlInput) == null ? void 0 : _a.hypercubes) == null ? void 0 : _b[0]) || !(
|
|
5572
|
+
if (!((_b = (_a = this.xbrlInput) == null ? void 0 : _a.hypercubes) == null ? void 0 : _b[0]) || !(section2 == null ? void 0 : section2.id)) {
|
|
5339
5573
|
return [];
|
|
5340
5574
|
}
|
|
5341
|
-
const hypercubeRole = this.xbrlInput.hypercubes[0].roles.find((hr) => hr.roleId ===
|
|
5575
|
+
const hypercubeRole = this.xbrlInput.hypercubes[0].roles.find((hr) => hr.roleId === section2.id);
|
|
5342
5576
|
if (!((_c = hypercubeRole == null ? void 0 : hypercubeRole.items) == null ? void 0 : _c.length)) {
|
|
5343
5577
|
return [];
|
|
5344
5578
|
}
|
|
@@ -5352,9 +5586,9 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5352
5586
|
}
|
|
5353
5587
|
return [];
|
|
5354
5588
|
}
|
|
5355
|
-
_processConceptsForSubmission(concepts, submissionData,
|
|
5589
|
+
_processConceptsForSubmission(concepts, submissionData, section2) {
|
|
5356
5590
|
const targetRole = "Toelichting op de geconsolideerde jaarrekening - Financiële vaste activa: Deelnemingen: Volledig geconsolideerd: Specificatie";
|
|
5357
|
-
const sectionTitle = (
|
|
5591
|
+
const sectionTitle = (section2 == null ? void 0 : section2.title) || "Unknown";
|
|
5358
5592
|
concepts.forEach((concept) => {
|
|
5359
5593
|
if (sectionTitle === targetRole) {
|
|
5360
5594
|
console.warn(`[DUPLICATE DEBUG] Processing concept ${concept.originalConceptId || concept.id} in target role`);
|
|
@@ -5376,7 +5610,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5376
5610
|
const conceptData = this._formData[concept.id];
|
|
5377
5611
|
const fieldValue = conceptData == null ? void 0 : conceptData[field.columnId];
|
|
5378
5612
|
if (fieldValue !== void 0 && fieldValue !== null && fieldValue !== "") {
|
|
5379
|
-
const
|
|
5613
|
+
const column2 = this._findColumnByIdInSection(field.columnId, section2);
|
|
5380
5614
|
const submissionEntry = {
|
|
5381
5615
|
conceptId: concept.id,
|
|
5382
5616
|
value: fieldValue,
|
|
@@ -5385,27 +5619,27 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5385
5619
|
}
|
|
5386
5620
|
};
|
|
5387
5621
|
if (concept.periodType === "instant") {
|
|
5388
|
-
submissionEntry.period.date = (
|
|
5622
|
+
submissionEntry.period.date = (column2 == null ? void 0 : column2.periodEndDate) || field.periodStartDate || this.periodStartDate;
|
|
5389
5623
|
} else {
|
|
5390
|
-
submissionEntry.period.startDate = (
|
|
5391
|
-
submissionEntry.period.endDate = (
|
|
5624
|
+
submissionEntry.period.startDate = (column2 == null ? void 0 : column2.periodStartDate) || field.periodStartDate || this.periodStartDate;
|
|
5625
|
+
submissionEntry.period.endDate = (column2 == null ? void 0 : column2.periodEndDate) || field.periodEndDate || this.periodEndDate;
|
|
5392
5626
|
}
|
|
5393
|
-
console.log(`🔍 [Submission] Concept: ${concept.id}, Column: ${field.columnId}, Column Period: ${(
|
|
5394
|
-
if ((
|
|
5395
|
-
submissionEntry.dimension =
|
|
5396
|
-
console.log(`🔍 [DynamicForm] Using dimension key from field's column (${field.columnId}):`,
|
|
5627
|
+
console.log(`🔍 [Submission] Concept: ${concept.id}, Column: ${field.columnId}, Column Period: ${(column2 == null ? void 0 : column2.periodStartDate) || "none"} - ${(column2 == null ? void 0 : column2.periodEndDate) || "none"}, Used Period: ${submissionEntry.period.type === "instant" ? submissionEntry.period.date : `${submissionEntry.period.startDate} - ${submissionEntry.period.endDate}`}`);
|
|
5628
|
+
if ((column2 == null ? void 0 : column2.type) === "dimension" && ((_a = column2.dimensionData) == null ? void 0 : _a.dimensionIdKey)) {
|
|
5629
|
+
submissionEntry.dimension = column2.dimensionData.dimensionIdKey;
|
|
5630
|
+
console.log(`🔍 [DynamicForm] Using dimension key from field's column (${field.columnId}):`, column2.dimensionData.dimensionIdKey);
|
|
5397
5631
|
} else {
|
|
5398
|
-
console.log(`🔍 [DynamicForm] No dimension data found for field column ${field.columnId}. Column type: ${
|
|
5632
|
+
console.log(`🔍 [DynamicForm] No dimension data found for field column ${field.columnId}. Column type: ${column2 == null ? void 0 : column2.type}, has dimensionData: ${!!(column2 == null ? void 0 : column2.dimensionData)}`);
|
|
5399
5633
|
}
|
|
5400
5634
|
if (this._typedMemberData[field.columnId]) {
|
|
5401
|
-
const applicableTypedDimensions = this._getApplicableTypedDimensions(concept,
|
|
5635
|
+
const applicableTypedDimensions = this._getApplicableTypedDimensions(concept, section2);
|
|
5402
5636
|
console.log(`🔍 [DynamicForm] Concept ${concept.id} applicable typed dimensions:`, applicableTypedDimensions);
|
|
5403
5637
|
if (applicableTypedDimensions.length > 0) {
|
|
5404
5638
|
const filteredTypedMembers = {};
|
|
5405
5639
|
const allTypedMemberData = this._typedMemberData[field.columnId];
|
|
5406
5640
|
applicableTypedDimensions.forEach((dimensionId) => {
|
|
5407
5641
|
if (allTypedMemberData[dimensionId]) {
|
|
5408
|
-
const memberName = this._getTypedMemberNameForAxis(dimensionId,
|
|
5642
|
+
const memberName = this._getTypedMemberNameForAxis(dimensionId, section2);
|
|
5409
5643
|
filteredTypedMembers[dimensionId] = {
|
|
5410
5644
|
value: allTypedMemberData[dimensionId],
|
|
5411
5645
|
memberName: memberName || "Unknown"
|
|
@@ -5423,12 +5657,12 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5423
5657
|
}
|
|
5424
5658
|
} else {
|
|
5425
5659
|
console.log(`🔍 [DynamicForm] No typed member data found for column ${field.columnId}. Available columns:`, Object.keys(this._typedMemberData));
|
|
5426
|
-
if (
|
|
5660
|
+
if (column2) {
|
|
5427
5661
|
console.log(`🔍 [DynamicForm] Column details:`, {
|
|
5428
|
-
id:
|
|
5429
|
-
type:
|
|
5430
|
-
hasTypedMembers: (_b =
|
|
5431
|
-
dimensionData:
|
|
5662
|
+
id: column2.id,
|
|
5663
|
+
type: column2.type,
|
|
5664
|
+
hasTypedMembers: (_b = column2.dimensionData) == null ? void 0 : _b.hasTypedMembers,
|
|
5665
|
+
dimensionData: column2.dimensionData
|
|
5432
5666
|
});
|
|
5433
5667
|
}
|
|
5434
5668
|
}
|
|
@@ -5440,7 +5674,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5440
5674
|
});
|
|
5441
5675
|
}
|
|
5442
5676
|
if (concept.children) {
|
|
5443
|
-
this._processConceptsForSubmission(concept.children, submissionData,
|
|
5677
|
+
this._processConceptsForSubmission(concept.children, submissionData, section2);
|
|
5444
5678
|
}
|
|
5445
5679
|
});
|
|
5446
5680
|
}
|
|
@@ -5472,32 +5706,32 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5472
5706
|
_handleSidePanelRoleClick(roleId) {
|
|
5473
5707
|
this._activeSidePanelRoleId = roleId;
|
|
5474
5708
|
}
|
|
5475
|
-
_renderAdminModeContent(
|
|
5709
|
+
_renderAdminModeContent(section2) {
|
|
5476
5710
|
var _a, _b, _c;
|
|
5477
|
-
if (!
|
|
5711
|
+
if (!section2) {
|
|
5478
5712
|
return html`
|
|
5479
5713
|
<div class="admin-mode-container">
|
|
5480
5714
|
<p>No role selected</p>
|
|
5481
5715
|
</div>
|
|
5482
5716
|
`;
|
|
5483
5717
|
}
|
|
5484
|
-
const showPreviousYearChecked = ((_a = this._adminRoleConfigs[
|
|
5485
|
-
const instantChecked = ((_b = this._adminRoleConfigs[
|
|
5486
|
-
const durationChecked = ((_c = this._adminRoleConfigs[
|
|
5487
|
-
const hasMixedPeriodTypes =
|
|
5718
|
+
const showPreviousYearChecked = ((_a = this._adminRoleConfigs[section2.id]) == null ? void 0 : _a.showPreviousYear) ?? section2.showPreviousYear ?? false;
|
|
5719
|
+
const instantChecked = ((_b = this._adminRoleConfigs[section2.id]) == null ? void 0 : _b.instant) ?? section2.instant ?? false;
|
|
5720
|
+
const durationChecked = ((_c = this._adminRoleConfigs[section2.id]) == null ? void 0 : _c.duration) ?? section2.duration ?? false;
|
|
5721
|
+
const hasMixedPeriodTypes = section2.showPeriodControl === true;
|
|
5488
5722
|
return html`
|
|
5489
5723
|
<div class="admin-mode-container">
|
|
5490
|
-
<h2 class="admin-mode-title">Role Configuration: ${
|
|
5724
|
+
<h2 class="admin-mode-title">Role Configuration: ${section2.title}</h2>
|
|
5491
5725
|
<div class="admin-roles-list">
|
|
5492
5726
|
<div class="admin-role-item">
|
|
5493
5727
|
<div class="admin-role-checkbox">
|
|
5494
5728
|
<input
|
|
5495
5729
|
type="checkbox"
|
|
5496
|
-
id="admin-prev-year-${
|
|
5730
|
+
id="admin-prev-year-${section2.id}"
|
|
5497
5731
|
.checked="${showPreviousYearChecked}"
|
|
5498
|
-
@change="${(e2) => this._handleAdminCheckboxChange(
|
|
5732
|
+
@change="${(e2) => this._handleAdminCheckboxChange(section2.id, "showPreviousYear", e2.target.checked)}"
|
|
5499
5733
|
/>
|
|
5500
|
-
<label for="admin-prev-year-${
|
|
5734
|
+
<label for="admin-prev-year-${section2.id}">Show Previous Year Column</label>
|
|
5501
5735
|
</div>
|
|
5502
5736
|
</div>
|
|
5503
5737
|
|
|
@@ -5506,11 +5740,11 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5506
5740
|
<div class="admin-role-checkbox">
|
|
5507
5741
|
<input
|
|
5508
5742
|
type="checkbox"
|
|
5509
|
-
id="admin-instant-${
|
|
5743
|
+
id="admin-instant-${section2.id}"
|
|
5510
5744
|
.checked="${instantChecked}"
|
|
5511
|
-
@change="${(e2) => this._handleAdminCheckboxChange(
|
|
5745
|
+
@change="${(e2) => this._handleAdminCheckboxChange(section2.id, "instant", e2.target.checked)}"
|
|
5512
5746
|
/>
|
|
5513
|
-
<label for="admin-instant-${
|
|
5747
|
+
<label for="admin-instant-${section2.id}">Show Instant Column</label>
|
|
5514
5748
|
</div>
|
|
5515
5749
|
</div>
|
|
5516
5750
|
|
|
@@ -5518,11 +5752,11 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5518
5752
|
<div class="admin-role-checkbox">
|
|
5519
5753
|
<input
|
|
5520
5754
|
type="checkbox"
|
|
5521
|
-
id="admin-duration-${
|
|
5755
|
+
id="admin-duration-${section2.id}"
|
|
5522
5756
|
.checked="${durationChecked}"
|
|
5523
|
-
@change="${(e2) => this._handleAdminCheckboxChange(
|
|
5757
|
+
@change="${(e2) => this._handleAdminCheckboxChange(section2.id, "duration", e2.target.checked)}"
|
|
5524
5758
|
/>
|
|
5525
|
-
<label for="admin-duration-${
|
|
5759
|
+
<label for="admin-duration-${section2.id}">Show Duration Column</label>
|
|
5526
5760
|
</div>
|
|
5527
5761
|
</div>
|
|
5528
5762
|
` : ""}
|
|
@@ -5584,7 +5818,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5584
5818
|
<!-- Validation Summary -->
|
|
5585
5819
|
${showValidationSummary ? html`
|
|
5586
5820
|
<div class="validation-summary">
|
|
5587
|
-
<h4 class="validation-summary-title"
|
|
5821
|
+
<h4 class="validation-summary-title">${I18n.t("validation.summary")}</h4>
|
|
5588
5822
|
<ul class="validation-summary-list">
|
|
5589
5823
|
${this._errors.filter((e2) => e2.severity === "error").map((error) => html`
|
|
5590
5824
|
<li class="validation-summary-item">${error.message}</li>
|
|
@@ -5594,27 +5828,27 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5594
5828
|
` : ""}
|
|
5595
5829
|
|
|
5596
5830
|
<!-- Form Sections or No Selection Message (hidden in admin mode) -->
|
|
5597
|
-
${this.mode === "admin" ? schema.sections.map((
|
|
5831
|
+
${this.mode === "admin" ? schema.sections.map((section2, index) => html`
|
|
5598
5832
|
<div class="admin-mode-placeholder">
|
|
5599
|
-
${this._renderAdminModeContent(
|
|
5833
|
+
${this._renderAdminModeContent(section2)}
|
|
5600
5834
|
</div>
|
|
5601
5835
|
`) : schema.sections.length === 0 ? html`
|
|
5602
5836
|
<div class="no-roles-message">
|
|
5603
|
-
<h3
|
|
5604
|
-
<p
|
|
5605
|
-
<p
|
|
5837
|
+
<h3>${I18n.t("form.noRoleSelected")}</h3>
|
|
5838
|
+
<p>${I18n.t("filter.selectRoles")}</p>
|
|
5839
|
+
<p>${I18n.t("filter.roles")}: ${this._allSections.length}</p>
|
|
5606
5840
|
</div>
|
|
5607
|
-
` : schema.sections.map((
|
|
5841
|
+
` : schema.sections.map((section2, index) => html`
|
|
5608
5842
|
<jupiter-form-section
|
|
5609
|
-
.section="${
|
|
5610
|
-
.columns="${
|
|
5843
|
+
.section="${section2}"
|
|
5844
|
+
.columns="${section2.columns || this._columns}"
|
|
5611
5845
|
.formData="${this._formData}"
|
|
5612
5846
|
.typedMemberData="${this._typedMemberData}"
|
|
5613
5847
|
.disabled="${this.disabled || this.readonly}"
|
|
5614
5848
|
.collapsible="${config.collapsibleSections !== false}"
|
|
5615
5849
|
.locale="${config.locale || "en-US"}"
|
|
5616
5850
|
.isFirstSection="${index === 0}"
|
|
5617
|
-
.availableDimensions="${this._getAvailableDimensionsForSection(
|
|
5851
|
+
.availableDimensions="${this._getAvailableDimensionsForSection(section2.id)}"
|
|
5618
5852
|
@field-change="${this._handleFieldChange}"
|
|
5619
5853
|
@typed-member-change="${this._handleTypedMemberChange}"
|
|
5620
5854
|
@section-expand="${this._handleSectionExpand}"
|
|
@@ -5636,12 +5870,12 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5636
5870
|
<div class="side-panel-layout">
|
|
5637
5871
|
<!-- Left: Roles List (filtered) -->
|
|
5638
5872
|
<div class="side-panel-roles-list">
|
|
5639
|
-
${visibleSections.map((
|
|
5873
|
+
${visibleSections.map((section2) => html`
|
|
5640
5874
|
<div
|
|
5641
|
-
class="side-panel-role-item ${
|
|
5642
|
-
@click="${() => this._handleSidePanelRoleClick(
|
|
5875
|
+
class="side-panel-role-item ${section2.id === this._activeSidePanelRoleId ? "active" : ""}"
|
|
5876
|
+
@click="${() => this._handleSidePanelRoleClick(section2.id)}"
|
|
5643
5877
|
>
|
|
5644
|
-
${
|
|
5878
|
+
${section2.title}
|
|
5645
5879
|
</div>
|
|
5646
5880
|
`)}
|
|
5647
5881
|
</div>
|
|
@@ -5687,8 +5921,8 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5687
5921
|
></jupiter-form-section>
|
|
5688
5922
|
` : html`
|
|
5689
5923
|
<div class="no-roles-message">
|
|
5690
|
-
<h3
|
|
5691
|
-
<p
|
|
5924
|
+
<h3>${I18n.t("form.noRoleSelected")}</h3>
|
|
5925
|
+
<p>${I18n.t("form.pleaseSelectRole")}</p>
|
|
5692
5926
|
</div>
|
|
5693
5927
|
`}
|
|
5694
5928
|
</div>
|
|
@@ -5722,7 +5956,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5722
5956
|
const showValidationSummary = config.showValidationSummary !== false && errorCount > 0 && this._submitted;
|
|
5723
5957
|
const schema = this._currentSchema;
|
|
5724
5958
|
if (!schema) {
|
|
5725
|
-
return html`<div
|
|
5959
|
+
return html`<div>${I18n.t("form.loading")}</div>`;
|
|
5726
5960
|
}
|
|
5727
5961
|
return html`
|
|
5728
5962
|
<div class="form-container">
|
|
@@ -5751,7 +5985,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5751
5985
|
<svg class="filter-icon" viewBox="0 0 24 24">
|
|
5752
5986
|
<path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
|
|
5753
5987
|
</svg>
|
|
5754
|
-
${this._selectedRoleIds.length === 0 ? "
|
|
5988
|
+
${this._selectedRoleIds.length === 0 ? I18n.t("filter.selectRoles") : I18n.t("filter.filterRoles")}
|
|
5755
5989
|
<span class="roles-count">${this._selectedRoleIds.length}/${this._allSections.length}</span>
|
|
5756
5990
|
</button>
|
|
5757
5991
|
` : ""}
|
|
@@ -5761,7 +5995,7 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5761
5995
|
@click="${this._handleSaveDraft}"
|
|
5762
5996
|
?disabled="${this.disabled || this.readonly}"
|
|
5763
5997
|
>
|
|
5764
|
-
|
|
5998
|
+
${I18n.t("form.saveDraft")}
|
|
5765
5999
|
</button>
|
|
5766
6000
|
|
|
5767
6001
|
<button
|
|
@@ -5769,13 +6003,13 @@ let JupiterDynamicForm = class extends LitElement {
|
|
|
5769
6003
|
@click="${this._handleSubmit}"
|
|
5770
6004
|
?disabled="${this.disabled || this.readonly}"
|
|
5771
6005
|
>
|
|
5772
|
-
|
|
6006
|
+
${I18n.t("form.submit")}
|
|
5773
6007
|
</button>
|
|
5774
6008
|
|
|
5775
6009
|
<div class="form-meta">
|
|
5776
|
-
<span
|
|
5777
|
-
<span
|
|
5778
|
-
<span
|
|
6010
|
+
<span>${I18n.t("form.errors")}: ${errorCount}</span>
|
|
6011
|
+
<span>${I18n.t("form.modified")}: ${this._dirty ? I18n.t("form.yes") : I18n.t("form.no")}</span>
|
|
6012
|
+
<span>${I18n.t("form.valid")}: ${this._valid ? I18n.t("form.yes") : I18n.t("form.no")}</span>
|
|
5779
6013
|
</div>
|
|
5780
6014
|
</div>
|
|
5781
6015
|
|