32 lines
No EOL
1.1 KiB
JavaScript
32 lines
No EOL
1.1 KiB
JavaScript
// native functions
|
|
const invoke = window.__TAURI__.invoke
|
|
const isLoggedIn = () => invoke('is_logged_in')
|
|
const logIn = token => invoke('log_in', { token })
|
|
const listRunners = () => invoke('list_runners')
|
|
const listJobsForRunner = id => invoke('list_jobs_for_runner', { runnerId: id })
|
|
const retryJob = (projectId, jobId) => invoke('retry_job', { projectId, jobId })
|
|
|
|
// shit helpers
|
|
const $ = (...args) => {
|
|
if (args.length === 1) return document.querySelector(args[0])
|
|
return args[0].querySelector(args[1])
|
|
}
|
|
const $$ = document.querySelectorAll.bind(document)
|
|
|
|
function initTemplate(template, data) {
|
|
const fragment = template.cloneNode(true)
|
|
Object.keys(data).forEach(key => {
|
|
const field = fragment.querySelector('.' + key)
|
|
const value = data[key]
|
|
if (typeof value === 'string') {
|
|
field.textContent = value
|
|
} else if (typeof value === 'number') {
|
|
field.textContent = value.toString()
|
|
} else if (value.link) {
|
|
const a = field.querySelector('a')
|
|
a.href = value.link
|
|
a.textContent = value.text
|
|
}
|
|
})
|
|
return fragment
|
|
} |