85bf710ab532dcaa Datatables date sorting
authorTomas Zeman <tzeman@volny.cz>
Tue, 05 Jun 2012 15:40:45 +0200
changeset 105 66aeb6b3a3a7
parent 104 ef29ecada49d
child 106 83d4c4990086
85bf710ab532dcaa Datatables date sorting
src/main/scala/fis/base/ui/FieldTable.scala
src/main/scala/fis/pm/ui/ProjectTable.scala
src/main/scala/fis/pm/ui/TaskSnippet.scala
src/main/scala/fis/pm/ui/TaskTable.scala
src/main/webapp/jquery/js/dataTables.dateFormat.js
src/main/webapp/templates-hidden/datatable.html
--- a/src/main/scala/fis/base/ui/FieldTable.scala	Tue Jun 05 15:40:45 2012 +0200
+++ b/src/main/scala/fis/base/ui/FieldTable.scala	Tue Jun 05 15:40:45 2012 +0200
@@ -38,7 +38,9 @@
   protected def fields(v: T): Iterable[ReadableField]
 
   protected def build(header: T, rows: Iterable[T]): NodeSeq =
-    (cols(fields(header)) & cells(rows))(load)
+    (decorate & cols(fields(header)) & cells(rows))(load)
+
+  protected def decorate = "table [class+]" #> "datatable"
 }
 
 object FieldTable {
--- a/src/main/scala/fis/pm/ui/ProjectTable.scala	Tue Jun 05 15:40:45 2012 +0200
+++ b/src/main/scala/fis/pm/ui/ProjectTable.scala	Tue Jun 05 15:40:45 2012 +0200
@@ -17,12 +17,22 @@
 
 import fis.pm.model._
 import fis.base.ui._
+import net.datatables.DataTables._
+import net.liftweb.util._
+import net.liftweb.util.Helpers._
 
 object ProjectTable extends FieldTable[Project] {
   def fields(p: Project) = (EntityLink(p) ++ Seq(p.identS, p.phaseFld,
     p.stateFld, p.deadline, p.responsible, p.description, p.note)) map
     Delayed(p)
-  def apply(l: Iterable[Project]) = build(Project, l)
+
+  def apply(l: Iterable[Project]) = {
+    val uid = nextFuncName
+    ("table [id]" #> uid)(build(Project, l)) ++ onLoad(uid,
+      Options col(ColumnDef dtype(TYPE_EU_DATE) target(4)))
+  }
+
+  override protected def decorate = "table [class+]" #> "project-table"
 }
 
 
--- a/src/main/scala/fis/pm/ui/TaskSnippet.scala	Tue Jun 05 15:40:45 2012 +0200
+++ b/src/main/scala/fis/pm/ui/TaskSnippet.scala	Tue Jun 05 15:40:45 2012 +0200
@@ -119,6 +119,9 @@
     override def fields(t: Task) = (Seq(identField(t)) ++ EntityLink(t) ++
       Seq(t.project, t.stateFld, t.deadline, t.responsible, t.note)
       ) map Delayed(t)
+    import net.datatables.DataTables._
+    override protected def dataTableOpts =
+      Options col(ColumnDef dtype(TYPE_EU_DATE) target(4))
   }
 
   private class TaskReport(f: () => Iterable[Task]) extends LocInfo[Iterable[Task]] {
--- a/src/main/scala/fis/pm/ui/TaskTable.scala	Tue Jun 05 15:40:45 2012 +0200
+++ b/src/main/scala/fis/pm/ui/TaskTable.scala	Tue Jun 05 15:40:45 2012 +0200
@@ -18,6 +18,7 @@
 import fis.base.model._
 import fis.base.ui._
 import fis.pm.model._
+import net.datatables.DataTables._
 import net.liftweb.common._
 import net.liftweb.util._
 import net.liftweb.util.Helpers._
@@ -32,7 +33,15 @@
     (Seq(identField(t)) ++ EntityLink(t) ++ Seq(t.stateFld, t.deadline,
     t.responsible, t.note)) map Delayed(t)
 
-  def apply(l: Iterable[Task]) = build(Task, l)
+  def apply(l: Iterable[Task]) = {
+    val uid = nextFuncName
+    ("table [id]" #> uid)(build(Task, l)) ++ onLoad(uid, dataTableOpts)
+  }
+
+  override protected def decorate = "table [class+]" #> "project-table"
+
+  protected def dataTableOpts =
+    Options col(ColumnDef dtype(TYPE_EU_DATE) target(3))
 }
 
 object TaskTable extends TaskTable
--- a/src/main/webapp/jquery/js/dataTables.dateFormat.js	Tue Jun 05 15:40:45 2012 +0200
+++ b/src/main/webapp/jquery/js/dataTables.dateFormat.js	Tue Jun 05 15:40:45 2012 +0200
@@ -1,6 +1,7 @@
 /**
  * https://github.com/sedovsek/DataTables-EU-date-Plug-In
  * commit 4069413
+ * (+ strip html tags surrounding dates)
  *
  * Copyright 2011 https://github.com/sedovsek
  *
@@ -27,7 +28,7 @@
  */
 
 function calculate_date(date) {
-	var date = date.replace(" ", "");
+	var date = date.replace(/<.*?>/g, "").replace(" ", "");
 	
 	if (date.indexOf('.') > 0) {
 		/*date a, format dd.mn.(yyyy) ; (year is optional)*/
--- a/src/main/webapp/templates-hidden/datatable.html	Tue Jun 05 15:40:45 2012 +0200
+++ b/src/main/webapp/templates-hidden/datatable.html	Tue Jun 05 15:40:45 2012 +0200
@@ -1,4 +1,4 @@
-<table class="table table-striped table-bordered table-condensed datatable">
+<table class="table table-striped table-bordered table-condensed">
   <thead>
     <tr>
       <th class="field-name">Field Name</th>