16 package fis.base.ui |
16 package fis.base.ui |
17 |
17 |
18 import net.liftweb.http.Templates |
18 import net.liftweb.http.Templates |
19 import net.liftweb.util._ |
19 import net.liftweb.util._ |
20 import net.liftweb.util.Helpers._ // CSS transforms |
20 import net.liftweb.util.Helpers._ // CSS transforms |
21 import scala.xml.NodeSeq |
21 import scala.xml.{NodeSeq, Text} |
22 |
22 |
23 /** |
23 /** |
24 * Template driven table, compatible w/ datatables.net. |
24 * Template driven table, compatible w/ datatables.net. |
25 * Template location: <code>/templates-hidden/datatable</code>. |
25 * Template location: <code>/templates-hidden/datatable</code>. |
26 */ |
26 */ |
27 trait FieldTable[T] { |
27 trait FieldTable[T] { |
28 protected def load: NodeSeq = |
28 protected def load: NodeSeq = |
29 Templates(List("templates-hidden", "datatable")) openOr NodeSeq.Empty |
29 Templates(List("templates-hidden", "datatable")) openOr NodeSeq.Empty |
30 |
30 |
31 protected def cols(cs: Iterable[ReadableField]) = |
31 protected def cols(cs: Iterable[ReadableField]) = |
32 ".field-name *" #> (cs map(_.displayName)) |
32 ".field-name *" #> (cs map { f => |
|
33 f.displayNameHtml openOr Text(f.displayName) }) |
33 |
34 |
34 protected def cells(cs: Iterable[T]) = |
35 protected def cells(cs: Iterable[T]) = |
35 ".r" #> cs.map { v => "td *" #> (fields(v) map { _.asHtml }) } |
36 ".r" #> cs.map { v => "td *" #> (fields(v) map { _.asHtml }) } |
36 |
37 |
37 protected def fields(v: T): Iterable[ReadableField] |
38 protected def fields(v: T): Iterable[ReadableField] |