Skip to content

Commit 9862c23

Browse files
committed
report styling
1 parent 7e19c02 commit 9862c23

File tree

4 files changed

+156
-38
lines changed

4 files changed

+156
-38
lines changed

src/components/CollapsibleText.tsx

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,32 @@ const getStatusIcon = (status?: string) => {
2626
return null;
2727
}
2828
};
29-
const CollapsibleText: React.FC<CollapsibleTextProps> = ({ title, log, status, children }) => {
29+
const CollapsibleText: React.FC<CollapsibleTextProps> = ({
30+
title,
31+
log,
32+
status,
33+
children,
34+
}) => {
3035
const [isOpen, setIsOpen] = useState(import.meta.env.DEV ? true : false);
3136

3237
return (
3338
<div
3439
style={{
35-
backgroundColor: "#f6f8fa",
40+
color: "#fff",
41+
backgroundColor: "#0f0a19",
3642
padding: 16,
37-
margin: 12,
43+
margin: 16,
3844
borderRadius: 6,
3945
border: "1px solid #d1d5da",
40-
}}>
46+
}}
47+
>
4148
<div
4249
style={{
4350
display: "flex",
4451
alignItems: "center",
4552
justifyContent: "space-between",
46-
}}>
53+
}}
54+
>
4755
<div style={{ display: "flex", alignItems: "center" }}>
4856
{getStatusIcon(status)}
4957
<span style={{ marginLeft: 8, fontWeight: 600 }}>{title}</span>
@@ -58,8 +66,10 @@ const CollapsibleText: React.FC<CollapsibleTextProps> = ({ title, log, status, c
5866
display: "flex",
5967
alignItems: "center",
6068
fontSize: 14,
61-
}}>
62-
{isOpen ? "Hide logs" : "Show logs"} {isOpen ? <FaChevronUp /> : <FaChevronDown />}
69+
}}
70+
>
71+
{isOpen ? "Hide logs" : "Show logs"}{" "}
72+
{isOpen ? <FaChevronUp /> : <FaChevronDown />}
6373
</button>
6474
</div>
6575

@@ -69,7 +79,8 @@ const CollapsibleText: React.FC<CollapsibleTextProps> = ({ title, log, status, c
6979
padding: "12px 0",
7080
borderTop: "1px solid #e1e4e8",
7181
marginTop: 12,
72-
}}>
82+
}}
83+
>
7384
{children}
7485
{log && (
7586
<pre
@@ -78,7 +89,8 @@ const CollapsibleText: React.FC<CollapsibleTextProps> = ({ title, log, status, c
7889
background: "#f6f8fa",
7990
padding: 12,
8091
borderRadius: 6,
81-
}}>
92+
}}
93+
>
8294
{log}
8395
</pre>
8496
)}

src/interviewReport/InterviewReportComponent.tsx

Lines changed: 92 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import getTopics from "../services/reportGetTopics";
99
import getSummary from "../services/reportGetSummary";
1010
import CollapsibleText from "../components/CollapsibleText";
1111
import ReportActionItemComponent from "../components/ReportActionItemComponent";
12+
import styles from "../styles/reportHeader.module.css";
1213
import { firestore } from "../main";
1314
import { collection, getDocs } from "firebase/firestore";
1415

