LP#1511358 Patron Survey Interface
authorKyle Huckins <khuckins@catalystdevworks.com>
Wed, 30 Nov 2016 18:10:48 +0000 (10:10 -0800)
committerKathy Lussier <klussier@masslnc.org>
Fri, 3 Mar 2017 02:59:52 +0000 (21:59 -0500)
Add patron survey interface and link to interface
in "Other" dropdown beneath Statistical Categories.

Display surveys similarly to how notes are displayed,
as well as how surveys are displayed in the existing
XUL staff client.

Signed-off-by: Kyle Huckins <khuckins@catalystdevworks.com>
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Open-ILS/src/templates/staff/circ/patron/index.tt2
Open-ILS/src/templates/staff/circ/patron/t_surveys.tt2 [new file with mode: 0644]
Open-ILS/web/js/ui/default/staff/circ/patron/app.js

index 7e16ec4..c1b8196 100644 (file)
@@ -158,6 +158,11 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
             </a>
           </li>
           <li>
+            <a href="./circ/patron/{{patron().id()}}/surveys">
+              [% l('Surveys') %]
+            </a>
+          </li>
+          <li>
             <a href="./circ/patron/{{patron().id()}}/group">
               [% l('Group Member Details') %]
             </a>
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_surveys.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_surveys.tt2
new file mode 100644 (file)
index 0000000..bd059b8
--- /dev/null
@@ -0,0 +1,27 @@
+<div class="strong-text-2">[% l('Surveys') %]</div>
+<div class="row pad-vert" ng-repeat="survey in surveys">
+  <div class="col-md-12">
+    <div class="row">
+      <div class="col-md-2 strong-text">[% l('Survey') %] #{{survey.id()}}</div>
+      <div class="col-md-6 strong-text">{{survey.description()}}</div>
+      <div class="col-md-4">
+        <div class="pull-right">
+          <span class="pad-horiz alert alert-warning strong-text" ng-if="survey.required() == 't'">[% l('Required') %]</span>
+          <span class="pad-horiz  alert alert-info strong-text " ng-if="survey.opac() == 't'">[% l('OPAC Visible') %]</span>
+        </div>
+      </div>
+    </div>
+    <div class="row">
+      <div class="col-md-12 well" style="margin-left:12px">
+        <ol>
+          <li ng-repeat="question in survey.questions()">{{question.question()}}
+            <div class="row" ng-repeat="response in question.responses() | limitTo:-1">
+              <span class="col-md-4">[% l('Last Answered on: ') %]{{response.answer_date() | date}}</span>
+              <span class="col-md-3">[% l('Answer: ') %] <span class="strong-text">{{response.answer().answer()}}</span></span>
+          </div>
+          </li>
+        </ol>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
index 1dc380f..e075c4f 100644 (file)
@@ -214,6 +214,12 @@ angular.module('egPatronApp', ['ngRoute', 'ui.bootstrap',
         resolve : resolver
     });
 
+    $routeProvider.when('/circ/patron/:id/surveys', {
+        templateUrl: './circ/patron/t_surveys',
+        controller: 'PatronSurveyCtrl',
+        resolve : resolver
+    });
+
     $routeProvider.otherwise({redirectTo : '/circ/patron/search'});
 })
 
@@ -1633,6 +1639,33 @@ function($scope,  $routeParams , $q , egCore , patronSvc) {
     });
 }])
 
+.controller('PatronSurveyCtrl',
+       ['$scope','$routeParams','$location','egCore','patronSvc',
+function($scope,  $routeParams , $location , egCore , patronSvc) {
+    $scope.initTab('other', $routeParams.id);
+    var usr_id = $routeParams.id;
+    var org_ids = egCore.org.fullPath(egCore.auth.user().ws_ou(), true);
+    $scope.surveys = [];
+    // fetch the surveys
+    egCore.pcrud.search('asvr',
+        {usr : usr_id},
+        {flesh : 4, flesh_fields : {
+            asvr : ['question', 'survey', 'answer'],
+            asv : ['responses', 'questions'],
+            asvq : ['responses', 'question']
+    }},
+        {authoritative : true})
+    .then(null, null, function(survey) {
+        var sameSurveyId = false;
+        if (survey.survey().id() && $scope.surveys.length > 0) {
+            for (sid = 0; sid < $scope.surveys.length; sid++) {
+                if (survey.survey().id() == $scope.surveys[sid].id()) sameSurveyId = true; 
+            }
+        }
+        if (!sameSurveyId) $scope.surveys.push(survey.survey());
+    });
+}])
+
 .controller('PatronFetchLastCtrl',
        ['$scope','$location','egCore',
 function($scope , $location , egCore) {