enhance add sem directive
authorcavaliet
Tue, 10 Sep 2013 12:14:52 +0200
changeset 60 da37c87abbfb
parent 59 a0ef3043b1d2
child 61 305f9fcd409b
enhance add sem directive
src/p4l/settings.py
src/p4l/static/p4l/js/p4l.js
src/p4l/static/p4l/templates/addSemanticUriForm.html
src/p4l/views.py
--- a/src/p4l/settings.py	Tue Sep 10 10:57:45 2013 +0200
+++ b/src/p4l/settings.py	Tue Sep 10 12:14:52 2013 +0200
@@ -185,10 +185,10 @@
     ?uri a skos:Concept.
     ?uri skos:inScheme <http://skos.um.es/unescothes/CS000> .
     ?uri skos:prefLabel ?label.
-    FILTER (lang(?label) = ?language).
+    FILTER (lang(?label) = %s).
     ?uri skos:prefLabel ?lab.
     FILTER regex (str(?lab), ?reg, 'i').
-    FILTER (lang (?lab) = ?language).
+    FILTER (lang (?lab) = %s).
     BIND (STRLEN(STRBEFORE (str(?lab), ?reg)) AS ?place).
     BIND (STRLEN(STR(?lab)) AS ?len)
 }
@@ -204,7 +204,7 @@
     ?uri a skos:Collection ;
     skos:inScheme <http://skos.um.es/unescothes/CS000> ;    
     skos:prefLabel|rdfs:label ?label .
-    FILTER (lang(?label) = ?language). 
+    FILTER (lang(?label) = %s). 
     FILTER NOT EXISTS { [skos:member ?uri] }
 }
 """,
@@ -220,7 +220,7 @@
     FILTER (?type = skos:Collection || ?type = skos:Concept) }.
   ?root skos:narrower|skos:member ?uri.
   ?uri skos:prefLabel|rdfs:label ?label.
-  FILTER (lang(?label) = ?language).
+  FILTER (lang(?label) = %s).
 }
 """,
 "child-count" : """
@@ -246,10 +246,10 @@
     ?uri a skos:Concept.
     ?uri skos:inScheme <http://www.iiep.unesco.org/plan4learning/scheme/Themes> .
     ?uri skos:prefLabel ?label.
-    FILTER (lang(?label) = ?language).
+    FILTER (lang(?label) = %s).
     ?uri skos:prefLabel ?lab.
     FILTER regex (str(?lab), ?reg, 'i').
-    FILTER (lang (?lab) = ?language).
+    FILTER (lang (?lab) = %s).
     BIND (STRLEN(STRBEFORE (str(?lab), ?reg)) AS ?place).
     BIND (STRLEN(STR(?lab)) AS ?len)
 }
@@ -265,7 +265,7 @@
     ?uri a skos:Concept ;
     skos:inScheme <http://www.iiep.unesco.org/plan4learning/scheme/Themes> ;    
     skos:prefLabel ?label .
-    FILTER (lang(?label) = ?language). 
+    FILTER (lang(?label) = %s). 
     FILTER NOT EXISTS { [skos:narrower ?uri] }
 }
 """,
@@ -281,7 +281,7 @@
     FILTER (?type = skos:Collection || ?type = skos:Concept) }.
   ?root skos:narrower|skos:member ?uri.
   ?uri skos:prefLabel|rdfs:label ?label.
-  FILTER (lang(?label) = ?language).
+  FILTER (lang(?label) = %s).
 }
 """,
 'child-count' : """
--- a/src/p4l/static/p4l/js/p4l.js	Tue Sep 10 10:57:45 2013 +0200
+++ b/src/p4l/static/p4l/js/p4l.js	Tue Sep 10 12:14:52 2013 +0200
@@ -115,7 +115,7 @@
 });
 
 
