LP#1642761 Hatch print config UI WIP
authorBill Erickson <berickxx@gmail.com>
Fri, 18 Nov 2016 17:13:38 +0000 (12:13 -0500)
committerBill Erickson <berickxx@gmail.com>
Wed, 23 Nov 2016 23:06:01 +0000 (18:06 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/templates/staff/admin/workstation/t_print_config.tt2
Open-ILS/src/templates/staff/css/style.css.tt2
Open-ILS/web/js/ui/default/staff/admin/workstation/app.js
Open-ILS/web/js/ui/default/staff/services/hatch.js

index ce4d670..a771b45 100644 (file)
             </div><!-- col -->
           </div><!-- row -->
           <div class="row" ng-hide="isTestView"> 
+            <div class="col-md-10">
+              <h3>[% l('Printer Options') %]</h3>
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2">
+                  <label>[% l('Print Color') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <select
+                    class="form-control"
+                    ng-model="printConfig[context].printColor"
+                    ng-options="val for val in printerOptions.printColor | orderBy:'val'">
+                  </select>  
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultPrintColor}}') %]</span>
+                </div>
+              </div>
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2">
+                  <label>[% l('Paper Source') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <select
+                    class="form-control"
+                    ng-model="printConfig[context].paperSource"
+                    ng-options="val for val in printerOptions.paperSource | orderBy:'val'">
+                  </select>  
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultPaperSource}}') %]</span>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2">
+                  <label>[% l('Paper Type') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <select
+                    class="form-control"
+                    ng-model="printConfig[context].paper"
+                    ng-options="val for val in printerOptions.paper | orderBy:'val'">
+                  </select>  
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultPaper}}') %]</span>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2">
+                  <label>[% l('Page Orientation') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <select
+                    class="form-control"
+                    ng-model="printConfig[context].pageOrientation"
+                    ng-options="val for val in printerOptions.pageOrientation | orderBy:'val'">
+                  </select>  
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultPageOrientation}}') %]</span>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2">
+                  <label>[% l('Collation') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <select
+                    class="form-control"
+                    ng-model="printConfig[context].collation"
+                    ng-options="val for val in printerOptions.collation | orderBy:'val'">
+                  </select>  
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultCollation}}') %]</span>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2">
+                  <label>[% l('Print Quality') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <select
+                    class="form-control"
+                    ng-model="printConfig[context].printQuality"
+                    ng-options="val for val in printerOptions.printQuality | orderBy:'val'">
+                  </select>  
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultPrintQuality}}') %]</span>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2">
+                  <label>[% l('Print Sides') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <select
+                    class="form-control"
+                    ng-model="printConfig[context].printSides"
+                    ng-options="val for val in printerOptions.printSides | orderBy:'val'">
+                  </select>  
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultPrintSides}}') %]</span>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2">
+                  <label>[% l('Number of Copies') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <input type="text" size="4" class="form-control"
+                    ng-model="printConfig[context].copies"/>
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultCopies}}') %]</span>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1">
+                  <input type="radio" name="margins" 
+                    ng-click="printConfig[context].autoMargins=true"
+                    ng-checked="printConfig[context].autoMargins"/>
+                </div>
+                <div class="col-md-2">
+                  <label>[% l('Automatic Margins') %]</label>
+                </div>
+                <div class="col-md-4">
+                  <select
+                    class="form-control"
+                    ng-model="printConfig[context].marginType"
+                    ng-disabled="!printConfig[context].autoMargins" 
+                    ng-options="val for val in printerOptions.marginType | orderBy:'val'">
+                  </select>  
+                </div>
+                <div class="col-md-3">
+                  <span>[% l('Default: [_1]', 
+                    '{{printerOptions.defaultMarginType}}') %]</span>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1">
+                  <input type="radio" name="margins"
+                    ng-click="printConfig[context].autoMargins=false"
+                    ng-checked="!printConfig[context].autoMargins"/>
+                </div>
+                <div class="col-md-2">
+                  <label>[% l('Manual Margins') %]</label>
+                </div>
+                <div class="col-md-2">
+                  <div class="input-group">
+                    <span class="input-group-addon">[% l('Left') %]</span>
+                    <input type="text" class="form-control"
+                      ng-disabled="printConfig[context].autoMargins"
+                      ng-model="printConfig[context].leftMargin"/>
+                  </div>
+                </div>
+                <div class="col-md-2">
+                  <div class="input-group">
+                    <span class="input-group-addon">[% l('Right') %]</span>
+                    <input type="text" class="form-control"
+                      ng-disabled="printConfig[context].autoMargins"
+                      ng-model="printConfig[context].rightMargin"/>
+                  </div>
+                </div>
+                <div class="col-md-2">
+                  <div class="input-group">
+                    <span class="input-group-addon">[% l('Top') %]</span>
+                    <input type="text" class="form-control"
+                      ng-disabled="printConfig[context].autoMargins"
+                      ng-model="printConfig[context].topMargin"/>
+                  </div>
+                </div>
+                <div class="col-md-2">
+                  <div class="input-group">
+                    <span class="input-group-addon">[% l('Bottom') %]</span>
+                    <input type="text" class="form-control"
+                      ng-disabled="printConfig[context].autoMargins"
+                      ng-model="printConfig[context].bottomMargin"/>
+                  </div>
+                </div>
+              </div>
+
+              <div class="row">
+                <div class="col-md-1"></div>
+                <div class="col-md-2"><label>[% l('Page Ranges') %]</label></div>
+                <div class="col-md-2">
+                  [% l('All Pages') %]
+                  <input type='radio' name='pageRanges' 
+                    ng-checked="printConfig[context].allPages"
+                    ng-click="printConfig[context].allPages=true"/>
+                </div>
+                <div class="col-md-2">
+                  [% l('Page Range') %]
+                  <input type='radio' name='pageRanges' 
+                    ng-checked="!printConfig[context].allPages"
+                    ng-click="printConfig[context].allPages=false"/>
+                </div>
+                <div class="col-md-2">
+                  <div class="input-group">
+                    <span class="input-group-addon">[% l('Start') %]</span>
+                    <input type="text" class="form-control"
+                      ng-disabled="printConfig[context].allPages"
+                      ng-model="printConfig[context].pageRanges[0]"/>
+                  </div>
+                </div>
+                <div class="col-md-2">
+                  <div class="input-group">
+                    <span class="input-group-addon">[% l('End') %]</span>
+                    <input type="text" class="form-control"
+                      ng-disabled="printConfig[context].allPages"
+                      ng-model="printConfig[context].pageRanges[1]"/>
+                  </div>
+                </div>
+                <!-- TODO: support multiple page ranges by 
+                    dynamically adding additional pageRanges[X] pairs -->
+              </div>
+            </div><!-- col -->
+            <div class="col-md-1"></div>
+          </div><!-- row -->
+
+          <div class="row" ng-hide="isTestView">
             <div class="col-md-12">
