Front-end Optimizations
This commit is contained in:
parent
0480c55d9f
commit
51d86b7a91
|
@ -64,25 +64,32 @@ Discourse.HeaderView = Discourse.View.extend({
|
|||
},
|
||||
|
||||
examineDockHeader: function() {
|
||||
var $body, offset, outlet;
|
||||
if (!this.docAt) {
|
||||
outlet = $('#main-outlet');
|
||||
|
||||
var headerView = this;
|
||||
|
||||
// Check the dock after the current run loop. While rendering,
|
||||
// it's much slower to calculate `outlet.offset()`
|
||||
Em.run.next(function () {
|
||||
if (!headerView.docAt) {
|
||||
var outlet = $('#main-outlet');
|
||||
if (!(outlet && outlet.length === 1)) return;
|
||||
this.docAt = outlet.offset().top;
|
||||
headerView.docAt = outlet.offset().top;
|
||||
}
|
||||
offset = window.pageYOffset || $('html').scrollTop();
|
||||
if (offset >= this.docAt) {
|
||||
if (!this.dockedHeader) {
|
||||
$body = $('body');
|
||||
$body.addClass('docked');
|
||||
this.dockedHeader = true;
|
||||
|
||||
var offset = window.pageYOffset || $('html').scrollTop();
|
||||
if (offset >= headerView.docAt) {
|
||||
if (!headerView.dockedHeader) {
|
||||
$('body').addClass('docked');
|
||||
headerView.dockedHeader = true;
|
||||
}
|
||||
} else {
|
||||
if (this.dockedHeader) {
|
||||
if (headerView.dockedHeader) {
|
||||
$('body').removeClass('docked');
|
||||
this.dockedHeader = false;
|
||||
headerView.dockedHeader = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -91,7 +91,11 @@ Discourse.TopicView = Discourse.View.extend(Discourse.Scrolling, {
|
|||
this.bindScrolling({debounce: 0});
|
||||
|
||||
var topicView = this;
|
||||
$(window).bind('resize.discourse-on-scroll', function() { topicView.updatePosition(); });
|
||||
Em.run.schedule('afterRender', function () {
|
||||
$(window).resize('resize.discourse-on-scroll', function() {
|
||||
topicView.updatePosition();
|
||||
});
|
||||
});
|
||||
|
||||
this.$().on('mouseup.discourse-redirect', '.cooked a, a.track-link', function(e) {
|
||||
return Discourse.ClickTrack.trackClick(e);
|
||||
|
|
|
@ -15807,7 +15807,11 @@ ViewCollection.prototype = {
|
|||
var views = this.views, view;
|
||||
for (var i = 0, l = views.length; i < l; i++) {
|
||||
view = views[i];
|
||||
if (view.trigger) { view.trigger(eventName); }
|
||||
|
||||
if (view.trigger) {
|
||||
t2 = new Date().getTime();
|
||||
view.trigger(eventName);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -17335,12 +17339,6 @@ Ember.View = Ember.CoreView.extend(
|
|||
return viewCollection;
|
||||
},
|
||||
|
||||
_elementWillChange: Ember.beforeObserver(function() {
|
||||
this.forEachChildView(function(view) {
|
||||
Ember.propertyWillChange(view, 'element');
|
||||
});
|
||||
}, 'element'),
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
|
@ -17352,7 +17350,8 @@ Ember.View = Ember.CoreView.extend(
|
|||
*/
|
||||
_elementDidChange: Ember.observer(function() {
|
||||
this.forEachChildView(function(view) {
|
||||
Ember.propertyDidChange(view, 'element');
|
||||
var meta = Em.meta(view);
|
||||
delete meta.cache['element'];
|
||||
});
|
||||
}, 'element'),
|
||||
|
||||
|
@ -20746,17 +20745,13 @@ var DOMManager = {
|
|||
view.clearRenderedChildren();
|
||||
var buffer = view.renderToBuffer();
|
||||
|
||||
// view.invokeRecursively(function(view) {
|
||||
// view.propertyWillChange('element');
|
||||
// });
|
||||
view.propertyWillChange('element');
|
||||
view.triggerRecursively('willInsertElement');
|
||||
|
||||
morph.replaceWith(buffer.string());
|
||||
view.transitionTo('inDOM');
|
||||
|
||||
// view.invokeRecursively(function(view) {
|
||||
// view.propertyDidChange('element');
|
||||
// });
|
||||
view.propertyDidChange('element');
|
||||
view.triggerRecursively('didInsertElement');
|
||||
|
||||
notifyMutationListeners();
|
||||
|
|
|
@ -17156,12 +17156,6 @@ Ember.View = Ember.CoreView.extend(
|
|||
return viewCollection;
|
||||
},
|
||||
|
||||
_elementWillChange: Ember.beforeObserver(function() {
|
||||
this.forEachChildView(function(view) {
|
||||
Ember.propertyWillChange(view, 'element');
|
||||
});
|
||||
}, 'element'),
|
||||
|
||||
/**
|
||||
@private
|
||||
|
||||
|
@ -17173,7 +17167,8 @@ Ember.View = Ember.CoreView.extend(
|
|||
*/
|
||||
_elementDidChange: Ember.observer(function() {
|
||||
this.forEachChildView(function(view) {
|
||||
Ember.propertyDidChange(view, 'element');
|
||||
var meta = Em.meta(view);
|
||||
delete meta.cache['element'];
|
||||
});
|
||||
}, 'element'),
|
||||
|
||||
|
@ -20561,17 +20556,13 @@ var DOMManager = {
|
|||
view.clearRenderedChildren();
|
||||
var buffer = view.renderToBuffer();
|
||||
|
||||
// view.invokeRecursively(function(view) {
|
||||
// view.propertyWillChange('element');
|
||||
// });
|
||||
view.propertyWillChange('element');
|
||||
view.triggerRecursively('willInsertElement');
|
||||
|
||||
morph.replaceWith(buffer.string());
|
||||
view.transitionTo('inDOM');
|
||||
|
||||
// view.invokeRecursively(function(view) {
|
||||
// view.propertyDidChange('element');
|
||||
// });
|
||||
view.propertyDidChange('element');
|
||||
view.triggerRecursively('didInsertElement');
|
||||
|
||||
notifyMutationListeners();
|
||||
|
|
Loading…
Reference in New Issue