Advertisement
Guest User

cri

a guest
Oct 15th, 2019
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.80 KB | None | 0 0
  1. import React from 'react';
  2. import Header from '../HeaderCLMS';
  3. import {Link,Redirect} from 'react-router-dom'
  4. import { Button,Loading ,ToastNotification,NotificationActionButton,InlineNotification} from 'carbon-components-react';
  5. import criteriaContainer from '../../styles/crtieriaContainer.scss'
  6. import CriteriaList from './CriteriaList';
  7. import getCriterias from '../../actions/getCriterias';
  8. // import axios from 'axios';
  9. import deleteCriteria from '../../actions/deleteCriteria';
  10. export default class CriteriaContainer extends React.Component{
  11. state={
  12. addBadgeRedirect:null,
  13. editBadgeRedirect:null,
  14. criteriasLoaded:null,
  15. deleteItem:null,
  16. confirmDelte:null,
  17. deleting:null
  18. }
  19. async componentDidMount(){
  20. let client = JSON.parse(localStorage.getItem('client'));
  21.  
  22.  
  23.  
  24. let criteriaResponse = await getCriterias(client.clientId).then((res)=>{
  25.  
  26. if(res.data.entity==="DB error"){
  27. this.setState({criteriasLoaded:false,criterias:res.data.entity})
  28. }
  29. else{
  30. const criterias= res.data.entity
  31. console.log(criterias);
  32.  
  33. this.setState({criteriasLoaded:true,criterias:criterias},()=>{
  34. console.log(this.state.criterias);
  35.  
  36. if(this.state.criterias){
  37. const criteriasIds=this.state.criterias.map(criteria=>{
  38. return criteria.criteriaId
  39. })
  40. localStorage.setItem('criteriasIds',JSON.stringify(criteriasIds))
  41.  
  42. }
  43. })
  44.  
  45.  
  46. }
  47. }
  48. ).catch(error=>{
  49. this.setState({criteriasLoaded:false})
  50. // console.log(error);
  51.  
  52. })
  53.  
  54. }
  55.  
  56.  
  57. onAddBadge=(e)=>{
  58.  
  59. this.setState({addBadgeRedirect:true})
  60.  
  61. }
  62.  
  63. onDeleteCriteria= async (e,index)=>{
  64.  
  65. this.setState({deleting:true})
  66.  
  67. let delRes = await deleteCriteria(index)
  68. .then(res=>{
  69. console.log(res);
  70. // this.setState({deleteItem:true})
  71. // this.setState({deleting:true})
  72. if(res.data.entity===0){
  73. alert('Error while deleting')
  74. this.setState({deleting:null})
  75. }
  76. else{
  77. alert('Deleted successfully')
  78. if(this.state.criterias){
  79. const criterias= [...this.state.criterias]
  80. let criteriaIndex = criterias.findIndex((criteria)=>{
  81. return criteria.criteriaId===index})
  82. if(criteriaIndex!==-1)
  83. criterias.splice(criteriaIndex,1)
  84. this.setState({criterias:criterias},()=>{
  85. localStorage.removeItem('criteriasIds',index)
  86. });
  87. }
  88. this.setState({deleting:null})
  89. }
  90.  
  91. }).catch(error=>{
  92. console.log(error);
  93.  
  94. });
  95.  
  96. }
  97.  
  98.  
  99. onEditCriteria=(e,index)=>{
  100.  
  101. const criterias= [...this.state.criterias]
  102. console.log(criterias);
  103.  
  104. const criteriaIndex = criterias.findIndex((criteria)=>{
  105. return criteria.criteriaId===index})
  106. const criteria = criterias[criteriaIndex];
  107. console.log(criteria);
  108. this.props.history.push({pathname:'/badges/'+index,state:criteria})
  109.  
  110. }
  111.  
  112. // onCloseDeleteNotification(){
  113. // this.setState({deleteItem:null})
  114. // this.setState({deleting:null})
  115. // }
  116.  
  117. render(){
  118.  
  119. if(this.state.criteriasLoaded===null){
  120. return(
  121. <div>
  122. {}
  123. <Header props={this.props}></Header>
  124. <div className="loading-criteria">
  125. <div className="header-loading">
  126. <h1>Loading Criteria List</h1>
  127. </div>
  128. <Loading withOverlay={false} description="Loading the list of badges criteria"></Loading>
  129. </div>
  130. </div>
  131. )
  132. }
  133. else if(this.state.criteriasLoaded===true){
  134. return(
  135.  
  136. <div className="criteria-container">
  137. <Header props={this.props}></Header>
  138. <div className="add-new-criteria">
  139. <Link to="/badges"><Button onClick={this.onAddBadge} >Add new badge criteria</Button></Link>
  140. </div>
  141. <div className="criteria-list">
  142. <CriteriaList onDeleteCriteria={this.onDeleteCriteria}
  143. onEditCriteria={this.onEditCriteria}
  144. criterias={this.state.criterias?this.state.criterias:null}></CriteriaList>
  145. {/*this.state.deleteItem===true?
  146. // <InlineNotification
  147. // actions={<NotificationActionButton onClick={this.onCloseDeleteNotification}>Okay</NotificationActionButton>}
  148. // hideCloseButton={true}
  149.  
  150. // kind="info"
  151. // notificationType="inline"
  152. // onCloseButtonClick={function noRefCheck(){}}
  153. // role="alert"
  154. // title="Deleted Successfully"
  155. // />
  156. // :null*/}
  157. </div>
  158.  
  159. </div>
  160. )
  161. }
  162.  
  163. else if(this.state.criteriasLoaded===false){
  164. return(
  165. <div>
  166. <Header props={this.props}></Header>
  167. <div className="error-loading-criteria">
  168. <h1>Check your connection/Refresh the page</h1>
  169. </div>
  170. </div>
  171. )
  172. }
  173. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement