aa-ledger 1.0.4__py3-none-any.whl → 2.0.0__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.
Files changed (280) hide show
  1. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/METADATA +5 -6
  2. aa_ledger-2.0.0.dist-info/RECORD +267 -0
  3. ledger/__init__.py +2 -2
  4. ledger/admin.py +23 -18
  5. ledger/api/__init__.py +23 -7
  6. ledger/api/{ledger/admin.py → admin.py} +25 -31
  7. ledger/api/alliance.py +755 -0
  8. ledger/api/character.py +786 -0
  9. ledger/api/corporation.py +1141 -0
  10. ledger/api/{helpers.py → helpers/core.py} +33 -33
  11. ledger/api/helpers/icons.py +372 -0
  12. ledger/api/helpers/planetary_helper.py +354 -0
  13. ledger/api/planetary.py +354 -0
  14. ledger/api/schema.py +240 -15
  15. ledger/app_settings.py +11 -27
  16. ledger/auth_hooks.py +2 -2
  17. ledger/constants.py +50 -177
  18. ledger/decorators.py +2 -46
  19. ledger/forms.py +133 -39
  20. ledger/helpers/billboard.py +194 -144
  21. ledger/helpers/cache.py +105 -0
  22. ledger/helpers/discord.py +2 -4
  23. ledger/helpers/eveonline.py +160 -0
  24. ledger/helpers/ledger_data.py +23 -0
  25. ledger/helpers/ref_type.py +53 -78
  26. ledger/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  27. ledger/locale/cs_CZ/LC_MESSAGES/django.po +349 -193
  28. ledger/locale/de/LC_MESSAGES/django.mo +0 -0
  29. ledger/locale/de/LC_MESSAGES/django.po +528 -379
  30. ledger/locale/django.pot +721 -546
  31. ledger/locale/es/LC_MESSAGES/django.mo +0 -0
  32. ledger/locale/es/LC_MESSAGES/django.po +349 -194
  33. ledger/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  34. ledger/locale/fr_FR/LC_MESSAGES/django.po +349 -193
  35. ledger/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  36. ledger/locale/it_IT/LC_MESSAGES/django.po +349 -193
  37. ledger/locale/ja/LC_MESSAGES/django.mo +0 -0
  38. ledger/locale/ja/LC_MESSAGES/django.po +348 -193
  39. ledger/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
  40. ledger/locale/ko_KR/LC_MESSAGES/django.po +349 -193
  41. ledger/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  42. ledger/locale/nl_NL/LC_MESSAGES/django.po +349 -193
  43. ledger/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  44. ledger/locale/pl_PL/LC_MESSAGES/django.po +350 -193
  45. ledger/locale/ru/LC_MESSAGES/django.mo +0 -0
  46. ledger/locale/ru/LC_MESSAGES/django.po +348 -193
  47. ledger/locale/sk/LC_MESSAGES/django.mo +0 -0
  48. ledger/locale/sk/LC_MESSAGES/django.po +348 -193
  49. ledger/locale/uk/LC_MESSAGES/django.mo +0 -0
  50. ledger/locale/uk/LC_MESSAGES/django.po +348 -193
  51. ledger/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  52. ledger/locale/zh_Hans/LC_MESSAGES/django.po +348 -193
  53. ledger/managers/character_audit_manager.py +28 -20
  54. ledger/managers/character_journal_manager.py +185 -357
  55. ledger/managers/character_mining_manager.py +52 -26
  56. ledger/managers/character_planetary_manager.py +178 -136
  57. ledger/managers/corporation_audit_manager.py +36 -27
  58. ledger/managers/corporation_journal_manager.py +92 -56
  59. ledger/managers/general_manager.py +8 -7
  60. ledger/migrations/0018_remove_characterplanet_ledger_char_planet__58a5b6_idx_and_more.py +44 -0
  61. ledger/migrations/0019_rename_characteraudit_characterowner_and_more.py +48 -0
  62. ledger/models/__init__.py +5 -11
  63. ledger/models/characteraudit.py +101 -109
  64. ledger/models/corporationaudit.py +94 -49
  65. ledger/models/general.py +105 -211
  66. ledger/models/helpers/update_manager.py +302 -0
  67. ledger/models/planetary.py +60 -205
  68. ledger/providers.py +101 -0
  69. ledger/static/ledger/css/{ledger.css → aa-ledger.css} +54 -28
  70. ledger/static/ledger/js/aa-ledger.js +124 -0
  71. ledger/static/ledger/js/charts.js +25 -1
  72. ledger/static/ledger/js/view-alliance-ledger.js +383 -0
  73. ledger/static/ledger/js/view-character-ledger.js +388 -0
  74. ledger/static/ledger/js/view-corporation-ledger.js +402 -0
  75. ledger/static/ledger/js/view-planetary.js +492 -0
  76. ledger/static/ledger/libs/amCharts/5.14.4/js/flow.js +2 -0
  77. ledger/static/ledger/libs/amCharts/5.14.4/js/index.js +2 -0
  78. ledger/static/ledger/libs/amCharts/5.14.4/js/percent.js +2 -0
  79. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Animated.js +2 -0
  80. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Dark.js +2 -0
  81. ledger/static/ledger/libs/amCharts/5.14.4/js/xy.js +2 -0
  82. ledger/static/ledger/libs/datatables/2.3.5/css/dataTables.bootstrap5.css +610 -0
  83. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.bootstrap5.js +122 -0
  84. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.js +14127 -0
  85. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.bootstrap5.css +516 -0
  86. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.dataTables.css +529 -0
  87. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/columnControl.bootstrap5.js +73 -0
  88. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/dataTables.columnControl.js +3090 -0
  89. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/css/fixedHeader.bootstrap5.css +20 -0
  90. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/dataTables.fixedHeader.js +1203 -0
  91. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/fixedHeader.bootstrap5.js +59 -0
  92. ledger/tasks.py +157 -141
  93. ledger/templates/ledger/base.html +59 -21
  94. ledger/templates/ledger/bundles/aa-ledger-css.html +3 -0
  95. ledger/templates/ledger/bundles/aa-ledger-js.html +3 -0
  96. ledger/templates/ledger/bundles/view-alliance-ledger-js.html +14 -0
  97. ledger/templates/ledger/bundles/view-character-ledger-js.html +15 -0
  98. ledger/templates/ledger/bundles/view-character-planetary-css.html +3 -0
  99. ledger/templates/ledger/bundles/view-character-planetary-js.html +4 -0
  100. ledger/templates/ledger/bundles/view-corporation-ledger-js.html +15 -0
  101. ledger/templates/ledger/partials/modal/confirm.html +0 -1
  102. ledger/templates/ledger/partials/modal/request-accept-delete-alliance.html +38 -0
  103. ledger/templates/ledger/partials/modal/request-accept-delete-character.html +38 -0
  104. ledger/templates/ledger/partials/modal/request-accept-delete-corporation.html +38 -0
  105. ledger/templates/ledger/partials/modal/request-accept-switch-notification.html +38 -0
  106. ledger/templates/ledger/partials/modal/request-view-alliance-details.html +26 -0
  107. ledger/templates/ledger/partials/modal/request-view-character-details.html +26 -0
  108. ledger/templates/ledger/partials/modal/request-view-corporation-details.html +26 -0
  109. ledger/templates/ledger/partials/modal/request-view-extractor.html +32 -0
  110. ledger/templates/ledger/partials/modal/request-view-factory.html +31 -0
  111. ledger/templates/ledger/partials/{menu → navigation}/administration.html +8 -0
  112. ledger/templates/ledger/partials/{menu → navigation}/navigation.html +2 -2
  113. ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance_corporations.html +3 -3
  114. ledger/templates/ledger/partials/view-alliance-administration/dashboard.html +81 -0
  115. ledger/templates/ledger/partials/view-alliance-ledger/alliance-billboard.html +25 -0
  116. ledger/templates/ledger/partials/view-alliance-ledger/alliance-ledger-details.html +21 -0
  117. ledger/templates/ledger/partials/view-alliance-ledger/alliance-table.html +24 -0
  118. ledger/templates/ledger/partials/view-alliance-ledger/information/daily.html +18 -0
  119. ledger/templates/ledger/partials/view-alliance-ledger/information/hourly.html +18 -0
  120. ledger/templates/ledger/partials/view-alliance-ledger/information/summary.html +19 -0
  121. ledger/templates/ledger/partials/{administration → view-character-administration}/character.html +1 -9
  122. ledger/templates/ledger/partials/{administration → view-character-administration}/dashboard.html +0 -34
  123. ledger/templates/ledger/partials/view-character-ledger/character-billboard.html +25 -0
  124. ledger/templates/ledger/partials/view-character-ledger/character-ledger-details.html +21 -0
  125. ledger/templates/ledger/partials/view-character-ledger/character-table.html +25 -0
  126. ledger/templates/ledger/partials/view-character-ledger/information/daily.html +18 -0
  127. ledger/templates/ledger/partials/view-character-ledger/information/hourly.html +18 -0
  128. ledger/templates/ledger/partials/view-character-ledger/information/summary.html +19 -0
  129. ledger/templates/ledger/partials/view-character-planetary/extractor-table.html +24 -0
  130. ledger/templates/ledger/partials/view-character-planetary/factory-table.html +24 -0
  131. ledger/templates/ledger/partials/view-character-planetary/planetary-table.html +22 -0
  132. ledger/templates/ledger/partials/view-character-planetary/storage-table.html +23 -0
  133. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation.html +5 -13
  134. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation_characters.html +1 -1
  135. ledger/templates/ledger/partials/view-corporation-administration/dashboard.html +81 -0
  136. ledger/templates/ledger/partials/view-corporation-ledger/corporation-billboard.html +25 -0
  137. ledger/templates/ledger/partials/view-corporation-ledger/corporation-ledger-details.html +21 -0
  138. ledger/templates/ledger/partials/view-corporation-ledger/corporation-table.html +26 -0
  139. ledger/templates/ledger/partials/view-corporation-ledger/information/daily.html +18 -0
  140. ledger/templates/ledger/partials/view-corporation-ledger/information/hourly.html +18 -0
  141. ledger/templates/ledger/partials/view-corporation-ledger/information/summary.html +19 -0
  142. ledger/templates/ledger/view-administration.html +62 -0
  143. ledger/templates/ledger/view-alliance-administration.html +49 -0
  144. ledger/templates/ledger/view-alliance-ledger.html +72 -0
  145. ledger/templates/ledger/view-alliance-overview.html +131 -0
  146. ledger/templates/ledger/view-character-administration.html +42 -0
  147. ledger/templates/ledger/view-character-ledger.html +73 -0
  148. ledger/templates/ledger/view-character-overview.html +135 -0
  149. ledger/templates/ledger/view-character-planetary-overview.html +135 -0
  150. ledger/templates/ledger/view-character-planetary.html +73 -0
  151. ledger/templates/ledger/view-corporation-administration.html +42 -0
  152. ledger/templates/ledger/view-corporation-ledger.html +73 -0
  153. ledger/templates/ledger/view-corporation-overview.html +131 -0
  154. ledger/templatetags/ledger.py +3 -5
  155. ledger/tests/__init__.py +187 -0
  156. ledger/tests/test_admin.py +164 -68
  157. ledger/tests/test_auth_hook.py +31 -13
  158. ledger/tests/test_decarators.py +14 -79
  159. ledger/tests/test_discord_installed.py +0 -1
  160. ledger/tests/test_helpers/test_ledger_data.py +19 -0
  161. ledger/tests/test_managers/test_character_audit_manager.py +111 -69
  162. ledger/tests/test_managers/test_character_journal_manager.py +48 -208
  163. ledger/tests/test_managers/test_character_mining_manager.py +37 -16
  164. ledger/tests/test_managers/test_corporation_division_manager.py +66 -28
  165. ledger/tests/test_managers/test_corporation_journal_manager.py +39 -42
  166. ledger/tests/test_managers/test_general_manager.py +78 -18
  167. ledger/tests/test_managers/test_planetary_manager.py +73 -32
  168. ledger/tests/test_models/test_characteraudit.py +58 -74
  169. ledger/tests/test_models/test_characterminingledger.py +20 -26
  170. ledger/tests/test_models/test_characterwalletjournal.py +10 -33
  171. ledger/tests/test_models/test_corporationaudit.py +41 -35
  172. ledger/tests/test_models/test_corporationwalletjournal.py +35 -32
  173. ledger/tests/test_models/test_general.py +44 -11
  174. ledger/tests/test_models/test_planetary.py +14 -80
  175. ledger/tests/test_templatetags.py +2 -7
  176. ledger/tests/test_views/corporation/test_add_corp.py +16 -35
  177. ledger/tests/test_views/corporation/test_delete_corporation.py +66 -42
  178. ledger/tests/test_views/test_access.py +512 -545
  179. ledger/tests/test_views/test_add_ally.py +57 -46
  180. ledger/tests/test_views/test_add_char.py +21 -33
  181. ledger/tests/test_views/test_delete_character.py +24 -21
  182. ledger/tests/testdata/README_ESI_STUB.md +430 -0
  183. ledger/tests/testdata/esi_stub_openapi.py +511 -0
  184. ledger/tests/testdata/integrations/__init__.py +0 -0
  185. ledger/tests/testdata/{load_eveuniverse.py → integrations/eveuniverse.py} +0 -1
  186. ledger/tests/testdata/integrations/planetary.py +13 -0
  187. ledger/tests/testdata/json/factory.json +281 -0
  188. ledger/tests/testdata/json/inactive.json +281 -0
  189. ledger/tests/testdata/json/pins.json +175 -272
  190. ledger/tests/testdata/json/route.json +95 -528
  191. ledger/tests/testdata/test_esi_stub.py +468 -0
  192. ledger/tests/testdata/utils.py +601 -0
  193. ledger/thirdparty/charlink_hook.py +60 -30
  194. ledger/urls.py +0 -135
  195. ledger/views/alliance/add_ally.py +2 -4
  196. ledger/views/alliance/alliance_ledger.py +64 -147
  197. ledger/views/character/add_char.py +8 -10
  198. ledger/views/character/character_ledger.py +60 -126
  199. ledger/views/character/planetary.py +5 -98
  200. ledger/views/corporation/add_corp.py +10 -12
  201. ledger/views/corporation/corporation_ledger.py +65 -327
  202. ledger/views/index.py +92 -30
  203. aa_ledger-1.0.4.dist-info/RECORD +0 -236
  204. ledger/api/api_helper/planetary_helper.py +0 -107
  205. ledger/api/ledger/__init__.py +0 -7
  206. ledger/api/ledger/planetary.py +0 -231
  207. ledger/helpers/alliance.py +0 -317
  208. ledger/helpers/character.py +0 -251
  209. ledger/helpers/core.py +0 -665
  210. ledger/helpers/corporation.py +0 -427
  211. ledger/helpers/data_exporter.py +0 -452
  212. ledger/static/ledger/js/planetary-confirm.js +0 -66
  213. ledger/static/ledger/js/planetary.js +0 -143
  214. ledger/templates/ledger/admin.html +0 -43
  215. ledger/templates/ledger/allyledger/admin/alliance_administration.html +0 -46
  216. ledger/templates/ledger/allyledger/admin/alliance_overview.html +0 -108
  217. ledger/templates/ledger/allyledger/alliance_ledger.html +0 -86
  218. ledger/templates/ledger/bundles/character-ledger-bundles.html +0 -66
  219. ledger/templates/ledger/bundles/corporation-ledger-bundles.html +0 -75
  220. ledger/templates/ledger/bundles/ledger-bundles.html +0 -23
  221. ledger/templates/ledger/bundles/ledger-css.html +0 -3
  222. ledger/templates/ledger/bundles/planetary-bundles.html +0 -50
  223. ledger/templates/ledger/bundles/table-css.html +0 -3
  224. ledger/templates/ledger/charledger/admin/character_administration.html +0 -39
  225. ledger/templates/ledger/charledger/admin/character_overview.html +0 -106
  226. ledger/templates/ledger/charledger/character_ledger.html +0 -94
  227. ledger/templates/ledger/charledger/planetary/admin/planetary_overview.html +0 -123
  228. ledger/templates/ledger/charledger/planetary/planetary_ledger.html +0 -54
  229. ledger/templates/ledger/corpledger/admin/corporation_administration.html +0 -39
  230. ledger/templates/ledger/corpledger/admin/corporation_overview.html +0 -108
  231. ledger/templates/ledger/corpledger/corporation_ledger.html +0 -129
  232. ledger/templates/ledger/data-export.html +0 -78
  233. ledger/templates/ledger/error.html +0 -31
  234. ledger/templates/ledger/partials/form/error-message.html +0 -1
  235. ledger/templates/ledger/partials/information/daily.html +0 -56
  236. ledger/templates/ledger/partials/information/day.html +0 -48
  237. ledger/templates/ledger/partials/information/error.html +0 -8
  238. ledger/templates/ledger/partials/information/hourly.html +0 -53
  239. ledger/templates/ledger/partials/information/summary.html +0 -88
  240. ledger/templates/ledger/partials/information/view_character_content.html +0 -35
  241. ledger/templates/ledger/partials/modal/switchalarm_confirm.html +0 -39
  242. ledger/templates/ledger/partials/modal/view_extractor.html +0 -48
  243. ledger/templates/ledger/partials/modal/view_factory.html +0 -123
  244. ledger/templates/ledger/partials/table/char-ledger.html +0 -85
  245. ledger/templates/ledger/partials/table/corp-ledger.html +0 -66
  246. ledger/templates/ledger/partials/table/planetary.html +0 -18
  247. ledger/templates/ledger/partials/thirdparty/billboard.html +0 -22
  248. ledger/templates/ledger/partials/view/card.html +0 -160
  249. ledger/templates/ledger/permission.html +0 -2
  250. ledger/tests/test_helpers/test_billboard.py +0 -11
  251. ledger/tests/test_helpers/test_data_exporter.py +0 -207
  252. ledger/tests/test_tasks.py +0 -282
  253. ledger/tests/test_view_helpers/test_core.py +0 -47
  254. ledger/tests/test_views/corporation/test_corporation.py +0 -267
  255. ledger/tests/test_views/test_planetary.py +0 -137
  256. ledger/tests/testdata/esi_stub.py +0 -109
  257. ledger/tests/testdata/esi_stub_migration.py +0 -80
  258. ledger/tests/testdata/generate_characteraudit.py +0 -106
  259. ledger/tests/testdata/generate_corporationaudit.py +0 -74
  260. ledger/tests/testdata/generate_events.py +0 -31
  261. ledger/tests/testdata/generate_miningledger.py +0 -13
  262. ledger/tests/testdata/generate_planets.py +0 -48
  263. ledger/tests/testdata/generate_walletjournal.py +0 -42
  264. ledger/tests/testdata/json/czarno-pins.json +0 -240
  265. ledger/tests/testdata/json/czarno-routes.json +0 -165
  266. ledger/tests/testdata/json/pins2.json +0 -538
  267. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/WHEEL +0 -0
  268. {aa_ledger-1.0.4.dist-info → aa_ledger-2.0.0.dist-info}/licenses/LICENSE +0 -0
  269. /ledger/{tests/test_view_helpers → api/helpers}/__init__.py +0 -0
  270. /ledger/templates/ledger/bundles/{ally-administration-bundles.html → view-alliance-administration-js.html} +0 -0
  271. /ledger/templates/ledger/bundles/{char-administration-bundles.html → view-character-administration-js.html} +0 -0
  272. /ledger/templates/ledger/bundles/{corp-administration-bundles.html → view-corporation-administration-js.html} +0 -0
  273. /ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance.html +0 -0
  274. /ledger/tests/testdata/{esi.json → esi_test_data.json} +0 -0
  275. /ledger/tests/testdata/{allianceauth.json → integrations/allianceauth.json} +0 -0
  276. /ledger/tests/testdata/{load_allianceauth.py → integrations/allianceauth.py} +0 -0
  277. /ledger/tests/testdata/{eveentity.json → integrations/eveentity.json} +0 -0
  278. /ledger/tests/testdata/{load_eveentity.py → integrations/eveentity.py} +0 -0
  279. /ledger/tests/testdata/{eveuniverse.json → integrations/eveuniverse.json} +0 -0
  280. /ledger/tests/testdata/{planetary.json → integrations/planetary.json} +0 -0
