function processResult()

in src/main/js/components/query-result/query-result.js [238:296]


function processResult(result) {
    function extractData(rawData) {
        if (rawData === null || rawData === undefined) {
            return null;
        } else if (Array.isArray(rawData)) {
            return JSON.stringify(rawData)
        } else if (typeof rawData === "object") {
            return JSON.stringify(rawData)
        } else {
            return rawData.toString()
        }
    }

    // if empty result, just skip
    if (!result || !result.root.fields.totalCount) {
        return {
            columns: [],
            content: [],
            trace: [],
            json: result
        }
    }

    const children = result.root.children ? result.root.children : [];

    const resultFields = children.flatMap(child => Object.keys(child.fields));
    resultFields.push("relevance")

    const columns = [...new Set(resultFields)]
        .map(column => (
            {
                name: column,
                maxWidth: "300px",
                minWidth: "50px",
                selector: row => {
                    const rawData = row[column]
                    return extractData(rawData)
                },
            }))

    const data = children.map(child => {
        const fields = child.fields;
        fields.relevance = child.relevance
        return fields
    })

    let trace = []
    if ("trace" in result) {
        trace = result.trace.children
        result["trace"] = "...see trace tab..."
    }

    return {
        columns: columns,
        content: data,
        trace: trace,
        json: result
    }
}