mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-18 06:44:46 -07:00
89 lines
2.2 KiB
JavaScript
89 lines
2.2 KiB
JavaScript
// Universal JS imports only
|
|
import { getAppCategory } from './categories.js'
|
|
|
|
|
|
// Converts a list into a smaller searchable list
|
|
// similar to a table/spreadsheet
|
|
export function makeSearchableList ( listSet ) {
|
|
let firstLoop = true
|
|
|
|
const searchableList = new Set()
|
|
|
|
const tableHeader = new Set()
|
|
|
|
// const searchableKeys = new Set([
|
|
// 'name',
|
|
// 'text',
|
|
// 'lastUpdated',
|
|
// 'endpoint'
|
|
// ])
|
|
|
|
const makeSearchable = new Map([
|
|
[
|
|
'name',
|
|
item => {
|
|
// console.log('Running name method', item)
|
|
return item.name
|
|
}
|
|
],
|
|
[
|
|
'text',
|
|
item => item.text
|
|
],
|
|
[
|
|
'endpoint',
|
|
item => item.endpoint
|
|
],
|
|
[
|
|
'category',
|
|
app => {
|
|
return getAppCategory( app ).id
|
|
}
|
|
]
|
|
])
|
|
|
|
listSet.forEach( ( searchableItem ) => {
|
|
|
|
if ( typeof searchableItem === 'undefined' ) {
|
|
throw new Error('searchableItem is undefined')
|
|
}
|
|
|
|
// If this is the first items
|
|
// then store the keys
|
|
if ( firstLoop ) {
|
|
Object.keys(searchableItem).forEach( key => {
|
|
// console.log(key, makeSearchable.has(key))
|
|
|
|
if ( !makeSearchable.has(key) ) return
|
|
|
|
// Add to table header so we can loop it later on
|
|
tableHeader.add( key )
|
|
})
|
|
|
|
// Add keys to table head
|
|
searchableList.add( Array.from( tableHeader ) )
|
|
|
|
firstLoop = false
|
|
}
|
|
// This could cause an issue if the keys
|
|
// are out of order
|
|
|
|
// console.log('tableHeader', tableHeader)
|
|
|
|
const tableRow = []
|
|
|
|
// Loop through keys from table header
|
|
// and push them to this row
|
|
tableHeader.forEach( key => {
|
|
// console.log('searchableValue', key, searchableItem[key], makeSearchable.get(key)(searchableItem) )
|
|
|
|
tableRow.push( makeSearchable.get(key)(searchableItem) )
|
|
})
|
|
|
|
searchableList.add( tableRow )
|
|
|
|
return
|
|
})
|
|
|
|
return searchableList
|
|
}
|