*/
/**
- * @class Roo.UploadCropbox
- * @extends Roo.Component
- * UploadCropbox class
+ * @class Roo.dialog.UploadCropbox
+ * @extends Roo.BoxComponent
+ * Dialog UploadCropbox class
* @cfg {String} emptyText show when image has been loaded
* @cfg {String} rotateNotify show when image too small to rotate
* @cfg {Number} errorTimeout default 3000
* @param {Object} config The config object
*/
- Roo.UploadCropbox = function(config){
- console.log("BOOTSTRAP UPLOAD CROPBOX SUPERCLASS CONSTRUCTOR CALL");
- Roo.UploadCropbox.superclass.constructor.call(this, config);
+ Roo.dialog.UploadCropbox = function(config){
+ Roo.dialog.UploadCropbox.superclass.constructor.call(this, config);
this.addEvents({
/**
* @event beforeselectfile
* Fire before select file
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
*/
"beforeselectfile" : true,
/**
* @event initial
* Fire after initEvent
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
*/
"initial" : true,
/**
* @event crop
* Fire after initEvent
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {String} data
*/
"crop" : true,
/**
* @event prepare
* Fire when preparing the file data
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {Object} file
*/
"prepare" : true,
/**
* @event exception
* Fire when get exception
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {XMLHttpRequest} xhr
*/
"exception" : true,
/**
* @event beforeloadcanvas
* Fire before load the canvas
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {String} src
*/
"beforeloadcanvas" : true,
/**
* @event trash
* Fire when trash image
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
*/
"trash" : true,
/**
* @event download
* Fire when download the image
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
*/
"download" : true,
/**
* @event footerbuttonclick
* Fire when footerbuttonclick
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {String} type
*/
"footerbuttonclick" : true,
/**
* @event resize
* Fire when resize
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
*/
"resize" : true,
/**
* @event rotate
* Fire when rotate the image
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {String} pos
*/
"rotate" : true,
/**
* @event inspect
* Fire when inspect the file
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {Object} file
*/
"inspect" : true,
/**
* @event upload
* Fire when xhr upload the file
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {Object} data
*/
"upload" : true,
/**
* @event arrange
* Fire when arrange the file data
- * @param {Roo.UploadCropbox} this
+ * @param {Roo.dialog.UploadCropbox} this
* @param {Object} formData
*/
- "arrange" : true
+ "arrange" : true,
+ /**
+ * @event loadcanvas
+ * Fire after load the canvas
+ * @param {Roo.dialog.UploadCropbox}
+ * @param {Object} imgEl
+ */
+ "loadcanvas" : true
});
- this.buttons = this.buttons || Roo.UploadCropbox.footer.STANDARD;
+ this.buttons = this.buttons || Roo.dialog.UploadCropbox.footer.STANDARD;
};
-Roo.extend(Roo.UploadCropbox, Roo.Component, {
+Roo.extend(Roo.dialog.UploadCropbox, Roo.Component, {
emptyText : 'Click to upload image',
rotateNotify : 'Image is too small to rotate',
onRender : function(ct, position)
{
- Roo.UploadCropbox.superclass.onRender.call(this, ct, position);
+ Roo.dialog.UploadCropbox.superclass.onRender.call(this, ct, position);
+
+ if(this.el){
+ if (this.el.attr('xtype')) {
+ this.el.attr('xtypex', this.el.attr('xtype'));
+ this.el.dom.removeAttribute('xtype');
+
+ this.initEvents();
+ }
+ }
+ else {
+ var cfg = Roo.apply({}, this.getAutoCreate());
+
+ cfg.id = this.id || Roo.id();
+
+ if (this.cls) {
+ cfg.cls = (typeof(cfg.cls) == 'undefined' ? this.cls : cfg.cls) + ' ' + this.cls;
+ }
+
+ if (this.style) { // fixme needs to support more complex style data.
+ cfg.style = (typeof(cfg.style) == 'undefined' ? this.style : cfg.style) + '; ' + this.style;
+ }
+
+ this.el = ct.createChild(cfg, position);
+
+ this.initEvents();
+ }
if (this.buttons.length) {
this.cropData = false;
this.notifyEl.dom.innerHTML = this.emptyText;
- this.selectorEl.dom.value = '';
+ // this.selectorEl.dom.value = '';
},
onFileSelected : function(e)
{
+ console.log("ON FILE SELECTED");
e.preventDefault();
if(typeof(this.selectorEl.dom.files) == 'undefined' || !this.selectorEl.dom.files.length){
loadCanvas : function(src)
{
+ console.log("LOAD CANVAS");
+ console.log(src);
if(this.fireEvent('beforeloadcanvas', this, src) != false){
this.reset();
onLoadCanvas : function()
{
+ console.log("ON LOAD CANVAS");
this.imageEl.OriginWidth = this.imageEl.naturalWidth || this.imageEl.width;
this.imageEl.OriginHeight = this.imageEl.naturalHeight || this.imageEl.height;
+
+ if(this.fireEvent('loadcanvas', this, this.imageEl) != false){
- this.bodyEl.un('click', this.beforeSelectFile, this);
-
- this.notifyEl.hide();
- this.thumbEl.show();
- this.footerEl.show();
-
- this.baseRotateLevel();
+ this.bodyEl.un('click', this.beforeSelectFile, this);
+
+ this.notifyEl.hide();
+ this.thumbEl.show();
+ this.footerEl.show();
+
+ this.baseRotateLevel();
+
+ if(this.isDocument){
+ this.setThumbBoxSize();
+ }
+
+ this.setThumbBoxPosition();
+
+ this.baseScaleLevel();
+
+ this.draw();
+
+ this.resize();
+
+ this.canvasLoaded = true;
- if(this.isDocument){
- this.setThumbBoxSize();
}
- this.setThumbBoxPosition();
-
- this.baseScaleLevel();
-
- this.draw();
-
- this.resize();
-
- this.canvasLoaded = true;
-
if(this.loadMask){
this.maskEl.unmask();
}
setCanvasPosition : function()
{
+ console.log("SET CANVAS POSITION");
if(!this.canvasEl){
return;
}
e.stopEvent();
this.startScale = this.scale;
-
this.scale = (e.getWheelDelta() == 1) ? (this.scale + 1) : (this.scale - 1);
-
if(!this.zoomable()){
this.scale = this.startScale;
return;
var width = Math.ceil(this.imageEl.OriginWidth * this.getScaleLevel() / minScale);
var height = Math.ceil(this.imageEl.OriginHeight * this.getScaleLevel() / minScale);
+
+ var maxWidth = this.imageEl.OriginWidth;
+ var maxHeight = this.imageEl.OriginHeight;
if(
this.isDocument &&
!this.isDocument &&
(this.rotate == 0 || this.rotate == 180) &&
(
- width < this.minWidth ||
- width > this.imageEl.OriginWidth ||
- height < this.minHeight ||
- height > this.imageEl.OriginHeight
+ width < this.minWidth ||
+ height < this.minHeight ||
+ width > maxWidth ||
+ height > maxHeight
)
){
return false;
draw : function()
{
+ console.log("DRAW");
this.previewEl.dom.innerHTML = '';
var canvasEl = document.createElement("canvas");
var contextEl = canvasEl.getContext("2d");
+
+ console.log(this.getScaleLevel());
canvasEl.width = this.imageEl.OriginWidth * this.getScaleLevel();
canvasEl.height = this.imageEl.OriginWidth * this.getScaleLevel();
setThumbBoxPosition : function()
{
+ console.log("SET THUMBBOX POSITION");
var x = Math.ceil((this.bodyEl.getWidth() - this.thumbEl.getWidth()) / 2 );
var y = Math.ceil((this.bodyEl.getHeight() - this.thumbEl.getHeight()) / 2);
baseRotateLevel : function()
{
+ console.log("BASE ROTATE LEVEL");
this.baseRotate = 1;
if(
typeof(this.exif) != 'undefined' &&
- typeof(this.exif[Roo.UploadCropbox['tags']['Orientation']]) != 'undefined' &&
- [1, 3, 6, 8].indexOf(this.exif[Roo.UploadCropbox['tags']['Orientation']]) != -1
+ typeof(this.exif[Roo.dialog.UploadCropbox['tags']['Orientation']]) != 'undefined' &&
+ [1, 3, 6, 8].indexOf(this.exif[Roo.dialog.UploadCropbox['tags']['Orientation']]) != -1
){
- this.baseRotate = this.exif[Roo.UploadCropbox['tags']['Orientation']];
+ this.baseRotate = this.exif[Roo.dialog.UploadCropbox['tags']['Orientation']];
}
- this.rotate = Roo.UploadCropbox['Orientation'][this.baseRotate];
+ this.rotate = Roo.dialog.UploadCropbox['Orientation'][this.baseRotate];
},
baseScaleLevel : function()
{
+ console.log("BASE SCALE LEVEL");
var width, height;
if(this.isDocument){
}
}
+
+ if(this.imageEl.OriginWidth < this.minWidth ) {
+ this.baseScale = width / this.minWidth;
+ }
return;
},
getScaleLevel : function()
{
- return this.baseScale * Math.pow(1.1, this.scale);
+ return this.baseScale * Math.pow(1.02, this.scale);
},
onTouchStart : function(e)
prepare : function(file)
{
+ console.log("PREPARE");
+ console.log(file);
if(this.loadMask){
this.maskEl.mask(this.loadingText);
}
getExifValue : function (dataView, tiffOffset, offset, type, length, littleEndian)
{
- var tagType = Roo.UploadCropbox.exifTagTypes[type],
+ var tagType = Roo.dialog.UploadCropbox.exifTagTypes[type],
tagSize,
dataOffset,
values,
});
-Roo.apply(Roo.UploadCropbox, {
+Roo.apply(Roo.dialog.UploadCropbox, {
tags : {
'Orientation': 0x0112
},