Grid translate dialog WIP
authorBill Erickson <berickxx@gmail.com>
Wed, 8 Nov 2017 20:20:38 +0000 (15:20 -0500)
committerBill Erickson <berickxx@gmail.com>
Wed, 8 Nov 2017 20:20:38 +0000 (15:20 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/templates/staff/share/t_autogrid.tt2
Open-ILS/src/templates/staff/share/t_grid_translate_dialog.tt2 [new file with mode: 0644]
Open-ILS/web/js/ui/default/staff/services/grid.js

index e8f94d7..a43d7bd 100644 (file)
           <span class="glyphicon glyphicon-print"></span>
           [% l('Print Full Grid') %]
         </a></li>
+        <li><a href ng-click="showTranslateDialog()">
+          <span class="glyphicon glyphicon-flag"></span>
+          [% l('Translate Rows') %]
+        </a></li>
         <li role="presentation" class="divider"></li>
         <li ng-repeat="col in columns">
           <a href title="{{col.idlclass}}" ng-click="toggleColumnVisibility(col)">
diff --git a/Open-ILS/src/templates/staff/share/t_grid_translate_dialog.tt2 b/Open-ILS/src/templates/staff/share/t_grid_translate_dialog.tt2
new file mode 100644 (file)
index 0000000..b15f82e
--- /dev/null
@@ -0,0 +1,44 @@
+<div>
+  <div class="modal-header">
+    <button type="button" class="close" 
+      ng-click="cancel()" aria-hidden="true">&times;</button>
+    <h4 class="modal-title alert alert-info">[% l('Manage Translations') %]</h4> 
+  </div>
+  <div class="modal-body">
+    <div class="row">
+      <div class="col-md-2">
+        <span>[% l('Select Locale') %]</span>
+      </div>
+      <div class="col-md-3">
+        <select class="form-control" ng-model="locale">
+          <option ng-repeat="l in locales" value="l.name()">
+            {{l.description()}}
+          </option>
+        </select>
+      </div>
+      <div class="col-md-3"></div>
+      <div class="col-md-4">
+        <a href ng-click="prev()">[% l('Prev Row') %]</a>
+        <span class='pad-left'>
+          <a href ng-click="next()">[% l('Next Row') %]</a>
+        </span>
+      </div>
+    </div>
+    <div class="row" ng-repeat="col in columns">
+      <div class="col-md-2 pad-all-min">
+        {{col.label}}
+      </div>
+      <div class="col-md-5 pad-all-min">
+        {{items[item_index][col.name]}}
+      </div>
+      <div class="col-md-5 pad-all-min">
+        <input type='text' class="form-control"
+          ng-model="applied_translations[locale][col.name][pkey]"/>
+      </div>
+    </div>
+  </div>
+  <div class="modal-footer">
+    <input type="submit" class="btn btn-primary" ng-click="ok()" value="[% l('Apply') %]"/>
+    <button class="btn btn-warning" ng-click="cancel()">[% l('Close') %]</button>
+  </div>
+</div>
index fab8679..53b3575 100644 (file)
@@ -119,10 +119,10 @@ angular.module('egGridMod',
         controller : [
                     '$scope','$q','egCore','egGridFlatDataProvider','$location',
                     'egGridColumnsProvider','$filter','$window','$sce','$timeout',
-                    'egProgressDialog',
+                    'egProgressDialog','$uibModal',
             function($scope,  $q , egCore,  egGridFlatDataProvider , $location,
                      egGridColumnsProvider , $filter , $window , $sce , $timeout,
-                     egProgressDialog) {
+                     egProgressDialog , $uibModal) {
 
             var grid = this;
 
@@ -663,6 +663,57 @@ angular.module('egGridMod',
                 return false;
             }
 
+            $scope.showTranslateDialog = function() {
+                return $uibModal.open({
+                    templateUrl: './share/t_grid_translate_dialog',
+                    backdrop: 'static',
+                    size : 'lg',
+                    controller: ['$scope', '$uibModalInstance',
+                        function($dialogScope, $uibModalInstance) {
+
+                            var locales = $dialogScope.locales = [{ // TODO
+                                name : function(){return 'en-US'},
+                                description : function(){return 'American English'},
+                            }];
+
+                            $dialogScope.locale = locales[0].name(); // TODO
+
+                            var columns = $dialogScope.columns = 
+                                $scope.columns.filter(
+                                    function(col) {return col.i18n});
+
+                            var translations = 
+                                $scope.applied_translations = {};
+
+                            angular.forEach(locales, function(locale) {
+                                if (!translations[locale]) translations[locale] = {};
+                                angular.forEach(columns, function(col) {
+                                    translations[locale][col.name] = {};
+                                });
+                            });
+
+                            $dialogScope.items = $scope.items;
+                            $dialogScope.item_index = 0;
+                            $dialogScope.prev = function() {
+                                $dialogScope.item_index--;
+                            }
+
+                            $dialogScope.next = function() {
+                                console.log('NEXT');
+                                $dialogScope.item_index++;
+                            }
+                            
+                            $dialogScope.ok = function() {
+                                $uibModalInstance.close()
+                            }
+                            $dialogScope.cancel = function() {
+                                $uibModalInstance.dismiss();
+                            }
+                        }
+                    ]
+                });
+            }
+
             // returns the list of selected item objects
             grid.getSelectedItems = function() {
                 return $scope.items.filter(
@@ -1572,6 +1623,7 @@ angular.module('egGridMod',
             }
 
             column.datatype = idl_info.idl_field.datatype;
+            column.i18n = idl_info.idl_field.i18n;
             
             if (!column.label) {
                 column.label = idl_info.idl_field.label || column.name;