🙃
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
import Cell from '$lib/components/grid/cell.svelte';
|
||||
import { onDestroy, onMount } from 'svelte';
|
||||
import CellHeader from './cell-header.svelte';
|
||||
import { colToStr, refToStr, type CellT } from './utils';
|
||||
import { colToStr, getEvalLiteral, refToStr, type CellT } from './utils';
|
||||
import clsx from 'clsx';
|
||||
|
||||
let {
|
||||
@@ -44,7 +44,7 @@
|
||||
console.error('Expected cell value for SET msgponse from server.');
|
||||
return;
|
||||
}
|
||||
setCellVal(msg.cell.row, msg.cell.col, msg.eval.value);
|
||||
setCellVal(msg.cell.row, msg.cell.col, getEvalLiteral(msg.eval));
|
||||
break;
|
||||
}
|
||||
case 'bulk': {
|
||||
|
||||
@@ -2,7 +2,7 @@ interface LeadMsg {
|
||||
msg_type: 'set' | 'get' | 'error' | 'bulk';
|
||||
cell?: CellRef;
|
||||
raw?: string;
|
||||
eval?: Literal;
|
||||
eval?: Eval;
|
||||
bulk_msgs?: Array<LeadMsg>;
|
||||
}
|
||||
|
||||
@@ -13,8 +13,17 @@ interface CellRef {
|
||||
|
||||
type LiteralType = 'Number' | 'Boolean' | 'String';
|
||||
type LiteralValue = number | string | boolean;
|
||||
type EvalRange = Array<Eval>;
|
||||
|
||||
interface Literal {
|
||||
type: LiteralType;
|
||||
value: LiteralValue;
|
||||
}
|
||||
|
||||
interface EvalCellRef {
|
||||
eval: Eval;
|
||||
reference: CellRef;
|
||||
}
|
||||
|
||||
// Tagged union
|
||||
type Eval = { literal: Literal } | { cellref: EvalCellRef } | { range: Range } | 'unset';
|
||||
|
||||
@@ -42,3 +42,11 @@ export function colToStr(col: number): string {
|
||||
export function refToStr(row: number, col: number): string {
|
||||
return colToStr(col) + (row + 1).toString();
|
||||
}
|
||||
|
||||
export function getEvalLiteral(value: Eval): LiteralValue {
|
||||
if (value === 'unset') return '';
|
||||
if ('literal' in value) return value.literal.value;
|
||||
if ('cellref' in value) return getEvalLiteral(value.cellref.eval);
|
||||
// if ('range' in value) return 'err';
|
||||
return 'todo!';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user