@@ -6,7 +6,10 @@
6
6
  /* global am5xy */
7
7
  /* global entityType */
8
8
 
9
- // Function to dispose of a root instance if it exists
9
+ /**
10
+ * Helper function to dispose existing Root instances
11
+ * @param {*} rootId
12
+ */
10
13
  function disposeRoot(rootId) {
11
14
  const rootElement = am5.registry.rootElements.find(root => root.dom.id === rootId);
12
15
  if (rootElement) {
@@ -14,6 +17,13 @@ function disposeRoot(rootId) {
14
17
  }
15
18
  }
16
19
 
20
+ /**
21
+ * Helper function to load or create a chart
22
+ * @param {*} div - div id
23
+ * @param {*} data - chart data
24
+ * @param {*} chart - chart type
25
+ * @returns {boolean|object} - returns true or the created amChart object
26
+ */
17
27
  function load_or_create_Chart(div, data, chart) {
18
28
  // Dispose existing Root instances
19
29
  disposeRoot(div);
@@ -43,6 +53,13 @@ function initCharts(data) {
43
53
  const chart = load_or_create_Chart(rootChartId, billboard.charts, 'chart');
44
54
  }
45
55
 
56
+ /**
57
+ * Helper function to create a chord chart
58
+ * @param {*} root - am5 Root object
59
+ * @param {*} data - chart data
60
+ * @param {*} id - div id
61
+ * @returns {object} - amChart object
62
+ */
46
63
  function createChordChart(root, data, id) {
47
64
  if (!data || !Array.isArray(data.series)) {
48
65
  console.log('Data is not in the expected format:', data);
@@ -124,6 +141,13 @@ function createChordChart(root, data, id) {
124
141
  series.appear(1000, 100);
125
142
  }
126
143
 
144
+ /**
145
+ * Helper function to create a bar chart
146
+ * @param {*} root - am5 Root object
147
+ * @param {*} data - chart data
148
+ * @param {*} id - div id
149
+ * @returns {object} - amChart object
150
+ */
127
151
  function createRattingBarChart(root, data, id) {
128
152
  if (!data || !Array.isArray(data.series)) {
129
153
  console.debug('Data is not in the expected format:', data);
@@ -0,0 +1,383 @@
1
+ /* global aaLedgerSettings, aaLedgerSettingsOverride, _bootstrapTooltip, _bootstrapPopOver, fetchGet, fetchPost, bootstrap, DataTable, moment, numberFormatter, load_or_create_Chart */
2
+
3
+ $(document).ready(() => {
4
+ /**
5
+ * Table :: IDs
6
+ */
7
+ const allianceTable = $('#alliance-ledger-table');
8
+ const allianceSummaryTable = $('#alliance-ledger-summary-table');
9
+ const allianceDailyTable = $('#alliance-ledger-daily-table');
10
+ const allianceHourlyTable = $('#alliance-ledger-hourly-table');
11
+
12
+ /**
13
+ * Helper: format currency with classes
14
+ */
15
+ const _formatCurrencySpan = (value, positiveClass = 'text-success') => {
16
+ const cls = value > 0 ? positiveClass : (value < 0 ? 'text-danger' : '');
17
+ console.log(aaLedgerSettings.locale);
18
+ const formatted = numberFormatter({
19
+ value: value,
20
+ language: aaLedgerSettings.locale,
21
+ options: {
22
+ style: 'currency',
23
+ currency: 'ISK',
24
+ maximumFractionDigits: 0
25
+ }
26
+ });
27
+ return `<span class="${cls}">${formatted}</span>`;
28
+ };
29
+
30
+ /**
31
+ * Modals :: IDs
32
+ */
33
+ const modalRequestViewCorporationLedgerDetails = $('#ledger-view-alliance-ledger-details');
34
+
35
+ /**
36
+ * Chart :: IDs
37
+ */
38
+ const chartChord = 'chord-chart';
39
+ const chartXY = 'xy-chart';
40
+
41
+ fetchGet({
42
+ url: aaLedgerSettings.url.AllianceLedger,
43
+ })
44
+ .then((data) => {
45
+ if (data) {
46
+ /**
47
+ * DataTable for Corporation Ledger
48
+ * @type {*|jQuery}
49
+ */
50
+ const allianceDataTable = new DataTable(allianceTable, {
51
+ data: data.corporations,
52
+ language: aaLedgerSettings.dataTables.language,
53
+ layout: aaLedgerSettings.dataTables.layout,
54
+ ordering: aaLedgerSettings.dataTables.ordering,
55
+ columnControl: aaLedgerSettings.dataTables.columnControl,
56
+ order: [[5, 'desc']],
57
+ columnDefs: [
58
+ {
59
+ orderable: false,
60
+ targets: 6,
61
+ columnControl: [
62
+ {target: 0, content: []},
63
+ {target: 1, content: []}
64
+ ]
65
+ },
66
+ {
67
+ targets: [1,2,3,4,5],
68
+ type: 'num'
69
+ },
70
+ {
71
+ className: 'border-start',
72
+ targets: 5
73
+ }
74
+ ],
75
+ columns: [
76
+ {
77
+ data: {
78
+ display: (data) => data.corporation.icon + ' ' + data.corporation.entity_name + ' ' + data.corporation.popover,
79
+ sort: (data) => data.corporation.entity_name,
80
+ filter: (data) => data.corporation.entity_name
81
+ }
82
+ },
83
+ {
84
+ data: {
85
+ display: (data) => _formatCurrencySpan(data.ledger.bounty),
86
+ sort: (data) => data.ledger.bounty,
87
+ filter: (data) => data.ledger.bounty
88
+ }
89
+ },
90
+ {
91
+ data: {
92
+ display: (data) => _formatCurrencySpan(data.ledger.ess),
93
+ sort: (data) => data.ledger.ess,
94
+ filter: (data) => data.ledger.ess
95
+ }
96
+ },
97
+ {
98
+ data: {
99
+ display: (data) => _formatCurrencySpan(data.ledger.miscellaneous),
100
+ sort: (data) => data.ledger.miscellaneous,
101
+ filter: (data) => data.ledger.miscellaneous
102
+ }
103
+ },
104
+ {
105
+ data: {
106
+ display: (data) => _formatCurrencySpan(data.ledger.costs),
107
+ sort: (data) => data.ledger.costs,
108
+ filter: (data) => data.ledger.costs
109
+ }
110
+ },
111
+ {
112
+ data: {
113
+ display: (data) => _formatCurrencySpan(data.ledger.total),
114
+ sort: (data) => data.ledger.total,
115
+ filter: (data) => data.ledger.total
116
+ }
117
+ },
118
+ {
119
+ data: 'actions'
120
+ }
121
+ ],
122
+ initComplete: function() {
123
+ _bootstrapTooltip({selector: '#alliance-ledger-table'});
124
+ _bootstrapPopOver({selector: '#alliance-ledger-table'});
125
+ },
126
+ drawCallback: function () {
127
+ _bootstrapTooltip({selector: '#alliance-ledger-table'});
128
+ _bootstrapPopOver({selector: '#alliance-ledger-table'});
129
+ },
130
+ });
131
+
132
+ // Insert totals footer for alliance table
133
+ allianceTable.find('tfoot').html(data.information.footer_html);
134
+
135
+ /**
136
+ * Charts for Corporation Ledger
137
+ */
138
+ load_or_create_Chart(chartXY, data.billboard.xy_chart, 'bar');
139
+ load_or_create_Chart(chartChord, data.billboard.chord_chart, 'chart');
140
+ }
141
+ })
142
+ .catch((error) => {
143
+ console.error('Error fetching Corporation Ledger data:', error);
144
+ });
145
+
146
+ /**
147
+ * Modal :: View Ledger Details :: Table :: Summary Table DataTable
148
+ * Initialize DataTable for View Ledger Details Modal :: Summary Table
149
+ * @type {*|jQuery}
150
+ */
151
+ const summaryDataTable = new DataTable(allianceSummaryTable, {
152
+ data: null, // Loaded via API on modal open
153
+ language: aaLedgerSettings.dataTables.language,
154
+ layout: aaLedgerSettings.dataTables.layout,
155
+ ordering: aaLedgerSettings.dataTables.ordering,
156
+ columnControl: aaLedgerSettings.dataTables.columnControl,
157
+ order: [[0, 'asc']],
158
+
159
+ columnDefs: [
160
+ {
161
+ orderable: false,
162
+ targets: [2],
163
+ columnControl: [
164
+ {target: 0, content: []},
165
+ {target: 1, content: []}
166
+ ]
167
+ },
168
+ {
169
+ targets: [1],
170
+ type: 'num'
171
+ },
172
+ ],
173
+ columns: [
174
+ {
175
+ data: {
176
+ display: (data) => data.name,
177
+ sort: (data) => data.name,
178
+ filter: (data) => data.name
179
+ }
180
+ },
181
+ {
182
+ data: {
183
+ display: (data) => _formatCurrencySpan(data.amount),
184
+ sort: (data) => data.amount,
185
+ filter: (data) => data.amount
186
+ }
187
+ },
188
+ {
189
+ data:
190
+ {
191
+ display: (data) => data.ref_types,
192
+ }
193
+ },
194
+ ],
195
+ initComplete: function () {
196
+ _bootstrapTooltip({selector: '#alliance-ledger-summary-table'});
197
+ _bootstrapPopOver({selector: '#alliance-ledger-summary-table'});
198
+ },
199
+ drawCallback: function () {
200
+ _bootstrapTooltip({selector: '#alliance-ledger-summary-table'});
201
+ _bootstrapPopOver({selector: '#alliance-ledger-summary-table'});
202
+ },
203
+ });
204
+
205
+ /**
206
+ * Modal :: View Ledger Details :: Table :: Summary Table DataTable
207
+ * Initialize DataTable for View Ledger Details Modal :: Summary Table
208
+ * @type {*|jQuery}
209
+ */
210
+ const dailyDataTable = new DataTable(allianceDailyTable, {
211
+ data: null, // Loaded via API on modal open
212
+ language: aaLedgerSettings.dataTables.language,
213
+ layout: aaLedgerSettings.dataTables.layout,
214
+ ordering: aaLedgerSettings.dataTables.ordering,
215
+ columnControl: aaLedgerSettings.dataTables.columnControl,
216
+ order: [[0, 'asc']],
217
+ columnDefs: [
218
+ {
219
+ orderable: false,
220
+ targets: [2],
221
+ columnControl: [
222
+ {target: 0, content: []},
223
+ {target: 1, content: []}
224
+ ]
225
+ },
226
+ {
227
+ targets: [1],
228
+ type: 'num'
229
+ }
230
+ ],
231
+ columns: [
232
+ {
233
+ data: {
234
+ display: (data) => data.name,
235
+ sort: (data) => data.name,
236
+ filter: (data) => data.name
237
+ }
238
+ },
239
+ {
240
+ data: {
241
+ display: (data) => _formatCurrencySpan(data.amount),
242
+ sort: (data) => data.amount,
243
+ filter: (data) => data.amount
244
+ }
245
+ },
246
+ {
247
+ data:
248
+ {
249
+ display: (data) => data.ref_types,
250
+ }
251
+ },
252
+ ],
253
+ initComplete: function () {
254
+ _bootstrapTooltip({selector: '#alliance-ledger-daily-table'});
255
+ _bootstrapPopOver({selector: '#alliance-ledger-daily-table'});
256
+ },
257
+ drawCallback: function () {
258
+ _bootstrapTooltip({selector: '#alliance-ledger-daily-table'});
259
+ _bootstrapPopOver({selector: '#alliance-ledger-daily-table'});
260
+ },
261
+ });
262
+
263
+ /**
264
+ * Modal :: View Ledger Details :: Table :: Summary Table DataTable
265
+ * Initialize DataTable for View Ledger Details Modal :: Summary Table
266
+ * @type {*|jQuery}
267
+ */
268
+ const hourlyDataTable = new DataTable(allianceHourlyTable, {
269
+ data: null, // Loaded via API on modal open
270
+ language: aaLedgerSettings.dataTables.language,
271
+ layout: aaLedgerSettings.dataTables.layout,
272
+ ordering: aaLedgerSettings.dataTables.ordering,
273
+ columnControl: aaLedgerSettings.dataTables.columnControl,
274
+ order: [[0, 'asc']],
275
+ columnDefs: [
276
+ {
277
+ orderable: false,
278
+ targets: [2],
279
+ columnControl: [
280
+ {target: 0, content: []},
281
+ {target: 1, content: []}
282
+ ]
283
+ },
284
+ {
285
+ targets: [1],
286
+ type: 'num'
287
+ }
288
+ ],
289
+ columns: [
290
+ {
291
+ data: {
292
+ display: (data) => data.name,
293
+ sort: (data) => data.name,
294
+ filter: (data) => data.name
295
+ }
296
+ },
297
+ {
298
+ data: {
299
+ display: (data) => _formatCurrencySpan(data.amount),
300
+ sort: (data) => data.amount,
301
+ filter: (data) => data.amount
302
+ }
303
+ },
304
+ {
305
+ data:
306
+ {
307
+ display: (data) => data.ref_types,
308
+ }
309
+ },
310
+ ],
311
+ initComplete: function () {
312
+ _bootstrapTooltip({selector: '#alliance-ledger-hourly-table'});
313
+ _bootstrapPopOver({selector: '#alliance-ledger-hourly-table'});
314
+ },
315
+ drawCallback: function () {
316
+ _bootstrapTooltip({selector: '#alliance-ledger-hourly-table'});
317
+ _bootstrapPopOver({selector: '#alliance-ledger-hourly-table'});
318
+ },
319
+ });
320
+
321
+ /**
322
+ * Load Corporation Ledger Details Data into DataTables in the 'ledger-view-alliance-ledger-details' Modal
323
+ * @param {Object} tableData :: Data Object containing Summary, Daily, and Hourly Data Arrays
324
+ */
325
+
326
+ const _loadCorporationDetails = (tableData) => {
327
+ const dtSummary = allianceSummaryTable.DataTable();
328
+ dtSummary.clear().rows.add(tableData.summary).draw();
329
+ allianceSummaryTable.find('tfoot').html(tableData.total.summary);
330
+
331
+ const dtDaily = allianceDailyTable.DataTable();
332
+ dtDaily.clear().rows.add(tableData.daily).draw();
333
+ allianceDailyTable.find('tfoot').html(tableData.total.daily);
334
+
335
+ const dtHourly = allianceHourlyTable.DataTable();
336
+ dtHourly.clear().rows.add(tableData.hourly).draw();
337
+ allianceHourlyTable.find('tfoot').html(tableData.total.hourly);
338
+ };
339
+
340
+ /**
341
+ * Clear related DataTables on Close for the 'ledger-view-alliance-ledger-details' Modal
342
+ */
343
+ const _clearCorporationDetails = () => {
344
+ const dtSummary = allianceSummaryTable.DataTable();
345
+ dtSummary.clear().draw();
346
+ allianceSummaryTable.find('tfoot').html('');
347
+
348
+ const dtDaily = allianceDailyTable.DataTable();
349
+ dtDaily.clear().draw();
350
+ allianceDailyTable.find('tfoot').html('');
351
+
352
+ const dtHourly = allianceHourlyTable.DataTable();
353
+ dtHourly.clear().draw();
354
+ allianceHourlyTable.find('tfoot').html('');
355
+ };
356
+
357
+ /**
358
+ * Modal :: Corporation Ledger :: Table :: Info Button Click Handler
359
+ * @const {_loadCorporationDetails} :: Load Corporation Ledger Details Data into DataTables in the 'ledger-view-alliance-ledger-details' Modal
360
+ * @const {_clearCorporationDetails} :: Clear related DataTables on Close
361
+ * When opening, fetch data from the API Endpoint defined in the button's data-action attribute
362
+ * and load it into the Corporation Ledger Details DataTables related to the 'ledger-view-alliance-ledger-details' Modal
363
+ */
364
+ modalRequestViewCorporationLedgerDetails.on('show.bs.modal', (event) => {
365
+ const button = $(event.relatedTarget);
366
+ const url = button.data('action');
367
+
368
+ fetchGet({
369
+ url: url,
370
+ })
371
+ .then((data) => {
372
+ if (data) {
373
+ _loadCorporationDetails(data);
374
+ }
375
+ })
376
+ .catch((error) => {
377
+ console.error('Error fetching Payments Details Modal:', error);
378
+ });
379
+ })
380
+ .on('hide.bs.modal', () => {
381
+ _clearCorporationDetails();
382
+ });
383
+ });