aa-fleetfinder 0.1.0a12__py3-none-any.whl → 3.0.0b2__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.
- aa_fleetfinder-3.0.0b2.dist-info/METADATA +820 -0
- aa_fleetfinder-3.0.0b2.dist-info/RECORD +86 -0
- {aa_fleetfinder-0.1.0a12.dist-info → aa_fleetfinder-3.0.0b2.dist-info}/WHEEL +1 -2
- fleetfinder/__init__.py +19 -0
- fleetfinder/app_settings.py +20 -0
- fleetfinder/apps.py +22 -0
- fleetfinder/auth_hooks.py +58 -0
- fleetfinder/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/cs_CZ/LC_MESSAGES/django.po +296 -0
- fleetfinder/locale/de/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/de/LC_MESSAGES/django.po +306 -0
- fleetfinder/locale/django.pot +303 -0
- fleetfinder/locale/es/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/es/LC_MESSAGES/django.po +319 -0
- fleetfinder/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/fr_FR/LC_MESSAGES/django.po +314 -0
- fleetfinder/locale/it_IT/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/it_IT/LC_MESSAGES/django.po +294 -0
- fleetfinder/locale/ja/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/ja/LC_MESSAGES/django.po +303 -0
- fleetfinder/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/ko_KR/LC_MESSAGES/django.po +337 -0
- fleetfinder/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/nl_NL/LC_MESSAGES/django.po +294 -0
- fleetfinder/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/pl_PL/LC_MESSAGES/django.po +298 -0
- fleetfinder/locale/ru/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/ru/LC_MESSAGES/django.po +319 -0
- fleetfinder/locale/sk/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/sk/LC_MESSAGES/django.po +294 -0
- fleetfinder/locale/uk/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/uk/LC_MESSAGES/django.po +310 -0
- fleetfinder/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- fleetfinder/locale/zh_Hans/LC_MESSAGES/django.po +319 -0
- fleetfinder/migrations/0001_initial.py +72 -0
- fleetfinder/migrations/0002_esi_error_handling_and_verbose_names.py +92 -0
- fleetfinder/migrations/0003_alter_fleet_fleet_commander_alter_fleet_groups_and_more.py +46 -0
- fleetfinder/migrations/__init__.py +0 -0
- fleetfinder/models.py +95 -0
- fleetfinder/providers.py +32 -0
- fleetfinder/static/fleetfinder/css/fleetfinder.css +31 -0
- fleetfinder/static/fleetfinder/css/fleetfinder.min.css +2 -0
- fleetfinder/static/fleetfinder/css/fleetfinder.min.css.map +1 -0
- fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.js +86 -0
- fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.min.js +2 -0
- fleetfinder/static/fleetfinder/js/fleetfinder-dashboard.min.js.map +1 -0
- fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.js +154 -0
- fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.min.js +2 -0
- fleetfinder/static/fleetfinder/js/fleetfinder-fleet-details.min.js.map +1 -0
- fleetfinder/static/fleetfinder/js/fleetfinder.js +23 -0
- fleetfinder/static/fleetfinder/js/fleetfinder.min.js +2 -0
- fleetfinder/static/fleetfinder/js/fleetfinder.min.js.map +1 -0
- fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.css +477 -0
- fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.min.css +2 -0
- fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/css/slimselect.min.css.map +1 -0
- fleetfinder/static/fleetfinder/libs/slim-select/2.6.0/js/slimselect.min.js +1 -0
- fleetfinder/tasks.py +554 -0
- fleetfinder/templates/fleetfinder/base.html +43 -0
- fleetfinder/templates/fleetfinder/bundles/css/fleetfinder-css.html +3 -0
- fleetfinder/templates/fleetfinder/bundles/css/slim-select-css.html +3 -0
- fleetfinder/templates/fleetfinder/bundles/js/fleetfinder-js.html +9 -0
- fleetfinder/templates/fleetfinder/bundles/js/slim-select-js.html +3 -0
- fleetfinder/templates/fleetfinder/create-fleet.html +42 -0
- fleetfinder/templates/fleetfinder/dashboard.html +53 -0
- fleetfinder/templates/fleetfinder/edit-fleet.html +42 -0
- fleetfinder/templates/fleetfinder/fleet-details.html +102 -0
- fleetfinder/templates/fleetfinder/join-fleet.html +68 -0
- fleetfinder/templates/fleetfinder/modals/kick-fleet-member.html +46 -0
- fleetfinder/templates/fleetfinder/partials/body/form-fleet-details.html +50 -0
- fleetfinder/templates/fleetfinder/partials/footer/app-translation-footer.html +11 -0
- fleetfinder/templates/fleetfinder/partials/header/header-nav-left.html +9 -0
- fleetfinder/templates/fleetfinder/partials/header/header-nav-right.html +18 -0
- fleetfinder/templatetags/__init__.py +3 -0
- fleetfinder/templatetags/fleetfinder.py +33 -0
- fleetfinder/tests/__init__.py +41 -0
- fleetfinder/tests/test_access.py +74 -0
- fleetfinder/tests/test_auth_hooks.py +79 -0
- fleetfinder/tests/test_settings.py +38 -0
- fleetfinder/tests/test_tasks.py +1116 -0
- fleetfinder/tests/test_templatetags.py +65 -0
- fleetfinder/tests/test_user_agent.py +88 -0
- fleetfinder/tests/test_views.py +1184 -0
- fleetfinder/tests/utils.py +58 -0
- fleetfinder/urls.py +45 -0
- fleetfinder/views.py +631 -0
- aa_fleetfinder-0.1.0a12.dist-info/METADATA +0 -50
- aa_fleetfinder-0.1.0a12.dist-info/RECORD +0 -5
- aa_fleetfinder-0.1.0a12.dist-info/top_level.txt +0 -1
- {aa_fleetfinder-0.1.0a12.dist-info → aa_fleetfinder-3.0.0b2.dist-info/licenses}/LICENSE +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@media all{.aa-fleetfinder .eve-character-portrait,.aa-fleetfinder .eve-type-icon{margin-right:.5rem}.aa-fleetfinder .table-vertical-middle td{vertical-align:middle}.aa-fleetfinder .ss-main{appearance:none;background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:var(--bs-body-color);font-size:1rem;font-weight:400;line-height:1.5;min-height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}}
|
|
2
|
+
/*# sourceMappingURL=fleetfinder.min.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["fleetfinder.css"],"names":[],"mappings":"AAAA,A,WACI,uC,CACA,8B,CACI,kB,CAGJ,yC,CACI,qB,CAMJ,wB,CACI,e,CACA,2B,CACA,0D,CACA,qC,CACA,0B,CACA,c,CACA,e,CACA,e,CACA,qC,CACA,sB,CACA,oE,CACA,Y","file":"fleetfinder.css","sourcesContent":["@media all {\n .aa-fleetfinder .eve-character-portrait,\n .aa-fleetfinder .eve-type-icon {\n margin-right: 0.5rem;\n }\n\n .aa-fleetfinder .table-vertical-middle td {\n vertical-align: middle;\n }\n\n /* Slim Select\n --------------------------------------------------------------------------------- */\n\n .aa-fleetfinder .ss-main {\n appearance: none;\n background-clip: padding-box;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n color: var(--bs-body-color);\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n min-height: calc(1.5em + .75rem + 2px);\n padding: .375rem .75rem;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n width: 100%;\n }\n\n /* END Slim Select\n --------------------------------------------------------------------------------- */\n}\n"]}
|
|
@@ -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":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* global bootstrap */
|
|
2
|
+
|
|
3
|
+
/* jshint -W097 */
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Bootstrap tooltip
|
|
8
|
+
*
|
|
9
|
+
* @param {string} [selector=body] Selector for the tooltip elements, defaults to 'body'
|
|
10
|
+
* to apply to all elements with the data-bs-tooltip attribute.
|
|
11
|
+
* Example: 'body', '.my-tooltip-class', '#my-tooltip-id'
|
|
12
|
+
* If you want to apply it to a specific element, use that element's selector.
|
|
13
|
+
* If you want to apply it to all elements with the data-bs-tooltip attribute,
|
|
14
|
+
* use 'body' or leave it empty.
|
|
15
|
+
* @param {string} [namespace=aa-fleetfinderl] Namespace for the tooltip
|
|
16
|
+
* @returns {void}
|
|
17
|
+
*/
|
|
18
|
+
const fleetfinderBootstrapTooltip = ({selector = 'body', namespace = 'aa-fleetfinder'}) => { // eslint-disable-line no-unused-vars
|
|
19
|
+
document.querySelectorAll(`${selector} [data-bs-tooltip="${namespace}"]`)
|
|
20
|
+
.forEach((tooltipTriggerEl) => {
|
|
21
|
+
return new bootstrap.Tooltip(tooltipTriggerEl);
|
|
22
|
+
});
|
|
23
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|