diff --git a/client/src/components/instruments/FilterEntry.vue b/client/src/components/instruments/FilterEntry.vue
index 285fb13e..9b6cbc6f 100644
--- a/client/src/components/instruments/FilterEntry.vue
+++ b/client/src/components/instruments/FilterEntry.vue
@@ -3,13 +3,17 @@
:class="typeClass"
class="filter-entry">
{{ text }}
-
+
+
+
+
@@ -46,6 +88,7 @@
.filter-group {
border-bottom: 1px solid $color-silver;
+ padding: $medium-spacing 0;
display: flex;
flex-direction: column;
diff --git a/client/src/components/instruments/InstrumentFilter.vue b/client/src/components/instruments/InstrumentFilter.vue
index 49e346e6..c7381d28 100644
--- a/client/src/components/instruments/InstrumentFilter.vue
+++ b/client/src/components/instruments/InstrumentFilter.vue
@@ -3,33 +3,28 @@
i)"/>
+ />
i.type.category===LANGUAGE_COMMUNICATION)"
/>
i.type.category===SOCIETY)"/>
+ />
i.type.category===INTERDISCIPLINARY)"/>
+ />
diff --git a/client/src/graphql/client.js b/client/src/graphql/client.js
index 2bfabfc8..ede1035c 100644
--- a/client/src/graphql/client.js
+++ b/client/src/graphql/client.js
@@ -24,6 +24,10 @@ const writeLocalCache = cache => {
__typename: 'HelloEmail',
email: '',
},
+ instrumentFilter: {
+ __typename: 'InstrumentFilter',
+ currentFilter: 'abc'
+ }
},
});
};
diff --git a/client/src/graphql/gql/local/instrumentFiler.gql b/client/src/graphql/gql/local/instrumentFiler.gql
new file mode 100644
index 00000000..fe00a4be
--- /dev/null
+++ b/client/src/graphql/gql/local/instrumentFiler.gql
@@ -0,0 +1,5 @@
+query InstrumentFilter {
+ instrumentFilter @client {
+ currentFilter
+ }
+}
diff --git a/client/src/graphql/gql/local/mutations/setInstrumentFilter.gql b/client/src/graphql/gql/local/mutations/setInstrumentFilter.gql
new file mode 100644
index 00000000..bfc35931
--- /dev/null
+++ b/client/src/graphql/gql/local/mutations/setInstrumentFilter.gql
@@ -0,0 +1,3 @@
+mutation($filter: String!) {
+ setInstrumentFilter(filter: $filter) @client
+}
diff --git a/client/src/graphql/resolvers.js b/client/src/graphql/resolvers.js
index 2dd4abeb..2d0c2620 100644
--- a/client/src/graphql/resolvers.js
+++ b/client/src/graphql/resolvers.js
@@ -1,6 +1,7 @@
import SCROLL_POSITION from '@/graphql/gql/local/scrollPosition.gql';
import HELLO_EMAIL from '@/graphql/gql/local/helloEmail.gql';
import SIDEBAR from '@/graphql/gql/local/sidebar.gql';
+import INSTRUMENT_FILTER from '@/graphql/gql/local/instrumentFiler.gql';
export const resolvers = {
Mutation: {
@@ -16,6 +17,12 @@ export const resolvers = {
cache.writeQuery({query: HELLO_EMAIL, data});
return data.helloEmail;
},
+ setInstrumentFilter: (_, {filter}, {cache}) => {
+ const data = cache.readQuery({query: INSTRUMENT_FILTER});
+ data.instrumentFilter.currentFilter = filter;
+ cache.writeQuery({query: INSTRUMENT_FILTER, data});
+ return data.instrumentFilter;
+ },
toggleSidebar: (_, {sidebar: {profile, navigation}}, {cache}) => {
const data = cache.readQuery({query: SIDEBAR});
if (typeof profile !== 'undefined') {
@@ -26,6 +33,6 @@ export const resolvers = {
}
cache.writeQuery({query: SIDEBAR, data});
return data.sidebar;
- }
- }
+ },
+ },
};
diff --git a/client/src/graphql/typedefs.js b/client/src/graphql/typedefs.js
index ecad752c..9528fc5e 100644
--- a/client/src/graphql/typedefs.js
+++ b/client/src/graphql/typedefs.js
@@ -19,6 +19,10 @@ export const typeDefs = gql`
profile: Boolean
}
+ type InstrumentFilter {
+ currentFilter: String!
+ }
+
type Mutation {
scrollTo(scrollTo: String!): ScrollPosition
helloEmail(email: String!): HelloEmail
diff --git a/client/src/pages/instrumentOverview.vue b/client/src/pages/instrumentOverview.vue
index cd4928ed..a339e23b 100644
--- a/client/src/pages/instrumentOverview.vue
+++ b/client/src/pages/instrumentOverview.vue
@@ -21,10 +21,12 @@
import InstrumentEntry from '@/components/instruments/InstrumentEntry';
import INSTRUMENTS_QUERY from '@/graphql/gql/queries/instrumentsQuery.gql';
+ import INSTRUMENT_FILTER_QUERY from 'gql/local/instrumentFiler.gql';
+
export default {
components: {
InstrumentFilter,
- InstrumentEntry
+ InstrumentEntry,
},
apollo: {
@@ -32,27 +34,43 @@
query: INSTRUMENTS_QUERY,
update(data) {
return this.$getRidOfEdges(data).instruments;
- }
- }
+ },
+ },
+ instrumentFilter: {
+ query: INSTRUMENT_FILTER_QUERY,
+ update({instrumentFilter}) {
+ const {currentFilter} = instrumentFilter;
+ if (currentFilter && currentFilter.indexOf(':') > -1) {
+ const [filterType, identifier] = currentFilter.split(':');
+ this.filter = i => i.type[filterType] === identifier;
+ } else {
+ this.filter = i => i; // identity
+ }
+ return instrumentFilter;
+ },
+ },
},
data() {
return {
instruments: [],
- filter: i => i
+ filter: i => i, // identity
+ instrumentFilter: {
+ currentFilter: '',
+ },
};
},
computed: {
filteredInstruments() {
return this.instruments.filter(i => this.filter(i));
- }
+ },
},
methods: {
updateFilter(filter) {
this.filter = filter;
- }
+ },
},
};