Squash events per day+user+folder

This commit is contained in:
Hylke Bons 2011-07-22 02:12:09 +01:00
parent b870adcfc4
commit 14da54b8b6
3 changed files with 48 additions and 4 deletions

View file

@ -28,6 +28,7 @@ namespace SparkleLib {
public string Folder;
public string Revision;
public DateTime Timestamp;
public DateTime FirstTimestamp;
public bool IsMerge = false;
public List<string> Added = new List<string> ();

View file

@ -196,7 +196,7 @@ namespace SparkleShare {
NSUrlRequest request, WebFrame frame, NSObject decision_token)
{
string url = request.Url.ToString ();
if (url.StartsWith (Path.VolumeSeparatorChar.ToString ())) {
string file_path = request.Url.ToString ();
file_path = file_path.Replace ("%20", " ");
@ -210,7 +210,7 @@ namespace SparkleShare {
if (match.Success) {
string folder_name = match.Groups [1].Value;
string revision = match.Groups [2].Value;
string note = match.Groups [3].Value.Replace ("%20", " ");
string note = match.Groups [3].Value;
Thread thread = new Thread (new ThreadStart (delegate {
SparkleShare.Controller.AddNoteToFolder (folder_name, revision, note);

View file

@ -298,7 +298,39 @@ namespace SparkleShare {
stored_activity_day.DateTime.Month == change_set.Timestamp.Month &&
stored_activity_day.DateTime.Day == change_set.Timestamp.Day) {
stored_activity_day.Add (change_set);
bool squash = false;
foreach (SparkleChangeSet existing_set in stored_activity_day) {
if (change_set.UserName.Equals (existing_set.UserName) &&
change_set.UserEmail.Equals (existing_set.UserEmail) &&
change_set.Folder.Equals (existing_set.Folder)) {
existing_set.Added.AddRange (change_set.Added);
existing_set.Edited.AddRange (change_set.Edited);
existing_set.Deleted.AddRange (change_set.Deleted);
existing_set.MovedFrom.AddRange (change_set.MovedFrom);
existing_set.MovedTo.AddRange (change_set.MovedTo);
existing_set.Notes.AddRange (change_set.Notes);
existing_set.Added = existing_set.Added.Distinct ().ToList ();
existing_set.Edited = existing_set.Edited.Distinct ().ToList ();
existing_set.Deleted = existing_set.Deleted.Distinct ().ToList ();
if (DateTime.Compare (existing_set.Timestamp, change_set.Timestamp) < 1) {
existing_set.FirstTimestamp = existing_set.Timestamp;
existing_set.Timestamp = change_set.Timestamp;
existing_set.Revision = change_set.Revision;
} else {
existing_set.FirstTimestamp = change_set.Timestamp;
}
squash = true;
}
}
if (!squash)
stored_activity_day.Add (change_set);
change_set_inserted = true;
break;
}
@ -413,10 +445,18 @@ namespace SparkleShare {
avatar_email = change_set.UserEmail;
event_entry += "</dl>";
string timestamp = change_set.Timestamp.ToString ("H:mm");
if (change_set.FirstTimestamp != null)
timestamp = change_set.FirstTimestamp.ToString ("H:mm") +
" " +
change_set.Timestamp.ToString ("H:mm");
event_entries += event_entry_html.Replace ("<!-- $event-entry-content -->", event_entry)
.Replace ("<!-- $event-user-name -->", change_set.UserName)
.Replace ("<!-- $event-avatar-url -->", "file://" + GetAvatar (avatar_email, 48))
.Replace ("<!-- $event-time -->", change_set.Timestamp.ToString ("H:mm"))
.Replace ("<!-- $event-time -->", timestamp)
.Replace ("<!-- $event-folder -->", change_set.Folder)
.Replace ("<!-- $event-revision -->", change_set.Revision)
.Replace ("<!-- $event-folder-color -->", AssignColor (change_set.Folder))
@ -1056,6 +1096,9 @@ namespace SparkleShare {
public void AddNoteToFolder (string folder_name, string revision, string note)
{
folder_name = folder_name.Replace ("%20", " ");
note = note.Replace ("%20", " ");
foreach (SparkleRepoBase repo in Repositories) {
if (repo.Name.Equals (folder_name))
repo.AddNote (revision, note);