ソースを参照

Aggiornata Scheda Persona

Alessia 2 年 前
コミット
ac0d541ef0
3 ファイル変更179 行追加133 行削除
  1. 20 35
      Persona.html
  2. 5 0
      css/place_people.css
  3. 154 98
      js/people.js

+ 20 - 35
Persona.html

@@ -141,13 +141,6 @@
 										<div class="col" id="genere"></div>
 									</div>
 
-									<div class="row mb-2" id="patronymic" style="display:none;">
-										<div class="col-sm-4">
-											<span class="label">Patronimico/Matronimico:</span>
-										</div>
-										<div class="col" id="patronimico"></div>
-									</div>
-
 									<div class="row mb-2" id="PlaceProvenence" style="display:none;">
 										<div class="col-sm-4">
 											<span class="label">Provenienza:</span>
@@ -238,13 +231,6 @@
 										<div class="col" id="luogo_morte"></div>
 									</div>
 
-									<div class="row mb-2" id="spouse" style="display:none;">
-										<div class="col-sm-4">
-											<span class="label">Coniuge:</span>
-										</div>
-										<div class="col" id="coniuge"></div>
-									</div>
-
 									<div class="row mb-2" id="honorific" style="display:none;">
 										<div class="col-sm-4">
 											<span class="label">Stato civile:</span>
@@ -315,6 +301,9 @@
 							</div>
 
 							<div class="d-flex justify-content-end" id="map_buttons">
+								<a href="#placeholder_eventi">
+									Eventi <i class="fas fa-arrow-down" aria-hidden="true"></i>
+								</a>
 								<a href="#placeholder_luoghi">
 									Luoghi <i class="fas fa-arrow-down" aria-hidden="true"></i>
 								</a>
@@ -328,6 +317,22 @@
 
 							<hr />
 
+							<div class="placeholder_container">
+								<div id="placeholder_eventi" class="row">
+									<h2 class="section_box col-12">
+										Eventi documentati della vita di <span id="nome0" class="font-italic PN"></span>
+									</h2>
+								</div>
+								
+								<div class="row">
+									<div id="res_events"class="col">
+
+									</div>
+									
+								</div>
+
+							</div>
+
 							<div class="placeholder_container">
 								<div id="placeholder_luoghi" class="row">
 									<h2 class="section_box col-12">
@@ -378,26 +383,6 @@
 							<div class="placeholder_container">
 								<div id="placeholder_documenti" class="row" id="references_documents">
 									<p class="section_box col-12">Documenti collegati a <span id="nome3" class="font-italic PN"></span></p>
-									
-									<div class="box_results col-12" id="documents">
-										<div class="inner_results container-fluid">
-                                          
-                                          	<!-- Scheda -->
-											<div id="myTab" class="tab"></div>
-                                          
-											<div class="row def_res">
-												<div class="col">
-													<b>Documenti associati a <span id="nome_au" class="PN"></span></b>
-												</div>
-												<div class="col num_res">
-													<span><span id="n_dc"></span> risultati</span>
-												</div>
-											</div>
-											<div class="row res_list">
-												<div class="container-fluid" id="written_documents"></div>
-											</div>
-										</div>
-									</div>
 
 									<div class="box_results col-12" id="sent">
 										<div class="inner_results container-fluid">
@@ -439,7 +424,7 @@
 										<div class="inner_results container-fluid">
 											<div class="row def_res">
 												<div class="col">
-													<b>Altri documenti con riferimento a <span id="nome_ass" class="PN"></span></b>
+													<b>Altri documenti associati a <span id="nome_ass" class="PN"></span></b>
 												</div>
 												<div class="col num_res">
 													<span><span id="n_ass"></span> risultati</span>

+ 5 - 0
css/place_people.css

@@ -220,6 +220,7 @@ a {
     background-color: transparent;
     text-decoration: none;
     font-weight: bold;
+    cursor: pointer;
 }
 
 .res_list {
@@ -501,4 +502,8 @@ text.source {
 .record_box {
   max-height: 300px;
   overflow: scroll;
+}
+
+#ev_thead {
+  font-weight: 600;
 }

+ 154 - 98
js/people.js

@@ -227,16 +227,24 @@ GROUP BY ?document ?label ?id ?role "
 
 queryOtherDoc = prefixes + " SELECT DISTINCT ?document ?label ?id (group_concat(distinct ?time_span ;separator='-') as ?time_span) \
 WHERE { \
-VALUES ?uri {<" + thisUrlParams.link + ">} \
-?uri rdf:type crm:E21_Person . \
+VALUES ?uri {<" + thisUrlParams.link + "> } \
+{?domain crm:P02_has_range ?uri . \
+?event crm:P01_has_domain ?domain . \
+?document crm:P92i_was_brought_into_existence_by ?event ; \
+crm:P1_is_identified_by ?uri_id ; \
+rdfs:label ?label . \
+?uri_id crm:P2_has_type 'Segnatura'; \
+rdfs:label ?id . \
+} UNION { \
 ?event crm:P67_refers_to ?uri . \
-{?document crm:P92i_was_brought_into_existence_by ?event ; \
+?document crm:P92i_was_brought_into_existence_by ?event ; \
 rdfs:label ?label ; \
 crm:P1_is_identified_by ?uri_id . \
 ?uri_id rdfs:label ?id ; \
-crm:P2_has_type 'Segnatura' . } \
-UNION \
-{?documentation crm:P67_refers_to ?uri ; \
+crm:P2_has_type 'Segnatura' . \
+} UNION { \
+?event crm:P67_refers_to ?uri . \
+?documentation crm:P67_refers_to ?uri ; \
 crm:P141_assigned ?card . \
 ?document crm:P46_is_composed_of ?card ; \
 rdfs:label ?label ; \
@@ -245,9 +253,8 @@ crm:P1_is_identified_by ?uri_id . \
 crm:P2_has_type 'Segnatura' . \
 } \
 OPTIONAL {?event crm:P4_has_time-span ?uri_time_span . \
-?uri_time_span rdfs:label ?time_span . } \
-} \
-GROUP BY ?document ?label ?id "
+?uri_time_span rdfs:label ?time_span} \
+} "
 
 queryOpere = prefixes + " SELECT DISTINCT ?subject ?label ?nct (group_concat(distinct ?time_span ;separator='-') as ?time_span) \
 WHERE {?subject rdf:type crm:E22_Man-Made_Object ; \
@@ -271,6 +278,26 @@ crm:P4_has_time-span ?uri_time_span . \
 ?uri_event_type rdfs:label ?event_type . \
 } "
 
+queryEventi = prefixes + " SELECT DISTINCT ?event_type ?role ?time_span ?place ?uri_place ?document ?uri_document \
+WHERE { \
+VALUES ?uri {<" + thisUrlParams.link + ">} \
+?domain crm:P02_has_range ?uri ; \
+crm:P14.1_in_the_role_of ?uri_role . \
+?uri_role rdfs:label ?role . \
+?event crm:P01_has_domain ?domain ; \
+crm:P2_has_type ?uri_event_type . \
+?uri_event_type rdfs:label ?event_type . \
+OPTIONAL {?event crm:P4_has_time-span ?uri_time_span . \
+?uri_time_span rdfs:label ?time_span .} \
+OPTIONAL {?event crm:P7_took_place_at ?uri_location . \
+?uri_location rdfs:label ?place . \
+OPTIONAL {?uri_place owl:sameAs ?uri_location . \
+?uri_place crm:P168_place_is_defined_by ?coords }} \
+?document_info crm:P70_documents ?event . \
+?uri_document crm:P128_carries ?document_info ; \
+rdfs:label ?document . \
+} "
+
 queryCompagnia = prefixes + " SELECT DISTINCT ?denomination ?occupation ?uri_sede ?uri_place ?sede \
 WHERE { \
 VALUES ?uri {<" + thisUrlParams.link + ">} \
@@ -287,8 +314,6 @@ OPTIONAL {?uri_sede owl:sameAs ?uri_place . \
 
 queryURL = prepareQueryURL(query);
 
-queryDoc = prepareQueryURL(queryDocuments);
-
 queryOt = prepareQueryURL(queryOtherDoc);
 
 queryOA = prepareQueryURL(queryOpere);
@@ -307,6 +332,8 @@ queryRelIn = prepareQueryURL(queryRelazioniInverse);
 
 queryCom = prepareQueryURL(queryCompagnia);
 
