in src/main/js/routes/schema/schema.js [10:66]
function Schema() {
const vespaState = useOutletContext()
const params = useParams()
const containerUrl = getQueryableContainer(vespaState)
const schema = params.schema
const schemaDetails = findSchemaDetails(vespaState, schema)
const [tabIndex, setTabIndex] = useState(0);
const [searchParams, setSearchParams] = useSearchParams();
return (<>
<TabView tabs={[
{
"header": "Query",
"content": <Query containerUrl={containerUrl} schema={schema} searchParams={searchParams} setSearchParams= {setSearchParams}/>
},
{
"header": "Query history",
"content": <QueryHistory schema={schema} tabSelector={setTabIndex} searchParams={searchParams} setSearchParams= {setSearchParams}/>
},
{
"header": "Data preview",
"content": <Preview containerUrl={containerUrl} schema={schema}/>
},
{
"header": "Schema",
"content": <SyntaxHighlighter language="yaml" style={androidstudio}>
{schemaDetails}
</SyntaxHighlighter>
},
]} currentTab={tabIndex} tabSelector={setTabIndex} />
</>)
/* finds a valid container to issue the query */
function getQueryableContainer(vespaState) {
const clusters = vespaState
.container
.clusters
.filter(cluster => cluster.canSearch === true)
if (clusters && clusters.length > 0 && clusters[0].nodes && clusters[0].nodes.length > 0) {
return clusters[0].route
} else {
return ""
}
}
function findSchemaDetails(vespaState, schema) {
for (let cluster of vespaState.content.clusters) {
for (let data of cluster.contentData) {
if (data.schema.schemaName === schema) {
return data.schema.schemaContent
}
}
}
}
}