alpaca
Version:
Alpaca provides the easiest and fastest way to generate interactive forms for the web and mobile devices. It runs simply as HTML5 or more elaborately using Bootstrap, jQuery Mobile or jQuery UI. Alpaca uses Handlebars to process JSON schema and provide
65 lines (60 loc) • 1.52 kB
JavaScript
define(function () {
/**
* @class core.async
*
* Async functions which returns `Promise`
*
* @singleton
* @alternateClassName async
*/
var async = (function () {
/**
* @method readFileAsDataURL
*
* read contents of file as representing URL
*
* @param {File} file
* @return {Promise} - then: dataUrl
*/
var readFileAsDataURL = function (file) {
return $.Deferred(function (deferred) {
$.extend(new FileReader(), {
onload: function (e) {
var dataURL = e.target.result;
deferred.resolve(dataURL);
},
onerror: function () {
deferred.reject(this);
}
}).readAsDataURL(file);
}).promise();
};
/**
* @method createImage
*
* create `<image>` from url string
*
* @param {String} url
* @return {Promise} - then: $image
*/
var createImage = function (url) {
return $.Deferred(function (deferred) {
var $img = $('<img>');
$img.one('load', function () {
$img.off('error abort');
deferred.resolve($img);
}).one('error abort', function () {
$img.off('load').detach();
deferred.reject($img);
}).css({
display: 'none'
}).appendTo(document.body).attr('src', url);
}).promise();
};
return {
readFileAsDataURL: readFileAsDataURL,
createImage: createImage
};
})();
return async;
});