aa-fleetfinder 2.7.0__py3-none-any.whl → 2.7.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of aa-fleetfinder might be problematic. Click here for more details.

Files changed (38) hide show
  1. {aa_fleetfinder-2.7.0.dist-info → aa_fleetfinder-2.7.2.dist-info}/METADATA +1 -1
  2. {aa_fleetfinder-2.7.0.dist-info → aa_fleetfinder-2.7.2.dist-info}/RECORD +38 -32
  3. fleetfinder/__init__.py +1 -1
  4. fleetfinder/locale/cs_CZ/LC_MESSAGES/django.po +30 -20
  5. fleetfinder/locale/de/LC_MESSAGES/django.mo +0 -0
  6. fleetfinder/locale/de/LC_MESSAGES/django.po +35 -33
  7. fleetfinder/locale/django.pot +31 -21
  8. fleetfinder/locale/es/LC_MESSAGES/django.po +30 -20
  9. fleetfinder/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  10. fleetfinder/locale/fr_FR/LC_MESSAGES/django.po +69 -55
  11. fleetfinder/locale/it_IT/LC_MESSAGES/django.po +30 -20
  12. fleetfinder/locale/ja/LC_MESSAGES/django.po +30 -20
  13. fleetfinder/locale/ko_KR/LC_MESSAGES/django.po +30 -20
  14. fleetfinder/locale/nl_NL/LC_MESSAGES/django.po +30 -20
  15. fleetfinder/locale/pl_PL/LC_MESSAGES/django.po +30 -20
  16. fleetfinder/locale/ru/LC_MESSAGES/django.po +30 -20
  17. fleetfinder/locale/sk/LC_MESSAGES/django.po +30 -20
  18. fleetfinder/locale/uk/LC_MESSAGES/django.mo +0 -0
  19. fleetfinder/locale/uk/LC_MESSAGES/django.po +52 -52
  20. fleetfinder/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  21. fleetfinder/locale/zh_Hans/LC_MESSAGES/django.po +33 -23
  22. fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.js +86 -0
  23. fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.min.js +2 -0
  24. fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.min.js.map +1 -0
  25. fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.js +154 -0
  26. fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.min.js +2 -0
  27. fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.min.js.map +1 -0
  28. fleetfinder/static/fleetfinder/js/fleetfinder.min.js +1 -1
  29. fleetfinder/static/fleetfinder/js/fleetfinder.min.js.map +1 -1
  30. fleetfinder/tasks.py +13 -5
  31. fleetfinder/templates/fleetfinder/base.html +11 -0
  32. fleetfinder/templates/fleetfinder/bundles/js/fleetfinder-js.html +6 -0
  33. fleetfinder/templates/fleetfinder/dashboard.html +8 -83
  34. fleetfinder/templates/fleetfinder/fleet-details.html +22 -150
  35. fleetfinder/tests/test_views.py +63 -0
  36. fleetfinder/views.py +32 -3
  37. {aa_fleetfinder-2.7.0.dist-info → aa_fleetfinder-2.7.2.dist-info}/WHEEL +0 -0
  38. {aa_fleetfinder-2.7.0.dist-info → aa_fleetfinder-2.7.2.dist-info}/licenses/LICENSE +0 -0
@@ -10,9 +10,9 @@ msgid ""
10
10
  msgstr ""
11
11
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
12
12
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
13
- "POT-Creation-Date: 2025-08-21 15:11+0200\n"
14
- "PO-Revision-Date: 2025-08-21 13:16+0000\n"
15
- "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
13
+ "POT-Creation-Date: 2025-08-23 16:51+0200\n"
14
+ "PO-Revision-Date: 2025-08-27 20:43+0000\n"
15
+ "Last-Translator: s0k0l -_- <salarysalo@gmail.com>\n"
16
16
  "Language-Team: Ukrainian <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/uk/>\n"
17
17
  "Language: uk\n"
18
18
  "MIME-Version: 1.0\n"
@@ -22,8 +22,8 @@ msgstr ""
22
22
  "X-Generator: Weblate 5.13\n"
23
23
 
24
24
  #: fleetfinder/__init__.py:9 fleetfinder/models.py:24
25
- #: fleetfinder/templates/fleetfinder/base.html:6
26
- #: fleetfinder/templates/fleetfinder/base.html:10
25
+ #: fleetfinder/templates/fleetfinder/base.html:7
26
+ #: fleetfinder/templates/fleetfinder/base.html:11
27
27
  #: fleetfinder/templates/fleetfinder/create-fleet.html:7
28
28
  #: fleetfinder/templates/fleetfinder/edit-fleet.html:7
29
29
  #: fleetfinder/templates/fleetfinder/fleet-details.html:7
@@ -126,49 +126,47 @@ msgstr "Редагувати флот"
126
126
  msgid "Fleet details"
127
127
  msgstr "Деталі флоту"
128
128
 
129
- #: fleetfinder/templates/fleetfinder/fleet-details.html:16
129
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:20
130
130
  msgid "Fleet composition"
131
131
  msgstr "Композиція флоту"
132
132
 
133
- #: fleetfinder/templates/fleetfinder/fleet-details.html:25
134
- #: fleetfinder/templates/fleetfinder/fleet-details.html:51
133
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:29
134
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:55
135
135
  msgid "Ship class"
136
136
  msgstr "Клас корабля"
137
137
 
138
- #: fleetfinder/templates/fleetfinder/fleet-details.html:26
138
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:30
139
139
  msgid "Count"
