merge both repos! atempt 1 by making the file system the same!

This commit is contained in:
RezHackXYZ 2025-05-29 13:11:49 +05:30
parent badb303ea6
commit 2fe58ee6be
No known key found for this signature in database
128 changed files with 2320 additions and 4285 deletions

View file

@ -0,0 +1,36 @@
<script module>
import { Modal, Content, Trigger } from "sv-popup";
import Time from "./components/time/DisplayCollsOfTime.svelte";
import TimeTable from "./components/timetable/DisplayRowsOfTimetable.svelte";
import EditTimetableDiv from "./components/timetable/EditTimetable.svelte";
import { colseModal } from "./logic/TimeAndTableData.svelte.js";
export let ShowSeconds = $state({ v: true });
</script>
<div class="flex h-full flex-col">
<div>
<button
class="btn"
onclick={() => {
ShowSeconds.v = !ShowSeconds.v;
localStorage.setItem("ShowSeconds", String(ShowSeconds.v));
}}
>
{#if ShowSeconds.v}Disable Seconds{:else}Enable Seconds{/if}</button
>
<Modal big={true} close={colseModal.v}>
<Content>
<EditTimetableDiv />
</Content>
<Trigger>
<button class="btn">Edit timetable </button>
</Trigger>
</Modal>
</div>
<div class="flex flex-1 flex-col items-center justify-center">
<Time /><TimeTable />
</div>
</div>

View file

@ -0,0 +1,40 @@
<script>
import { onMount } from "svelte";
import Row from "./row.svelte";
let ShowSeconds;
let ampm;
onMount(() => {
ShowSeconds = localStorage.getItem("ShowSeconds") || "true" == "true" ? true : false;
setInterval(() => {
ampm = new Date().getHours() >= 12 ? "PM" : "AM";
}, 1000);
});
</script>
<div class="m-5 w-fit rounded-lg bg-gray-700 p-3">
<div class="flex items-baseline justify-center">
<Row type={"hour"} digit={0} />
<Row type={"hour"} digit={1} />
<h1 class="m-0 text-[200px] leading-[200px]">:</h1>
<Row type={"min"} digit={0} />
<Row type={"min"} digit={1} />
{#if ShowSeconds}
<h1 class="text-[75px] leading-none text-gray-500">.</h1>
<Row type={"sec"} digit={0} />
<Row type={"sec"} digit={1} />
{/if}
<h1 class="text-[75px] leading-none text-gray-500 ml-3">{ampm}</h1>
</div>
<div>
<h1 class="text-center text-5xl text-gray-300">
{new Date().toLocaleString("en-US", { weekday: "short" })}
{new Date().getDate()},
{new Date().toLocaleString("en-US", { month: "short" })}
{new Date().getFullYear()}
</h1>
</div>
</div>

View file

@ -0,0 +1,11 @@
<script>
let props = $props();
</script>
{#if props.size == "small"}
<h1 class="flex items-center justify-center text-[75px] leading-none m-0 text-gray-500">
{props.digit}
</h1>
{:else if props.size == "large"}
<h1 class="flex items-center justify-center text-[200px] leading-none m-0">{props.digit}</h1>
{/if}

View file

@ -0,0 +1,29 @@
<script>
import { onMount } from "svelte";
import Digit from "./digit.svelte";
import { updateTime } from "../../logic/updateTime.js";
let props = $props();
let size = props.type == "sec" ? "small" : "large";
let digit = props.digit;
let digits = digit == 1 ? 10 : digit == 0 && props.type == "hour" ? 2 : 6;
let thisRow;
onMount(() => {
setInterval(() => {
updateTime(thisRow, digit, props.type);
}, 1000);
});
</script>
<div
style="--height: {size == 'small' ? '75px' : '200px'};"
class="flex h-(--height) flex-col overflow-y-hidden scroll-smooth"
bind:this={thisRow}
>
{#each Array(digits) as _, i}
<Digit {size} digit={i} />
{/each}
<Digit {size} digit={0} />
</div>

View file

@ -0,0 +1,37 @@
<script>
import { onMount } from "svelte";
import { timetableData } from "../../logic/TimeAndTableData.svelte";
let legend = ["", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
onMount(() => {
timetableData.v = JSON.parse(localStorage.getItem("timetableData")) || timetableData.v;
});
</script>
<div
class="m-5 grid grid-cols-[auto_repeat(var(--NoOfPeriods),_auto)] gap-1 gap-x-1 gap-y-2 rounded-lg bg-gray-800 p-3"
style="--NoOfPeriods: {timetableData.v[0].length - 1};"
>
{#each timetableData.v as row, RowIndex}
{#each row as time, timeIndex}
{#if RowIndex == 0 && timeIndex == 0}
<span class="rounded-xl bg-transparent p-1.5 text-center text-xl"></span>
{:else if RowIndex == 0}
<span class="rounded-xl bg-blue-800 p-1.5 text-center text-xl">{time}</span>
{:else if RowIndex == new Date().getDay() && timeIndex == 0}
<span class="rounded-xl bg-green-600 p-1.5 text-center text-xl"
>{legend[RowIndex]}</span
>
{:else if RowIndex == new Date().getDay()}
<span class="rounded-xl bg-green-600 p-1.5 text-center text-xl">{time}</span>
{:else if timeIndex == 0}
<span class="rounded-xl bg-green-900 p-1.5 text-center text-xl"
>{legend[RowIndex]}</span
>
{:else}
<span class="rounded-xl bg-gray-700 p-1.5 text-center text-xl">{time}</span>
{/if}
{/each}
{/each}
</div>

View file

@ -0,0 +1,58 @@
<script>
import { onMount } from "svelte";
import { timetableData } from "../../logic/TimeAndTableData.svelte";
let data = $state.snapshot(timetableData).v;
let legend = ["", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
import { colseModal } from "../../logic/TimeAndTableData.svelte.js";
onMount(() => {
colseModal.v = false;
});
</script>
<div class="m-5 flex flex-col items-center justify-center rounded-lg bg-gray-800 p-3">
<div
class=" flex flex-col gap-1 gap-x-1 gap-y-2 overflow-x-auto"
style="--NoOfPeriods: {timetableData.v[0].length - 1};"
>
{#each data as row, RowIndex}
<div class="flex">
{#each row as _, timeIndex}
{#if RowIndex == 0 && timeIndex == 0}
<input class="rounded-xl bg-transparent p-0.5 text-center" disabled />
{:else if timeIndex == 0}
<input
class="rounded-xl bg-green-900 p-0.5 text-center"
bind:value={legend[RowIndex]}
disabled
/>
{:else if RowIndex == 0}
<input
class="rounded-xl border-2 border-white bg-blue-800 p-0.5 text-center"
bind:value={data[RowIndex][timeIndex]}
/>
{:else}
<input
class="rounded-xl border-2 border-white bg-gray-700 p-0.5 text-center"
bind:value={data[RowIndex][timeIndex]}
/>
{/if}
{/each}
</div>
{/each}
</div>
<div>
<button
onclick={() => {
timetableData.v = data;
localStorage.setItem("timetableData", JSON.stringify(data));
colseModal.v = true;
}}
class="btn green mt-3">SAVE</button
>
</div>
</div>

View file

@ -0,0 +1,20 @@
export let timetableData = $state({
v: [
[
"07:50 - 08:50",
"08:50 - 09:40",
"09:40 - 10:30 ",
"10:30 - 11:00",
"11:00 - 12:00",
"12:00 - 01:00",
"01:00 - 02:00",
],
["English", "Sanskrit", "Math", "Lunch", "Hindi", "Social Science", "Science"],
["English", "Art & Craft", "Math", "Lunch", "Hindi", "Social Science", "Science"],
["English", "GK", "Math", "Lunch", "Hindi", "Social Science", "Science"],
["English", "Sanskrit", "Math", "Lunch", "Hindi", "Social Science", "Science"],
["English", "Computers", "Math", "Lunch", "Hindi", "Social Science", "Science"],
],
});
export let colseModal = $state({ v: false });

View file

@ -0,0 +1,31 @@
export function updateTime(RowsObject, Digit, type) {
let DigitsHeight = parseInt(type == "sec" ? "75" : "200");
let LastZeroPos = Digit == 1 ? 10 : Digit == 0 && type == "hour" ? 2 : 6;
let currentTime;
if (type == "hour") {
if (new Date().getHours() > 12) {
currentTime = parseInt((new Date().getHours() - 12).toString().padStart(2, "0")[Digit]);
} else {
currentTime = parseInt(new Date().getHours().toString().padStart(2, "0")[Digit]);
}
} else if (type == "min") {
currentTime = parseInt(new Date().getMinutes().toString().padStart(2, "0")[Digit]);
} else if (type == "sec") {
currentTime = parseInt(new Date().getSeconds().toString().padStart(2, "0")[Digit]);
}
if (currentTime == 0) {
if (RowsObject.scrollTop != 0) {
RowsObject.scrollTop = LastZeroPos * DigitsHeight;
setTimeout(() => {
RowsObject.scroll({
top: 0,
behavior: "instant",
});
}, 500);
}
} else {
RowsObject.scrollTop = currentTime * DigitsHeight;
}
}