Author: jone
Date: Sun Jan 20 16:15:40 2008
New Revision: 50800

Added:
   
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.css
   
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/dynamic_table.html
Modified:
   
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss
   
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.pt
   
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py
   
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.zcml
Log:
added css and selenium test for dynamic_table

Added: 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.css
==============================================================================
--- (empty file)
+++ 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.css
    Sun Jan 20 16:15:40 2008
@@ -0,0 +1,20 @@
+table#personTable {
+    margin-left: auto;
+    margin-right: auto;
+    border: 1px solid #f2ae8c;
+}
+
+table#personTable th {
+    background-color: #f2ae8c;
+    padding-left: 5px;
+    padding-right: 5px;
+}
+
+div.centered {
+    text-align: center;
+}
+
+hr {
+    border: none;
+    border-top: 1px solid #FF4916;
+}

Modified: 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss
==============================================================================
--- 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss
    (original)
+++ 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.kss
    Sun Jan 20 16:15:40 2008
@@ -19,6 +19,18 @@
     moveUp-pid:                 kssAttr(pid);
 }
 
+input.toBottom:click {
+    evt-click-preventdefault:   true;
+    action-server:              toBottom;
+    toBottom-pid:               kssAttr(pid);
+}
+
+input.toTop:click {
+    evt-click-preventdefault:   true;
+    action-server:              toTop;
+    toTop-pid:                  kssAttr(pid);
+}
+
 input.moveDown:click {
     evt-click-preventdefault:   true;
     action-server:              moveDown;

Modified: 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.pt
==============================================================================
--- 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.pt 
    (original)
+++ 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.pt 
    Sun Jan 20 16:15:40 2008
@@ -3,6 +3,9 @@
   <head>
   
     <metal:header use-macro="context/@@header_macros/header_resources" />
+    <link rel="stylesheet" type="text/css"
+          tal:attributes="href
+          string:${context/@@absolute_url}/++resource++${viewname}.css"/>
   
   </head>
 
@@ -10,7 +13,7 @@
     
     <p metal:use-macro="context/@@body_macros/header">header</p>
 
-    <h2>Dynamic Tables</h2>
+    <h2>Addressbook</h2>
 
     <form id="addPerson">
 
@@ -33,7 +36,7 @@
               <option></option>
               <option>Norway</option>
               <option>USA</option>
-              <option>Other/<option>
+              <option>Other</option>
             </select>
         </div>
         <div>
@@ -48,31 +51,31 @@
     </form>
 
 
-    <hr />
-
-    <input type="button" id="clean" value="clean" />
+    <div class="centered">
 
+        <input type="button" id="clean" value="Clean table" />
 
-    <hr />
+        <table id="personTable">
+            <thead>
+                <tr>
+                    <th>Name</th>
+                    <th>Address</th>
+                    <th>City</th>
+                    <th>Country</th>
+                    <th>Telephone</th>
+                    <th> </th>
+                </tr>
+            </thead>
+            <tbody>
+                <tal:repeat repeat="person context/getPersons">
+                    <tal:replace replace="structure 
python:view.renderPersonAsTr(person)" />
+                </tal:repeat>
+            </tbody>
+        </table>
 
-    <table border="1" id="personTable">
-        <thead>
-            <tr>
-                <th>Name</th>
-                <th>Address</th>
-                <th>City</th>
-                <th>Country</th>
-                <th>Telephone</th>
-                <th> </th>
-            </tr>
-        </thead>
-        <tbody>
-            <tal:repeat repeat="person context/getPersons">
-                <tal:replace replace="structure 
python:view.renderPersonAsTr(person)" />
-            </tal:repeat>
-        </tbody>
-    </table>
+    </div>
 
+    <hr />
 
   </body>
 </html>

Modified: 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py
==============================================================================
--- 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py 
    (original)
+++ 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.py 
    Sun Jan 20 16:15:40 2008
@@ -51,7 +51,7 @@
         for p in persons:
             if p['pid'] == pid:
                 persons.remove(p)
-        self.getCommandSet('core').deleteNode('tr.pid%s' % pid)
+        self.getCommandSet('core').deleteNode('tr#pid%s' % pid)
         return self.render()
 
 
@@ -75,6 +75,33 @@
                 break
         return self.render()
 
+    def toTop(self, pid):
+        persons = self.getPersons()
+        firstPid = persons[0]['pid']
+        if firstPid == pid:
+            return self.render()
+        self.getCommandSet('core').moveNodeBefore('tr#pid%s' % pid, 'pid%s' % 
firstPid)
+        for p in persons:
+            if p['pid'] == pid:
+                persons.remove(p)
+                persons.insert(0, p)
+                break
+        return self.render()
+
+    def toBottom(self, pid):
+        persons = self.getPersons()
+        lastPid = persons[-1]['pid']
+        if lastPid == pid:
+            return self.render()
+        self.getCommandSet('core').moveNodeAfter('tr#pid%s' % pid, 'pid%s' % 
lastPid)
+        for p in persons:
+            if p['pid'] == pid:
+                persons.remove(p)
+                persons.append(p)
+                break
+        return self.render()
+
+
     def switchPersons(self, pid1, pid2):
         persons = self.getPersons()
         p1 = None
@@ -89,8 +116,8 @@
                 p2 = persons[i]
                 i2 = i
         if p1 and p2:
-            self.getCommandSet('core').replaceHTML('tr.pid%s' % p2['pid'], 
'<tr class="placeholder"></tr>')
-            self.getCommandSet('core').replaceHTML('tr.pid%s' % p1['pid'], 
self.renderPersonAsTr(p2))
+            self.getCommandSet('core').replaceHTML('tr#pid%s' % p2['pid'], 
'<tr class="placeholder"></tr>')
+            self.getCommandSet('core').replaceHTML('tr#pid%s' % p1['pid'], 
self.renderPersonAsTr(p2))
             self.getCommandSet('core').replaceHTML('tr.placeholder', 
self.renderPersonAsTr(p1))
             persons[i1] = p2
             persons[i2] = p1
@@ -100,11 +127,13 @@
     def renderPersonAsTr(self, person):
         pid = person['pid']
         buttons = '''
+                    <input type="button" class="remove kssattr-pid-%(pid)s" 
value="remove">
                     <input type="button" class="moveUp kssattr-pid-%(pid)s" 
value="up">
                     <input type="button" class="moveDown kssattr-pid-%(pid)s" 
value="down">
-                    <input type="button" class="remove kssattr-pid-%(pid)s" 
value="remove">
+                    <input type="button" class="toTop kssattr-pid-%(pid)s" 
value="top">
+                    <input type="button" class="toBottom kssattr-pid-%(pid)s" 
value="bottom">
                 ''' % {'pid' : pid}
-        html = """<tr 
class="pid%(pid)s"><td>%(name)s</td><td>%(address)s</td><td>%(city)s</td><td>%(country)s</td><td>%(telephone)s</td><td>%(buttons)s</tr>"""
 % {
+        html = """<tr 
id="pid%(pid)s"><td>%(name)s</td><td>%(address)s</td><td>%(city)s</td><td>%(country)s</td><td>%(telephone)s</td><td>%(buttons)s</td></tr>"""
 % {
                 'pid' : person['pid'],
                 'name' : person['name'],
                 'address' : person['address'],

Modified: 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.zcml
==============================================================================
--- 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.zcml
   (original)
+++ 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/dynamic_table.zcml
   Sun Jan 20 16:15:40 2008
@@ -41,6 +41,22 @@
   <browser:page
     for="kss.demo.interfaces.ISimpleContent"
     class=".dynamic_table.KSSDynamicTableDemo"
+    attribute="toTop"
+    name="toTop"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".dynamic_table.KSSDynamicTableDemo"
+    attribute="toBottom"
+    name="toBottom"
+    permission="zope.View"
+    />
+
+  <browser:page
+    for="kss.demo.interfaces.ISimpleContent"
+    class=".dynamic_table.KSSDynamicTableDemo"
     attribute="moveUp"
     name="moveUp"
     permission="zope.View"
@@ -76,6 +92,10 @@
     name="dynamic_table.kss"
   />
 
+  <browser:resource
+    file="dynamic_table.css"
+    name="dynamic_table.css"
+    />
 
 </configure>
 

Added: 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/dynamic_table.html
==============================================================================
--- (empty file)
+++ 
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/selenium_tests/dynamic_table.html
    Sun Jan 20 16:15:40 2008
@@ -0,0 +1,224 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>dynamic_table</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">dynamic_table</td></tr>
+</thead><tbody>
+<tr>
+       <td>open</td>
+       <td>/demo/dynamic_table.html</td>
+       <td></td>
+</tr>
+<tr>
+       <td>assertTextPresent</td>
+       <td>Addressbook</td>
+       <td></td>
+</tr>
+<tr>
+       <td>click</td>
+       <td>clean</td>
+       <td></td>
+</tr>
+<tr>
+       <td>waitForElementNotPresent</td>
+       <td>//tr[2]</td>
+       <td></td>
+</tr>
+<tr>
+       <td>assertElementNotPresent</td>
+       <td>//tr[2]</td>
+       <td></td>
+</tr>
+<tr>
+       <td>type</td>
+       <td>name</td>
+       <td>Carsten</td>
+</tr>
+<tr>
+       <td>type</td>
+       <td>city</td>
+       <td>Aachen</td>
+</tr>
+<tr>
+       <td>click</td>
+       <td>submit</td>
+       <td></td>
+</tr>
+<tr>
+       <td>waitForText</td>
+       <td>//td[1]</td>
+       <td>Carsten</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//td[1]</td>
+       <td>Carsten</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//td[3]</td>
+       <td>Aachen</td>
+</tr>
+<tr>
+       <td>type</td>
+       <td>name</td>
+       <td>Jonas</td>
+</tr>
+<tr>
+       <td>type</td>
+       <td>city</td>
+       <td>Bern</td>
+</tr>
+<tr>
+       <td>click</td>
+       <td>submit</td>
+       <td></td>
+</tr>
+<tr>
+       <td>waitForText</td>
+       <td>//tr[2]/td[1]</td>
+       <td>Jonas</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[2]/td[1]</td>
+       <td>Jonas</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[2]/td[3]</td>
+       <td>Bern</td>
+</tr>
+<tr>
+       <td>type</td>
+       <td>name</td>
+       <td>Godefroid</td>
+</tr>
+<tr>
+       <td>type</td>
+       <td>city</td>
+       <td>Louvain-la-neuve</td>
+</tr>
+<tr>
+       <td>click</td>
+       <td>submit</td>
+       <td></td>
+</tr>
+<tr>
+       <td>waitForText</td>
+       <td>//tr[3]/td[1]</td>
+       <td>Godefroid</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[3]/td[1]</td>
+       <td>Godefroid</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[3]/td[3]</td>
+       <td>Louvain-la-neuve</td>
+</tr>
+<tr>
+       <td>click</td>
+       <td>//tr[3]/td[6]/[EMAIL PROTECTED]'up']</td>
+       <td></td>
+</tr>
+<tr>
+       <td>waitForText</td>
+       <td>//tr[2]/td[1]</td>
+       <td>Godefroid</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[2]/td[1]</td>
+       <td>Godefroid</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[2]/td[3]</td>
+       <td>Louvain-la-neuve</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[3]/td[1]</td>
+       <td>Jonas</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[3]/td[3]</td>
+       <td>Bern</td>
+</tr>
+<tr>
+       <td>click</td>
+       <td>//[EMAIL PROTECTED]'down']</td>
+       <td></td>
+</tr>
+<tr>
+       <td>waitForText</td>
+       <td>//td[1]</td>
+       <td>Godefroid</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//td[1]</td>
+       <td>Godefroid</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//td[3]</td>
+       <td>Louvain-la-neuve</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[2]/td[1]</td>
+       <td>Carsten</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[2]/td[3]</td>
+       <td>Aachen</td>
+</tr>
+<tr>
+       <td>click</td>
+       <td>//tr[2]/td[6]/[EMAIL PROTECTED]'remove']</td>
+       <td></td>
+</tr>
+<tr>
+       <td>waitForText</td>
+       <td>//tr[2]/td[1]</td>
+       <td>Jonas</td>
+</tr>
+<tr>
+       <td>assertText</td>
+       <td>//tr[2]/td[1]</td>
+       <td>Jonas</td>
+</tr>
+<tr>
+       <td>assertTextNotPresent</td>
+       <td>Carsten</td>
+       <td></td>
+</tr>
+<tr>
+       <td>click</td>
+       <td>clean</td>
+       <td></td>
+</tr>
+<tr>
+       <td>waitForElementNotPresent</td>
+       <td>//tr[2]</td>
+       <td></td>
+</tr>
+<tr>
+       <td>assertElementNotPresent</td>
+       <td>//tr[2]</td>
+       <td></td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
_______________________________________________
Kukit-checkins mailing list
[email protected]
http://codespeak.net/mailman/listinfo/kukit-checkins

Reply via email to