Skip to content

Commit cf963cb

Browse files
Dinoxhkexana
andauthored
Site nice sidebar (#29)
* clean sidebar * fiddling with visuals * rebase try * fiddlingwith visuals * rebase try * nica adn good --------- Co-authored-by: kexana <deotsts@gmail.com>
1 parent bf6eed5 commit cf963cb

File tree

7 files changed

+117
-13
lines changed

7 files changed

+117
-13
lines changed

my-app/src/assets/project_icon.png

-14.6 KB
Loading
45 KB
Binary file not shown.

my-app/src/pages/App.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ function App() {
1212
<div className="flex h-screen w-screen">
1313
<div className="flex-auto w-40% h-full bg-gradient-to-t from-[#4f3646] to-[#6747c0]">
1414
<SidebarPresenter model={model} />
15+
1516
</div>
1617
<div className="w-3/4 h-full flex flex-col">
17-
<div className="bg-blue-400 text-white">
18+
<div className="bg-gradient-to-t from-[#6246a8] to-[#6747c0] text-white" style={{color: "red"}}>
19+
{/* bg-gradient-to-t from-[#6246a8] to-[#6747c0] */}
1820
<SearchbarPresenter model={model} />
1921
</div>
2022
<div className="flex-auto border overflow-auto bg-[#121212]">
@@ -28,7 +30,7 @@ function App() {
2830
</button>
2931
{isPopupOpen && (
3032
<div
31-
className="fixed inset-0 bg-transparent flex justify-end"
33+
className="backdrop-blur-sm fixed inset-0 bg-transparent flex justify-end z-100"
3234
onClick={() => setIsPopupOpen(false)}
3335
>
3436
<div
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
export function throwTranscriptScraperError(txt, setErrorMessage, setErrorVisibility) {
2+
console.log("PDF-Scraper-Error: " + txt);
3+
setErrorMessage("Error: " + txt);
4+
setErrorVisibility("visible");
5+
}
6+
7+
export function writeLocalStorage_completedCourses(codesArr) {
8+
let local = [];
9+
if (localStorage.getItem("completedCourses"))
10+
local = JSON.parse(localStorage.getItem("completedCourses"));
11+
else {
12+
localStorage.setItem("completedCourses", '[]');
13+
}
14+
15+
let newcodes = [...new Set(local.concat(codesArr))];
16+
17+
localStorage.setItem("completedCourses", JSON.stringify(newcodes));
18+
}
19+
20+
export function evaluatePDFtextObjectArray(textObjects, throwError, writeToStorage) {
21+
let scrapedCodes = [];
22+
let flagKTH = false;
23+
let flagKTH_NeverSet = true;
24+
let flagTable = false;
25+
let flagTableDone = false;
26+
let flagErrorRecords = false;
27+
28+
for (let i = 0; i < textObjects.length; i++) {
29+
if ((!flagKTH) && (textObjects[i].transform[4] === 56.692))
30+
if ((textObjects[i].str === "Kungliga Tekniska högskolan") || (textObjects[i].str === "KTH Royal Institute of Technology")) {
31+
flagKTH = true;
32+
flagKTH_NeverSet = false;
33+
continue;
34+
}
35+
36+
if ((!flagErrorRecords) && ((textObjects[i].str === "Resultatintyg") || (textObjects[i].str === "Official Transcript of Records"))) {
37+
flagErrorRecords = true;
38+
}
39+
40+
if (flagKTH) {
41+
if ((textObjects[i].str === "Code") || (textObjects[i].str === "Kod")) {
42+
if (flagTable) flagTableDone = true;
43+
if (!flagTableDone) {
44+
flagTable = true;
45+
} else {
46+
if (textObjects[i - 2].transform[4] !== 497.66899718999997) {
47+
flagTable = false;
48+
flagKTH = false;
49+
}
50+
}
51+
}
52+
if ((textObjects[i].transform[4] === 56.692) && (textObjects[i + 12]?.transform[4] === 510.233) && (textObjects[i].str.length < 8))
53+
if (flagTable) {
54+
scrapedCodes.push(textObjects[i].str);
55+
}
56+
}
57+
}
58+
59+
if (flagErrorRecords && scrapedCodes.length === 0) {
60+
throwError("Provided Official Transcript of Records instead of National Official transcript.");
61+
return;
62+
}
63+
64+
if (flagKTH_NeverSet) {
65+
throwError("Provided pdf doesn't contain KTH.");
66+
return;
67+
}
68+
69+
if (scrapedCodes.length === 0) {
70+
throwError("Couldn't find any tables to transcribe.");
71+
return;
72+
}
73+
74+
writeLocalStorage_completedCourses(scrapedCodes);
75+
}

my-app/src/views/Components/SideBarComponents/UploadField.jsx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,35 @@ export default function UploadField(props) {
173173
transcriptScraperFunction(file);
174174
document.getElementById('PDF-Scraper-Input').value = '';
175175
};
176+
177+
const [isDragging, setIsDragging] = useState(false);
178+
179+
const handleDragOver = (event) => {
180+
event.preventDefault(); // Prevent default behavior (to allow drop)
181+
setIsDragging(true);
182+
};
183+
184+
const handleDragLeave = () => {
185+
setIsDragging(false);
186+
};
187+
188+
const handleDrop = (event) => {
189+
event.preventDefault();
190+
setIsDragging(false);
191+
192+
if (event.dataTransfer.files.length > 0) {
193+
handleFileChange({ target: { files: event.dataTransfer.files } });
194+
}
195+
};
196+
176197
return (
177198
<div className='pb-5 px-8 '>
178-
<div className="flex items-center justify-center ">
179-
<label htmlFor="PDF-Scraper-Input" className="flex flex-col items-center justify-center w-full h-50 border-2
199+
<div className={`flex items-center justify-center border-2 border-dashed rounded-lg cursor-pointer transition-colors
200+
${isDragging ? "border-blue-500 bg-blue-100" : "border-gray-300 bg-[#aba8e0]"}`}
201+
onDragOver={handleDragOver}
202+
onDragLeave={handleDragLeave}
203+
onDrop={handleDrop}>
204+
<label for="PDF-Scraper-Input" className="flex flex-col items-center justify-center w-full h-50 border-2
180205
border-gray-300 border-dashed rounded-lg cursor-pointer bg-[#aba8e0] hover:bg-gray-400">
181206
<div className="flex flex-col items-center justify-center pt-5 pb-6">
182207
<svg className="w-8 h-8 mb-4 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 16">

my-app/src/views/SearchbarView.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function SearchbarView(props) {
3737
};
3838

3939
return (
40-
<div className="w-full px-6 py-6 bg-[#000061] flex items-center justify-between relative">
40+
<div className="w-full px-6 py-6 flex items-center justify-between">
4141
<a href="https://www.kth.se" className="flex items-center h-[90px] w-auto">
4242
<img
4343
src={project_logo}

my-app/src/views/SidebarView.jsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,17 @@ import DropDownField from "./Components/SideBarComponents/DropDownField.jsx";
77

88
function SidebarView(props) {
99
return (
10-
<div className='object-center text-white p-3 pt-15 flex-col h-screen overflow-auto pb-10' >
10+
<div className='object-center text-white p-3 pt-15 flex-col h-screen
11+
overflow-y-scroll'
12+
style={{
13+
scrollbarWidth: "thin",
14+
scrollbarColor: "#888 #f1f1f1",
15+
}}
16+
>
1117
<UploadField/>
12-
<div className='flex-auto justify-center h-100 max-h-100
13-
[&::-webkit-scrollbar]:w-2
14-
[&::-webkit-scrollbar]:opacity-2
15-
[&::-webkit-scrollbar-track]:bg-gray-100
16-
[&::-webkit-scrollbar-thumb]:bg-gray-300'>
17-
<div className="z-10 w-100% rounded-lg justify-center" >
18-
<h6 className="m-2 text-lg font-medium text-white text-center">
18+
<div className='flex-auto justify-center h-100 max-h-100 '>
19+
<div class="z-10 w-100% rounded-lg justify-center" >
20+
<h6 class="m-2 text-lg font-medium text-white text-center">
1921
Filters
2022
</h6>
2123
<ToggleField

0 commit comments

Comments
 (0)