Add function summarizeAggregateProperties.
This commit is contained in:
parent
b24eb4712b
commit
1b6a2b7aed
2 changed files with 171 additions and 25 deletions
|
@ -30,11 +30,42 @@ import {
|
||||||
type VersionsWrapper,
|
type VersionsWrapper,
|
||||||
} from "$lib/legal"
|
} from "$lib/legal"
|
||||||
|
|
||||||
|
export const summarizeAggregateProperties: Summarizer = (access, value) => {
|
||||||
|
for (const summarizer of [
|
||||||
|
summarizeArticleProperties,
|
||||||
|
summarizeDossierLegislatifProperties,
|
||||||
|
summarizeIdccProperties,
|
||||||
|
summarizeJoProperties,
|
||||||
|
summarizeSectionTaProperties,
|
||||||
|
summarizeTextekaliProperties,
|
||||||
|
summarizeTextelrProperties,
|
||||||
|
summarizeTexteVersionProperties,
|
||||||
|
]) {
|
||||||
|
const summary = summarizer(access, value)
|
||||||
|
if (summary !== undefined) {
|
||||||
|
return summary
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
export const summarizeArticleProperties: Summarizer = (access, value) => {
|
export const summarizeArticleProperties: Summarizer = (access, value) => {
|
||||||
if (access?.key === "article" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "article" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of article by id.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "article", value)
|
return summarizeLegalObject(access, "article", value)
|
||||||
}
|
}
|
||||||
if (typeof access?.key === "number" && access?.access?.key === "article") {
|
if (
|
||||||
|
access?.access?.key === "article" &&
|
||||||
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "article", value)
|
return summarizeLegalObjectToLink(access, "article", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +127,10 @@ export const summarizeArticleProperties: Summarizer = (access, value) => {
|
||||||
) {
|
) {
|
||||||
return summarizeLienArt(access, value)
|
return summarizeLienArt(access, value)
|
||||||
}
|
}
|
||||||
if (access?.access?.key === "VERSION") {
|
if (
|
||||||
|
(access?.key === "VERSION" && !Array.isArray(value)) ||
|
||||||
|
(typeof access?.key === "number" && access?.access?.key === "VERSION")
|
||||||
|
) {
|
||||||
const version = value as ArticleVersion
|
const version = value as ArticleVersion
|
||||||
const lienArt = version.LIEN_ART
|
const lienArt = version.LIEN_ART
|
||||||
return {
|
return {
|
||||||
|
@ -137,12 +171,21 @@ export const summarizeDossierLegislatifProperties: Summarizer = (
|
||||||
access,
|
access,
|
||||||
value,
|
value,
|
||||||
) => {
|
) => {
|
||||||
if (access?.key === "dossier_legislatif" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "dossier_legislatif" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of dossier_legislatif by id.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "dossier_legislatif", value)
|
return summarizeLegalObject(access, "dossier_legislatif", value)
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
typeof access?.key === "number" &&
|
access?.access?.key === "dossier_legislatif" &&
|
||||||
access?.access?.key === "dossier_legislatif"
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
) {
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "dossier_legislatif", value)
|
return summarizeLegalObjectToLink(access, "dossier_legislatif", value)
|
||||||
}
|
}
|
||||||
|
@ -160,10 +203,22 @@ export const summarizeDossierLegislatifProperties: Summarizer = (
|
||||||
}
|
}
|
||||||
|
|
||||||
export const summarizeIdccProperties: Summarizer = (access, value) => {
|
export const summarizeIdccProperties: Summarizer = (access, value) => {
|
||||||
if (access?.key === "idcc" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "idcc" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of idcc by id.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "idcc", value)
|
return summarizeLegalObject(access, "idcc", value)
|
||||||
}
|
}
|
||||||
if (typeof access?.key === "number" && access?.access?.key === "idcc") {
|
if (
|
||||||
|
access?.access?.key === "idcc" &&
|
||||||
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "idcc", value)
|
return summarizeLegalObjectToLink(access, "idcc", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,10 +226,23 @@ export const summarizeIdccProperties: Summarizer = (access, value) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const summarizeIdWrapperProperties: Summarizer = (access, value) => {
|
export const summarizeIdWrapperProperties: Summarizer = (access, value) => {
|
||||||
if (access?.key === "id" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "id" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of id by eli.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
// TODO: Fix regexp.
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "id", value)
|
return summarizeLegalObject(access, "id", value)
|
||||||
}
|
}
|
||||||
if (typeof access?.key === "number" && access?.access?.key === "id") {
|
if (
|
||||||
|
access?.access?.key === "id" &&
|
||||||
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "id", value)
|
return summarizeLegalObjectToLink(access, "id", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,10 +250,22 @@ export const summarizeIdWrapperProperties: Summarizer = (access, value) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const summarizeJoProperties: Summarizer = (access, value) => {
|
export const summarizeJoProperties: Summarizer = (access, value) => {
|
||||||
if (access?.key === "jo" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "jo" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of jo by id.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "jo", value)
|
return summarizeLegalObject(access, "jo", value)
|
||||||
}
|
}
|
||||||
if (typeof access?.key === "number" && access?.access?.key === "jo") {
|
if (
|
||||||
|
access?.access?.key === "jo" &&
|
||||||
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "jo", value)
|
return summarizeLegalObjectToLink(access, "jo", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -455,10 +535,22 @@ export const summarizeLienSectionTaId: Summarizer = (access, value) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const summarizeSectionTaProperties: Summarizer = (access, value) => {
|
export const summarizeSectionTaProperties: Summarizer = (access, value) => {
|
||||||
if (access?.key === "section_ta" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "section_ta" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of section_ta by id.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "section_ta", value)
|
return summarizeLegalObject(access, "section_ta", value)
|
||||||
}
|
}
|
||||||
if (typeof access?.key === "number" && access?.access?.key === "section_ta") {
|
if (
|
||||||
|
access?.access?.key === "section_ta" &&
|
||||||
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "section_ta", value)
|
return summarizeLegalObjectToLink(access, "section_ta", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -506,10 +598,22 @@ export const summarizeSectionTaProperties: Summarizer = (access, value) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const summarizeTextekaliProperties: Summarizer = (access, value) => {
|
export const summarizeTextekaliProperties: Summarizer = (access, value) => {
|
||||||
if (access?.key === "textekali" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "textekali" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of textekali by id.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "textekali", value)
|
return summarizeLegalObject(access, "textekali", value)
|
||||||
}
|
}
|
||||||
if (typeof access?.key === "number" && access?.access?.key === "textekali") {
|
if (
|
||||||
|
access?.access?.key === "textekali" &&
|
||||||
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "textekali", value)
|
return summarizeLegalObjectToLink(access, "textekali", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -537,10 +641,22 @@ export const summarizeTextelrVersionLienTxt: Summarizer = (access, value) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const summarizeTextelrProperties: Summarizer = (access, value) => {
|
export const summarizeTextelrProperties: Summarizer = (access, value) => {
|
||||||
if (access?.key === "textelr" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "textelr" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of textelr by id.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "textelr", value)
|
return summarizeLegalObject(access, "textelr", value)
|
||||||
}
|
}
|
||||||
if (typeof access?.key === "number" && access?.access?.key === "textelr") {
|
if (
|
||||||
|
access?.access?.key === "textelr" &&
|
||||||
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "textelr", value)
|
return summarizeLegalObjectToLink(access, "textelr", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -592,12 +708,22 @@ export const summarizeTextelrProperties: Summarizer = (access, value) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const summarizeTexteVersionProperties: Summarizer = (access, value) => {
|
export const summarizeTexteVersionProperties: Summarizer = (access, value) => {
|
||||||
if (access?.key === "texte_version" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "texte_version" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of texte_version by id.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
// TODO: Fix regexp.
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "texte_version", value)
|
return summarizeLegalObject(access, "texte_version", value)
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
typeof access?.key === "number" &&
|
access?.access?.key === "texte_version" &&
|
||||||
access?.access?.key === "texte_version"
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
) {
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "texte_version", value)
|
return summarizeLegalObjectToLink(access, "texte_version", value)
|
||||||
}
|
}
|
||||||
|
@ -695,10 +821,22 @@ export const summarizeVersionsWrapperProperties: Summarizer = (
|
||||||
access,
|
access,
|
||||||
value,
|
value,
|
||||||
) => {
|
) => {
|
||||||
if (access?.key === "versions" && typeof value !== "number") {
|
if (
|
||||||
|
access?.key === "versions" &&
|
||||||
|
(value === undefined ||
|
||||||
|
// Ensure that value is not a dictionary of versions by eli.
|
||||||
|
Object.keys(value as { [key: string]: unknown }).some(
|
||||||
|
(key) => key.match(/^[A-Z]{8}\d{12}$/) === null,
|
||||||
|
))
|
||||||
|
) {
|
||||||
return summarizeLegalObject(access, "versions", value)
|
return summarizeLegalObject(access, "versions", value)
|
||||||
}
|
}
|
||||||
if (typeof access?.key === "number" && access?.access?.key === "versions") {
|
if (
|
||||||
|
access?.access?.key === "versions" &&
|
||||||
|
(Array.isArray(access.parent) ||
|
||||||
|
(typeof access?.key === "string" &&
|
||||||
|
access.key.match(/^[A-Z]{8}\d{12}$/) !== null))
|
||||||
|
) {
|
||||||
return summarizeLegalObjectToLink(access, "versions", value)
|
return summarizeLegalObjectToLink(access, "versions", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,10 @@
|
||||||
|
|
||||||
import ArticleView from "$lib/components/ArticleView.svelte"
|
import ArticleView from "$lib/components/ArticleView.svelte"
|
||||||
import IdPagesSwitcher from "$lib/components/IdPagesSwitcher.svelte"
|
import IdPagesSwitcher from "$lib/components/IdPagesSwitcher.svelte"
|
||||||
import { summarizeLegalObject } from "$lib/summaries"
|
import {
|
||||||
|
summarizeAggregateProperties,
|
||||||
|
summarizeLegalObject,
|
||||||
|
} from "$lib/summaries"
|
||||||
|
|
||||||
import type { PageData } from "./$types"
|
import type { PageData } from "./$types"
|
||||||
|
|
||||||
|
@ -38,7 +41,12 @@
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{#if showRawData}
|
{#if showRawData}
|
||||||
<TreeView frame={false} open value={data} />
|
<TreeView
|
||||||
|
frame={false}
|
||||||
|
open
|
||||||
|
summarize={summarizeAggregateProperties}
|
||||||
|
value={data}
|
||||||
|
/>
|
||||||
{:else}
|
{:else}
|
||||||
<ArticleView {article} {data} />
|
<ArticleView {article} {data} />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
Loading…
Reference in a new issue