1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 cr
.define('print_preview.ticket_items', function() {
9 * Duplex ticket item whose value is a {@code boolean} that indicates whether
10 * the document should be duplex printed.
11 * @param {!print_preview.AppState} appState App state used to persist collate
13 * @param {!print_preview.DestinationStore} destinationStore Destination store
14 * used determine if a destination has the collate capability.
16 * @extends {print_preview.ticket_items.TicketItem}
18 function Duplex(appState
, destinationStore
) {
19 print_preview
.ticket_items
.TicketItem
.call(
22 print_preview
.AppState
.Field
.IS_DUPLEX_ENABLED
,
27 __proto__
: print_preview
.ticket_items
.TicketItem
.prototype,
30 wouldValueBeValid: function(value
) {
35 isCapabilityAvailable: function() {
36 var cap
= this.getDuplexCapability_();
40 var hasLongEdgeOption
= false;
41 var hasSimplexOption
= false;
42 cap
.option
.forEach(function(option
) {
43 hasLongEdgeOption
= hasLongEdgeOption
|| option
.type
== 'LONG_EDGE';
44 hasSimplexOption
= hasSimplexOption
|| option
.type
== 'NO_DUPLEX';
46 return hasLongEdgeOption
&& hasSimplexOption
;
50 getDefaultValueInternal: function() {
51 var cap
= this.getDuplexCapability_();
52 var defaultOptions
= cap
.option
.filter(function(option
) {
53 return option
.is_default
;
55 return defaultOptions
.length
== 0 ? false :
56 defaultOptions
[0].type
== 'LONG_EDGE';
60 getCapabilityNotAvailableValueInternal: function() {
65 * @return {Object} Duplex capability of the selected destination.
68 getDuplexCapability_: function() {
69 var dest
= this.getSelectedDestInternal();
72 dest
.capabilities
.printer
&&
73 dest
.capabilities
.printer
.duplex
) ||