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 0000000000000000000000000000000000000000..3149fa626127bad969d0b44358e9a086db02c13c --- /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 dba5c07c6a0683e0d4bcde596b44450123f29b4c..9a4969334a2e943e106df963ea303e7362eae1ff 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 ad707cb1d6919ef3eb5e467bb8997057ce422a40..9005a7af0127376f5ada37f798a892af576c081d 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 450fedbb8b169a5b7e1efc37cfe9d8f2664e7aeb..673c3f5715c22027800b5ba482aef45cad7edefa 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 0148a3361f8e490bcf9c5882b3020ec2e7735ca5..e79c43625e115cee15e6076663759ce6243e2b82 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 14d8c0635c07868f70c928b904c8d5455b42afec..7f100b5916e497e763232d185682645a7a958ee2 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;