The main server, and probably only repository in this org.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.7 KiB

5 years ago
  1. import React, {useState} from "react";
  2. import {Button, Col, Form, FormGroup, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader} from "reactstrap";
  3. import useBridges from "../../Hooks/bridge";
  4. import Loading from "../Loading";
  5. function BridgeModal({onCancel, bridge = null}) {
  6. const {addBridge, editBridge} = useBridges();
  7. const edit = bridge !== null;
  8. const [name, setName] = useState(edit ? bridge.name : "");
  9. const [driver, setDriver] = useState(edit ? bridge.driver : "");
  10. const [addr, setAddr] = useState(edit ? bridge.addr : "");
  11. const [waiting, setWaiting] = useState(false);
  12. function onConfirm() {
  13. if (edit) {
  14. editBridge(bridge.id, name);
  15. } else {
  16. setWaiting(true);
  17. addBridge(name, driver, addr, (result) => {
  18. if (!result) {
  19. alert("Noe gikk galt");
  20. }
  21. setWaiting(false);
  22. onCancel();
  23. });
  24. }
  25. }
  26. return (
  27. <Modal isOpen={true}>
  28. <ModalHeader>{edit ? "Bruegenskaper" : "Ny bru"}</ModalHeader>
  29. <ModalBody>
  30. {waiting ? (
  31. <Loading/>
  32. ) : (
  33. <Form>
  34. <FormGroup row>
  35. <Label sm={3} for="text-name">
  36. Navn:
  37. </Label>
  38. <Col sm={9}>
  39. <Input type="text"
  40. id="text-name"
  41. name="name"
  42. value={name}
  43. onChange={e => setName(e.target.value)}
  44. />
  45. </Col>
  46. </FormGroup>
  47. <FormGroup row>
  48. <Label sm={3} for="text-driver">
  49. Driver:
  50. </Label>
  51. <Col sm={9}>
  52. <Input type="text"
  53. id="text-driver"
  54. name="driver"
  55. value={driver}
  56. onChange={e => setDriver(e.target.value)}
  57. disabled={edit}
  58. />
  59. </Col>
  60. </FormGroup>
  61. <FormGroup row>
  62. <Label sm={3} for="text-name">
  63. Adresse:
  64. </Label>
  65. <Col sm={9}>
  66. <Input type="text"
  67. id="text-addr"
  68. name="addr"
  69. value={addr}
  70. onChange={e => setAddr(e.target.value)}
  71. disabled={edit}
  72. />
  73. </Col>
  74. </FormGroup>
  75. </Form>
  76. )}
  77. </ModalBody>
  78. <ModalFooter>
  79. <Button color="primary" disabled={waiting} onClick={onConfirm}>Bekreft</Button>
  80. {" "}
  81. <Button color="secondary" disabled={waiting} onClick={onCancel}>Avbryt</Button>
  82. </ModalFooter>
  83. </Modal>
  84. );
  85. }
  86. export default BridgeModal;