111 lines
2.7 KiB
JavaScript
111 lines
2.7 KiB
JavaScript
/**
|
|
* JS MergeXML usage sample
|
|
* merge multi-selected local xml files
|
|
*
|
|
* @package MergeXML
|
|
* @author Vallo Reima
|
|
* @copyright (C)2014
|
|
*/
|
|
function Example() {
|
|
|
|
var oMX = new MergeXML(); /* instantiate the class */
|
|
var fls = []; /* output files info */
|
|
|
|
/**
|
|
* get element object
|
|
* @param {string} id
|
|
*/
|
|
var $ = function(id) {
|
|
return document.getElementById(id);
|
|
};
|
|
|
|
/**
|
|
* add event handler
|
|
* @param {string} evt
|
|
* @param {string} id
|
|
* @param {function} fnc
|
|
*/
|
|
var AddEvent = function(evt, id, fnc) {
|
|
var elem = $(id);
|
|
if (elem.addEventListener) // W3C DOM
|
|
elem.addEventListener(evt, fnc, false);
|
|
else if (elem.attachEvent) { // IE DOM
|
|
elem.attachEvent('on' + evt, fnc);
|
|
}
|
|
else { // No much to do
|
|
elem[evt] = fnc;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* FileList objects handler
|
|
* @param {object} evt
|
|
*/
|
|
var FileSelect = function(evt) {
|
|
$('output').innerHTML = '';
|
|
$('result').innerHTML = '';
|
|
oMX.Init(); /* begin with new objects */
|
|
fls = [];
|
|
var cnt = 0;
|
|
var files = evt.target.files; /* FileList object */
|
|
for (var i = 0; i < files.length; i++) { /* loop the selected files */
|
|
var reader = new FileReader();
|
|
reader.onload = function(file) {
|
|
fls[cnt + 1] = oMX.AddFile(file) ? true : false; /* get a file */
|
|
var c = $('result').innerHTML;
|
|
if (c !== '') {
|
|
c += ', ';
|
|
}
|
|
$('result').innerHTML = c + fls[cnt];
|
|
cnt += 2;
|
|
};
|
|
fls.push(files[i].name, null);
|
|
reader.readAsText(files[i]);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Check results
|
|
* @return {mixed} array -- files list
|
|
* string -- error
|
|
* null -- loading yet
|
|
*/
|
|
var FileCheck = function() {
|
|
var r = [];
|
|
for (var i = 0; i < fls.length; i += 2) {
|
|
if (fls[i + 1]) {
|
|
r.push(fls[i]);
|
|
} else {
|
|
r = fls[i + 1] === false ? fls[i] : null;
|
|
break;
|
|
}
|
|
}
|
|
return r;
|
|
};
|
|
|
|
/**
|
|
* Show results
|
|
*/
|
|
var FileMerge = function() {
|
|
var err = '';
|
|
var r = FileCheck();
|
|
if (typeof r === 'string') {
|
|
err = oMX.error.text + ': ' + r;
|
|
} else if (r === null) {
|
|
err = 'Files are not loaded yet';
|
|
} else if (oMX.count < 2) {
|
|
err = 'Minimum 2 files are required';
|
|
}
|
|
$('output').innerHTML = err ? err : oMX.Get(2);
|
|
};
|
|
|
|
if (oMX.error.code !== '') {
|
|
$('output').innerHTML = oMX.error.text; /* no DOM support */
|
|
} else if (!window.File || !window.FileList || !window.FileReader) {
|
|
$('output').innerHTML = 'Sorry, the demo needs a browser supporting FileReader API';
|
|
} else {
|
|
AddEvent('change', 'files', FileSelect);
|
|
AddEvent('click', 'merge', FileMerge);
|
|
}
|
|
|
|
}
|