Skip to content
This repository has been archived by the owner on Dec 13, 2020. It is now read-only.

Implements export view to excel button #1202

Merged
merged 3 commits into from
Sep 18, 2017
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions src/components/header/SubHeader.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,17 @@ class Subheader extends Component {
nodes.map(node => dispatch(updateBreadcrumb(node)));
}

handleDownloadSelected = event => {
if (this.props.selected.length === 0) {
event.preventDefault();
}
}

renderNavColumn = () => {
const {
dataId, windowType, openModal, closeSubheader, handlePrint,
dataId, windowType, query, openModal, closeSubheader, handlePrint,
handleDelete, docNo, redirect, breadcrumb, siteName, editmode,
handleEditModeToggle, handleEmail, handleClone
handleEditModeToggle, handleEmail, handleClone, selected
} = this.props;

const {
Expand Down Expand Up @@ -218,6 +224,9 @@ class Subheader extends Component {
} while (currentNode && currentNode.children && (currentNode.type !== 'window'));
}

// TODO: refine gridView conditional
const gridView = parseInt(windowType) === 143;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

atm i would suggest to not enforce it at all. Just let it be enabled for any view.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another option would be to only enable the button if selected.length > 0. Or do you want the button the be there when nothing is selected (better discoverabilty of that feature)?


return (
<div
className="subheader-column js-subheader-column"
Expand All @@ -232,7 +241,7 @@ class Subheader extends Component {
transparentBookmarks={!!siteName}
updateData={this.handleUpdateBreadcrumb}
>
<span
<span
title={
currentNode ? currentNode.caption : siteName
}
Expand All @@ -242,7 +251,6 @@ class Subheader extends Component {
</BookmarkButton>
</div>
<div className="subheader-break" />

{windowType && <div
className="subheader-item js-subheader-item"
tabIndex={0}
Expand All @@ -256,6 +264,19 @@ class Subheader extends Component {
{keymap.GLOBAL_CONTEXT.NEW_DOCUMENT}
</span>
</div>}
{gridView && query && (
<a
className="subheader-item js-subheader-item"
href={`/rest/api/documentView/${windowType}/${query.viewId}/export/excel?selectedIds=${selected.join(',')}`}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I took the URL schema from your comment - or do you refer to explicitly prepending config.API_URL? Maybe I'm overlooking something here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, got it - I need to prepend config.API_URL and strip /rest/api from the hardcoded string.

download
onClick={this.handleDownloadSelected}
style={{
opacity: selected.length === 0 ? '0.5' : 1
}}
>
{counterpart.translate('window.downloadSelected.caption')}{selected.length === 0 && ` (${counterpart.translate('window.downloadSelected.nothingSelected')})`}
</a>
)}
{docLinks}
{editmode !== undefined && <div
key={editmode}
Expand Down