@datagouv/components-next 0.0.1

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.
Files changed (119) hide show
  1. package/README.md +150 -0
  2. package/assets/main.css +136 -0
  3. package/assets/placeholders/author.png +0 -0
  4. package/assets/placeholders/dataset.png +0 -0
  5. package/assets/placeholders/news.png +0 -0
  6. package/assets/placeholders/organization.png +0 -0
  7. package/assets/placeholders/reuse.png +0 -0
  8. package/assets/tailwind.config.js +24 -0
  9. package/dist/components.css +2 -0
  10. package/dist/locales/de.js +155 -0
  11. package/dist/locales/en.js +155 -0
  12. package/dist/locales/es.js +155 -0
  13. package/dist/locales/fr.js +155 -0
  14. package/dist/locales/it.js +155 -0
  15. package/dist/locales/pt.js +155 -0
  16. package/dist/locales/sr.js +155 -0
  17. package/package.json +72 -0
  18. package/src/components/AppLink.vue +51 -0
  19. package/src/components/Avatar.vue +27 -0
  20. package/src/components/AvatarWithName.vue +26 -0
  21. package/src/components/BannerAction.vue +39 -0
  22. package/src/components/BrandedButton.vue +170 -0
  23. package/src/components/CopyButton.vue +84 -0
  24. package/src/components/DataserviceCard.vue +184 -0
  25. package/src/components/DatasetCard.vue +198 -0
  26. package/src/components/DatasetInformationPanel.vue +210 -0
  27. package/src/components/DatasetQuality.vue +68 -0
  28. package/src/components/DatasetQualityInline.vue +32 -0
  29. package/src/components/DatasetQualityItem.vue +32 -0
  30. package/src/components/DatasetQualityItemWarning.vue +21 -0
  31. package/src/components/DatasetQualityScore.vue +35 -0
  32. package/src/components/DatasetQualityTooltipContent.vue +79 -0
  33. package/src/components/DescriptionDetails.vue +23 -0
  34. package/src/components/DescriptionList/DescriptionDetails.stories.ts +43 -0
  35. package/src/components/DescriptionList/DescriptionList.stories.ts +47 -0
  36. package/src/components/DescriptionList/DescriptionTerm.stories.ts +28 -0
  37. package/src/components/DescriptionList.vue +8 -0
  38. package/src/components/DescriptionTerm.vue +8 -0
  39. package/src/components/ExtraAccordion.vue +78 -0
  40. package/src/components/Icons/Archive.vue +21 -0
  41. package/src/components/Icons/Code.vue +21 -0
  42. package/src/components/Icons/Documentation.vue +21 -0
  43. package/src/components/Icons/File.vue +21 -0
  44. package/src/components/Icons/Image.vue +7 -0
  45. package/src/components/Icons/Link.vue +21 -0
  46. package/src/components/Icons/Table.vue +21 -0
  47. package/src/components/OrganizationCard.vue +68 -0
  48. package/src/components/OrganizationNameWithCertificate.vue +45 -0
  49. package/src/components/OwnerType.vue +43 -0
  50. package/src/components/OwnerTypeIcon.vue +18 -0
  51. package/src/components/Pagination.vue +205 -0
  52. package/src/components/Placeholder.vue +29 -0
  53. package/src/components/ReadMore.vue +107 -0
  54. package/src/components/ResourceAccordion/DataStructure.vue +87 -0
  55. package/src/components/ResourceAccordion/EditButton.vue +34 -0
  56. package/src/components/ResourceAccordion/Metadata.vue +171 -0
  57. package/src/components/ResourceAccordion/Preview.vue +229 -0
  58. package/src/components/ResourceAccordion/PreviewLoader.vue +148 -0
  59. package/src/components/ResourceAccordion/ResourceAccordion.vue +484 -0
  60. package/src/components/ResourceAccordion/ResourceIcon.vue +16 -0
  61. package/src/components/ResourceAccordion/SchemaBadge.vue +148 -0
  62. package/src/components/ResourceAccordion/SchemaLoader.vue +30 -0
  63. package/src/components/ResourceAccordion/Swagger.vue +46 -0
  64. package/src/components/ResourceAccordion/france.svg +1 -0
  65. package/src/components/ReuseCard.vue +106 -0
  66. package/src/components/ReuseDetails.vue +45 -0
  67. package/src/components/SimpleBanner.vue +24 -0
  68. package/src/components/SmallChart.vue +149 -0
  69. package/src/components/StatBox.vue +100 -0
  70. package/src/components/Tabs/Tab.vue +62 -0
  71. package/src/components/Tabs/TabGroup.vue +20 -0
  72. package/src/components/Tabs/TabList.vue +15 -0
  73. package/src/components/Tabs/TabPanel.vue +7 -0
  74. package/src/components/Tabs/TabPanels.vue +7 -0
  75. package/src/components/Toggletip.vue +62 -0
  76. package/src/components/ToggletipButton.vue +14 -0
  77. package/src/composables/useActiveDescendant.ts +103 -0
  78. package/src/composables/useReuseType.ts +14 -0
  79. package/src/config.ts +33 -0
  80. package/src/functions/api.ts +96 -0
  81. package/src/functions/api.types.ts +41 -0
  82. package/src/functions/config.ts +12 -0
  83. package/src/functions/datasets.ts +24 -0
  84. package/src/functions/dates.ts +85 -0
  85. package/src/functions/helpers.ts +38 -0
  86. package/src/functions/markdown.ts +47 -0
  87. package/src/functions/matomo.ts +3 -0
  88. package/src/functions/organizations.ts +85 -0
  89. package/src/functions/owned.ts +11 -0
  90. package/src/functions/resources.ts +99 -0
  91. package/src/functions/reuses.ts +28 -0
  92. package/src/functions/schemas.ts +96 -0
  93. package/src/functions/tabularApi.ts +27 -0
  94. package/src/functions/users.ts +7 -0
  95. package/src/locales/de.json +154 -0
  96. package/src/locales/en.json +154 -0
  97. package/src/locales/es.json +154 -0
  98. package/src/locales/fr.json +154 -0
  99. package/src/locales/it.json +154 -0
  100. package/src/locales/pt.json +154 -0
  101. package/src/locales/sr.json +154 -0
  102. package/src/main.ts +147 -0
  103. package/src/types/badges.ts +5 -0
  104. package/src/types/contact_point.ts +7 -0
  105. package/src/types/dataservices.ts +68 -0
  106. package/src/types/datasets.ts +80 -0
  107. package/src/types/frequency.ts +6 -0
  108. package/src/types/granularity.ts +6 -0
  109. package/src/types/harvest.ts +3 -0
  110. package/src/types/keyboard.ts +1 -0
  111. package/src/types/licenses.ts +9 -0
  112. package/src/types/organizations.ts +41 -0
  113. package/src/types/owned.ts +9 -0
  114. package/src/types/resources.ts +37 -0
  115. package/src/types/reuses.ts +49 -0
  116. package/src/types/site.ts +23 -0
  117. package/src/types/topics.ts +20 -0
  118. package/src/types/ui.ts +3 -0
  119. package/src/types/users.ts +10 -0
