Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { Component } from 'react';
  2. import { StyleSheet, Text, View, ScrollView, TouchableOpacity, TextInput, Keyboard,Alert } from 'react-native';
  3.  
  4. export default class Main extends Component {
  5.     constructor(props) {
  6.         super(props);
  7.         this.state = {
  8.             count: 0,
  9.             items: [],
  10.             kredit: 0,
  11.             jegy: 0,
  12.             id:0,
  13.             kreditindex: '0.00',
  14.             felvettkredit: 0,
  15.             atlag: '0.00',
  16.             isAlertedOne: false,
  17.             isAlertedScrollDown: false,
  18.         }
  19.         this.jegyChange.bind(this);
  20.         this.kreditChange.bind(this);
  21.     }
  22.  
  23.     componentDidMount() {
  24.         for (let i=1; i<=5; i++) {
  25.             this.state.items.push({
  26.                 id: i,
  27.                 kredit: '0',
  28.                 jegy: '0',
  29.             })
  30.         }
  31.         this.setState( { id: this.state.items.length})
  32.         this.setState({ items: this.state.items })
  33.     }
  34.  
  35.     render() {
  36.        
  37.             let items = this.state.items.map(item => {
  38.             return <View style={ styles.container } key={item.id}>
  39.                 <Text style={ styles.number }>{item.id}</Text>
  40.                 <TextInput name="kredit" placeholder="Kreditérték" keyboardType="number-pad" style={ styles.input } onChangeText={(kredit) => this.kreditChange(kredit, item.id) }></TextInput>
  41.                 <TextInput name="jegy" placeholder="Jegy" keyboardType="number-pad" style={ styles.input } onChangeText={(jegy) => this.jegyChange(jegy, item.id)}></TextInput>
  42.             </View>
  43.             })
  44.        
  45.         return(
  46.             <View style={styles.main} >
  47.                 <Text style={{ textAlign: 'center', fontSize: 30, color: 'black' }}>Kreditindex kalkulátor</Text>
  48.                 <ScrollView style={styles.adatok}>
  49.                     {items}
  50.                 </ScrollView>
  51.                 <View style={styles.buttons}>
  52.                 <TouchableOpacity style={styles.countButton}>
  53.                     <Text style={styles.countButtonText} onPress={this.calc.bind(this)}>Számol</Text>
  54.                 </TouchableOpacity>
  55.                 <TouchableOpacity style={styles.plusOne} onPress={this.addItem.bind(this)}>
  56.                     <Text style={styles.plusOneText}>Plusz egy tárgy</Text>
  57.                 </TouchableOpacity>
  58.                 </View>
  59.                 <View style={styles.kreditindex}>
  60.                     <Text style={styles.kreditindexText}>Kreditindex: {this.state.kreditindex}</Text>
  61.                 </View>
  62.                 <View style={styles.felvettkredit}>
  63.                     <Text style={styles.felvettkreditText}>Felvett kredit: {this.state.felvettkredit}</Text>
  64.                 </View>
  65.                 <View style={styles.atlag}>
  66.                     <Text style={styles.atlagText}>Átlag: {this.state.atlag}</Text>
  67.                 </View>
  68.                
  69.             </View>
  70.         );
  71.     }
  72.  
  73.     addItem() {
  74.         let id = this.state.id+1;
  75.         this.state.items.push({
  76.             id: id,
  77.             kredit: '0',
  78.             jegy: '0',
  79.         })
  80.         this.setState( { id: id})
  81.         this.setState({ items: this.state.items })
  82.         if (!this.isAlertedScrollDown) {
  83.             this.scrollDownAlert();
  84.             this.isAlertedScrollDown = !this.isAlertedScrollDown;
  85.             this.setState({ isAlertedScrollDown: this.isAlertedScrollDown })
  86.         }
  87.         Keyboard.dismiss();
  88.     }
  89.     jegyChange(jegy, id) {
  90.         this.state.items[id-1].jegy = jegy;
  91.         this.setState({ items: this.state.items })
  92.        
  93.     }
  94.     kreditChange(kredit, id) {
  95.         this.state.items[id-1].kredit = kredit;
  96.         this.setState({ items: this.state.items })
  97.     }
  98.     calc() {
  99.         var ki = 0.00;
  100.         this.state.kreditindex = this.state.items.map(item => {
  101.             if (item.jegy == 1 && !this.isAlertedOne) {
  102.                 this.oneAlert();
  103.                 this.isAlertedOne = !this.isAlertedOne;
  104.                 this.setState({ isAlerted: this.isAlertedOne })
  105.             }
  106.             if (item.jegy != 1) {
  107.                 ki += item.jegy * item.kredit;
  108.             }
  109.         })
  110.         this.state.kreditindex = ki/30;
  111.         this.state.kreditindex = Number(this.state.kreditindex).toFixed(2);
  112.         this.setState({ kreditindex: this.state.kreditindex })
  113.         var fk = 0;
  114.         this.state.felvettkredit = this.state.items.map(item => {
  115.             fk += Number(item.kredit);
  116.         })
  117.         this.setState({ felvettkredit: fk })
  118.         var atlag = '0.00';
  119.         var nevezo = 0;
  120.         var szamlalo = 0;
  121.         this.state.atlag = this.state.items.map(item => {
  122.             if (item.jegy != 0) {
  123.                 nevezo += 1;
  124.                 szamlalo += Number(item.jegy);
  125.             }
  126.         })
  127.         if (nevezo != 0 && szamlalo != 0) {
  128.         var atlag = (szamlalo/nevezo).toFixed(2);
  129.         }
  130.         this.setState({ atlag: atlag });
  131.         Keyboard.dismiss();
  132.     }
  133.     oneAlert() {
  134.         Alert.alert(
  135.             'Figyelmeztetés',
  136.             'Egy vagy több tantárgyból egyes jegy lett beírva, ezért ezek nem lesznek beleszámítva a kreditindexbe.',
  137.             [
  138.               {text: 'OK'},
  139.             ],
  140.             {cancelable: false},
  141.           );
  142.     }
  143.     scrollDownAlert() {
  144.         Alert.alert(
  145.             'Segítség',
  146.             'Görgess lefelé a beviteli mezőben, hogy lásd a hozzáadott tárgyakat.',
  147.             [
  148.               {text: 'OK'},
  149.             ],
  150.             {cancelable: false},
  151.           );
  152.     }
  153. }
  154.  
  155. const styles = StyleSheet.create({
  156.     main: {
  157.         backgroundColor: '#fbfaf6',
  158.     },
  159.     adatok: {
  160.         backgroundColor: '#ebece4',
  161.         height: '53%',
  162.     },
  163.     countButton: {
  164.         backgroundColor: '#28A745',
  165.         marginLeft: 35,
  166.         width: 60,
  167.         height: 30,
  168.         justifyContent: 'center',
  169.         alignItems: 'center',
  170.         borderRadius: 8,
  171.     },
  172.     countButtonText: {
  173.         color: 'white',
  174.     },
  175.     plusOneText: {
  176.         color: 'white',
  177.     },
  178.     plusOne: {
  179.         backgroundColor: '#007BFF',
  180.         marginLeft: 25,
  181.         width: 110,
  182.         height: 30,
  183.         justifyContent: 'center',
  184.         alignItems: 'center',
  185.         borderRadius: 8,
  186.     },
  187.     buttons: {
  188.         paddingTop: 15,
  189.         flexDirection: 'row',
  190.         backgroundColor: '#ebece4',
  191.         paddingBottom: 15,
  192.     },
  193.     container: {
  194.         marginTop: 5,
  195.         justifyContent: 'space-around',
  196.         flexDirection: 'row',
  197.         width: '100%',
  198.     },
  199.     number: {
  200.         fontSize: 14,
  201.         height: 40,
  202.         marginTop: 27,
  203.         marginLeft: 15,
  204.     },
  205.     input: {
  206.         marginLeft: 15,
  207.         marginRight: 15,
  208.         marginTop: 20,
  209.         paddingTop: 0,
  210.         paddingBottom: 0,
  211.         height: 30,
  212.         width: 100,
  213.         borderColor: 'black',
  214.         textAlign: 'center',
  215.         borderWidth: 1,
  216.         backgroundColor: 'white',
  217.     },
  218.     kreditindex: {
  219.         backgroundColor: '#9BC08B',
  220.     },
  221.     kreditindexText: {
  222.         fontSize: 24,
  223.         marginLeft: 10,
  224.         color: 'black',
  225.     },
  226.     felvettkredit: {
  227.         backgroundColor: '#F7AF7E'
  228.     },
  229.     felvettkreditText: {
  230.         fontSize: 24,
  231.         marginLeft: 10,
  232.         color: 'black',
  233.     },
  234.     atlag: {
  235.         backgroundColor: '#F58C88',
  236.     },
  237.     atlagText: {
  238.         fontSize: 24,
  239.         marginLeft: 10,
  240.         color: 'black',
  241.     }
  242. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement