From bba78d1b0aae668dc4351cc3049539690e22d223 Mon Sep 17 00:00:00 2001 From: Mihai Siia Date: Tue, 4 Jun 2024 16:15:43 -0700 Subject: [PATCH 1/2] improve generated report, add activity button with open folder & set readonly func. Add comment deletion, editing, line number of comment as comment ID, proper comment authoring. --- media/logo.png | Bin 13380 -> 5863 bytes output/data.json | 2 +- package.json | 62 ++++++++++++++++++- report_generator/report_generator/main.py | 42 +++++++++---- src/cursorPosition.ts | 11 ++++ src/extension.ts | 4 +- src/findCapitalizedPrimitiveTypes.ts | 2 +- src/noteComment.ts | 72 ++++++++++++++++++++-- 8 files changed, 175 insertions(+), 20 deletions(-) create mode 100644 src/cursorPosition.ts diff --git a/media/logo.png b/media/logo.png index e97c3aebec8c2aa1b683a16c40f0251834cfa1dc..17100f0300db1a36e63a4ba1b52715a8cee787b7 100644 GIT binary patch literal 5863 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 Ky^kzdnf-4e_PFi< literal 13380 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�UIsffv3_C9_e4CP1z9!`0lG>}-TR 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 diff --git a/output/data.json b/output/data.json index ec9168a..450a54c 100644 --- a/output/data.json +++ b/output/data.json @@ -1 +1 @@ -{"3":["Improper Capitalized Primitive Type"],"4":["Improper Capitalized Primitive Type"],"7":["Lowercase ENUM found!"],"18":["Improper Capitalized Primitive Type","Improper Capitalized Primitive Type"],"19":["Improper Capitalized Primitive Type","Improper Capitalized Primitive Type"],"20":["Improper Capitalized Primitive Type"],"35":["Improper Capitalized Primitive Type"],"179":["enum fruit"]} \ No newline at end of file +{"3":["Improper Capitalized Primitive Type"],"4":["Improper Capitalized Primitive Type"],"11":["Improper Capitalized Primitive Type","Improper Capitalized Primitive Type"],"12":["Improper Capitalized Primitive Type","Improper Capitalized Primitive Type"],"13":["Improper Capitalized Primitive Type"],"28":["Improper Capitalized Primitive Type"]} \ No newline at end of file diff --git a/package.json b/package.json index 7207e18..bd7f040 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ ], "activationEvents": [ "onLanguage:json", - "onLanguage:jsonc" + "onLanguage:jsonc", + "onView:gradefast-home" ], "main": "./out/extension.js", "contributes": { @@ -28,10 +29,26 @@ "id": "package-explorer", "title": "GradeFast", "icon": "media/logo.svg" - } + }, + { + "id": "gradefast", + "title": "GradeFast", + "icon": "media/logo.png" + } ] }, "views": { + "gradefast":[ + { + "id": "gradefast-home", + "name": "Home", + "type": "tree" + }, + { + "id": "gradefast-section", + "name": "Section" + } + ], "package-explorer": [ { "id": "nodeDependencies", @@ -43,7 +60,29 @@ "explorer": [ ] }, + "viewsWelcome": [ + { + "view": "gradefast-home", + "contents": "Open a student's assignment directory to begin grading. \n[Pick a folder](command:workbench.action.files.openFolder)" + } + ], "commands": [ + { + "command": "mywiki.editNote", + "title": "Edit", + "icon": { + "dark": "resources/edit_inverse.svg", + "light": "resources/edit.svg" + } + }, + { + "command": "mywiki.saveNote", + "title": "Save" + }, + { + "command": "mywiki.cancelsaveNote", + "title": "Cancel" + }, { "command": "mywiki.createNote", "title": "Create Note", @@ -105,6 +144,18 @@ ], "view/item/context": [ ], + "comments/comment/context": [ + { + "command": "mywiki.cancelsaveNote", + "group": "inline@1", + "when": "commentController == comment-sample" + }, + { + "command": "mywiki.saveNote", + "group": "inline@2", + "when": "commentController == comment-sample" + } + ], "comments/commentThread/context": [ { "command": "mywiki.createNote", @@ -112,6 +163,13 @@ "when": "commentController == comment-sample && commentThreadIsEmpty" } ], + "comments/comment/title": [ + { + "command": "mywiki.editNote", + "group": "group@1", + "when": "commentController == comment-sample" + } + ], "comments/commentThread/title": [ { "command": "mywiki.deleteNote", diff --git a/report_generator/report_generator/main.py b/report_generator/report_generator/main.py index c1bbdb9..d312022 100644 --- a/report_generator/report_generator/main.py +++ b/report_generator/report_generator/main.py @@ -3,6 +3,7 @@ ''' from dotenv import load_dotenv from pylatex import Document, Section, LineBreak, NewPage, PageStyle, Package +from pylatex.base_classes import Environment from pylatex.utils import bold, NoEscape import os @@ -13,6 +14,15 @@ from util.parse_json import json_to_dict # from classes.Assignment import Assignment +class syntax_code(Environment): + _latex_name = 'minted' + #packages = [Package('minted')] + start_arguments = 'java' + escape = False + content_separator = '\n' + def __init__(self, *, options=None, arguments=None, start_arguments=start_arguments, **kwargs): + super().__init__(options=options, arguments=arguments, start_arguments=start_arguments, **kwargs) + def format_doc(): geometry_options = { @@ -21,34 +31,44 @@ def format_doc(): doc = Document(geometry_options=geometry_options) doc.change_document_style('empty') + doc.packages.append(Package(name='minted')) + doc.packages.append(Package(name='setspace')) + doc.preamble.append(NoEscape(r'\SetSinglespace{1.1}')) + doc.preamble.append(NoEscape(r'\singlespacing')) return doc -def assemble_pdf(json_file_path: str): +def assemble_pdf(json_file_path: str, assignment_path: str): + assignment = open(assignment_path).read().splitlines() + # Load JSON data from file with open(json_file_path, 'r') as f: data = json.load(f) - + + data: dict # load path to pdflatex dotenv_path = path.join(path.dirname(__file__), '.env') load_dotenv(dotenv_path) - print(dotenv_path) PDFLATEX_PATH = os.environ.get('PDFLATEX_PATH') doc = format_doc() keys = list(data.keys()) + print(keys) with doc.create(Section(NoEscape(r'\centerline{' + keys[0] + '}'), numbering=False)): - for key in keys: - doc.append(key + ":") - doc.append(data.get(key)) - doc.append('\n') - - doc.append(NewPage()) + for count, line in enumerate(assignment): + if data.get(str(count + 1)) is not None: + text = data.get(str(count + 1)) + doc.append(str(text)) + else: + with doc.create(syntax_code()): + # text = ''.join([line]) + text = (line) + doc.append(text) - doc.generate_pdf('report_out/report_out', clean_tex=False, compiler=PDFLATEX_PATH) + doc.generate_pdf('out/out', clean_tex=False, compiler=PDFLATEX_PATH, compiler_args=['-shell-escape']) # doc = format_doc() # doc.append(NewPage()) # doc.generate_pdf('out/out', clean_tex=False, compiler='pdflatex', silent=False) if __name__ == '__main__': - assemble_pdf(sys.argv[1]) + assemble_pdf(sys.argv[1], sys.argv[2]) diff --git a/src/cursorPosition.ts b/src/cursorPosition.ts new file mode 100644 index 0000000..4b4c224 --- /dev/null +++ b/src/cursorPosition.ts @@ -0,0 +1,11 @@ +import * as vscode from 'vscode'; + +export function cursorPosition() { + const editor = vscode.window.activeTextEditor; + if (editor === undefined) { + return; + } + const doc = editor.document; + const position = editor.selection.active; + return doc.lineAt(position); +} \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 7f6f97b..f8b36b6 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -13,10 +13,12 @@ import { findLowercaseEnums } from './findLowercaseEnums'; import { findConstantCap} from './findConstantCap'; const myMap: Map = new Map(); -const filePath = 'C:\\Users\\Will\\Desktop\\cww\\gradeFast-1.0\\output\\data.json'; +const filePath = '/Users/mihaisiia/GradeFast/gradeFast-1.0/output/data.json'; export function activate(context: vscode.ExtensionContext) { + vscode.commands.executeCommand('workbench.action.files.setActiveEditorReadonlyInSession'); + const disposable = vscode.commands.registerCommand('extension.findCapitalizedPrimitiveTypes', () => { findCapitalizedPrimitiveTypes(myMap); convertMapToJson(myMap, filePath); diff --git a/src/findCapitalizedPrimitiveTypes.ts b/src/findCapitalizedPrimitiveTypes.ts index a53f69d..fb9b2ef 100644 --- a/src/findCapitalizedPrimitiveTypes.ts +++ b/src/findCapitalizedPrimitiveTypes.ts @@ -1,7 +1,7 @@ import * as vscode from 'vscode'; import * as fs from 'fs'; -const outputFile = '/Users/willscomputer/gradeFast-1.0/src/errorTxt'; +const outputFile = '/Users/mihaisiia/GradeFast/gradeFast-1.0/src/errorTxt'; export function findCapitalizedPrimitiveTypes(myMap: Map): Map { vscode.window.showInformationMessage('Naming Convention Mistake!! Highlighted in RED'); diff --git a/src/noteComment.ts b/src/noteComment.ts index 6f1cd11..6d3e8e9 100644 --- a/src/noteComment.ts +++ b/src/noteComment.ts @@ -1,20 +1,23 @@ +import { userInfo } from 'os'; import * as vscode from 'vscode'; +import { cursorPosition } from './cursorPosition'; //This class is a NoteComment object that is used inside the commentController API. -let commentId = 1; +// let commentId = 1; class NoteComment implements vscode.Comment { id: number; label: string | undefined; savedBody: string | vscode.MarkdownString; // for the Cancel button constructor( + public commentId: number, public body: string | vscode.MarkdownString, public mode: vscode.CommentMode, public author: vscode.CommentAuthorInformation, public parent?: vscode.CommentThread, public contextValue?: string ) { - this.id = ++commentId; + this.id = commentId; this.savedBody = this.body; } } @@ -22,17 +25,78 @@ class NoteComment implements vscode.Comment { class NoteCommentController { private static replyNote(reply: vscode.CommentReply) { const thread = reply.thread; - const newComment = new NoteComment(reply.text, vscode.CommentMode.Preview, { name: 'vscode' }, thread, thread.comments.length ? 'canDelete' : undefined); + const newComment = new NoteComment(reply.thread.range.end.line, reply.text, vscode.CommentMode.Preview, { name: userInfo().username }, thread, thread.comments.length ? 'canDelete' : undefined); thread.canReply = false; thread.comments = [...thread.comments, newComment]; + console.log(newComment.id); + // console.log(cursorPosition()); } //These two commands allow the user to create notes and delete them. static registerCommands(context: vscode.ExtensionContext) { context.subscriptions.push(vscode.commands.registerCommand('mywiki.createNote', (reply: vscode.CommentReply) => { - NoteCommentController.replyNote(reply); + // eslint-disable-next-line no-unsafe-optional-chaining + const lineNumber = vscode.window.activeTextEditor?.selection.active.line; + if (lineNumber !== undefined) { + console.log(lineNumber); + } + NoteCommentController.replyNote(reply); + console.log(vscode.workspace.onDidChangeTextDocument); + })); + context.subscriptions.push(vscode.commands.registerCommand('mywiki.cancelsaveNote', (comment: NoteComment) => { + if (!comment.parent) { + return; + } + + comment.parent.comments = comment.parent.comments.map(cmt => { + if ((cmt as NoteComment).id === comment.id) { + cmt.body = (cmt as NoteComment).savedBody; + cmt.mode = vscode.CommentMode.Preview; + } + + return cmt; + }); + })); + + context.subscriptions.push(vscode.commands.registerCommand('mywiki.saveNote', (comment: NoteComment) => { + if (!comment.parent) { + return; + } + const lineNumber = vscode.window.activeTextEditor?.selection.active.line; + if (lineNumber !== undefined) { + console.log(lineNumber); + } + + comment.parent.comments = comment.parent.comments.map(cmt => { + if ((cmt as NoteComment).id === comment.id) { + (cmt as NoteComment).savedBody = cmt.body; + cmt.mode = vscode.CommentMode.Preview; + } + + return cmt; + }); + })); + + context.subscriptions.push(vscode.commands.registerCommand('mywiki.editNote', (comment: NoteComment) => { + if (!comment.parent) { + return; + } + const lineNumber = vscode.window.activeTextEditor?.selection.active.line; + if (lineNumber !== undefined) { + console.log(lineNumber); + } + + comment.parent.comments = comment.parent.comments.map(cmt => { + if ((cmt as NoteComment).id === comment.id) { + cmt.mode = vscode.CommentMode.Editing; + } + + return cmt; + }); + })); + context.subscriptions.push(vscode.commands.registerCommand('mywiki.deleteNote', (thread: vscode.CommentThread) => { thread.dispose(); })); From 60d04eed2883b71e46d4b04a4061041592b91da1 Mon Sep 17 00:00:00 2001 From: Mihai Siia Date: Wed, 5 Jun 2024 00:44:27 -0700 Subject: [PATCH 2/2] minor changes to report_generator --- package.json | 6 ++- report_generator/report_generator/main.py | 6 +-- src/badSwitch.ts | 1 + src/extension.ts | 61 ++++++++++++++++++++++- 4 files changed, 68 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index fa4fcbf..e1ad70f 100644 --- a/package.json +++ b/package.json @@ -63,10 +63,14 @@ "viewsWelcome": [ { "view": "gradefast-home", - "contents": "Open a student's assignment directory to begin grading. \n[Pick a folder](command:workbench.action.files.openFolder)" + "contents": "Open a student's assignment directory to begin grading. \n[Pick a folder](command:workbench.action.files.openFolder)\n[Generate Report](command:extension.generateReport)" } ], "commands": [ + { + "command": "extension.generateReport", + "title": "Generate Report" + }, { "command": "mywiki.editNote", "title": "Edit", diff --git a/report_generator/report_generator/main.py b/report_generator/report_generator/main.py index d312022..072ca96 100644 --- a/report_generator/report_generator/main.py +++ b/report_generator/report_generator/main.py @@ -37,7 +37,7 @@ def format_doc(): doc.preamble.append(NoEscape(r'\singlespacing')) return doc -def assemble_pdf(json_file_path: str, assignment_path: str): +def assemble_pdf(json_file_path: str, assignment_path: str, out_dir: str='./out/out'): assignment = open(assignment_path).read().splitlines() # Load JSON data from file @@ -54,7 +54,7 @@ def assemble_pdf(json_file_path: str, assignment_path: str): keys = list(data.keys()) print(keys) - with doc.create(Section(NoEscape(r'\centerline{' + keys[0] + '}'), numbering=False)): + with doc.create(Section(NoEscape(r'\centerline{Code Report}'), numbering=False)): for count, line in enumerate(assignment): if data.get(str(count + 1)) is not None: text = data.get(str(count + 1)) @@ -65,7 +65,7 @@ def assemble_pdf(json_file_path: str, assignment_path: str): text = (line) doc.append(text) - doc.generate_pdf('out/out', clean_tex=False, compiler=PDFLATEX_PATH, compiler_args=['-shell-escape']) + doc.generate_pdf(out_dir, clean_tex=False, compiler=PDFLATEX_PATH, compiler_args=['-shell-escape']) # doc = format_doc() # doc.append(NewPage()) # doc.generate_pdf('out/out', clean_tex=False, compiler='pdflatex', silent=False) diff --git a/src/badSwitch.ts b/src/badSwitch.ts index 38eac7a..d7b79ed 100644 --- a/src/badSwitch.ts +++ b/src/badSwitch.ts @@ -1,3 +1,4 @@ +/* eslint-disable prefer-const */ import * as vscode from 'vscode'; export function badSwitch(myMap: Map) { diff --git a/src/extension.ts b/src/extension.ts index 5161b6c..028e9df 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,6 +1,7 @@ 'use strict'; import * as vscode from 'vscode'; +import * as path from 'path'; import { NoteCommentController } from './noteComment'; import { findCapitalizedPrimitiveTypes } from './findCapitalizedPrimitiveTypes'; import { findLowercaseClassOrInterface } from './findLowercaseClassOrInterface'; @@ -14,6 +15,8 @@ import { findConstantCap} from './findConstantCap'; import { longMethod } from './longMethod'; import { longParameters } from './longParameters'; import { badSwitch } from './badSwitch'; +import { exec } from 'child_process'; +import { match } from 'assert'; const myMap: Map = new Map(); @@ -23,6 +26,12 @@ const filePath = '/Users/mihaisiia/GradeFast/gradeFast-1.0/output/data.json'; export function activate(context: vscode.ExtensionContext) { vscode.commands.executeCommand('workbench.action.files.setActiveEditorReadonlyInSession'); + + const pdfMaker = new MakePdf(context); + + const generateReport = vscode.commands.registerCommand('extension.generateReport', () => { + pdfMaker.runPython(); + }); const disposable = vscode.commands.registerCommand('extension.findCapitalizedPrimitiveTypes', () => { findCapitalizedPrimitiveTypes(myMap); @@ -30,8 +39,7 @@ export function activate(context: vscode.ExtensionContext) { const create = vscode.commands.registerCommand('extension.createJSON', ()=> { convertMapToJson(myMap, filePath); - } - ) + } ); const disposable2 = vscode.commands.registerCommand('extension.findCapitalizedMethodName', () => { findCapitalizedMethodName(myMap); @@ -79,3 +87,52 @@ export function activate(context: vscode.ExtensionContext) { NoteCommentController.registerCommands(context); } + +class MakePdf { + // private _outputchannel: vscode.OutputChannel; + // private _context: vscode.ExtensionContext; + private _path: string; + private _activeFileName: string | undefined; + private _activeFilePath: string | undefined; + private _activeDir: string | undefined; + // private data: string = JSON.stringify() + + + constructor(context: vscode.ExtensionContext) { + // this._context = context; + this._path = filePath; + this._activeFileName = vscode.window.activeTextEditor?.document.fileName; + if (this._activeFileName !== undefined) { + this._activeFilePath = path.join(this._activeFileName); + } + if (vscode.workspace.workspaceFolders !== undefined) { + this._activeDir = vscode.workspace.workspaceFolders[0].uri.path; + } + // this._outputchannel = vscode.window.createOutputChannel() + } + + public runPython(): void { + console.log(this); + if (this._activeFileName !== undefined && this._activeDir !== undefined) { + const exp = /.*(?=\.)/; + let pdfName = this._activeFileName.match(exp)?.[0]; + + if (pdfName === undefined) { return; } + + pdfName = this._activeDir.concat(pdfName); + console.log(pdfName); + const pdfCommand = `python3 /Users/mihaisiia/GradeFast/gradeFast-1.0/report_generator/report_generator/main.py ${ this._path } ${ this._activeDir + this._activeFilePath } ${ pdfName }`; + console.log(pdfCommand); + const child = exec(pdfCommand); + + child.on('error', (e) => { + console.error(e); + }); + + child.on('exit', (e) => { + // this._runPython(); + console.log(e); + }); + } + } +}