Skip to content

Commit 7c0a9e6

Browse files
committed
Added loading indicator + refactor
1 parent d2ad690 commit 7c0a9e6

File tree

1 file changed

+38
-66
lines changed

1 file changed

+38
-66
lines changed

resources/views/panel/users.blade.php

Lines changed: 38 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -28,92 +28,64 @@
2828

2929
<script type="text/javascript">
3030
// Function to confirm and delete users
31-
var elems = document.getElementsByClassName('confirmation');
32-
var confirmIt = function (e) {
31+
var confirmIt = function(e) {
3332
e.preventDefault();
3433
if (confirm("{{ __('messages.confirm.delete.user') }}")) {
3534
var userId = this.getAttribute('data-id');
35+
this.innerHTML = '<div class="d-flex justify-content-center"><div class="spinner-border spinner-border-sm text-primary" role="status"><span class="visually-hidden">Loading...</span></div></div>';
3636
deleteUserData(userId);
3737
}
3838
};
39-
39+
4040
var deleteUserData = function(userId) {
41-
var url = "{{ route('deleteTableUser', ['id' => ':id']) }}".replace(':id', userId);
4241
var xhr = new XMLHttpRequest();
43-
xhr.open('POST', url, true);
42+
xhr.open('POST', `{{ route('deleteTableUser', ['id' => ':id']) }}`.replace(':id', userId), true);
4443
xhr.setRequestHeader('X-CSRF-TOKEN', '{{ csrf_token() }}');
4544
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
46-
xhr.onreadystatechange = function () {
45+
xhr.onreadystatechange = function() {
4746
if (xhr.readyState === 4 && xhr.status === 200) {
4847
refreshLivewireTable();
4948
}
5049
};
51-
var data = JSON.stringify({ id: userId });
52-
xhr.send(data);
50+
xhr.send(JSON.stringify({ id: userId }));
5351
};
54-
55-
// Function to refresh the Livewire table
56-
var refreshLivewireTable = function () {
57-
Livewire.components.getComponentsByName('user-table')[0].$wire.$refresh()
52+
53+
// Function to handle user actions (verification and blocking)
54+
var handleUserClick = function(e) {
55+
e.preventDefault();
56+
var userId = this.getAttribute('data-id');
57+
this.innerHTML = '<div class="d-flex justify-content-center"><div class="spinner-border spinner-border-sm text-primary" role="status"><span class="visually-hidden">Loading...</span></div></div>';
58+
sendUserAction(userId);
5859
};
59-
60-
// Attach click event listeners to elements with class 'confirmation'
61-
for (var i = 0, l = elems.length; i < l; i++) {
62-
elems[i].addEventListener('click', confirmIt, false);
63-
}
64-
</script>
65-
<script type="text/javascript">
66-
// Function to handle user verification requests
67-
var elems = document.getElementsByClassName('user-email');
68-
69-
var handleUserClick = function (e) {
70-
e.preventDefault();
71-
var userId = this.getAttribute('data-id');
72-
sendVerificationRequest(userId);
60+
61+
var sendUserAction = function(userId) {
62+
var xhr = new XMLHttpRequest();
63+
xhr.open('GET', userId, true);
64+
xhr.onreadystatechange = function() {
65+
if (xhr.readyState === 4 && xhr.status === 200) {
66+
refreshLivewireTable();
67+
}
68+
};
69+
xhr.send();
7370
};
74-
75-
var sendVerificationRequest = function(userId) {
76-
var xhr = new XMLHttpRequest();
77-
xhr.open('GET', userId, true);
78-
xhr.onreadystatechange = function () {
79-
if (xhr.readyState === 4 && xhr.status === 200) {
80-
refreshLivewireTable();
71+
72+
// Attach click event listeners to elements with class 'confirmation', 'user-email', and 'user-block'
73+
var attachClickEventListeners = function(className, handler) {
74+
var elems = document.getElementsByClassName(className);
75+
for (var i = 0, l = elems.length; i < l; i++) {
76+
elems[i].addEventListener('click', handler, false);
8177
}
82-
};
83-
xhr.send();
84-
};
85-
86-
// Attach click event listeners to elements with class 'user-email'
87-
for (var i = 0, l = elems.length; i < l; i++) {
88-
elems[i].addEventListener('click', handleUserClick, false);
89-
}
90-
</script>
91-
<script type="text/javascript">
92-
// Function to handle user blocking
93-
var elems = document.getElementsByClassName('user-block');
94-
95-
var handleUserClick = function (e) {
96-
e.preventDefault();
97-
var userId = this.getAttribute('data-id');
98-
sendVerificationRequest(userId);
9978
};
100-
101-
var sendVerificationRequest = function(userId) {
102-
var xhr = new XMLHttpRequest();
103-
xhr.open('GET', userId, true);
104-
xhr.onreadystatechange = function () {
105-
if (xhr.readyState === 4 && xhr.status === 200) {
106-
refreshLivewireTable();
107-
}
108-
};
109-
xhr.send();
79+
80+
// Function to refresh the Livewire table
81+
var refreshLivewireTable = function() {
82+
Livewire.components.getComponentsByName('user-table')[0].$wire.$refresh()
11083
};
111-
112-
// Attach click event listeners to elements with class 'user-block'
113-
for (var i = 0, l = elems.length; i < l; i++) {
114-
elems[i].addEventListener('click', handleUserClick, false);
115-
}
116-
</script>
84+
85+
attachClickEventListeners('confirmation', confirmIt);
86+
attachClickEventListeners('user-email', handleUserClick);
87+
attachClickEventListeners('user-block', handleUserClick);
88+
</script>
11789

11890
</div>
11991
</section>

0 commit comments

Comments
 (0)