()
+ const { status, results } = useInstantSearch()
+
+ const isLoading =
+ status === "loading" || status === "stalled" || !results._state
+
+ if (isLoading && hits.length === 0) {
+ return (
+
+
+ {t("loading", { defaultValue: "Loading testimony..." })}
+
+ )
+ }
+
+ if (hits.length === 0) {
+ return (
+
+ {t("noTestimony", {
+ defaultValue: "No testimony found for this legislator's bills."
+ })}
+
+ )
+ }
+
+ return (
+
+ {hits.map(hit => {
+ const publishedDate = hit.publishedAt
+ ? DateTime.fromMillis(hit.publishedAt).toLocaleString(
+ DateTime.DATE_MED
+ )
+ : null
+
+ return (
+
+
+
+ {hit.content && (
+
+
+ {truncateText(hit.content, 120)}
+
+
+ )}
+
+
+ {hit.authorDisplayName || "Anonymous"}
+ {" · "}
+
+ {formatBillId(hit.billId)}
+
+ {" · "}
+
+ {publishedDate}
+
+
+
+ )
+ })}
+
+ )
+}
+
+export function OtherTestimony({
+ court,
+ sponsoredBills = []
+}: {
+ court?: number
+ sponsoredBills?: string[]
+}) {
+ const { t } = useTranslation("legislators")
+
+ const billIds = useMemo(() => {
+ return Array.from(new Set(sponsoredBills))
+ }, [sponsoredBills])
+
+ const searchClient = useMemo(
+ () =>
+ new TypesenseInstantSearchAdapter({
+ server: getServerConfig(),
+ additionalSearchParameters: testimonySearchParams
+ }).searchClient,
+ []
+ )
+
+ const courtNumber = court ?? 193
+
return (
- {t("otherTestimony")}
- Content To Be Added
+ {t("otherTestimony")}
+ {billIds.length === 0 ? (
+
+ {t("noTestimony", {
+ defaultValue: "No testimony found for this legislator's bills."
+ })}
+
+ ) : (
+ <>
+
+
+
+
+
+
+
+ {t("viewAllTestimony")}
+ {" ↗"}
+
+
+ >
+ )}
)
}
diff --git a/components/LegislatorProfile/SidebarComponents/UpcomingHearings.tsx b/components/LegislatorProfile/SidebarComponents/UpcomingHearings.tsx
index 4bbb86c2e..72e9bbdc2 100644
--- a/components/LegislatorProfile/SidebarComponents/UpcomingHearings.tsx
+++ b/components/LegislatorProfile/SidebarComponents/UpcomingHearings.tsx
@@ -2,9 +2,8 @@ import { DateTime } from "luxon"
import { useTranslation } from "next-i18next"
import styled from "styled-components"
-import * as links from "../../links"
import { Col } from "../../bootstrap"
-import { SidebarBlock, SidebarTitle } from "../LegislatorSidebar"
+import { SidebarBlock, SidebarLink, SidebarTitle } from "../LegislatorSidebar"
import { useUpcomingEvents } from "components/db/events"
import { EventData } from "components/HearingsScheduled"
@@ -33,16 +32,6 @@ const EventLocation = styled.div`
margin-top: 1px;
`
-export const HearingsLink = styled(links.Internal)`
- font-size: 12px;
- font-weight: 700;
- color: #1a3185;
- padding: 10px;
- display: block;
- text-align: center;
- text-decoration: none;
-`
-
export function UpcomingHearings({ committeeList }: { committeeList: any[] }) {
const { t } = useTranslation("legislators")
@@ -78,20 +67,18 @@ export function UpcomingHearings({ committeeList }: { committeeList: any[] }) {
}
}
- const LegislatorCommitteCodes = committeeList.map(code => code.CommitteeCode)
+ const LegislatorCommitteeCodes = committeeList.map(code => code.CommitteeCode)
let legislatorEvents: any[] = []
if (events) {
eventList.forEach(event => {
- if (LegislatorCommitteCodes.includes(event.code)) {
+ if (LegislatorCommitteeCodes.includes(event.code)) {
legislatorEvents.push(event)
}
})
}
- console.log("legislatorEvents", legislatorEvents)
-
return (
{t("upcomingHearings")}
@@ -111,10 +98,10 @@ export function UpcomingHearings({ committeeList }: { committeeList: any[] }) {
{t("noEvents")}
)}
-
+
{t("viewAllHearings")}
{" ↗"}
-
+
)
diff --git a/public/locales/en/legislators.json b/public/locales/en/legislators.json
index 7e7f142f0..8c3a21ae9 100644
--- a/public/locales/en/legislators.json
+++ b/public/locales/en/legislators.json
@@ -45,6 +45,7 @@
"legislators": "Legislators",
"loading": "Loading district...",
"noEvents": "This legislator does not have hearings in the near term future",
+ "noTestimony": "No testimony found for this legislator's bills.",
"notClaimed": "This legislator has not claimed their MAPLE account",
"otherTestimony": "Others' testimony on their bills",
"party": {
@@ -52,6 +53,11 @@
"party": "Party",
"republican": "Republican Party"
},
+ "position": {
+ "endorse": "Endorse",
+ "neutral": "Neutral",
+ "oppose": "Oppose"
+ },
"stateRepresentative": "State Representative",
"stateSenator": "State Senator",
"submit": "Submit",
@@ -66,5 +72,6 @@
},
"termsServed": "Terms Served",
"upcomingHearings": "Upcoming Hearings",
- "viewAllHearings": "View all hearings"
+ "viewAllHearings": "View all hearings",
+ "viewAllTestimony": "View all testimony"
}
\ No newline at end of file
diff --git a/public/locales/en/profile.json b/public/locales/en/profile.json
index fca924cbb..4630934d1 100644
--- a/public/locales/en/profile.json
+++ b/public/locales/en/profile.json
@@ -8,6 +8,7 @@
"followedContent": "Followed Content",
"following" : "Following",
"notficationFrequencyDropdown": "open envelope with letter, toggles update frequency options",
+ "unfollow": "Unfollow",
"yourTestimonies": "Your Testimonies"
},
"content": {