kafka-dance-frontend/src/routes/+page.js

66 lines
2.1 KiB
JavaScript

import { apiFetch, setStateError } from "../utils.js";
import { killQuery, query } from "../lib/state.js";
export const getTopics = async cluster =>
(await apiFetch(`/topics/${cluster}`) || []).sort()
export const mapFromLocalStorage = ({ checked, querySettings, jsonDisplay, clusterNames, topics }) => {
if (localStorage.querySettings) {
let storedSettings
try {
storedSettings = JSON.parse(localStorage.querySettings)
} catch (e) {
storedSettings = {}
}
querySettings.maxItems = storedSettings?.maxItems ?? querySettings.maxItems
querySettings.jsFilter = storedSettings?.jsFilter ?? querySettings.jsFilter
querySettings.queryCode = storedSettings?.queryCode ?? querySettings.queryCode
querySettings.mode = storedSettings?.mode ?? querySettings.mode
if (!checked || clusterNames.includes(storedSettings?.cluster)) {
querySettings.cluster = storedSettings.cluster
} else {
querySettings.cluster = clusterNames[0]
}
if (!checked || topics.includes(storedSettings?.topic)) {
querySettings.topic = storedSettings.topic
} else {
querySettings.topic = topics[0]
}
}
if (localStorage.jsonDisplay) {
try {
const savedJsonDisplay = JSON.parse(localStorage.jsonDisplay)
Object.entries(savedJsonDisplay).forEach(([key, value]) => {
if (savedJsonDisplay[key] !== undefined) {
jsonDisplay[key] = value
}
})
} catch (e) {
}
}
}
export const getClusterNames = async () => Object.keys((await apiFetch('/clusters')) || {})
export const startQuery = querySettings => {
localStorage.setItem('querySettings', JSON.stringify(querySettings))
query(querySettings).catch(setStateError)
return querySettings.mode
}
export const stopQuery = querySettings => {
killQuery(querySettings).catch(setStateError)
return false
}
export const defaultQueryCode =
`// \`message\` contains all metadata
// \`value\` is shorthand for message.value
// it contains the actual produced data
// \`json\` is a JSON representation of \`message\`
return message.value.eventType === "Television";`