irongit

A simpler way to view django projects

it works! the model tree is visible

huncholanehuncholaneauthored
parent 00fc229commit e5d51a98c02323baa3fc777407105b20e4ef20c0Browse files

6 files changed, +28 -46

+2-2src/context.ts
@@ -2,7 +2,7 @@ import * as vscode from "vscode";
22 import * as path from "path";
33 import * as fs from "fs";
44 import DjangoProject from "./project";
5-import { onDjangoProject } from "./listeners";
5+import { djangoProjectUpdate } from "./events";
66
77 export const setDjangoContext = async () => {
88 const workspaceFolders = vscode.workspace.workspaceFolders;
@@ -37,7 +37,7 @@ export const setDjangoContext = async () => {
3737 "django-overview.project",
3838 project
3939 );
40- onDjangoProject.fire(project);
40+ djangoProjectUpdate.fire(project);
4141 console.log("Django context set");
4242 }
4343 };
+11-0src/events.ts
@@ -0,0 +1,11 @@
1+import * as vscode from "vscode";
2+import DjangoProject from "./project";
3+import { projectDataProvider } from "./providers";
4+
5+export const djangoProjectUpdate = new vscode.EventEmitter<DjangoProject>();
6+
7+export default [
8+ djangoProjectUpdate.event((project) => {
9+ projectDataProvider.update(project);
10+ }),
11+];
+1-1src/extension.ts
@@ -3,7 +3,7 @@ import ProjectDataProvider from "./providers/project";
33 import providers from "./providers";
44 import commands from "./commands";
55 import { setDjangoContext } from "./context";
6-import listeners from "./listeners";
6+import listeners from "./events";
77
88 export async function activate(context: vscode.ExtensionContext) {
99 await setDjangoContext();
+0-10src/listeners.ts
@@ -1,10 +0,0 @@
1-import * as vscode from "vscode";
2-import DjangoProject from "./project";
3-
4-export const onDjangoProject = new vscode.EventEmitter<DjangoProject>();
5-
6-export default [
7- onDjangoProject.event((e) => {
8- console.log("Django project updated", e);
9- }),
10-];
+3-1src/providers/index.ts
@@ -1,9 +1,11 @@
11 import * as vscode from "vscode";
22 import ProjectDataProvider from "./project";
33
4+export const projectDataProvider = new ProjectDataProvider();
5+
46 export default [
57 vscode.window.registerTreeDataProvider(
68 "django-overview.project",
7- new ProjectDataProvider()
9+ projectDataProvider
810 ),
911 ];
+11-32src/providers/project.ts
@@ -4,28 +4,14 @@ import DjangoProject from "../project";
44 export default class ProjectDataProvider
55 implements vscode.TreeDataProvider<vscode.TreeItem>
66 {
7- private _onDidChangeTreeData: vscode.EventEmitter<
8- void | vscode.TreeItem | vscode.TreeItem[] | null | undefined
9- > = new vscode.EventEmitter<
10- void | vscode.TreeItem | vscode.TreeItem[] | null | undefined
11- >();
12-
13- readonly onDidChangeTreeData: vscode.Event<
14- void | vscode.TreeItem | vscode.TreeItem[] | null | undefined
15- > = this._onDidChangeTreeData.event;
16-
17- project: DjangoProject;
18-
19- constructor() {
20- this.project = vscode.workspace
21- .getConfiguration("django-overview")
22- .get("project") as DjangoProject;
23- }
24-
25- setContext(context: DjangoProject) {
26- this.project = context;
27- console.log(`Setting project to ${context}`);
28- this._onDidChangeTreeData.fire();
7+ _update = new vscode.EventEmitter<void>();
8+ onDidChangeTreeData = this._update.event;
9+ project?: DjangoProject;
10+
11+ update(project: DjangoProject) {
12+ console.log("updating the tree");
13+ this.project = project;
14+ this._update.fire();
2915 }
3016
3117 getTreeItem(element: vscode.TreeItem): vscode.TreeItem {
@@ -33,21 +19,14 @@ export default class ProjectDataProvider
3319 }
3420
3521 getChildren(element?: vscode.TreeItem): Thenable<vscode.TreeItem[]> {
36- console.log(this.project);
37- console.log(element?.contextValue);
3822 if (element === undefined) {
3923 // Return the root items
4024 return Promise.resolve([this.createModelsTreeItem()]);
4125 } else if (element.contextValue === "models") {
42- // const models = [];
43- // for (const app of this.project.apps) {
44- // for (const model of app.models) {
45- // models.push
46- // }
47- // }
26+ if (!this.project) {
27+ return Promise.resolve([]);
28+ }
4829 const models = this.project.apps.flatMap((app) => app.models);
49- console.log(models);
50- console.log("Adding the models");
5130 return Promise.resolve(
5231 models.map((model) => new vscode.TreeItem(model.name))
5332 );