Szkopul Utils banner

Szkopul Utils

12 devlogs
29h 36m 53s

A collection of different QOL improvements and additional features for the site szkopul.edu.pl!

Demo Repository

Loading README...

adamd

Shipped this project!

Version 1.0 is ready! I’ll write more in the next devlog that you will probably see just above this one when voting!

adamd

As you can see, Ive implemented a nice dashboard or summary on the main page of szkopul. It shows blank data now because this is a new account and the extension storage resets every time I reload the package, so you need to trust me it works on this one! And with this I think Im ready to ship!

Attachment
0
adamd

Today I added the ‘reveal score’ button that shows in the menu when you have the hideScores option enabled, and the task has been submitted. Here is a gif of how it works:

Attachment
0
adamd

Woah! Those two hours were quite productive. Ive implemented two features – inline task statements and on-same-page task statements as I call it. It works by embedding the statement links. I am a little worried about cashing on those ’s (sometimes the PDFs are updated very dynamically), but I will fix that when someone or I actually find the issue.

Attachment
Attachment
0
adamd

Today I redesigned the options page and made the export/import/erase data buttons work again! With FT being extended (ive read the message yesterday, so happy :) i may even have the change for a mac mini!

0
adamd

Chrome accepted my extension! I uploaded the first version yesterday and it got published!

Right now Im working on making the extension options better – I added a struct and a ‘default options’ object like for the virtual contest options because it worked well! I added options.ts with those objects and functions to get and save the options. Im seeing more and more files in the project that I intended to do in like 2 days…

Well, its not that bad and I hope some people (more than just me and the people that will vote) are actually going to use it. We will see. Look to commits history for more, and see you next time!

Attachment
0
adamd

Moving on to the main function of my extension, Im building the panel which will display the tasks and the left time and the score counting system.

On the screen here is a ‘block unrelated subpages during virtual round’ setting working!

Attachment
0
adamd

Another day of fighting with Bootstrap CSS!

Today I fixed adding problems to a virtual contest (had to get rid of the animation for now :(( cuz if was bugged af), made functions to get and update the virtual contest options and made the ui save the settings.

Right now I have a loadSettings() async function that gets the object from the extension storage and sets the switches state accordingly. I should probably switch from await to .then() for it to be faster, but I want to get this working first. Remind me of that when I do!!

See you next time!

0
adamd

And its done!

I mean, not fully done, but I did what I wanted to do today – that is: the ability to add and remove problems to a virtual contest from the problemset and rendering the table (name + link + delete button). Im saving this data in the extension storage like previously, but this time in an array of a specified type (imma need to fix the todo later so its more organised and more like this).

So next up is contest-specific settings (those will override the ones set in ‘options’ that apply normally), drawing a nice panel with the tasks during the contest and finally - the functionality! (maybe I should have started from that? It seems like the most import… eh whatever). See you next time!

Attachment
0
adamd

Again, sorry for the Polish… I will try to do the rest in English using the translations (those are only hard-coded placeholder examples, so thats why)

On the screen you can see the virtual contest setup view – the main feature. I want to finish it first, preferably even today if I’ll be able to! Right now, Im rendering the tabs with lit and filling the placeholders when the data from browser.storage is downloaded – I also need to think of some way to cache those so its faster.

Conclusions from today: bootstrap is clumpy and much harder to use then just some tailwind plugins…

Attachment
0
adamd

Biggest change today: Extension data management upgrades!

You can delete, export and import all the extension data (i.e. todos, current settings, language and more in the future). Export button just downloads a JSON blob from all the browser.storage items for the user, and import loads them (replaces current data).

Also, the popup if fully translated now and the language switch works!

Attachment
0
adamd

Making up for the previous 10hrs logged as one devlog:

Today (this one hour) I focused on translations – I added a dropdown in the options page in the popup to change language. I have Polish and English available.

I also fixed some typos and styling issues.

Here is my overall plan of features:

  • Notes for each tasks (already done that)
  • TODO list of tasks (on it)
  • Virtual contests
  • misc fixes (styling, QOL, more on that later)

One more thing that I would really want to add are comments under each task (with firebase or some other serverless db). But that is more complicated so Im marking it as an additional ‘maybe will come in the future’ thing in the end.

0
adamd

First devlog, 10hrs, but that’s because I originally thought that this project wouldn’t be going on Flavortown. I thought that, because it is a browser extension and it is for a Polish site for oi (szkopul.edu.pl). I don’t expect many (or any people at all) that will vote to use the site. Anyways, some guy told me it was okay, so if youre a shipwriht reviewing this project, blame it on him :)


During this project, I will be learning the web extension development process :). I already know js and stuff and moreover I know how the site Im modifying works internally (its open-sourse, sio2project/oioioi on github), but it still requires some tinkering to go from making my site to trying to reverse-engineer someone else’s site.


So far I’ve created the popup’s HTML (screen 2) and menu injector (screen 1), more info and plans in the next posts – see you there!

Attachment
Attachment
0