This commit is contained in:
+3
-2
@@ -1,10 +1,11 @@
|
|||||||
{
|
{
|
||||||
"id": "mgt2-compendium-amiral-denisov",
|
"id": "mgt2-compendium-amiral-denisov",
|
||||||
"title": "MgT2e - Compendium Amiral Denisov",
|
"title": "MgT2e - Compendium Amiral Denisov",
|
||||||
"version": "1.2.0",
|
"version": "1.2.1",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "13",
|
"minimum": "13",
|
||||||
"verified": "13"
|
"verified": "13",
|
||||||
|
"maximum": "14"
|
||||||
},
|
},
|
||||||
"description": "Module de compendium et d'outils Mongoose Traveller 2e pour FoundryVTT écrit par JdR.Ninja.\nInclut les commandes /commerce, /pnj, /rencontre et /mission pour automatiser le commerce, les PNJ rapides, les rencontres et les contrats aléatoires au-dessus du système mgt2e, en s'appuyant sur les compétences natives des fiches.",
|
"description": "Module de compendium et d'outils Mongoose Traveller 2e pour FoundryVTT écrit par JdR.Ninja.\nInclut les commandes /commerce, /pnj, /rencontre et /mission pour automatiser le commerce, les PNJ rapides, les rencontres et les contrats aléatoires au-dessus du système mgt2e, en s'appuyant sur les compétences natives des fiches.",
|
||||||
"esmodules": [
|
"esmodules": [
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
|||||||
MANIFEST-000061
|
MANIFEST-000075
|
||||||
|
|||||||
+15
-15
@@ -1,15 +1,15 @@
|
|||||||
2026/04/30-16:49:03.790903 7f8fb27bf6c0 Recovering log #59
|
2026/05/24-16:50:54.659414 7fdf5b7fe6c0 Recovering log #73
|
||||||
2026/04/30-16:49:03.800967 7f8fb27bf6c0 Delete type=0 #59
|
2026/05/24-16:50:54.670747 7fdf5b7fe6c0 Delete type=3 #71
|
||||||
2026/04/30-16:49:03.801014 7f8fb27bf6c0 Delete type=3 #57
|
2026/05/24-16:50:54.670783 7fdf5b7fe6c0 Delete type=0 #73
|
||||||
2026/04/30-22:23:51.951244 7f8d1bfff6c0 Level-0 table #64: started
|
2026/05/24-17:30:55.121088 7fdf5affd6c0 Level-0 table #78: started
|
||||||
2026/04/30-22:23:51.954584 7f8d1bfff6c0 Level-0 table #64: 15379 bytes OK
|
2026/05/24-17:30:55.125303 7fdf5affd6c0 Level-0 table #78: 9864 bytes OK
|
||||||
2026/04/30-22:23:51.960697 7f8d1bfff6c0 Delete type=0 #62
|
2026/05/24-17:30:55.131248 7fdf5affd6c0 Delete type=0 #76
|
||||||
2026/04/30-22:23:51.960845 7f8d1bfff6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.131416 7fdf5affd6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:51.972457 7f8d1bfff6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at '!items!yoIqL0RQEnzNVJB6' @ 117 : 1
|
2026/05/24-17:30:55.131452 7fdf5affd6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at '!items!yoIqL0RQEnzNVJB6' @ 161 : 1
|
||||||
2026/04/30-22:23:51.972464 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:30:55.131457 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
2026/04/30-22:23:51.975673 7f8d1bfff6c0 Generated table #65@1: 29 keys, 15791 bytes
|
2026/05/24-17:30:55.134712 7fdf5affd6c0 Generated table #79@1: 29 keys, 10438 bytes
|
||||||
2026/04/30-22:23:51.975685 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 15791 bytes
|
2026/05/24-17:30:55.134726 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 10438 bytes
|
||||||
2026/04/30-22:23:51.981953 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:30:55.141487 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
2026/04/30-22:23:51.982044 7f8d1bfff6c0 Delete type=2 #56
|
2026/05/24-17:30:55.141544 7fdf5affd6c0 Delete type=2 #70
|
||||||
2026/04/30-22:23:51.982182 7f8d1bfff6c0 Delete type=2 #64
|
2026/05/24-17:30:55.141639 7fdf5affd6c0 Delete type=2 #78
|
||||||
2026/04/30-22:23:51.999453 7f8d1bfff6c0 Manual compaction at level-1 from '!items!yoIqL0RQEnzNVJB6' @ 117 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.187693 7fdf5affd6c0 Manual compaction at level-1 from '!items!yoIqL0RQEnzNVJB6' @ 161 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:27.978364 7fddd97be6c0 Recovering log #53
|
2026/05/18-20:27:59.998100 7f5a46ffd6c0 Recovering log #68
|
||||||
2026/04/14-09:09:28.036731 7fddd97be6c0 Delete type=3 #51
|
2026/05/18-20:28:00.055719 7f5a46ffd6c0 Delete type=3 #66
|
||||||
2026/04/14-09:09:28.036869 7fddd97be6c0 Delete type=0 #53
|
2026/05/18-20:28:00.055824 7f5a46ffd6c0 Delete type=0 #68
|
||||||
2026/04/14-09:37:12.068876 7fddca1c26c0 Level-0 table #60: started
|
2026/05/18-20:29:47.499128 7f5a467fc6c0 Level-0 table #74: started
|
||||||
2026/04/14-09:37:12.068921 7fddca1c26c0 Level-0 table #60: 0 bytes OK
|
2026/05/18-20:29:47.499199 7f5a467fc6c0 Level-0 table #74: 0 bytes OK
|
||||||
2026/04/14-09:37:12.075223 7fddca1c26c0 Delete type=0 #58
|
2026/05/18-20:29:47.505640 7f5a467fc6c0 Delete type=0 #72
|
||||||
2026/04/14-09:37:12.095906 7fddca1c26c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.505916 7f5a467fc6c0 Manual compaction at level-0 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.096000 7fddca1c26c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.505957 7f5a467fc6c0 Manual compaction at level-1 from '!folders!673DRfEBYUliGnKJ' @ 72057594037927935 : 1 .. '!items!yoIqL0RQEnzNVJB6' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000160
|
MANIFEST-000174
|
||||||
|
|||||||
+15
-15
@@ -1,15 +1,15 @@
|
|||||||
2026/04/30-16:49:03.676170 7f8fb27bf6c0 Recovering log #158
|
2026/05/24-16:50:54.546518 7fdf5b7fe6c0 Recovering log #172
|
||||||
2026/04/30-16:49:03.686444 7f8fb27bf6c0 Delete type=0 #158
|
2026/05/24-16:50:54.556572 7fdf5b7fe6c0 Delete type=3 #170
|
||||||
2026/04/30-16:49:03.686500 7f8fb27bf6c0 Delete type=3 #156
|
2026/05/24-16:50:54.556614 7fdf5b7fe6c0 Delete type=0 #172
|
||||||
2026/04/30-22:23:52.127418 7f8d1bfff6c0 Level-0 table #163: started
|
2026/05/24-17:30:54.977322 7fdf5affd6c0 Level-0 table #177: started
|
||||||
2026/04/30-22:23:52.130961 7f8d1bfff6c0 Level-0 table #163: 3504 bytes OK
|
2026/05/24-17:30:54.980526 7fdf5affd6c0 Level-0 table #177: 3210 bytes OK
|
||||||
2026/04/30-22:23:52.137537 7f8d1bfff6c0 Delete type=0 #161
|
2026/05/24-17:30:54.986935 7fdf5affd6c0 Delete type=0 #175
|
||||||
2026/04/30-22:23:52.154144 7f8d1bfff6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.016293 7fdf5affd6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:52.154182 7f8d1bfff6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at '!items!wpBopoosZiWXjlKD' @ 66 : 1
|
2026/05/24-17:30:55.016335 7fdf5affd6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at '!items!wpBopoosZiWXjlKD' @ 78 : 1
|
||||||
2026/04/30-22:23:52.154188 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:30:55.016340 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
2026/04/30-22:23:52.158229 7f8d1bfff6c0 Generated table #164@1: 6 keys, 3504 bytes
|
2026/05/24-17:30:55.019483 7fdf5affd6c0 Generated table #178@1: 6 keys, 3210 bytes
|
||||||
2026/04/30-22:23:52.158247 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 3504 bytes
|
2026/05/24-17:30:55.019496 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 3210 bytes
|
||||||
2026/04/30-22:23:52.164220 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:30:55.026070 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
2026/04/30-22:23:52.164332 7f8d1bfff6c0 Delete type=2 #155
|
2026/05/24-17:30:55.026126 7fdf5affd6c0 Delete type=2 #169
|
||||||
2026/04/30-22:23:52.164497 7f8d1bfff6c0 Delete type=2 #163
|
2026/05/24-17:30:55.026250 7fdf5affd6c0 Delete type=2 #177
|
||||||
2026/04/30-22:23:52.179807 7f8d1bfff6c0 Manual compaction at level-1 from '!items!wpBopoosZiWXjlKD' @ 66 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.052180 7fdf5affd6c0 Manual compaction at level-1 from '!items!wpBopoosZiWXjlKD' @ 78 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:27.370951 7fddd97be6c0 Recovering log #152
|
2026/05/18-20:27:59.309876 7f5a477fe6c0 Recovering log #167
|
||||||
2026/04/14-09:09:27.434776 7fddd97be6c0 Delete type=3 #150
|
2026/05/18-20:27:59.371762 7f5a477fe6c0 Delete type=3 #165
|
||||||
2026/04/14-09:09:27.434901 7fddd97be6c0 Delete type=0 #152
|
2026/05/18-20:27:59.371874 7f5a477fe6c0 Delete type=0 #167
|
||||||
2026/04/14-09:37:12.026954 7fddca1c26c0 Level-0 table #159: started
|
2026/05/18-20:29:47.416279 7f5a467fc6c0 Level-0 table #173: started
|
||||||
2026/04/14-09:37:12.027005 7fddca1c26c0 Level-0 table #159: 0 bytes OK
|
2026/05/18-20:29:47.416343 7f5a467fc6c0 Level-0 table #173: 0 bytes OK
|
||||||
2026/04/14-09:37:12.034241 7fddca1c26c0 Delete type=0 #157
|
2026/05/18-20:29:47.425598 7f5a467fc6c0 Delete type=0 #171
|
||||||
2026/04/14-09:37:12.041328 7fddca1c26c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.425873 7f5a467fc6c0 Manual compaction at level-0 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.041399 7fddca1c26c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.425920 7f5a467fc6c0 Manual compaction at level-1 from '!items!8xqChkoKK7i0c9M1' @ 72057594037927935 : 1 .. '!items!wpBopoosZiWXjlKD' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000044
|
MANIFEST-000058
|
||||||
|
|||||||
+15
-15
@@ -1,15 +1,15 @@
|
|||||||
2026/04/30-16:49:03.814422 7f8fb27bf6c0 Recovering log #42
|
2026/05/24-16:50:54.686699 7fdf5bfff6c0 Recovering log #56
|
||||||
2026/04/30-16:49:03.824784 7f8fb27bf6c0 Delete type=0 #42
|
2026/05/24-16:50:54.695982 7fdf5bfff6c0 Delete type=3 #54
|
||||||
2026/04/30-16:49:03.824851 7f8fb27bf6c0 Delete type=3 #40
|
2026/05/24-16:50:54.696016 7fdf5bfff6c0 Delete type=0 #56
|
||||||
2026/04/30-22:23:51.982251 7f8d1bfff6c0 Level-0 table #47: started
|
2026/05/24-17:30:55.150957 7fdf5affd6c0 Level-0 table #61: started
|
||||||
2026/04/30-22:23:51.986099 7f8d1bfff6c0 Level-0 table #47: 4393 bytes OK
|
2026/05/24-17:30:55.154345 7fdf5affd6c0 Level-0 table #61: 4273 bytes OK
|
||||||
2026/04/30-22:23:51.992567 7f8d1bfff6c0 Delete type=0 #45
|
2026/05/24-17:30:55.160772 7fdf5affd6c0 Delete type=0 #59
|
||||||
2026/04/30-22:23:51.999467 7f8d1bfff6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.187706 7fdf5affd6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:52.009605 7f8d1bfff6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at '!items!vJInnoigCTJzuY2S' @ 94 : 1
|
2026/05/24-17:30:55.210353 7fdf5affd6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at '!items!vJInnoigCTJzuY2S' @ 126 : 1
|
||||||
2026/04/30-22:23:52.009613 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:30:55.210359 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
2026/04/30-22:23:52.012784 7f8d1bfff6c0 Generated table #48@1: 16 keys, 4393 bytes
|
2026/05/24-17:30:55.213753 7fdf5affd6c0 Generated table #62@1: 16 keys, 4273 bytes
|
||||||
2026/04/30-22:23:52.012795 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 4393 bytes
|
2026/05/24-17:30:55.213776 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 4273 bytes
|
||||||
2026/04/30-22:23:52.020131 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:30:55.220661 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
2026/04/30-22:23:52.020267 7f8d1bfff6c0 Delete type=2 #39
|
2026/05/24-17:30:55.220738 7fdf5affd6c0 Delete type=2 #53
|
||||||
2026/04/30-22:23:52.020442 7f8d1bfff6c0 Delete type=2 #47
|
2026/05/24-17:30:55.220857 7fdf5affd6c0 Delete type=2 #61
|
||||||
2026/04/30-22:23:52.038598 7f8d1bfff6c0 Manual compaction at level-1 from '!items!vJInnoigCTJzuY2S' @ 94 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.237555 7fdf5affd6c0 Manual compaction at level-1 from '!items!vJInnoigCTJzuY2S' @ 126 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:28.118399 7fddd9fbf6c0 Recovering log #36
|
2026/05/18-20:28:00.170623 7f5a477fe6c0 Recovering log #51
|
||||||
2026/04/14-09:09:28.175883 7fddd9fbf6c0 Delete type=3 #34
|
2026/05/18-20:28:00.231017 7f5a477fe6c0 Delete type=3 #49
|
||||||
2026/04/14-09:09:28.175997 7fddd9fbf6c0 Delete type=0 #36
|
2026/05/18-20:28:00.231120 7f5a477fe6c0 Delete type=0 #51
|
||||||
2026/04/14-09:37:12.089374 7fddca1c26c0 Level-0 table #43: started
|
2026/05/18-20:29:47.515216 7f5a467fc6c0 Level-0 table #57: started
|
||||||
2026/04/14-09:37:12.089426 7fddca1c26c0 Level-0 table #43: 0 bytes OK
|
2026/05/18-20:29:47.515280 7f5a467fc6c0 Level-0 table #57: 0 bytes OK
|
||||||
2026/04/14-09:37:12.095733 7fddca1c26c0 Delete type=0 #41
|
2026/05/18-20:29:47.522604 7f5a467fc6c0 Delete type=0 #55
|
||||||
2026/04/14-09:37:12.095967 7fddca1c26c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.522854 7f5a467fc6c0 Manual compaction at level-0 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.096017 7fddca1c26c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.522882 7f5a467fc6c0 Manual compaction at level-1 from '!items!57vgsVVCy9MRKM2M' @ 72057594037927935 : 1 .. '!items!vJInnoigCTJzuY2S' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000163
|
MANIFEST-000177
|
||||||
|
|||||||
+15
-15
@@ -1,15 +1,15 @@
|
|||||||
2026/04/30-16:49:03.688915 7f8fb17bd6c0 Recovering log #161
|
2026/05/24-16:50:54.559278 7fdf5bfff6c0 Recovering log #175
|
||||||
2026/04/30-16:49:03.698657 7f8fb17bd6c0 Delete type=0 #161
|
2026/05/24-16:50:54.569235 7fdf5bfff6c0 Delete type=3 #173
|
||||||
2026/04/30-16:49:03.698730 7f8fb17bd6c0 Delete type=3 #159
|
2026/05/24-16:50:54.569273 7fdf5bfff6c0 Delete type=0 #175
|
||||||
2026/04/30-22:23:51.824246 7f8d1bfff6c0 Level-0 table #166: started
|
2026/05/24-17:30:54.996524 7fdf5affd6c0 Level-0 table #180: started
|
||||||
2026/04/30-22:23:51.833477 7f8d1bfff6c0 Level-0 table #166: 31217 bytes OK
|
2026/05/24-17:30:55.000122 7fdf5affd6c0 Level-0 table #180: 30255 bytes OK
|
||||||
2026/04/30-22:23:51.840502 7f8d1bfff6c0 Delete type=0 #164
|
2026/05/24-17:30:55.006363 7fdf5affd6c0 Delete type=0 #178
|
||||||
2026/04/30-22:23:51.847359 7f8d1bfff6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.016315 7fdf5affd6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:51.847398 7f8d1bfff6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at '!items!yqjKyTCgpclCuHyK' @ 466 : 1
|
2026/05/24-17:30:55.041863 7fdf5affd6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at '!items!yqjKyTCgpclCuHyK' @ 544 : 1
|
||||||
2026/04/30-22:23:51.847407 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:30:55.041874 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
2026/04/30-22:23:51.851192 7f8d1bfff6c0 Generated table #167@1: 39 keys, 31217 bytes
|
2026/05/24-17:30:55.045796 7fdf5affd6c0 Generated table #181@1: 39 keys, 30255 bytes
|
||||||
2026/04/30-22:23:51.851218 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 31217 bytes
|
2026/05/24-17:30:55.045823 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 30255 bytes
|
||||||
2026/04/30-22:23:51.857271 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:30:55.051904 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
2026/04/30-22:23:51.857404 7f8d1bfff6c0 Delete type=2 #158
|
2026/05/24-17:30:55.051997 7fdf5affd6c0 Delete type=2 #172
|
||||||
2026/04/30-22:23:51.857538 7f8d1bfff6c0 Delete type=2 #166
|
2026/05/24-17:30:55.052110 7fdf5affd6c0 Delete type=2 #180
|
||||||
2026/04/30-22:23:51.888397 7f8d1bfff6c0 Manual compaction at level-1 from '!items!yqjKyTCgpclCuHyK' @ 466 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.062783 7fdf5affd6c0 Manual compaction at level-1 from '!items!yqjKyTCgpclCuHyK' @ 544 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:27.438726 7fddd8fbd6c0 Recovering log #155
|
2026/05/18-20:27:59.380990 7f5a47fff6c0 Recovering log #170
|
||||||
2026/04/14-09:09:27.499900 7fddd8fbd6c0 Delete type=3 #153
|
2026/05/18-20:27:59.439837 7f5a47fff6c0 Delete type=3 #168
|
||||||
2026/04/14-09:09:27.500001 7fddd8fbd6c0 Delete type=0 #155
|
2026/05/18-20:27:59.439975 7f5a47fff6c0 Delete type=0 #170
|
||||||
2026/04/14-09:37:12.020541 7fddca1c26c0 Level-0 table #162: started
|
2026/05/18-20:29:47.426912 7f5a467fc6c0 Level-0 table #176: started
|
||||||
2026/04/14-09:37:12.020592 7fddca1c26c0 Level-0 table #162: 0 bytes OK
|
2026/05/18-20:29:47.426974 7f5a467fc6c0 Level-0 table #176: 0 bytes OK
|
||||||
2026/04/14-09:37:12.026769 7fddca1c26c0 Delete type=0 #160
|
2026/05/18-20:29:47.437378 7f5a467fc6c0 Delete type=0 #174
|
||||||
2026/04/14-09:37:12.041308 7fddca1c26c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.437633 7f5a467fc6c0 Manual compaction at level-0 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.041379 7fddca1c26c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.437658 7f5a467fc6c0 Manual compaction at level-1 from '!items!04MdBSzwkYWUMJBC' @ 72057594037927935 : 1 .. '!items!yqjKyTCgpclCuHyK' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000100
|
MANIFEST-000112
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/04/30-16:49:03.755979 7f8fb27bf6c0 Recovering log #98
|
2026/05/24-16:50:54.623242 7fdf5bfff6c0 Recovering log #110
|
||||||
2026/04/30-16:49:03.766123 7f8fb27bf6c0 Delete type=0 #98
|
2026/05/24-16:50:54.633193 7fdf5bfff6c0 Delete type=3 #108
|
||||||
2026/04/30-16:49:03.766183 7f8fb27bf6c0 Delete type=3 #96
|
2026/05/24-16:50:54.633252 7fdf5bfff6c0 Delete type=0 #110
|
||||||
2026/04/30-22:23:51.920403 7f8d1bfff6c0 Level-0 table #103: started
|
2026/05/24-17:30:55.081463 7fdf5affd6c0 Level-0 table #115: started
|
||||||
2026/04/30-22:23:51.920439 7f8d1bfff6c0 Level-0 table #103: 0 bytes OK
|
2026/05/24-17:30:55.081487 7fdf5affd6c0 Level-0 table #115: 0 bytes OK
|
||||||
2026/04/30-22:23:51.926516 7f8d1bfff6c0 Delete type=0 #101
|
2026/05/24-17:30:55.087560 7fdf5affd6c0 Delete type=0 #113
|
||||||
2026/04/30-22:23:51.926650 7f8d1bfff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.097957 7fdf5affd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/04/14-09:09:27.758609 7fddd97be6c0 Recovering log #94
|
2026/05/18-20:27:59.766699 7f5a47fff6c0 Recovering log #106
|
||||||
2026/04/14-09:09:27.824657 7fddd97be6c0 Delete type=3 #92
|
2026/05/18-20:27:59.824574 7f5a47fff6c0 Delete type=3 #104
|
||||||
2026/04/14-09:09:27.824750 7fddd97be6c0 Delete type=0 #94
|
2026/05/18-20:27:59.824666 7f5a47fff6c0 Delete type=0 #106
|
||||||
2026/04/14-09:37:12.054469 7fddca1c26c0 Level-0 table #99: started
|
2026/05/18-20:29:47.472932 7f5a467fc6c0 Level-0 table #111: started
|
||||||
2026/04/14-09:37:12.054520 7fddca1c26c0 Level-0 table #99: 0 bytes OK
|
2026/05/18-20:29:47.473002 7f5a467fc6c0 Level-0 table #111: 0 bytes OK
|
||||||
2026/04/14-09:37:12.061714 7fddca1c26c0 Delete type=0 #97
|
2026/05/18-20:29:47.479740 7f5a467fc6c0 Delete type=0 #109
|
||||||
2026/04/14-09:37:12.068669 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.479998 7f5a467fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000105
|
MANIFEST-000119
|
||||||
|
|||||||
+15
-15
@@ -1,15 +1,15 @@
|
|||||||
2026/04/30-16:49:03.726214 7f8fb27bf6c0 Recovering log #103
|
2026/05/24-16:50:54.597446 7fdf5b7fe6c0 Recovering log #117
|
||||||
2026/04/30-16:49:03.736164 7f8fb27bf6c0 Delete type=0 #103
|
2026/05/24-16:50:54.607335 7fdf5b7fe6c0 Delete type=3 #115
|
||||||
2026/04/30-16:49:03.736235 7f8fb27bf6c0 Delete type=3 #101
|
2026/05/24-16:50:54.607379 7fdf5b7fe6c0 Delete type=0 #117
|
||||||
2026/04/30-22:23:51.857614 7f8d1bfff6c0 Level-0 table #108: started
|
2026/05/24-17:30:55.052370 7fdf5affd6c0 Level-0 table #122: started
|
||||||
2026/04/30-22:23:51.861339 7f8d1bfff6c0 Level-0 table #108: 20168 bytes OK
|
2026/05/24-17:30:55.056355 7fdf5affd6c0 Level-0 table #122: 20248 bytes OK
|
||||||
2026/04/30-22:23:51.867931 7f8d1bfff6c0 Delete type=0 #106
|
2026/05/24-17:30:55.062721 7fdf5affd6c0 Delete type=0 #120
|
||||||
2026/04/30-22:23:51.888409 7f8d1bfff6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.081449 7fdf5affd6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:51.888438 7f8d1bfff6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at '!items!zRJfxioYBRq4iSBR' @ 186 : 1
|
2026/05/24-17:30:55.087647 7fdf5affd6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at '!items!zRJfxioYBRq4iSBR' @ 258 : 1
|
||||||
2026/04/30-22:23:51.888444 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:30:55.087653 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
2026/04/30-22:23:51.892428 7f8d1bfff6c0 Generated table #109@1: 42 keys, 19940 bytes
|
2026/05/24-17:30:55.091676 7fdf5affd6c0 Generated table #123@1: 42 keys, 19863 bytes
|
||||||
2026/04/30-22:23:51.892452 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 19940 bytes
|
2026/05/24-17:30:55.091690 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 19863 bytes
|
||||||
2026/04/30-22:23:51.899595 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:30:55.097740 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
2026/04/30-22:23:51.899748 7f8d1bfff6c0 Delete type=2 #100
|
2026/05/24-17:30:55.097812 7fdf5affd6c0 Delete type=2 #114
|
||||||
2026/04/30-22:23:51.899930 7f8d1bfff6c0 Delete type=2 #108
|
2026/05/24-17:30:55.097896 7fdf5affd6c0 Delete type=2 #122
|
||||||
2026/04/30-22:23:51.926607 7f8d1bfff6c0 Manual compaction at level-1 from '!items!zRJfxioYBRq4iSBR' @ 186 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.104450 7fdf5affd6c0 Manual compaction at level-1 from '!items!zRJfxioYBRq4iSBR' @ 258 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:27.635794 7fddd9fbf6c0 Recovering log #97
|
2026/05/18-20:27:59.596317 7f5a47fff6c0 Recovering log #112
|
||||||
2026/04/14-09:09:27.685698 7fddd9fbf6c0 Delete type=3 #95
|
2026/05/18-20:27:59.649784 7f5a47fff6c0 Delete type=3 #110
|
||||||
2026/04/14-09:09:27.685843 7fddd9fbf6c0 Delete type=0 #97
|
2026/05/18-20:27:59.649914 7f5a47fff6c0 Delete type=0 #112
|
||||||
2026/04/14-09:37:12.041593 7fddca1c26c0 Level-0 table #104: started
|
2026/05/18-20:29:47.456954 7f5a467fc6c0 Level-0 table #118: started
|
||||||
2026/04/14-09:37:12.041649 7fddca1c26c0 Level-0 table #104: 0 bytes OK
|
2026/05/18-20:29:47.457019 7f5a467fc6c0 Level-0 table #118: 0 bytes OK
|
||||||
2026/04/14-09:37:12.047872 7fddca1c26c0 Delete type=0 #102
|
2026/05/18-20:29:47.463638 7f5a467fc6c0 Delete type=0 #116
|
||||||
2026/04/14-09:37:12.068624 7fddca1c26c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.463868 7f5a467fc6c0 Manual compaction at level-0 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.068703 7fddca1c26c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.463950 7f5a467fc6c0 Manual compaction at level-1 from '!folders!8swFcTr6RH7BnGiu' @ 72057594037927935 : 1 .. '!items!zRJfxioYBRq4iSBR' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000100
|
MANIFEST-000112
|
||||||
|
|||||||
+7
-7
@@ -1,7 +1,7 @@
|
|||||||
2026/04/30-16:49:03.767807 7f8fb17bd6c0 Recovering log #98
|
2026/05/24-16:50:54.634756 7fdfa8dfe6c0 Recovering log #110
|
||||||
2026/04/30-16:49:03.777077 7f8fb17bd6c0 Delete type=0 #98
|
2026/05/24-16:50:54.645375 7fdfa8dfe6c0 Delete type=3 #108
|
||||||
2026/04/30-16:49:03.777137 7f8fb17bd6c0 Delete type=3 #96
|
2026/05/24-16:50:54.645440 7fdfa8dfe6c0 Delete type=0 #110
|
||||||
2026/04/30-22:23:51.926732 7f8d1bfff6c0 Level-0 table #103: started
|
2026/05/24-17:30:55.097965 7fdf5affd6c0 Level-0 table #115: started
|
||||||
2026/04/30-22:23:51.926790 7f8d1bfff6c0 Level-0 table #103: 0 bytes OK
|
2026/05/24-17:30:55.097985 7fdf5affd6c0 Level-0 table #115: 0 bytes OK
|
||||||
2026/04/30-22:23:51.933433 7f8d1bfff6c0 Delete type=0 #101
|
2026/05/24-17:30:55.104346 7fdf5affd6c0 Delete type=0 #113
|
||||||
2026/04/30-22:23:51.960805 7f8d1bfff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.131378 7fdf5affd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
2026/04/14-09:09:27.828638 7fddcbfff6c0 Recovering log #94
|
2026/05/18-20:27:59.838862 7f5a46ffd6c0 Recovering log #106
|
||||||
2026/04/14-09:09:27.891453 7fddcbfff6c0 Delete type=3 #92
|
2026/05/18-20:27:59.893943 7f5a46ffd6c0 Delete type=3 #104
|
||||||
2026/04/14-09:09:27.891583 7fddcbfff6c0 Delete type=0 #94
|
2026/05/18-20:27:59.894068 7f5a46ffd6c0 Delete type=0 #106
|
||||||
2026/04/14-09:37:12.061903 7fddca1c26c0 Level-0 table #99: started
|
2026/05/18-20:29:47.480953 7f5a467fc6c0 Level-0 table #111: started
|
||||||
2026/04/14-09:37:12.061955 7fddca1c26c0 Level-0 table #99: 0 bytes OK
|
2026/05/18-20:29:47.481012 7f5a467fc6c0 Level-0 table #111: 0 bytes OK
|
||||||
2026/04/14-09:37:12.068457 7fddca1c26c0 Delete type=0 #97
|
2026/05/18-20:29:47.487588 7f5a467fc6c0 Delete type=0 #109
|
||||||
2026/04/14-09:37:12.068687 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.487817 7f5a467fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000081
|
MANIFEST-000093
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
2026/04/30-16:49:03.778670 7f8fb27bf6c0 Recovering log #79
|
2026/05/24-16:50:54.647193 7fdf5b7fe6c0 Recovering log #91
|
||||||
2026/04/30-16:49:03.788930 7f8fb27bf6c0 Delete type=0 #79
|
2026/05/24-16:50:54.656827 7fdf5b7fe6c0 Delete type=3 #89
|
||||||
2026/04/30-16:49:03.788992 7f8fb27bf6c0 Delete type=3 #77
|
2026/05/24-16:50:54.656870 7fdf5b7fe6c0 Delete type=0 #91
|
||||||
2026/04/30-22:23:51.943487 7f8d1bfff6c0 Level-0 table #84: started
|
2026/05/24-17:30:55.114778 7fdf5affd6c0 Level-0 table #96: started
|
||||||
2026/04/30-22:23:51.943518 7f8d1bfff6c0 Level-0 table #84: 0 bytes OK
|
2026/05/24-17:30:55.114807 7fdf5affd6c0 Level-0 table #96: 0 bytes OK
|
||||||
2026/04/30-22:23:51.951135 7f8d1bfff6c0 Delete type=0 #82
|
2026/05/24-17:30:55.121001 7fdf5affd6c0 Delete type=0 #94
|
||||||
2026/04/30-22:23:51.960834 7f8d1bfff6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.131407 7fdf5affd6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:51.972445 7f8d1bfff6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.131437 7fdf5affd6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:27.895712 7fddd8fbd6c0 Recovering log #73
|
2026/05/18-20:27:59.909714 7f5a477fe6c0 Recovering log #87
|
||||||
2026/04/14-09:09:27.973731 7fddd8fbd6c0 Delete type=3 #71
|
2026/05/18-20:27:59.963841 7f5a477fe6c0 Delete type=3 #85
|
||||||
2026/04/14-09:09:27.973870 7fddd8fbd6c0 Delete type=0 #73
|
2026/05/18-20:27:59.963963 7f5a477fe6c0 Delete type=0 #87
|
||||||
2026/04/14-09:37:12.075441 7fddca1c26c0 Level-0 table #80: started
|
2026/05/18-20:29:47.488790 7f5a467fc6c0 Level-0 table #92: started
|
||||||
2026/04/14-09:37:12.075490 7fddca1c26c0 Level-0 table #80: 0 bytes OK
|
2026/05/18-20:29:47.488852 7f5a467fc6c0 Level-0 table #92: 0 bytes OK
|
||||||
2026/04/14-09:37:12.081733 7fddca1c26c0 Delete type=0 #78
|
2026/05/18-20:29:47.496720 7f5a467fc6c0 Delete type=0 #90
|
||||||
2026/04/14-09:37:12.095930 7fddca1c26c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.497943 7f5a467fc6c0 Manual compaction at level-0 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.095983 7fddca1c26c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.498034 7f5a467fc6c0 Manual compaction at level-1 from '!journal!26ZqV9BvS47hrLmV' @ 72057594037927935 : 1 .. '!journal.pages!26ZqV9BvS47hrLmV.ZS4936SEQUT9IA8i' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000105
|
MANIFEST-000119
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
2026/04/30-16:49:03.702208 7f8fb27bf6c0 Recovering log #103
|
2026/05/24-16:50:54.573746 7fdf5bfff6c0 Recovering log #117
|
||||||
2026/04/30-16:49:03.711665 7f8fb27bf6c0 Delete type=0 #103
|
2026/05/24-16:50:54.583876 7fdf5bfff6c0 Delete type=3 #115
|
||||||
2026/04/30-16:49:03.711763 7f8fb27bf6c0 Delete type=3 #101
|
2026/05/24-16:50:54.583933 7fdf5bfff6c0 Delete type=0 #117
|
||||||
2026/04/30-22:23:51.868071 7f8d1bfff6c0 Level-0 table #108: started
|
2026/05/24-17:30:55.026316 7fdf5affd6c0 Level-0 table #122: started
|
||||||
2026/04/30-22:23:51.871388 7f8d1bfff6c0 Level-0 table #108: 2345 bytes OK
|
2026/05/24-17:30:55.029368 7fdf5affd6c0 Level-0 table #122: 1988 bytes OK
|
||||||
2026/04/30-22:23:51.877888 7f8d1bfff6c0 Delete type=0 #106
|
2026/05/24-17:30:55.035351 7fdf5affd6c0 Delete type=0 #120
|
||||||
2026/04/30-22:23:51.888419 7f8d1bfff6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.052192 7fdf5affd6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:51.909593 7f8d1bfff6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at '!items!yleVHgRqGoYLvzxT' @ 40 : 1
|
2026/05/24-17:30:55.062793 7fdf5affd6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at '!items!yleVHgRqGoYLvzxT' @ 56 : 1
|
||||||
2026/04/30-22:23:51.909602 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:30:55.062796 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
2026/04/30-22:23:51.913005 7f8d1bfff6c0 Generated table #109@1: 8 keys, 2345 bytes
|
2026/05/24-17:30:55.065855 7fdf5affd6c0 Generated table #123@1: 8 keys, 1988 bytes
|
||||||
2026/04/30-22:23:51.913018 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 2345 bytes
|
2026/05/24-17:30:55.065865 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 1988 bytes
|
||||||
2026/04/30-22:23:51.919740 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:30:55.071780 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
2026/04/30-22:23:51.919925 7f8d1bfff6c0 Delete type=2 #100
|
2026/05/24-17:30:55.071820 7fdf5affd6c0 Delete type=2 #114
|
||||||
2026/04/30-22:23:51.920251 7f8d1bfff6c0 Delete type=2 #108
|
2026/05/24-17:30:55.071877 7fdf5affd6c0 Delete type=2 #122
|
||||||
2026/04/30-22:23:51.926626 7f8d1bfff6c0 Manual compaction at level-1 from '!items!yleVHgRqGoYLvzxT' @ 40 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.087630 7fdf5affd6c0 Manual compaction at level-1 from '!items!yleVHgRqGoYLvzxT' @ 56 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:27.505383 7fddcbfff6c0 Recovering log #97
|
2026/05/18-20:27:59.461881 7f5a46ffd6c0 Recovering log #112
|
||||||
2026/04/14-09:09:27.573701 7fddcbfff6c0 Delete type=3 #95
|
2026/05/18-20:27:59.517849 7f5a46ffd6c0 Delete type=3 #110
|
||||||
2026/04/14-09:09:27.573885 7fddcbfff6c0 Delete type=0 #97
|
2026/05/18-20:27:59.517983 7f5a46ffd6c0 Delete type=0 #112
|
||||||
2026/04/14-09:37:12.013930 7fddca1c26c0 Level-0 table #104: started
|
2026/05/18-20:29:47.438640 7f5a467fc6c0 Level-0 table #118: started
|
||||||
2026/04/14-09:37:12.014060 7fddca1c26c0 Level-0 table #104: 0 bytes OK
|
2026/05/18-20:29:47.438693 7f5a467fc6c0 Level-0 table #118: 0 bytes OK
|
||||||
2026/04/14-09:37:12.020364 7fddca1c26c0 Delete type=0 #102
|
2026/05/18-20:29:47.445247 7f5a467fc6c0 Delete type=0 #116
|
||||||
2026/04/14-09:37:12.041283 7fddca1c26c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.445955 7f5a467fc6c0 Manual compaction at level-0 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.041363 7fddca1c26c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.446012 7f5a467fc6c0 Manual compaction at level-1 from '!items!QHovFMj93BC7bqBu' @ 72057594037927935 : 1 .. '!items!yleVHgRqGoYLvzxT' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1 +1 @@
|
|||||||
MANIFEST-000100
|
MANIFEST-000112
|
||||||
|
|||||||
+7
-7
@@ -1,7 +1,7 @@
|
|||||||
2026/04/30-16:49:03.713557 7f8fb17bd6c0 Recovering log #98
|
2026/05/24-16:50:54.586100 7fdfa8dfe6c0 Recovering log #110
|
||||||
2026/04/30-16:49:03.723842 7f8fb17bd6c0 Delete type=0 #98
|
2026/05/24-16:50:54.595631 7fdfa8dfe6c0 Delete type=3 #108
|
||||||
2026/04/30-16:49:03.723909 7f8fb17bd6c0 Delete type=3 #96
|
2026/05/24-16:50:54.595694 7fdfa8dfe6c0 Delete type=0 #110
|
||||||
2026/04/30-22:23:51.840637 7f8d1bfff6c0 Level-0 table #103: started
|
2026/05/24-17:30:55.035470 7fdf5affd6c0 Level-0 table #115: started
|
||||||
2026/04/30-22:23:51.840659 7f8d1bfff6c0 Level-0 table #103: 0 bytes OK
|
2026/05/24-17:30:55.035483 7fdf5affd6c0 Level-0 table #115: 0 bytes OK
|
||||||
2026/04/30-22:23:51.847231 7f8d1bfff6c0 Delete type=0 #101
|
2026/05/24-17:30:55.041734 7fdf5affd6c0 Delete type=0 #113
|
||||||
2026/04/30-22:23:51.847367 7f8d1bfff6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.052200 7fdf5affd6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
+7
-7
@@ -1,7 +1,7 @@
|
|||||||
2026/04/14-09:09:27.576965 7fddd97be6c0 Recovering log #94
|
2026/05/18-20:27:59.526598 7f5a94bff6c0 Recovering log #106
|
||||||
2026/04/14-09:09:27.633055 7fddd97be6c0 Delete type=3 #92
|
2026/05/18-20:27:59.589070 7f5a94bff6c0 Delete type=3 #104
|
||||||
2026/04/14-09:09:27.633158 7fddd97be6c0 Delete type=0 #94
|
2026/05/18-20:27:59.589252 7f5a94bff6c0 Delete type=0 #106
|
||||||
2026/04/14-09:37:12.034435 7fddca1c26c0 Level-0 table #99: started
|
2026/05/18-20:29:47.448116 7f5a467fc6c0 Level-0 table #111: started
|
||||||
2026/04/14-09:37:12.034485 7fddca1c26c0 Level-0 table #99: 0 bytes OK
|
2026/05/18-20:29:47.448187 7f5a467fc6c0 Level-0 table #111: 0 bytes OK
|
||||||
2026/04/14-09:37:12.041061 7fddca1c26c0 Delete type=0 #97
|
2026/05/18-20:29:47.455433 7f5a467fc6c0 Delete type=0 #109
|
||||||
2026/04/14-09:37:12.041346 7fddca1c26c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.455684 7f5a467fc6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000105
|
MANIFEST-000119
|
||||||
|
|||||||
+15
-15
@@ -1,15 +1,15 @@
|
|||||||
2026/04/30-16:49:03.744472 7f8fb17bd6c0 Recovering log #103
|
2026/05/24-16:50:54.610807 7fdfa95ff6c0 Recovering log #117
|
||||||
2026/04/30-16:49:03.753999 7f8fb17bd6c0 Delete type=0 #103
|
2026/05/24-16:50:54.620344 7fdfa95ff6c0 Delete type=3 #115
|
||||||
2026/04/30-16:49:03.754068 7f8fb17bd6c0 Delete type=3 #101
|
2026/05/24-16:50:54.620394 7fdfa95ff6c0 Delete type=0 #117
|
||||||
2026/04/30-22:23:51.878010 7f8d1bfff6c0 Level-0 table #108: started
|
2026/05/24-17:30:55.071908 7fdf5affd6c0 Level-0 table #122: started
|
||||||
2026/04/30-22:23:51.882231 7f8d1bfff6c0 Level-0 table #108: 6693 bytes OK
|
2026/05/24-17:30:55.075519 7fdf5affd6c0 Level-0 table #122: 5396 bytes OK
|
||||||
2026/04/30-22:23:51.888264 7f8d1bfff6c0 Delete type=0 #106
|
2026/05/24-17:30:55.081331 7fdf5affd6c0 Delete type=0 #120
|
||||||
2026/04/30-22:23:51.888426 7f8d1bfff6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.097948 7fdf5affd6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:51.900027 7f8d1bfff6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at '!items!yFvuDyV00NdojxGt' @ 67 : 1
|
2026/05/24-17:30:55.104470 7fdf5affd6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at '!items!yFvuDyV00NdojxGt' @ 93 : 1
|
||||||
2026/04/30-22:23:51.900038 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:30:55.104477 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
2026/04/30-22:23:51.903328 7f8d1bfff6c0 Generated table #109@1: 15 keys, 6882 bytes
|
2026/05/24-17:30:55.108502 7fdf5affd6c0 Generated table #123@1: 15 keys, 5574 bytes
|
||||||
2026/04/30-22:23:51.903362 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 6882 bytes
|
2026/05/24-17:30:55.108520 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 5574 bytes
|
||||||
2026/04/30-22:23:51.909320 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:30:55.114469 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
2026/04/30-22:23:51.909402 7f8d1bfff6c0 Delete type=2 #100
|
2026/05/24-17:30:55.114575 7fdf5affd6c0 Delete type=2 #114
|
||||||
2026/04/30-22:23:51.909524 7f8d1bfff6c0 Delete type=2 #108
|
2026/05/24-17:30:55.114702 7fdf5affd6c0 Delete type=2 #122
|
||||||
2026/04/30-22:23:51.926616 7f8d1bfff6c0 Manual compaction at level-1 from '!items!yFvuDyV00NdojxGt' @ 67 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.131396 7fdf5affd6c0 Manual compaction at level-1 from '!items!yFvuDyV00NdojxGt' @ 93 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:27.691723 7fddd8fbd6c0 Recovering log #97
|
2026/05/18-20:27:59.682456 7f5a46ffd6c0 Recovering log #112
|
||||||
2026/04/14-09:09:27.751300 7fddd8fbd6c0 Delete type=3 #95
|
2026/05/18-20:27:59.750017 7f5a46ffd6c0 Delete type=3 #110
|
||||||
2026/04/14-09:09:27.751449 7fddd8fbd6c0 Delete type=0 #97
|
2026/05/18-20:27:59.750123 7f5a46ffd6c0 Delete type=0 #112
|
||||||
2026/04/14-09:37:12.048047 7fddca1c26c0 Level-0 table #104: started
|
2026/05/18-20:29:47.464929 7f5a467fc6c0 Level-0 table #118: started
|
||||||
2026/04/14-09:37:12.048094 7fddca1c26c0 Level-0 table #104: 0 bytes OK
|
2026/05/18-20:29:47.465002 7f5a467fc6c0 Level-0 table #118: 0 bytes OK
|
||||||
2026/04/14-09:37:12.054263 7fddca1c26c0 Delete type=0 #102
|
2026/05/18-20:29:47.471758 7f5a467fc6c0 Delete type=0 #116
|
||||||
2026/04/14-09:37:12.068648 7fddca1c26c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.472004 7f5a467fc6c0 Manual compaction at level-0 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.068720 7fddca1c26c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.472035 7f5a467fc6c0 Manual compaction at level-1 from '!folders!qrqRBmTP6UuS30DF' @ 72057594037927935 : 1 .. '!items!yFvuDyV00NdojxGt' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000006
|
MANIFEST-000021
|
||||||
|
|||||||
+50
-15
@@ -1,15 +1,50 @@
|
|||||||
2026/04/30-16:49:03.826939 7f8fb17bd6c0 Recovering log #4
|
2026/05/24-16:50:54.697724 7fdfa8dfe6c0 Recovering log #18
|
||||||
2026/04/30-16:49:03.836110 7f8fb17bd6c0 Delete type=0 #4
|
2026/05/24-16:50:54.707598 7fdfa8dfe6c0 Delete type=3 #16
|
||||||
2026/04/30-16:49:03.836179 7f8fb17bd6c0 Delete type=3 #2
|
2026/05/24-16:50:54.707634 7fdfa8dfe6c0 Delete type=0 #18
|
||||||
2026/04/30-22:23:52.137946 7f8d1bfff6c0 Level-0 table #9: started
|
2026/05/24-17:00:32.390913 7fdf5affd6c0 Level-0 table #24: started
|
||||||
2026/04/30-22:23:52.146943 7f8d1bfff6c0 Level-0 table #9: 455846 bytes OK
|
2026/05/24-17:00:32.409568 7fdf5affd6c0 Level-0 table #24: 1225651 bytes OK
|
||||||
2026/04/30-22:23:52.153617 7f8d1bfff6c0 Delete type=0 #7
|
2026/05/24-17:00:32.416341 7fdf5affd6c0 Delete type=0 #22
|
||||||
2026/04/30-22:23:52.154161 7f8d1bfff6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
|
2026/05/24-17:03:56.805332 7fdf5affd6c0 Level-0 table #26: started
|
||||||
2026/04/30-22:23:52.164598 7f8d1bfff6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 5340 : 1
|
2026/05/24-17:03:56.824851 7fdf5affd6c0 Level-0 table #26: 1099794 bytes OK
|
||||||
2026/04/30-22:23:52.164609 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:03:56.831981 7fdf5affd6c0 Delete type=0 #23
|
||||||
2026/04/30-22:23:52.173070 7f8d1bfff6c0 Generated table #10@1: 2334 keys, 292055 bytes
|
2026/05/24-17:12:00.516549 7fdf5affd6c0 Level-0 table #28: started
|
||||||
2026/04/30-22:23:52.173097 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 292055 bytes
|
2026/05/24-17:12:00.550743 7fdf5affd6c0 Level-0 table #28: 1268131 bytes OK
|
||||||
2026/04/30-22:23:52.179150 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:12:00.582730 7fdf5affd6c0 Delete type=0 #25
|
||||||
2026/04/30-22:23:52.179286 7f8d1bfff6c0 Delete type=2 #5
|
2026/05/24-17:16:09.186372 7fdf5affd6c0 Level-0 table #30: started
|
||||||
2026/04/30-22:23:52.179580 7f8d1bfff6c0 Delete type=2 #9
|
2026/05/24-17:16:09.219830 7fdf5affd6c0 Level-0 table #30: 1432074 bytes OK
|
||||||
2026/04/30-22:23:52.179841 7f8d1bfff6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 5340 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
|
2026/05/24-17:16:09.258561 7fdf5affd6c0 Delete type=0 #27
|
||||||
|
2026/05/24-17:18:30.349891 7fdf5affd6c0 Level-0 table #32: started
|
||||||
|
2026/05/24-17:18:30.379065 7fdf5affd6c0 Level-0 table #32: 1608171 bytes OK
|
||||||
|
2026/05/24-17:18:30.388404 7fdf5affd6c0 Delete type=0 #29
|
||||||
|
2026/05/24-17:18:30.388776 7fdf5affd6c0 Compacting 4@0 + 1@1 files
|
||||||
|
2026/05/24-17:18:30.411581 7fdf5affd6c0 Generated table #33@0: 6650 keys, 986248 bytes
|
||||||
|
2026/05/24-17:18:30.411611 7fdf5affd6c0 Compacted 4@0 + 1@1 files => 986248 bytes
|
||||||
|
2026/05/24-17:18:30.420963 7fdf5affd6c0 compacted to: files[ 0 1 1 0 0 0 0 ]
|
||||||
|
2026/05/24-17:18:30.421191 7fdf5affd6c0 Delete type=2 #24
|
||||||
|
2026/05/24-17:18:30.421480 7fdf5affd6c0 Delete type=2 #26
|
||||||
|
2026/05/24-17:18:30.421601 7fdf5affd6c0 Delete type=2 #28
|
||||||
|
2026/05/24-17:18:30.421786 7fdf5affd6c0 Delete type=2 #30
|
||||||
|
2026/05/24-17:18:30.422133 7fdf5affd6c0 Delete type=2 #32
|
||||||
|
2026/05/24-17:21:12.979159 7fdf5affd6c0 Level-0 table #35: started
|
||||||
|
2026/05/24-17:21:13.003011 7fdf5affd6c0 Level-0 table #35: 1764850 bytes OK
|
||||||
|
2026/05/24-17:21:13.009270 7fdf5affd6c0 Delete type=0 #31
|
||||||
|
2026/05/24-17:30:55.160858 7fdf5affd6c0 Level-0 table #37: started
|
||||||
|
2026/05/24-17:30:55.180790 7fdf5affd6c0 Level-0 table #37: 1929143 bytes OK
|
||||||
|
2026/05/24-17:30:55.187168 7fdf5affd6c0 Delete type=0 #34
|
||||||
|
2026/05/24-17:30:55.187713 7fdf5affd6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 70890 : 1
|
||||||
|
2026/05/24-17:30:55.187715 7fdf5affd6c0 Compacting 2@0 + 1@1 files
|
||||||
|
2026/05/24-17:30:55.203256 7fdf5affd6c0 Generated table #38@0: 7978 keys, 1186513 bytes
|
||||||
|
2026/05/24-17:30:55.203267 7fdf5affd6c0 Compacted 2@0 + 1@1 files => 1186513 bytes
|
||||||
|
2026/05/24-17:30:55.209485 7fdf5affd6c0 compacted to: files[ 0 1 1 0 0 0 0 ]
|
||||||
|
2026/05/24-17:30:55.209584 7fdf5affd6c0 Delete type=2 #33
|
||||||
|
2026/05/24-17:30:55.209874 7fdf5affd6c0 Delete type=2 #35
|
||||||
|
2026/05/24-17:30:55.210245 7fdf5affd6c0 Delete type=2 #37
|
||||||
|
2026/05/24-17:30:55.237542 7fdf5affd6c0 Manual compaction at level-0 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 70890 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
|
||||||
|
2026/05/24-17:30:55.237576 7fdf5affd6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 92964 : 1
|
||||||
|
2026/05/24-17:30:55.237582 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
|
2026/05/24-17:30:55.258486 7fdf5affd6c0 Generated table #39@1: 7978 keys, 1186513 bytes
|
||||||
|
2026/05/24-17:30:55.258511 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 1186513 bytes
|
||||||
|
2026/05/24-17:30:55.264533 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2026/05/24-17:30:55.264684 7fdf5affd6c0 Delete type=2 #20
|
||||||
|
2026/05/24-17:30:55.264949 7fdf5affd6c0 Delete type=2 #38
|
||||||
|
2026/05/24-17:30:55.283063 7fdf5affd6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 92964 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
2026/04/14-09:09:28.285829 7fddcbfff6c0 Delete type=3 #1
|
2026/05/18-20:28:00.247967 7f5a94bff6c0 Recovering log #13
|
||||||
2026/04/14-09:37:12.115891 7fddca1c26c0 Level-0 table #5: started
|
2026/05/18-20:28:00.322431 7f5a94bff6c0 Delete type=3 #11
|
||||||
2026/04/14-09:37:12.134263 7fddca1c26c0 Level-0 table #5: 442791 bytes OK
|
2026/05/18-20:28:00.322531 7f5a94bff6c0 Delete type=0 #13
|
||||||
2026/04/14-09:37:12.141689 7fddca1c26c0 Delete type=0 #3
|
2026/05/18-20:29:47.524056 7f5a467fc6c0 Level-0 table #19: started
|
||||||
2026/04/14-09:37:12.149394 7fddca1c26c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.536717 7f5a467fc6c0 Level-0 table #19: 417426 bytes OK
|
||||||
|
2026/05/18-20:29:47.544323 7f5a467fc6c0 Delete type=0 #17
|
||||||
|
2026/05/18-20:29:47.545004 7f5a467fc6c0 Manual compaction at level-0 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
|
||||||
|
2026/05/18-20:29:47.545055 7f5a467fc6c0 Manual compaction at level-1 from '!tables!BbXMbmHKcLJrBCmk' @ 72057594037927935 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 12474 : 1
|
||||||
|
2026/05/18-20:29:47.545064 7f5a467fc6c0 Compacting 1@1 + 1@2 files
|
||||||
|
2026/05/18-20:29:47.560513 7f5a467fc6c0 Generated table #20@1: 2998 keys, 417426 bytes
|
||||||
|
2026/05/18-20:29:47.560554 7f5a467fc6c0 Compacted 1@1 + 1@2 files => 417426 bytes
|
||||||
|
2026/05/18-20:29:47.567200 7f5a467fc6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
|
2026/05/18-20:29:47.567433 7f5a467fc6c0 Delete type=2 #15
|
||||||
|
2026/05/18-20:29:47.567841 7f5a467fc6c0 Delete type=2 #19
|
||||||
|
2026/05/18-20:29:47.568160 7f5a467fc6c0 Manual compaction at level-1 from '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 12474 : 1 .. '!tables.results!xe7x4qufBpzLaEby.zyJ49IY9JAmeIucJ' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
MANIFEST-000051
|
MANIFEST-000065
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
2026/04/30-16:49:03.802845 7f8fb17bd6c0 Recovering log #49
|
2026/05/24-16:50:54.673462 7fdfa95ff6c0 Recovering log #63
|
||||||
2026/04/30-16:49:03.812772 7f8fb17bd6c0 Delete type=0 #49
|
2026/05/24-16:50:54.683865 7fdfa95ff6c0 Delete type=3 #61
|
||||||
2026/04/30-16:49:03.812824 7f8fb17bd6c0 Delete type=3 #47
|
2026/05/24-16:50:54.683923 7fdfa95ff6c0 Delete type=0 #63
|
||||||
2026/04/30-22:23:51.933538 7f8d1bfff6c0 Level-0 table #54: started
|
2026/05/24-17:30:55.141699 7fdf5affd6c0 Level-0 table #68: started
|
||||||
2026/04/30-22:23:51.937000 7f8d1bfff6c0 Level-0 table #54: 19466 bytes OK
|
2026/05/24-17:30:55.144973 7fdf5affd6c0 Level-0 table #68: 18651 bytes OK
|
||||||
2026/04/30-22:23:51.943332 7f8d1bfff6c0 Delete type=0 #52
|
2026/05/24-17:30:55.150867 7fdf5affd6c0 Delete type=0 #66
|
||||||
2026/04/30-22:23:51.960822 7f8d1bfff6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.187701 7fdf5affd6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||||
2026/04/30-22:23:51.960857 7f8d1bfff6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at '!items!xFUyR7XECD8QJcIw' @ 165 : 1
|
2026/05/24-17:30:55.227041 7fdf5affd6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at '!items!xFUyR7XECD8QJcIw' @ 231 : 1
|
||||||
2026/04/30-22:23:51.960865 7f8d1bfff6c0 Compacting 1@1 + 1@2 files
|
2026/05/24-17:30:55.227053 7fdf5affd6c0 Compacting 1@1 + 1@2 files
|
||||||
2026/04/30-22:23:51.964712 7f8d1bfff6c0 Generated table #55@1: 33 keys, 19466 bytes
|
2026/05/24-17:30:55.230678 7fdf5affd6c0 Generated table #69@1: 33 keys, 18651 bytes
|
||||||
2026/04/30-22:23:51.964737 7f8d1bfff6c0 Compacted 1@1 + 1@2 files => 19466 bytes
|
2026/05/24-17:30:55.230696 7fdf5affd6c0 Compacted 1@1 + 1@2 files => 18651 bytes
|
||||||
2026/04/30-22:23:51.971716 7f8d1bfff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
2026/05/24-17:30:55.237297 7fdf5affd6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||||
2026/04/30-22:23:51.971820 7f8d1bfff6c0 Delete type=2 #46
|
2026/05/24-17:30:55.237359 7fdf5affd6c0 Delete type=2 #60
|
||||||
2026/04/30-22:23:51.972370 7f8d1bfff6c0 Delete type=2 #54
|
2026/05/24-17:30:55.237471 7fdf5affd6c0 Delete type=2 #68
|
||||||
2026/04/30-22:23:51.992704 7f8d1bfff6c0 Manual compaction at level-1 from '!items!xFUyR7XECD8QJcIw' @ 165 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
2026/05/24-17:30:55.265203 7fdf5affd6c0 Manual compaction at level-1 from '!items!xFUyR7XECD8QJcIw' @ 231 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2026/04/14-09:09:28.041722 7fddd8fbd6c0 Recovering log #43
|
2026/05/18-20:28:00.088714 7f5a94bff6c0 Recovering log #58
|
||||||
2026/04/14-09:09:28.113572 7fddd8fbd6c0 Delete type=3 #41
|
2026/05/18-20:28:00.147839 7f5a94bff6c0 Delete type=3 #56
|
||||||
2026/04/14-09:09:28.113676 7fddd8fbd6c0 Delete type=0 #43
|
2026/05/18-20:28:00.147945 7f5a94bff6c0 Delete type=0 #58
|
||||||
2026/04/14-09:37:12.081908 7fddca1c26c0 Level-0 table #50: started
|
2026/05/18-20:29:47.507007 7f5a467fc6c0 Level-0 table #64: started
|
||||||
2026/04/14-09:37:12.081954 7fddca1c26c0 Level-0 table #50: 0 bytes OK
|
2026/05/18-20:29:47.507077 7f5a467fc6c0 Level-0 table #64: 0 bytes OK
|
||||||
2026/04/14-09:37:12.089167 7fddca1c26c0 Delete type=0 #48
|
2026/05/18-20:29:47.513818 7f5a467fc6c0 Delete type=0 #62
|
||||||
2026/04/14-09:37:12.095948 7fddca1c26c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.514115 7f5a467fc6c0 Manual compaction at level-0 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||||
2026/04/14-09:37:12.096033 7fddca1c26c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
2026/05/18-20:29:47.514158 7f5a467fc6c0 Manual compaction at level-1 from '!items!0ZfAXacF6oWS120o' @ 72057594037927935 : 1 .. '!items!xFUyR7XECD8QJcIw' @ 0 : 0; will stop at (end)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+123
-110
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* MGT2 Commerce – CommerceDialog
|
* MGT2 Commerce – CommerceDialog
|
||||||
*
|
*
|
||||||
* Boîte de dialogue principale (FormApplication FoundryVTT).
|
* Boîte de dialogue principale (ApplicationV2 FoundryVTT).
|
||||||
* Trois onglets : Passagers / Cargaison / Commerce spéculatif.
|
* Trois onglets : Passagers / Cargaison / Commerce spéculatif.
|
||||||
* Les résultats sont postés dans le chat.
|
* Les résultats sont postés dans le chat.
|
||||||
*/
|
*/
|
||||||
@@ -10,13 +10,33 @@ import { calculatePassengers, calculateCargo, findAvailableGoods, calculatePrice
|
|||||||
import { searchWorlds, fetchWorldDetail, fetchWorldCoordinates, calcParsecs } from './travellerMapApi.js';
|
import { searchWorlds, fetchWorldDetail, fetchWorldCoordinates, calcParsecs } from './travellerMapApi.js';
|
||||||
import { buildActiveActorContext, COMMERCE_SKILLS, getActiveTravellerActor, rollActorSkillEffect, getActorSkillSummary } from './mgt2eSkills.js';
|
import { buildActiveActorContext, COMMERCE_SKILLS, getActiveTravellerActor, rollActorSkillEffect, getActorSkillSummary } from './mgt2eSkills.js';
|
||||||
|
|
||||||
|
const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api;
|
||||||
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
||||||
|
|
||||||
export class CommerceDialog extends FormApplication {
|
export class CommerceDialog extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
id: 'mgt2-commerce',
|
||||||
|
classes: ['mgt2-commerce-dialog'],
|
||||||
|
position: {
|
||||||
|
width: 780,
|
||||||
|
height: 'auto',
|
||||||
|
},
|
||||||
|
window: {
|
||||||
|
title: 'Commerce – MgT2e',
|
||||||
|
resizable: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static PARTS = {
|
||||||
|
main: {
|
||||||
|
template: `modules/${MODULE_ID}/templates/commerce-dialog.hbs`,
|
||||||
|
root: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
constructor(options = {}) {
|
constructor(options = {}) {
|
||||||
super({}, options);
|
super(options);
|
||||||
// Valeurs par défaut du formulaire
|
this._activeTab = options.initialTab ?? 'passengers';
|
||||||
this._formData = {
|
this._formData = {
|
||||||
pax: {
|
pax: {
|
||||||
uwpDep: '', uwpDest: '', zoneDep: 'normal', zoneDest: 'normal',
|
uwpDep: '', uwpDest: '', zoneDep: 'normal', zoneDest: 'normal',
|
||||||
@@ -30,61 +50,48 @@ export class CommerceDialog extends FormApplication {
|
|||||||
uwp: '', zone: 'normal', brokerSkill: 0, previousAttempts: 0, blackMarket: false,
|
uwp: '', zone: 'normal', brokerSkill: 0, previousAttempts: 0, blackMarket: false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
this._tradeGoods = null; // résultats de findAvailableGoods, conservés pour le calcul des prix
|
this._tradeGoods = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static get defaultOptions() {
|
async _prepareContext() {
|
||||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
|
||||||
id: 'mgt2-commerce',
|
|
||||||
title: 'Commerce – MgT2e',
|
|
||||||
template: `modules/${MODULE_ID}/templates/commerce-dialog.hbs`,
|
|
||||||
width: 780,
|
|
||||||
height: 'auto',
|
|
||||||
resizable: true,
|
|
||||||
tabs: [{
|
|
||||||
navSelector: '.tabs',
|
|
||||||
contentSelector: '.tab-content',
|
|
||||||
initial: 'passengers',
|
|
||||||
}],
|
|
||||||
classes: ['mgt2-commerce-dialog'],
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
getData() {
|
|
||||||
_registerHandlebarsHelpers();
|
_registerHandlebarsHelpers();
|
||||||
return foundry.utils.mergeObject(super.getData(), {
|
return {
|
||||||
...this._formData,
|
...this._formData,
|
||||||
activeActor: buildActiveActorContext(),
|
activeActor: buildActiveActorContext(),
|
||||||
});
|
activeTab: this._activeTab,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
activateListeners(html) {
|
async _onRender(context, options) {
|
||||||
super.activateListeners(html);
|
await super._onRender(context, options);
|
||||||
|
|
||||||
|
const html = this._getForm();
|
||||||
|
if (!html?.length) return;
|
||||||
|
html.addClass('mgt2-commerce-form');
|
||||||
|
|
||||||
|
this._applyThemeStyles(html);
|
||||||
|
|
||||||
// Bouton "Calculer les passagers"
|
|
||||||
html.find('[data-action="calculate-passengers"]').on('click', async (ev) => {
|
html.find('[data-action="calculate-passengers"]').on('click', async (ev) => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
this._readForm(html);
|
this._readForm(html);
|
||||||
await this._handlePassengers();
|
await this._handlePassengers();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Bouton "Calculer la cargaison"
|
|
||||||
html.find('[data-action="calculate-cargo"]').on('click', async (ev) => {
|
html.find('[data-action="calculate-cargo"]').on('click', async (ev) => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
this._readForm(html);
|
this._readForm(html);
|
||||||
await this._handleCargo();
|
await this._handleCargo();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Bouton "Trouver un fournisseur & marchandises"
|
|
||||||
html.find('[data-action="find-goods"]').on('click', async (ev) => {
|
html.find('[data-action="find-goods"]').on('click', async (ev) => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
this._readForm(html);
|
this._readForm(html);
|
||||||
await this._handleFindGoods(html);
|
await this._handleFindGoods(html);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Bouton "Calculer les prix d'achat"
|
|
||||||
html.on('click', '[data-action="calculate-buy-prices"]', async (ev) => {
|
html.on('click', '[data-action="calculate-buy-prices"]', async (ev) => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
this._readForm(html);
|
||||||
await this._handleBuyPrices();
|
await this._handleBuyPrices();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -113,7 +120,65 @@ export class CommerceDialog extends FormApplication {
|
|||||||
this._applyTradeActorData(html);
|
this._applyTradeActorData(html);
|
||||||
});
|
});
|
||||||
|
|
||||||
// ─── Recherche de monde (Traveller Map API) ───────────────────────────────
|
html.find('.tabs .item').on('click', (ev) => {
|
||||||
|
ev.preventDefault();
|
||||||
|
this._readForm(html);
|
||||||
|
this._activateTab($(ev.currentTarget).data('tab'));
|
||||||
|
});
|
||||||
|
|
||||||
|
this._bindWorldSearch(html);
|
||||||
|
|
||||||
|
html.on('click', (ev) => {
|
||||||
|
if (!$(ev.target).closest('.world-search-widget').length) {
|
||||||
|
html.find('.world-search-results').empty();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_getForm() {
|
||||||
|
return $(this.element).find('.window-content');
|
||||||
|
}
|
||||||
|
|
||||||
|
_activateTab(tabId) {
|
||||||
|
const html = this._getForm();
|
||||||
|
if (!html?.length) return;
|
||||||
|
|
||||||
|
this._activeTab = tabId;
|
||||||
|
html.find('.tabs .item').removeClass('active');
|
||||||
|
html.find(`.tabs .item[data-tab="${tabId}"]`).addClass('active');
|
||||||
|
html.find('.tab-content .tab').removeClass('active');
|
||||||
|
html.find(`.tab-content .tab[data-tab="${tabId}"]`).addClass('active');
|
||||||
|
this._applyThemeStyles(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
_applyThemeStyles(html) {
|
||||||
|
html.find('.tabs .item').css({
|
||||||
|
color: '#d8c79a',
|
||||||
|
'text-shadow': 'none',
|
||||||
|
'background-color': '',
|
||||||
|
'border-bottom-color': 'transparent'
|
||||||
|
});
|
||||||
|
|
||||||
|
html.find('.tabs .item.active').css({
|
||||||
|
color: '#d9b24c',
|
||||||
|
'text-shadow': 'none',
|
||||||
|
'background-color': 'rgba(201, 162, 39, 0.18)',
|
||||||
|
'border-bottom-color': '#c9a227'
|
||||||
|
});
|
||||||
|
|
||||||
|
html.find('h3').css({
|
||||||
|
color: '#5f4300',
|
||||||
|
'border-bottom-color': '#b78f26',
|
||||||
|
'text-shadow': 'none'
|
||||||
|
});
|
||||||
|
|
||||||
|
html.find('legend').css({
|
||||||
|
color: '#7a5c00',
|
||||||
|
'text-shadow': 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_bindWorldSearch(html) {
|
||||||
html.find('.world-search-widget').each((_, widget) => {
|
html.find('.world-search-widget').each((_, widget) => {
|
||||||
const $widget = $(widget);
|
const $widget = $(widget);
|
||||||
const $input = $widget.find('.world-search-input');
|
const $input = $widget.find('.world-search-input');
|
||||||
@@ -134,12 +199,11 @@ export class CommerceDialog extends FormApplication {
|
|||||||
if (!worlds.length) {
|
if (!worlds.length) {
|
||||||
$results.append('<li class="no-result">Aucun monde trouvé</li>');
|
$results.append('<li class="no-result">Aucun monde trouvé</li>');
|
||||||
} else {
|
} else {
|
||||||
worlds.slice(0, 10).forEach(w => {
|
worlds.slice(0, 10).forEach((w) => {
|
||||||
const $li = $(`<li data-sector="${w.sector}" data-hex="${w.hex}"><span class="world-name">${w.name}</span> <span class="world-uwp">${w.uwp}</span> <span class="world-sector">${w.sector}</span></li>`);
|
const $li = $(`<li data-sector="${w.sector}" data-hex="${w.hex}"><span class="world-name">${w.name}</span> <span class="world-uwp">${w.uwp}</span> <span class="world-sector">${w.sector}</span></li>`);
|
||||||
$li.on('click', async () => {
|
$li.on('click', async () => {
|
||||||
$results.empty();
|
$results.empty();
|
||||||
$input.val(w.name);
|
$input.val(w.name);
|
||||||
// Récupère les détails (UWP précis + zone) et les coordonnées en parallèle
|
|
||||||
const [detail, coords] = await Promise.all([
|
const [detail, coords] = await Promise.all([
|
||||||
fetchWorldDetail(w.sector, w.hex).catch(() => null),
|
fetchWorldDetail(w.sector, w.hex).catch(() => null),
|
||||||
fetchWorldCoordinates(w.sector, w.hex).catch(() => null),
|
fetchWorldCoordinates(w.sector, w.hex).catch(() => null),
|
||||||
@@ -150,11 +214,8 @@ export class CommerceDialog extends FormApplication {
|
|||||||
|
|
||||||
html.find(`[name="${uwpTarget}"]`).val(resolvedUwp);
|
html.find(`[name="${uwpTarget}"]`).val(resolvedUwp);
|
||||||
html.find(`[name="${zoneTarget}"]`).val(resolvedZone);
|
html.find(`[name="${zoneTarget}"]`).val(resolvedZone);
|
||||||
|
|
||||||
// Stocker les coordonnées dans le widget courant
|
|
||||||
$widget.data('coords', coords);
|
$widget.data('coords', coords);
|
||||||
|
|
||||||
// Synchronisation inter-onglets : départ Passagers → départ Cargaison + monde Commerce
|
|
||||||
if (uwpTarget === 'pax.uwpDep') {
|
if (uwpTarget === 'pax.uwpDep') {
|
||||||
const $cargoDep = html.find('.world-search-widget[data-uwp-target="cargo.uwpDep"]');
|
const $cargoDep = html.find('.world-search-widget[data-uwp-target="cargo.uwpDep"]');
|
||||||
$cargoDep.find('.world-search-input').val(w.name);
|
$cargoDep.find('.world-search-input').val(w.name);
|
||||||
@@ -168,69 +229,61 @@ export class CommerceDialog extends FormApplication {
|
|||||||
html.find('[name="trade.zone"]').val(resolvedZone);
|
html.find('[name="trade.zone"]').val(resolvedZone);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculer les parsecs si le widget partenaire a aussi ses coordonnées
|
|
||||||
if (parsecsTarget) {
|
if (parsecsTarget) {
|
||||||
const partnerRole = role === 'dep' ? 'dest' : 'dep';
|
const partnerRole = role === 'dep' ? 'dest' : 'dep';
|
||||||
const $partner = html.find(
|
const $partner = html.find(`.world-search-widget[data-parsecs-target="${parsecsTarget}"][data-role="${partnerRole}"]`);
|
||||||
`.world-search-widget[data-parsecs-target="${parsecsTarget}"][data-role="${partnerRole}"]`
|
|
||||||
);
|
|
||||||
const partnerCoords = $partner.data('coords');
|
const partnerCoords = $partner.data('coords');
|
||||||
if (coords && partnerCoords) {
|
if (coords && partnerCoords) {
|
||||||
const dist = calcParsecs(coords, partnerCoords);
|
const dist = calcParsecs(coords, partnerCoords);
|
||||||
html.find(`[name="${parsecsTarget}"]`).val(dist);
|
html.find(`[name="${parsecsTarget}"]`).val(dist);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._readForm(html);
|
||||||
});
|
});
|
||||||
$results.append($li);
|
$results.append($li);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (_err) {
|
||||||
$results.append('<li class="no-result">Erreur de connexion à Traveller Map</li>');
|
$results.append('<li class="no-result">Erreur de connexion à Traveller Map</li>');
|
||||||
}
|
}
|
||||||
$btn.prop('disabled', false).html('<i class="fas fa-globe"></i> Chercher');
|
$btn.prop('disabled', false).html('<i class="fas fa-globe"></i> Chercher');
|
||||||
};
|
};
|
||||||
|
|
||||||
$btn.on('click', doSearch);
|
$btn.on('click', doSearch);
|
||||||
$input.on('keydown', (ev) => { if (ev.key === 'Enter') { ev.preventDefault(); doSearch(); } });
|
$input.on('keydown', (ev) => {
|
||||||
});
|
if (ev.key === 'Enter') {
|
||||||
|
ev.preventDefault();
|
||||||
// Fermer les listes de résultats en cliquant ailleurs
|
doSearch();
|
||||||
html.on('click', (ev) => {
|
|
||||||
if (!$(ev.target).closest('.world-search-widget').length) {
|
|
||||||
html.find('.world-search-results').empty();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Lecture du formulaire ─────────────────────────────────────────────────
|
|
||||||
|
|
||||||
_readForm(html) {
|
_readForm(html) {
|
||||||
// Passagers
|
|
||||||
this._formData.pax.uwpDep = html.find('[name="pax.uwpDep"]').val();
|
this._formData.pax.uwpDep = html.find('[name="pax.uwpDep"]').val();
|
||||||
this._formData.pax.uwpDest = html.find('[name="pax.uwpDest"]').val();
|
this._formData.pax.uwpDest = html.find('[name="pax.uwpDest"]').val();
|
||||||
this._formData.pax.zoneDep = html.find('[name="pax.zoneDep"]').val();
|
this._formData.pax.zoneDep = html.find('[name="pax.zoneDep"]').val();
|
||||||
this._formData.pax.zoneDest = html.find('[name="pax.zoneDest"]').val();
|
this._formData.pax.zoneDest = html.find('[name="pax.zoneDest"]').val();
|
||||||
this._formData.pax.parsecs = parseInt(html.find('[name="pax.parsecs"]').val()) || 1;
|
this._formData.pax.parsecs = parseInt(html.find('[name="pax.parsecs"]').val(), 10) || 1;
|
||||||
this._formData.pax.skillEffect = parseInt(html.find('[name="pax.skillEffect"]').val()) || 0;
|
this._formData.pax.skillEffect = parseInt(html.find('[name="pax.skillEffect"]').val(), 10) || 0;
|
||||||
this._formData.pax.stewardLevel = parseInt(html.find('[name="pax.stewardLevel"]').val()) || 0;
|
this._formData.pax.stewardLevel = parseInt(html.find('[name="pax.stewardLevel"]').val(), 10) || 0;
|
||||||
|
|
||||||
// Cargaison
|
|
||||||
this._formData.cargo.uwpDep = html.find('[name="cargo.uwpDep"]').val();
|
this._formData.cargo.uwpDep = html.find('[name="cargo.uwpDep"]').val();
|
||||||
this._formData.cargo.uwpDest = html.find('[name="cargo.uwpDest"]').val();
|
this._formData.cargo.uwpDest = html.find('[name="cargo.uwpDest"]').val();
|
||||||
this._formData.cargo.zoneDep = html.find('[name="cargo.zoneDep"]').val();
|
this._formData.cargo.zoneDep = html.find('[name="cargo.zoneDep"]').val();
|
||||||
this._formData.cargo.zoneDest = html.find('[name="cargo.zoneDest"]').val();
|
this._formData.cargo.zoneDest = html.find('[name="cargo.zoneDest"]').val();
|
||||||
this._formData.cargo.parsecs = parseInt(html.find('[name="cargo.parsecs"]').val()) || 1;
|
this._formData.cargo.parsecs = parseInt(html.find('[name="cargo.parsecs"]').val(), 10) || 1;
|
||||||
this._formData.cargo.skillEffect = parseInt(html.find('[name="cargo.skillEffect"]').val()) || 0;
|
this._formData.cargo.skillEffect = parseInt(html.find('[name="cargo.skillEffect"]').val(), 10) || 0;
|
||||||
this._formData.cargo.navyRank = parseInt(html.find('[name="cargo.navyRank"]').val()) || 0;
|
this._formData.cargo.navyRank = parseInt(html.find('[name="cargo.navyRank"]').val(), 10) || 0;
|
||||||
this._formData.cargo.scoutRank = parseInt(html.find('[name="cargo.scoutRank"]').val()) || 0;
|
this._formData.cargo.scoutRank = parseInt(html.find('[name="cargo.scoutRank"]').val(), 10) || 0;
|
||||||
this._formData.cargo.socMod = parseInt(html.find('[name="cargo.socMod"]').val()) || 0;
|
this._formData.cargo.socMod = parseInt(html.find('[name="cargo.socMod"]').val(), 10) || 0;
|
||||||
this._formData.cargo.armed = html.find('[name="cargo.armed"]').is(':checked');
|
this._formData.cargo.armed = html.find('[name="cargo.armed"]').is(':checked');
|
||||||
|
|
||||||
// Commerce spéculatif
|
|
||||||
this._formData.trade.uwp = html.find('[name="trade.uwp"]').val();
|
this._formData.trade.uwp = html.find('[name="trade.uwp"]').val();
|
||||||
this._formData.trade.zone = html.find('[name="trade.zone"]').val();
|
this._formData.trade.zone = html.find('[name="trade.zone"]').val();
|
||||||
this._formData.trade.brokerSkill = parseInt(html.find('[name="trade.brokerSkill"]').val()) || 0;
|
this._formData.trade.brokerSkill = parseInt(html.find('[name="trade.brokerSkill"]').val(), 10) || 0;
|
||||||
this._formData.trade.previousAttempts = parseInt(html.find('[name="trade.previousAttempts"]').val()) || 0;
|
this._formData.trade.previousAttempts = parseInt(html.find('[name="trade.previousAttempts"]').val(), 10) || 0;
|
||||||
this._formData.trade.blackMarket = html.find('[name="trade.blackMarket"]').is(':checked');
|
this._formData.trade.blackMarket = html.find('[name="trade.blackMarket"]').is(':checked');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,12 +350,9 @@ export class CommerceDialog extends FormApplication {
|
|||||||
const label = normalized > 0 ? `+${normalized}` : `${normalized}`;
|
const label = normalized > 0 ? `+${normalized}` : `${normalized}`;
|
||||||
select.append(`<option value="${normalized}">${label}</option>`);
|
select.append(`<option value="${normalized}">${label}</option>`);
|
||||||
}
|
}
|
||||||
|
|
||||||
select.val(`${normalized}`);
|
select.val(`${normalized}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Passagers ─────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
async _handlePassengers() {
|
async _handlePassengers() {
|
||||||
const p = this._formData.pax;
|
const p = this._formData.pax;
|
||||||
if (!p.uwpDep || !p.uwpDest) {
|
if (!p.uwpDep || !p.uwpDest) {
|
||||||
@@ -319,15 +369,10 @@ export class CommerceDialog extends FormApplication {
|
|||||||
stewardLevel: p.stewardLevel,
|
stewardLevel: p.stewardLevel,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!result.success) {
|
if (!result.success) return ui.notifications.error(result.errors.join(' | '));
|
||||||
return ui.notifications.error(result.errors.join(' | '));
|
|
||||||
}
|
|
||||||
|
|
||||||
await this._postToChatResult(result);
|
await this._postToChatResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Cargaison ─────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
async _handleCargo() {
|
async _handleCargo() {
|
||||||
const c = this._formData.cargo;
|
const c = this._formData.cargo;
|
||||||
if (!c.uwpDep || !c.uwpDest) {
|
if (!c.uwpDep || !c.uwpDest) {
|
||||||
@@ -347,18 +392,11 @@ export class CommerceDialog extends FormApplication {
|
|||||||
armed: c.armed,
|
armed: c.armed,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!result.success) {
|
if (!result.success) return ui.notifications.error(result.errors.join(' | '));
|
||||||
return ui.notifications.error(result.errors.join(' | '));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calcule le sous-total cargaison pour le template
|
|
||||||
result.cargoRevenue = result.lots.reduce((s, l) => s + l.revenue, 0);
|
result.cargoRevenue = result.lots.reduce((s, l) => s + l.revenue, 0);
|
||||||
|
|
||||||
await this._postToChatResult(result);
|
await this._postToChatResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Commerce spéculatif – trouver les marchandises ────────────────────────
|
|
||||||
|
|
||||||
async _handleFindGoods(html) {
|
async _handleFindGoods(html) {
|
||||||
const t = this._formData.trade;
|
const t = this._formData.trade;
|
||||||
if (!t.uwp) {
|
if (!t.uwp) {
|
||||||
@@ -373,20 +411,16 @@ export class CommerceDialog extends FormApplication {
|
|||||||
previousAttempts: t.previousAttempts,
|
previousAttempts: t.previousAttempts,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!result.success) {
|
if (!result.success) return ui.notifications.error(result.errors.join(' | '));
|
||||||
return ui.notifications.error(result.errors.join(' | '));
|
|
||||||
}
|
|
||||||
|
|
||||||
this._tradeGoods = result;
|
this._tradeGoods = result;
|
||||||
|
|
||||||
// Affiche un aperçu inline dans l'onglet
|
|
||||||
const goodsDiv = html.find('.trade-goods-result');
|
const goodsDiv = html.find('.trade-goods-result');
|
||||||
const listDiv = html.find('.trade-goods-list');
|
const listDiv = html.find('.trade-goods-list');
|
||||||
|
|
||||||
if (result.goods.length === 0) {
|
if (result.goods.length === 0) {
|
||||||
listDiv.html('<p><em>Aucune marchandise disponible sur ce monde.</em></p>');
|
listDiv.html('<p><em>Aucune marchandise disponible sur ce monde.</em></p>');
|
||||||
} else {
|
} else {
|
||||||
const rows = result.goods.map(g => `
|
const rows = result.goods.map((g) => `
|
||||||
<div class="trade-good-item">
|
<div class="trade-good-item">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" class="good-select" data-d66="${g.d66}" checked>
|
<input type="checkbox" class="good-select" data-d66="${g.d66}" checked>
|
||||||
@@ -404,8 +438,6 @@ export class CommerceDialog extends FormApplication {
|
|||||||
await this._postToChatResult(result);
|
await this._postToChatResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Commerce spéculatif – calculer les prix d'achat ───────────────────────
|
|
||||||
|
|
||||||
async _handleBuyPrices() {
|
async _handleBuyPrices() {
|
||||||
if (!this._tradeGoods || !this._tradeGoods.goods.length) {
|
if (!this._tradeGoods || !this._tradeGoods.goods.length) {
|
||||||
return ui.notifications.warn('Veuillez d\'abord trouver les marchandises disponibles.');
|
return ui.notifications.warn('Veuillez d\'abord trouver les marchandises disponibles.');
|
||||||
@@ -413,7 +445,6 @@ export class CommerceDialog extends FormApplication {
|
|||||||
|
|
||||||
const brokerSkill = this._formData.trade.brokerSkill;
|
const brokerSkill = this._formData.trade.brokerSkill;
|
||||||
const prices = [];
|
const prices = [];
|
||||||
|
|
||||||
for (const g of this._tradeGoods.goods) {
|
for (const g of this._tradeGoods.goods) {
|
||||||
const priceResult = await calculatePrice({
|
const priceResult = await calculatePrice({
|
||||||
basePrice: g.basePrice,
|
basePrice: g.basePrice,
|
||||||
@@ -436,34 +467,20 @@ export class CommerceDialog extends FormApplication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const grandTotal = prices.reduce((s, p) => s + p.totalCost, 0);
|
const grandTotal = prices.reduce((s, p) => s + p.totalCost, 0);
|
||||||
|
|
||||||
await this._postToChatResult({ type: 'buy-prices', prices, grandTotal });
|
await this._postToChatResult({ type: 'buy-prices', prices, grandTotal });
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Post en chat ───────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
async _postToChatResult(data) {
|
async _postToChatResult(data) {
|
||||||
// Ajoute les helpers Handlebars nécessaires (si pas déjà enregistrés)
|
|
||||||
_registerHandlebarsHelpers();
|
_registerHandlebarsHelpers();
|
||||||
|
const html = await foundry.applications.handlebars.renderTemplate(`modules/${MODULE_ID}/templates/commerce-result.hbs`, data);
|
||||||
const html = await renderTemplate(
|
|
||||||
`modules/${MODULE_ID}/templates/commerce-result.hbs`,
|
|
||||||
data,
|
|
||||||
);
|
|
||||||
|
|
||||||
await ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: html,
|
content: html,
|
||||||
speaker: ChatMessage.getSpeaker(),
|
speaker: ChatMessage.getSpeaker(),
|
||||||
flags: { [MODULE_ID]: { type: 'commerce-result' } },
|
flags: { [MODULE_ID]: { type: 'commerce-result' } },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Nécessaire pour FormApplication : ne soumet rien (tout est piloté par boutons). */
|
|
||||||
async _updateObject(_event, _formData) {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ─── Helpers Handlebars ───────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
let _helpersRegistered = false;
|
let _helpersRegistered = false;
|
||||||
|
|
||||||
function _registerHandlebarsHelpers() {
|
function _registerHandlebarsHelpers() {
|
||||||
@@ -475,11 +492,7 @@ function _registerHandlebarsHelpers() {
|
|||||||
Handlebars.registerHelper('gt', (a, b) => a > b);
|
Handlebars.registerHelper('gt', (a, b) => a > b);
|
||||||
Handlebars.registerHelper('gte', (a, b) => a >= b);
|
Handlebars.registerHelper('gte', (a, b) => a >= b);
|
||||||
Handlebars.registerHelper('eq', (a, b) => a === b);
|
Handlebars.registerHelper('eq', (a, b) => a === b);
|
||||||
|
Handlebars.registerHelper('modClass', (n) => (Number(n) > 0 ? 'mod-pos' : Number(n) < 0 ? 'mod-neg' : 'mod-zero'));
|
||||||
/** Classe CSS selon le signe du modificateur. */
|
|
||||||
Handlebars.registerHelper('modClass', (n) => Number(n) > 0 ? 'mod-pos' : Number(n) < 0 ? 'mod-neg' : 'mod-zero');
|
|
||||||
|
|
||||||
/** Génère un <select> numérique de min à max, avec +N pour les positifs. */
|
|
||||||
Handlebars.registerHelper('modSelect', function(id, name, value, min, max) {
|
Handlebars.registerHelper('modSelect', function(id, name, value, min, max) {
|
||||||
let opts = '';
|
let opts = '';
|
||||||
for (let i = min; i <= max; i++) {
|
for (let i = min; i <= max; i++) {
|
||||||
|
|||||||
+85
-34
@@ -2,11 +2,33 @@ import { formatCredits } from './tradeHelper.js';
|
|||||||
import { createNpcActor, generateClientMission, generateEncounter, generateQuickNpc } from './npcHelper.js';
|
import { createNpcActor, generateClientMission, generateEncounter, generateQuickNpc } from './npcHelper.js';
|
||||||
import { NPC_RELATIONS } from './data/npcTables.js';
|
import { NPC_RELATIONS } from './data/npcTables.js';
|
||||||
|
|
||||||
|
const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api;
|
||||||
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
||||||
|
|
||||||
export class NpcDialog extends FormApplication {
|
export class NpcDialog extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
id: 'mgt2-npc',
|
||||||
|
classes: ['mgt2-npc-dialog'],
|
||||||
|
position: {
|
||||||
|
width: 720,
|
||||||
|
height: 'auto',
|
||||||
|
},
|
||||||
|
window: {
|
||||||
|
title: 'PNJ & Rencontres – MgT2e',
|
||||||
|
resizable: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static PARTS = {
|
||||||
|
main: {
|
||||||
|
template: `modules/${MODULE_ID}/templates/npc-dialog.hbs`,
|
||||||
|
root: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
constructor(options = {}) {
|
constructor(options = {}) {
|
||||||
super({}, options);
|
super(options);
|
||||||
|
this._activeTab = options.initialTab ?? 'npc';
|
||||||
this._formData = {
|
this._formData = {
|
||||||
npc: {
|
npc: {
|
||||||
relation: options.relation ?? 'contact',
|
relation: options.relation ?? 'contact',
|
||||||
@@ -22,33 +44,22 @@ export class NpcDialog extends FormApplication {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static get defaultOptions() {
|
async _prepareContext() {
|
||||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
|
||||||
id: 'mgt2-npc',
|
|
||||||
title: 'PNJ & Rencontres – MgT2e',
|
|
||||||
template: `modules/${MODULE_ID}/templates/npc-dialog.hbs`,
|
|
||||||
width: 720,
|
|
||||||
height: 'auto',
|
|
||||||
resizable: true,
|
|
||||||
tabs: [{
|
|
||||||
navSelector: '.tabs',
|
|
||||||
contentSelector: '.tab-content',
|
|
||||||
initial: 'npc',
|
|
||||||
}],
|
|
||||||
classes: ['mgt2-npc-dialog'],
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
getData() {
|
|
||||||
registerHandlebarsHelpers();
|
registerHandlebarsHelpers();
|
||||||
return foundry.utils.mergeObject(super.getData(), {
|
return {
|
||||||
...this._formData,
|
...this._formData,
|
||||||
|
activeTab: this._activeTab,
|
||||||
relations: Object.entries(NPC_RELATIONS).map(([key, value]) => ({ key, label: value.label })),
|
relations: Object.entries(NPC_RELATIONS).map(([key, value]) => ({ key, label: value.label })),
|
||||||
});
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
activateListeners(html) {
|
async _onRender(context, options) {
|
||||||
super.activateListeners(html);
|
await super._onRender(context, options);
|
||||||
|
const html = this._getForm();
|
||||||
|
if (!html?.length) return;
|
||||||
|
html.addClass('mgt2-npc-form');
|
||||||
|
|
||||||
|
this._applyThemeStyles(html);
|
||||||
|
|
||||||
html.find('[data-action="generate-npc"]').on('click', async (event) => {
|
html.find('[data-action="generate-npc"]').on('click', async (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -64,12 +75,58 @@ export class NpcDialog extends FormApplication {
|
|||||||
|
|
||||||
html.find('[data-action="generate-mission"]').on('click', async (event) => {
|
html.find('[data-action="generate-mission"]').on('click', async (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
this._readForm(html);
|
||||||
await this._handleMission();
|
await this._handleMission();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.options.initialTab) {
|
html.find('.tabs .item').on('click', (event) => {
|
||||||
this._tabs?.[0]?.activate(this.options.initialTab);
|
event.preventDefault();
|
||||||
|
this._readForm(html);
|
||||||
|
this._activateTab($(event.currentTarget).data('tab'));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_getForm() {
|
||||||
|
return $(this.element).find('.window-content');
|
||||||
|
}
|
||||||
|
|
||||||
|
_activateTab(tabId) {
|
||||||
|
const html = this._getForm();
|
||||||
|
if (!html?.length) return;
|
||||||
|
|
||||||
|
this._activeTab = tabId;
|
||||||
|
html.find('.tabs .item').removeClass('active');
|
||||||
|
html.find(`.tabs .item[data-tab="${tabId}"]`).addClass('active');
|
||||||
|
html.find('.tab-content .tab').removeClass('active');
|
||||||
|
html.find(`.tab-content .tab[data-tab="${tabId}"]`).addClass('active');
|
||||||
|
this._applyThemeStyles(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
_applyThemeStyles(html) {
|
||||||
|
html.find('.tabs .item').css({
|
||||||
|
color: '#d8c79a',
|
||||||
|
'text-shadow': 'none',
|
||||||
|
'background-color': '',
|
||||||
|
'border-bottom-color': 'transparent'
|
||||||
|
});
|
||||||
|
|
||||||
|
html.find('.tabs .item.active').css({
|
||||||
|
color: '#d9b24c',
|
||||||
|
'text-shadow': 'none',
|
||||||
|
'background-color': 'rgba(201, 162, 39, 0.18)',
|
||||||
|
'border-bottom-color': '#c9a227'
|
||||||
|
});
|
||||||
|
|
||||||
|
html.find('h3').css({
|
||||||
|
color: '#5f4300',
|
||||||
|
'border-bottom-color': '#b78f26',
|
||||||
|
'text-shadow': 'none'
|
||||||
|
});
|
||||||
|
|
||||||
|
html.find('legend').css({
|
||||||
|
color: '#7a5c00',
|
||||||
|
'text-shadow': 'none'
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_readForm(html) {
|
_readForm(html) {
|
||||||
@@ -89,10 +146,7 @@ export class NpcDialog extends FormApplication {
|
|||||||
name: this._formData.npc.actorName,
|
name: this._formData.npc.actorName,
|
||||||
openSheet: this._formData.npc.openCreatedActor,
|
openSheet: this._formData.npc.openCreatedActor,
|
||||||
});
|
});
|
||||||
result.createdActor = {
|
result.createdActor = { id: actor.id, name: actor.name };
|
||||||
id: actor.id,
|
|
||||||
name: actor.name,
|
|
||||||
};
|
|
||||||
ui.notifications.info(`Fiche PNJ créée : ${actor.name}`);
|
ui.notifications.info(`Fiche PNJ créée : ${actor.name}`);
|
||||||
}
|
}
|
||||||
await this._postToChatResult(result);
|
await this._postToChatResult(result);
|
||||||
@@ -110,8 +164,7 @@ export class NpcDialog extends FormApplication {
|
|||||||
|
|
||||||
async _postToChatResult(data) {
|
async _postToChatResult(data) {
|
||||||
registerHandlebarsHelpers();
|
registerHandlebarsHelpers();
|
||||||
const renderHbs = foundry.applications?.handlebars?.renderTemplate ?? renderTemplate;
|
const html = await foundry.applications.handlebars.renderTemplate(`modules/${MODULE_ID}/templates/npc-result.hbs`, data);
|
||||||
const html = await renderHbs(`modules/${MODULE_ID}/templates/npc-result.hbs`, data);
|
|
||||||
|
|
||||||
await ChatMessage.create({
|
await ChatMessage.create({
|
||||||
content: html,
|
content: html,
|
||||||
@@ -119,8 +172,6 @@ export class NpcDialog extends FormApplication {
|
|||||||
flags: { [MODULE_ID]: { type: 'npc-result' } },
|
flags: { [MODULE_ID]: { type: 'npc-result' } },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async _updateObject(_event, _formData) {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let helpersRegistered = false;
|
let helpersRegistered = false;
|
||||||
|
|||||||
+98
-5
@@ -3,35 +3,128 @@
|
|||||||
*
|
*
|
||||||
* Chargé par FoundryVTT via "esmodules" dans module.json.
|
* Chargé par FoundryVTT via "esmodules" dans module.json.
|
||||||
* Enregistre la commande /commerce dans le chat.
|
* Enregistre la commande /commerce dans le chat.
|
||||||
|
* Compatible Foundry VTT v13 et v14
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { CommerceDialog } from './CommerceDialog.js';
|
import { CommerceDialog } from './CommerceDialog.js';
|
||||||
import './mgt2eMigration.js';
|
import './mgt2eMigration.js';
|
||||||
|
import './startupNotice.js';
|
||||||
|
|
||||||
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
||||||
|
const COMMERCE_COMMAND = 'commerce';
|
||||||
|
const ChatLogV2 = foundry.applications.sidebar.tabs.ChatLog;
|
||||||
|
|
||||||
|
function openCommerceDialog() {
|
||||||
|
new CommerceDialog().render({ force: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
function registerCommerceCommand() {
|
||||||
|
if (!ChatLogV2?.CHAT_COMMANDS) {
|
||||||
|
console.warn(`${MODULE_ID} | ChatLog.CHAT_COMMANDS indisponible, commande /${COMMERCE_COMMAND} non enregistrée`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatLogV2.CHAT_COMMANDS[COMMERCE_COMMAND] = {
|
||||||
|
rgx: /^\/commerce(?:\s+(.*))?$/i,
|
||||||
|
fn: () => {
|
||||||
|
openCommerceDialog();
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
console.log(`${MODULE_ID} | Commande /${COMMERCE_COMMAND} enregistrée via ChatLog.CHAT_COMMANDS`);
|
||||||
|
}
|
||||||
|
|
||||||
Hooks.once('init', () => {
|
Hooks.once('init', () => {
|
||||||
console.log(`${MODULE_ID} | Commerce module initialisé`);
|
console.log(`${MODULE_ID} | Commerce module initialisé`);
|
||||||
|
|
||||||
// Pré-charge les templates Handlebars
|
// Pré-charge les templates Handlebars
|
||||||
loadTemplates([
|
// Compatibilité v13 et v14
|
||||||
|
const loadTemplatesFn = foundry.applications?.handlebars?.loadTemplates || loadTemplates;
|
||||||
|
if (loadTemplatesFn) {
|
||||||
|
loadTemplatesFn([
|
||||||
`modules/${MODULE_ID}/templates/commerce-dialog.hbs`,
|
`modules/${MODULE_ID}/templates/commerce-dialog.hbs`,
|
||||||
`modules/${MODULE_ID}/templates/commerce-result.hbs`,
|
`modules/${MODULE_ID}/templates/commerce-result.hbs`,
|
||||||
]);
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
registerCommerceCommand();
|
||||||
});
|
});
|
||||||
|
|
||||||
Hooks.once('ready', () => {
|
Hooks.once('ready', () => {
|
||||||
console.log(`${MODULE_ID} | Commerce module prêt – tapez /commerce dans le chat`);
|
console.log(`${MODULE_ID} | Commerce module prêt – tapez /commerce dans le chat`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Solution pour Foundry v14 : Intercepte les commandes AVANT la validation
|
||||||
|
* Utilise renderChatInput pour modifier le comportement de l'input
|
||||||
|
* Compatible v13 (jQuery) et v14 (DOM element)
|
||||||
|
*/
|
||||||
|
Hooks.on('renderChatInput', (app, html, data) => {
|
||||||
|
// Foundry v14 passe un objet avec element, v13 passe jQuery
|
||||||
|
let input;
|
||||||
|
|
||||||
|
// Vérifie si html est un objet avec element (v14)
|
||||||
|
if (html?.element) {
|
||||||
|
input = $(html.element).find('textarea[name="content"]');
|
||||||
|
} else if (html?.find) {
|
||||||
|
// v13 ou déjà jQuery
|
||||||
|
input = html.find('textarea[name="content"]');
|
||||||
|
} else {
|
||||||
|
// Dernier recours : suppose que html est l'élément
|
||||||
|
input = $(html).find('textarea[name="content"]');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Évite les doublons d'écouteurs
|
||||||
|
if (input.data('mgt2-commerce-listener')) return;
|
||||||
|
input.data('mgt2-commerce-listener', true);
|
||||||
|
|
||||||
|
input.on('keydown', (event) => {
|
||||||
|
// Intercepte Entrée (13) et vérifie si c'est une de nos commandes
|
||||||
|
if (event.key === 'Enter' && !event.shiftKey) {
|
||||||
|
const content = input.val()?.trim();
|
||||||
|
if (content?.startsWith('/commerce')) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
openCommerceDialog();
|
||||||
|
input.val('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Intercepte les messages de chat commençant par /commerce.
|
* Intercepte les messages de chat commençant par /commerce.
|
||||||
|
* Utilise preCreateChatMessage pour Foundry v14+ (avant que le message ne soit validé)
|
||||||
|
* Compatible avec Foundry v13 et v14
|
||||||
* Retourne false pour empêcher l'envoi du message brut.
|
* Retourne false pour empêcher l'envoi du message brut.
|
||||||
*/
|
*/
|
||||||
Hooks.on('chatMessage', (_chatLog, message, _chatData) => {
|
Hooks.on('preCreateChatMessage', (message, data, options) => {
|
||||||
const trimmed = message.trim().toLowerCase();
|
const content = message.content?.trim()?.toLowerCase();
|
||||||
if (trimmed === '/commerce' || trimmed.startsWith('/commerce ')) {
|
if (content === '/commerce' || content?.startsWith('/commerce ')) {
|
||||||
new CommerceDialog().render(true);
|
openCommerceDialog();
|
||||||
|
return false; // Empêche la création du message
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Gardé pour compatibilité v13
|
||||||
|
Hooks.on('chatMessage', (...args) => {
|
||||||
|
// Foundry v14 passe un objet ChatMessage en premier paramètre
|
||||||
|
// Foundry v13 passe (chatLog, message, chatData)
|
||||||
|
let message;
|
||||||
|
|
||||||
|
if (args[0]?.content !== undefined) {
|
||||||
|
// v14: premier argument est ChatMessage
|
||||||
|
message = args[0].content;
|
||||||
|
} else if (typeof args[1] === 'string') {
|
||||||
|
// v13: deuxième argument est la string message
|
||||||
|
message = args[1];
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const trimmed = message?.trim()?.toLowerCase();
|
||||||
|
if (trimmed === '/commerce' || trimmed?.startsWith('/commerce ')) {
|
||||||
|
openCommerceDialog();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+120
-7
@@ -3,18 +3,44 @@ import { syncNpcRollTables } from './npcRollTableSync.js';
|
|||||||
import './mgt2eMigration.js';
|
import './mgt2eMigration.js';
|
||||||
|
|
||||||
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
const MODULE_ID = 'mgt2-compendium-amiral-denisov';
|
||||||
|
const ChatLogV2 = foundry.applications.sidebar.tabs.ChatLog;
|
||||||
|
|
||||||
function openNpcDialog(initialTab, options = {}) {
|
function openNpcDialog(initialTab, options = {}) {
|
||||||
new NpcDialog({ initialTab, ...options }).render(true);
|
new NpcDialog({ initialTab, ...options }).render({ force: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
function registerNpcCommand(commandName, initialTab) {
|
||||||
|
if (!ChatLogV2?.CHAT_COMMANDS) {
|
||||||
|
console.warn(`${MODULE_ID} | ChatLog.CHAT_COMMANDS indisponible, commande /${commandName} non enregistrée`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatLogV2.CHAT_COMMANDS[commandName] = {
|
||||||
|
rgx: new RegExp(`^\\/${commandName}(?:\\s+(.*))?$`, 'i'),
|
||||||
|
fn: () => {
|
||||||
|
openNpcDialog(initialTab);
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
console.log(`${MODULE_ID} | Commande /${commandName} enregistrée via ChatLog.CHAT_COMMANDS`);
|
||||||
}
|
}
|
||||||
|
|
||||||
Hooks.once('init', () => {
|
Hooks.once('init', () => {
|
||||||
console.log(`${MODULE_ID} | Outils PNJ initialisés`);
|
console.log(`${MODULE_ID} | Outils PNJ initialisés`);
|
||||||
|
|
||||||
loadTemplates([
|
// Pré-charge les templates Handlebars
|
||||||
|
// Compatibilité v13 et v14
|
||||||
|
const loadTemplatesFn = foundry.applications?.handlebars?.loadTemplates || loadTemplates;
|
||||||
|
if (loadTemplatesFn) {
|
||||||
|
loadTemplatesFn([
|
||||||
`modules/${MODULE_ID}/templates/npc-dialog.hbs`,
|
`modules/${MODULE_ID}/templates/npc-dialog.hbs`,
|
||||||
`modules/${MODULE_ID}/templates/npc-result.hbs`,
|
`modules/${MODULE_ID}/templates/npc-result.hbs`,
|
||||||
]);
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
registerNpcCommand('pnj', 'npc');
|
||||||
|
registerNpcCommand('rencontre', 'encounter');
|
||||||
|
registerNpcCommand('mission', 'mission');
|
||||||
});
|
});
|
||||||
|
|
||||||
Hooks.once('ready', async () => {
|
Hooks.once('ready', async () => {
|
||||||
@@ -22,20 +48,107 @@ Hooks.once('ready', async () => {
|
|||||||
console.log(`${MODULE_ID} | Outils PNJ prêts – tapez /pnj, /rencontre ou /mission dans le chat`);
|
console.log(`${MODULE_ID} | Outils PNJ prêts – tapez /pnj, /rencontre ou /mission dans le chat`);
|
||||||
});
|
});
|
||||||
|
|
||||||
Hooks.on('chatMessage', (_chatLog, message, _chatData) => {
|
/**
|
||||||
const trimmed = message.trim().toLowerCase();
|
* Solution pour Foundry v14 : Intercepte les commandes AVANT la validation
|
||||||
|
* Utilise renderChatInput pour modifier le comportement de l'input
|
||||||
|
* Compatible v13 (jQuery) et v14 (DOM element)
|
||||||
|
*/
|
||||||
|
Hooks.on('renderChatInput', (app, html, data) => {
|
||||||
|
// Foundry v14 passe un objet avec element, v13 passe jQuery
|
||||||
|
let input;
|
||||||
|
|
||||||
if (trimmed === '/pnj' || trimmed.startsWith('/pnj ')) {
|
// Vérifie si html est un objet avec element (v14)
|
||||||
|
if (html?.element) {
|
||||||
|
input = $(html.element).find('textarea[name="content"]');
|
||||||
|
} else if (html?.find) {
|
||||||
|
// v13 ou déjà jQuery
|
||||||
|
input = html.find('textarea[name="content"]');
|
||||||
|
} else {
|
||||||
|
// Dernier recours : suppose que html est l'élément
|
||||||
|
input = $(html).find('textarea[name="content"]');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Évite les doublons d'écouteurs
|
||||||
|
if (input.data('mgt2-npc-listener')) return;
|
||||||
|
input.data('mgt2-npc-listener', true);
|
||||||
|
|
||||||
|
input.on('keydown', (event) => {
|
||||||
|
// Intercepte Entrée (13) et vérifie si c'est une de nos commandes
|
||||||
|
if (event.key === 'Enter' && !event.shiftKey) {
|
||||||
|
const content = input.val()?.trim();
|
||||||
|
if (content?.startsWith('/pnj')) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
openNpcDialog('npc');
|
||||||
|
input.val('');
|
||||||
|
} else if (content?.startsWith('/rencontre')) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
openNpcDialog('encounter');
|
||||||
|
input.val('');
|
||||||
|
} else if (content?.startsWith('/mission')) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopImmediatePropagation();
|
||||||
|
openNpcDialog('mission');
|
||||||
|
input.val('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Intercepte les messages de chat pour /pnj, /rencontre, /mission
|
||||||
|
* Utilise preCreateChatMessage pour Foundry v14+ (avant que le message ne soit validé)
|
||||||
|
* Compatible avec Foundry v13 et v14
|
||||||
|
*/
|
||||||
|
Hooks.on('preCreateChatMessage', (message, data, options) => {
|
||||||
|
const content = message.content?.trim()?.toLowerCase();
|
||||||
|
|
||||||
|
if (content === '/pnj' || content?.startsWith('/pnj ')) {
|
||||||
|
openNpcDialog('npc');
|
||||||
|
return false; // Empêche la création du message
|
||||||
|
}
|
||||||
|
|
||||||
|
if (content === '/rencontre' || content?.startsWith('/rencontre ')) {
|
||||||
|
openNpcDialog('encounter');
|
||||||
|
return false; // Empêche la création du message
|
||||||
|
}
|
||||||
|
|
||||||
|
if (content === '/mission' || content?.startsWith('/mission ')) {
|
||||||
|
openNpcDialog('mission');
|
||||||
|
return false; // Empêche la création du message
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Gardé pour compatibilité v13
|
||||||
|
Hooks.on('chatMessage', (...args) => {
|
||||||
|
// Foundry v14 passe un objet ChatMessage en premier paramètre
|
||||||
|
// Foundry v13 passe (chatLog, message, chatData)
|
||||||
|
let message;
|
||||||
|
|
||||||
|
if (args[0]?.content !== undefined) {
|
||||||
|
// v14: premier argument est ChatMessage
|
||||||
|
message = args[0].content;
|
||||||
|
} else if (typeof args[1] === 'string') {
|
||||||
|
// v13: deuxième argument est la string message
|
||||||
|
message = args[1];
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const trimmed = message?.trim()?.toLowerCase();
|
||||||
|
|
||||||
|
if (trimmed === '/pnj' || trimmed?.startsWith('/pnj ')) {
|
||||||
openNpcDialog('npc');
|
openNpcDialog('npc');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trimmed === '/rencontre' || trimmed.startsWith('/rencontre ')) {
|
if (trimmed === '/rencontre' || trimmed?.startsWith('/rencontre ')) {
|
||||||
openNpcDialog('encounter');
|
openNpcDialog('encounter');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trimmed === '/mission' || trimmed.startsWith('/mission ')) {
|
if (trimmed === '/mission' || trimmed?.startsWith('/mission ')) {
|
||||||
openNpcDialog('mission');
|
openNpcDialog('mission');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user