aa-ledger 1.0.3__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.3.dist-info → aa_ledger-2.0.0.dist-info}/METADATA +6 -6
  2. aa_ledger-2.0.0.dist-info/RECORD +267 -0
  3. {aa_ledger-1.0.3.dist-info → aa_ledger-2.0.0.dist-info}/WHEEL +1 -1
  4. ledger/__init__.py +2 -2
  5. ledger/admin.py +23 -18
  6. ledger/api/__init__.py +23 -7
  7. ledger/api/{ledger/admin.py → admin.py} +25 -31
  8. ledger/api/alliance.py +755 -0
  9. ledger/api/character.py +786 -0
  10. ledger/api/corporation.py +1141 -0
  11. ledger/api/{helpers.py → helpers/core.py} +33 -33
  12. ledger/api/helpers/icons.py +372 -0
  13. ledger/api/helpers/planetary_helper.py +354 -0
  14. ledger/api/planetary.py +354 -0
  15. ledger/api/schema.py +240 -15
  16. ledger/app_settings.py +18 -26
  17. ledger/auth_hooks.py +2 -2
  18. ledger/constants.py +50 -177
  19. ledger/decorators.py +2 -46
  20. ledger/forms.py +133 -39
  21. ledger/helpers/billboard.py +194 -144
  22. ledger/helpers/cache.py +105 -0
  23. ledger/helpers/discord.py +2 -4
  24. ledger/helpers/eveonline.py +160 -0
  25. ledger/helpers/ledger_data.py +23 -0
  26. ledger/helpers/ref_type.py +53 -78
  27. ledger/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  28. ledger/locale/cs_CZ/LC_MESSAGES/django.po +349 -193
  29. ledger/locale/de/LC_MESSAGES/django.mo +0 -0
  30. ledger/locale/de/LC_MESSAGES/django.po +528 -379
  31. ledger/locale/django.pot +717 -553
  32. ledger/locale/es/LC_MESSAGES/django.mo +0 -0
  33. ledger/locale/es/LC_MESSAGES/django.po +349 -194
  34. ledger/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  35. ledger/locale/fr_FR/LC_MESSAGES/django.po +349 -193
  36. ledger/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  37. ledger/locale/it_IT/LC_MESSAGES/django.po +349 -193
  38. ledger/locale/ja/LC_MESSAGES/django.mo +0 -0
  39. ledger/locale/ja/LC_MESSAGES/django.po +348 -193
  40. ledger/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
  41. ledger/locale/ko_KR/LC_MESSAGES/django.po +349 -193
  42. ledger/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  43. ledger/locale/nl_NL/LC_MESSAGES/django.po +349 -193
  44. ledger/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  45. ledger/locale/pl_PL/LC_MESSAGES/django.po +350 -193
  46. ledger/locale/ru/LC_MESSAGES/django.mo +0 -0
  47. ledger/locale/ru/LC_MESSAGES/django.po +348 -193
  48. ledger/locale/sk/LC_MESSAGES/django.mo +0 -0
  49. ledger/locale/sk/LC_MESSAGES/django.po +348 -193
  50. ledger/locale/uk/LC_MESSAGES/django.mo +0 -0
  51. ledger/locale/uk/LC_MESSAGES/django.po +348 -193
  52. ledger/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  53. ledger/locale/zh_Hans/LC_MESSAGES/django.po +348 -193
  54. ledger/managers/character_audit_manager.py +28 -20
  55. ledger/managers/character_journal_manager.py +187 -358
  56. ledger/managers/character_mining_manager.py +64 -30
  57. ledger/managers/character_planetary_manager.py +185 -138
  58. ledger/managers/corporation_audit_manager.py +36 -27
  59. ledger/managers/corporation_journal_manager.py +94 -57
  60. ledger/managers/general_manager.py +12 -8
  61. ledger/migrations/0018_remove_characterplanet_ledger_char_planet__58a5b6_idx_and_more.py +44 -0
  62. ledger/migrations/0019_rename_characteraudit_characterowner_and_more.py +48 -0
  63. ledger/models/__init__.py +5 -11
  64. ledger/models/characteraudit.py +101 -109
  65. ledger/models/corporationaudit.py +94 -49
  66. ledger/models/general.py +105 -211
  67. ledger/models/helpers/update_manager.py +302 -0
  68. ledger/models/planetary.py +60 -205
  69. ledger/providers.py +101 -0
  70. ledger/static/ledger/css/{ledger.css → aa-ledger.css} +54 -28
  71. ledger/static/ledger/js/aa-ledger.js +124 -0
  72. ledger/static/ledger/js/charts.js +25 -1
  73. ledger/static/ledger/js/view-alliance-ledger.js +383 -0
  74. ledger/static/ledger/js/view-character-ledger.js +388 -0
  75. ledger/static/ledger/js/view-corporation-ledger.js +402 -0
  76. ledger/static/ledger/js/view-planetary.js +492 -0
  77. ledger/static/ledger/libs/amCharts/5.14.4/js/flow.js +2 -0
  78. ledger/static/ledger/libs/amCharts/5.14.4/js/index.js +2 -0
  79. ledger/static/ledger/libs/amCharts/5.14.4/js/percent.js +2 -0
  80. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Animated.js +2 -0
  81. ledger/static/ledger/libs/amCharts/5.14.4/js/themes/Dark.js +2 -0
  82. ledger/static/ledger/libs/amCharts/5.14.4/js/xy.js +2 -0
  83. ledger/static/ledger/libs/datatables/2.3.5/css/dataTables.bootstrap5.css +610 -0
  84. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.bootstrap5.js +122 -0
  85. ledger/static/ledger/libs/datatables/2.3.5/js/dataTables.js +14127 -0
  86. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.bootstrap5.css +516 -0
  87. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/css/columnControl.dataTables.css +529 -0
  88. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/columnControl.bootstrap5.js +73 -0
  89. ledger/static/ledger/libs/datatables/Extensions/ColumnControl/1.1.1/js/dataTables.columnControl.js +3090 -0
  90. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/css/fixedHeader.bootstrap5.css +20 -0
  91. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/dataTables.fixedHeader.js +1203 -0
  92. ledger/static/ledger/libs/datatables/Extensions/FixedHeader/4.0.4/js/fixedHeader.bootstrap5.js +59 -0
  93. ledger/tasks.py +157 -146
  94. ledger/templates/ledger/base.html +59 -21
  95. ledger/templates/ledger/bundles/aa-ledger-css.html +3 -0
  96. ledger/templates/ledger/bundles/aa-ledger-js.html +3 -0
  97. ledger/templates/ledger/bundles/view-alliance-ledger-js.html +14 -0
  98. ledger/templates/ledger/bundles/view-character-ledger-js.html +15 -0
  99. ledger/templates/ledger/bundles/view-character-planetary-css.html +3 -0
  100. ledger/templates/ledger/bundles/view-character-planetary-js.html +4 -0
  101. ledger/templates/ledger/bundles/view-corporation-ledger-js.html +15 -0
  102. ledger/templates/ledger/partials/modal/confirm.html +0 -1
  103. ledger/templates/ledger/partials/modal/request-accept-delete-alliance.html +38 -0
  104. ledger/templates/ledger/partials/modal/request-accept-delete-character.html +38 -0
  105. ledger/templates/ledger/partials/modal/request-accept-delete-corporation.html +38 -0
  106. ledger/templates/ledger/partials/modal/request-accept-switch-notification.html +38 -0
  107. ledger/templates/ledger/partials/modal/request-view-alliance-details.html +26 -0
  108. ledger/templates/ledger/partials/modal/request-view-character-details.html +26 -0
  109. ledger/templates/ledger/partials/modal/request-view-corporation-details.html +26 -0
  110. ledger/templates/ledger/partials/modal/request-view-extractor.html +32 -0
  111. ledger/templates/ledger/partials/modal/request-view-factory.html +31 -0
  112. ledger/templates/ledger/partials/{menu → navigation}/administration.html +8 -0
  113. ledger/templates/ledger/partials/{menu → navigation}/navigation.html +2 -2
  114. ledger/templates/ledger/partials/{administration → view-alliance-administration}/alliance_corporations.html +3 -3
  115. ledger/templates/ledger/partials/view-alliance-administration/dashboard.html +81 -0
  116. ledger/templates/ledger/partials/view-alliance-ledger/alliance-billboard.html +25 -0
  117. ledger/templates/ledger/partials/view-alliance-ledger/alliance-ledger-details.html +21 -0
  118. ledger/templates/ledger/partials/view-alliance-ledger/alliance-table.html +24 -0
  119. ledger/templates/ledger/partials/view-alliance-ledger/information/daily.html +18 -0
  120. ledger/templates/ledger/partials/view-alliance-ledger/information/hourly.html +18 -0
  121. ledger/templates/ledger/partials/view-alliance-ledger/information/summary.html +19 -0
  122. ledger/templates/ledger/partials/{administration → view-character-administration}/character.html +1 -9
  123. ledger/templates/ledger/partials/{administration → view-character-administration}/dashboard.html +0 -34
  124. ledger/templates/ledger/partials/view-character-ledger/character-billboard.html +25 -0
  125. ledger/templates/ledger/partials/view-character-ledger/character-ledger-details.html +21 -0
  126. ledger/templates/ledger/partials/view-character-ledger/character-table.html +25 -0
  127. ledger/templates/ledger/partials/view-character-ledger/information/daily.html +18 -0
  128. ledger/templates/ledger/partials/view-character-ledger/information/hourly.html +18 -0
  129. ledger/templates/ledger/partials/view-character-ledger/information/summary.html +19 -0
  130. ledger/templates/ledger/partials/view-character-planetary/extractor-table.html +24 -0
  131. ledger/templates/ledger/partials/view-character-planetary/factory-table.html +24 -0
  132. ledger/templates/ledger/partials/view-character-planetary/planetary-table.html +22 -0
  133. ledger/templates/ledger/partials/view-character-planetary/storage-table.html +23 -0
  134. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation.html +5 -13
  135. ledger/templates/ledger/partials/{administration → view-corporation-administration}/corporation_characters.html +1 -1
  136. ledger/templates/ledger/partials/view-corporation-administration/dashboard.html +81 -0
  137. ledger/templates/ledger/partials/view-corporation-ledger/corporation-billboard.html +25 -0
  138. ledger/templates/ledger/partials/view-corporation-ledger/corporation-ledger-details.html +21 -0
  139. ledger/templates/ledger/partials/view-corporation-ledger/corporation-table.html +26 -0
  140. ledger/templates/ledger/partials/view-corporation-ledger/information/daily.html +18 -0
  141. ledger/templates/ledger/partials/view-corporation-ledger/information/hourly.html +18 -0
  142. ledger/templates/ledger/partials/view-corporation-ledger/information/summary.html +19 -0
  143. ledger/templates/ledger/view-administration.html +62 -0
  144. ledger/templates/ledger/view-alliance-administration.html +49 -0
  145. ledger/templates/ledger/view-alliance-ledger.html +72 -0
  146. ledger/templates/ledger/view-alliance-overview.html +131 -0
  147. ledger/templates/ledger/view-character-administration.html +42 -0
  148. ledger/templates/ledger/view-character-ledger.html +73 -0
  149. ledger/templates/ledger/view-character-overview.html +135 -0
  150. ledger/templates/ledger/view-character-planetary-overview.html +135 -0
  151. ledger/templates/ledger/view-character-planetary.html +73 -0
  152. ledger/templates/ledger/view-corporation-administration.html +42 -0
  153. ledger/templates/ledger/view-corporation-ledger.html +73 -0
  154. ledger/templates/ledger/view-corporation-overview.html +131 -0
  155. ledger/templatetags/ledger.py +3 -5
  156. ledger/tests/__init__.py +187 -0
  157. ledger/tests/test_admin.py +164 -68
  158. ledger/tests/test_auth_hook.py +31 -13
  159. ledger/tests/test_decarators.py +14 -79
  160. ledger/tests/test_discord_installed.py +0 -1
  161. ledger/tests/test_helpers/test_ledger_data.py +19 -0
  162. ledger/tests/test_managers/test_character_audit_manager.py +111 -69
  163. ledger/tests/test_managers/test_character_journal_manager.py +48 -208
  164. ledger/tests/test_managers/test_character_mining_manager.py +37 -16
  165. ledger/tests/test_managers/test_corporation_division_manager.py +66 -28
  166. ledger/tests/test_managers/test_corporation_journal_manager.py +39 -42
  167. ledger/tests/test_managers/test_general_manager.py +78 -18
  168. ledger/tests/test_managers/test_planetary_manager.py +73 -32
  169. ledger/tests/test_models/test_characteraudit.py +58 -74
  170. ledger/tests/test_models/test_characterminingledger.py +20 -26
  171. ledger/tests/test_models/test_characterwalletjournal.py +10 -33
  172. ledger/tests/test_models/test_corporationaudit.py +41 -35
  173. ledger/tests/test_models/test_corporationwalletjournal.py +35 -32
  174. ledger/tests/test_models/test_general.py +44 -11
  175. ledger/tests/test_models/test_planetary.py +14 -80
  176. ledger/tests/test_templatetags.py +2 -7
  177. ledger/tests/test_views/corporation/test_add_corp.py +16 -35
  178. ledger/tests/test_views/corporation/test_delete_corporation.py +66 -42
  179. ledger/tests/test_views/test_access.py +512 -545
  180. ledger/tests/test_views/test_add_ally.py +57 -46
  181. ledger/tests/test_views/test_add_char.py +21 -33
  182. ledger/tests/test_views/test_delete_character.py +24 -21
  183. ledger/tests/testdata/README_ESI_STUB.md +430 -0
  184. ledger/tests/testdata/esi_stub_openapi.py +511 -0
  185. ledger/tests/testdata/integrations/__init__.py +0 -0
  186. ledger/tests/testdata/{load_eveuniverse.py → integrations/eveuniverse.py} +0 -1
  187. ledger/tests/testdata/integrations/planetary.py +13 -0
  188. ledger/tests/testdata/json/factory.json +281 -0
  189. ledger/tests/testdata/json/inactive.json +281 -0
  190. ledger/tests/testdata/json/pins.json +175 -272
  191. ledger/tests/testdata/json/route.json +95 -528
  192. ledger/tests/testdata/test_esi_stub.py +468 -0
  193. ledger/tests/testdata/utils.py +601 -0
  194. ledger/thirdparty/charlink_hook.py +60 -30
  195. ledger/urls.py +0 -135
  196. ledger/views/alliance/add_ally.py +2 -4
  197. ledger/views/alliance/alliance_ledger.py +64 -147
  198. ledger/views/character/add_char.py +8 -10
  199. ledger/views/character/character_ledger.py +60 -126
  200. ledger/views/character/planetary.py +5 -98
  201. ledger/views/corporation/add_corp.py +10 -12
  202. ledger/views/corporation/corporation_ledger.py +65 -327
  203. ledger/views/index.py +92 -30
  204. aa_ledger-1.0.3.dist-info/RECORD +0 -236
  205. ledger/api/api_helper/planetary_helper.py +0 -107
  206. ledger/api/ledger/__init__.py +0 -7
  207. ledger/api/ledger/planetary.py +0 -231
  208. ledger/helpers/alliance.py +0 -317
  209. ledger/helpers/character.py +0 -251
  210. ledger/helpers/core.py +0 -665
  211. ledger/helpers/corporation.py +0 -427
  212. ledger/helpers/data_exporter.py +0 -452
  213. ledger/static/ledger/js/planetary-confirm.js +0 -66
  214. ledger/static/ledger/js/planetary.js +0 -143
  215. ledger/templates/ledger/admin.html +0 -43
  216. ledger/templates/ledger/allyledger/admin/alliance_administration.html +0 -46
  217. ledger/templates/ledger/allyledger/admin/alliance_overview.html +0 -108
  218. ledger/templates/ledger/allyledger/alliance_ledger.html +0 -86
  219. ledger/templates/ledger/bundles/character-ledger-bundles.html +0 -66
  220. ledger/templates/ledger/bundles/corporation-ledger-bundles.html +0 -75
  221. ledger/templates/ledger/bundles/ledger-bundles.html +0 -23
  222. ledger/templates/ledger/bundles/ledger-css.html +0 -3
  223. ledger/templates/ledger/bundles/planetary-bundles.html +0 -50
  224. ledger/templates/ledger/bundles/table-css.html +0 -3
  225. ledger/templates/ledger/charledger/admin/character_administration.html +0 -39
  226. ledger/templates/ledger/charledger/admin/character_overview.html +0 -106
  227. ledger/templates/ledger/charledger/character_ledger.html +0 -94
  228. ledger/templates/ledger/charledger/planetary/admin/planetary_overview.html +0 -123
  229. ledger/templates/ledger/charledger/planetary/planetary_ledger.html +0 -54
  230. ledger/templates/ledger/corpledger/admin/corporation_administration.html +0 -39
  231. ledger/templates/ledger/corpledger/admin/corporation_overview.html +0 -108
  232. ledger/templates/ledger/corpledger/corporation_ledger.html +0 -129
  233. ledger/templates/ledger/data-export.html +0 -78
  234. ledger/templates/ledger/error.html +0 -31
  235. ledger/templates/ledger/partials/form/error-message.html +0 -1
  236. ledger/templates/ledger/partials/information/daily.html +0 -56
  237. ledger/templates/ledger/partials/information/day.html +0 -48
  238. ledger/templates/ledger/partials/information/error.html +0 -8
  239. ledger/templates/ledger/partials/information/hourly.html +0 -53
  240. ledger/templates/ledger/partials/information/summary.html +0 -88
  241. ledger/templates/ledger/partials/information/view_character_content.html +0 -35
  242. ledger/templates/ledger/partials/modal/switchalarm_confirm.html +0 -39
  243. ledger/templates/ledger/partials/modal/view_extractor.html +0 -48
  244. ledger/templates/ledger/partials/modal/view_factory.html +0 -123
  245. ledger/templates/ledger/partials/table/char-ledger.html +0 -85
  246. ledger/templates/ledger/partials/table/corp-ledger.html +0 -66
  247. ledger/templates/ledger/partials/table/planetary.html +0 -18
  248. ledger/templates/ledger/partials/thirdparty/billboard.html +0 -22
  249. ledger/templates/ledger/partials/view/card.html +0 -160
  250. ledger/templates/ledger/permission.html +0 -2
  251. ledger/tests/test_helpers/test_billboard.py +0 -11
  252. ledger/tests/test_helpers/test_data_exporter.py +0 -207
  253. ledger/tests/test_tasks.py +0 -282
  254. ledger/tests/test_view_helpers/test_core.py +0 -47
  255. ledger/tests/test_views/corporation/test_corporation.py +0 -267
  256. ledger/tests/test_views/test_planetary.py +0 -137
  257. ledger/tests/testdata/esi_stub.py +0 -109
  258. ledger/tests/testdata/esi_stub_migration.py +0 -80
  259. ledger/tests/testdata/generate_characteraudit.py +0 -106
  260. ledger/tests/testdata/generate_corporationaudit.py +0 -74
  261. ledger/tests/testdata/generate_events.py +0 -31
  262. ledger/tests/testdata/generate_miningledger.py +0 -13
  263. ledger/tests/testdata/generate_planets.py +0 -48
  264. ledger/tests/testdata/generate_walletjournal.py +0 -42
  265. ledger/tests/testdata/json/czarno-pins.json +0 -240
  266. ledger/tests/testdata/json/czarno-routes.json +0 -165
  267. ledger/tests/testdata/json/pins2.json +0 -538
  268. {aa_ledger-1.0.3.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>