mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Merge VS Code 1.31.1 (#4283)
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
|
||||
<body>
|
||||
<input type="text" id="filter" />
|
||||
<button id="expandall">Expand All</button>
|
||||
<button id="collapseall">Collapse All</button>
|
||||
<button id="renderwidth">Render Width</button>
|
||||
<button id="refresh">Refresh</button>
|
||||
@@ -43,7 +44,7 @@
|
||||
|
||||
require.config({ baseUrl: '/static' });
|
||||
|
||||
require(['vs/base/browser/ui/tree/indexTree', 'vs/base/browser/ui/tree/asyncDataTree', 'vs/base/browser/ui/tree/tree', 'vs/base/common/iterator'], ({ IndexTree }, { AsyncDataTree }, { TreeVisibility }, { iter }) => {
|
||||
require(['vs/base/browser/ui/tree/indexTree', 'vs/base/browser/ui/tree/asyncDataTree', 'vs/base/browser/ui/tree/dataTree', 'vs/base/browser/ui/tree/tree', 'vs/base/common/iterator'], ({ IndexTree }, { AsyncDataTree }, { DataTree }, { TreeVisibility }, { iter }) => {
|
||||
function createIndexTree(opts) {
|
||||
opts = opts || {};
|
||||
|
||||
@@ -59,7 +60,7 @@
|
||||
renderElement(element, index, container) {
|
||||
if (opts.supportDynamicHeights) {
|
||||
let v = [];
|
||||
for (let i = 1; i <= 3; i++) {
|
||||
for (let i = 1; i <= 5; i++) {
|
||||
v.push(element.element);
|
||||
}
|
||||
container.innerHTML = v.join('<br />');
|
||||
@@ -94,7 +95,7 @@
|
||||
}
|
||||
};
|
||||
|
||||
const tree = new IndexTree(container, delegate, [renderer], { ...opts, filter: treeFilter, setRowLineHeight: false });
|
||||
const tree = new IndexTree(container, delegate, [renderer], null, { ...opts, filter: treeFilter, setRowLineHeight: false });
|
||||
|
||||
return { tree, treeFilter };
|
||||
}
|
||||
@@ -137,6 +138,16 @@
|
||||
}
|
||||
};
|
||||
|
||||
const sorter = new class {
|
||||
compare(a, b) {
|
||||
if (a.collapsible === b.collapsible) {
|
||||
return a.name < b.name ? -1 : 1;
|
||||
}
|
||||
|
||||
return a.collapsible ? -1 : 1;
|
||||
}
|
||||
};
|
||||
|
||||
const dataSource = new class {
|
||||
hasChildren(element) {
|
||||
return element === null || element.element.type === 'dir';
|
||||
@@ -153,11 +164,7 @@
|
||||
collapsible: element.type === 'dir'
|
||||
}));
|
||||
|
||||
if (element) {
|
||||
setTimeout(() => c(els), 2500);
|
||||
} else {
|
||||
c(els);
|
||||
}
|
||||
c(els);
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -170,7 +177,70 @@
|
||||
}
|
||||
};
|
||||
|
||||
const tree = new AsyncDataTree(container, delegate, [renderer], dataSource, { filter: treeFilter, identityProvider });
|
||||
const tree = new AsyncDataTree(container, delegate, [renderer], dataSource, { filter: treeFilter, sorter, identityProvider });
|
||||
|
||||
return { tree, treeFilter };
|
||||
}
|
||||
|
||||
function createDataTree() {
|
||||
const delegate = {
|
||||
getHeight() { return 22; },
|
||||
getTemplateId() { return 'template'; }
|
||||
};
|
||||
|
||||
const renderer = {
|
||||
templateId: 'template',
|
||||
renderTemplate(container) { return container; },
|
||||
renderElement(node, index, container) { container.textContent = node.element.name; },
|
||||
disposeElement() { },
|
||||
disposeTemplate() { }
|
||||
};
|
||||
|
||||
const treeFilter = new class {
|
||||
constructor() {
|
||||
this.pattern = null;
|
||||
let timeout;
|
||||
filter.oninput = () => {
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(() => this.updatePattern(), 300);
|
||||
};
|
||||
}
|
||||
|
||||
updatePattern() {
|
||||
if (!filter.value) {
|
||||
this.pattern = null;
|
||||
} else {
|
||||
this.pattern = new RegExp(filter.value, 'i');
|
||||
}
|
||||
|
||||
perf('refilter', () => tree.refilter());
|
||||
}
|
||||
filter(el) {
|
||||
return (this.pattern ? this.pattern.test(el.name) : true) ? TreeVisibility.Visible : TreeVisibility.Recurse;
|
||||
}
|
||||
};
|
||||
|
||||
const dataSource = new class {
|
||||
getChildren(element) {
|
||||
return element.children || [];
|
||||
}
|
||||
};
|
||||
|
||||
const identityProvider = {
|
||||
getId(node) {
|
||||
return node.name;
|
||||
}
|
||||
};
|
||||
|
||||
const tree = new DataTree(container, delegate, [renderer], dataSource, { filter: treeFilter, identityProvider });
|
||||
|
||||
tree.input = {
|
||||
children: [
|
||||
{ name: 'A', children: [{ name: 'AA' }, { name: 'AB' }] },
|
||||
{ name: 'B', children: [{ name: 'BA', children: [{ name: 'BAA' }] }, { name: 'BB' }] },
|
||||
{ name: 'C' }
|
||||
]
|
||||
};
|
||||
|
||||
return { tree, treeFilter };
|
||||
}
|
||||
@@ -179,6 +249,7 @@
|
||||
case '?problems': {
|
||||
const { tree, treeFilter } = createIndexTree();
|
||||
|
||||
expandall.onclick = () => perf('expand all', () => tree.expandAll());
|
||||
collapseall.onclick = () => perf('collapse all', () => tree.collapseAll());
|
||||
renderwidth.onclick = () => perf('renderwidth', () => tree.layoutWidth(Math.random()));
|
||||
|
||||
@@ -199,6 +270,7 @@
|
||||
case '?data': {
|
||||
const { tree, treeFilter } = createAsyncDataTree();
|
||||
|
||||
expandall.onclick = () => perf('expand all', () => tree.expandAll());
|
||||
collapseall.onclick = () => perf('collapse all', () => tree.collapseAll());
|
||||
renderwidth.onclick = () => perf('renderwidth', () => tree.layoutWidth(Math.random()));
|
||||
refresh.onclick = () => perf('refresh', () => tree.refresh(null, true));
|
||||
@@ -207,9 +279,20 @@
|
||||
|
||||
break;
|
||||
}
|
||||
case '?objectdata': {
|
||||
const { tree, treeFilter } = createDataTree();
|
||||
|
||||
expandall.onclick = () => perf('expand all', () => tree.expandAll());
|
||||
collapseall.onclick = () => perf('collapse all', () => tree.collapseAll());
|
||||
renderwidth.onclick = () => perf('renderwidth', () => tree.layoutWidth(Math.random()));
|
||||
refresh.onclick = () => perf('refresh', () => tree.refresh(null, true));
|
||||
|
||||
break;
|
||||
}
|
||||
case '?height': {
|
||||
const { tree, treeFilter } = createIndexTree({ supportDynamicHeights: true });
|
||||
|
||||
expandall.onclick = () => perf('expand all', () => tree.expandAll());
|
||||
collapseall.onclick = () => perf('collapse all', () => tree.collapseAll());
|
||||
renderwidth.onclick = () => perf('renderwidth', () => tree.layoutWidth(Math.random()));
|
||||
|
||||
@@ -222,11 +305,16 @@
|
||||
treeFilter.updatePattern();
|
||||
}
|
||||
};
|
||||
|
||||
// container.
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
const { tree, treeFilter } = createIndexTree();
|
||||
|
||||
expandall.onclick = () => perf('expand all', () => tree.expandAll());
|
||||
collapseall.onclick = () => perf('collapse all', () => tree.collapseAll());
|
||||
renderwidth.onclick = () => perf('renderwidth', () => tree.layoutWidth(Math.random()));
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ async function getTree(fsPath, level) {
|
||||
const element = path.basename(fsPath);
|
||||
const stat = await fs.stat(fsPath);
|
||||
|
||||
if (!stat.isDirectory() || element === '.git' || element === '.build' || level >= 2) {
|
||||
if (!stat.isDirectory() || element === '.git' || element === '.build' || level >= 4) {
|
||||
return { element };
|
||||
}
|
||||
|
||||
@@ -46,14 +46,6 @@ async function readdir(relativePath) {
|
||||
}
|
||||
}
|
||||
|
||||
result.sort((a, b) => {
|
||||
if (a.type === b.type) {
|
||||
return a.name < b.name ? -1 : 1;
|
||||
}
|
||||
|
||||
return a.type === 'dir' ? -1 : 1;
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user