From 634f47b24758629c57f6b5f763fabfd6451a6789 Mon Sep 17 00:00:00 2001
From: rlacko <rlacko@sch.bme.hu>
Date: Wed, 29 Jan 2020 13:07:06 +0100
Subject: [PATCH] responsive statistics page

---
 src/components/pages/EventDetail.js |  2 +-
 src/components/pages/Events.js      | 56 +++++++++++++-----------
 src/components/pages/Statistics.js  | 16 +++----
 src/components/pages/Trainees.js    | 67 ++++++++++++++++++++++-------
 4 files changed, 91 insertions(+), 50 deletions(-)

diff --git a/src/components/pages/EventDetail.js b/src/components/pages/EventDetail.js
index e48fe9b..ad0c766 100644
--- a/src/components/pages/EventDetail.js
+++ b/src/components/pages/EventDetail.js
@@ -101,7 +101,7 @@ class EventDetail extends Component {
             ''
         }
         </Container>
-          <Table celled centered>
+          <Table celled centered unstackable>
             <Table.Header>
               <Table.Row>
                 <Table.HeaderCell>NĂŠv</Table.HeaderCell>
diff --git a/src/components/pages/Events.js b/src/components/pages/Events.js
index 3d5c8fc..923def7 100644
--- a/src/components/pages/Events.js
+++ b/src/components/pages/Events.js
@@ -12,40 +12,44 @@ class Events extends Component {
   }
 
   renderEvents() {
-    return this.props.events.map((event) =>
-    { return (
-      <Table.Row>
-        <Table.Cell>
-          <Link to={`events/${event.id}`}>
-            {event.name}
-          </Link>
-        </Table.Cell>
-        <Table.Cell>{moment(event.date).format('LL')}</Table.Cell>
-        <Table.Cell>{event.visitor_number}</Table.Cell>
-        <Table.Cell>
-          <Button
-            onClick={() => this.props.deleteEvent(event)}
-            color='red'
-            compact
-            size='small'
-          >
-          Delete
-          </Button>
-        </Table.Cell>
-      </Table.Row>
-    );
+    return this.props.events.map((event) => { 
+      return (
+        <Table.Row >
+          <Table.Cell textAlign='center'>
+            <Link to={`events/${event.id}`}>
+              {event.name}
+            </Link>
+          </Table.Cell>
+          <Table.Cell textAlign='center'>
+            {moment(event.date).format('LL')}
+          </Table.Cell>
+          <Table.Cell textAlign='center'>
+            {event.visitor_number}
+          </Table.Cell>
+          <Table.Cell textAlign='center'>
+            <Button
+              onClick={() => this.props.deleteEvent(event)}
+              color='red'
+              compact
+              size='small'
+            >
+              TĂśrlĂŠs
+            </Button>
+          </Table.Cell>
+        </Table.Row>
+      );
     });
   }
 
   render() {
     return (
       <Container textAlign='center'>
-        <Table color='blue' celled selectable compact>
+        <Table color='blue' unstackable celled selectable compact>
           <Table.Header>
             <Table.Row>
-              <Table.HeaderCell>Alkalom neve</Table.HeaderCell>
-              <Table.HeaderCell>DĂĄtum</Table.HeaderCell>
-              <Table.HeaderCell>Jelen voltak</Table.HeaderCell>
+              <Table.HeaderCell textAlign='center'>Alkalom neve</Table.HeaderCell>
+              <Table.HeaderCell textAlign='center'>DĂĄtum</Table.HeaderCell>
+              <Table.HeaderCell textAlign='center'>Jelen voltak</Table.HeaderCell>
               <Table.HeaderCell />
             </Table.Row>
           </Table.Header>
diff --git a/src/components/pages/Statistics.js b/src/components/pages/Statistics.js
index 44a4cdd..8e59dc5 100644
--- a/src/components/pages/Statistics.js
+++ b/src/components/pages/Statistics.js
@@ -13,26 +13,26 @@ export default class Statistics extends Component {
       <div>
           <Container
             textAlign="center"
-            style={{
-              padding: '60px',
-            }}
+            style={{paddingBottom: '5em', paddingTop: '1em'}}
           >
-          <Menu
+          <Menu tabular
             attached='top'
-            tabular
             size='huge'
-            compact={true}>
+            compact={true}
+          >
             <Menu.Item
               name='events'
               active={activeItem === 'events'}
               onClick={this.handleItemClick}
-            >Alkalmak
+            >
+              Alkalmak
             </Menu.Item>
             <Menu.Item
               name='trainees'
               active={activeItem === 'trainees'}
               onClick={this.handleItemClick}
-            >Képződők
+            >
+              Képződők
             </Menu.Item>
           </Menu>
           { activeItem === 'events' ? <Events /> : '' }
diff --git a/src/components/pages/Trainees.js b/src/components/pages/Trainees.js
index 804c801..466ab69 100644
--- a/src/components/pages/Trainees.js
+++ b/src/components/pages/Trainees.js
@@ -1,5 +1,5 @@
 import React, { Component } from 'react';
-import { Container, Table, Icon } from 'semantic-ui-react';
+import { Container, Table, Icon, Responsive } from 'semantic-ui-react';
 import { connect } from 'react-redux';
 import { getTrainees, getStaffEvents } from '../../actions/statistics';
 
@@ -9,6 +9,12 @@ class Trainees extends Component {
     this.props.getStaffEvents();
   }
 
+  VisitedStatusNumber(trainee) {
+    return (this.props.events.filter((event) => {
+      return event.visitors.includes(trainee.id)
+    })).length;
+  }
+
   renderVisitedStatus(trainee) {
     return (this.props.events.map((event) => {
       if (event.visitors.includes(trainee.id)) {
@@ -24,11 +30,11 @@ class Trainees extends Component {
     }));
   }
 
-  renderTrainees() {
+  renderTraineesWithEvents() {
     return this.props.trainees.map((trainee) =>
     { return (
       <Table.Row>
-        <Table.Cell>
+        <Table.Cell textAlign='center'>
           {trainee.full_name}
         </Table.Cell>
         {this.renderVisitedStatus(trainee)}
@@ -36,10 +42,24 @@ class Trainees extends Component {
     );
     });
   }
+  renderTraineesWithPoints() {
+    return this.props.trainees.map((trainee) =>
+    { return (
+      <Table.Row textAlign='center'>
+        <Table.Cell>
+          {trainee.full_name}
+        </Table.Cell>
+        <Table.Cell textAlign='center'>
+          {`${this.VisitedStatusNumber(trainee)} / ${this.props.events.length}`}
+        </Table.Cell>
+      </Table.Row>
+    );
+    });
+  }
 
   renderTableHeader() {
     return (this.props.events.map(event => (
-      <Table.HeaderCell>
+      <Table.HeaderCell textAlign='center'>
         {event.name}
       </Table.HeaderCell>)));
   }
@@ -47,18 +67,35 @@ class Trainees extends Component {
   render() {
     return (
       <Container textAlign='center'>
-        <Table color='blue' celled selectable compact>
-          <Table.Header>
-            <Table.Row>
-              <Table.HeaderCell>Képződők</Table.HeaderCell>
-              { this.renderTableHeader() }
-            </Table.Row>
-          </Table.Header>
+        <Responsive minWidth={600} >
+          <Table color='blue' unstackable celled selectable compact>
+            <Table.Header>
+              <Table.Row>
+                <Table.HeaderCell textAlign='center'>Képződők</Table.HeaderCell>
+                { this.renderTableHeader() }
+              </Table.Row>
+            </Table.Header>
 
-          <Table.Body>
-            {this.props.trainees ? this.renderTrainees() : 'Nincsenek képződők'}
-          </Table.Body>
-        </Table>
+            <Table.Body>
+              {this.props.trainees ? this.renderTraineesWithEvents() : 'Nincsenek képződők'}
+            </Table.Body>
+          </Table>
+        </Responsive>
+        <Responsive maxWidth={599} >
+          <Table color='blue' unstackable celled selectable compact>
+            <Table.Header>
+              <Table.Row>
+                <Table.HeaderCell textAlign='center'>Képződők</Table.HeaderCell>
+                <Table.HeaderCell textAlign='center'>
+                  RĂŠszvĂŠteli arĂĄny
+                </Table.HeaderCell>
+              </Table.Row>
+            </Table.Header>
+            <Table.Body>
+              {this.props.trainees ? this.renderTraineesWithPoints() : 'Nincsenek képződők'}
+            </Table.Body>
+          </Table>
+        </Responsive>
       </Container>
     );
   }
-- 
GitLab