From a34b52d518b0ecdf9da3cdb39c15009cab43d412 Mon Sep 17 00:00:00 2001 From: Moises Sacal <moisbo@gmail.com> Date: Tue, 1 Oct 2019 17:03:33 +1000 Subject: [PATCH] organised files, added numFound --- src/{lib => components}/Delegate.js | 0 src/components/RegisterEvents.js | 44 ++++++++++++++++++ src/components/Router.js | 17 +++---- src/{lib => components}/SolrService.js | 4 +- src/components/{ => views}/Footer.js | 0 src/components/{ => views}/Header.js | 0 src/components/{ => views}/ListDocs.js | 0 src/components/{ => views}/Loading.js | 0 src/components/{ => views}/Main.js | 9 +++- src/components/{ => views}/Search.js | 0 src/components/{ => views}/ViewDoc.js | 0 src/components/{ => views}/ViewError.js | 0 .../{ => views}/ViewErrorElement.js | 0 src/components/{ => views}/ViewSubDoc.js | 2 - src/components/{ => views}/ViewTable.js | 0 src/index.js | 46 +++---------------- 16 files changed, 68 insertions(+), 54 deletions(-) rename src/{lib => components}/Delegate.js (100%) create mode 100644 src/components/RegisterEvents.js rename src/{lib => components}/SolrService.js (89%) rename src/components/{ => views}/Footer.js (100%) rename src/components/{ => views}/Header.js (100%) rename src/components/{ => views}/ListDocs.js (100%) rename src/components/{ => views}/Loading.js (100%) rename src/components/{ => views}/Main.js (52%) rename src/components/{ => views}/Search.js (100%) rename src/components/{ => views}/ViewDoc.js (100%) rename src/components/{ => views}/ViewError.js (100%) rename src/components/{ => views}/ViewErrorElement.js (100%) rename src/components/{ => views}/ViewSubDoc.js (92%) rename src/components/{ => views}/ViewTable.js (100%) diff --git a/src/lib/Delegate.js b/src/components/Delegate.js similarity index 100% rename from src/lib/Delegate.js rename to src/components/Delegate.js diff --git a/src/components/RegisterEvents.js b/src/components/RegisterEvents.js new file mode 100644 index 0000000..3149fa6 --- /dev/null +++ b/src/components/RegisterEvents.js @@ -0,0 +1,44 @@ +const Header = require('./views/header'); +const Main = require('./views/main'); +const Footer = require('./views/footer'); +const Search = require('./views/search'); +const ViewDoc = require('./views/ViewDoc'); +const ViewError = require('./views/ViewError'); +const delegate = require('./Delegate'); +const solrService = require('./SolrService'); + +const RegisterEvents = function (state) { + const renderApp = function (data, into) { + into.innerHTML = [Header(data), Search(data), Main(data), Footer(data)].join(''); + }; + + const app = document.querySelector('#app'); + + delegate('#app', 'click', '#search-text', async () => { + const search = document.querySelector('#text-to-search'); + const {data, status} = await solrService.search({api: state.config.api}, search.value); + state.main.docs = data.docs; + state.main.numFound = data.numFound; + renderApp(state, app); + }); + + delegate('#app', 'keyup', '#text-to-search', async (event) => { + if (event.keyCode === 13) { + event.preventDefault(); + const search = document.querySelector('#text-to-search'); + const {data, status} = await solrService.search({api: state.config.api}, search.value); + state.main.docs = data.docs; + state.main.numFound = data.numFound; + renderApp(state, app); + } + }); + + delegate('#app', 'click', '#search-text-1', async () => { + const search = document.querySelector('#text-to-search'); + const {data, status} = await solrService.search({api: state.config.api}, search.value); + state.main.docs = data; + renderApp(state, app); + }); +}; + +module.exports = RegisterEvents; \ No newline at end of file diff --git a/src/components/Router.js b/src/components/Router.js index dba5c07..9a49693 100644 --- a/src/components/Router.js +++ b/src/components/Router.js @@ -1,10 +1,10 @@ -const Header = require('./header'); -const Main = require('./main'); -const Footer = require('./footer'); -const Search = require('./search'); -const ViewDoc = require('./ViewDoc'); -const ViewError = require('./ViewError'); -const solrService = require('../lib/SolrService'); +const Header = require('./views/header'); +const Main = require('./views/main'); +const Footer = require('./views/footer'); +const Search = require('./views/search'); +const ViewDoc = require('./views/ViewDoc'); +const ViewError = require('./views/ViewError'); +const solrService = require('./SolrService'); const Router = async function (state) { const route = window.location.hash; @@ -26,7 +26,8 @@ const Router = async function (state) { } else { const {data, status} = await solrService.searchAll({api: state.config.api}); if (status === 200) { - state.main.docs = data; + state.main.docs = data.docs; + state.main.numFound = data.numFound; app.innerHTML = [Header(state), Search(state), Main(state), Footer(state)].join(''); } else { app.innerHTML = [Header(state), Search(state), ViewError(state), Footer(state)].join(''); diff --git a/src/lib/SolrService.js b/src/components/SolrService.js similarity index 89% rename from src/lib/SolrService.js rename to src/components/SolrService.js index ad707cb..9005a7a 100644 --- a/src/lib/SolrService.js +++ b/src/components/SolrService.js @@ -5,7 +5,7 @@ const SolrService = { try { const req = await axios.get(`${config.api}/select?q=*%3A*`); if (req.data) { - return {data: req.data['response']['docs'], status: req.status}; + return {data: req.data['response'], status: req.status}; } else { return {data: [], status: req.status}; } @@ -36,7 +36,7 @@ const SolrService = { data = encodeURIComponent(`${data}`); const req = await axios.get(`${config.api}/${param}${data}`); if (req.data) { - return {data: req.data['response']['docs'], status: req.status}; + return {data: req.data['response'], status: req.status}; } else { return {data: [], status: req.status}; } diff --git a/src/components/Footer.js b/src/components/views/Footer.js similarity index 100% rename from src/components/Footer.js rename to src/components/views/Footer.js diff --git a/src/components/Header.js b/src/components/views/Header.js similarity index 100% rename from src/components/Header.js rename to src/components/views/Header.js diff --git a/src/components/ListDocs.js b/src/components/views/ListDocs.js similarity index 100% rename from src/components/ListDocs.js rename to src/components/views/ListDocs.js diff --git a/src/components/Loading.js b/src/components/views/Loading.js similarity index 100% rename from src/components/Loading.js rename to src/components/views/Loading.js diff --git a/src/components/Main.js b/src/components/views/Main.js similarity index 52% rename from src/components/Main.js rename to src/components/views/Main.js index 450fedb..673c3f5 100644 --- a/src/components/Main.js +++ b/src/components/views/Main.js @@ -1,11 +1,16 @@ +const $ = require("jquery"); const ListDocs = require('./ListDocs'); const Main = function (data) { - let html = ''; - html = [ListDocs(data)].join(''); + html += `<div class="container"> + <br/> + <div class="text-center"> + <p>Results: ${data.main.numFound}</p> + </div>`; + return html; }; diff --git a/src/components/Search.js b/src/components/views/Search.js similarity index 100% rename from src/components/Search.js rename to src/components/views/Search.js diff --git a/src/components/ViewDoc.js b/src/components/views/ViewDoc.js similarity index 100% rename from src/components/ViewDoc.js rename to src/components/views/ViewDoc.js diff --git a/src/components/ViewError.js b/src/components/views/ViewError.js similarity index 100% rename from src/components/ViewError.js rename to src/components/views/ViewError.js diff --git a/src/components/ViewErrorElement.js b/src/components/views/ViewErrorElement.js similarity index 100% rename from src/components/ViewErrorElement.js rename to src/components/views/ViewErrorElement.js diff --git a/src/components/ViewSubDoc.js b/src/components/views/ViewSubDoc.js similarity index 92% rename from src/components/ViewSubDoc.js rename to src/components/views/ViewSubDoc.js index 0148a33..e79c436 100644 --- a/src/components/ViewSubDoc.js +++ b/src/components/views/ViewSubDoc.js @@ -8,7 +8,6 @@ const ViewSubDoc = function (ele) { const dummy = $('<div>'); const sub = $('<div>'); const a = $('<a>'); - console.log(ele); ele = JSON.parse(ele); const href = `/#view/${ele['@id']}`; a.attr('href', href); @@ -16,7 +15,6 @@ const ViewSubDoc = function (ele) { a.text(ele['name']); a.addClass("link"); sub.append(a); - console.log(a.html()); dummy.append(sub); return dummy; } else { diff --git a/src/components/ViewTable.js b/src/components/views/ViewTable.js similarity index 100% rename from src/components/ViewTable.js rename to src/components/views/ViewTable.js diff --git a/src/index.js b/src/index.js index 14d8c06..7f100b5 100644 --- a/src/index.js +++ b/src/index.js @@ -4,17 +4,11 @@ import 'bootstrap'; import './styles/styles.scss'; import './images/logo.svg'; -const delegate = require('./lib/Delegate'); -const solrService = require('./lib/SolrService'); - const config = require('../config.json'); //App view components -const Header = require('./components/header'); -const Main = require('./components/main'); -const Footer = require('./components/footer'); -const Search = require('./components/search'); const Router = require('./components/Router'); +const RegisterEvents = require('./components/RegisterEvents'); //Default state let state = { @@ -22,7 +16,7 @@ let state = { title: 'Data Portal', URL: '/', logo: 'images/logo.svg', - help: 'help', + help: 'Help', helpURL: '', portal: 'Back to Stash', portalURL: 'http://stash.research.uts.edu.au', @@ -36,42 +30,14 @@ let state = { searchText: 'Search' }, main: { - docs: [] + docs: [], + doc: {}, + numFound: 0 }, config: config }; -const renderApp = function (data, into) { - into.innerHTML = [Header(data), Search(data), Main(data), Footer(data)].join(''); -}; - -const app = document.querySelector('#app'); - -// Register Events - -delegate('#app', 'click', '#search-text', async () => { - const search = document.querySelector('#text-to-search'); - const {data, status} = await solrService.search({api: state.config.api}, search.value); - state.main.docs = data; - renderApp(state, app); -}); - -delegate('#app', 'keyup', '#text-to-search', async (event) => { - if (event.keyCode === 13) { - event.preventDefault(); - const search = document.querySelector('#text-to-search'); - const {data, status} = await solrService.search({api: state.config.api}, search.value); - state.main.docs = data; - renderApp(state, app); - } -}); - -delegate('#app', 'click', '#search-text-1', async () => { - const search = document.querySelector('#text-to-search'); - const {data, status} = await solrService.search({api: state.config.api}, search.value); - state.main.docs = data; - renderApp(state, app); -}); +RegisterEvents(state); window.onhashchange = main; -- GitLab