frag.jetzt issueshttps://git.thm.de/arsnova/frag.jetzt/-/issues2023-06-05T21:21:47+02:00https://git.thm.de/arsnova/frag.jetzt/-/issues/1337Project Refactoring2023-06-05T21:21:47+02:00Lukas HaaseProject Refactoring# Project Refactoring (WIP)
## 1. Example - Styles
**(1.1)** Component Style is mostly not influenced by the implementation of Angular Themes. They are overwritten, resulting in side effects, when working with Angular Material Componen...# Project Refactoring (WIP)
## 1. Example - Styles
**(1.1)** Component Style is mostly not influenced by the implementation of Angular Themes. They are overwritten, resulting in side effects, when working with Angular Material Components.
e.g.: when removing Style of the home-page.component in scss
<details>
<summary>Example <b>(1.2)</b></summary>
![image](/uploads/4759d11f886598f6705361601e803c6b/image.png)
</details>
<details>
<summary>Example <b>(1.3)</b></summary>
![image](/uploads/587f99c8a023cc581ef7efdd64746092/image.png)
</details>
> Although they are Dark Themes, the underlying Material Theme is not. By creating new Components, the style needs to be adjusted manually for every Theme.
**(1.4)** Implementation of Components for features must be non-reliant on those effects, so that:
- the Theme defines colors
- the implementation of the Component defines Layout.
**(1.5)** If further customization is required, a strategy for material overrides must be defined, so that:
- No Side-Effects appear for other Components.
### strategy for color-names
// TODO
### usage of multiple color code notations
e.g.: ![image](/uploads/69eaa9d5cfe8aec7f66ea835d99574c0/image.png)
preferred format should be `RED, GREEN, BLUE` instead of `FULL_NAME` or `#FFFFFF`,
reason: with this notation `RED, GREEN, BLUE`, `rgba(var(--color),0.-1)` can be used. it allows to automatically generate accent colors.
if full names or hex codes are still required, a preprocessor can be used to generate scss entries.
### ensure proper color usage
> note: **serves as example, might be irrelevant after refactoring! this is still the incorrect approach on styling material components!**\
> this is a flat-base + custom attribute '_color="x"' where x is 'a b?' -> a = {'primary', 'secondary', 'cancel'} and b = {'fill','stroked','flat'}\
> `<button mat-flat-button _color="primary flat">`
to ensure, that styled components are working for every theme:
- create a component containing all styled components
![image](/uploads/d1b8db5351dbc801006f000fe531b046/image.png)
![image](/uploads/63e037aaa3b9c8b5665d43bb18a34ee9/image.png)
> 1. secondary and primary is the same color in 'high-contrast', this creates side-effects
> 2. different names for same values. Another theme might have different values, creating theme dissonance. "suddenly the color is a different color, when switching a theme"
### strictly forbid individual customization of elements to prevent bloating and side effects
![image](/uploads/ea6b7041490682fef84df567e9d4221f/image.png)
> icon is bigger, icon color different.
> 1. creates side-effects on other themes, components or when changed.
> 2. it's another item, that needs to be maintained
## 2. Component Scope
**(2.1)** The reuse of components has advantages. DRY - Principle
However, if a Component includes several subcomponents, if those subcomponents have properties in context to the parent Component, those subcomponents cannot be used for other Components.
**(2.2)** e.g.:\
**app-room-join** is used by different components.\
If requirements change:\
_e.g.: form-field to be full width, or button should be different,_
there's no elegant way to use this component in new components.
<details>
<summary>Example <b>(2.3)</b></summary>
![image](/uploads/792c4caf38d48fdf5606283b59c62346/image.png)
</details>
<details>
<summary>Example <b>(2.4)</b></summary>
![image](/uploads/ad73fa94c567a55aac9cbc13ebe38825/image.png)
</details>
> ## Issue
>
> The main issue here is, there's a lot of effort in these components, but their style is dependant on their functionality vice versa.
> ## Possible Solution
>
> A possible solution might be:
>
> - when creating a subcomponent, don't use style on that subcomponent, so that:
> 1. the subcomponent only implements the functionality
> 2. the parent component controls the layout style
> 3. the theme controls the component coloring.
## 3 Translation
**(3.1)** Different components import different language files (_type: json_).\
This is an Issue, when reusing components. A subcomponent uses the translation of the parent (if not otherwise specified, which itself is a workaround, to this issue).
E.g.: For every cancel button, the translation has to be redone resulting in countless duplicate entries, for a translation.
<details>
<summary>Example <b>(3.2)</b></summary>
![image](/uploads/992b96d1e3336228a06094d18d531b19/image.png)
</details>
> ## Issue
>
> 1. trivial translations have to be defined for every new component.
> 2. side effects when reusing components
> ## Possible Solution
>
> 1. common pool for translations
> 2. introduction of new pipe for common pool translations
## 4 Brand Identity & Design
(No need to go fancy here)\
A design choice can only be justified, with a common goal. Otherwise, it's highly subjective.
Considering the target audience for this project, it's important to keep this in mind.
It should create a lasting impression on the target audience.
> ## Issue
> 1. no definition of 'corporate design'
> 1. constant overwriting of components ⇒ crude implementation ⇒ no goal ⇒ non-maintainable code
> 2. different design philosophies
> 1. material design framework, but forcing a unique selling point by overwriting said framework, resulting in different design approaches
> 3. too many colors and themes (no brand colors, difficult to maintain, bad implementation, side-effects e.g.: changing background-color, changes text color in a non-related component)
> 4. too many elements, that don't serve a purpose ⇒ which is irritating for users? (those elements need to be maintained)
> 1. why is it (maybe, potentially) irritating for some users?\
> User uses product during critical moments, overcomplicating (and constantly changing) UI elements will hinder that behaviour.\
> Also the learning curve for new users gets too steep. (normal users don't have the context developers have)
>
> ## Solution
> 1. define a design which serves as benchmark for every future implementation
> 1. create components based on that design
> 2. use those components for features
> 3. stay on track, don't lose scope
> 4. don't overcomplicate features
> 1. **if an implementation of a feature takes too long due to overcomplicating and micromanaging the design, ultimately the feature release will be delayed**, it's important to release a feature as fast as possible and then evaluate whether additional features are really necessary. It's important to get feedback from active and new users regarding future features or other requests. (This excludes anecdotal requests)
>
> scratch notes:
> - When does a feature become a new Application
> - How to handle anecdotal requests? _CRM_
> - Provide resources for target audience e.g.: https://www.jetbrains.com/help/
> - Link features within the web app to those resources e.g.:
> - user uses certain feature, link article describing features or insights https://www.jetbrains.com/help/idea/work-with-maven-goals.html
> - provide user with options to migrate from other system e.g.: https://www.jetbrains.com/help/idea/migrating-from-eclipse-to-intellij-idea.html
> - provide educational templates / articles about how to integrate a feature in lectures e.g.: https://www.jetbrains.com/help/idea/product-educational-tools.html
> - always provide help (**see s.1**)
<details>
<summary>Example <b>(s.1)</b></summary>
![image](/uploads/6dc663f65660c6566c18dc39fb69b474/image.png)
</details>Lukas HaaseLukas Haasehttps://git.thm.de/arsnova/frag.jetzt/-/issues/1329Format selection also for the free ChatGPT2023-05-11T12:10:02+02:00Klaus-Dieter Quibeldey-CirkelFormat selection also for the free ChatGPT![Format](/uploads/07f786c0641aa10c1ef6d2a8baccd69e/Format.png)![Format](/uploads/07f786c0641aa10c1ef6d2a8baccd69e/Format.png)Ruben BimbergRuben Bimberghttps://git.thm.de/arsnova/frag.jetzt/-/issues/1305History should always be cleared when switching from context bot to free bot2023-04-30T14:05:20+02:00Klaus-Dieter Quibeldey-CirkelHistory should always be cleared when switching from context bot to free botRuben BimbergRuben Bimberghttps://git.thm.de/arsnova/frag.jetzt/-/issues/1299Regardless of the settings, the question text must always be displayed2023-04-23T16:24:05+02:00Klaus-Dieter Quibeldey-CirkelRegardless of the settings, the question text must always be displayedLukas HaaseLukas Haasehttps://git.thm.de/arsnova/frag.jetzt/-/issues/1298Presets for Answer Formats: New selection list with help text2023-04-23T12:00:39+02:00Klaus-Dieter Quibeldey-CirkelPresets for Answer Formats: New selection list with help textGerman:
- **Kurzantwort**: Kurze, prägnante Antwort, die schnell und einfach Informationen liefert.
- **Antwort als Begriffsdefinition**: Erklärung der Bedeutung von Begriffen und Konzepten, um das Verständnis zu fördern.
- **Antwort mi...German:
- **Kurzantwort**: Kurze, prägnante Antwort, die schnell und einfach Informationen liefert.
- **Antwort als Begriffsdefinition**: Erklärung der Bedeutung von Begriffen und Konzepten, um das Verständnis zu fördern.
- **Antwort mit Beispielen**: Anwendung von abstrakten Konzepten auf konkrete Situationen, um das Verständnis zu vertiefen.
- **Antwort als Lernkarte**: Instrument zur Wissensvermittlung und -wiederholung von Fakten, Definitionen, Begriffen oder Daten.
- **Antwort als Mindmap**: Visuelle Darstellung von Informationen, um Zusammenhänge zwischen verschiedenen Konzepten und Ideen zu verdeutlichen.
- **Antwort als Essay oder Aufsatz**: Ausführliche Antwort auf offene Fragen, um die Fähigkeiten im Verfassen von längeren Texten zu verbessern.
- **Antwort als Zusammenfassung**: Kurze und prägnante Übersicht über ein bestimmtes Thema oder Konzept.
- **Antwort mit Multiple-Choice-Fragen**: Quizfragen, bei der der Lernende aus einer Liste von Antwortoptionen die richtige auswählen muss, um das Wissen zu überprüfen und Zusammenhänge zu verstehen.
- **Antwort mit Quellenangaben**: Hinweise auf weiterführende Informationen, um Lernende zur eigenen Recherche zu ermutigen.
- **Antwort mit Links auf weitere Informationen**: Links und Ressourcen, die den Lernenden Zugang zu zusätzlichen Materialien wie Videos, Grafiken oder Artikeln geben, um das Verständnis zu vertiefen.
**English:**
- Short answer: A brief and concise answer that provides information quickly and easily.
- Answer as definition: Explanation of the meaning of terms and concepts to promote understanding.
- Answer with examples: Application of abstract concepts to concrete situations to deepen understanding.
- Answer as flashcard: Instrument for knowledge transfer and repetition of facts, definitions, terms, or data.
- Answer as mind map: Visual representation of information to illustrate connections between different concepts and ideas.
- Answer as essay or paper: Detailed answer to open questions to improve skills in writing longer texts.
- Answer as summary: Short and concise overview of a specific topic or concept.
- Answer with multiple-choice questions: Quiz questions in which the learner must choose the correct answer from a list of options to check knowledge and understand connections.
- Answer with source references: References to further information to encourage learners to conduct their own research.
- Answer with links to further information: Links and resources that give learners access to additional materials such as videos, graphics, or articles to deepen understanding.
**French:**
- Réponse courte : Réponse brève et concise qui fournit rapidement et facilement des informations.
- Réponse comme définition : Explication de la signification des termes et concepts pour favoriser la compréhension.
- Réponse avec des exemples : Application de concepts abstraits à des situations concrètes pour approfondir la compréhension.
- Réponse comme carte d'apprentissage : Instrument de transfert de connaissances et de répétition de faits, définitions, termes ou données.
- Réponse comme carte mentale : Représentation visuelle des informations pour illustrer les liens entre différents concepts et idées.
- Réponse sous forme d'essai ou de travail écrit : Réponse détaillée aux questions ouvertes pour améliorer les compétences en écriture de textes plus longs.
- Réponse comme résumé : Aperçu court et concis d'un sujet ou d'un concept spécifique.
- Réponse avec des questions à choix multiples : Questions de quiz dans lesquelles l'apprenant doit choisir la bonne réponse parmi une liste d'options afin de tester ses connaissances et de comprendre les liens.
- Réponse avec des références de sources : Références à des informations supplémentaires pour encourager les apprenants à mener leurs propres recherches.
- Réponse avec des liens vers des informations supplémentaires : Liens et ressources qui donnent aux apprenants accès à des matériaux supplémentaires tels que des vidéos, des graphiques ou des articles pour approfondir la compréhension.Ruben BimbergRuben Bimberghttps://git.thm.de/arsnova/frag.jetzt/-/issues/1285Key for evaluation study cannot be deleted2023-04-22T10:04:52+02:00Klaus-Dieter Quibeldey-CirkelKey for evaluation study cannot be deletedOr is the evaluation key independent of replacements of the OpenAI key in the system administration?
![studie](/uploads/94c98c8079f53cec49fb19c7706c8818/studie.png)Or is the evaluation key independent of replacements of the OpenAI key in the system administration?
![studie](/uploads/94c98c8079f53cec49fb19c7706c8818/studie.png)Ruben BimbergRuben Bimberghttps://git.thm.de/arsnova/frag.jetzt/-/issues/951Implement lazy loading for images and iframes in MotD, Q&A and question focus.2022-06-13T19:19:06+02:00Klaus-Dieter Quibeldey-CirkelImplement lazy loading for images and iframes in MotD, Q&A and question focus.For the benefits, see here: https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading
```
<img src="image.jpg" alt="..." loading="lazy">
<iframe src="video-player.html" title="..." loading="lazy"></iframe>
```
For videos us...For the benefits, see here: https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading
```
<img src="image.jpg" alt="..." loading="lazy">
<iframe src="video-player.html" title="..." loading="lazy"></iframe>
```
For videos use:
`<video controls preload="none" ...>`Ruben BimbergRuben Bimberghttps://git.thm.de/arsnova/frag.jetzt/-/issues/922Revision of the authentication process2023-01-10T13:46:21+01:00Ruben BimbergRevision of the authentication processCurrently, guest accounts are deleted very often and cannot be used later. We should update this behavior and improve the current user experience, especially for the bonus token system.
I would suggest to always save the last guest acco...Currently, guest accounts are deleted very often and cannot be used later. We should update this behavior and improve the current user experience, especially for the bonus token system.
I would suggest to always save the last guest account and ignore real accounts with emails, so that when you log back in or start where you left off, you have all the data again.
Some adjustments need to be made in the backend. For example, the lifetime of a JWT token for a **guest account** should be set to the highest time available.Ruben BimbergRuben Bimberghttps://git.thm.de/arsnova/frag.jetzt/-/issues/857Increase the privacy level2022-01-26T13:11:16+01:00Klaus-Dieter Quibeldey-CirkelIncrease the privacy levelUse the following tools and try to meet all criteria as much as possible:
- https://github.com/andersju/webbkoll
- https://github.com/openwpm/OpenWPM
- https://privacyscore.org/
Checks:
- https://webbkoll.dataskydd.net/de/results?url=...Use the following tools and try to meet all criteria as much as possible:
- https://github.com/andersju/webbkoll
- https://github.com/openwpm/OpenWPM
- https://privacyscore.org/
Checks:
- https://webbkoll.dataskydd.net/de/results?url=http%3A%2F%2Ffrag.jetztRuben BimbergRuben Bimberghttps://git.thm.de/arsnova/frag.jetzt/-/issues/830Keyword check against Wikipedia should be optional2022-01-05T14:31:21+01:00Klaus-Dieter Quibeldey-CirkelKeyword check against Wikipedia should be optionalProvide a toggle button for this under the "AI Settings" menu item.
Default: Wikipedia check disabledProvide a toggle button for this under the "AI Settings" menu item.
Default: Wikipedia check disabledRuben BimbergRuben Bimberghttps://git.thm.de/arsnova/frag.jetzt/-/issues/490New marker: "Publicly discussed"2022-02-11T13:12:42+01:00Klaus-Dieter Quibeldey-CirkelNew marker: "Publicly discussed"Use the beamer icon for this. Mark the question with a watermark.
A question is considered "publicly discussed" if it was displayed on the question wall by the creator or a moderator and more than 5 users were online at the same time.
...Use the beamer icon for this. Mark the question with a watermark.
A question is considered "publicly discussed" if it was displayed on the question wall by the creator or a moderator and more than 5 users were online at the same time.
Add this kind of marker in the filter list.