@projectcaluma/ember-analytics 1.0.0-beta.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 (84) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/addon/components/ca-field-form.hbs +82 -0
  3. package/addon/components/ca-field-form.js +100 -0
  4. package/addon/components/ca-field-select.hbs +30 -0
  5. package/addon/components/ca-field-select.js +111 -0
  6. package/addon/components/ca-field-selector-list/ca-field-alias-input.hbs +21 -0
  7. package/addon/components/ca-field-selector-list/ca-field-alias-input.js +28 -0
  8. package/addon/components/ca-field-selector-list/ca-field-function-select.hbs +8 -0
  9. package/addon/components/ca-field-selector-list/ca-field-function-select.js +49 -0
  10. package/addon/components/ca-field-selector-list.hbs +82 -0
  11. package/addon/components/ca-field-selector-list.js +54 -0
  12. package/addon/components/ca-filter-modal.hbs +77 -0
  13. package/addon/components/ca-filter-modal.js +59 -0
  14. package/addon/components/ca-report-builder.hbs +26 -0
  15. package/addon/components/ca-report-builder.js +52 -0
  16. package/addon/components/ca-report-list.hbs +27 -0
  17. package/addon/components/ca-report-preview.hbs +42 -0
  18. package/addon/components/ca-report-preview.js +61 -0
  19. package/addon/components/ca-toggle-switch.hbs +19 -0
  20. package/addon/controllers/reports/edit/index.js +17 -0
  21. package/addon/controllers/reports/edit.js +44 -0
  22. package/addon/controllers/reports/index.js +11 -0
  23. package/addon/engine.js +17 -0
  24. package/addon/gql/fragments/analytics-available-field.graphql +8 -0
  25. package/addon/gql/fragments/analytics-field.graphql +9 -0
  26. package/addon/gql/fragments/analytics-table-fields-of-field.graphql +11 -0
  27. package/addon/gql/fragments/analytics-table-result.graphql +22 -0
  28. package/addon/gql/fragments/analytics-table.graphql +23 -0
  29. package/addon/gql/mutations/remove-analytics-field.graphql +5 -0
  30. package/addon/gql/mutations/remove-analytics-table.graphql +5 -0
  31. package/addon/gql/mutations/save-analytics-field.graphql +19 -0
  32. package/addon/gql/mutations/save-analytics-table.graphql +9 -0
  33. package/addon/gql/queries/get-all-analytics-fields.graphql +12 -0
  34. package/addon/gql/queries/get-all-analytics-tables.graphql +11 -0
  35. package/addon/gql/queries/get-analytics-results.graphql +20 -0
  36. package/addon/gql/queries/get-analytics-table.graphql +7 -0
  37. package/addon/gql/queries/get-available-fields-for-field.graphql +8 -0
  38. package/addon/routes/reports/edit/index.js +7 -0
  39. package/addon/routes/reports/edit/preview.js +7 -0
  40. package/addon/routes/reports/edit.js +14 -0
  41. package/addon/routes/reports/index.js +26 -0
  42. package/addon/routes/reports/new.js +32 -0
  43. package/addon/routes.js +11 -0
  44. package/addon/tasks/get-analytics-table.js +19 -0
  45. package/addon/tasks/save-analytics-field.js +19 -0
  46. package/addon/templates/reports/edit/index.hbs +8 -0
  47. package/addon/templates/reports/edit/preview.hbs +1 -0
  48. package/addon/templates/reports/edit.hbs +51 -0
  49. package/addon/templates/reports/index.hbs +4 -0
  50. package/addon/templates/reports/new.hbs +2 -0
  51. package/addon/validations/analytics-table.js +6 -0
  52. package/addon/validations/field.js +14 -0
  53. package/app/components/ca-field-form.js +1 -0
  54. package/app/components/ca-field-select.js +1 -0
  55. package/app/components/ca-field-selector-list/ca-field-alias-input.js +1 -0
  56. package/app/components/ca-field-selector-list/ca-field-function-select.js +1 -0
  57. package/app/components/ca-field-selector-list.js +1 -0
  58. package/app/components/ca-filter-modal.js +1 -0
  59. package/app/components/ca-report-builder.js +1 -0
  60. package/app/components/ca-report-list.js +1 -0
  61. package/app/components/ca-report-preview.js +1 -0
  62. package/app/components/ca-toggle-switch.js +1 -0
  63. package/app/controllers/reports/edit/index.js +1 -0
  64. package/app/controllers/reports/edit.js +1 -0
  65. package/app/controllers/reports/index.js +1 -0
  66. package/app/routes/reports/edit/index.js +1 -0
  67. package/app/routes/reports/edit/preview.js +1 -0
  68. package/app/routes/reports/edit.js +1 -0
  69. package/app/routes/reports/index.js +1 -0
  70. package/app/routes/reports/new.js +1 -0
  71. package/app/styles/@projectcaluma/ember-analytics.scss +1 -0
  72. package/app/styles/_ca-uikit-powerselect.scss +2 -0
  73. package/app/templates/reports/edit/index.js +1 -0
  74. package/app/templates/reports/edit/preview.js +1 -0
  75. package/app/templates/reports/edit.js +1 -0
  76. package/app/templates/reports/index.js +1 -0
  77. package/app/templates/reports/new.js +1 -0
  78. package/blueprints/@projectcaluma/ember-analytics/index.js +18 -0
  79. package/config/environment.js +16 -0
  80. package/index.js +13 -0
  81. package/package.json +90 -0
  82. package/translations/de.yaml +44 -0
  83. package/translations/en.yaml +44 -0
  84. package/translations/fr.yaml +44 -0
