Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(326)

Unified Diff: chrome/browser/resources/print_preview/data/page_number_set.js

Issue 10108001: Refactor print preview web ui (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Resolve conflicts Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/print_preview/data/page_number_set.js
diff --git a/chrome/browser/resources/print_preview/data/page_number_set.js b/chrome/browser/resources/print_preview/data/page_number_set.js
new file mode 100644
index 0000000000000000000000000000000000000000..cccb6bfbda0a1449ea9659683f22e5c10a547dee
--- /dev/null
+++ b/chrome/browser/resources/print_preview/data/page_number_set.js
@@ -0,0 +1,105 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+cr.define('print_preview', function() {
+ 'use strict';
+
+ /**
+ * An immutable ordered set of page numbers.
+ * @param {!Array.<number>} pageNumberList A list of page numbers to include
+ * in the set.
+ * @constructor
+ */
+ function PageNumberSet(pageNumberList) {
+ /**
+ * Internal data store for the page number set.
+ * @type {!Array.<number>}
+ * @private
+ */
+ this.pageNumberSet_ = pageListToPageSet(pageNumberList);
+ };
+
+ /**
+ * @param {string} pageRangeStr String form of a page range. I.e. '2,3,4-5'.
+ * If string is empty, all page numbers will be in the page number set.
+ * @param {number} totalPageCount Total number of pages in the original
+ * document.
+ * @return {print_preview.PageNumberSet} Page number set parsed from the
+ * given page range string and total page count. Null returned if
+ * the given page range string is invalid.
+ */
+ PageNumberSet.parse = function(pageRangeStr, totalPageCount) {
+ if (pageRangeStr == '') {
+ var pageNumberList = [];
+ for (var i = 0; i < totalPageCount; i++) {
+ pageNumberList.push(i + 1);
+ }
+ return new PageNumberSet(pageNumberList);
+ } else {
+ return isPageRangeTextValid(pageRangeStr, totalPageCount) ?
+ new PageNumberSet(
+ pageRangeTextToPageList(pageRangeStr, totalPageCount)) : null;
+ }
+ };
+
+ PageNumberSet.prototype = {
+ /** @return {number} The number of page numbers in the set. */
+ get size() {
+ return this.pageNumberSet_.length;
+ },
+
+ /**
+ * @param {number} index 0-based index of the page number to get.
+ * @return {number} Page number at the given index.
+ */
+ getPageNumberAt: function(index) {
+ return this.pageNumberSet_[index];
+ },
+
+ /**
+ * @param {number} 1-based page number to check for.
+ * @return {boolean} Whether the given page number is in the page range.
+ */
+ hasPageNumber: function(pageNumber) {
+ return arrayContains(this.pageNumberSet_, pageNumber);
+ },
+
+ /**
+ * @param {number} 1-based number of the page to get index of.
+ * @return {number} 0-based index of the given page number with respect to
+ * all of the pages in the page range.
+ */
+ getPageNumberIndex: function(pageNumber) {
+ return this.pageNumberSet_.indexOf(pageNumber);
+ },
+
+ /**
+ * @return {!Array.<object.<{from: number, to: number}>>} A list of page
+ * ranges suitable for use in the native layer.
+ */
+ getPageRanges: function() {
+ return pageSetToPageRanges(this.pageNumberSet_);
+ },
+
+ /** @return {!Array.<number>} Array representation of the set. */
+ asArray: function() {
+ return this.pageNumberSet_.slice(0);
+ },
+
+ /**
+ * @param {print_preview.PageNumberSet} other Page number set to compare
+ * against.
+ * @return {boolean} Whether another page number set is equal to this one.
+ */
+ equals: function(other) {
+ return other == null ?
+ false : areArraysEqual(this.pageNumberSet_, other.pageNumberSet_);
+ }
+ };
+
+ // Export
+ return {
+ PageNumberSet: PageNumberSet
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698