Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.25 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import firebase from 'firebase';
  3.  
  4. import Modal from './components/Modal';
  5. import Card from './components/Card';
  6.  
  7. const config = {
  8. apiKey: "AIzaSyDn_AeL8sGgUfxMwZ7cVWNKLYI_fSfmYRE",
  9. authDomain: "arczi-14a47.firebaseapp.com",
  10. databaseURL: "https://arczi-14a47.firebaseio.com",
  11. projectId: "arczi-14a47",
  12. storageBucket: "arczi-14a47.appspot.com",
  13. messagingSenderId: "951789644139"
  14. };
  15.  
  16. const database = firebase.initializeApp(config);
  17. const firestore = database.firestore();
  18.  
  19. const styles = {
  20. background: {
  21. 'position': 'fixed',
  22. 'width': '100%',
  23. 'height': '100vh',
  24. 'background': 'url("https://uc177927c710a1bcf482878a828a.previews.dropboxusercontent.com/p/thumb/AAUG0pUF8JhHEEX_m90uSqYIc-NmxTsu5kaZl6Z8Qcbn6aUQljG_F9YJz0-kQJhAZp4ZhtjD5cc8narC2oTUwTYGe4gV9Nl90lViSVgPGPLmFNsvGcwbeLfCfwuV6mEjAqOv4vE_jLk0_jpxV3A_ZfyK1KsEK2K8JsvkwSzNdOswLtcNR5bqtHQa0ULSIgSsjEjhqr9utKZ5TxvtYGMTQDHcOV8VULAcN3iY6SNugP9QaE15SkYBBrZpenGgXzcjRRetBxqZrqzyw9dKyyvonARV/p.jpeg?size=2048x1536&size_mode=3")',
  25. 'zIndex': '-1',
  26. 'backgroundSize': '100% 100%'
  27. },
  28. body: {
  29. 'fontFamily': 'Roboto, sans-serif'
  30. },
  31. menu: {
  32. 'backgroundColor': '#8e352e',
  33. 'color': 'white',
  34. }
  35. };
  36.  
  37. class App extends Component {
  38. state = {
  39. loaded: false,
  40. czwartek: [],
  41. piatek: [],
  42. sobota: [],
  43. niedziela: []
  44. };
  45.  
  46. sortFunction = (a, b) => {
  47. if (parseInt(a.godzina_start) - parseInt(b.godzina_start)) {
  48. return parseInt(a.godzina_start) - parseInt(b.godzina_start);
  49. } else return parseInt(a.minuta_start) - parseInt(b.minuta_start)
  50. };
  51.  
  52. sort = () => {
  53. this.setState({
  54. czwartek: this.state.czwartek.sort(this.sortFunction),
  55. piatek: this.state.piatek.sort(this.sortFunction),
  56. sobota: this.state.sobota.sort(this.sortFunction),
  57. niedziela: this.state.niedziela.sort(this.sortFunction)
  58. })
  59. };
  60.  
  61. componentDidMount() {
  62. Promise.all([this.getSnapshot('czwartek'), this.getSnapshot('piatek'), this.getSnapshot('sobota'), this.getSnapshot('niedziela')])
  63. .then(this.sort);
  64. }
  65.  
  66. getSnapshot = (day) => new Promise(resolve => {
  67. firestore.collection(day).get()
  68. .then(snapshot => {
  69. snapshot.forEach(doc => this.setState({
  70. [day]: [...this.state[day], {
  71. id: doc.id,
  72. ...doc.data()
  73. }]
  74. }));
  75. resolve();
  76. });
  77. });
  78.  
  79. generateEvents = day => ( this.state[day].length > 0 &&
  80. this.state[day].map(el => <React.Fragment key={el.id}>
  81. <Card
  82. database={firestore}
  83. removeEvent={this.removeEvent}
  84. id={el.id}
  85. day={day}
  86. opis={el.opis}
  87. kolor={el.kolor}
  88. godzina_start={el.godzina_start}
  89. godzina_koniec={el.godzina_koniec}
  90. minuta_start={el.minuta_start}
  91. minuta_koniec={el.minuta_koniec}
  92. />
  93. <br/>
  94. </React.Fragment>)
  95. );
  96.  
  97. newEvent = (day, event) => this.setState({ [day]: [...this.state[day], event] });
  98.  
  99. removeEvent = (day, id) => this.setState({ [day]: this.state[day].filter(event => event.id !== id)});
  100.  
  101. render() {
  102. return (
  103. <>
  104. <div className="background" style={styles.background}/>
  105. <div className={'container-fluid'} style={styles.body}>
  106. <div className="row">
  107. <div className="col-12 my-4 text-center">
  108. <h1 style={{'color': 'white'}}>
  109. ZIMOWISKO KUGLARSKIE VOL.3
  110. &nbsp;
  111. <Modal buttonLabel={"DODAJ"} database={firestore} newEvent={this.newEvent}/>
  112. </h1>
  113.  
  114. </div>
  115. </div>
  116. <div className="row py-2" style={styles.menu}>
  117. <div className="col-3 text-center">CZWARTEK</div>
  118. <div className="col-3 text-center">PIĄTEK</div>
  119. <div className="col-3 text-center">SOBOTA</div>
  120. <div className="col-3 text-center">NIEDZIELA</div>
  121. </div>
  122. <div className="row mt-4" style={{'background': 'url("")'}}>
  123. <div className="col-3">
  124. { this.generateEvents('czwartek') }
  125. </div>
  126. <div className="col-3">
  127. { this.generateEvents('piatek') }
  128. </div>
  129. <div className="col-3">
  130. { this.generateEvents('sobota') }
  131. </div>
  132. <div className="col-3">
  133. { this.generateEvents('niedziela') }
  134. </div>
  135. </div>
  136. </div>
  137. </>
  138. );
  139. }
  140. }
  141.  
  142. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement