New-Skills: Automatically Add Default-Set Skills to people_skills
When a Skill is set as a default_set it should show up as a new skill for all Members.
As we don't want to actually set the skill for each person in the database it should be a form above the skills of a person that has the values of the default_set skills that the user doesn't yet have prefilled.
Example from the old application:
TODO:
- Create a form above a person's people_skills that contains a pre filled form for all the default-set skills a person doesn't have yet.
- On submit only the filled out skills should be submitted
- A skill should be selectable as "not filled out" and be added with interest and level 0
- Tests
- :rock:
Vorgehen
- [x] Edit form mit allen nicht bewerteten default skills erstellen
- [x] Styling
- [x] Nicht bewerten button
- [x] Button um form wegzuklicken & abbrechen button
- [x] Tests
- [x] Specs & Smoke-Tests
- [ ] Review
Stand 26.04.2024 Heute habe ich das Form eingebaut, das mit allen default Skills gefüllt ist, die der User noch nicht bewertet hat. Ich habe auch schon erstes Styling vorgenommen. Momentan arbeite ich noch am "Nicht bewerten" button.
Stand 29.04.2024 Heute habe ich hauptsächlich am "Nicht bewerten" button gearbeitet. Dieser funktioniert nun auch, ich muss ihn aber noch korrekt im layout alignen.
Stand 03.04.2024 Heute habe ich noch die Logik für den cancel-button eingebaut, das styling weiter überarbeitet und angefangen tests zu schreiben. Ausserdem habe ich allgemein an bugs des features gearbeitet.
Stand 06.04.2024 Heute habe ich die Specs fertig geschrieben und mit dem feinschliff angefangen, da das feature grundsätzlich funktioniert.
Updated ToDo
- [x] Flaky tests
- [x] Unrated skill-slider sends value 1 instead of 0 to server
Stand 07.05.2024 Heute habe ich mich noch an bugfixes gemacht. Zum Beispiel werden schon ausgefüllte default-skills jetzt nicht mehr resetet wenn man "nicht bewerten" drückt.
Was noch fehlt:
- Einige tests sind noch flaky. Darunter soweit ich gesehen habe vorallem tests die mit den people-skills zu tun haben.
- Der level slider sendet immer mindestens einen Wert von 1 an den Server, obwohl unbewertete Skills den Wert 0 beim level haben. Dadurch können wir im controller nicht überprüfen, welche Skills wir wirklich saven wollen.
Stand 13.05.2024 Heute habe ich zuerst noch die tests ergänzt und dann am error handling gearbeitet. Da es da noch einige schwierigkeiten gab, haben wir uns nun dazu entschieden das ui so zu gestalten, dass diese errors gar nicht auftreten können. Das werde ich als nächstes implementieren.
Stand 14.05.2024 Heute habe ich das ui so gestaltet wie besprochen und bugs gefixt. Danach habe ich rebased und habe jetzt noch mit bugs nach dem Rebase zu kämpfen.
Stand 21.05.2024 Heute habe ich den rebase beendet und begonnen die letzten bugs zu fixen. Dazu habe ich auch noch begonnen, einen reset Knopf einzubauen, um Skills beim bearbeiten auf not rated zurücksetzen zu können.
TBD:
- [x] Skills beim Bearbeiten reseten.
- [x] Star-selector in partial
- [ ] Tests zum reset ergänzen
- [x] Tests fixen (evtl. flaky)
- [x] (Not-rated state evtl. direkt auf model speichern und Skills beim nicht bewerten in callback reseten)
Stand 24.05.2024 Ich habe nun den reset Knopf für das Bearbeiten der Skills eingebaut. Ausserdem habe ich die Sterne für den skill-level select in ein partial ausgelagert, damit wir diese überall einheitlich verwenden können.
Jetzt muss ich noch failende Tests fixen und einen Test für den reset Knopf ergänzen.
Stand 31.05.2024
- Die edit view der people skills einer Person wurde komplett ausgebaut
- Man kann nun die people-skills in der Übersicht direkt inline bearbeiten und diese werden auch direkt abgeschickt
- Neu gibt es auf dem people skills Objekt eine Property namens
unrated, die einen boolean-value besitzt. - Klickt man im Frontend auf
Nicht Bewerten, wird diese Property auf true gesetzt. Imbefore_createbzw.before_updatehook des people skill models werden in diesem Fall alle Felder zurückgesetzt. - Diese hooks sorgen auch dafür, dass man das Level nicht auf unrated zurücksetzen kann, wenn das Interesse nicht 0 ist. Ausserdem werden Level oder Interesse automatisch auf 1 gesetzt, sobald man bei einem Nicht bewerteten Skill den jeweils anderen Wert ändert.
Was noch fehlt:
- Wenn man einen Wert in der Übersicht auf not-rated setzt und dann die seite mit f5 neu lädt, springt der level slider zurück auf seine alte Position, das Label zeigt jedoch immer noch nicht Bewertet. Auch die anderen Werte werden auf ihren vorherigen Stand gesetzt. Nach dem bearbeiten eines Wertes scheint sich dies wieder zu korrigieren. Ich habe die Vermutung, dass es etwas mit dem Caching von Turbo oder dem Browser selbst zu tun hat, da sich das Problem nach einem force-reload behebt.
- Die
unratedProperty muss bei nicht bewerteten Skills wieder auffalsegesetzt werden, wenn diese bearbeitet werden. Ich habe sie schon an eine entsprechende Stimulus Action angebunden. Die FunktionrateSkillim Stimulus-Controllerpeople_skills_controller.jsmuss jedoch noch fertig geschrieben werden. - Einige Tests laufen durch den Umbau nicht mehr bzw. müssen auf das neue inline Editing umgeschrieben werden.
- Der Reset-Button beim Bearbeiten wurde noch nicht getestet.
- Die Level-Sterne im model um einen people skill zu hinzuzufügen, werden bei einem Fehler zurückgesetzt.
- Es muss noch gerebased werden.
- rate Funktion implementiert
- unrated property wird auf false gesetzt
- Es wurde gerebased
- Einige tests wurden gefixed
ToDo
- [x] Reset Button beim Edit testen
- [x] Testen das Level und Interest value beide 0 oder beide > 0 sind, aber niemals einer 0 und der andere > 0.
- [x] Edit skills testen
- [x] Tests fixen
- [ ] Machen, dass sich die Felder bei einem Reload nicht visuell zurücksetzen