diff --git a/pages/search/[id].vue b/pages/search/[id].vue index 2f4000b3ebe13d2b10365c0dd44cca80c3f80735..1c93aae12eeabdd472b162761d8e1d24c1b09ebc 100644 --- a/pages/search/[id].vue +++ b/pages/search/[id].vue @@ -191,26 +191,42 @@ function handleFormatWebSource (source) { } catch (error) {} return sources } +function handleFormatReportsDatasets (sources, columns) { + const labels = [] + const datas = [] + const dataMap = {} + sources.forEach(item => { + labels.push(item.date) + for (let i in item) { + if (i !== 'date') { + if (!dataMap[i]) { + dataMap[i] = { label: columns[i], data: [] } + } + dataMap[i].data.push(Number(item[i])) + } + } + }) + Object.keys(dataMap).forEach(item => { + datas.push(dataMap[item]) + }) + return { labels, datas } +} function handleFormatReports (content) { let chartStart = '::ProseChart' // todo let tableStart = '::ProseDataTable' let result = '' - // ::ProseLineChart{title='langchain-ai/langchain [2023-06-05,2024-06-04] Star Data' :labels='["2023-06-05","2023-06-12"]' :data='[43071,44946]'} + // ::ProseChart{type='line' title='langchain-ai/langchain [2023-06-05,2024-06-04] Star Data' :labels='["2023-06-05","2023-06-12"]' :data='[{"label": "star数量", "data": [43071,44946]}]' } content.forEach(item => { - const { title, data, format } = item + const { title, data, format, columns } = item if (format === 'timeline') { - const labels = [] - const datas = [] - data.forEach(child => { - labels.push(child.date) - datas.push(child.stargazers) - }) + const { labels, datas } = handleFormatReportsDatasets(data, columns) result += `${chartStart}{title='${title}' :labels='${JSON.stringify(labels)}' :data='${JSON.stringify(datas)}'}` } else if ( format === 'table' ) { result += `${tableStart}{:data=${JSON.stringify(data)}}` } }) + console.log('result:', result) return result } function handleSetNoPermission () {