Home Reference Source

src/components/widgets/Tree/TreeWidget.jsx

import React from 'react';
import PropTypes from 'prop-types';
import { values } from 'lodash';

import TreeContainer from './container/TreeContainer';
import StandardWidget from '../StandardWidget';
import Fieldsets from '../Form/fieldsets';

import dependency from '../../../core/dependency';

/**
 * Виджет таблица
 * @reactProps {string} containerId - id контейнера
 * @reactProps {string} pageId - id страницы
 * @reactProps {string} widgetId - id виджета
 * @reactProps {object} actions
 * @reactProps {object} tools
 * @reactProps {object} dataProvider
 * @reactProps {object} table
 * @reactProps {number} table.size
 * @reactProps {boolean} table.fetchOnInit - фетчить / не фетчить данные при инициализации
 * @reactProps {boolean} table.hasSelect
 * @reactProps {string} table.className - css класс
 * @reactProps {object} table.style - css стили
 * @reactProps {boolean} table.autoFocus
 * @reactProps {object} table.sorting
 * @reactProps {array} table.headers
 * @reactProps {array} table.cells
 */
class TreeWidget extends React.Component {
  /**
   * Замена src на компонент
   */
  getWidgetProps() {
    const {
      hasFocus,
      hasSelect,
      autoFocus,
      rowClick,
      childIcon,
      multiselect,
      showLine,
      filter,
      expandBtn,
      bulkData,
      parentFieldId,
      valueFieldId,
      labelFieldId,
      iconFieldId,
      imageFieldIdd,
      badgeFieldId,
      badgeColorFieldId,
      hasCheckboxes,
      draggable,
      childrenFieldId,
    } = this.props;
    const { toolbar, actions, dataProvider, placeholder } = this.props;
    const { resolveProps } = this.context;
    return {
      toolbar,
      actions,
      hasFocus,
      hasSelect,
      autoFocus,
      placeholder,
      dataProvider,
      rowClick,
      childIcon,
      multiselect,
      showLine,
      filter,
      expandBtn,
      bulkData,
      parentFieldId,
      valueFieldId,
      labelFieldId,
      iconFieldId,
      imageFieldIdd,
      badgeFieldId,
      badgeColorFieldId,
      hasCheckboxes,
      draggable,
      childrenFieldId,
    };
  }

  render() {
    const {
      id: widgetId,
      toolbar,
      disabled,
      actions,
      fetchOnInit,
      pageId,
      className,
      style,
    } = this.props;
    return (
      <StandardWidget
        disabled={disabled}
        widgetId={widgetId}
        toolbar={toolbar}
        actions={actions}
        className={className}
        style={style}
      >
        <TreeContainer
          widgetId={widgetId}
          pageId={pageId}
          fetchOnInit={fetchOnInit}
          {...this.getWidgetProps()}
        />
      </StandardWidget>
    );
  }
}

TreeWidget.defaultProps = {
  toolbar: {},
  filter: {},
};

TreeWidget.propTypes = {
  className: PropTypes.string,
  style: PropTypes.object,
  containerId: PropTypes.string.isRequired,
  pageId: PropTypes.string.isRequired,
  widgetId: PropTypes.string,
  actions: PropTypes.object,
  toolbar: PropTypes.object,
  dataProvider: PropTypes.object,
};

TreeWidget.contextTypes = {
  resolveProps: PropTypes.func,
};

export default dependency(TreeWidget);