140
140
  msgstr "Кількість"
141
141
 
142
- #: fleetfinder/templates/fleetfinder/fleet-details.html:41
142
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:45
143
143
  msgid "Fleet members"
144
144
  msgstr "Члени флоту"
145
145
 
146
- #: fleetfinder/templates/fleetfinder/fleet-details.html:50
146
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:54
147
147
  msgid "Name"
148
148
  msgstr "Назва"
149
149
 
150
- #: fleetfinder/templates/fleetfinder/fleet-details.html:52
150
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:56
151
151
  msgid "System"
152
152
  msgstr "Система"
153
153
 
154
- #: fleetfinder/templates/fleetfinder/fleet-details.html:53
154
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:57
155
155
  msgid "Action"
156
156
  msgstr "Дія"
157
157
 
158
- #: fleetfinder/templates/fleetfinder/fleet-details.html:79
159
- #, fuzzy
160
- #| msgid "Fleet members"
158
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:80
161
159
  msgid "Fleet boss"
162
- msgstr "Члени флоту"
160
+ msgstr "Командир флоту"
163
161
 
164
- #: fleetfinder/templates/fleetfinder/fleet-details.html:80
162
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:81
165
163
  #: fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html:10
166
164
  msgid "Kick member from fleet"
167
- msgstr ""
165
+ msgstr "Кікнути пілота з флоту"
168
166
 
169
- #: fleetfinder/templates/fleetfinder/fleet-details.html:81
167
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:82
170
168
  msgid "An unknown error occurred."
171
- msgstr ""
169
+ msgstr "Невідома помилка."
172
170
 
173
171
  #: fleetfinder/templates/fleetfinder/join-fleet.html:6 fleetfinder/views.py:182
174
172
  msgid "Join fleet"
@@ -180,23 +178,19 @@ msgstr "Запрошення флоту"
180
178
 
181
179
  #: fleetfinder/templates/fleetfinder/join-fleet.html:22
182
180
  msgid "Please ensure you don't have any CSPA charges set on your characters, as this will prevent fleet invites from being sent."
183
- msgstr ""
181
+ msgstr "Будь ласка впевніться, що у вас нема CSPA на ваших чарах, оскільки це перешкоджатиме надсиланню Вам інвайтів."
184
182
 
185
183
  #: fleetfinder/templates/fleetfinder/join-fleet.html:24
186
- #, fuzzy
187
- #| msgid "Select the characters to invite"
188
184
  msgid "You can select multiple characters to invite them all at once."
189
- msgstr "Вибрати персонажа для запрошення"
185
+ msgstr "Ви можете обрати декілька персонажів та запросити їх одразу."
190
186
 
191
187
  #: fleetfinder/templates/fleetfinder/join-fleet.html:28
192
188
  msgid "The selected characters will receive a fleet invite in-game, which they can accept to join the fleet."
193
- msgstr ""
189
+ msgstr "Обраний персонаж отримає інвайт у флот в грі, який доєднає його до флоту."
194
190
 
195
191
  #: fleetfinder/templates/fleetfinder/join-fleet.html:35
196
- #, fuzzy
197
- #| msgid "Select the characters to invite"
198
192
  msgid "Please select the characters you want to invite:"
199
- msgstr "Вибрати персонажа для запрошення"
193
+ msgstr "Будь ласка, оберіть персонажів, яких хочете запросити:"
200
194
 
201
195
  #: fleetfinder/templates/fleetfinder/join-fleet.html:45
202
196
  msgid "Send fleet invites"
@@ -208,11 +202,11 @@ msgstr "Закрити"
208
202
 
209
203
  #: fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html:18
210
204
  msgid "Are you sure you want to kick this member from the fleet?"
211
- msgstr ""
205
+ msgstr "Ви дійсно хочете кікнути цього пілота з флоту?"
212
206
 
213
207
  #: fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html:27
214
208
  msgid "Error"
215
- msgstr ""
209
+ msgstr "Помилочка"
216
210
 
217
211
  #: fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html:36
218
212
  msgid "Cancel"
@@ -255,47 +249,53 @@ msgid "Edit fleet advert"
255
249
  msgstr "Редагувати оголошення флоту"
256
250
 
257
251
  #: fleetfinder/views.py:244
258
- #, fuzzy, python-brace-format
259
- #| msgid "<h4>Error!</h4><p>ESI returned the following error: {esi_error_message}</p>"
252
+ #, python-brace-format
260
253
  msgid "<h4>Error!</h4><p>There was an error creating the fleet: {error_detail}</p>"
261
- msgstr "<h4>Помилка!</h4><p>ESI повернув помилку: {esi_error_message}</p>"
254
+ msgstr "<h4>Помилка!</h4><p>Помилка створення флоту: {error_detail}</p>"
262
255
 
263
- #: fleetfinder/views.py:284
256
+ #: fleetfinder/views.py:284 fleetfinder/views.py:474
264
257
  msgid "<h4>Error!</h4><p>Fleet does not exist or is no longer available.</p>"
265
- msgstr ""
258
+ msgstr "<h4>Помилка!</h4><p>Флот не існує або більше не доступний.</p>"
266
259
 
267
260
  #: fleetfinder/views.py:438
268
- #, fuzzy, python-brace-format
269
- #| msgid "<h4>Error!</h4><p>ESI returned the following error: {esi_error_message}</p>"
261
+ #, python-brace-format
270
262
  msgid "<h4>Error!</h4><p>ESI returned the following error: {esi_error}</p>"
