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
@@ -1 +0,0 @@
1
- <div class="badge bg-danger d-none" id="modal-error-message"></div>
@@ -1,56 +0,0 @@
1
- {% load i18n %}
2
- {% load humanize %}
3
- {% load evelinks %}
4
-
5
- <!--##############################DAILY#######################-->
6
- <div class="tab-pane panel panel-default" id="tab-daily">
7
- <div class="card-body modal-tab">
8
- {% include "ledger/partials/information/day.html" with character=character mode=mode %}
9
-
10
- {% for key, label in character.income_types %}
11
- {% with value=character|get_item:key %}
12
- {% if value %}
13
- <div class="row description-row">
14
- <div class="col-sm-6 {% if label == 'Not Defined Category' %}text-warning{% endif %}">{% trans "Avg." %} {{ label }} {% trans "per Day" %}:</div>
15
- <div class='col-sm-4 text-end'>
16
- <span class="{% if not key == 'mining_income' %}text-success{% else %}text-info{% endif %}">
17
- {{ value.average_day|floatformat:0|intcomma }}
18
- </span> ISK
19
- </div>
20
- </div>
21
- {% endif %}
22
- {% endwith %}
23
- {% endfor %}
24
-
25
- <!--############################## Costs #######################-->
26
-
27
- {% for key, label in character.cost_types %}
28
- {% with value=character|get_item:key %}
29
- {% if value %}
30
- <div class="row description-row">
31
- <div class="col-sm-6 {% if label == 'Not Defined Category' %}text-warning{% endif %}">{% trans "Avg." %} {{ label }} {% trans "Cost per Day" %}:</div>
32
- <div class='col-sm-4 text-end'>
33
- <span class="text-danger">{{ value.average_day|floatformat:0|intcomma }}</span> ISK
34
- </div>
35
- </div>
36
- {% endif %}
37
- {% endwith %}
38
- {% endfor %}
39
-
40
- <!--############################## SUMMARY DAILY #######################-->
41
- {% if character.summary.total_amount_day %}
42
- <hr>
43
- <div class="row description-row">
44
- <div class="col-sm-6">{% trans "Avg." %} {% trans "Summary Day" %}:</div>
45
- <div class='col-sm-4 text-end'>
46
- <span class="{% if character.summary.total_amount_day < 0 %}text-danger{% else %}text-success{% endif %}">
47
-
48
-
49
-
50
- {{ character.summary.total_amount_day|floatformat:0|intcomma }}
51
- </span> ISK
52
- </div>
53
- </div>
54
- {% endif %}
55
- </div>
56
- </div>
@@ -1,48 +0,0 @@
1
- {% load i18n %}
2
- {% load humanize %}
3
- {% load evelinks %}
4
-
5
- <!--##############################DAILY#######################-->
6
-
7
- {% for key, label in character.income_types %}
8
- {% with value=character|get_item:key %}
9
- {% if value.current_day %}
10
- <div class="row description-row">
11
- <div class="col-sm-6 {% if label == 'Not Defined Category' %}text-warning{% endif %}">{% trans "Current Day -" %} {{ label }}:</div>
12
- <div class='col-sm-4 text-end'>
13
- <span class="{% if not key == 'mining_income' %}text-success{% else %}text-info{% endif %}">
14
- {{ value.current_day|floatformat:0|intcomma }}
15
- </span> ISK
16
- </div>
17
- </div>
18
- {% endif %}
19
- {% endwith %}
20
- {% endfor %}
21
-
22
- <!--############################## Costs #######################-->
23
-
24
- {% for key, label in character.cost_types %}
25
- {% with value=character|get_item:key %}
26
- {% if value.current_day %}
27
- <div class="row description-row">
28
- <div class="col-sm-6 {% if label == 'Not Defined Category' %}text-warning{% endif %}">{% trans "Current Day Cost -" %} {{ label }}:</div>
29
- <div class='col-sm-4 text-end'>
30
- <span class="text-danger">{{ value.current_day|floatformat:0|intcomma }}</span> ISK
31
- </div>
32
- </div>
33
- {% endif %}
34
- {% endwith %}
35
- {% endfor %}
36
-
37
- <!--############################## SUMMARY Day #######################-->
38
- {% if character.summary.total_current_day %}
39
- <hr>
40
- <div class="row description-row">
41
- <div class="col-sm-6">{% trans "Current Day" %} {% trans "Summary" %}:</div>
42
- <div class='col-sm-4 text-end'>
43
- <span class="text-warning">
44
- {{ character.summary.total_current_day|floatformat:0|intcomma }}
45
- </span> ISK
46
- </div>
47
- </div>
48
- {% endif %}
@@ -1,8 +0,0 @@
1
- <div>
2
- <h4 id="modal-title">
3
- {{ error_title }}
4
- </h4>
5
- </div>
6
- <div>
7
- {{ error_message }}
8
- </div>
@@ -1,53 +0,0 @@
1
- {% load i18n %}
2
- {% load humanize %}
3
- {% load evelinks %}
4
-
5
- <!--############################## HOURLY #######################-->
6
- <div class="tab-pane panel panel-default" id="tab-hourly">
7
- <div class="card-body modal-tab">
8
- <hr>
9
-
10
- {% for key, label in character.income_types %}
11
- {% with value=character|get_item:key %}
12
- {% if value %}
13
- <div class="row description-row">
14
- <div class="col-sm-6 {% if label == 'Not Defined Category' %}text-warning{% endif %}">{% trans "Avg." %} {{ label }} {% trans "per Hour" %}:</div>
15
- <div class='col-sm-4 text-end'>
16
- <span class="{% if not key == 'mining_income' %}text-success{% else %}text-info{% endif %}">
17
- {{ value.average_hour|floatformat:0|intcomma }}
18
- </span> ISK
19
- </div>
20
- </div>
21
- {% endif %}
22
- {% endwith %}
23
- {% endfor %}
24
-
25
- <!--############################## Costs #######################-->
26
-
27
- {% for key, label in character.cost_types %}
28
- {% with value=character|get_item:key %}
29
- {% if value %}
30
- <div class="row description-row">
31
- <div class="col-sm-6 {% if label == 'Not Defined Category' %}text-warning{% endif %}">{% trans "Avg." %} {{ label }} {% trans "Cost per Hour" %}:</div>
32
- <div class='col-sm-4 text-end'>
33
- <span class="text-danger">{{ value.average_hour|floatformat:0|intcomma }}</span> ISK
34
- </div>
35
- </div>
36
- {% endif %}
37
- {% endwith %}
38
- {% endfor %}
39
-
40
- <!--############################## SUMMARY HOURLY #######################-->
41
- {% if character.summary.total_amount_hour %}
42
- <hr>
43
- <div class="row description-row">
44
- <div class="col-sm-6">{% trans "Avg." %} {% trans "Summary Hour" %}:</div>
45
- <div class='col-sm-4 text-end'>
46
- <span class="{% if character.summary.total_amount_hour < 0 %}text-danger{% else %}text-success{% endif %}">
47
- {{ character.summary.total_amount_hour|floatformat:0|intcomma }}
48
- </span> ISK
49
- </div>
50
- </div>
51
- {% endif %}
52
- </div>
53
- </div>
@@ -1,88 +0,0 @@
1
- {% load i18n %}
2
- {% load humanize %}
3
- {% load evelinks %}
4
- {% load ledger %}
5
-
6
- <!--############################## SUMMARY #######################-->
7
- <div class="tab-pane panel panel-default active" id="tab-summary">
8
- <div class="card-body modal-tab">
9
- {% for key, label in character.income_types %}
10
- {% with value=character|get_item:key %}
11
- {% if value %}
12
- <div class="row description-row">
13
- <div class="col-sm-6 {% if label == 'Not Defined Category' %}text-warning{% endif %}">
14
- {{ label }}
15
- <i class="fa-regular fa-circle-question"
16
- data-bs-toggle="info-popover"
17
- data-bs-html="true"
18
- data-bs-trigger="hover focus"
19
- data-bs-placement="top"
20
- title="{% trans 'Included Categories' %}"
21
- data-bs-content="{{ value.ref_types|join:', ' }}">
22
- </i>
23
- :
24
- </div> <div class='col-sm-4 text-end'>
25
- <span class="{% if not key == 'mining_income' %}text-success{% else %}text-info{% endif %}">
26
- {% if key == 'mining_income' %}
27
- <i class="fa-regular fa-circle-question"
28
- data-tooltip-toggle="info-tooltip" data-bs-placement="right"
29
- title="{% trans 'This amount is displayed for information only' %}"
30
- >
31
- </i>
32
- {% endif %}
33
- {{ value.total_amount|floatformat:0|intcomma }}
34
- </span> ISK
35
- </div>
36
- </div>
37
- {% endif %}
38
- {% endwith %}
39
- {% endfor %}
40
-
41
- <!--############################## Costs #######################-->
42
-
43
- {% for key, label in character.cost_types %}
44
- {% with value=character|get_item:key %}
45
- {% if value %}
46
- <div class="row description-row">
47
- <div class="col-sm-6 {% if label == 'Not Defined Category' %}text-warning{% endif %}">
48
- {{ label }} {% trans "Cost" %}
49
- <i class="fa-regular fa-circle-question"
50
- data-bs-toggle="info-popover"
51
- data-bs-html="true"
52
- data-bs-trigger="hover focus"
53
- data-bs-placement="top"
54
- title="{% trans 'Included Categories' %}"
55
- data-bs-content="{{ value.ref_types|join:', ' }}">
56
- </i>
57
- :
58
- </div>
59
- <div class='col-sm-4 text-end'>
60
- <span class="text-danger">{{ value.total_amount|floatformat:0|intcomma }}</span> ISK
61
- </div>
62
- </div>
63
- {% endif %}
64
- {% endwith %}
65
- {% endfor %}
66
-
67
- <!--############################## SUMMARY #######################-->
68
- <hr>
69
- <div class="row description-row">
70
- <div class="col-sm-6">{% trans "Summary" %}:</div>
71
- <div class='col-sm-4 text-end'>
72
- <span class="{% if character.summary.total_amount < 0 %}text-danger{% else %}text-success{% endif %}">
73
- {{ character.summary.total_amount|floatformat:0|intcomma }}
74
- </span> ISK</div>
75
- </div>
76
- </div>
77
- </div>
78
- <script>
79
- $(document).ready(function() {
80
- $('[data-bs-toggle="info-popover"]').popover({
81
- trigger: 'hover',
82
- html: true,
83
- });
84
- $('[data-tooltip-toggle="info-tooltip"]').tooltip({
85
- trigger: 'hover'
86
- });
87
- });
88
- </script>
@@ -1,35 +0,0 @@
1
- {% load i18n %}
2
- {% load evelinks %}
3
-
4
- {% if character %}
5
- <div>
6
- <h4 id="modal-title">
7
- {{ information }}
8
- </h4>
9
- </div>
10
- <div>
11
- <ul class="nav nav-tabs" id="ledger-character-info" role="tablist">
12
- <li class="nav-item">
13
- <a class="nav-link bg-secondary active" href="#tab-summary" data-bs-toggle="tab" role="tab" data-bs-target="#tab-summary">{% trans "Summary" %}</a>
14
- </li>
15
- <li class="nav-item">
16
- <a class="nav-link bg-secondary" href="#tab-daily" data-bs-toggle="tab" role="tab" data-bs-target="#tab-daily">{% trans "Daily" %}</a>
17
- </li>
18
- <li class="nav-item">
19
- <a class="nav-link bg-secondary" href="#tab-hourly" data-bs-toggle="tab" role="tab" data-bs-target="#tab-hourly">{% trans "Hourly" %}</a>
20
- </li>
21
- </ul>
22
- <div class="card-body bg-secondary rounded-bottom tab-content px-2 mb-3">
23
- {% include "ledger/partials/information/summary.html" with character=character type=type %}
24
- {% include "ledger/partials/information/daily.html" with character=character type=type %}
25
- {% include "ledger/partials/information/hourly.html" with character=character type=type %}
26
- </div>
27
- </div>
28
- {% elif error %}
29
- <div class="alert alert-danger">
30
- <h4 class="alert-heading">{% trans "Error" %}</h4>
31
- <p>{{ error }}</p>
32
- </div>
33
- {% else %}
34
- {% trans "No ratting data found..." %}
35
- {% endif %}
@@ -1,39 +0,0 @@
1
- {% load i18n %}
2
- {% load bootstrap %}
3
-
4
- <!-- Approve Request Modal -->
5
- <div class="modal fade" id="ledger-planetary-confirm" tabindex="-1" role="dialog" aria-hidden="true">
6
- <div class="modal-dialog modal-dialog-centered" role="document">
7
- <div class="modal-content">
8
- <div class="modal-header">
9
- <span id="modal-title" class="fs-5">
10
- <!-- Modal Title -->
11
- </span>
12
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
13
- </div>
14
- <div>
15
- <div class="ms-2 py-2">
16
- <div id="modal-request-text">
17
- <!-- Modal Request Text -->
18
- </div>
19
-
20
- <form method="post">
21
- {% csrf_token %}
22
- <fieldset class="ledger-planetary-confirm-form">
23
- {{ forms.confirm|bootstrap }}
24
- </fieldset>
25
- </form>
26
- {% include 'ledger/partials/form/error-message.html' %}
27
- </div>
28
- <div class="modal-footer">
29
- <button id="modal-button-cancel-confirm-request" type="button" class="btn btn-danger" data-bs-dismiss="modal">
30
- <i class="fa-solid fa-hand"></i> {% trans "Cancel" %}
31
- </button>
32
-
33
- <button id="modal-button-confirm-confirm-request" type="button" class="btn btn-success">
34
- <i class="fa-solid fa-check"></i> {% trans "Confirm" %}
35
- </button>
36
- </div>
37
- </div>
38
- </div>
39
- </div>
@@ -1,48 +0,0 @@
1
- {% load i18n %}
2
- {% load humanize %}
3
- {% load evelinks %}
4
-
5
- {% if character %}
6
- <div>
7
- <h4 id="modal-title">
8
- {{ character.title }}:
9
- <img src="{{ character.character_id|character_portrait_url:32 }}" class="rounded-circle">
10
- {{character.character_name}} - {{character.planet_name}}
11
- </h4>
12
- </div>
13
- <div class="card bg-secondary rounded mb-3">
14
- <header class="bg-primary rounded-top px-2 py-1">
15
- <h3 class="me-3">{% trans "Extractors" %}</h3>
16
- </header>
17
- <table class="card-body table table-hover table-striped" id="extractors-table">
18
- <thead>
19
- <tr>
20
- <th>{% trans "Product" %}</th>
21
- <th>{% trans "Install Time" %}</th>
22
- <th>{% trans "Expiry Time" %}</th>
23
- <th>{% trans "Progress" %}</th>
24
- </tr>
25
- </thead>
26
- <tbody class="modal-extractors-table-body">
27
- {% for extractor_id, extractor in character.extractors.items %}
28
- <tr>
29
- <td><img src="{{ extractor.item_id|type_icon_url }}" class="rounded-circle"> {{ extractor.item_name }}</td>
30
- <td>{{ extractor.install_time }}</td>
31
- <td>{{ extractor.expiry_time }}</td>
32
- <td>
33
- <div class="progress" style="position: relative;">
34
- <div class="progress-bar progress-bar-warning progress-bar-striped active" role="progressbar" style="width: {{ extractor.progress_percentage|floatformat:0 }}%; box-shadow: -1px 3px 5px rgba(0, 180, 231, 90%);" aria-valuenow="{{ extractor.progress_percentage|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100"></div>
35
- <div class="progress-value" style="position: absolute; width: 100%; text-align: center;">{{ extractor.progress_percentage|floatformat:0 }}%</div>
36
- </div>
37
- </td>
38
- </tr>
39
- {% endfor %}
40
- </tbody>
41
- </table>
42
- </div>
43
- {% else %}
44
- {% trans "No data found..." %}
45
- {% endif %}
46
- <span class="text-muted small">
47
- {% trans "Note: Planetary information is only recalculated when the colony is viewed through the client. Information will not update until this criteria is met." %}
48
- </span>
@@ -1,123 +0,0 @@
1
- {% load i18n %}
2
- {% load static %}
3
- {% load humanize %}
4
- {% load evelinks %}
5
-
6
- {% if character %}
7
- <div>
8
- <h4 id="modal-title">
9
- {{ character.title }}:
10
- <img src="{{ character.character_id|character_portrait_url:32 }}" class="rounded-circle">
11
- {{character.character_name}} - {{character.planet_name}}
12
- </h4>
13
- </div>
14
- <div class="card bg-secondary rounded mb-3">
15
- <header class="bg-primary rounded-top px-2 py-1">
16
- <h3 class="me-3">{% trans "Storage" %}</h3>
17
- </header>
18
- <table class="card-body table table-hover table-striped" id="storage-table">
19
- <thead>
20
- <tr>
21
- <th>{% trans "Product" %}</th>
22
- <th class="no-sort"></th>
23
- <th>{% trans "Product Name" %}</th>
24
- <th>{% trans "Amount" %}</th>
25
- </tr>
26
- </thead>
27
- <tbody class="modal-storage-table-body">
28
- {% for facility_id, facility in character.storage.items %}
29
- {% for content in facility.contents %}
30
- <tr>
31
- <td>{{ facility.facility_name }}</td>
32
- <td>
33
- <img src="{{ content.type_id|type_icon_url }}" title="{{ content.product_name }}" data-tooltip-toggle="planetary">
34
- </td>
35
- <td>{{ content.product_name }}</td>
36
- <td>{{ content.amount|intcomma }}</td>
37
- </tr>
38
- {% endfor %}
39
- {% endfor %}
40
- </tbody>
41
- </table>
42
- </div>
43
- <div class="card bg-secondary rounded">
44
- <header class="card-body bg-primary rounded-top px-2 py-1">
45
- <h3 class="me-3">{% trans "Facility" %}</h3>
46
- </header>
47
- <div class="card-body">
48
- <table class="table table-hover table-striped" id="facility-table">
49
- <thead>
50
- <tr>
51
- <th>{% trans "Facility" %}</th>
52
- <th>{% trans "Input" %}</th>
53
- <th>{% trans "Output" %}</th>
54
- <th>{% trans "Active" %}</th>
55
- </tr>
56
- </thead>
57
- <tbody class="modal-facility-table-body">
58
- {% for facility in character.facilities %}
59
- <tr>
60
- <td>{{ facility.facility_name }}</td>
61
- <td>
62
- {% for input in facility.input_icons %}
63
- <img src="{{ input.icon_url|type_icon_url }}" title="{{ input.item_name }}" data-tooltip-toggle="planetary" style="margin-right: 5px;">
64
- {% if input.count > 1 %}
65
- <span class="text-muted small">x{{ input.count }}</span>
66
- {% endif %}
67
- {% endfor %}
68
- </td>
69
- <td>
70
- {% if facility.output_icon %}
71
- <img src="{{ facility.output_icon.icon_url|type_icon_url }}" title="{{ facility.output_icon.item_name }}" data-tooltip-toggle="planetary">
72
- {% else %}
73
- {% trans "No output" %}
74
- {% endif %}
75
- </td>
76
- <td class="no-sort">
77
- <img src="{% static 'ledger/images/' %}{{ facility.is_active|yesno:'green,red' }}.png" style="width: 24px; height: 24px;" title="{{ facility.is_active|yesno:'Producing,Offline' }}" data-tooltip-toggle="planetary">
78
- </td>
79
- </tr>
80
- {% endfor %}
81
- </tbody>
82
- </table>
83
- </div>
84
- </div>
85
- {% else %}
86
- {% trans "No data found..." %}
87
- {% endif %}
88
- <div class="modal-body d-flex justify-content-between">
89
- <span class="text-muted small">
90
- {% trans "Note: Planetary information is only recalculated when the colony is viewed through the client. Information will not update until this criteria is met." %}
91
- </span>
92
- </div>
93
-
94
- <script>
95
- $(document).ready(function() {
96
- $('[data-tooltip-toggle="planetary"]').tooltip();
97
-
98
- // Initialize DataTables for both tables if not already initialized
99
- if (!$.fn.DataTable.isDataTable('#storage-table')) {
100
- $('#storage-table').DataTable({
101
- "paging": false,
102
- "info": false,
103
- "searching": false,
104
- "order": [],
105
- "columnDefs": [
106
- { "orderable": false, "targets": 1 }
107
- ]
108
- });
109
- }
110
-
111
- if (!$.fn.DataTable.isDataTable('#facility-table')) {
112
- $('#facility-table').DataTable({
113
- "paging": true,
114
- "info": true,
115
- "searching": true,
116
- "order": [],
117
- "columnDefs": [
118
- { "orderable": false, "targets": 3 }
119
- ]
120
- });
121
- }
122
- });
123
- </script>
@@ -1,85 +0,0 @@
1
- {% load i18n %}
2
- {% load evelinks %}
3
- {% load humanize %}
4
-
5
- <table class="table table-dark table-striped table-hover w-100" id="ratting">
6
- <thead>
7
- <th class="col-main-character w-auto">{% trans "Character" %}</th>
8
- <th class="col-total-amount w-auto">{% trans "Bounty Amount" %}</th>
9
- <th class="col-total-ess w-auto">{% trans "ESS Amount" %}
10
- {% if is_old_ess %}
11
- <i class="fa-regular fa-circle-question" title="{% trans 'Estimated Only' %}" data-tooltip-toggle="ledger-tooltip" data-bs-placement="top"></i>
12
- {% endif %}
13
- </th>
14
- <th class="col-total-mining w-auto">{% trans "Mining Amount" %}</th>
15
- <th class="col-total-others w-auto">{% trans "Misc. Amount" %}</th>
16
- <th class="col-total-singlecosts w-auto">{% trans "Costs" %}</th>
17
- <th class="col-total-total w-auto" style="border-left: 2px solid #888;">{% trans "Total" %}</th>
18
- <th class="col-total-action w-auto"></th>
19
- </thead>
20
- <tbody>
21
- {% for character_data in ledger %}
22
- <tr>
23
- <td class="col-main-character nowrap">
24
- <img src="{{ character_data.character.eve_character.character_id|character_portrait_url:32 }}" class="rounded-circle" alt="{{ character_data.character.eve_character.character_name }}">
25
- {{ character_data.character.eve_character.character_name }}
26
- </td>
27
- <td class="col-total-amount nowrap text-success" id="amount_ratting_{{ character_data.character.eve_character.character_id }}" data-order="{{ character_data.ledger.bounty|default:0 }}">{{ character_data.ledger.bounty|floatformat:0|intcomma }} <span class="text-white">ISK</span></td>
28
- <td class="col-total-ess nowrap text-success" id="amount_ess_{{ character_data.character.eve_character.character_id }}" data-order="{{ character_data.ledger.ess|default:0 }}">{{ character_data.ledger.ess|floatformat:0|intcomma }} <span class="text-white">ISK</span></td>
29
- <td class="col-total-mining nowrap text-info" id="amount_mining_{{ character_data.character.eve_character.character_id }}" data-order="{{ character_data.ledger.mining|default:0 }}">{{ character_data.ledger.mining|floatformat:0|intcomma }} <span class="text-white">ISK</span></td>
30
- <td class="col-total-others nowrap text-success" id="amount_misc_{{ character_data.character.eve_character.character_id }}" data-order="{{ character_data.ledger.miscellaneous|default:0 }}">{{ character_data.ledger.miscellaneous|floatformat:0|intcomma }} <span class="text-white">ISK</span></td>
31
- <td class="col-total-costs nowrap text-danger" id="amount_costs_{{ character_data.character.eve_character.character_id }}" data-order="{{ character_data.ledger.costs|default:0 }}">{{ character_data.ledger.costs|floatformat:0|intcomma }} <span class="text-white">ISK</span></td>
32
- <td class="col-total-total nowrap {% if character_data.ledger.total < 0 %}text-danger {% else %}text-success{% endif %}" style="border-left: 2px solid #888;" id="amount_total_{{ character_data.character.eve_character.character_id }}" data-order="{{ character_data.ledger.total|default:0 }}">{{ character_data.ledger.total|floatformat:0|intcomma }} <span class="text-white">ISK</span></td>
33
- <td class="col-total-action">
34
- <a href="{{ character_data.single_url }}"
35
- class="btn btn-primary btn-sm"
36
- data-tooltip-toggle="ledger-tooltip"
37
- title="{% trans 'View Character' %}">
38
- <i class="fas fa-sign-in-alt"></i>
39
- </a>
40
- <button
41
- class="btn btn-primary btn-sm btn-square"
42
- data-bs-toggle="modal"
43
- data-bs-target="#modalViewCharacterContainer"
44
- data-ajax_url="{{ character_data.details_url }}"
45
- title="{% trans 'View Details' %}"
46
- data-tooltip-toggle="ledger-tooltip" data-bs-placement="right">
47
- <span class="fas fa-info"></span>
48
- </button>
49
- </td>
50
- </tr>
51
- {% endfor %}
52
- </tbody>
53
-
54
- <tfoot id="foot">
55
- <tr>
56
- <th><strong>{% trans "Summary" %}</strong></th>
57
- <th class="col-total-amount nowrap {% if totals.bounty < 0 %}text-danger {% else %}text-success{% endif %}" id="total_bounty" data-sort="{{ totals.bounty|default:0 }}">{{ totals.bounty|floatformat:0|intcomma }} <span class="text-white">ISK</span></th>
58
- <th class="col-total-ess nowrap {% if totals.ess < 0 %}text-danger {% else %}text-success{% endif %}" id="total_ess" data-sort="{{ totals.ess|default:0 }}">{{ totals.ess|floatformat:0|intcomma }} <span class="text-white">ISK</span></th>
59
- <th class="col-total-mining nowrap text-info" id="total_mining" data-sort="{{ totals.mining|default:0 }}">
60
- {{ totals.mining|floatformat:0|intcomma }}
61
- <span class="text-white">ISK
62
- <i class="fa-regular fa-circle-question"
63
- data-tooltip-toggle="ledger-tooltip" data-bs-placement="right"
64
- title="{% trans 'This amount is displayed for information only' %}"
65
- >
66
- </i>
67
- </span>
68
- </th>
69
- <th class="col-total-others nowrap {% if totals.miscellaneous < 0 %}text-danger {% else %}text-success{% endif %}" id="total_misc" data-sort="{{ totals.miscellaneous|default:0 }}">{{ totals.miscellaneous|floatformat:0|intcomma }} <span class="text-white">ISK</span></th>
70
- <th class="col-total-costs nowrap {% if totals.costs < 0 %}text-danger {% else %}text-success{% endif %}" id="total_costs" data-sort="{{ totals.costs|default:0 }}">{{ totals.costs|floatformat:0|intcomma }} <span class="text-white">ISK</span></th>
71
- <th class="col-total-total nowrap {% if totals.total < 0 %}text-danger {% else %}text-success{% endif %}" style="border-left: 2px solid #888;" id="total_total" data-sort="{{ totals.total|default:0 }}">{{ totals.total|floatformat:0|intcomma }} <span class="text-white">ISK</span></th>
72
- <th>
73
- <button
74
- class="btn btn-primary btn-sm btn-square"
75
- data-bs-toggle="modal"
76
- data-bs-target="#modalViewCharacterContainer"
77
- data-ajax_url="{{ view.details_url }}"
78
- title="{% trans 'View Details' %}"
79
- data-tooltip-toggle="ledger-tooltip" data-bs-placement="right">
80
- <span class="fas fa-info"></span>
81
- </button>
82
- </th>
83
- </tr>
84
- </tfoot>
85
- </table>