@@ -17,8 +18,12 @@ const InterviewReportComponent = () => {
1718
const [roomId, setRoomId] = useState<string | null>(null);
1819

1920
// Data of the interviews
20-
const [interviewsDataList, setInterviewsDataList] = useState<any | null>(null);
21-
const [selectedInterviewData, setSelectedInterviewData] = useState<any | null>(null);
21+
const [interviewsDataList, setInterviewsDataList] = useState<any | null>(
22+
null
23+
);
24+
const [selectedInterviewData, setSelectedInterviewData] = useState<
25+
any | null
26+
>(null);
2227

2328
const [videoURL, setVideoURL] = useState<string | null>(null);
2429
const [codes, setCodes] = useState<any | null>(null);
@@ -27,7 +32,9 @@ const InterviewReportComponent = () => {
2732
);
2833
const [actionItens, setActionItens] = useState([{ text: "Loading..." }]);
2934
const [followUps, setFollowUps] = useState([{ text: "Loading..." }]);
30-
const [questionsReport, setQuestionsReport] = useState([{ text: "Loading..." }]);
35+
const [questionsReport, setQuestionsReport] = useState([
36+
{ text: "Loading..." },
37+
]);
3138
const [topics, setTopics] = useState([{ text: "Loading..." }]);
3239
const [summary, setSummary] = useState([{ text: "Loading..." }]);
3340

@@ -58,7 +65,9 @@ const InterviewReportComponent = () => {
5865
console.log("Requesting interviews data list...");
5966
try {
6067
const request = await getRecordings();
61-
const filteredData = request.data.filter((recording: any) => recording.roomId == room_id);
68+
const filteredData = request.data.filter(
69+
(recording: any) => recording.roomId == room_id
70+
);
6271
setInterviewsDataList(filteredData);
6372
setVideoStatus("sucess");
6473
} catch (error) {
@@ -71,7 +80,10 @@ const InterviewReportComponent = () => {
7180
async function getCodes(room_id: string) {
7281
console.log("Requesting codes...");
7382
try {
74-
const collectionReference = collection(firestore, `codes/${room_id}/versions`);
83+
const collectionReference = collection(
84+
firestore,
85+
`codes/${room_id}/versions`
86+
);
7587
const querySnapshot = await getDocs(collectionReference);
7688
const codesData = querySnapshot.docs.map((doc) => doc.data());
7789
setCodes(codesData);
@@ -137,14 +149,21 @@ const InterviewReportComponent = () => {
137149

138150
// but shows only the selected interview transcript
139151
if (interview.uuid == recordId) {
140-
setMeetingTranscript(transformTranscriptIntoHumanFormat(transcript));
152+
setMeetingTranscript(
153+
transformTranscriptIntoHumanFormat(transcript)
154+
);
141155
setTranscriptStatus("success");
142156
//TODO: missing the function
143157
}
144158
})
145159
.catch((error) => {
146160
setTranscriptStatus("failed");
147-
console.error("Error getting transcript for interview ", interview.uuid, ": ", error);
161+
console.error(
162+
"Error getting transcript for interview ",
163+
interview.uuid,
164+
": ",
165+
error
166+
);
148167
console.log("Requesting transcript for interview ", interview.uuid);
149168
requestGenerateTranscript(interview.uuid)
150169
.then(() =>
@@ -179,7 +198,12 @@ const InterviewReportComponent = () => {
179198
})
180199
.catch((error) => {
181200
setActionItemsStatus("failed");
182-
console.error("Error getting action itens for interview ", recordId, ": ", error);
201+
console.error(
202+
"Error getting action itens for interview ",
203+
recordId,
204+
": ",
205+
error
206+
);
183207
});
184208

185209
// Get the follow-ups
@@ -191,7 +215,12 @@ const InterviewReportComponent = () => {
191215
})
192216
.catch((error) => {
193217
setFollowUpsStatus("failed");
194-
console.error("Error getting follow-ups for interview ", recordId, ": ", error);
218+
console.error(
219+
"Error getting follow-ups for interview ",
220+
recordId,
221+
": ",
222+
error
223+
);
195224
});
196225

197226
// Get the questions
@@ -203,7 +232,12 @@ const InterviewReportComponent = () => {
203232
})
204233
.catch((error) => {
205234
setQuestionsStatus("failed");
206-
console.error("Error getting questions for interview ", recordId, ": ", error);
235+
console.error(
236+
"Error getting questions for interview ",
237+
recordId,
238+
": ",
239+
error
240+
);
207241
});
208242

209243
// Get the topics
@@ -215,7 +249,12 @@ const InterviewReportComponent = () => {
215249
})
216250
.catch((error) => {
217251
setTopicsStatus("failed");
218-
console.error("Error getting topics for interview ", recordId, ": ", error);
252+
console.error(
253+
"Error getting topics for interview ",
254+
recordId,
255+
": ",
256+
error
257+
);
219258
});
220259

221260
// Get the summary
@@ -227,37 +266,49 @@ const InterviewReportComponent = () => {
227266
})
228267
.catch((error) => {
229268
setSummaryStatus("failed");
230-
console.error("Error getting summary for interview ", recordId, ": ", error);
269+
console.error(
270+
"Error getting summary for interview ",
271+
recordId,
272+
": ",
273+
error
274+
);
231275
});
232276
}, [recordId]);
233277

234278
return (
235-
<>
236-
<div>
237-
<h3>Room ID - </h3>
238-
<input
239-
type="text"
240-
value={roomId || ""}
241-
onChange={(e) => setRoomId(e.target.value)}
242-
placeholder="Enter Room ID"
243-
/>
279+
<div className={styles.container}>
280+
<div className={styles.reportHeader}>
281+
<div className={styles.reportHeaderContent}>
282+
<h3>Room ID - </h3>
283+
<input
284+
type="text"
285+
value={roomId || ""}
286+
onChange={(e) => setRoomId(e.target.value)}
287+
placeholder="Enter Room ID"
288+
/>
289+
</div>
244290
{interviewsDataList && (
245291
<>
246-
- Record Id:
292+
Record Id:
247293
<select
294+
className={styles.select}
248295
onChange={(e) => {
249296
console.log("selectedInterviewData", e.target.value);
250297
setSelectedInterviewData(
251-
interviewsDataList.find((interview: any) => interview.uuid === e.target.value)
298+
interviewsDataList.find(
299+
(interview: any) => interview.uuid === e.target.value
300+
)
252301
);
253302
}}
254-
value={recordId || ""}>
303+
value={recordId || ""}
304+
>
255305
<option value="" disabled>
256306
Select an interview
257307
</option>
258308
{interviewsDataList.map((interview: any) => (
259309
<option key={interview.uuid} value={interview.uuid}>
260-
{new Date(interview.createdAt).toUTCString()} - {interview.uuid}
310+
{new Date(interview.createdAt).toUTCString()} -{" "}
311+
{interview.uuid}
261312
</option>
262313
))}
263314
</select>
@@ -285,7 +336,12 @@ const InterviewReportComponent = () => {
285336
key={key}
286337
value={codes[key].code}
287338
readOnly={true}
288-
style={{ width: 1000, height: 200 }}
339+
style={{
340+
width: "100%",
341+
borderRadius: "8px",
342+
padding: "12px",
343+
height: 200,
344+
}}
289345
/>
290346
))
291347
) : (
@@ -295,13 +351,20 @@ const InterviewReportComponent = () => {
295351

296352
{/* Meeting Transcript */}
297353
<CollapsibleText title="Meeting transcript" status={transcriptStatus}>
298-
<textarea value={meetingTranscript} readOnly={true} style={{ width: 1000, height: 200 }} />
354+
<textarea
355+
value={meetingTranscript}
356+
readOnly={true}
357+
style={{ width: "100%", height: 200, color: "#fff" }}
358+
/>
299359
</CollapsibleText>
300360

301361
{/* Action itens */}
302362
<CollapsibleText title="Action itens" status={actionItemsStatus}>
303363
{actionItens.map((actionItem: any) => (
304-
<ReportActionItemComponent key={actionItem.text} text={actionItem.text} />
364+
<ReportActionItemComponent
365+
key={actionItem.text}
366+
text={actionItem.text}
367+
/>
305368
))}
306369
</CollapsibleText>
307370
<CollapsibleText title="Follow-ups" status={followUpsStatus}>
@@ -324,7 +387,7 @@ const InterviewReportComponent = () => {
324387
<p key={summaryItem.text}>{summaryItem.text}</p>
325388
))}
326389
</CollapsibleText>
327-
</>
390+
</div>
328391
);
329392
};
330393