-app.directive('addSemUri', function(RecordModel, context){
+app.directive('addSemUri', function(RecordModel, context, $timeout){
   return {
       restrict: 'E',
       replace: true,
@@ -136,10 +136,12 @@
 			  }
 		  }
     	  // initalize autocomplete and browse thesaurus events
-    	  init_autocomplete();
-    	  // We have to apply because init_browse needs the real ids and not {{ $id }}
-    	  $scope.$apply();
-    	  init_browse();
+    	  // We have to timeout because init_browse needs the real ids and not {{ $id }}
+    	  // NB : scope.apply generates bug
+    	  $timeout(function(){
+    		  init_autocomplete();
+    		  init_browse();
+          }, 0);
       },
       controller: function($scope, $element, $attrs, $transclude, RecordModel){
 	    $scope.record = RecordModel.record;
@@ -150,6 +152,12 @@
 	    	$scope.list.push($scope.addUriText);
 	        $scope.addUriText = '';
 	    };
+	    $scope.removeFromList = function(obj) {
+            var i = $scope.list.indexOf(obj);
+            if(i>=0){
+                $scope.list.splice(i, 1);
+            }
+        }
 	    
 	    $scope.updateUriLabelDict = function(k,v) {
 	        $scope.uriLabels[k] = v;
--- a/src/p4l/static/p4l/templates/addSemanticUriForm.html	Tue Sep 10 10:57:45 2013 +0200
+++ b/src/p4l/static/p4l/templates/addSemanticUriForm.html	Tue Sep 10 12:14:52 2013 +0200
@@ -1,6 +1,6 @@
 <div>
     <ul>
-        <li ng-repeat="item in list">{{uriLabels[item]}} <small class="text-muted">({{item}})</small> <a ng-click='removeFromList(item, list)' class="btn btn-default btn-xs"><i class="glyphicon glyphicon-trash"></i></a></li>
+        <li ng-repeat="item in list">{{uriLabels[item]}} <small class="text-muted">({{item}})</small> <a ng-click='removeFromList(item)' class="btn btn-default btn-xs"><i class="glyphicon glyphicon-trash"></i></a></li>
     </ul>
 	<form class="form-inline" role="form">
 	    <div class="form-group col-md-8">
--- a/src/p4l/views.py	Tue Sep 10 10:57:45 2013 +0200
+++ b/src/p4l/views.py	Tue Sep 10 12:14:52 2013 +0200
@@ -125,19 +125,21 @@
         uri_labels.update(get_labels_for_uris([self.object.recordType] if self.object.recordType else [], "http://www.iiep.unesco.org/plan4learning/scheme/DocumentType", lang, False))
         context['uri_labels'] = json.dumps(uri_labels)
         
+        # lang must be like "XX" in the sparql request 
+        lang = '"' + lang + '"'
         query_dicts = {
             'subjects': {
                 'dataurl': settings.SPARQL_QUERY_ENDPOINT,
-                'dataquery': settings.SPARQL_SUBJECT_QUERIES["filter"],
-                'datarootquery': settings.SPARQL_SUBJECT_QUERIES["root"],
-                'datachildsquery': settings.SPARQL_SUBJECT_QUERIES["childs"],
+                'dataquery': settings.SPARQL_SUBJECT_QUERIES["filter"] % (lang, lang),
+                'datarootquery': settings.SPARQL_SUBJECT_QUERIES["root"] % lang,
+                'datachildsquery': settings.SPARQL_SUBJECT_QUERIES["childs"] % lang,
                 'datachildcountquery': settings.SPARQL_SUBJECT_QUERIES["child-count"]
             },
             'themes' : {
                 'dataurl': settings.SPARQL_QUERY_ENDPOINT,
-                'dataquery': settings.SPARQL_THEME_QUERIES["filter"],
-                'datarootquery': settings.SPARQL_THEME_QUERIES["root"],
-                'datachildsquery': settings.SPARQL_THEME_QUERIES["childs"],
+                'dataquery': settings.SPARQL_THEME_QUERIES["filter"] % (lang, lang),
+                'datarootquery': settings.SPARQL_THEME_QUERIES["root"] % lang,
+                'datachildsquery': settings.SPARQL_THEME_QUERIES["childs"] % lang,
                 'datachildcountquery': settings.SPARQL_THEME_QUERIES["child-count"]
             }
         }