Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit820097a

Browse files
committed
setup level/stage tree
1 parentb402b71 commit820097a

File tree

3 files changed

+104
-3
lines changed

3 files changed

+104
-3
lines changed

‎package.json

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,20 @@
4949
"views": {
5050
"coderoad-tutorial": [
5151
{
52-
"id":"tutorial-summary",
53-
"name":"Summary"
52+
"id":"progress",
53+
"name":"Progress"
5454
},
5555
{
56-
"id":"tutorial-steps",
56+
"id":"explanation",
57+
"name":"Explanation"
58+
},
59+
{
60+
"id":"instructions",
5761
"name":"Instructions"
62+
},
63+
{
64+
"id":"hints",
65+
"name":"Hints"
5866
}
5967
]
6068
}

‎src/views/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import*asvscodefrom'vscode'
2+
import{TestView}from'./progress/treeDataProvider'
23

34
constcreateViews=(context:vscode.ExtensionContext)=>{
45
// TODO: level/stage select
56
// TODO: summary view
67
// TODO: instruction view
78
// docs: https://code.visualstudio.com/api/extension-guides/tree-view
89
// vscode.window.registerTreeDataProvider('nodeDependencies', new TreeDataProvider(context.workspace))
10+
11+
newTestView(context);
912
}
1013

1114
exportdefaultcreateViews
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import*asvscodefrom'vscode'
2+
3+
consttree={
4+
'level1Id':{
5+
'stage1Id':{},
6+
'stage2Id':{},
7+
},
8+
'level2Id':{
9+
'l2s1':{},
10+
'l2s2':{}
11+
}
12+
}
13+
14+
functiongetChildren(key:string):string[]{
15+
if(!key){
16+
returnObject.keys(tree);
17+
}
18+
lettreeElement=getTreeElement(key);
19+
if(treeElement){
20+
returnObject.values(treeElement);
21+
}
22+
return[];
23+
}
24+
25+
functiongetTreeItem(key:string):vscode.TreeItem{
26+
consttreeElement=getTreeElement(key);
27+
return{
28+
label:key,
29+
tooltip:`Tooltip for${key}`,
30+
collapsibleState:treeElement&&Object.keys(treeElement).length ?vscode.TreeItemCollapsibleState.Collapsed :vscode.TreeItemCollapsibleState.None
31+
};
32+
}
33+
34+
functiongetTreeElement(element:any):any{
35+
letparent=tree;
36+
constlevels=Object.keys(parent)
37+
38+
if(levels.includes(element)){
39+
returnObject.keys(parent[element])
40+
}else{
41+
returnnull
42+
}
43+
}
44+
45+
functiongetNode(key:string):{key:string}{
46+
if(!nodes[key]){
47+
nodes[key]=newKey(key);
48+
}
49+
returnnodes[key];
50+
}
51+
52+
exportclassTestView{
53+
54+
constructor(context:vscode.ExtensionContext){
55+
constview=vscode.window.createTreeView('progress',{
56+
treeDataProvider:aNodeWithIdTreeDataProvider(),
57+
showCollapseAll:true
58+
});
59+
// vscode.commands.registerCommand('progress.reveal', async () => {
60+
// const key = await vscode.window.showInputBox({ placeHolder: 'Type the label of the item to reveal' });
61+
// if (key) {
62+
// await view.reveal({ key }, { focus: true, select: false, expand: true });
63+
// }
64+
// });
65+
}
66+
}
67+
68+
letnodes={};
69+
70+
functionaNodeWithIdTreeDataProvider():vscode.TreeDataProvider<{key:string}>{
71+
return{
72+
getChildren:(element:{key:string}):{key:string}[]=>{
73+
returngetChildren(element ?element.key :'').map((key:string)=>getNode(key));
74+
},
75+
getTreeItem:(element:{key:string}):vscode.TreeItem=>{
76+
consttreeItem=getTreeItem(element.key);
77+
treeItem.id=element.key;
78+
returntreeItem;
79+
},
80+
getParent:({ key}:{key:string}):{key:string}|undefined=>{
81+
returnnewKey(key)
82+
}
83+
};
84+
}
85+
86+
87+
88+
classKey{
89+
constructor(readonlykey:string){}
90+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp