-
Notifications
You must be signed in to change notification settings - Fork 7
/
spelement.ts
60 lines (57 loc) · 1.8 KB
/
spelement.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { SeismogramDisplayData } from "./seismogram";
import { SeismographConfig } from "./seismographconfig";
import { isDef } from "./util";
export class SeisPlotElement extends HTMLElement {
_seisDataList: Array<SeismogramDisplayData>;
_seismographConfig: SeismographConfig;
constructor(seisData?: SeismogramDisplayData | Array<SeismogramDisplayData>,
seisConfig?: SeismographConfig) {
super();
if (isDef(seisData)) {
if (seisData instanceof SeismogramDisplayData) {
this._seisDataList = [ seisData ];
} else if (Array.isArray(seisData) && (seisData.length === 0 || seisData[0] instanceof SeismogramDisplayData)) {
this._seisDataList = seisData;
} else {
let msg = `length: ${seisData.length} `;
if (seisData.length > 0) {
msg = `${msg} ${seisData[0]}`;
}
throw new Error(`first arg must be array of SeismogramDisplayData: ${msg}`);
}
} else {
this._seisDataList = [];
}
if (isDef(seisConfig)) {
this._seismographConfig = seisConfig;
} else {
this._seismographConfig = new SeismographConfig();
}
}
get seisData() {
return this._seisDataList;
}
set seisData(seisData: Array<SeismogramDisplayData>) {
if (seisData instanceof SeismogramDisplayData) {
this._seisDataList = [ seisData ];
} else if (Array.isArray(seisData)) {
this._seisDataList = seisData;
} else {
throw new Error(`Unknown type for seisData: ${seisData}`);
}
this.draw();
}
get seismographConfig() {
return this._seismographConfig;
}
set seismographConfig(seismographConfig: SeismographConfig) {
this._seismographConfig = seismographConfig;
this.draw();
}
connectedCallback() {
this.draw();
}
draw() {
if ( ! this.isConnected) { return; }
}
}