271
- msgstr "<h4>Помилка!</h4><p>ESI повернув помилку: {esi_error_message}</p>"
263
+ msgstr "<h4>Помилка!</h4><p>ESI повернув помилку: {esi_error}</p>"
272
264
 
273
265
  #: fleetfinder/views.py:446
274
266
  #, python-brace-format
275
267
  msgid "<h4>Error!</h4><p>There was an error creating the fleet: {ex}</p>"
276
- msgstr ""
268
+ msgstr "<h4>Помилка!</h4><p>Помилка створення флоту: {ex}</p>"
269
+
270
+ #: fleetfinder/views.py:510
271
+ #, python-brace-format
272
+ msgid "Fleet with ID {fleet_id} does not exist."
273
+ msgstr "Флот з цим ID {fleet_id} не існує."
277
274
 
278
- #: fleetfinder/views.py:517
275
+ #: fleetfinder/views.py:516
276
+ #, python-brace-format
277
+ msgid "Error retrieving fleet composition: {ex}"
278
+ msgstr "Помилка отримання композиції флоту: {ex}"
279
+
280
+ #: fleetfinder/views.py:546
279
281
  msgid "Method not allowed"
280
- msgstr ""
282
+ msgstr "Метод не дозволено"
281
283
 
282
- #: fleetfinder/views.py:527
284
+ #: fleetfinder/views.py:556
283
285
  msgid "Member ID required"
284
- msgstr ""
286
+ msgstr "Треба ID пілота"
285
287
 
286
- #: fleetfinder/views.py:546
287
- #, fuzzy
288
- #| msgid "Fleet invitation"
288
+ #: fleetfinder/views.py:575
289
289
  msgid "Fleet not found"
290
- msgstr "Запрошення флоту"
290
+ msgstr "Флот не знайдено"
291
291
 
292
- #: fleetfinder/views.py:550
292
+ #: fleetfinder/views.py:579
293
293
  msgid "Invalid request data"
294
- msgstr ""
294
+ msgstr "Не коректний запит"
295
295
 
296
- #: fleetfinder/views.py:554
296
+ #: fleetfinder/views.py:583
297
297
  msgid "Member not found in fleet"
298
- msgstr ""
298
+ msgstr "Пілот не знайдений у флоті"
299
299
 
300
300
  #~ msgid "Details"
301
301
  #~ msgstr "Деталі"
@@ -9,8 +9,8 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: AA Fleet Finder 2.2.1\n"
11
11
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-fleetfinder/issues\n"
12
- "POT-Creation-Date: 2025-08-21 15:11+0200\n"
13
- "PO-Revision-Date: 2025-08-21 13:16+0000\n"
12
+ "POT-Creation-Date: 2025-08-23 16:51+0200\n"
13
+ "PO-Revision-Date: 2025-09-16 16:43+0000\n"
14
14
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
15
15
  "Language-Team: Chinese (Simplified Han script) <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-fleetfinder/zh_Hans/>\n"
16
16
  "Language: zh_Hans\n"
@@ -18,11 +18,11 @@ msgstr ""
18
18
  "Content-Type: text/plain; charset=UTF-8\n"
19
19
  "Content-Transfer-Encoding: 8bit\n"
20
20
  "Plural-Forms: nplurals=1; plural=0;\n"
21
- "X-Generator: Weblate 5.13\n"
21
+ "X-Generator: Weblate 5.13.3\n"
22
22
 
23
23
  #: fleetfinder/__init__.py:9 fleetfinder/models.py:24
24
- #: fleetfinder/templates/fleetfinder/base.html:6
25
- #: fleetfinder/templates/fleetfinder/base.html:10
24
+ #: fleetfinder/templates/fleetfinder/base.html:7
25
+ #: fleetfinder/templates/fleetfinder/base.html:11
26
26
  #: fleetfinder/templates/fleetfinder/create-fleet.html:7
27
27
  #: fleetfinder/templates/fleetfinder/edit-fleet.html:7
28
28
  #: fleetfinder/templates/fleetfinder/fleet-details.html:7
@@ -125,47 +125,47 @@ msgstr "编辑舰队"
125
125
  msgid "Fleet details"
126
126
  msgstr "舰队细节"
127
127
 
128
- #: fleetfinder/templates/fleetfinder/fleet-details.html:16
128
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:20
129
129
  msgid "Fleet composition"
130
130
  msgstr "舰队组成"
131
131
 
132
- #: fleetfinder/templates/fleetfinder/fleet-details.html:25
133
- #: fleetfinder/templates/fleetfinder/fleet-details.html:51
132
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:29
133
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:55
134
134
  msgid "Ship class"
135
135
  msgstr "舰船等级"
136
136
 
137
- #: fleetfinder/templates/fleetfinder/fleet-details.html:26
137
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:30
138
138
  msgid "Count"
139
139
  msgstr "计数"
140
140
 
141
- #: fleetfinder/templates/fleetfinder/fleet-details.html:41
141
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:45
142
142
  msgid "Fleet members"
143
143
  msgstr "舰队成员"
144
144
 
145
- #: fleetfinder/templates/fleetfinder/fleet-details.html:50
145
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:54
146
146
  msgid "Name"
147
147
  msgstr "名字"
148
148
 
149
- #: fleetfinder/templates/fleetfinder/fleet-details.html:52
149
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:56
150
150
  msgid "System"
151
151
  msgstr "星系"
