client/src/components/SessionForm.js
author salimr <riwad.salim@yahoo.fr>
Tue, 09 Oct 2018 10:52:23 +0200
changeset 162 1fd73fdaf4c6
parent 161 a642639dbc07
child 164 30a5baa31314
permissions -rw-r--r--
Add ReadOnlySession component and message when session list is empty
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     1
import React, { Component } from 'react';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     2
import { connect } from 'react-redux';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     3
import { bindActionCreators } from 'redux';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     4
import '../App.css';
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     5
import * as sessionsActions from '../actions/sessionsActions';
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
     6
import * as authActions from '../actions/authActions';
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     7
import _ from 'lodash';
135
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
     8
import './SessionForm.css';
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     9
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    10
class SessionForm extends Component {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    11
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
    12
  state = {
135
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    13
    createGroup: false,
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    14
    protocolOpen: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    15
    titleEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    16
    descriptionEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    17
    enterKeyValue: false,
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    18
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    19
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    20
onChange = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    21
  const { name, value } = e.target;
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    22
  const changes = { [name]: value }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    23
  this.onChangeThrottle(changes);
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    24
}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    25
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    26
onChangeThrottle = _.debounce((changes) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    27
  this.props.sessionsActions.updateSession(this.props.currentSession, changes);
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    28
}, 750)
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    29
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    30
onGroupChange = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    31
  const groupName = e.target.value;
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    32
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    33
  const group = this.props.groups.find((g) => g.get('name') === groupName);
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    34
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    35
  this.props.sessionsActions.updateSession(this.props.currentSession, { group: groupName, protocol: group?group.get('protocol'):'' });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    36
}
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    37
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    38
componentDidMount() {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    39
  document.addEventListener('mousedown', this.handleClickOutside);
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    40
}
133
6f3078f7fd47 Work on correct protocol propagation
ymh <ymh.work@gmail.com>
parents: 132
diff changeset
    41
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    42
componentWillUnmount() {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    43
  document.removeEventListener('mousedown', this.handleClickOutside);
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    44
}
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    45
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    46
  componentWillUpdate = (nextProps, nextState) => {
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    47
    if (nextState.createGroup && nextProps.createGroup.get('success')) {
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    48
      this.setState({ createGroup: false })
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    49
    }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    50
  }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
    51
135
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    52
  toggleProtocol = (e) => {
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    53
    e.preventDefault();
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    54
    this.setState({
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    55
      protocolOpen: !this.state.protocolOpen
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    56
    });
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    57
  }
