import debug from "debug";
import { css, html, LitElement } from "lit";
import { customElement, property } from "lit/decorators.js";
import { NamedNode } from "n3";
import { getTopGraph } from "../../../web/RdfdbSyncedGraph";
import { SyncedGraph } from "../../../web/SyncedGraph";
debug.enable("*");
const log = debug("sequencer");
interface Note {
note: string;
nonZero: boolean;
rowClass?: string; // added in message handler below
effectClass: string;
effectSettings: { [attr: string]: string };
effectSettingsPairs: EffectSettingsPair[]; // added in message handler below
devicesAffected: number;
}
interface Report {
song: string;
songUri: NamedNode; // added in message handler below
t: number;
roundT?: number; // added in message handler below
recentFps: number;
recentDeltas: number[];
recentDeltasStyle: string[]; // added in message handler below
songNotes: Note[];
}
interface EffectSettingsPair {
effectAttr: string;
value: any;
}
@customElement("light9-sequencer-ui")
export class Light9SequencerUi extends LitElement {
static styles = [
css`
:host {
display: block;
}
td {
white-space: nowrap;
padding: 0 10px;
vertical-align: top;
vertical-align: top;
text-align: start;
}
tr.active {
background: #151515;
}
.inactive > * {
opacity: 0.5;
}
.effectSetting {
display: inline-block;
background: #1b1e21;
margin: 1px 3px;
}
.chart {
height: 40px;
background: #222;
display: inline-flex;
align-items: flex-end;
}
.chart > div {
background: #a4a54f;
width: 8px;
margin: 0 1px;
}
.number {
display: inline-block;
min-width: 4em;
}
`,
];
render() {
return [
html`
Note | Effect class | Effect settings | Devices affected |
---|---|---|---|
${item.effectSettingsPairs.map(
(item) => html`
|
${item.devicesAffected} |