ixbrl-viewer 1.4.9__tar.gz → 1.4.11__tar.gz
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.
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/workflows/node-tests.yml +1 -1
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/workflows/npm-package.yml +6 -6
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/workflows/puppeteer.yml +3 -3
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/workflows/python-package.yml +6 -6
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/workflows/python-tests.yml +7 -4
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.gitignore +5 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/ARCHITECTURE.md +3 -2
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/PKG-INFO +8 -4
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/_version.py +2 -2
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/iXBRLViewer.py +47 -52
- ixbrl-viewer-1.4.11/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +2 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/html/inspector.html +2 -2
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/i18n/en/translation.json +1 -1
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/i18n/es/translation.json +1 -1
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/aspect.js +1 -1
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/aspect.test.js +2 -1
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/chart.js +1 -1
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/chart.test.js +2 -2
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/concept.test.js +2 -2
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/fact.js +11 -24
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/fact.test.js +6 -11
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/factset.test.js +2 -4
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/inspector.js +3 -3
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/inspector.test.js +2 -3
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/outline.test.js +3 -3
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/report.js +7 -3
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/report.test.js +2 -1
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/reportset.test.js +3 -3
- ixbrl-viewer-1.4.11/iXBRLViewerPlugin/viewer/src/js/unit.js +54 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/unit.test.js +17 -24
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/util.js +21 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/viewer.js +58 -53
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/ixbrl_viewer.egg-info/PKG-INFO +8 -4
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/ixbrl_viewer.egg-info/SOURCES.txt +3 -0
- ixbrl-viewer-1.4.11/ixbrl_viewer.egg-info/requires.txt +12 -0
- ixbrl-viewer-1.4.11/jest.config.json +3 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/package-lock.json +311 -490
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/package.json +4 -4
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/pyproject.toml +39 -3
- ixbrl-viewer-1.4.11/setup.cfg +31 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py +17 -12
- ixbrl-viewer-1.4.11/tox.ini +27 -0
- ixbrl-viewer-1.4.9/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +0 -2
- ixbrl-viewer-1.4.9/iXBRLViewerPlugin/viewer/src/js/unit.js +0 -72
- ixbrl-viewer-1.4.9/ixbrl_viewer.egg-info/requires.txt +0 -7
- ixbrl-viewer-1.4.9/setup.cfg +0 -4
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.babelrc +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/ISSUE_TEMPLATE/questions.yml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/ISSUE_TEMPLATE/request.yml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/dependabot.yml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/release-drafter.yml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/workflows/release-drafter.yml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/.github/workflows/release.yml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/CODEOWNERS +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/COPYRIGHT.md +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/LICENSE +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/MANIFEST.in +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/Makefile +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/NOTICE +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/PLUGINS.md +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/README.md +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/README.md +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630.xsd +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_cal.xml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_d2.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_def.xml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_g1.jpg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_lab.xml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_pre.xml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex21subsidiaries.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex23accountingfirmc.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex311ceocertificati.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex312cfocertificati.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex32ceocfocertifica.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex992reconofeconomi.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/clorox-2022-10-K-ixbrl-viewer/ixbrl-viewer.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/example_plugin/README.md +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/example_plugin/example-plugin.gif +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/example_plugin/extended-viewer.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/example_plugin/index.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/example_plugin/package-lock.json +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/example_plugin/package.json +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/example_plugin/webpack.config.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/ixbrl-viewer-demo.gif +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/review-mode.png +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/workiva-january-2023-8-k-ixbrl-viewer/exhibit31abylawsofworkivai.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/workiva-january-2023-8-k-ixbrl-viewer/exhibit31bbylawsofworkivai.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/workiva-january-2023-8-k-ixbrl-viewer/ixbrl-viewer.htm +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109.xsd +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109_lab.xml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109_pre.xml +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/__init__.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/constants.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/featureConfig.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/stubviewer.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/ui.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/i18next-parser.config.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/html/fact-details.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/html/footnote-details.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/i18n/en/currencies.json +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/i18n/en/referenceparts.json +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/i18n/es/currencies.json +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/i18n/es/referenceparts.json +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/arrow-down.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/arrow-up.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/chevron-down.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/chevron-left.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/chevron-right.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/chevron-up.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/clipboard.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/close.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/cog.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/dimension-member.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/dimension.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/download.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/filter.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/graph.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/member.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/outline.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/print.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/question.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/search.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/select.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/summary.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/tag.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/text-block.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/tick.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/icons/warning.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/img/arelle.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/img/favicon.ico +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/img/inline-viewer.png +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/img/inline-viewer.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/img/powered-by-workiva.png +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/img/powered-by-workiva.svg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/accordian.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/calculations.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/concept.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/dialog.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/docOrderIndex.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/factset.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/footnote.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/identifiers.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/identifiers.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/index.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/interact.min.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/ixnode.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/menu.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/messagebox.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/moment-jest.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/number-matcher-preprocess.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/number-matcher.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/number-matcher.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/outline.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/period.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/period.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/qname.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/reportset.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/search.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/search.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/summary.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/summary.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/tableExport.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/test-utils.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/textblockviewer.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/util.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/validationreport.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/js/viewerOptions.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/accordian.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/block-list.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/chart.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/clearfix.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/colours.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/common.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/components.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/core.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/dialog.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/fonts.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/form-controls.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/icons.less.njk +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/inspector.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/loader.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/menu.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/summary.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/tabs.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/text-block-viewer.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/text-mixins.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/validation-report.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/src/less/viewer.less +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/tools/build-font.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/version.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/webpack.common.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/webpack.dev.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/viewer/webpack.prod.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/iXBRLViewerPlugin/xhtmlserialize.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/ixbrl_viewer.egg-info/dependency_links.txt +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/ixbrl_viewer.egg-info/entry_points.txt +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/ixbrl_viewer.egg-info/top_level.txt +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/Makefile +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/Makefile-src +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/build-viewer.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/fetch-sample-files.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/sample-files.list +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/src/continuation/continuation.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/src/ixds-test/document1.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/src/ixds-test/faurecia.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/src/ixds-test/valeo.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/src/scrollable-div/scrollable-div.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/samples/src/xbrl-invalid-tests/xbrl-invalid-test.html +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/__init__.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/framework/core_elements.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/framework/page_objects/doc_frame.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/framework/page_objects/fact_details_panel.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/framework/page_objects/search_panel.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/framework/page_objects/toolbar.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/framework/utils.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/framework/viewer_page.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/puppeteer_test_run_via_intellij.jpg +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/test_filings/filing_documents_smoke_test.zip +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/test_filings/highlights.zip +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/tests/fact_properties.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/tests/highlight.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/tests/search.test.js +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/puppeteer/tools/generate.sh +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/unit_tests/__init__.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/unit_tests/iXBRLViewerPlugin/__init__.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/unit_tests/iXBRLViewerPlugin/mock_arelle.py +0 -0
- {ixbrl-viewer-1.4.9 → ixbrl-viewer-1.4.11}/tests/unit_tests/iXBRLViewerPlugin/test_xhtmlserialize.py +0 -0
|
@@ -27,7 +27,7 @@ jobs:
|
|
|
27
27
|
with:
|
|
28
28
|
fetch-depth: 0 # npm run prod requires tags, sadly this is the only way to get them.
|
|
29
29
|
- name: Install Node.js
|
|
30
|
-
uses: actions/setup-node@v4.0.
|
|
30
|
+
uses: actions/setup-node@v4.0.1
|
|
31
31
|
with:
|
|
32
32
|
cache: 'npm'
|
|
33
33
|
check-latest: true
|
|
@@ -42,13 +42,13 @@ jobs:
|
|
|
42
42
|
npm version $(git describe --tags)
|
|
43
43
|
npm pack
|
|
44
44
|
- name: Upload ixbrlviewer.js artifact
|
|
45
|
-
uses: actions/upload-artifact@
|
|
45
|
+
uses: actions/upload-artifact@v4.0.0
|
|
46
46
|
with:
|
|
47
47
|
name: ixbrlviewer.js
|
|
48
48
|
if-no-files-found: error
|
|
49
49
|
path: iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js
|
|
50
50
|
- name: Upload npm artifact
|
|
51
|
-
uses: actions/upload-artifact@
|
|
51
|
+
uses: actions/upload-artifact@v4.0.0
|
|
52
52
|
with:
|
|
53
53
|
name: npm package
|
|
54
54
|
if-no-files-found: error
|
|
@@ -63,17 +63,17 @@ jobs:
|
|
|
63
63
|
if: startsWith(github.ref, 'refs/tags')
|
|
64
64
|
steps:
|
|
65
65
|
- name: Install Node.js
|
|
66
|
-
uses: actions/setup-node@v4.0.
|
|
66
|
+
uses: actions/setup-node@v4.0.1
|
|
67
67
|
with:
|
|
68
68
|
check-latest: true
|
|
69
69
|
node-version: ${{ inputs.node_version }}
|
|
70
70
|
registry-url: 'https://registry.npmjs.org' # Must explicitly set this for NODE_AUTH_TOKEN to work below
|
|
71
71
|
- name: Download ixbrlviewer.js artifact
|
|
72
|
-
uses: actions/download-artifact@
|
|
72
|
+
uses: actions/download-artifact@v4.1.0
|
|
73
73
|
with:
|
|
74
74
|
name: ixbrlviewer.js
|
|
75
75
|
- name: Download npm artifact
|
|
76
|
-
uses: actions/download-artifact@
|
|
76
|
+
uses: actions/download-artifact@v4.1.0
|
|
77
77
|
with:
|
|
78
78
|
name: npm package
|
|
79
79
|
- name: Publish with npm
|
|
@@ -27,13 +27,13 @@ jobs:
|
|
|
27
27
|
- uses: actions/checkout@v4.1.1
|
|
28
28
|
with:
|
|
29
29
|
fetch-depth: 0 # npm run prod requires tags, sadly this is the only way to get them.
|
|
30
|
-
- uses: actions/setup-node@v4.0.
|
|
30
|
+
- uses: actions/setup-node@v4.0.1
|
|
31
31
|
with:
|
|
32
32
|
cache: 'npm'
|
|
33
33
|
check-latest: true
|
|
34
34
|
node-version: ${{ matrix.node-version }}
|
|
35
35
|
- name: Install Python 3
|
|
36
|
-
uses: actions/setup-python@
|
|
36
|
+
uses: actions/setup-python@v5.0.0
|
|
37
37
|
with:
|
|
38
38
|
cache: 'pip'
|
|
39
39
|
cache-dependency-path: '**/pyproject.toml'
|
|
@@ -53,7 +53,7 @@ jobs:
|
|
|
53
53
|
run: npx http-server . &> tests/puppeteer/artifacts/http_server.log &
|
|
54
54
|
- name: Run puppeteer tests
|
|
55
55
|
run: npm run test:puppeteer
|
|
56
|
-
- uses: actions/upload-artifact@
|
|
56
|
+
- uses: actions/upload-artifact@v4.0.0
|
|
57
57
|
if: failure()
|
|
58
58
|
with:
|
|
59
59
|
name: ${{ github.run_id }}.${{ github.run_attempt }}_${{ matrix.os }}_${{ matrix.node-version }}_${{ matrix.python-version }}_artifacts
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
with:
|
|
38
38
|
fetch-depth: 0
|
|
39
39
|
- name: Install Node.js
|
|
40
|
-
uses: actions/setup-node@v4.0.
|
|
40
|
+
uses: actions/setup-node@v4.0.1
|
|
41
41
|
with:
|
|
42
42
|
cache: 'npm'
|
|
43
43
|
check-latest: true
|
|
@@ -47,7 +47,7 @@ jobs:
|
|
|
47
47
|
- name: Build ixbrlviewer.js
|
|
48
48
|
run: make prod
|
|
49
49
|
- name: Install Python
|
|
50
|
-
uses: actions/setup-python@
|
|
50
|
+
uses: actions/setup-python@v5.0.0
|
|
51
51
|
with:
|
|
52
52
|
cache: 'pip'
|
|
53
53
|
cache-dependency-path: '**/pyproject.toml'
|
|
@@ -60,13 +60,13 @@ jobs:
|
|
|
60
60
|
- name: Build Python package
|
|
61
61
|
run: python -m build
|
|
62
62
|
- name: Upload source distribution artifact
|
|
63
|
-
uses: actions/upload-artifact@
|
|
63
|
+
uses: actions/upload-artifact@v4.0.0
|
|
64
64
|
with:
|
|
65
65
|
name: source distribution
|
|
66
66
|
if-no-files-found: error
|
|
67
67
|
path: dist/*.tar.gz
|
|
68
68
|
- name: Upload wheel artifact
|
|
69
|
-
uses: actions/upload-artifact@
|
|
69
|
+
uses: actions/upload-artifact@v4.0.0
|
|
70
70
|
with:
|
|
71
71
|
name: wheel
|
|
72
72
|
if-no-files-found: error
|
|
@@ -83,11 +83,11 @@ jobs:
|
|
|
83
83
|
- name: Install twine
|
|
84
84
|
run: pip install -U twine
|
|
85
85
|
- name: Download source distribution artifact
|
|
86
|
-
uses: actions/download-artifact@
|
|
86
|
+
uses: actions/download-artifact@v4.1.0
|
|
87
87
|
with:
|
|
88
88
|
name: source distribution
|
|
89
89
|
- name: Download wheel artifact
|
|
90
|
-
uses: actions/download-artifact@
|
|
90
|
+
uses: actions/download-artifact@v4.1.0
|
|
91
91
|
with:
|
|
92
92
|
name: wheel
|
|
93
93
|
- name: Publish package on release
|
|
@@ -26,13 +26,16 @@ jobs:
|
|
|
26
26
|
steps:
|
|
27
27
|
- uses: actions/checkout@v4.1.1
|
|
28
28
|
- name: Install Python 3
|
|
29
|
-
uses: actions/setup-python@
|
|
29
|
+
uses: actions/setup-python@v5.0.0
|
|
30
30
|
with:
|
|
31
31
|
cache: 'pip'
|
|
32
32
|
cache-dependency-path: '**/pyproject.toml'
|
|
33
33
|
check-latest: true
|
|
34
34
|
python-version: ${{ matrix.python-version }}
|
|
35
35
|
- name: Install dependencies
|
|
36
|
-
run:
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
run: |
|
|
37
|
+
python -m pip install --upgrade pip setuptools wheel
|
|
38
|
+
pip install .[arelle,dev]
|
|
39
|
+
pip install tox tox-gh-actions
|
|
40
|
+
- name: Test with tox
|
|
41
|
+
run: tox
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
.idea
|
|
2
|
+
.mypy_cache
|
|
3
|
+
.pytest_cache
|
|
4
|
+
.tox
|
|
2
5
|
.vscode
|
|
6
|
+
build
|
|
3
7
|
node_modules/
|
|
4
8
|
dist/
|
|
5
9
|
__pycache__
|
|
@@ -8,3 +12,4 @@ iXBRLViewerPlugin/viewer/src/fonts/
|
|
|
8
12
|
iXBRLViewerPlugin/viewer/src/less/generated/
|
|
9
13
|
iXBRLViewerPlugin/_version.py
|
|
10
14
|
/ixbrl-viewer*.tgz
|
|
15
|
+
ixbrl_viewer.egg-info
|
|
@@ -82,8 +82,9 @@ the viewer.
|
|
|
82
82
|
### docSetFiles
|
|
83
83
|
|
|
84
84
|
`docSetFiles` is a list of files in the document set. It is used to load other
|
|
85
|
-
documents in the document set into iframes in tabs in the viewer.
|
|
86
|
-
|
|
85
|
+
documents in the document set into iframes in tabs in the viewer.
|
|
86
|
+
|
|
87
|
+
`docSetFiles` is a list of relative URLs.
|
|
87
88
|
|
|
88
89
|
### targetReports
|
|
89
90
|
|
|
@@ -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
|
|
|
@@ -95,6 +95,7 @@ class IXBRLViewerBuilder:
|
|
|
95
95
|
"languages": {},
|
|
96
96
|
}
|
|
97
97
|
self.basenameSuffix = basenameSuffix
|
|
98
|
+
self.currentTargetReport = None
|
|
98
99
|
|
|
99
100
|
def enableFeature(self, featureName: str):
|
|
100
101
|
if featureName in self.taxonomyData["features"]:
|
|
@@ -148,21 +149,13 @@ class IXBRLViewerBuilder:
|
|
|
148
149
|
if langCode not in self.taxonomyData["languages"]:
|
|
149
150
|
self.taxonomyData["languages"][langCode] = self.makeLanguageName(langCode)
|
|
150
151
|
|
|
151
|
-
@property
|
|
152
|
-
def currentSourceReportData(self):
|
|
153
|
-
return self.taxonomyData["sourceReports"][-1]
|
|
154
|
-
|
|
155
|
-
@property
|
|
156
|
-
def currentReportData(self):
|
|
157
|
-
return self.currentSourceReportData["targetReports"][-1]
|
|
158
|
-
|
|
159
152
|
def addELR(self, report: ModelXbrl, elr):
|
|
160
153
|
prefix = self.roleMap.getPrefix(elr)
|
|
161
|
-
if self.
|
|
154
|
+
if self.currentTargetReport.setdefault("roleDefs",{}).get(prefix, None) is None:
|
|
162
155
|
rts = report.roleTypes.get(elr, [])
|
|
163
156
|
label = next((rt.definition for rt in rts if rt.definition is not None), None)
|
|
164
157
|
if label is not None:
|
|
165
|
-
self.
|
|
158
|
+
self.currentTargetReport["roleDefs"].setdefault(prefix,{})["en"] = label
|
|
166
159
|
|
|
167
160
|
def addConcept(self, report: ModelXbrl, concept, dimensionType = None):
|
|
168
161
|
if concept is None:
|
|
@@ -170,7 +163,7 @@ class IXBRLViewerBuilder:
|
|
|
170
163
|
labelsRelationshipSet = report.relationshipSet(XbrlConst.conceptLabel)
|
|
171
164
|
labels = labelsRelationshipSet.fromModelObject(concept)
|
|
172
165
|
conceptName = self.nsmap.qname(concept.qname)
|
|
173
|
-
if conceptName not in self.
|
|
166
|
+
if conceptName not in self.currentTargetReport["concepts"]:
|
|
174
167
|
conceptData = {
|
|
175
168
|
"labels": { }
|
|
176
169
|
}
|
|
@@ -205,7 +198,7 @@ class IXBRLViewerBuilder:
|
|
|
205
198
|
conceptData['td'] = typedDomainName
|
|
206
199
|
self.addConcept(report, typedDomainElement)
|
|
207
200
|
|
|
208
|
-
self.
|
|
201
|
+
self.currentTargetReport["concepts"][conceptName] = conceptData
|
|
209
202
|
|
|
210
203
|
def treeWalk(self, rels, item, indent = 0):
|
|
211
204
|
for r in rels.fromModelObject(item):
|
|
@@ -324,7 +317,7 @@ class IXBRLViewerBuilder:
|
|
|
324
317
|
if frel.toModelObject is not None:
|
|
325
318
|
factData.setdefault("fn", []).append(frel.toModelObject.id)
|
|
326
319
|
|
|
327
|
-
self.
|
|
320
|
+
self.currentTargetReport["facts"][f.id] = factData
|
|
328
321
|
self.addConcept(report, f.concept)
|
|
329
322
|
|
|
330
323
|
def oimUnitString(self, unit):
|
|
@@ -348,10 +341,11 @@ class IXBRLViewerBuilder:
|
|
|
348
341
|
return "{}/{}".format(numeratorsString, denominatorsString)
|
|
349
342
|
return numeratorsString
|
|
350
343
|
|
|
351
|
-
def
|
|
344
|
+
def addViewerData(self, viewerFile, scriptUrl):
|
|
345
|
+
viewerFile.xmlDocument = deepcopy(viewerFile.xmlDocument)
|
|
352
346
|
taxonomyDataJSON = self.escapeJSONForScriptTag(json.dumps(self.taxonomyData, indent=1, allow_nan=False))
|
|
353
347
|
|
|
354
|
-
for child in xmlDocument.getroot():
|
|
348
|
+
for child in viewerFile.xmlDocument.getroot():
|
|
355
349
|
if child.tag == '{http://www.w3.org/1999/xhtml}body':
|
|
356
350
|
for body_child in child:
|
|
357
351
|
if body_child.tag == '{http://www.w3.org/1999/xhtml}script' and body_child.get('type','') == 'application/x.ixbrl-viewer+json':
|
|
@@ -383,15 +377,18 @@ class IXBRLViewerBuilder:
|
|
|
383
377
|
with open(os.path.join(os.path.dirname(__file__),"stubviewer.html")) as fin:
|
|
384
378
|
return etree.parse(fin)
|
|
385
379
|
|
|
386
|
-
def
|
|
387
|
-
|
|
388
|
-
"
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
380
|
+
def newTargetReport(self):
|
|
381
|
+
return {
|
|
382
|
+
"concepts": {},
|
|
383
|
+
"facts": {},
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
def addSourceReport(self):
|
|
387
|
+
sourceReport = {
|
|
388
|
+
"targetReports": []
|
|
389
|
+
}
|
|
390
|
+
self.taxonomyData["sourceReports"].append(sourceReport)
|
|
391
|
+
return sourceReport
|
|
395
392
|
|
|
396
393
|
def createViewer(self, scriptUrl: str = DEFAULT_VIEWER_PATH, useStubViewer: bool = False, showValidations: bool = True, packageDownloadURL: str = None) -> Optional[iXBRLViewer]:
|
|
397
394
|
"""
|
|
@@ -411,59 +408,56 @@ class IXBRLViewerBuilder:
|
|
|
411
408
|
self.roleMap.getPrefix(XbrlConst.dimensionDefault, "d-d")
|
|
412
409
|
self.roleMap.getPrefix(WIDER_NARROWER_ARCROLE, "w-n")
|
|
413
410
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
411
|
+
sourceReportsByFiles = dict()
|
|
412
|
+
|
|
413
|
+
if useStubViewer:
|
|
414
|
+
iv.addFile(iXBRLViewerFile(DEFAULT_OUTPUT_NAME, self.getStubDocument()))
|
|
417
415
|
|
|
418
416
|
for n, report in enumerate(self.reports):
|
|
419
417
|
self.footnoteRelationshipSet = ModelRelationshipSet(report, "XBRL-footnotes")
|
|
420
|
-
self.
|
|
418
|
+
self.currentTargetReport = self.newTargetReport()
|
|
421
419
|
for f in report.facts:
|
|
422
420
|
self.addFact(report, f)
|
|
423
|
-
self.
|
|
421
|
+
self.currentTargetReport["rels"] = self.getRelationships(report)
|
|
424
422
|
|
|
425
423
|
docSetFiles = None
|
|
426
424
|
report.info("viewer:info", "Creating iXBRL viewer (%d of %d)" % (n+1, len(self.reports)))
|
|
427
425
|
if report.modelDocument.type == Type.INLINEXBRLDOCUMENTSET:
|
|
428
426
|
# Sort by object index to preserve order in which files were specified.
|
|
429
427
|
xmlDocsByFilename = {
|
|
430
|
-
os.path.basename(self.outputFilename(doc.filepath)):
|
|
428
|
+
os.path.basename(self.outputFilename(doc.filepath)): doc.xmlDocument
|
|
431
429
|
for doc in sorted(report.modelDocument.referencesDocument.keys(), key=lambda x: x.objectIndex)
|
|
432
430
|
if doc.type == Type.INLINEXBRL
|
|
433
431
|
}
|
|
434
432
|
docSetFiles = list(xmlDocsByFilename.keys())
|
|
435
433
|
|
|
436
|
-
if xmlDocument is None:
|
|
437
|
-
if useStubViewer:
|
|
438
|
-
xmlDocument = self.getStubDocument()
|
|
439
|
-
iv.addFile(iXBRLViewerFile(DEFAULT_OUTPUT_NAME, xmlDocument))
|
|
440
|
-
else:
|
|
441
|
-
xmlDocument = next(iter(xmlDocsByFilename.values()))
|
|
442
|
-
|
|
443
434
|
for filename, docSetXMLDoc in xmlDocsByFilename.items():
|
|
444
435
|
iv.addFile(iXBRLViewerFile(filename, docSetXMLDoc))
|
|
445
436
|
|
|
446
437
|
elif useStubViewer:
|
|
447
|
-
if xmlDocument is None:
|
|
448
|
-
xmlDocument = self.getStubDocument()
|
|
449
|
-
iv.addFile(iXBRLViewerFile(DEFAULT_OUTPUT_NAME, xmlDocument))
|
|
450
438
|
filename = self.outputFilename(os.path.basename(report.modelDocument.filepath))
|
|
451
439
|
docSetFiles = [ filename ]
|
|
452
440
|
iv.addFile(iXBRLViewerFile(filename, report.modelDocument.xmlDocument))
|
|
453
441
|
|
|
454
442
|
else:
|
|
443
|
+
srcFilename = self.outputFilename(os.path.basename(report.modelDocument.filepath))
|
|
444
|
+
docSetFiles = [ srcFilename ]
|
|
455
445
|
if len(self.reports) == 1:
|
|
456
446
|
# If there is only a single report, call the output file "xbrlviewer.html"
|
|
457
447
|
filename = "xbrlviewer.html"
|
|
458
448
|
else:
|
|
459
449
|
# Otherwise, preserve filenames
|
|
460
|
-
filename =
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
450
|
+
filename = srcFilename
|
|
451
|
+
iv.addFile(iXBRLViewerFile(filename, report.modelDocument.xmlDocument))
|
|
452
|
+
|
|
453
|
+
docSetKey = frozenset(docSetFiles)
|
|
454
|
+
sourceReport = sourceReportsByFiles.get(docSetKey)
|
|
455
|
+
if sourceReport is None:
|
|
456
|
+
sourceReport = self.addSourceReport()
|
|
457
|
+
sourceReportsByFiles[docSetKey] = sourceReport
|
|
458
|
+
sourceReport["docSetFiles"] = list(urllib.parse.quote(f) for f in docSetFiles)
|
|
459
|
+
|
|
460
|
+
sourceReport["targetReports"].append(self.currentTargetReport)
|
|
467
461
|
|
|
468
462
|
localDocs = defaultdict(set)
|
|
469
463
|
for path, doc in report.urlDocs.items():
|
|
@@ -482,14 +476,11 @@ class IXBRLViewerBuilder:
|
|
|
482
476
|
linkbaseIdentifed = True
|
|
483
477
|
if not linkbaseIdentifed:
|
|
484
478
|
localDocs[doc.basename].add(UNRECOGNIZED_LINKBASE_LOCAL_DOCUMENTS_TYPE)
|
|
485
|
-
self.
|
|
479
|
+
self.currentTargetReport["localDocs"] = {
|
|
486
480
|
localDoc: sorted(docTypes)
|
|
487
481
|
for localDoc, docTypes in localDocs.items()
|
|
488
482
|
}
|
|
489
483
|
|
|
490
|
-
if docSetFiles is not None:
|
|
491
|
-
self.currentSourceReportData["docSetFiles"] = list(urllib.parse.quote(f) for f in docSetFiles)
|
|
492
|
-
|
|
493
484
|
self.taxonomyData["prefixes"] = self.nsmap.prefixmap
|
|
494
485
|
self.taxonomyData["roles"] = self.roleMap.prefixmap
|
|
495
486
|
|
|
@@ -504,7 +495,7 @@ class IXBRLViewerBuilder:
|
|
|
504
495
|
iv.addFilingDoc(filingDocZipPath)
|
|
505
496
|
self.taxonomyData["filingDocuments"] = filingDocZipName
|
|
506
497
|
|
|
507
|
-
if not self.
|
|
498
|
+
if not self.addViewerData(iv.files[0], scriptUrl):
|
|
508
499
|
return None
|
|
509
500
|
|
|
510
501
|
return iv
|
|
@@ -524,9 +515,13 @@ class iXBRLViewer:
|
|
|
524
515
|
self.filingDocuments = None
|
|
525
516
|
# This is an arbitrary ModelXbrl used for logging only
|
|
526
517
|
self.logger_model = logger_model
|
|
518
|
+
self.filenames = set()
|
|
527
519
|
|
|
528
520
|
def addFile(self, ivf):
|
|
521
|
+
if ivf.filename in self.filenames:
|
|
522
|
+
return
|
|
529
523
|
self.files.append(ivf)
|
|
524
|
+
self.filenames.add(ivf.filename)
|
|
530
525
|
|
|
531
526
|
def addFilingDoc(self, filingDocuments):
|
|
532
527
|
self.filingDocuments = filingDocuments
|