Skip to content

Commit ad39a7d

Browse files
committed
tweak(panel/playerDrops): small changes - read desc
Increased timeline legend offset. Increased timeline mouse event debouncing delay. Fixed drilldown loader cards order. Added the script to generate the player drops stats file v2.
1 parent a1542e1 commit ad39a7d

4 files changed

Lines changed: 61 additions & 7 deletions

File tree

panel/src/pages/PlayerDropsPage/DrilldownCard.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,17 @@ export function DrilldownCardLoading({ isError }: { isError?: boolean }) {
3232
</div>
3333
<div className="flex flex-col flex-shrink px-1 sm:px-4 py-2 space-y-4 border-t border-b bg-secondary/35">
3434
<div className="flex items-center space-x-2">
35-
<div className='hidden xs:block'><SkullIcon className="size-4" /></div>
36-
<h2 className="font-mono text-sm">Crash Reasons</h2>
35+
<div className='hidden xs:block'><ShapesIcon className="size-4" /></div>
36+
<h2 className="font-mono text-sm">Environment Changes</h2>
3737
</div>
3838
</div>
3939
<div className="px-4 pt-2 pb-4">
4040
<PlayerDropsLoadingSpinner isError={isError} />
4141
</div>
4242
<div className="flex flex-col flex-shrink px-1 sm:px-4 py-2 space-y-4 border-t border-b bg-secondary/35">
4343
<div className="flex items-center space-x-2">
44-
<div className='hidden xs:block'><ShapesIcon className="size-4" /></div>
45-
<h2 className="font-mono text-sm">Environment Changes</h2>
44+
<div className='hidden xs:block'><SkullIcon className="size-4" /></div>
45+
<h2 className="font-mono text-sm">Crash Reasons</h2>
4646
</div>
4747
</div>
4848
<div className="px-4 pt-2 pb-4 space-y-4">

panel/src/pages/PlayerDropsPage/drawDropsTimeline.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ export default function drawDropsTimeline({
163163
ctx.setLineDash([]);
164164

165165
//Drawing the timeline
166+
let barsRendered = 0;
166167
ctx.lineWidth = 1;
167168
for (const intervalData of data.log) {
168169
const baseX = timeScale(intervalData.startDate);
@@ -173,6 +174,7 @@ export default function drawDropsTimeline({
173174
const renderOffsetX = baseX - renderStartX;
174175
const barWidth = Math.round(intervalWidth + renderOffsetX) + 1 - barCenterOffset - barPadding;
175176
if (barWidth < 1) continue;
177+
barsRendered++;
176178

177179
//Draw the count blocks
178180
let dropSum = 0;
@@ -221,6 +223,7 @@ export default function drawDropsTimeline({
221223
}
222224
if (isFirstRender) {
223225
console.timeEnd('drawing canvas timeline');
226+
console.log('Bars rendered:', barsRendered);
224227
}
225228
}
226229
drawCanvasTimeline();
@@ -400,8 +403,9 @@ export default function drawDropsTimeline({
400403
wasTransitionDisabled = true;
401404
}
402405
const legendWidth = legendRef.clientWidth;
403-
let legendX = datumStartX - legendWidth - 10 + margins.left;
404-
if (legendX < margins.left) legendX = datumStartX + 10 + margins.left;
406+
const legendOffset = 36;
407+
let legendX = datumStartX - legendWidth - legendOffset + margins.left;
408+
if (legendX < margins.left) legendX = datumStartX + legendOffset + margins.left;
405409
legendRef.style.left = `${legendX}px`;
406410
legendRef.style.opacity = '1';
407411
if (wasTransitionDisabled) {
@@ -468,7 +472,7 @@ export default function drawDropsTimeline({
468472

469473
// Handle svg mouse events
470474
let isEventInCooldown = false;
471-
const cooldownTime = 20;
475+
const cooldownTime = 75;
472476
chartGroup.on('mousemove', function (event) {
473477
const [pointerX] = d3.pointer(event);
474478
if (!isEventInCooldown) {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* This script is used to merge multiple stats_playerDrop files into a single file with the last 336 hours of data.
3+
* NOTE: use npx tsx scripts/dev/makeOldStatsFile.local.ts to run this script
4+
*/
5+
import fs from 'node:fs';
6+
import { PDLChangeEventType, PDLFileType } from '../../core/modules/Metrics/playerDrop/playerDropSchemas';
7+
import * as d3 from 'd3';
8+
9+
// const hours = d3.timeHour.offset()
10+
const currentHour = d3.timeHour.floor(new Date());
11+
export default (sourceFile: string, targetFileName: string) => {
12+
const fileData = JSON.parse(fs.readFileSync(sourceFile, 'utf8')) as PDLFileType;
13+
14+
let lastHour = d3.timeHour.offset(currentHour, -1);
15+
for (let i = fileData.log.length - 1; i >= 0; i--) {
16+
const log = fileData.log[i];
17+
const logHour = new Date(log.hour);
18+
const newHour = d3.timeHour.offset(lastHour, -1);
19+
const hourDiff = newHour.getTime() - logHour.getTime();
20+
log.hour = newHour.toISOString();
21+
lastHour = newHour;
22+
for (const change of log.changes) {
23+
if ('ts' in change) {
24+
change.ts = change.ts - hourDiff;
25+
}
26+
}
27+
console.log('Updated', logHour.toISOString(), 'to', newHour.toISOString());
28+
}
29+
fileData.lastResourceList = [];
30+
fileData.lastUnknownReasons = [];
31+
32+
//Write new file
33+
console.log('Writing file', targetFileName);
34+
fs.writeFileSync(targetFileName, JSON.stringify(fileData));
35+
}

scripts/dev/updatePlayerDropsV2.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* This script is used to update the timestamps of a stats_playerDrop.json v2 file
3+
*
4+
* NOTE: RENAME TO updatePlayerDropsV2.local.ts
5+
* NOTE: THEN RUN npx tsx scripts/dev/updatePlayerDropsV2.local.ts
6+
* NOTE: Add --overwrite to overwrite the actual stats_playerDrop.json file instead of creating a timestamped copy
7+
*/
8+
import updatePlayerDropsV2 from "./updatePlayerDropsV2.code";
9+
10+
const sourceFile = 'xxxxx/stats_playerDrop.json';
11+
const baseTargetPath = 'xxxxxxxx/txData/default/data/stats_playerDrop.json';
12+
const overwrite = process.argv.includes('--overwrite');
13+
const formattedTimestamp = new Date().toISOString().replace(/:/g, '-').split('.')[0];
14+
const targetFileName = overwrite ? baseTargetPath : `${baseTargetPath}.${formattedTimestamp}`;
15+
updatePlayerDropsV2(sourceFile, targetFileName);

0 commit comments

Comments
 (0)