diff --git a/CHANGELOG.md b/CHANGELOG.md
index 25ec25b..9766538 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,14 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
### Fixed:
- [Issue 1][#1] - `\n` is now represented as ´
´-tag
- [Issue 2][#2] - Markdown is now represented as HTML
+
+## [0.0.5] - 2019-04-12
+### Added:
+- Child items to root items. Collapsable item now shows assignee, state, id and list all labels from the issue
+### Refactored:
+- Created two methods that are used in both classes (the closed and the open issues provider)
+
+
## [Unreleased]
- Initial release
diff --git a/package-lock.json b/package-lock.json
index 01140d4..681c165 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "gitea-vscode",
- "version": "0.0.3",
+ "version": "0.0.4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -62,6 +62,7 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
@@ -304,11 +305,6 @@
"safer-buffer": "^2.1.0"
}
},
- "entities": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
- "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
- },
"es6-promise": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
@@ -594,36 +590,11 @@
"verror": "1.10.0"
}
},
- "linkify-it": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz",
- "integrity": "sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg==",
- "requires": {
- "uc.micro": "^1.0.1"
- }
- },
- "markdown-it": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
- "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",
- "requires": {
- "argparse": "^1.0.7",
- "entities": "~1.1.1",
- "linkify-it": "^2.0.0",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- }
- },
"marked": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/marked/-/marked-0.6.2.tgz",
"integrity": "sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA=="
},
- "mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
- },
"mime-db": {
"version": "1.38.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
@@ -865,7 +836,8 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
},
"sshpk": {
"version": "1.16.1",
@@ -974,11 +946,6 @@
"integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A==",
"dev": true
},
- "uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
- },
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
diff --git a/package.json b/package.json
index c6e0bc4..e4b6edd 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"displayName": "Gitea-VSCode",
"description": "Gitea Issue Tracker for vs-code",
"publisher": "IJustDev",
- "version": "0.0.4",
+ "version": "0.0.5",
"engines": {
"vscode": "^1.32.0"
},
diff --git a/src/issue.ts b/src/issue.ts
index 61fc5e8..eb41703 100644
--- a/src/issue.ts
+++ b/src/issue.ts
@@ -7,8 +7,8 @@ export class Issue extends vscode.TreeItem {
public body: string,
public issueState: string,
public assignee: string,
- public firstlabel: string,
- public readonly collapsibleState: vscode.TreeItemCollapsibleState,
+ public labels: any[],
+ public collapsibleState: vscode.TreeItemCollapsibleState,
public readonly command?: vscode.Command) {
super(label, collapsibleState);
}
diff --git a/src/issueProvider.ts b/src/issueProvider.ts
index 677eeee..41b5387 100644
--- a/src/issueProvider.ts
+++ b/src/issueProvider.ts
@@ -1,7 +1,6 @@
import axios from "axios";
import * as vscode from "vscode";
-// const MarkdownIt = require('markdown-it'), md = new MarkdownIt();
const marked = require("marked");
import { Issue } from "./issue";
import { RepositoryInformationManager } from "./configurationProvider";
@@ -40,31 +39,10 @@ export class OpenIssuesProvider implements vscode.TreeDataProvider {
let stop = false;
for (let i = 0; i !== 10; i++) {
await axios.get(repoUri + "?page=" + i, { headers: { Authorization: "token " + token } }).then(res => {
- for (const issue of res.data) {
- const id = issue["number"];
- let isAlreadyInList = false;
- this.issueList.forEach((issueOfList) => {
- if (id === issueOfList.issueId) {
- isAlreadyInList = true;
- }
- });
- if (isAlreadyInList) {
- continue;
- }
- const title = issue["title"];
- const body = marked(issue["body"]);
- const state = issue["state"];
- const assignee = issue["assignee"] === null ? "None" : issue["assignee"]["username"];
- const tmpIssue = new Issue("#" + id + " - " + title, id, body, state, assignee, "Frontend", vscode.TreeItemCollapsibleState.None);
- const issueForList = new Issue(tmpIssue.label, tmpIssue.issueId, tmpIssue.body, tmpIssue.issueState,
- tmpIssue.assignee, tmpIssue.firstlabel, tmpIssue.collapsibleState, {
- command: 'giteaIssues.openIssue',
- title: '',
- arguments: [tmpIssue],
- });
- this.issueList.push(issueForList);
- }
- }).catch(() => {
+ console.log(res.data);
+ parseToIssues(res, this.issueList);
+ }).catch((err) => {
+ console.log(err);
stop = true;
vscode.window.showErrorMessage("Can't fetch issues; HTTP Error!");
return;
@@ -75,7 +53,7 @@ export class OpenIssuesProvider implements vscode.TreeDataProvider {
}
}
getChildren(element?: Issue): vscode.ProviderResult {
- return this.issueList;
+ return getChildren(element, this.issueList);
}
@@ -111,33 +89,9 @@ export class ClosedIssuesProvider implements vscode.TreeDataProvider {
let stop = false;
for (let i = 0; i !== 10; i++) {
await axios.get(repoUri + "?state=closed&page=" + i, { headers: { Authorization: "token " + token } }).then(res => {
- for (const issue of res.data) {
- const id = issue["number"];
- let isAlreadyInList = false;
- this.issueList.forEach((issueOfList) => {
- if (id === issueOfList.issueId) {
- isAlreadyInList = true;
- }
- });
- if (isAlreadyInList) {
- continue;
- }
- const title = issue["title"];
- const body = marked(issue["body"]);
- const state = issue["state"];
- const assignee = issue["assignee"] === null ? "None" : issue["assignee"]["username"];
- const tmpIssue = new Issue("#" + id + " - " + title, id, body, state, assignee, "Frontend", vscode.TreeItemCollapsibleState.None);
- const issueForList = new Issue(tmpIssue.label, tmpIssue.issueId, tmpIssue.body, tmpIssue.issueState,
- tmpIssue.assignee, tmpIssue.firstlabel, tmpIssue.collapsibleState, {
- command: 'giteaIssues.openIssue',
- title: '',
- arguments: [tmpIssue],
- });
- this.issueList.push(issueForList);
- }
+ parseToIssues(res, this.issueList);
}).catch(() => {
- stop = true;
- vscode.window.showErrorMessage("Can't fetch issues; HTTP Error!");
+ stop = true; vscode.window.showErrorMessage("Can't fetch issues; HTTP Error!");
return;
});
if (stop) {
@@ -146,8 +100,53 @@ export class ClosedIssuesProvider implements vscode.TreeDataProvider {
}
}
getChildren(element?: Issue): vscode.ProviderResult {
- return this.issueList;
+ return getChildren(element, this.issueList);
}
+}
+export function getChildren(element: Issue | undefined, issueList: Issue[]) {
+ for (const issue of issueList) {
+ if (element === issue) {
+ let childItems: vscode.TreeItem[] = [
+ new vscode.TreeItem("Assignee - " + element.assignee, vscode.TreeItemCollapsibleState.None),
+ new vscode.TreeItem("State - " + element.issueState, vscode.TreeItemCollapsibleState.None),
+ new vscode.TreeItem("ID - " + element.issueId, vscode.TreeItemCollapsibleState.None)
+ ];
+ for (let i = 0; i != element.labels.length; i++) {
+ const label = element.labels[i];
+ childItems.push(new vscode.TreeItem(label.name, vscode.TreeItemCollapsibleState.None));
+ }
+ return Promise.resolve(childItems);
+ }
+ }
+ return issueList;
+}
+
+export function parseToIssues(res: any, issueList: any[], collapsibleState: vscode.TreeItemCollapsibleState = vscode.TreeItemCollapsibleState.Collapsed) {
+ for (const issue of res.data) {
+ const id = issue["number"];
+ let isAlreadyInList = false;
+ issueList.forEach((issueOfList) => {
+ if (id === issueOfList.issueId) {
+ isAlreadyInList = true;
+ }
+ });
+ if (isAlreadyInList) {
+ continue;
+ }
+ const title = issue["title"];
+ const body = marked(issue["body"]);
+ const state = issue["state"];
+ const assignee = issue["assignee"] === null ? "None" : issue["assignee"]["username"];
+ const labels = issue["labels"];
+ const tmpIssue = new Issue("#" + id + " - " + title, id, body, state, assignee, labels, collapsibleState);
+ const issueForList = new Issue(tmpIssue.label, tmpIssue.issueId, tmpIssue.body, tmpIssue.issueState,
+ tmpIssue.assignee, tmpIssue.labels, tmpIssue.collapsibleState, {
+ command: 'giteaIssues.openIssue',
+ title: '',
+ arguments: [tmpIssue],
+ });
+ issueList.push(issueForList);
+ }
}
\ No newline at end of file