Commit d95465db authored by Phil Hughes's avatar Phil Hughes

Dynamically truncate the text in the file row

parent 2d00e7fc
...@@ -35,7 +35,7 @@ export default { ...@@ -35,7 +35,7 @@ export default {
return 'name'; return 'name';
} }
return 'truncatedPath'; return 'path';
}, },
}, },
methods: { methods: {
...@@ -131,6 +131,7 @@ export default { ...@@ -131,6 +131,7 @@ export default {
:extra-component="$options.FileRowStats" :extra-component="$options.FileRowStats"
:show-changed-icon="true" :show-changed-icon="true"
:display-text-key="rowDisplayTextKey" :display-text-key="rowDisplayTextKey"
:should-truncate-start="true"
@toggleTreeOpen="toggleTreeOpen" @toggleTreeOpen="toggleTreeOpen"
@clickFile="scrollToFile" @clickFile="scrollToFile"
/> />
......
...@@ -275,18 +275,6 @@ export function isDiscussionApplicableToLine({ discussion, diffPosition, latestD ...@@ -275,18 +275,6 @@ export function isDiscussionApplicableToLine({ discussion, diffPosition, latestD
return latestDiff && discussion.active && lineCode === discussion.line_code; return latestDiff && discussion.active && lineCode === discussion.line_code;
} }
export const truncatedName = path => {
const maxLength = 30;
if (path.length > maxLength) {
const start = path.length - maxLength;
const end = start + maxLength;
return `...${path.slice(start, end)}`;
}
return path;
};
export const generateTreeList = files => export const generateTreeList = files =>
files.reduce( files.reduce(
(acc, file) => { (acc, file) => {
...@@ -302,7 +290,6 @@ export const generateTreeList = files => ...@@ -302,7 +290,6 @@ export const generateTreeList = files =>
acc.treeEntries[path] = { acc.treeEntries[path] = {
key: path, key: path,
path, path,
truncatedPath: truncatedName(path),
name, name,
type, type,
tree: [], tree: [],
......
...@@ -39,10 +39,16 @@ export default { ...@@ -39,10 +39,16 @@ export default {
required: false, required: false,
default: 'name', default: 'name',
}, },
shouldTruncateStart: {
type: Boolean,
required: false,
default: false,
},
}, },
data() { data() {
return { return {
mouseOver: false, mouseOver: false,
truncateStart: 0,
}; };
}, },
computed: { computed: {
...@@ -65,6 +71,13 @@ export default { ...@@ -65,6 +71,13 @@ export default {
'is-open': this.file.opened, 'is-open': this.file.opened,
}; };
}, },
outputText() {
const text = this.file[this.displayTextKey];
if (this.truncateStart === 0) return text;
return `...${text.substring(this.truncateStart, text.length)}`;
},
}, },
watch: { watch: {
'file.active': function fileActiveWatch(active) { 'file.active': function fileActiveWatch(active) {
...@@ -77,6 +90,15 @@ export default { ...@@ -77,6 +90,15 @@ export default {
if (this.hasPathAtCurrentRoute()) { if (this.hasPathAtCurrentRoute()) {
this.scrollIntoView(true); this.scrollIntoView(true);
} }
if (this.shouldTruncateStart) {
const { scrollWidth, offsetWidth } = this.$refs.textOutput;
const textOverflow = scrollWidth - offsetWidth;
if (textOverflow > 0) {
this.truncateStart = Math.ceil(textOverflow / 5) + 3;
}
}
}, },
methods: { methods: {
toggleTreeOpen(path) { toggleTreeOpen(path) {
...@@ -144,6 +166,7 @@ export default { ...@@ -144,6 +166,7 @@ export default {
class="file-row-name-container" class="file-row-name-container"
> >
<span <span
ref="textOutput"
:style="levelIndentation" :style="levelIndentation"
class="file-row-name str-truncated" class="file-row-name str-truncated"
> >
...@@ -161,7 +184,7 @@ export default { ...@@ -161,7 +184,7 @@ export default {
:size="16" :size="16"
class="append-right-5" class="append-right-5"
/> />
{{ file[displayTextKey] }} {{ outputText }}
</span> </span>
<component <component
:is="extraComponent" :is="extraComponent"
...@@ -181,6 +204,7 @@ export default { ...@@ -181,6 +204,7 @@ export default {
:extra-component="extraComponent" :extra-component="extraComponent"
:show-changed-icon="showChangedIcon" :show-changed-icon="showChangedIcon"
:display-text-key="displayTextKey" :display-text-key="displayTextKey"
:should-truncate-start="shouldTruncateStart"
@toggleTreeOpen="toggleTreeOpen" @toggleTreeOpen="toggleTreeOpen"
@clickFile="clickedFile" @clickFile="clickedFile"
/> />
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment