From 55d53f9439d176374a3d2e96899b0e9dc6cae3c4 Mon Sep 17 00:00:00 2001 From: Saber Mahjoub Date: Wed, 1 Jul 2026 11:56:24 +0200 Subject: [PATCH 01/23] Fixed the nav-bar styling --- .../gestion-projets.component.html | 3 - .../gestion-ressources.component.html | 70 ++-- .../gestion-ressources.component.scss | 350 +++++++++++++++++- .../gestion-sources.component.html | 8 +- .../components/nav-bar/nav-bar.component.html | 1 + .../components/nav-bar/nav-bar.component.scss | 0 .../nav-bar.component.spec.ts} | 12 +- .../components/nav-bar/nav-bar.component.ts | 11 + .../archive_khaoula/store/lock/process | 1 - .../archive_khaoula/store/triples-posc.dat | Bin 497661 -> 497661 bytes .../archive_khaoula/store/triples-spoc.dat | Bin 442365 -> 442365 bytes .../archive_khaoula/store/txncache.dat | Bin 0 -> 16 bytes .../projects/archive_khaoula/store/values.dat | Bin 519653 -> 519782 bytes .../archive_khaoula/store/values.hash | Bin 139756 -> 139756 bytes .../projects/archive_khaoula/store/values.id | Bin 54616 -> 54640 bytes 15 files changed, 383 insertions(+), 73 deletions(-) create mode 100644 Frontend/src/app/components/nav-bar/nav-bar.component.html rename RDF_Back/projects/archive_khaoula/store/lock/locked => Frontend/src/app/components/nav-bar/nav-bar.component.scss (100%) rename Frontend/src/app/components/{gestion-sources/gestion-sources.component.spec.ts => nav-bar/nav-bar.component.spec.ts} (50%) create mode 100644 Frontend/src/app/components/nav-bar/nav-bar.component.ts delete mode 100644 RDF_Back/projects/archive_khaoula/store/lock/process diff --git a/Frontend/src/app/components/gestion-projets/gestion-projets.component.html b/Frontend/src/app/components/gestion-projets/gestion-projets.component.html index 0542c5fa..554d7170 100644 --- a/Frontend/src/app/components/gestion-projets/gestion-projets.component.html +++ b/Frontend/src/app/components/gestion-projets/gestion-projets.component.html @@ -6,9 +6,6 @@ HEADER ══════════════════════════════════════════════════════════ -->
-
diff --git a/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.html b/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.html index 40fdf15a..21c48377 100644 --- a/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.html +++ b/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.html @@ -2,6 +2,7 @@
+
@@ -12,6 +13,7 @@
+

{{ projectName }} @@ -27,68 +29,38 @@

RDF Entity Management System

- -
- - + +
+ +
diff --git a/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.scss b/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.scss index 27887aba..93be968c 100644 --- a/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.scss +++ b/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.scss @@ -1,14 +1,344 @@ -@import 'tailwindcss'; -@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600;700;800&display=swap'); +// src/app/components/gestion-sources/gestion-sources.component.scss -* { - margin: 0; - padding: 0; - box-sizing: border-box; +// Animations +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } } -body { - font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; +@keyframes slide-in { + from { + transform: translateX(100%); + opacity: 0; + } + to { + transform: translateX(0); + opacity: 1; + } +} + +@keyframes slide-down { + from { + transform: translateY(-10px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } +} + +// Utility classes +.animate-fade-in { + animation: fade-in 0.3s ease-in-out; +} + +.animate-slide-in { + animation: slide-in 0.3s ease-out; +} + +// Snackbar styles +::ng-deep { + .snackbar-success { + background: #10b981 !important; + color: white !important; + } + + .snackbar-error { + background: #ef4444 !important; + color: white !important; + } + + .snackbar-warning { + background: #f59e0b !important; + color: white !important; + } + + .snackbar-info { + background: #3b82f6 !important; + color: white !important; + } +} + +// Custom scrollbar +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: #f1f5f9; +} + +::-webkit-scrollbar-thumb { + background: #cbd5e1; + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: #94a3b8; +} + +// Hover effects for table rows +tr.group:hover { + .opacity-0 { + opacity: 1; + } +} + +// Responsive adjustments +@media (max-width: 768px) { + .hidden-mobile { + display: none; + } +} + +.filter-container { + position: relative; + + .filter-button.active { + background-color: rgba(63, 81, 181, 0.1); + color: #3f51b5; + } +} + +.filter-menu { + position: absolute; + top: 50px; + right: 0; + background: white; + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + padding: 16px; + min-width: 300px; + z-index: 1000; + + .filter-section { + margin-bottom: 16px; + + h4 { + font-size: 12px; + font-weight: 600; + text-transform: uppercase; + color: #666; + margin: 0 0 8px 0; + } + + .filter-options { + display: flex; + flex-wrap: wrap; + gap: 8px; + + button { + font-size: 13px; + padding: 6px 12px; + border: 1px solid #ddd; + border-radius: 4px; + background: white; + transition: all 0.2s; + + &.active { + background-color: #3f51b5; + color: white; + border-color: #3f51b5; + } + + &:hover:not(.active) { + background-color: #f5f5f5; + } + } + } + + .search-field { + width: 100%; + margin-top: 8px; + } + } + + .filter-actions { + border-top: 1px solid #eee; + padding-top: 12px; + text-align: right; + + button { + color: #666; + font-size: 13px; + } + } +} + +// ===== 2. DIALOGUE STATISTIQUES ===== +.stats-dialog-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; + z-index: 2000; + animation: fadeIn 0.2s; +} + +.stats-dialog { + background: white; + border-radius: 12px; + padding: 24px; + max-width: 600px; + width: 90%; + max-height: 80vh; + overflow-y: auto; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); + animation: slideUp 0.3s; + + .stats-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; + padding-bottom: 16px; + border-bottom: 2px solid #f0f0f0; + + h2 { + margin: 0; + font-size: 24px; + font-weight: 600; + color: #333; + } + } + + .stats-content { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 16px; + } + + .stat-card { + background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); + border-radius: 12px; + padding: 20px; + display: flex; + align-items: center; + gap: 16px; + transition: transform 0.2s; + + &:hover { + transform: translateY(-4px); + } + + &.full-width { + grid-column: 1 / -1; + } + + .stat-icon { + width: 48px; + height: 48px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + background: white; + color: #3f51b5; + + &.internal { + background: #e3f2fd; + color: #1976d2; + } + + &.external { + background: #f3e5f5; + color: #7b1fa2; + } + + &.editable { + background: #e8f5e9; + color: #388e3c; + } + + &.readonly { + background: #ffebee; + color: #d32f2f; + } + + &.tools { + background: #fff3e0; + color: #f57c00; + } + + mat-icon { + font-size: 28px; + width: 28px; + height: 28px; + } + } + + .stat-info { + flex: 1; + + .stat-value { + font-size: 32px; + font-weight: 700; + color: #333; + line-height: 1; + margin-bottom: 4px; + } + + .stat-label { + font-size: 13px; + color: #666; + text-transform: uppercase; + letter-spacing: 0.5px; + } + + .tools-list { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin-top: 8px; + + .tool-chip { + background: white; + padding: 4px 12px; + border-radius: 16px; + font-size: 12px; + font-weight: 500; + color: #333; + } + } + } + } +} + +// ===== 3. ANIMATIONS ===== +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes slideUp { + from { + transform: translateY(20px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } +} + +// ===== 4. BOUTONS ACTIFS ===== +.stats-button, .filter-button, .export-button { + &:hover { + background-color: rgba(63, 81, 181, 0.08); + } } \ No newline at end of file diff --git a/Frontend/src/app/components/gestion-sources/gestion-sources.component.html b/Frontend/src/app/components/gestion-sources/gestion-sources.component.html index 2f33e251..f074ad4c 100644 --- a/Frontend/src/app/components/gestion-sources/gestion-sources.component.html +++ b/Frontend/src/app/components/gestion-sources/gestion-sources.component.html @@ -17,18 +17,18 @@

RDF Data Sources Managem
- + Projects +
-
- - -
+ @if(data === null){ +
+ + +
- -
- - -

Types are fetched from the RDF graph base.

-
+ +
+ + +

Types are fetched from the RDF graph base.

+
- -
+ +
- -
- -
- - + +
+ +
+ + +
-
- -
- -
- - / - + +
+ +
+ + / + +
+

+ Resolved URI: {{ resolvedTypeUri }} +

+
+ + +
+ + +

Enter the complete, fully qualified URI for this type.

-

- Resolved URI: {{ resolvedTypeUri }} -

-
- -
- - -

Enter the complete, fully qualified URI for this type.

-
+
+ Entity type is required. +
+ } + @else { +
+ + +

+ {{ availableTypes }} +

+
-
- Entity type is required. -
+ }
@@ -179,7 +194,7 @@ + aria-label="Search entities"> -
-

Aucun résultat trouvé

-

Essayez de modifier vos critères de recherche ou de supprimer les filtres.

+

No results found

+

Try adjusting your search criteria or clearing the filters.

