blob: 64a9bd29b5b555ce0cfbe896115728f4acc98c9e [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Sketch Charts Demo</title>
<script type="module" src="../sketch-charts.ts"></script>
<link rel="stylesheet" href="demo.css" />
<style>
sketch-charts {
margin: 20px;
max-width: 1000px;
}
body {
font-family:
system-ui,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
Roboto,
sans-serif;
}
</style>
</head>
<body>
<h1>Sketch Charts Demo</h1>
<sketch-charts id="charts"></sketch-charts>
<script>
// Sample data for testing
const sampleMessages = [
{
idx: 1,
type: "human",
content: "Hello, can you help me with a coding task?",
timestamp: new Date(Date.now() - 3600000).toISOString(),
usage: { cost_usd: 0.0001 },
},
{
idx: 2,
type: "assistant",
content:
"I'd be happy to help! What kind of coding task are you working on?",
timestamp: new Date(Date.now() - 3500000).toISOString(),
usage: { cost_usd: 0.0005 },
},
{
idx: 3,
type: "human",
content: "I need to create a web component using lit-element",
timestamp: new Date(Date.now() - 3400000).toISOString(),
usage: { cost_usd: 0.0001 },
},
{
idx: 4,
type: "assistant",
content:
"I can definitely help with that. Lit Element is a great library for building web components.",
timestamp: new Date(Date.now() - 3300000).toISOString(),
usage: { cost_usd: 0.0008 },
},
{
idx: 5,
type: "assistant",
tool_name: "bash",
input: "ls -la",
tool_result:
"total 16\ndrwxr-xr-x 4 user staff 128 Jan 10 12:34 .\ndrwxr-xr-x 10 user staff 320 Jan 10 12:34 ..\n-rw-r--r-- 1 user staff 123 Jan 10 12:34 file1.txt\n-rw-r--r-- 1 user staff 456 Jan 10 12:34 file2.txt",
start_time: new Date(Date.now() - 3200000).toISOString(),
end_time: new Date(Date.now() - 3190000).toISOString(),
timestamp: new Date(Date.now() - 3190000).toISOString(),
usage: { cost_usd: 0.0002 },
},
{
idx: 6,
type: "assistant",
content: "Let me create a basic web component for you.",
timestamp: new Date(Date.now() - 3100000).toISOString(),
usage: { cost_usd: 0.0015 },
},
{
idx: 7,
type: "human",
content: "Can you show me how to handle events in the web component?",
timestamp: new Date(Date.now() - 3000000).toISOString(),
usage: { cost_usd: 0.0001 },
},
{
idx: 8,
type: "assistant",
tool_name: "bash",
input: "cat example.ts",
tool_result:
"import { LitElement, html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\n@customElement('my-element')\nexport class MyElement extends LitElement {\n render() {\n return html`<div>Hello World</div>`;\n }\n}",
start_time: new Date(Date.now() - 2900000).toISOString(),
end_time: new Date(Date.now() - 2800000).toISOString(),
timestamp: new Date(Date.now() - 2800000).toISOString(),
usage: { cost_usd: 0.0003 },
},
{
idx: 9,
type: "assistant",
content:
"Here's how you can handle events in a web component using Lit.",
timestamp: new Date(Date.now() - 2700000).toISOString(),
usage: { cost_usd: 0.002 },
},
{
idx: 10,
type: "human",
content: "Thank you! How about adding properties and attributes?",
timestamp: new Date(Date.now() - 2600000).toISOString(),
usage: { cost_usd: 0.0001 },
},
{
idx: 11,
type: "assistant",
content:
"You can use the @property decorator to define properties in your Lit Element component.",
timestamp: new Date(Date.now() - 2500000).toISOString(),
usage: { cost_usd: 0.0025 },
},
];
// Set sample data as soon as the component is defined
document.addEventListener("DOMContentLoaded", () => {
console.time("chart-demo-load");
const chartsComponent = document.getElementById("charts");
chartsComponent.messages = sampleMessages;
console.timeEnd("chart-demo-load");
});
</script>
</body>
</html>