diff --git a/source/index.html.jade b/source/index.html.jade
index 5028275..5fe8082 100644
--- a/source/index.html.jade
+++ b/source/index.html.jade
@@ -21,6 +21,8 @@ html(ng-app="sideBySide" ng-controller="AppController")
// top menu
.pure-menu.pure-menu-open.pure-menu-horizontal.menu-main
ul
+ li(ng-repeat="link in links")
+ a(href="" ng-click="display(link.display)" ng-bind-html="link.text")
li
a(href="" ng-click="showPage('help')") Help
li
diff --git a/source/scripts/controllers/app.js.coffee b/source/scripts/controllers/app.js.coffee
index ffa264f..8fff650 100644
--- a/source/scripts/controllers/app.js.coffee
+++ b/source/scripts/controllers/app.js.coffee
@@ -1,6 +1,6 @@
angular.module("sideBySide").controller "AppController",
-['$scope', 'ngDialog', 'poems'
-($scope, ngDialog, poems) ->
+['$scope', 'ngDialog', 'filter', 'poems'
+($scope, ngDialog, filter, poems) ->
$scope.title = =>
sbs = 'Side By Side viewer'
if poems.config.title
@@ -8,6 +8,17 @@ angular.module("sideBySide").controller "AppController",
else
sbs
+ $scope.$watchCollection ->
+ poems.config
+ , ->
+ if 'links' of poems.config
+ $scope.links = poems.config.links.map (link) ->
+ link.display = JSON.stringify link.display
+ link
+
+ $scope.display = (encoded) ->
+ filter.setFilter JSON.parse encoded
+
$scope.showPage = (page) ->
ngDialog.open {
template: 'partials/' + page + '.html'
diff --git a/source/scripts/services/filter.js.coffee b/source/scripts/services/filter.js.coffee
index 0bce439..4b3c6a2 100644
--- a/source/scripts/services/filter.js.coffee
+++ b/source/scripts/services/filter.js.coffee
@@ -5,6 +5,13 @@ angular.module("sideBySide").service "filter",
@update = ->
extractHeaders poems.all
+ @setFilter = (filter) ->
+ for key, values of filter
+ null
+
+ poems.all.map (poem) ->
+ poem.meta.Active = poem.meta[key] in values
+
@getFilter = ->
encodings = []
for header in headers
diff --git a/source/tests/services/filter.js.coffee b/source/tests/services/filter.js.coffee
index 56d3c23..804a940 100644
--- a/source/tests/services/filter.js.coffee
+++ b/source/tests/services/filter.js.coffee
@@ -70,3 +70,17 @@ test "get filter for arbitrary poems using shortest key", ->
deepEqual filter.getFilter(), {
'Code': [ 'vrch', 'muz' ]
}
+
+test "set filter", ->
+ setPoems()
+ poemList.vrch.meta.Active = true
+ filter.update()
+ filter.setFilter {
+ 'Language': [ 'English' ]
+ }
+
+ equal poemList.vrch.meta.Active, false
+ equal poemList.poe.meta.Active, true
+ deepEqual filter.getFilter(), {
+ 'Code': [ 'poe' ]
+ }
diff --git a/source/tests/the_raven/config.json b/source/tests/the_raven/config.json
index e531368..f632cd6 100644
--- a/source/tests/the_raven/config.json
+++ b/source/tests/the_raven/config.json
@@ -1,5 +1,15 @@
{
"title": "The Raven",
+ "links": [{
+ "text": "English",
+ "display": { "Language": [ "en" ] }
+ }, {
+ "text": "Česky",
+ "display": { "Language": [ "cs" ] }
+ }, {
+ "text": "Polski",
+ "display": { "Language": [ "pl" ] }
+ }],
"files": [
"1845-poe.md",
"1881-vrchlicky.md",
@@ -9,7 +19,5 @@
"1910-barbara-beaupre.md",
"1970-baranczak.md"
],
- "display": {
- "Language": [ "cs" ]
- }
+ "display": { "Language": [ "cs" ] }
}