anyproxy/web/build/recordPanel.js
2015-07-07 17:31:56 +08:00

72 lines
2.0 KiB
JavaScript

function init(React){
var RecordRow = require("./recordRow").init(React);
var RecordPanel = React.createClass({displayName: "RecordPanel",
getInitialState : function(){
return {
list : [],
filter: ""
};
},
render : function(){
var self = this,
rowCollection = [],
filterStr = self.state.filter,
filter = filterStr;
//regexp
if(filterStr[0]=="/" && filterStr[filterStr.length-1]=="/"){
try{
filter = new RegExp(filterStr.substr(1,filterStr.length-2));
}catch(e){}
}
for(var i = self.state.list.length-1 ; i >=0 ; i--){
var item = self.state.list[i];
if(item){
if(filter && item){
try{
if(typeof filter == "object" && !filter.test(item.url)){
continue;
}else if(typeof filter == "string" && item.url.indexOf(filter) < 0){
continue;
}
}catch(e){}
}
if(item._justUpdated){
item._justUpdated = false;
item._needRender = true;
}else{
item._needRender = false;
}
rowCollection.push(React.createElement(RecordRow, {key: item.id, data: item, onSelect: self.props.onSelect.bind(self,item)}));
}
}
return (
React.createElement("table", {className: "uk-table uk-table-condensed uk-table-hover"},
React.createElement("thead", null,
React.createElement("tr", null,
React.createElement("th", {className: "col_id"}, "#"),
React.createElement("th", {className: "col_method"}, "method"),
React.createElement("th", {className: "col_code"}, "code"),
React.createElement("th", {className: "col_host"}, "host"),
React.createElement("th", {className: "col_path"}, "path"),
React.createElement("th", {className: "col_mime"}, "mime type"),
React.createElement("th", {className: "col_time"}, "time")
)
),
React.createElement("tbody", null,
rowCollection
)
)
);
}
});
return RecordPanel;
}
module.exports.init = init;