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
Commits on Source (125)
Showing with 26576 additions and 17337 deletions
{
"extends": "airbnb",
"parser": "babel-eslint",
"globals": {
"document": false
},
"rules": {
"react/jsx-filename-extension": 0,
"react/no-danger": 0,
"jsx-quotes": ["error", "prefer-single"],
"import/prefer-default-export": 0,
"react/prop-types": 1,
"react/prop-types": 0,
"react/destructuring-assignment": 0,
"react/prefer-stateless-function": 0,
"no-case-declarations": 1
"camelcase": 0,
"no-alert": "off",
"no-undef": "off",
"no-console": "off",
"no-prototype-builtins": "off",
"import/no-cycle": "off",
"jsx-a11y/label-has-associated-control": "off",
"react/no-access-state-in-setstate": "off",
"consistent-return": "off",
"no-case-declarations": "off"
}
}
variables:
CONTAINER_IMAGE: 'harbor.sch.bme.hu/kszk-kepzes/frontend:$CI_COMMIT_REF_NAME'
stages:
- Pre Build
- Docker Build
- deploy
PreBuild:
stage: Pre Build
# tags: [kszk]
image: node:14.19-alpine3.14
script:
- 'echo -n "Node version: " && node --version \
&& echo -n "NPM version: " && npm --version'
- npm install
- npm run build
cache:
paths:
- build/
artifacts:
expire_in: 1 day
paths:
- build/
only:
- tags
Docker build:
stage: Docker Build
# tags: [kszk]
only:
- tags
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: ['']
script:
- echo "{\"auths\":{\"harbor.sch.bme.hu\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CONTAINER_IMAGE
Deploy to Kubernetes:
stage: deploy
image: alpine
tags: [k9r]
environment:
name: master
before_script:
- chmod 600 $KUBECONFIG
- apk add --no-cache curl
- curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
- chmod +x ./kubectl
- mv ./kubectl /usr/local/bin/kubectl
- kubectl version
script:
- cd k8s
- sed -i "s|##IMAGETAG##|${CI_COMMIT_REF_NAME}|" deployment.yaml
- kubectl apply -f ./
only:
- tags
FROM node:10-alpine
FROM nginx:1.19.2
WORKDIR /opt/app
ENV TZ Europe/Budapest
RUN apk add --no-cache tzdata && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# copy the files builded with npm run build
COPY build /var/www
COPY nginx.conf /etc/nginx/nginx.conf
# Copying application files
COPY ./src ./src
COPY ./public ./public
COPY package.json yarn.lock package-lock.json ./
# Installing dependencies
RUN npm install
# Building the application
RUN npm run build
# Running
EXPOSE 3000
ENTRYPOINT ["npm", "run", "start"]
ENTRYPOINT ["nginx","-g","daemon off;"]
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kszkepzes-frontend
namespace: kszk-kepzes-site
spec:
replicas: 1
selector:
matchLabels:
app: kszkepzes-frontend
strategy:
type: Recreate
template:
metadata:
labels:
app: kszkepzes-frontend
spec:
containers:
- name: kszkepzes-frontend
image: harbor.sch.bme.hu/kszk-kepzes/frontend:##IMAGETAG##
imagePullPolicy: 'Always'
ports:
- containerPort: 3000
resources:
limits:
memory: 200Mi
imagePullSecrets:
- name: harbor
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: kszk-kepzes-site
annotations:
cert-manager.io/cluster-issuer: letsencrypt
kubernetes.io/tls-acme: "true"
name: kszkepzes-frontend
spec:
rules:
- host: "ujonc.kszk.bme.hu"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kszkepzes-frontend
port:
number: 3000
tls:
- hosts:
- "ujonc.kszk.bme.hu"
secretName: kszkepzes-cert
\ No newline at end of file
---
apiVersion: v1
kind: Service
metadata:
name: kszkepzes-frontend
namespace: kszk-kepzes-site
spec:
type: ClusterIP
ports:
- port: 3000
targetPort: 3000
name: front
protocol: TCP
selector:
app: kszkepzes-frontend
# auto detects a good number of processes to run
worker_processes auto;
#Provides the configuration file context in which the directives that affect connection processing are specified.
events {
# Sets the maximum number of simultaneous connections that can be opened by a worker process.
worker_connections 8000;
# Tells the worker to accept multiple connections at a time
multi_accept on;
}
http {
# what times to include
include /etc/nginx/mime.types;
# what is the default one
default_type application/octet-stream;
# Sets the path, format, and configuration for a buffered log write
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $upstream_addr '
'"$http_referer" "$http_user_agent"';
server {
# listen on port 80
listen 3000;
# save logs here
access_log /var/log/nginx/access.log compression;
# where the root here
root /var/www;
# what file to server as index
index index.html index.htm;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to redirecting to index.html
try_files $uri $uri/ /index.html;
}
# Media: images, icons, video, audio, HTC
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
}
# Javascript and CSS files
location ~* \.(?:css|js)$ {
try_files $uri =404;
expires 1y;
access_log off;
add_header Cache-Control "public, max-age=60";
}
# Any route containing a file extension (e.g. /devicesfile.js)
location ~ ^.+\..+$ {
try_files $uri =404;
}
}
}
Source diff could not be displayed: it is too large. Options to address this: view the blob.
{
"name": "kszkepzes-frontend",
"version": "0.2.0",
"proxy": "http://127.0.0.1:8000/",
"version": "0.2.8",
"private": false,
"dependencies": {
"axios": "^0.19.2",
"eslint-plugin-flowtype": "^4.6.0",
"http-proxy-middleware": "^0.20.0",
"moment": "^2.24.0",
"npm": "^6.13.7",
"axios": "^0.21.1",
"eslint-plugin-flowtype": "^4.7.0",
"http-proxy-middleware": "^1.0.6",
"moment": "^2.29.1",
"npm": "^6.14.11",
"prop-types": "^15.7.2",
"react": "^16.12.0",
"react-datepicker": "^2.11.0",
"react-dom": "^16.12.0",
"react-redux": "^7.1.3",
"react-router-dom": "^5.1.2",
"react-scripts": "^3.3.0",
"react": "^16.14.0",
"react-datepicker": "^2.16.0",
"react-dom": "^16.14.0",
"react-redux": "^7.2.2",
"react-router-dom": "^5.2.0",
"react-scripts": "^3.4.4",
"react-slick": "^0.25.2",
"redux": "^4.0.5",
"redux-logger": "^3.0.6",
......@@ -33,10 +32,10 @@
},
"devDependencies": {
"eslint": "6.8.0",
"eslint-config-airbnb": "^18.0.1",
"eslint-plugin-import": "^2.20.0",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.18.0"
"eslint-config-airbnb": "^18.2.1",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-react": "^7.22.0"
},
"browserslist": [
">0.2%",
......
<!doctype html>
<html lang="en">
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="theme-color" content="#000000" />
<!--
manifest.json provides metadata used when your web app is added to the
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
<link rel="stylesheet" href="index.css">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<link
rel="shortcut icon"
type="image/svg+xml"
href="%PUBLIC_URL%/kszk_circle_lightblue.svg"
/>
<link rel="stylesheet" href="%PUBLIC_URL%/index.css" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
......@@ -20,12 +29,10 @@
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 2025</title>
</head>
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<noscript> You need to enable JavaScript to run this app. </noscript>
<div id="root" style="height: 100%"></div>
<!--
This HTML file is a template.
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1024"
height="1024"
viewBox="0 0 270.93333 270.93334"
version="1.1"
id="svg8"
inkscape:export-filename="kszk_circle_lighblue.png"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="kszk_circle_lightblue.svg">
<defs
id="defs2">
<linearGradient
id="linearGradient2383"
osb:paint="solid">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop2381" />
</linearGradient>
<inkscape:path-effect
effect="spiro"
id="path-effect3713"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect3709"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect3707"
is_visible="true" />
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter1431">
<feFlood
flood-opacity="0.196078"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood1421" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite1423" />
<feGaussianBlur
in="composite1"
stdDeviation="4.1"
result="blur"
id="feGaussianBlur1425" />
<feOffset
dx="0"
dy="1.1"
result="offset"
id="feOffset1427" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite1429" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter1245">
<feFlood
flood-opacity="0.356863"
flood-color="rgb(46,46,46)"
result="flood"
id="feFlood1235" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite1237" />
<feGaussianBlur
in="composite1"
stdDeviation="9.3"
result="blur"
id="feGaussianBlur1239" />
<feOffset
dx="4.57967e-015"
dy="7.6"
result="offset"
id="feOffset1241" />
<feComposite
in="offset"
in2="SourceGraphic"
operator="out"
result="composite2"
id="feComposite1243" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.5"
inkscape:cx="308.27755"
inkscape:cy="482.50482"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1014"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-grids="true"
inkscape:snap-to-guides="true"
inkscape:snap-page="true"
inkscape:pagecheckerboard="false"
showborder="true"
borderlayer="false"
inkscape:showpageshadow="true">
<inkscape:grid
type="xygrid"
id="grid4565"
empspacing="4"
spacingx="2.1166667"
spacingy="2.1166667"
dotted="false" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Sch"
style="display:none">
<rect
style="fill:#3051bf;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4530"
width="67.733337"
height="237.06667"
x="101.6"
y="16.933331"
ry="4.6411122e-007" />
<rect
style="fill:#3051bf;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4532"
width="25.399998"
height="220.1333"
x="67.733337"
y="33.866665"
ry="4.6411091e-007" />
<rect
style="fill:#3051bf;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4534"
width="25.399994"
height="220.1333"
x="177.8"
y="33.866665"
ry="4.6411091e-007" />
<path
style="fill:#3051bf;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 84.666666,186.26666 50.799999,220.13333 V 254 h 33.866667 v -67.73334"
id="path4538"
inkscape:connector-curvature="0" />
<path
style="fill:#3051bf;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 186.26667,186.26666 33.86666,33.86667 V 254 h -33.86666 v -67.73334"
id="path4540"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="sch_persp"
style="display:inline">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:'Segoe Print';-inkscape-font-specification:'Segoe Print';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="-143.18919"
y="240.73776"
id="text846"><tspan
sodipodi:role="line"
id="tspan844"
x="-143.18919"
y="240.73776"
style="font-size:59.26666641px;stroke-width:0.26458332"
dx="0">K</tspan></text>
<image
y="-8.4666691"
x="-148.16667"
id="image864"
xlink:href="data:image/png;base64,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 "
preserveAspectRatio="none"
height="119.0625"
width="122.76667" />
<path
style="fill:#3051bf;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
d="M -778.93332,-67.733335 -965.19999,507.99999 h 389.46666 V -50.800002 Z"
id="path869"
inkscape:connector-curvature="0" />
<path
style="fill:#a806c9;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -609.60001,-33.86667 -67.73333,118.533343 203.2,-50.800008 z"
id="path871"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:#ffb623;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -609.60001,135.46667 -67.73333,118.53334 203.2,-50.80001 z"
id="path871-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -609.60001,304.8 -67.73333,118.53334 203.2,-50.8 z"
id="path871-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:#b80000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M -863.60001,-2.6000001e-6 -931.33334,118.53334 l 203.2,-50.800013 z"
id="path871-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:#60c100;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -914.40002,135.46667 -67.73333,118.53334 203.2,-50.80001 z"
id="path871-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:#172081;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -931.33335,304.8 -67.73333,118.53334 203.2,-50.8 z"
id="path871-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:#27d4fa;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -127,719.66668 -67.73332,118.53334 203.199998,-50.8 z"
id="path871-0-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
</g>
<g
inkscape:label="kukac"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-26.06665)"
style="display:inline">
<g
id="g874"
transform="matrix(1.1645259,0,0,1.1645259,-22.288117,-26.602416)"
style="stroke:none;stroke-opacity:1">
<path
transform="matrix(0.26458333,0,0,0.26458333,0,26.06665)"
id="path867"
d="M 512.04883,127.7832 C 358.99976,127.75431 217.0157,219.77058 156.93945,365.77148 87.191043,535.27819 147.01164,730.91423 299.61523,832.31445 452.17047,933.68259 654.81816,912.98511 783.77148,782.87109 L 744.78906,744.24023 C 633.96084,856.06602 461.08646,873.71867 329.98438,786.60547 198.93071,699.52447 147.77632,532.25874 207.68945,386.6543 267.60257,241.04984 421.57668,158.38486 575.87695,188.94531 c 154.3002,30.56045 265.23036,165.70356 265.23047,323.17969 4e-5,48.0011 -15.83603,71.5397 -38.3125,87.37891 -22.28149,15.70176 -54.25247,22.31594 -84.30664,22.42968 -3.65161,-4.8496 -14.37716,-23.60196 -17.20898,-34.07812 -1.33081,-4.92336 0.76032,-9.79761 1.17187,-10.93555 0.41137,-1.1379 11.88022,-12.5722 25.48633,-25.41015 27.12476,-25.59334 41.29688,-44.95373 41.29688,-52.18555 0,-3.539 -0.96632,-4.80705 -5.03907,-6.61328 -5.68021,-2.51913 -14.89484,-2.91844 -19.93359,-0.86328 -1.85038,0.75473 -16.0981,11.82447 -31.66016,24.59765 -15.56213,12.77318 -28.47257,23.03285 -28.6914,22.80078 -0.9261,-0.98298 10.30688,-46.12382 16.48437,-66.24414 3.69109,-12.02211 13.17068,-38.95237 21.06445,-59.84375 7.89381,-20.89137 14.35157,-39.09472 14.35157,-40.45312 0,-6.89231 -21.57769,-11.42784 -32.1211,-6.75196 -5.04533,2.23752 -5.49781,3.12382 -12.8457,25.24415 -12.03761,36.23837 -68.45828,216.07726 -76.9082,245.14062 -7.58801,26.09889 -7.63311,26.37164 -5.33399,32.4707 5.39815,14.31999 21.25874,15.26055 31.19727,1.84961 4.31346,-5.82047 13.83826,-27.40189 19.42187,-44.00781 l 7.25391,-15 7.21484,21.8418 c 12.57124,32.07439 23.75782,41.16286 41.99805,43.28711 1.04777,0.12196 2.3501,0.1006 3.73438,0.0293 37.26101,-0.21489 79.57575,-7.48873 114.99023,-32.44531 35.95865,-25.34003 61.5723,-70.42819 61.57227,-132.23828 -1.2e-4,-183.31567 -129.75559,-341.42579 -309.44922,-377.01562 -22.4617,-4.44873 -44.92989,-6.82621 -67.18946,-7.25586 -2.43464,-0.047 -4.86752,-0.0699 -7.29687,-0.0703 z M 362.60352,356.59375 c -4.32884,-0.0584 -8.74342,0.69231 -12.43164,2.45117 l -5.62696,2.6836 -13.73437,44.70703 c -14.43692,46.99494 -49.80211,169.38702 -59.9336,207.41992 -9.23129,34.65369 -10.18353,46.18396 -4.28125,51.85351 10.17474,9.7736 26.07305,-7.63649 39.97657,-43.78125 l 5.36328,-13.94531 5.37695,8.72852 c 10.0219,16.27336 25.37848,30.22709 39.80273,36.16601 10.41665,4.28897 25.5196,4.19105 34.90235,-0.22461 l 7.1543,-3.36718 3.74414,3.66211 c 9.6647,9.45063 23.03242,17.10838 34.125,19.54882 8.55575,1.88232 18.08027,0.33237 25.3164,-4.12109 18.35327,-11.29553 22.76171,-42.44127 11.125,-78.58984 -6.90678,-21.45517 -9.36247,-34.16011 -9.39648,-48.55274 -0.0301,-13.93685 2.20737,-21.45422 13.72461,-46.1289 7.4485,-15.95811 8.21457,-18.50275 7.625,-25.35938 -1.06685,-12.40811 -9.62054,-17.80141 -28.25391,-17.82031 -7.84815,-0.007 -9.65036,0.55785 -13.48242,4.23242 -3.95683,3.79423 -5.2581,7.65861 -12.32813,36.63281 -11.22417,45.99821 -31.11484,100.61198 -39.79101,109.25391 -2.09643,2.08819 -7.6799,6.64529 -12.4082,10.12695 -11.35567,8.36164 -17.15443,8.56182 -24.42774,0.8418 -8.59552,-9.12352 -17.11133,-29.68962 -17.11133,-41.32422 0,-1.06103 9.4304,-10.77515 20.95703,-21.58789 33.97833,-31.87381 45.69822,-46.36436 43.84375,-54.20703 -1.05773,-4.473 -5.28358,-5.6161 -14.15625,-3.83008 -11.91202,2.39785 -19.63608,7.50376 -45.5039,30.08398 -9.22117,8.04923 -16.76318,14.1081 -16.76172,13.4629 0.009,-2.99245 7.98739,-32.59167 14.03711,-52.07422 9.57519,-30.836 18.01308,-54.67186 30.3789,-85.82227 5.94063,-14.96493 10.80079,-28.95893 10.80079,-31.09766 0,-5.84702 -9.10157,-9.89309 -18.625,-10.02148 z m 265.00976,117.66797 c -23.86576,-0.18279 -81.89746,10.45517 -92.9082,18.02539 -13.9183,9.56927 -11.21172,29.9129 4.39648,33.04492 3.63651,0.72968 12.46716,-0.0571 25.08594,-2.23633 10.7102,-1.8497 19.72152,-3.09973 20.02539,-2.77734 0.30395,0.32262 -13.36442,14.13091 -30.37305,30.68555 -61.32011,59.68323 -72.89748,75.88188 -68.00976,95.14843 2.09359,8.25272 7.95584,15.09639 15.28711,17.84766 v -0.002 c 7.56767,2.84114 15.7432,2.83789 36.26562,-0.0176 34.33678,-4.77763 55.46004,-11.37487 64.0918,-20.01563 4.27211,-4.27672 5,-6.02622 5,-12.01367 0,-5.88729 -0.69329,-7.62631 -4.34375,-10.88672 -6.17548,-5.51539 -18.18627,-7.77633 -35.44922,-6.67187 l -14.36133,0.91797 9.27539,-8.67383 c 5.1018,-4.77082 21.43138,-21.57831 36.28711,-37.35156 29.55039,-31.37534 51.63335,-59.4514 53.04492,-67.4375 1.89173,-10.70351 -5.78498,-24.05195 -15.41601,-26.80469 -1.77821,-0.50823 -4.48904,-0.75514 -7.89844,-0.78125 z M 432.57617,592.58594 c 1.44959,0.0843 2.4092,5.25078 4.53516,16.31445 1.33379,6.94107 2.21939,15.10602 1.9707,18.14453 l -0.45117,5.52539 -7.89258,-6.26367 c -4.34048,-3.445 -8.42711,-6.26367 -9.08203,-6.26367 -2.03187,0 -1.38259,-2.21404 4.79883,-16.36524 3.18127,-7.28284 4.84204,-11.16619 6.12109,-11.09179 z"
style="display:inline;fill:#3faef7;fill-opacity:1;stroke:none;stroke-width:4.09700012;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>
import {
GET_DEADLINE,
GET_USERDATA,
GROUP_CHANGE,
PROFILE_CHANGE,
} from './types';
import axios from './session';
import { GET_USERDATA, PROFILE_CHANGE, GROUP_CHANGE, GET_DEADLINE } from './types';
export const getUserData = () => async (dispatch) => {
try {
const user = await axios.get('/api/v1/profiles/me');
const {
id,
join_date: joinDate,
nick,
motivation_about: motivationAbout,
motivation_profession: motivationProfession,
motivation_exercise: motivationExercise,
full_name,
signed,
groups,
role,
bits,
} = user.data;
let permission;
switch (role) {
case 'Applicant':
permission = 1;
break;
case 'Student':
permission = 2;
break;
case 'Staff':
permission = 3;
break;
default:
permission = 0;
break;
}
export const getUserData = () => (
async (dispatch) => {
try {
const user = await axios.get('/api/v1/profiles/me');
const {
dispatch({
type: GET_USERDATA,
payload: {
id,
join_date: joinDate,
joinDate,
nick,
motivation_about: motivationAbout,
motivation_profession: motivationProfession,
motivation_exercise: motivationExercise,
motivationAbout,
motivationProfession,
motivationExercise,
full_name,
signed,
groups,
role,
bits
} = user.data;
let permission;
switch (role) {
case 'Applicant':
permission = 1;
break;
case 'Student':
permission = 2;
break;
case 'Staff':
permission = 3;
break;
default:
permission = 0;
break;
}
permission,
bits,
},
});
} catch (e) {
console.log(e);
dispatch({
type: GET_USERDATA,
payload: {
id, joinDate, nick, motivationAbout, motivationProfession, motivationExercise, full_name, signed, groups, role, permission, bits
},
});
} catch (e) {
console.log(e);
// Invalid session bug workaround
if (!e.response) {
window.location = "/oidc/logout"
}
}
);
};
export const getDeadline = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/deadline');
export const getDeadline = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/deadline');
dispatch({
type: GET_DEADLINE,
payload: response.data,
});
} catch (e) {
console.log(e);
}
dispatch({
type: GET_DEADLINE,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
export const textChange = ({ target: { name, value } }) => (
(dispatch) => {
dispatch({ type: PROFILE_CHANGE, payload: value, target: name });
}
);
export const textChange = ({ target: { name, value } }) => (dispatch) => {
dispatch({ type: PROFILE_CHANGE, payload: value, target: name });
};
export const groupChange = groups => (
dispatch => (dispatch({ type: GROUP_CHANGE, payload: groups }))
);
export const groupChange = (groups) => (dispatch) =>
dispatch({ type: GROUP_CHANGE, payload: groups });
export const submitRegistration = ({
nick, groups, signed, motivationAbout, motivationProfession, motivationExercise, id,
}) => (
async () => {
try {
const response = await axios.patch(`/api/v1/profiles/${id}/`, {
nick,
groups,
signed,
motivation_about: motivationAbout,
motivation_profession: motivationProfession,
motivation_exercise: motivationExercise,
});
if (response.data.id === id) {
alert('Sikeres mentés!');
} else {
alert('Mentés nem sikerült!');
}
} catch (e) {
console.log(e);
nick,
groups,
signed,
motivationAbout,
motivationProfession,
motivationExercise,
id,
}) => async () => {
try {
const response = await axios.patch(`/api/v1/profiles/${id}/`, {
nick,
groups,
signed,
motivation_about: motivationAbout,
motivation_profession: motivationProfession,
motivation_exercise: motivationExercise,
});
if (response.data.id === id) {
alert('Sikeres mentés!');
} else {
alert('Mentés nem sikerült!');
}
} catch (e) {
console.log(e, e.response);
alert('Mentés nem sikerült!');
}
);
};
import axios from './session';
import { GET_GROUPS } from './types';
import axios from './session';
export const getGroups = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/groups');
dispatch({
type: GET_GROUPS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
export const getGroups = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/groups');
dispatch({
type: GET_GROUPS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
import { GET_IMAGES } from './types';
import axios from './session';
export const getImages = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/images');
dispatch({
type: GET_IMAGES,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
import axios from './session';
import { GET_TASKS,
GET_SOLUTIONS,
import {
ADD_DOCUMENT,
ADD_SOLUTION,
ADD_TASK,
CHECK,
CLEAR_WRITE,
CORRECT_SOLUTION,
DELETE_TASK,
WRITE_TASK,
EDIT_TASK,
GET_DOCUMENTS,
GET_PROFILES,
GET_SOLUTIONS,
GET_TASKS,
SELECT_SOLUTION,
SELECT_TASK,
CLEAR_WRITE,
ADD_SOLUTION,
SETCHECKTRUE,
WRITE_SOLUTION,
WRITE_SOLUTION_FILE,
GET_PROFILES,
ADD_DOCUMENT,
GET_DOCUMENTS,
CORRECT_SOLUTION,
SELECT_SOLUTION,
CHECK } from './types';
WRITE_TASK,
} from './types';
export const getTasks = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/homework/tasks/');
import axios from './session';
export const getTasks = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/homework/tasks/');
dispatch({
type: GET_TASKS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
export const getSolutions = (taskId) => async (dispatch) => {
try {
const response = await axios.get('/api/v1/homework/solutions/', {
task: taskId,
});
dispatch({
type: GET_SOLUTIONS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
export const addTask = ({ title, text, deadline, bits }) => async (
dispatch
) => {
try {
const response = await axios.post('/api/v1/homework/tasks/', {
title,
text,
deadline,
bits,
});
if (response.data.id) {
dispatch({
type: GET_TASKS,
type: ADD_TASK,
payload: response.data,
});
} catch (e) {
console.log(e);
}
} catch (e) {
console.log(e);
}
);
};
export const getSolutions = taskId => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/homework/solutions/', { task: taskId });
export const editTask = ({ id, title, text, deadline, bits }) => async (
dispatch
) => {
try {
const response = await axios.patch(`/api/v1/homework/tasks/${id}/`, {
title,
text,
deadline,
bits,
});
if (response.data.id) {
dispatch({
type: GET_SOLUTIONS,
type: EDIT_TASK,
payload: response.data,
});
} catch (e) {
console.log(e);
}
} catch (e) {
console.log(e);
}
);
};
export const addTask = ({ title, text, deadline }) => (
async (dispatch) => {
try {
const response = await axios.post('/api/v1/homework/tasks/', {
title,
text,
deadline,
export const deleteTask = (task) => async (dispatch) => {
try {
const response = await axios.delete(`/api/v1/homework/tasks/${task.id}/`);
if (!response.data.id) {
dispatch({
type: DELETE_TASK,
payload: task,
});
if (response.data.id) {
dispatch({
type: ADD_TASK,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
} catch (e) {
console.log(e);
}
);
};
export const editTask = ({
id,
title,
text,
deadline,
}) => (
async (dispatch) => {
try {
const response = await axios.patch(`/api/v1/homework/tasks/${id}/`, {
title,
text,
deadline,
});
if (response.data.id) {
dispatch({
type: EDIT_TASK,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
}
);
export const setSelectedTask = (task) => (dispatch) => {
dispatch({ type: SELECT_TASK, payload: task });
};
export const deleteTask = task => (
async (dispatch) => {
try {
const response = await axios.delete(`/api/v1/homework/tasks/${task.id}/`);
if (!response.data.id) {
dispatch({
type: DELETE_TASK,
payload: task,
});
}
} catch (e) {
console.log(e);
}
});
export const setSelectedTask = task => (
(dispatch) => {
dispatch({ type: SELECT_TASK, payload: task });
}
);
export const addDocument = ({
name, description, file, solution,
}) => (
async (dispatch) => {
try {
const formData = new FormData();
formData.append('name', name);
formData.append('description', description);
formData.append('file', file);
formData.append('solution', solution);
const config = {
headers: {
'content-type': 'multipart/form-data',
},
};
const response = await axios.post('/api/v1/documents/', formData, config);
if (response.data.id) {
dispatch({
type: ADD_DOCUMENT,
payload: response.data,
});
}
} catch (e) {
console.log(e);
export const addDocument = ({ name, description, file, solution }) => async (
dispatch
) => {
try {
const formData = new FormData();
formData.append('name', name);
formData.append('description', description);
formData.append('file', file);
formData.append('solution', solution);
const config = {
headers: {
'content-type': 'multipart/form-data',
},
};
const response = await axios.post('/api/v1/documents/', formData, config);
if (response.data.id) {
dispatch({
type: ADD_DOCUMENT,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
);
};
export const addSolution = ({
task, accepted, corrected, note, name, description, file,
}) => (
async (dispatch) => {
try {
const response = await axios.post('/api/v1/homework/solutions/', {
task,
accepted,
corrected,
note,
task,
accepted,
corrected,
note,
name,
description,
file,
}) => async (dispatch) => {
try {
const response = await axios.post('/api/v1/homework/solutions/', {
task,
accepted,
corrected,
note,
});
if (response.data.id) {
dispatch({
type: ADD_SOLUTION,
payload: response.data,
});
if (response.data.id) {
dispatch({
type: ADD_SOLUTION,
payload: response.data,
});
}
const solution = response.data.id;
const formData = new FormData();
formData.append('name', name);
formData.append('description', description);
formData.append('file', file);
formData.append('solution', solution);
const config = {
headers: {
'content-type': 'multipart/form-data',
},
};
const responsedoc = await axios.post('/api/v1/documents/', formData, config);
if (responsedoc.data.id) {
dispatch({
type: ADD_DOCUMENT,
payload: responsedoc.data,
});
}
} catch (e) {
console.log(e);
}
}
);
export const getDocuments = (solutionID) => (
async (dispatch) => {
try {
const response =
await axios.get('/api/v1/documents', { params: { solution: solutionID } });
const solution = response.data.id;
const formData = new FormData();
formData.append('name', name);
formData.append('description', description);
formData.append('file', file);
formData.append('solution', solution);
const config = {
headers: {
'content-type': 'multipart/form-data',
},
};
const responsedoc = await axios.post(
'/api/v1/documents/',
formData,
config
);
if (responsedoc.data.id) {
dispatch({
type: GET_DOCUMENTS,
payload: response.data,
type: ADD_DOCUMENT,
payload: responsedoc.data,
});
} catch (e) {
console.log(e);
}
} catch (e) {
console.log(e);
}
);
};
export const writeSolution = ({ target: { name, value } }) => (
(dispatch) => {
dispatch({ type: WRITE_SOLUTION, payload: value, target: name });
export const getDocuments = (solutionID) => async (dispatch) => {
try {
const response = await axios.get('/api/v1/documents', {
params: { solution: solutionID },
});
dispatch({
type: GET_DOCUMENTS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
export const writeSolutionFile = ({ target: { files } }) => (
(dispatch) => {
dispatch({ type: WRITE_SOLUTION_FILE, payload: files[0], target: 'file' });
}
);
export const writeSolution = ({ target: { name, value } }) => (dispatch) => {
dispatch({ type: WRITE_SOLUTION, payload: value, target: name });
};
export const writeTask = ({ target: { name, value } }) => (
(dispatch) => {
dispatch({ type: WRITE_TASK, payload: value, target: name });
}
);
export const writeSolutionFile = ({ target: { files } }) => (dispatch) => {
dispatch({ type: WRITE_SOLUTION_FILE, payload: files[0], target: 'file' });
};
export const writeTaskDeadline = ({ name, value }) => (
(dispatch) => {
dispatch({ type: WRITE_TASK, payload: value, target: name });
}
);
export const writeTask = ({ target: { name, value } }) => (dispatch) => {
dispatch({ type: WRITE_TASK, payload: value, target: name });
};
export const writeTaskDeadline = ({ name, value }) => (dispatch) => {
dispatch({ type: WRITE_TASK, payload: value, target: name });
};
export const clearWrite = () => (
(dispatch) => {
dispatch({ type: CLEAR_WRITE });
export const clearWrite = () => (dispatch) => {
dispatch({ type: CLEAR_WRITE });
};
export const getProfiles = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/');
dispatch({
type: GET_PROFILES,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
export const getProfiles = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/');
export const correctSolution = (id, corrected, accepted, note) => async (
dispatch
) => {
try {
const response = await axios.patch(`/api/v1/homework/solutions/${id}/`, {
corrected,
accepted,
note,
});
if (response.data.id) {
dispatch({
type: GET_PROFILES,
type: CORRECT_SOLUTION,
payload: response.data,
});
} catch (e) {
console.log(e);
}
} catch (e) {
console.log(e);
}
);
};
export const correctSolution = (id, corrected, accepted, note) => (
async (dispatch) => {
try {
const response = await axios.patch(`/api/v1/homework/solutions/${id}/`, {
corrected,
accepted,
note,
});
if (response.data.id) {
dispatch({
type: CORRECT_SOLUTION,
payload: response.data,
export const check = (name) => (dispatch) => {
dispatch({ type: CHECK, target: name });
};
});
}
} catch (e) {
console.log(e);
}
}
);
export const check = name => (
(dispatch) => {
dispatch({ type: CHECK, target: name });
}
);
export const setchecktrue = (name) => (dispatch) => {
dispatch({ type: SETCHECKTRUE, target: name });
};
export const selectSolution = solution => (
(dispatch) => {
dispatch({
type: SELECT_SOLUTION,
payload: solution,
});
}
);
export const selectSolution = (solution) => (dispatch) => {
dispatch({
type: SELECT_SOLUTION,
payload: solution,
});
};
import axios from './session';
import { GET_MENTORS } from './types';
import axios from './session';
export const getMentors = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/mentors');
dispatch({
type: GET_MENTORS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
export const getMentors = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/mentors');
dispatch({
type: GET_MENTORS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
\ No newline at end of file
};
import {
ADD_NEWS,
CLEAR_WRITE,
DELETE_NEWS,
EDIT_NEWS,
GET_NEWS,
SELECT_NEWS,
WRITE_NEWS,
} from './types';
import axios from './session';
import { GET_NEWS, WRITE_NEWS, ADD_NEWS, DELETE_NEWS,
CLEAR_WRITE, SELECT_NEWS, EDIT_NEWS } from './types';
export const getNews = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/news');
export const getNews = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/news');
dispatch({
type: GET_NEWS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
export const postNews = ({ title, updated_by, text }) => async (dispatch) => {
try {
const response = await axios.post('/api/v1/news/', {
updated_by,
title,
text,
});
if (response.data.id) {
alert('Sikeres mentés!');
dispatch({
type: GET_NEWS,
type: ADD_NEWS,
payload: response.data,
});
} catch (e) {
console.log(e);
} else {
alert('Mentés nem sikerült!');
}
} catch (e) {
console.log(e);
}
);
};
export const postNews = ({ title, updated_by, text }) => (
async (dispatch) => {
try {
const response = await axios.post('/api/v1/news/', {
updated_by,
title,
text,
export const editNews = ({ id, title, text, updated_by }) => async (
dispatch
) => {
try {
const response = await axios.patch(`/api/v1/news/${id}/`, {
updated_by,
title,
text,
});
if (response.data.id) {
alert('Sikeres mentés!');
dispatch({
type: EDIT_NEWS,
payload: response.data,
});
if (response.data.id) {
alert('Sikeres mentés!');
dispatch({
type: ADD_NEWS,
payload: response.data,
});
} else {
alert('Mentés nem sikerült!');
}
} catch (e) {
console.log(e);
} else {
alert('Mentés nem sikerült!');
}
} catch (e) {
console.log(e);
}
);
};
export const editNews = ({ id, title, text, updated_by}) => (
async (dispatch) => {
try {
const response = await axios.patch(`/api/v1/news/${id}/`, {
updated_by,
title,
text,
export const deleteNews = (news) => async (dispatch) => {
try {
const response = await axios.delete(`/api/v1/news/${news.id}/`);
if (!response.data.id) {
alert('Sikeres törlés!');
dispatch({
type: DELETE_NEWS,
payload: news,
});
if (response.data.id) {
alert('Sikeres mentés!');
dispatch({
type: EDIT_NEWS,
payload: response.data,
});
} else {
alert('Mentés nem sikerült!');
}
} catch (e) {
console.log(e);
} else {
alert('A törlés nem sikerült!');
}
} catch (e) {
console.log(e);
}
);
export const deleteNews = news => (
async (dispatch) => {
try {
const response = await axios.delete(`/api/v1/news/${news.id}/`);
if (!response.data.id) {
alert('Sikeres törlés!');
dispatch({
type: DELETE_NEWS,
payload: news,
});
} else {
alert('A törlés nem sikerült!');
}
} catch (e) {
console.log(e);
}
});
};
export const writeNews = ({ target: { name, value } }) => (
(dispatch) => {
dispatch({ type: WRITE_NEWS, payload: value, target: name });
}
);
export const writeNews = ({ target: { name, value } }) => (dispatch) => {
dispatch({ type: WRITE_NEWS, payload: value, target: name });
};
export const clearWrite = () => (
(dispatch) => {
dispatch({ type: CLEAR_WRITE });
}
);
export const clearWrite = () => (dispatch) => {
dispatch({ type: CLEAR_WRITE });
};
export const setSelectedNews = item => (
(dispatch) => {
dispatch({ type: SELECT_NEWS, payload: item });
}
);
export const setSelectedNews = (item) => (dispatch) => {
dispatch({ type: SELECT_NEWS, payload: item });
};
import axios from './session';
import {
GET_NOTES_BY_EVENT,
WRITE_NOTE,
ADD_EVENT_NOTE,
CLEAR_WRITE,
GET_NOTES_BY_EVENT,
WRITE_NOTE,
} from './types';
export const getNotesByEvent = id => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/notes/', { params: { eventID: id } });
import axios from './session';
export const getNotesByEvent = (id) => async (dispatch) => {
try {
const response = await axios.get('/api/v1/notes/', {
params: { eventID: id },
});
dispatch({
type: GET_NOTES_BY_EVENT,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
export const writeNote = (event) => (dispatch) =>
dispatch({ type: WRITE_NOTE, payload: event.target.value });
export const postEventNote = ({ eventid, userid, note }) => async (
dispatch
) => {
try {
const response = await axios.post('/api/v1/notes/', {
event: eventid || '',
profile: userid || '',
note,
});
if (response.data.id) {
alert('Sikeres mentés!');
dispatch({
type: GET_NOTES_BY_EVENT,
type: ADD_EVENT_NOTE,
payload: response.data,
});
} catch (e) {
console.log(e);
}
} catch (e) {
console.log(e);
}
);
export const writeNote = (event) => {
return (dispatch => (dispatch({ type: WRITE_NOTE, payload: event.target.value })));
};
export const postEventNote = ({ eventid, userid, note }) => (
async (dispatch) => {
try {
const response = await axios.post('/api/v1/notes/', {
event: eventid ? eventid : '',
profile: userid ? userid : '',
note,
});
if (response.data.id) {
alert('Sikeres mentés!');
dispatch({
type: ADD_EVENT_NOTE,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
});
export const clearWrite = () => (
(dispatch) => {
dispatch({ type: CLEAR_WRITE });
}
);
export const clearWrite = () => (dispatch) => {
dispatch({ type: CLEAR_WRITE });
};
import axios from './session';
import {
GET_EVENTS,
GET_EVENT_BY_ID,
GET_TRAINEES,
VISITOR_CHANGE,
WRITE_EVENT,
ABSENT_CHANGE,
ADD_EVENT,
CHANGE_NO,
DELETE_EVENT,
GET_EVENTS,
GET_EVENT_BY_ID,
GET_PROFILES,
GET_SELECTED_PROFILE,
GET_TRAINEES,
SET_STATUS,
ABSENT_CHANGE,
CHANGE_NO,
VISITOR_CHANGE,
WRITE_EVENT,
} from './types';
export const getStaffEvents = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/staff_events/');
dispatch({
type: GET_EVENTS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
import axios from './session';
export const getStaffEvents = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/staff_events/');
dispatch({
type: GET_EVENTS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
export const getStudentEvents = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/student_events/');
dispatch({
type: GET_EVENTS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
export const getStudentEvents = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/student_events/');
dispatch({
type: GET_EVENTS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
export const getEventById = id => (
async (dispatch) => {
try {
const response = await axios.get(`/api/v1/staff_events/${id}`);
dispatch({
type: GET_EVENT_BY_ID,
payload: response.data,
});
} catch (e) {
console.log(e);
}
export const getEventById = (id) => async (dispatch) => {
try {
const response = await axios.get(`/api/v1/staff_events/${id}`);
dispatch({
type: GET_EVENT_BY_ID,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
export const getTrainees = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/');
dispatch({
type: GET_TRAINEES,
payload: response.data,
});
} catch (e) {
console.log(e);
}
export const getTrainees = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/');
dispatch({
type: GET_TRAINEES,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
export const visitorChange = ({ id, value }) => {
switch (value){
switch (value) {
case 'Visitor':
return (dispatch => (dispatch({ type: VISITOR_CHANGE, payload: id })));
return (dispatch) => dispatch({ type: VISITOR_CHANGE, payload: id });
case 'Absent':
return (dispatch => (dispatch({ type: ABSENT_CHANGE, payload: id })));
return (dispatch) => dispatch({ type: ABSENT_CHANGE, payload: id });
case 'No':
return (dispatch => (dispatch({ type: CHANGE_NO, payload: id })));
return (dispatch) => dispatch({ type: CHANGE_NO, payload: id });
default:
return null;
}
};
export const submitVisitors = ({ id, visitors, absent }) => (
async () => {
try {
const response = await axios.patch(`/api/v1/staff_events/${id}/`, {
visitors: visitors,
absent: absent
})
if(response.data.id === id) {
return true
} else {
return false
}
} catch (e) {
console.log(e);
return false
export const submitVisitors = ({ id, visitors, absent }) => async () => {
try {
const response = await axios.patch(`/api/v1/staff_events/${id}/`, {
visitors,
absent,
});
if (response.data.id === id) {
return true;
}
return false;
} catch (e) {
console.log(e);
return false;
}
);
export const writeEvent = ({ target: { name, value } }) => (
(dispatch) => {
dispatch({ type: WRITE_EVENT, payload: value, target: name });
}
);
};
export const writeEvent = ({ target: { name, value } }) => (dispatch) => {
dispatch({ type: WRITE_EVENT, payload: value, target: name });
};
export const eventDate = (name, value) => (
(dispatch) => {
dispatch({ type: WRITE_EVENT, payload: value, target: name });
}
);
export const eventDate = (name, value) => (dispatch) => {
dispatch({ type: WRITE_EVENT, payload: value, target: name });
};
export const addEvent = ({ name, date, description }) => (
async (dispatch) => {
try {
const response = await axios.post('/api/v1/staff_events/', {
name,
date,
description,
absent: [],
export const addEvent = ({ name, date, description }) => async (dispatch) => {
try {
const response = await axios.post('/api/v1/staff_events/', {
name,
date,
description,
absent: [],
});
if (response.data.id) {
alert('Sikeres mentés!');
dispatch({
type: ADD_EVENT,
payload: response.data,
});
if (response.data.id) {
alert('Sikeres mentés!');
dispatch({
type: ADD_EVENT,
payload: response.data,
});
} else {
alert('Mentés nem sikerült!');
}
} catch (e) {
console.log(e);
} else {
alert('Mentés nem sikerült!');
}
} catch (e) {
console.log(e);
}
);
export const deleteEvent = event => (
async (dispatch) => {
try {
const response = await axios.delete(`/api/v1/staff_events/${event.id}/`);
if (!response.data.id) {
alert('Sikeres törlés!');
dispatch({
type: DELETE_EVENT,
payload: event,
});
} else {
alert('A törlés nem sikerült!');
}
} catch (e) {
console.log(e);
}
});
};
export const getProfiles = () => (
async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/');
export const deleteEvent = (event) => async (dispatch) => {
try {
const response = await axios.delete(`/api/v1/staff_events/${event.id}/`);
if (!response.data.id) {
alert('Sikeres törlés!');
dispatch({
type: GET_PROFILES,
payload: response.data,
type: DELETE_EVENT,
payload: event,
});
} catch (e) {
console.log(e);
} else {
alert('A törlés nem sikerült!');
}
} catch (e) {
console.log(e);
}
);
};
export const setStatus = (id, status) => (
async (dispatch) => {
try {
const response = await axios.patch(`/api/v1/profiles/${id}/`, {
role: status,
});
if (response.data.id) {
dispatch({
type: SET_STATUS,
payload: response.data,
});
}
} catch (e) {
console.log(e);
}
export const getProfiles = () => async (dispatch) => {
try {
const response = await axios.get('/api/v1/profiles/');
dispatch({
type: GET_PROFILES,
payload: response.data,
});
} catch (e) {
console.log(e);
}
);
};
export const getSelectedProfile = id => (
async (dispatch) => {
try {
const response = await axios.get(`/api/v1/profiles/${id}/`);
export const setStatus = (id, status) => async (dispatch) => {
try {
const response = await axios.patch(`/api/v1/profiles/${id}/`, {
role: status,
});
if (response.data.id) {
dispatch({
type: GET_SELECTED_PROFILE,
type: SET_STATUS,
payload: response.data,
});
} catch (e) {
console.log(e);
}
} catch (e) {
console.log(e);
}
);
};
export const getSelectedProfile = (id) => async (dispatch) => {
try {
const response = await axios.get(`/api/v1/profiles/${id}/`);
dispatch({
type: GET_SELECTED_PROFILE,
payload: response.data,
});
} catch (e) {
console.log(e);
}
};
......@@ -16,6 +16,8 @@ export const SELECT_NEWS = 'select_news';
export const GET_MENTORS = 'get_mentors';
export const GET_IMAGES = 'get_images';
export const GET_TASKS = 'get_homeworks';
export const ADD_TASK = 'add_task';
export const DELETE_TASK = 'delete_task';
......@@ -32,6 +34,7 @@ export const GET_DOCUMENTS = 'get_documents';
export const CORRECT_SOLUTION = 'correct_solution';
export const SELECT_SOLUTION = 'select_solution';
export const CHECK = 'check';
export const SETCHECKTRUE = 'setchecktrue';
export const GET_EVENTS = 'get_events';
export const GET_EVENT_BY_ID = 'get_event_by_id';
......