* Moving frontend TS to its own root dir
Knowing that some pepople(myself) don't like JS this is to keep any potential JS as non-hidden as possible
This commit is contained in:
parent
d76eaea6e9
commit
8fa283f606
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:0cfdedb04d45802c1c008c9610bda2df8e3482f195bd254c11ebe07205e2bd5d
|
|
||||||
size 8560
|
|
@ -1,59 +0,0 @@
|
|||||||
// This module takes care of pulling down videos for the given category
|
|
||||||
class Video {
|
|
||||||
title: string
|
|
||||||
category: string
|
|
||||||
thumbnail_b64: string|null
|
|
||||||
constructor(raw: any) {
|
|
||||||
this.title = raw['name']
|
|
||||||
this.category = raw['category']
|
|
||||||
this.thumbnail_b64 = raw['thumbnail']
|
|
||||||
}
|
|
||||||
|
|
||||||
title_link() : HTMLHeadingElement {
|
|
||||||
let container = document.createElement('h2')
|
|
||||||
|
|
||||||
let link = document.createElement('a')
|
|
||||||
link.href = `/video?c=${this.category}&v=${this.title}`
|
|
||||||
link.text = this.title
|
|
||||||
|
|
||||||
container.appendChild(link)
|
|
||||||
|
|
||||||
return container
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_category() : string|null {
|
|
||||||
// Used to modify the DOM
|
|
||||||
let params = (new URL(document.location.toString())).searchParams;
|
|
||||||
return params.get('c')
|
|
||||||
}
|
|
||||||
function base_url() : string {
|
|
||||||
const loc = document.location
|
|
||||||
return loc.protocol + '//' + loc.host
|
|
||||||
}
|
|
||||||
|
|
||||||
function fetch_videos() : Array<Video> {
|
|
||||||
const category = get_category()
|
|
||||||
if(!category) { return [] }
|
|
||||||
const endpoint = base_url() + `/api/categories?c=${category}`
|
|
||||||
|
|
||||||
let xml = new XMLHttpRequest()
|
|
||||||
xml.open('GET', endpoint, false) // sync request
|
|
||||||
xml.send(null) // no params required
|
|
||||||
if(xml.getResponseHeader('Content-Type') == 'application/json') {
|
|
||||||
let raw = JSON.parse(xml.responseText)
|
|
||||||
for(const vid of raw['videos']) {
|
|
||||||
console.log(vid)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
|
|
||||||
function ready(e) {
|
|
||||||
if(document.readyState != 'complete') { return e }
|
|
||||||
|
|
||||||
const video_data = fetch_videos()
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener('readystatechange', ready)
|
|
@ -2,7 +2,7 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "es6",
|
"target": "es6",
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"outDir": "../themes/clippable/static/js/",
|
"outDir": "../api/static/js/",
|
||||||
"importHelpers": true,
|
"importHelpers": true,
|
||||||
/* Strict Type-Checking Options */
|
/* Strict Type-Checking Options */
|
||||||
"strict": true,
|
"strict": true,
|
Loading…
Reference in New Issue
Block a user