clippable/ts/index.ts
shockrah 28d9c2aa30 * Frontend restructure with webpack
Doing this means we only have to serve up a single js
file across all pages, reducing the amount of fuckery the backend
has to do. Also we can start marking the js to require much heavier caching
2022-03-22 17:17:15 -07:00

73 lines
1.6 KiB
TypeScript

export class Category {
name: string
thumbnail: string|null
constructor(raw: any) {
this.name = raw['name']
this.thumbnail= raw['thumbnail']
// Setting some defaults
if(!this.name) { this.name = null }
if(!this.thumbnail) { this.thumbnail= null }
}
title_link() : HTMLHeadingElement {
let container = document.createElement('h2')
let link = document.createElement('a')
if(this.name) {
link.href = `/category/${this.name}`
link.text = this.name
} else {
link.href = '#'
link.text = this.name + 'ft. No thumbnail'
}
link.text = link.text[0].toUpperCase() + link.text.substring(1, link.text.length)
container.appendChild(link)
return container
}
thumbnail_div() : HTMLAnchorElement {
let nail = document.createElement('img')
nail.className = 'img-fluid'
// Modern browser's should be able to cache this request
if(!(this.thumbnail == null || this.thumbnail.length == 0)) {
nail.setAttribute('src', `${this.thumbnail}`)
} else{
nail.setAttribute('src', '/static/cantfindshit.gif')
}
let link = document.createElement('a')
if(this.name) {
link.href = `/category/${this.name}`
} else {
link.href = '#'
}
link.appendChild(nail)
return link
}
public as_div() {
let container = document.createElement('div')
container.className = 'video-block'
let title = this.title_link()
let thumbnail = this.thumbnail_div()
container.appendChild(title)
container.appendChild(thumbnail)
// Dump gallery onto the main page
document.getElementById('main-container').appendChild(container)
return container
}
}