mirror of
https://github.com/BluemediaDev/fancy-gatus.git
synced 2025-07-07 03:52:42 +02:00
Compare commits
5 commits
7c4f5b4ab3
...
a16a48a1c8
Author | SHA1 | Date | |
---|---|---|---|
a16a48a1c8 | |||
17f4e66d87 | |||
fb94e1bcab | |||
2ee020297e | |||
bf7fad4f4e |
5 changed files with 41 additions and 38 deletions
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
@ -27,7 +27,7 @@ jobs:
|
||||||
id: release
|
id: release
|
||||||
uses: mikepenz/release-changelog-builder-action@v5
|
uses: mikepenz/release-changelog-builder-action@v5
|
||||||
with:
|
with:
|
||||||
configuration: ".github/changelog-configuration.json"
|
configuration: '.github/changelog-configuration.json'
|
||||||
failOnError: true
|
failOnError: true
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
4
package-lock.json
generated
4
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "fancy-gatus",
|
"name": "fancy-gatus",
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "fancy-gatus",
|
"name": "fancy-gatus",
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tailwindcss/vite": "^4.1.8",
|
"@tailwindcss/vite": "^4.1.8",
|
||||||
"axios": "^1.9.0",
|
"axios": "^1.9.0",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "fancy-gatus",
|
"name": "fancy-gatus",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite dev",
|
"dev": "vite dev",
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="w-screen h-fit min-h-screen flex flex-col items-center bg-base-200"
|
class="h-fit min-h-screen flex flex-col items-center bg-base-200"
|
||||||
data-theme={$persistentSettings.darkmode ? 'darkgray' : 'emerald'}
|
data-theme={$persistentSettings.darkmode ? 'darkgray' : 'emerald'}
|
||||||
>
|
>
|
||||||
<div class="w-full md:w-5/6 xl:w-3/5 max-w-5xl h-full pl-4 md:pl-0 pr-4 md:pr-0 pt-5 pb-5">
|
<div class="md:w-5/6 xl:w-3/5 max-w-5xl h-full pl-4 md:pl-0 pr-4 md:pr-0 pt-5 pb-5">
|
||||||
{@render children()}
|
{@render children()}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
import type { AxiosError } from 'axios'
|
||||||
import { onMount } from 'svelte'
|
import { onMount } from 'svelte'
|
||||||
import type { Config } from '$lib/types/config'
|
import type { Config } from '$lib/types/config'
|
||||||
import type { Status } from '$lib/types/api'
|
import type { Status } from '$lib/types/api'
|
||||||
|
@ -15,41 +16,42 @@
|
||||||
let config: Config = $state({})
|
let config: Config = $state({})
|
||||||
let apiData: Status[] = $state([])
|
let apiData: Status[] = $state([])
|
||||||
|
|
||||||
function getConfig() {
|
async function getConfig() {
|
||||||
axios
|
try {
|
||||||
.get('config.json', { baseURL: '/' })
|
const response = await axios.get('config.json', { baseURL: '/' })
|
||||||
.then((response) => {
|
|
||||||
config = response.data
|
config = response.data
|
||||||
// Set title if defined in config
|
// Set title if defined in config
|
||||||
if (config.title) {
|
if (config.title) {
|
||||||
document.title = config.title
|
document.title = config.title
|
||||||
}
|
}
|
||||||
getApiData()
|
} catch (err) {
|
||||||
})
|
const error = err as AxiosError
|
||||||
.catch((error) => {
|
if (error.response && error.response.status === 404) {
|
||||||
if (error.response.status === 404) {
|
console.warn('No config.json file found. Using default values.')
|
||||||
console.warn('No config.json file found. Using default values.')
|
}
|
||||||
getApiData()
|
console.log('Error getting config: ' + error)
|
||||||
} else {
|
}
|
||||||
console.log('Error getting config: ' + error)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getApiData() {
|
async function getApiData() {
|
||||||
// Set base URL for API calls if defined in config
|
// Set base URL for API calls if defined in config
|
||||||
if (config.gatusBaseUrl && axios.defaults.baseURL !== config.gatusBaseUrl) {
|
if (config.gatusBaseUrl && axios.defaults.baseURL !== config.gatusBaseUrl) {
|
||||||
axios.defaults.baseURL = config.gatusBaseUrl
|
axios.defaults.baseURL = config.gatusBaseUrl
|
||||||
}
|
}
|
||||||
axios
|
|
||||||
.get('/api/v1/endpoints/statuses')
|
try {
|
||||||
.then((response) => {
|
const response = await axios.get('/api/v1/endpoints/statuses')
|
||||||
apiData = response.data
|
apiData = response.data
|
||||||
loading = false
|
loading = false
|
||||||
})
|
} catch (error) {
|
||||||
.catch((error) => {
|
console.log(error)
|
||||||
console.log(error)
|
}
|
||||||
})
|
}
|
||||||
|
|
||||||
|
async function refresh() {
|
||||||
|
await getConfig()
|
||||||
|
await getApiData()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Group statuses by their group name
|
// Group statuses by their group name
|
||||||
|
@ -93,13 +95,14 @@
|
||||||
|
|
||||||
// Array of statuses where the last result has success = false
|
// Array of statuses where the last result has success = false
|
||||||
let failedStatuses = $derived.by(() => {
|
let failedStatuses = $derived.by(() => {
|
||||||
return apiData.filter((status) => {
|
const filteredStatuses = groups.flatMap((item) => item.statuses)
|
||||||
|
return filteredStatuses.filter((status) => {
|
||||||
return !status.results[status.results.length - 1].success
|
return !status.results[status.results.length - 1].success
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
getConfig()
|
refresh()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -118,6 +121,6 @@
|
||||||
expandByDefault={config.defaultExpandGroups}
|
expandByDefault={config.defaultExpandGroups}
|
||||||
/>
|
/>
|
||||||
{/each}
|
{/each}
|
||||||
<RefreshSettings defaultRefreshInterval={config.defaultRefreshInterval} onRefresh={getConfig} />
|
<RefreshSettings defaultRefreshInterval={config.defaultRefreshInterval} onRefresh={refresh} />
|
||||||
<Footer />
|
<Footer />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue