Fix lint, use of sync method in web UI

This commit is contained in:
Danielv123 committed 2025-08-10 00:28:48 +02:00
1 parent c4d4cb3afd
commit 70ef8a60ad
3 files changed
+36 -30

No files matched your search

+28 -28
View File
@@ -5,31 +5,31 @@ import { BinaryData, sliceData, readUInt8, readUInt16BE, readUInt32BE, isNode }
*/
export interface ParsedPlayerPositions {
/** Player name -> player ID mappings from SessionStart records */
playerSessions: Map<string, number>;
playerSessions: Map<string, number>;
/** Maximum player ID found in the file */
maxPlayerId: number;
maxPlayerId: number;
/** All position records in the file */
positions: PlayerPositionRecord[];
positions: PlayerPositionRecord[];
}
export interface PlayerPositionRecord {
type: number;
playerId: number;
type: number;
playerId: number;
// Position record fields
tSec?: number;
sec?: number;
xTiles?: number;
yTiles?: number;
tSec?: number;
sec?: number;
xTiles?: number;
yTiles?: number;
// Session record fields
tMs?: number;
playerName?: string;
tMs?: number;
playerName?: string;
}
export interface ParsedPlayerPos {
name: string;
x: number;
y: number;
sec: number;
name: string;
x: number;
y: number;
sec: number;
}
/**
@@ -121,13 +121,13 @@ export function parsePlayerPositionsBinary(buf: BinaryData): ParsedPlayerPositio
* @returns Processing result with position data and new offset
*/
function parsePositionRecord(buf: BinaryData, offset: number): {
success: boolean;
newOffset: number;
playerId: number;
tSec: number;
sec: number;
xTiles: number;
yTiles: number;
success: boolean;
newOffset: number;
playerId: number;
tSec: number;
sec: number;
xTiles: number;
yTiles: number;
} {
// Position record: 4 + 4 + 3 + 3 + 2 = 16 bytes
if (offset + 16 > buf.length) {
@@ -248,12 +248,12 @@ export function parseAndDeduplicatePlayerPositions(buf: BinaryData): Map<number,
const x = record.xTiles * 32;
const y = record.yTiles * 32;
playerTimelines.get(record.playerId)!.push({
name,
x,
y,
sec: record.sec,
});
playerTimelines.get(record.playerId)!.push({
name,
x,
y,
sec: record.sec,
});
}
}
}
+7 -1
View File
@@ -69,12 +69,18 @@ const CHUNK_SIZE = 32; // 32x32 pixels per chunk
const TILE_SIZE = 256; // 256x256 pixels per tile (8x8 chunks)
const CHUNKS_PER_TILE = 8;
const inflateAsync = (data: Uint8Array): Promise<Uint8Array> => new Promise((resolve, reject) => {
zlib.inflate(data, (err, result) => {
if (err) { reject(err); }
resolve(result);
});
});
// Convert raw chart data to ImageData
async function chartDataToImageData(chartData: string): Promise<ImageData> {
// Decode base64 and decompress
const compressedData = Buffer.from(chartData, "base64");
const decompressed = zlib.inflateSync(compressedData);
const decompressed = Buffer.from(await inflateAsync(compressedData));
// Create RGBA image data (32x32 pixels)
const imageData = new Uint8ClampedArray(32 * 32 * 4);
+1 -1
View File
@@ -3,7 +3,7 @@ const path = require("path");
const webpack = require("webpack");
const { merge } = require("webpack-merge");
// eslint-disable-next-line node/no-unpublished-require
const common = require("@clusterio/web_ui/webpack.common");
module.exports = (env = {}) => merge(common(env), {