-              <h2>[% l('Compiled Printer Settings') %]</h2>
+              <h3>[% l('Compiled Printer Settings') %]</h3>
               <pre>{{printerConfString()}}</pre>
             </div><!-- col -->
           </div><!-- row -->
index 93881b6..4e6f962 100644 (file)
@@ -128,6 +128,7 @@ table.list tr.selected td { /* deprecated? */
 .pad-vert {padding : 20px 0px 10px 0px;}
 .pad-left {padding-left: 10px;}
 .pad-right {padding-right: 10px;}
+.pad-right-min {padding-right: 5px;}
 .pad-all-min {padding : 5px; }
 .pad-all-min2 {padding : 2px; }
 .pad-all {padding : 10px; }
index f0ea4fd..571ae1d 100644 (file)
@@ -277,13 +277,26 @@ function($scope , egCore) {
                 if (!$scope.printConfig[ctx]) {
                     $scope.printConfig[ctx] = {
                         context : ctx,
-                        printer : pname
+                        printer : pname,
+                        autoMargins : true, 
+                        allPages : true,
+                        pageRanges : []
                     }
                 }
             }
         );
+
+        // load printer options for the first printer shown.
+        // TODO: rethink this in combo w/ print config stuff above..
+        $scope.setPrinter($scope.printConfig['default'].printer);
     });
 
+
+    $scope.usingManualMargins = function(ctx) {
+        var conf = $scope.printConfig[ctx];
+        return conf && conf.marginType;
+    }
+
     $scope.printerConfString = function() {
         if ($scope.printConfigError) return $scope.printConfigError;
         if (!$scope.printConfig) return;
@@ -310,6 +323,8 @@ function($scope , egCore) {
 
     $scope.setPrinter = function(name) {
         $scope.printConfig[$scope.context].printer = name;
+        egCore.hatch.getPrinterOptions(name).then(
+            function(options) {$scope.printerOptions = options});
     }
 
     // for testing
index c38920e..242e252 100644 (file)
@@ -221,6 +221,13 @@ angular.module('egCoreMod')
         );
     }
 
+    service.getPrinterOptions = function(name) {
+        return service.attemptHatchDelivery({
+            action : 'printer-options',
+            printer : name
+        });
+    }
+
     // launch the print dialog then attach the resulting configuration
     // to the requested context, then store the final values.
     service.configurePrinter = function(context, printer) {