search results implemented

This commit is contained in:
Luis Fernando Molina committed 2020-12-17 15:17:04 +01:00
1 parent 4a70dbc6ec
commit 69948217d5
1 file changed
+170 -76
@@ -265,14 +265,15 @@ function newSuperalgosDocSpace() {
for (let j = 0; j < PROJECTS_ARRAY.length; j++) {
let project = PROJECTS_ARRAY[j]
let documentIndex
let documentIndex
/* Search in Nodes */
for (let i = 0; i < SCHEMAS_BY_PROJECT.get(project).array.docsNodeSchema.length; i++) {
documentIndex = {
phraseCount: {}, // here we have an object with properties matching it paragraph style, and each property is a map of phrases and their total count.
document: SCHEMAS_BY_PROJECT.get(project).array.docsNodeSchema[i],
documentType: 'Node'
documentType: 'Node',
project: project
}
indexDocument(documentIndex)
docsIndex.push(documentIndex)
@@ -282,7 +283,8 @@ function newSuperalgosDocSpace() {
documentIndex = {
phraseCount: {}, // here we have an object with properties matching it paragraph style, and each property is a map of phrases and their total count.
document: SCHEMAS_BY_PROJECT.get(project).array.docsConceptSchema[i],
documentType: 'Concept'
documentType: 'Concept',
project: project
}
indexDocument(documentIndex)
docsIndex.push(documentIndex)
@@ -292,7 +294,8 @@ function newSuperalgosDocSpace() {
documentIndex = {
phraseCount: {}, // here we have an object with properties matching it paragraph style, and each property is a map of phrases and their total count.
document: SCHEMAS_BY_PROJECT.get(project).array.docsTopicSchema[i],
documentType: 'Topics'
documentType: 'Topics',
project: project
}
indexDocument(documentIndex)
docsIndex.push(documentIndex)
@@ -644,106 +647,197 @@ function newSuperalgosDocSpace() {
}
function renderSearchResultsPage() {
let HTML = ''
// Logo & Search Box
let resultsArary = []
buildResultsArray()
buildHTML()
HTML = HTML + '<section id="docs-search-results-div" class="docs-node-html-page-container">'
HTML = HTML + '<div class="docs-search-results-header">'
HTML = HTML + '<div class="docs-image-logo-search-results"><img src="Images/superalgos-logo.png" width=200></div>'
HTML = HTML + '<div class="docs-search-results-box">'
HTML = HTML + '<input class="docs-search-input" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></input>'
HTML = HTML + '</div>'
HTML = HTML + '</div>'
function buildResultsArray() {
for (let i = 0; i < docsIndex.length; i++) {
let documentIndex = docsIndex[i]
let documentPoints = 0
// Tabs
for (const style in documentIndex.phraseCount) {
let thisPhraseCount = documentIndex.phraseCount[style].get(searchPhrase.toLowerCase())
if (thisPhraseCount === undefined) {
thisPhraseCount = 0
}
switch (style) {
case 'definition': {
documentPoints = documentPoints + thisPhraseCount * 9
break
}
case 'title': {
documentPoints = documentPoints + thisPhraseCount * 10
break
}
case 'subtitle': {
documentPoints = documentPoints + thisPhraseCount * 8
break
}
case 'text': {
documentPoints = documentPoints + thisPhraseCount * 2
break
}
case 'list': {
documentPoints = documentPoints + thisPhraseCount * 2
break
}
case 'note': {
documentPoints = documentPoints + thisPhraseCount * 4
break
}
case 'warning': {
documentPoints = documentPoints + thisPhraseCount * 6
break
}
case 'important': {
documentPoints = documentPoints + thisPhraseCount * 7
break
}
case 'success': {
documentPoints = documentPoints + thisPhraseCount * 5
break
}
case 'callout': {
documentPoints = documentPoints + thisPhraseCount * 5
break
}
case 'summary': {
documentPoints = documentPoints + thisPhraseCount * 6
break
}
case 'json': {
documentPoints = documentPoints + thisPhraseCount * 2
break
}
case 'javascript': {
documentPoints = documentPoints + thisPhraseCount * 2
break
}
case 'gif': {
documentPoints = documentPoints + thisPhraseCount * 1
break
}
case 'png': {
documentPoints = documentPoints + thisPhraseCount * 1
break
}
}
}
HTML = HTML + '<div class="docs-search-results-header-tabs-container">'
HTML = HTML + '<input id="tab1" type="radio" name="tabs" checked=""><label for="tab1">All</label>'
HTML = HTML + '<input id="tab2" type="radio" name="tabs"><label for="tab2">Nodes</label>'
HTML = HTML + '<input id="tab3" type="radio" name="tabs"><label for="tab3">Concepts</label>'
HTML = HTML + '<input id="tab4" type="radio" name="tabs"><label for="tab4">Topics</label>'
HTML = HTML + '<input id="tab5" type="radio" name="tabs"><label for="tab5">Projects</label>'
HTML = HTML + '<input id="tab6" type="radio" name="tabs"><label for="tab6">Code</label>'
HTML = HTML + '<input id="tab7" type="radio" name="tabs"><label for="tab7">Configs</label>'
if (documentPoints === 0) { continue } // No matches anywhere
// Results
let result = {
documentIndex: documentIndex,
documentPoints: documentPoints
}
let added = false
HTML = HTML + '<div class="docs-search-result-content">'
if (resultsArary.length === 0) {
resultsArary.push(result)
added = true
} else {
for (let j = 0; j < resultsArary.length; j++) {
let thisResult = resultsArary[j]
if (result.documentPoints > thisResult.documentPoints) {
resultsArary.splice(j, 0, result)
added = true
break
}
}
}
if (added === false) {
resultsArary.push(result)
}
}
}
// All Tab
function buildHTML() {
let HTML = ''
HTML = HTML + '<div id="content1">'
// Logo & Search Box
HTML = HTML + '<section id="docs-search-results-div" class="docs-node-html-page-container">'
HTML = HTML + '<div class="docs-search-results-header">'
HTML = HTML + '<div class="docs-image-logo-search-results"><img src="Images/superalgos-logo.png" width=200></div>'
HTML = HTML + '<div class="docs-search-results-box">'
HTML = HTML + '<input class="docs-search-input" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></input>'
HTML = HTML + '</div>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="data-storage.html">Data Storage</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">The data storage node holds the definitions as to what data is stored in the corresponding network node.</p>'
HTML = HTML + '</div>'
// Tabs
HTML = HTML + '<div class="docs-search-results-header-tabs-container">'
HTML = HTML + '<input id="tab1" type="radio" name="tabs" checked=""><label for="tab1">All</label>'
HTML = HTML + '<input id="tab2" type="radio" name="tabs"><label for="tab2">Nodes</label>'
HTML = HTML + '<input id="tab3" type="radio" name="tabs"><label for="tab3">Concepts</label>'
HTML = HTML + '<input id="tab4" type="radio" name="tabs"><label for="tab4">Topics</label>'
HTML = HTML + '<input id="tab5" type="radio" name="tabs"><label for="tab5">Projects</label>'
HTML = HTML + '<input id="tab6" type="radio" name="tabs"><label for="tab6">Code</label>'
HTML = HTML + '<input id="tab7" type="radio" name="tabs"><label for="tab7">Configs</label>'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="data-mines-data.html">Data Mines Data</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">Session independent data refers to data generated by sensors and indicators, not related to trading sessions.</p>'
HTML = HTML + '</div>'
// Results
HTML = HTML + '<div class="docs-search-result-content">'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="trading-mines-data.html">Trading Mines Data</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">Session-based data refers to data that is generated as a consequence of running a trading session, that is, data the trading bot instance generates while running backtesting, paper trading, forward testing, or live trading sessions.</p>'
HTML = HTML + '</div>'
// All Tab
HTML = HTML + '<div id="content1">'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Ethereum > Topic</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="blockchain-data-mining.html">Blockchain Data Mining</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">Mining data from the Ethereum blockchain requires running an Ethereum node. Superalgos interfaces with the Ethereum blockchaing via...</p>'
HTML = HTML + '</div>'
for (let i = 0; i < resultsArary.length; i++) {
let result = resultsArary[i]
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">' + result.documentIndex.project + ' > ' + result.documentIndex.documentType + '</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="data-storage.html">' + result.documentIndex.document.type + '</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">' + result.documentIndex.document.definition + '</p>'
HTML = HTML + '</div>'
}
// Nodes Tab
HTML = HTML + '</div>'
HTML = HTML + '<div id="content2">'
// Nodes Tab
HTML = HTML + '<div id="content2">'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="data-storage.html">Data Storage</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">The data storage node holds the definitions as to what data is stored in the corresponding network node.</p>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="data-storage.html">Data Storage</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">The data storage node holds the definitions as to what data is stored in the corresponding network node.</p>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="data-mines-data.html">Data Mines Data</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">Session independent data refers to data generated by sensors and indicators, not related to trading sessions.</p>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="data-mines-data.html">Data Mines Data</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">Session independent data refers to data generated by sensors and indicators, not related to trading sessions.</p>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="trading-mines-data.html">Trading Mines Data</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">Session-based data refers to data that is generated as a consequence of running a trading session, that is, data the trading bot instance generates while running backtesting, paper trading, forward testing, or live trading sessions.</p>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-search-result-content-record-container">'
HTML = HTML + '<p class="docs-search-result-content-record-project-category">Superalgos > Node</p>'
HTML = HTML + '<p><a class="docs-search-result-content-record-title" href="trading-mines-data.html">Trading Mines Data</a></p>'
HTML = HTML + '<p class="docs-search-result-content-record-extract">Session-based data refers to data that is generated as a consequence of running a trading session, that is, data the trading bot instance generates while running backtesting, paper trading, forward testing, or live trading sessions.</p>'
HTML = HTML + '</div>'
HTML = HTML + '</div>'
HTML = HTML + '</div>'
// End Content
// End Content
HTML = HTML + '</div>'
HTML = HTML + '</div>'
HTML = HTML + '</div>'
HTML = HTML + '</div>'
// End Section
HTML = HTML + '</section>'
// End Section
HTML = HTML + '</section>'
let docsSpaceDiv = document.getElementById('docs-space-div')
docsSpaceDiv.innerHTML = HTML + addFooter()
detectEnterOnSearchBox()
let docsSpaceDiv = document.getElementById('docs-space-div')
docsSpaceDiv.innerHTML = HTML + addFooter()
detectEnterOnSearchBox()
}
}
function detectEnterOnSearchBox() {
const element = document.getElementsByClassName("docs-search-input")[0]
if (searchPhrase !== undefined) {
element.value = searchPhrase
}
element.focus()
element.addEventListener("keyup", function (event) {
if (event.key === "Enter" || event.keyCode === 13) {
let searchPhrase = element.value
searchPhrase = element.value
renderSearchResultsPage()
}
});