consulta.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <script type="text/javascript" src="https://unpkg.com/@ant-design/graphs@latest/dist/graphs.min.js"></script>
  2. <style>
  3. .site-card {
  4. height: 100vh;
  5. width: 100vw;
  6. padding: 20px;
  7. background: #ececec;
  8. }
  9. .content {
  10. width: 100%;
  11. height: 100%;
  12. }
  13. .grid {
  14. width: 25%;
  15. text-align: center;
  16. }
  17. .full-width {
  18. width: 100%;
  19. }
  20. </style>
  21. <script type="text/babel">
  22. const url = "https://descarga.fourier.audio";
  23. const { LoadingOutlined } = window.icons;
  24. const { Card, Form, Input, Row, Col, Button, DatePicker, Spin, Table } = window.antd;
  25. const { RangePicker } = DatePicker;
  26. const App = () => {
  27. const [cargando, setCargando] = React.useState(false);
  28. const [descargas, setDescargas] = React.useState([]);
  29. const [inicio, setInicio] = React.useState(null);
  30. const [form] = Form.useForm();
  31. const onFinish = async (data) => {
  32. setCargando(true);
  33. const idPc = data.idPc;
  34. const fi = data.fechas[0].format("YYYY-MM-DD HH:mm:ss");
  35. const ff = data.fechas[1].format("YYYY-MM-DD HH:mm:ss");
  36. const resp = await fetch(`${url}/descarga/por-pc?pc=${idPc}&fi=${fi}&ff=${ff}`);
  37. const res = await resp.json();
  38. setDescargas(res.resultado);
  39. setCargando(false);
  40. }
  41. let onCalendarChange = (mf, f, r) => {
  42. if(r.range === "start") {
  43. setInicio(mf[0]);
  44. }
  45. }
  46. let disabledDate = (current) => {
  47. if(inicio === null) {
  48. return false;
  49. } else {
  50. let disabled = current < inicio.add(7, 'days')
  51. console.log(!disabled, current, inicio.add(7, 'days'))
  52. return !disabled;
  53. }
  54. }
  55. const columnas = [
  56. {
  57. title: 'Estación',
  58. dataIndex: 'clave',
  59. key: '1',
  60. },
  61. {
  62. title: 'Fecha',
  63. dataIndex: 'fecha',
  64. key: '2',
  65. },
  66. {
  67. title: 'Descargas',
  68. key: '3',
  69. render(r) {
  70. return (<div>{r.descargados}/{r.pendientes + r.descargados}</div>)
  71. }
  72. }
  73. ];
  74. return (
  75. <div className="site-card">
  76. <Card className="content">
  77. <Form
  78. form={form}
  79. layout="vertical"
  80. onFinish={onFinish}
  81. >
  82. <Row gutter={8}>
  83. <Col span={6}>
  84. <Form.Item
  85. label="ID PC"
  86. name="idPc"
  87. rules={[{ required: true, message: 'Ingresa el ID del PC' }]}
  88. >
  89. <Input size="large" />
  90. </Form.Item>
  91. </Col>
  92. <Col span={6}>
  93. <Form.Item
  94. label="Fechas"
  95. name="fechas"
  96. rules={[{ required: true, message: 'Ingresa el Rango de Fechas' }]}
  97. >
  98. <RangePicker
  99. showTime={{
  100. hideDisabledOptions: true,
  101. defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')],
  102. }}
  103. format="DD-MM-YYYY HH:mm:ss"
  104. size="large"
  105. />
  106. </Form.Item>
  107. </Col>
  108. <Col span={6}>
  109. <Form.Item label="&nbsp;" >
  110. <Button type="primary" htmlType="submit" size="large">Consultar</Button>
  111. </Form.Item>
  112. </Col>
  113. </Row>
  114. </Form>
  115. <Row>
  116. { cargando && <LoadingOutlined style={{ fontSize: 24 }} spin />}
  117. <Col span={16}>
  118. <Table className="full-width" dataSource={descargas} columns={columnas} />
  119. </Col>
  120. </Row>
  121. </Card>
  122. </div>
  123. );
  124. }
  125. ReactDOM.render(<App />, document.getElementById('root'));
  126. </script>