gitlab-jobs/dist/common.js

32 lines
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
}