//@utf-8
(function($) {
$.csv2table={
version : '0.01-beta-5',
charset : 'utf-8',
doc : 'http://jsgt.org/mt/01/',
demo : 'http://jsgt.org/lib/jquery/plugin/csv2table/v001/test.htm',
author : 'Toshiro Takahashi',
lisence : 'Public Domain',
loadImg :(new Image()).src='http://jsgt.org/lib/jquery/plugin/csv2table/v001/loadinfo111.gif'
}
$.fn.csv2table=function (url,setting){
$.fn.csv2table.data=[];
$.fn.csv2table._rowsAry=[];
$.fn.csv2table.err=[];
var contents=$.fn.csv2table.el=this,id=this[0].id,
op = $.extend({
nowloadingImg : $.csv2table.loadImg, //Image of now loading...
nowloadingMsg : 'now loading...', //Massege of now loading...
removeDoubleQuote : true, // remove " of "hogehoge"
row_sep : '\n', //Separator of rows. default '\n'
col_sep : '\t', //Separator of cols. default '\t'
onload : function(contents,op,data){},//collback event
className_div : 'csv2table-div', //className
className_table : 'csv2table-table', //className
className_table_th : 'csv2table-table-th', //className
className_table_td : 'csv2table-table-td', //className
className_sortMark : 'csv2table-sortMark' //className
},setting);
if(op.row_sep=='\n')op.row_sep_reg='\r\n'
$(contents).before('

'+op.nowloadingMsg+' ' )
$.get(url+"?"+(new Date()).getTime(),"",function(data,textStatus){
$.fn.csv2table.data[id]=data;
$(".csv2table-loading").fadeOut();
$(contents).css("display","none").html(mkTable(data));
setCSS(id);
$(contents).fadeIn();
op.onload(contents,op,data);
});
$.fn.csv2table.wrtTable=function(sortType,colIndex,id){
$("#"+id).html(mkTable($.fn.csv2table._rowsAry[id],sortType,colIndex));
setCSS(id);
op.onload($("#"+id)[0],op,$.fn.csv2table.data[id]);
}
function mkTable(data,sortType,colIndex){
var rowsAry=null;
if(sortType){
$.fn.csv2table._rowsAry[id].head = $.fn.csv2table._rowsAry[id][0] ;
rowsAry=$.fn.csv2table._rowsAry[id];
rowsAry.shift();
rowsAry=sortwk(rowsAry,sortType,colIndex);
rowsAry.unshift($.fn.csv2table._rowsAry[id].head);
} else {
if(op.col_sep==','){
rowsAry=escapeStrComma(op.col_sep,op.row_sep,data,op.removeDoubleQuote);
} else {
rowsAry=$.fn.csv2table._rowsAry[id]=mkArray(data,op.col_sep,op.row_sep);
}
}
var rowlen=rowsAry.length,
table=$("
");
jQuery.each(rowsAry,function(i, val){
if(i==rowlen)return;
var trs=(i==0)?"| ":" | ",
tre=(i==0)?"":" | "
var colsAry=val;
var html=$("
")
.html(
trs
+colsAry.join(""+tre+trs)
+tre
)
.appendTo(table);
});
$("th",table).each(function(i){
$(this).append(
$("
▼\
▲")
.css('font-size','7px')
.css('text-decoration','none')
.css('color','#888')
.addClass(op.className_sortMark)
)
})
return table;
}
////
// 並べ替え
// @parame dataAry 並べ替え対象配列
// @parame sortType 昇順sortA|降順sortD
// @parame colIndex 数値ソート列
//
function sortwk(dataAry,sortType,colIndex){
var i=colIndex;
if(!dataAry)return ;
if(isNaN(dataAry[0][i])){
dataAry.sort(
function(a,b){
if(!a[i]) {
if(!b[i])return 0;
else return 1;
} else if(!b[i]) {
return -1;
}
if(""+a[i] === ""+b[i])return 0;
return (sortType=="sortD")?
((""+a[i] > ""+b[i])?-1:1):
((""+a[i] > ""+b[i])?1:-1);
}
)
} else {
dataAry.sort(
function (a,b){
if(!a[i]) {
if(!b[i])return 0;
else return 1;
} else if(!b[i]) {
return -1;
}
if(isNaN(a[i])||isNaN(b[i])){
//$.fn.csv2table.err.push(i+'列が数値か文字か不明です')
;return 0
};
return (sortType=="sortD")?(b[i] - a[i]):(a[i] - b[i]);//降順:昇順
}
);
}
return dataAry;
}
function escapeStrComma(col_sep,row_sep,oj,removeDoubleQuote){
var rdq=(removeDoubleQuote)?'':'"';
//mk dmy for comma in "
var dmy =['-###','###-'],cnt=0,r;
cnt=(function mkdmy(cnt){
if(!(
oj.indexOf((dmy[0]+'comma'+cnt+dmy[1]))==-1 ||
oj.indexOf((dmy[0]+'rn'+cnt+dmy[1]))==-1 ||
oj.indexOf((dmy[0]+'wDquote'+cnt+dmy[1]))==-1
))mkdmy( ++cnt )
else void(0)
return cnt;
})(cnt)
var reg='(["](.|(\r\n))*?(["]$|["][,('+op.row_sep_reg+')]))',
dmystr_comma=''+(dmy[0]+'comma'+cnt+dmy[1]) ,
dmystr_rn=''+(dmy[0]+'rn'+cnt+dmy[1]) ,
dmystr_wDquote=''+(dmy[0]+'wDquote'+cnt+dmy[1]) ;
escape= oj.replace('""',dmystr_wDquote);
escape= escape.replace(
new RegExp(reg,"g"),
function (after,before,index) {
after= after
.replace(/(\r\n)(?!$)/g,dmystr_rn)
.replace(/,(?!$)/g,dmystr_comma)
return after
}
)
//alert(escape)
r=$.fn.csv2table._rowsAry[id]=mkArray(escape,op.col_sep,op.row_sep);
var b=[],rowlen=r.length,collen=r[0].length;
for(var i=0;i