🙃
This commit is contained in:
@@ -3,7 +3,14 @@
|
|||||||
import Cell from '$lib/components/grid/cell.svelte';
|
import Cell from '$lib/components/grid/cell.svelte';
|
||||||
import { onDestroy, onMount } from 'svelte';
|
import { onDestroy, onMount } from 'svelte';
|
||||||
import CellHeader from './cell-header.svelte';
|
import CellHeader from './cell-header.svelte';
|
||||||
import { fromGridRef, toColLetter, toGridRef, type CellData, type CellValue } from './utils';
|
import {
|
||||||
|
fromGridRef,
|
||||||
|
splitErrorString,
|
||||||
|
toColLetter,
|
||||||
|
toGridRef,
|
||||||
|
type CellData,
|
||||||
|
type CellValue
|
||||||
|
} from './utils';
|
||||||
|
|
||||||
let {
|
let {
|
||||||
socket
|
socket
|
||||||
@@ -11,27 +18,6 @@
|
|||||||
socket: WebSocket;
|
socket: WebSocket;
|
||||||
} = $props();
|
} = $props();
|
||||||
|
|
||||||
function splitErrorString(errorString: string) {
|
|
||||||
// Remove the "ERR " prefix.
|
|
||||||
const content = errorString.substring(4);
|
|
||||||
|
|
||||||
// Find the index of the first colon.
|
|
||||||
const colonIndex = content.indexOf(':');
|
|
||||||
|
|
||||||
// If no colon is found, return the whole content as the first element.
|
|
||||||
if (colonIndex === -1) {
|
|
||||||
return [content.trim(), ''];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extract the part before the colon (the error type).
|
|
||||||
const errorType = content.substring(0, colonIndex).trim();
|
|
||||||
|
|
||||||
// Extract the part after the colon (the error message).
|
|
||||||
const errorMessage = content.substring(colonIndex + 1).trim();
|
|
||||||
|
|
||||||
return [errorType, errorMessage];
|
|
||||||
}
|
|
||||||
|
|
||||||
socket.onmessage = (msg: MessageEvent) => {
|
socket.onmessage = (msg: MessageEvent) => {
|
||||||
const input = msg.data.toString().trim();
|
const input = msg.data.toString().trim();
|
||||||
|
|
||||||
@@ -87,8 +73,8 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let rows = 50;
|
let rows = 100;
|
||||||
let cols = 50;
|
let cols = 60;
|
||||||
|
|
||||||
let default_row_height = '30px';
|
let default_row_height = '30px';
|
||||||
let default_col_width = '60px';
|
let default_col_width = '60px';
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
export type CellValue = number | string | undefined;
|
||||||
|
|
||||||
|
export interface CellData {
|
||||||
|
raw_val: string;
|
||||||
|
val: CellValue;
|
||||||
|
}
|
||||||
|
|
||||||
export function fromGridRef(ref: string): [number, number] {
|
export function fromGridRef(ref: string): [number, number] {
|
||||||
const match = ref.match(/^([A-Z]+)([0-9]+)$/i);
|
const match = ref.match(/^([A-Z]+)([0-9]+)$/i);
|
||||||
if (!match) throw new Error('Invalid reference');
|
if (!match) throw new Error('Invalid reference');
|
||||||
@@ -31,9 +38,23 @@ export function toGridRef(row: number, col: number): string {
|
|||||||
return toColLetter(col) + row.toString();
|
return toColLetter(col) + row.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
export type CellValue = number | string | undefined;
|
export function splitErrorString(errorString: string) {
|
||||||
|
// Remove the "ERR " prefix.
|
||||||
|
const content = errorString.substring(4);
|
||||||
|
|
||||||
export interface CellData {
|
// Find the index of the first colon.
|
||||||
raw_val: string;
|
const colonIndex = content.indexOf(':');
|
||||||
val: CellValue;
|
|
||||||
|
// If no colon is found, return the whole content as the first element.
|
||||||
|
if (colonIndex === -1) {
|
||||||
|
return [content.trim(), ''];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract the part before the colon (the error type).
|
||||||
|
const errorType = content.substring(0, colonIndex).trim();
|
||||||
|
|
||||||
|
// Extract the part after the colon (the error message).
|
||||||
|
const errorMessage = content.substring(colonIndex + 1).trim();
|
||||||
|
|
||||||
|
return [errorType, errorMessage];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user