@@ -0,0 +1,11 @@
1
+ import buildRoutes from "ember-engines/routes";
2
+
3
+ export default buildRoutes(function () {
4
+ this.route("reports", { path: "/" }, function () {
5
+ this.route("edit", { path: "/:report_id" }, function () {
6
+ this.route("preview");
7
+ this.route("new");
8
+ });
9
+ this.route("new");
10
+ });
11
+ });
@@ -0,0 +1,19 @@
1
+ import getAnalyticsTableQuery from "@projectcaluma/ember-analytics/gql/queries/get-analytics-table.graphql";
2
+
3
+ export default function* getAnalyticsTable(slug) {
4
+ try {
5
+ return yield this.apollo.watchQuery(
6
+ {
7
+ query: getAnalyticsTableQuery,
8
+ fetchPolicy: "cache-and-network",
9
+ variables: { slug },
10
+ },
11
+ "analyticsTable"
12
+ );
13
+ } catch (error) {
14
+ console.error(error);
15
+ this.notification.danger(
16
+ this.intl.t("caluma.notification.table-not-found")
17
+ );
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import saveAnalyticsFieldMutation from "@projectcaluma/ember-analytics/gql/mutations/save-analytics-field.graphql";
2
+
3
+ export default function* (input) {
4
+ try {
5
+ const mutation = yield this.apollo.mutate({
6
+ mutation: saveAnalyticsFieldMutation,
7
+ variables: { input },
8
+ });
9
+ this.notification.success(
10
+ this.intl.t("caluma.analytics.notification.field-saved")
11
+ );
12
+ return mutation;
13
+ } catch (error) {
14
+ console.error(error);
15
+ this.notification.danger(
16
+ this.intl.t("caluma.analytics.notification.create-error")
17
+ );
18
+ }
19
+ }
@@ -0,0 +1,8 @@
1
+ {{#if this.data.isRunning}}
2
+ <div class="uk-text-center">
3
+ <UkSpinner @ratio={{1}} />
4
+ </div>
5
+ {{else}}
6
+ <CaFieldForm @analyticsTable={{this.data.value}} />
7
+ <CaFieldSelectorList @analyticsTable={{this.data.value}} />
8
+ {{/if}}
@@ -0,0 +1 @@
1
+ <CaReportPreview @slug={{@model}} />
@@ -0,0 +1,51 @@
1
+ {{#if this.data.isRunning}}
2
+ <div class="uk-text-center">
3
+ <UkSpinner @ratio={{1}} />
4
+ </div>
5
+ {{else}}
6
+ {{#if this.data.hasError}}
7
+ <div uk-alert class="uk-flex uk-flex-between uk-flex-middle">
8
+ <h3 class="uk-flex uk-flex-middle uk-margin-remove">
9
+ <UkIcon @icon="search" @ratio="1.5" />
10
+ <span class="uk-margin-small-left">{{t
11
+ "caluma.analytics.notification.fetch-error"
12
+ }}</span>
13
+ </h3>
14
+
15
+ <span>
16
+ <LinkTo @route="reports" class="uk-button uk-button-primary">
17
+ {{t "caluma.analytics.back"}}
18
+ </LinkTo>
19
+ </span>
20
+ </div>
21
+ {{else}}
22
+ <div class="uk-flex uk-flex-between uk-flex-middle">
23
+ <h2>{{t
24
+ "caluma.analytics.sections.show-report"
25
+ slug=this.data.value.slug
26
+ }}</h2>
27
+ <button
28
+ type="button"
29
+ class="uk-icon-button"
30
+ uk-icon="trash"
31
+ {{on "click" (perform this.deleteTable)}}
32
+ name={{t "caluma.analytics.report.delete"}}
33
+ >
34
+ <span hidden>{{t "caluma.analytics.report.delete"}}</span>
35
+ </button>
36
+ </div>
37
+ <ul uk-tab>
38
+ <li class={{if (eq this.currentRoute "index") "uk-active"}}>
39
+ <LinkTo @route="reports.edit.index">
40
+ {{t "caluma.analytics.sections.fields"}}
41
+ </LinkTo>
42
+ </li>
43
+ <li class={{if (eq this.currentRoute "preview") "uk-active"}}>
44
+ <LinkTo @route="reports.edit.preview">
45
+ {{t "caluma.analytics.sections.table"}}
46
+ </LinkTo>
47
+ </li>
48
+ </ul>
49
+ {{outlet}}
50
+ {{/if}}
51
+ {{/if}}
@@ -0,0 +1,4 @@
1
+ <UkButton class="uk-align-right" {{on "click" this.createTable}}>
2
+ {{t "caluma.analytics.report.new"}}
3
+ </UkButton>
4
+ <CaReportList @reports={{@model}} />
@@ -0,0 +1,2 @@
1
+ <h2>{{t "caluma.analytics.sections.create-report"}}</h2>
2
+ <CaReportBuilder @analyticsTable={{@model}} />
@@ -0,0 +1,6 @@
1
+ import { validatePresence } from "ember-changeset-validations/validators";
2
+
3
+ export default {
4
+ name: validatePresence(true),
5
+ startingObject: validatePresence(true),
6
+ };
@@ -0,0 +1,14 @@
1
+ import {
2
+ validatePresence,
3
+ validateLength,
4
+ validateFormat,
5
+ } from "ember-changeset-validations/validators";
6
+
7
+ export default {
8
+ alias: [
9
+ validatePresence(true),
10
+ validateLength({ min: 1, max: 100 }),
11
+ validateFormat({ regex: /[\w\d\s]*/ }),
12
+ ],
13
+ dataSource: [validatePresence(true), validateLength({ max: 1024 })],
14
+ };
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-field-form";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-field-select";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-field-selector-list/ca-field-alias-input";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-field-selector-list/ca-field-function-select";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-field-selector-list";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-filter-modal";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-report-builder";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-report-list";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-report-preview";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/components/ca-toggle-switch";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/controllers/reports/edit/index";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/controllers/reports/edit";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/controllers/reports/index";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/routes/reports/edit/index";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/routes/reports/edit/preview";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/routes/reports/edit";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/routes/reports/index";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/routes/reports/new";
@@ -0,0 +1 @@
1
+ @import "../ca-uikit-powerselect";
@@ -0,0 +1,2 @@
1
+ @import "@projectcaluma/ember-core";
2
+ @import "ember-power-select";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/templates/reports/edit/index";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/templates/reports/edit/preview";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/templates/reports/edit";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/templates/reports/index";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-analytics/templates/reports/new";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ module.exports = {
4
+ normalizeEntityName() {},
5
+
6
+ afterInstall() {
7
+ return this.addAddonsToProject({
8
+ packages: [
9
+ { name: "@projectcaluma/ember-core" },
10
+ { name: "ember-cli-showdown" },
11
+ { name: "ember-composable-helpers" },
12
+ { name: "ember-math-helpers" },
13
+ { name: "ember-pikaday" },
14
+ { name: "ember-power-select" },
15
+ ],
16
+ });
17
+ },
18
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ module.exports = function (environment) {
4
+ return {
5
+ modulePrefix: require("../package.json").name,
6
+ environment,
7
+
8
+ "ember-validated-form": {
9
+ theme: "uikit",
10
+ },
11
+
12
+ analytics: {
13
+ functionChoices: ["VALUE", "SUM", "COUNT", "AVG", "MAX", "MIN"],
14
+ },
15
+ };
16
+ };
package/index.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ //eslint-disable-next-line node/no-unpublished-require
3
+ const { buildEngine } = require("ember-engines/lib/engine-addon");
4
+
5
+ module.exports = buildEngine({
6
+ name: require("./package").name,
7
+ lazyLoading: {
8
+ enabled: false,
9
+ },
10
+ include(...args) {
11
+ this._super.included.apply(this, args);
12
+ },
13
+ });
package/package.json ADDED
@@ -0,0 +1,90 @@
1
+ {
2
+ "name": "@projectcaluma/ember-analytics",
3
+ "version": "1.0.0-beta.1",
4
+ "description": "Ember addon for Caluma analytics.",
5
+ "keywords": [
6
+ "ember-addon",
7
+ "ember-engine"
8
+ ],
9
+ "license": "LGPL-3.0-or-later",
10
+ "homepage": "https://docs.caluma.io/ember-caluma",
11
+ "repository": "github:projectcaluma/ember-caluma",
12
+ "scripts": {
13
+ "test": "npm-run-all test:*",
14
+ "test:ember": "ember test",
15
+ "test:ember-compatibility": "ember try:each"
16
+ },
17
+ "dependencies": {
18
+ "@projectcaluma/ember-core": "^11.0.0-beta.8",
19
+ "ember-apollo-client": "^4.0.2",
20
+ "ember-auto-import": "^2.4.2",
21
+ "ember-cli-babel": "^7.26.11",
22
+ "ember-cli-htmlbars": "^6.0.1",
23
+ "ember-composable-helpers": "^5.0.0",
24
+ "ember-concurrency": "^2.2.1",
25
+ "ember-engines-router-service": "^0.3.0",
26
+ "ember-fetch": "^8.0.4",
27
+ "ember-intl": "^5.7.0",
28
+ "ember-power-select": "5.0.4",
29
+ "ember-resources": "^5.0.1",
30
+ "ember-uikit": "^5.0.0",
31
+ "ember-validated-form": "^5.3.0",
32
+ "graphql": "^15.6.1"
33
+ },
34
+ "//": [
35
+ "TODO: remove obsolete dependency to `ember-data` which is only necessary",
36
+ "because @embroider/macros `dependencySatisfies` still resolves to `true`",
37
+ "even if the dependency is only present in the workspace (because of the",
38
+ "docs app) but not as direct dependency of the package."
39
+ ],
40
+ "devDependencies": {
41
+ "@ember/optional-features": "2.0.0",
42
+ "@ember/test-helpers": "2.8.1",
43
+ "@embroider/test-setup": "1.8.3",
44
+ "@glimmer/component": "1.1.2",
45
+ "@glimmer/tracking": "1.1.2",
46
+ "@projectcaluma/ember-testing": "^11.0.0-beta.9",
47
+ "broccoli-asset-rev": "3.0.0",
48
+ "ember-changeset": "^4.1.0",
49
+ "ember-changeset-validations": "^4.1.0",
50
+ "ember-cli": "3.28.5",
51
+ "ember-cli-code-coverage": "1.0.3",
52
+ "ember-cli-dependency-checker": "3.3.1",
53
+ "ember-cli-inject-live-reload": "2.1.0",
54
+ "ember-cli-mirage": "3.0.0-alpha.3",
55
+ "ember-cli-sass": "^11.0.1",
56
+ "ember-cli-sri": "2.1.1",
57
+ "ember-cli-terser": "4.0.2",
58
+ "ember-data": "3.28.10",
59
+ "ember-disable-prototype-extensions": "1.1.3",
60
+ "ember-engines": "^0.8.22",
61
+ "ember-export-application-global": "2.0.1",
62
+ "ember-load-initializers": "2.1.2",
63
+ "ember-maybe-import-regenerator": "1.0.0",
64
+ "ember-page-title": "7.0.0",
65
+ "ember-qunit": "5.1.5",
66
+ "ember-resolver": "8.0.3",
67
+ "ember-source": "3.28.9",
68
+ "ember-source-channel-url": "3.0.0",
69
+ "ember-try": "2.0.0",
70
+ "faker": "5.5.3",
71
+ "loader.js": "4.7.0",
72
+ "npm-run-all": "4.1.5",
73
+ "qunit": "2.19.1",
74
+ "qunit-dom": "2.0.0",
75
+ "sass": "^1.51.0",
76
+ "webpack": "5.73.0"
77
+ },
78
+ "peerDependency": {
79
+ "ember-engines": ">= 0.8"
80
+ },
81
+ "engines": {
82
+ "node": "12.* || 14.* || >= 16"
83
+ },
84
+ "ember": {
85
+ "edition": "octane"
86
+ },
87
+ "ember-addon": {
88
+ "configPath": "tests/dummy/config"
89
+ }
90
+ }
@@ -0,0 +1,44 @@
1
+ caluma:
2
+ analytics:
3
+ back: Zurück zur Liste
4
+ cancel: Abbrechen
5
+ save: Speichern
6
+ sections:
7
+ show-report: Auswertung {slug}
8
+ create-report: Auswertung erstellen
9
+ table: Resultate
10
+ fields: Felder
11
+ notification:
12
+ alias-exists: Alias existiert bereits!
13
+ field-invalid: Die Angaben zum Feld sind fehlerhaft.
14
+ delete-error: Beim Löschen ist ein Fehler aufgetreten.
15
+ create-error: Beim Erstellen ist ein Fehler aufgetreten.
16
+ fetch-error: Beim Laden der Daten ist ein Fehler aufgetreten.
17
+ filter-exists: Filter existiert bereits!!
18
+ field-saved: Feld gespeichert..
19
+ list:
20
+ list-title: Liste aller Auswertungen
21
+ edit: Bearbeiten
22
+ report:
23
+ new: Neue Auswertung anlegen
24
+ starting-object: Ausgangspunkt
25
+ title: Auswertungsname
26
+ delete: Auswertung löschen
27
+ edit:
28
+ field: Feld
29
+ add-field: Feld hinzufügen
30
+ delete-field: Feld löschen
31
+ question: Frage
32
+ display-title: Anzeigename
33
+ display-title-placeholder: Anzeigename...
34
+ aggregation: Aggregation
35
+ show-in-output: In Ausgabe anzeigen
36
+ filter: Filter
37
+ add-filters: Filter hinzufügen
38
+ edit-filters: "{num} Filter bearbeiten"
39
+ empty: Keine erfassten Felder
40
+ filter-modal:
41
+ filters: Filter
42
+ filter-placeholder: Filter...
43
+ delete-filter: Filter löschen
44
+ empty: Keine erfassten Filter
@@ -0,0 +1,44 @@
1
+ caluma:
2
+ analytics:
3
+ back: Back to the list
4
+ cancel: Cancel
5
+ save: Save
6
+ sections:
7
+ show-report: Report {slug}
8
+ create-report: Create report
9
+ table: Result table
10
+ fields: Fields
11
+ notification:
12
+ alias-exists: Alias already exists!
13
+ field-invalid: Please fix invalid field inputs.
14
+ delete-error: An error occurred while deleting.
15
+ create-error: An error occurred while saving.
16
+ fetch-error: An error occurred while loading the data.
17
+ filter-exists: Filter already exists!
18
+ field-saved: Field successfully saved.
19
+ list:
20
+ list-title: All reports
21
+ edit: Edit
22
+ report:
23
+ new: Create new report
24
+ starting-object: Starting point
25
+ title: Report title
26
+ delete: Delete report
27
+ edit:
28
+ field: Field
29
+ add-field: Add field
30
+ delete-field: Delete field
31
+ question: Question
32
+ display-title: Display Title
33
+ display-title-placeholder: Display Title
34
+ aggregation: Aggregation
35
+ show-in-output: Show in output
36
+ filter: Filter
37
+ add-filters: Add filters
38
+ edit-filters: Edit {num} filters
39
+ empty: There are no fields
40
+ filter-modal:
41
+ filters: Filter
42
+ filter-placeholder: Filter...
43
+ delete-filter: Delete filter
44
+ empty: There are no filters
@@ -0,0 +1,44 @@
1
+ caluma:
2
+ analytics:
3
+ back: Retour à la liste
4
+ cancel: Annuler
5
+ save: Enregistrer
6
+ sections:
7
+ show-report: Rapport {slug}
8
+ create-report: Créer un rapport
9
+ table: Table de résultats
10
+ fields: Champs
11
+ notification:
12
+ alias-exists: "L'alias existe déjà!"
13
+ field-invalid: Veuillez corriger les entrées de champs invalides.
14
+ delete-error: "Une erreur s'est produite lors de la suppression du rapport."
15
+ create-error: "Une erreur s'est produite lors de la création du rapport."
16
+ fetch-error: "Une erreur s'est produite lors du chargement des données."
17
+ filter-exists: "Le filtre existe déjà!"
18
+ field-saved: Le champ a été sauvegardé avec succès.
19
+ list:
20
+ list-title: Tous les rapports
21
+ edit: Editer
22
+ report:
23
+ new: Créer un nouveau rapport
24
+ starting-object: Point de départ
25
+ title: Titre du rapport
26
+ delete: Supprimer le rapport
27
+ edit:
28
+ field: Champ
29
+ add-field: Ajouter un champ
30
+ delete-field: Supprimer un champ
31
+ question: Question
32
+ display-title: Afficher le titre
33
+ display-title-placeholder: Afficher le titre
34
+ aggregation: Agrégation
35
+ show-in-output: Afficher dans la sortie
36
+ filter: Filtre
37
+ add-filters: Ajouter des filtres
38
+ edit-filters: Modifier {num} de filtres
39
+ empty: "Il n'y a pas de champs"
40
+ filter-modal:
41
+ filters: Filtrer
42
+ filter-placeholder: Filtre...
43
+ delete-filter: Supprimer le filtre
44
+ empty: "Il n'y a pas de filtre"