This allows for easier testing. The component is still complex, so it
requires more refactoring into smaller parts. But I can now safely do
that since I have specified the expected behaviour with a test.
I already discovered a bug while writing the tests: I want to group by
date irrespective of the timestamp. Therefore I need to parse the date
from the ISO timestamp of a commit.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
Yes, this means nested looping. But it also allows me to separate the
commits into a shape I need. I feel like this should not happen in
Vervis as it is something I as a consument of the data need.
I could have done this inside of the template but it feels ugly.
The main drawback I have with the current approach is that Svelte is not
capable of looping over objects so I have to turn that into a list of
nested Arrays. I might have done that in the function already but it is
easier to look up keys on an Object that to sift through Arrays.
The current implementation works. The next step is to extract it into a
component, test it and then I can refactor further.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I also learned how to pluralise. I'm curious whether Weblate can handle
that. It follows ICU standard at least.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I had to hardcode the path to the commits because it is not a property
on the repository object. There are empty repositories, which I handle
as well.
Next step is displaying them in the Activities.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I'm going to start a new feature and want to make sure I'm running on
the latest compatible versions.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
When looking at the Memorandum of Understanding I realised that I should
display repositories instead of projects. So I reused the new component
to do just that.
I could not use a list here, because I need spacing between the
elements. If I were to apply Flexbox to lists it would change their
semantics. But plain divs lack all kinds of semantics. I went with the
next best thing and picked a section as container.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
During testing I realised that the buttons are not accessible.
While I was adding text I also ensured that it can be translated.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I feel like Fork-Star-Watch is a pattern that we will reuse.
Therefore the new component is a molecule.
I also look up the person as collaborator which works for the small test
set I used during development but will likely break in production for
others. That's good. It will show me more information I need to design
the component better. I lack that at the moment.
Ideally I would use a database here, but before I can set up one I
better understand the data model.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
Since I learned that I can't use TypeScript in conjunction with
Storybook, I have no more use for this file.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
This shows the avatar fallback because I have no way to know the avatar
in Vervis at the moment.
Also no username associated, that is, I would need to look it up. Should
work for getting the idea at the moment.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
These are not implemented everywhere so I have to handle errors here.
But for what we want to build right now (projects overview) they are.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
This comes close to the design specification already. But I lack some
information in the Vervis responses.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I discovered that Vervis understands Content Negotiation.
That is, once I figure out my peopleId I can navigate to the respective
paths and resceive JSON that is equal to the prettyjson'ed HTML views I
can see in the web browser.
I don't find everything I would like to have. Therefore I'm writing the
results to a file for now and read it in the profile so I can talk to
our designer how to move on with what we have right now.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
Now it is more obvious that I only handle the homepage from the library
and have the login as an implementation detail.
Once I figure out how to talk to Vervis' API I can drop Cheerio and use
ReST instead.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
The file has grown and I want to break it apart into smaller files.
Therefore I rename the file in the first step and adjust the import
paths.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
These locales were created using Weblate. Therefore the PR introducing
them was unaware of REUSE. I created the files manually.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
When trying to deploy the application to my own domain I noticed that
the adapter is wrong. Since I'm not hosting anything in „the Cloud” I
went with a plain Node.js server. Therefore I have to use a specific
adapter and also fix the type of the server response. This in turn
uncovered a bug in the Created component which I also fixed.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
This is the page that will be reached after a new project was added or
imported unless there have been projects before already.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I figured out how to handle Objects in Svelte each blocks and can
therefore now pass the data through.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
Tauri introduced a set of icons. I downloaded the Anvil avatar from
Codeberg and scaled it up and down with GIMP before I tinified it using
tinypng online.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
This required adding annotation to the whole project.
I need to double-check whether I have the license banner of AGPL in
place everywhere.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I can successfully log in with credentials I'm using on Vervis.
The response is then parsed into an object that could be consumed in the
rest of Anvil.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
In order to link between stories in Storybook I need to add some
attribute to elements, so that the events are prevented and navigation
can be handled by Storybook.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I hope I read the PenPot design correctly here.
Right now, I hotlink as documented by the font forge. We might want to
self-host down the road.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
I want to explore how I could potentially reuse components. Therefore I
extract the form into a component. Given its complexity it could either
be a molecule or an organism. I went with the latter here.
I have to explore how I pass around Objects and Arrays in Svelte so that
I can move server logic up in the component tree.
When I reuse components, I potentially want to define the labels and
placeholders. Therefore the hard-coded strings have to become variables.
Eventually I will define the key on the template level and use the real
values on page level and pass it down. That would break tests currently
so I'm not doing it in this refactoring.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
This way the design will adapt to the writing direction. If it is not
possible, use the ltr and rtl filter to adjust the design.
Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>