+queryEv = prepareQueryURL(queryEventi);
+
 response = $.ajax({
 
     url: query,
@@ -357,17 +384,8 @@ responseOt = $.ajax({
   error: function (e) {}
 });
 
-responseDoc = $.ajax({
 
-  url: queryDoc,
-  dataType: "json",
-  success: function (data){
-    handle_Documents(data);
-  },
-  error: function (e) {}
-});
-
-responseDoc = $.ajax({
+responseGet = $.ajax({
 
   url: queryGt,
   dataType: "json",
@@ -417,6 +435,16 @@ responseRel = $.ajax({
   error: function (e) {}
 });
 
+responseEv = $.ajax({
+
+  url: queryEv,
+  dataType: "json",
+  success: function (data){
+    handle_Events(data);
+  },
+  error: function (e) {}
+});
+
 
 var labelName = "";
 
@@ -575,7 +603,6 @@ function handle_data(json) {
         document.getElementById("alias").innerHTML = alias;
         document.getElementById("tipologia").innerHTML = type;
         document.getElementById("variants").innerHTML = name_string;
-        document.getElementById("patronimico").innerHTML = second_name;
         document.getElementById("qualifica").innerHTML = qualification;
         document.getElementById("occupazione").innerHTML = occupation;
         document.getElementById("data_nascita").innerHTML = birth_date;
@@ -722,6 +749,10 @@ function handle_Relazioni(json) {
         type = type + " di";
       }
 
+      if (type == "Mano lettera") {
+        type = "Altre collaborazioni"
+      }
+
       var first_name = "";
 
       if ((givenName != "") || (patronymic != "") || (familyName != "") || (provenence != "")) {
@@ -822,6 +853,10 @@ function handle_RelazioniInverse(json) {
         type = "Intestatario principale";
       }
 
+      if (type == "Mano lettera di") {
+        type = "Collaboratori";
+      }
+
       var first_name = "";
 
       if ((givenName != "") || (patronymic != "") || (familyName != "") || (provenence != "")) {
@@ -900,6 +935,64 @@ function createColRelazione(text, link) {
 	return htmlCode;
 }
 
+function handle_Events(json) {
+
+  const events = [];
+
+  $.each(
+    json['results']['bindings'],
+    function (index, value) {
+      var event_type = value['event_type']['value'];
+      var role = value['role']['value'];
+      var uri_document = value['uri_document']['value'];
+      var document = value['document']['value'];
+      var time_span = "";
+      var uri_place = "";
+      var place = "";
+
+      if (value.hasOwnProperty('time_span')) {
+        time_span = value['time_span']['value'];
+      }
+      if (value.hasOwnProperty('uri_place')) {
+        uri_place = value['uri_place']['value'];
+      } 
+      if (value.hasOwnProperty('place')) {
+        place = value['place']['value'];
+      } 
+
+      const cells = [event_type, role, time_span, uri_place, place, uri_document, document];    
+      events.push(cells); 
+
+  });
+
+  var thead = '<div id="ev_thead" class="row">' +
+  '<div class="col-2">Evento</div>' +
+  '<div class="col-2">Ruolo</div>' +
+  '<div class="col-2">Data</div>' +
+  '<div class="col-2">Luogo</div>' +
+  '<div class="col-4">Documento</div>' +
+  '</div>';
+
+  var EventsTable = thead;
+
+  for (var i=0; i<events.length; i++) {
+    EventsTable += '<div class="row">' +
+    '<div class="col-2">' + events[i][0] + '</div>' +
+    '<div class="col-2">' + events[i][1] + '</div>' +
+    '<div class="col-2">' + events[i][2] + '</div>' +
+    '<div id="' + events[i][3] + '" class="col-2 luogo">' + events[i][4] + '</div>' +
+    '<div id="' + events[i][5] + '" class="col-4 object">' + events[i][6] + '</div>' +
+    '</div>';
+  }
+
+  if (events.length != 0) {
+    document.getElementById("res_events").innerHTML = EventsTable;
+  } else {
+    document.getElementById("res_events").innerHTML = "Nessun evento trovato";
+  }
+
+}
+
 function handle_Compagnia(json) {
   
   //console.log(json);
@@ -987,25 +1080,31 @@ function handle_Letters(json) {
   //POPULATE SEND LETTERS BOX
 
   for (var i=0; i<send.length; i++) {
-    var letter = '<a href=' + send[i][0] + ' target="_blank">' + send[i][1] + '</a>';
+    var letter = "";
     var infObject_button = "";
-    if (send[i][2] != "") {
-      letter = letter + "<br />Segnatura: " + send[i][2];
-    }
-    if (send[i][3] != "") {
-      letter = letter + "<br />Data invio: " + send[i][3];
-    }
+
 
     if (send[i][4] != "") {
+          letter = '<div class="col-8"><p><span id="' + send[i][0] + '" class="title_doc lettera">'+ send[i][1] + '</span>';
           infObject_button  += '<button type="button" id="' + send[i][4] + 
           '" class="lettera btn btn-default" alt="lettera" ><i class="fa fa-envelope"></i><p class="btn-text">Scheda Lettera</p></button>';
     } else {
+          letter = '<div class="col-8"><p><span id="' + send[i][0] + '" class="title_doc object">'+ send[i][1] + '</span>';
           infObject_button  += '<button type="button" id="' + send[i][0] + 
           '" class="object btn btn-default" alt="oggetto" title="' + send[i][1] + 
           '"><i class="fa fa-book"></i><p class="btn-text">Scheda Oggetto</p></button>';
     }
 
-    Send_Letters += '<div class="row res"><div class="col-8"><p>'+ letter +'</p></div>' + 
+    if (send[i][2] != "") {
+      letter = letter + "<br />Segnatura: " + send[i][2];
+    }
+    if (send[i][3] != "") {
+      letter = letter + "<br />Data: " + send[i][3];
+    }
+
+    letter = letter + '</p></div>';
+
+    Send_Letters += '<div class="row res">'+ letter + 
         '<div class="col d-flex align-items-start justify-content-end">' + infObject_button +
         '<button type="button" id="' + send[i][0] + '" class="cit btn btn-default" alt="scheda" title="Info"><i class="fa fa-quote-right"></i><p class="btn-text">Citazione</p></button>' +
         '<button type="button" id="' + send[i][0] + '" class="hyp btn btn-default" alt="scheda" title="Info"><i class="fa fa-link"></i><p class="btn-text">Hyperlink</p></button>' +
@@ -1017,25 +1116,31 @@ function handle_Letters(json) {
   //POPULATE RECEIVE LETTERS BOX
 
   for (var i=0; i<receive.length; i++) {
-    var letter = '<a href=' + receive[i][0] + ' target="_blank">' + receive[i][1] + '</a>';
+    var letter = "";
     var infObject_button = "";
-    if (receive[i][2] != "") {
-      letter = letter + "<br />Segnatura: " + receive[i][2];
-    }
-    if (receive[i][3] != "") {
-      letter = letter + "<br />Data ricezione: " + receive[i][3];
-    }
+
 
     if (receive[i][4] != "") {
+          letter = '<div class="col-8"><p><span id="' + receive[i][0] + '" class="title_doc lettera">'+ receive[i][1] + '</span>';
           infObject_button  += '<button type="button" id="' + receive[i][4] + 
           '" class="lettera btn btn-default" alt="lettera" ><i class="fa fa-envelope"></i><p class="btn-text">Scheda Lettera</p></button>';
     } else {
+          letter = '<div class="col-8"><p><span id="' + receive[i][0] + '" class="title_doc object">'+ receive[i][1] + '</span>';
           infObject_button  += '<button type="button" id="' + receive[i][0] + 
           '" class="object btn btn-default" alt="oggetto" title="' + receive[i][1] + 
           '"><i class="fa fa-book"></i><p class="btn-text">Scheda Oggetto</p></button>';
     }
 
-    Receive_Letters += '<div class="row res"><div class="col-8"><p>'+ letter +'</p></div>' + 
+    if (receive[i][2] != "") {
+      letter = letter + "<br />Segnatura: " + receive[i][2];
+    }
+    if (receive[i][3] != "") {
+      letter = letter + "<br />Data: " + receive[i][3];
+    }
+
+    letter = letter + '</p></div>';
+
+    Receive_Letters += '<div class="row res">'+ letter + 
         '<div class="col d-flex align-items-start justify-content-end">' + infObject_button +
         '<button type="button" id="' + receive[i][0] + '" class="cit btn btn-default" alt="scheda" title="Info"><i class="fa fa-quote-right"></i><p class="btn-text">Citazione</p></button>' +
         '<button type="button" id="' + receive[i][0] + '" class="hyp btn btn-default" alt="scheda" title="Info"><i class="fa fa-link"></i><p class="btn-text">Hyperlink</p></button>' +
@@ -1111,60 +1216,6 @@ function handle_Artwork(json) {
 
 }
 
-function handle_Documents(json) {
-
-  //console.log(json);
-
-  const docs = [];
-
-  $.each(
-      json['results']['bindings'],
-      function (index, value) {
-        uri = value['document']['value'];
-        label = value['label']['value'];
-        id = value['id']['value'];
-        ruolo = value['role']['value'];
-        var data = "";
-        
-        if (value.hasOwnProperty('time_span')) {
-            data = value['time_span']['value'];
-        }
-
-        docs.push([uri, label, id, data, ruolo]);
-        
-      });
-
-  var Docs = "";
-
-  for (var i=0; i<docs.length; i++) {
-    var object = '<a href=' + docs[i][0] + ' target="_blank">' + docs[i][1] + '</a><br />Segnatura: ' + docs[i][2];
-    if (docs[i][3] != "") {
-      object = object + "<br />Data: " + docs[i][3];
-    }
-    object = object + "<br /><span>" + labelName + "</span> nel ruolo di " + docs[i][4];
-
-    var object_button  = '<button type="button" id="' + docs[i][0] + 
-      '" class="object btn btn-default" alt="opera d\'arte" title="' + docs[i][1] + 
-      '"><i class="fa fa-book"></i><p class="btn-text">Scheda Oggetto</p></button>';
-
-      Docs += '<div class="row res"><div class="col-8"><p>'+ object +'</p></div>' + 
-    '<div class="col d-flex align-items-start justify-content-end">' + object_button +
-    '<button type="button" id="' + docs[i][0] + '" class="cit btn btn-default" alt="scheda" title="Info"><i class="fa fa-quote-right"></i><p class="btn-text">Citazione</p></button>' +
-    '<button type="button" id="' + docs[i][0] + '" class="hyp btn btn-default" alt="scheda" title="Info"><i class="fa fa-link"></i><p class="btn-text">Hyperlink</p></button>' +
-    '<a href="http://dev.restore.ovi.cnr.it/lodlive/?' + docs[i][0] + '" target="_blank"><button type="button" class="btn btn-default info" alt="LOD"><i class="fa fa-share-alt"></i><p class="btn-text">Lod</p></button></a></div></div>';
-  }
-
-  document.getElementById("n_dc").innerHTML = docs.length;
-  document.getElementById("written_documents").innerHTML = Docs;
-
-  if (docs.length==0) {
-    var messaggio = "<p class='no-results'>Nessun risultato trovato</p>";
-    document.getElementById("written_documents").innerHTML = messaggio;
-  }
-  
-}
-
-
 function handle_Other_Documents(json) {
 
   //console.log(json);
@@ -1192,16 +1243,21 @@ function handle_Other_Documents(json) {
   var Documents = "";
 
   for (var i=0; i<doc.length; i++) {
-    var artwork = '<a href=' + doc[i][0] + ' target="_blank">' + doc[i][1] + '</a><br />Segnatura: ' + doc[i][2];
+    var paper = '<div class="col-8"><p><span id="' + doc[i][0] + '" class="title_doc object">'+ doc[i][1] + '</span>';
+    var object_button = '<button type="button" id="' + doc[i][0] + 
+          '" class="object btn btn-default" alt="oggetto" title="' + doc[i][1] + 
+          '"><i class="fa fa-book"></i><p class="btn-text">Scheda Oggetto</p></button>';
+
+    if (doc[i][2] != "") {
+      paper = paper + "<br />Segnatura: " + doc[i][2];
+    }
     if (doc[i][3] != "") {
-      artwork = artwork + "<br />Data: " + doc[i][3];
+      paper = paper + "<br />Data: " + doc[i][3];
     }
 
-    var object_button  = '<button type="button" id="' + doc[i][0] + 
-      '" class="object btn btn-default" alt="opera d\'arte" title="' + doc[i][1] + 
-      '"><i class="fa fa-book"></i><p class="btn-text">Scheda Oggetto</p></button>';
+    paper = paper + '</p></div>';
 
-      Documents += '<div class="row res"><div class="col-8"><p>'+ artwork +'</p></div>' + 
+      Documents += '<div class="row res">'+ paper + 
     '<div class="col d-flex align-items-start justify-content-end">' + object_button +
     '<button type="button" id="' + doc[i][0] + '" class="cit btn btn-default" alt="scheda" title="Info"><i class="fa fa-quote-right"></i><p class="btn-text">Citazione</p></button>' +
     '<button type="button" id="' + doc[i][0] + '" class="hyp btn btn-default" alt="scheda" title="Info"><i class="fa fa-link"></i><p class="btn-text">Hyperlink</p></button>' +