Removed stale snippet
[dataminer.git] / src / main / scala / net / dataminer / view / CrudView.scala
blob763db634411f9247aae3e9f098b73749469521dc
1 package net.dataminer.view
3 import _root_.net.liftweb.http._
4 import S._
5 import _root_.net.liftweb.util._
6 import Helpers._
7 import _root_.net.liftweb.mapper._
8 import _root_.scala.xml._
9 import _root_.net.dataminer.model._
11 trait CrudView[T <: Mapper[T]] extends LiftView {
12 override def dispatch = {
13 case "index" => list _
15 protected val metaMapper: T with MetaMapper[T]
16 protected val columns: List[Pair[NodeSeq,(T) => NodeSeq]]
17 private def listTemplate:NodeSeq = TemplateFinder.findAnyTemplate("templates-hidden" :: "crud" :: "list" :: Nil) openOr Text("")
18 private def headers() =
19 columns.flatMap({
20 case (header, _) =>
21 bind(
22 "header", chooseTemplate("entities", "headers", listTemplate),
23 "content" -> header)})
24 private def values() =
25 metaMapper.findAll.flatMap({
26 entity => {
27 val values = columns.flatMap({
28 case (_, extractor) =>
29 bind(
30 "value", chooseTemplate("entity", "value", listTemplate),
31 "content" -> extractor(entity))})
32 bind(
33 "entity", chooseTemplate("entities", "values", listTemplate),
34 "value" -> values)
35 }})
36 private def list(): NodeSeq =
37 bind("entities", listTemplate,
38 "headers" -> headers(),
39 "values" -> values())