66 lines
2.1 KiB
JavaScript
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";`
|