From 3f46edce1c2ca8a04c1c8d73814f5889af01fa57 Mon Sep 17 00:00:00 2001 From: Rick Date: Sun, 4 Oct 2020 20:34:56 -0600 Subject: [PATCH 1/6] first jab at creating race filter --- .../current-prosecutors.html | 105 +++++++++++------- .../current-prosecutors/currentProsecutors.js | 26 ++++- 2 files changed, 84 insertions(+), 47 deletions(-) diff --git a/client/templates/sections/current-prosecutors/current-prosecutors.html b/client/templates/sections/current-prosecutors/current-prosecutors.html index 1886e4f4..51b27562 100644 --- a/client/templates/sections/current-prosecutors/current-prosecutors.html +++ b/client/templates/sections/current-prosecutors/current-prosecutors.html @@ -1,53 +1,72 @@ diff --git a/client/templates/sections/current-prosecutors/currentProsecutors.js b/client/templates/sections/current-prosecutors/currentProsecutors.js index 0f8e27f5..5761a9ef 100644 --- a/client/templates/sections/current-prosecutors/currentProsecutors.js +++ b/client/templates/sections/current-prosecutors/currentProsecutors.js @@ -1,7 +1,7 @@ -import { Template } from 'meteor/templating'; -import { ReactiveDict } from 'meteor/reactive-dict'; +import {Template} from 'meteor/templating'; +import {ReactiveDict} from 'meteor/reactive-dict'; -import { Attorneys } from '../../../../imports/api/attorneys.js'; +import {Attorneys} from '../../../../imports/api/attorneys.js'; import './current-prosecutors.html'; Template.currentProsecutors.onCreated(function () { @@ -20,10 +20,20 @@ Template.currentProsecutors.helpers({ 'Municipal Attorney' ] }, + raceFilters() { + return [ + 'American Indian', + 'Asian', + 'Black', + 'Hispanic', + 'Pacific Islander', + 'White' + ] + }, attorneys() { const selectedRoleFilters = Template.instance().state.get("selectedRoleFilters") return selectedRoleFilters.length > 0 - ? Attorneys.find({ "role": { $in: selectedRoleFilters } }).fetch() + ? Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() : Attorneys.find().fetch() }, }); @@ -36,5 +46,13 @@ Template.currentProsecutors.events({ ? selectedRoleFilters.filter((value) => value !== filter) : [...selectedRoleFilters, filter] instance.state.set("selectedRoleFilters", newSelectedRoleFilters) + }, + "change .race-filter"(event, instance) { + const filter = event.currentTarget.name + const selectedRaceFilters = instance.state.get("selectedRaceFilters") + const newSelectedRaceFilters = selectedRaceFilters.includes(filter) + ? selectedRaceFilters.filter((value) => value !== filter) + : [...selectedRaceFilters, filter] + instance.state.set("selectedRaceFilters", newSelectedRaceFilters) } }) From ac337354fcfead9d200aa971b6b899a5b5d0702b Mon Sep 17 00:00:00 2001 From: Rick Date: Sun, 4 Oct 2020 21:05:29 -0600 Subject: [PATCH 2/6] instantiate racefilter --- .../sections/current-prosecutors/currentProsecutors.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/templates/sections/current-prosecutors/currentProsecutors.js b/client/templates/sections/current-prosecutors/currentProsecutors.js index 5761a9ef..4499ffdb 100644 --- a/client/templates/sections/current-prosecutors/currentProsecutors.js +++ b/client/templates/sections/current-prosecutors/currentProsecutors.js @@ -7,7 +7,8 @@ import './current-prosecutors.html'; Template.currentProsecutors.onCreated(function () { this.state = new ReactiveDict(); this.state.setDefault({ - selectedRoleFilters: [] + selectedRoleFilters: [], + selectedRaceFilters: [] }); }); @@ -32,6 +33,7 @@ Template.currentProsecutors.helpers({ }, attorneys() { const selectedRoleFilters = Template.instance().state.get("selectedRoleFilters") + const selectedRaceFilters = Template.instance().state.get("selectedRaceFilters") return selectedRoleFilters.length > 0 ? Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() : Attorneys.find().fetch() From 80808d971100ae3e705d1f3d23638c79cee2fe59 Mon Sep 17 00:00:00 2001 From: Rick Date: Sun, 4 Oct 2020 21:10:06 -0600 Subject: [PATCH 3/6] add race to attorney schema --- imports/api/attorneys.js | 59 ++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/imports/api/attorneys.js b/imports/api/attorneys.js index b555eccf..367643a0 100644 --- a/imports/api/attorneys.js +++ b/imports/api/attorneys.js @@ -1,42 +1,47 @@ -import { Mongo } from 'meteor/mongo'; +import {Mongo} from 'meteor/mongo'; import SimpleSchema from 'simpl-schema'; -export const Attorneys = new Mongo.Collection( 'Attorneys' ); +export const Attorneys = new Mongo.Collection('Attorneys'); -if ( Meteor.isServer ) { - Attorneys._ensureIndex( { - name: 1, - role: 1, - state: 1 - }); +if (Meteor.isServer) { + Attorneys._ensureIndex({ + name: 1, + role: 1, + state: 1 + }); } Attorneys.allow({ - insert: () => false, - update: () => false, - remove: () => false + insert: () => false, + update: () => false, + remove: () => false }); Attorneys.deny({ - insert: () => true, - update: () => true, - remove: () => true + insert: () => true, + update: () => true, + remove: () => true }); let AttorneysSchema = new SimpleSchema({ - 'name': { - type: String, - label: 'The name of this attorney.' - }, - 'role': { - type: String, - label: 'The role of this attorney.' - }, - 'state': { - type: String, - label: 'The state of this attorney.' - } + 'name': { + type: String, + label: 'The name of this attorney.' + }, + 'role': { + type: String, + label: 'The role of this attorney.' + }, + 'state': { + type: String, + label: 'The state of this attorney.' + }, + 'race': { + type: String, + label: 'The race of this attorney.' + }, + }); -Attorneys.attachSchema( AttorneysSchema ); +Attorneys.attachSchema(AttorneysSchema); From bd75cb88b6ac9a8c851fb76f0468b62aa1748180 Mon Sep 17 00:00:00 2001 From: Rick Date: Sun, 4 Oct 2020 21:43:34 -0600 Subject: [PATCH 4/6] there is probably a better way to do this but making it work for now --- .../current-prosecutors/currentProsecutors.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/client/templates/sections/current-prosecutors/currentProsecutors.js b/client/templates/sections/current-prosecutors/currentProsecutors.js index 4499ffdb..d4b20b07 100644 --- a/client/templates/sections/current-prosecutors/currentProsecutors.js +++ b/client/templates/sections/current-prosecutors/currentProsecutors.js @@ -34,9 +34,15 @@ Template.currentProsecutors.helpers({ attorneys() { const selectedRoleFilters = Template.instance().state.get("selectedRoleFilters") const selectedRaceFilters = Template.instance().state.get("selectedRaceFilters") - return selectedRoleFilters.length > 0 - ? Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() - : Attorneys.find().fetch() + if (selectedRoleFilters.length > 0 && selectedRaceFilters.length > 0) { + Attorneys.find({"role": {$in: selectedRoleFilters}, "race": {$in: selectedRaceFilters}}).fetch() + } else if (selectedRoleFilters.length > 0 && selectedRaceFilters.length === 0) { + Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() + } else if (selectedRoleFilters.length === 0 && selectedRaceFilters.length > 0) { + Attorneys.find({"race": {$in: selectedRaceFilters}}).fetch() + } else { + Attorneys.find().fetch() + } }, }); From 1cf724885addd805447a915888ef8c9ccfc5c96d Mon Sep 17 00:00:00 2001 From: Rick Date: Sun, 4 Oct 2020 21:49:26 -0600 Subject: [PATCH 5/6] see if old code still works --- .../sections/current-prosecutors/currentProsecutors.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/templates/sections/current-prosecutors/currentProsecutors.js b/client/templates/sections/current-prosecutors/currentProsecutors.js index d4b20b07..c6a83586 100644 --- a/client/templates/sections/current-prosecutors/currentProsecutors.js +++ b/client/templates/sections/current-prosecutors/currentProsecutors.js @@ -34,7 +34,11 @@ Template.currentProsecutors.helpers({ attorneys() { const selectedRoleFilters = Template.instance().state.get("selectedRoleFilters") const selectedRaceFilters = Template.instance().state.get("selectedRaceFilters") - if (selectedRoleFilters.length > 0 && selectedRaceFilters.length > 0) { + return selectedRoleFilters.length > 0 + ? Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() + : Attorneys.find().fetch() + /** + if (selectedRoleFilters.length > 0 && selectedRaceFilters.length > 0) { Attorneys.find({"role": {$in: selectedRoleFilters}, "race": {$in: selectedRaceFilters}}).fetch() } else if (selectedRoleFilters.length > 0 && selectedRaceFilters.length === 0) { Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() @@ -43,6 +47,8 @@ Template.currentProsecutors.helpers({ } else { Attorneys.find().fetch() } + **/ + }, }); From 8c3c04251ca009f5ef41faf835b314ed30db510a Mon Sep 17 00:00:00 2001 From: Rick Date: Sun, 4 Oct 2020 21:52:36 -0600 Subject: [PATCH 6/6] forgot to add returns --- .../current-prosecutors/currentProsecutors.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/client/templates/sections/current-prosecutors/currentProsecutors.js b/client/templates/sections/current-prosecutors/currentProsecutors.js index c6a83586..710e0582 100644 --- a/client/templates/sections/current-prosecutors/currentProsecutors.js +++ b/client/templates/sections/current-prosecutors/currentProsecutors.js @@ -34,21 +34,15 @@ Template.currentProsecutors.helpers({ attorneys() { const selectedRoleFilters = Template.instance().state.get("selectedRoleFilters") const selectedRaceFilters = Template.instance().state.get("selectedRaceFilters") - return selectedRoleFilters.length > 0 - ? Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() - : Attorneys.find().fetch() - /** - if (selectedRoleFilters.length > 0 && selectedRaceFilters.length > 0) { - Attorneys.find({"role": {$in: selectedRoleFilters}, "race": {$in: selectedRaceFilters}}).fetch() + if (selectedRoleFilters.length > 0 && selectedRaceFilters.length > 0) { + return Attorneys.find({"role": {$in: selectedRoleFilters}, "race": {$in: selectedRaceFilters}}).fetch() } else if (selectedRoleFilters.length > 0 && selectedRaceFilters.length === 0) { - Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() + return Attorneys.find({"role": {$in: selectedRoleFilters}}).fetch() } else if (selectedRoleFilters.length === 0 && selectedRaceFilters.length > 0) { - Attorneys.find({"race": {$in: selectedRaceFilters}}).fetch() + return Attorneys.find({"race": {$in: selectedRaceFilters}}).fetch() } else { - Attorneys.find().fetch() + return Attorneys.find().fetch() } - **/ - }, });