Arm in motion modal
This commit is contained in:
		| @@ -33,6 +33,7 @@ $white: #fff; | |||||||
|   align-items: center; |   align-items: center; | ||||||
|   justify-content: space-between; |   justify-content: space-between; | ||||||
|   flex-direction: row; |   flex-direction: row; | ||||||
|  |   padding-top: 20px; | ||||||
| } | } | ||||||
|  |  | ||||||
| .navbar-top-secret { | .navbar-top-secret { | ||||||
| @@ -51,10 +52,9 @@ $white: #fff; | |||||||
|   justify-content: left; |   justify-content: left; | ||||||
|   padding-left: 4px; |   padding-left: 4px; | ||||||
|   text-align: center; |   text-align: center; | ||||||
|   margin-top: 20px; |  | ||||||
|   margin-bottom: 15px; |  | ||||||
|   color: $light-blue; |   color: $light-blue; | ||||||
|   background-color: transparent; |   background-color: transparent; | ||||||
|  |   margin-left: 2px; | ||||||
| } | } | ||||||
|  |  | ||||||
| .navbar-top h1 { | .navbar-top h1 { | ||||||
| @@ -80,7 +80,8 @@ $white: #fff; | |||||||
| } | } | ||||||
|  |  | ||||||
| .navbar-list-item, | .navbar-list-item, | ||||||
| .navbar-return { | .navbar-return, | ||||||
|  | .navbar-settings { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|   height: 50px; |   height: 50px; | ||||||
|   margin: 0 0 3px; |   margin: 0 0 3px; | ||||||
| @@ -95,7 +96,8 @@ $white: #fff; | |||||||
| } | } | ||||||
|  |  | ||||||
| .navbar-list-item span, | .navbar-list-item span, | ||||||
| .navbar-return span { | .navbar-return span, | ||||||
|  | .navbar-settings span { | ||||||
|   background-color: transparent; |   background-color: transparent; | ||||||
|   width: auto; |   width: auto; | ||||||
|   height: auto; |   height: auto; | ||||||
| @@ -105,6 +107,19 @@ $white: #fff; | |||||||
|   margin-left: 10px; |   margin-left: 10px; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .navbar-settings { | ||||||
|  |   width: 40px; | ||||||
|  |   height: 40px; | ||||||
|  |   justify-content: center; | ||||||
|  |   align-items: center; | ||||||
|  |   margin: 0; | ||||||
|  |   background-color: $dark-blue; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .navbar-settings span { | ||||||
|  |   margin: 0; | ||||||
|  | } | ||||||
|  |  | ||||||
| .navbar-return { | .navbar-return { | ||||||
|   width: 90%; |   width: 90%; | ||||||
|   align-items: center; |   align-items: center; | ||||||
| @@ -131,6 +146,7 @@ $white: #fff; | |||||||
| .modal-title, | .modal-title, | ||||||
| .modal-body, | .modal-body, | ||||||
| .modal-close, | .modal-close, | ||||||
|  | .modal-closeX, | ||||||
| .modal-return { | .modal-return { | ||||||
|   width: auto; |   width: auto; | ||||||
|   height: auto; |   height: auto; | ||||||
| @@ -175,7 +191,8 @@ $white: #fff; | |||||||
| } | } | ||||||
|  |  | ||||||
| .modal-close, | .modal-close, | ||||||
| .modal-return { | .modal-return, | ||||||
|  | .modal-closeX { | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
|   padding: 15px 35px; |   padding: 15px 35px; | ||||||
|   border-radius: 20px; |   border-radius: 20px; | ||||||
| @@ -186,7 +203,8 @@ $white: #fff; | |||||||
| } | } | ||||||
|  |  | ||||||
| .modal-close span, | .modal-close span, | ||||||
| .modal-return span { | .modal-return span, | ||||||
|  | .modal-closeX span { | ||||||
|   width: auto; |   width: auto; | ||||||
|   height: auto; |   height: auto; | ||||||
|   background-color: transparent; |   background-color: transparent; | ||||||
| @@ -196,6 +214,11 @@ $white: #fff; | |||||||
|   color: $dark-blue; |   color: $dark-blue; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .modal-closeX { | ||||||
|  |   background-color: rgb(255, 152, 152); | ||||||
|  |   box-shadow: 0 4px 4px rgba(94, 1, 1, 0.25); | ||||||
|  | } | ||||||
|  |  | ||||||
| .modal-return { | .modal-return { | ||||||
|   width: 30px; |   width: 30px; | ||||||
|   height: 20px; |   height: 20px; | ||||||
|   | |||||||
| @@ -21,14 +21,11 @@ export default class BrowseComponent extends Component { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   handleMessage = (event) => { |   handleMessage = (event) => { | ||||||
|     //console.log("Got message!"); |  | ||||||
|     try { |     try { | ||||||
|       const message = JSON.parse(event.data); |       const message = JSON.parse(event.data); | ||||||
|       const cableList = this.browseParse(message); |       const cableList = this.browseParse(message); | ||||||
|       this.setState({ cableList }); |       this.setState({ cableList }); | ||||||
|     } catch (error) { |     } catch (error) {} | ||||||
|       console.error("Error parsing message from server:", error); |  | ||||||
|     } |  | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   browseParse(message) { |   browseParse(message) { | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ import Modal from "react-modal"; | |||||||
| import "../assets/stylesheets/cabledetail.scss"; | import "../assets/stylesheets/cabledetail.scss"; | ||||||
|  |  | ||||||
| Modal.setAppElement("#root"); | Modal.setAppElement("#root"); | ||||||
| const hostname = window.location.hostname;  // Get the hostname from the URL bar | const hostname = window.location.hostname; // Get the hostname from the URL bar | ||||||
|  |  | ||||||
| class Cable { | class Cable { | ||||||
|   constructor(cableData) { |   constructor(cableData) { | ||||||
| @@ -17,7 +17,7 @@ class Cable { | |||||||
|     this.image = cableData.image |     this.image = cableData.image | ||||||
|       ? `http://${hostname}${cableData.image}` |       ? `http://${hostname}${cableData.image}` | ||||||
|       : DefaultPartImg; |       : DefaultPartImg; | ||||||
|     this.datasheet = `http://${hostname}${cableData.datasheet}` |     this.datasheet = `http://${hostname}${cableData.datasheet}`; | ||||||
|     this.dynamicProps = {}; |     this.dynamicProps = {}; | ||||||
|     this.horizontal = []; |     this.horizontal = []; | ||||||
|     this.vertical = []; |     this.vertical = []; | ||||||
| @@ -106,7 +106,6 @@ export default class CableDetailComponent extends Component { | |||||||
|     super(props); |     super(props); | ||||||
|     this.state = { |     this.state = { | ||||||
|       cableDetails: null, |       cableDetails: null, | ||||||
|       modalOpen_dispense: false, |  | ||||||
|       modalOpen_show: false, |       modalOpen_show: false, | ||||||
|       modalOpen_datasheet: false, |       modalOpen_datasheet: false, | ||||||
|       modalOpacity: 0, |       modalOpacity: 0, | ||||||
| @@ -120,11 +119,7 @@ export default class CableDetailComponent extends Component { | |||||||
|       setTimeout(() => this.setState({ modalOpacity: 1 }), 10); |       setTimeout(() => this.setState({ modalOpacity: 1 }), 10); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     if (modal === "modalOpen_dispense") { |     if (modal === "modalOpen_show") { | ||||||
|       this.props.socket.send( |  | ||||||
|         `{"type": "cable_get","call": "send","data": {"position": ${this.state.cableDetails.position}}}` |  | ||||||
|       ); |  | ||||||
|     } else if (modal === "modalOpen_show") { |  | ||||||
|       this.props.socket.send( |       this.props.socket.send( | ||||||
|         `{"type": "cable_get","call": "request","data": {"position": ${this.state.cableDetails.position}}}` |         `{"type": "cable_get","call": "request","data": {"position": ${this.state.cableDetails.position}}}` | ||||||
|       ); |       ); | ||||||
| @@ -137,6 +132,12 @@ export default class CableDetailComponent extends Component { | |||||||
|     }); |     }); | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  |   dispense() { | ||||||
|  |     this.props.socket.send( | ||||||
|  |       `{"type": "cable_get","call": "send","data": {"position": ${this.state.cableDetails.position}}}` | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   componentDidMount() { |   componentDidMount() { | ||||||
|     const cablePos = window.location.href.split("/").pop(); |     const cablePos = window.location.href.split("/").pop(); | ||||||
|     this.props.socket.send( |     this.props.socket.send( | ||||||
| @@ -147,13 +148,10 @@ export default class CableDetailComponent extends Component { | |||||||
|  |  | ||||||
|   handleMessage = (event) => { |   handleMessage = (event) => { | ||||||
|     try { |     try { | ||||||
|       console.log("Message from server", event.data); |  | ||||||
|       const message = JSON.parse(event.data); |       const message = JSON.parse(event.data); | ||||||
|       const cableDetails = new Cable(message.data.cables[0]); |       const cableDetails = new Cable(message.data.cables[0]); | ||||||
|       this.setState({ cableDetails }); |       this.setState({ cableDetails }); | ||||||
|     } catch (error) { |     } catch (error) {} | ||||||
|       console.error("Error parsing message from server:", error); |  | ||||||
|     } |  | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   componentWillUnmount() { |   componentWillUnmount() { | ||||||
| @@ -165,7 +163,6 @@ export default class CableDetailComponent extends Component { | |||||||
|     try { |     try { | ||||||
|       data = JSON.parse(object); |       data = JSON.parse(object); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|       console.error("Error parsing JSON data:", error); |  | ||||||
|       return <div>Error loading data...</div>; |       return <div>Error loading data...</div>; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -231,13 +228,8 @@ export default class CableDetailComponent extends Component { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   render() { |   render() { | ||||||
|     const { |     const { modalOpen_show, modalOpen_datasheet, modalOpacity, cableDetails } = | ||||||
|       modalOpen_dispense, |       this.state; | ||||||
|       modalOpen_show, |  | ||||||
|       modalOpen_datasheet, |  | ||||||
|       modalOpacity, |  | ||||||
|       cableDetails, |  | ||||||
|     } = this.state; |  | ||||||
|     const modalStyle = { |     const modalStyle = { | ||||||
|       content: { |       content: { | ||||||
|         opacity: modalOpacity, |         opacity: modalOpacity, | ||||||
| @@ -260,7 +252,7 @@ export default class CableDetailComponent extends Component { | |||||||
|           "linear-gradient(-30deg, rgb(187, 194, 236) 0%, rgba(255, 255, 255, 1) 100%)", |           "linear-gradient(-30deg, rgb(187, 194, 236) 0%, rgba(255, 255, 255, 1) 100%)", | ||||||
|         boxShadow: "0 0 20px rgba(0, 0, 0, 0.5)", |         boxShadow: "0 0 20px rgba(0, 0, 0, 0.5)", | ||||||
|         minWidth: "30%", |         minWidth: "30%", | ||||||
|         minHeight: "30%" |         minHeight: "30%", | ||||||
|       }, |       }, | ||||||
|       overlay: { |       overlay: { | ||||||
|         opacity: modalOpacity, |         opacity: modalOpacity, | ||||||
| @@ -353,9 +345,14 @@ export default class CableDetailComponent extends Component { | |||||||
|                 </div> |                 </div> | ||||||
|                 <div className="modal-datasheet"> |                 <div className="modal-datasheet"> | ||||||
|                   {cableDetails ? ( |                   {cableDetails ? ( | ||||||
|                     <iframe src={cableDetails.datasheet} height='70%' width='70%'></iframe>) : (<div className="datasheet"></div>) |                     <iframe | ||||||
|                 } |                       src={cableDetails.datasheet} | ||||||
|                    |                       height="70%" | ||||||
|  |                       width="70%" | ||||||
|  |                     ></iframe> | ||||||
|  |                   ) : ( | ||||||
|  |                     <div className="datasheet"></div> | ||||||
|  |                   )} | ||||||
|                 </div> |                 </div> | ||||||
|                 <div |                 <div | ||||||
|                   className="modal-close" |                   className="modal-close" | ||||||
| @@ -396,33 +393,11 @@ export default class CableDetailComponent extends Component { | |||||||
|             </Modal> |             </Modal> | ||||||
|             <div |             <div | ||||||
|               className="cable-actions-button" |               className="cable-actions-button" | ||||||
|               onClick={() => this.openModal("modalOpen_dispense")} |               onClick={() => this.dispense()} | ||||||
|             > |             > | ||||||
|               <span>➤ Dispense</span> |               <span>➤ Dispense</span> | ||||||
|               <span>🔽</span> |               <span>🔽</span> | ||||||
|             </div> |             </div> | ||||||
|             <Modal |  | ||||||
|               isOpen={modalOpen_dispense} |  | ||||||
|               onRequestClose={() => this.closeModal("modalOpen_dispense")} |  | ||||||
|               contentLabel="Dispense" |  | ||||||
|               style={modalStyle} |  | ||||||
|             > |  | ||||||
|               <div className="modal-container"> |  | ||||||
|                 <div className="modal-title"> |  | ||||||
|                   <span>🔽</span> |  | ||||||
|                   <span>Dispensing Item</span> |  | ||||||
|                 </div> |  | ||||||
|                 <div className="modal-body"> |  | ||||||
|                   <span>Please wait for your item to be dispensed.</span> |  | ||||||
|                 </div> |  | ||||||
|                 <div |  | ||||||
|                   className="modal-close" |  | ||||||
|                   onClick={() => this.closeModal("modalOpen_dispense")} |  | ||||||
|                 > |  | ||||||
|                   <span>Close</span> |  | ||||||
|                 </div> |  | ||||||
|               </div> |  | ||||||
|             </Modal> |  | ||||||
|           </div> |           </div> | ||||||
|  |  | ||||||
|           {cableDetails ? ( |           {cableDetails ? ( | ||||||
|   | |||||||
| @@ -32,7 +32,6 @@ export default class MapComponent extends Component { | |||||||
|  |  | ||||||
|   handleMessage = (event) => { |   handleMessage = (event) => { | ||||||
|     try { |     try { | ||||||
|       console.log("Message from server", event.data); |  | ||||||
|       const message = JSON.parse(event.data); |       const message = JSON.parse(event.data); | ||||||
|       const list = this.browseParse(message); |       const list = this.browseParse(message); | ||||||
|       this.setState({ cableList: list }); |       this.setState({ cableList: list }); | ||||||
| @@ -40,9 +39,7 @@ export default class MapComponent extends Component { | |||||||
|         this.select("0"); |         this.select("0"); | ||||||
|         this.updateSelection(); |         this.updateSelection(); | ||||||
|       }, 50); |       }, 50); | ||||||
|     } catch (error) { |     } catch (error) {} | ||||||
|       console.error("Error parsing message from server:", error); |  | ||||||
|     } |  | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   updateSelection() { |   updateSelection() { | ||||||
|   | |||||||
| @@ -9,8 +9,7 @@ export default class NavBar extends Component { | |||||||
|   constructor(props) { |   constructor(props) { | ||||||
|     super(props); |     super(props); | ||||||
|     this.state = { |     this.state = { | ||||||
|       clicks: 0, |       modalOpen_activeArm: false, | ||||||
|       modalOpen_return: false, |  | ||||||
|       modalOpacity: 0, |       modalOpacity: 0, | ||||||
|     }; |     }; | ||||||
|     this.openModal = this.openModal.bind(this); |     this.openModal = this.openModal.bind(this); | ||||||
| @@ -28,38 +27,37 @@ export default class NavBar extends Component { | |||||||
|     } else if (path.includes("cable")) { |     } else if (path.includes("cable")) { | ||||||
|       document.getElementById("browse").style.backgroundColor = "#007CBE"; |       document.getElementById("browse").style.backgroundColor = "#007CBE"; | ||||||
|       document.getElementById("browse-s").style.color = "white"; |       document.getElementById("browse-s").style.color = "white"; | ||||||
|  |     } else if (path.includes("settings")) { | ||||||
|  |       document.getElementById("settings").style.backgroundColor = "#007CBE"; | ||||||
|  |       document.getElementById("settings-s").style.color = "white"; | ||||||
|     } else { |     } else { | ||||||
|       document.getElementById("browse").style.backgroundColor = "#007CBE"; |       document.getElementById("browse").style.backgroundColor = "#007CBE"; | ||||||
|       document.getElementById("browse-s").style.color = "white"; |       document.getElementById("browse-s").style.color = "white"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     this.props.socket.addEventListener("message", this.handleMessage); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   handleClick = () => { |  | ||||||
|     const { clicks, timer } = this.state; |  | ||||||
|     if (clicks === 0) { |  | ||||||
|       const newTimer = setTimeout(() => { |  | ||||||
|         this.setState({ clicks: 0 }); |  | ||||||
|         clearTimeout(newTimer); |  | ||||||
|       }, 1000); |  | ||||||
|       this.setState({ timer: newTimer }); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     this.setState({ clicks: clicks + 1 }); |  | ||||||
|  |  | ||||||
|     if (clicks + 1 === 2) { |  | ||||||
|       window.location.replace("/settings"); |  | ||||||
|  |  | ||||||
|       clearTimeout(timer); |  | ||||||
|       this.setState({ clicks: 0, timer: null }); |  | ||||||
|     } |  | ||||||
|   }; |  | ||||||
|  |  | ||||||
|   componentWillUnmount() { |   componentWillUnmount() { | ||||||
|     if (this.state.timer) { |     this.props.socket.removeEventListener("message", this.handleMessage); | ||||||
|       clearTimeout(this.state.timer); |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   handleMessage = (event) => { | ||||||
|  |     try { | ||||||
|  |       const message = JSON.parse(event.data); | ||||||
|  |       if (message.type === "mode") { | ||||||
|  |         let mode = JSON.parse(message.data).mode; | ||||||
|  |         if (mode === "Idle") { | ||||||
|  |           this.closeModal("modalOpen_activeArm"); | ||||||
|  |         } else { | ||||||
|  |           this.openModal("modalOpen_activeArm"); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } catch (error) { | ||||||
|  |       console.error(""); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |  | ||||||
|   openModal = (modal) => { |   openModal = (modal) => { | ||||||
|     this.setState({ [modal]: true }, () => { |     this.setState({ [modal]: true }, () => { | ||||||
|       setTimeout(() => this.setState({ modalOpacity: 1 }), 10); |       setTimeout(() => this.setState({ modalOpacity: 1 }), 10); | ||||||
| @@ -72,16 +70,20 @@ export default class NavBar extends Component { | |||||||
|     }); |     }); | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   returnCable = (tray) => { |   returnCable = () => { | ||||||
|     this.props.socket.send( |     this.props.socket.send( | ||||||
|       `{"type": "cable_get","call": "send","data": {"tray": ${tray}}}` |       `{"type": "cable_get","call": "send","data": {"tray": 0}}` | ||||||
|  |     ); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   cancelAction = () => { | ||||||
|  |     this.props.socket.send( | ||||||
|  |       `{"type": "cancel_action","call": "request","data": {}}` | ||||||
|     ); |     ); | ||||||
|     console.log("Cable returned from tray " + tray); |  | ||||||
|     this.closeModal("modalOpen_return"); |  | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   render() { |   render() { | ||||||
|     const { modalOpen_return, modalOpacity } = this.state; |     const { modalOpen_activeArm, modalOpacity } = this.state; | ||||||
|  |  | ||||||
|     const modalStyle = { |     const modalStyle = { | ||||||
|       content: { |       content: { | ||||||
| @@ -105,7 +107,7 @@ export default class NavBar extends Component { | |||||||
|           "linear-gradient(-30deg, rgb(187, 194, 236) 0%, rgba(255, 255, 255, 1) 100%)", |           "linear-gradient(-30deg, rgb(187, 194, 236) 0%, rgba(255, 255, 255, 1) 100%)", | ||||||
|         boxShadow: "0 0 20px rgba(0, 0, 0, 0.5)", |         boxShadow: "0 0 20px rgba(0, 0, 0, 0.5)", | ||||||
|         minWidth: "30%", |         minWidth: "30%", | ||||||
|         minHeight: "30%" |         minHeight: "30%", | ||||||
|       }, |       }, | ||||||
|       overlay: { |       overlay: { | ||||||
|         opacity: modalOpacity, |         opacity: modalOpacity, | ||||||
| @@ -120,7 +122,9 @@ export default class NavBar extends Component { | |||||||
|         <div className="navbar-top"> |         <div className="navbar-top"> | ||||||
|           <div className="navbar-top-container"> |           <div className="navbar-top-container"> | ||||||
|             <div className="navbar-top-hamburger">≡</div> |             <div className="navbar-top-hamburger">≡</div> | ||||||
|             <div className="navbar-top-secret" onClick={this.handleClick}></div> |             <NavLink className="navbar-settings" id="settings" to="/settings"> | ||||||
|  |               <span id="settings-s">⚙️</span> | ||||||
|  |             </NavLink> | ||||||
|           </div> |           </div> | ||||||
|           <h1>Jukebox</h1> |           <h1>Jukebox</h1> | ||||||
|           <ol className="navbar-list"> |           <ol className="navbar-list"> | ||||||
| @@ -139,45 +143,25 @@ export default class NavBar extends Component { | |||||||
|             </NavLink> |             </NavLink> | ||||||
|           </ol> |           </ol> | ||||||
|         </div> |         </div> | ||||||
|         <div |         <div className="navbar-return" onClick={() => this.returnCable()}> | ||||||
|           className="navbar-return" |  | ||||||
|           onClick={() => this.openModal("modalOpen_return")} |  | ||||||
|         > |  | ||||||
|           <span id="browse-s">Return Cable</span> |           <span id="browse-s">Return Cable</span> | ||||||
|         </div> |         </div> | ||||||
|  |  | ||||||
|         <Modal |         <Modal | ||||||
|           isOpen={modalOpen_return} |           isOpen={modalOpen_activeArm} | ||||||
|           onRequestClose={() => this.closeModal("modalOpen_return")} |  | ||||||
|           contentLabel="show" |           contentLabel="show" | ||||||
|           style={modalStyle} |           style={modalStyle} | ||||||
|         > |         > | ||||||
|           <div className="modal-container"> |           <div className="modal-container"> | ||||||
|             <div className="modal-title"> |             <div className="modal-title"> | ||||||
|               <span>♻️</span> |               <span>⚠️</span> | ||||||
|               <span>Return Cable</span> |               <span>Arm in Motion</span> | ||||||
|             </div> |             </div> | ||||||
|             <div className="modal-body"> |             <div className="modal-body"> | ||||||
|               <span>Select the tray you would like to return from.</span> |               <span>Please stay clear of the arm.</span> | ||||||
|             </div> |             </div> | ||||||
|             <div className="modal-tray"> |             <div className="modal-closeX" onClick={() => this.cancelAction()}> | ||||||
|               <div className="modal-return" onClick={() => this.returnCable(0)}> |               <span>Cancel Action</span> | ||||||
|                 <span>1</span> |  | ||||||
|               </div> |  | ||||||
|               <div className="modal-return" onClick={() => this.returnCable(1)}> |  | ||||||
|                 <span>2</span> |  | ||||||
|               </div> |  | ||||||
|               <div className="modal-return" onClick={() => this.returnCable(2)}> |  | ||||||
|                 <span>3</span> |  | ||||||
|               </div> |  | ||||||
|               <div className="modal-return" onClick={() => this.returnCable(3)}> |  | ||||||
|                 <span>4</span> |  | ||||||
|               </div> |  | ||||||
|             </div> |  | ||||||
|             <div |  | ||||||
|               className="modal-close" |  | ||||||
|               onClick={() => this.closeModal("modalOpen_return")} |  | ||||||
|             > |  | ||||||
|               <span>Cancel</span> |  | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|         </Modal> |         </Modal> | ||||||
|   | |||||||
| @@ -13,6 +13,11 @@ export default class SettingsComponent extends Component { | |||||||
|     this.props.socket.send('{"type":"restart","call":"request","data":{}}'); |     this.props.socket.send('{"type":"restart","call":"request","data":{}}'); | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  |   modeMessage = () => { | ||||||
|  |     console.log("Sending 'mode' message..."); | ||||||
|  |     this.props.socket.send('{"type":"mode","call":"request","data":{}}'); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|   render() { |   render() { | ||||||
|     return ( |     return ( | ||||||
|       <div className="settings"> |       <div className="settings"> | ||||||
| @@ -28,6 +33,12 @@ export default class SettingsComponent extends Component { | |||||||
|             > |             > | ||||||
|               <span>🔴 Power Off</span> |               <span>🔴 Power Off</span> | ||||||
|             </div> |             </div> | ||||||
|  |             <div | ||||||
|  |               className="settings-powerButton" | ||||||
|  |               onClick={() => this.modeMessage()} | ||||||
|  |             > | ||||||
|  |               <span>Send "mode"</span> | ||||||
|  |             </div> | ||||||
|             {/* <div |             {/* <div | ||||||
|               className="settings-powerButton" |               className="settings-powerButton" | ||||||
|               onClick={() => this.restartPower()} |               onClick={() => this.restartPower()} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user