Arches Modular Reports is an Arches Application that provides an alternate and more modular way to present and configure reports in Arches.
Please see the project page for more information on the Arches project.
If you are installing Arches Modular Reports for the first time, we strongly recommend that you install it as an Arches application into an existing (or new) project. Running Arches Modular Reports as a standalone project can provide some convenience if you are a developer contributing to the Arches Modular Reports project but you risk conflicts when upgrading to the next version of Arches Modular Reports.
Clone the arches-modular-reports repo and checkout the latest dev/x.x.x
or any other branch you may be interested in.
Navigate to the arches-modular-reports
directory from your terminal and run the following commands:
pip install -e . --group dev
pre-commit install
Important
: Installing the arches-modular-reports app will install Arches as a dependency. This may replace your current install of Arches with a version from PyPi. If you've installed Arches for development using the --editable
flag, you'll need to reinstall Arches using the --editable
flag again after installing arches-modular-reports.
pip install arches-modular-reports
-
If you don't already have an Arches project, you'll need to create one by following the instructions in the Arches documentation.
-
When your project is ready add "rest_framework", "arches_modular_reports", "arches_querysets", and "arches_component_lab" to INSTALLED_APPS below the name of your project:
INSTALLED_APPS = ( ... "my_project_name", "rest_framework", "arches_modular_reports", "arches_querysets", "arches_component_lab", )
-
Next ensure arches, arches_modular_reports are included as dependencies in package.json
"dependencies": { "arches": "archesproject/arches#stable/7.6.12", "arches-modular-reports": "archesproject/arches-modular-reports#beta/1.0.0b0" }
-
Update urls.py to include the arches-modular-reports urls
urlpatterns = [ ... ] urlpatterns.append(path("", include("arches_modular_reports.urls"))) # Ensure Arches core urls are superseded by project-level urls urlpatterns.append(path("", include("arches.urls")))
-
Run migrations
python manage.py migrate
-
Start your project
python manage.py runserver
-
Next cd into your project's app directory (the one with package.json) install and build front-end dependencies:
npm install npm run build_development
Once you've installed the Arches Modular Report Application into your project you'll notice a new report template available called "Modular Report Template".
-
Select a Graph in the graph designer that you'd like to use with the new modular reports.
-
Navigate to the "Cards" tab, select the root node and select the "Modular Report Template" from the Report Configuration section on the right.
-
Next go to the admin page and login.
-
Click on the "+ Add" button next to the item called "Report configs" under the "Arches Modular Reports" section.
-
You'll be presented with a large "Config" section that should only contain empty curly brackets "{}". Below that is a dropdown with a listing of graphs available in your project. Select the graph you chose earlier in step 1 and then click the button that says "Save and continue editing".
-
Notice that the "Config" section is populated with a default configuration.
-
If you view a report of the type of graph set up to use the new template you should notice that it is now using the new report template and has a different appearance.
This document explains the structure and purpose of a JSON configuration used to define custom reports in Arches. It breaks down key components and their configuration properties to help you understand how to control the layout and display of resource data.
At a high level, the configuration defines a report with a name and a list of UI components that will be rendered in the report interface.
{
"name": "Untitled Report",
"components": [ ... ]
}
Each entry in the components
array defines a section of the report interface, such as the header, toolbar, tombstone (summary), or tabs.
Displays the report title or descriptor. The descriptor can include references to node values by referencing the node_alias from within <>
brackets.
Additionally, if a node in brackets contains more than 1 entry (eg: concept-list or resource-instance-list) then the number of those values can be limited via the node_alias_options
property and a separator character can be specified.
{
"component": "ReportHeader",
"config": {
"descriptor": "<name_node> - born on <date_of_birth>",
"node_alias_options": {
"name_node": {
"limit": 3,
"separator": "|"
}
}
}
}
Adds export buttons and list tools to the report.
{
"component": "ReportToolbar",
"config": {
"lists": true,
"export_formats": ["csv", "json-ld", "json"]
}
}
Displays a summary or key metadata for the resource.
{
"component": "ReportTombstone",
"config": {
"node_aliases": [],
"custom_labels": {},
"image_node_alias": null <-- unused
}
}
Defines tabs for organizing the main content of the report.
{
"component": "ReportTabs",
"config": {
"tabs": [ ... ]
}
}
Each tab contains components — typically LinkedSections
— that organize content into visual sections.
Used within tabs to group and render multiple content sections.
Each section
has a name and an array of components like DataSection
or RelatedResourcesSection
.
Displays a group of nodes from the main resource graph. DataSection objects can be grouped together under a common name within LinkedSection components. By default, top-level node groups will appear as individual sections each with its own DataSection in the "Data" tab.
{
"component": "DataSection",
"config": {
"node_aliases": ["color"],
"custom_labels": {},
"nodegroup_alias": "physical_characteristics",
"custom_card_name": "Physical Description"
}
}
Displays resources related to this resource instance based on the related resource graph slug. By default the resource instance name and relationship is displayed. Other nodes from that related resource can be displayed by adding entries in the "node_aliases" array and those node names can be overwritten with the "custom_labels" object. RelatedResourcesSection objects can be grouped together under a common name within LinkedSection components.
{
"component": "RelatedResourcesSection",
"config": {
"graph_slug": "digital",
"node_aliases": [],
"custom_labels": {}
}
}
- Type:
array
- Description: A list of node aliases that specify which nodes to display in a component.
- Type:
object
- Description: A dictionary used to override default labels for fields. Each key is a
node_alias
, and each value is the custom label to display.
"custom_labels": {
"color_primary": "Primary Color",
"material_label_1": "Composition"
}
- Type:
string
ornull
- Description: Overrides the default title shown on a data card (section). If not set, the system uses the label from the associated card.
"custom_card_name": "Physical Description"
- Type: `string**
- Description: The alias of a node group — the node that groups child nodes beneath it. Each node group is represented in the UI as a Card, which has a label used by default as the section title. You can override that label with
custom_card_name
.
"nodegroup_alias": "physical_characteristics"