diff --git a/api/src/captions.js b/api/src/captions.js index cd97305..c7790b5 100644 --- a/api/src/captions.js +++ b/api/src/captions.js @@ -152,4 +152,27 @@ export default class Captions { }) return results.hits.hits.map(this.mapResult) } + + async fetchProgrammeList() { + const query = { + size: 0, + aggs: { + programmes: { + composite: { + sources: [ + { id: { terms: {field: 'programme_id.keyword' } } }, + { title: { terms: {field: 'programme_title.keyword' } } }, + { date: { date_histogram: { field: 'programme_date', calendar_interval: '1d', format: 'yyyy-MM-dd' } } } + ], + size : 10000 + } + } + } + } + const results = await this.client.search({ + index: 'captions', + body: query + }) + return results.aggregations.programmes.buckets.map(d => { return d.key }) + } } diff --git a/api/src/index.js b/api/src/index.js index 0ed5752..54845b3 100644 --- a/api/src/index.js +++ b/api/src/index.js @@ -43,5 +43,10 @@ app.get('/fetchContext', cors(), async (request, response) => { response.json(results) }) +app.get('/fetchProgrammeList', cors(), async (request, response) => { + const results = await captions.fetchProgrammeList() + response.json(results) +}) + // Register express routes & serve app.listen(PORT, () => console.log(`Server running on port ${PORT}`)) diff --git a/web/src/App.vue b/web/src/App.vue index 5a2affa..dec7b9e 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -7,6 +7,9 @@ + diff --git a/web/src/Programmes.vue b/web/src/Programmes.vue new file mode 100644 index 0000000..5d79a03 --- /dev/null +++ b/web/src/Programmes.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/main.js b/web/src/main.js index 78b5d74..e48e661 100644 --- a/web/src/main.js +++ b/web/src/main.js @@ -5,6 +5,7 @@ import { sync } from 'vuex-router-sync' import App from './App.vue' import Search from './Search.vue' +import Programmes from './Programmes.vue' import About from './About.vue' import DateRangePicker from '@gravitano/vue-date-range-picker' @@ -31,6 +32,11 @@ global.router = new VueRouter({ component: Search, name: 'search' }, + { + path: '/programmes', + component: Programmes, + name: 'programmes' + }, { path: '/about', component: About,