diff --git a/src/pages/UserActivity/components/AllUsersTable/index.js b/src/pages/UserActivity/components/AllUsersTable/index.js new file mode 100644 index 0000000..ae45a51 --- /dev/null +++ b/src/pages/UserActivity/components/AllUsersTable/index.js @@ -0,0 +1,175 @@ +import React, { useState, useEffect } from 'react'; +import { __ } from '@wordpress/i18n'; +import { uniq } from 'ramda'; +import copy from 'copy-to-clipboard'; + +// store +import { useStore, storeSet } from '../../../../store'; + +// tools +import getBandoSeverity from '../../../../helpers/getBandoSeverity'; +import getBandoLabel from '../../../../helpers/getBandoLabel'; +import getDateFromISOstring from '../../../../helpers/getDateFromISOstring'; + +// api +import UserService from '../../../../service/user-service'; + +// components +import { FilterMatchMode, FilterOperator } from 'primereact/api'; +import { DataTable } from 'primereact/datatable'; +import { Column } from 'primereact/column'; +import { Dropdown } from 'primereact/dropdown'; +import { Button } from 'primereact/button'; +import { Calendar } from 'primereact/calendar'; +import { Tag } from 'primereact/tag'; +import ProperBandoLabel from '../../../../components/ProperBandoLabel'; +import translationStrings from '../../../../translationStringsForComponents'; +import { Link } from 'react-router-dom'; + +const AllUsersTable = () => { + const users = useStore().main.users(); + const [filters, setFilters] = useState(null); + const [loading, setLoading] = useState(false); + const [statuses, setStatuses] = useState([]); + + useEffect(() => { + if (!loading) { + setLoading(true); + UserService.getUsers(getCallback, errGetCallbacks); + } + }, []); + + const getCallback = (data) => { + if (data.status === 'SUCCESS') { + storeSet.main.users(getFormattedData(data.data)); + setStatuses(uniq(data.data.map(o => o.status))) + initFilters(); + } + setLoading(false); + } + + const errGetCallbacks = () => { + setLoading(false); + } + + const getFormattedData = (data) => { + return data + .filter(o => ['ROLE_SUPER_ADMIN', 'ROLE_PRE_INSTRUCTOR', 'ROLE_INSTRUCTOR_MANAGER'].includes(o.role.roleType)); + }; + + const clearFilter = () => { + initFilters(); + }; + + const initFilters = () => { + setFilters({ + global: { value: null, matchMode: FilterMatchMode.CONTAINS }, + email: { + operator: FilterOperator.AND, + constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] + }, + lastLogin: { + operator: FilterOperator.AND, + constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] + } + }); + }; + + const renderHeader = () => { + return ( +
+
+ ); + }; + + const dateLastAccessBodyTemplate = (rowData) => { + return getDateFromISOstring(rowData.lastLogin); + }; + + const dateFilterTemplate = (options) => { + return options.filterCallback(e.value, options.index)} + dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999"/>; + }; + + const nameBodyTemplate = (rowData) => { + return `${rowData.firstName} ${rowData.lastName}`; + }; + + const roleEmailTemplate = (rowData) => { + return
+ {rowData.email} + +
; + }; + + const roleBodyTemplate = (rowData) => { + return rowData.role.roleName; + }; + + const statusBodyTemplate = (rowData) => { + return ; + }; + + const statusFilterTemplate = (options) => { + return options.filterCallback(e.value, options.index)} + itemTemplate={statusItemTemplate} placeholder={__('Scegli uno', 'gepafin')} + className="p-column-filter" + showClear/>; + }; + + const statusItemTemplate = (option) => { + return ; + }; + + const actionsBodyTemplate = (rowData) => { + return +