html outputter (basic)
This commit is contained in:
parent
8be80743b4
commit
676df6f36b
@ -113,9 +113,65 @@ JSONOutputter.prototype = Object.create(Outputter.prototype, {
|
|||||||
*/
|
*/
|
||||||
var HtmlOutputter = function() {
|
var HtmlOutputter = function() {
|
||||||
Outputter.call(this);
|
Outputter.call(this);
|
||||||
|
logger.debug('HTML');
|
||||||
|
// TODO use templates
|
||||||
|
this.buffer = new Array();
|
||||||
|
this.colStarted = false;
|
||||||
};
|
};
|
||||||
// inherits Outputter
|
// inherits Outputter
|
||||||
HtmlOutputter.prototype = Object.create(Outputter.prototype, {
|
HtmlOutputter.prototype = Object.create(Outputter.prototype, {
|
||||||
|
output: {
|
||||||
|
value: function(resource) {
|
||||||
|
var self = this;
|
||||||
|
logger.debug('colStarted: '+this.colStarted);
|
||||||
|
if (!this.colStarted && this.buffer.length == 0) {
|
||||||
|
this.buffer.push(resource);
|
||||||
|
this.out.write('<html><head><title>Bouquins</title></head>');
|
||||||
|
} else {
|
||||||
|
this.buffer.push(resource);
|
||||||
|
if (!this.colStarted) {
|
||||||
|
this.out.write('<table><tr>');
|
||||||
|
this.colStarted = true;
|
||||||
|
} else
|
||||||
|
this.out.write('</tr>');
|
||||||
|
while (this.buffer.length>0) {
|
||||||
|
var r = this.buffer.shift();
|
||||||
|
Object.keys(r).forEach(function(key) {
|
||||||
|
self.out.write('<td title=\"'+key+'\">'+r[key]+'</td>');
|
||||||
|
});
|
||||||
|
if (this.buffer.length>0)
|
||||||
|
this.out.write('</tr><tr>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, enumerable: true, configurable: true, writable: true
|
||||||
|
},
|
||||||
|
end: {
|
||||||
|
value: function() {
|
||||||
|
var self = this;
|
||||||
|
if (this.buffer.length == 1) {
|
||||||
|
// single resource
|
||||||
|
this.out.write('<ul>');
|
||||||
|
var r = this.buffer[0];
|
||||||
|
Object.keys(r).forEach(function(key) {
|
||||||
|
self.out.write('<li>'+key+': '+r[key]+'</li>');
|
||||||
|
});
|
||||||
|
this.out.write('</ul>');
|
||||||
|
}
|
||||||
|
if (this.colStarted) {
|
||||||
|
//end collection
|
||||||
|
this.out.write('</table>');
|
||||||
|
}
|
||||||
|
this.out.write('</html>');
|
||||||
|
logger.debug('Action ended');
|
||||||
|
this.out.end();
|
||||||
|
}, enumerable: true, configurable: true, writable: true
|
||||||
|
},
|
||||||
|
init: {
|
||||||
|
value: function() {
|
||||||
|
this.addHeader('Content-Type', 'text/html');
|
||||||
|
}, enumerable: true, configurable: true, writable: true
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -58,17 +58,20 @@ Router.prototype = {
|
|||||||
* @param callback <function(err)> error callback
|
* @param callback <function(err)> error callback
|
||||||
*/
|
*/
|
||||||
buildOutputter : function(mime, callback) {
|
buildOutputter : function(mime, callback) {
|
||||||
switch(mime) {
|
var mimes = mime.split(',');
|
||||||
case 'application/json':
|
var outputter = null;
|
||||||
return new Outputter.JSONOutputter();
|
for (var i=0; i<mimes.length; i++) {
|
||||||
case 'text/html':
|
switch(mimes[i]) {
|
||||||
return new Outputter.HtmlOutputter();
|
case 'application/json':
|
||||||
case 'text/plain':
|
return new Outputter.JSONOutputter();
|
||||||
return new Outputter.TextOutputter();
|
case 'text/html':
|
||||||
default:
|
return new Outputter.HtmlOutputter();
|
||||||
logger.error('Usupported type: '+mime);
|
case 'text/plain':
|
||||||
return new Outputter.JSONOutputter();
|
return new Outputter.TextOutputter();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
logger.error('Usupported type: '+mime);
|
||||||
|
return new Outputter.JSONOutputter();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user