diff --git a/public/index.html b/public/index.html index e1b4c45a8f295fe8277db48c22c83ad4e6299089..e5bc7b4484c9bfe757c85fa8164c3758623ca6c8 100644 --- a/public/index.html +++ b/public/index.html @@ -20,7 +20,7 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> - <title>KSZKĂŠpzĂŠs 2018</title> + <title>KSZKĂŠpzĂŠs 2019</title> </head> <body> <noscript> diff --git a/src/components/ScrollToTop.js b/src/components/ScrollToTop.js new file mode 100644 index 0000000000000000000000000000000000000000..1b01052d6695b4a1648646a4a84eab3d6a021203 --- /dev/null +++ b/src/components/ScrollToTop.js @@ -0,0 +1,20 @@ +import React, { Component } from 'react'; +import { withRouter } from 'react-router-dom'; + +/* +* Default ScrollResoration: +* https://reacttraining.com/react-router/web/guides/scroll-restoration +*/ +class ScrollToTop extends Component { + componentDidUpdate(prevProps) { + if (this.props.location !== prevProps.location) { + window.scrollTo(0, 0) + } + } + + render() { + return this.props.children; + } +} + +export default withRouter(ScrollToTop); diff --git a/src/components/forms/AddEventForm.js b/src/components/forms/AddEventForm.js index 22b4016f42da3e2bdc3cc8609bf7f41939f83fe0..3be27b0c2f856f1eb3dbddaf8d0f7831e76e7503 100644 --- a/src/components/forms/AddEventForm.js +++ b/src/components/forms/AddEventForm.js @@ -31,9 +31,12 @@ class AddEventForm extends Component { open={this.state.showModal} trigger={ <Button + inverted + color='green' size='big' onClick={() => { this.setState({ showModal: true }); }} - >Alkalom hozzĂĄadĂĄsa + > + <Icon name='plus' />Alkalom hozzĂĄadĂĄsa </Button> } > diff --git a/src/components/forms/AddNewsForm.js b/src/components/forms/AddNewsForm.js index 24deefa957e9f4cd515baca9deeb28b26a5a3be7..ec6818289324bc3fb4fee66fdcedf9dd427f1501 100644 --- a/src/components/forms/AddNewsForm.js +++ b/src/components/forms/AddNewsForm.js @@ -20,9 +20,12 @@ class AddNewsForm extends Component { open={this.state.showModal} trigger={ <Button + inverted + color='green' size='big' onClick={() => { this.setState({ showModal: true }); }} - >HĂr hozzĂĄadĂĄsa + > + <Icon name='plus' />HĂr hozzĂĄadĂĄsa </Button> } > diff --git a/src/components/forms/EditEventForm.js b/src/components/forms/EditEventForm.js index fd50446b7a47901767cb89964d956fe6ef19874e..d0ec1fb3367944a2933259b4d68cbd553522d6a8 100644 --- a/src/components/forms/EditEventForm.js +++ b/src/components/forms/EditEventForm.js @@ -34,11 +34,12 @@ class EditEventForm extends Component { open={this.state.showModal} trigger={ <Button - compact + inverted + color='orange' onClick={() => { this.props.onClick(); this.setState({ showModal: true }); }} - size='mini' > + <Icon name='edit'/> Szerkeszt </Button> } diff --git a/src/components/pages/ApplicantProfile.js b/src/components/pages/ApplicantProfile.js index 535617c75f03d53c51b485bdf0578051c346a6df..a8595aa590f64c9fc5b288138d4ddc681f7dec4c 100644 --- a/src/components/pages/ApplicantProfile.js +++ b/src/components/pages/ApplicantProfile.js @@ -1,16 +1,36 @@ import React, { Component } from 'react'; -import { Container, Header, Item, Button, Label } from 'semantic-ui-react'; +import { Container, Header, Item, Button, Label, List } from 'semantic-ui-react'; import { connect } from 'react-redux'; import { getSelectedProfile, setStatus } from '../../actions/statistics'; import ConfirmModal from '../forms/ConfirmModal'; +const options = [ + { key: 'DT', text: 'DevTeam' }, + { key: 'NET', text: 'NETeam' }, + { key: 'ST', text: 'SecurITeam' }, + { key: 'SYS', text: 'SysAdmin' }, + { key: 'HAT', text: 'HallgatĂłi TudĂĄsbĂĄzis' }, +]; + class ApplicantProfile extends Component { componentWillMount() { this.props.getSelectedProfile(this.props.match.params.id); } + renderGroups() { + const { groups } = this.props.selectedProfile; + const groupNames = options.map(item => (groups.includes(item.key) ? item.text : null)); + return groupNames.map(item => ( + <List.Item> + <List.Content> + <List.Header>{item}</List.Header> + </List.Content> + </List.Item> + )); + } + render() { - const { id, signed, role, full_name, nick, motivation_about, motivation_exercise, motivation_profession } + const { id, signed, groups, role, full_name, nick, motivation_about, motivation_exercise, motivation_profession } = this.props.selectedProfile; return ( <Container style={{ padding: '60px' }}> @@ -28,6 +48,14 @@ class ApplicantProfile extends Component { <p>{motivation_profession}</p> <Header as='h3'>Feladatok megoldĂĄsa:</Header> <p>{motivation_exercise}</p> + <Header as='h3'>ĂrdeklĹdĂŠs:</Header> + { groups ? + <List horizontal> + {this.renderGroups()} + </List> + : + null + } </Container> <Container textAlign='center' style={{ padding: '20px' }}> <Header as='h3'>StĂĄtusz:</Header> diff --git a/src/components/pages/Applications.js b/src/components/pages/Applications.js index 68e6ce9ca2521880986e17a23f95da35bb155aec..c91771ea45944650886168867532984c5957a6ef 100644 --- a/src/components/pages/Applications.js +++ b/src/components/pages/Applications.js @@ -52,16 +52,19 @@ class Applications extends Component { </Table.Cell> } <Table.Cell> - <ConfirmModal - button = {<Button - color='blue' - size='tiny' - > - Staff jog adĂĄs - </Button>} - text='staff jogot adsz neki' - onAccept={() => this.props.setStatus(profile.id, 'Staff')} - /> + { profile.role !== 'Staff' ? + <ConfirmModal + button={<Button + color='blue' + size='tiny' + > + Staff jog adĂĄs + </Button>} + text='staff jogot adsz neki' + onAccept={() => this.props.setStatus(profile.id, 'Staff')} + /> + : + null } </Table.Cell> </Table.Row> ); @@ -76,7 +79,7 @@ class Applications extends Component { padding: '80px' }} > - <Table color='blue' celled selectable compact> + <Table color='blue' selectable compact> <Table.Header> <Table.Row> <Table.HeaderCell>Jelentkezettek</Table.HeaderCell> diff --git a/src/components/pages/CommentModal.js b/src/components/pages/CommentModal.js index eeba0feeb2628c848cdb518bd7b6ad3a07c37978..52433822677561d3ff84ea073cd627be3caf955c 100644 --- a/src/components/pages/CommentModal.js +++ b/src/components/pages/CommentModal.js @@ -9,9 +9,9 @@ class CommentModal extends Component { const { notes, user } = this.props; return notes.map((note) => { return ( - <Comment key={note.id}> + <Comment style={{ padding: '1em' }} stylekey={note.id}> <Comment.Content> - <Comment.Author>{note.created_by_name}</Comment.Author> + <Comment.Author><strong>{note.created_by_name}</strong></Comment.Author> <Comment.Text> {note.note} </Comment.Text> diff --git a/src/components/pages/EventDetail.js b/src/components/pages/EventDetail.js index fc748e5e90b481b71b1463bba924661d794e160b..3584835e846d6a5467b121c48f4a5962b15d9499 100644 --- a/src/components/pages/EventDetail.js +++ b/src/components/pages/EventDetail.js @@ -109,16 +109,16 @@ class EventDetail extends Component { '' } </Container> - <Table celled centered> + <Table centered> <Table.Header> <Table.Row> <Table.HeaderCell>NĂŠv</Table.HeaderCell> - <Table.HeaderCell>Jelen volt</Table.HeaderCell> + <Table.HeaderCell textAlign='center'>Jelen volt</Table.HeaderCell> <Table.HeaderCell>MegjegyzĂŠsek</Table.HeaderCell> </Table.Row> </Table.Header> <Table.Body> - { this.props.selectedEvent ? + { this.props.selectedEvent && this.props.trainees ? this.renderTrainees() : '' @@ -126,12 +126,16 @@ class EventDetail extends Component { </Table.Body> </Table> <Button + inverted + color='orange' onClick={() => this.setState({ edit: true })} > Szerkeszt </Button> { this.state.edit ? <Button + inverted + color='blue' onClick={() => { this.setState({ edit: false }); this.props.submitVisitors(this.props.selectedEvent); diff --git a/src/components/pages/Events.js b/src/components/pages/Events.js index d5b6d30b8b3eb9f69ac2c3df9059accaa4feb5ee..4a06d79ec7adde46d0007411262b19df208376c3 100644 --- a/src/components/pages/Events.js +++ b/src/components/pages/Events.js @@ -1,7 +1,7 @@ import React, { Component } from 'react'; import moment from 'moment'; import { Link } from 'react-router-dom'; -import { Container, Table, Button } from 'semantic-ui-react'; +import { Container, Table, Button, Icon } from 'semantic-ui-react'; import { connect } from 'react-redux'; import { getStaffEvents, deleteEvent, selectEventForEdit } from '../../actions/statistics'; import AddEventForm from '../forms/AddEventForm'; @@ -24,21 +24,21 @@ class Events extends Component { </Table.Cell> <Table.Cell>{moment(event.date).format('LL')}</Table.Cell> <Table.Cell>{event.visitor_number}</Table.Cell> - <Table.Cell> + <Table.Cell textAlign='center'> + <EditEventForm onClick={() => this.props.selectEventForEdit(event)} /> <ConfirmModal text={`tĂśrĂślni akarod a kĂśvetkezĹ alkalmat:${event.name}`} button={ <Button - compact + inverted color='red' - size='mini' > - TĂśrlĂŠs + <Icon name='x' /> + TĂśrlĂŠs </Button> } onAccept={() => this.props.deleteEvent(event)} /> - <EditEventForm onClick={() => this.props.selectEventForEdit(event)} /> </Table.Cell> </Table.Row> ); @@ -48,7 +48,7 @@ class Events extends Component { render() { return ( <Container textAlign='center'> - <Table color='blue' celled selectable compact> + <Table color='blue' selectable compact> <Table.Header> <Table.Row> <Table.HeaderCell>Alkalom neve</Table.HeaderCell> diff --git a/src/components/pages/Groups.js b/src/components/pages/Groups.js index 27518db98c3a962f415c66f552f6a5b34dc305d8..e04bf8eb9a2d7102dd5102ffcb89356fc8f9ccf2 100644 --- a/src/components/pages/Groups.js +++ b/src/components/pages/Groups.js @@ -6,22 +6,6 @@ export default class Groups extends Component { render() { return ( <div> - <Segment inverted textAlign='center' vertical> - <Container> - <Header - as='h1' - content='KĂśreink' - inverted - style={{ - fontSize: '3em', - fontWeight: 'normal', - marginBottom: 0, - marginTop: '0.5em', - }} - /> - </Container> - </Segment> - <Segment style={{ padding: '8em 0em' }} vertical> <Container text> <Header as='h3' style={{ fontSize: '2em' }}>DevTeam</Header> diff --git a/src/components/pages/Home.js b/src/components/pages/Home.js index 7d11c33aebbcf51f5da365f23958224c288a162a..ed0b4d2e36d87084942db290e6da397756e88ab1 100644 --- a/src/components/pages/Home.js +++ b/src/components/pages/Home.js @@ -144,13 +144,13 @@ class Home extends Component { Kik is vagyunk mi? </Header> <p style={{ fontSize: '1.33em', fontFamily: 'Arial' }}> - A KolleĚgiumi SzaĚmiĚtaĚstechnikai KoĚr az Egyetem legreĚgebben muĚkoĚdoĚ - eĚs legnagyobb aktiĚv, informatikaĚval foglalkozoĚ oĚnteveĚkeny - csoportosulaĚsa, idĂŠn ĂźnnepeljĂźk 42. szuĚleteĚsnapunkat. A patinaĚs - neĚv moĚgoĚtt vidaĚm hangulatuĚ, alkotoĚ kedvuĚ csapat rejlik, mely a Kar - joĚ szakmai keĚpesseĚguĚ, szaĚmiĚtaĚstechnika iraĚnt kiemelten eĚrdekloĚdoĚ - tagjaiboĚl verbuvaĚloĚdott, eĚs boĚvuĚl eĚvente uĚj tehetseĚgekkel, lelkes - informatikusokkal, villamosmeĚrnoĚkoĚkkel. + A KollĂŠgiumi SzĂĄmĂtĂĄstechnikai KĂśr az Egyetem legrĂŠgebben mĹąkĂśdĹ + ĂŠs legnagyobb aktĂv, informatikĂĄval foglalkozĂł ĂśntevĂŠkeny + csoportosulĂĄsa, idĂŠn ĂźnnepeljĂźk 43. szĂźletĂŠsnapunkat. A patinĂĄs + nĂŠv mĂśgĂśtt vidĂĄm hangulatĂş, alkotĂł kedvĹą csapat rejlik, mely a Kar + jĂł szakmai kĂŠpessĂŠgĹą, szĂĄmĂtĂĄstechnika irĂĄnt kiemelten ĂŠrdeklĹdĹ + tagjaibĂłl verbuvĂĄlĂłdott, ĂŠs bĹvĂźl ĂŠvente Ăşj tehetsĂŠgekkel, lelkes + informatikusokkal, villamosmĂŠrnĂśkĂśkkel. </p> <Button as={Link} size='large' to='/groups'> Ismerd meg a kĂśreinket! <Icon name='right arrow' /> @@ -160,28 +160,28 @@ class Home extends Component { LehetĹsĂŠgek </Header> <p style={{ fontSize: '1.33em', fontFamily: 'Arial' }}> - A KSZK a lehetoĚseĚgek taĚrhaĚza, a hely ahol Te â leendoĚ meĚrnoĚk â - minden teruĚleten kiproĚbaĚlhatod, tovaĚbbkeĚpezheted magad. NaĚlunk - kibontakoztathatod kreativitaĚsod, tapasztalatot, meĚrnoĚki - szemleĚletet szerezhetsz, mikoĚzben az uĚn. soft skill-jeidet is - fejlesztheted. Ha szaĚmodra a szakma hivataĚs, ha szeretsz uĚj - dolgokat alkotni vagy csak joĚ taĚrsasaĚgra vaĚgysz, a legjobb helyre - keruĚlteĚl. A reszort koĚrei a szakma egy-egy meghataĚrozoĚ teruĚleteĚvel - foglalkoznak a fejleszteĚs eĚs uĚzemelteteĚs teruĚleteĚn. + A KSZK a lehetĹsĂŠgek tĂĄrhĂĄza, a hely ahol Te â leendĹ mĂŠrnĂśk â + minden terĂźleten kiprĂłbĂĄlhatod, tovĂĄbbkĂŠpezheted magad. NĂĄlunk + kibontakoztathatod kreativitĂĄsod, tapasztalatot, mĂŠrnĂśki + szemlĂŠletet szerezhetsz, mikĂśzben az Ăşn. soft skill-jeidet is + fejlesztheted. Ha szĂĄmodra a szakma hivatĂĄs, ha szeretsz Ăşj + dolgokat alkotni vagy csak jĂł tĂĄrsasĂĄgra vĂĄgysz, a legjobb helyre + kerĂźltĂŠl. A reszort kĂśrei a szakma egy-egy meghatĂĄrozĂł terĂźletĂŠvel + foglalkoznak a fejlesztĂŠs ĂŠs ĂźzemeltetĂŠs terĂźletĂŠn. </p> <Divider as='h4' className='header' style={{ margin: '3em 0em' }} /> <Header as='h3' style={{ fontSize: '2em', fontFamily: 'Arial' }}> - KeĚpzeĚsuĚnk + KeĚpzeĚsĂźnk </Header> <p style={{ fontSize: '1.33em', fontFamily: 'Arial' }}> - Kilenc alkalmas keĚpzeĚsuĚnk veĚgeĚn Te is igazi KSZK-ssaĚ vaĚlhatsz, - hiszen rengeteg szakmai tudaĚst igyekszuĚnk aĚtadni nektek. A - keĚpzeĚsalkalmak rendkiĚvuĚl joĚ hangulatban telnek, eĚs a szociaĚlis - iraĚnyultsaĚguĚ foglalkozaĚsok alatt egy nagyon joĚ csapat kovaĚcsoloĚdik - az eĚrdekloĚdoĚkboĚl. Az elsoĚ keĚpzeĚs idoĚpontja februaĚr 19. heĚtfoĚ - 20:00, ettoĚl kezdve pedig minden heĚten talaĚlkozunk ugyanabban az - idoĚpontban. A keĚpzeĚs ideje alatt ĂĄprilis 6-8 koĚzoĚtt rendezuĚnk - taĚbort. Az alkalmakon eĚs a taĚborban koĚtelezoĚ a reĚszveĚtel. + Kilenc alkalmas kĂŠpzĂŠsĂźnk vĂŠgĂŠn Te is igazi KSZK-ssĂĄ vĂĄlhatsz, + hiszen rengeteg szakmai tudĂĄst igyekszĂźnk ĂĄtadni nektek. A + kĂŠpzĂŠsalkalmak rendkĂvĂźl jĂł hangulatban telnek, ĂŠs a szociĂĄlis + irĂĄnyultsĂĄgĂş foglalkozĂĄsok alatt egy nagyon jĂł csapat kovĂĄcsolĂłdik + az ĂŠrdeklĹdĹkbĹl. Az elsĹ kĂŠpzĂŠs idĹpontja februĂĄr 19. hĂŠtfĹ + 20:00, ettĹl kezdve pedig minden hĂŠten talĂĄlkozunk ugyanabban az + idĹpontban. A kĂŠpzĂŠs ideje alatt ĂĄprilis 6-8 kĂśzĂśtt rendezĂźnk + tĂĄbort. Az alkalmakon ĂŠs a tĂĄboron kĂśtelezĹ a rĂŠszvĂŠtel. </p> <Divider as='h4' className='header' style={{ margin: '3em 0em' }} /> <Segment inverted color='red' tertiary> diff --git a/src/components/pages/News.js b/src/components/pages/News.js index c1e16861e5ec7ce075af1251298fcaf818d13eca..e36377aaa324bbac56240169f896277bdf9eef5a 100644 --- a/src/components/pages/News.js +++ b/src/components/pages/News.js @@ -25,7 +25,10 @@ class News extends Component { style={{ fontSize: '2em', width: '100%' }} > <Grid> - <Grid.Column floated='left' width={8}> + <Grid.Column + floated='left' + width={this.props.user.role === 'Staff' ? 12 : 16} + > {item.title} </Grid.Column> { this.props.user.role === 'Staff' ? diff --git a/src/components/pages/Profile.js b/src/components/pages/Profile.js index be1396e0629c131b371bc7783b9efbdab65e9b9e..9cd0d06c8c157b3d1812bda469c0275b0023cdb8 100644 --- a/src/components/pages/Profile.js +++ b/src/components/pages/Profile.js @@ -20,7 +20,7 @@ class Profile extends Component { render() { const { - nick, groups, motivationAbout, motivationProfession, motivationExercise, signed, id, + role, nick, groups, motivationAbout, motivationProfession, motivationExercise, signed, id, } = this.props; return ( <Container @@ -123,14 +123,18 @@ class Profile extends Component { defaultValue={groups} /> <br /> - <Form.Checkbox - name='signed' - label='SzeretnĂŠk jelentkezni a KSZKĂŠpzĂŠsre' - onChange={(_, v) => - this.props.textChange({ target: { name: v.name, value: v.checked } }) - } - checked={signed} - /> + { role === 'Applicant' ? + <Form.Checkbox + name='signed' + label='SzeretnĂŠk jelentkezni a KSZKĂŠpzĂŠsre' + onChange={(_, v) => + this.props.textChange({ target: { name: v.name, value: v.checked } }) + } + checked={signed} + /> + : + null + } <Form.Button primary style={{ marginBottom: '10em' }} @@ -148,9 +152,10 @@ class Profile extends Component { const mapStateToProps = ({ user: { - nick, groups, motivationAbout, motivationProfession, motivationExercise, signed, id, + role, nick, groups, motivationAbout, motivationProfession, motivationExercise, signed, id, }, }) => ({ + role, nick, groups, motivationAbout, diff --git a/src/components/pages/Schedule.js b/src/components/pages/Schedule.js index 1b7e66eda96f72edf024bb86160b8e911110b3d9..6f3ac1a64f19aa92de783ef5017b5fcba96c4320 100644 --- a/src/components/pages/Schedule.js +++ b/src/components/pages/Schedule.js @@ -32,7 +32,7 @@ class Schedule extends Component { > <h3> <Grid> - <Grid.Column floated='left' width={5} textAlign='left'> + <Grid.Column floated='left' width={8} textAlign='left'> <Icon name='angle right' color='blue' />{event.name} </Grid.Column> <Grid.Column floated='right' width={8} textAlign='right'> @@ -42,23 +42,22 @@ class Schedule extends Component { </h3> </Accordion.Title> <Accordion.Content active={activeIndex === event.id}> - <Container text textAlign='left'> + <h4>LeĂrĂĄs:</h4> <p> {event.description} </p> - </Container> </Accordion.Content> </div> )); return ( <Container - textAlign='center' + textAlign='left' style={{ padding: '60px' }} > - <h2>KĂŠpzĂŠs alkalmak:</h2> + <h2>KĂŠpzĂŠsalkalmak:</h2> <Accordion fluid styled @@ -67,7 +66,6 @@ class Schedule extends Component { > {panels} </Accordion> - <h2>TĂĄbor:</h2> </Container> ); } diff --git a/src/components/pages/TraineeTableRow.js b/src/components/pages/TraineeTableRow.js index 34e58c3c4ac541fded95a5663c55875f3047e0d2..215ef8eff16bb6f818377810aa5cb923f9ad15fc 100644 --- a/src/components/pages/TraineeTableRow.js +++ b/src/components/pages/TraineeTableRow.js @@ -75,7 +75,7 @@ class TraineeTableRow extends Component { <Table.Cell> <Grid> <Grid.Row> - <Grid.Column floated='left' width={8} textAlign='left'> + <Grid.Column floated='left' width={11} textAlign='left'> {notes.length > 0 ? <Comment> @@ -92,7 +92,7 @@ class TraineeTableRow extends Component { null } </Grid.Column> - <Grid.Column floated='right' width={4} textAlign='right'> + <Grid.Column floated='right' width={5} textAlign='right'> {notes.length > 0 ? <CommentModal notes={notes} /> : diff --git a/src/components/pages/Trainees.js b/src/components/pages/Trainees.js index e49cc33900e5f54780cff2cd80c38f9db6da2bd3..0847eef0cfa27c1e1e6485a7c27034a0af94da00 100644 --- a/src/components/pages/Trainees.js +++ b/src/components/pages/Trainees.js @@ -43,7 +43,7 @@ class Trainees extends Component { renderTableHeader() { return (this.props.events.map(event => ( - <Table.HeaderCell> + <Table.HeaderCell textAlign='center'> {event.name} </Table.HeaderCell>))); } @@ -51,7 +51,7 @@ class Trainees extends Component { render() { return ( <Container textAlign='center'> - <Table color='blue' celled selectable compact> + <Table color='blue' selectable compact> <Table.Header> <Table.Row> <Table.HeaderCell>KĂŠpzĹdĹk</Table.HeaderCell> diff --git a/src/index.js b/src/index.js index d513a738a6db63966877345d76c276537688d139..2ccbb98c63d99aad688518269a25da632ca3a9c0 100644 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,9 @@ import { BrowserRouter as Router } from 'react-router-dom'; import 'slick-carousel/slick/slick.css'; import 'slick-carousel/slick/slick-theme.css'; import 'semantic-ui-css/semantic.min.css'; +import ScrollToTop from './components/ScrollToTop'; import moment from 'moment'; + import configureStore from './configureStore'; import App from './components/App'; import registerServiceWorker from './registerServiceWorker'; @@ -18,7 +20,9 @@ const store = configureStore(); render( <Provider store={store}> <Router> - <App /> + <ScrollToTop> + <App /> + </ScrollToTop> </Router> </Provider>, document.getElementById('root'),