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 822 additions and 471 deletions
.news-extra {
color: grey;
font-size: 0.75em;
font-style: italic;
font-family: fantasy;
text-align: justify;
}
.news-text {
font-size: 1.15em;
font-family: Arial, Helvetica, sans-serif;
text-align: justify;
}
import './News.css';
import { Button, Container, Grid, Item, Segment } from 'semantic-ui-react';
import React, { Component } from 'react';
import { deleteNews, getNews, setSelectedNews } from '../../actions/news';
import AddNewsForm from '../forms/AddNewsForm';
import ConfirmModal from '../forms/ConfirmModal';
import EditNewsForm from '../forms/EditNewsForm';
import { connect } from 'react-redux';
import moment from 'moment';
const linkify = (text) => {
const urlRegex = /(https?:\/\/[^\s]+)/g;
return text.split(urlRegex).map((part, index) =>
part.match(urlRegex) ? (
<a key={index} href={part} target="_blank" rel="noopener noreferrer">
{part}
</a>
) : (
part
)
);
};
class News extends Component {
UNSAFE_componentWillMount() {
this.props.getNews();
}
renderNews() {
return this.props.news.map((item) => (
<Item key={item.id}>
<Item.Content>
<Container text textAlign="left">
<Item.Header style={{ fontSize: '2em', width: '100%' }}>
<Grid>
<Grid.Column
floated="left"
width={this.props.user.role === 'Staff' ? 12 : 16}
>
{item.title}
</Grid.Column>
{this.props.user.role === 'Staff' ? (
<Grid.Column floated="right" width={4}>
<EditNewsForm
onClick={() => this.props.setSelectedNews(item)}
/>
<ConfirmModal
text={`törölni akarod a következő hírt: ${item.title}`}
button={
<Button compact color="red" size="mini">
Törlés
</Button>
}
onAccept={() => this.props.deleteNews(item)}
/>
</Grid.Column>
) : null}
</Grid>
</Item.Header>
<Item.Meta style={{ fontSize: '0.75em', fontStyle: 'italic' }}>
Közzétéve:
{moment(item.created_at).format('LLLL')}
</Item.Meta>
<Item.Description className="news-text" style={{ fontSize: '1em' }}>
{this.renderMultiLine(item.text)}
</Item.Description>
</Container>
</Item.Content>
</Item>
));
}
renderMultiLine = (text) => {
const strings = text.split('\n');
return strings.map((string) => <p key={Math.random()}>{linkify(string)}</p>);
};
render() {
return (
<div style={{ paddingTop: '1em', paddingBottom: '5em' }}>
<Segment vertical>
{/* { this.props.user.is_superuser ? <AddNewsForm /> : ''} */}
<Container text textAlign="center">
{this.props.user.role === 'Staff' ? <AddNewsForm /> : null}
<Item.Group divided>{this.renderNews()}</Item.Group>
</Container>
</Segment>
</div>
);
}
}
const mapStateToProps = ({ news, user }) => ({ news, user });
export default connect(mapStateToProps, {
getNews,
deleteNews,
setSelectedNews,
})(News);
import React, { Component } from "react";
import { NavLink } from "react-router-dom";
import {
Button,
Container,
Grid,
Header,
Icon,
List,
Menu,
Segment,
Visibility
} from "semantic-ui-react";
const FixedMenu = () => (
<Menu fixed="top" size="large">
<Container>
<Menu.Item as={NavLink} to="/home">
Home
</Menu.Item>
<Menu.Item as={NavLink} to="/roster">
Roster
</Menu.Item>
<Menu.Item as={NavLink} to="/schedule">
Schedule
</Menu.Item>
<Menu.Menu position="right">
<Menu.Item className="item">
<Button>Log in</Button>
</Menu.Item>
</Menu.Menu>
</Container>
</Menu>
);
import { Button, Container, Header, Icon, Segment } from 'semantic-ui-react';
import React, { Component } from 'react';
export default class NotFound extends Component {
state = {};
hideFixedMenu = () => this.setState({ visible: false });
showFixedMenu = () => this.setState({ visible: true });
render() {
const { visible } = this.state;
return (
<div>
{visible ? <FixedMenu /> : null}
<Visibility
onBottomPassed={this.showFixedMenu}
onBottomVisible={this.hideFixedMenu}
once={false}
>
<Segment
inverted
textAlign="center"
style={{ minHeight: 700, padding: "1em 0em" }}
vertical
>
<Container text>
<Header
as="h1"
content="KSZK"
inverted
style={{
fontSize: "4em",
fontWeight: "normal",
marginBottom: 0,
marginTop: "3em"
}}
/>
<Header
as="h2"
content="404"
inverted
style={{ fontSize: "1.7em", fontWeight: "normal" }}
/>
<Button primary size="huge">
Get Started
<Icon name="right arrow" />
</Button>
</Container>
</Segment>
</Visibility>
<Segment inverted vertical style={{ padding: "5em 0em" }}>
<Segment inverted textAlign="center" vertical>
<Container>
<Grid divided inverted stackable>
<Grid.Row>
<Grid.Column width={3}>
<Header inverted as="h4" content="About" />
<List link inverted>
<List.Item as="a">Sitemap</List.Item>
<List.Item as="a">Contact Us</List.Item>
<List.Item as="a">Religious Ceremonies</List.Item>
<List.Item as="a">Gazebo Plans</List.Item>
</List>
</Grid.Column>
<Grid.Column width={3}>
<Header inverted as="h4" content="Services" />
<List link inverted>
<List.Item as="a">Banana Pre-Order</List.Item>
<List.Item as="a">DNA FAQ</List.Item>
<List.Item as="a">How To Access</List.Item>
<List.Item as="a">Favorite X-Men</List.Item>
</List>
</Grid.Column>
<Grid.Column width={7}>
<Header as="h4" inverted>
Footer Header
</Header>
<p>Created by DevTeam 2017.</p>
</Grid.Column>
</Grid.Row>
</Grid>
<Header
as="h1"
content="404 - A keresett oldal nem található!"
inverted
style={{
fontSize: '3em',
fontWeight: 'normal',
marginBottom: 0,
marginTop: '0.5em',
}}
/>
<Button
href="/"
primary
size="huge"
style={{
fontSize: '2em',
marginTop: '1em',
marginBottom: '1em',
}}
>
Vissza a Főoldalra
<Icon name="right arrow" />
</Button>
</Container>
</Segment>
</div>
......
import { Container, Icon, Table } from 'semantic-ui-react';
import React, { Component } from 'react';
import { getStaffEvents, getTrainees } from '../../actions/statistics';
import { connect } from 'react-redux';
class Presence extends Component {
UNSAFE_componentWillMount() {
this.props.getTrainees();
this.props.getStaffEvents();
}
// Every event with visit status in table cells
renderVisitedStatus(trainee) {
return this.props.events.map((event) => {
if (event.visitors.includes(trainee.id)) {
return (
<Table.Cell textAlign="center" key={Math.random()}>
<Icon color="green" name="checkmark" />
</Table.Cell>
);
}
return (
<Table.Cell textAlign="center" key={Math.random()}>
<Icon color="red" name="cancel" />
</Table.Cell>
);
});
}
// Every event rendered
renderTraineesWithEvents() {
return this.props.trainees.map((trainee) =>
trainee.role === 'Student' ? (
<Table.Row key={Math.random()}>
<Table.Cell textAlign="center">{trainee.full_name}</Table.Cell>
{this.renderVisitedStatus(trainee)}
</Table.Row>
) : null
);
}
// Column for each event
renderTableHeaderEvents() {
return this.props.events.map((event) => (
<Table.HeaderCell textAlign="center" key={event.id}>
{event.name}
</Table.HeaderCell>
));
}
render() {
return (
<Container textAlign="center" style={{ overflowX: 'scroll' }}>
<Table color="blue" unstackable celled selectable compact>
<Table.Header>
<Table.Row>
<Table.HeaderCell textAlign="center">Képződők</Table.HeaderCell>
{this.renderTableHeaderEvents()}
</Table.Row>
</Table.Header>
<Table.Body>
{this.props.trainees ? (
this.renderTraineesWithEvents()
) : (
<Table.Row>
<Table.Cell>Nincsenek képződők</Table.Cell>
</Table.Row>
)}
</Table.Body>
</Table>
</Container>
);
}
}
const mapStateToProps = ({
trainees: { trainees },
events: { events },
user,
}) => ({ trainees, events, user });
export default connect(mapStateToProps, { getTrainees, getStaffEvents })(
Presence
);
import { Container, Divider, Dropdown, Form, Segment } from "semantic-ui-react";
import React, { Component } from "react";
import { NavLink } from "react-router-dom";
import {
Button,
Container,
Grid,
Header,
Icon,
List,
Menu,
Segment,
Visibility
} from "semantic-ui-react";
import { groupChange, submitRegistration, textChange } from "../../actions";
const FixedMenu = () => (
<Menu fixed="top" size="large">
<Container>
<Menu.Item as={NavLink} to="/home">
Home
</Menu.Item>
<Menu.Item as={NavLink} to="/roster">
Roster
</Menu.Item>
<Menu.Item as={NavLink} to="/schedule">
Schedule
</Menu.Item>
<Menu.Menu position="right">
<Menu.Item className="item">
<Button>Log in</Button>
</Menu.Item>
</Menu.Menu>
</Container>
</Menu>
);
import HiddenForm from "../forms/HiddenForm";
import { connect } from "react-redux";
import { getDeadline } from "../../actions/auth";
export default class Profile extends Component {
state = {};
const options = [
{ key: "DT", text: "DevTeam", value: "DT" },
{ key: "NET", text: "NETeam", value: "NET" },
{ key: "ST", text: "SecurITeam", value: "ST" },
{ key: "SYS", text: "SysAdmin", value: "SYS" },
{ key: "HAT", text: "Hallgatói Tudásbázis", value: "HAT" },
];
hideFixedMenu = () => this.setState({ visible: false });
showFixedMenu = () => this.setState({ visible: true });
class Profile extends Component {
UNSAFE_componentWillMount() {
this.props.getDeadline();
if (!this.props.id) {
this.props.history.push("/home");
}
}
render() {
const { visible } = this.state;
const {
nick,
groups,
motivationAbout,
motivationProfession,
motivationExercise,
signed,
id,
deadline,
messageBefore,
messageAfter,
} = this.props;
const endDate = new Date(deadline);
const canEdit = Date.now() < endDate;
return (
<div>
{visible ? <FixedMenu /> : null}
<Visibility
onBottomPassed={this.showFixedMenu}
onBottomVisible={this.hideFixedMenu}
once={false}
>
<Segment
inverted
textAlign="center"
style={{ minHeight: 700, padding: "1em 0em" }}
vertical
>
<Container text>
<Header
as="h1"
content="KSZK"
inverted
style={{
fontSize: "4em",
fontWeight: "normal",
marginBottom: 0,
marginTop: "3em"
}}
/>
<Header
as="h2"
content="Profil"
inverted
style={{ fontSize: "1.7em", fontWeight: "normal" }}
/>
<Button primary size="huge">
Get Started
<Icon name="right arrow" />
</Button>
</Container>
<Container
style={{
marginTop: "1em",
}}
>
{canEdit ? (
<Segment inverted color="red" tertiary>
<p
style={{ fontSize: "1.3em" }}
dangerouslySetInnerHTML={{ __html: messageBefore }}
/>
</Segment>
) : (
<Segment inverted color="red" tertiary>
<p
style={{ fontSize: "1.3em" }}
dangerouslySetInnerHTML={{ __html: messageAfter }}
/>
</Segment>
</Visibility>
)}
<Segment inverted vertical style={{ padding: "5em 0em" }}>
<Container>
<Grid divided inverted stackable>
<Grid.Row>
<Grid.Column width={3}>
<Header inverted as="h4" content="About" />
<List link inverted>
<List.Item as="a">Sitemap</List.Item>
<List.Item as="a">Contact Us</List.Item>
<List.Item as="a">Religious Ceremonies</List.Item>
<List.Item as="a">Gazebo Plans</List.Item>
</List>
</Grid.Column>
<Grid.Column width={3}>
<Header inverted as="h4" content="Services" />
<List link inverted>
<List.Item as="a">Banana Pre-Order</List.Item>
<List.Item as="a">DNA FAQ</List.Item>
<List.Item as="a">How To Access</List.Item>
<List.Item as="a">Favorite X-Men</List.Item>
</List>
</Grid.Column>
<Grid.Column width={7}>
<Header as="h4" inverted>
Footer Header
</Header>
<p>Created by DevTeam 2017.</p>
</Grid.Column>
</Grid.Row>
</Grid>
</Container>
</Segment>
</div>
<Form>
{canEdit ? (
<Form.Input
fluid
name="nick"
label="Becenév"
onChange={(e) => this.props.textChange(e)}
placeholder="Becenév"
value={nick}
/>
) : (
<HiddenForm fontWeight="bold" label="Becenév" value={nick} />
)}
<Divider horizontal>Motiváció</Divider>
{canEdit ? (
<Form.TextArea
rows={10}
name="motivationAbout"
label="Mesélj nekünk egy kicsit magadról. Milyen szakmai vagy más eredményeket értél el, amikre büszke vagy?"
onChange={(e) => this.props.textChange(e)}
placeholder="Mesélj nekünk egy kicsit magadról. Milyen szakmai vagy más eredményeket értél el, amikre büszke vagy?"
value={motivationAbout}
/>
) : (
<HiddenForm
fontWeight="bold"
label="Mesélj nekünk egy kicsit magadról. Milyen szakmai vagy más eredményeket értél el, amikre büszke vagy?"
value={motivationAbout}
/>
)}
<Divider horizontal />
{canEdit ? (
<Form.TextArea
rows={10}
label="Mit vársz el a képzéstől, miért szeretnél rá jelentkezni, szerinted mire tudod majd használni az itt megszerzett tudást? Mit szeretnél elérni a szakmádban?"
name="motivationProfession"
onChange={(e) => this.props.textChange(e)}
placeholder="Mit vársz el a képzéstől, miért szeretnél rá jelentkezni, szerinted mire tudod majd használni az itt megszerzett tudást? Mit szeretnél elérni a szakmádban?"
value={motivationProfession}
/>
) : (
<HiddenForm
fontWeight="bold"
label="Mit vársz el a képzéstől, miért szeretnél rá jelentkezni, szerinted mire tudod majd használni az itt megszerzett tudást? Mit szeretnél elérni a szakmádban?"
value={motivationProfession}
/>
)}
<Divider horizontal />
{canEdit ? (
<Form.TextArea
rows={10}
name="motivationExercise"
onChange={(e) => this.props.textChange(e)}
placeholder=""
label={
<div>
<b>
Alább találsz néhány elgondolkodtató kérdést, megoldandó
feladatot. A kérdések és feladatok elkészítése opcionális,
nem titkolt célunk ezzel a lelkesedés felmérése. A
válaszokat a kérdések alatti szövegdobozba várjuk.
</b>
<ul>
<li>
Szeretnéd kedvenc tantárgyad vik.wiki oldalát elérni, de
szomorúan látod, hogy az oldal nem jön be. A Steam pedig
hibátlanul megy a háttérben és az emailek is
megérkeznek... Szobatársadnak pont megvan a vik.wiki
szerverének IP-címe. Csodálkozva látod, hogy a böngésző
címsorába írva eléred a kiszolgáló webszervert. Mi lehet a
baj?
</li>
<br />
<li>
Kicsit hosszúra nyúlt az előadás és lassan rohannod kell
haza, ezért úgy döntesz, hogy megnézed a menetrendet a
menetrendek.hu weboldalon. Ám az oldal nem válaszol, a
hiba okát megpróbálod kideríteni. Ekkor veszed észre, hogy
az alábbiakat sem éred el: sze.hu, corvinus.hu,
startlap.hu. Ugyanakkor a Facebook, a Gmail, a YouTube, de
még az egyetemi oldalak többsége is működik. Szerinted mi
lehet a hiba oka?
</li>
<br />
<li>
Találsz egy értelmetlen szöveget egy honlapon (például:{" "}
<a href="https://ujonc.kszk.bme.hu/kepzes-media/public/zebra.html">
https://ujonc.kszk.bme.hu/kepzes-media/public/zebra.html
</a>
), de feltűnik, hogy egyenlőségjellel fejeződik be.
Nyomozz, s a végeredményt (amit találtál) írd ide!
</li>
<br />
<li>
A <b>ujonc-gres.kszk.bme.hu</b> címen elérhető gépen fut
egy szolgáltatás az alapértelmezett <b>5432</b> porton
(használd az előző feladatban kapott adatokat). Belépés
után írd le mit találtál!
</li>
</ul>
</div>
}
value={motivationExercise}
/>
) : (
<HiddenForm
fontWeight="normal"
label={
<div>
<b>
Alább találsz néhány elgondolkodtató kérdést, megoldandó
feladatot. A kérdések és feladatok elkészítése opcionális,
nem titkolt célunk ezzel a lelkesedés felmérése. A
válaszokat a kérdések alatti szövegdobozba várjuk.
</b>
<ul>
<li>
Szeretnéd kedvenc tantárgyad vik.wiki oldalát elérni, de
szomorúan látod, hogy az oldal nem jön be. A Steam pedig
hibátlanul megy a háttérben és az emailek is
megérkeznek... Szobatársadnak pont megvan a vik.wiki
szerverének IP-címe. Csodálkozva látod, hogy a böngésző
címsorába írva eléred a kiszolgáló webszervert. Mi lehet a
baj?
</li>
<br />
<li>
Kicsit hosszúra nyúlt az előadás és lassan rohannod kell
haza, ezért úgy döntesz, hogy megnézed a menetrendet a
menetrendek.hu weboldalon. Ám az oldal nem válaszol, a
hiba okát megpróbálod kideríteni. Ekkor veszed észre, hogy
az alábbiakat sem éred el: sze.hu, corvinus.hu,
startlap.hu. Ugyanakkor a Facebook, a Gmail, a YouTube, de
még az egyetemi oldalak többsége is működik. Szerinted mi
lehet a hiba oka?
</li>
<br />
<li>
Találsz egy értelmetlen szöveget egy honlapon (például:{" "}
<a href="https://ujonc.kszk.bme.hu/kepzes-media/public/zebra.html">
https://ujonc.kszk.bme.hu/kepzes-media/public/zebra.html
</a>
), de feltűnik, hogy egyenlőségjellel fejeződik be.
Nyomozz, s a végeredményt (amit találtál) írd ide!
</li>
<br />
<li>
A <b>ujonc-gres.kszk.bme.hu</b> címen elérhető gépen fut
egy szolgáltatás az alapértelmezett <b>5432</b> porton
(használd az előző feladatban kapott adatokat). Belépés
után keresd meg a feladat megoldását!
</li>
</ul>
</div>
}
value={motivationExercise}
/>
)}
<Divider horizontal>Érdeklődés</Divider>
<Dropdown
fluid
multiple
selection
placeholder="DevTeam, ..."
onChange={(_, v) => this.props.groupChange(v.value)}
options={options}
defaultValue={groups}
disabled={!canEdit}
/>
<br />
<Form.Checkbox
name="signed"
label="Szeretnék a képzés során emaileket kapni és jelentkezni a KSZKépzésre"
onChange={(_, v) =>
this.props.textChange({
target: { name: v.name, value: v.checked },
})
}
checked={signed}
readOnly={!canEdit}
style={!canEdit ? { marginBottom: "5em" } : null}
/>
{canEdit ? (
<Form.Button
primary
style={{ marginBottom: "5em" }}
disabled={!signed}
onClick={() =>
this.props.submitRegistration({
nick,
motivationAbout,
motivationProfession,
motivationExercise,
signed,
groups,
id,
})
}
>
Mentés
</Form.Button>
) : (
""
)}
</Form>
</Container>
);
}
}
const mapStateToProps = ({
user: {
nick,
groups,
motivationAbout,
motivationProfession,
motivationExercise,
signed,
id,
deadline,
messageBefore,
messageAfter,
},
}) => ({
nick,
groups,
motivationAbout,
motivationProfession,
motivationExercise,
signed,
id,
deadline,
messageBefore,
messageAfter,
});
export default connect(mapStateToProps, {
textChange,
submitRegistration,
groupChange,
getDeadline,
})(Profile);
import React, { Component } from "react";
import { NavLink } from "react-router-dom";
import "moment/locale/hu";
import {
Button,
Accordion,
Container,
Grid,
Header,
Icon,
List,
Menu,
Segment,
Visibility
} from "semantic-ui-react";
import React, { Component } from "react";
const FixedMenu = () => (
<Menu fixed="top" size="large">
<Container>
<Menu.Item as={NavLink} to="/home">
Home
</Menu.Item>
<Menu.Item as={NavLink} to="/roster">
Roster
</Menu.Item>
<Menu.Item as={NavLink} to="/schedule">
Schedule
</Menu.Item>
<Menu.Menu position="right">
<Menu.Item className="item">
<Button>Log in</Button>
</Menu.Item>
</Menu.Menu>
</Container>
</Menu>
);
import { connect } from "react-redux";
import { getStudentEvents } from "../../actions/statistics";
import moment from "moment";
export default class Schedule extends Component {
state = {};
class Schedule extends Component {
// eslint-disable-next-line react/state-in-constructor
state = { activeIndex: 0 };
hideFixedMenu = () => this.setState({ visible: false });
showFixedMenu = () => this.setState({ visible: true });
UNSAFE_componentWillMount() {
this.props.getStudentEvents();
}
render() {
const { visible } = this.state;
handleClick = (e, titleProps) => {
const { index } = titleProps;
const { activeIndex } = this.state;
const newIndex = activeIndex === index ? -1 : index;
return (
<div>
{visible ? <FixedMenu /> : null}
this.setState({ activeIndex: newIndex });
};
<Visibility
onBottomPassed={this.showFixedMenu}
onBottomVisible={this.hideFixedMenu}
once={false}
>
<Segment
inverted
textAlign="center"
style={{ minHeight: 700, padding: "1em 0em" }}
vertical
>
<Container text>
<Header
as="h1"
content="KSZK"
inverted
style={{
fontSize: "4em",
fontWeight: "normal",
marginBottom: 0,
marginTop: "3em"
}}
/>
<Header
as="h2"
content="Ütemterv"
inverted
style={{ fontSize: "1.7em", fontWeight: "normal" }}
/>
<Button primary size="huge">
Get Started
<Icon name="right arrow" />
</Button>
</Container>
</Segment>
</Visibility>
render() {
const { activeIndex } = this.state;
<Segment inverted vertical style={{ padding: "5em 0em" }}>
<Container>
<Grid divided inverted stackable>
<Grid.Row>
<Grid.Column width={3}>
<Header inverted as="h4" content="About" />
<List link inverted>
<List.Item as="a">Sitemap</List.Item>
<List.Item as="a">Contact Us</List.Item>
<List.Item as="a">Religious Ceremonies</List.Item>
<List.Item as="a">Gazebo Plans</List.Item>
</List>
</Grid.Column>
<Grid.Column width={3}>
<Header inverted as="h4" content="Services" />
<List link inverted>
<List.Item as="a">Banana Pre-Order</List.Item>
<List.Item as="a">DNA FAQ</List.Item>
<List.Item as="a">How To Access</List.Item>
<List.Item as="a">Favorite X-Men</List.Item>
</List>
const { events } = this.props;
const panels = events
.sort((a, b) => a.date - b.date)
.map((event) => (
<Accordion key={Math.random()}>
<Accordion.Title
active={activeIndex === event.id}
index={event.id}
onClick={this.handleClick}
>
<h2>
<Grid>
<Grid.Column floated="left" width={5} textAlign="left">
<Icon name="calendar alternate outline" color="blue" />{" "}
{event.name}
</Grid.Column>
<Grid.Column width={7}>
<Header as="h4" inverted>
Footer Header
</Header>
<p>Created by DevTeam 2017.</p>
<Grid.Column floated="right" width={8} textAlign="right">
{moment(event.date).locale("hu").format("LLLL")}
</Grid.Column>
</Grid.Row>
</Grid>
</Container>
</Segment>
</Grid>
</h2>
</Accordion.Title>
<Accordion.Content active={activeIndex === event.id}>
<Segment textAlign="left" style={{ overflowWrap: "break-word" }}>
{event.description}
</Segment>
</Accordion.Content>
</Accordion>
));
return (
<div>
<Container textAlign="center">
<Header
as="h1"
content="Képzés alkalmak"
style={{
fontSize: "2em",
fontWeight: "bold",
marginBottom: "0.5em",
marginTop: "0.5em",
}}
/>
<Accordion fluid styled>
{panels}
</Accordion>
<Header
as="h1"
content="Tábor: április 11-13"
style={{
fontSize: "2em",
fontWeight: "bold",
marginBottom: "0.5em",
marginTop: "1.5em",
}}
/>
</Container>
</div>
);
}
}
const mapStateToProps = ({ events: { events }, user }) => ({ events, user });
export default connect(mapStateToProps, { getStudentEvents })(Schedule);
import { Container, Menu } from 'semantic-ui-react';
import React, { Component } from 'react';
import Events from './Events';
import LeaderBoard from './LeaderBoard';
import Presence from './Presence';
export default class Statistics extends Component {
// eslint-disable-next-line react/state-in-constructor
state = { activeItem: 'events' };
handleItemClick = (e, { name }) => this.setState({ activeItem: name });
render() {
const { activeItem } = this.state;
return (
<div>
<Container
textAlign="center"
style={{ paddingBottom: '5em', paddingTop: '1em' }}
>
<Menu tabular attached="top" size="huge" compact>
<Menu.Item
name="events"
active={activeItem === 'events'}
onClick={this.handleItemClick}
>
Alkalmak
</Menu.Item>
<Menu.Item
name="presence"
active={activeItem === 'presence'}
onClick={this.handleItemClick}
>
Jelenlét
</Menu.Item>
<Menu.Item
name="leaderboard"
active={activeItem === 'leaderboard'}
onClick={this.handleItemClick}
>
Ranglista
</Menu.Item>
</Menu>
{activeItem === 'events' ? <Events /> : ''}
{activeItem === 'presence' ? <Presence /> : ''}
{activeItem === 'leaderboard' ? <LeaderBoard /> : ''}
</Container>
</div>
);
}
}
import React, { Component } from "react";
import { NavLink } from "react-router-dom";
import {
Button,
Container,
Grid,
Header,
Icon,
List,
Menu,
Segment,
Visibility
} from "semantic-ui-react";
const FixedMenu = () => (
<Menu fixed="top" size="large">
<Container>
<Menu.Item as={NavLink} to="/home">
Home
</Menu.Item>
<Menu.Item as={NavLink} to="/roster">
Roster
</Menu.Item>
<Menu.Item as={NavLink} to="/schedule">
Schedule
</Menu.Item>
<Menu.Menu position="right">
<Menu.Item className="item">
<Button>Log in</Button>
</Menu.Item>
</Menu.Menu>
</Container>
</Menu>
);
export default class Trainers extends Component {
state = {};
hideFixedMenu = () => this.setState({ visible: false });
showFixedMenu = () => this.setState({ visible: true });
render() {
const { visible } = this.state;
return (
<div>
{visible ? <FixedMenu /> : null}
<Visibility
onBottomPassed={this.showFixedMenu}
onBottomVisible={this.hideFixedMenu}
once={false}
>
<Segment
inverted
textAlign="center"
style={{ minHeight: 700, padding: "1em 0em" }}
vertical
>
<Container text>
<Header
as="h1"
content="KSZK"
inverted
style={{
fontSize: "4em",
fontWeight: "normal",
marginBottom: 0,
marginTop: "3em"
}}
/>
<Header
as="h2"
content="Képzők"
inverted
style={{ fontSize: "1.7em", fontWeight: "normal" }}
/>
<Button primary size="huge">
Get Started
<Icon name="right arrow" />
</Button>
</Container>
</Segment>
</Visibility>
<Segment inverted vertical style={{ padding: "5em 0em" }}>
<Container>
<Grid divided inverted stackable>
<Grid.Row>
<Grid.Column width={3}>
<Header inverted as="h4" content="About" />
<List link inverted>
<List.Item as="a">Sitemap</List.Item>
<List.Item as="a">Contact Us</List.Item>
<List.Item as="a">Religious Ceremonies</List.Item>
<List.Item as="a">Gazebo Plans</List.Item>
</List>
</Grid.Column>
<Grid.Column width={3}>
<Header inverted as="h4" content="Services" />
<List link inverted>
<List.Item as="a">Banana Pre-Order</List.Item>
<List.Item as="a">DNA FAQ</List.Item>
<List.Item as="a">How To Access</List.Item>
<List.Item as="a">Favorite X-Men</List.Item>
</List>
</Grid.Column>
<Grid.Column width={7}>
<Header as="h4" inverted>
Footer Header
</Header>
<p>Created by DevTeam 2017.</p>
</Grid.Column>
</Grid.Row>
</Grid>
</Container>
</Segment>
</div>
);
}
}
export const APIKEY = '';
import { createStore, applyMiddleware } from 'redux';
import thunkMiddleware from 'redux-thunk';
import { createLogger } from 'redux-logger';
import { applyMiddleware, createStore } from 'redux';
// import { createLogger } from 'redux-logger';
import rootReducer from './reducers';
import thunkMiddleware from 'redux-thunk';
const loggerMiddleware = createLogger();
// const loggerMiddleware = createLogger();
export default function configureStore(preloadedState) {
return createStore(
rootReducer,
preloadedState,
applyMiddleware(
thunkMiddleware,
loggerMiddleware,
),
thunkMiddleware
// loggerMiddleware,
)
);
}
/* eslint-disable import/no-unresolved */
/* eslint-disable import/named */
/* eslint-disable import/extensions */
import React, { Component } from 'react';
import { connect } from 'react-redux';
// eslint-disable-next-line
import PropTypes from 'prop-types';
import Todo from '../components/Todo';
import { addTodo } from '../actions';
import { connect } from 'react-redux';
class TodoContainer extends Component {
render() {
......@@ -11,13 +15,11 @@ class TodoContainer extends Component {
return (
<div>
{
todos.map(todo => (
<Todo onClick={onTodoClick} key={Math.random()}>
{todo.data}
</Todo>
))
}
{todos.map((todo) => (
<Todo onClick={onTodoClick} key={Math.random()}>
{todo.data}
</Todo>
))}
</div>
);
}
......@@ -31,7 +33,7 @@ const mapStateToProps = (state) => {
};
};
const mapDispatchToProps = dispatch => ({
const mapDispatchToProps = (dispatch) => ({
onTodoClick: (data) => {
dispatch(addTodo(data));
},
......
body {
margin: 0;
padding: 0;
font-family: sans-serif;
}
import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
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 configureStore from './configureStore';
import './index.css';
import * as serviceWorker from './registerServiceWorker';
import App from './components/App';
import registerServiceWorker from './registerServiceWorker';
import { Provider } from 'react-redux';
import React from 'react';
import { BrowserRouter as Router } from 'react-router-dom';
import configureStore from './configureStore';
import moment from 'moment';
import { render } from 'react-dom';
moment.locale();
const store = configureStore();
......@@ -17,7 +22,7 @@ render(
<App />
</Router>
</Provider>,
document.getElementById('root'),
document.getElementById('root')
);
registerServiceWorker();
serviceWorker.unregister();
import { CLEAR_WRITE, WRITE_NEWS } from '../actions/types';
const INITIAL_STATE = { title: '', text: '' };
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case WRITE_NEWS:
return { ...state, [action.target]: action.payload };
case CLEAR_WRITE:
return INITIAL_STATE;
default:
return state;
}
};
import {
CLEAR_WRITE,
GET_SOLUTIONS,
WRITE_SOLUTION,
WRITE_SOLUTION_FILE,
} from '../actions/types';
const INITIAL_STATE = {
task: '',
name: '',
description: '',
file: '',
solutions: [],
};
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case WRITE_SOLUTION:
return { ...state, [action.target]: action.payload };
case WRITE_SOLUTION_FILE:
return { ...state, [action.target]: action.payload };
case GET_SOLUTIONS:
return { ...state, solutions: action.payload };
case CLEAR_WRITE:
return INITIAL_STATE;
default:
return state;
}
};
import { CLEAR_WRITE, WRITE_TASK, WRITE_TASK_DEADLINE } from '../actions/types';
const INITIAL_STATE = { title: '', text: '', deadline: '' };
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case WRITE_TASK:
return { ...state, [action.target]: action.payload };
case WRITE_TASK_DEADLINE:
return { ...state, [action.target]: action.payload };
case CLEAR_WRITE:
return INITIAL_STATE;
default:
return state;
}
};
import {
CHECK,
CLEAR_WRITE,
SELECT_SOLUTION,
SETCHECKTRUE,
WRITE_SOLUTION,
} from '../actions/types';
const INITIAL_STATE = {
accepted: false,
corrected: false,
note: '',
};
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case SELECT_SOLUTION:
return {
corrected: action.payload.corrected,
accepted: action.payload.accepted,
note: action.payload.note,
};
case WRITE_SOLUTION:
return { ...state, [action.target]: action.payload };
case CHECK:
return {
...state,
[action.target]: !state[action.target],
};
case SETCHECKTRUE:
return {
...state,
[action.target]: true,
};
case CLEAR_WRITE:
return INITIAL_STATE;
default:
return state;
}
};
import { CLEAR_WRITE, SELECT_NEWS, WRITE_NEWS } from '../actions/types';
const INITIAL_STATE = {};
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case SELECT_NEWS:
return action.payload;
case WRITE_NEWS:
return { ...state, [action.target]: action.payload };
case CLEAR_WRITE:
return INITIAL_STATE;
default:
return state;
}
};
import {
CLEAR_WRITE,
SELECT_TASK,
WRITE_TASK,
WRITE_TASK_DEADLINE,
} from '../actions/types';
const INITIAL_STATE = {};
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case SELECT_TASK:
return action.payload;
case WRITE_TASK:
return { ...state, [action.target]: action.payload };
case WRITE_TASK_DEADLINE:
return { ...state, [action.target]: action.payload };
case CLEAR_WRITE:
return INITIAL_STATE;
default:
return state;
}
};