@@ -0,0 +1,99 @@
1
+ import { readonly, type Component } from 'vue'
2
+
3
+ import { useI18n } from 'vue-i18n'
4
+ import Archive from '../components/Icons/Archive.vue'
5
+ import Code from '../components/Icons/Code.vue'
6
+ import Documentation from '../components/Icons/Documentation.vue'
7
+ import Image from '../components/Icons/Image.vue'
8
+ import Link from '../components/Icons/Link.vue'
9
+ import Table from '../components/Icons/Table.vue'
10
+ import type { Resource } from '../types/resources'
11
+
12
+ export function getResourceFormatIcon(format: string): Component | null {
13
+ switch (format?.trim()?.toLowerCase()) {
14
+ case 'txt':
15
+ case 'pdf':
16
+ case 'rtf':
17
+ case 'odt':
18
+ case 'doc':
19
+ case 'docx':
20
+ case 'epub':
21
+ return Documentation
22
+ case 'json':
23
+ case 'sql':
24
+ case 'xml':
25
+ case 'xsd':
26
+ case 'shp':
27
+ case 'kml':
28
+ case 'kmz':
29
+ case 'gpx':
30
+ case 'shx':
31
+ case 'ovr':
32
+ case 'geojson':
33
+ case 'gpkg':
34
+ case 'grib2':
35
+ case 'dbf':
36
+ case 'prj':
37
+ case 'sqlite':
38
+ case 'db':
39
+ case 'sbn':
40
+ case 'sbx':
41
+ case 'cpg':
42
+ case 'lyr':
43
+ case 'owl':
44
+ case 'dxf':
45
+ case 'ics':
46
+ case 'rdf':
47
+ case 'ttl':
48
+ case 'n3':
49
+ return Code
50
+ case 'tar':
51
+ case 'gz':
52
+ case 'tgz':
53
+ case 'rar':
54
+ case 'zip':
55
+ case '7z':
56
+ case 'xz':
57
+ case 'bz2':
58
+ return Archive
59
+ case 'url':
60
+ return Link
61
+ case 'csv':
62
+ case 'ods':
63
+ case 'xls':
64
+ case 'xlsx':
65
+ case 'parquet':
66
+ return Table
67
+ case 'png':
68
+ case 'jpg':
69
+ case 'jpeg':
70
+ return Image
71
+ default:
72
+ return null
73
+ }
74
+ }
75
+
76
+ export function getResourceTitleId(resource: Resource) {
77
+ return 'resource-' + resource.id + '-title'
78
+ }
79
+
80
+ export const RESOURCE_TYPE = readonly(['main', 'documentation', 'update', 'api', 'code', 'other'] as const)
81
+ export type ResourceType = typeof RESOURCE_TYPE[number]
82
+
83
+ export const getResourceLabel = (type: ResourceType) => {
84
+ const { t } = useI18n()
85
+ switch (type) {
86
+ case 'main':
87
+ return t('Main file')
88
+ case 'documentation':
89
+ return t('Documentation')
90
+ case 'update':
91
+ return t('Update')
92
+ case 'api':
93
+ return t('API')
94
+ case 'code':
95
+ return t('Source code')
96
+ case 'other':
97
+ return t('Other')
98
+ }
99
+ }
@@ -0,0 +1,28 @@
1
+ import { ofetch } from 'ofetch'
2
+ import { useI18n } from 'vue-i18n'
3
+ import { useComponentsConfig } from '../config'
4
+ import type { ReuseTopic, ReuseType } from '../types/reuses'
5
+
6
+ let reuseTypesRequest: Promise<Array<ReuseType>> | null = null
7
+
8
+ export async function fetchReuseTypes() {
9
+ if (!reuseTypesRequest) {
10
+ const config = useComponentsConfig()
11
+ const { locale } = useI18n()
12
+ reuseTypesRequest = ofetch<Array<ReuseType>>('api/1/reuses/types/', {
13
+ baseURL: config.apiBase,
14
+ query: { lang: locale.value },
15
+ })
16
+ }
17
+ return await reuseTypesRequest
18
+ }
19
+
20
+ export function getType(types: Array<ReuseType>, id: string): string {
21
+ const type = types.find(t => t.id === id)
22
+ return type ? type.label : ''
23
+ }
24
+
25
+ export function getTopic(topics: Array<ReuseTopic>, id: string): string {
26
+ const topic = topics.find(t => t.id === id)
27
+ return topic ? topic.label : ''
28
+ }
@@ -0,0 +1,96 @@
1
+ import type { AxiosResponse } from 'axios'
2
+ import { ofetch } from 'ofetch'
3
+ import type { Resource } from '../types/resources'
4
+ import { useComponentsConfig } from '../config'
5
+
6
+ /**
7
+ * A schema version.
8
+ */
9
+ export type SchemaVersion = {
10
+ version_name: string
11
+ schema_url: string
12
+ }
13
+
14
+ /**
15
+ * A schema from the schema catalog
16
+ */
17
+ export type RegisteredSchema = {
18
+ name: string
19
+ schema_type: string
20
+ versions: Array<SchemaVersion>
21
+ }
22
+
23
+ /**
24
+ * A schema associated with a resource.
25
+ */
26
+ export type Schema = {
27
+ name?: string | null
28
+ url?: string | null
29
+ version?: string | null
30
+ } | null
31
+
32
+ export interface ValidataError {
33
+ code: string
34
+ description: string
35
+ fieldName: string
36
+ fieldNumber: number
37
+ fieldPosition: number
38
+ message: string
39
+ name: string
40
+ note: string
41
+ rowNumber: number
42
+ rowPosition: number
43
+ tags: Array<string>
44
+ }
45
+ export type SchemaResponseData = Array<RegisteredSchema>
46
+ export type SchemaResponse = AxiosResponse<SchemaResponseData>
47
+
48
+ type SchemaPath = { schema_name: string } | { schema_url: string }
49
+
50
+ const catalogRequest: Promise<Array<RegisteredSchema>> | null = null
51
+
52
+ /**
53
+ * Get Schema Catalog
54
+ */
55
+ export async function getCatalog(): Promise<SchemaResponseData> {
56
+ const config = useComponentsConfig()
57
+ if (catalogRequest) {
58
+ return catalogRequest
59
+ }
60
+
61
+ return await ofetch('api/1/datasets/schemas/', {
62
+ baseURL: config.apiBase,
63
+ })
64
+ }
65
+
66
+ export function findSchemaInCatalog(catalog: Array<RegisteredSchema>, schema: Schema): RegisteredSchema | null {
67
+ return catalog.find(registeredSchema => schema?.name === registeredSchema.name) || null
68
+ }
69
+
70
+ export function getSchemaDocumentation(name: string): string {
71
+ const config = useComponentsConfig()
72
+ return `${config.schemaDocumentationUrl}${name}/`
73
+ }
74
+
75
+ export function getSchemaValidationUrl(resource: Resource, registeredSchema: RegisteredSchema): string | null {
76
+ const config = useComponentsConfig()
77
+ if (!resource.schema || !resource.schema.name) {
78
+ return null
79
+ }
80
+
81
+ let schemaPath: SchemaPath = { schema_name: `schema-datagouvfr.${resource.schema.name}` }
82
+ if (resource.schema && resource.schema.version) {
83
+ const schemaVersion = resource.schema.version
84
+ const versionUrl = registeredSchema.versions.find(version => version.version_name === schemaVersion)?.schema_url
85
+ if (versionUrl) {
86
+ schemaPath = { schema_url: versionUrl }
87
+ }
88
+ }
89
+ const query = new URLSearchParams({
90
+ 'input': 'url',
91
+ 'url': resource.url,
92
+ 'header-case': 'on',
93
+ ...schemaPath,
94
+ }).toString()
95
+ return `${config.schemaValidataUrl}/table-schema?${query}`
96
+ }
@@ -0,0 +1,27 @@
1
+ import axios from 'axios'
2
+ import { useComponentsConfig, type PluginConfig } from '../config'
3
+
4
+ export type SortConfig = {
5
+ column: string
6
+ type: string
7
+ } | null
8
+
9
+ /**
10
+ * Call Tabular-api to get table content
11
+ */
12
+ export function getData(config: PluginConfig, id: string, page: number, sortConfig?: SortConfig) {
13
+ let url = `${config.tabularApiUrl}/api/resources/${id}/data/?page=${page}&page_size=${config.tabularApiPageSize || 20}`
14
+ if (sortConfig) {
15
+ url = url + `&${sortConfig.column}__sort=${sortConfig.type}`
16
+ }
17
+ return axios.get(url)
18
+ }
19
+
20
+ /**
21
+ * Call Tabular-api to get table profile
22
+ */
23
+ export function getProfile(id: string) {
24
+ const config = useComponentsConfig()
25
+
26
+ return axios.get(`${config.tabularApiUrl}/api/resources/${id}/profile/`)
27
+ }
@@ -0,0 +1,7 @@
1
+ import type { User } from '../types/users'
2
+ import { useComponentsConfig } from '../config'
3
+
4
+ export function getUserAvatar(user: User, size: number) {
5
+ const config = useComponentsConfig()
6
+ return user.avatar_thumbnail || `${config.apiBase}/api/1/avatars/${user.id}/${size}`
7
+ }
@@ -0,0 +1,154 @@
1
+ {
2
+ "Copy": "Copy",
3
+ "The identity of this public service is certified by {certifier}": "The identity of this public service is certified by {certifier}",
4
+ "Edit file": "Edit file",
5
+ "Nameless file": "Nameless file",
6
+ "schema:": "schema:",
7
+ "Invalid": "Invalid",
8
+ "Updated {date}": "Updated {date}",
9
+ "{n} downloads": "{n} downloads",
10
+ "From": "From",
11
+ "Unavailable": "Unavailable",
12
+ "Close details": "Close details",
13
+ "See data": "See data",
14
+ "See metadata": "See metadata",
15
+ "File link - opens a new window": "File link - opens a new window",
16
+ "Download file": "Download file",
17
+ "File menu": "File menu",
18
+ "Preview": "Preview",
19
+ "Data structure": "Data structure",
20
+ "Metadata": "Metadata",
21
+ "Data schema": "Data schema",
22
+ "This file is following a schema: ": "This file is following a schema: ",
23
+ "See validation report": "See validation report",
24
+ "URL": "URL",
25
+ "MIME Type": "MIME Type",
26
+ "Created on": "Created on",
27
+ "Modified on": "Modified on",
28
+ "Size": "Size",
29
+ "Explore data": "Explore data",
30
+ "B": "B",
31
+ "today": "today",
32
+ "on {date}": "on {date}",
33
+ "Informations": "Informations",
34
+ "License": "License",
35
+ "Temporality": "Temporality",
36
+ "Creation": "Creation",
37
+ "Frequency": "Frequency",
38
+ "Last update": "Last update",
39
+ "Spatial coverage": "Spatial coverage",
40
+ "Territorial coverage": "Territorial coverage",
41
+ "Granularity of territorial coverage": "Granularity of territorial coverage",
42
+ "Integrate on your website": "Integrate on your website",
43
+ "Extras": "Extras",
44
+ "See extras": "See extras",
45
+ "Harvest": "Harvest",
46
+ "See harvest": "See harvest",
47
+ "Pagination": "Pagination",
48
+ "First page": "First page",
49
+ "Previous page": "Previous page",
50
+ "Page {nb}": "Page {nb}",
51
+ "Next page": "Next page",
52
+ "Last page": "Last page",
53
+ "Metadata quality:": "Metadata quality:",
54
+ "Data description filled": "Data description filled",
55
+ "Data description empty": "Data description empty",
56
+ "Files documented": "Files documented",
57
+ "Files documentation missing": "Files documentation missing",
58
+ "License filled": "License filled",
59
+ "No license set": "No license set",
60
+ "Update frequency followed": "Update frequency followed",
61
+ "Update frequency not followed": "Update frequency not followed",
62
+ "Update frequency not set": "Update frequency not set",
63
+ "File formats are open": "File formats are open",
64
+ "File formats are closed": "File formats are closed",
65
+ "Temporal coverage filled": "Temporal coverage filled",
66
+ "Temporal coverage not set": "Temporal coverage not set",
67
+ "Spatial coverage filled": "Spatial coverage filled",
68
+ "Spatial coverage not set": "Spatial coverage not set",
69
+ "All files are available": "All files are available",
70
+ "Some files are unavailable": "Some files are unavailable",
71
+ "Learn more about this indicator - opens a new window": "Learn more about this indicator - opens a new window",
72
+ "Learn more about this indicator": "Learn more about this indicator",
73
+ "Read less": "Read less",
74
+ "Read more": "Read more",
75
+ "Archived": "Archived",
76
+ "Metadata :": "Metadata :",
77
+ "Availability :": "Availability :",
78
+ "Local authority": "Local authority",
79
+ "Association": "Association",
80
+ "Company": "Company",
81
+ "User": "User",
82
+ "The data structure of this file failed to load.": "The data structure of this file failed to load.",
83
+ "No data structure found for this file.": "No data structure found for this file.",
84
+ "The preview of this file failed to load.": "The preview of this file failed to load.",
85
+ "Explore data in detail": "Explore data in detail",
86
+ "Use our tool to get an overview of data, learn about different columns or perform filters and sorts.": "Use our tool to get an overview of data, learn about different columns or perform filters and sorts.",
87
+ "Preview updated on {date}": "Preview updated on {date}",
88
+ "Preview of {name}": "Preview of {name}",
89
+ "Sort ascending": "Sort ascending",
90
+ "Sort descending": "Sort descending",
91
+ "{count} columns": "{count} columns",
92
+ "{count} rows": "{count} rows",
93
+ "Resource Extras": "Resource Extras",
94
+ "Public service": "Public service",
95
+ "published {date}": "published {date}",
96
+ "{n}%": "{n}%",
97
+ "Restricted access": "Restricted access",
98
+ "Other": "Other",
99
+ "{n} views": "{n} views",
100
+ "{n} followers": "{n} followers",
101
+ "unknown": "unknown",
102
+ "Link copied!": "Link copied!",
103
+ "Copy link": "Copy link",
104
+ "Original format": "Original format",
105
+ "Format {format}": "Format {format}",
106
+ "Data": "Data",
107
+ "Description": "Description",
108
+ "Downloads": "Downloads",
109
+ "Schema:": "Schema",
110
+ "Copy embed": "Copy embed",
111
+ "Embed copied": "Embed copied",
112
+ "Stable URL": "Stable URL",
113
+ "Identifier": "Identifier",
114
+ "Copy ID": "Copy ID",
115
+ "ID copied!": "ID copied!",
116
+ "Copy checksum": "Copy checksum",
117
+ "Checksum copied!": "Checksum copied!",
118
+ "Type": "Type",
119
+ "Format": "Format",
120
+ "downloads": "downloads",
121
+ "Visit": "Visit",
122
+ "Original URL": "Original URL",
123
+ "File": "File",
124
+ "This file is valid for the shema:": "This file is valid for the shema:",
125
+ "But its compliance could be improved.": "But its compliance could be improved.",
126
+ "This file indicates to follow the schema:": "This file indicates to follow the schema:",
127
+ "But is not compliant.": "But is not compliant.",
128
+ "advices": "advices",
129
+ "structure errors": "structure errors",
130
+ "body errors": "body errors",
131
+ "Main file": "Main file",
132
+ "Documentation": "Documentation",
133
+ "Update": "Update",
134
+ "API": "API",
135
+ "Source code": "Source code",
136
+ "{n} resources downloads": "{n} resources downloads",
137
+ "{n} reuses": "{n} reuses",
138
+ "Close": "Close",
139
+ " in ": " in ",
140
+ "Auto-generated formats from {platform}": "Auto-generated formats from {platform}",
141
+ "Draft": "Draft",
142
+ "API documentation": "API documentation",
143
+ "Technical Documentation": "Technical Documentation",
144
+ "Business documentation": "Business documentation",
145
+ "Swagger": "Swagger",
146
+ "Swagger automatically generated by data.gouv.fr. This swagger allows you to query data by API by filtering it by column value.": "Swagger automatically generated by data.gouv.fr. This swagger allows you to query data by API by filtering it by column value.",
147
+ "Good": "Good",
148
+ "To improve": "To improve",
149
+ "Copy URL": "Copy URL",
150
+ "URL copied!": "URL copied!",
151
+ "Copy stable URL": "Copy stable URL",
152
+ "Stable URL copied!": "Stable URL copied!",
153
+ "Download file as ": "Download file as "
154
+ }
@@ -0,0 +1,154 @@
1
+ {
2
+ "Copy": "Copy",
3
+ "The identity of this public service is certified by {certifier}": "The identity of this public service is certified by {certifier}",
4
+ "Edit file": "Edit file",
5
+ "Nameless file": "Nameless file",
6
+ "schema:": "schema:",
7
+ "Invalid": "Invalid",
8
+ "Updated {date}": "Updated {date}",
9
+ "{n} downloads": "{n} downloads",
10
+ "From": "From",
11
+ "Unavailable": "Unavailable",
12
+ "Close details": "Close details",
13
+ "See data": "See data",
14
+ "See metadata": "See metadata",
15
+ "File link - opens a new window": "File link - opens a new window",
16
+ "Download file": "Download file",
17
+ "File menu": "File menu",
18
+ "Preview": "Preview",
19
+ "Data structure": "Data structure",
20
+ "Metadata": "Metadata",
21
+ "Data schema": "Data schema",
22
+ "This file is following a schema: ": "This file is following a schema: ",
23
+ "See validation report": "See validation report",
24
+ "URL": "URL",
25
+ "MIME Type": "MIME Type",
26
+ "Created on": "Created on",
27
+ "Modified on": "Modified on",
28
+ "Size": "Size",
29
+ "Explore data": "Explore data",
30
+ "B": "B",
31
+ "today": "today",
32
+ "on {date}": "on {date}",
33
+ "Informations": "Informations",
34
+ "License": "License",
35
+ "Temporality": "Temporality",
36
+ "Creation": "Creation",
37
+ "Frequency": "Frequency",
38
+ "Last update": "Last update",
39
+ "Spatial coverage": "Spatial coverage",
40
+ "Territorial coverage": "Territorial coverage",
41
+ "Granularity of territorial coverage": "Granularity of territorial coverage",
42
+ "Integrate on your website": "Integrate on your website",
43
+ "Extras": "Extras",
44
+ "See extras": "See extras",
45
+ "Harvest": "Harvest",
46
+ "See harvest": "See harvest",
47
+ "Pagination": "Pagination",
48
+ "First page": "First page",
49
+ "Previous page": "Previous page",
50
+ "Page {nb}": "Page {nb}",
51
+ "Next page": "Next page",
52
+ "Last page": "Last page",
53
+ "Metadata quality:": "Metadata quality:",
54
+ "Data description filled": "Data description filled",
55
+ "Data description empty": "Data description empty",
56
+ "Files documented": "Files documented",
57
+ "Files documentation missing": "Files documentation missing",
58
+ "License filled": "License filled",
59
+ "No license set": "No license set",
60
+ "Update frequency followed": "Update frequency followed",
61
+ "Update frequency not followed": "Update frequency not followed",
62
+ "Update frequency not set": "Update frequency not set",
63
+ "File formats are open": "File formats are open",
64
+ "File formats are closed": "File formats are closed",
65
+ "Temporal coverage filled": "Temporal coverage filled",
66
+ "Temporal coverage not set": "Temporal coverage not set",
67
+ "Spatial coverage filled": "Spatial coverage filled",
68
+ "Spatial coverage not set": "Spatial coverage not set",
69
+ "All files are available": "All files are available",
70
+ "Some files are unavailable": "Some files are unavailable",
71
+ "Learn more about this indicator - opens a new window": "Learn more about this indicator - opens a new window",
72
+ "Learn more about this indicator": "Learn more about this indicator",
73
+ "Read less": "Read less",
74
+ "Read more": "Read more",
75
+ "Archived": "Archived",
76
+ "Metadata :": "Metadata :",
77
+ "Availability :": "Availability :",
78
+ "Local authority": "Local authority",
79
+ "Association": "Association",
80
+ "Company": "Company",
81
+ "User": "User",
82
+ "The data structure of this file failed to load.": "The data structure of this file failed to load.",
83
+ "No data structure found for this file.": "No data structure found for this file.",
84
+ "The preview of this file failed to load.": "The preview of this file failed to load.",
85
+ "Explore data in detail": "Explore data in detail",
86
+ "Use our tool to get an overview of data, learn about different columns or perform filters and sorts.": "Use our tool to get an overview of data, learn about different columns or perform filters and sorts.",
87
+ "Preview updated on {date}": "Preview updated on {date}",
88
+ "Preview of {name}": "Preview of {name}",
89
+ "Sort ascending": "Sort ascending",
90
+ "Sort descending": "Sort descending",
91
+ "{count} columns": "{count} columns",
92
+ "{count} rows": "{count} rows",
93
+ "Resource Extras": "Resource Extras",
94
+ "Public service": "Public service",
95
+ "published {date}": "published {date}",
96
+ "{n}%": "{n}%",
97
+ "Restricted access": "Restricted access",
98
+ "Other": "Other",
99
+ "{n} views": "{n} views",
100
+ "{n} followers": "{n} followers",
101
+ "unknown": "unknown",
102
+ "Link copied!": "Link copied!",
103
+ "Copy link": "Copy link",
104
+ "Original format": "Original format",
105
+ "Format {format}": "Format {format}",
106
+ "Data": "Data",
107
+ "Description": "Description",
108
+ "Downloads": "Downloads",
109
+ "Schema:": "Schema",
110
+ "Copy embed": "Copy embed",
111
+ "Embed copied": "Embed copied",
112
+ "Stable URL": "Stable URL",
113
+ "Identifier": "Identifier",
114
+ "Copy ID": "Copy ID",
115
+ "ID copied!": "ID copied!",
116
+ "Copy checksum": "Copy checksum",
117
+ "Checksum copied!": "Checksum copied!",
118
+ "Type": "Type",
119
+ "Format": "Format",
120
+ "downloads": "downloads",
121
+ "Visit": "Visit",
122
+ "Original URL": "Original URL",
123
+ "File": "File",
124
+ "This file is valid for the shema:": "This file is valid for the shema:",
125
+ "But its compliance could be improved.": "But its compliance could be improved.",
126
+ "This file indicates to follow the schema:": "This file indicates to follow the schema:",
127
+ "But is not compliant.": "But is not compliant.",
128
+ "advices": "advices",
129
+ "structure errors": "structure errors",
130
+ "body errors": "body errors",
131
+ "Main file": "Main file",
132
+ "Documentation": "Documentation",
133
+ "Update": "Update",
134
+ "API": "API",
135
+ "Source code": "Source code",
136
+ "{n} resources downloads": "{n} resources downloads",
137
+ "{n} reuses": "{n} reuses",
138
+ "Close": "Close",
139
+ " in ": " in ",
140
+ "Auto-generated formats from {platform}": "Auto-generated formats from {platform}",
141
+ "Draft": "Draft",
142
+ "API documentation": "API documentation",
143
+ "Technical Documentation": "Technical Documentation",
144
+ "Business documentation": "Business documentation",
145
+ "Swagger": "Swagger",
146
+ "Swagger automatically generated by data.gouv.fr. This swagger allows you to query data by API by filtering it by column value.": "Swagger automatically generated by data.gouv.fr. This swagger allows you to query data by API by filtering it by column value.",
147
+ "Good": "Good",
148
+ "To improve": "To improve",
149
+ "Copy URL": "Copy URL",
150
+ "URL copied!": "URL copied!",
151
+ "Copy stable URL": "Copy stable URL",
152
+ "Stable URL copied!": "Stable URL copied!",
153
+ "Download file as ": "Download file as "
154
+ }