src/interviewReport/interviewReport.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import React from "react";
22
import { createRoot } from "react-dom/client";
33
import InterviewReportComponent from "./InterviewReportComponent";
44

5+
const body = document.querySelector("body");
56
const rootElement = document.getElementById("root");
7+
if (rootElement && body) {
8+
body.style.backgroundColor = "#0f0a19";
9+
}
610

711
if (rootElement) {
812
const root = createRoot(rootElement);

src/styles/reportHeader.module.css

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
.container {
2+
overflow: scroll;
3+
height: 100vh;
4+
overflow-x: hidden;
5+
}
6+
7+
.reportHeader {
8+
display: flex;
9+
max-width: 100%;
10+
justify-content: flex-start;
11+
align-items: flex-end;
12+
margin: 1rem 1rem;
13+
padding: 1rem;
14+
border: 1px solid #fff;
15+
border-radius: 8px;
16+
background-color: #0f0a19;
17+
align-items: center;
18+
margin-right: rem;
19+
}
20+
21+
.reportHeaderContent {
22+
display: flex;
23+
justify-content: flex-start;
24+
}
25+
26+
.reportHeader input {
27+
background-color: #fff;
28+
color: #0f0a19;
29+
border-radius: 8px;
30+
margin: 0 0.5rem 0 0.5rem;
31+
padding-left: 0.5rem;
32+
}
33+
34+
.select {
35+
background-color: #fff;
36+
color: #0f0a19;
37+
border-radius: 8px;
38+
margin-left: 0.5rem;
39+
}

0 commit comments

Comments
 (0)