NioTrivia done
@ -4,5 +4,6 @@
|
|||||||
<div class="contnets" *ngFor="let card of getCards()" class="card">
|
<div class="contnets" *ngFor="let card of getCards()" class="card">
|
||||||
<app-card [card]="card"></app-card>
|
<app-card [card]="card"></app-card>
|
||||||
</div>
|
</div>
|
||||||
|
<div style="margin: auto;" *ngIf="getCards().length === 0">Вие нямате карти</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -10,14 +10,13 @@ import { UserdataService } from '../userdata.service';
|
|||||||
export class DashboardCardsComponent implements OnInit {
|
export class DashboardCardsComponent implements OnInit {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private db: DbService,
|
private userdata: UserdataService,
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
getCards(): Card[] {
|
getCards(): Card[] {
|
||||||
return this.db.getAllCards().map(v => v.el);
|
return this.userdata.getOwnedCards();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
import { mock_card_types } from './mock.card_types';
|
||||||
|
import { mock_minigames } from './mock.minigames';
|
||||||
|
import { mock_questions } from './mock.questions';
|
||||||
|
|
||||||
export interface Minigame {
|
export interface Minigame {
|
||||||
name: string;
|
name: string;
|
||||||
@ -35,411 +38,20 @@ export interface Saved<T> {
|
|||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export class DbService {
|
export class DbService {
|
||||||
private mock_minigames: Saved<Minigame>[] = [
|
private mock_minigames: Saved<Minigame>[] = mock_minigames;
|
||||||
{
|
private mock_card_types: Saved<Card>[] = mock_card_types;
|
||||||
id: '0',
|
private mock_questions: Saved<Question>[] = mock_questions;
|
||||||
el: {
|
|
||||||
name: 'Рециклиране',
|
|
||||||
url: '/minigames/conveyor-belt',
|
|
||||||
comingSoon: true,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '0',
|
|
||||||
el: {
|
|
||||||
name: 'BioTrivia',
|
|
||||||
url: '/minigames/biotrivia',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
];
|
|
||||||
private mock_card_types: Saved<Card>[] = [
|
|
||||||
{
|
|
||||||
id: '0',
|
|
||||||
el: {
|
|
||||||
name: 'Пингвин',
|
|
||||||
types: ['normal'],
|
|
||||||
imageUrl: '/assets/images/cards/pingvin.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
content: 'Тъй като нямат естествен враг на сушата, пингвините не показват страх, а любопитство когато към тях се приближи човек.',
|
|
||||||
heading: 'Интересно'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '1',
|
|
||||||
el: {
|
|
||||||
name: 'Пингвин',
|
|
||||||
types: ['normal'],
|
|
||||||
imageUrl: '/assets/images/cards/pingvin2.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
content: 'Пингвините мътят яйцата си на смени. Когато мъжкият отиде да яде, той не може да намери пътя обратно към гнездото и започва да крещи шумно. Женските разпознават гласовете на партньорите си сред хиляди други и крещят в отговор, така че те да знаят къде да се върнат.',
|
|
||||||
heading: 'Интересно'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '2',
|
|
||||||
el: {
|
|
||||||
name: 'Делфин',
|
|
||||||
types: ['normal'],
|
|
||||||
imageUrl: '/assets/images/cards/delfin.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
content: 'Делфините общуват по между си с помощта на звуци, като всеки звук може да изразява различно настроение.',
|
|
||||||
heading: 'Интересно'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '3',
|
|
||||||
el: {
|
|
||||||
name: 'Делфин',
|
|
||||||
types: ['normal'],
|
|
||||||
imageUrl: '/assets/images/cards/delfin2.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
content: 'Делфините никога не заспиват напълно. Докато си почиват, едната половина на мозъка им продължава да бъде активна. Ето защо дори и по време на сън едното им око остава отворено.',
|
|
||||||
heading: 'Интересно'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '4',
|
|
||||||
el: {
|
|
||||||
name: 'Син кит',
|
|
||||||
types: ['normal'],
|
|
||||||
imageUrl: '/assets/images/cards/sinkit.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
content: 'Освен най-едрото, синият кит е и най-шумното животно – звукът, който издава е от порядъка на 188 децибела и може да бъде чут на разстояние до 800 км. За сравнение, звукът на пътнически самолет е „едва” 120 децибела.',
|
|
||||||
heading: 'Интересно'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '5',
|
|
||||||
el: {
|
|
||||||
name: 'Син кит',
|
|
||||||
types: ['normal'],
|
|
||||||
imageUrl: '/assets/images/cards/sinkit2.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
content: 'Езикът на кита тежи около 4,7 тона',
|
|
||||||
heading: 'Интересно'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '6',
|
|
||||||
el: {
|
|
||||||
name: 'Пор',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/por.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Морфология на "пор"',
|
|
||||||
content: 'Думата "пор" произлиза от латински и означава "крадец".',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Застрашен вид',
|
|
||||||
content: 'Загубата на местообитания и бракониерството, са причина днес те или техните следи да се наблюдават изключително рядко.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '7',
|
|
||||||
el: {
|
|
||||||
name: 'Кафява мечка',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/kafqva-mechka.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Сладки сънища',
|
|
||||||
content: 'Учените вярват, че мечките могат да сънуват.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Fast as f',
|
|
||||||
content: 'Макар да изглеждат тромави,мечките могат да тичат с до 60 км/ч.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Застрашен вид',
|
|
||||||
content: 'За съжаление хората им нанасят непоправими щети, като разкъсват с пътища и огради ареала им, унищожават горите и ги избиват.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '8',
|
|
||||||
el: {
|
|
||||||
name: 'Балканска дива коза',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/koza.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Властелина на пръстените',
|
|
||||||
content: 'Знаехте ли, че всяка година се прибавя по още един пръстен върху рогата на дивата коза, като така може да се определи възрастта на даденото животно.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'И ся почваме да бегами',
|
|
||||||
content: 'На света няма друго животно, което да притежава по-голяма ловкост и бързина на придвижване по хлъзгави и стръмни терени.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '9',
|
|
||||||
el: {
|
|
||||||
name: 'Прилеп',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/prilep.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Напаст пещерна',
|
|
||||||
content: 'най-голямата колония от прилепи в света наброява над 20 милиона броя от тези летящи създания.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Ехо .... (ехо)',
|
|
||||||
content: 'Прилепите използват ехолокация, за да се заобиколят в тъмното.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Защитен вид',
|
|
||||||
content: 'Според българското законодателство, прилепите са защитени видове.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '10',
|
|
||||||
el: {
|
|
||||||
name: 'Лалугер',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/laluger.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Втори братовчед на ленивеца',
|
|
||||||
content: 'Когато е студено, той заспива зимен сън и се събужда едва през пролетта.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Мали ша са напикая',
|
|
||||||
content: 'Когато е изплашен, той застава на задните си лапи.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Защитен вид',
|
|
||||||
content: 'Интензивно селско стопанство и използване на пестициди причиняват бързото изчезване на този вид.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '11',
|
|
||||||
el: {
|
|
||||||
name: 'Етруската земеровка',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/zemerovka.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Размер',
|
|
||||||
content: 'Един от най-дребните бозайници на планетата с размери едва 3,6 до 5,2 см и тегло от 1,25 до 2,34 грама!',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Лакомници',
|
|
||||||
content: 'Етруската земеровка трява да яде непрекъснато за да може да живее.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '12',
|
|
||||||
el: {
|
|
||||||
name: 'Тюленът монах',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/tuleni.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Техния живот',
|
|
||||||
content: 'Те се крият в подводни пещери, където си почиват и раждат своите малки.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '13',
|
|
||||||
el: {
|
|
||||||
name: 'Видра',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/vidra.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Мали колко сладко',
|
|
||||||
content: 'Морските видри се държат за ръце докато спят, за да не бъдат разделени от теченията докато се носят по водната повърхност.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'NO MERCY',
|
|
||||||
content: 'В момент на опасност видрите показват бебетата си на хищниците, за да предизвикат съчувствие и по този начин да избегнат атаката.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '14',
|
|
||||||
el: {
|
|
||||||
name: 'Ловен сокол',
|
|
||||||
types: ['endangered'],
|
|
||||||
imageUrl: '/assets/images/cards/sokol.jpg',
|
|
||||||
info: [
|
|
||||||
{
|
|
||||||
heading: 'Ловни навици',
|
|
||||||
content: 'Те не ловуват близо до гнездата си, а се опитват да летят доколкото е възможно.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
heading: 'Застрашен вид',
|
|
||||||
content: 'Има опасност от изчезване. Основната причина, поради която населението на ловния сокол намалява, е човешката дейност.',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
||||||
private mock_questions: Saved<Question>[] = [
|
|
||||||
{
|
|
||||||
id: '0',
|
|
||||||
el: {
|
|
||||||
category: 'animals',
|
|
||||||
photoUrlsAbove: [ '/assets/images/questions/slon.jpg' ],
|
|
||||||
question: 'Защо бройката на слоновете в Африка намалява?',
|
|
||||||
answer: {
|
|
||||||
choises: [
|
|
||||||
'Убиван е от други животни',
|
|
||||||
'Липса на храна',
|
|
||||||
'Убивани са от бракониери',
|
|
||||||
'Замърсяване на въздуха'
|
|
||||||
],
|
|
||||||
correctChoise: 'Убивани са от бракониери',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '1',
|
|
||||||
el: {
|
|
||||||
category: 'animals',
|
|
||||||
photoUrlsAbove: [ '/assets/images/questions/carski orel.jpg' ],
|
|
||||||
question: 'Каква е главната причина за намаляването на бройките Царски орли?',
|
|
||||||
answer: {
|
|
||||||
choises: [
|
|
||||||
'Бракониери',
|
|
||||||
'Замърсяване',
|
|
||||||
'Отсичане на горите',
|
|
||||||
'Електрически стълбове'
|
|
||||||
],
|
|
||||||
correctChoise: 'Електрически стълбове',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '2',
|
|
||||||
el: {
|
|
||||||
category: 'animals',
|
|
||||||
photoUrlsAbove: [ '/assets/images/questions/carski orel.jpg' ],
|
|
||||||
question: 'Каква е главната причина за намаляването на бройките Царски орли?',
|
|
||||||
answer: {
|
|
||||||
choises: [
|
|
||||||
'Бракониери',
|
|
||||||
'Замърсяване',
|
|
||||||
'Отсичане на горите',
|
|
||||||
'Електрически стълбове'
|
|
||||||
],
|
|
||||||
correctChoise: 'Електрически стълбове',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '3',
|
|
||||||
el: {
|
|
||||||
category: 'animals',
|
|
||||||
photoUrlsAbove: [ '/assets/images/questions/zlatna zhaba.png' ],
|
|
||||||
question: 'Каква е причината за изчезването на Златната жаба?',
|
|
||||||
answer: {
|
|
||||||
choises: [
|
|
||||||
'Глобално затопляне',
|
|
||||||
'Замърсяване на реките',
|
|
||||||
'Отсичане на горите',
|
|
||||||
'Недостиг на храна'
|
|
||||||
],
|
|
||||||
correctChoise: 'Глобално затопляне',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '4',
|
|
||||||
el: {
|
|
||||||
category: 'animals',
|
|
||||||
photoUrlsAbove: [ '/assets/images/questions/shtigga.png' ],
|
|
||||||
question: 'Каква е причината за намаляването на бройките на Черният щъркел?',
|
|
||||||
answer: {
|
|
||||||
choises: [
|
|
||||||
'Замърсяването на блатата и езерата',
|
|
||||||
'Недостиг на храна',
|
|
||||||
'Глобално затопляне',
|
|
||||||
'Естествени врагове',
|
|
||||||
],
|
|
||||||
correctChoise: 'Замърсяването на блатата и езерата',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '5',
|
|
||||||
el: {
|
|
||||||
category: 'animals',
|
|
||||||
photoUrlsAbove: [ '/assets/images/questions/tulen.jpg' ],
|
|
||||||
question: 'Вярно или грешно. От 1996г. тюлените в Черно море намаляват, като днес те са почти изчезнали у нас.',
|
|
||||||
answer: {
|
|
||||||
choises: [
|
|
||||||
'Вярно',
|
|
||||||
'Грешно',
|
|
||||||
],
|
|
||||||
correctChoise: 'Грешно',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '6',
|
|
||||||
el: {
|
|
||||||
category: 'animals',
|
|
||||||
photoUrlsAbove: [ '/assets/images/questions/ris.jpg' ],
|
|
||||||
question: 'Каква е причината за намаляването на бройките рисове в България?',
|
|
||||||
answer: {
|
|
||||||
choises: [
|
|
||||||
'Глобално затопляне',
|
|
||||||
'Незаконно избиване за козината им',
|
|
||||||
'Разрушаването на местообитанията им',
|
|
||||||
'Убиван е от естествени врагове',
|
|
||||||
],
|
|
||||||
correctChoise: 'Незаконно избиване за козината им',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
];
|
|
||||||
private mock_question_categories: string[] = [ 'animals' ];
|
|
||||||
|
|
||||||
private getRandomEls<T>(array: T[], n: number): T[] {
|
private getRandomEls<T>(array: T[], n: number): T[] {
|
||||||
const result: T[] = new Array(n);
|
const result: T[] = [];
|
||||||
let len = array.length;
|
|
||||||
const taken = new Array(len);
|
for (let i = 0; i < n; i++) {
|
||||||
if (n > len)
|
const index = Math.floor(Math.random() * array.length);
|
||||||
throw new RangeError("getRandom: more elements taken than available");
|
result.push(array.splice(index, 1)[0]);
|
||||||
while (n--) {
|
|
||||||
const x = Math.floor(Math.random() * len);
|
|
||||||
result[n] = array[x in taken ? taken[x] : x];
|
|
||||||
taken[x] = --len in taken ? taken[len] : len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
array.push(...result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -462,15 +74,21 @@ export class DbService {
|
|||||||
if (index < 0) return null;
|
if (index < 0) return null;
|
||||||
else return this.mock_card_types[index].el;
|
else return this.mock_card_types[index].el;
|
||||||
}
|
}
|
||||||
|
getRandomCardId(endangeredBias: number): string {
|
||||||
|
const normal = this.getAllCards().filter(v => !v.el.types.includes('endangered'));
|
||||||
|
const endangered = this.getAllCards().filter(v => v.el.types.includes('endangered'));
|
||||||
|
|
||||||
getRandomQuestions(n: number, category: string): Question[] {
|
if (Math.random() < endangeredBias) {
|
||||||
|
return this.getRandomEls(endangered, 1)[0].id;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return this.getRandomEls(normal, 1)[0].id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getRandomQuestions(n: number): Question[] {
|
||||||
return this.getRandomEls(this.mock_questions
|
return this.getRandomEls(this.mock_questions
|
||||||
.filter(v => v.el.category === category)
|
|
||||||
.map(v => v.el), n);
|
.map(v => v.el), n);
|
||||||
}
|
}
|
||||||
getRandomCategory(): string {
|
|
||||||
return this.getRandomEls(this.mock_question_categories, 1)[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor() { }
|
constructor() { }
|
||||||
}
|
}
|
||||||
|
@ -12,31 +12,37 @@
|
|||||||
<div class="question dialog" *ngIf="stage === 'ongoing' || stage === 'starting-ongoing' || stage === 'ongoing-ended'" #ongoingDialog
|
<div class="question dialog" *ngIf="stage === 'ongoing' || stage === 'starting-ongoing' || stage === 'ongoing-ended'" #ongoingDialog
|
||||||
style="opacity: 0;">
|
style="opacity: 0;">
|
||||||
<igx-linear-bar [max]="questions.length" [value]="currQuestionN - 1" class="progress"></igx-linear-bar>
|
<igx-linear-bar [max]="questions.length" [value]="currQuestionN - 1" class="progress"></igx-linear-bar>
|
||||||
<h6>{{currQuestion.question}}</h6>
|
<div class="container2">
|
||||||
|
<h6>{{currQuestion.question}}</h6>
|
||||||
|
|
||||||
<div style="color: red;" *ngIf="displayError">Нужен е отговор, за да продължите</div>
|
<div style="color: red;" *ngIf="displayError">Нужен е отговор, за да продължите</div>
|
||||||
|
|
||||||
|
|
||||||
<igx-radio *ngFor="let choise of currAnswers" name="choise" value="{{choise}}"
|
<igx-radio *ngFor="let choise of currAnswers" name="choise" value="{{choise}}"
|
||||||
[checked]="selectedAnswer === choise" (change)="selectedAnswer = choise" [required]="true">{{choise}}
|
[checked]="selectedAnswer === choise" (change)="selectedAnswer = choise" [required]="true">{{choise}}
|
||||||
</igx-radio>
|
</igx-radio>
|
||||||
<button igxButton igxRipple (click)=" submitAnswer()">Следващ въпрос</button>
|
<button igxButton igxRipple (click)=" submitAnswer()">Следващ въпрос</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="question dialog" style="opacity: 0;" *ngIf="stage === 'ended' || stage === 'ongoing-ended'" #endDialog>
|
<div class="dialog" style="opacity: 0;" *ngIf="stage === 'ended' || stage === 'ongoing-ended'" #endDialog>
|
||||||
<h4>Завършихте викторината</h4>
|
<h4>Завършихте викторината</h4>
|
||||||
Верни отговори:
|
Верни отговори:
|
||||||
<igx-linear-bar [max]="questions.length" [value]="guessedQuestions"></igx-linear-bar>
|
<igx-linear-bar [max]="questions.length" [value]="guessedQuestions"></igx-linear-bar>
|
||||||
<div *ngIf="guessedQuestions < questions.length">
|
<div *ngIf="guessedQuestions < questions.length">
|
||||||
<h6>Грешни отговори:</h6>
|
<h6>Грешни отговори:</h6>
|
||||||
<div class="wrongAnswers">
|
<div class="wrongAnswers">
|
||||||
<div *ngFor="let answer of getIncorrectAnswers()">
|
<div *ngFor="let answer of getIncorrectAnswers()">
|
||||||
<b>{{answer.index}}. {{answer.question.question}}</b><br>
|
<b>{{answer.index}}. {{answer.question.question}}</b><br>
|
||||||
<div><div class="identation"></div> Вашият отговор: {{answer.answer}}</div>
|
<div><div class="identation"></div> Вашият отговор: {{answer.answer}}</div>
|
||||||
<div><div class="identation"></div> Правилен отговор: {{answer.question.answer.correctChoise}}</div>
|
<div><div class="identation"></div> Правилен отговор: {{answer.question.answer.correctChoise}}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="wonCard" style="display: flex; flex-direction: column; align-items: center;" *ngIf="wonCard">
|
||||||
<button igxButton igxRipple routerLink="">Върни се в началния екран</button>
|
<h4>You've won this card:</h4>
|
||||||
<button igxButton igxRipple (click)="restartGame()">Играй отново</button>
|
<app-card [card]="wonCard" style="margin: auto; display: block;"></app-card>
|
||||||
|
</div>
|
||||||
|
<button igxButton igxRipple routerLink="">Върни се в началния екран</button>
|
||||||
|
<button igxButton igxRipple (click)="restartGame()">Играй отново</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -41,15 +41,20 @@
|
|||||||
margin: .25em;
|
margin: .25em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.question {
|
||||||
|
padding: 0;
|
||||||
|
.container2 {
|
||||||
|
padding: 2em;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.progress {
|
.progress {
|
||||||
position: absolute;
|
width: 100%;
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.wrongAnswers {
|
.wrongAnswers {
|
||||||
max-height: 50vh;
|
max-height: 25vh;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { Component, ElementRef, NgZone, OnInit, ViewChild, ViewChildren } from '@angular/core';
|
import { Component, ElementRef, NgZone, OnInit, ViewChild, ViewChildren } from '@angular/core';
|
||||||
import { IgxRadioComponent, IgxRadioGroupDirective } from 'igniteui-angular';
|
import { IgxRadioComponent, IgxRadioGroupDirective } from 'igniteui-angular';
|
||||||
import { Observable, Subject } from 'rxjs';
|
import { Observable, Subject } from 'rxjs';
|
||||||
import { Answer, DbService, Question } from '../db.service';
|
import { Answer, Card, DbService, Question, Saved } from '../db.service';
|
||||||
import { UserdataService } from '../userdata.service';
|
import { UserdataService } from '../userdata.service';
|
||||||
|
|
||||||
|
|
||||||
@ -26,6 +26,8 @@ export class MinigameBiotriviaComponent implements OnInit {
|
|||||||
currQuestion: Question;
|
currQuestion: Question;
|
||||||
currAnswers: string[];
|
currAnswers: string[];
|
||||||
|
|
||||||
|
wonCard: Card = null;
|
||||||
|
|
||||||
answers: Array<{ question: Question, answer: string }> = [];
|
answers: Array<{ question: Question, answer: string }> = [];
|
||||||
|
|
||||||
selectedAnswer = '';
|
selectedAnswer = '';
|
||||||
@ -41,6 +43,36 @@ export class MinigameBiotriviaComponent implements OnInit {
|
|||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
endGame(): void {
|
||||||
|
this.stage = 'ongoing-ended';
|
||||||
|
|
||||||
|
const successRate = (this.guessedQuestions) / this.questions.length;
|
||||||
|
|
||||||
|
if (successRate > 0.5) {
|
||||||
|
const owned = this.userdata.getOwnedCardIds();
|
||||||
|
|
||||||
|
let newCard = null;
|
||||||
|
|
||||||
|
do {
|
||||||
|
newCard = this.db.getRandomCardId(successRate - .5);
|
||||||
|
} while (owned.includes(newCard));
|
||||||
|
|
||||||
|
this.userdata.addCard(newCard);
|
||||||
|
this.wonCard = this.db.getCard(newCard);
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
this.endingElementRef.first.nativeElement.style.opacity = 0;
|
||||||
|
this.animateElements(
|
||||||
|
this.ongoingElementRef.first.nativeElement,
|
||||||
|
this.endingElementRef.first.nativeElement
|
||||||
|
// tslint:disable-next-line: deprecation
|
||||||
|
).subscribe(() => {
|
||||||
|
this.stage = 'ended';
|
||||||
|
});
|
||||||
|
}, 10);
|
||||||
|
}
|
||||||
|
|
||||||
submitAnswer(): void {
|
submitAnswer(): void {
|
||||||
if (!this.isAnswered()) {
|
if (!this.isAnswered()) {
|
||||||
this.displayError = true;
|
this.displayError = true;
|
||||||
@ -56,18 +88,7 @@ export class MinigameBiotriviaComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (this.currQuestionN >= this.questions.length) {
|
if (this.currQuestionN >= this.questions.length) {
|
||||||
this.stage = 'ongoing-ended';
|
this.endGame();
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
this.endingElementRef.first.nativeElement.style.opacity = 0;
|
|
||||||
this.animateElements(
|
|
||||||
this.ongoingElementRef.first.nativeElement,
|
|
||||||
this.endingElementRef.first.nativeElement
|
|
||||||
// tslint:disable-next-line: deprecation
|
|
||||||
).subscribe(() => {
|
|
||||||
this.stage = 'ended';
|
|
||||||
});
|
|
||||||
}, 10);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +149,7 @@ export class MinigameBiotriviaComponent implements OnInit {
|
|||||||
startingEl.style.position = 'absolute';
|
startingEl.style.position = 'absolute';
|
||||||
|
|
||||||
this.stage = 'starting-ongoing';
|
this.stage = 'starting-ongoing';
|
||||||
this.questions = this.db.getRandomQuestions(5, this.db.getRandomCategory());
|
this.questions = this.db.getRandomQuestions(1);
|
||||||
this.loadNextQuestion();
|
this.loadNextQuestion();
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@ -176,7 +197,7 @@ export class MinigameBiotriviaComponent implements OnInit {
|
|||||||
|
|
||||||
this.stage = 'ongoing-ended';
|
this.stage = 'ongoing-ended';
|
||||||
|
|
||||||
this.questions = this.db.getRandomQuestions(5, this.db.getRandomCategory());
|
this.questions = this.db.getRandomQuestions(1);
|
||||||
|
|
||||||
this.displayError = false;
|
this.displayError = false;
|
||||||
|
|
||||||
@ -186,6 +207,8 @@ export class MinigameBiotriviaComponent implements OnInit {
|
|||||||
|
|
||||||
this.selectedAnswer = '';
|
this.selectedAnswer = '';
|
||||||
|
|
||||||
|
this.wonCard = null;
|
||||||
|
|
||||||
this.loadNextQuestion();
|
this.loadNextQuestion();
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
556
apollo-frontend/src/app/mock.card_types.ts
Normal file
@ -0,0 +1,556 @@
|
|||||||
|
import { Card, Saved } from "./db.service";
|
||||||
|
|
||||||
|
export const mock_card_types: Saved<Card>[] = [
|
||||||
|
{
|
||||||
|
id: '0',
|
||||||
|
el: {
|
||||||
|
name: 'Пингвин',
|
||||||
|
types: ['normal'],
|
||||||
|
imageUrl: '/assets/images/cards/pingvin.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
content: 'Тъй като нямат естествен враг на сушата, пингвините не показват страх, а любопитство когато към тях се приближи човек.',
|
||||||
|
heading: 'Интересно'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
el: {
|
||||||
|
name: 'Пингвин',
|
||||||
|
types: ['normal'],
|
||||||
|
imageUrl: '/assets/images/cards/pingvin2.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
content: 'Пингвините мътят яйцата си на смени. Когато мъжкият отиде да яде, той не може да намери пътя обратно към гнездото и започва да крещи шумно. Женските разпознават гласовете на партньорите си сред хиляди други и крещят в отговор, така че те да знаят къде да се върнат.',
|
||||||
|
heading: 'Интересно'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
el: {
|
||||||
|
name: 'Делфин',
|
||||||
|
types: ['normal'],
|
||||||
|
imageUrl: '/assets/images/cards/delfin.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
content: 'Делфините общуват по между си с помощта на звуци, като всеки звук може да изразява различно настроение.',
|
||||||
|
heading: 'Интересно'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '3',
|
||||||
|
el: {
|
||||||
|
name: 'Делфин',
|
||||||
|
types: ['normal'],
|
||||||
|
imageUrl: '/assets/images/cards/delfin2.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
content: 'Делфините никога не заспиват напълно. Докато си почиват, едната половина на мозъка им продължава да бъде активна. Ето защо дори и по време на сън едното им око остава отворено.',
|
||||||
|
heading: 'Интересно'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '4',
|
||||||
|
el: {
|
||||||
|
name: 'Син кит',
|
||||||
|
types: ['normal'],
|
||||||
|
imageUrl: '/assets/images/cards/sinkit.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
content: 'Освен най-едрото, синият кит е и най-шумното животно – звукът, който издава е от порядъка на 188 децибела и може да бъде чут на разстояние до 800 км. За сравнение, звукът на пътнически самолет е „едва” 120 децибела.',
|
||||||
|
heading: 'Интересно'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5',
|
||||||
|
el: {
|
||||||
|
name: 'Син кит',
|
||||||
|
types: ['normal'],
|
||||||
|
imageUrl: '/assets/images/cards/sinkit2.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
content: 'Езикът на кита тежи около 4,7 тона',
|
||||||
|
heading: 'Интересно'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '6',
|
||||||
|
el: {
|
||||||
|
name: 'Пор',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/por.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Морфология на "пор"',
|
||||||
|
content: 'Думата "пор" произлиза от латински и означава "крадец".',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Застрашен вид',
|
||||||
|
content: 'Загубата на местообитания и бракониерството, са причина днес те или техните следи да се наблюдават изключително рядко.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '7',
|
||||||
|
el: {
|
||||||
|
name: 'Кафява мечка',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/kafqva-mechka.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Сладки сънища',
|
||||||
|
content: 'Учените вярват, че мечките могат да сънуват.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Fast as f',
|
||||||
|
content: 'Макар да изглеждат тромави,мечките могат да тичат с до 60 км/ч.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Застрашен вид',
|
||||||
|
content: 'За съжаление хората им нанасят непоправими щети, като разкъсват с пътища и огради ареала им, унищожават горите и ги избиват.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '8',
|
||||||
|
el: {
|
||||||
|
name: 'Балканска дива коза',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/koza.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Властелина на пръстените',
|
||||||
|
content: 'Знаехте ли, че всяка година се прибавя по още един пръстен върху рогата на дивата коза, като така може да се определи възрастта на даденото животно.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'И ся почваме да бегами',
|
||||||
|
content: 'На света няма друго животно, което да притежава по-голяма ловкост и бързина на придвижване по хлъзгави и стръмни терени.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '9',
|
||||||
|
el: {
|
||||||
|
name: 'Прилеп',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/prilep.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Напаст пещерна',
|
||||||
|
content: 'най-голямата колония от прилепи в света наброява над 20 милиона броя от тези летящи създания.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Ехо .... (ехо)',
|
||||||
|
content: 'Прилепите използват ехолокация, за да се заобиколят в тъмното.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Защитен вид',
|
||||||
|
content: 'Според българското законодателство, прилепите са защитени видове.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '10',
|
||||||
|
el: {
|
||||||
|
name: 'Лалугер',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/laluger.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Втори братовчед на ленивеца',
|
||||||
|
content: 'Когато е студено, той заспива зимен сън и се събужда едва през пролетта.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Мали ша са напикая',
|
||||||
|
content: 'Когато е изплашен, той застава на задните си лапи.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Защитен вид',
|
||||||
|
content: 'Интензивно селско стопанство и използване на пестициди причиняват бързото изчезване на този вид.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '11',
|
||||||
|
el: {
|
||||||
|
name: 'Етруската земеровка',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/zemerovka.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Размер',
|
||||||
|
content: 'Един от най-дребните бозайници на планетата с размери едва 3,6 до 5,2 см и тегло от 1,25 до 2,34 грама!',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Лакомници',
|
||||||
|
content: 'Етруската земеровка трява да яде непрекъснато за да може да живее.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '12',
|
||||||
|
el: {
|
||||||
|
name: 'Тюленът монах',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/tuleni.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Техния живот',
|
||||||
|
content: 'Те се крият в подводни пещери, където си почиват и раждат своите малки.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '13',
|
||||||
|
el: {
|
||||||
|
name: 'Видра',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/vidra.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Мали колко сладко',
|
||||||
|
content: 'Морските видри се държат за ръце докато спят, за да не бъдат разделени от теченията докато се носят по водната повърхност.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'NO MERCY',
|
||||||
|
content: 'В момент на опасност видрите показват бебетата си на хищниците, за да предизвикат съчувствие и по този начин да избегнат атаката.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '14',
|
||||||
|
el: {
|
||||||
|
name: 'Ловен сокол',
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: '/assets/images/cards/sokol.jpg',
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Ловни навици',
|
||||||
|
content: 'Те не ловуват близо до гнездата си, а се опитват да летят доколкото е възможно.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Застрашен вид',
|
||||||
|
content: 'Има опасност от изчезване. Основната причина, поради която населението на ловния сокол намалява, е човешката дейност.',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "15",
|
||||||
|
el: {
|
||||||
|
name: "Иглика",
|
||||||
|
imageUrl: "/assets/images/cards/image_1.jpg",
|
||||||
|
types: [
|
||||||
|
"normal"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Доказано е, че в разгара на зимата депресиите силно подтискат хората, намаляват обичайната им жизненост и работоспособност, а при психически по-неустойчивите се развиват болестни симптоми. И без евтина реклама – доказано е също, че едно малко, но изумително красиво растение – разцъфнала иглика, прави понякога повече за настроението в мрачните студени дни, отколкото скъпоструващи медикаменти и психотерапии. Дори и без депресия, саксийката с иглика ще ви донесе истинска радост."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "16",
|
||||||
|
el: {
|
||||||
|
name: "Карамфил",
|
||||||
|
imageUrl: "/assets/images/cards/image_2.jpg",
|
||||||
|
types: [
|
||||||
|
"normal"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Карамфилът е известен като подправка с изтънчен вкус от незапомнени времена. Карамфилът е родом от Молукас, известен като Островите на подправките в Индия. Той е консумиран в Азия от преди повече от 2000 години. Благодарение на сладкия си и ароматен вкус, китайските царедворци са използвали карамфила, за да освежават дъха си, когато е трябвало да се обръщат към императора."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "17",
|
||||||
|
el: {
|
||||||
|
name: "Лале",
|
||||||
|
imageUrl: "/assets/images/cards/image_3.jpg",
|
||||||
|
types: [
|
||||||
|
"normal"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "В общия случай се приема, че лалетата символизират любовта и пристигането на пролетта. Червените лалета са израз на истинска любов, докато с белите можете да поискате прошка, лилавите пък са знак за царственост. Интересното е, че многоцветният букет се смята за комплимент към очите на получателя."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "18",
|
||||||
|
el: {
|
||||||
|
name: "Нарцис",
|
||||||
|
imageUrl: "/assets/images/cards/image_4.jpg",
|
||||||
|
types: [
|
||||||
|
"normal"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "На всички ни е известен терминът от психологията \"нарцисизъм\" - с него се определят самовлюбените и горди хора."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "19",
|
||||||
|
el: {
|
||||||
|
name: "Божур",
|
||||||
|
imageUrl: "/assets/images/cards/image_5.jpg",
|
||||||
|
types: [
|
||||||
|
"normal"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Ароматното растение е символ на успех и просперитет, привлича богатството и помага в професионалното израстване."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "20",
|
||||||
|
el: {
|
||||||
|
name: "Маслодайна роза",
|
||||||
|
imageUrl: "/assets/images/cards/image_6.jpg",
|
||||||
|
types: [
|
||||||
|
"endangered"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Розовото масло преди всичко е благоуханно удоволствие за сетивата. Наричано „течно злато“, заради уникалните му свойства и високата цена, розовото масло е природен еликсир с неизброими ползи. "
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "21",
|
||||||
|
el: {
|
||||||
|
name: "Жасмин",
|
||||||
|
imageUrl: "/assets/images/cards/image_7.jpg",
|
||||||
|
types: [
|
||||||
|
"normal"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Жасминовите цветя са важни в хиндуистки церемонии и са споменати в религиозни текстове. И мъжете и жените в Индия отдавна използват жасминовото масло като афродизиак, като тоник във фризьорството и козметиката, както и не на последно място в парфюмерията."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "22",
|
||||||
|
el: {
|
||||||
|
name: "Еделвайс",
|
||||||
|
imageUrl: "/assets/images/cards/image_8.jpg",
|
||||||
|
types: [
|
||||||
|
"endangered"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: " Пчелите го обичат заради медоносните цветове, макар че го намират рядко. Поради безразборното бране има опасност еделвайсът да изчезне от нашите планини, затова късането му е забранено със закон и растението е включено в \"Червената книга на България\". Цветовете на еделвайса се използват в медицината за приготвяне на лекарства против болести на белите дробове, сърцето и др. B Стара Планина специално за опазването му е създаден резерват \"Козя стена\"."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "23",
|
||||||
|
el: {
|
||||||
|
name: "Бегония",
|
||||||
|
imageUrl: "/assets/images/cards/image_9.jpg",
|
||||||
|
types: [
|
||||||
|
"normal"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Според вярванията бегонията е голям помощник на здравето.Тя не само възстановява здравето на възрастните хора, а и предпазва това на по-младите.Бегонията е знак за удължаване на живота на човека, който я е получил като подарък."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "24",
|
||||||
|
el: {
|
||||||
|
name: "Орхидея",
|
||||||
|
imageUrl: "/assets/images/cards/image_10.jpg",
|
||||||
|
types: [
|
||||||
|
"endangered"
|
||||||
|
],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Феята на цветята. Символичен заряд носят и различните цветове: бели орхидеи за невинност, чистота и елегантност; розови - за женственост, благодат и радост; жълти – за приятелство и ново начало; пурпурни – за възхищение и в знак на уважение към близък човек."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '25',
|
||||||
|
el: {
|
||||||
|
name: 'Гепард',
|
||||||
|
imageUrl: '/assets/images/cards/gepard.jpg',
|
||||||
|
types: [ 'normal' ],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Тишината е злато',
|
||||||
|
content: 'Интересното е, че гепардът не може да реве. Всъщност те мъркат.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Бърз като вятъра',
|
||||||
|
content: 'Нормалната скорост на преследване за гепард е 80кмч.'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '26',
|
||||||
|
el: {
|
||||||
|
name: 'Лъв',
|
||||||
|
imageUrl: '/assets/images/cards/luv.jpg',
|
||||||
|
types: [ 'normal' ],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Гръмогласни',
|
||||||
|
content: 'Ревът на възрастен лъв може да се чуе на разстояние от 8 километра.'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '27',
|
||||||
|
el: {
|
||||||
|
name: 'Тигър',
|
||||||
|
imageUrl: '/assets/images/cards/tigar.jpg',
|
||||||
|
types: [ 'endangered' ],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Интересно',
|
||||||
|
content: 'Няма два тигъра с еднакви ивици.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Скок на височина',
|
||||||
|
content: 'Тигрите могат да прескачат разстояния на дължина над 6м и да скачат на 5м височина вертикално.'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '28',
|
||||||
|
el: {
|
||||||
|
name: 'Панда',
|
||||||
|
imageUrl: '/assets/images/cards/panda.jpg',
|
||||||
|
types: [ 'endangered' ],
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: 'Лакомници',
|
||||||
|
content: 'Пандите могат да надебелеят с 28 килограма на ден, хранейки се само с бамбукови клони.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
heading: 'Застрашени',
|
||||||
|
content: 'За съжаление тези красиви мечки са застрашени и се смята, че само около 1000 остават в дивата природа.'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "29",
|
||||||
|
el: {
|
||||||
|
name: "Блатно кокиче",
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: "/assets/images/cards/image_11.jpg",
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Най-лечебната билка, която е успяла да спаси не един и два детски живота, всъщност е билката блатно кокиче.Лечебните свойства на растението са доказани през годините. От него се прави и лекарството „Нивалин”.",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "30",
|
||||||
|
el: {
|
||||||
|
name: "Родопско лале",
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: "/assets/images/cards/image_12.jpg",
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Цветовете на родопското лале се разтварят само когато слънцето залее със светлина и топлина местата, където то расте. Покрият ли тежки облаци небето и от тях рукне дъжд, цветовете бързо се затварят и по този начин се предпазват от прекомерно изстудяване и от наранявания от силен дъжд и вятър. Това явление се наблюдава и всяка вечер, щом падне нощният мрак. ",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "31",
|
||||||
|
el: {
|
||||||
|
name: "Алпийско сграбиче",
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: "/assets/images/cards/image_13.jpg",
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "В Червена книга на Народна Република България - том 1, видът е категоризиран като \"рядък\". В същият източник като заплахи за вида са посочени: \"деградацията на хабитата, в който той се среща, причинена от залесяване, туризъм и процесите на естествено разширяване на гората\".",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "32",
|
||||||
|
el: {
|
||||||
|
name: "Жълт планински крем",
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: "/assets/images/cards/image_14.jpg",
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Планинският крем е защитен вид и е включен в Червената книга на България, Не опитвайте да го късате, тъй като стъблото е много жилаво и се изтръгва до самата луковица, което го обрича на загиване.",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "33",
|
||||||
|
el: {
|
||||||
|
name: "Дива циклама",
|
||||||
|
types: ['endangered'],
|
||||||
|
imageUrl: "/assets/images/cards/image_15.jpg",
|
||||||
|
info: [
|
||||||
|
{
|
||||||
|
heading: "Интересно",
|
||||||
|
content: "Защитен вид и рядко се среща. Лекува бронхит, упорита кашлица и възпалено гърло.",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
288
apollo-frontend/src/app/mock.questions.ts
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
import { Question, Saved } from "./db.service";
|
||||||
|
|
||||||
|
export const mock_questions: Saved<Question>[] = [
|
||||||
|
{
|
||||||
|
id: '0',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/slon.jpg' ],
|
||||||
|
question: 'Защо бройката на слоновете в Африка намалява?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Убиван е от други животни',
|
||||||
|
'Липса на храна',
|
||||||
|
'Убивани са от бракониери',
|
||||||
|
'Замърсяване на въздуха'
|
||||||
|
],
|
||||||
|
correctChoise: 'Убивани са от бракониери',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/carski orel.jpg' ],
|
||||||
|
question: 'Каква е главната причина за намаляването на бройките Царски орли?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Бракониери',
|
||||||
|
'Замърсяване',
|
||||||
|
'Отсичане на горите',
|
||||||
|
'Електрически стълбове'
|
||||||
|
],
|
||||||
|
correctChoise: 'Електрически стълбове',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/carski orel.jpg' ],
|
||||||
|
question: 'Каква е главната причина за намаляването на бройките Царски орли?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Бракониери',
|
||||||
|
'Замърсяване',
|
||||||
|
'Отсичане на горите',
|
||||||
|
'Електрически стълбове'
|
||||||
|
],
|
||||||
|
correctChoise: 'Електрически стълбове',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '3',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/zlatna zhaba.png' ],
|
||||||
|
question: 'Каква е причината за изчезването на Златната жаба?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Глобално затопляне',
|
||||||
|
'Замърсяване на реките',
|
||||||
|
'Отсичане на горите',
|
||||||
|
'Недостиг на храна'
|
||||||
|
],
|
||||||
|
correctChoise: 'Глобално затопляне',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '4',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/shtigga.png' ],
|
||||||
|
question: 'Каква е причината за намаляването на бройките на Черният щъркел?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Замърсяването на блатата и езерата',
|
||||||
|
'Недостиг на храна',
|
||||||
|
'Глобално затопляне',
|
||||||
|
'Естествени врагове',
|
||||||
|
],
|
||||||
|
correctChoise: 'Замърсяването на блатата и езерата',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '5',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/tulen.jpg' ],
|
||||||
|
question: 'Вярно или грешно. От 1996г. тюлените в Черно море намаляват, като днес те са почти изчезнали у нас.',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Вярно',
|
||||||
|
'Грешно',
|
||||||
|
],
|
||||||
|
correctChoise: 'Грешно',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '6',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/ris.jpg' ],
|
||||||
|
question: 'Каква е причината за намаляването на бройките рисове в България?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Глобално затопляне',
|
||||||
|
'Незаконно избиване за козината им',
|
||||||
|
'Разрушаването на местообитанията им',
|
||||||
|
'Убиван е от естествени врагове',
|
||||||
|
],
|
||||||
|
correctChoise: 'Незаконно избиване за козината им',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '7',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/nosorog.png' ],
|
||||||
|
question: 'Вярно или грешно. Африканският черен носорог е изчезнал заради Глобалното затопляне.',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Вярно',
|
||||||
|
'Грешно',
|
||||||
|
],
|
||||||
|
correctChoise: 'Грешно',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '8',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/kozirog.png' ],
|
||||||
|
question: 'Вярно или невярно. През 2009г. е клониран Пиринейският козирог,който е изчезнал през 2000г.',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Вярно',
|
||||||
|
'Грешно',
|
||||||
|
],
|
||||||
|
correctChoise: 'Вярно',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '9',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/kozirog.png' ],
|
||||||
|
question: 'Вярно или невярно. През 2009г. е клониран Пиринейският козирог,който е изчезнал през 2000г.',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Вярно',
|
||||||
|
'Грешно',
|
||||||
|
],
|
||||||
|
correctChoise: 'Вярно',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '10',
|
||||||
|
el: {
|
||||||
|
category: 'animals',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/ara.jpg' ],
|
||||||
|
question: 'Посочете невярното твърдение. Спиксовия ара е изчезнал поради:',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Унищожаването на местообитанията им',
|
||||||
|
'Незаконният лов',
|
||||||
|
'Незаконната търговия',
|
||||||
|
'Глобално затопляне',
|
||||||
|
],
|
||||||
|
correctChoise: 'Глобално затопляне',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '11',
|
||||||
|
el: {
|
||||||
|
category: 'recycling',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/teniski.png' ],
|
||||||
|
question: 'Колко литра вода отнема да се направи една тениска?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'26л.',
|
||||||
|
'260л.',
|
||||||
|
'1000л.',
|
||||||
|
'2600л.',
|
||||||
|
],
|
||||||
|
correctChoise: '2600л.',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '12',
|
||||||
|
el: {
|
||||||
|
category: 'recycling',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/dunki.png' ],
|
||||||
|
question: 'Колко горе долу литра вода отнема да се направят един чифт дънки?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'1000л.',
|
||||||
|
'200л.',
|
||||||
|
'5000л.',
|
||||||
|
'7000л.',
|
||||||
|
],
|
||||||
|
correctChoise: '7000л.',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '13',
|
||||||
|
el: {
|
||||||
|
category: 'recycling',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/bonishte.png' ],
|
||||||
|
question: 'Колко процента от нещата, заровени в сметищета,могат да бъдат рециклирани.',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'20',
|
||||||
|
'30',
|
||||||
|
'50',
|
||||||
|
'80',
|
||||||
|
'90',
|
||||||
|
'0',
|
||||||
|
],
|
||||||
|
correctChoise: '80',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '14',
|
||||||
|
el: {
|
||||||
|
category: 'recycling',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/kapeshto kranche.png' ],
|
||||||
|
question: 'Колко литра вода губи едно капещо кранче за ден?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'1',
|
||||||
|
'5',
|
||||||
|
'10',
|
||||||
|
'50',
|
||||||
|
'100',
|
||||||
|
'120',
|
||||||
|
],
|
||||||
|
correctChoise: '120',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '15',
|
||||||
|
el: {
|
||||||
|
category: 'recycling',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/roklq.png' ],
|
||||||
|
question: 'За около колко години се разгражда една рокля от полиестер?',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'50',
|
||||||
|
'100',
|
||||||
|
'200',
|
||||||
|
'150',
|
||||||
|
'Над 200',
|
||||||
|
],
|
||||||
|
correctChoise: '200',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '16',
|
||||||
|
el: {
|
||||||
|
category: 'recycling',
|
||||||
|
photoUrlsAbove: [ '/assets/images/questions/roklq.png' ],
|
||||||
|
question: 'Вярно или грешно. Миенето на чинии ръчно хаби почти толкова вода, колкото със съдомиялна машина.',
|
||||||
|
answer: {
|
||||||
|
choises: [
|
||||||
|
'Вярно',
|
||||||
|
'Грешно',
|
||||||
|
],
|
||||||
|
correctChoise: 'Грешно',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
];
|
@ -49,7 +49,7 @@ export class UserdataService {
|
|||||||
const cardsRaw = localStorage.cards;
|
const cardsRaw = localStorage.cards;
|
||||||
if (cardsRaw) return JSON.parse(cardsRaw);
|
if (cardsRaw) return JSON.parse(cardsRaw);
|
||||||
else {
|
else {
|
||||||
localStorage.cards = [];
|
localStorage.cards = JSON.stringify([]);
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,7 +69,7 @@ export class UserdataService {
|
|||||||
if (saved.includes(id)) throw new Error("Can't add a card that already exists!");
|
if (saved.includes(id)) throw new Error("Can't add a card that already exists!");
|
||||||
saved = [...saved, id];
|
saved = [...saved, id];
|
||||||
|
|
||||||
localStorage.cards = saved;
|
localStorage.cards = JSON.stringify(saved);
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
BIN
apollo-frontend/src/assets/images/cards/gepard.jpg
Normal file
After Width: | Height: | Size: 655 KiB |
BIN
apollo-frontend/src/assets/images/cards/image_11.jpg
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
apollo-frontend/src/assets/images/cards/image_12.jpg
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
apollo-frontend/src/assets/images/cards/image_13.jpg
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
apollo-frontend/src/assets/images/cards/image_14.jpg
Normal file
After Width: | Height: | Size: 150 KiB |
BIN
apollo-frontend/src/assets/images/cards/image_15.jpg
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
apollo-frontend/src/assets/images/cards/luv.jpg
Normal file
After Width: | Height: | Size: 370 KiB |
BIN
apollo-frontend/src/assets/images/cards/nosorog.png
Normal file
After Width: | Height: | Size: 440 KiB |
BIN
apollo-frontend/src/assets/images/cards/panda.jpg
Normal file
After Width: | Height: | Size: 730 KiB |
BIN
apollo-frontend/src/assets/images/cards/tigar.jpg
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
apollo-frontend/src/assets/images/questions/ara.jpg
Normal file
After Width: | Height: | Size: 569 KiB |
BIN
apollo-frontend/src/assets/images/questions/bonishte.png
Normal file
After Width: | Height: | Size: 225 KiB |
BIN
apollo-frontend/src/assets/images/questions/dunki.png
Normal file
After Width: | Height: | Size: 292 KiB |
BIN
apollo-frontend/src/assets/images/questions/kapeshto kranche.png
Normal file
After Width: | Height: | Size: 208 KiB |
BIN
apollo-frontend/src/assets/images/questions/kozirog.jpg
Normal file
After Width: | Height: | Size: 521 KiB |
BIN
apollo-frontend/src/assets/images/questions/roklq.png
Normal file
After Width: | Height: | Size: 520 KiB |
Before Width: | Height: | Size: 917 KiB After Width: | Height: | Size: 917 KiB |
BIN
apollo-frontend/src/assets/images/questions/teniski.png
Normal file
After Width: | Height: | Size: 446 KiB |