b5aafa462956 Cleaning session form. The group and protocol are no longer editable. Removing cruft
ymh <ymh.work@gmail.com>
parents: 134
diff changeset
    58
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    59
  toggleOnTitleEditMode = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    60
    e.preventDefault();
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    61
    this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    62
      titleEditMode: true,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    63
    });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    64
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    65
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    66
  toggleOnDescriptionEditMode = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    67
    e.preventDefault();
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    68
    this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    69
      descriptionEditMode: true,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    70
    });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    71
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    72
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    73
  toggleOffTitleEditMode = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    74
    e.preventDefault();
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    75
    this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    76
      titleEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    77
    });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    78
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    79
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    80
  toggleOffDescriptionEditMode = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    81
    e.preventDefault();
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    82
    this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    83
      descriptionEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    84
    });
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    85
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    86
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    87
  handleClickOutside = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    88
    if (this.title && !this.title.contains(e.target)) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    89
      this.toggleOffTitleEditMode(e)
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    90
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    91
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    92
    if (this.desc && !this.desc.contains(e.target)) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    93
      this.toggleOffDescriptionEditMode(e)
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    94
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    95
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    96
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    97
  saveEdit = (e) => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    98
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
    99
    e.preventDefault();
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   100
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   101
    if (e.key === 'Enter') {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   102
      this.setState({enterKeyValue: true})
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   103
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   104
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   105
    if (e.key !== 'Enter') {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   106
      this.setState({enterKeyValue: false})
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   107
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   108
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   109
    if (e.key === 'Enter' && this.state.enterKeyValue === true) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   110
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   111
      e.preventDefault();
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   112
      this.setState({
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   113
        enterKeyValue: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   114
        titleEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   115
        descriptionEditMode: false,
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   116
      })
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   117
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   118
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   119
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   120
  titleEditMode = () => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   121
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   122
    if (this.state.titleEditMode === false) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   123
      return (
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   124
      <div
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   125
        onClick={this.toggleOnTitleEditMode}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   126
        className='session-page-title border-0 bg-success text-muted ml-3'
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   127
      >
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   128
        { this.props.currentSession.title || 'Espace titre' }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   129
      </div>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   130
    );
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   131
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   132
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   133
    if (this.state.titleEditMode === true) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   134
    return (
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   135
    <div className="form-group pr-5">
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   136
      <textarea className='session-page-title form-control border-primary bg-secondary text-muted ml-3'
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   137
        onKeyDown={ this.saveEdit }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   138
        onChange={ this.onChange }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   139
        type="textarea"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   140
        name="title"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   141
        defaultValue={ this.props.currentSession.title || 'Espace titre' }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   142
        placeholder="Espace titre"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   143
        ref={title => this.title = title}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   144
      >
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   145
      </textarea>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   146
    </div>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   147
    );
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   148
    }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   149
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   150
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   151
  descriptionEditMode = () => {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   152
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   153
  if (this.state.descriptionEditMode === false) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   154
    return (
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   155
    <div
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   156
      onClick={this.toggleOnDescriptionEditMode}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   157
      className="session-page-description border-0 bg-success text-muted ml-3"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   158
    >
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   159
      { this.props.currentSession.description || 'Espace description' }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   160
    </div>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   161
  );
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   162
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   163
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   164
  if (this.state.descriptionEditMode === true) {
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   165
  return (
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   166
    <div className="form-group mt-2 pb-2">
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   167
    <textarea className="session-page-description form-control border-primary bg-secondary text-muted ml-3"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   168
      onKeyDown={ this.saveEdit }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   169
      onChange={ this.onChange }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   170
      type="textarea"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   171
      name="description"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   172
      defaultValue={ this.props.currentSession.description || 'Espace description' }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   173
      placeholder="Espace description"
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   174
      ref={desc => this.desc = desc}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   175
    >
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   176
    </textarea>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   177
  </div>
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   178
  );
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   179
  }
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   180
}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   181
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   182
  render() {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   183
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   184
    if (!this.props.currentSession) {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   185
      return (
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   186
        <form></form>
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   187
      )
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   188
    }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   189
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   190
    return (
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   191
        <div className="session-page-panel panel-default sticky-top">
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   192
          <div className="session-page-card card-body bg-secondary pr-5">
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   193
            <form onSubmit={ e => { e.preventDefault() } }>
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   194
              {this.titleEditMode()}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   195
              {this.descriptionEditMode()}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   196
              {/* <div className="form-group">
151
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 148
diff changeset
   197
                <label className="col-form-label">Group</label>
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   198
                <p>{this.props.currentSession.group}</p>
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   199
              </div> */}
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   200
              {/* <div className="form-group">
151
57d63a248f0d Update to Bootstrap 4
salimr <riwad.salim@yahoo.fr>
parents: 148
diff changeset
   201
                <label className="col-form-label" onClick={this.toggleProtocol}>Protocol {this.state.protocolOpen?<span className="material-icons protocol-toggle">&#xE313;</span>:<span className="material-icons protocol-toggle">&#xE315;</span>}</label>
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   202
                <div className={ "collapse" + (this.state.protocolOpen?'in':'')} >
148
fcce52a159bc remove react-bootstrap
ymh <ymh.work@gmail.com>
parents: 143
diff changeset
   203
                  <pre>{JSON.stringify(this.props.currentSession.protocol, null, 2)}</pre>
fcce52a159bc remove react-bootstrap
ymh <ymh.work@gmail.com>
parents: 143
diff changeset
   204
                </div>
161
a642639dbc07 Split scss files and adapt session page design
salimr <riwad.salim@yahoo.fr>
parents: 151
diff changeset
   205
              </div> */}
143
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   206
            </form>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   207
          </div>
cfcbf4bc66f1 Remove react-bootstrap from components except Modal, Collapse and Dropdown
salimr <riwad.salim@yahoo.fr>
parents: 135
diff changeset
   208
        </div>
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   209
    );
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   210
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   211
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   212
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   213
function mapStateToProps(state, props) {
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   214
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   215
  let group;
132
906a6c7c7943 add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
   216
  if (props.session && props.session.get('group')) {
906a6c7c7943 add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents: 129
diff changeset
   217
    group = state.get('groups').find(group => props.session.get('group') === group.get('name'))
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   218
  }
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   219
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   220
  return {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   221
    currentSession: props.session,
129
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 108
diff changeset
   222
    createGroup: state.get('createGroup'),
d48946d164c6 Add a first version of synchronisation
ymh <ymh.work@gmail.com>
parents: 108
diff changeset
   223
    groups: state.get('groups'),
101
e165aa89ac82 Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 100
diff changeset
   224
    group
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   225
  };
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   226
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   227
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   228
function mapDispatchToProps(dispatch) {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   229
  return {
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   230
    sessionsActions: bindActionCreators(sessionsActions, dispatch),
100
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents: 46
diff changeset
   231
    authActions: bindActionCreators(authActions, dispatch),
46
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   232
  }
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   233
}
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   234
4aa24724e5b3 Move session form to dedicated component.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
   235
export default connect(mapStateToProps, mapDispatchToProps)(SessionForm);