46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import IPredictedObject from "../Interfaces/IPredictedObject"
|
|
|
|
class PredictedObjectView {
|
|
|
|
private xOrigin: number
|
|
private yOrigin: number
|
|
private width: number
|
|
private height: number
|
|
private class: string
|
|
public element: HTMLElement
|
|
|
|
constructor (props: IPredictedObject) {
|
|
this.xOrigin = props.xOrigin
|
|
this.yOrigin = props.yOrigin
|
|
this.width = props.width
|
|
this.height = props.height
|
|
this.class = props.class
|
|
this.element = this.createElement()
|
|
}
|
|
|
|
createElement (): HTMLElement {
|
|
let predictedObjectElement: HTMLElement = document.createElement('div')
|
|
predictedObjectElement.style.position = 'absolute'
|
|
predictedObjectElement.style.left = `${this.xOrigin}px`
|
|
predictedObjectElement.style.top = `${this.yOrigin}px`
|
|
predictedObjectElement.style.width = `${this.width}px`
|
|
predictedObjectElement.style.height = `${this.height}px`
|
|
predictedObjectElement.setAttribute('class', `PredictedObject ${this.class}`)
|
|
|
|
const predictedObjectLabel = this.createLabel()
|
|
|
|
predictedObjectElement.appendChild(predictedObjectLabel)
|
|
|
|
return predictedObjectElement
|
|
}
|
|
|
|
createLabel (): HTMLLabelElement {
|
|
const labelElement = document.createElement('label')
|
|
labelElement.setAttribute('class', 'predictedObjectLabel')
|
|
labelElement.innerText = this.class
|
|
return labelElement
|
|
}
|
|
}
|
|
|
|
export default PredictedObjectView
|