<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Uploader With DataTable Example</title>
<!-- Required YUI files -->
<link rel="stylesheet" type="text/css" href="/static/js/yui/build/fonts/fonts-min.css" />
<link rel="stylesheet" type="text/css" href="/static/js/yui/build/datatable/assets/skins/sam/datatable.css" />
<script type="text/javascript" src="/static/js/yui/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="/static/js/yui/build/element/element-beta.js"></script>
<!-- Required JSON files -->
<script type="text/javascript" src="/static/js/yui/build/json/json-beta.js"></script>
<!-- Required Datasource and Datatable files -->
<script type="text/javascript" src="/static/js/yui/build/datasource/datasource-beta.js"></script>
<script type="text/javascript" src="/static/js/yui/build/datatable/datatable-beta.js"></script>
<!-- Main Uploader script -->
<script type="text/javascript" src="/static/js/yui/build/uploader/uploader-experimental.js"></script>
<!-- Logger CSS and JS -->
<link type="text/css" rel="stylesheet" href="/static/js/yui/build/logger/assets/skins/sam/logger.css">
<script type="text/javascript" src="/static/js/yui/build/logger/logger-min.js"></script>
</head>
<body class=" yui-skin-sam">
<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
<h1>Uploader With DataTable Example</h1>
<div id="toBeReplaced" style="width:400px;height:210px">Unable to load Flash content. You can download the latest version of Flash Player from the <a href="http://www.adobe.com/go/getflashplayer">Adobe Flash Player Download Center</a>.</p></div>
<input id="browseBtn" name="browse" value="Browse for Images" onclick="browse()" type="button" />
<input id="uploadBtn" name="upload" value="Upload Selected" onclick="upload()" type="button" />
<br/>
<div id="single" style="margin-top:2em;"></div>
<script type="text/javascript">
this.myLogReader = new YAHOO.widget.LogReader();
YAHOO.widget.Uploader.SWFURL = "/static/js/yui/build/uploader/assets/uploader.swf";
var uploader = new YAHOO.widget.Uploader( "toBeReplaced" );
uploader.addListener('fileSelect',onFileSelect);
uploader.addListener('uploadError',onUploadError);
uploader.addListener('uploadComplete',onUploadComplete);
uploader.addListener('uploadProgress',onUploadProgress);
uploader.addListener('uploadStart',onUploadStart);
var uploadCounter = 0;
var fileIdHash;
var dataArr;
function browse() {
uploader.clearFileList();
uploader.browse(true, [{description:"Images", extensions:"*.jpg;*.png;*.gif"}]);
}
function createDataTable(entries) {
rowCounter = 0;
fileIdHash = [];
dataArr = [];
for(var i in entries) {
var entry = entries[i];
dataObj = {};
for (var j in entry) {
dataObj[j] = entry[j];
}
dataArr.push(dataObj);
fileIdHash[dataObj["id"]] = rowCounter;
rowCounter++;
}
this.allData = {data: dataArr}
var myColumnDefs = [
{key:"name", label: "File Name", sortable:false},
{key:"size", label: "Size", sortable:false},
{key:"progress", label: "Upload progress", sortable:false}
];
this.myDataSource = new YAHOO.util.DataSource(this.allData);
this.myDataSource.dataType = YAHOO.util.DataSource.TYPE_JSARRAY;
this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
this.myDataSource.responseSchema = {
resultsList: ["data"],
fields: ["id","name","created","modified","type", "size", "progress"]
};
this.singleSelectDataTable = new YAHOO.widget.DataTable("single",
myColumnDefs, this.myDataSource, {
caption:"Files To Upload",
selectionMode:"single"
});
}
function upload() {
YAHOO.log(dataArr);
var idToUpload = dataArr[uploadCounter]["id"];
uploader.upload(idToUpload, 'http://localhost:3000/upload');
document.getElementById('uploadBtn').disabled = true;
}
function onUploadProgress(event) {
rowNum = fileIdHash[event["id"]];
prog = Math.round(100*(event["bytesLoaded"]/event["bytesTotal"]));
progbar = "<hr style=\"color: #f00; background-color: #f00; text-align:left; margin: 0 auto 0 0; height: 5px; width: " + prog + "px\"/>";
singleSelectDataTable.updateRow(rowNum, {name: dataArr[rowNum]["name"], size: dataArr[rowNum]["size"], progress: progbar});
}
function onFileSelect(event) {
fileList = event.fileList;
YAHOO.log(event);
createDataTable(fileList);
}
function onUploadStart(event) {
YAHOO.log(event);
rowNum = fileIdHash[event["id"]];
singleSelectDataTable.updateRow(rowNum, {name: dataArr[rowNum]["name"], size: dataArr[rowNum]["size"], progress: "Starting..."});
}
function onUploadComplete(event) {
YAHOO.log(event);
rowNum = fileIdHash[event["id"]];
progbar = "<hr style=\"color: #f00; background-color: #f00; text-align:left; margin: 0 auto 0 0; height: 5px; width: 100px\"/>";
singleSelectDataTable.updateRow(rowNum, {name: dataArr[rowNum]["name"], size: dataArr[rowNum]["size"], progress: progbar});
if (uploadCounter < dataArr.length - 1) {
uploadCounter++;
upload();
}
else {
YAHOO.log("All files uploaded!");
}
}
function onUploadError (event) {
YAHOO.log(event);
}
</script>
<!--END SOURCE CODE FOR EXAMPLE =============================== -->
</body>
</html>