diff --git a/build.ts b/build.ts index 9ed2989344..55f83bef56 100644 --- a/build.ts +++ b/build.ts @@ -8,7 +8,6 @@ import { HtmlRR0SsgContext, RR0SsgContextImpl } from "./RR0SsgContext" import { CLI } from "./util/cli/CLI" import { AngularExpressionReplaceCommand, - ClassDomRegexReplaceCommand, ClassDomReplaceCommand, ContentStepConfig, CopyStep, @@ -246,15 +245,15 @@ timeService.getFiles().then(async (timeFiles) => { const sourceReplacerFactory = new SourceReplacerFactory(sourceRenderer, dataService, http, baseUrl) const contentsReplaceCommand = [ databaseAggregationCommand, - new ClassDomReplaceCommand("event", new EventReplacerFactory(caseRenderer, sourceReplacerFactory)), - new ClassDomReplaceCommand("source", sourceReplacerFactory), + new ClassDomReplaceCommand(new EventReplacerFactory(caseRenderer, sourceReplacerFactory), "event"), + new ClassDomReplaceCommand(sourceReplacerFactory, "source"), new HtmlTagReplaceCommand("time", new TimeReplacerFactory(timeService.renderer)), new HtmlTagReplaceCommand("code", new CodeReplacerFactory()), - new ClassDomReplaceCommand("people", new PeopleReplacerFactory(peopleService)), - new ClassDomReplaceCommand("place", new PlaceReplacerFactory()), - new ClassDomRegexReplaceCommand("temoin(.?)", new WitnessReplacerFactory()), - new ClassDomReplaceCommand("note", new NoteReplacerFactory()), - new ClassDomReplaceCommand("indexed", new IndexedReplacerFactory()), + new ClassDomReplaceCommand(new PeopleReplacerFactory(peopleService), "people"), + new ClassDomReplaceCommand(new PlaceReplacerFactory(), "place"), + new ClassDomReplaceCommand(new WitnessReplacerFactory(), "temoin", "temoin1", "temoin2", "temoin3"), + new ClassDomReplaceCommand(new NoteReplacerFactory(), "note"), + new ClassDomReplaceCommand(new IndexedReplacerFactory(), "indexed"), new UnitReplaceCommand(), new MetaLinkReplaceCommand(new TimeLinkDefaultHandler(timeFiles)) ] diff --git a/package-lock.json b/package-lock.json index 8d5b881b35..91f8c56b64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "https-browserify": "^1.0.0", "path-browserify": "^1.0.1", "process": "^0.11.10", - "ssg-api": "^1.11.0", + "ssg-api": "^1.12.0", "stream-http": "^3.2.0", "ts-loader": "^9.5.1", "tsx": "~4.16.0", @@ -3175,9 +3175,9 @@ } }, "node_modules/ssg-api": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/ssg-api/-/ssg-api-1.11.0.tgz", - "integrity": "sha512-jaaV6hOhrFOfaKH9SM7GM1PXEYzbZIRvbSTfmKKE7AOSHct470ehaW8zrQ+r5L0X0RlW8PsVgYxpxbqFgxurDA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/ssg-api/-/ssg-api-1.12.0.tgz", + "integrity": "sha512-QvZh0bd9Z55Na0eEPIvjJUY6VMcwgSdBNVVjaP7znnAtAac5fiep5kQNsCD9npFFef99Hu9NunnbcVLkdM9RTA==", "dev": true, "dependencies": { "char-encoding-detector": "^0.0.9", diff --git a/package.json b/package.json index 557dd6000f..9ff42e09ed 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "https-browserify": "^1.0.0", "path-browserify": "^1.0.1", "process": "^0.11.10", - "ssg-api": "^1.11.0", + "ssg-api": "^1.12.0", "stream-http": "^3.2.0", "ts-loader": "^9.5.1", "tsx": "~4.16.0", diff --git a/people/witness/WitnessReplacer.ts b/people/witness/WitnessReplacer.ts index 4f0ee1763f..1ffe346cc0 100644 --- a/people/witness/WitnessReplacer.ts +++ b/people/witness/WitnessReplacer.ts @@ -6,12 +6,29 @@ export class WitnessReplacer { private max = 60 - replacement(context: HtmlRR0SsgContext, match: string, witnessName: string, witnessNumber: string): string { + /** + * + * @param context + * @param witnessName The actual name of the witness (even if to be anonymized) + * @param witnessId The unique id (a number typically) to identify the witness in this case. + */ + replacement(context: HtmlRR0SsgContext, witnessName: string, witnessId?: string): HTMLElement { + const doc = context.file.document + const span = doc.createElement("span") if (this.now.getFullYear() - context.time.getYear() <= this.max) { const witnessLength = Math.max(6.5, witnessName.length) - return `témoin${witnessNumber ? " n° " + witnessNumber : ""}` + span.className = "witness" + span.title = "Nom du témoin anonymisé" + span.style.width = witnessLength + "em" + const privacyLink = doc.createElement("a") + privacyLink.href = "/FAQ.html#privacy" + privacyLink.textContent = `témoin${witnessId ? " n° " + witnessId : ""}` + span.append(privacyLink) } else { - return `${witnessName}` + span.className = "witness-revelead" + span.title = `Nom du témoin révélé après ${this.max} ans` + span.textContent = witnessName } + return span } } diff --git a/people/witness/WitnessReplacerFactory.ts b/people/witness/WitnessReplacerFactory.ts index 320576f544..2ca4579721 100644 --- a/people/witness/WitnessReplacerFactory.ts +++ b/people/witness/WitnessReplacerFactory.ts @@ -1,21 +1,21 @@ -import { RegexReplacer, ReplacerFactory } from "ssg-api" +import { DomReplacer, ReplacerFactory } from "ssg-api" import { WitnessReplacer } from "./WitnessReplacer" import { HtmlRR0SsgContext } from "../../RR0SsgContext" /** * Creates replacers for caviarded HTML in a given context. */ -export class WitnessReplacerFactory implements ReplacerFactory { +export class WitnessReplacerFactory implements ReplacerFactory { protected readonly singleton = new WitnessReplacer() - async create(context: HtmlRR0SsgContext): Promise { + async create(context: HtmlRR0SsgContext): Promise { const instance = await this.getInstance() return { - replace: (substring: string, ...args: any[]): string => { - const witnessNumber = args[0] - const witnessName = args[1] - return instance.replacement(context, substring, witnessName, witnessNumber) + replace: async (original: HTMLElement): Promise => { + const witnessId = original.className.substring("temoin".length) + const witnessName = original.textContent + return instance.replacement(context, witnessName, witnessId) } } } diff --git a/time/2/0/0/1/10/BeauJerome_RR0.csv b/time/2/0/0/1/10/BeauJerome_RR0.csv index 2258a65dc6..d7aa1b30c9 100644 --- a/time/2/0/0/1/10/BeauJerome_RR0.csv +++ b/time/2/0/0/1/10/BeauJerome_RR0.csv @@ -1,8 +1,8 @@ url,place,dateTime,description,sources,id https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"A Saint Jean-de-Maurienne, Savoie, plusieurs témoins indépendants observent le passage très rapide d'une boule de feu verte accompagnée de points lumineux blancs avec des traînées Il s'agit probablement de la rentrée d'un objet dans l'atmosphère SEPRA : PAN classé B.","",2001-10 -https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"À Chulucanas, département de Piura, à la frontière avec l'Equateur, pendant la fête religieuse de ""Señor Cautivo de Ayabaca"", 160 fidèles accompagnant la procession voient un ovni de 150 à 200 m de longueur se déplacer silencieusement pendant 2 h 30 vers la colline Pilán, considéré par les experts de l'OIFAA comme l'épicentre du phénomène. 3 vidéos sont analysée par l'OIFAA Dépèche AFP, 25 février 2003.","",2001-10 -https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"Le météore filmé le 14 depuis le sommet de Tunnel Mountain Brad Gledhill En vacances au parc national de Banff, Colombie-Britannique, Brad Gledhill escalade le mont Tunnel quand un bolide apparaît au dessus des montagnes. L'explosion est telle que les portes automatiques de l'hotel Lake Louise Inn. (à Alberta) s'activent sous la difference de pression.","",2001-10 -https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"A Saint Jory, Haute-Garonne, 1 témoin observe durant 10 s environ 1 lueur en forme de soucoupe tournant sur elle-même SEPRA: PAN classé C.","",2001-10 +https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"À Chulucanas, département de Piura, à la frontière avec l'Equateur, pendant la fête religieuse de ""Señor Cautivo de Ayabaca"", 160 fidèles accompagnant la procession voient un ovni de 150 à 200 m de longueur se déplacer silencieusement durant 2 h 30 vers la colline Pilán, considéré par les experts de l'OIFAA comme l'épicentre du phénomène. 3 vidéos sont analysée par l'OIFAA Dépèche AFP, 25 février 2003.","",2001-10 +https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"Le météore filmé le 14 depuis le sommet de Tunnel Mountain Brad Gledhill En vacances au parc national de Banff, Colombie-Britannique, Brad Gledhill escalade le mont Tunnel quand un bolide apparaît au-dessus des montagnes. L'explosion est telle que les portes automatiques de l'hotel Lake Louise Inn. (à Alberta) s'activent sous la difference de pression.","",2001-10 +https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"À Saint Jory, Haute-Garonne, 1 témoin observe durant 10 s environ 1 lueur en forme de soucoupe tournant sur elle-même SEPRA : PAN classé C.","",2001-10 https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,Observation similaire à celle du 13 octobre.,"",2001-10 -https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"Le météore filmé le 27 Plus de 30 observations d'un bolide sont faites depuis l'Angleterre, l'Ecosse, l'Allemagne du Nord, la Hollande, des gisements de pétrole de Valhalla en Mer du Nord, de la Belgique, du Danemark, de la France et divers navires en Mer du Nord. Même des gardes-côtes sont alertés d'un incident possible en mer d'Anglia ou de Kent après que le bruit d'une explosion ait été entendu.","",2001-10 -https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"L'ancien ministre de la Défense canadienne Art Eggleton répond par écrit à un citoyen : Le gouvernement du Canada ne dispose pas d'informations qui confirme l'existence des ovnis ou l'existence d'intelligence extraterrestre, Dépêche AFP < ""A la demande d'un citoyen, le Canada vérifie s'il y a des Ovnis dans le ciel"", Yahoo Actualités, 9 avril 2008.","",2001-10 \ No newline at end of file +https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"Le météore filmé le 27 Plus de 30 observations d'un bolide sont faites depuis l'Angleterre, l'Ecosse, l'Allemagne du Nord, la Hollande, des gisements de pétrole de Valhalla en Mer du Nord, de la Belgique, du Danemark, de la France et divers navires en Mer du Nord. Même des gardes-côtes sont alertés d'un incident possible en mer d'Anglia ou de Kent après que le bruit d'une explosion a été entendu.","",2001-10 +https://rr0.org/time/2/0/0/1/10/index.html,,2001-10,"L'ancien ministre de la Défense canadienne Art Eggleton répond par écrit à un citoyen : Le gouvernement du Canada ne dispose pas d'informations qui confirment l'existence des ovnis ou l'existence d'intelligence extraterrestre, Dépêche AFP < ""A la demande d'un citoyen, le Canada vérifie s'il y a des Ovnis dans le ciel"", Yahoo Actualités, 9 avril 2008.","",2001-10 \ No newline at end of file diff --git a/time/2/0/0/1/10/index.html b/time/2/0/0/1/10/index.html index cbca40ff1f..81a30be836 100644 --- a/time/2/0/0/1/10/index.html +++ b/time/2/0/0/1/10/index.html @@ -2,12 +2,12 @@
  • A Saint Jean-de-Maurienne, Savoie, plusieurs témoins indépendants observent le passage très rapide d'une boule de feu verte accompagnée de points lumineux blancs avec - des traînées Il s'agit probablement de la rentrée d'un objet dans l'atmosphère Il s'agit probablement de la rentrée d'un objet dans l'atmosphère SEPRA : PAN classé B.
  • À Chulucanas, département de Piura, à la frontière avec l'Equateur, pendant la fête religieuse de "Señor Cautivo de Ayabaca", 160 - fidèles accompagnant la procession voient un ovni de 150 à 200 m de longueur se déplacer silencieusement pendant 2 h + href="/org/ec/index.html">Equateur, pendant la fête religieuse de "Señor Cautivo de Ayabaca", 160 fidèles + accompagnant la procession voient un ovni de 150 à 200 m de longueur se déplacer silencieusement durant 2 h 30 vers la colline Pilán, considéré par les experts de l'OIFAA comme l'épicentre du phénomène. 3 vidéos sont analysée par l'OIFAA Dépèche AFP, 25 février 2003.
  • @@ -20,12 +20,12 @@ Le météore filmé le 14 octobre En vacances au parc national de Banff, Colombie-Britannique, - Brad Gledhill escalade le mont Tunnel quand un bolide apparaît au dessus des montagnes. + Brad Gledhill escalade le mont Tunnel quand un bolide apparaît au-dessus des montagnes. L'explosion est telle que les portes automatiques de l'hotel Lake Louise Inn. (à Alberta) s'activent sous la difference de pression. -
  • A Saint Jory, Haute-Garonne, 1 témoin observe durant 10 s - environ 1 lueur en forme de soucoupe tournant sur elle-même SEPRA: À Saint Jory, Haute-Garonne, 1 témoin observe durant 10 s + environ 1 lueur en forme de soucoupe tournant sur elle-même SEPRA : PAN classé C.
  • Observation similaire à celle du 13 octobre.
  • @@ -37,11 +37,11 @@ Plus de 30 observations d'un bolide sont faites depuis l'Angleterre, l'Ecosse, l'Allemagne du Nord, la Hollande, des gisements de pétrole de Valhalla en Mer du Nord, de la Belgique, du Danemark, de la France et divers navires en Mer du Nord. Même des gardes-côtes sont alertés d'un incident possible en mer d'Anglia ou de - Kent après que le bruit d'une explosion ait été entendu. + Kent après que le bruit d'une explosion a été entendu.
  • L'ancien ministre de la Défense canadienne Art Eggleton répond par écrit à un - citoyen : Le gouvernement du Canada ne dispose pas d'informations qui confirme l'existence des ovnis ou - l'existence d'intelligence extraterrestre, Dépêche AFP < "Le gouvernement du Canada ne dispose pas d'informations qui confirment l'existence des ovnis ou + l'existence d'intelligence extraterrestre, Dépêche AFP < "A la demande d'un citoyen, le Canada vérifie s'il y a des Ovnis dans le ciel", Yahoo Actualités, 9 avril 2008.