1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2025-02-19 23:29:06 +00:00

ui: click on errors to go to line; fixed mainpath -> mainPath

This commit is contained in:
Steven Hugg 2020-08-09 15:52:26 -05:00
parent 502ee5de0f
commit 17f99b34d4
3 changed files with 48 additions and 18 deletions

View File

@ -168,6 +168,9 @@ div.has-errors {
div.is-busy-unused { div.is-busy-unused {
background-color: #8888bb !important; background-color: #8888bb !important;
} }
#error_alert_msg {
margin-right: 2em;
}
div.menu_div { div.menu_div {
position: absolute; position: absolute;
width: 200px; width: 200px;

View File

@ -16,8 +16,6 @@ export class CodeProject {
filedata : {[path:string]:FileData} = {}; filedata : {[path:string]:FileData} = {};
listings : CodeListingMap; listings : CodeListingMap;
segments : Segment[]; segments : Segment[];
// TODO: mainpath and mainPath !??!!?
mainpath : string;
mainPath : string; mainPath : string;
pendingWorkerMessages = 0; pendingWorkerMessages = 0;
tools_preloaded = {}; tools_preloaded = {};
@ -72,7 +70,7 @@ export class CodeProject {
// look for local and preset files // look for local and preset files
files.push(fn); files.push(fn);
// look for files in current (main file) folder // look for files in current (main file) folder
var dir = getFolderForPath(this.mainpath); var dir = getFolderForPath(this.mainPath);
if (dir.length > 0 && dir != 'local') // TODO if (dir.length > 0 && dir != 'local') // TODO
files.push(dir + '/' + fn); files.push(dir + '/' + fn);
} }
@ -161,14 +159,14 @@ export class CodeProject {
// TODO: test duplicate files, local paths mixed with presets // TODO: test duplicate files, local paths mixed with presets
buildWorkerMessage(depends:Dependency[]) { buildWorkerMessage(depends:Dependency[]) {
this.preloadWorker(this.mainpath); this.preloadWorker(this.mainPath);
var msg = {updates:[], buildsteps:[]}; var msg = {updates:[], buildsteps:[]};
// TODO: add preproc directive for __MAINFILE__ // TODO: add preproc directive for __MAINFILE__
var mainfilename = this.stripLocalPath(this.mainpath); var mainfilename = this.stripLocalPath(this.mainPath);
var maintext = this.getFile(this.mainpath); var maintext = this.getFile(this.mainPath);
var depfiles = []; var depfiles = [];
msg.updates.push({path:mainfilename, data:maintext}); msg.updates.push({path:mainfilename, data:maintext});
this.filename2path[mainfilename] = this.mainpath; this.filename2path[mainfilename] = this.mainPath;
for (var dep of depends) { for (var dep of depends) {
if (!dep.link) { if (!dep.link) {
msg.updates.push({path:dep.filename, data:dep.data}); msg.updates.push({path:dep.filename, data:dep.data});
@ -176,12 +174,21 @@ export class CodeProject {
} }
this.filename2path[dep.filename] = dep.path; this.filename2path[dep.filename] = dep.path;
} }
msg.buildsteps.push({path:mainfilename, files:[mainfilename].concat(depfiles), platform:this.platform_id, tool:this.platform.getToolForFilename(this.mainpath), mainfile:true}); msg.buildsteps.push({
path:mainfilename,
files:[mainfilename].concat(depfiles),
platform:this.platform_id,
tool:this.platform.getToolForFilename(this.mainPath),
mainfile:true});
for (var dep of depends) { for (var dep of depends) {
if (dep.data && dep.link) { if (dep.data && dep.link) {
this.preloadWorker(dep.filename); this.preloadWorker(dep.filename);
msg.updates.push({path:dep.filename, data:dep.data}); msg.updates.push({path:dep.filename, data:dep.data});
msg.buildsteps.push({path:dep.filename, files:[dep.filename].concat(depfiles), platform:this.platform_id, tool:this.platform.getToolForFilename(dep.path)}); msg.buildsteps.push({
path:dep.filename,
files:[dep.filename].concat(depfiles),
platform:this.platform_id,
tool:this.platform.getToolForFilename(dep.path)});
} }
} }
return msg; return msg;
@ -260,8 +267,8 @@ export class CodeProject {
} }
sendBuild() { sendBuild() {
if (!this.mainpath) throw Error("need to call setMainFile first"); if (!this.mainPath) throw Error("need to call setMainFile first");
var maindata = this.getFile(this.mainpath); var maindata = this.getFile(this.mainPath);
// if binary blob, just return it as ROM // if binary blob, just return it as ROM
if (maindata instanceof Uint8Array) { if (maindata instanceof Uint8Array) {
this.isCompiling = true; this.isCompiling = true;
@ -288,14 +295,14 @@ export class CodeProject {
updateFile(path:string, text:FileData) { updateFile(path:string, text:FileData) {
this.updateFileInStore(path, text); // TODO: isBinary this.updateFileInStore(path, text); // TODO: isBinary
this.filedata[path] = text; this.filedata[path] = text;
if (this.okToSend() && this.mainpath) { if (this.okToSend() && this.mainPath) {
if (this.callbackBuildStatus) this.callbackBuildStatus(true); if (this.callbackBuildStatus) this.callbackBuildStatus(true);
this.sendBuild(); this.sendBuild();
} }
}; };
setMainFile(path:string) { setMainFile(path:string) {
this.mainpath = path; this.mainPath = path;
if (this.callbackBuildStatus) this.callbackBuildStatus(true); if (this.callbackBuildStatus) this.callbackBuildStatus(true);
this.sendBuild(); this.sendBuild();
} }

View File

@ -1066,14 +1066,34 @@ async function updateSelector() {
}); });
} }
function getErrorElement(err : WorkerError) {
var span = $('<p/>');
if (err.path != null) {
var s = err.line ? `(${err.path}:${err.line})` : `(${err.path})`
var link = $('<a/>').text(s);
var path = err.path;
// TODO: hack because examples/foo.a only gets listed as foo.a
if (path == getCurrentMainFilename()) path = current_project.mainPath;
// click link to open file, if it's available...
if (projectWindows.isWindow(path)) {
link.click((ev) => {
var wnd = projectWindows.createOrShow(path);
if (wnd instanceof Views.SourceEditor) {
wnd.setCurrentLine(err.line, true);
}
});
}
span.append(link);
span.append('&nbsp;');
}
span.append($('<span/>').text(err.msg));
return span;
}
function showErrorAlert(errors : WorkerError[]) { function showErrorAlert(errors : WorkerError[]) {
var div = $("#error_alert_msg").empty(); var div = $("#error_alert_msg").empty();
for (var err of errors.slice(0,10)) { for (var err of errors.slice(0,10)) {
var s = ''; div.append(getErrorElement(err));
if (err.path) s += err.path + ":";
if (err.line) s += err.line + ":";
s += err.msg;
div.append($("<p>").text(s));
} }
$("#error_alert").show(); $("#error_alert").show();
} }