提交 e70d06df 编写于 作者: T Tim Zallmann

Incremental Rendering of the MR

上级 f68f405c
...@@ -114,11 +114,16 @@ export default { ...@@ -114,11 +114,16 @@ export default {
this.adjustView(); this.adjustView();
}, },
methods: { methods: {
...mapActions('diffs', ['setBaseConfig', 'fetchDiffFiles']), ...mapActions('diffs', ['setBaseConfig', 'fetchDiffFiles', 'startRenderDiffsQueue']),
fetchData() { fetchData() {
this.fetchDiffFiles().catch(() => { this.fetchDiffFiles()
createFlash(__('Something went wrong on our end. Please try again!')); .then(() => {
}); console.log('Done');
requestIdleCallback(this.startRenderDiffsQueue, { timeout: 1000 });
})
.catch(() => {
createFlash(__('Something went wrong on our end. Please try again!'));
});
if (!this.isNotesFetched) { if (!this.isNotesFetched) {
eventHub.$emit('fetchNotesData'); eventHub.$emit('fetchNotesData');
......
...@@ -121,12 +121,12 @@ export default { ...@@ -121,12 +121,12 @@ export default {
</div> </div>
<diff-content <diff-content
v-if="!isCollapsed" v-if="!isCollapsed && file.renderIt"
:class="{ hidden: isCollapsed || file.tooLarge }" :class="{ hidden: isCollapsed || file.tooLarge }"
:diff-file="file" :diff-file="file"
/> />
<loading-icon <loading-icon
v-if="isLoadingCollapsedDiff" v-if="isLoadingCollapsedDiff || !file.renderIt"
class="diff-content loading" class="diff-content loading"
/> />
<div <div
......
...@@ -29,6 +29,26 @@ export const fetchDiffFiles = ({ state, commit }) => { ...@@ -29,6 +29,26 @@ export const fetchDiffFiles = ({ state, commit }) => {
.then(handleLocationHash); .then(handleLocationHash);
}; };
export const startRenderDiffsQueue = ({ state, commit }) => {
const checkItem = () => {
const nextFile = state.diffFiles.find(file => !file.renderIt && !file.collapsed);
if (nextFile) {
requestAnimationFrame(() => {
commit(types.RENDER_FILE, nextFile);
});
requestIdleCallback(
() => {
console.log('CALL NEXT');
checkItem();
},
{ timeout: 1000 },
);
}
};
checkItem();
};
export const setInlineDiffViewType = ({ commit }) => { export const setInlineDiffViewType = ({ commit }) => {
commit(types.SET_DIFF_VIEW_TYPE, INLINE_DIFF_VIEW_TYPE); commit(types.SET_DIFF_VIEW_TYPE, INLINE_DIFF_VIEW_TYPE);
......
...@@ -8,3 +8,4 @@ export const REMOVE_COMMENT_FORM_LINE = 'REMOVE_COMMENT_FORM_LINE'; ...@@ -8,3 +8,4 @@ export const REMOVE_COMMENT_FORM_LINE = 'REMOVE_COMMENT_FORM_LINE';
export const ADD_CONTEXT_LINES = 'ADD_CONTEXT_LINES'; export const ADD_CONTEXT_LINES = 'ADD_CONTEXT_LINES';
export const ADD_COLLAPSED_DIFFS = 'ADD_COLLAPSED_DIFFS'; export const ADD_COLLAPSED_DIFFS = 'ADD_COLLAPSED_DIFFS';
export const EXPAND_ALL_FILES = 'EXPAND_ALL_FILES'; export const EXPAND_ALL_FILES = 'EXPAND_ALL_FILES';
export const RENDER_FILE = 'RENDER_FILE';
...@@ -15,8 +15,26 @@ export default { ...@@ -15,8 +15,26 @@ export default {
}, },
[types.SET_DIFF_DATA](state, data) { [types.SET_DIFF_DATA](state, data) {
const diffData = convertObjectPropsToCamelCase(data, { deep: true });
let showingLines = 0;
diffData.diffFiles.map(file => {
if (file.highlightedDiffLines) {
showingLines += file.parallelDiffLines.length;
Object.assign(file, {
renderIt: showingLines < 200,
collapsed: showingLines > 2000,
});
}
});
Object.assign(state, { Object.assign(state, {
...convertObjectPropsToCamelCase(data, { deep: true }), ...diffData,
});
},
[types.RENDER_FILE](state, file) {
Object.assign(file, {
renderIt: true,
}); });
}, },
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册