Jquery根据JSON生成Table
先说下背景
本人属于juqery小白中的极品小白.基本对于JS jquery这些不懂.用到时候基本百度下 拿过来改改OK. 上面这东西让我弄了三天.可能对于其他人来说 一天就搞定了 .看来还真得去学一下juqery一下了. 废话不多说了.
系统目前使用的是STRUTS1 界面为JSP
HTML代码为:
- <div id="content" class="content">
 - <table id="body-table">
 - <tr>
 - <td class="left-panel" valign="top">
 - <ul id="navtree" style="float:left;">
 - </ul>
 - </td>
 - <td class="center-panel" valign="top">
 - <div style="float:right;">
 - <table id="table1" width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="b5d6e6">
 - <tr>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">大厦</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">楼层</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">房间</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">类型</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">朝向</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">1床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">2床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">3床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">4床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">5床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">6床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">7床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">8床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">9床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">10床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">11床</span></div></td>
 - <td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">12床</span></div></td>
 - </tr>
 - </table>
 - </div>
 - </td>
 - </tr>
 - </table>
 - </div>
 
<div id="content" class="content">
<table id="body-table">
<tr>
<td class="left-panel" valign="top">
<ul id="navtree" style="float:left;">
</ul>
</td>
<td class="center-panel" valign="top">
<div style="float:right;">
<table id="table1" width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="b5d6e6">
<tr>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">大厦</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">楼层</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">房间</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">类型</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">朝向</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">1床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">2床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">3床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">4床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">5床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">6床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">7床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">8床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">9床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">10床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">11床</span></div></td>
<td width="5%" height="22" background="./../images/bg.gif" bgcolor="#FFFFFF"><div align="center"><span class="STYLE1">12床</span></div></td>
</tr>
</table>
</div></td>
</tr>
</table>
</div></pre><br><br><p><strong><span style="font-size:18px;">JS代码为:</span></strong></p>
- (function ($) {
 - $.jsonList = function (obj) {
 - this.listTable = function () { //this.testFun方法,加上了this,就是公有方法了,外部可以访问。
 - // alert(obj1.floorId + "," + obj2.houseId);
 - var action = obj.action ;
 - alert(obj.action);
 - alert("a= " + obj.floorId);
 - if(obj.action == 'floor'){
 - action = "bedlist";
 - }else{
 - action = "bedInit";
 - obj.floorId = obj.houseId;
 - }
 - alert("b= " + obj.floorId);
 - $.post("getBed.jsp",{
 - floorId:obj.floorId,
 - action:action
 - },function(data,status){
 - $("#table1 tr:not(:first)").empty();
 - for(var i=0;i<eval(data).length;i++){
 - var bedsSize=eval(data)[i].beds.length;
 - var trBegin ="<tr>";
 - var td1 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].houseName+"</span></div></td>";
 - var td2 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].floorName+"</span></div></td>";
 - var td3 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomName+"</span></div></td>";
 - var td4 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomNum+"</span></div></td>";
 - var td5 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomType+"</span></div></td>";
 - var beds ="";
 - for( var h=0;h<bedsSize; h++){
 - //var subTd = "<td style=\"background:yellow\" onclick='testAlert(\""+eval(data)[i].beds[h].opName+"\")'>"+eval(data)[i].beds[h].status+"</td>";
 - var subTd = statusColor(eval(data)[i].beds[h].status,eval(data)[i].beds[h].opName);
 - beds+=subTd;
 - }
 - var trEnd ="</tr>";
 - var room = trBegin + td1 + td2 + td3 + td4 + td5 + beds + trEnd;
 - $("#table1").append(room);
 - }
 - });
 - };
 - };
 - })(jQuery);
 - $(document).ready(function(){
 - $("#navtree").omTree({
 - dataSource : 'getBed.jsp?action=houselist',
 - showIcon:false,
 - lineHover:true,
 - onSelect: function(nodedata){
 - if(!nodedata.children && nodedata.text){
 - alert("楼层ID = "+nodedata.floorId);
 - var a = new $.jsonList({ floorId: nodedata.floorId,action:"floor" });
 - a.listTable();
 - }else {
 - alert("大厦ID = "+nodedata.houseId);
 - var a = new $.jsonList({ houseId: nodedata.houseId, action:"house"});
 - a.listTable();
 - }
 - }
 - });
 - $.post("getBed.jsp",{
 - floorId:"1",
 - action:"bedlist"
 - },function(data,status){
 - for(var i=0;i<eval(data).length;i++){
 - var bedsSize=eval(data)[i].beds.length;
 - var trBegin ="<tr>";
 - var td1 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].houseName+"</span></div></td>";
 - var td2 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].floorName+"</span></div></td>";
 - var td3 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomName+"</span></div></td>";
 - var td4 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomNum+"</span></div></td>";
 - var td5 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomType+"</span></div></td>";
 - var beds ="";
 - for( var h=0;h<bedsSize; h++){
 - //var subTd = "<td style=\"background:yellow\" onclick='testAlert(\""+eval(data)[i].beds[h].opName+"\")'>"+eval(data)[i].beds[h].status+"</td>";
 - var subTd = statusColor(eval(data)[i].beds[h].status,eval(data)[i].beds[h].opName);
 - beds+=subTd;
 - }
 - var trEnd ="</tr>";
 - var room = trBegin + td1 + td2 + td3 + td4 + td5 + beds + trEnd;
 - $("#table1").append(room);
 - }
 - });
 - });
 - function testAlert(obj){
 - if(obj == ''){
 - alert("没有信息哦");
 - return;
 - }
 - alert(obj);
 - }
 - //床位状态:0,空闲;1,使用;2,预约;3,请假;4,试住;
 - function statusColor(status,opName){
 - if( status == 0){
 - return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:#66B3FF\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">空闲</span></div></td>";
 - }else if( status == 1){
 - return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:Crimson\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">使用</span></div></td>";
 - }else if( status == 2){
 - return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:Orange\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">预约</span></div></td>";
 - }else if( status == 3){
 - return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:Yellow\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">请假</span></div></td>";
 - }else if( status == 4){
 - return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:HotPink\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">试住</span></div></td>";
 - }
 - }
 (function ($) {
$.jsonList = function (obj) {
this.listTable = function () { //this.testFun方法,加上了this,就是公有方法了,外部可以访问。
// alert(obj1.floorId + "," + obj2.houseId);
var action = obj.action ;
alert(obj.action);
alert("a= " + obj.floorId);
if(obj.action == 'floor'){
action = "bedlist";
}else{
action = "bedInit";
obj.floorId = obj.houseId;
}
alert("b= " + obj.floorId);
$.post("getBed.jsp",{
floorId:obj.floorId,
action:action},function(data,status){
$("#table1 tr:not(:first)").empty();
for(var i=0;i<eval(data).length;i++){
var bedsSize=eval(data)[i].beds.length; var trBegin ="<tr>";
var td1 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].houseName+"</span></div></td>";
var td2 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].floorName+"</span></div></td>";
var td3 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomName+"</span></div></td>";
var td4 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomNum+"</span></div></td>";
var td5 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomType+"</span></div></td>"; var beds ="";
for( var h=0;h<bedsSize; h++){
//var subTd = "<td style=\"background:yellow\" onclick='testAlert(\""+eval(data)[i].beds[h].opName+"\")'>"+eval(data)[i].beds[h].status+"</td>";
var subTd = statusColor(eval(data)[i].beds[h].status,eval(data)[i].beds[h].opName);
beds+=subTd;
}
var trEnd ="</tr>";
var room = trBegin + td1 + td2 + td3 + td4 + td5 + beds + trEnd;
$("#table1").append(room);
}
});
};
};
})(jQuery); $(document).ready(function(){
$("#navtree").omTree({
dataSource : 'getBed.jsp?action=houselist',
showIcon:false,
lineHover:true,
onSelect: function(nodedata){
if(!nodedata.children && nodedata.text){
alert("楼层ID = "+nodedata.floorId);
var a = new $.jsonList({ floorId: nodedata.floorId,action:"floor" });
a.listTable();
}else {
alert("大厦ID = "+nodedata.houseId);
var a = new $.jsonList({ houseId: nodedata.houseId, action:"house"});
a.listTable();
}
}
}); $.post("getBed.jsp",{
floorId:"1",
action:"bedlist"
},function(data,status){
for(var i=0;i<eval(data).length;i++){
var bedsSize=eval(data)[i].beds.length; var trBegin ="<tr>";
var td1 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].houseName+"</span></div></td>";
var td2 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].floorName+"</span></div></td>";
var td3 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomName+"</span></div></td>";
var td4 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomNum+"</span></div></td>";
var td5 = "<td height='20' bgcolor='#FFFFFF'><div align='center'><span class='STYLE1'>"+eval(data)[i].roomType+"</span></div></td>"; var beds ="";
for( var h=0;h<bedsSize; h++){
//var subTd = "<td style=\"background:yellow\" onclick='testAlert(\""+eval(data)[i].beds[h].opName+"\")'>"+eval(data)[i].beds[h].status+"</td>";
var subTd = statusColor(eval(data)[i].beds[h].status,eval(data)[i].beds[h].opName);
beds+=subTd;
}
var trEnd ="</tr>";
var room = trBegin + td1 + td2 + td3 + td4 + td5 + beds + trEnd;
$("#table1").append(room);
}
});
}); function testAlert(obj){
if(obj == ''){
alert("没有信息哦");
return;
}
alert(obj);
} //床位状态:0,空闲;1,使用;2,预约;3,请假;4,试住;
function statusColor(status,opName){
if( status == 0){
return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:#66B3FF\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">空闲</span></div></td>";
}else if( status == 1){
return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:Crimson\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">使用</span></div></td>";
}else if( status == 2){
return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:Orange\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">预约</span></div></td>";
}else if( status == 3){
return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:Yellow\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">请假</span></div></td>";
}else if( status == 4){
return "<td height=\"20\" bgcolor=\"#FFFFFF\" style=\"background:HotPink\" onclick='testAlert(\""+opName+"\")'><div align=\"center\"><span class=\"STYLE1\">试住</span></div></td>";
}
}</pre><br><br><p><br></p>
JSON格式为:
- [{"beds":[{"bedId":1,"bedIndex":1,"opId":0,"opName":"","status":0},{"bedId":2,"bedIndex":2,"opId":0,"opName":"","status":1},{"bedId":3,"bedIndex":3,"opId":0,"opName":"","status":2},{"bedId":4,"bedIndex":4,"opId":0,"opName":"","status":3},{"bedId":5,"bedIndex":5,"opId":0,"opName":"","status":4},{"bedId":6,"bedIndex":6,"opId":0,"opName":"","status":0}],"floorName":"一层","houseName":"哈哈楼","roomName":"测试房间","roomNum":"六人间","roomType":"朝北"},{"beds":[{"bedId":7,"bedIndex":1,"opId":0,"opName":"","status":0}],"floorName":"二层","houseName":"哈哈楼","roomName":"1101号房","roomNum":"单人间","roomType":"朝东"}]
 [{"beds":[{"bedId":1,"bedIndex":1,"opId":0,"opName":"","status":0},{"bedId":2,"bedIndex":2,"opId":0,"opName":"","status":1},{"bedId":3,"bedIndex":3,"opId":0,"opName":"","status":2},{"bedId":4,"bedIndex":4,"opId":0,"opName":"","status":3},{"bedId":5,"bedIndex":5,"opId":0,"opName":"","status":4},{"bedId":6,"bedIndex":6,"opId":0,"opName":"","status":0}],"floorName":"一层","houseName":"哈哈楼","roomName":"测试房间","roomNum":"六人间","roomType":"朝北"},{"beds":[{"bedId":7,"bedIndex":1,"opId":0,"opName":"","status":0}],"floorName":"二层","houseName":"哈哈楼","roomName":"1101号房","roomNum":"单人间","roomType":"朝东"}]其中左侧树用的是 一个开源的UI插件 叫做OM-TREE.JS
右侧List列表是我自己封装的一个类jsonList
Jquery根据JSON生成Table的更多相关文章
- 基于jquery的json转table插件jsontotable
		
分享一款基于jquery的json转table插件jsontotable.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="container ...
 - jsp页面根据json数据动态生成table
		
根据需求由于不同的表要在同一个jsp展示,点击某个表名便显示某张表内容,对于java后台传给jsp页面的json形式的数据是怎么动态生成table的呢? 找了好久,终于找到某位前辈的答案,在此表示衷心 ...
 - 基于Jquery+Ajax+Json+存储过程 高效分页
		
在做后台开发中,都会有大量的列表展示,下面给大家给大家分享一套基于Jquery+Ajax+Json+存储过程高效分页列表,只需要传递几个参数即可.当然代码也有改进的地方,如果大家有更好的方法,愿留下宝 ...
 - 用jquery解析JSON数据的方法以及字符串转换成json的3种方法
		
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...
 - jQuery读取json文件,实现省市区/县(国标)三级联动
		
最近做一个微信项目,需要用户填写所在的省市区/县,决定使用jQuery读取json文件来实现省市区/县的联动. 其实很简单,jQuery文档也有详细解释: 代码如下: html <table w ...
 - php+jquery+ajax+json简单小例子
		
直接贴代码: <html> <title>php+jquery+ajax+json简单小例子</title> <?php header("Conte ...
 - 认识Json解析json生成json
		
.markdown-body hr::after,.markdown-body::after { clear: both } .loopLine,.messageLine0 { } .markdown ...
 - jQuery中json中关于带有html代码网页的处理
		
昨天在使用jQuery的get方式请求返回json格式数据.然后使用jQuery自带的parseJSON 处理.总是出现这样的错误. 如果返回数据中content改成普通的数据可以通过.找了半天错误, ...
 - js控制json生成菜单——自制菜单(一)
		
此文档解决以下问题: 1.JSON文件的书写方式 2.jQuery.getJSON()的运用 3.jQuery.each()的运用 4.jQuery的DOM 操作方法之一:.append()的运用 5 ...
 
随机推荐
- XmlPullParser简单教程
			
官网: http://www.xmlpull.org 本文参考 : http://www.xmlpull.org/v1/download/unpacked/doc/quick_intro.html 1 ...
 - Proactive Patching Overview
			
1.Proactive Patching Overview Between Patch Set releases, Oracle's proactive patching program provid ...
 - 解决okHttp使用https抛出stream was reset: PROTOCOL_ERROR的问题
			
昨天在做Android接口调用的时候,api接口是https的,用okhttp抛出: okhttp3.internal.http2.StreamResetException: stream was r ...
 - Win10 UWP开发:摄像头扫描二维码/一维码功能
			
这个示例演示整合了Aran和微软的示例,无需修改即可运行. 支持识别,二维码/一维码,需要在包清单管理器勾选摄像头权限. 首先右键项目引用,打开Nuget包管理器搜索安装:ZXing.Net.Mobi ...
 - SpringSecurity的简单使用
			
导入SpringSecurity坐标 在web.xml中配置过滤器 编写spring-securiy配置文件 编写自定义认证提供者 用户新增时加密密码 配置页面的login和logout 获取登录用户 ...
 - SpringBoot之旅第七篇-Docker
			
一.引言 记得上大三时,要给微机房电脑安装系统,除了原生的操作系统外,还要另外安装一些必要的开发软件,如果每台电脑都重新去安装的话工作量就很大了,这个时候就使用了windows镜像系统,我们将要安装的 ...
 - Java基础教程(24)--集合
			
一.Java集合框架 集合,有时也称为容器,是一个用来存储和管理多个元素的对象.Java中的集合框架定义了一套规范,用来表示和操作集合,使具体操作与实现细节解耦.集合框架都包含下列内容: 接口:这 ...
 - poj3050 Hopscotch
			
思路: 水题. 实现: #include <iostream> #include <cstdio> #include <set> using namespace s ...
 - Java语法基础-序列化
			
33. Java序列化中如果有些字段不想进行序列化,怎么办? 答:对于不想进行序列化的变量,使用transient关键字修饰. transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序 ...
 - 阿里云服务器安装ss使用
			
下载安装服务器版shadowsocks yum install epel-release yum update yum install python-setuptools m2crypto super ...