OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 <include src="../uber/uber_utils.js"> | 5 <include src="../uber/uber_utils.js"> |
6 | 6 |
7 /////////////////////////////////////////////////////////////////////////////// | 7 /////////////////////////////////////////////////////////////////////////////// |
8 // Globals: | 8 // Globals: |
9 /** @const */ var RESULTS_PER_PAGE = 150; | 9 /** @const */ var RESULTS_PER_PAGE = 150; |
10 | 10 |
(...skipping 18 matching lines...) Expand all Loading... |
29 | 29 |
30 /////////////////////////////////////////////////////////////////////////////// | 30 /////////////////////////////////////////////////////////////////////////////// |
31 // Visit: | 31 // Visit: |
32 | 32 |
33 /** | 33 /** |
34 * Class to hold all the information about an entry in our model. | 34 * Class to hold all the information about an entry in our model. |
35 * @param {Object} result An object containing the visit's data. | 35 * @param {Object} result An object containing the visit's data. |
36 * @param {boolean} continued Whether this visit is on the same day as the | 36 * @param {boolean} continued Whether this visit is on the same day as the |
37 * visit before it. | 37 * visit before it. |
38 * @param {HistoryModel} model The model object this entry belongs to. | 38 * @param {HistoryModel} model The model object this entry belongs to. |
39 * @param {number} id The identifier for the entry. | |
40 * @constructor | 39 * @constructor |
41 */ | 40 */ |
42 function Visit(result, continued, model, id) { | 41 function Visit(result, continued, model) { |
43 this.model_ = model; | 42 this.model_ = model; |
44 this.title_ = result.title; | 43 this.title_ = result.title; |
45 this.url_ = result.url; | 44 this.url_ = result.url; |
46 this.starred_ = result.starred; | 45 this.starred_ = result.starred; |
47 this.snippet_ = result.snippet || ''; | 46 this.snippet_ = result.snippet || ''; |
48 this.id_ = id; | 47 // The id will be set according to when the visit was displayed, not |
| 48 // received. Set to -1 to show that it has not been set yet. |
| 49 this.id_ = -1; |
49 | 50 |
50 this.isRendered = false; // Has the visit already been rendered on the page? | 51 this.isRendered = false; // Has the visit already been rendered on the page? |
51 | 52 |
52 // Holds the timestamps of duplicates of this visit (visits to the same URL on | 53 // Holds the timestamps of duplicates of this visit (visits to the same URL on |
53 // the same day). | 54 // the same day). |
54 this.duplicateTimestamps_ = []; | 55 this.duplicateTimestamps_ = []; |
55 | 56 |
56 // All the date information is public so that owners can compare properties of | 57 // All the date information is public so that owners can compare properties of |
57 // two items easily. | 58 // two items easily. |
58 | 59 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 var time = createElementWithClassName('div', 'time'); | 97 var time = createElementWithClassName('div', 'time'); |
97 var entryBox = createElementWithClassName('label', 'entry-box'); | 98 var entryBox = createElementWithClassName('label', 'entry-box'); |
98 var domain = createElementWithClassName('div', 'domain'); | 99 var domain = createElementWithClassName('div', 'domain'); |
99 | 100 |
100 var dropDown = createElementWithClassName('button', 'drop-down'); | 101 var dropDown = createElementWithClassName('button', 'drop-down'); |
101 dropDown.value = 'Open action menu'; | 102 dropDown.value = 'Open action menu'; |
102 dropDown.title = loadTimeData.getString('actionMenuDescription'); | 103 dropDown.title = loadTimeData.getString('actionMenuDescription'); |
103 dropDown.setAttribute('menu', '#action-menu'); | 104 dropDown.setAttribute('menu', '#action-menu'); |
104 cr.ui.decorate(dropDown, MenuButton); | 105 cr.ui.decorate(dropDown, MenuButton); |
105 | 106 |
| 107 this.id_ = this.model_.nextVisitId_++; |
| 108 |
106 // Checkbox is always created, but only visible on hover & when checked. | 109 // Checkbox is always created, but only visible on hover & when checked. |
107 var checkbox = document.createElement('input'); | 110 var checkbox = document.createElement('input'); |
108 checkbox.type = 'checkbox'; | 111 checkbox.type = 'checkbox'; |
109 checkbox.id = 'checkbox-' + this.id_; | 112 checkbox.id = 'checkbox-' + this.id_; |
110 checkbox.time = this.date.getTime(); | 113 checkbox.time = this.date.getTime(); |
111 checkbox.addEventListener('click', checkboxClicked); | 114 checkbox.addEventListener('click', checkboxClicked); |
112 time.appendChild(checkbox); | 115 time.appendChild(checkbox); |
113 | 116 |
114 // Keep track of the drop down that triggered the menu, so we know | 117 // Keep track of the drop down that triggered the menu, so we know |
115 // which element to apply the command to. | 118 // which element to apply the command to. |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 this.urlsFromLastSeenDay_ = {}; | 431 this.urlsFromLastSeenDay_ = {}; |
429 | 432 |
430 // Only create a new Visit object for the first visit to a URL on a | 433 // Only create a new Visit object for the first visit to a URL on a |
431 // particular day. | 434 // particular day. |
432 var visit = this.urlsFromLastSeenDay_[thisResult.url]; | 435 var visit = this.urlsFromLastSeenDay_[thisResult.url]; |
433 if (visit) { | 436 if (visit) { |
434 // Record the timestamp of the duplicate visit. | 437 // Record the timestamp of the duplicate visit. |
435 visit.addDuplicateTimestamp(thisResult.timestamp); | 438 visit.addDuplicateTimestamp(thisResult.timestamp); |
436 continue; | 439 continue; |
437 } | 440 } |
438 visit = new Visit(thisResult, isSameDay, this, this.nextVisitId_++); | 441 visit = new Visit(thisResult, isSameDay, this); |
439 this.urlsFromLastSeenDay_[thisResult.url] = visit; | 442 this.urlsFromLastSeenDay_[thisResult.url] = visit; |
440 this.visits_.push(visit); | 443 this.visits_.push(visit); |
441 this.changed = true; | 444 this.changed = true; |
442 lastDay = thisDay; | 445 lastDay = thisDay; |
443 } | 446 } |
444 | 447 |
445 this.updateSearch_(); | 448 this.updateSearch_(); |
446 }; | 449 }; |
447 | 450 |
448 /** | 451 /** |
(...skipping 1085 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1534 historyView.reload(); | 1537 historyView.reload(); |
1535 } | 1538 } |
1536 | 1539 |
1537 // Add handlers to HTML elements. | 1540 // Add handlers to HTML elements. |
1538 document.addEventListener('DOMContentLoaded', load); | 1541 document.addEventListener('DOMContentLoaded', load); |
1539 | 1542 |
1540 // This event lets us enable and disable menu items before the menu is shown. | 1543 // This event lets us enable and disable menu items before the menu is shown. |
1541 document.addEventListener('canExecute', function(e) { | 1544 document.addEventListener('canExecute', function(e) { |
1542 e.canExecute = true; | 1545 e.canExecute = true; |
1543 }); | 1546 }); |
OLD | NEW |