Only display a diff when it is small enough

The diff display is rather slow now, probably because everything is
put into one big pre tag. Before we can fix this, we have to parse the
diff better. For now, just display a message.
This commit is contained in:
Pieter de Bie
2008-06-14 21:29:20 +02:00
parent 3e7c1f8a5e
commit 1ef4fe8a6b
3 changed files with 31 additions and 19 deletions
+18 -15
View File
@@ -1,21 +1,29 @@
var Commit = Class.create({
initialize: function(obj) {
this.raw = obj.details();
this.sha = this.raw.match(/^commit ([0-9a-f]{40,40})/)[1];
var messageStart = this.raw.indexOf("\n\n") + 2;
var diffStart = this.raw.indexOf("\ndiff ");
var match = this.raw.match(/\nauthor (.*) <(.*@.*)> ([0-9].*)/);
this.header = this.raw.substring(0, messageStart);
this.sha = this.header.match(/^commit ([0-9a-f]{40,40})/)[1];
var match = this.header.match(/\nauthor (.*) <(.*@.*)> ([0-9].*)/);
this.author_name = match[1];
this.author_email = match[2];
this.author_date = new Date(parseInt(match[3]) * 1000);
match = this.raw.match(/\ncommitter (.*) <(.*@.*)> ([0-9].*)/);
match = this.header.match(/\ncommitter (.*) <(.*@.*)> ([0-9].*)/);
this.committer_name = match[1];
this.committer_email = match[2];
this.committer_date = new Date(parseInt(match[3]) * 1000);
this.parents = $A(this.raw.match(/\nparent ([0-9a-f]{40,40})/g)).map(function(x) {
this.parents = $A(this.header.match(/\nparent ([0-9a-f]{40,40})/g)).map(function(x) {
return x.replace("\nparent ","");
});
this.message = this.raw.substring(messageStart, diffStart);
this.diff = this.raw.substring(diffStart);
},
});
@@ -35,15 +43,10 @@ var doeHet = function() {
new_row.innerHTML = "<td class='property_name'>Parent:</td><td><a href=''>" + parent + "</a></td>";
});
details = CommitObject.details();
messageStart = details.indexOf("\n\n") + 2;
diffStart = details.indexOf("diff");
header = details.substring(0, messageStart);
message = details.substring(messageStart, diffStart);
details = details.substring(diffStart);
$("message").innerHTML = message.replace(/\n/g,"<br>");
$("details").innerHTML = details;
$("message").innerHTML = commit.message.replace(/\n/g,"<br>");
if (commit.diff.length < 1000) {
$("details").innerHTML = commit.diff;
} else {
$("details").innerHTML = "This diff is currently too large to watch in detailed mode";
}
}