| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- 'use strict'
- import { createClient } from '@connectrpc/connect'
- import { createConnectTransport } from '@connectrpc/connect-web'
- import { OliveTinApiService } from './resources/scripts/gen/olivetin/api/v1/olivetin_pb'
- import { createApp } from 'vue'
- import router from './resources/vue/router.js';
- import App from './resources/vue/App.vue';
- import {
- initMarshaller,
- setupSectionNavigation,
- marshalDashboardComponentsJsonToHtml,
- refreshServerConnectionLabel
- } from './js/marshaller.js'
- import { checkWebsocketConnection } from './js/websocket.js'
- function searchLogs (e) {
- document.getElementById('searchLogsClear').disabled = false
- const searchText = e.target.value.toLowerCase()
- for (const row of document.querySelectorAll('tr.log-row')) {
- const actionTitle = row.getAttribute('title').toLowerCase()
- row.hidden = !actionTitle.includes(searchText)
- }
- }
- function searchLogsClear () {
- for (const row of document.querySelectorAll('tr.log-row')) {
- row.hidden = false
- }
- document.getElementById('searchLogsClear').disabled = true
- document.getElementById('logSearchBox').value = ''
- }
- function refreshLoop () {
- checkWebsocketConnection()
- // fetchGetDashboardComponents()
- // fetchGetLogs()
- refreshServerConnectionLabel()
- }
- async function fetchGetDashboardComponents () {
- try {
- const res = await window.client.getDashboardComponents()
- marshalDashboardComponentsJsonToHtml(res)
- refreshServerConnectionLabel() // in-case it changed, update the label quicker
- } catch(err) {
- window.showBigError('fetch-buttons', 'getting buttons', err, false)
- }
- }
- function processWebuiSettingsJson (settings) {
- setupSectionNavigation(settings.SectionNavigationStyle)
- window.restBaseUrl = settings.Rest
- document.querySelector('#currentVersion').innerText = settings.CurrentVersion
- if (settings.ShowNewVersions && settings.AvailableVersion !== 'none') {
- document.querySelector('#available-version').innerText = 'New Version Available: ' + settings.AvailableVersion
- document.querySelector('#available-version').hidden = false
- }
- if (!settings.ShowNavigation) {
- document.querySelector('header').style.display = 'none'
- }
- if (!settings.ShowFooter) {
- document.querySelector('footer[title="footer"]').style.display = 'none'
- }
- if (settings.EnableCustomJs) {
- const script = document.createElement('script')
- script.src = './custom-webui/custom.js'
- document.head.appendChild(script)
- }
- window.pageTitle = 'OliveTin'
- if (settings.PageTitle) {
- window.pageTitle = settings.PageTitle
- document.title = window.pageTitle
- const titleElem = document.querySelector('#page-title')
- if (titleElem) titleElem.innerText = window.pageTitle
- }
- processAdditionalLinks(settings.AdditionalLinks)
- window.settings = settings
- }
- function processAdditionalLinks (links) {
- if (links === null) {
- return
- }
- if (links.length > 0) {
- for (const link of links) {
- const linkA = document.createElement('a')
- linkA.href = link.Url
- linkA.innerText = link.Title
- if (link.Target === '') {
- linkA.target = '_blank'
- } else {
- linkA.target = link.Target
- }
- const linkLi = document.createElement('li')
- linkLi.appendChild(linkA)
- document.getElementById('supplemental-links').prepend(linkLi)
- }
- }
- }
- function initClient () {
- const transport = createConnectTransport({
- baseUrl: window.location.protocol + '//' + window.location.host + '/api/',
- })
- window.client = createClient(OliveTinApiService, transport)
- }
- function setupVue () {
- const app = createApp(App)
- app.use(router);
- app.mount('#app')
- }
- function main () {
- setupVue();
- initClient()
- initMarshaller()
- window.addEventListener('EventConfigChanged', fetchGetDashboardComponents)
- window.addEventListener('EventEntityChanged', fetchGetDashboardComponents)
- window.fetch('webUiSettings.json').then(res => {
- return res.json()
- }).then(res => {
- processWebuiSettingsJson(res)
- fetchGetDashboardComponents()
- window.restAvailable = true
- window.refreshLoop = refreshLoop
- window.refreshLoop()
- setInterval(refreshLoop, 3000)
- }).catch(err => {
- window.showBigError('fetch-webui-settings', 'getting webui settings', err)
- })
- }
- main() // call self
|