Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • kszk/devteam/kszkepzes/old/kszkepzes-frontend
  • kbgergely/kszkepzes-frontend
2 results
Show changes
Showing
with 1970 additions and 918 deletions
import { Button, Container, Header, Item, Label } from 'semantic-ui-react';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { Container, Header, Item, Button, Label } from 'semantic-ui-react';
import { connect } from 'react-redux';
import { getSelectedProfile, setStatus } from '../../actions/statistics'; import { getSelectedProfile, setStatus } from '../../actions/statistics';
import ConfirmModal from '../forms/ConfirmModal'; import ConfirmModal from '../forms/ConfirmModal';
import { connect } from 'react-redux';
const groupTypes = {
HAT: {
name: 'Hallgatói Tudásbázis',
color: 'purple',
},
SYS: {
name: 'Sysadmin',
color: 'violet',
},
NET: {
name: 'NETeam',
color: 'blue',
},
ST: {
name: 'SecurITeam',
color: 'teal',
},
DT: {
name: 'DevTeam',
color: 'green',
},
};
class ApplicantProfile extends Component { class ApplicantProfile extends Component {
componentWillMount() { UNSAFE_componentWillMount() {
this.props.getSelectedProfile(this.props.match.params.id); this.props.getSelectedProfile(this.props.match.params.id);
} }
render() { render() {
const { id, signed, role, full_name, nick, motivation_about, motivation_exercise, motivation_profession } const {
= this.props.selectedProfile; id,
signed,
role,
full_name,
nick,
motivation_about,
motivation_exercise,
motivation_profession,
groups,
} = this.props.selectedProfile;
return ( return (
<Container style={{ padding: '60px' }}> <Container style={{ paddingTop: '3em', paddingBottom: '6em' }}>
<Item> <Item>
<Item.Content> <Item.Content>
<Container textAlign='center'> <Container textAlign="center" style={{ paddingBottom: '2em' }}>
<Header as='h2'>{full_name}</Header> <Header as="h2">{full_name}</Header>
<Item.Meta>{nick}</Item.Meta> <Item.Meta>{nick}</Item.Meta>
<Header as="h2">
{groups?.map((group) => (
<Label color={groupTypes[group].color}>
{groupTypes[group].name}
</Label>
))}
</Header>
</Container> </Container>
<Item.Description> <Item.Description>
<Container textAlign='justified' style={{ padding: '30px' }}> <Container textAlign="justified" style={{ padding: '1em' }}>
<Header as='h3'>Magamról, eddigi tevékenységem:</Header> <Header as="h3">Magamról, eddigi tevékenységem:</Header>
<p>{motivation_about}</p> <p>
<Header as='h3'>Szakmai motiváció:</Header> {motivation_about?.split('\n').map((item, i) => (
<p>{motivation_profession}</p> <div key={i}>{item}</div>
<Header as='h3'>Feladatok megoldása:</Header> ))}
<p>{motivation_exercise}</p> </p>
<Header as="h3">Szakmai motiváció:</Header>
<p>
{motivation_profession?.split('\n').map((item, i) => (
<div key={i}>{item}</div>
))}
</p>
<Header as="h3">Feladatok megoldása:</Header>
<p>
{motivation_exercise?.split('\n').map((item, i) => (
<div key={i}>{item}</div>
))}
</p>
</Container> </Container>
<Container textAlign='center' style={{ padding: '20px' }}> <Container textAlign="center" style={{ padding: '1em' }}>
<Header as='h3'>Státusz:</Header> <Header as="h3">Státusz:</Header>
{ signed ? {signed ? (
<div> <div>
{ role === 'Student' ? {role === 'Student' ? (
<Label color='green' size='huge'>Elfogadva</Label> <Label color="green" size="huge">
: Elfogadva
null </Label>
} ) : null}
{ role === 'Staff' ? {role === 'Staff' ? (
<Label color='blue' size='huge'>Staff</Label> <Label color="blue" size="huge">
: Staff
null </Label>
} ) : null}
{ role === 'Applicant' ? {role === 'Applicant' ? (
<Label color='orange' size='huge'>Jelentkezett</Label> <Label color="orange" size="huge">
: Jelentkezett
null </Label>
} ) : null}
{ role === 'Denied' ? {role === 'Denied' ? (
<Label color='red' size='huge'>Elutasítva</Label> <Label color="red" size="huge">
: Elutasítva
null </Label>
} ) : null}
</div> </div>
: ) : (
<Label color='red' size='huge'>Nem jelentkezett</Label> <Label color="red" size="huge">
} Nem jelentkezett
</Label>
)}
</Container> </Container>
</Item.Description> </Item.Description>
</Item.Content> </Item.Content>
</Item> </Item>
{ signed && role !== 'Staff' ? {signed && role !== 'Staff' ? (
<Container textAlign='center'> <Container textAlign="center">
<ConfirmModal <ConfirmModal
button={ button={<Button color="green">Jelentkezés elfogadása</Button>}
<Button text="elfogadod a jelentkezést"
color='green'
>Jelentkezés elfogadása
</Button>}
text='elfogadod a jelentkezést'
onAccept={() => this.props.setStatus(id, 'Student')} onAccept={() => this.props.setStatus(id, 'Student')}
/> />
<ConfirmModal <ConfirmModal
button={ button={<Button color="red">Jelentkezés elutasítása</Button>}
<Button text="elutasítod a jelentkezést"
color='red'
>Jelentkezés elutasítása
</Button>}
text='elutasítod a jelentkezést'
onAccept={() => this.props.setStatus(id, 'Denied')} onAccept={() => this.props.setStatus(id, 'Denied')}
/> />
</Container> </Container>
: ) : null}
null
}
</Container> </Container>
); );
} }
} }
const mapStateToProps = ({ trainees: { selectedProfile } }) => ({ selectedProfile }); const mapStateToProps = ({ trainees: { selectedProfile } }) => ({
selectedProfile,
});
export default connect(mapStateToProps, { getSelectedProfile, setStatus })(ApplicantProfile); export default connect(mapStateToProps, { getSelectedProfile, setStatus })(
ApplicantProfile
);
import { Button, Container, Label, Table } from 'semantic-ui-react';
import React, { Component } from 'react'; import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import { Container, Table, Label, Button } from 'semantic-ui-react';
import { connect } from 'react-redux';
import { getProfiles, setStatus } from '../../actions/statistics'; import { getProfiles, setStatus } from '../../actions/statistics';
import ConfirmModal from '../forms/ConfirmModal'; import ConfirmModal from '../forms/ConfirmModal';
import { Link } from 'react-router-dom';
import { connect } from 'react-redux';
const role = [
{
role: 'Staff',
text: 'Staff',
color: 'blue',
},
{
role: 'Student',
text: 'Elfogadott',
color: 'green',
},
{
role: 'Applicant',
text: 'Jelentkezett',
color: 'orange',
},
{
role: 'Denied',
text: 'Elutasított',
color: 'red',
},
{
role: 'no',
text: 'Nem jelentkezett',
color: 'red',
},
];
class Applications extends Component { class Applications extends Component {
componentWillMount() { UNSAFE_componentWillMount() {
this.props.getProfiles(); this.props.getProfiles();
} }
renderApplicants() { renderApplicants(format) {
return this.props.profiles.map((profile) => return this.props.profiles.map((profile) =>
{ return ( profile.role === format.role &&
<Table.Row> (profile.signed === true || profile.role === 'Staff') ? (
<Table.Cell> <Table.Row key={profile.id}>
<Link to={`applicant/${profile.id}`}> <Table.Cell textAlign="center">
{profile.full_name} <Link to={`applicant/${profile.id}`}>{profile.full_name}</Link>
</Link>
</Table.Cell>
{ profile.signed ?
<Table.Cell textAlign='center'>
{ profile.role === 'Student' ?
<Label color='green'>Elfogadva</Label>
:
null
}
{ profile.role === 'Staff' ?
<Label color='blue'>Staff</Label>
:
null
}
{ profile.role === 'Applicant' ?
<Label color='orange'>Jelentkezett</Label>
:
null
}
{ profile.role === 'Denied' ?
<Label color='red'>Elutasítva</Label>
:
null
}
</Table.Cell> </Table.Cell>
: {format.role === 'Staff' ? null : (
<Table.Cell textAlign='center'> <Table.Cell textAlign="center">
<Label color='red'>Nem jelentkezett</Label> <ConfirmModal
button={
<Button color="blue" size="tiny">
ADD STAFF STATUS
</Button>
}
text="staff jogot adsz neki"
onAccept={() => this.props.setStatus(profile.id, 'Staff')}
/>
</Table.Cell>
)}
</Table.Row>
) : null
);
}
renderNotApplicants(format) {
return this.props.profiles.map((profile) =>
profile.signed === false && profile.role !== 'Staff' ? (
<Table.Row key={profile.id}>
<Table.Cell textAlign="center">
<Link to={`applicant/${profile.id}`}>{profile.full_name}</Link>
</Table.Cell> </Table.Cell>
} {format.role === 'Staff' ? null : (
<Table.Cell> <Table.Cell textAlign="center">
<ConfirmModal <ConfirmModal
button = {<Button button={
color='blue' <Button color="blue" size="tiny">
size='tiny' ADD STAFF STATUS
> </Button>
ADD STAFF STATUS }
</Button>} text="staff jogot adsz neki"
text='staff jogot adsz neki' onAccept={() => this.props.setStatus(profile.id, 'Staff')}
onAccept={() => this.props.setStatus(profile.id, 'Staff')} />
/> </Table.Cell>
</Table.Cell> )}
</Table.Row> </Table.Row>
) : null
);
}
renderTable(format) {
return (
<Table color="blue" unstackable celled selectable compact>
<Table.Header>
<Table.Row>
<Table.HeaderCell textAlign="center">
<Label color={format.color}>{format.text}</Label>
</Table.HeaderCell>
{format.role !== 'Staff' ? (
<Table.HeaderCell width={3} textAlign="center">
<Label color={null}>
{format.role === 'no'
? this.props.profiles.filter(
(profile) =>
profile.signed === false && profile.role !== 'Staff'
).length
: this.props.profiles.filter(
(profile) =>
profile.role === format.role &&
(profile.signed === true || profile.role === 'Staff')
).length}{' '}
</Label>
</Table.HeaderCell>
) : null}
</Table.Row>
</Table.Header>
<Table.Body>
{format.role === 'no'
? this.renderNotApplicants(format)
: this.renderApplicants(format)}
</Table.Body>
</Table>
); );
});
} }
render() { render() {
return ( return (
<Container <Container
textAlign='center' textAlign="center"
style={{ style={{ paddingTop: '1em', paddingBottom: '5em' }}
padding: '80px'
}}
> >
<Table color='blue' celled selectable compact> {this.renderTable(role[2])} {/* Applicant */}
<Table.Header> {this.renderTable(role[1])} {/* Student */}
<Table.Row> {this.renderTable(role[0])} {/* Staff */}
<Table.HeaderCell>Jelentkezettek</Table.HeaderCell> {this.renderTable(role[3])} {/* Denied */}
<Table.HeaderCell textAlign='center'>Jelentkezés státusza:</Table.HeaderCell> {this.renderTable(role[4])} {/* Not Signed */}
<Table.HeaderCell />
</Table.Row>
</Table.Header>
<Table.Body>
{this.renderApplicants()}
</Table.Body>
</Table>
</Container> </Container>
); );
} }
} }
const mapStateToProps = ({ trainees: { profiles }, user }) => ({ profiles, user }); const mapStateToProps = ({ trainees: { profiles }, user }) => ({
profiles,
user,
});
export default connect(mapStateToProps, { getProfiles, setStatus })(Applications); export default connect(mapStateToProps, { getProfiles, setStatus })(
Applications
);
import React, { Component } from 'react';
import { import {
Container,
Item,
Button, Button,
Comment, Comment,
Container,
Divider,
Form, Form,
Header, Header,
Item,
Segment,
Table, Table,
Icon, } from "semantic-ui-react";
Checkbox, import React, { Component } from "react";
Popup, import {
Grid, clearWrite,
} from 'semantic-ui-react'; getNotesByEvent,
import { connect } from 'react-redux'; postEventNote,
import moment from 'moment'; writeNote,
import { getEventById, getTrainees, visitorChange, submitVisitors } from '../../actions/statistics'; } from "../../actions/notes";
import { getNotesByEvent, writeNote, clearWrite, postEventNote } from '../../actions/notes'; import {
import TraineeTableRow from './TraineeTableRow'; getEventById,
getTrainees,
submitVisitors,
visitorChange,
} from "../../actions/statistics";
import TraineeTableRow from "./EventDetailTableRow";
import { connect } from "react-redux";
import moment from "moment";
class EventDetail extends Component { class EventDetail extends Component {
constructor(props) { constructor(props) {
...@@ -27,40 +35,59 @@ class EventDetail extends Component { ...@@ -27,40 +35,59 @@ class EventDetail extends Component {
}; };
} }
componentWillMount() { UNSAFE_componentWillMount() {
this.props.getEventById(this.props.match.params.id); this.props.getEventById(this.props.match.params.id);
this.props.getTrainees(); this.props.getTrainees();
this.props.getNotesByEvent(this.props.match.params.id); this.props.getNotesByEvent(this.props.match.params.id);
} }
renderTrainees() { renderTrainees() {
const event = this.props.selectedEvent; const event = this.props.selectedEvent;
const note = this.props.actualNote; return this.props.trainees
return this.props.trainees.map((item) => { ?.sort(function (a, b) {
const notes = this.props.eventNotes.filter(note => note.profile === item.id); var nameA = a.full_name.toLowerCase(),
return ( nameB = b.full_name.toLowerCase();
<TraineeTableRow if (nameA < nameB)
selectedEvent={event} //sort string ascending
notes={notes} return -1;
trainee={item} if (nameA > nameB) return 1;
edit={this.state.edit} return 0; //default return value (no sorting)
/> })
); .map((item) => {
}); const notes = this.props.eventNotes?.filter(
(note) => note.profile === item.id
);
return item.role === "Student" ? (
<TraineeTableRow
selectedEvent={event}
notes={notes}
trainee={item}
edit={this.state.edit}
key={item.id}
/>
) : null;
});
} }
renderEvent() { renderEvent() {
const { name, date, description } = this.props.selectedEvent; const { name, date, description } = this.props.selectedEvent;
return ( return (
<Item> <Segment>
<Item.Header as='h2'>{name}</Item.Header> <Item>
<Item.Header as='h3'>Dátum: {moment(date).format('LL')}</Item.Header> <Divider style={{ fontSize: "2em" }} horizontal>
<Container textAlign='justified'> <Header as="h1">
<Item.Header as='h3'>Leírás</Item.Header> {name}
<Item.Content>{description}</Item.Content> <Item.Header style={{ fontSize: "0.6em" }}>
</Container> {moment(date).format("LL")}
</Item> </Item.Header>
</Header>
</Divider>
<Container textAlign="justified">
<Item.Header as="h3">Leírás</Item.Header>
<Item.Content>{description}</Item.Content>
</Container>
</Item>
</Segment>
); );
} }
...@@ -69,19 +96,20 @@ class EventDetail extends Component { ...@@ -69,19 +96,20 @@ class EventDetail extends Component {
return notes.map((note) => { return notes.map((note) => {
if (!note.profile) { if (!note.profile) {
return ( return (
<Comment> <Segment>
<Comment.Content> <Comment key={Math.random()}>
<Comment.Author>{note.created_by_name}</Comment.Author> <Comment.Content>
<Comment.Metadata> <Comment.Author>{note.created_by_name}</Comment.Author>
{moment(note.created_at).format('LL')} <Comment.Metadata>
</Comment.Metadata> {moment(note.created_at).format("LL")}
<Comment.Text> </Comment.Metadata>
{note.note} <Comment.Text>{note.note}</Comment.Text>
</Comment.Text> </Comment.Content>
</Comment.Content> </Comment>
</Comment>); </Segment>
);
} }
return ''; return "";
}); });
} }
...@@ -89,79 +117,61 @@ class EventDetail extends Component { ...@@ -89,79 +117,61 @@ class EventDetail extends Component {
const event = this.props.selectedEvent; const event = this.props.selectedEvent;
const note = this.props.actualNote; const note = this.props.actualNote;
return ( return (
<Container <Container style={{ paddingTop: "1em", paddingBottom: "7em" }}>
style={{ <Container textAlign="center">
padding: '80px' {this.props.selectedEvent && this.props.trainees
}} ? this.renderEvent()
> : ""}
<Container textAlign='center'>
{ this.props.selectedEvent && this.props.trainees ?
this.renderEvent()
:
''
}
</Container> </Container>
<Table celled centered> {!this.state.edit ? (
<Table.Header> <Button onClick={() => this.setState({ edit: true })}>
<Table.Row> Módosítás
<Table.HeaderCell>Név</Table.HeaderCell> </Button>
<Table.HeaderCell>Jelen volt</Table.HeaderCell> ) : (
<Table.HeaderCell>Megjegyzések</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{ this.props.selectedEvent ?
this.renderTrainees()
:
''
}
</Table.Body>
</Table>
<Button <Button
onClick={() => this.setState({ edit: true })} onClick={() => {
this.setState({ edit: false });
}}
> >
Edit {" "}
Kész
</Button> </Button>
{ this.state.edit ? )}
<Table celled unstackable>
<Table.Header>
<Table.Row textAlign="center">
<Table.HeaderCell>Név</Table.HeaderCell>
<Table.HeaderCell>Jelen volt</Table.HeaderCell>
<Table.HeaderCell>Megjegyzések</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{this.props.selectedEvent ? this.renderTrainees() : null}
</Table.Body>
</Table>
<Comment.Group>
<Header dividing>Megjegyzések</Header>
{this.props.eventNotes ? this.renderComments() : ""}
<Form reply>
<Form.TextArea
value={note.note}
onChange={(e) => this.props.writeNote(e)}
/>
<Button <Button
onClick={() => { onClick={() => {
this.setState({ edit: false }); this.props.postEventNote({
this.props.submitVisitors(this.props.selectedEvent); eventid: event.id,
} note: note.note,
} });
>Save this.props.clearWrite();
</Button> }}
: content="Megjegyzés hozzáadása"
'' labelPosition="left"
} icon="edit"
<Comment.Group> primary
<Header dividing> />
Megjegyzések </Form>
</Header> </Comment.Group>
{this.props.eventNotes ?
this.renderComments()
:
''
}
<Form reply>
<Form.TextArea
value={note.note}
onChange={e => this.props.writeNote(e)}
/>
<Button
onClick={() => {
this.props.postEventNote({ eventid: event.id,
note: note.note });
this.props.clearWrite();
}
}
content='Megjegyzés hozzáadása'
labelPosition='left'
icon='edit'
primary
/>
</Form>
</Comment.Group>
</Container> </Container>
); );
} }
...@@ -170,8 +180,13 @@ class EventDetail extends Component { ...@@ -170,8 +180,13 @@ class EventDetail extends Component {
const mapStateToProps = ({ const mapStateToProps = ({
notes: { eventNotes, actualNote }, notes: { eventNotes, actualNote },
events: { selectedEvent }, events: { selectedEvent },
trainees: { trainees } trainees: { trainees },
}) => ({ eventNotes, selectedEvent, trainees, actualNote }); }) => ({
eventNotes,
selectedEvent,
trainees,
actualNote,
});
export default connect(mapStateToProps, { export default connect(mapStateToProps, {
getEventById, getEventById,
......
import React, { Component } from 'react';
import { import {
Button,
Comment, Comment,
Table, Dropdown,
Form,
Grid,
Icon, Icon,
Popup, Popup,
Grid, Table,
Button,
Form,
Dropdown,
} from 'semantic-ui-react'; } from 'semantic-ui-react';
import React, { Component } from 'react';
import { clearWrite, postEventNote, writeNote } from '../../actions/notes';
import { submitVisitors, visitorChange } from '../../actions/statistics';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { visitorChange, submitVisitors } from '../../actions/statistics';
import { writeNote, clearWrite, postEventNote } from '../../actions/notes';
const visitStates = [ const visitStates = [
{ {
...@@ -25,8 +26,8 @@ const visitStates = [ ...@@ -25,8 +26,8 @@ const visitStates = [
{ {
text: 'Nem', text: 'Nem',
value: 'No', value: 'No',
} },
] ];
class TraineeTableRow extends Component { class TraineeTableRow extends Component {
constructor(props) { constructor(props) {
...@@ -37,105 +38,129 @@ class TraineeTableRow extends Component { ...@@ -37,105 +38,129 @@ class TraineeTableRow extends Component {
}; };
} }
triggerAdd = () => this.setState({ ...this.state, showAddPopup: !this.state.showAddPopup}) // Hides and shows the Add and More popup
triggerMore = () => this.setState({ ...this.state, showMorePopup: !this.state.showMorePopup }) triggerAdd = () =>
this.setState({ ...this.state, showAddPopup: !this.state.showAddPopup });
triggerMore = () =>
this.setState({ ...this.state, showMorePopup: !this.state.showMorePopup });
render() { render() {
const note = this.props.actualNote; const note = this.props.actualNote;
const { trainee, edit, actualNote, selectedEvent, notes } = this.props; const { trainee, selectedEvent, notes } = this.props;
const isVisitor = selectedEvent.visitors.includes(trainee.id); const isVisitor = selectedEvent.visitors.includes(trainee.id);
const isAbsent = selectedEvent.absent.includes(trainee.id); const isAbsent = selectedEvent.absent.includes(trainee.id);
let visitorStatusIcon;
let visitorStatusDropdown;
if (isVisitor) {
visitorStatusIcon = <Icon color="green" name="checkmark" />;
visitorStatusDropdown = 'Visitor';
} else if (isAbsent) {
visitorStatusIcon = <Icon color="orange" name="minus" />;
visitorStatusDropdown = 'Absent';
} else {
visitorStatusIcon = <Icon color="red" name="cancel" />;
visitorStatusDropdown = 'No';
}
return ( return (
<Table.Row> <Table.Row>
<Table.Cell> <Table.Cell textAlign="center">{trainee.full_name}</Table.Cell>
{trainee.full_name} {/* Show and change Visitors status */}
</Table.Cell> {!this.props.edit ? (
{!this.props.edit ? <Table.Cell textAlign="center">{visitorStatusIcon}</Table.Cell>
<Table.Cell textAlign='center'> ) : (
{ <Table.Cell textAlign="center">
isVisitor ?
<Icon color='green' name='checkmark' />
:
isAbsent ?
<Icon color='orange' name='minus' />
:
<Icon color='red' name='cancel' />
}
</Table.Cell>
:
<Table.Cell textAlign='center'>
<Dropdown <Dropdown
defaultValue={isVisitor ? 'Visitor' : isAbsent ? 'Absent' : 'No'} defaultValue={visitorStatusDropdown}
selection selection
options={visitStates} options={visitStates}
onChange={(_, v) => this.props.visitorChange({ id : trainee.id, value: v.value })} onChange={(_, v) => {
this.props.visitorChange({ id: trainee.id, value: v.value });
// Submit with error check
this.props
.submitVisitors(this.props.selectedEvent)
.then((value) => {
if (value === true) {
console.log('success');
} else {
console.log('error');
}
});
}}
/> />
</Table.Cell> </Table.Cell>
} )}
{/* Notes for trainees */}
<Table.Cell> <Table.Cell>
<Grid> <Grid>
<Grid.Row> <Grid.Row>
<Grid.Column floated='left' width={8} textAlign='left'> {/* Note text */}
<Grid.Column floated="left" width={8}>
{notes.length > 0 ? {notes.length > 0 ? (
<Comment> <Comment>
<Comment.Content> <Comment.Content>
<Comment.Author>{notes[0].created_by_name}</Comment.Author> <Comment.Author>
<Comment.Text> <b>{notes[0].created_by_name}:</b>
{notes[0].note.length > 50 ? notes[0].note.slice(0, 50).concat('...') </Comment.Author>
: <Comment.Text style={{ wordWrap: 'break-word' }}>
notes[0].note } {notes[0].note.length > 25
? notes[0].note.slice(0, 25).concat('...')
: notes[0].note}
</Comment.Text> </Comment.Text>
</Comment.Content> </Comment.Content>
</Comment> </Comment>
: ) : null}
null
}
</Grid.Column> </Grid.Column>
<Grid.Column floated='right' width={3} textAlign='right'> {/* Note buttons */}
{notes.length > 0 ? <Grid.Column floated="right" width={6} textAlign="right">
{notes.length > 0 ? (
<Popup <Popup
basic basic
open={this.state.showMorePopup} open={this.state.showMorePopup}
trigger={<Button icon='comment alternate outline' onClick={this.triggerMore} />} trigger={
content={notes.map((note) => { <Button
return ( icon="comment alternate outline"
<Comment.Content> onClick={this.triggerMore}
<Comment.Author>{note.created_by_name}</Comment.Author> />
<Comment.Text> }
{note.note} content={notes.map((oneNote) => (
</Comment.Text> <Comment.Content>
</Comment.Content> <Comment.Author>
); <b>{oneNote.created_by_name}:</b>
})} </Comment.Author>
<Comment.Text>{oneNote.note}</Comment.Text>
</Comment.Content>
))}
/> />
: ) : null}
null}
<Popup <Popup
trigger={<Button icon='plus' onClick={this.triggerAdd}/>}
basic basic
trigger={<Button icon="plus" onClick={this.triggerAdd} />}
open={this.state.showAddPopup} open={this.state.showAddPopup}
content={ content={
<Form reply> <Form reply>
<Form.TextArea <Form.TextArea
value={note.note} value={note.note}
onChange={e => this.props.writeNote(e)} onChange={(e) => this.props.writeNote(e)}
/> />
<Button <Button
onClick={() => {
this.props.postEventNote({ eventid:selectedEvent.id,
userid: trainee.id,
note: note.note });
this.props.clearWrite();
}
}
content='Megjegyzés hozzáadása'
labelPosition='left'
icon='edit'
primary primary
onClick={() => {
this.triggerAdd();
this.props.postEventNote({
eventid: selectedEvent.id,
userid: trainee.id,
note: note.note,
});
this.props.clearWrite();
}}
content="Megjegyzés hozzáadása"
labelPosition="left"
icon="edit"
/> />
</Form> </Form>
} }
/> />
</Grid.Column> </Grid.Column>
</Grid.Row> </Grid.Row>
...@@ -145,6 +170,12 @@ class TraineeTableRow extends Component { ...@@ -145,6 +170,12 @@ class TraineeTableRow extends Component {
); );
} }
} }
const mapStateToProps = ({ notes: { actualNote } }) => ({ actualNote }) const mapStateToProps = ({ notes: { actualNote } }) => ({ actualNote });
export default connect(mapStateToProps, { writeNote, clearWrite, postEventNote, visitorChange})(TraineeTableRow) export default connect(mapStateToProps, {
writeNote,
clearWrite,
postEventNote,
visitorChange,
submitVisitors,
})(TraineeTableRow);
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.