Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15052 | Rev 15243 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 15052 Rev 15241
Línea 1... Línea 1...
1
import React, { useCallback, useState } from 'react'
1
import React, { useCallback, useState } from 'react'
2
import { Link } from 'react-router-dom'
-
 
Línea 3... Línea 2...
3
 
2
 
4
const sortData = ({ tableData, sortKey, reverse }) => {
3
const sortData = ({ tableData, sortKey, reverse }) => {
Línea 5... Línea 4...
5
	let sortedData
4
	let sortedData
Línea 6... Línea 5...
6
 
5
 
7
	if (!sortKey) return tableData
6
	if (!sortKey) return tableData
8
 
-
 
9
	if (sortKey !== 'name') {
-
 
10
		sortedData = tableData.sort((a, b) => {
-
 
11
			return a[sortKey] - b[sortKey]
-
 
12
		})
-
 
13
	} else {
-
 
14
		sortedData = tableData.sort((a, b) => {
7
 
Línea 15... Línea -...
15
			return a[sortKey] > b[sortKey] ? 1 : -1
-
 
16
		})
8
	if (sortKey !== 'name') {
17
	}
9
		sortedData = tableData.sort((a, b) => a[sortKey] - b[sortKey])
18
 
10
	}
Línea -... Línea 11...
-
 
11
 
-
 
12
	if (sortKey === 'name') {
19
 
13
		sortedData = tableData.sort((a, b) => a[sortKey] > b[sortKey] ? 1 : -1)
20
	if (reverse) {
14
	}
Línea 21... Línea 15...
21
		return sortedData.reverse()
15
 
22
	}
16
	if (reverse) return sortedData.reverse()
23
 
17
 
24
	return sortedData
18
	return sortedData
25
}
19
}
26
 
20
 
27
const SortButton = ({ sortOrder, columnKey, sortKey, onClick }) => {
21
const SortButton = ({ sortOrder, columnKey, sortKey, onClick }) => {
28
	return (
22
	return (
29
		<button onClick={onClick} className="btn">
23
		<button onClick={onClick} className="btn">
30
			{
24
			{
31
				(sortKey === columnKey) && (sortOrder === 'desc')
25
				(sortKey === columnKey && sortOrder === 'desc')
Línea -... Línea 26...
-
 
26
					? <i className='fa fa-angle-up' />
-
 
27
					: <i className='fa fa-angle-down' />
-
 
28
			}
-
 
29
		</button>
-
 
30
	)
-
 
31
}
-
 
32
 
-
 
33
const Table = ({
32
					? <i className='fa fa-angle-up' />
34
	data,
-
 
35
	headers,
-
 
36
	onDelete,
Línea 33... Línea 37...
33
					: <i className='fa fa-angle-down' />
37
	allowEdit,
34
			}
38
	allowDelete,
35
		</button>
39
	allowUsersWhoApplied,
Línea 47... Línea 51...
47
		[data, sortKey, sortOrder]
51
		[data, sortKey, sortOrder]
48
	)
52
	)
Línea 49... Línea 53...
49
 
53
 
50
	const changeSort = (key) => {
54
	const changeSort = (key) => {
51
		setSortOrder(sortOrder === 'ascn' ? 'desc' : 'ascn')
-
 
52
 
55
		setSortOrder(sortOrder === 'ascn' ? 'desc' : 'ascn')
53
		setSortKey(key)
56
		setSortKey(key)
Línea 54... Línea 57...
54
	}
57
	}
55
 
58
 
Línea 62... Línea 65...
62
							<th
65
							<th
63
								key={row.key}
66
								key={row.key}
64
								className="text-vertical-middle"
67
								className="text-vertical-middle"
65
							>
68
							>
66
								{row.label}
69
								{row.label}
67
								{
-
 
68
									row.isSorteable
70
								{row.isSorteable &&
69
									&&
-
 
70
									<SortButton
71
									<SortButton
71
										columnKey={row.key}
72
										columnKey={row.key}
72
										onClick={() => changeSort(row.key)}
73
										onClick={() => changeSort(row.key)}
73
										{...{
74
										{...{
74
											sortOrder,
75
											sortOrder,
Línea 79... Línea 80...
79
							</th>
80
							</th>
80
						)
81
						)
81
					})}
82
					})}
82
				</tr>
83
				</tr>
83
			</thead>
84
			</thead>
84
 
-
 
85
			<tbody>
85
			<tbody>
86
				{sortedData().map((item) => {
86
				{sortedData().map((item) => {
87
					const entries = Object.entries(item)
87
					const entries = Object.entries(item)
88
 
-
 
89
					return (
88
					return (
90
						< tr key={item.id} >
89
						<tr key={item.id} >
91
							{
90
							{
92
								entries.map((element) => {
91
								entries.map((element) => {
Línea 93... Línea 92...
93
 
92
 
Línea 111... Línea 110...
111
													className='d-flex flex-column py-2 px-15'
110
													className='d-flex flex-column py-2 px-15'
112
													style={{ gap: '5px' }}>
111
													style={{ gap: '5px' }}>
113
													{
112
													{
114
														(allowEdit === '1')
113
														(allowEdit === '1')
115
														&&
114
														&&
116
														<Link
115
														<button
117
															to="/jobs/edit"
-
 
118
															style={{ textDecoration: 'none' }}
116
															className="btn btn-sm btn-block btn-primary btn-edit"
119
															onClick={() => onEdit(element[1]['link_edit'])}
117
															onClick={() => onEdit(element[1]['link_edit'])}
120
														>
118
														>
121
															<button
-
 
122
																className="btn btn-sm btn-block btn-primary btn-edit"
-
 
123
															>
-
 
124
																<i className="fa fa-pencil" />
119
															<i className="fa fa-pencil" />
125
																{labels.EDIT}
120
															{labels.EDIT}
126
															</button>
121
														</button>
127
														</Link>
-
 
128
													}
122
													}
129
													{
-
 
130
														(allowDelete === '1')
123
													{(allowDelete === '1')
131
														&&
124
														&&
132
														<button
125
														<button
133
															className="btn btn-sm btn-danger btn-delete"
126
															className="btn btn-sm btn-danger btn-delete"
134
															onClick={() => onDelete(item)}
127
															onClick={() => onDelete(item)}
135
														>
128
														>
136
															<i className="fa fa-trash" />
129
															<i className="fa fa-trash" />
137
															{labels.DELETE}
130
															{labels.DELETE}
138
														</button>
131
														</button>
139
													}
132
													}
140
													{
-
 
141
														(allowUsersWhoApplied === '1' && element[1]['link_users_who_applied'])
133
													{(allowUsersWhoApplied === '1' && element[1]['link_users_who_applied'])
142
														&&
134
														&&
143
														<button
135
														<button
144
															className="btn btn-sm btn-primary btn-users-who-applied"
136
															className="btn btn-sm btn-primary btn-users-who-applied"
145
															onClick={() => handleUserWhoApplied(element[1]['link_users_who_applied'])}
137
															onClick={() => handleUserWhoApplied(element[1]['link_users_who_applied'])}
146
														>
138
														>
Línea 151... Línea 143...
151
												</td>
143
												</td>
152
											)
144
											)
153
										}
145
										}
Línea 154... Línea 146...
154
 
146
 
155
										return (
-
 
156
											<td
147
										return (
157
												className="text-vertical-middle sorting_1 dtr-control">
148
											<td className="text-vertical-middle sorting_1 dtr-control">
158
												{element[1]}
149
												{element[1]}
159
											</td>
150
											</td>
160
										)
151
										)
161
									}
152
									}