Skip to content

Commit

Permalink
Merge pull request #3108 from kobotoolbox/3107-custom-export-format-o…
Browse files Browse the repository at this point in the history
…ptions-fix

Custom export format options fix
  • Loading branch information
jnm committed Mar 24, 2021
2 parents a401a2f + e65dc89 commit 44d381d
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 20 deletions.
54 changes: 34 additions & 20 deletions jsapp/js/components/projectDownloads/projectExportsCreator.es6
Expand Up @@ -148,26 +148,33 @@ export default class ProjectExportsCreator extends React.Component {
}

getExportFormatOptions() {
if (this.props.asset.summary?.languages.length >= 2) {
const options = [];
// all defined languages should go first
// and they replace `_default` option
const options = [];

// Step 1: add all defined languages as options (both named and unnamed)
if (this.props.asset.summary?.languages.length >= 1) {
this.props.asset.summary.languages.forEach((language, index) => {
options.push({
value: language,
label: language,
langIndex: index, // needed for later
});
// unnamed language gives the `_default` option
if (language === null) {
options.push(EXPORT_FORMATS._default);
} else {
options.push({
value: language,
label: language,
langIndex: index, // needed for later
});
}
});
options.push(EXPORT_FORMATS._xml);
return options;
} else {
return [
// `_default` should be first
EXPORT_FORMATS._default,
EXPORT_FORMATS._xml,
];
}

// Step 2: if for some reason nothing was added yet, add `_default`
if (options.length === 0) {
options.push(EXPORT_FORMATS._default);
}

// Step 3: `_xml` is always available and always last
options.push(EXPORT_FORMATS._xml);

return options;
}

/**
Expand Down Expand Up @@ -592,16 +599,22 @@ export default class ProjectExportsCreator extends React.Component {
this,
'isCustomSelectionEnabled'
)}
label={t('Select which questions to be exported')}
label={t('Select questions to be exported')}
/>

<bem.ProjectDownloads__textButton onClick={this.selectAllRows}>
<bem.ProjectDownloads__textButton
disabled={!this.state.isCustomSelectionEnabled}
onClick={this.selectAllRows}
>
{t('Select all')}
</bem.ProjectDownloads__textButton>

<span className='project-downloads__vr'/>

<bem.ProjectDownloads__textButton onClick={this.clearSelectedRows}>
<bem.ProjectDownloads__textButton
disabled={!this.state.isCustomSelectionEnabled}
onClick={this.clearSelectedRows}
>
{t('Deselect all')}
</bem.ProjectDownloads__textButton>
</bem.ProjectDownloads__columnRow>
Expand Down Expand Up @@ -755,6 +768,7 @@ export default class ProjectExportsCreator extends React.Component {
m='blue'
type='submit'
onClick={this.onSubmit}
disabled={this.state.selectedRows.size === 0}
>
{t('Export')}
</bem.KoboButton>
Expand Down
5 changes: 5 additions & 0 deletions jsapp/scss/components/_kobo.project-downloads.scss
Expand Up @@ -102,6 +102,11 @@
transform: translateY(1px);
}

&[disabled] {
pointer-events: none;
opacity: 0.5;
}

.k-icon {
vertical-align: middle;
margin-left: 3px;
Expand Down

0 comments on commit 44d381d

Please sign in to comment.