152
152
 
153
- #: fleetfinder/templates/fleetfinder/fleet-details.html:53
153
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:57
154
154
  msgid "Action"
155
155
  msgstr "行动"
156
156
 
157
- #: fleetfinder/templates/fleetfinder/fleet-details.html:79
157
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:80
158
158
  #, fuzzy
159
159
  #| msgid "Fleet members"
160
160
  msgid "Fleet boss"
161
161
  msgstr "舰队成员"
162
162
 
163
- #: fleetfinder/templates/fleetfinder/fleet-details.html:80
163
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:81
164
164
  #: fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html:10
165
165
  msgid "Kick member from fleet"
166
166
  msgstr ""
167
167
 
168
- #: fleetfinder/templates/fleetfinder/fleet-details.html:81
168
+ #: fleetfinder/templates/fleetfinder/fleet-details.html:82
169
169
  msgid "An unknown error occurred."
170
170
  msgstr ""
171
171
 
@@ -203,7 +203,7 @@ msgstr "发送舰队邀请"
203
203
 
204
204
  #: fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html:13
205
205
  msgid "Close"
206
- msgstr ""
206
+ msgstr "关闭"
207
207
 
208
208
  #: fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html:18
209
209
  msgid "Are you sure you want to kick this member from the fleet?"
@@ -259,7 +259,7 @@ msgstr "编辑舰队宣传信息"
259
259
  msgid "<h4>Error!</h4><p>There was an error creating the fleet: {error_detail}</p>"
260
260
  msgstr "<h4>错误!</h4><p>ESI返回如下错误:{esi_error_message}</p>"
261
261
 
262
- #: fleetfinder/views.py:284
262
+ #: fleetfinder/views.py:284 fleetfinder/views.py:474
263
263
  msgid "<h4>Error!</h4><p>Fleet does not exist or is no longer available.</p>"
264
264
  msgstr ""
265
265
 
@@ -274,25 +274,35 @@ msgstr "<h4>错误!</h4><p>ESI返回如下错误:{esi_error_message}</p>"
274
274
  msgid "<h4>Error!</h4><p>There was an error creating the fleet: {ex}</p>"
275
275
  msgstr ""
276
276
 
277
- #: fleetfinder/views.py:517
277
+ #: fleetfinder/views.py:510
278
+ #, python-brace-format
279
+ msgid "Fleet with ID {fleet_id} does not exist."
280
+ msgstr ""
281
+
282
+ #: fleetfinder/views.py:516
283
+ #, python-brace-format
284
+ msgid "Error retrieving fleet composition: {ex}"
285
+ msgstr ""
286
+
287
+ #: fleetfinder/views.py:546
278
288
  msgid "Method not allowed"
279
289
  msgstr ""
280
290
 
281
- #: fleetfinder/views.py:527
291
+ #: fleetfinder/views.py:556
282
292
  msgid "Member ID required"
283
293
  msgstr ""
284
294
 
285
- #: fleetfinder/views.py:546
295
+ #: fleetfinder/views.py:575
286
296
  #, fuzzy
287
297
  #| msgid "Fleet invitation"
288
298
  msgid "Fleet not found"
289
299
  msgstr "舰队邀请"
290
300
 
291
- #: fleetfinder/views.py:550
301
+ #: fleetfinder/views.py:579
292
302
  msgid "Invalid request data"
293
303
  msgstr ""
294
304
 
295
- #: fleetfinder/views.py:554
305
+ #: fleetfinder/views.py:583
296
306
  msgid "Member not found in fleet"
297
307
  msgstr ""
298
308
 
