#11 - Initial theme support
This commit is contained in:
parent
9e21307dfd
commit
2f26aa65a6
|
|
@ -24,6 +24,7 @@ type Entity struct {
|
|||
// Config is the global config used through the whole app.
|
||||
type Config struct {
|
||||
UseSingleHTTPFrontend bool
|
||||
ThemeName string
|
||||
ListenAddressSingleHTTPFrontend string
|
||||
ListenAddressWebUI string
|
||||
ListenAddressRestActions string
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import (
|
|||
|
||||
type webUISettings struct {
|
||||
Rest string
|
||||
ThemeName string
|
||||
}
|
||||
|
||||
func findWebuiDir() string {
|
||||
|
|
@ -33,14 +34,7 @@ func findWebuiDir() string {
|
|||
return "./webui" // Should not exist
|
||||
}
|
||||
|
||||
func startWebUIServer(cfg *config.Config) {
|
||||
log.WithFields(log.Fields{
|
||||
"address": cfg.ListenAddressWebUI,
|
||||
}).Info("Starting WebUI server")
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.Handle("/", http.FileServer(http.Dir(findWebuiDir())))
|
||||
mux.HandleFunc("/webUiSettings.json", func(w http.ResponseWriter, r *http.Request) {
|
||||
func generateWebUiSettings(w http.ResponseWriter, r *http.Request) {
|
||||
restAddress := ""
|
||||
|
||||
if !cfg.UseSingleHTTPFrontend {
|
||||
|
|
@ -49,10 +43,20 @@ func startWebUIServer(cfg *config.Config) {
|
|||
|
||||
jsonRet, _ := json.Marshal(webUISettings{
|
||||
Rest: restAddress + "/api/",
|
||||
ThemeName: cfg.ThemeName,
|
||||
})
|
||||
|
||||
w.Write([]byte(jsonRet))
|
||||
})
|
||||
}
|
||||
|
||||
func startWebUIServer(cfg *config.Config) {
|
||||
log.WithFields(log.Fields{
|
||||
"address": cfg.ListenAddressWebUI,
|
||||
}).Info("Starting WebUI server")
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.Handle("/", http.FileServer(http.Dir(findWebuiDir())))
|
||||
mux.HandleFunc("/webUiSettings.json", generateWebUiSettings)
|
||||
|
||||
srv := &http.Server{
|
||||
Addr: cfg.ListenAddressWebUI,
|
||||
|
|
|
|||
|
|
@ -27,17 +27,27 @@ function fetchGetButtons() {
|
|||
})
|
||||
}
|
||||
|
||||
function onInitialLoad (res) {
|
||||
window.restBaseUrl = res.Rest
|
||||
function processWebuiSettingsJson (settings) {
|
||||
window.restBaseUrl = settings.Rest
|
||||
|
||||
window.buttonInterval = setInterval(fetchGetButtons, 3000);
|
||||
fetchGetButtons()
|
||||
if (settings.ThemeName) {
|
||||
var themeCss = document.createElement('link')
|
||||
themeCss.setAttribute('rel', 'stylesheet');
|
||||
themeCss.setAttribute('type', 'text/css')
|
||||
themeCss.setAttribute('href', '/themes/' + settings.ThemeName + '/theme.css');
|
||||
|
||||
document.head.appendChild(themeCss);
|
||||
}
|
||||
}
|
||||
|
||||
window.fetch('webUiSettings.json').then(res => {
|
||||
return res.json()
|
||||
}).then(res => {
|
||||
onInitialLoad(res)
|
||||
processWebuiSettingsJson(res)
|
||||
|
||||
fetchGetButtons()
|
||||
|
||||
window.buttonInterval = setInterval(fetchGetButtons, 3000);
|
||||
}).catch(err => {
|
||||
showBigError('fetch-webui-settings', 'getting webui settings', err)
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue