guess-the-year-web-component 3.2.3 → 3.2.4

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.
@@ -452,7 +452,7 @@
452
452
  },
453
453
  {
454
454
  "kind": "method",
455
- "name": "_renderYearSelectOptions",
455
+ "name": "_renderYearStepXSelectOptions",
456
456
  "privacy": "private",
457
457
  "return": {
458
458
  "type": {
@@ -460,6 +460,24 @@
460
460
  }
461
461
  },
462
462
  "parameters": [
463
+ {
464
+ "name": "from",
465
+ "type": {
466
+ "text": "number"
467
+ }
468
+ },
469
+ {
470
+ "name": "to",
471
+ "type": {
472
+ "text": "number"
473
+ }
474
+ },
475
+ {
476
+ "name": "step",
477
+ "type": {
478
+ "text": "number"
479
+ }
480
+ },
463
481
  {
464
482
  "name": "selectedValue",
465
483
  "type": {
@@ -117,7 +117,7 @@ export class ApiService {
117
117
  }
118
118
  // Post the recallability of this incident by the player.
119
119
  async incidentRecallability(incidentid, dob, is_correct) {
120
- this.postIncidentFeedback(incidentid, `recall:absolute-year:${Util.dobToGeneration(dob)}:${is_correct}`);
120
+ this.postIncidentFeedback(incidentid, `recallability:1:${dob}:absolute-year-${is_correct}`);
121
121
  }
122
122
  }
123
123
  export var ContentFeedback;
@@ -1 +1 @@
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 try {\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 }\n catch (e) {\n console.error(e, fromString, toString);\n }\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
+ {"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 try {\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 }\n catch (e) {\n console.error(e, fromString, toString);\n }\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, `recallability:1:${dob}:absolute-year-${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"]}
package/dist/lib/Util.js CHANGED
@@ -37,7 +37,7 @@ export class Util {
37
37
  return 'silentgeneration';
38
38
  if (dob >= 1901)
39
39
  return 'greatestgeneration';
40
- return '';
40
+ return 'invalid-generation';
41
41
  // greatestgeneration: 1901-1927
42
42
  // silentgeneration: 1928-1945
43
43
  // babyboomers: 1946-1964
@@ -1 +1 @@
1
- {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/lib/Util.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,IAAI;IACR,MAAM,CAAC,KAAK,CAAC,YAAY,CAC9B,KAAiB,EAAE,yDAAyD;IAC5E,QAAa;QAEb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAC7B,aAAsC;QAEtC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC;QAC5C,OAAO,aAAa,EAAE,CAAC;YACrB,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACzC,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,YAAY,CAAC,KAAiB;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,4EAA4E;IACrE,MAAM,CAAC,eAAe,CAAC,GAAW;QACvC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,iBAAiB,CAAC;QAC1C,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,aAAa,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,aAAa,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,aAAa,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,aAAa,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,kBAAkB,CAAC;QAC3C,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,oBAAoB,CAAC;QAC7C,OAAO,EAAE,CAAC;QACV,gCAAgC;QAChC,8BAA8B;QAC9B,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,6BAA6B;IAC/B,CAAC;IAGM,MAAM,CAAC,qBAAqB,CAAC,cAAsB;QACxD,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,WAAW,CAAC;QAC7C,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,WAAW,CAAC;QAC7C,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,MAAM,CAAC;QACxC,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,iBAAiB,CAAC;QACnD,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,YAAY,CAAC;QAC9C,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,aAAa,CAAC;QAC/C,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,UAAU,CAAC;QAC5C,IAAI,cAAc,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF","sourcesContent":["export class Util {\n public static async asyncForeach(\n array: Array<any>, // eslint-disable-line @typescript-eslint/no-explicit-any\n callback: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n for (let index = 0; index < array.length; index++) {\n await callback(array[index], index, array);\n }\n }\n\n public static removeAllChildren(\n parentElement: HTMLElement | undefined,\n ): void {\n if (!parentElement) {\n return;\n }\n let childToDelete = parentElement.lastChild;\n while (childToDelete) {\n parentElement.removeChild(childToDelete);\n childToDelete = parentElement.lastChild;\n }\n }\n\n /**\n * Shuffle an array\n */\n public static shuffleArray(array: Array<any>): Array<any> {\n return array.sort(() => Math.random() - 0.5);\n }\n\n // The naming of the generations should conform to what the backend expects.\n public static dobToGeneration(dob: number): string {\n if (dob >= 2013) return 'generationalpha';\n if (dob >= 1997) return 'generationz';\n if (dob >= 1981) return 'generationy';\n if (dob >= 1965) return 'generationx';\n if (dob >= 1946) return 'babyboomers';\n if (dob >= 1928) return 'silentgeneration';\n if (dob >= 1901) return 'greatestgeneration';\n return '';\n // greatestgeneration: 1901-1927\n // silentgeneration: 1928-1945\n // babyboomers: 1946-1964\n // generationx: 1965-1980\n // generationy: 1981-1996\n // generationz: 1997-2012\n // generationalpha: 2013-2028\n }\n\n\n public static scoreToValueJudgement(scoreAsPercent: number): string {\n if (scoreAsPercent >= 90) return 'excellent';\n if (scoreAsPercent >= 80) return 'very-good';\n if (scoreAsPercent >= 70) return 'good';\n if (scoreAsPercent >= 60) return 'reasonable-good';\n if (scoreAsPercent >= 50) return 'reasonable';\n if (scoreAsPercent >= 40) return 'not-so-good';\n if (scoreAsPercent >= 20) return 'not-good';\n if (scoreAsPercent >= 0) return 'bad';\n return '';\n }\n}\n\nexport interface IHash {\n [Identifier: string | number]:\n | boolean\n | number\n | string\n | string[]\n | undefined;\n}\n\nexport interface IStringArrayHash {\n [Identifier: string | number]: string[];\n}\n"]}
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/lib/Util.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,IAAI;IACR,MAAM,CAAC,KAAK,CAAC,YAAY,CAC9B,KAAiB,EAAE,yDAAyD;IAC5E,QAAa;QAEb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAC7B,aAAsC;QAEtC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC;QAC5C,OAAO,aAAa,EAAE,CAAC;YACrB,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACzC,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,YAAY,CAAC,KAAiB;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,4EAA4E;IACrE,MAAM,CAAC,eAAe,CAAC,GAAW;QACvC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,iBAAiB,CAAC;QAC1C,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,aAAa,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,aAAa,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,aAAa,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,aAAa,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,kBAAkB,CAAC;QAC3C,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,oBAAoB,CAAC;QAC7C,OAAO,oBAAoB,CAAC;QAC5B,gCAAgC;QAChC,8BAA8B;QAC9B,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,6BAA6B;IAC/B,CAAC;IAGM,MAAM,CAAC,qBAAqB,CAAC,cAAsB;QACxD,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,WAAW,CAAC;QAC7C,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,WAAW,CAAC;QAC7C,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,MAAM,CAAC;QACxC,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,iBAAiB,CAAC;QACnD,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,YAAY,CAAC;QAC9C,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,aAAa,CAAC;QAC/C,IAAI,cAAc,IAAI,EAAE;YAAE,OAAO,UAAU,CAAC;QAC5C,IAAI,cAAc,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF","sourcesContent":["export class Util {\n public static async asyncForeach(\n array: Array<any>, // eslint-disable-line @typescript-eslint/no-explicit-any\n callback: any, // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n for (let index = 0; index < array.length; index++) {\n await callback(array[index], index, array);\n }\n }\n\n public static removeAllChildren(\n parentElement: HTMLElement | undefined,\n ): void {\n if (!parentElement) {\n return;\n }\n let childToDelete = parentElement.lastChild;\n while (childToDelete) {\n parentElement.removeChild(childToDelete);\n childToDelete = parentElement.lastChild;\n }\n }\n\n /**\n * Shuffle an array\n */\n public static shuffleArray(array: Array<any>): Array<any> {\n return array.sort(() => Math.random() - 0.5);\n }\n\n // The naming of the generations should conform to what the backend expects.\n public static dobToGeneration(dob: number): string {\n if (dob >= 2013) return 'generationalpha';\n if (dob >= 1997) return 'generationz';\n if (dob >= 1981) return 'generationy';\n if (dob >= 1965) return 'generationx';\n if (dob >= 1946) return 'babyboomers';\n if (dob >= 1928) return 'silentgeneration';\n if (dob >= 1901) return 'greatestgeneration';\n return 'invalid-generation';\n // greatestgeneration: 1901-1927\n // silentgeneration: 1928-1945\n // babyboomers: 1946-1964\n // generationx: 1965-1980\n // generationy: 1981-1996\n // generationz: 1997-2012\n // generationalpha: 2013-2028\n }\n\n\n public static scoreToValueJudgement(scoreAsPercent: number): string {\n if (scoreAsPercent >= 90) return 'excellent';\n if (scoreAsPercent >= 80) return 'very-good';\n if (scoreAsPercent >= 70) return 'good';\n if (scoreAsPercent >= 60) return 'reasonable-good';\n if (scoreAsPercent >= 50) return 'reasonable';\n if (scoreAsPercent >= 40) return 'not-so-good';\n if (scoreAsPercent >= 20) return 'not-good';\n if (scoreAsPercent >= 0) return 'bad';\n return '';\n }\n}\n\nexport interface IHash {\n [Identifier: string | number]:\n | boolean\n | number\n | string\n | string[]\n | undefined;\n}\n\nexport interface IStringArrayHash {\n [Identifier: string | number]: string[];\n}\n"]}