Skip to content
Snippets Groups Projects
GridExports.jsx 10.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • import _ from 'lodash'
    import React from 'react'
    import { withStyles } from '@material-ui/core/styles'
    import Popover from '@material-ui/core/Popover'
    import SelectField from '@src/js/components/common/form/SelectField.jsx'
    import Button from '@src/js/components/common/form/Button.jsx'
    import Container from '@src/js/components/common/form/Container.jsx'
    
    import Message from '@src/js/components/common/form/Message.jsx'
    
    import GridExportOptions from '@src/js/components/common/grid/GridExportOptions.js'
    
    import messages from '@src/js/common/messages.js'
    import logger from '@src/js/common/logger.js'
    
    const styles = theme => ({
      container: {
    
        paddingBottom: theme.spacing(1),
        '&:first-child': {
          paddingTop: 0
        },
        '&:last-child': {
          paddingBottom: 0
        }
      },
      button: {
        paddingTop: theme.spacing(1)
    
      }
    })
    
    class GridExports extends React.PureComponent {
      constructor(props) {
        super(props)
        this.state = {
    
        }
        this.handleOpen = this.handleOpen.bind(this)
        this.handleClose = this.handleClose.bind(this)
    
        this.handleChange = this.handleChange.bind(this)
    
        this.handleExport = this.handleExport.bind(this)
      }
    
      handleOpen(event) {
        this.setState({
          el: event.currentTarget
        })
      }
    
      handleClose() {
    
        const { exportOptions, onExportOptionsChange } = this.props
    
    
    
        if (onExportOptionsChange) {
          const newExportOptions = {
            ...exportOptions,
            importCompatible: null
          }
          onExportOptionsChange(newExportOptions)
        }
    
        const { exportOptions, onExportOptionsChange } = this.props
    
        if (onExportOptionsChange) {
          const newExportOptions = {
            ...exportOptions,
            [event.target.name]: event.target.value
    
            newExportOptions.values = GridExportOptions.VALUES.RICH_TEXT
    
        this.setState({ validate: true }, () => {
          if (this.validate()) {
            this.handleClose()
            if (onExport) {
              onExport()
            }
    
          exportable.fileFormat === GridExportOptions.FILE_FORMAT.XLS
    
    
        if (isXLSExport) {
          const { importCompatible } = this.props.exportOptions
    
          let importCompatibleError = null
    
          if (_.isNil(importCompatible) || importCompatible === '') {
            importCompatibleError = messages.get(
              messages.VALIDATION_CANNOT_BE_EMPTY,
              messages.get(messages.IMPORT_COMPATIBLE)
            )
          } else {
            importCompatibleError = null
          }
    
          this.setState({
            importCompatibleError
          })
    
          return _.isNil(importCompatibleError)
        } else {
          return true
    
        const rowsOptions = [
          {
            label: messages.get(messages.ALL_PAGES),
    
          }
        ]
    
        if (multiselectable) {
          rowsOptions.push({
            label: messages.get(messages.SELECTED_ROWS),
    
          exportable.fileFormat === GridExportOptions.FILE_FORMAT.XLS
    
          exportable.fileFormat === GridExportOptions.FILE_FORMAT.TSV
    
    
        const isXLSEntityExport =
    
          exportable.fileContent === GridExportOptions.FILE_CONTENT.ENTITIES
    
    
        const isXLSTypesExport =
    
          isXLSExport &&
          exportable.fileContent === GridExportOptions.FILE_CONTENT.TYPES
    
              label={messages.get(messages.EXPORTS)}
              color='default'
              disabled={disabled}
    
              open={Boolean(el)}
              anchorEl={el}
              onClose={this.handleClose}
              anchorOrigin={{
                vertical: 'bottom',
                horizontal: 'left'
              }}
              transformOrigin={{
                vertical: 'top',
                horizontal: 'left'
              }}
            >
    
                    <div className={classes.field}>
                      <SelectField
    
                        label={messages.get(messages.IMPORT_COMPATIBLE)}
                        name='importCompatible'
    
                        variant='standard'
                        onChange={this.handleChange}
                      />
                    </div>
                  )}
    
                  {isXLSExport && exportOptions.importCompatible === true && (
                    <div className={classes.field}>
                      <Message type='info'>
                        {messages.get(messages.EXPORT_IMPORT_COMPATIBLE_INFO)}
                      </Message>
                    </div>
                  )}
                  {isXLSExport && exportOptions.importCompatible === false && (
                    <div className={classes.field}>
                      <Message type='info'>
                        {messages.get(messages.EXPORT_IMPORT_INCOMPATIBLE_INFO)}
                      </Message>
                    </div>
                  )}
    
                  <div className={classes.field}>
                    <SelectField
                      label={messages.get(messages.COLUMNS)}
                      name='columns'
                      options={[
                        {
                          label: messages.get(messages.ALL_COLUMNS),
    
                        }
                      ]}
                      value={exportOptions.columns}
                      variant='standard'
                      onChange={this.handleChange}
                    />
                  </div>
    
                    <SelectField
                      label={messages.get(messages.ROWS)}
                      name='rows'
                      options={rowsOptions}
                      value={exportOptions.rows}
                      variant='standard'
                      onChange={this.handleChange}
                    />
    
                  {(isTSVExport || isXLSEntityExport) && (
                    <div className={classes.field}>
                      <SelectField
                        label={messages.get(messages.VALUES)}
                        name='values'
                        options={[
                          {
                            label: messages.get(messages.PLAIN_TEXT),
    
                          },
                          {
                            label: messages.get(messages.RICH_TEXT),
    
                        value={exportOptions.values}
                        variant='standard'
                        onChange={this.handleChange}
                      />
                    </div>
                  )}
    
                    exportOptions.values ===
                      GridExportOptions.VALUES.PLAIN_TEXT && (
    
                      <div className={classes.field}>
                        <Message type='warning'>
                          {messages.get(messages.EXPORT_PLAIN_TEXT_WARNING)}
                        </Message>
                      </div>
                    )}
    
                      label={messages.get(messages.INCLUDE_DEPENDENCIES)}
                      name='includeDependencies'
    
                          label: messages.get(messages.YES),
                          value: true
    
                          label: messages.get(messages.NO),
                          value: false
    
                      value={exportOptions.includeDependencies}
    
    mpukhliak's avatar
    mpukhliak committed
                    id={id + '.trigger-exports-button-id'}
    
                    label={messages.get(messages.EXPORT)}
                    type='neutral'
    
                      (exportOptions.columns ===
                        GridExportOptions.COLUMNS.VISIBLE &&
                        _.isEmpty(visibleColumns)) ||
                      (exportOptions.rows ===
                        GridExportOptions.ROWS.SELECTED_ROWS &&
                        _.isEmpty(multiselectedRows))
    
                </div>
              </Container>
            </Popover>
          </div>
        )
      }
    }
    
    export default _.flow(withStyles(styles))(GridExports)