Skip to content

Commit

Permalink
App: Refactor search results UI helper functions
Browse files Browse the repository at this point in the history
Fixes Code Climate issues from #183.
  • Loading branch information
mbland committed Apr 25, 2018
1 parent e677ba7 commit be674f5
Showing 1 changed file with 41 additions and 26 deletions.
67 changes: 41 additions & 26 deletions public/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,23 +164,26 @@
})
}

cl.getRoute = function(viewId){
return {
'#': cl.linksView,
'#create': cl.createLinkView,
'#edit': cl.editLinkView,
'#search': cl.searchLinksView
}[viewId]
}

cl.showView = function(hashId) {
var viewId = hashId === '' ? '#' : hashId.split('-', 1)[0],
viewParam = hashId.slice(viewId.length + 1),
container = document.getElementsByClassName('view-container')[0],
routes = {
'#': cl.linksView,
'#create': cl.createLinkView,
'#edit': cl.editLinkView,
'#search': cl.searchLinksView
},
renderView = routes[viewId]
renderView = cl.getRoute(viewId)

if (!renderView) {
if (container.children.length !== 0) {
return
}
renderView = routes['#']
renderView = cl.getRoute('#')
}
return renderView(viewParam)
.then(function(view) {
Expand Down Expand Up @@ -326,31 +329,43 @@
targetIndex = 1

if (queryType === cl.TARGET_URL_QUERY) {
// Swap the "Link" and "Target" fields in the results table.
[ resultTable.getElementsByClassName('wrapper')[0],
searchResult.getElementsByClassName('wrapper')[0]
].forEach(function(element) {
element.insertBefore(element.getElementsByClassName('target')[0],
element.getElementsByClassName('link')[0])
})
cl.swapSearchResultTableHeaders(resultTable, searchResult)
targetIndex = 0
linkIndex = 1

// Transform the results object into the same format as that for a
// custom link search. PhantomJS doesn't grok Object.values, hence
// Object.keys().map().
results = Object.keys(results)
.map(function(key) { return results[key] })
.reduce(function(flattened, links) {
links.forEach(function(link) { flattened.push(link) })
return flattened
}, [])
results = cl.transformTargetSearchResults(results)
} else {
results = results.results
}
return cl.fillSearchResultsTable(results, resultTable, searchResult,
linkIndex, targetIndex)
}

cl.swapSearchResultTableHeaders = function(resultTable, entryTemplate) {
// Swap the "Link" and "Target" fields in the results table.
[ resultTable.getElementsByClassName('wrapper')[0],
entryTemplate.getElementsByClassName('wrapper')[0]
].forEach(function(element) {
element.insertBefore(element.getElementsByClassName('target')[0],
element.getElementsByClassName('link')[0])
})
}

// Transform the results object into the same format as that for a
// custom link search.
cl.transformTargetSearchResults = function(results) {
// PhantomJS doesn't grok Object.values, hence Object.keys().map().
return Object.keys(results)
.map(function(key) { return results[key] })
.reduce(function(flattened, links) {
links.forEach(function(link) { flattened.push(link) })
return flattened
}, [])
}

cl.fillSearchResultsTable = function(results, resultTable, entryTemplate,
linkIndex, targetIndex) {
results.forEach(function(link) {
var current = searchResult.cloneNode(true),
var current = entryTemplate.cloneNode(true),
cells = current.getElementsByClassName('cell')

cells[linkIndex].appendChild(cl.createAnchor(link.link))
Expand Down

0 comments on commit be674f5

Please sign in to comment.