Download Manager Widget
The Download Manager widget allows users to access and manage exported files in one place.
To display exports for a specific user in the Download Manager, ensure that the same userId and clientId values are set across all widgets used for exports. If these values are not set, the exports do not display in the Download Manager.
Embeddable Script
<!-- Tag -->
<qrvey-download-manager settings="config"></qrvey-download-manager>
<!-- Config -->
<script>
var config = {
apiKey: "<YOUR_PRIVATE_API_KEY>",
domain: "<DOMAIN>",
userId: "<USER_ID>",
showModalButton: "true"
};
</script>
<!-- Launcher -->
<script src="https://<WIDGETS_URL>/qrvey_download_manager/qrvey-download-manager/qrvey-download-manager.js"></script>
<script type="module" src="https://<WIDGETS_URL>/qrvey_download_manager/qrvey-download-manager/qrvey-download-manager.esm.js"></script>
<script> window.config = config;</script>
Configuration Object
| Property | Type | Description | Required |
|---|---|---|---|
| apiKey | String | Your organization’s unique API key, required to access the Qrvey platform. | Required if qvToken is not provided. |
| qvToken | String | Encrypted token used for secure authentication. | Required if apiKey is not provided. |
| domain | String | Base URL of your Qrvey instance. | Y |
| userId | String | Qrvey platform user who initiated exports in another widget (for example, dashboard, single panel). To see the exports, the userId and clientId provided to the Download Manager widget must match those used in the other widget. | N |
| String | Defines the email associated with the clientId. | N | |
| clientId | String | The clientId, or unique identifier, for the tenant end user working with the Download Manager. If authenticating with a qvToken, pass this into the token for authentication. | Y |
| orgId | String | Organization ID of the user accessing the widget. When matched with the orgId in the orgs object, users of that orgId will be listed under the Subscribe tab in the Export modal. For more information, see Subscriptions. | N |
| orgs | Array(Object) | The orgs object determines the list of users available in the Subscribe Specific People field beneath the Subscribe tab of the Export modal. Used in embedded scenarios to allow other users to subscribe to exports. For more information, see Orgs Object. | N |
| i18n | Object | Defines the language to be displayed in the static text of the widget as well as the dataset columns. For more information, see i18n Object. | N |
| timezone | Object | Configures the timezone in the widget. | N |
| customization | Object | Allows customization of the widget sections. For more information, see Customization. | N |
Orgs Object
The orgs object defines a list of users and roles grouped by organization. In embedded scenarios, the object helps to define a list of other users who can subscribe to exports. When multiple organizations are passed in the orgs object, the Export modal uses the object where orgId matches the orgId of the user accessing the widget, filtering out users from other organizations.
| Property | Type | Description |
|---|---|---|
| orgId | String | Organization ID of the users listed in the users array. When matched with the orgId of the user accessing the widget, users of the orgId will be listed in the Subscribe tab of the Export modal. |
| users | Array(Object) | List of users available to subscribe to scheduled exports under the organization in orgId. Each user is defined by clientId and email. |
| users.clientId | String | The clientId of the user who can subscribe to exports. |
| users.email | String | Email address of the user who can subscribe to exports. The Export modal lists email addresses in the Subscribe Specific People field. |
"orgs": [
{
"orgId": "1",
"users": [
{
"clientId": "john_smith",
"email": "john_smith@qrvey.com"
}
]
}
]
Timezone
| Property | Type | Description | Required |
|---|---|---|---|
| offset | String | An attribute inside timezone that specifies the timezone offset. Accepted formats include +03:00, -03, and so on. | N |
i18n
For more information, see Internationalization, Step by Step.
| Property | Type | Description | Required |
|---|---|---|---|
| lang | String | The language to use for the UI. Example: "es". | Y |
| locale | String | The locale code to use for date and number formatting. Example: "es-ES". | N |
Customization
Use a customization object to modify the structure of the Download Manager widget. By applying fine-grained control over the visibility and behavior of its UI components, teams can tailor the interface based on user roles, product branding, or embedding context.
This recursive module allows you to add keep and remove to the main Download Manager page (main view) or within the schedule page (detail view).
Conditional Definition
You can define the following conditional attribute for the Download Manager. Place the conditional property directly in the customization object to apply these changes globally to the Download Manager widget.
| Condition | Value |
|---|---|
| executionType | scheduled, others |
Example:
{
"customization": {
"conditional": [
{
"condition": {
"field": "executionType",
"operator": "!=",
"value": "scheduled"
},
"remove": [
"assetList.asset.optionMenu.qMoreInfo"
]
}
]
}
}
Global Key Verbs
The global key verbs, keep and remove, are evaluated in order of precedence:
remove: Removes matching keys.keep: Keeps matching keys while removing all others at the same level.
Within each view (for example, global, main, or detail), you can include the following:
| Key | Type | Description |
|---|---|---|
| remove | string[] | List of UI controls to hide. |
| keep | string[] | List of UI controls to retain (others at the same level are removed). |
| defaults | object | Default settings for specific functionality. |
| conditional | array | List of objects, each of which includes a condition and an action to keep or remove. |
{
"customization": {
"views": {
"main": {
"conditional": [
{
"condition": {
"field": "executionType",
"operator": "=",
"value": "scheduled"
},
"remove": [
"moreInfoModal.qOwner",
"moreInfoModal.qApplication"
]
}
]
},
"detail": {
"remove": [
"bottomBar"
]
}
},
"defaults": {
"filters": {
"sourceWidget": [
"DASHBOARD"
]
}
},
"conditional": [
{
"condition": {
"field": "executionType",
"operator": "!=",
"value": "scheduled"
},
"remove": [
"assetList.asset.optionMenu.qMoreInfo"
]
}
]
}
}
Customization Properties
The following tables describe customization options for the Download Manager widget.
Customization Defaults
| Property | Type | Values | Description |
|---|---|---|---|
| filters.fileType | Array | PDF, JPG, CSV, XLS, ZIP | List of file types to filter by. The filter ignores values outside of the accepted list. |
| filters.execution | Array | SCHEDULED, OTHERS | List of execution types to filter by. The filter ignores values outside of the accepted list. |
| filters.sourceWidget | Array | ANALYZE, AUTOMATION, DASHBOARD, LEGACY_DASHBOARD, PIXEL_PERFECT, SUBSCRIPTION | List of source widget types to filter by. The filter ignores values outside of the accepted list. |
| filters.searchByName | string | Example: Bar chart1.jpg | Export name to filter by. |
| filters.asset | Array | Example: assetId1, assetId2 | Asset IDs used as filter criteria. To take effect, set the sourceWidget with a single value. |
| widgetView | string | modal | table | Determines how the component is displayed. If set to table, the component displays as a page. Default is modal (popup window) when showModalButton is set to true. |
The following example shows the default filter options displayed when the Download Manager widget loads.
{
"customization": {
"defaults": {
"filters": {
"fileType": ["PDF", "CSV"],
"execution": ["SCHEDULED"],
"sourceWidget": ["DASHBOARD"],
"searchByName": "Bar chart1.jpg"
},
"widgetView": "table"
}
}
}
Main View
The following table displays options that you can show or hide in the widget's main view, which lists all local and scheduled exports.
| Key | Description | Allows Conditional |
|---|---|---|
| header | Widget header. | - |
| header.qTitle | Primary title displayed in the widget's main header. | - |
| controlBar | Top toolbar containing global search and filtering options for the asset list. | - |
| controlBar.qFilterByFileType | Filter control to filter by file type (such as PDF and Excel). | - |
| controlBar.qFilterByFileType.qTypePDF | Filter list option to display PDF selection in the Filter by File Type dropdown. | - |
| controlBar.qFilterByFileType.qTypeJPG | Filter list option to display JPG selection in the Filter by File Type dropdown. | - |
| controlBar.qFilterByFileType.qTypeCSV | Filter list option to display CSV selection in the Filter by File Type dropdown. | - |
| controlBar.qFilterByFileType.qTypeExcel | Filter list option to display XLS selection in the Filter by File Type dropdown. | - |
| controlBar.qFilterByFileType.qTypeZIP | Filter list option to display ZIP selection in the Filter by File Type dropdown. | - |
| controlBar.qFilterByExecution | Filter control to distinguish between scheduled tasks and one-time exports. | - |
| controlBar.qFilterByExecution.qExecScheduled | Filter list option to display recurring scheduled exports. | - |
| controlBar.qFilterByExecution.qExecOthers | Filter list option to display manual or ad-hoc exports. | - |
| controlBar.qFilterByWidget | Filter control to filter by source widget. | - |
| controlBar.qFilterByWidget.qWidgetAnalyze | Filter list option to display exports generated from the Analytic Suite widget. | - |
| controlBar.qFilterByWidget.qWidgetAutomation | Filter list option to display exports triggered by automated workflows. | - |
| controlBar.qFilterByWidget.qWidgetDash | Filter list option to display exports originating from standard dashboards. | - |
| controlBar.qFilterByWidget.qWidgetLegacyDash | Filter list option to display exports from legacy (previous version) dashboards. | - |
| controlBar.qFilterByWidget.qWidgetSubscriptions | Filter list option to display exports linked to legacy dashboard subscriptions. | - |
| controlBar.qFilterByWidget.qWidgetPPR | Filter list option to display exports from Pixel-Perfect Reports. | - |
| controlBar.qFilterByAsset | Filter control to select specific assets for a widget selected in the Filter By Source Widget dropdown. | - |
| controlBar.qSearch | Text field to search and run live filters on the asset list. | - |
| controlBar.qRemoveFilters | Control to clear all active filter selections and reset the view. | - |
| assetList | Main UI container that lists all exports and schedules. | - |
| assetList.asset | A list of all exports and schedules. When this property is removed, returns a list of exports and schedules without details. | - |
| assetList.asset.qDrillToDetail | Action to open the detailed view of a specific schedule. | - |
| assetList.asset.qUnsubscribe | Option to opt out from a specific report schedule. | - |
| assetList.asset.qSubscribe | Option to subscribe to a specific report schedule. | - |
| assetList.asset.optionMenu | Three-dot menu containing specific actions for each asset. | TRUE |
| assetList.asset.optionMenu.qDelete | Option to delete the file or schedule from the main view. | TRUE |
| assetList.asset.optionMenu.qMoreInfo | Option to show detailed information for the file inside a schedule. | TRUE |
| assetList.asset.optionMenu.qDeleteAllFiles | Option to display the bulk action to remove all files associated with a particular schedule. | - |
| assetList.asset.optionMenu.qEditSched | Option to open the configuration modal to modify an existing schedule. | - |
| assetList.asset.optionMenu.qPauseRestartSched | Option to stop a recurring schedule without deleting it. | - |
| assetList.asset.optionMenu.qUnsubscribe | Option to remove the user's subscription from the selected schedule. | - |
| assetList.asset.optionMenu.qSubscribe | Option to add the user's subscription to the selected schedule. | - |
| assetList.asset.table | Container structure with data columns. Removing this container also removes the columns in the table, leaving only the name and option menu columns. | - |
| assetList.asset.table.qType | Controls the Type column that lists visualizations for file format. | - |
| assetList.asset.table.qSchedule | Controls the Schedule column that lists schedules. | - |
| assetList.asset.table.qSize | Controls the Size column for the file size of the generated export. | - |
| assetList.asset.table.qCreationDate | Controls the Creation Date column for the timestamp marking when the file was created. | - |
| assetList.asset.table.qExpirationDate | Controls the Expiration Date column for the future date when the file is removed from storage. | - |
| assetList.asset.table.qDownload | Controls the Download column for the download links. | - |
| downloadModal | Pop-up window for editing export schedules. | - |
| downloadModal.qScheduleOption | On/Off radio button to enable schedule within the download modal. When removed, users can still edit the existing schedule. | - |
| downloadModal.qSubscribeOption | Subscribe tab within the download modal. When removed, users can still edit the existing schedule. | - |
| downloadModal.qSubscribeExternalUsers | Subscribing users who don’t exist in the Qrvey platform. | - |
| moreInfoModal | Option to open More Info modal that provides details about the export. | - |
| moreInfoModal.qFileType | Label in More Info modal showing the format of the export. | - |
| moreInfoModal.qSource | Label in More Info modal showing the source widget. | - |
| moreInfoModal.qOwner | Label in More Info modal showing the user who initiated the export. | TRUE |
| moreInfoModal.qApplication | Label in More Info modal showing the application where the export was initiated. | TRUE |
| moreInfoModal.qPath | Label in More Info modal showing the path where the exported asset is located. | TRUE |
Detail View
The following table displays customization keys to control the options that you can show or hide in the widget's detail view. When selected, the detail view displays the files generated by a scheduled export.
| Key | Description |
|---|---|
| header | Header area specifically for the schedule detail view. |
| header.qTitle | Title of the current schedule being viewed. |
| controlBar | Top toolbar containing global search. |
| controlBar.qSearch | Text field to search and run live filters on the asset list. |
| controlBar.qScheduleDetail | Toolbar section showing the parameters of the active schedule. |
| controlBar.qFilesExported | Toolbar entry displaying the total number of files generated by this schedule. |
| controlBar.qMoreInfo | Option to open More Info modal that provides details about the schedule. |
| assetList | Main UI container that lists all scheduled exports. |
| assetList.asset | A list of scheduled exports. Removing this property returns a list of exports without details. |
| assetList.asset.optionMenu | Three-dot menu containing specific actions for each asset. |
| assetList.asset.optionMenu.qDelete | Option to delete the file from the detail view. |
| assetList.asset.optionMenu.qMoreInfo | Option to show detailed information for the file inside a schedule. |
| assetList.asset.table | Main UI container structure with data columns. Removing the container removes the columns in the table, leaving only the name and option menu columns. |
| assetList.asset.table.qType | Controls the Type column that lists visualizations for file format. |
| assetList.asset.table.qSize | Controls the Size column for the file size of the generated export. |
| assetList.asset.table.qCreationDate | Controls the Creation Date column for the timestamp marking when the file was created. |
| assetList.asset.table.qExpirationDate | Controls the Expiration Date column for the future date when the file is removed from storage. |
| assetList.asset.table.qDownload | Controls the Download column for the download links. |
| bottomBar | Fixed bar at the bottom for quick global actions. |
| bottomBar.qDeleteAllFiles | Delete All Files button to delete all files from this schedule. |
| bottomBar.qEditSched | Edit schedule button to edit the current schedule. |
| bottomBar.qPauseRestartSched | Pause/Restart Schedule button to pause or restart the current schedule. |
| bottomBar.qDelete | Delete Schedule button to remove the schedule entirely. |
| moreInfoModal | Option to open More Info modal that provides details about the export. |
| moreInfoModal.qFileType | Label in More Info modal showing the format of the export. |
| moreInfoModal.qSource | Label in More Info modal showing the source widget. |
| moreInfoModal.qOwner | Label in More Info modal showing the user who initiated the export. |
| moreInfoModal.qApplication | Label in More Info modal showing the application where the export was initiated. |
| moreInfoModal.qPath | Label in More Info modal showing the path where the exported asset is located. |
| downloadModal | Pop-up window for editing export schedules. |
| downloadModal.qScheduleOption | On/Off radio button to enable schedule within the Download modal. When removed, users can still edit the existing schedule. |
| downloadModal.qSubscribeOption | Subscribe tab within the download modal. When removed, users can still edit the existing schedule. |
Events
openDownloadManager()
Opens the Download Manager modal programmatically.
<qrvey-download-manager settings="downloadManagerConfig"></qrvey-download-manager>
<button onclick="openModal()">Open Modal</button>
function openModal() {
const el = document.querySelector('qrvey-download-manager');
el.openDownloadManager();
}
qvDMOpen
Opens the modal by dispatching the qvDMOpen event.
function openDownloadManager() {
const myEvent = new CustomEvent('qvDMOpen');
window.dispatchEvent(myEvent);
}
qvDMOpened
Triggered when the modal is opened.
window.addEventListener('qvDMOpened', () => {
// Actions when modal opens
});
// Subscription toggle within the detail context. |
| downloadModal.qSubscribeExternalUsers | Option t
### `qvDMClosed`
Triggered when the modal is closed.
```js
window.addEventListener('qvDMClosed', () => {
// Actions when modal closes
});
qvDMSetFilters
Sets filters in the widget programmatically.
window.dispatchEvent(new CustomEvent('qvDMSetFilters', {
detail: {
fileType: ["PDF", "CSV"],
execution: ["OTHERS"],
sourceWidget: ["ANALYZE"],
searchByName: "Bar chart1.jpg",
asset: ["assetId1", "assetId2"]
}
}));