/////////////////////////////////////////////////////////////////////////// // Copyright © 2014 - 2018 Esri. All Rights Reserved. // // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /////////////////////////////////////////////////////////////////////////// define([ //'dojo/Evented', 'dojo/_base/declare', 'dojo/_base/html', 'dojo/_base/lang', 'dojo/on', //'dojo/query', 'jimu/utils', 'dijit/_WidgetBase', 'dijit/_TemplatedMixin', 'dojo/text!./templates/_CropImage.html', //'jimu/dijit/Message', 'dojo/NodeList-dom' ], function (/*Evented, */declare, html, lang, on, /*query, */ utils, _widgetBase, _TemplatedMixin, template/* Message,*/) { var Cropper = window.Cropper; return declare([_widgetBase, _TemplatedMixin], { templateString: template, imageSrc: null, type: null, goldenWidth: 4, goldenHeight: 3, postCreate: function () { if (!this.type) { this.type = 'image/jpeg'; } this.setImageSrc(this.imageSrc); this.loadingImg.src = require.toUrl('jimu') + '/images/loading.gif'; this.own(on(this.baseImage, 'load', lang.hitch(this, function () { html.setStyle(this.loadingImg, 'display', 'none'); this._initCropper(); }))); }, _initCropper: function () { // Restart if (this.cropper && this.cropper.destroy) { this.cropper.destroy(); } var options = { aspectRatio: this.goldenWidth / this.goldenHeight, preview: '.img-preview' // ready: lang.hitch(this, function (e) { // console.log(e.type); // }), // cropstart: lang.hitch(this, function (e) { // console.log(e.type, e.detail.action); // //this.saveBookMarkersBySortable(); // //this.emit("sort", this.bookmarks); // }), // cropmove: function (e) { // console.log(e.type, e.detail.action); // }, // cropend: lang.hitch(this, function (e) { // console.log(e.type, e.detail.action); // //var data = this.getData(); // //this.emit("crop", data); // }), // crop: function (e) { // var data = e.detail; // console.log(e.type); // // dataX.value = Math.round(data.x); // // dataY.value = Math.round(data.y); // // dataHeight.value = Math.round(data.height); // // dataWidth.value = Math.round(data.width); // // dataRotate.value = typeof data.rotate !== 'undefined' ? data.rotate : ''; // // dataScaleX.value = typeof data.scaleX !== 'undefined' ? data.scaleX : ''; // // dataScaleY.value = typeof data.scaleY !== 'undefined' ? data.scaleY : ''; // }, // zoom: function (e) { // console.log(e.type, e.detail.ratio); // } }; this.cropper = new Cropper(this.baseImage, options); }, setImageSrc: function (src) { html.setAttr(this.baseImage, 'src', src); }, getData: function () { var imgData = this.cropper.getCroppedCanvas(); var uploadedImageType = this.type || 'image/jpeg'; var data = imgData.toDataURL(uploadedImageType); return data; }, destroy: function () { if (this.cropper && this.cropper.destroy) { this.cropper.destroy(); } this.inherited(arguments); } }); });