# HG changeset patch # User wenzelm # Date 1494166489 -7200 # Node ID 05c6a29c9132169403e4ed4fb258ab9b5700d9cc # Parent 787e5ee6ef53b5f63ffe8511cd053208f892487c clarified explicit Build_Status.Data operations; more HTML output; diff -r 787e5ee6ef53 -r 05c6a29c9132 src/Pure/Admin/build_status.scala --- a/src/Pure/Admin/build_status.scala Sun May 07 16:04:19 2017 +0200 +++ b/src/Pure/Admin/build_status.scala Sun May 07 16:14:49 2017 +0200 @@ -44,7 +44,12 @@ !timing.is_zero && timing.elapsed >= elapsed_threshold } - type Data = Map[String, Map[String, List[Entry]]] + sealed case class Data(date: Date, entries: Map[String, Map[String, List[Entry]]]) + { + def sorted_entries: List[(String, List[(String, List[Entry])])] = + entries.toList.sortBy(_._1).map({ case (name, session_entries) => + (name, session_entries.toList.sortBy(_._2.head.timing.elapsed.ms).reverse) }) + } /* read data */ @@ -57,7 +62,8 @@ elapsed_threshold: Time = Time.zero, verbose: Boolean = false): Data = { - var data: Data = Map.empty + val date = Date.now() + var data_entries = Map.empty[String, Map[String, List[Entry]]] val store = Build_Log.store(options) using(store.open_database())(db => @@ -113,51 +119,43 @@ Build_Log.Data.ml_timing_cpu, Build_Log.Data.ml_timing_gc)) - val session_entries = data.getOrElse(name, Map.empty) + val session_entries = data_entries.getOrElse(name, Map.empty) val entries = session_entries.getOrElse(session, Nil) - data += (name -> (session_entries + (session -> (entry :: entries)))) + data_entries += (name -> (session_entries + (session -> (entry :: entries)))) } }) } }) - for { - (name, session_entries) <- data - session_entries1 <- - { - val session_entries1 = - for { - (session, entries) <- session_entries - if entries.filter(_.check(elapsed_threshold)).length >= 3 - } yield (session, entries) - if (session_entries1.isEmpty) None - else Some(session_entries1) - } - } yield (name, session_entries1) + Data(date, + for { + (name, session_entries) <- data_entries + session_entries1 <- + { + val session_entries1 = + for { + (session, entries) <- session_entries + if entries.filter(_.check(elapsed_threshold)).length >= 3 + } yield (session, entries) + if (session_entries1.isEmpty) None + else Some(session_entries1) + } + } yield (name, session_entries1)) } /* present data */ - private val html_header = """ - -