More refactoring, still very broken

This commit is contained in:
Pieter Vander Vennet 2021-06-11 22:51:45 +02:00
parent d5d90afc74
commit 62f471df1e
23 changed files with 428 additions and 356 deletions

View file

@ -8,13 +8,14 @@ import {UIElement} from "../UIElement";
import Combine from "../Base/Combine";
import Translations from "../i18n/Translations";
import SingleReview from "./SingleReview";
import BaseUIElement from "../BaseUIElement";
export default class ReviewElement extends UIElement {
private readonly _reviews: UIEventSource<Review[]>;
private readonly _subject: string;
private readonly _middleElement: UIElement;
private readonly _middleElement: BaseUIElement;
constructor(subject: string, reviews: UIEventSource<Review[]>, middleElement: UIElement) {
constructor(subject: string, reviews: UIEventSource<Review[]>, middleElement: BaseUIElement) {
super(reviews);
this._middleElement = middleElement;
if (reviews === undefined) {
@ -26,7 +27,7 @@ export default class ReviewElement extends UIElement {
InnerRender(): UIElement {
InnerRender(): BaseUIElement {
const elements = [];
const revs = this._reviews.data;

View file

@ -1,4 +1,3 @@
import {UIElement} from "../UIElement";
import {InputElement} from "../Input/InputElement";
import {Review} from "../../Logic/Web/Review";
import {UIEventSource} from "../../Logic/UIEventSource";
@ -10,16 +9,18 @@ import {VariableUiElement} from "../Base/VariableUIElement";
import {SaveButton} from "../Popup/SaveButton";
import CheckBoxes from "../Input/Checkboxes";
import UserDetails from "../../Logic/Osm/OsmConnection";
import BaseUIElement from "../BaseUIElement";
import Toggle from "../Input/Toggle";
export default class ReviewForm extends InputElement<Review> {
private readonly _value: UIEventSource<Review>;
private readonly _comment: UIElement;
private readonly _stars: UIElement;
private _saveButton: UIElement;
private readonly _isAffiliated: UIElement;
private readonly _comment: BaseUIElement;
private readonly _stars: BaseUIElement;
private _saveButton: BaseUIElement;
private readonly _isAffiliated: BaseUIElement;
private userDetails: UIEventSource<UserDetails>;
private readonly _postingAs: UIElement;
private readonly _postingAs: BaseUIElement;
constructor(onSave: ((r: Review, doneSaving: (() => void)) => void), userDetails: UIEventSource<UserDetails>) {
@ -86,13 +87,9 @@ export default class ReviewForm extends InputElement<Review> {
return this._value;
}
InnerRender(): UIElement {
InnerConstructElement(): HTMLElement {
if(!this.userDetails.data.loggedIn){
return Translations.t.reviews.plz_login;
}
return new Combine([
const form = new Combine([
new Combine([this._stars, this._postingAs]).SetClass("review-form-top"),
this._comment,
new Combine([
@ -103,6 +100,11 @@ export default class ReviewForm extends InputElement<Review> {
Translations.t.reviews.tos.SetClass("subtle")
])
.SetClass("review-form")
return new Toggle(form, Translations.t.reviews.plz_login,
this.userDetails.map(userdetails => userdetails.loggedIn))
.ConstructElement()
}
IsSelected: UIEventSource<boolean> = new UIEventSource<boolean>(false);

View file

@ -5,6 +5,7 @@ import {FixedUiElement} from "../Base/FixedUiElement";
import Translations from "../i18n/Translations";
import {Utils} from "../../Utils";
import ReviewElement from "./ReviewElement";
import BaseUIElement from "../BaseUIElement";
export default class SingleReview extends UIElement{
private _review: Review;
@ -13,7 +14,7 @@ export default class SingleReview extends UIElement{
this._review = review;
}
public static GenStars(rating: number): UIElement {
public static GenStars(rating: number): BaseUIElement {
if (rating === undefined) {
return Translations.t.reviews.no_rating;
}
@ -26,7 +27,7 @@ export default class SingleReview extends UIElement{
scoreTen % 2 == 1 ? "<img src='./assets/svg/star_half.svg' class='h-8 md:h-12'/>" : ""
]).SetClass("flex w-max")
}
InnerRender(): UIElement {
InnerRender(): BaseUIElement {
const d = this._review.date;
let review = this._review;
const el= new Combine(