create-lwc-plugin
Version:
Wizard-like CLI tool for scaffolding a new plugin for Lightweight Charts™
51 lines (44 loc) • 1.16 kB
text/typescript
import type { Time } from 'lightweight-charts';
import { _CLASSNAME_Data } from './data';
type LineData = {
time: Time;
value: number;
};
let randomFactor = 25 + Math.random() * 25;
const samplePoint = (i: number) =>
i *
(0.5 +
Math.sin(i / 10) * 0.2 +
Math.sin(i / 20) * 0.4 +
Math.sin(i / randomFactor) * 0.8 +
Math.sin(i / 500) * 0.5) +
200;
function generateLineData(numberOfPoints: number = 500): LineData[] {
randomFactor = 25 + Math.random() * 25;
const res = [];
const date = new Date(Date.UTC(2023, 0, 1, 12, 0, 0, 0));
for (let i = 0; i < numberOfPoints; ++i) {
const time = (date.getTime() / 1000) as Time;
const value = samplePoint(i);
res.push({
time,
value,
});
date.setUTCDate(date.getUTCDate() + 1);
}
return res;
}
export function generateSampleData(
numberOfPoints: number = 500,
averageWidth: number = 50
): _CLASSNAME_Data[] {
return generateLineData(numberOfPoints).map(lineDataPoint => {
const high = lineDataPoint.value + Math.random() * averageWidth;
const low = lineDataPoint.value - Math.random() * averageWidth;
return {
time: lineDataPoint.time,
high,
low,
};
});
}