15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)'use strict'; 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Group of progress item in the progress center panels. 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * This is responsible for generating the summarized item and managing lifetime 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * of error items. 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {string} name Name of the group. 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {boolean} quiet Whether the group is for quiet items or not. 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @constructor 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)function ProgressCenterItemGroup(name, quiet) { 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Name of the group. 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {string} 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.name = name; 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Whether the group is for quiet items or not. 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {boolean} 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.quiet_ = quiet; 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * State of the group. 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {ProgressCenterItemGroup.State} 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.state_ = ProgressCenterItemGroup.State.EMPTY; 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Items that are progressing, or completed but still animated. 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Key is item ID. 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {Object.<string, ProgressCenterItem>} 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.items_ = {}; 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Set of animated state of items. Key is item ID and value is whether the 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * item is animated or not. 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {Object.<string, boolean>} 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.animated_ = {}; 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Last summarized item. 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {ProgressCenterItem} 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItem_ = null; 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Whether the summarized item is animated or not. 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {boolean} 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItemAnimated_ = false; 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Total maximum progress value of items already completed and removed from 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * this.items_. 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {number} 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.totalProgressMax_ = 0; 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Total progress value of items already completed and removed from 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * this.items_. 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @type {number} 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.totalProgressValue_ = 0; 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Object.seal(this); 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * State of ProgressCenterItemGroup. 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @enum {string} 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @const 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.State = Object.freeze({ 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Group has no items. 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EMPTY: 'empty', 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Group has at least 1 progressing item. 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ACTIVE: 'active', 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Group has no progressing items but still shows error items. 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) INACTIVE: 'inactive' 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}); 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Makes the summarized item for the groups. 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * When a group has only error items, getSummarizedItem of the item returns 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * null. Basically the first result of the groups that the progress center panel 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * contains is used as a summarized item. But If all the group returns null, the 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * progress center panel generates the summarized item by using the method. 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {Array.<ProgressCenterItemGroup>} var_groups List of groups. 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {ProgressCenterItem} Summarized item. 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.getSummarizedErrorItem = function(var_groups) { 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var groups = Array.prototype.slice.call(arguments); 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var errorItems = []; 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (var i = 0; i < groups.length; i++) { 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (var id in groups[i].items_) { 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var item = groups[i].items_[id]; 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (item.state === ProgressItemState.ERROR) 1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) errorItems.push(item); 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (errorItems.length === 0) 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return null; 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (errorItems.length === 1) 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return errorItems[0].clone(); 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var item = new ProgressCenterItem(); 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) item.state = ProgressItemState.ERROR; 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) item.message = strf('ERROR_PROGRESS_SUMMARY_PLURAL', 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) errorItems.length); 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) item.single = false; 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return item; 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Obtains Whether the item should be animated or not. 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {boolean} previousAnimated Whether the item is previously animated or 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * not. 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {ProgressCenterItem} previousItem Item before updating. 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {ProgressCenterItem} item New item. 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {boolean} Whether the item should be animated or not. 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.shouldAnimate_ = function( 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) previousAnimated, previousItem, item) { 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!previousItem || !item || previousItem.quiet || item.quiet) 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (previousItem.progressRateInPercent < item.progressRateInPercent) 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (previousAnimated && 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) previousItem.progressRateInPercent === item.progressRateInPercent) 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype = { 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {ProgressCenterItemGroup.State} State of the group. 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) get state() { 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return this.state_; 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) }, 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {number} Number of error items that the group contains. 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) get numErrors() { 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var result = 0; 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (var id in this.items_) { 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.items_[id].state === ProgressItemState.ERROR) 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) result++; 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return result; 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Obtains the progressing (or completed but animated) item. 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {string} id Item ID. 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {ProgressCenterItem} Item having the ID. 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.getItem = function(id) { 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return this.items_[id] || null; 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Obtains whether the item should be animated or not. 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {string} id Item ID. 1905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {boolean} Whether the item should be animated or not. 1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.isAnimated = function(id) { 1935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return !!this.animated_[id]; 1945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Obtains whether the summarized item should be animated or not. 1985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {boolean} Whether the summarized item should be animated or not. 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.isSummarizedAnimated = function() { 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return this.summarizedItemAnimated_; 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 2055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Starts item update. 2065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Marks the given item as updating. 2075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {ProgressCenterItem} item Item containing updated information. 2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.update = function(item) { 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // If the group is inactive, go back to the empty state. 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.endInactive(); 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Compares the current state and the new state to check if the update is 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // valid or not. 2155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var previousItem = this.items_[item.id]; 2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) switch (item.state) { 2175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemState.ERROR: 2185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (previousItem && previousItem.state !== ProgressItemState.PROGRESSING) 2195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 2205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.state_ === ProgressCenterItemGroup.State.EMPTY) 2215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.state_ = ProgressCenterItemGroup.State.INACTIVE; 2225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.items_[item.id] = item.clone(); 2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.animated_[item.id] = false; 2245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItem_ = null; 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemState.PROGRESSING: 2285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemState.COMPLETED: 2295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if ((!previousItem && item.state === ProgressItemState.COMPLETED) || 2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) (previousItem && 2315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) previousItem.state !== ProgressItemState.PROGRESSING)) 2325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 2335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.state_ === ProgressCenterItemGroup.State.EMPTY) 2345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.state_ = ProgressCenterItemGroup.State.ACTIVE; 2355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.items_[item.id] = item.clone(); 2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.animated_[item.id] = ProgressCenterItemGroup.shouldAnimate_( 2375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) !!this.animated_[item.id], 2385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) previousItem, 2395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) item); 2405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!this.animated_[item.id]) 2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.completeItemAnimation(item.id); 2425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 2435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemState.CANCELED: 2455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!previousItem || 2465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) previousItem.state !== ProgressItemState.PROGRESSING) 2475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 2485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) delete this.items_[item.id]; 2495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.animated_[item.id] = false; 2505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItem_ = null; 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Update the internal summarized item cache. 2545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var previousSummarizedItem = this.summarizedItem_; 2555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItem_ = this.getSummarizedItem(0); 2565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItemAnimated_ = ProgressCenterItemGroup.shouldAnimate_( 2575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) !!this.summarizedItemAnimated_, 2585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) previousSummarizedItem, 2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItem_); 2605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!this.summarizedItemAnimated_) 2615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.completeSummarizedItemAnimation(); 2625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 2635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 2655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Notifies the end of the item's animation to the group. 2665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * If all the items except error items completes, the group enter the inactive 2675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * state. 2685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {string} id Item ID. 2695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 2705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.completeItemAnimation = function(id) { 2715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.state_ !== ProgressCenterItemGroup.State.ACTIVE) 2725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 2735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.animated_[id] = false; 2755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.items_[id].state === ProgressItemState.COMPLETED) { 2765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.totalProgressValue_ += (this.items_[id].progressValue || 0.0); 2775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.totalProgressMax_ += (this.items_[id].progressMax || 0.0); 2785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) delete this.items_[id]; 2795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.tryEndActive_(); 2805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 2825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 2845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Notifies the end of the summarized item's animation. 2855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * This may update summarized view. (1 progressing + 1 error -> 1 error) 2865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 2875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.completeSummarizedItemAnimation = function() { 2885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItemAnimated_ = false; 2895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.tryEndActive_(); 2905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 2915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 2935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Obtains the summary of the set. 2945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {number} numOtherErrors Number of errors contained by other groups. 2955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return {ProgressCenterItem} Item. 2965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 2975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.getSummarizedItem = 2985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) function(numOtherErrors) { 2995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.state_ === ProgressCenterItemGroup.State.EMPTY || 3005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.state_ === ProgressCenterItemGroup.State.INACTIVE) 3015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return null; 3025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var summarizedItem = new ProgressCenterItem(); 3045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.quiet = this.quiet_; 3055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.progressMax += this.totalProgressMax_; 3065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.progressValue += this.totalProgressValue_; 3075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var progressingItems = []; 3085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var errorItems = []; 3095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var numItems = 0; 3105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (var id in this.items_) { 3125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var item = this.items_[id]; 3135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) numItems++; 3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Count states. 3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) switch (item.state) { 3175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemState.PROGRESSING: 3185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemState.COMPLETED: 3195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) progressingItems.push(item); 3205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 3215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemState.ERROR: 3225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) errorItems.push(item); 3235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) continue; 3245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 3255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // If all of the progressing items have the same type, then use 3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // it. Otherwise use TRANSFER, since it is the most generic. 3285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (summarizedItem.type === null) 3295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.type = item.type; 3305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) else if (summarizedItem.type !== item.type) 3315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.type = ProgressItemType.TRANSFER; 3325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Sum up the progress values. 3345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.progressMax += item.progressMax; 3355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.progressValue += item.progressValue; 3365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 3375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns 1 item. 3395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (progressingItems.length === 1 && 3405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) errorItems.length + numOtherErrors === 0) { 3415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.id = progressingItems[0].id; 3425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.cancelCallback = progressingItems[0].cancelCallback; 3435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.message = progressingItems[0].message; 3445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.state = progressingItems[0].state; 3455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return summarizedItem; 3465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 3475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns integrated items. 3495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (progressingItems.length > 0) { 3505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var numErrors = errorItems.length + numOtherErrors; 3515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var messages = []; 3525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) switch (summarizedItem.type) { 3535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemType.COPY: 3545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) messages.push(str('COPY_PROGRESS_SUMMARY')); 3555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 3565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemType.MOVE: 3575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) messages.push(str('MOVE_PROGRESS_SUMMARY')); 3585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 3595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemType.DELETE: 3605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) messages.push(str('DELETE_PROGRESS_SUMMARY')); 3615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 3625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemType.ZIP: 3635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) messages.push(str('ZIP_PROGRESS_SUMMARY')); 3645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 3655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemType.SYNC: 3665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) messages.push(str('SYNC_PROGRESS_SUMMARY')); 3675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 3685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case ProgressItemType.TRANSFER: 3695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) messages.push(str('TRANSFER_PROGRESS_SUMMARY')); 3705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) break; 3715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 3725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (numErrors === 1) 3735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) messages.push(str('ERROR_PROGRESS_SUMMARY')); 3745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) else if (numErrors > 1) 3755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) messages.push(strf('ERROR_PROGRESS_SUMMARY_PLURAL', numErrors)); 3765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.single = false; 3775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.message = messages.join(' '); 3785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.state = ProgressItemState.PROGRESSING; 3795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return summarizedItem; 3805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 3815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns complete items. 3835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) summarizedItem.state = ProgressItemState.COMPLETED; 3845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return summarizedItem; 3855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 3865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 3885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Goes back to the EMPTY state from the INACTIVE state. Removes all the items. 3895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * If the current state is not the INACTIVE, nothing happens. 3905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 3915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.endInactive = function() { 3925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.state_ !== ProgressCenterItemGroup.State.INACTIVE) 3935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 3945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.items_ = {}; 3955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.animated_ = {}; 3965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItem_ = null; 3975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItemAnimated_ = false; 3985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.totalProgressValue_ = 0.0; 3995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.totalProgressMax_ = 0.0; 4005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.state_ = ProgressCenterItemGroup.State.EMPTY; 4015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 4025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 4045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Ends active state if there is no progressing and animated items. 4055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @private 4065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 4075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ProgressCenterItemGroup.prototype.tryEndActive_ = function() { 4085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.state_ !== ProgressCenterItemGroup.State.ACTIVE || 4095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.summarizedItemAnimated_) 4105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 4115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) var hasError = false; 4125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (var id in this.items_) { 4135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // If there is non-error item (progressing, or completed but still 4145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // animated), we should stay the active state. 4155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (this.items_[id].state !== ProgressItemState.ERROR) 4165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 4175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) hasError = true; 4185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 4195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.state_ = ProgressCenterItemGroup.State.INACTIVE; 4205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!hasError) 4215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.endInactive(); 4225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 423