app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/remote_image.js in pageflow-linkmap-page-1.0.0 vs app/assets/javascript/pageflow/linkmap_page/widgets/linkmap/remote_image.js in pageflow-linkmap-page-1.1.0
- old
+ new
@@ -1,38 +1,54 @@
-pageflow.linkmapPage.RemoteImage = function(url, image) {
- this.width = function() {
- return image.width;
- };
+pageflow.linkmapPage.RemoteImage = (function() {
+ function RemoteImage(url, image) {
+ this.width = function() {
+ return image.width;
+ };
- this.height = function() {
- return image.height;
- };
+ this.height = function() {
+ return image.height;
+ };
- this.draw = function(canvas, options) {
- options = options || {};
- var context = canvas.getContext('2d');
+ this.draw = function(canvas, options) {
+ options = options || {};
+ var context = canvas.getContext('2d');
- if (options.disableImageSmoothing) {
- context.imageSmoothingEnabled = false;
- }
+ if (options.disableImageSmoothing) {
+ context.imageSmoothingEnabled = false;
+ }
- context.drawImage(image,
- 0,
- 0,
- canvas.width,
- canvas.height);
+ context.drawImage(image,
+ 0,
+ 0,
+ canvas.width,
+ canvas.height);
+ };
+ }
+
+ RemoteImage.load = function(url) {
+ return new $.Deferred(function(deferred) {
+ var image = new Image();
+
+ image.onload = onLoad;
+ image.onerror = onError;
+ image.crossOrigin = 'Anonymous';
+ image.src = url;
+
+ function onLoad() {
+ deferred.resolve(new pageflow.linkmapPage.RemoteImage(url, image));
+ }
+
+ function onError() {
+ deferred.reject(loadError(url));
+ }
+ }).promise();
};
-};
-pageflow.linkmapPage.RemoteImage.load = function(url) {
- return new $.Deferred(function(deferred) {
- var image = new Image();
+ return RemoteImage;
- image.onload = onLoad;
- image.crossOrigin = 'Anonymous';
- image.src = url;
+ function loadError(url) {
+ var error = new Error('Error while loading ' + url + '.');
+ error.i18nKey = 'pageflow.linkmap_page.errors.loading_remote_image_failed';
- function onLoad() {
- deferred.resolve(new pageflow.linkmapPage.RemoteImage(url, image));
- }
- }).promise();
-};
+ return error;
+ }
+}());
\ No newline at end of file