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