ixbrl-viewer 1.4.9__py3-none-any.whl → 1.4.11__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 +47 -52
- iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +1 -1
- iXBRLViewerPlugin/viewer/src/html/inspector.html +2 -2
- iXBRLViewerPlugin/viewer/src/i18n/en/translation.json +1 -1
- iXBRLViewerPlugin/viewer/src/i18n/es/translation.json +1 -1
- iXBRLViewerPlugin/viewer/src/js/aspect.js +1 -1
- iXBRLViewerPlugin/viewer/src/js/aspect.test.js +2 -1
- iXBRLViewerPlugin/viewer/src/js/chart.js +1 -1
- iXBRLViewerPlugin/viewer/src/js/chart.test.js +2 -2
- iXBRLViewerPlugin/viewer/src/js/concept.test.js +2 -2
- iXBRLViewerPlugin/viewer/src/js/fact.js +11 -24
- iXBRLViewerPlugin/viewer/src/js/fact.test.js +6 -11
- iXBRLViewerPlugin/viewer/src/js/factset.test.js +2 -4
- iXBRLViewerPlugin/viewer/src/js/inspector.js +3 -3
- iXBRLViewerPlugin/viewer/src/js/inspector.test.js +2 -3
- iXBRLViewerPlugin/viewer/src/js/outline.test.js +3 -3
- iXBRLViewerPlugin/viewer/src/js/report.js +7 -3
- iXBRLViewerPlugin/viewer/src/js/report.test.js +2 -1
- iXBRLViewerPlugin/viewer/src/js/reportset.test.js +3 -3
- iXBRLViewerPlugin/viewer/src/js/unit.js +15 -33
- iXBRLViewerPlugin/viewer/src/js/unit.test.js +17 -24
- iXBRLViewerPlugin/viewer/src/js/util.js +21 -0
- iXBRLViewerPlugin/viewer/src/js/viewer.js +58 -53
- {ixbrl_viewer-1.4.9.dist-info → ixbrl_viewer-1.4.11.dist-info}/METADATA +8 -4
- {ixbrl_viewer-1.4.9.dist-info → ixbrl_viewer-1.4.11.dist-info}/RECORD +32 -32
- tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py +17 -12
- {ixbrl_viewer-1.4.9.dist-info → ixbrl_viewer-1.4.11.dist-info}/LICENSE +0 -0
- {ixbrl_viewer-1.4.9.dist-info → ixbrl_viewer-1.4.11.dist-info}/NOTICE +0 -0
- {ixbrl_viewer-1.4.9.dist-info → ixbrl_viewer-1.4.11.dist-info}/WHEEL +0 -0
- {ixbrl_viewer-1.4.9.dist-info → ixbrl_viewer-1.4.11.dist-info}/entry_points.txt +0 -0
- {ixbrl_viewer-1.4.9.dist-info → ixbrl_viewer-1.4.11.dist-info}/top_level.txt +0 -0
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
import $ from 'jquery'
|
|
4
4
|
import { numberMatchSearch, fullDateMatch } from './number-matcher.js'
|
|
5
5
|
import { TableExport } from './tableExport.js'
|
|
6
|
-
import { escapeRegex, viewerUniqueId } from './util.js'
|
|
7
6
|
import { IXNode } from './ixnode.js';
|
|
8
|
-
import { getIXHiddenLinkStyle, runGenerator } from './util.js';
|
|
7
|
+
import { getIXHiddenLinkStyle, runGenerator, escapeRegex, viewerUniqueId, HIGHLIGHT_COLORS } from './util.js';
|
|
9
8
|
import { DocOrderIndex } from './docOrderIndex.js';
|
|
10
9
|
import { MessageBox } from './messagebox.js';
|
|
11
10
|
|
|
@@ -109,7 +108,7 @@ export class Viewer {
|
|
|
109
108
|
if (this._reportSet.isMultiDocumentViewer()) {
|
|
110
109
|
$('#ixv .ixds-tabs').show();
|
|
111
110
|
for (const [i, doc] of this._reportSet.reportFiles().entries()) {
|
|
112
|
-
$('<div class="tab">')
|
|
111
|
+
$('<div class="tab"></div>')
|
|
113
112
|
.text(doc.file)
|
|
114
113
|
.prop('title', doc.file)
|
|
115
114
|
.data('ix-doc-id', i)
|
|
@@ -247,8 +246,13 @@ export class Viewer {
|
|
|
247
246
|
}
|
|
248
247
|
}
|
|
249
248
|
|
|
250
|
-
_findOrCreateWrapperNode(domNode) {
|
|
249
|
+
_findOrCreateWrapperNode(domNode, inHidden) {
|
|
251
250
|
const v = this;
|
|
251
|
+
|
|
252
|
+
if (inHidden) {
|
|
253
|
+
return $(domNode).addClass("ixbrl-element-hidden");
|
|
254
|
+
}
|
|
255
|
+
|
|
252
256
|
/* Is the element the only significant content within a <td> or <th> ? If
|
|
253
257
|
* so, use that as the wrapper element. */
|
|
254
258
|
const tableNode = domNode.closest("td,th");
|
|
@@ -308,13 +312,13 @@ export class Viewer {
|
|
|
308
312
|
const reportIndex = $(iframe).data("report-index");
|
|
309
313
|
$(iframe).contents().find("body *").each((m, node) => {
|
|
310
314
|
const name = localName(node.nodeName).toUpperCase();
|
|
311
|
-
if (['NONNUMERIC', 'NONFRACTION', 'FOOTNOTE', 'CONTINUATION'].includes(name)) {
|
|
315
|
+
if (['NONNUMERIC', 'NONFRACTION', 'FOOTNOTE', 'CONTINUATION'].includes(name) && node.hasAttribute('id')) {
|
|
312
316
|
const nodeId = viewerUniqueId(reportIndex, node.getAttribute('id'));
|
|
313
317
|
const continuedAtId = viewerUniqueId(reportIndex, node.getAttribute("continuedAt"));
|
|
314
318
|
if (continuedAtId !== null) {
|
|
315
319
|
nextContinuationMap[nodeId] = continuedAtId;
|
|
316
320
|
}
|
|
317
|
-
if (name != 'CONTINUATION'
|
|
321
|
+
if (name != 'CONTINUATION') {
|
|
318
322
|
itemContinuationMap[nodeId] = [];
|
|
319
323
|
}
|
|
320
324
|
}
|
|
@@ -338,6 +342,18 @@ export class Viewer {
|
|
|
338
342
|
this.itemContinuationMap = itemContinuationMap;
|
|
339
343
|
}
|
|
340
344
|
|
|
345
|
+
_getOrCreateIXNode(vuid, nodes, docIndex, isHidden) {
|
|
346
|
+
// We may have already created an IXNode for this ID from a -sec-ix-hidden
|
|
347
|
+
// element
|
|
348
|
+
let ixn = this._ixNodeMap[vuid];
|
|
349
|
+
if (!ixn) {
|
|
350
|
+
ixn = new IXNode(vuid, nodes, docIndex);
|
|
351
|
+
this._ixNodeMap[vuid] = ixn;
|
|
352
|
+
ixn.isHidden = isHidden;
|
|
353
|
+
}
|
|
354
|
+
return ixn;
|
|
355
|
+
}
|
|
356
|
+
|
|
341
357
|
//
|
|
342
358
|
// Traverse the DOM hierarchy to find IX elements, and build maps and add
|
|
343
359
|
// wrapper nodes and classes.
|
|
@@ -375,59 +391,48 @@ export class Viewer {
|
|
|
375
391
|
const isNonFraction = name === 'NONFRACTION';
|
|
376
392
|
const isFact = isNonNumeric || isNonFraction;
|
|
377
393
|
if (n.nodeType === 1) {
|
|
378
|
-
// Ignore iXBRL elements that are not in the default target document, as
|
|
379
|
-
// the viewer builder does not handle these, and the builder does not
|
|
380
|
-
// ensure that they have ID attributes.
|
|
381
394
|
const vuid = viewerUniqueId(reportIndex, n.getAttribute("id"));
|
|
382
|
-
if (
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
nodes = $(n);
|
|
387
|
-
} else {
|
|
388
|
-
nodes = this._findOrCreateWrapperNode(n);
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
// For a continuation, store the IX ID(s) of the item(s), not the continuation
|
|
392
|
-
const headId = isContinuation ? this.continuationOfMap[vuid] : vuid;
|
|
393
|
-
this._addIdToNode(nodes.first(), headId);
|
|
395
|
+
if (isFact || isFootnote) {
|
|
396
|
+
// If @id is not present, it must be for a target document that wasn't processed.
|
|
397
|
+
if (n.hasAttribute("id")) {
|
|
398
|
+
let nodes = this._findOrCreateWrapperNode(n, inHidden);
|
|
394
399
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
let ixn = this._ixNodeMap[vuid];
|
|
398
|
-
if (!ixn) {
|
|
399
|
-
ixn = new IXNode(vuid, nodes, docIndex);
|
|
400
|
-
this._ixNodeMap[vuid] = ixn;
|
|
401
|
-
}
|
|
402
|
-
if (inHidden) {
|
|
403
|
-
ixn.isHidden = true;
|
|
404
|
-
nodes.addClass("ixbrl-element-hidden");
|
|
405
|
-
}
|
|
406
|
-
if (isContinuation) {
|
|
407
|
-
nodes.addClass("ixbrl-continuation");
|
|
408
|
-
}
|
|
409
|
-
else {
|
|
400
|
+
this._addIdToNode(nodes.first(), vuid);
|
|
401
|
+
let ixn = this._getOrCreateIXNode(vuid, nodes, docIndex, inHidden);
|
|
410
402
|
this._docOrderItemIndex.addItem(vuid, docIndex);
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
403
|
+
|
|
404
|
+
if (isNonFraction) {
|
|
405
|
+
nodes.addClass("ixbrl-element-nonfraction");
|
|
406
|
+
if (n.hasAttribute('scale')) {
|
|
407
|
+
const scale = Number(n.getAttribute('scale'));
|
|
408
|
+
// Set scale if the value is a valid number and is not a redundant 0/"ones" scale.
|
|
409
|
+
if (!Number.isNaN(scale) && scale !== 0) {
|
|
410
|
+
ixn.scale = scale;
|
|
411
|
+
}
|
|
419
412
|
}
|
|
420
413
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
414
|
+
if (isNonNumeric) {
|
|
415
|
+
nodes.addClass("ixbrl-element-nonnumeric");
|
|
416
|
+
if (n.hasAttribute('escape') && n.getAttribute('escape').match(/^(true|1)$/)) {
|
|
417
|
+
ixn.escaped = true;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
if (isFootnote) {
|
|
421
|
+
nodes.addClass("ixbrl-element-footnote");
|
|
422
|
+
ixn.footnote = true;
|
|
426
423
|
}
|
|
427
424
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
425
|
+
}
|
|
426
|
+
else if (isContinuation) {
|
|
427
|
+
if (n.hasAttribute("id") && this.continuationOfMap[vuid] !== undefined) {
|
|
428
|
+
let nodes = this._findOrCreateWrapperNode(n, inHidden);
|
|
429
|
+
|
|
430
|
+
// For a continuation, store the IX ID(s) of the item(s), not the continuation
|
|
431
|
+
this._addIdToNode(nodes.first(), this.continuationOfMap[vuid]);
|
|
432
|
+
|
|
433
|
+
this._getOrCreateIXNode(vuid, nodes, docIndex, inHidden);
|
|
434
|
+
|
|
435
|
+
nodes.addClass("ixbrl-continuation");
|
|
431
436
|
}
|
|
432
437
|
}
|
|
433
438
|
else if(name == 'HIDDEN') {
|
|
@@ -733,7 +738,7 @@ export class Viewer {
|
|
|
733
738
|
highlightAllTags(on, namespaceGroups) {
|
|
734
739
|
const groups = {};
|
|
735
740
|
$.each(namespaceGroups, function (i, ns) {
|
|
736
|
-
groups[ns] = i;
|
|
741
|
+
groups[ns] = i % HIGHLIGHT_COLORS;
|
|
737
742
|
});
|
|
738
743
|
const reportSet = this._reportSet;
|
|
739
744
|
const viewer = this;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ixbrl-viewer
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.11
|
|
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
|
|
@@ -29,12 +29,16 @@ Requires-Python: >=3.8
|
|
|
29
29
|
Description-Content-Type: text/markdown
|
|
30
30
|
License-File: LICENSE
|
|
31
31
|
License-File: NOTICE
|
|
32
|
-
Requires-Dist: arelle-release ==2.*
|
|
33
32
|
Requires-Dist: lxml ==4.*
|
|
34
|
-
Requires-Dist: pycountry
|
|
33
|
+
Requires-Dist: pycountry <24,>=22
|
|
34
|
+
Provides-Extra: arelle
|
|
35
|
+
Requires-Dist: arelle-release ==2.* ; extra == 'arelle'
|
|
35
36
|
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: flake8 ==6.1.0 ; extra == 'dev'
|
|
38
|
+
Requires-Dist: lxml-stubs ==0.4.0 ; extra == 'dev'
|
|
39
|
+
Requires-Dist: mypy ==1.8.0 ; extra == 'dev'
|
|
36
40
|
Requires-Dist: nose2 ==0.14.0 ; extra == 'dev'
|
|
37
|
-
Requires-Dist: typing-extensions ==4.
|
|
41
|
+
Requires-Dist: typing-extensions ==4.9.0 ; extra == 'dev'
|
|
38
42
|
|
|
39
43
|
# Arelle iXBRL Viewer
|
|
40
44
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
iXBRLViewerPlugin/__init__.py,sha256=WU4immfhGAVbyVRSNhMc-jAqcMHtXNu_8r1v0qYQ9Gw,13974
|
|
2
|
-
iXBRLViewerPlugin/_version.py,sha256=
|
|
2
|
+
iXBRLViewerPlugin/_version.py,sha256=HAxYk2WJE6p-QOIdm7l4LeuuoH2nO0U5RfTze4BjJ4M,162
|
|
3
3
|
iXBRLViewerPlugin/constants.py,sha256=kJ-kjt6rGhwBvk8HNbIiXt31b5qe6Lb6qPOXQF6rH_8,833
|
|
4
4
|
iXBRLViewerPlugin/featureConfig.py,sha256=tOViPYmN32i2uIf_T9HGgbkkv41VoTpTjqhn4w9rTgw,194
|
|
5
|
-
iXBRLViewerPlugin/iXBRLViewer.py,sha256=
|
|
5
|
+
iXBRLViewerPlugin/iXBRLViewer.py,sha256=tKdit2-Ts98r4vb07uCzL92RAWatx6xj2AxosH0oyq8,27806
|
|
6
6
|
iXBRLViewerPlugin/stubviewer.html,sha256=hc5BeIR7y3ojGRux_Hy5oqEAHdlQ34kk3lL5eH-B4AU,158
|
|
7
7
|
iXBRLViewerPlugin/ui.py,sha256=G2TsBoBLfpmyYQxB01d_7r8IsMEnemayU__fKvSQeLE,9713
|
|
8
8
|
iXBRLViewerPlugin/xhtmlserialize.py,sha256=XG6HRR6qDclSwbrpywFC0v8Ktb4-YZj-9IV_gqroCOY,6766
|
|
@@ -11,17 +11,17 @@ iXBRLViewerPlugin/viewer/version.js,sha256=7b5si8UmaS7QqALQIP-wJ0I8onKFox8VyaAiU
|
|
|
11
11
|
iXBRLViewerPlugin/viewer/webpack.common.js,sha256=AsiOVAW2XbmSNjv6Kl6LC4VUM2rA9UyQ8vwhz_1jb1Y,1320
|
|
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=
|
|
14
|
+
iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js,sha256=olTXd-r1RfPVMEeDIYg21KzosMWdgBinU2EfW2uFJ3c,861629
|
|
15
15
|
iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt,sha256=eA5xbvB65RVR5QmweqeHe4sYtW3dzEmgLhUDFOGr9m4,1697
|
|
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=PM-c68WmPVYrz6_F8BnGzU0uT0_RlmL3ZBK8f6kUv5U,18101
|
|
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=sSVODHTdcZNkAkdOc9x8H55yMVAhWyunFzEhZ8hH4YM,3814
|
|
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=W7G0nkPF-ajvL3NZP398dFsroSwca-dDBGLPEffm3u8,3522
|
|
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/chevron-down.svg,sha256=V-vUnVI2ixt8EkLYrtNpmW2OT8Iq9u5abEADzi2hlEA,462
|
|
@@ -54,25 +54,25 @@ iXBRLViewerPlugin/viewer/src/img/inline-viewer.svg,sha256=7gwas3nHxMunJIhb3clFbS
|
|
|
54
54
|
iXBRLViewerPlugin/viewer/src/img/powered-by-workiva.png,sha256=4XE5yykXtKUxF2hytq9Uqjx64pa7AgOuidVuB5_04wU,10362
|
|
55
55
|
iXBRLViewerPlugin/viewer/src/img/powered-by-workiva.svg,sha256=Zf2JArzszZCn7zCkHNVZiW8bhlDwPEdgIDJLJe86W30,7620
|
|
56
56
|
iXBRLViewerPlugin/viewer/src/js/accordian.js,sha256=hntVW5QfzHpx_2K1ysbJNDfLR63F_PLTiPg4rEbGs2Y,1842
|
|
57
|
-
iXBRLViewerPlugin/viewer/src/js/aspect.js,sha256=
|
|
58
|
-
iXBRLViewerPlugin/viewer/src/js/aspect.test.js,sha256=
|
|
57
|
+
iXBRLViewerPlugin/viewer/src/js/aspect.js,sha256=RBJ3-9nT8-iAwhYa7m3g4203lDONfJhbBG40-fkhhp0,2211
|
|
58
|
+
iXBRLViewerPlugin/viewer/src/js/aspect.test.js,sha256=ctDakUsDdJ65uuW70WcnsRW7keVBOsxWrKqD6PZsPC8,4269
|
|
59
59
|
iXBRLViewerPlugin/viewer/src/js/calculations.js,sha256=xPT2e8CtDXgnJA5DnAWouyeYJijNSQBrMb1D6iUM0KI,3388
|
|
60
|
-
iXBRLViewerPlugin/viewer/src/js/chart.js,sha256=
|
|
61
|
-
iXBRLViewerPlugin/viewer/src/js/chart.test.js,sha256=
|
|
60
|
+
iXBRLViewerPlugin/viewer/src/js/chart.js,sha256=B-Wdr4Rshdr5LWknJyv8u9Ro_8GYQL3N-ZAiotFkcps,6997
|
|
61
|
+
iXBRLViewerPlugin/viewer/src/js/chart.test.js,sha256=LWH7Qb-ABufPGxyAomX6q7PJgMpUWNvHskHLYCiepiE,3379
|
|
62
62
|
iXBRLViewerPlugin/viewer/src/js/concept.js,sha256=LCtYnEqmVWw2d61SF6an80RhO78swfxNnuRnhtSz7tM,1176
|
|
63
|
-
iXBRLViewerPlugin/viewer/src/js/concept.test.js,sha256=
|
|
63
|
+
iXBRLViewerPlugin/viewer/src/js/concept.test.js,sha256=ZQHRJSxrDo4iB9srYxdmpLtgqFP1iWiCIKrezLIgthw,2543
|
|
64
64
|
iXBRLViewerPlugin/viewer/src/js/dialog.js,sha256=09uGcyAcaWLyMyUNDmP9XqYKsuDiAAEIQUM6YLwG_j4,1058
|
|
65
65
|
iXBRLViewerPlugin/viewer/src/js/docOrderIndex.js,sha256=rhNooqCDRU0f8Sb-adHnwqF7kq6vJA_rskGh6oPqdx8,674
|
|
66
|
-
iXBRLViewerPlugin/viewer/src/js/fact.js,sha256=
|
|
67
|
-
iXBRLViewerPlugin/viewer/src/js/fact.test.js,sha256
|
|
66
|
+
iXBRLViewerPlugin/viewer/src/js/fact.js,sha256=PHUSXU2w-wlQLypyad358OPenl1DS6-Cs0OEGzZ9D1Y,9693
|
|
67
|
+
iXBRLViewerPlugin/viewer/src/js/fact.test.js,sha256=-DVTQ1rr3uNwPCILZFE9iOUHtv6m86MIiBj0EyRgvWo,22681
|
|
68
68
|
iXBRLViewerPlugin/viewer/src/js/factset.js,sha256=qhMoLwAB5T6GtWyaBXdLnDfGrkEG9a6s6OeygO-6T7M,3861
|
|
69
|
-
iXBRLViewerPlugin/viewer/src/js/factset.test.js,sha256=
|
|
69
|
+
iXBRLViewerPlugin/viewer/src/js/factset.test.js,sha256=Edji12qbFqvkHduK_BkE0wmaycdaG2sQSdXwdCpriBg,6675
|
|
70
70
|
iXBRLViewerPlugin/viewer/src/js/footnote.js,sha256=jZreicIBPAtBjbpoRbLnkSs8fHdCYVlr-mqn_x5fUfw,597
|
|
71
71
|
iXBRLViewerPlugin/viewer/src/js/identifiers.js,sha256=gcGitF1CfiyiUvzWDG6INnFDIBi5jXdBgiqCB8Ip0YE,2260
|
|
72
72
|
iXBRLViewerPlugin/viewer/src/js/identifiers.test.js,sha256=eu2TkHVpuRItIyNdNAuoITnpGFwwAicqMynf0dFreRk,2112
|
|
73
73
|
iXBRLViewerPlugin/viewer/src/js/index.js,sha256=SdxunWx8kNw0-vwwnr58-ac1-eQIE1__Ll7ekNNK79E,232
|
|
74
|
-
iXBRLViewerPlugin/viewer/src/js/inspector.js,sha256=
|
|
75
|
-
iXBRLViewerPlugin/viewer/src/js/inspector.test.js,sha256=
|
|
74
|
+
iXBRLViewerPlugin/viewer/src/js/inspector.js,sha256=CcBbXBcR8vOwbttIMIHoYmt3NOtyJliMCuNGwFhRx5M,45317
|
|
75
|
+
iXBRLViewerPlugin/viewer/src/js/inspector.test.js,sha256=AQjbwTllw_dZfovCfjfHWtt0kdjzDnoXw-mQ0IrHKWk,10086
|
|
76
76
|
iXBRLViewerPlugin/viewer/src/js/interact.min.js,sha256=Yk0ZkCU3IZ0heGijAgUiNVkZ1Djq-MjvbS32DBSrdIs,85048
|
|
77
77
|
iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js,sha256=3bQpJ_fUJzSQNjFizz6_7jJ5bKctwQq8Bb1sJB-HE2Y,13211
|
|
78
78
|
iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js,sha256=ey61xTRZkP0Kf3W8DVQtZE-PeXwK4OOx51iLySMSBsY,2712
|
|
@@ -84,14 +84,14 @@ iXBRLViewerPlugin/viewer/src/js/number-matcher-preprocess.test.js,sha256=0DaUAwI
|
|
|
84
84
|
iXBRLViewerPlugin/viewer/src/js/number-matcher.js,sha256=mGqt20dBAHmWN9a96qNzC3lrJoB-QSh0_hf1Ihf4Emg,6133
|
|
85
85
|
iXBRLViewerPlugin/viewer/src/js/number-matcher.test.js,sha256=mNgnB46-p7NxWa6aQvI83GRDupxncvGeDb59KuI8CMM,4059
|
|
86
86
|
iXBRLViewerPlugin/viewer/src/js/outline.js,sha256=pf5l0d8Cplu-uMBJSOmSfyx4AieNgm3C-GAnfxBHAZY,6594
|
|
87
|
-
iXBRLViewerPlugin/viewer/src/js/outline.test.js,sha256=
|
|
87
|
+
iXBRLViewerPlugin/viewer/src/js/outline.test.js,sha256=PaUzfy675G04YcjY8CcFDLCWi87Xx2hjqh1pogdetYY,13661
|
|
88
88
|
iXBRLViewerPlugin/viewer/src/js/period.js,sha256=D9zXSOr19trWCmHizgCe5DQ612HB6IlAWmI5Rh4I8ZM,2267
|
|
89
89
|
iXBRLViewerPlugin/viewer/src/js/period.test.js,sha256=nMamproI2VukUnO0wm3SKQA_rnjwNkwkzyn4uhke0kc,5417
|
|
90
90
|
iXBRLViewerPlugin/viewer/src/js/qname.js,sha256=6MqMBbgziuPPNHKS3UUGyYIgHWygaAIf0mcpK95hwT8,282
|
|
91
|
-
iXBRLViewerPlugin/viewer/src/js/report.js,sha256=
|
|
92
|
-
iXBRLViewerPlugin/viewer/src/js/report.test.js,sha256=
|
|
91
|
+
iXBRLViewerPlugin/viewer/src/js/report.js,sha256=4vP4LMHmzAFWQMKKbRQ-9z16PgZvVM1rkztvyNqiBeg,8694
|
|
92
|
+
iXBRLViewerPlugin/viewer/src/js/report.test.js,sha256=OpWSRo0oWQY2nwwD2u1L_y8APB9kjkJ4pV89WuTmVzo,5068
|
|
93
93
|
iXBRLViewerPlugin/viewer/src/js/reportset.js,sha256=4_f6zphwC2firfYeiX4gd4DyyvZ-MFMaq1Idej3nFK8,7832
|
|
94
|
-
iXBRLViewerPlugin/viewer/src/js/reportset.test.js,sha256=
|
|
94
|
+
iXBRLViewerPlugin/viewer/src/js/reportset.test.js,sha256=qzXGfqKlEu3pGk4m_iMwFdXsIxTCoRM7f4bUrYWIsUU,12558
|
|
95
95
|
iXBRLViewerPlugin/viewer/src/js/search.js,sha256=M7rZ7IVqzUbsLusgbu2ohhLnaRRigAVYJ2Bb8jmjKPQ,5490
|
|
96
96
|
iXBRLViewerPlugin/viewer/src/js/search.test.js,sha256=YGUrgxKjNC0CoY9CJm5FbpBi5tepqMcGriIv7fw19aQ,20925
|
|
97
97
|
iXBRLViewerPlugin/viewer/src/js/summary.js,sha256=86-BeF_h6PxH4ztY2nzBX04yvdvDN1s539S1k9PahZ4,4437
|
|
@@ -99,12 +99,12 @@ iXBRLViewerPlugin/viewer/src/js/summary.test.js,sha256=-fMLTuFz0JTk6dauAeB_QBekP
|
|
|
99
99
|
iXBRLViewerPlugin/viewer/src/js/tableExport.js,sha256=kE0Zyr7MPzcopcc0yy-NKiRwr2ZpyvQx87PYBrosIgc,9669
|
|
100
100
|
iXBRLViewerPlugin/viewer/src/js/test-utils.js,sha256=xPjpwZxuxXcCNqDnRacN46ldYP9gL_a35R8nhvTkXRk,1034
|
|
101
101
|
iXBRLViewerPlugin/viewer/src/js/textblockviewer.js,sha256=lCAZeN_wrSwmYie_rwdeIFCIjiOSblT0K9Vslqwktc8,1874
|
|
102
|
-
iXBRLViewerPlugin/viewer/src/js/unit.js,sha256=
|
|
103
|
-
iXBRLViewerPlugin/viewer/src/js/unit.test.js,sha256=
|
|
104
|
-
iXBRLViewerPlugin/viewer/src/js/util.js,sha256=
|
|
102
|
+
iXBRLViewerPlugin/viewer/src/js/unit.js,sha256=eHaCTE3snK7uuXK48VK1yPPpl0MAQReqPGWKhBvzwPQ,1638
|
|
103
|
+
iXBRLViewerPlugin/viewer/src/js/unit.test.js,sha256=l4nELK-gK2uJG6jXHEXwnAKzCCCQ7V_oTySaUN_JnhQ,2801
|
|
104
|
+
iXBRLViewerPlugin/viewer/src/js/util.js,sha256=oF6wGOTODyMNrQ9N91FqOYamW_bLmLYUdiYaGnviH-c,6793
|
|
105
105
|
iXBRLViewerPlugin/viewer/src/js/util.test.js,sha256=9z1y2ImH2t8GKAF5wpkXBADkeQd6X6H7JBejbaSHRwg,6460
|
|
106
106
|
iXBRLViewerPlugin/viewer/src/js/validationreport.js,sha256=zWA9_8sWavX2Fi8fwEyDPABxWL_XSzvNQ21O1Qu2ayY,644
|
|
107
|
-
iXBRLViewerPlugin/viewer/src/js/viewer.js,sha256=
|
|
107
|
+
iXBRLViewerPlugin/viewer/src/js/viewer.js,sha256=9ob_js01hDd2B8IygYhTo-GsUPUsG84_Jx_co-NEasM,35018
|
|
108
108
|
iXBRLViewerPlugin/viewer/src/js/viewerOptions.js,sha256=Cvj-gAhqNbdyoUAhUKt-EoTKVOcBR5OjG6y-11hF_hY,164
|
|
109
109
|
iXBRLViewerPlugin/viewer/src/less/accordian.less,sha256=MMYLCpZprb0Y8Mc8bkTL0qQgIsgLbk3u08ZBaCnYXnY,582
|
|
110
110
|
iXBRLViewerPlugin/viewer/src/less/block-list.less,sha256=p2ERp2ahRGSr3Mkj9KhB0eZBzUPEFnhv9Y_58PlWuxs,502
|
|
@@ -146,12 +146,12 @@ tests/puppeteer/tools/generate.sh,sha256=A-SUACwIh_OLlV6nPh2HH21grYhPLIqwm0PpygR
|
|
|
146
146
|
tests/unit_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
147
147
|
tests/unit_tests/iXBRLViewerPlugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
148
|
tests/unit_tests/iXBRLViewerPlugin/mock_arelle.py,sha256=Dm11pBwEqDmcCc4mkxNciFEEM_DbgtzQ2QYNP1y_ImE,1307
|
|
149
|
-
tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py,sha256=
|
|
149
|
+
tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py,sha256=naSIovmZmn53p8u7csJ7lAl0W8_XbMUIFcCQi-IHrjQ,32024
|
|
150
150
|
tests/unit_tests/iXBRLViewerPlugin/test_xhtmlserialize.py,sha256=BQNN1sC899sZzV1RN3wuFj9uwi8ioaRJcONxTiTdfZM,12570
|
|
151
|
-
ixbrl_viewer-1.4.
|
|
152
|
-
ixbrl_viewer-1.4.
|
|
153
|
-
ixbrl_viewer-1.4.
|
|
154
|
-
ixbrl_viewer-1.4.
|
|
155
|
-
ixbrl_viewer-1.4.
|
|
156
|
-
ixbrl_viewer-1.4.
|
|
157
|
-
ixbrl_viewer-1.4.
|
|
151
|
+
ixbrl_viewer-1.4.11.dist-info/LICENSE,sha256=TZJhu77S_2-WQcPAkuIAlQiuuiNqVcuHBjd7z3Y5S08,16645
|
|
152
|
+
ixbrl_viewer-1.4.11.dist-info/METADATA,sha256=fzkmp8hYOp3bHXFUMU4uwbAliyncUKWLXua44Nq8wnY,14685
|
|
153
|
+
ixbrl_viewer-1.4.11.dist-info/NOTICE,sha256=-SHDY0OY7s4gm4Rdk5AB3nbnUsrdHEHPdJuGFR_vuM4,566
|
|
154
|
+
ixbrl_viewer-1.4.11.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
155
|
+
ixbrl_viewer-1.4.11.dist-info/entry_points.txt,sha256=2XUzP20WGwxdvnugdBybUBwAB3xf_zvrOR5W_smFz_4,65
|
|
156
|
+
ixbrl_viewer-1.4.11.dist-info/top_level.txt,sha256=h8MkrMhC_t2-KbfS1oxJVnFAbn5NZJH8END_BL40mv8,24
|
|
157
|
+
ixbrl_viewer-1.4.11.dist-info/RECORD,,
|
|
@@ -14,7 +14,7 @@ from .mock_arelle import mock_arelle
|
|
|
14
14
|
|
|
15
15
|
mock_arelle()
|
|
16
16
|
|
|
17
|
-
from iXBRLViewerPlugin.iXBRLViewer import NamespaceMap, IXBRLViewerBuilder
|
|
17
|
+
from iXBRLViewerPlugin.iXBRLViewer import NamespaceMap, IXBRLViewerBuilder, iXBRLViewerFile
|
|
18
18
|
|
|
19
19
|
class TestNamespaceMap(unittest.TestCase):
|
|
20
20
|
|
|
@@ -449,7 +449,8 @@ class TestIXBRLViewer(unittest.TestCase):
|
|
|
449
449
|
@patch('arelle.XbrlConst.conceptReference', 'http://www.xbrl.org/2003/arcrole/concept-reference')
|
|
450
450
|
def test_addConcept_simple_case(self):
|
|
451
451
|
builder = IXBRLViewerBuilder([self.modelXbrl_1])
|
|
452
|
-
builder.
|
|
452
|
+
builder.currentTargetReport = builder.newTargetReport()
|
|
453
|
+
builder.addSourceReport()["targetReports"].append(builder.currentTargetReport)
|
|
453
454
|
builder.addConcept(self.modelXbrl_1, self.cash_concept)
|
|
454
455
|
self.assertTrue(builder.taxonomyData["sourceReports"][0]["targetReports"][0].get('concepts').get('us-gaap:Cash'))
|
|
455
456
|
|
|
@@ -465,7 +466,7 @@ class TestIXBRLViewer(unittest.TestCase):
|
|
|
465
466
|
@patch('arelle.XbrlConst.summationItem', 'http://www.xbrl.org/2003/arcrole/summation-item')
|
|
466
467
|
def test_getRelationships_returns_a_rel(self):
|
|
467
468
|
builder = IXBRLViewerBuilder([self.modelXbrl_1])
|
|
468
|
-
builder.
|
|
469
|
+
builder.currentTargetReport = builder.newTargetReport()
|
|
469
470
|
result = builder.getRelationships(self.modelXbrl_1)
|
|
470
471
|
roleMap = builder.roleMap
|
|
471
472
|
siPrefix = roleMap.getPrefix('http://www.xbrl.org/2003/arcrole/summation-item')
|
|
@@ -477,10 +478,10 @@ class TestIXBRLViewer(unittest.TestCase):
|
|
|
477
478
|
"""
|
|
478
479
|
elr = "http://example.com/unknownELR"
|
|
479
480
|
builder = IXBRLViewerBuilder([self.modelXbrl_1])
|
|
480
|
-
builder.
|
|
481
|
+
builder.currentTargetReport = builder.newTargetReport()
|
|
481
482
|
builder.addELR(self.modelXbrl_1, elr)
|
|
482
483
|
elrPrefix = builder.roleMap.getPrefix(elr)
|
|
483
|
-
self.assertEqual(builder.
|
|
484
|
+
self.assertEqual(builder.currentTargetReport.get('roleDefs').get(elrPrefix), None)
|
|
484
485
|
|
|
485
486
|
def test_addELR_with_definition(self):
|
|
486
487
|
"""
|
|
@@ -488,10 +489,10 @@ class TestIXBRLViewer(unittest.TestCase):
|
|
|
488
489
|
"""
|
|
489
490
|
elr = "ELR"
|
|
490
491
|
builder = IXBRLViewerBuilder([self.modelXbrl_1])
|
|
491
|
-
builder.
|
|
492
|
+
builder.currentTargetReport = builder.newTargetReport()
|
|
492
493
|
builder.addELR(self.modelXbrl_1, elr)
|
|
493
494
|
elrPrefix = builder.roleMap.getPrefix(elr)
|
|
494
|
-
self.assertEqual(builder.
|
|
495
|
+
self.assertEqual(builder.currentTargetReport.get('roleDefs').get(elrPrefix).get("en"), "ELR Label")
|
|
495
496
|
|
|
496
497
|
@patch('arelle.XbrlConst.conceptLabel', 'http://www.xbrl.org/2003/arcrole/concept-label')
|
|
497
498
|
@patch('arelle.XbrlConst.conceptReference', 'http://www.xbrl.org/2003/arcrole/concept-reference')
|
|
@@ -560,9 +561,7 @@ class TestIXBRLViewer(unittest.TestCase):
|
|
|
560
561
|
'local-unrecognized-linkbase.xml': ['unrecognizedLinkbase'],
|
|
561
562
|
})
|
|
562
563
|
|
|
563
|
-
|
|
564
|
-
# now, but it's what we do currently.
|
|
565
|
-
self.assertNotIn("docSetFiles", jsdata["sourceReports"][0]);
|
|
564
|
+
self.assertEqual(jsdata["sourceReports"][0]["docSetFiles"], ["a.html"]);
|
|
566
565
|
|
|
567
566
|
@patch('arelle.XbrlConst.conceptLabel', 'http://www.xbrl.org/2003/arcrole/concept-label')
|
|
568
567
|
@patch('arelle.XbrlConst.conceptReference', 'http://www.xbrl.org/2003/arcrole/concept-reference')
|
|
@@ -710,9 +709,15 @@ class TestIXBRLViewer(unittest.TestCase):
|
|
|
710
709
|
xml = etree.parse(StringIO(xmls))
|
|
711
710
|
|
|
712
711
|
js_uri = 'https://example.com/script-url'
|
|
713
|
-
|
|
712
|
+
viewer_file = iXBRLViewerFile("test.xhtml", xml)
|
|
713
|
+
result = self.builder_1.addViewerData(viewer_file, js_uri)
|
|
714
714
|
|
|
715
|
-
body
|
|
715
|
+
# addViewerData takes a copy, so original body tag should be empty
|
|
716
|
+
original_body = xml.getroot()[0]
|
|
717
|
+
self.assertEqual(len(original_body), 0)
|
|
718
|
+
|
|
719
|
+
body = viewer_file.xmlDocument.getroot()[0]
|
|
720
|
+
self.assertEqual(len(body), 4)
|
|
716
721
|
self.assertEqual(body[0].text, 'BEGIN IXBRL VIEWER EXTENSIONS')
|
|
717
722
|
self.assertEqual(body[1].tag, '{http://www.w3.org/1999/xhtml}script')
|
|
718
723
|
self.assertEqual(body[1].prefix, None)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|