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

Side by Side Diff: chrome/browser/resources/history/history.js

Issue 12039045: History: Fix RTL layout in grouped history and some other minor fixes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Last minor fixes Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/resources/history/history.css ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 // Visit, private: ------------------------------------------------------------ 168 // Visit, private: ------------------------------------------------------------
169 169
170 /** 170 /**
171 * Extracts and returns the domain (and subdomains) from a URL. 171 * Extracts and returns the domain (and subdomains) from a URL.
172 * @param {string} url The url. 172 * @param {string} url The url.
173 * @return {string} The domain. An empty string is returned if no domain can 173 * @return {string} The domain. An empty string is returned if no domain can
174 * be found. 174 * be found.
175 * @private 175 * @private
176 */ 176 */
177 Visit.prototype.getDomainFromURL_ = function(url) { 177 Visit.prototype.getDomainFromURL_ = function(url) {
178 var domain = url.replace(/^.+:\/\//, '').match(/[^/]+/); 178 // TODO(sergiu): Extract the domain from the C++ side and send it here.
179 var domain = url.replace(/^.+?:\/\//, '').match(/[^/]+/);
179 return domain ? domain[0] : ''; 180 return domain ? domain[0] : '';
180 }; 181 };
181 182
182 /** 183 /**
183 * Add child text nodes to a node such that occurrences of the specified text is 184 * Add child text nodes to a node such that occurrences of the specified text is
184 * highlighted. 185 * highlighted.
185 * @param {Node} node The node under which new text nodes will be made as 186 * @param {Node} node The node under which new text nodes will be made as
186 * children. 187 * children.
187 * @param {string} content Text to be added beneath |node| as one or more 188 * @param {string} content Text to be added beneath |node| as one or more
188 * text nodes. 189 * text nodes.
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 * @param {Array} results A list of results. 400 * @param {Array} results A list of results.
400 */ 401 */
401 HistoryModel.prototype.addResults = function(info, results) { 402 HistoryModel.prototype.addResults = function(info, results) {
402 $('loading-spinner').hidden = true; 403 $('loading-spinner').hidden = true;
403 this.inFlight_ = false; 404 this.inFlight_ = false;
404 this.isQueryFinished_ = info.finished; 405 this.isQueryFinished_ = info.finished;
405 this.queryCursor_ = info.cursor; 406 this.queryCursor_ = info.cursor;
406 this.queryStartTime = info.queryStartTime; 407 this.queryStartTime = info.queryStartTime;
407 this.queryEndTime = info.queryEndTime; 408 this.queryEndTime = info.queryEndTime;
408 409
409 // If the results are not for the current search term there's nothing more 410 // If the results are not for the current search term then there is nothing
410 // to do. 411 // more to do.
411 if (info.term != this.searchText_) 412 if (info.term != this.searchText_)
412 return; 413 return;
413 414
414 // If necessary, sort the results from newest to oldest. 415 // If necessary, sort the results from newest to oldest.
415 if (!results.sorted) 416 if (!results.sorted)
416 results.sort(function(a, b) { return b.time - a.time; }); 417 results.sort(function(a, b) { return b.time - a.time; });
417 418
418 var lastVisit = this.visits_.slice(-1)[0]; 419 var lastVisit = this.visits_.slice(-1)[0];
419 var lastDay = lastVisit ? lastVisit.dateRelativeDay : null; 420 var lastDay = lastVisit ? lastVisit.dateRelativeDay : null;
420 421
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 * Record that the given visit has been rendered. 841 * Record that the given visit has been rendered.
841 * @param {Visit} visit The visit that was rendered. 842 * @param {Visit} visit The visit that was rendered.
842 * @private 843 * @private
843 */ 844 */
844 HistoryView.prototype.setVisitRendered_ = function(visit) { 845 HistoryView.prototype.setVisitRendered_ = function(visit) {
845 visit.isRendered = true; 846 visit.isRendered = true;
846 this.currentVisits_.push(visit); 847 this.currentVisits_.push(visit);
847 }; 848 };
848 849
849 /** 850 /**
850 * This function generates and adds the grouped visits DOM for a certain 851 * Generates and adds the grouped visits DOM for a certain domain. This
851 * domain. This includes the clickable arrow and domain name and the visit 852 * includes the clickable arrow and domain name and the visit entries for
852 * entries for that domain. 853 * that domain.
853 * @param {Element} results DOM object to which to add the elements. 854 * @param {Element} results DOM object to which to add the elements.
854 * @param {string} domain Current domain name. 855 * @param {string} domain Current domain name.
855 * @param {Array} domainVisits Array of visits for this domain. 856 * @param {Array} domainVisits Array of visits for this domain.
856 * @private 857 * @private
857 */ 858 */
858 HistoryView.prototype.getGroupedVisitsDOM_ = function( 859 HistoryView.prototype.getGroupedVisitsDOM_ = function(
859 results, domain, domainVisits) { 860 results, domain, domainVisits) {
860 // Add a new domain entry. 861 // Add a new domain entry.
861 var siteResults = results.appendChild( 862 var siteResults = results.appendChild(
862 createElementWithClassName('li', 'site-entry')); 863 createElementWithClassName('li', 'site-entry'));
863 // Make a wrapper that will contain the arrow, the favicon and the domain. 864 // Make a wrapper that will contain the arrow, the favicon and the domain.
864 var siteDomainWrapper = siteResults.appendChild( 865 var siteDomainWrapper = siteResults.appendChild(
865 createElementWithClassName('div', 'site-domain-wrapper')); 866 createElementWithClassName('div', 'site-domain-wrapper'));
866 var siteArrow = siteDomainWrapper.appendChild( 867 var siteArrow = siteDomainWrapper.appendChild(
867 createElementWithClassName('div', 'site-domain-arrow collapse')); 868 createElementWithClassName('div', 'site-domain-arrow collapse'));
868 siteArrow.textContent = '►'; 869 siteArrow.textContent = '►';
869 var siteDomain = siteDomainWrapper.appendChild( 870 var siteDomain = siteDomainWrapper.appendChild(
870 createElementWithClassName('div', 'site-domain')); 871 createElementWithClassName('div', 'site-domain'));
871 var numberOfVisits = createElementWithClassName('span', 'number-visits'); 872 var numberOfVisits = createElementWithClassName('span', 'number-visits');
872 numberOfVisits.textContent = loadTimeData.getStringF('numbervisits', 873 numberOfVisits.textContent = loadTimeData.getStringF('numbervisits',
873 domainVisits.length); 874 domainVisits.length);
874 siteDomain.textContent = domain; 875 var domainElement = document.createElement('span');
876 domainElement.textContent = domain;
877 siteDomain.appendChild(domainElement);
875 siteDomain.appendChild(numberOfVisits); 878 siteDomain.appendChild(numberOfVisits);
876 siteResults.appendChild(siteDomainWrapper); 879 siteResults.appendChild(siteDomainWrapper);
877 var resultsList = siteResults.appendChild( 880 var resultsList = siteResults.appendChild(
878 createElementWithClassName('ol', 'site-results')); 881 createElementWithClassName('ol', 'site-results'));
879 882
880 domainVisits[0].addFaviconToElement_(siteDomain); 883 domainVisits[0].addFaviconToElement_(siteDomain);
881 884
882 siteDomainWrapper.addEventListener('click', toggleHandler); 885 siteDomainWrapper.addEventListener('click', toggleHandler);
883 // Collapse until it gets toggled. 886 // Collapse until it gets toggled.
884 resultsList.style.height = 0; 887 resultsList.style.height = 0;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 visitsByDomain[domain] = []; 945 visitsByDomain[domain] = [];
943 domains.push(domain); 946 domains.push(domain);
944 } 947 }
945 visitsByDomain[domain].push(visit); 948 visitsByDomain[domain].push(visit);
946 } 949 }
947 var sortByVisits = function(a, b) { 950 var sortByVisits = function(a, b) {
948 return visitsByDomain[b].length - visitsByDomain[a].length; 951 return visitsByDomain[b].length - visitsByDomain[a].length;
949 }; 952 };
950 domains.sort(sortByVisits); 953 domains.sort(sortByVisits);
951 954
952 for (var i = 0, domain; domain = domains[i]; i++) { 955 for (var i = 0, domain; domain = domains[i]; i++)
953 this.getGroupedVisitsDOM_(results, domain, visitsByDomain[domain]); 956 this.getGroupedVisitsDOM_(results, domain, visitsByDomain[domain]);
954 }
955 }; 957 };
956 958
957 /** 959 /**
958 * Adds the results for a month. 960 * Adds the results for a month.
959 * @param {Array} visits Visits returned by the query. 961 * @param {Array} visits Visits returned by the query.
960 * @param {Element} parentElement Element to which to add the results to. 962 * @param {Element} parentElement Element to which to add the results to.
961 * @private 963 * @private
962 */ 964 */
963 HistoryView.prototype.addMonthResults_ = function(visits, parentElement) { 965 HistoryView.prototype.addMonthResults_ = function(visits, parentElement) {
964 if (visits.length == 0) 966 if (visits.length == 0)
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 historyView.reload(); 1547 historyView.reload();
1546 } 1548 }
1547 1549
1548 // Add handlers to HTML elements. 1550 // Add handlers to HTML elements.
1549 document.addEventListener('DOMContentLoaded', load); 1551 document.addEventListener('DOMContentLoaded', load);
1550 1552
1551 // This event lets us enable and disable menu items before the menu is shown. 1553 // This event lets us enable and disable menu items before the menu is shown.
1552 document.addEventListener('canExecute', function(e) { 1554 document.addEventListener('canExecute', function(e) {
1553 e.canExecute = true; 1555 e.canExecute = true;
1554 }); 1556 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/history/history.css ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698