@@ -0,0 +1,86 @@
1
+ /* global aaFleetFinderSettings, aaFleetFinderSettingsOverride, objectDeepMerge, fetchGet, fleetfinderBootstrapTooltip, DataTable */
2
+
3
+ $(document).ready(() => {
4
+ 'use strict';
5
+
6
+ const fleetFinderSettings = objectDeepMerge(aaFleetFinderSettings, aaFleetFinderSettingsOverride);
7
+
8
+ const table_fleet_overview = $('#table_available-fleets');
9
+ let dataTable = null;
10
+
11
+ /**
12
+ * Initialize or update the datatable.
13
+ * If the table already exists, it will be updated with new data.
14
+ * If it does not exist, a new DataTable will be created.
15
+ *
16
+ * @param {Object} data - The fleet data to populate the table.
17
+ */
18
+ const initializeOrUpdateTable = (data) => {
19
+ if (dataTable) {
20
+ // Update existing table
21
+ dataTable.clear().rows.add(data).draw();
22
+ } else {
23
+ // Initialize new table
24
+ dataTable = table_fleet_overview.DataTable({
25
+ language: {
26
+ url: fleetFinderSettings.dataTables.languageUrl
27
+ },
28
+ data: data,
29
+ columns: [
30
+ {
31
+ data: 'fleet_commander',
32
+ render: {
33
+ _: 'html',
34
+ sort: 'sort'
35
+ }
36
+ },
37
+ {
38
+ data: 'fleet_name'
39
+ },
40
+ {
41
+ data: 'created_at',
42
+ },
43
+ {
44
+ data: 'actions',
45
+ className: 'text-end',
46
+ },
47
+ ],
48
+ columnDefs: [
49
+ {
50
+ targets: 2,
51
+ render: DataTable.render.date(
52
+ fleetFinderSettings.dataTables.datetimeFormat
53
+ )
54
+ },
55
+ {
56
+ orderable: false,
57
+ targets: [3]
58
+ },
59
+ ],
60
+ order: [[0, 'asc']],
61
+ paging: false,
62
+ initComplete: () => {
63
+ // Initialize Bootstrap tooltips
64
+ fleetfinderBootstrapTooltip({selector: '#table_available-fleets'});
65
+ }
66
+ });
67
+ }
68
+ };
69
+
70
+ /**
71
+ * Fetch and update fleet data
72
+ */
73
+ const fetchFleetData = () => {
74
+ fetchGet({url: fleetFinderSettings.dataTables.url.dashboard})
75
+ .then(initializeOrUpdateTable)
76
+ .catch((error) => {
77
+ console.error('Error fetching fleet data:', error);
78
+ });
79
+ };
80
+
81
+ // Initial load
82
+ fetchFleetData();
83
+
84
+ // Refresh every 30 seconds
85
+ setInterval(fetchFleetData, 30000);
86
+ });
@@ -0,0 +1,2 @@
1
+ $(document).ready(()=>{'use strict';const e=objectDeepMerge(aaFleetFinderSettings,aaFleetFinderSettingsOverride),a=$('#table_available-fleets');let t=null;const r=r=>{t?t.clear().rows.add(r).draw():t=a.DataTable({language:{url:e.dataTables.languageUrl},data:r,columns:[{data:'fleet_commander',render:{_:'html',sort:'sort'}},{data:'fleet_name'},{data:'created_at'},{data:'actions',className:'text-end'}],columnDefs:[{targets:2,render:DataTable.render.date(e.dataTables.datetimeFormat)},{orderable:!1,targets:[3]}],order:[[0,'asc']],paging:!1,initComplete:()=>{fleetfinderBootstrapTooltip({selector:'#table_available-fleets'})}})},l=()=>{fetchGet({url:e.dataTables.url.dashboard}).then(r).catch(e=>{console.error('Error fetching fleet data:',e)})};l(),setInterval(l,3e4)});
2
+ //# sourceMappingURL=fleetfinder-dashboard.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["$","document","ready","fleetFinderSettings","objectDeepMerge","aaFleetFinderSettings","aaFleetFinderSettingsOverride","table_fleet_overview","dataTable","initializeOrUpdateTable","data","clear","rows","add","draw","DataTable","language","url","dataTables","languageUrl","columns","render","_","sort","className","columnDefs","targets","date","datetimeFormat","orderable","order","paging","initComplete","fleetfinderBootstrapTooltip","selector","fetchFleetData","fetchGet","dashboard","then","catch","error","console","setInterval"],"sources":["fleetfinder-dashboard.js"],"mappings":"AAEAA,EAAEC,UAAUC,MAAM,KACd,aAEA,MAAMC,EAAsBC,gBAAgBC,sBAAuBC,+BAE7DC,EAAuBP,EAAE,2BAC/B,IAAIQ,EAAY,KAShB,MAAMC,EAA2BC,IACzBF,EAEAA,EAAUG,QAAQC,KAAKC,IAAIH,GAAMI,OAGjCN,EAAYD,EAAqBQ,UAAU,CACvCC,SAAU,CACNC,IAAKd,EAAoBe,WAAWC,aAExCT,KAAMA,EACNU,QAAS,CACL,CACIV,KAAM,kBACNW,OAAQ,CACJC,EAAG,OACHC,KAAM,SAGd,CACIb,KAAM,cAEV,CACIA,KAAM,cAEV,CACIA,KAAM,UACNc,UAAW,aAGnBC,WAAY,CACR,CACIC,QAAS,EACTL,OAAQN,UAAUM,OAAOM,KACrBxB,EAAoBe,WAAWU,iBAGvC,CACIC,WAAW,EACXH,QAAS,CAAC,KAGlBI,MAAO,CAAC,CAAC,EAAG,QACZC,QAAQ,EACRC,aAAc,KAEVC,4BAA4B,CAACC,SAAU,gCASjDC,EAAiB,KACnBC,SAAS,CAACnB,IAAKd,EAAoBe,WAAWD,IAAIoB,YAC7CC,KAAK7B,GACL8B,MAAOC,IACJC,QAAQD,MAAM,6BAA8BA,MAKxDL,IAGAO,YAAYP,EAAgB","ignoreList":[]}
@@ -0,0 +1,154 @@
1
+ /* global objectDeepMerge, aaFleetFinderSettings, aaFleetFinderSettingsOverride, fetchGet, fetchPost, fleetfinderBootstrapTooltip */
2
+
3
+ $(document).ready(() => {
4
+ 'use strict';
5
+
6
+ const fleetFinderSettings = objectDeepMerge(aaFleetFinderSettings, aaFleetFinderSettingsOverride);
7
+
8
+ /* DataTables
9
+ ------------------------------------------------------------------------- */
10
+ const elements = {
11
+ tableFleetMembers: $('#table-fleet-members'),
12
+ tableFleetComposition: $('#table-fleet-composition'),
13
+ kickFleetMemberModal: $('#kick-fleet-member'),
14
+ kickFleetMemberCharacterName: $('#kick-fleet-member-character-name'),
15
+ modalButtonConfirmKickFleetMember: $('#modal-button-confirm-kick-fleet-member'),
16
+ warning: $('#fleetfinder-fleet-details-warning')
17
+ };
18
+ const dataTableConfig = {
19
+ language: {
20
+ url: fleetFinderSettings.dataTables.languageUrl
21
+ },
22
+ paging: false,
23
+ destroy: true
24
+ };
25
+
26
+ const populateDatatables = () => {
27
+ fetchGet({
28
+ url: fleetFinderSettings.dataTables.url.fleetDetails,
29
+ })
30
+ .then((data) => {
31
+ if (data.error) {
32
+ elements.warning.removeClass('d-none').text(data.error);
33
+
34
+ return;
35
+ }
36
+
37
+ elements.warning.addClass('d-none');
38
+
39
+ elements.tableFleetMembers.DataTable({
40
+ ...dataTableConfig,
41
+ data: data.fleet_member,
42
+ columns: [
43
+ {
44
+ render: (data, type, row) => {
45
+ const fwIcon = '<i class="fa-solid fa-star"></i>';
46
+
47
+ return row.is_fleet_boss ? `${row.character_name} <sup data-bs-tooltip="aa-fleetfinder" title="${fleetFinderSettings.l10n.fleetBoss}"><small>${fwIcon}</small></sup>` : row.character_name;
48
+ }
49
+ },
50
+ {data: 'ship_type_name'},
51
+ {data: 'solar_system_name'},
52
+ {
53
+ render: (data, type, row) => {
54
+ const fwIcon = '<i class="fa-solid fa-user-minus"></i>';
55
+ const dataAttributes = Object.entries({
56
+ 'data-character-id': row.character_id,
57
+ 'data-character-name': row.character_name,
58
+ 'data-bs-toggle': 'modal',
59
+ 'data-bs-target': '#kick-fleet-member',
60
+ 'data-bs-tooltip': 'aa-fleetfinder'
61
+ }).map(([key, value]) => {
62
+ return `${key}="${value}"`;
63
+ }).join(' ');
64
+
65
+ return row.is_fleet_boss ? '' : `<button type="button" class="btn btn-sm btn-danger" ${dataAttributes} title="${fleetFinderSettings.l10n.kickMemberFromFleet}">${fwIcon}</button>`;
66
+ },
67
+ orderable: false,
68
+ searchable: false,
69
+ width: '50px',
70
+ className: 'text-end'
71
+ }
72
+ ],
73
+ createdRow: (row, data, rowIndex) => {
74
+ $(row).attr('data-row-id', rowIndex);
75
+ $(row).attr('data-character-id', data.character_id);
76
+ },
77
+ initComplete: () => {
78
+ // Initialize Bootstrap tooltips
79
+ fleetfinderBootstrapTooltip({selector: '#table-fleet-members'});
80
+ }
81
+ });
82
+
83
+ elements.tableFleetComposition.DataTable({
84
+ ...dataTableConfig,
85
+ data: data.fleet_composition,
86
+ columns: [
87
+ {data: 'ship_type_name'},
88
+ {data: 'number', className: 'text-right', width: '100px'}
89
+ ],
90
+ order: [[1, 'desc']]
91
+ });
92
+ })
93
+ .catch((error) => {
94
+ console.error('Error fetching fleet details:', error);
95
+ });
96
+ };
97
+
98
+ populateDatatables();
99
+
100
+ setInterval(populateDatatables, 30000);
101
+
102
+ /* Modals
103
+ ------------------------------------------------------------------------- */
104
+ // Handle the kick fleet member modal
105
+ elements.kickFleetMemberModal
106
+ .on('show.bs.modal', (event) => {
107
+ const button = $(event.relatedTarget);
108
+ const characterId = button.data('character-id');
109
+ const characterName = button.data('character-name');
110
+ const link = fleetFinderSettings.dataTables.url.kickFleetMember;
111
+
112
+ // Populate the modal content
113
+ $('#kick-fleet-member-character-name').text(characterName);
114
+
115
+ $('#modal-button-confirm-kick-fleet-member')
116
+ // Remove any previous click handlers to avoid multiple bindings
117
+ .off('click.kickMember')
118
+ // Bind the click event for the confirmation button
119
+ .on('click.kickMember', () => {
120
+ fetchPost({
121
+ url: link,
122
+ csrfToken: fleetFinderSettings.csrfToken,
123
+ payload: {
124
+ memberId: characterId
125
+ },
126
+ responseIsJson: true
127
+ })
128
+ .then(() => {
129
+ populateDatatables();
130
+
131
+ $('#kick-fleet-member').modal('hide');
132
+ })
133
+ .catch((error) => {
134
+ console.error('Error kicking fleet member:', error);
135
+
136
+ $('#kick-fleet-member .modal-kick-fleet-member-error')
137
+ .removeClass('d-none')
138
+ .find('.modal-kick-fleet-member-error-message')
139
+ .text(error || fleetFinderSettings.l10n.unknownError);
140
+ });
141
+ });
142
+ })
143
+ .on('hide.bs.modal', () => {
144
+ // Reset modal content
145
+ $('#kick-fleet-member-character-name').empty();
146
+ $('#kick-fleet-member .modal-kick-fleet-member-error')
147
+ .addClass('d-none')
148
+ .find('.modal-kick-fleet-member-error-message')
149
+ .empty();
150
+
151
+ // Clean up event handler
152
+ $('#modal-button-confirm-kick-fleet-member').off('click.kickMember');
153
+ });
154
+ });
@@ -0,0 +1,2 @@
1
+ $(document).ready(()=>{'use strict';const e=objectDeepMerge(aaFleetFinderSettings,aaFleetFinderSettingsOverride),t={tableFleetMembers:$('#table-fleet-members'),tableFleetComposition:$('#table-fleet-composition'),kickFleetMemberModal:$('#kick-fleet-member'),kickFleetMemberCharacterName:$('#kick-fleet-member-character-name'),modalButtonConfirmKickFleetMember:$('#modal-button-confirm-kick-fleet-member'),warning:$('#fleetfinder-fleet-details-warning')},a={language:{url:e.dataTables.languageUrl},paging:!1,destroy:!0},r=()=>{fetchGet({url:e.dataTables.url.fleetDetails}).then(r=>{r.error?t.warning.removeClass('d-none').text(r.error):(t.warning.addClass('d-none'),t.tableFleetMembers.DataTable({...a,data:r.fleet_member,columns:[{render:(t,a,r)=>{const l='<i class="fa-solid fa-star"></i>';return r.is_fleet_boss?`${r.character_name} <sup data-bs-tooltip="aa-fleetfinder" title="${e.l10n.fleetBoss}"><small>${l}</small></sup>`:r.character_name}},{data:'ship_type_name'},{data:'solar_system_name'},{render:(t,a,r)=>{const l='<i class="fa-solid fa-user-minus"></i>',m=Object.entries({'data-character-id':r.character_id,'data-character-name':r.character_name,'data-bs-toggle':'modal','data-bs-target':'#kick-fleet-member','data-bs-tooltip':'aa-fleetfinder'}).map(([e,t])=>`${e}="${t}"`).join(' ');return r.is_fleet_boss?'':`<button type="button" class="btn btn-sm btn-danger" ${m} title="${e.l10n.kickMemberFromFleet}">${l}</button>`},orderable:!1,searchable:!1,width:'50px',className:'text-end'}],createdRow:(e,t,a)=>{$(e).attr('data-row-id',a),$(e).attr('data-character-id',t.character_id)},initComplete:()=>{fleetfinderBootstrapTooltip({selector:'#table-fleet-members'})}}),t.tableFleetComposition.DataTable({...a,data:r.fleet_composition,columns:[{data:'ship_type_name'},{data:'number',className:'text-right',width:'100px'}],order:[[1,'desc']]}))}).catch(e=>{console.error('Error fetching fleet details:',e)})};r(),setInterval(r,3e4),t.kickFleetMemberModal.on('show.bs.modal',t=>{const a=$(t.relatedTarget),l=a.data('character-id'),m=a.data('character-name'),o=e.dataTables.url.kickFleetMember;$('#kick-fleet-member-character-name').text(m),$('#modal-button-confirm-kick-fleet-member').off('click.kickMember').on('click.kickMember',()=>{fetchPost({url:o,csrfToken:e.csrfToken,payload:{memberId:l},responseIsJson:!0}).then(()=>{r(),$('#kick-fleet-member').modal('hide')}).catch(t=>{console.error('Error kicking fleet member:',t),$('#kick-fleet-member .modal-kick-fleet-member-error').removeClass('d-none').find('.modal-kick-fleet-member-error-message').text(t||e.l10n.unknownError)})})}).on('hide.bs.modal',()=>{$('#kick-fleet-member-character-name').empty(),$('#kick-fleet-member .modal-kick-fleet-member-error').addClass('d-none').find('.modal-kick-fleet-member-error-message').empty(),$('#modal-button-confirm-kick-fleet-member').off('click.kickMember')})});
2
+ //# sourceMappingURL=fleetfinder-fleet-details.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["$","document","ready","fleetFinderSettings","objectDeepMerge","aaFleetFinderSettings","aaFleetFinderSettingsOverride","elements","tableFleetMembers","tableFleetComposition","kickFleetMemberModal","kickFleetMemberCharacterName","modalButtonConfirmKickFleetMember","warning","dataTableConfig","language","url","dataTables","languageUrl","paging","destroy","populateDatatables","fetchGet","fleetDetails","then","data","error","removeClass","text","addClass","DataTable","fleet_member","columns","render","type","row","fwIcon","is_fleet_boss","character_name","l10n","fleetBoss","dataAttributes","Object","entries","character_id","map","key","value","join","kickMemberFromFleet","orderable","searchable","width","className","createdRow","rowIndex","attr","initComplete","fleetfinderBootstrapTooltip","selector","fleet_composition","order","catch","console","setInterval","on","event","button","relatedTarget","characterId","characterName","link","kickFleetMember","off","fetchPost","csrfToken","payload","memberId","responseIsJson","modal","find","unknownError","empty"],"sources":["fleetfinder-fleet-details.js"],"mappings":"AAEAA,EAAEC,UAAUC,MAAM,KACd,aAEA,MAAMC,EAAsBC,gBAAgBC,sBAAuBC,+BAI7DC,EAAW,CACbC,kBAAmBR,EAAE,wBACrBS,sBAAuBT,EAAE,4BACzBU,qBAAsBV,EAAE,sBACxBW,6BAA8BX,EAAE,qCAChCY,kCAAmCZ,EAAE,2CACrCa,QAASb,EAAE,uCAETc,EAAkB,CACpBC,SAAU,CACNC,IAAKb,EAAoBc,WAAWC,aAExCC,QAAQ,EACRC,SAAS,GAGPC,EAAqB,KACvBC,SAAS,CACLN,IAAKb,EAAoBc,WAAWD,IAAIO,eAEvCC,KAAMC,IACCA,EAAKC,MACLnB,EAASM,QAAQc,YAAY,UAAUC,KAAKH,EAAKC,QAKrDnB,EAASM,QAAQgB,SAAS,UAE1BtB,EAASC,kBAAkBsB,UAAU,IAC9BhB,EACHW,KAAMA,EAAKM,aACXC,QAAS,CACL,CACIC,OAAQ,CAACR,EAAMS,EAAMC,KACjB,MAAMC,EAAS,mCAEf,OAAOD,EAAIE,cAAgB,GAAGF,EAAIG,+DAA+DnC,EAAoBoC,KAAKC,qBAAqBJ,kBAAyBD,EAAIG,iBAGpL,CAACb,KAAM,kBACP,CAACA,KAAM,qBACP,CACIQ,OAAQ,CAACR,EAAMS,EAAMC,KACjB,MAAMC,EAAS,yCACTK,EAAiBC,OAAOC,QAAQ,CAClC,oBAAqBR,EAAIS,aACzB,sBAAuBT,EAAIG,eAC3B,iBAAkB,QAClB,iBAAkB,qBAClB,kBAAmB,mBACpBO,IAAI,EAAEC,EAAKC,KACH,GAAGD,MAAQC,MACnBC,KAAK,KAER,OAAOb,EAAIE,cAAgB,GAAK,uDAAuDI,YAAyBtC,EAAoBoC,KAAKU,wBAAwBb,cAErKc,WAAW,EACXC,YAAY,EACZC,MAAO,OACPC,UAAW,aAGnBC,WAAY,CAACnB,EAAKV,EAAM8B,KACpBvD,EAAEmC,GAAKqB,KAAK,cAAeD,GAC3BvD,EAAEmC,GAAKqB,KAAK,oBAAqB/B,EAAKmB,eAE1Ca,aAAc,KAEVC,4BAA4B,CAACC,SAAU,4BAI/CpD,EAASE,sBAAsBqB,UAAU,IAClChB,EACHW,KAAMA,EAAKmC,kBACX5B,QAAS,CACL,CAACP,KAAM,kBACP,CAACA,KAAM,SAAU4B,UAAW,aAAcD,MAAO,UAErDS,MAAO,CAAC,CAAC,EAAG,cAGnBC,MAAOpC,IACJqC,QAAQrC,MAAM,gCAAiCA,MAI3DL,IAEA2C,YAAY3C,EAAoB,KAKhCd,EAASG,qBACJuD,GAAG,gBAAkBC,IAClB,MAAMC,EAASnE,EAAEkE,EAAME,eACjBC,EAAcF,EAAO1C,KAAK,gBAC1B6C,EAAgBH,EAAO1C,KAAK,kBAC5B8C,EAAOpE,EAAoBc,WAAWD,IAAIwD,gBAGhDxE,EAAE,qCAAqC4B,KAAK0C,GAE5CtE,EAAE,2CAEGyE,IAAI,oBAEJR,GAAG,mBAAoB,KACpBS,UAAU,CACN1D,IAAKuD,EACLI,UAAWxE,EAAoBwE,UAC/BC,QAAS,CACLC,SAAUR,GAEdS,gBAAgB,IAEftD,KAAK,KACFH,IAEArB,EAAE,sBAAsB+E,MAAM,UAEjCjB,MAAOpC,IACJqC,QAAQrC,MAAM,8BAA+BA,GAE7C1B,EAAE,qDACG2B,YAAY,UACZqD,KAAK,0CACLpD,KAAKF,GAASvB,EAAoBoC,KAAK0C,oBAI/DhB,GAAG,gBAAiB,KAEjBjE,EAAE,qCAAqCkF,QACvClF,EAAE,qDACG6B,SAAS,UACTmD,KAAK,0CACLE,QAGLlF,EAAE,2CAA2CyE,IAAI","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- const fleetfinderBootstrapTooltip=({selector:o="body",namespace:e="aa-fleetfinder"})=>{document.querySelectorAll(`${o} [data-bs-tooltip="${e}"]`).forEach(o=>new bootstrap.Tooltip(o))};
1
+ 'use strict';const fleetfinderBootstrapTooltip=({selector:t='body',namespace:e='aa-fleetfinder'})=>{document.querySelectorAll(`${t} [data-bs-tooltip="${e}"]`).forEach(t=>new bootstrap.Tooltip(t))};
2
2
  //# sourceMappingURL=fleetfinder.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["fleetfinder.js"],"names":["fleetfinderBootstrapTooltip","selector","namespace","document","querySelectorAll","forEach","bootstrap","Tooltip","tooltipTriggerEl"],"mappings":"AAiBA,MAAMA,4BAA8B,CAAA,CAAEC,SAAAA,EAAW,OAAQC,UAAAA,EAAY,gBAAiB,KAClFC,SAASC,oBAAoBH,uBAA8BC,KAAa,EACnEG,QAAQ,GACE,IAAIC,UAAUC,QAAQC,CAAgB,CAChD,CACT"}
1
+ {"version":3,"names":["fleetfinderBootstrapTooltip","selector","namespace","document","querySelectorAll","forEach","tooltipTriggerEl","bootstrap","Tooltip"],"sources":["fleetfinder.js"],"mappings":"AAGA,aAcA,MAAMA,4BAA8B,EAAEC,WAAW,OAAQC,YAAY,qBACjEC,SAASC,iBAAiB,GAAGH,uBAA8BC,OACtDG,QAASC,GACC,IAAIC,UAAUC,QAAQF","ignoreList":[]}