SHARE
TWEET

cri

a guest Oct 15th, 2019 118 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }}
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top