//@utf-8
(function($) {
$.csv2table={
version : '0.02-b-1.1',
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='./img/icon-loadinfo.gif',
sortDImg : (new Image()).src='./img/icon-d.gif',
sortAImg : (new Image()).src='./img/icon-a.gif',
setting : [],
data : [],
_rowsAry : [],
err : []
}
$.fn.csv2table=function (url,setting){
if(!setting)var setting={};
var contents=$.fn.csv2table.el=this,id=this[0].id,
op = $.csv2table.setting[id] = $.extend({
url : url,
nowloadingImg : $.csv2table.loadImg, //Image of now loading...
nowloadingMsg : 'now loading...', //Massege of now loading...
removeDoubleQuote : true, // remove " of "hogehoge"
col_midasi : '0', //
row_sep : '\n', //Separator of rows. default '\n'
col_sep : ',', //Separator(,|\t|;) of cols. default ','
sortable : setDefault(setting.sortable,true),//col sort
col0color : setDefault(setting.sortable,true),//col[0] color sync jQchart line_strokeStyle
onload : null, //collback event
use : null, // 'jqchart:line#canvasID'
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'
if(op.use){
op.use_api = op.use.split(':')[0]
op.use_api_type = op.use.split('#')[0]
op.use_api_box = op.use.split(':')[1].split('#')[1]
}
$(contents).before('
'+op.nowloadingMsg+' ' )
$.get(url+"?"+(new Date()).getTime(),"",function(data,textStatus){
$.csv2table.data[id]=data;
$(".csv2table-loading").fadeOut();
$(contents).css("display","none").html(mkTable(id,data));
setCSS(id);
$(contents).fadeIn();
if(op.use_api_type=='jqchart:line')useChart(id,op,data,$.csv2table._rowsAry[id]);
if($.csv2table.setting[id].onload)
$.csv2table.setting[id].onload(id,op,data,$.csv2table._rowsAry[id]);
});
$.fn.csv2table.wrtTable=function(sortType,colIndex,id){
$("#"+id).html(mkTable(id,$.csv2table._rowsAry[id],sortType,colIndex));
setCSS(id);
if(op.use_api_type=='jqchart:line')useChart(id,op,$.csv2table.data[id],$.csv2table._rowsAry[id]);
if($.csv2table.setting[id].onload)
$.csv2table.setting[id].onload(id,op,$.csv2table.data[id],$.csv2table._rowsAry[id]);
}
function mkTable(id,data,sortType,colIndex){
var rowsAry=null;
if(sortType){
$.csv2table._rowsAry[id].head=$.csv2table._rowsAry[id].slice(0,op.col_midasi+1)
rowsAry=$.csv2table._rowsAry[id].slice(op.col_midasi+1,$.csv2table._rowsAry[id].length)
rowsAry=sortwk(rowsAry,sortType,colIndex);
rowsAry=$.csv2table._rowsAry[id]=$.csv2table._rowsAry[id].head.concat(rowsAry)
} else {
if(op.col_sep==','){
rowsAry=$.csv2table._rowsAry[id]=escapeStrComma(op.col_sep,op.row_sep,data,op.removeDoubleQuote);
} else {
rowsAry=$.csv2table._rowsAry[id]=mkArray(data,op.col_sep,op.row_sep);
}
}
if(!rowsAry)return
var rowlen=rowsAry.length
var tdClass ;
var row = rowsAry.length ;
var col = rowsAry[0].length ;
htm="";
//見出し行の処理
htm+= "";
for (k=0; k"
+ rowsAry[op.col_midasi][k];
if(op.sortable){
htm+="
"
+ "
"
+ ""
+ "
"
}
htm+= "";
}
htm+= "
";
//data行の処理
for (i=eval(op.col_midasi+1); i";
//列の処理
for (j=0; j"
+ rowsAry[i][j]
+ "";
}
htm+= "";
}
var tableHtm=document.getElementById(id)
.innerHTML="";
if(op.sortable)
$("th",tableHtm)
.css('font-size','7px')
.css('font-size','9px')
.css('font-family','Arial')
.css('text-decoration','none')
.css('color','#888')
.addClass(op.className_sortMark)
return tableHtm;
}
////
// 並べ替え
// @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 {
(sortType=="sortD")?
dataAry.sort(function (a,b){
return (b[i] - a[i]) ;//降順
}):
dataAry.sort(function (a,b){
return (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
}
)
r=$.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