ixbrl-viewer 1.4.39__tar.gz → 1.4.41__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.39 → ixbrl_viewer-1.4.41}/PKG-INFO +32 -4
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/README.md +31 -3
- ixbrl_viewer-1.4.41/docs/sample-config.json +23 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/__init__.py +25 -22
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/_version.py +2 -2
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/constants.py +120 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/featureConfig.py +4 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/iXBRLViewer.py +28 -14
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +2 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/i18next-parser.config.js +1 -1
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/html/fact-details.html +78 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/html/footer-logo.html +4 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/html/footnote-details.html +1 -1
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/html/inspector.html +564 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/cy/balancetypes.json +1 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/cy/currencies.json +13 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/cy/datatypes.json +9 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/cy/labelroles.json +24 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/cy/referenceparts.json +10 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/cy/scale.json +16 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/cy/tooltips.json +17 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/cy/translation.json +179 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/en/balancetypes.json +4 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/en/datatypes.json +10 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/en/labelroles.json +4 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/en/scale.json +16 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/en/tooltips.json +17 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/i18n/en/translation.json +50 -25
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/es/balancetypes.json +4 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/es/datatypes.json +10 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/es/labelroles.json +24 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/es/scale.json +16 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/i18n/es/tooltips.json +17 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/i18n/es/translation.json +66 -40
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/icons/dark-mode.svg +4 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/img/arelle-dark.svg +179 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/img/inline-viewer-dark.svg +59 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/accordian.js +2 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/aspect.js +18 -7
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/js/balance.js +14 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/chart.js +10 -6
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/concept.js +28 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/concept.test.js +23 -2
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/js/datatype.js +20 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/js/datatype.test.js +62 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/dialog.js +3 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/fact.js +16 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/fact.test.js +3 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/js/index.js +19 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/inspector.js +499 -121
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/inspector.test.js +1 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js +128 -30
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js +193 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/menu.js +21 -3
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/outline.js +2 -2
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/report.js +60 -8
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/report.test.js +51 -5
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/reportset.js +20 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/reportset.test.js +3 -3
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/search.js +23 -2
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/search.test.js +2 -2
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/summary.js +14 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/tableExport.js +2 -1
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/js/taxonomynamer.js +34 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/js/taxonomynamer.test.js +32 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/js/theme.js +36 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/unit.js +17 -2
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/util.js +16 -16
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/viewer.js +13 -7
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/accordian.less +8 -4
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/less/block-list.less +38 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/calculation-inspector.less +2 -2
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/chart.less +8 -5
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/less/colours-dark-mode.less +40 -0
- ixbrl_viewer-1.4.41/iXBRLViewerPlugin/viewer/src/less/colours.less +40 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/common.less +1 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/components.less +3 -3
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/core.less +2 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/dialog.less +13 -10
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/form-controls.less +33 -11
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/inspector.less +538 -299
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/loader.less +2 -2
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/menu.less +33 -15
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/summary.less +16 -6
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/tabs.less +5 -5
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/text-mixins.less +2 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/validation-report.less +1 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/viewer.less +30 -18
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/ixbrl_viewer.egg-info/PKG-INFO +32 -4
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/ixbrl_viewer.egg-info/SOURCES.txt +30 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/build-viewer.py +3 -4
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/framework/page_objects/doc_frame.js +1 -1
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/tests/fact_properties.test.js +4 -4
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py +69 -28
- ixbrl_viewer-1.4.39/iXBRLViewerPlugin/constants.py +0 -35
- ixbrl_viewer-1.4.39/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +0 -2
- ixbrl_viewer-1.4.39/iXBRLViewerPlugin/viewer/src/html/fact-details.html +0 -47
- ixbrl_viewer-1.4.39/iXBRLViewerPlugin/viewer/src/html/inspector.html +0 -457
- ixbrl_viewer-1.4.39/iXBRLViewerPlugin/viewer/src/js/index.js +0 -11
- ixbrl_viewer-1.4.39/iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js +0 -80
- ixbrl_viewer-1.4.39/iXBRLViewerPlugin/viewer/src/less/block-list.less +0 -32
- ixbrl_viewer-1.4.39/iXBRLViewerPlugin/viewer/src/less/colours.less +0 -33
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.babelrc +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/ISSUE_TEMPLATE/questions.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/ISSUE_TEMPLATE/request.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/dependabot.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/release-drafter.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/workflows/node-tests.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/workflows/npm-package.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/workflows/puppeteer.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/workflows/python-package.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/workflows/python-tests.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/workflows/release-drafter.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.github/workflows/release.yml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.gitignore +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/.npmignore +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/ARCHITECTURE.md +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/CODEOWNERS +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/COPYRIGHT.md +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/LICENSE +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/MANIFEST.in +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/Makefile +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/NOTICE +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/PLUGINS.md +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/README.md +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630.xsd +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_cal.xml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_d2.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_def.xml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_g1.jpg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_lab.xml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_pre.xml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex21subsidiaries.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex23accountingfirmc.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex311ceocertificati.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex312cfocertificati.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex32ceocfocertifica.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex992reconofeconomi.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/clorox-2022-10-K-ixbrl-viewer/ixbrl-viewer.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/example_plugin/README.md +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/example_plugin/example-plugin.gif +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/example_plugin/extended-viewer.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/example_plugin/index.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/example_plugin/package-lock.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/example_plugin/package.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/example_plugin/webpack.config.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/ixbrl-viewer-demo.gif +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/review-mode.png +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/workiva-january-2023-8-k-ixbrl-viewer/exhibit31abylawsofworkivai.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/workiva-january-2023-8-k-ixbrl-viewer/exhibit31bbylawsofworkivai.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/workiva-january-2023-8-k-ixbrl-viewer/ixbrl-viewer.htm +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109.xsd +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109_lab.xml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109_pre.xml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/plugin.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/stubviewer.html +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/ui.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/i18n/en/currencies.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/i18n/en/referenceparts.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/i18n/es/currencies.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/i18n/es/referenceparts.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/arrow-down.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/arrow-up.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/calculator.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/chevron-down.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/chevron-left.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/chevron-right.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/chevron-up.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/circle-cross.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/circle-tick.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/clipboard.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/close.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/cog.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/dimension-member.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/dimension.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/download.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/filter.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/graph.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/member.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/multi-tag.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/outline.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/print.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/question.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/search.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/select.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/summary.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/tag.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/text-block.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/tick.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/icons/warning.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/img/arelle.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/img/favicon.ico +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/img/inline-viewer.png +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/img/inline-viewer.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/img/powered-by-workiva.png +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/img/powered-by-workiva.svg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/aspect.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/calculation.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/calculation.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/calculationInspector.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/chart.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/docOrderIndex.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/factset.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/factset.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/footnote.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/identifiers.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/identifiers.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/interval.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/interval.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/ixnode.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/messagebox.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/moment-jest.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/number-matcher-preprocess.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/number-matcher.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/number-matcher.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/outline.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/period.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/period.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/qname.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/summary.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/test-utils.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/textblockviewer.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/unit.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/util.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/validationreport.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/js/viewerOptions.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/clearfix.less +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/fonts.less +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/icons.less.njk +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/src/less/text-block-viewer.less +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/tools/build-font.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/version.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/webpack.common.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/webpack.dev.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/viewer/webpack.prod.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/iXBRLViewerPlugin/xhtmlserialize.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/ixbrl_viewer.egg-info/dependency_links.txt +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/ixbrl_viewer.egg-info/entry_points.txt +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/ixbrl_viewer.egg-info/requires.txt +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/ixbrl_viewer.egg-info/top_level.txt +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/jest.config.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/package-lock.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/package.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/pyproject.toml +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/Makefile +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/Makefile-src +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/fetch-sample-files.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/sample-files.list +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/continuation/continuation.html +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/ixds-test/document1.html +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/ixds-test/faurecia.html +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/ixds-test/valeo.html +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/scrollable-div/scrollable-div.html +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/testdoc/build.sh +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/testdoc/example.xsd +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/testdoc/labels.json +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/testdoc/testdoc.ixtmpl +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/samples/src/xbrl-invalid-tests/xbrl-invalid-test.html +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/setup.cfg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/__init__.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/framework/core_elements.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/framework/page_objects/fact_details_panel.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/framework/page_objects/search_panel.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/framework/page_objects/toolbar.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/framework/utils.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/framework/viewer_page.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/puppeteer_test_run_via_intellij.jpg +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/test_filings/filing_documents_smoke_test.zip +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/test_filings/highlights.zip +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/tests/highlight.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/tests/search.test.js +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/puppeteer/tools/generate.sh +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/unit_tests/__init__.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/unit_tests/iXBRLViewerPlugin/__init__.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/unit_tests/iXBRLViewerPlugin/mock_arelle.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tests/unit_tests/iXBRLViewerPlugin/test_xhtmlserialize.py +0 -0
- {ixbrl_viewer-1.4.39 → ixbrl_viewer-1.4.41}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ixbrl-viewer
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.41
|
|
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
|
|
@@ -296,6 +296,34 @@ This mode replaces the namespace-based highlighting with optional highlighting b
|
|
|
296
296
|
|---------------------------|----------------|
|
|
297
297
|
| `--viewer-feature-review` | `?review=true` |
|
|
298
298
|
|
|
299
|
+
# Runtime config
|
|
300
|
+
|
|
301
|
+
When launched, the viewer will check for the existence of
|
|
302
|
+
`ixbrlviewer.config.json` in the same directory as `ixbrlviewer.js`. If found,
|
|
303
|
+
this will be loaded and used to configure the viewer.
|
|
304
|
+
|
|
305
|
+
The file supports the following keys:
|
|
306
|
+
|
|
307
|
+
* `features` - a JSON object containing defaults for features. These will be
|
|
308
|
+
overridden by features defined at generation time, and then by query
|
|
309
|
+
parameters, as defined above.
|
|
310
|
+
|
|
311
|
+
* `skin` - a JSON object supporting the following keys:
|
|
312
|
+
|
|
313
|
+
* `stylesheetUrl` - a URL to additional CSS definitions.
|
|
314
|
+
* `faviconUrl` - a URL to an icon file to be used as the favicon for the viewer.
|
|
315
|
+
* `footerLogoHtml` - a fragment of HTML that will be included in place of the standard footer logo.
|
|
316
|
+
|
|
317
|
+
* `taxonomyNames` - a JSON object where:
|
|
318
|
+
|
|
319
|
+
* Keys are strings that will be treated as a regular expression to match
|
|
320
|
+
against a namespace.
|
|
321
|
+
* Values are an array of (prefix, name) where "prefix" is the preferred
|
|
322
|
+
namespace prefix for the namespace, and "name" is a short descriptive
|
|
323
|
+
name for the taxonomy.
|
|
324
|
+
|
|
325
|
+
Relative URLs defined in the config file are resolved relative to the config file.
|
|
326
|
+
|
|
299
327
|
# Disable viewer loading
|
|
300
328
|
|
|
301
329
|
Loading of the viewer can be disabled by specifying `?disable-viewer` as a
|
|
@@ -303,9 +331,9 @@ query parameter. This will leave the iXBRL document loaded in the browser, but
|
|
|
303
331
|
without any viewer functionality. In the case of an iXBRL document set, or
|
|
304
332
|
multi-document viewer, the first document will be shown.
|
|
305
333
|
|
|
306
|
-
|
|
334
|
+
# Running tests
|
|
307
335
|
|
|
308
|
-
|
|
336
|
+
## Running unit tests
|
|
309
337
|
|
|
310
338
|
In order to run the javascript unit tests make sure that you have installed all of the npm requirements.
|
|
311
339
|
|
|
@@ -315,7 +343,7 @@ In order to run the python unit tests make sure that you have pip installed requ
|
|
|
315
343
|
|
|
316
344
|
Run the following command to run python unit tests: `pytest tests/unit_tests`
|
|
317
345
|
|
|
318
|
-
|
|
346
|
+
## Running Puppeteer tests
|
|
319
347
|
|
|
320
348
|
All commands should be run from repository root
|
|
321
349
|
|
|
@@ -255,6 +255,34 @@ This mode replaces the namespace-based highlighting with optional highlighting b
|
|
|
255
255
|
|---------------------------|----------------|
|
|
256
256
|
| `--viewer-feature-review` | `?review=true` |
|
|
257
257
|
|
|
258
|
+
# Runtime config
|
|
259
|
+
|
|
260
|
+
When launched, the viewer will check for the existence of
|
|
261
|
+
`ixbrlviewer.config.json` in the same directory as `ixbrlviewer.js`. If found,
|
|
262
|
+
this will be loaded and used to configure the viewer.
|
|
263
|
+
|
|
264
|
+
The file supports the following keys:
|
|
265
|
+
|
|
266
|
+
* `features` - a JSON object containing defaults for features. These will be
|
|
267
|
+
overridden by features defined at generation time, and then by query
|
|
268
|
+
parameters, as defined above.
|
|
269
|
+
|
|
270
|
+
* `skin` - a JSON object supporting the following keys:
|
|
271
|
+
|
|
272
|
+
* `stylesheetUrl` - a URL to additional CSS definitions.
|
|
273
|
+
* `faviconUrl` - a URL to an icon file to be used as the favicon for the viewer.
|
|
274
|
+
* `footerLogoHtml` - a fragment of HTML that will be included in place of the standard footer logo.
|
|
275
|
+
|
|
276
|
+
* `taxonomyNames` - a JSON object where:
|
|
277
|
+
|
|
278
|
+
* Keys are strings that will be treated as a regular expression to match
|
|
279
|
+
against a namespace.
|
|
280
|
+
* Values are an array of (prefix, name) where "prefix" is the preferred
|
|
281
|
+
namespace prefix for the namespace, and "name" is a short descriptive
|
|
282
|
+
name for the taxonomy.
|
|
283
|
+
|
|
284
|
+
Relative URLs defined in the config file are resolved relative to the config file.
|
|
285
|
+
|
|
258
286
|
# Disable viewer loading
|
|
259
287
|
|
|
260
288
|
Loading of the viewer can be disabled by specifying `?disable-viewer` as a
|
|
@@ -262,9 +290,9 @@ query parameter. This will leave the iXBRL document loaded in the browser, but
|
|
|
262
290
|
without any viewer functionality. In the case of an iXBRL document set, or
|
|
263
291
|
multi-document viewer, the first document will be shown.
|
|
264
292
|
|
|
265
|
-
|
|
293
|
+
# Running tests
|
|
266
294
|
|
|
267
|
-
|
|
295
|
+
## Running unit tests
|
|
268
296
|
|
|
269
297
|
In order to run the javascript unit tests make sure that you have installed all of the npm requirements.
|
|
270
298
|
|
|
@@ -274,7 +302,7 @@ In order to run the python unit tests make sure that you have pip installed requ
|
|
|
274
302
|
|
|
275
303
|
Run the following command to run python unit tests: `pytest tests/unit_tests`
|
|
276
304
|
|
|
277
|
-
|
|
305
|
+
## Running Puppeteer tests
|
|
278
306
|
|
|
279
307
|
All commands should be run from repository root
|
|
280
308
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skin": {
|
|
3
|
+
"stylesheetUrl": "./myskin.css",
|
|
4
|
+
"footerLogoHtml": "<b>Footer override</b>"
|
|
5
|
+
},
|
|
6
|
+
"features": {
|
|
7
|
+
"support_link": "https://www.example.com/getSupport",
|
|
8
|
+
"survey_link": "http://www.example.com/survey"
|
|
9
|
+
},
|
|
10
|
+
"taxonomyNames": {
|
|
11
|
+
"http://xbrl\\.frc\\.org\\.uk/cd/(\\d{4})-\\d{2}-\\d{2}/business": ["uk-bus", "UK Business"],
|
|
12
|
+
"http://xbrl\\.frc\\.org\\.uk/fr/(\\d{4})-\\d{2}-\\d{2}/core": ["uk-core", "UK Core"],
|
|
13
|
+
"http://xbrl\\.frc\\.org\\.uk/general/(\\d{4})-\\d{2}-\\d{2}/types": ["uk-types", "UK Types"],
|
|
14
|
+
"http://xbrl\\.frc\\.org\\.uk/reports/(\\d{4})-\\d{2}-\\d{2}/direp": ["uk-direp", "UK Directors' Report"],
|
|
15
|
+
"http://xbrl\\.frc\\.org\\.uk/reports/(\\d{4})-\\d{2}-\\d{2}/accrep": ["uk-accrep", "UK Accountant's Report"],
|
|
16
|
+
"http://xbrl\\.frc\\.org\\.uk/reports/(\\d{4})-\\d{2}-\\d{2}/aurep": ["uk-aurep", "UK Auditor's Report"],
|
|
17
|
+
"http://xbrl\\.frc\\.org\\.uk/cd/(\\d{4})-\\d{2}-\\d{2}/countries": ["uk-countries", "UK Countries"],
|
|
18
|
+
"http://xbrl\\.frc\\.org\\.uk/cd/(\\d{4})-\\d{2}-\\d{2}/currencies": ["uk-curr", "UK Currencies"],
|
|
19
|
+
"http://xbrl\\.frc\\.org\\.uk/cd/(\\d{4})-\\d{2}-\\d{2}/languages": ["uk-lang", "UK Languages"],
|
|
20
|
+
"http://xbrl\\.frc\\.org\\.uk/dpl/(\\d{4})-\\d{2}-\\d{2}": ["uk-dpl", "UK Detailed Profit & Loss"],
|
|
21
|
+
"http://xbrl\\.frc\\.org\\.uk/general/(\\d{4})-\\d{2}-\\d{2}/common": ["uk-common", "UK Common"]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -10,6 +10,7 @@ import tempfile
|
|
|
10
10
|
import traceback
|
|
11
11
|
from optparse import OptionGroup, OptionParser
|
|
12
12
|
from pathlib import Path
|
|
13
|
+
from typing import Any
|
|
13
14
|
|
|
14
15
|
from arelle import Cntlr
|
|
15
16
|
from arelle.LocalViewer import LocalViewer
|
|
@@ -100,8 +101,14 @@ def iXBRLViewerCommandLineOptionExtender(parser, *args, **kwargs):
|
|
|
100
101
|
featureGroup = OptionGroup(parser, "Viewer Features",
|
|
101
102
|
"See viewer README for information on enabling/disabling features.")
|
|
102
103
|
for featureConfig in FEATURE_CONFIGS:
|
|
103
|
-
arg = f'--viewer-feature-{featureConfig.key}'
|
|
104
|
-
featureGroup.add_option(
|
|
104
|
+
arg = f'--viewer-feature-{featureConfig.key}'.replace('_', '-')
|
|
105
|
+
featureGroup.add_option(
|
|
106
|
+
arg,
|
|
107
|
+
arg.lower(),
|
|
108
|
+
action=featureConfig.cliAction,
|
|
109
|
+
default=featureConfig.cliDefault,
|
|
110
|
+
help=featureConfig.description
|
|
111
|
+
)
|
|
105
112
|
parser.add_option_group(featureGroup)
|
|
106
113
|
|
|
107
114
|
def pluginData(cntlr: Cntlr):
|
|
@@ -130,7 +137,6 @@ def generateViewer(
|
|
|
130
137
|
viewerURL: str | None = None,
|
|
131
138
|
showValidationMessages: bool = False,
|
|
132
139
|
zipViewerOutput: bool = False,
|
|
133
|
-
features: list[str] | None = None,
|
|
134
140
|
packageDownloadURL: str | None = None,
|
|
135
141
|
copyScript: bool = True,
|
|
136
142
|
) -> None:
|
|
@@ -143,7 +149,6 @@ def generateViewer(
|
|
|
143
149
|
:param showValidationMessages: True if validation messages should be shown in the viewer.
|
|
144
150
|
:param useStubViewer: True if the stub viewer should be used.
|
|
145
151
|
:param zipViewerOutput: True if the destination is a zip archive.
|
|
146
|
-
:param features: Optional list of features to enable.
|
|
147
152
|
:param packageDownloadURL: Optional URL to use as the report package download URL.
|
|
148
153
|
:param copyScript: Controls if the script referenced by viewerURL is copied into the output directory, or directly set as the 'src' value of the script tag in the HTML iXBRL Viewer.
|
|
149
154
|
"""
|
|
@@ -185,9 +190,6 @@ def generateViewer(
|
|
|
185
190
|
return
|
|
186
191
|
|
|
187
192
|
try:
|
|
188
|
-
if features:
|
|
189
|
-
for feature in features:
|
|
190
|
-
bldr.enableFeature(feature)
|
|
191
193
|
iv = bldr.createViewer(scriptUrl=viewerURL, showValidations=showValidationMessages, packageDownloadURL=packageDownloadURL)
|
|
192
194
|
if iv is not None:
|
|
193
195
|
iv.save(saveViewerDest, zipOutput=zipViewerOutput, copyScriptPath=copyScriptPath)
|
|
@@ -199,17 +201,21 @@ def generateViewer(
|
|
|
199
201
|
resetPluginData(cntlr)
|
|
200
202
|
|
|
201
203
|
|
|
202
|
-
def getFeaturesFromOptions(options: argparse.Namespace | OptionParser):
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
204
|
+
def getFeaturesFromOptions(options: argparse.Namespace | OptionParser) -> dict[str, Any]:
|
|
205
|
+
features = {}
|
|
206
|
+
for featureConfig in FEATURE_CONFIGS:
|
|
207
|
+
key = featureConfig.key
|
|
208
|
+
option = f'viewer_feature_{key}'
|
|
209
|
+
value = getattr(options, option, None)
|
|
210
|
+
if value is not None:
|
|
211
|
+
features[key] = value
|
|
212
|
+
return features
|
|
213
|
+
|
|
208
214
|
|
|
209
215
|
def iXBRLViewerCommandLineXbrlRun(cntlr, options, modelXbrl, *args, **kwargs):
|
|
210
216
|
pd = pluginData(cntlr)
|
|
211
217
|
if pd.builder is None:
|
|
212
|
-
pd.builder = IXBRLViewerBuilder(cntlr, useStubViewer = options.useStubViewer)
|
|
218
|
+
pd.builder = IXBRLViewerBuilder(cntlr, useStubViewer = options.useStubViewer, features=getFeaturesFromOptions(options))
|
|
213
219
|
processModel(cntlr, modelXbrl)
|
|
214
220
|
|
|
215
221
|
def iXBRLViewerCommandLineFilingEnd(cntlr, options, *args, **kwargs):
|
|
@@ -220,7 +226,6 @@ def iXBRLViewerCommandLineFilingEnd(cntlr, options, *args, **kwargs):
|
|
|
220
226
|
copyScript=not options.viewerNoCopyScript,
|
|
221
227
|
showValidationMessages=options.validationMessages,
|
|
222
228
|
zipViewerOutput=options.zipViewerOutput,
|
|
223
|
-
features=getFeaturesFromOptions(options),
|
|
224
229
|
packageDownloadURL=options.packageDownloadURL,
|
|
225
230
|
)
|
|
226
231
|
|
|
@@ -315,19 +320,17 @@ def guiRun(cntlr, modelXbrl, attach, *args, **kwargs):
|
|
|
315
320
|
global tempViewer
|
|
316
321
|
tempViewer = tempfile.TemporaryDirectory()
|
|
317
322
|
viewer_file_name = DEFAULT_OUTPUT_NAME
|
|
318
|
-
features =
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
pluginData(cntlr).builder = IXBRLViewerBuilder(cntlr, useStubViewer = True)
|
|
323
|
+
features = {}
|
|
324
|
+
for featureConfig in FEATURE_CONFIGS:
|
|
325
|
+
if cntlr.config.setdefault(f'{CONFIG_FEATURE_PREFIX}{featureConfig.key}', False):
|
|
326
|
+
features[featureConfig.key] = True
|
|
327
|
+
pluginData(cntlr).builder = IXBRLViewerBuilder(cntlr, useStubViewer=True, features=features)
|
|
324
328
|
processModel(cntlr, modelXbrl)
|
|
325
329
|
generateViewer(
|
|
326
330
|
cntlr=cntlr,
|
|
327
331
|
saveViewerDest=tempViewer.name,
|
|
328
332
|
viewerURL=cntlr.config.get(CONFIG_SCRIPT_URL),
|
|
329
333
|
copyScript=cntlr.config.get(CONFIG_COPY_SCRIPT, DEFAULT_COPY_SCRIPT),
|
|
330
|
-
features=features,
|
|
331
334
|
)
|
|
332
335
|
if Path(tempViewer.name, viewer_file_name).exists():
|
|
333
336
|
localViewer = iXBRLViewerLocalViewer("iXBRL Viewer", os.path.dirname(__file__))
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# See COPYRIGHT.md for copyright information
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
from .featureConfig import FeatureConfig
|
|
6
|
+
|
|
7
|
+
CONFIG_FEATURE_PREFIX = 'iXBRLViewerFeature_'
|
|
8
|
+
CONFIG_FILE_DIRECTORY = 'iXBRLViewerFileDir'
|
|
9
|
+
CONFIG_LAUNCH_ON_LOAD = 'iXBRLViewerLaunchOnLoad'
|
|
10
|
+
CONFIG_COPY_SCRIPT = 'iXBRLViewerCopyScript'
|
|
11
|
+
CONFIG_OUTPUT_FILE = 'iXBRLViewerOutputFile'
|
|
12
|
+
CONFIG_SCRIPT_URL = 'iXBRLViewerScriptURL'
|
|
13
|
+
CONFIG_ZIP_OUTPUT = 'iXBRLViewerZipOutput'
|
|
14
|
+
|
|
15
|
+
ERROR_MESSAGE_CODE = 'viewer:error'
|
|
16
|
+
EXCEPTION_MESSAGE_CODE = 'viewer:exception'
|
|
17
|
+
INFO_MESSAGE_CODE = 'viewer:info'
|
|
18
|
+
|
|
19
|
+
DEFAULT_LAUNCH_ON_LOAD = True
|
|
20
|
+
DEFAULT_COPY_SCRIPT = True
|
|
21
|
+
DEFAULT_OUTPUT_NAME = 'ixbrlviewer.html'
|
|
22
|
+
DEFAULT_JS_FILENAME = 'ixbrlviewer.js'
|
|
23
|
+
DEFAULT_VIEWER_PATH = os.path.join(os.path.dirname(__file__), "viewer", "dist", DEFAULT_JS_FILENAME)
|
|
24
|
+
|
|
25
|
+
FEATURE_CONFIGS = [
|
|
26
|
+
FeatureConfig(
|
|
27
|
+
key='home_link_label',
|
|
28
|
+
label='Home Link (Label)',
|
|
29
|
+
description='Customizes the label of the "Home" link enabled by "home_link_url".',
|
|
30
|
+
cliAction='store',
|
|
31
|
+
cliDefault=None,
|
|
32
|
+
guiVisible=False,
|
|
33
|
+
guiDefault=None,
|
|
34
|
+
),
|
|
35
|
+
FeatureConfig(
|
|
36
|
+
key='home_link_url',
|
|
37
|
+
label='Home Link (URL)',
|
|
38
|
+
description='Adds a "Home" link that directs to the specified URL. Label can be customized with "home_link_label".',
|
|
39
|
+
cliAction='store',
|
|
40
|
+
cliDefault=None,
|
|
41
|
+
guiVisible=False,
|
|
42
|
+
guiDefault=None,
|
|
43
|
+
),
|
|
44
|
+
FeatureConfig(
|
|
45
|
+
key='support_link',
|
|
46
|
+
label='Support Link',
|
|
47
|
+
description='Adds a "Support" link that directs to the specified URL.',
|
|
48
|
+
cliAction='store',
|
|
49
|
+
cliDefault=None,
|
|
50
|
+
guiVisible=False,
|
|
51
|
+
guiDefault=None,
|
|
52
|
+
),
|
|
53
|
+
FeatureConfig(
|
|
54
|
+
key='survey_link',
|
|
55
|
+
label='Survey Link',
|
|
56
|
+
description='Adds a "Survey" link that directs to the specified URL.',
|
|
57
|
+
cliAction='store',
|
|
58
|
+
cliDefault=None,
|
|
59
|
+
guiVisible=False,
|
|
60
|
+
guiDefault=None,
|
|
61
|
+
),
|
|
62
|
+
FeatureConfig(
|
|
63
|
+
key='review',
|
|
64
|
+
label='Review Mode',
|
|
65
|
+
description='Enables highlighting of untagged numbers and dates.',
|
|
66
|
+
cliAction='store_true',
|
|
67
|
+
cliDefault=False,
|
|
68
|
+
guiVisible=True,
|
|
69
|
+
guiDefault=False
|
|
70
|
+
),
|
|
71
|
+
FeatureConfig(
|
|
72
|
+
key='mandatory_facts',
|
|
73
|
+
label='Mandatory Facts',
|
|
74
|
+
description='Enables the display of mandatory facts for the selected taxonomy.',
|
|
75
|
+
cliAction='store',
|
|
76
|
+
cliDefault=None,
|
|
77
|
+
guiVisible=False,
|
|
78
|
+
guiDefault=None
|
|
79
|
+
),
|
|
80
|
+
FeatureConfig(
|
|
81
|
+
key='search_on_startup',
|
|
82
|
+
label='Search on startup',
|
|
83
|
+
description='Show the search pane by default on startup',
|
|
84
|
+
cliAction='store_true',
|
|
85
|
+
cliDefault=None,
|
|
86
|
+
guiVisible=False,
|
|
87
|
+
guiDefault=None
|
|
88
|
+
),
|
|
89
|
+
FeatureConfig(
|
|
90
|
+
key='highlight_facts_on_startup',
|
|
91
|
+
label='Highlight facts on startup',
|
|
92
|
+
description='Default "Highlight all facts" to on',
|
|
93
|
+
cliAction='store_true',
|
|
94
|
+
cliDefault=None,
|
|
95
|
+
guiVisible=False,
|
|
96
|
+
guiDefault=None
|
|
97
|
+
)
|
|
98
|
+
]
|
|
99
|
+
GUI_FEATURE_CONFIGS = [c for c in FEATURE_CONFIGS if c.guiVisible]
|
|
100
|
+
|
|
101
|
+
MANDATORY_FACTS = {
|
|
102
|
+
"companies-house": [
|
|
103
|
+
"UKCompaniesHouseRegisteredNumber",
|
|
104
|
+
"EntityCurrentLegalOrRegisteredName",
|
|
105
|
+
"BalanceSheetDate",
|
|
106
|
+
"DateAuthorisationFinancialStatementsForIssue",
|
|
107
|
+
"DirectorSigningFinancialStatements",
|
|
108
|
+
"EntityDormantTruefalse",
|
|
109
|
+
"EntityTradingStatus",
|
|
110
|
+
"AccountsStatusAuditedOrUnaudited",
|
|
111
|
+
"AccountsTypeFullOrAbbreviated",
|
|
112
|
+
"AccountingStandardsApplied",
|
|
113
|
+
"LegalFormEntity",
|
|
114
|
+
"StartDateForPeriodCoveredByReport",
|
|
115
|
+
"EndDateForPeriodCoveredByReport",
|
|
116
|
+
"CharityRegistrationNumberEnglandWales",
|
|
117
|
+
"CharityRegistrationNumberScotland",
|
|
118
|
+
"CharityRegistrationNumberNorthernIreland"
|
|
119
|
+
]
|
|
120
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
|
+
from typing import Any
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
@dataclass(frozen=True, repr=False, eq=False)
|
|
@@ -6,5 +7,7 @@ class FeatureConfig:
|
|
|
6
7
|
key: str
|
|
7
8
|
label: str
|
|
8
9
|
description: str
|
|
10
|
+
cliAction: str
|
|
11
|
+
cliDefault: Any
|
|
9
12
|
guiVisible: bool
|
|
10
|
-
guiDefault:
|
|
13
|
+
guiDefault: Any
|
|
@@ -13,6 +13,7 @@ import zipfile
|
|
|
13
13
|
from collections import defaultdict
|
|
14
14
|
from copy import deepcopy
|
|
15
15
|
from pathlib import Path
|
|
16
|
+
from typing import Any
|
|
16
17
|
|
|
17
18
|
from arelle import XbrlConst
|
|
18
19
|
from arelle.ModelDocument import ModelDocument, Type
|
|
@@ -23,7 +24,7 @@ from arelle.UrlUtil import isHttpUrl
|
|
|
23
24
|
from arelle.ValidateXbrlCalcs import inferredDecimals
|
|
24
25
|
from lxml import etree
|
|
25
26
|
|
|
26
|
-
from .constants import DEFAULT_JS_FILENAME, DEFAULT_OUTPUT_NAME, ERROR_MESSAGE_CODE, FEATURE_CONFIGS, INFO_MESSAGE_CODE
|
|
27
|
+
from .constants import DEFAULT_JS_FILENAME, DEFAULT_OUTPUT_NAME, ERROR_MESSAGE_CODE, FEATURE_CONFIGS, INFO_MESSAGE_CODE, MANDATORY_FACTS
|
|
27
28
|
from .xhtmlserialize import XHTMLSerializer
|
|
28
29
|
|
|
29
30
|
REPORT_TYPE_EXTENSIONS = ('.xbrl', '.xhtml', '.html', '.htm', '.json')
|
|
@@ -89,13 +90,20 @@ class IXBRLViewerBuilder:
|
|
|
89
90
|
cntlr: Cntlr,
|
|
90
91
|
basenameSuffix: str = '',
|
|
91
92
|
useStubViewer: bool = False,
|
|
93
|
+
features: dict[str, Any] | None = None,
|
|
92
94
|
):
|
|
95
|
+
if features is None:
|
|
96
|
+
features = {}
|
|
97
|
+
featureNames = {c.key for c in FEATURE_CONFIGS}
|
|
98
|
+
for featureName in features:
|
|
99
|
+
assert featureName in featureNames, \
|
|
100
|
+
f'Given feature name `{featureName}` does not match any defined features: {featureNames}'
|
|
93
101
|
self.reportZip = None
|
|
94
102
|
self.nsmap = NamespaceMap()
|
|
95
103
|
self.roleMap = NamespaceMap()
|
|
96
104
|
self.taxonomyData = {
|
|
97
105
|
"sourceReports": [],
|
|
98
|
-
"features":
|
|
106
|
+
"features": features,
|
|
99
107
|
}
|
|
100
108
|
self.basenameSuffix = basenameSuffix
|
|
101
109
|
self.currentTargetReport = None
|
|
@@ -120,14 +128,6 @@ class IXBRLViewerBuilder:
|
|
|
120
128
|
self.reportCount = 0
|
|
121
129
|
self.assets = []
|
|
122
130
|
|
|
123
|
-
def enableFeature(self, featureName: str):
|
|
124
|
-
if featureName in self.taxonomyData["features"]:
|
|
125
|
-
return
|
|
126
|
-
featureNames = [c.key for c in FEATURE_CONFIGS]
|
|
127
|
-
assert featureName in featureNames, \
|
|
128
|
-
f'Given feature name `{featureName}` does not match any defined features: {featureNames}'
|
|
129
|
-
self.taxonomyData["features"].append(featureName)
|
|
130
|
-
|
|
131
131
|
def outputFilename(self, filename):
|
|
132
132
|
(base, ext) = os.path.splitext(filename)
|
|
133
133
|
return base + self.basenameSuffix + ext
|
|
@@ -155,7 +155,7 @@ class IXBRLViewerBuilder:
|
|
|
155
155
|
"""
|
|
156
156
|
return s.replace("<","\\u003C").replace(">","\\u003E").replace("&","\\u0026")
|
|
157
157
|
|
|
158
|
-
def
|
|
158
|
+
def addRoleDefinition(self, report: ModelXbrl, elr):
|
|
159
159
|
prefix = self.roleMap.getPrefix(elr)
|
|
160
160
|
if self.currentTargetReport.setdefault("roleDefs",{}).get(prefix, None) is None:
|
|
161
161
|
rts = report.roleTypes.get(elr, [])
|
|
@@ -176,6 +176,7 @@ class IXBRLViewerBuilder:
|
|
|
176
176
|
for lr in labels:
|
|
177
177
|
l = lr.toModelObject
|
|
178
178
|
conceptData["labels"].setdefault(self.roleMap.getPrefix(l.role),{})[l.xmlLang.lower()] = l.text;
|
|
179
|
+
self.addRoleDefinition(report, l.role)
|
|
179
180
|
|
|
180
181
|
refData = []
|
|
181
182
|
for _refRel in concept.modelXbrl.relationshipSet(XbrlConst.conceptReference).fromModelObject(concept):
|
|
@@ -193,9 +194,15 @@ class IXBRLViewerBuilder:
|
|
|
193
194
|
if concept.isEnumeration:
|
|
194
195
|
conceptData["e"] = True
|
|
195
196
|
|
|
196
|
-
if concept.
|
|
197
|
+
if concept.isTextBlock:
|
|
197
198
|
conceptData['t'] = True
|
|
198
199
|
|
|
200
|
+
if concept.balance is not None:
|
|
201
|
+
conceptData['b'] = concept.balance
|
|
202
|
+
|
|
203
|
+
if concept.type is not None:
|
|
204
|
+
conceptData['dt'] = self.nsmap.qname(concept.type.qname)
|
|
205
|
+
|
|
199
206
|
if concept.isTypedDimension:
|
|
200
207
|
typedDomainElement = concept.typedDomainElement
|
|
201
208
|
if typedDomainElement is not None:
|
|
@@ -216,7 +223,7 @@ class IXBRLViewerBuilder:
|
|
|
216
223
|
for baseSetKey, baseSetModelLinks in report.baseSets.items():
|
|
217
224
|
arcrole, ELR, linkqname, arcqname = baseSetKey
|
|
218
225
|
if arcrole in (XbrlConst.summationItem, XbrlConst.summationItem11, WIDER_NARROWER_ARCROLE, XbrlConst.parentChild, XbrlConst.dimensionDefault) and ELR is not None:
|
|
219
|
-
self.
|
|
226
|
+
self.addRoleDefinition(report, ELR)
|
|
220
227
|
rr = dict()
|
|
221
228
|
relSet = report.relationshipSet(arcrole, ELR)
|
|
222
229
|
for r in relSet.modelRelationships:
|
|
@@ -256,11 +263,14 @@ class IXBRLViewerBuilder:
|
|
|
256
263
|
|
|
257
264
|
self.idGen += 1
|
|
258
265
|
conceptName = self.nsmap.qname(f.qname)
|
|
266
|
+
factList = MANDATORY_FACTS.get(self.taxonomyData["features"].get("mandatory_facts"), [])
|
|
267
|
+
isMandatory = f.qname.localName in factList
|
|
259
268
|
scheme, ident = f.context.entityIdentifier
|
|
260
269
|
|
|
261
270
|
aspects = {
|
|
262
271
|
"c": conceptName,
|
|
263
272
|
"e": self.nsmap.qname(QName(self.nsmap.getPrefix(scheme,"e"), scheme, ident)),
|
|
273
|
+
"m": isMandatory
|
|
264
274
|
}
|
|
265
275
|
|
|
266
276
|
factData = {
|
|
@@ -414,7 +424,11 @@ class IXBRLViewerBuilder:
|
|
|
414
424
|
if softwareCredits:
|
|
415
425
|
self.currentTargetReport["softwareCredits"] = list(softwareCredits)
|
|
416
426
|
for f in report.facts:
|
|
417
|
-
|
|
427
|
+
if f.isTuple:
|
|
428
|
+
for nestedTupleFact in f.ixIter():
|
|
429
|
+
self.addFact(report, nestedTupleFact)
|
|
430
|
+
else:
|
|
431
|
+
self.addFact(report, f)
|
|
418
432
|
self.currentTargetReport["rels"] = self.getRelationships(report)
|
|
419
433
|
|
|
420
434
|
docSetFiles = None
|