simplyfy couchapp push

This commit is contained in:
Chris Anderson 2009-01-01 22:29:39 -08:00
parent 98ff079093
commit a10d902d71
8 changed files with 96 additions and 29 deletions

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<title>Generated CouchApp</title>
<link rel="stylesheet" href="screen.css" type="text/css">
</head>
<body>
<h1>Generated CouchApp</h1>
<ul id="view"></ul>
</body>
<script src="/_utils/script/json2.js"></script>
<script src="/_utils/script/jquery.js?1.2.6"></script>
<script src="/_utils/script/jquery.couch.js?0.8.0"></script>
<script type="text/javascript" charset="utf-8">
$(function() {
var dbname = document.location.href.split('/')[3];
var design = unescape(document.location.href).split('/')[5];
var DB = $.couch.db(dbname);
DB.view(design+"/example",{success: function(json) {
$("#view").html(json.rows.map(function(row) {
return '<li>'+row.key+'</li>';
}).join(''));
}});
});
</script>
</html>

View file

@ -0,0 +1,11 @@
Couchapp will create a field on your document corresponding to any directories you make within the application directory, with the text of any files found as key/value pairs.
Also, any files that end in .json will be treated as json rather than text, and put in the corresponding field. Also note that file.json, file.js, or file.txt will be stored under the "file" key, so don't make collisions in the filesystem unless you want unpredictable results.
Of course you know that the views directory will be treated specially and -map and -reduce files will be mapped to the map and reduce functions. And the _attachments directory will be treated strangely as well.
doc.json is a special case, it is treated as json and its keys are applied to the document root; eg it does not result in a "doc" field on your design document. If you need a doc field on the design document, you'll have to define it with a doc.json like so: {"doc":"value for doc field"}
ps: each design document only has one language key: it will be set based on the file extensions in the views directory. CouchDB defaults to Javascript, so that's what you'll get if you don't define any views. You can override it with the doc.json file, but don't say we didn't warn you.
Oh yeah it's recommended that you delete this file.

View file

@ -0,0 +1,14 @@
function(doc, req) {
// include-lib
respondWith(req, {
html : function() {
var html = template(lib["example.html"], doc);
return {body:html}
},
xml : function() {
return {
body : <xml><node value={doc.title}/></xml>
}
}
})
};

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<title>Generated CouchApp Form Template</title>
</head>
<body>
<div id="header">
<h2><a href="index.html">Back to index</a></h2>
</div>
<div id="content">
<h1><% doc.title %></h1>
</div>
</body>
<script src="/_utils/script/json2.js"></script>
<script src="/_utils/script/jquery.js?1.2.6"></script>
<script src="/_utils/script/jquery.couch.js?0.8.0"></script>
<script src="jquery.couchapp.js"></script>
<script src="blog.js"></script>
<script type="text/javascript" charset="utf-8">
$.CouchApp(function(app) {
var docid = document.location.pathname.split('/').pop();
// hey you could run a query to load more information from views
});
</script>
<script src="showdown.js"></script>
</html>

View file

@ -0,0 +1,8 @@
// an example map function, emits the doc id
// and the list of keys it contains
function(doc) {
var k, keys = []
for (k in doc) keys.push(k);
emit(doc._id, keys);
};

View file

@ -0,0 +1,10 @@
// example reduce function to count the
// number of rows in a given key range.
function(keys, values, rereduce) {
if (rereduce) {
return sum(values);
} else {
return values.length;
}
};