API Docs for:
Show:

File: src\components\ChooseEventCategory\ChooseEventCategory.js

import ReactDOM from "react-dom";
import * as React from "react";
import {
    ListGroup, ListGroupItem
} from "react-bootstrap";
import { EventCategoryService } from "../../services";
import { EventCategory } from "../../classTypes";
import cloneDeep from "lodash/cloneDeep";

let eventCategoryService = new EventCategoryService();

/**
 * @class ChooseEventCategory
 */
export class ChooseEventCategory extends React.Component<{
  registerCategory?: boolean
}> {
  constructor(props) {
    super(props);
    this.state = {
      category: [],
      selectedCategory: { name: "ingen" },
      selectedCategoryId: -1,
      newCategoryHeader: "Den nye overkategorien"
    };

    this.handleClick = this.handleClick.bind(this);
  }

  //used in adminAddCategory to get the chosen category header
  //Finn ut hva som skal tas imot fra den andre
  onChangeCategoryHeader = () => {
    this.props.changeCategoryHeader(
      this.state.selectedCategoryId,
      this.state.selectedCategoryType
    );
  };

    /**
     * @method: getSelectedCategoryId
     * @returns {number|*}
     */
  getSelectedCategoryId() {
    return this.state.selectedCategoryId;
  }

    /**
     * @method: getSelectedCategoryType
     * @returns {number}
     */
  getSelectedCategoryType() {
    return this.state.selectedCategoryType;
  }

    /**
     * @method: getSelectedCategoryName
     * @returns {string}
     */
  getSelectedCategoryName() {
    return this.state.selectedCategory;
  }

  componentDidMount() {
    let kat1 = [];

    eventCategoryService.getEventCategory().then(resources => {
      resources.map(r => {
        let elem: EventCategory = {
          name: r.name,
          id: r.eventCategoryId,
          active: r.active,
          open: false
        };
        kat1 = kat1.concat(elem);
      });

      this.setState({
        category: kat1
      });
    });
  }

  handleClick(cat1: EventCategory) {
    let arr = cloneDeep(this.state.category);

    let objectIndex = this.state.category.indexOf(cat1);

    arr.map(e => {
      e.open = false;
    });

    arr[objectIndex].open = !this.state.category[objectIndex].open;

    this.state.category[objectIndex].open = !this.state.category[objectIndex]
      .open;

    this.setState(
      {
        category: arr,
        selectedCategory: cat1,
        selectedCategoryId: cat1.id
      },
      this.onChangeCategoryHeader.bind(this)
    );
  }

  render() {
    return (
      <div>
        <h3>Velg kategori for hendelsen</h3>
        <ListGroup>
          {this.state.category.map(cat1 => {
            return (
              <div key={cat1.id}>
                <ListGroupItem onClick={() => this.handleClick(cat1)}>
                  {cat1.name}
                </ListGroupItem>
              </div>
            );
          })}
        </ListGroup>
      </div>
    );
  }
}