diff --git a/app/assets/javascripts/discourse/components/topic-timeline.js.es6 b/app/assets/javascripts/discourse/components/topic-timeline.js.es6 index 59328d05e36..cbc88e7ffc8 100644 --- a/app/assets/javascripts/discourse/components/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-timeline.js.es6 @@ -8,6 +8,7 @@ export default MountWidget.extend(Docking, { buildArgs() { return { topic: this.get('topic'), topicTrackingState: this.topicTrackingState, + enteredIndex: this.get('enteredIndex'), dockAt: this.dockAt }; }, diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 7e67aa00c5b..82efda4dc14 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -19,6 +19,7 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, { queryParams: ['filter', 'username_filters', 'show_deleted'], loadedAllPosts: Ember.computed.or('model.postStream.loadedAllPosts', 'model.postStream.loadingLastPost'), enteredAt: null, + enteredIndex: null, retrying: false, topicDelegated: [ diff --git a/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 b/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 index afd819a49e2..99ab6005de7 100644 --- a/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 +++ b/app/assets/javascripts/discourse/routes/topic-from-params.js.es6 @@ -32,6 +32,7 @@ export default Discourse.Route.extend({ topicController.setProperties({ 'model.currentPost': closest, + enteredIndex: postStream.get('stream').indexOf(closestPost.get('id')), enteredAt: new Date().getTime().toString(), }); diff --git a/app/assets/javascripts/discourse/templates/topic.hbs b/app/assets/javascripts/discourse/templates/topic.hbs index cea89bd9f8c..091c41eec6e 100644 --- a/app/assets/javascripts/discourse/templates/topic.hbs +++ b/app/assets/javascripts/discourse/templates/topic.hbs @@ -72,7 +72,10 @@
{{#if showTimeline}} - {{topic-timeline topic=model loading=model.postStream.loading delegated=topicDelegated}} + {{topic-timeline topic=model + enteredIndex=enteredIndex + loading=model.postStream.loading + delegated=topicDelegated}} {{else}} {{topic-progress topic=model delegated=topicDelegated}} {{topic-admin-menu-button topic=model fixed="true" delegated=topicDelegated}} diff --git a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 index b72c1651377..1684df4bc90 100644 --- a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 @@ -87,7 +87,7 @@ createWidget('timeline-scrollarea', { }, defaultState(attrs) { - return { percentage: this._percentFor(attrs.topic, attrs.topic.currentPost), scrolledPost: 1 }; + return { percentage: this._percentFor(attrs.topic, attrs.enteredIndex + 1), scrolledPost: 1 }; }, position() { @@ -174,7 +174,12 @@ createWidget('timeline-scrollarea', { _percentFor(topic, postNumber) { const total = topic.get('postStream.filteredPostsCount'); - return postNumber === 1 ? 0.0 : parseFloat(postNumber) / total; + console.log(postNumber, total); + let result = (postNumber === 1) ? 0.0 : parseFloat(postNumber) / total; + + if (result < 0) { return 0.0; } + if (result > 1.0) { return 1.0; } + return result; } });