diff --git a/Frontend/src/app/components/liste-entites/liste-entites.component.ts b/Frontend/src/app/components/liste-entites/liste-entites.component.ts index 64219d20..3eed6bfd 100644 --- a/Frontend/src/app/components/liste-entites/liste-entites.component.ts +++ b/Frontend/src/app/components/liste-entites/liste-entites.component.ts @@ -28,7 +28,7 @@ export class ListeEntitesComponent { constructor(private dialog: MatDialog) {} - openCreateRessourceDialog() { + openCreateEntityDialog_withType() { if (!this.selectedType) return; const [ontology, type] = this.selectedType.split(':'); @@ -41,6 +41,16 @@ export class ListeEntitesComponent { } }); } + openCreateEntityDialog_withoutType() { + if (!this.selectedType) return; + + const [ontology, type] = this.selectedType.split(':'); + + this.dialog.open(CreateRessourceComponent, { + width: '600px', + data: null + }); + } clearTypeFilter() { this.selectedType = null; diff --git a/Frontend/src/app/services/gestion-ressources.service.ts b/Frontend/src/app/services/gestion-ressources.service.ts index 34c46f56..79772813 100644 --- a/Frontend/src/app/services/gestion-ressources.service.ts +++ b/Frontend/src/app/services/gestion-ressources.service.ts @@ -134,6 +134,7 @@ export class GestionRessourcesService { }; return this.http.post(`${this.apiUrl}/select`, objt); } + // BIND(IRI(CONCAT("https://www.ica.org/standards/RiC/ontology#", "${type}")) AS ?selectedClass) getPredicatesByTypeRico(type: string): Observable { const objt = { diff --git a/RDF_Back/projects/archive_khaoula/store/triples-posc.dat b/RDF_Back/projects/archive_khaoula/store/triples-posc.dat index eb66e196a85d4d760dd44165ddea0c8b15855026..2ee072876907958743fdc9ab1becf795f513b78e 100644 GIT binary patch delta 41 rcmeynUheODxrP?TEle5-jGNju6PSRQ8Hibcm=%cGwreJ^Uoi&&OtTI_ delta 41 rcmeynUheODxrP?TEle5-jBDF96PSRQ8Hibcm=%cGwreJ^Uoi&&Oe_vO diff --git a/RDF_Back/projects/archive_khaoula/store/triples-spoc.dat b/RDF_Back/projects/archive_khaoula/store/triples-spoc.dat index 98228b10f43003f77ea1dbebc1910fe42284ee05..b7d99891b62570a9c5a42e19d1788d3b8f6bea27 100644 GIT binary patch delta 40 qcmezSU+V9FsSQCKjGLN+Iog9c7=f4xh?#+y1&CR<2XnBk+719kgAKX> delta 40 qcmezSU+V9FsSQCKjBA^NIog9c7=f4xh?#+y1&CR<2XnBk+719j?G3d6 diff --git a/RDF_Back/projects/archive_khaoula/store/values.dat b/RDF_Back/projects/archive_khaoula/store/values.dat index e64470cd1d6aa0f421f5a86417fb32fbc22f2f6b..ee7c7b7dc7e954bed8b6fc8abb38df4c28976585 100644 GIT binary patch delta 157 zcmXxcu?@m75Jq7INL&&L0R=_q5!U^-FBjh&nSnVdyg`aALdhtI5{V{)4TuY**L~7^ zJ(~Noxuzm5(lV`5nW~$)Orv?5dLw5-57sajEqexrPq815ld0BG9h8FQP9Pq`x7cMU oYe&jagIGq(h>~SHuUwCy8QG%iT0zKi_=}&#TXI6+a3ZHfKOsFSQvd(} delta 23 ecmdmUPyX2*`Gyw87N!>F7M2#)7Pc+yY3~4f>Iqi> diff --git a/RDF_Back/projects/archive_khaoula/store/values.hash b/RDF_Back/projects/archive_khaoula/store/values.hash index e6b71120f7c43ddc630cb8bf0c20d94d3f1fc943..a0fa9f636b490a00b7ece4583eba8e3890ac3019 100644 GIT binary patch delta 111 zcmaEJm}A2c4uQOkG)4vn4hA3q5>lHs3h>l$uoOC826EPIR;dYKb%=Rsx87=fUYNwZ;2a2qp Iyl{aH09Aq{0RR91 delta 75 zcmdmRgyYR&4uQOkG)4vn4hA3q5>jh73h>lSTp+R8q{e|2EDDm@T+?W019RnMF0Q* diff --git a/RDF_Back/projects/archive_khaoula/store/values.id b/RDF_Back/projects/archive_khaoula/store/values.id index 192d44a7445b01d069883824c77e74204643529f..3e0d59cacd791aa7494beb1fb5aac65ff5e48db6 100644 GIT binary patch delta 50 jcmeycih0Ir<_!f`H5fpE{aqTAo&cqHL+NJ_`n@0kYuyZU delta 9 QcmbQSn)$;j<_!f`0T+=3*#H0l diff --git a/RDF_Back/src/main/java/com/uspn/rdf_back/controllers/SparqlController.java b/RDF_Back/src/main/java/com/uspn/rdf_back/controllers/SparqlController.java index 79a20dd6..81ef8093 100644 --- a/RDF_Back/src/main/java/com/uspn/rdf_back/controllers/SparqlController.java +++ b/RDF_Back/src/main/java/com/uspn/rdf_back/controllers/SparqlController.java @@ -18,7 +18,9 @@ public SparqlController(SparqlService service) { @PostMapping("/select") public List> select(@RequestBody Map body) { - return service.select(body.get("query")); + String query = body.get("query"); + System.out.println("SPARQL QUERY:\n" + query); + return service.select(query); } @PostMapping("/update") From 5dfdbb0885a8b5089c00463011b991f02b81923e Mon Sep 17 00:00:00 2001 From: Saber Mahjoub Date: Fri, 3 Jul 2026 01:12:41 +0200 Subject: [PATCH 03/23] Added a nested interface to create a new entity from the main entity creation interface --- .../create-ressource.component.html | 41 +++++++---- .../create-ressource.component.ts | 67 ++++++++++++------ .../liste-entites/liste-entites.component.ts | 5 +- .../projects/archive/store/triples-posc.dat | Bin 491517 -> 491517 bytes .../projects/archive/store/triples-spoc.dat | Bin 434173 -> 434173 bytes RDF_Back/projects/archive/store/values.dat | Bin 518320 -> 518363 bytes RDF_Back/projects/archive/store/values.hash | Bin 140164 -> 140164 bytes RDF_Back/projects/archive/store/values.id | Bin 54368 -> 54376 bytes .../archive_khaoula/store/lock/locked | 0 .../archive_khaoula/store/lock/process | 1 + .../archive_khaoula/store/triples-posc.dat | Bin 497661 -> 497661 bytes .../archive_khaoula/store/triples-spoc.dat | Bin 442365 -> 442365 bytes .../projects/archive_khaoula/store/values.dat | Bin 519996 -> 520039 bytes .../archive_khaoula/store/values.hash | Bin 139824 -> 139824 bytes .../projects/archive_khaoula/store/values.id | Bin 54680 -> 54688 bytes .../controllers/SparqlController.java | 2 +- 16 files changed, 79 insertions(+), 37 deletions(-) create mode 100644 RDF_Back/projects/archive_khaoula/store/lock/locked create mode 100644 RDF_Back/projects/archive_khaoula/store/lock/process diff --git a/Frontend/src/app/components/create-ressource/create-ressource.component.html b/Frontend/src/app/components/create-ressource/create-ressource.component.html index 36d7bea1..f32d5f41 100644 --- a/Frontend/src/app/components/create-ressource/create-ressource.component.html +++ b/Frontend/src/app/components/create-ressource/create-ressource.component.html @@ -10,7 +10,7 @@ - @if(data === null){ + @if(dialogData === null && inputData === undefined) {
+ + +
+ + +
diff --git a/Frontend/src/app/components/create-ressource/create-ressource.component.ts b/Frontend/src/app/components/create-ressource/create-ressource.component.ts index 3accc9c9..c644a752 100644 --- a/Frontend/src/app/components/create-ressource/create-ressource.component.ts +++ b/Frontend/src/app/components/create-ressource/create-ressource.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Inject } from '@angular/core'; +import { Component, OnInit, Inject, Input, Output, EventEmitter, Optional, ChangeDetectorRef, inject } from '@angular/core'; import { FormsModule, ReactiveFormsModule, FormBuilder, FormGroup, FormArray, Validators } from '@angular/forms'; import { CommonModule } from '@angular/common'; import { Entity } from '../../models/ressource'; @@ -9,7 +9,6 @@ import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar'; import { FileViewerComponent } from '../file-viewer/file-viewer.component'; import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog'; -import { ChangeDetectorRef } from '@angular/core'; export type OntologyLabels = Record; @@ -44,11 +43,8 @@ export class CreateRessourceComponent implements OnInit { properties: { key: string; value: string; kind: 'literal' | 'iri'; predicate: string }[] = []; - // entityPropertiesDict : any[] = []; - // When Entity is a media file // - isEntityMediaFile(): boolean { return this.newAssociation?.predicate?.p === 'https://www.ica.org/standards/RiC/ontology#identifier' ; } @@ -57,7 +53,7 @@ export class CreateRessourceComponent implements OnInit { this.newAssociation!.value = path; } - // + createSubEntity : boolean = false; allPredicatesByType: any[] = []; @@ -79,12 +75,24 @@ export class CreateRessourceComponent implements OnInit { ontologyList: { name: string; iri: string }[] = []; - constructor(@Inject(MAT_DIALOG_DATA) public data: any, + // Used only when opened as a dialog + public dialogData: any = inject(MAT_DIALOG_DATA, { optional: true }); + private dialogRef: MatDialogRef | null = inject(MatDialogRef, { optional: true }); + + // Used only when used as a child component tag + @Input() inputData: any; + + //let the parent know when created inline (no dialogRef to close) + @Output() closed = new EventEmitter(); + + // The single source of truth + public data: any; + + constructor( private fb: FormBuilder, private ontologyService: GestionRessourcesService, private snackBar : MatSnackBar, private cdr: ChangeDetectorRef, - private dialogRef: MatDialogRef ) { this.personForm = this.fb.group({ @@ -103,20 +111,35 @@ export class CreateRessourceComponent implements OnInit { } getFullEntityPath(entityType : string, ontologyName: string): string { - // console.log("FADDDDIT ", this.ontologyService.getTypeUrlByName(ontologyName) + entityType ); return ontologyName ? this.ontologyService.getTypeUrlByName(ontologyName) + entityType : ''; } + extractEntityTypeFromIRI(iri :string ) : string { + return iri.includes('#') + ? iri.substring(iri.lastIndexOf('#') + 1) + : iri.substring(iri.lastIndexOf('/') + 1); + } + ngOnInit(): void { - this.availableTypes = this.data?.type && this.data?.ontology - ? [this.ontologyService.getTypeUrlByName(this.data?.ontology)+this.data.type] - : []; - // this.availableTypes = [ - // this.ontologyService.getTypeUrlByName(this.data?.ontology) + this.data.type - // ]; + + if (!this.dialogData && this.inputData === undefined) { + this.getAllRicoEntities(); + } + + // else if (this.dialogData.type && this.dialogData.ontology || this.inputData.type && this.inputData.ontology ) { + else if (this.dialogData || this.inputData) { + + this.data = this.inputData ?? this.dialogData; + + console.log("RECEIVED DATA : ", this.data); + + this.availableTypes = this.data?.type && this.data?.ontology + ? [this.ontologyService.getTypeUrlByName(this.data?.ontology)+this.data.type] + : []; + } this.personForm.get('entityType')?.valueChanges .pipe(debounceTime(300)) @@ -138,15 +161,19 @@ export class CreateRessourceComponent implements OnInit { } }); - if (this.data?.type && this.data?.ontology) { + if (this.data) { // const fullType = this.ontologyService.getTypeUrlByName(this.data.ontology) + this.data.type; this.personForm.get('entityType')?.patchValue(this.data?.type, { emitEvent: true }); } - if(this.typeMode === 'rico' && !this.data?.type ) { - this.getAllRicoEntities(); - } + // if(this.typeMode === 'rico' && !this.data?.type ) { + // this.getAllRicoEntities(); + // } + + } + createSubEntityToggle() { + this.createSubEntity = true; } onPredicateChange(event: any) { @@ -292,7 +319,7 @@ export class CreateRessourceComponent implements OnInit { cancelNewPerson() { this.personForm.reset(); - this.dialogRef.close(); + this.dialogRef?.close(); } saveNewPerson() { diff --git a/Frontend/src/app/components/liste-entites/liste-entites.component.ts b/Frontend/src/app/components/liste-entites/liste-entites.component.ts index 3eed6bfd..b8c51fcb 100644 --- a/Frontend/src/app/components/liste-entites/liste-entites.component.ts +++ b/Frontend/src/app/components/liste-entites/liste-entites.component.ts @@ -41,10 +41,11 @@ export class ListeEntitesComponent { } }); } + openCreateEntityDialog_withoutType() { - if (!this.selectedType) return; + // if (!this.selectedType) return; - const [ontology, type] = this.selectedType.split(':'); + // const [ontology, type] = this.selectedType.split(':'); this.dialog.open(CreateRessourceComponent, { width: '600px', diff --git a/RDF_Back/projects/archive/store/triples-posc.dat b/RDF_Back/projects/archive/store/triples-posc.dat index 4265f62116ecfbb844de904d85143ff68252b0bf..184c011122455670ff55639ea41160eafb17b50a 100644 GIT binary patch delta 31 ncmezSU-s{R*@hOz7N!>F7M2#)7Pc+y%WD~Xwy&sV4`l)XF7M2#)7Pc+y%WE0Cx38#W4`l)XrG_gE`n%O$PujFAVem delta 40 qcmeynU+V9EsSQCKjNQ$_9PPmzj6lo;#LPg<0>rG_gE`n%O$Puj5e)MH diff --git a/RDF_Back/projects/archive/store/values.dat b/RDF_Back/projects/archive/store/values.dat index afbf55e8133afe213e1408825f0c57dbff5516ca..bb76a3b5e42e752ebc5f6d4ac03c886c43f574c0 100644 GIT binary patch delta 55 zcmdmRQU3Nt`Gyw87N!>F7M2#)7Pc+y8(vISXA+P$*EKK-F*3F?GO{wU(6cZwH88L= L(Kax$GB5xD57`gZ delta 23 fcmcb8QGUZk`Gyw87N!>F7M2#)7Pc+y8(shacp3?8 diff --git a/RDF_Back/projects/archive/store/values.hash b/RDF_Back/projects/archive/store/values.hash index 76fc7cede1b48e690ffb797e1f1fa06919fd103d..7b4cd59d48451f46ec06ea1aa17bac9f3275527a 100644 GIT binary patch delta 56 zcmZoU&e3w5Lm)3Bjgf(Yg8>MDgjCN)fe)_)zE8Sc0^-=%HUnvKt%;2?%{s5Q>%3-+ GumAwm9ucbm delta 56 zcmZoU&e3w5Lm)3Bjgf(Yg8>MDgjDxNfe)_)Ks*qzv28A4U=Y`u*eKJi^Lo3^YsLr* E0D4FcEC2ui diff --git a/RDF_Back/projects/archive/store/values.id b/RDF_Back/projects/archive/store/values.id index 40514f13422bd575c7ad519612a55ac6e3afa6d1..a7570b171296159516370f833a118bd2983d4eee 100644 GIT binary patch delta 18 XcmaE`g89V?<_!r~I2b^H{lx|VNuCC( delta 9 QcmaE{g89J;<_!r~02#go0{{R3 diff --git a/RDF_Back/projects/archive_khaoula/store/lock/locked b/RDF_Back/projects/archive_khaoula/store/lock/locked new file mode 100644 index 00000000..e69de29b diff --git a/RDF_Back/projects/archive_khaoula/store/lock/process b/RDF_Back/projects/archive_khaoula/store/lock/process new file mode 100644 index 00000000..c401d2aa --- /dev/null +++ b/RDF_Back/projects/archive_khaoula/store/lock/process @@ -0,0 +1 @@ +24680@LAPTOP-6K16SHPP \ No newline at end of file diff --git a/RDF_Back/projects/archive_khaoula/store/triples-posc.dat b/RDF_Back/projects/archive_khaoula/store/triples-posc.dat index 2ee072876907958743fdc9ab1becf795f513b78e..9c04a7722d5ceb7f1fdc77e8815f3cd81a09f408 100644 GIT binary patch delta 41 rcmeynUheODxrP?TEle5-j9c0@6PSRQ8Hibcm=%cGwreJ^Uoi&&Oz93o delta 41 rcmeynUheODxrP?TEle5-jGNju6PSRQ8Hibcm=%cGwreJ^Uoi&&OtTI_ diff --git a/RDF_Back/projects/archive_khaoula/store/triples-spoc.dat b/RDF_Back/projects/archive_khaoula/store/triples-spoc.dat index b7d99891b62570a9c5a42e19d1788d3b8f6bea27..e12e8a8783a64708206eafcefd3f341d677495ad 100644 GIT binary patch delta 40 qcmezSU+V9FsSQCKj9Z$6Iog9c7=f4xh?#+y1&CR<2XnBk+719kzYV+q delta 40 qcmezSU+V9FsSQCKjGLN+Iog9c7=f4xh?#+y1&CR<2XnBk+719kgAKX> diff --git a/RDF_Back/projects/archive_khaoula/store/values.dat b/RDF_Back/projects/archive_khaoula/store/values.dat index ee7c7b7dc7e954bed8b6fc8abb38df4c28976585..389e30f6741a69c9ba0d3ab0a49abb9e6f92ea92 100644 GIT binary patch delta 55 zcmdmUPyYEm`Gyw87N!>F7M2#)7Pc+yHt#2YXB3b&*EKK-F*LO@F|abW&@;C%HZe0Y L(>5@&GB5xDB{~pu delta 23 ecmaEUPkzrm`Gyw87N!>F7M2#)7Pc+yHtzv@QVB5t diff --git a/RDF_Back/projects/archive_khaoula/store/values.hash b/RDF_Back/projects/archive_khaoula/store/values.hash index a0fa9f636b490a00b7ece4583eba8e3890ac3019..7aeae7bea89df07a451a5a35abdd9b9f86315478 100644 GIT binary patch delta 59 zcmdmRgk!@I4uQOkG)4vn4hA3q5>i_>3RJw|Fm|i10&zA^cynVthsx_P0U&Sl#EB}~ Kr_5oT(+U6=PZQh# delta 44 ycmdmRgk!@I4uQOkG)4vn4hA3q5>lHs3RJwAI8kErf;T7DPn@W;eaalhIjsOc91xBG diff --git a/RDF_Back/projects/archive_khaoula/store/values.id b/RDF_Back/projects/archive_khaoula/store/values.id index 3e0d59cacd791aa7494beb1fb5aac65ff5e48db6..c9f801d3840b93be6a75825739d5d968460387c4 100644 GIT binary patch delta 18 XcmbQSnt8!$<_$Bhaxj1Z`+FMzLcay< delta 9 RcmZ3mnt8@*<_$Bh0ss~s1hN1C diff --git a/RDF_Back/src/main/java/com/uspn/rdf_back/controllers/SparqlController.java b/RDF_Back/src/main/java/com/uspn/rdf_back/controllers/SparqlController.java index 81ef8093..0902807b 100644 --- a/RDF_Back/src/main/java/com/uspn/rdf_back/controllers/SparqlController.java +++ b/RDF_Back/src/main/java/com/uspn/rdf_back/controllers/SparqlController.java @@ -19,7 +19,7 @@ public SparqlController(SparqlService service) { @PostMapping("/select") public List> select(@RequestBody Map body) { String query = body.get("query"); - System.out.println("SPARQL QUERY:\n" + query); +// System.out.println("SPARQL QUERY:\n" + query); return service.select(query); } From 46d67e53fda0ce2625a1f9f1a9046906e1ebb736 Mon Sep 17 00:00:00 2001 From: Saber Mahjoub Date: Fri, 3 Jul 2026 14:17:01 +0200 Subject: [PATCH 04/23] Fixed entity creation error --- .../create-ressource.component.ts | 3 ++- .../entity-details.component.ts | 6 +++--- .../archive_khaoula/store/contexts.dat | Bin 169 -> 169 bytes .../archive_khaoula/store/lock/process | 2 +- .../projects/archive_khaoula/store/values.dat | Bin 520039 -> 520081 bytes .../archive_khaoula/store/values.hash | Bin 139824 -> 139824 bytes .../projects/archive_khaoula/store/values.id | Bin 54688 -> 54696 bytes 7 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Frontend/src/app/components/create-ressource/create-ressource.component.ts b/Frontend/src/app/components/create-ressource/create-ressource.component.ts index c644a752..072c8027 100644 --- a/Frontend/src/app/components/create-ressource/create-ressource.component.ts +++ b/Frontend/src/app/components/create-ressource/create-ressource.component.ts @@ -326,7 +326,8 @@ export class CreateRessourceComponent implements OnInit { let type: string = ''; if (this.typeMode === 'rico') { - type = this.personForm.get('entityType')?.value; + type = this.getFullEntityPath(this.personForm.get('entityType')?.value, 'rico'); + } else { type = this.customSource === 'url' diff --git a/Frontend/src/app/components/entity-details/entity-details.component.ts b/Frontend/src/app/components/entity-details/entity-details.component.ts index 15d62334..13fe5700 100644 --- a/Frontend/src/app/components/entity-details/entity-details.component.ts +++ b/Frontend/src/app/components/entity-details/entity-details.component.ts @@ -181,12 +181,12 @@ export class EntityDetailsComponent implements OnInit, OnChanges { this.gestionRessourceService.deleteEntity(this.selectedEntity.entityKey).subscribe({ next: () => { this.snackBar.open( - `"${this.selectedEntity.titre}" was successfully deleted.`, + `Entity was successfully deleted.`, 'Close', { duration: 5000, - horizontalPosition: 'right', - verticalPosition: 'bottom', + horizontalPosition: 'center', + verticalPosition: 'top', panelClass: ['snackbar-success'] } ); diff --git a/RDF_Back/projects/archive_khaoula/store/contexts.dat b/RDF_Back/projects/archive_khaoula/store/contexts.dat index 67c441ca3b665e0c066daaf2069829465b348a60..a3ff4019e7b8d54572eeecc23470c520ee329c56 100644 GIT binary patch delta 11 ScmZ3F7M2#)7Pc+y>F=krzhoDXGS@XQ3NbRaGB&d^vDC9LFfp~T L)HX1(GB5xD9Lf+% delta 23 ecmbPuU;g<$`Gyw87N!>F7M2#)7Pc+y>F)t|UmT23S4+4Al;f6n^OJFbAjgbm`;9=6tsr9}xS4K< F0RUD>I{yFw delta 107 zcmdmRgk!@I4uQOkG)4vn4hA3q5>i_>3S4+KaRCR%n{Me61_th$$qN^FPu{RVcXP(; zh=_?3WwzgOW?UgPaiY%l4RMS Date: Fri, 3 Jul 2026 14:58:15 +0200 Subject: [PATCH 05/23] Refresh list of ranges when subentity is created in the entity creation form --- .../create-ressource.component.html | 5 ++++- .../create-ressource.component.ts | 8 ++++++++ .../archive_khaoula/store/contexts.dat | Bin 169 -> 169 bytes .../projects/archive_khaoula/store/values.dat | Bin 520081 -> 520377 bytes .../projects/archive_khaoula/store/values.id | Bin 54696 -> 54752 bytes 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Frontend/src/app/components/create-ressource/create-ressource.component.html b/Frontend/src/app/components/create-ressource/create-ressource.component.html index f32d5f41..0ca7f392 100644 --- a/Frontend/src/app/components/create-ressource/create-ressource.component.html +++ b/Frontend/src/app/components/create-ressource/create-ressource.component.html @@ -318,7 +318,10 @@
- +
_m?;5Ucp4Ro?3X5nG`-p>9cB#*Y! zAkLu~Hv4vV6MLccUO9z=Nzj_KqP`->Khovhee7@7^*H~RHs5sZ3z!9v G2lxWyzdbAf delta 23 fcmdn_P=4Zl`Gyw87N!>F7M2#)7Pc+y6W;>>bkhkj diff --git a/RDF_Back/projects/archive_khaoula/store/values.id b/RDF_Back/projects/archive_khaoula/store/values.id index 596ffccd3cd14f6fb4000390d3a1a4b6cec0609b..ec2274ab5fcb87a47f0aff934d8c7dfc1205757b 100644 GIT binary patch delta 66 ocmZ3nn)$(M<_#;ZS}=eB`}>JddJmNT0HHs~LTN83T?eK60a~OFxc~qF delta 9 RcmaE`nt8=)<_#;Z0st7^1rh)N From 078b34b92d795aadf87fdfeacac11f6b4ed992b7 Mon Sep 17 00:00:00 2001 From: Saber Mahjoub Date: Fri, 3 Jul 2026 23:09:51 +0200 Subject: [PATCH 06/23] Added fileViewer from entityDetails Component to view and edit media files --- .../entity-details.component.html | 32 ++++- .../entity-details.component.scss | 4 + .../entity-details.component.ts | 127 ++++++++++++------ .../file-viewer/file-viewer.component.html | 16 ++- .../file-viewer/file-viewer.component.ts | 39 +++++- .../projects/archive_2026/store/contexts.dat | Bin 0 -> 105 bytes .../archive_2026/store/namespaces.dat | Bin 0 -> 729 bytes .../projects/archive_2026/store/nativerdf.ver | 1 + .../archive_2026/store/triples-posc.alloc | Bin 0 -> 37 bytes .../archive_2026/store/triples-posc.dat | Bin 0 -> 497661 bytes .../archive_2026/store/triples-spoc.alloc | Bin 0 -> 37 bytes .../archive_2026/store/triples-spoc.dat | Bin 0 -> 446461 bytes .../projects/archive_2026/store/triples.prop | 4 + .../projects/archive_2026/store/txn-status | 0 .../projects/archive_2026/store/values.dat | Bin 0 -> 517817 bytes .../projects/archive_2026/store/values.hash | Bin 0 -> 139688 bytes .../projects/archive_2026/store/values.id | Bin 0 -> 54304 bytes .../archive_khaoula/store/contexts.dat | Bin 169 -> 169 bytes .../archive_khaoula/store/lock/process | 2 +- .../archive_khaoula/store/triples-posc.dat | Bin 497661 -> 497661 bytes .../archive_khaoula/store/triples-spoc.dat | Bin 442365 -> 442365 bytes .../projects/archive_khaoula/store/values.dat | Bin 520377 -> 521256 bytes .../archive_khaoula/store/values.hash | Bin 139824 -> 139824 bytes .../projects/archive_khaoula/store/values.id | Bin 54752 -> 54920 bytes .../my-project/store/triples-posc.dat | Bin 495613 -> 495613 bytes .../my-project/store/triples-spoc.dat | Bin 450557 -> 450557 bytes RDF_Back/projects/my-project/store/values.dat | Bin 525093 -> 525136 bytes .../projects/my-project/store/values.hash | Bin 139756 -> 139756 bytes RDF_Back/projects/my-project/store/values.id | Bin 56040 -> 56048 bytes 29 files changed, 167 insertions(+), 58 deletions(-) create mode 100644 RDF_Back/projects/archive_2026/store/contexts.dat create mode 100644 RDF_Back/projects/archive_2026/store/namespaces.dat create mode 100644 RDF_Back/projects/archive_2026/store/nativerdf.ver create mode 100644 RDF_Back/projects/archive_2026/store/triples-posc.alloc create mode 100644 RDF_Back/projects/archive_2026/store/triples-posc.dat create mode 100644 RDF_Back/projects/archive_2026/store/triples-spoc.alloc create mode 100644 RDF_Back/projects/archive_2026/store/triples-spoc.dat create mode 100644 RDF_Back/projects/archive_2026/store/triples.prop create mode 100644 RDF_Back/projects/archive_2026/store/txn-status create mode 100644 RDF_Back/projects/archive_2026/store/values.dat create mode 100644 RDF_Back/projects/archive_2026/store/values.hash create mode 100644 RDF_Back/projects/archive_2026/store/values.id diff --git a/Frontend/src/app/components/entity-details/entity-details.component.html b/Frontend/src/app/components/entity-details/entity-details.component.html index 334c4167..ec53dc62 100644 --- a/Frontend/src/app/components/entity-details/entity-details.component.html +++ b/Frontend/src/app/components/entity-details/entity-details.component.html @@ -62,12 +62,34 @@

{{ selectedEntity?.titre }}

-
diff --git a/Frontend/src/app/components/entity-details/entity-details.component.html b/Frontend/src/app/components/entity-details/entity-details.component.html index fa189baa..bb243983 100644 --- a/Frontend/src/app/components/entity-details/entity-details.component.html +++ b/Frontend/src/app/components/entity-details/entity-details.component.html @@ -168,7 +168,7 @@

{{ selectedEntity?.titre }}

- Ajouter une association + Add property
diff --git a/Frontend/src/app/components/entity-details/entity-details.component.ts b/Frontend/src/app/components/entity-details/entity-details.component.ts index d0996717..81542421 100644 --- a/Frontend/src/app/components/entity-details/entity-details.component.ts +++ b/Frontend/src/app/components/entity-details/entity-details.component.ts @@ -293,7 +293,7 @@ export class EntityDetailsComponent implements OnInit, OnChanges { }; } -confirmAddAssociation() { + confirmAddAssociation() { if (!this.newAssociation || !this.newAssociation.value) return; let fullPredicate: string; diff --git a/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.html b/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.html index 21c48377..5068ccb6 100644 --- a/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.html +++ b/Frontend/src/app/components/gestion-ressources/gestion-ressources.component.html @@ -67,7 +67,7 @@

-