ixbrl-viewer 1.4.25__py3-none-any.whl → 1.4.27__py3-none-any.whl
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.
Potentially problematic release.
This version of ixbrl-viewer might be problematic. Click here for more details.
- iXBRLViewerPlugin/_version.py +2 -2
- iXBRLViewerPlugin/iXBRLViewer.py +8 -0
- iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +1 -1
- iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt +1 -1
- iXBRLViewerPlugin/viewer/src/html/inspector.html +6 -0
- iXBRLViewerPlugin/viewer/src/i18n/en/translation.json +2 -1
- iXBRLViewerPlugin/viewer/src/i18n/es/translation.json +2 -1
- iXBRLViewerPlugin/viewer/src/js/inspector.js +16 -0
- iXBRLViewerPlugin/viewer/src/js/number-matcher.js +2 -2
- iXBRLViewerPlugin/viewer/src/js/report.js +8 -0
- iXBRLViewerPlugin/viewer/src/js/report.test.js +26 -1
- iXBRLViewerPlugin/viewer/src/js/reportset.js +8 -0
- iXBRLViewerPlugin/viewer/src/js/reportset.test.js +29 -3
- iXBRLViewerPlugin/viewer/src/js/summary.js +8 -0
- iXBRLViewerPlugin/viewer/src/js/summary.test.js +50 -13
- {ixbrl_viewer-1.4.25.dist-info → ixbrl_viewer-1.4.27.dist-info}/METADATA +3 -3
- {ixbrl_viewer-1.4.25.dist-info → ixbrl_viewer-1.4.27.dist-info}/RECORD +23 -23
- tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py +5 -0
- {ixbrl_viewer-1.4.25.dist-info → ixbrl_viewer-1.4.27.dist-info}/LICENSE +0 -0
- {ixbrl_viewer-1.4.25.dist-info → ixbrl_viewer-1.4.27.dist-info}/NOTICE +0 -0
- {ixbrl_viewer-1.4.25.dist-info → ixbrl_viewer-1.4.27.dist-info}/WHEEL +0 -0
- {ixbrl_viewer-1.4.25.dist-info → ixbrl_viewer-1.4.27.dist-info}/entry_points.txt +0 -0
- {ixbrl_viewer-1.4.25.dist-info → ixbrl_viewer-1.4.27.dist-info}/top_level.txt +0 -0
|
@@ -346,6 +346,12 @@ See COPYRIGHT.md for copyright information
|
|
|
346
346
|
</div>
|
|
347
347
|
</div>
|
|
348
348
|
</div>
|
|
349
|
+
<div class="collapsible-section report-creation">
|
|
350
|
+
<h3 class="collapsible-header" data-i18n="inspector.summary.reportCreation">Report Creation</h3>
|
|
351
|
+
<div class="collapsible-body">
|
|
352
|
+
<ul></ul>
|
|
353
|
+
</div>
|
|
354
|
+
</div>
|
|
349
355
|
</div>
|
|
350
356
|
</div>
|
|
351
357
|
|
|
@@ -98,7 +98,8 @@
|
|
|
98
98
|
"other": "Other Linkbases",
|
|
99
99
|
"presentation": "Presentation Linkbases",
|
|
100
100
|
"references": "Reference Linkbases",
|
|
101
|
-
"schemas": "Schemas"
|
|
101
|
+
"schemas": "Schemas",
|
|
102
|
+
"reportCreation": "Report Creation"
|
|
102
103
|
},
|
|
103
104
|
"tag": {
|
|
104
105
|
"colDimensions": "Dimensions",
|
|
@@ -516,6 +516,7 @@ export class Inspector {
|
|
|
516
516
|
this._populateFactSummary(summaryDom);
|
|
517
517
|
this._populateTagSummary(summaryDom);
|
|
518
518
|
this._populateFileSummary(summaryDom);
|
|
519
|
+
this._populateReportCreation(summaryDom);
|
|
519
520
|
}
|
|
520
521
|
|
|
521
522
|
_populateFactSummary(summaryDom) {
|
|
@@ -616,6 +617,21 @@ export class Inspector {
|
|
|
616
617
|
}
|
|
617
618
|
};
|
|
618
619
|
|
|
620
|
+
_populateReportCreation(summaryDom) {
|
|
621
|
+
const softwareCredits = this.summary.getSoftwareCredits();
|
|
622
|
+
|
|
623
|
+
const reportCreationContent = summaryDom.find(".report-creation");
|
|
624
|
+
|
|
625
|
+
if (softwareCredits.length > 0) {
|
|
626
|
+
const ul = reportCreationContent.find('ul');
|
|
627
|
+
for (const softwareCredit of softwareCredits) {
|
|
628
|
+
ul.append($("<li></li>").text(softwareCredit));
|
|
629
|
+
}
|
|
630
|
+
} else {
|
|
631
|
+
reportCreationContent.hide();
|
|
632
|
+
}
|
|
633
|
+
};
|
|
634
|
+
|
|
619
635
|
createOutline() {
|
|
620
636
|
if (this.outline.hasOutline()) {
|
|
621
637
|
$('.outline .no-outline-overlay').hide();
|
|
@@ -47,9 +47,9 @@ const hyphen = '[-\u2014]';
|
|
|
47
47
|
|
|
48
48
|
// everything that we allow immediately before a match
|
|
49
49
|
// (201c = left double quote, 2014 = em dash, 201d = right double quote)
|
|
50
|
-
const begin_guard = '(?:^|(?<=(?:[/\u201c\u2014(]|' + one_ws + '|' + hyphen + ')))';
|
|
50
|
+
const begin_guard = '(?:^|(?<=(?:[/\u201c\u2014([]|' + one_ws + '|' + hyphen + ')))';
|
|
51
51
|
// everything that we allow immediately after a match
|
|
52
|
-
const end_guard = '(?:$|(?=(?:[/,.:;\u201d\u2014)]|' + one_ws + '|' + hyphen + ')))';
|
|
52
|
+
const end_guard = '(?:$|(?=(?:[/,.:;\u201d\u2014)\\]]|' + one_ws + '|' + hyphen + ')))';
|
|
53
53
|
|
|
54
54
|
const ordinal_suffix = '(?:st|nd|rd|th)';
|
|
55
55
|
const day = '[123]?\\d' + ordinal_suffix + '?';
|
|
@@ -266,4 +266,12 @@ export class XBRLReport {
|
|
|
266
266
|
}
|
|
267
267
|
return this._calculationSummations.has(c);
|
|
268
268
|
}
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* @return {Array[String]} Software credit text labels provided with this report for display purposes.
|
|
273
|
+
*/
|
|
274
|
+
softwareCredits() {
|
|
275
|
+
return this._reportData.softwareCredits ?? [];
|
|
276
|
+
}
|
|
269
277
|
}
|
|
@@ -62,7 +62,9 @@ var testReportData = {
|
|
|
62
62
|
"p": "2018-01-01/2019-01-01",
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
}
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
"softwareCredits": ["Example credit text A", "Example credit text B"],
|
|
66
68
|
};
|
|
67
69
|
|
|
68
70
|
|
|
@@ -144,3 +146,26 @@ describe("ELR labels", () => {
|
|
|
144
146
|
});
|
|
145
147
|
|
|
146
148
|
});
|
|
149
|
+
|
|
150
|
+
describe("Fetching software credit", () => {
|
|
151
|
+
|
|
152
|
+
test("Successful", () => {
|
|
153
|
+
const testReportSet = new ReportSet(testReportData);
|
|
154
|
+
testReportSet._initialize();
|
|
155
|
+
const report = testReportSet.reports[0];
|
|
156
|
+
|
|
157
|
+
const softwareCredits = report.softwareCredits();
|
|
158
|
+
expect(softwareCredits).toEqual(["Example credit text A", "Example credit text B"]);
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
test("Unset", () => {
|
|
162
|
+
let alternateData = JSON.parse(JSON.stringify(testReportData));
|
|
163
|
+
delete alternateData.softwareCredits;
|
|
164
|
+
const testReportSet = new ReportSet(alternateData);
|
|
165
|
+
testReportSet._initialize();
|
|
166
|
+
const report = testReportSet.reports[0];
|
|
167
|
+
|
|
168
|
+
const softwareCredits = report.softwareCredits();
|
|
169
|
+
expect(softwareCredits).toEqual([]);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
@@ -117,6 +117,14 @@ export class ReportSet {
|
|
|
117
117
|
return this._usedPrefixes;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
+
/**
|
|
121
|
+
* @return {Array[String]} Sorted list of unique software credit text values
|
|
122
|
+
*/
|
|
123
|
+
getSoftwareCredits() {
|
|
124
|
+
let softwareCredits = new Set(this.reports.flatMap(r => r.softwareCredits()));
|
|
125
|
+
return Array.from(softwareCredits).sort();
|
|
126
|
+
}
|
|
127
|
+
|
|
120
128
|
getTargetDocuments() {
|
|
121
129
|
if (this._targetDocuments === undefined) {
|
|
122
130
|
this._targetDocuments = new Set(Object.values(this._items)
|
|
@@ -73,7 +73,10 @@ function multiReportTestData(withAnchoring) {
|
|
|
73
73
|
"facts": {
|
|
74
74
|
...createNumericFact("f1", "eg:Concept1", "iso2417:USD", "2018-01-01/2019-01-01", 1000, -3),
|
|
75
75
|
...createNumericFact("f2", "eg:Concept2", "iso2417:USD", "2018-01-01/2019-01-01", 1000, -3),
|
|
76
|
-
}
|
|
76
|
+
},
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
"softwareCredits": ["Example credit text C", "Example credit text B"],
|
|
77
80
|
},
|
|
78
81
|
]
|
|
79
82
|
},
|
|
@@ -112,7 +115,9 @@ function multiReportTestData(withAnchoring) {
|
|
|
112
115
|
|
|
113
116
|
"rels": {
|
|
114
117
|
...anchoringRelationShips(withAnchoring)
|
|
115
|
-
}
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
"softwareCredits": ["Example credit text A"],
|
|
116
121
|
}
|
|
117
122
|
]
|
|
118
123
|
}
|
|
@@ -165,7 +170,9 @@ function singleReportTestData() {
|
|
|
165
170
|
"facts": {
|
|
166
171
|
...createNumericFact("f1", "eg:Concept1", "iso2417:USD", "2018-01-01/2019-01-01", 1000, -3),
|
|
167
172
|
...createNumericFact("f2", "eg:Concept2", "iso2417:USD", "2018-01-01/2019-01-01", 1000, -3),
|
|
168
|
-
}
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
"softwareCredits": ["Example credit text"],
|
|
169
176
|
};
|
|
170
177
|
}
|
|
171
178
|
|
|
@@ -329,3 +336,22 @@ describe("ELR labels", () => {
|
|
|
329
336
|
expect(testReportSet.reports[0].getRoleLabel("role1")).toBe("Role 1 Label");
|
|
330
337
|
});
|
|
331
338
|
});
|
|
339
|
+
|
|
340
|
+
describe("Fetching software credit", () => {
|
|
341
|
+
|
|
342
|
+
test("Single", () => {
|
|
343
|
+
const testReportSet = new ReportSet(singleReportTestData());
|
|
344
|
+
testReportSet._initialize();
|
|
345
|
+
|
|
346
|
+
const softwareCredits = testReportSet.getSoftwareCredits();
|
|
347
|
+
expect(softwareCredits).toEqual(["Example credit text"]);
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
test("Multiple", () => {
|
|
351
|
+
const testReportSet = new ReportSet(multiReportTestData(true));
|
|
352
|
+
testReportSet._initialize();
|
|
353
|
+
|
|
354
|
+
const softwareCredits = testReportSet.getSoftwareCredits();
|
|
355
|
+
expect(softwareCredits).toEqual(["Example credit text A", "Example credit text B", "Example credit text C"]);
|
|
356
|
+
});
|
|
357
|
+
});
|
|
@@ -138,4 +138,12 @@ export class DocumentSummary {
|
|
|
138
138
|
}
|
|
139
139
|
return this._localFileSummary.getDocuments()
|
|
140
140
|
}
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @return {Array[String]} Report set's list of software credit text values.
|
|
145
|
+
*/
|
|
146
|
+
getSoftwareCredits() {
|
|
147
|
+
return this._reportSet.getSoftwareCredits();
|
|
148
|
+
}
|
|
141
149
|
}
|
|
@@ -17,16 +17,17 @@ function testFact(conceptName, dimensions) {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
function testReportSet(concepts, facts, documents) {
|
|
20
|
+
function testReportSet(concepts, facts, documents, softwareCredits) {
|
|
21
21
|
const report = {
|
|
22
22
|
getConcept: conceptName => concepts[conceptName],
|
|
23
|
-
localDocuments: () => documents
|
|
23
|
+
localDocuments: () => documents,
|
|
24
24
|
}
|
|
25
25
|
for (const f of facts) {
|
|
26
26
|
f.report = report;
|
|
27
27
|
}
|
|
28
28
|
return {
|
|
29
29
|
facts: () => facts,
|
|
30
|
+
getSoftwareCredits: () => softwareCredits,
|
|
30
31
|
reports: [ report ]
|
|
31
32
|
}
|
|
32
33
|
}
|
|
@@ -34,7 +35,7 @@ function testReportSet(concepts, facts, documents) {
|
|
|
34
35
|
describe("Facts summary", () => {
|
|
35
36
|
|
|
36
37
|
test("no facts", () => {
|
|
37
|
-
const reportSet = testReportSet({}, [], {});
|
|
38
|
+
const reportSet = testReportSet({}, [], {}, []);
|
|
38
39
|
const summary = new DocumentSummary(reportSet);
|
|
39
40
|
|
|
40
41
|
expect(summary.totalFacts()).toBe(0);
|
|
@@ -43,9 +44,9 @@ describe("Facts summary", () => {
|
|
|
43
44
|
test("multiple facts", () => {
|
|
44
45
|
const facts = [];
|
|
45
46
|
for (let i = 0; i < 10; i++) {
|
|
46
|
-
facts.push(testFact("eg:Concept1", {}));
|
|
47
|
+
facts.push(testFact("eg:Concept1", {}, []));
|
|
47
48
|
}
|
|
48
|
-
const reportSet = testReportSet({}, facts, {});
|
|
49
|
+
const reportSet = testReportSet({}, facts, {}, []);
|
|
49
50
|
const summary = new DocumentSummary(reportSet);
|
|
50
51
|
|
|
51
52
|
expect(summary.totalFacts()).toBe(10);
|
|
@@ -55,7 +56,7 @@ describe("Facts summary", () => {
|
|
|
55
56
|
const conceptName = "eg:Concept1";
|
|
56
57
|
const fact1 = testFact(conceptName, {});
|
|
57
58
|
const fact2 = testFact(conceptName, {});
|
|
58
|
-
const reportSet = testReportSet({}, [fact1, fact2], {});
|
|
59
|
+
const reportSet = testReportSet({}, [fact1, fact2], {}, []);
|
|
59
60
|
const summary = new DocumentSummary(reportSet);
|
|
60
61
|
|
|
61
62
|
expect(summary.totalFacts()).toBe(2);
|
|
@@ -66,7 +67,7 @@ describe("Facts summary", () => {
|
|
|
66
67
|
describe("Tags summary", () => {
|
|
67
68
|
|
|
68
69
|
test("no tags", () => {
|
|
69
|
-
const reportSet = testReportSet({}, [], {})
|
|
70
|
+
const reportSet = testReportSet({}, [], {}, [])
|
|
70
71
|
const summary = new DocumentSummary(reportSet);
|
|
71
72
|
|
|
72
73
|
expect(summary.tagCounts()).toEqual(new Map());
|
|
@@ -76,7 +77,7 @@ describe("Tags summary", () => {
|
|
|
76
77
|
const fact1 = testFact("eg:Concept1", {});
|
|
77
78
|
const fact2 = testFact("eg:Concept2", {});
|
|
78
79
|
const fact3 = testFact("xz:Concept1", {});
|
|
79
|
-
const reportSet = testReportSet({}, [fact1, fact2, fact3], {})
|
|
80
|
+
const reportSet = testReportSet({}, [fact1, fact2, fact3], {}, [])
|
|
80
81
|
const summary = new DocumentSummary(reportSet);
|
|
81
82
|
|
|
82
83
|
expect(Object.fromEntries(summary.tagCounts())).toEqual({
|
|
@@ -105,7 +106,7 @@ describe("Tags summary", () => {
|
|
|
105
106
|
const concepts = {
|
|
106
107
|
[dimension]: testConcept(),
|
|
107
108
|
}
|
|
108
|
-
const reportSet = testReportSet(concepts, [fact], {})
|
|
109
|
+
const reportSet = testReportSet(concepts, [fact], {}, [])
|
|
109
110
|
const summary = new DocumentSummary(reportSet);
|
|
110
111
|
|
|
111
112
|
expect(Object.fromEntries(summary.tagCounts())).toEqual({
|
|
@@ -135,7 +136,7 @@ describe("Tags summary", () => {
|
|
|
135
136
|
[dimension2]: testConcept(),
|
|
136
137
|
[dimension3]: testConcept(),
|
|
137
138
|
}
|
|
138
|
-
const reportSet = testReportSet(concepts, [fact], {})
|
|
139
|
+
const reportSet = testReportSet(concepts, [fact], {}, [])
|
|
139
140
|
const summary = new DocumentSummary(reportSet);
|
|
140
141
|
|
|
141
142
|
expect(Object.fromEntries(summary.tagCounts())).toEqual({
|
|
@@ -176,7 +177,7 @@ describe("Tags summary", () => {
|
|
|
176
177
|
const concepts = {
|
|
177
178
|
[dimension]: testConcept(typedDomain),
|
|
178
179
|
}
|
|
179
|
-
const reportSet = testReportSet(concepts, [fact], {})
|
|
180
|
+
const reportSet = testReportSet(concepts, [fact], {}, [])
|
|
180
181
|
const summary = new DocumentSummary(reportSet);
|
|
181
182
|
|
|
182
183
|
expect(Object.fromEntries(summary.tagCounts())).toEqual({
|
|
@@ -200,7 +201,7 @@ describe("Files summary", () => {
|
|
|
200
201
|
|
|
201
202
|
test("no files", () => {
|
|
202
203
|
const documentData = {}
|
|
203
|
-
const reportSet = testReportSet({}, [], documentData);
|
|
204
|
+
const reportSet = testReportSet({}, [], documentData, []);
|
|
204
205
|
const summary = new DocumentSummary(reportSet);
|
|
205
206
|
|
|
206
207
|
expect(summary.getLocalDocuments()).toEqual({
|
|
@@ -228,7 +229,7 @@ describe("Files summary", () => {
|
|
|
228
229
|
'labelLinkbase.xml': ['labelLinkbase'],
|
|
229
230
|
'unrecognizedLinkbase.xml': ['unrecognizedLinkbase'],
|
|
230
231
|
}
|
|
231
|
-
const reportSet = testReportSet({}, [], documentData);
|
|
232
|
+
const reportSet = testReportSet({}, [], documentData, []);
|
|
232
233
|
const summary = new DocumentSummary(reportSet);
|
|
233
234
|
|
|
234
235
|
expect(summary.getLocalDocuments()).toEqual({
|
|
@@ -243,3 +244,39 @@ describe("Files summary", () => {
|
|
|
243
244
|
});
|
|
244
245
|
});
|
|
245
246
|
});
|
|
247
|
+
|
|
248
|
+
describe("Software credit", () => {
|
|
249
|
+
|
|
250
|
+
test("no credits", () => {
|
|
251
|
+
const softwareCredits = []
|
|
252
|
+
const documentData = {}
|
|
253
|
+
const reportSet = testReportSet({}, [], documentData, softwareCredits);
|
|
254
|
+
const summary = new DocumentSummary(reportSet);
|
|
255
|
+
|
|
256
|
+
expect(summary.getSoftwareCredits()).toEqual([]);
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
test("one credit", () => {
|
|
260
|
+
const softwareCredits = ["Example credit text"]
|
|
261
|
+
const documentData = {}
|
|
262
|
+
const reportSet = testReportSet({}, [], documentData, softwareCredits);
|
|
263
|
+
const summary = new DocumentSummary(reportSet);
|
|
264
|
+
|
|
265
|
+
expect(summary.getSoftwareCredits()).toEqual(["Example credit text"]);
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
test("multiple credits", () => {
|
|
269
|
+
const softwareCredits = [
|
|
270
|
+
"Example credit text A",
|
|
271
|
+
"Example credit text B",
|
|
272
|
+
]
|
|
273
|
+
const documentData = {}
|
|
274
|
+
const reportSet = testReportSet({}, [], documentData, softwareCredits);
|
|
275
|
+
const summary = new DocumentSummary(reportSet);
|
|
276
|
+
|
|
277
|
+
expect(summary.getSoftwareCredits()).toEqual([
|
|
278
|
+
"Example credit text A",
|
|
279
|
+
"Example credit text B",
|
|
280
|
+
]);
|
|
281
|
+
});
|
|
282
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ixbrl-viewer
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.27
|
|
4
4
|
Summary: The Arelle iXBRL Viewer allows iXBRL reports to be viewed interactively in a web browser.
|
|
5
5
|
Author-email: "arelle.org" <support@arelle.org>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -37,8 +37,8 @@ Provides-Extra: dev
|
|
|
37
37
|
Requires-Dist: flake8 ==7.0.0 ; extra == 'dev'
|
|
38
38
|
Requires-Dist: lxml-stubs ==0.5.1 ; extra == 'dev'
|
|
39
39
|
Requires-Dist: mypy ==1.10.0 ; extra == 'dev'
|
|
40
|
-
Requires-Dist: pytest ==8.
|
|
41
|
-
Requires-Dist: typing-extensions ==4.
|
|
40
|
+
Requires-Dist: pytest ==8.2.1 ; extra == 'dev'
|
|
41
|
+
Requires-Dist: typing-extensions ==4.12.0 ; extra == 'dev'
|
|
42
42
|
|
|
43
43
|
# Arelle iXBRL Viewer
|
|
44
44
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
iXBRLViewerPlugin/__init__.py,sha256=11uzkyzBvzgrFDf5EKwBZZ70iZER9LBCY7-6Eu3kXFM,15808
|
|
2
|
-
iXBRLViewerPlugin/_version.py,sha256=
|
|
2
|
+
iXBRLViewerPlugin/_version.py,sha256=LwcEbNvZsTT24wA7995N84ijcp0vNimpbRtzUcgeukc,413
|
|
3
3
|
iXBRLViewerPlugin/constants.py,sha256=gXwZxPp5PJETC-sOvLxOToSe5pIjmQv2WMhZMNoPpKw,1062
|
|
4
4
|
iXBRLViewerPlugin/featureConfig.py,sha256=tOViPYmN32i2uIf_T9HGgbkkv41VoTpTjqhn4w9rTgw,194
|
|
5
|
-
iXBRLViewerPlugin/iXBRLViewer.py,sha256=
|
|
5
|
+
iXBRLViewerPlugin/iXBRLViewer.py,sha256=7imzjiyaTMxqFuI-TcGu3nzo7JQvIvHIsJ9XMZ-BIW0,27825
|
|
6
6
|
iXBRLViewerPlugin/stubviewer.html,sha256=hc5BeIR7y3ojGRux_Hy5oqEAHdlQ34kk3lL5eH-B4AU,158
|
|
7
7
|
iXBRLViewerPlugin/ui.py,sha256=OismWQzm_T16j-6O8cfGZ7qLMKIMIA36rRlb9mbOOh0,10512
|
|
8
8
|
iXBRLViewerPlugin/xhtmlserialize.py,sha256=2fV88KD5XOXqDzYaQgovbvuUQINF0n6E-6Nw174zniY,6771
|
|
@@ -11,17 +11,17 @@ iXBRLViewerPlugin/viewer/version.js,sha256=7b5si8UmaS7QqALQIP-wJ0I8onKFox8VyaAiU
|
|
|
11
11
|
iXBRLViewerPlugin/viewer/webpack.common.js,sha256=hpXufjShXAESQh8Ds7ViJ_tbr8XSb7EdqQLRvyu_mQg,1691
|
|
12
12
|
iXBRLViewerPlugin/viewer/webpack.dev.js,sha256=R9AwY_TBrg9otvXpDxT1UsGg5eMqi4aXW7C7EIsHzZk,551
|
|
13
13
|
iXBRLViewerPlugin/viewer/webpack.prod.js,sha256=vfLowWC1EOty0zbq9P-usGaJ3w-JoERpJrYaE9MfoSE,499
|
|
14
|
-
iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js,sha256=
|
|
15
|
-
iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt,sha256=
|
|
14
|
+
iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js,sha256=U_rn00xChPC2NiwFKDFWdGLNgzu6EghAAL0YUwo3AmA,800179
|
|
15
|
+
iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt,sha256=2bD4VShd311WquXvtJNpD0aHN3ru67ZeolE1OxkV5Ys,1832
|
|
16
16
|
iXBRLViewerPlugin/viewer/src/html/fact-details.html,sha256=P9BJw1OK4nIYfoT4KPwW1WP94ZeD7v1nisvSKMeSnU8,1495
|
|
17
17
|
iXBRLViewerPlugin/viewer/src/html/footnote-details.html,sha256=9I7y0KM7xsPzbiZheuHkm1k4nHNXD8S9qxvD_Y0I1Us,278
|
|
18
|
-
iXBRLViewerPlugin/viewer/src/html/inspector.html,sha256=
|
|
18
|
+
iXBRLViewerPlugin/viewer/src/html/inspector.html,sha256=Uze8Y_uSeeYqz_eMNkABc2VP2yRvlfIdg8Zo-kOfTTo,20062
|
|
19
19
|
iXBRLViewerPlugin/viewer/src/i18n/en/currencies.json,sha256=p2vXnQcaRWX3tDY8E52AaIeKhbmcNNhPfTBHlL5AL_U,315
|
|
20
20
|
iXBRLViewerPlugin/viewer/src/i18n/en/referenceparts.json,sha256=rp0p7aWt0U2Ny3ai_fadZhdV-LWx-9-tgKWQmggoewM,207
|
|
21
|
-
iXBRLViewerPlugin/viewer/src/i18n/en/translation.json,sha256=
|
|
21
|
+
iXBRLViewerPlugin/viewer/src/i18n/en/translation.json,sha256=g7PNlozn0xVXN8bg_JGAaXjy6lyae8nzSPGpBR79B0A,4915
|
|
22
22
|
iXBRLViewerPlugin/viewer/src/i18n/es/currencies.json,sha256=YzzYkYpUAgYFBDROUosaxoVbft5zPXKJ4zI9Zb2nsqQ,171
|
|
23
23
|
iXBRLViewerPlugin/viewer/src/i18n/es/referenceparts.json,sha256=X6l9IS1w9LSItMaS14q9gqDIu1jaeHthuhOogaBLRTI,237
|
|
24
|
-
iXBRLViewerPlugin/viewer/src/i18n/es/translation.json,sha256=
|
|
24
|
+
iXBRLViewerPlugin/viewer/src/i18n/es/translation.json,sha256=PtjbAS002o6kb2eKlyV5K3UeTs0LPgIfDb0WkldI0_A,4177
|
|
25
25
|
iXBRLViewerPlugin/viewer/src/icons/arrow-down.svg,sha256=FjlACizI1NEMLQMyeVSfwsnP1t63HnGBQhmiFLgqDCI,403
|
|
26
26
|
iXBRLViewerPlugin/viewer/src/icons/arrow-up.svg,sha256=-1ZLPAkpGUH4btofeJ_YLyw04dzoWNi_QAm6LK6yYh8,403
|
|
27
27
|
iXBRLViewerPlugin/viewer/src/icons/calculator.svg,sha256=W86RLdi2jge2dvL1LciTYXBTymaZZEE_IoIzspVjcVI,1543
|
|
@@ -77,7 +77,7 @@ iXBRLViewerPlugin/viewer/src/js/footnote.js,sha256=jZreicIBPAtBjbpoRbLnkSs8fHdCY
|
|
|
77
77
|
iXBRLViewerPlugin/viewer/src/js/identifiers.js,sha256=gcGitF1CfiyiUvzWDG6INnFDIBi5jXdBgiqCB8Ip0YE,2260
|
|
78
78
|
iXBRLViewerPlugin/viewer/src/js/identifiers.test.js,sha256=eu2TkHVpuRItIyNdNAuoITnpGFwwAicqMynf0dFreRk,2112
|
|
79
79
|
iXBRLViewerPlugin/viewer/src/js/index.js,sha256=SdxunWx8kNw0-vwwnr58-ac1-eQIE1__Ll7ekNNK79E,232
|
|
80
|
-
iXBRLViewerPlugin/viewer/src/js/inspector.js,sha256=
|
|
80
|
+
iXBRLViewerPlugin/viewer/src/js/inspector.js,sha256=c7s1kMxGbcRIl2LQEzYwV478efbWrMZBFp7c_As7g-A,50423
|
|
81
81
|
iXBRLViewerPlugin/viewer/src/js/inspector.test.js,sha256=AQjbwTllw_dZfovCfjfHWtt0kdjzDnoXw-mQ0IrHKWk,10086
|
|
82
82
|
iXBRLViewerPlugin/viewer/src/js/interval.js,sha256=ZEIbH4uwTIvF1jmulEWnJI5ZD1AamgKtkyplOwlcrv0,1889
|
|
83
83
|
iXBRLViewerPlugin/viewer/src/js/interval.test.js,sha256=pLbukwlcS38ycDJaNYV_9pAca7wiprunXHqD4TkHEi8,4577
|
|
@@ -88,21 +88,21 @@ iXBRLViewerPlugin/viewer/src/js/menu.js,sha256=NO8GeMWZTi0ftZb54i2Kn0s3g4B4lpbDt
|
|
|
88
88
|
iXBRLViewerPlugin/viewer/src/js/messagebox.js,sha256=p9W10KslmfxWtdSA0cNJBaoAiAHHqXicAXG8JT9ljdg,1435
|
|
89
89
|
iXBRLViewerPlugin/viewer/src/js/moment-jest.js,sha256=ARWtMMXf_WelYJ4NksOsFLwsKrqsPrXb5Sqfn1NNCWI,1481
|
|
90
90
|
iXBRLViewerPlugin/viewer/src/js/number-matcher-preprocess.test.js,sha256=0DaUAwIvcpf_sBGmqileotZo9lj1xEAUwhmiNyYj_3s,3939
|
|
91
|
-
iXBRLViewerPlugin/viewer/src/js/number-matcher.js,sha256=
|
|
91
|
+
iXBRLViewerPlugin/viewer/src/js/number-matcher.js,sha256=S8t1yagSyGeNwgITFOSY1Fhsj1tHr8HLtuwgzGlvtPE,6137
|
|
92
92
|
iXBRLViewerPlugin/viewer/src/js/number-matcher.test.js,sha256=mNgnB46-p7NxWa6aQvI83GRDupxncvGeDb59KuI8CMM,4059
|
|
93
93
|
iXBRLViewerPlugin/viewer/src/js/outline.js,sha256=KvU9m1jTpQXNshRAcIe3cj8Fc0qoE-bcfxDZmwr2oUQ,6570
|
|
94
94
|
iXBRLViewerPlugin/viewer/src/js/outline.test.js,sha256=PaUzfy675G04YcjY8CcFDLCWi87Xx2hjqh1pogdetYY,13661
|
|
95
95
|
iXBRLViewerPlugin/viewer/src/js/period.js,sha256=qTSLapuLwK_Rky0cNZ16ms0o04xSVH_vUBAGdJ8Cx4s,2238
|
|
96
96
|
iXBRLViewerPlugin/viewer/src/js/period.test.js,sha256=nMamproI2VukUnO0wm3SKQA_rnjwNkwkzyn4uhke0kc,5417
|
|
97
97
|
iXBRLViewerPlugin/viewer/src/js/qname.js,sha256=6MqMBbgziuPPNHKS3UUGyYIgHWygaAIf0mcpK95hwT8,282
|
|
98
|
-
iXBRLViewerPlugin/viewer/src/js/report.js,sha256=
|
|
99
|
-
iXBRLViewerPlugin/viewer/src/js/report.test.js,sha256=
|
|
100
|
-
iXBRLViewerPlugin/viewer/src/js/reportset.js,sha256=
|
|
101
|
-
iXBRLViewerPlugin/viewer/src/js/reportset.test.js,sha256=
|
|
98
|
+
iXBRLViewerPlugin/viewer/src/js/report.js,sha256=C-lsR1knIwnLqdpdLsIKrZRVnLnlqD1qlUTZoUDvI8s,8834
|
|
99
|
+
iXBRLViewerPlugin/viewer/src/js/report.test.js,sha256=a8ExsmypDvqNx1J2vNEUqVcw0YjKyVS8Yfb_ERLXjtA,5687
|
|
100
|
+
iXBRLViewerPlugin/viewer/src/js/reportset.js,sha256=ao77URkMRxFlQGDIcWw4gNo1xrZKMXdSoaF3-kE2x0I,8320
|
|
101
|
+
iXBRLViewerPlugin/viewer/src/js/reportset.test.js,sha256=qEBoOxDt1CX4uAFmo55FI4ps-KihlstbgqFYyLjMT7w,12881
|
|
102
102
|
iXBRLViewerPlugin/viewer/src/js/search.js,sha256=xbxLAPrRVgHFHb0CmgfY9X_X5L0LoDrTYHfvNQS-e7I,5683
|
|
103
103
|
iXBRLViewerPlugin/viewer/src/js/search.test.js,sha256=Z1op3e8nUjDzry3lNfcq6LXs_gKUk-UiGkm8iJTUIAc,25436
|
|
104
|
-
iXBRLViewerPlugin/viewer/src/js/summary.js,sha256=
|
|
105
|
-
iXBRLViewerPlugin/viewer/src/js/summary.test.js,sha256=-
|
|
104
|
+
iXBRLViewerPlugin/viewer/src/js/summary.js,sha256=RrMm5FmJ9HOM_RbI3cQncOgmgPZ3lWwFQ-ganqkkL64,4622
|
|
105
|
+
iXBRLViewerPlugin/viewer/src/js/summary.test.js,sha256=-3QtRfb3kMy7ivuP-S30hco31bEvzTl0S53bRXY9pAo,8613
|
|
106
106
|
iXBRLViewerPlugin/viewer/src/js/tableExport.js,sha256=zj-sgC8yOTnMONik-9A9ezY_z32DAJmSKnDVoLZtfCY,9640
|
|
107
107
|
iXBRLViewerPlugin/viewer/src/js/test-utils.js,sha256=MXhrubSf0PmSRsrDrqHftPgTrK5PioroXN-FlU4HcN8,1680
|
|
108
108
|
iXBRLViewerPlugin/viewer/src/js/textblockviewer.js,sha256=lCAZeN_wrSwmYie_rwdeIFCIjiOSblT0K9Vslqwktc8,1874
|
|
@@ -154,12 +154,12 @@ tests/puppeteer/tools/generate.sh,sha256=jZ1Jac6KsuRo2nHuA2B9g9mZqr7tLjPJKJAUf0o
|
|
|
154
154
|
tests/unit_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
155
155
|
tests/unit_tests/iXBRLViewerPlugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
156
156
|
tests/unit_tests/iXBRLViewerPlugin/mock_arelle.py,sha256=fQKJGwceaEVaxvqV9tyuvT6DJB5s1X3-oSMjbFMKlS8,1301
|
|
157
|
-
tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py,sha256=
|
|
157
|
+
tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py,sha256=1Q4O_1SzJaDjouRbkgn2PGFsWfJ4_lK-zzsgV9iXXF0,31725
|
|
158
158
|
tests/unit_tests/iXBRLViewerPlugin/test_xhtmlserialize.py,sha256=kdrg4i-YXnYAGl9TLWEACPQF0V69OAMXdXLYJwefsH0,12521
|
|
159
|
-
ixbrl_viewer-1.4.
|
|
160
|
-
ixbrl_viewer-1.4.
|
|
161
|
-
ixbrl_viewer-1.4.
|
|
162
|
-
ixbrl_viewer-1.4.
|
|
163
|
-
ixbrl_viewer-1.4.
|
|
164
|
-
ixbrl_viewer-1.4.
|
|
165
|
-
ixbrl_viewer-1.4.
|
|
159
|
+
ixbrl_viewer-1.4.27.dist-info/LICENSE,sha256=TZJhu77S_2-WQcPAkuIAlQiuuiNqVcuHBjd7z3Y5S08,16645
|
|
160
|
+
ixbrl_viewer-1.4.27.dist-info/METADATA,sha256=BZahbHtuESQy03kD8NeipnO6OyaBCnv6cOrbAZ3aFH0,14716
|
|
161
|
+
ixbrl_viewer-1.4.27.dist-info/NOTICE,sha256=-SHDY0OY7s4gm4Rdk5AB3nbnUsrdHEHPdJuGFR_vuM4,566
|
|
162
|
+
ixbrl_viewer-1.4.27.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
163
|
+
ixbrl_viewer-1.4.27.dist-info/entry_points.txt,sha256=2XUzP20WGwxdvnugdBybUBwAB3xf_zvrOR5W_smFz_4,65
|
|
164
|
+
ixbrl_viewer-1.4.27.dist-info/top_level.txt,sha256=h8MkrMhC_t2-KbfS1oxJVnFAbn5NZJH8END_BL40mv8,24
|
|
165
|
+
ixbrl_viewer-1.4.27.dist-info/RECORD,,
|
|
@@ -296,6 +296,9 @@ class TestIXBRLViewer:
|
|
|
296
296
|
format='format'
|
|
297
297
|
)
|
|
298
298
|
|
|
299
|
+
def creationSoftwareMatches_effect(text):
|
|
300
|
+
return ["Example Software Name"]
|
|
301
|
+
|
|
299
302
|
def fromModelObjects_effect(concept):
|
|
300
303
|
return []
|
|
301
304
|
|
|
@@ -372,6 +375,7 @@ class TestIXBRLViewer:
|
|
|
372
375
|
|
|
373
376
|
def urlDocEntry(path, docType, linkQName=None):
|
|
374
377
|
return path, Mock(
|
|
378
|
+
creationSoftwareMatches=creationSoftwareMatches_effect,
|
|
375
379
|
type=docType,
|
|
376
380
|
basename=os.path.basename(path),
|
|
377
381
|
xmlRootElement=Mock(
|
|
@@ -523,6 +527,7 @@ class TestIXBRLViewer:
|
|
|
523
527
|
errors = jsdata["validation"]
|
|
524
528
|
assert errors == [{"sev": "ERROR", "msg": "Error message", "code": "code1" }]
|
|
525
529
|
assert set(jsdata["sourceReports"][0]["targetReports"][0]["facts"]) == {"fact_id1", "fact_typed_dimension", "fact_dimension_missing_member"}
|
|
530
|
+
assert jsdata["sourceReports"][0]["targetReports"][0]["softwareCredits"] == ["Example Software Name"]
|
|
526
531
|
|
|
527
532
|
@patch('arelle.XbrlConst.conceptLabel', 'http://www.xbrl.org/2003/arcrole/concept-label')
|
|
528
533
|
@patch('arelle.XbrlConst.conceptReference', 'http://www.xbrl.org/2003/arcrole/concept-reference')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|