devxaero

Untitled

Aug 20th, 2022
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. import React from "react";
  2. import { IonDatetime, IonDatetimeButton, IonModal } from '@ionic/react';
  3.  
  4. export const Filter = ({ column }) => {
  5. return (
  6. <div style={{ marginTop: 5 }}>
  7. {column.canFilter && column.render("Filter")}
  8. </div>
  9. );
  10. };
  11.  
  12. export function dateBetweenFilterFn(rows, id, filterValues) {
  13.  
  14. const sd = filterValues[0] ? new Date(filterValues[0]) : undefined;
  15. const ed = filterValues[1] ? new Date(filterValues[1]) : undefined;
  16. if (ed || sd) {
  17. return rows.filter((r) => {
  18. const cellDate = new Date(r.values[id])
  19. if (ed && sd) {
  20. return cellDate >= sd && cellDate <= ed;
  21. } else if (sd) {
  22. return cellDate >= sd;
  23. } else {
  24. return cellDate <= ed;
  25. }
  26. });
  27. } else {
  28. return rows;
  29. }
  30. }
  31.  
  32. export function DateRangeColumnFilter({
  33. column: { filterValue = [], preFilteredRows, setFilter, id }
  34. }) {
  35. const [min, max] = React.useMemo(() => {
  36. let min = preFilteredRows.length
  37. ? new Date(preFilteredRows[0].values[id])
  38. : new Date(0);
  39. let max = preFilteredRows.length
  40. ? new Date(preFilteredRows[0].values[id])
  41. : new Date(0);
  42.  
  43. preFilteredRows.forEach((row) => {
  44. const rowDate = new Date(row.values[id]);
  45. min = rowDate <= min ? rowDate : min;
  46. max = rowDate >= max ? rowDate : max;
  47. });
  48. return [min, max];
  49. }, [id, preFilteredRows]);
  50.  
  51. return (
  52. <div className="Date">
  53. <IonDatetimeButton datetime="dateone"></IonDatetimeButton>
  54. <IonModal keepContentsMounted={true}>
  55. <IonDatetime id="dateone"
  56. color="success"
  57. showDefaultButtons={true}
  58. show-clear-button={true}
  59. displayFormat="D MMM HH:mm"
  60. show-backdrop="false"
  61. value={filterValue[0] || ""}
  62. type="date"
  63. onIonChange={(e) => {
  64. const val = e.target.value;
  65. setFilter((old = []) => [val ? val : undefined, old[1]]);
  66. }}></IonDatetime>
  67. </IonModal>
  68. {" to:"}
  69. <IonDatetimeButton datetime="datetwo"></IonDatetimeButton>
  70. <IonModal keepContentsMounted={true}>
  71. <IonDatetime id="datetwo"
  72. showDefaultButtons={true}
  73. show-clear-button={true}
  74. color="success"
  75. displayFormat="D MMM HH:mm"
  76. show-backdrop="false"
  77. value={filterValue[1] || ""}
  78. type="date"
  79. onIonChange={(e) => {
  80. const val = e.target.value;
  81. setFilter((old = []) => [old[0], val ? val : undefined]);
  82. }}></IonDatetime>
  83. </IonModal>
  84. </div >
  85. );
  86. }
  87.  
Add Comment
Please, Sign In to add comment