guess-the-year-web-component 3.0.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -5
- package/custom-elements.json +2 -2
- package/dist/guess-the-year.d.ts +4 -1
- package/dist/guess-the-year.d.ts.map +1 -1
- package/dist/guess-the-year.js +44 -21
- package/dist/guess-the-year.js.map +1 -1
- package/dist/index.html +2 -2
- package/dist/lib/ApiService.d.ts +2 -1
- package/dist/lib/ApiService.d.ts.map +1 -1
- package/dist/lib/ApiService.js +5 -1
- package/dist/lib/ApiService.js.map +1 -1
- package/dist/lib/Incident.d.ts.map +1 -1
- package/dist/lib/Incident.js +1 -0
- package/dist/lib/Incident.js.map +1 -1
- package/dist/lib/Util.d.ts +1 -0
- package/dist/lib/Util.d.ts.map +1 -1
- package/dist/lib/Util.js +25 -0
- package/dist/lib/Util.js.map +1 -1
- package/dist/lib/i18n/EN.d.ts.map +1 -1
- package/dist/lib/i18n/EN.js +5 -0
- package/dist/lib/i18n/EN.js.map +1 -1
- package/dist/lib/i18n/NL.d.ts.map +1 -1
- package/dist/lib/i18n/NL.js +7 -1
- package/dist/lib/i18n/NL.js.map +1 -1
- package/dist/main.js +35 -31
- package/package.json +1 -1
- package/src/guess-the-year.ts +49 -25
- package/src/index.html +2 -2
- package/src/lib/ApiService.ts +6 -1
- package/src/lib/Incident.ts +1 -0
- package/src/lib/Util.ts +25 -5
- package/src/lib/i18n/EN.ts +5 -0
- package/src/lib/i18n/NL.ts +7 -1
- package/todo.txt +0 -6
package/README.md
CHANGED
|
@@ -32,12 +32,8 @@ The guess-the-year element accepts parameters to control it's behaviour:
|
|
|
32
32
|
* `impact` : fetch incidents had this impact(s). Reference https://swagger.tee-e.com for a list of supported emotions.
|
|
33
33
|
* `no-image-src` : what image should be shown when an incident's image is broken. Use a url or base64 encoded image
|
|
34
34
|
* `report-broken-images` : report broken images back to the server so that they can be repaired
|
|
35
|
-
* `hint-interval-length` : the time (in seconds) waited before the first tip is displayed and the time between the tips
|
|
36
35
|
* `max-hints` : the maximum amount of hints that will be displayed
|
|
37
|
-
* `
|
|
38
|
-
* `max-tries` : maximum number of tries before the game stops. If not specified then the amount of tries will not be displayed
|
|
39
|
-
* `show-duration` : display the amount of seconds that it took to answer correctly
|
|
40
|
-
* `show-feedback` : display a feedback input field at the top right of the component
|
|
36
|
+
* `suppress-images` : do not display incident images
|
|
41
37
|
|
|
42
38
|
|
|
43
39
|
### Adjust the styling
|
package/custom-elements.json
CHANGED
|
@@ -1205,7 +1205,7 @@
|
|
|
1205
1205
|
},
|
|
1206
1206
|
{
|
|
1207
1207
|
"kind": "method",
|
|
1208
|
-
"name": "
|
|
1208
|
+
"name": "postIncidentFeedback",
|
|
1209
1209
|
"privacy": "public",
|
|
1210
1210
|
"parameters": [
|
|
1211
1211
|
{
|
|
@@ -1588,4 +1588,4 @@
|
|
|
1588
1588
|
]
|
|
1589
1589
|
}
|
|
1590
1590
|
]
|
|
1591
|
-
}
|
|
1591
|
+
}
|
package/dist/guess-the-year.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export declare class GuessTheYear extends LitElement {
|
|
|
21
21
|
maxHints: number;
|
|
22
22
|
numberOfQuestions: number;
|
|
23
23
|
private _numberOfQuestionsSeen;
|
|
24
|
+
private _playerDob;
|
|
24
25
|
private _incident;
|
|
25
26
|
private _answers;
|
|
26
27
|
private _hint;
|
|
@@ -48,8 +49,10 @@ export declare class GuessTheYear extends LitElement {
|
|
|
48
49
|
private _renderHeader;
|
|
49
50
|
private _renderFooter;
|
|
50
51
|
private renderSplashScreen;
|
|
51
|
-
private
|
|
52
|
+
private _renderYearStepXSelectOptions;
|
|
52
53
|
private renderGameIntro;
|
|
54
|
+
private _setPlayerDob;
|
|
55
|
+
private _setNumberOfQuestions;
|
|
53
56
|
private _setFromDate;
|
|
54
57
|
private _setToDate;
|
|
55
58
|
private renderGameStage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guess-the-year.d.ts","sourceRoot":"","sources":["../src/guess-the-year.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG5E,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAwB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"guess-the-year.d.ts","sourceRoot":"","sources":["../src/guess-the-year.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG5E,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAwB,MAAM,gBAAgB,CAAC;AAqBhE,qBACa,YAAa,SAAQ,UAAU;IAE1C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,OAAO,CAA0B;IAEzC,IAAI,OAAO,IAIQ,OAAO,CAFzB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAGD,UAAU,EAAE,MAAM,CAA2B;IAG7C,kBAAkB,EAAE,OAAO,CAAS;IAGpC,IAAI,EAAE,MAAM,CAAM;IAGlB,OAAO,EAAE,MAAM,CAAM;IAGrB,QAAQ,EAAE,MAAM,CAAM;IAGtB,OAAO,EAAE,MAAM,CAAM;IAGrB,MAAM,EAAE,MAAM,CAAM;IAuBpB,IAAI,EAAE,KAAK,CAA8F;IAuBzG,EAAE,EAAE,KAAK,CAA4F;IAGrG,UAAU,EAAE,MAAM,CAAM;IAGxB,cAAc,EAAE,OAAO,CAAS;IAGhC,QAAQ,EAAE,MAAM,CAAK;IAGrB,iBAAiB,EAAE,MAAM,CAA0F;IACnH,OAAO,CAAC,sBAAsB,CAAa;IAE3C,OAAO,CAAC,UAAU,CAAmF;IAGrG,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,QAAQ,CAAqB;IAGrC,OAAO,CAAC,KAAK,CAAiC;IAE9C,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,MAAM,CAAuB;IAGrC,OAAO,CAAC,SAAS,CAAiC;IAG3C,YAAY,EAAE,MAAM,CAAkB;IAG7C,OAAO,CAAC,MAAM,CAAM;IAEb,UAAU,SAAK;IAItB,OAAO,CAAC,OAAO,CAAiC;IAEhD,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAgB,MAAM,0BAEpB;;IAOO,iBAAiB;IAQjB,oBAAoB;IAQpB,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKrD,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,OAAO;IAKxD,MAAM,CAAC,iBAAiB,EAAE,cAAc;IAKxC,OAAO,CAAC,iBAAiB,EAAE,cAAc;IAKzC,MAAM;IAqBf,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM;IAMxC,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,6BAA6B;IAkBrC,OAAO,CAAC,eAAe;IA4DvB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,eAAe;IAmEvB,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,WAAW;IAYb,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA8EpC,OAAO,CAAC,iBAAiB;IA4DzB,aAAa,IAAI,cAAc;IAa/B,qBAAqB,QAAS,KAAK,YAAY,QAAQ,uBAiCrD;CACH;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF"}
|
package/dist/guess-the-year.js
CHANGED
|
@@ -18,10 +18,16 @@ import { GameState } from "./lib/enums";
|
|
|
18
18
|
import stylesheet from "./scss/main.scss";
|
|
19
19
|
import { QuestionScoreController } from "./lib/controller/scorecontroller";
|
|
20
20
|
const SPLASH_DELAY = 1000;
|
|
21
|
-
const MIN_YEAR = 1950;
|
|
22
|
-
const MAX_YEAR = 2024;
|
|
23
21
|
const MAX_QUESTIONS = 10;
|
|
24
22
|
const HINT_COST = 2;
|
|
23
|
+
const MIN_YEAR = 1950;
|
|
24
|
+
const MAX_YEAR = parseInt(dayjs().format('YYYY'), 10);
|
|
25
|
+
const GTY_FROM_YEAR_VAR = 'gty-from-year';
|
|
26
|
+
const GTY_TO_YEAR_VAR = 'gty-to-year';
|
|
27
|
+
const GTY_NUM_QUESTIONS_VAR = 'gty-number-of-questions';
|
|
28
|
+
const MAX_DOB = 1915;
|
|
29
|
+
const MIN_DOB = parseInt(dayjs().format('YYYY'), 10) - 10;
|
|
30
|
+
const GTY_PLAYER_DOB_VAR = 'gty-player-dob';
|
|
25
31
|
let GuessTheYear = class GuessTheYear extends LitElement {
|
|
26
32
|
get loading() {
|
|
27
33
|
return this._loading;
|
|
@@ -40,13 +46,14 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
40
46
|
this.category = "";
|
|
41
47
|
this.emotion = "";
|
|
42
48
|
this.impact = "";
|
|
43
|
-
this.from = dayjs(`${MIN_YEAR}-01-01`, "YYYY-MM-DD");
|
|
44
|
-
this.to = dayjs()
|
|
49
|
+
this.from = dayjs(`${window.localStorage.getItem(GTY_FROM_YEAR_VAR) || MIN_YEAR}-01-01`, "YYYY-MM-DD");
|
|
50
|
+
this.to = dayjs(`${window.localStorage.getItem(GTY_TO_YEAR_VAR) || MAX_YEAR}-01-01`, "YYYY-MM-DD");
|
|
45
51
|
this.noImageSrc = "";
|
|
46
52
|
this.suppressImages = false;
|
|
47
53
|
this.maxHints = 3;
|
|
48
|
-
this.numberOfQuestions = 10;
|
|
54
|
+
this.numberOfQuestions = parseInt(window.localStorage.getItem(GTY_NUM_QUESTIONS_VAR) || MAX_QUESTIONS + '', 10);
|
|
49
55
|
this._numberOfQuestionsSeen = 0;
|
|
56
|
+
this._playerDob = parseInt(window.localStorage.getItem(GTY_PLAYER_DOB_VAR) || 0 + '', 10);
|
|
50
57
|
this._incident = undefined;
|
|
51
58
|
this._answers = [];
|
|
52
59
|
this._hint = undefined;
|
|
@@ -180,12 +187,12 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
180
187
|
}
|
|
181
188
|
// renders a selector for a year
|
|
182
189
|
// TODO: set type of selector
|
|
183
|
-
|
|
190
|
+
_renderYearStepXSelectOptions(from, to, step, selectedValue) {
|
|
184
191
|
const selected = parseInt(selectedValue, 10);
|
|
185
192
|
// pre-render year options
|
|
186
193
|
// and mark selected when they match
|
|
187
194
|
const selectYearOptions = [];
|
|
188
|
-
for (let i =
|
|
195
|
+
for (let i = from; i <= to; i += step) {
|
|
189
196
|
selectYearOptions.push(html `
|
|
190
197
|
<option value="${i}" ?selected=${selected == i}>${i}</option>
|
|
191
198
|
`);
|
|
@@ -228,21 +235,21 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
228
235
|
|
|
229
236
|
<div class="game-settings">
|
|
230
237
|
<p>
|
|
238
|
+
${this.i18n.translate("game-settings-p0")}
|
|
239
|
+
<select @change="${this._setPlayerDob}">
|
|
240
|
+
${this._renderYearStepXSelectOptions(MAX_DOB, MIN_DOB, 1, this._playerDob + '')}
|
|
241
|
+
</select>
|
|
231
242
|
${this.i18n.translate("game-settings-p1")}
|
|
232
|
-
<select
|
|
233
|
-
@change="${(event) => {
|
|
234
|
-
this.numberOfQuestions = Number(event.target.value);
|
|
235
|
-
}}"
|
|
236
|
-
>
|
|
243
|
+
<select @change="${this._setNumberOfQuestions}">
|
|
237
244
|
${selectQuestionOptions}
|
|
238
245
|
</select>
|
|
239
246
|
${this.i18n.translate("game-settings-p2")}
|
|
240
247
|
<select @change="${this._setFromDate}">
|
|
241
|
-
${this.
|
|
248
|
+
${this._renderYearStepXSelectOptions(MIN_YEAR, MAX_YEAR, 5, this.from.format("YYYY"))}
|
|
242
249
|
</select>
|
|
243
250
|
${this.i18n.translate("game-settings-p3")}
|
|
244
251
|
<select @change="${this._setToDate}">
|
|
245
|
-
${this.
|
|
252
|
+
${this._renderYearStepXSelectOptions(MIN_YEAR, MAX_YEAR, 5, this.to.format("YYYY"))}
|
|
246
253
|
</select>
|
|
247
254
|
${this.i18n.translate("game-settings-p4")}
|
|
248
255
|
</p>
|
|
@@ -254,11 +261,21 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
254
261
|
</div>
|
|
255
262
|
`;
|
|
256
263
|
}
|
|
264
|
+
_setPlayerDob(event) {
|
|
265
|
+
this._playerDob = Number(event.target.value);
|
|
266
|
+
window.localStorage.setItem(GTY_PLAYER_DOB_VAR, this._playerDob + '');
|
|
267
|
+
}
|
|
268
|
+
_setNumberOfQuestions(event) {
|
|
269
|
+
this.numberOfQuestions = Number(event.target.value);
|
|
270
|
+
window.localStorage.setItem(GTY_NUM_QUESTIONS_VAR, this.numberOfQuestions + '');
|
|
271
|
+
}
|
|
257
272
|
_setFromDate(event) {
|
|
258
273
|
this.from = this.from.year(event.target.value);
|
|
274
|
+
window.localStorage.setItem(GTY_FROM_YEAR_VAR, this.from.format('YYYY') + '');
|
|
259
275
|
}
|
|
260
276
|
_setToDate(event) {
|
|
261
277
|
this.to = this.to.year(event.target.value);
|
|
278
|
+
window.localStorage.setItem(GTY_TO_YEAR_VAR, this.to.format('YYYY') + '');
|
|
262
279
|
}
|
|
263
280
|
// renders the actual game stage
|
|
264
281
|
renderGameStage() {
|
|
@@ -317,7 +334,10 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
317
334
|
</div>
|
|
318
335
|
`;
|
|
319
336
|
}
|
|
320
|
-
|
|
337
|
+
// Preserve html structure to prevent the webcomponent to collapse.
|
|
338
|
+
return html `<div class="incident--image">
|
|
339
|
+
<img/>
|
|
340
|
+
</div>`;
|
|
321
341
|
}
|
|
322
342
|
// renders a list of possible answers
|
|
323
343
|
_renderAnswers() {
|
|
@@ -408,6 +428,7 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
408
428
|
}
|
|
409
429
|
// renders the feedback overlay
|
|
410
430
|
_renderFeedback() {
|
|
431
|
+
var _a, _b;
|
|
411
432
|
// do not show anything until an answer has been made
|
|
412
433
|
// and the score is greater than 0
|
|
413
434
|
if (!this._answer && this._score0.value > 0) {
|
|
@@ -421,6 +442,10 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
421
442
|
this._score0.stop();
|
|
422
443
|
}
|
|
423
444
|
this.totalScore += score;
|
|
445
|
+
// Fire-and-forget recallability feedback.
|
|
446
|
+
if ((_a = this._incident) === null || _a === void 0 ? void 0 : _a.id) {
|
|
447
|
+
this._apiService.incidentRecallability((_b = this._incident) === null || _b === void 0 ? void 0 : _b.id, this._playerDob, is_correct);
|
|
448
|
+
}
|
|
424
449
|
if (is_correct) {
|
|
425
450
|
return html `
|
|
426
451
|
<div class="feedback">
|
|
@@ -479,7 +504,6 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
479
504
|
this._renderState = GameState.END;
|
|
480
505
|
}
|
|
481
506
|
renderGameEnd() {
|
|
482
|
-
// clearInterval(this._scoreIntervalHandler);
|
|
483
507
|
console.debug("renderGameEnd");
|
|
484
508
|
return html `
|
|
485
509
|
${this._renderHeader("The end!")}
|
|
@@ -490,8 +514,6 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
490
514
|
${this._renderFooter()}
|
|
491
515
|
`;
|
|
492
516
|
}
|
|
493
|
-
// private _incidentsStack = [];
|
|
494
|
-
// private _totalScore: number = 0;
|
|
495
517
|
setupNewGame() {
|
|
496
518
|
console.debug("new game!");
|
|
497
519
|
console.debug({
|
|
@@ -501,12 +523,9 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
501
523
|
});
|
|
502
524
|
this.totalScore = 0;
|
|
503
525
|
this._numberOfQuestionsSeen = 0;
|
|
504
|
-
// this._question.load(this.from.format('YYYY'), this.to.format('YYYY'));
|
|
505
|
-
// this._question.init();
|
|
506
526
|
this._loadQuestion();
|
|
507
527
|
}
|
|
508
528
|
_resetStage() {
|
|
509
|
-
// window.scrollTo(0, 0);
|
|
510
529
|
this.sources = [];
|
|
511
530
|
this._incident = undefined;
|
|
512
531
|
this._hints = [];
|
|
@@ -585,6 +604,10 @@ let GuessTheYear = class GuessTheYear extends LitElement {
|
|
|
585
604
|
hint = (hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||
|
|
586
605
|
hintTemplates[0]).replace(/__TITLE__/, hintIncident.title || hintIncident.text);
|
|
587
606
|
break;
|
|
607
|
+
case Category.tvShowOrSeries:
|
|
608
|
+
hint = (hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||
|
|
609
|
+
hintTemplates[0]).replace(/__TITLE__/, hintIncident.title || hintIncident.text);
|
|
610
|
+
break;
|
|
588
611
|
case Category.sports:
|
|
589
612
|
hint = (hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||
|
|
590
613
|
hintTemplates[0]).replace(/__TITLE__/, hintIncident.title || hintIncident.text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guess-the-year.js","sourceRoot":"","sources":["../src/guess-the-year.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html, PropertyValues, TemplateResult } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport dayjs from \"dayjs\";\nimport { Dayjs } from \"dayjs\";\nconst { setTimeout } = window;\nimport { Incident, Categories, Category } from \"./lib/Incident\";\nimport { NoImageImg } from \"./lib/Icon\";\nimport { ApiService, ContentFeedback } from \"./lib/ApiService\";\nimport { Util } from \"./lib/Util\";\nimport { i18nFactory } from \"./lib/i18n/i18n\";\nimport { GameState } from \"./lib/enums\";\nimport stylesheet from \"./scss/main.scss\";\nimport { QuestionScoreController } from \"./lib/controller/scorecontroller\";\n\nconst SPLASH_DELAY: number = 1000;\nconst MIN_YEAR: number = 1950;\nconst MAX_YEAR: number = 2024;\nconst MAX_QUESTIONS: number = 10;\nconst HINT_COST: number = 2;\n\n@customElement(\"guess-the-year\")\nexport class GuessTheYear extends LitElement {\n private sources: Array<string> = [];\n private _loading = false;\n\n private _score0: QuestionScoreController;\n\n get loading() {\n return this._loading;\n }\n\n set loading(value: boolean) {\n this._loading = value;\n }\n\n @property({ type: String, attribute: \"tee-e-api-url\" })\n teeeApiUrl: string = \"https://api.tee-e.com\";\n\n @property({ type: Boolean, attribute: \"report-broken-images\" })\n reportBrokenImages: boolean = false;\n\n @property({ type: String })\n date: string = \"\";\n\n @property({ type: String })\n country: string = \"\";\n\n @property({ type: String })\n category: string = \"\";\n\n @property({ type: String })\n emotion: string = \"\";\n\n @property({ type: String })\n impact: string = \"\";\n\n @property({\n type: Dayjs,\n converter: {\n fromAttribute: (value: string) => {\n console.debug([\"from\", \"from\", value]);\n if (!value) {\n return dayjs();\n }\n\n if (value.length >= 10) {\n return dayjs(value, \"YYYY-MM-DD\");\n }\n\n return dayjs(`${value}-01-01`, \"YYYY-MM-DD\");\n },\n toAttribute: (value: Dayjs) => {\n console.debug([\"from\", \"to\", value]);\n return value.format(\"YYYY-MM-DD\");\n },\n },\n })\n from: Dayjs = dayjs(`${MIN_YEAR}-01-01`, \"YYYY-MM-DD\");\n\n @property({\n type: Dayjs,\n converter: {\n fromAttribute: (value: string) => {\n console.debug([\"to\", \"from\", value]);\n if (!value) {\n return dayjs();\n }\n\n if (value.length >= 10) {\n return dayjs(value, \"YYYY-MM-DD\");\n }\n\n return dayjs(`${value}-12-31`, \"YYYY-MM-DD\");\n },\n toAttribute: (value: Dayjs) => {\n console.debug([\"to\", \"to\", value]);\n return value.format(\"YYYY-MM-DD\");\n },\n },\n })\n to: Dayjs = dayjs(); // defaults to today\n\n @property({ type: String, attribute: \"no-image-src\" })\n noImageSrc: string = \"\";\n\n @property({ type: Boolean, attribute: \"suppress-images\" })\n suppressImages: boolean = false;\n\n @property({ type: Number, attribute: \"max-hints\" })\n maxHints: number = 3;\n\n @property({ type: Number, attribute: \"number-of-questions\", reflect: true })\n numberOfQuestions: number = 10;\n private _numberOfQuestionsSeen: number = 0;\n\n @state()\n private _incident: Incident | undefined = undefined;\n\n private _answers: Array<Number> = [];\n\n @state()\n private _hint: string | undefined = undefined;\n\n private _showHint: boolean = true;\n private _showFooter: boolean = false;\n private _hintsIndex: number = 0;\n private _hints: Array<Incident> = [];\n\n @state()\n private _solution: Number | undefined = undefined;\n\n @state()\n public _renderState: string = GameState.INIT;\n\n @state()\n private _score = 30;\n\n public totalScore = 0;\n\n // _answer is stored as string because it will be entered character for character\n @state()\n private _answer: number | undefined = undefined;\n\n private _apiService = new ApiService(this.teeeApiUrl);\n private i18n = i18nFactory(\"nl\");\n\n static override styles = css`\n ${stylesheet}\n `;\n\n constructor() {\n super();\n this._score0 = new QuestionScoreController(this, 30, 1000);\n }\n\n override connectedCallback() {\n console.debug(\"connectedCallback\");\n super.connectedCallback();\n\n // first step is splash\n this._renderState = GameState.SPLASH;\n }\n\n override disconnectedCallback() {\n console.debug(\"disconnectedCallback\");\n super.disconnectedCallback();\n this._renderState = GameState.INIT;\n this._score0.stop();\n this._score0.reset();\n }\n\n override firstUpdated(changedProperties: PropertyValues): void {\n console.debug(\"firstUpdated\");\n super.firstUpdated(changedProperties);\n }\n\n override shouldUpdate(changedProperties: PropertyValues): boolean {\n console.debug(\"shouldUpdate\");\n return super.shouldUpdate(changedProperties);\n }\n\n override update(changedProperties: PropertyValues) {\n console.debug(\"update\");\n return super.update(changedProperties);\n }\n\n override updated(changedProperties: PropertyValues) {\n console.debug(\"updated\");\n return super.updated(changedProperties);\n }\n\n override render() {\n /**\n * this is the main render function\n * it renders different stages during the game\n */\n console.debug(\"render\");\n\n return html`\n <div class=\"guess-the-year-container\">\n ${this._renderState == GameState.INIT ? \"Loading...\" : \"\"}\n ${this._renderState == GameState.SPLASH\n ? this.renderSplashScreen()\n : \"\"}\n ${this._renderState == GameState.INTRO ? this.renderGameIntro() : \"\"}\n ${this._renderState == GameState.PLAY ? this.renderGameStage() : \"\"}\n ${this._renderState == GameState.END ? this.renderGameEnd() : \"\"}\n ${this._renderFooter()}\n </div>\n `;\n }\n\n colorElement(element: any, color: string) {\n console.debug(\"colorElement\");\n this?.shadowRoot?.querySelector(element)?.style.setProperty(\"color\", color);\n }\n\n // this renders the game header\n private _renderHeader(content: string = this.i18n.translate(\"game-name\")): TemplateResult {\n return html`\n <section id=\"top\" class=\"header guess-the-year-header\">\n <h1>${content}</h1>\n </section>\n `;\n }\n\n // this renders the game footer\n private _renderFooter(): TemplateResult {\n if (this._showFooter) {\n return html`\n <section class=\"footer guess-the-year-footer\">\n <div class=\"guess-the-year-copyright\">\n ${\"The Throwback Company ©\" + dayjs().year()}\n </div>\n </section>\n `;\n }\n return html``;\n }\n\n // render the splash screen\n private renderSplashScreen(): TemplateResult {\n console.debug(\"renderSplashScreen\");\n\n // (pretend) to load before the game starts\n setTimeout(() => {\n this._renderState = GameState.INTRO;\n }, SPLASH_DELAY);\n\n return html`\n <div id=\"splash-screen-container\" class=\"splashscreen\">\n <div class=\"splash-logo\">\n <h2>${this.i18n.translate(\"game-name\")}</h2>\n <p>${this.i18n.translate(\"Loading...\")}</p>\n </div>\n </div>\n `;\n }\n\n // renders a selector for a year\n // TODO: set type of selector\n private _renderYearSelectOptions(selectedValue: string): TemplateResult {\n const selected = parseInt(selectedValue, 10);\n // pre-render year options\n // and mark selected when they match\n const selectYearOptions = [];\n for (let i = MIN_YEAR; i <= MAX_YEAR; i += 5) {\n selectYearOptions.push(html`\n <option value=\"${i}\" ?selected=${selected == i}>${i}</option>\n `);\n }\n\n return html`${selectYearOptions}`;\n }\n\n // render the game intro\n // allows to select the number of questions,\n // select the year range\n // and to start the game\n private renderGameIntro(): TemplateResult {\n console.debug(\"renderGameIntro\");\n\n // pre-render number of question options\n // and mark selected when they match\n const selectQuestionOptions = [];\n for (let i = 1; i <= MAX_QUESTIONS; i++) {\n selectQuestionOptions.push(html`\n <option value=\"${i}\" ?selected=${this.numberOfQuestions == i}>\n ${i}\n </option>\n `);\n }\n\n return html`\n ${this._renderHeader(this.i18n.translate(\"game-introduction-welcome\"))}\n\n <div class=\"game-intro\">\n <div class=\"game-explanation\">\n <p>\n ${this.i18n.translate(\"game-introduction-p1\")}\n </p>\n\n <p>\n ${this.i18n.translate(\"game-introduction-p2\")}\n </p>\n\n <p>\n ${this.i18n.translate(\"game-introduction-p3\")}\n </p>\n </div>\n\n <div class=\"game-settings\">\n <p>\n ${this.i18n.translate(\"game-settings-p1\")}\n <select\n @change=\"${(event: any) => {\n this.numberOfQuestions = Number(event.target.value);\n }}\"\n >\n ${selectQuestionOptions}\n </select>\n ${this.i18n.translate(\"game-settings-p2\")}\n <select @change=\"${this._setFromDate}\">\n ${this._renderYearSelectOptions(this.from.format(\"YYYY\"))}\n </select>\n ${this.i18n.translate(\"game-settings-p3\")}\n <select @change=\"${this._setToDate}\">\n ${this._renderYearSelectOptions(this.to.format(\"YYYY\"))}\n </select>\n ${this.i18n.translate(\"game-settings-p4\")}\n </p>\n </div>\n\n <div class=\"game-start\">\n <button @click=\"${this.setupNewGame}\">${this.i18n.translate(\"start\")}</button>\n </div>\n </div>\n `;\n }\n\n private _setFromDate(event: any): void {\n this.from = this.from.year(event.target.value);\n }\n\n private _setToDate(event: any): void {\n this.to = this.to.year(event.target.value);\n }\n\n // renders the actual game stage\n private renderGameStage(): TemplateResult {\n console.debug(\"renderGameStage\");\n\n return html`\n ${this._renderHeader(this.i18n.translate(\"game-call-to-action\").replace(/__FROM__/, this.from.year() + '').replace(/__TO__/, this.to.year() + ''))}\n <div class=\"guess-the-year-game-stage\">\n <div class=\"game-score\">${this._renderGameScore()}</div>\n\n <div class=\"container\">\n <div class=\"incident\">${this._renderIncident()}</div>\n ${this._renderHint()}\n <div class=\"sources\">${this.renderSources()}</div>\n </div>\n\n <div class=\"game-controls\">\n <div class=\"game-controls--hint\">${this._renderHintButton()}</div>\n <div class=\"game-controls--answers\">${this._renderAnswers()}</div>\n </div>\n\n ${this._renderFeedback()}\n </div>\n `;\n }\n\n // renders the item for the year to guess\n private _renderIncident(): TemplateResult {\n return html`\n <div class=\"incident--title\">\n <h1>${this._incident?.title}</h1>\n </div>\n\n ${this._renderIncidentImage(this._incident)}\n\n <div class=\"incident--text\">\n <p>${this._incident?.text}</p>\n </div>\n `;\n }\n\n private _shouldDisplayAnImage(incident: Incident): boolean {\n const hasImage = !!(incident && incident.image && incident.image[0]);\n const displayImages = !this.suppressImages;\n return hasImage && displayImages;\n }\n\n // renders the optional image with the item\n private _renderIncidentImage(incident: Incident | undefined): TemplateResult {\n if (incident && this._shouldDisplayAnImage(incident)) {\n return html`\n <div class=\"incident--image\">\n <img \n @error=${(evt: Event) => {\n this._handleImageLoadError(evt, incident);\n }}\n src=\"${incident.image[0]}\"\n />\n </div>\n `;\n }\n\n return html``;\n }\n\n // renders a list of possible answers\n private _renderAnswers(): TemplateResult {\n return html`\n <div class=\"answers--list\">\n <ul>\n ${this._answers.map(\n (answer) =>\n html`<li @click=\"${this._handleAnswerClicked}\">${answer}</li>`,\n )}\n </ul>\n </div>\n `;\n }\n\n // renders the current question score\n // it counts back to 0\n private _renderGameScore(): TemplateResult {\n return html`\n <div class=\"game-score--total\">\n <div class=\"game-score--label\">${this.i18n.translate(\"question-number\")}:</div>\n <div class=\"game-score--value\">\n ${this._numberOfQuestionsSeen} van ${this.numberOfQuestions}\n </div>\n </div>\n\n <div class=\"game-score--score\">\n <div class=\"game-score--label\">${this.i18n.translate(\"question-score\")}:</div>\n <div class=\"game-score--value\">${this._score0.value}</div>\n </div>\n\n <div class=\"game-score--total\">\n <div class=\"game-score--label\">${this.i18n.translate(\"total-score\")}:</div>\n <div class=\"game-score--value\">${this.totalScore}</div>\n </div>\n `;\n }\n\n // handles the click on an answer\n private _handleAnswerClicked(event: any): void {\n // get the clicked answer\n const answer = event.target.textContent;\n\n // stop the score counter\n this._score0.stop();\n\n // remove the hint button\n this._showHint = false;\n\n // check if the answer is correct\n if (answer) {\n // this._apiService.postIncidentAnswer(this._incident?.id, answer);\n console.debug(\n answer,\n this._solution,\n this._score,\n answer == this._solution,\n );\n\n this._answer = answer;\n }\n }\n\n // renders the requested hint\n private _renderHint(): TemplateResult {\n if (!this._hint) {\n return html``;\n }\n\n return html` <p>${this._hint}</p> `;\n }\n\n // renders the hint button until\n // all max hints have been used\n private _renderHintButton(): TemplateResult {\n if (!this._showHint) {\n return html``;\n }\n\n return html`\n <div class=\"game-controls--hint\">\n <button @click=\"${this._handleHintClicked}\">\n ${this.i18n.translate(\"show-hint\")} (${this._hints.length - this._hintsIndex})\n </button>\n </div>\n `;\n }\n\n // handles the click on the hint button\n // and shows the next hint if available\n // subtracts the cost of the hint from\n // the question score\n private _handleHintClicked(): void {\n console.debug(\"handleHintClicked\", [this._hintsIndex, this._hints.length]);\n\n if (this._hintsIndex < this._hints.length) {\n const hintText = this._generateHintText(this._hints[this._hintsIndex]);\n\n if (hintText) {\n this._hint = hintText;\n this._hintsIndex++;\n this._score0.subtract(HINT_COST);\n }\n }\n\n if (this._hintsIndex >= this._hints.length) {\n // this._hintsIndex = 0;\n this._showHint = false;\n }\n }\n\n // renders the feedback overlay\n private _renderFeedback(): TemplateResult {\n // do not show anything until an answer has been made\n // and the score is greater than 0\n if (!this._answer && this._score0.value > 0) {\n return html``;\n }\n\n // check if the answer is correct\n // cast to strings to compare\n const is_correct = this._answer + \"\" == this._solution + \"\";\n const score = is_correct ? this._score0.value : 0;\n\n if (this._score0.isRunning()) {\n this._score0.stop();\n }\n\n this.totalScore += score;\n\n if (is_correct) {\n return html`\n <div class=\"feedback\">\n <div class=\"feedback--content\">\n <h3>${this.i18n.translate(\"answer-correct\")}!</h3>\n <p>\n ${this._hintsIndex == 1 ? this.i18n.translate(\"used-hint-singular\") : this.i18n.translate(\"used-hint-plural\").replace(/__HINTS__/, this._hintsIndex + '')}\n </p>\n <p>\n ${score == 1 ? this.i18n.translate(\"number-points-singular\") : this.i18n.translate(\"number-points-plural\").replace(/__POINTS__/, score + '')}\n </p>\n\n ${this._renderNextQuestionButton()}\n </div>\n </div>\n `;\n } else if (!is_correct && this._answer) {\n return html`\n <div class=\"feedback\">\n <div class=\"feedback--content\">\n <h3>${this.i18n.translate(\"answer-wrong\")}</h3>\n <p>\n ${this.i18n.translate(\"correct-answer-was\").replace(/__WRONG__/, this._answer + '').replace(/__CORRECT__/, this._solution + '')}\n </p>\n ${this._renderNextQuestionButton()}\n </div>\n </div>\n `;\n } else {\n return html`\n <div class=\"feedback\">\n <div class=\"feedback--content\">\n <h3>Helaas</h3>\n <p>\n ${this.i18n.translate(\"no-answer-correct-answer-was\").replace(/__CORRECT__/, this._solution + '')}\n </p>\n ${this._renderNextQuestionButton()}\n </div>\n </div>\n `;\n }\n }\n\n // renders the next question button\n private _renderNextQuestionButton(): TemplateResult {\n if (this._numberOfQuestionsSeen < this.numberOfQuestions) {\n return html`\n <button @click=\"${this._loadQuestion}\">${this.i18n.translate(\"next-question\")}</button>\n `;\n }\n\n return html` <button @click=\"${this._endGame}\">${this.i18n.translate(\"quit\")}</button> `;\n }\n\n // renders the end of the game\n private _endGame(): void {\n this._renderState = GameState.END;\n }\n\n private renderGameEnd(): TemplateResult {\n // clearInterval(this._scoreIntervalHandler);\n\n console.debug(\"renderGameEnd\");\n return html`\n ${this._renderHeader(\"The end!\")}\n <div class=\"guess-the-year-game-end\">${this.i18n.translate(\"end\")}</div>\n <button @click=\"${() => (this._renderState = GameState.SPLASH)}\">\n ${this.i18n.translate(\"new-game\")}\n </button>\n ${this._renderFooter()}\n `;\n }\n\n // private _incidentsStack = [];\n\n // private _totalScore: number = 0;\n\n private setupNewGame(): void {\n console.debug(\"new game!\");\n\n console.debug({\n \"number of questions\": this.numberOfQuestions,\n from: this.from.toISOString(),\n to: this.to.toISOString(),\n });\n\n this.totalScore = 0;\n this._numberOfQuestionsSeen = 0;\n\n // this._question.load(this.from.format('YYYY'), this.to.format('YYYY'));\n // this._question.init();\n\n this._loadQuestion();\n }\n\n private _resetStage(): void {\n // window.scrollTo(0, 0);\n this.sources = [];\n this._incident = undefined;\n this._hints = [];\n this._answer = undefined;\n this._answers = [];\n this._hintsIndex = 0;\n this._score0.reset();\n this._showHint = false;\n this._hint = undefined;\n }\n\n async _loadQuestion(): Promise<void> {\n this._resetStage();\n\n const response: { incident: Incident | undefined; sources: string[] } =\n await this._apiService.fetchOneIncident(\n this.country,\n this.category,\n this.emotion,\n this.impact,\n this.date,\n this.from.format(\"YYYY-MM-DD\"),\n this.to.format(\"YYYY-MM-DD\"),\n \"40\",\n \"quiz_year\"\n );\n\n this._incident = response.incident;\n this.sources = response.sources;\n\n this._solution = Number(\n (response.incident?.yearplusmonth || \"\").substring(0, 4),\n );\n\n const answers = [this._solution];\n const from = this.from.year();\n const to = this.to.year();\n\n // generate 3 more random and unique answers between to and from\n while (answers.length < 4) {\n const randomAnswer = Math.floor(Math.random() * (to - from)) + from;\n if (!answers.includes(randomAnswer)) {\n answers.push(randomAnswer);\n }\n }\n\n // sort theses answers\n answers.sort();\n\n this._answers = answers;\n\n for (let i = 0; i < this.maxHints; i++) {\n console.debug(\"loading hint\", i);\n\n const response: { incident: Incident | undefined; sources: string[] } =\n await this._apiService.fetchOneIncident(\n this.country,\n Util.shuffleArray([...Categories]).shift(),\n undefined,\n undefined,\n \"\",\n `${this._solution}-01-01`,\n `${this._solution}-12-31`,\n undefined,\n undefined,\n );\n\n if (response.incident) {\n this._hints.push(response.incident);\n }\n }\n\n if (this._hints.length === 0) {\n this._showHint = false;\n }\n else {\n this._showHint = true;\n }\n\n // start render game stage\n this._renderState = GameState.PLAY;\n\n // start score counter\n this._score0.start();\n\n // increment question counter\n this._numberOfQuestionsSeen += 1;\n }\n\n private _generateHintText(hintIncident: Incident): string {\n let hint = \"\";\n const hintTemplates = this.i18n.HintTemplates[hintIncident.category];\n switch (hintIncident.category) {\n case Category.newsItem:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] || \"\"\n ).replace(/__TITLE__/, hintIncident.title);\n break;\n case Category.radioSong:\n // The title property of radioSongs always follow this pattern: track - artist\n const track = hintIncident.title.replace(/(.*?)\\s+\\-.*/, \"$1\");\n const artist = hintIncident.title.replace(/.*\\-(.*)/, \"$1\");\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n )\n .replace(/__ARTIST__/, artist)\n .replace(/__TRACK__/, track);\n break;\n case Category.cinemaMovie:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title);\n break;\n case Category.tech:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title);\n break;\n case Category.newsPresenter:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title || hintIncident.text);\n break;\n case Category.sports:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title || hintIncident.text);\n break;\n case Category.showbizz:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title || hintIncident.text);\n break;\n }\n return hint;\n }\n\n renderSources(): TemplateResult {\n console.debug(\"renderSources\");\n if (!this.sources.length) {\n return html``;\n }\n // deduplicate array via [...new Set(this.sources)]\n return html`\n <div class=\"guess-the-year-sources\">\n Source: ${[...new Set(this.sources)].join(\", \")}\n </div>\n `;\n }\n\n _handleImageLoadError = (evt: Event, incident: Incident) => {\n // grab the image element that triggered the error\n const targetImage = evt.target as HTMLImageElement;\n console.debug(`Error loading image: ${targetImage.src}`);\n\n // find out which no image source needs to be used\n const noImageSrc = this.noImageSrc || NoImageImg;\n\n // don't try to set the image source if it\n // has already been set\n if (targetImage.src == noImageSrc) {\n return;\n }\n\n // report broken images back to the server if set.\n if (this.reportBrokenImages) {\n if (incident) {\n this._apiService.postAttributeQualityFeedback(\n incident.id,\n \"image\",\n targetImage.src,\n ContentFeedback.incorrect,\n );\n }\n }\n\n // wait a bit before setting the image\n // so we don't hammer the no image server\n setTimeout(() => {\n targetImage.src = noImageSrc;\n }, 250);\n\n return false;\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"guess-the-year\": GuessTheYear;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"guess-the-year.js","sourceRoot":"","sources":["../src/guess-the-year.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html, PropertyValues, TemplateResult } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport dayjs from \"dayjs\";\nimport { Dayjs } from \"dayjs\";\nconst { setTimeout } = window;\nimport { Incident, Categories, Category } from \"./lib/Incident\";\nimport { NoImageImg } from \"./lib/Icon\";\nimport { ApiService, ContentFeedback } from \"./lib/ApiService\";\nimport { Util } from \"./lib/Util\";\nimport { i18nFactory } from \"./lib/i18n/i18n\";\nimport { GameState } from \"./lib/enums\";\nimport stylesheet from \"./scss/main.scss\";\nimport { QuestionScoreController } from \"./lib/controller/scorecontroller\";\n\nconst SPLASH_DELAY: number = 1000;\nconst MAX_QUESTIONS: number = 10;\nconst HINT_COST: number = 2;\nconst MIN_YEAR: number = 1950;\nconst MAX_YEAR: number = parseInt(dayjs().format('YYYY'), 10);\nconst GTY_FROM_YEAR_VAR = 'gty-from-year';\nconst GTY_TO_YEAR_VAR = 'gty-to-year';\nconst GTY_NUM_QUESTIONS_VAR = 'gty-number-of-questions';\nconst MAX_DOB: number = 1915;\nconst MIN_DOB: number = parseInt(dayjs().format('YYYY'), 10) - 10;\nconst GTY_PLAYER_DOB_VAR = 'gty-player-dob';\n\n@customElement(\"guess-the-year\")\nexport class GuessTheYear extends LitElement {\n\n private sources: Array<string> = [];\n private _loading = false;\n\n private _score0: QuestionScoreController;\n\n get loading() {\n return this._loading;\n }\n\n set loading(value: boolean) {\n this._loading = value;\n }\n\n @property({ type: String, attribute: \"tee-e-api-url\" })\n teeeApiUrl: string = \"https://api.tee-e.com\";\n\n @property({ type: Boolean, attribute: \"report-broken-images\" })\n reportBrokenImages: boolean = false;\n\n @property({ type: String })\n date: string = \"\";\n\n @property({ type: String })\n country: string = \"\";\n\n @property({ type: String })\n category: string = \"\";\n\n @property({ type: String })\n emotion: string = \"\";\n\n @property({ type: String })\n impact: string = \"\";\n\n @property({\n type: Dayjs,\n converter: {\n fromAttribute: (value: string) => {\n console.debug([\"from\", \"from\", value]);\n if (!value) {\n return dayjs();\n }\n\n if (value.length >= 10) {\n return dayjs(value, \"YYYY-MM-DD\");\n }\n\n return dayjs(`${value}-01-01`, \"YYYY-MM-DD\");\n },\n toAttribute: (value: Dayjs) => {\n console.debug([\"from\", \"to\", value]);\n return value.format(\"YYYY-MM-DD\");\n },\n },\n })\n from: Dayjs = dayjs(`${window.localStorage.getItem(GTY_FROM_YEAR_VAR) || MIN_YEAR}-01-01`, \"YYYY-MM-DD\");\n\n @property({\n type: Dayjs,\n converter: {\n fromAttribute: (value: string) => {\n console.debug([\"to\", \"from\", value]);\n if (!value) {\n return dayjs();\n }\n\n if (value.length >= 10) {\n return dayjs(value, \"YYYY-MM-DD\");\n }\n\n return dayjs(`${value}-12-31`, \"YYYY-MM-DD\");\n },\n toAttribute: (value: Dayjs) => {\n console.debug([\"to\", \"to\", value]);\n return value.format(\"YYYY-MM-DD\");\n },\n },\n })\n to: Dayjs = dayjs(`${window.localStorage.getItem(GTY_TO_YEAR_VAR) || MAX_YEAR}-01-01`, \"YYYY-MM-DD\");\n\n @property({ type: String, attribute: \"no-image-src\" })\n noImageSrc: string = \"\";\n\n @property({ type: Boolean, attribute: \"suppress-images\" })\n suppressImages: boolean = false;\n\n @property({ type: Number, attribute: \"max-hints\" })\n maxHints: number = 3;\n\n @property({ type: Number, attribute: \"number-of-questions\", reflect: true })\n numberOfQuestions: number = parseInt(window.localStorage.getItem(GTY_NUM_QUESTIONS_VAR) || MAX_QUESTIONS + '', 10);\n private _numberOfQuestionsSeen: number = 0;\n\n private _playerDob: number = parseInt(window.localStorage.getItem(GTY_PLAYER_DOB_VAR) || 0 + '', 10);\n\n @state()\n private _incident: Incident | undefined = undefined;\n\n private _answers: Array<Number> = [];\n\n @state()\n private _hint: string | undefined = undefined;\n\n private _showHint: boolean = true;\n private _showFooter: boolean = false;\n private _hintsIndex: number = 0;\n private _hints: Array<Incident> = [];\n\n @state()\n private _solution: Number | undefined = undefined;\n\n @state()\n public _renderState: string = GameState.INIT;\n\n @state()\n private _score = 30;\n\n public totalScore = 0;\n\n // _answer is stored as string because it will be entered character for character\n @state()\n private _answer: number | undefined = undefined;\n\n private _apiService = new ApiService(this.teeeApiUrl);\n private i18n = i18nFactory(\"nl\");\n\n static override styles = css`\n ${stylesheet}\n `;\n\n constructor() {\n super();\n this._score0 = new QuestionScoreController(this, 30, 1000);\n }\n\n override connectedCallback() {\n console.debug(\"connectedCallback\");\n super.connectedCallback();\n\n // first step is splash\n this._renderState = GameState.SPLASH;\n }\n\n override disconnectedCallback() {\n console.debug(\"disconnectedCallback\");\n super.disconnectedCallback();\n this._renderState = GameState.INIT;\n this._score0.stop();\n this._score0.reset();\n }\n\n override firstUpdated(changedProperties: PropertyValues): void {\n console.debug(\"firstUpdated\");\n super.firstUpdated(changedProperties);\n }\n\n override shouldUpdate(changedProperties: PropertyValues): boolean {\n console.debug(\"shouldUpdate\");\n return super.shouldUpdate(changedProperties);\n }\n\n override update(changedProperties: PropertyValues) {\n console.debug(\"update\");\n return super.update(changedProperties);\n }\n\n override updated(changedProperties: PropertyValues) {\n console.debug(\"updated\");\n return super.updated(changedProperties);\n }\n\n override render() {\n /**\n * this is the main render function\n * it renders different stages during the game\n */\n console.debug(\"render\");\n\n return html`\n <div class=\"guess-the-year-container\">\n ${this._renderState == GameState.INIT ? \"Loading...\" : \"\"}\n ${this._renderState == GameState.SPLASH\n ? this.renderSplashScreen()\n : \"\"}\n ${this._renderState == GameState.INTRO ? this.renderGameIntro() : \"\"}\n ${this._renderState == GameState.PLAY ? this.renderGameStage() : \"\"}\n ${this._renderState == GameState.END ? this.renderGameEnd() : \"\"}\n ${this._renderFooter()}\n </div>\n `;\n }\n\n colorElement(element: any, color: string) {\n console.debug(\"colorElement\");\n this?.shadowRoot?.querySelector(element)?.style.setProperty(\"color\", color);\n }\n\n // this renders the game header\n private _renderHeader(content: string = this.i18n.translate(\"game-name\")): TemplateResult {\n return html`\n <section id=\"top\" class=\"header guess-the-year-header\">\n <h1>${content}</h1>\n </section>\n `;\n }\n\n // this renders the game footer\n private _renderFooter(): TemplateResult {\n if (this._showFooter) {\n return html`\n <section class=\"footer guess-the-year-footer\">\n <div class=\"guess-the-year-copyright\">\n ${\"The Throwback Company ©\" + dayjs().year()}\n </div>\n </section>\n `;\n }\n return html``;\n }\n\n // render the splash screen\n private renderSplashScreen(): TemplateResult {\n console.debug(\"renderSplashScreen\");\n\n // (pretend) to load before the game starts\n setTimeout(() => {\n this._renderState = GameState.INTRO;\n }, SPLASH_DELAY);\n\n return html`\n <div id=\"splash-screen-container\" class=\"splashscreen\">\n <div class=\"splash-logo\">\n <h2>${this.i18n.translate(\"game-name\")}</h2>\n <p>${this.i18n.translate(\"Loading...\")}</p>\n </div>\n </div>\n `;\n }\n\n // renders a selector for a year\n // TODO: set type of selector\n private _renderYearStepXSelectOptions(from: number, to: number, step: number, selectedValue: string): TemplateResult {\n const selected = parseInt(selectedValue, 10);\n // pre-render year options\n // and mark selected when they match\n const selectYearOptions = [];\n for (let i = from; i <= to; i += step) {\n selectYearOptions.push(html`\n <option value=\"${i}\" ?selected=${selected == i}>${i}</option>\n `);\n }\n\n return html`${selectYearOptions}`;\n }\n\n // render the game intro\n // allows to select the number of questions,\n // select the year range\n // and to start the game\n private renderGameIntro(): TemplateResult {\n console.debug(\"renderGameIntro\");\n\n // pre-render number of question options\n // and mark selected when they match\n const selectQuestionOptions = [];\n for (let i = 1; i <= MAX_QUESTIONS; i++) {\n selectQuestionOptions.push(html`\n <option value=\"${i}\" ?selected=${this.numberOfQuestions == i}>\n ${i}\n </option>\n `);\n }\n\n return html`\n ${this._renderHeader(this.i18n.translate(\"game-introduction-welcome\"))}\n\n <div class=\"game-intro\">\n <div class=\"game-explanation\">\n <p>\n ${this.i18n.translate(\"game-introduction-p1\")}\n </p>\n\n <p>\n ${this.i18n.translate(\"game-introduction-p2\")}\n </p>\n\n <p>\n ${this.i18n.translate(\"game-introduction-p3\")}\n </p>\n </div>\n\n <div class=\"game-settings\">\n <p>\n ${this.i18n.translate(\"game-settings-p0\")}\n <select @change=\"${this._setPlayerDob}\">\n ${this._renderYearStepXSelectOptions(MAX_DOB, MIN_DOB, 1, this._playerDob + '')}\n </select>\n ${this.i18n.translate(\"game-settings-p1\")}\n <select @change=\"${this._setNumberOfQuestions}\">\n ${selectQuestionOptions}\n </select>\n ${this.i18n.translate(\"game-settings-p2\")}\n <select @change=\"${this._setFromDate}\">\n ${this._renderYearStepXSelectOptions(MIN_YEAR, MAX_YEAR, 5, this.from.format(\"YYYY\"))}\n </select>\n ${this.i18n.translate(\"game-settings-p3\")}\n <select @change=\"${this._setToDate}\">\n ${this._renderYearStepXSelectOptions(MIN_YEAR, MAX_YEAR, 5, this.to.format(\"YYYY\"))}\n </select>\n ${this.i18n.translate(\"game-settings-p4\")}\n </p>\n </div>\n\n <div class=\"game-start\">\n <button @click=\"${this.setupNewGame}\">${this.i18n.translate(\"start\")}</button>\n </div>\n </div>\n `;\n }\n private _setPlayerDob(event: any): void {\n this._playerDob = Number(event.target.value);\n window.localStorage.setItem(GTY_PLAYER_DOB_VAR, this._playerDob + '');\n }\n\n private _setNumberOfQuestions(event: any): void {\n this.numberOfQuestions = Number(event.target.value);\n window.localStorage.setItem(GTY_NUM_QUESTIONS_VAR, this.numberOfQuestions + '');\n }\n\n private _setFromDate(event: any): void {\n this.from = this.from.year(event.target.value);\n window.localStorage.setItem(GTY_FROM_YEAR_VAR, this.from.format('YYYY') + '');\n }\n\n private _setToDate(event: any): void {\n this.to = this.to.year(event.target.value);\n window.localStorage.setItem(GTY_TO_YEAR_VAR, this.to.format('YYYY') + '');\n }\n\n // renders the actual game stage\n private renderGameStage(): TemplateResult {\n console.debug(\"renderGameStage\");\n\n return html`\n ${this._renderHeader(this.i18n.translate(\"game-call-to-action\").replace(/__FROM__/, this.from.year() + '').replace(/__TO__/, this.to.year() + ''))}\n <div class=\"guess-the-year-game-stage\">\n <div class=\"game-score\">${this._renderGameScore()}</div>\n\n <div class=\"container\">\n <div class=\"incident\">${this._renderIncident()}</div>\n ${this._renderHint()}\n <div class=\"sources\">${this.renderSources()}</div>\n </div>\n\n <div class=\"game-controls\">\n <div class=\"game-controls--hint\">${this._renderHintButton()}</div>\n <div class=\"game-controls--answers\">${this._renderAnswers()}</div>\n </div>\n\n ${this._renderFeedback()}\n </div>\n `;\n }\n\n // renders the item for the year to guess\n private _renderIncident(): TemplateResult {\n return html`\n <div class=\"incident--title\">\n <h1>${this._incident?.title}</h1>\n </div>\n\n ${this._renderIncidentImage(this._incident)}\n\n <div class=\"incident--text\">\n <p>${this._incident?.text}</p>\n </div>\n `;\n }\n\n private _shouldDisplayAnImage(incident: Incident): boolean {\n const hasImage = !!(incident && incident.image && incident.image[0]);\n const displayImages = !this.suppressImages;\n return hasImage && displayImages;\n }\n\n // renders the optional image with the item\n private _renderIncidentImage(incident: Incident | undefined): TemplateResult {\n if (incident && this._shouldDisplayAnImage(incident)) {\n return html`\n <div class=\"incident--image\">\n <img \n @error=${(evt: Event) => {\n this._handleImageLoadError(evt, incident);\n }}\n src=\"${incident.image[0]}\"\n />\n </div>\n `;\n }\n\n // Preserve html structure to prevent the webcomponent to collapse.\n return html`<div class=\"incident--image\">\n <img/>\n </div>`;\n }\n\n // renders a list of possible answers\n private _renderAnswers(): TemplateResult {\n return html`\n <div class=\"answers--list\">\n <ul>\n ${this._answers.map(\n (answer) =>\n html`<li @click=\"${this._handleAnswerClicked}\">${answer}</li>`,\n )}\n </ul>\n </div>\n `;\n }\n\n // renders the current question score\n // it counts back to 0\n private _renderGameScore(): TemplateResult {\n return html`\n <div class=\"game-score--total\">\n <div class=\"game-score--label\">${this.i18n.translate(\"question-number\")}:</div>\n <div class=\"game-score--value\">\n ${this._numberOfQuestionsSeen} van ${this.numberOfQuestions}\n </div>\n </div>\n\n <div class=\"game-score--score\">\n <div class=\"game-score--label\">${this.i18n.translate(\"question-score\")}:</div>\n <div class=\"game-score--value\">${this._score0.value}</div>\n </div>\n\n <div class=\"game-score--total\">\n <div class=\"game-score--label\">${this.i18n.translate(\"total-score\")}:</div>\n <div class=\"game-score--value\">${this.totalScore}</div>\n </div>\n `;\n }\n\n // handles the click on an answer\n private _handleAnswerClicked(event: any): void {\n // get the clicked answer\n const answer = event.target.textContent;\n\n // stop the score counter\n this._score0.stop();\n\n // remove the hint button\n this._showHint = false;\n\n // check if the answer is correct\n if (answer) {\n // this._apiService.postIncidentAnswer(this._incident?.id, answer);\n console.debug(\n answer,\n this._solution,\n this._score,\n answer == this._solution,\n );\n\n this._answer = answer;\n }\n }\n\n // renders the requested hint\n private _renderHint(): TemplateResult {\n if (!this._hint) {\n return html``;\n }\n\n return html` <p>${this._hint}</p> `;\n }\n\n // renders the hint button until\n // all max hints have been used\n private _renderHintButton(): TemplateResult {\n if (!this._showHint) {\n return html``;\n }\n\n return html`\n <div class=\"game-controls--hint\">\n <button @click=\"${this._handleHintClicked}\">\n ${this.i18n.translate(\"show-hint\")} (${this._hints.length - this._hintsIndex})\n </button>\n </div>\n `;\n }\n\n // handles the click on the hint button\n // and shows the next hint if available\n // subtracts the cost of the hint from\n // the question score\n private _handleHintClicked(): void {\n console.debug(\"handleHintClicked\", [this._hintsIndex, this._hints.length]);\n\n if (this._hintsIndex < this._hints.length) {\n const hintText = this._generateHintText(this._hints[this._hintsIndex]);\n\n if (hintText) {\n this._hint = hintText;\n this._hintsIndex++;\n this._score0.subtract(HINT_COST);\n }\n }\n\n if (this._hintsIndex >= this._hints.length) {\n // this._hintsIndex = 0;\n this._showHint = false;\n }\n }\n\n // renders the feedback overlay\n private _renderFeedback(): TemplateResult {\n // do not show anything until an answer has been made\n // and the score is greater than 0\n if (!this._answer && this._score0.value > 0) {\n return html``;\n }\n\n // check if the answer is correct\n // cast to strings to compare\n const is_correct = this._answer + \"\" == this._solution + \"\";\n const score = is_correct ? this._score0.value : 0;\n\n if (this._score0.isRunning()) {\n this._score0.stop();\n }\n\n this.totalScore += score;\n\n // Fire-and-forget recallability feedback.\n if (this._incident?.id) {\n this._apiService.incidentRecallability(this._incident?.id, this._playerDob, is_correct);\n }\n\n if (is_correct) {\n return html`\n <div class=\"feedback\">\n <div class=\"feedback--content\">\n <h3>${this.i18n.translate(\"answer-correct\")}!</h3>\n <p>\n ${this._hintsIndex == 1 ? this.i18n.translate(\"used-hint-singular\") : this.i18n.translate(\"used-hint-plural\").replace(/__HINTS__/, this._hintsIndex + '')}\n </p>\n <p>\n ${score == 1 ? this.i18n.translate(\"number-points-singular\") : this.i18n.translate(\"number-points-plural\").replace(/__POINTS__/, score + '')}\n </p>\n\n ${this._renderNextQuestionButton()}\n </div>\n </div>\n `;\n } else if (!is_correct && this._answer) {\n return html`\n <div class=\"feedback\">\n <div class=\"feedback--content\">\n <h3>${this.i18n.translate(\"answer-wrong\")}</h3>\n <p>\n ${this.i18n.translate(\"correct-answer-was\").replace(/__WRONG__/, this._answer + '').replace(/__CORRECT__/, this._solution + '')}\n </p>\n ${this._renderNextQuestionButton()}\n </div>\n </div>\n `;\n } else {\n return html`\n <div class=\"feedback\">\n <div class=\"feedback--content\">\n <h3>Helaas</h3>\n <p>\n ${this.i18n.translate(\"no-answer-correct-answer-was\").replace(/__CORRECT__/, this._solution + '')}\n </p>\n ${this._renderNextQuestionButton()}\n </div>\n </div>\n `;\n }\n }\n\n // renders the next question button\n private _renderNextQuestionButton(): TemplateResult {\n if (this._numberOfQuestionsSeen < this.numberOfQuestions) {\n return html`\n <button @click=\"${this._loadQuestion}\">${this.i18n.translate(\"next-question\")}</button>\n `;\n }\n\n return html` <button @click=\"${this._endGame}\">${this.i18n.translate(\"quit\")}</button> `;\n }\n\n // renders the end of the game\n private _endGame(): void {\n this._renderState = GameState.END;\n }\n\n private renderGameEnd(): TemplateResult {\n console.debug(\"renderGameEnd\");\n return html`\n ${this._renderHeader(\"The end!\")}\n <div class=\"guess-the-year-game-end\">${this.i18n.translate(\"end\")}</div>\n <button @click=\"${() => (this._renderState = GameState.SPLASH)}\">\n ${this.i18n.translate(\"new-game\")}\n </button>\n ${this._renderFooter()}\n `;\n }\n\n private setupNewGame(): void {\n console.debug(\"new game!\");\n\n console.debug({\n \"number of questions\": this.numberOfQuestions,\n from: this.from.toISOString(),\n to: this.to.toISOString(),\n });\n\n this.totalScore = 0;\n this._numberOfQuestionsSeen = 0;\n\n this._loadQuestion();\n }\n\n private _resetStage(): void {\n this.sources = [];\n this._incident = undefined;\n this._hints = [];\n this._answer = undefined;\n this._answers = [];\n this._hintsIndex = 0;\n this._score0.reset();\n this._showHint = false;\n this._hint = undefined;\n }\n\n async _loadQuestion(): Promise<void> {\n this._resetStage();\n\n const response: { incident: Incident | undefined; sources: string[] } =\n await this._apiService.fetchOneIncident(\n this.country,\n this.category,\n this.emotion,\n this.impact,\n this.date,\n this.from.format(\"YYYY-MM-DD\"),\n this.to.format(\"YYYY-MM-DD\"),\n \"40\",\n \"quiz_year\"\n );\n\n this._incident = response.incident;\n this.sources = response.sources;\n\n this._solution = Number(\n (response.incident?.yearplusmonth || \"\").substring(0, 4),\n );\n\n const answers = [this._solution];\n const from = this.from.year();\n const to = this.to.year();\n\n // generate 3 more random and unique answers between to and from\n while (answers.length < 4) {\n const randomAnswer = Math.floor(Math.random() * (to - from)) + from;\n if (!answers.includes(randomAnswer)) {\n answers.push(randomAnswer);\n }\n }\n\n // sort theses answers\n answers.sort();\n\n this._answers = answers;\n\n for (let i = 0; i < this.maxHints; i++) {\n console.debug(\"loading hint\", i);\n\n const response: { incident: Incident | undefined; sources: string[] } =\n await this._apiService.fetchOneIncident(\n this.country,\n Util.shuffleArray([...Categories]).shift(),\n undefined,\n undefined,\n \"\",\n `${this._solution}-01-01`,\n `${this._solution}-12-31`,\n undefined,\n undefined,\n );\n\n if (response.incident) {\n this._hints.push(response.incident);\n }\n }\n\n if (this._hints.length === 0) {\n this._showHint = false;\n }\n else {\n this._showHint = true;\n }\n\n // start render game stage\n this._renderState = GameState.PLAY;\n\n // start score counter\n this._score0.start();\n\n // increment question counter\n this._numberOfQuestionsSeen += 1;\n }\n\n private _generateHintText(hintIncident: Incident): string {\n let hint = \"\";\n const hintTemplates = this.i18n.HintTemplates[hintIncident.category];\n switch (hintIncident.category) {\n case Category.newsItem:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] || \"\"\n ).replace(/__TITLE__/, hintIncident.title);\n break;\n case Category.radioSong:\n // The title property of radioSongs always follow this pattern: track - artist\n const track = hintIncident.title.replace(/(.*?)\\s+\\-.*/, \"$1\");\n const artist = hintIncident.title.replace(/.*\\-(.*)/, \"$1\");\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n )\n .replace(/__ARTIST__/, artist)\n .replace(/__TRACK__/, track);\n break;\n case Category.cinemaMovie:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title);\n break;\n case Category.tech:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title);\n break;\n case Category.newsPresenter:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title || hintIncident.text);\n break;\n case Category.tvShowOrSeries:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title || hintIncident.text);\n break;\n case Category.sports:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title || hintIncident.text);\n break;\n case Category.showbizz:\n hint = (\n hintTemplates[Math.round(Math.random() * hintTemplates.length)] ||\n hintTemplates[0]\n ).replace(/__TITLE__/, hintIncident.title || hintIncident.text);\n break;\n }\n return hint;\n }\n\n renderSources(): TemplateResult {\n console.debug(\"renderSources\");\n if (!this.sources.length) {\n return html``;\n }\n // deduplicate array via [...new Set(this.sources)]\n return html`\n <div class=\"guess-the-year-sources\">\n Source: ${[...new Set(this.sources)].join(\", \")}\n </div>\n `;\n }\n\n _handleImageLoadError = (evt: Event, incident: Incident) => {\n // grab the image element that triggered the error\n const targetImage = evt.target as HTMLImageElement;\n console.debug(`Error loading image: ${targetImage.src}`);\n\n // find out which no image source needs to be used\n const noImageSrc = this.noImageSrc || NoImageImg;\n\n // don't try to set the image source if it\n // has already been set\n if (targetImage.src == noImageSrc) {\n return;\n }\n\n // report broken images back to the server if set.\n if (this.reportBrokenImages) {\n if (incident) {\n this._apiService.postAttributeQualityFeedback(\n incident.id,\n \"image\",\n targetImage.src,\n ContentFeedback.incorrect,\n );\n }\n }\n\n // wait a bit before setting the image\n // so we don't hammer the no image server\n setTimeout(() => {\n targetImage.src = noImageSrc;\n }, 250);\n\n return false;\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"guess-the-year\": GuessTheYear;\n }\n}\n"]}
|
package/dist/index.html
CHANGED
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
--guess-the-year-title-background-color: orange;
|
|
29
29
|
--guess-the-year-title-color: white;
|
|
30
30
|
/* --guess-the-year-text-position: static; */
|
|
31
|
-
--guess-the-year-text-
|
|
32
|
-
--guess-the-year-text-color:
|
|
31
|
+
/* --guess-the-year-text-color: white;
|
|
32
|
+
--guess-the-year-text-background-color: rgb(3, 78, 3); */
|
|
33
33
|
--guess-the-year-text-max-height: 200px;
|
|
34
34
|
--guess-the-year-tile-min-height: 500px;
|
|
35
35
|
--guess-the-year-tile-max-height: 90vh;
|
package/dist/lib/ApiService.d.ts
CHANGED
|
@@ -7,7 +7,8 @@ export declare class ApiService {
|
|
|
7
7
|
sources: string[];
|
|
8
8
|
}>;
|
|
9
9
|
postAttributeQualityFeedback(incidentid: string, attribute: string, value: string, remark: string): Promise<void>;
|
|
10
|
-
|
|
10
|
+
postIncidentFeedback(incidentid: string, remark: string): Promise<void>;
|
|
11
|
+
incidentRecallability(incidentid: string, dob: number, is_correct: boolean): Promise<void>;
|
|
11
12
|
}
|
|
12
13
|
export declare enum ContentFeedback {
|
|
13
14
|
incorrect = "incorrect",// This content is not correct
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiService.d.ts","sourceRoot":"","sources":["../../src/lib/ApiService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,UAAU;IACT,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAEzB,gBAAgB,CAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA2FpD,4BAA4B,CACvC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;IAkBH,
|
|
1
|
+
{"version":3,"file":"ApiService.d.ts","sourceRoot":"","sources":["../../src/lib/ApiService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,UAAU;IACT,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAEzB,gBAAgB,CAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA2FpD,4BAA4B,CACvC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;IAkBH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAevD,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;CAGxF;AAED,oBAAY,eAAe;IACzB,SAAS,cAAc,CAAE,8BAA8B;IACvD,QAAQ,aAAa,CAAE,4BAA4B;IACnD,OAAO,YAAY,CAAE,2BAA2B;IAChD,WAAW,gBAAgB,CAAE,uDAAuD;IACpF,OAAO,YAAY,CAAE,iCAAiC;IACtD,OAAO,YAAY,CAAE,oDAAoD;IACzE,OAAO,YAAY,CAAE,iCAAiC;IACtD,OAAO,YAAY;CACpB"}
|
package/dist/lib/ApiService.js
CHANGED
|
@@ -97,7 +97,7 @@ export class ApiService {
|
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
// post feedback about an incident.
|
|
100
|
-
async
|
|
100
|
+
async postIncidentFeedback(incidentid, remark) {
|
|
101
101
|
const url = `${this.teeeApiUrl}/feedback/${incidentid}/remark`;
|
|
102
102
|
await fetch(url, {
|
|
103
103
|
method: "POST",
|
|
@@ -110,6 +110,10 @@ export class ApiService {
|
|
|
110
110
|
}),
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
+
// Post the recallability of this incident by the player.
|
|
114
|
+
async incidentRecallability(incidentid, dob, is_correct) {
|
|
115
|
+
this.postIncidentFeedback(incidentid, `recall:absolute-year:${Util.dobToGeneration(dob)}:${is_correct}`);
|
|
116
|
+
}
|
|
113
117
|
}
|
|
114
118
|
export var ContentFeedback;
|
|
115
119
|
(function (ContentFeedback) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiService.js","sourceRoot":"","sources":["../../src/lib/ApiService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ApiService.js","sourceRoot":"","sources":["../../src/lib/ApiService.ts"],"names":[],"mappings":"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","sourcesContent":["import { Util, IHash } from \"./Util\";\nimport { Incident } from \"./Incident\";\n\nexport class ApiService {\n constructor(private teeeApiUrl: string) { }\n\n public async fetchOneIncident(\n pov: string,\n category: string | undefined,\n emotion: string | undefined,\n impact: string | undefined,\n date: string,\n from: string,\n to: string,\n maxLasted: string | undefined,\n variant: string | undefined,\n ): Promise<{ incident: Incident | undefined; sources: string[] }> {\n return new Promise(async (resolve, reject) => {\n console.debug(\"fetchHistory\");\n\n // Set defaults to explicit empty string.\n const povs = pov || \"\";\n const categories = category || \"\";\n const emotions = emotion || \"\";\n const impacts = impact || \"\";\n const dateString = date || \"\";\n const fromString = from || \"\";\n const toString = to || \"\";\n const limitString = \"1\";\n const maxLastedString = maxLasted || \"\";\n const variants = variant || \"\";\n\n try {\n const urls: Array<URL> = [];\n\n const urlSearch = new URLSearchParams({\n pov: povs,\n emotion: emotions,\n impact: impacts,\n limit: limitString,\n variant: variants\n });\n\n // Always randomize incidents on the backend.\n urlSearch.append(\"seed\", \"\" + new Date().getTime());\n\n if (maxLasted) {\n urlSearch.append(\"maxlasted\", \"\" + maxLastedString);\n }\n\n // add category to search\n urlSearch.set(\"category\", categories);\n\n if (dateString) {\n // setup url\n const url = new URL(`${this.teeeApiUrl}/${date}`);\n url.search = urlSearch.toString();\n\n urls.push(url);\n } else if (fromString && toString) {\n const from = new Date(fromString).toISOString().substring(0, 10);\n const to = new Date(toString).toISOString().substring(0, 10);\n\n // add from and to date to search\n urlSearch.set(\"from\", from);\n urlSearch.set(\"to\", to);\n\n // setup url\n const url = new URL(this.teeeApiUrl);\n url.search = urlSearch.toString();\n\n urls.push(url);\n } else {\n throw \"No correct date or period specified.\";\n }\n\n // start fetching all incidents\n let incidents: Array<Incident> = [];\n await Util.asyncForeach(urls, async (url: string) => {\n const response = await fetch(url);\n const json = await response.json();\n incidents = incidents.concat(json.results);\n });\n // Choose the first incident in the list as the one to return.\n const firstIncidentInList = incidents.length ? incidents[0] : undefined;\n\n // search for sources on incidents\n const sourcesFoundInIncidents: IHash = {};\n incidents.forEach((incident: Incident) => {\n if (incident.source) {\n sourcesFoundInIncidents[incident.source] = true;\n }\n });\n\n console.debug([incidents, sourcesFoundInIncidents]);\n\n resolve({\n incident: firstIncidentInList,\n sources: Object.keys(sourcesFoundInIncidents),\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n\n // post feedback about the attribute of an incident.\n public async postAttributeQualityFeedback(\n incidentid: string,\n attribute: string,\n value: string,\n remark: string,\n ) {\n const url = `${this.teeeApiUrl}/feedback/${incidentid}/attribute`;\n await fetch(url, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n attribute,\n value,\n remark,\n }),\n });\n }\n\n // post feedback about an incident.\n public async postIncidentFeedback(incidentid: string, remark: string) {\n const url = `${this.teeeApiUrl}/feedback/${incidentid}/remark`;\n await fetch(url, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n remark,\n }),\n });\n }\n\n // Post the recallability of this incident by the player.\n public async incidentRecallability(incidentid: string, dob: number, is_correct: boolean) {\n this.postIncidentFeedback(incidentid, `recall:absolute-year:${Util.dobToGeneration(dob)}:${is_correct}`);\n }\n}\n\nexport enum ContentFeedback {\n incorrect = \"incorrect\", // This content is not correct\n tooShort = \"tooShort\", // This content is too short\n tooLong = \"tooLong\", // This content is too long\n toneOfVoice = \"toneOfVoice\", // The tone of voice of this content should be improved\n missing = \"missing\", // This content should be created\n noMatch = \"noMatch\", // This content does not match with its sibling data\n badData = \"badData\", // This content contains bad data\n unknown = \"unknown\", // We did not expect this input...\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Incident.d.ts","sourceRoot":"","sources":["../../src/lib/Incident.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,oBAAY,QAAQ;IAClB,cAAc,mBAAmB;IACjC,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"Incident.d.ts","sourceRoot":"","sources":["../../src/lib/Incident.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,oBAAY,QAAQ;IAClB,cAAc,mBAAmB;IACjC,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,UAAU,YAetB,CAAC"}
|
package/dist/lib/Incident.js
CHANGED
package/dist/lib/Incident.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Incident.js","sourceRoot":"","sources":["../../src/lib/Incident.ts"],"names":[],"mappings":"AAYA,MAAM,CAAN,IAAY,QAkBX;AAlBD,WAAY,QAAQ;IAClB,6CAAiC,CAAA;IACjC,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,yCAA6B,CAAA;IAC7B,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,2CAA+B,CAAA;IAC/B,mCAAuB,CAAA;IACvB,iCAAqB,CAAA;IACrB,uCAA2B,CAAA;IAC3B,mCAAuB,CAAA;IACvB,6CAAiC,CAAA;IACjC,2CAA+B,CAAA;IAC/B,uBAAW,CAAA;IACX,6BAAiB,CAAA;IACjB,+BAAmB,CAAA;AACrB,CAAC,EAlBW,QAAQ,KAAR,QAAQ,QAkBnB;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,0BAA0B;IAC1B,2BAA2B;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,WAAW;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,QAAQ,CAAC,QAAQ;IACjB,QAAQ,CAAC,aAAa;IACtB,sBAAsB;IACtB,QAAQ,CAAC,SAAS;IAClB,QAAQ,CAAC,QAAQ;IACjB,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"Incident.js","sourceRoot":"","sources":["../../src/lib/Incident.ts"],"names":[],"mappings":"AAYA,MAAM,CAAN,IAAY,QAkBX;AAlBD,WAAY,QAAQ;IAClB,6CAAiC,CAAA;IACjC,iCAAqB,CAAA;IACrB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,yCAA6B,CAAA;IAC7B,uCAA2B,CAAA;IAC3B,uCAA2B,CAAA;IAC3B,2CAA+B,CAAA;IAC/B,mCAAuB,CAAA;IACvB,iCAAqB,CAAA;IACrB,uCAA2B,CAAA;IAC3B,mCAAuB,CAAA;IACvB,6CAAiC,CAAA;IACjC,2CAA+B,CAAA;IAC/B,uBAAW,CAAA;IACX,6BAAiB,CAAA;IACjB,+BAAmB,CAAA;AACrB,CAAC,EAlBW,QAAQ,KAAR,QAAQ,QAkBnB;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,0BAA0B;IAC1B,2BAA2B;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,WAAW;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,QAAQ,CAAC,QAAQ;IACjB,QAAQ,CAAC,aAAa;IACtB,sBAAsB;IACtB,QAAQ,CAAC,SAAS;IAClB,QAAQ,CAAC,QAAQ;IACjB,QAAQ,CAAC,MAAM;IACf,QAAQ,CAAC,IAAI;IACb,QAAQ,CAAC,cAAc;CACxB,CAAC","sourcesContent":["export interface Incident {\n image: string;\n audio: string;\n id: string;\n title: string;\n text: string;\n category: string;\n country: string;\n source: string;\n yearplusmonth: string;\n}\n\nexport enum Category {\n tvShowOrSeries = \"tvShowOrSeries\",\n showbizz = \"showbizz\",\n trend = \"trend\",\n tech = \"tech\",\n fashionTrend = \"fashionTrend\",\n cinemaMovie = \"cinemaMovie\",\n streetScene = \"streetScene\",\n newsPresenter = \"newsPresenter\",\n radioSong = \"radioSong\",\n newsItem = \"newsItem\",\n iconicAlbum = \"iconicAlbum\",\n radioShow = \"radioShow\",\n bestSellerBook = \"bestSellerBook\",\n advertisement = \"advertisement\",\n car = \"car\",\n sports = \"sports\",\n unknown = \"unknown\",\n}\n\nexport const Categories = [\n // Category.advertisement,\n // Category.bestSellerBook,\n // Category.car,\n Category.cinemaMovie,\n // Category.fashionTrend,\n // Category.iconicAlbum,\n Category.newsItem,\n Category.newsPresenter,\n // Category.radioShow,\n Category.radioSong,\n Category.showbizz,\n Category.sports,\n Category.tech,\n Category.tvShowOrSeries,\n];\n"]}
|
package/dist/lib/Util.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare class Util {
|
|
|
6
6
|
* Shuffle an array
|
|
7
7
|
*/
|
|
8
8
|
static shuffleArray(array: Array<any>): Array<any>;
|
|
9
|
+
static dobToGeneration(dob: number): string;
|
|
9
10
|
}
|
|
10
11
|
export interface IHash {
|
|
11
12
|
[Identifier: string | number]: boolean | number | string | string[] | undefined;
|
package/dist/lib/Util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../src/lib/Util.ts"],"names":[],"mappings":"AAAA,qBAAa,IAAI;WACK,YAAY,CAC9B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,yDAAyD;IAC5E,QAAQ,EAAE,GAAG;WAOD,iBAAiB,CAC7B,aAAa,EAAE,WAAW,GAAG,SAAS,GACrC,IAAI;IAWP;;OAEG;WACW,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../src/lib/Util.ts"],"names":[],"mappings":"AAAA,qBAAa,IAAI;WACK,YAAY,CAC9B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,yDAAyD;IAC5E,QAAQ,EAAE,GAAG;WAOD,iBAAiB,CAC7B,aAAa,EAAE,WAAW,GAAG,SAAS,GACrC,IAAI;IAWP;;OAEG;WACW,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;WAK3C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAkBnD;AAED,MAAM,WAAW,KAAK;IACpB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,EAAE,GACR,SAAS,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;CACzC"}
|