[KSS-checkins] r50800 - in kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo: . selenium_tests
jone at codespeak.net
jone at codespeak.net
Sun Jan 20 16:15:43 CET 2008
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]/input[@value='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>//input[@value='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]/input[@value='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>
More information about the Kukit-checkins
mailing list