it("should invoke method on window or document correctly", function () { var win = $(window), doc = $(document); expect(win.height()).toBe(Dom.viewportHeight()); expect(win.width()).toBe(Dom.viewportWidth()); expect(doc.height()).toBe(Dom.docHeight()); expect(doc.width()).toBe(Dom.docWidth()); });
it("对齐居中有效", function () { var o = new Overlay({ width: 400, elCls: "popup", resize: { handlers: ["t"] }, content: "render by javascript" }); o.set("align", { points: ['cc', 'cc'] }); o.show(); expect(parseInt(o.get('el').css('left'), 10)) .toBeEqual(Math.ceil((Dom.viewportWidth() - o.get('el').outerWidth()) / 2)); expect(parseInt(o.get('el').css("top"), 10)) .toBeEqual(Math.ceil((Dom.viewportHeight() - o.get('el').outerHeight()) / 2)); o.destroy(); });
_maximize: function (stop) { var self = this, editor = self.editor, editorEl = editor.get('el'), viewportHeight = Dom.viewportHeight(), viewportWidth = Dom.viewportWidth(), textareaEl = editor.get('textarea'), statusHeight = editor.get('statusBarEl') ? editor.get('statusBarEl')[0].offsetHeight : 0, toolHeight = editor.get('toolBarEl')[0].offsetHeight; if (!ie) { Dom.css(doc.body, { width: 0, height: 0, overflow: 'hidden' }); } else { doc.body.style.overflow = 'hidden'; } doc.documentElement.style.overflow = 'hidden'; editorEl.css({ position: 'absolute', zIndex: Editor.baseZIndex(Editor.ZIndexManager.MAXIMIZE), width: viewportWidth + 'px' }); iframe.css({ zIndex: Editor.baseZIndex(Editor.ZIndexManager.MAXIMIZE - 5), height: viewportHeight + 'px', width: viewportWidth + 'px' }); editorEl.offset({ left: 0, top: 0 }); iframe.css({ left: 0, top: 0 }); textareaEl.parent().css({ height: (viewportHeight - statusHeight - toolHeight ) + 'px' }); textareaEl.css({ height: (viewportHeight - statusHeight - toolHeight ) + 'px' }); if (stop !== true) { /*jshint noarg:false*/ arguments.callee.call(self, true); } },
it("对齐居中有效", function () { o.set("align", { points: ['cc', 'cc'] }); o.show(); expect(parseInt(o.get('el').css('left'), 10)) .toBeEqual(Math.ceil((Dom.viewportWidth() - o.get('el').outerWidth()) / 2)); expect(parseInt(o.get('el').css("top"), 10)) .toBeEqual(Math.ceil((Dom.viewportHeight() - o.get('el').outerHeight()) / 2)); });
_maximize: function(stop) { _$jscoverage['/cmd.js'].functionData[9]++; _$jscoverage['/cmd.js'].lineData[209]++; var self = this, editor = self.editor, editorEl = editor.get('el'), viewportHeight = Dom.viewportHeight(), viewportWidth = Dom.viewportWidth(), textareaEl = editor.get('textarea'), statusHeight = editor.get('statusBarEl') ? editor.get('statusBarEl')[0].offsetHeight : 0, toolHeight = editor.get('toolBarEl')[0].offsetHeight; _$jscoverage['/cmd.js'].lineData[219]++; if (visit15_219_1(!ie)) { _$jscoverage['/cmd.js'].lineData[220]++; Dom.css(doc.body, { width: 0, height: 0, overflow: 'hidden'}); } else { _$jscoverage['/cmd.js'].lineData[226]++; doc.body.style.overflow = 'hidden'; } _$jscoverage['/cmd.js'].lineData[228]++; doc.documentElement.style.overflow = 'hidden'; _$jscoverage['/cmd.js'].lineData[230]++; editorEl.css({ position: 'absolute', zIndex: Editor.baseZIndex(Editor.ZIndexManager.MAXIMIZE), width: viewportWidth + 'px'}); _$jscoverage['/cmd.js'].lineData[235]++; iframe.css({ zIndex: Editor.baseZIndex(Editor.ZIndexManager.MAXIMIZE - 5), height: viewportHeight + 'px', width: viewportWidth + 'px'}); _$jscoverage['/cmd.js'].lineData[240]++; editorEl.offset({ left: 0, top: 0}); _$jscoverage['/cmd.js'].lineData[244]++; iframe.css({ left: 0, top: 0}); _$jscoverage['/cmd.js'].lineData[249]++; textareaEl.parent().css({ height: (viewportHeight - statusHeight - toolHeight) + 'px'}); _$jscoverage['/cmd.js'].lineData[254]++; textareaEl.css({ height: (viewportHeight - statusHeight - toolHeight) + 'px'}); _$jscoverage['/cmd.js'].lineData[258]++; if (visit16_258_1(stop !== true)) { _$jscoverage['/cmd.js'].lineData[260]++; arguments.callee.call(self, true); } },
it("getVisibleRectForElement works", function () { var gap = Dom.create("<div style='height: 1500px;width: 100000px;'></div>"); Dom.append(gap, 'body'); var getVisibleRectForElement = AlignExtension.__getVisibleRectForElement, test = []; test[0] = "<div><div></div></div>"; test[1] = "<div style='width: 100px;height: 100px;overflow: hidden;'>" + "<div style='position: relative;'></div></div>"; test[2] = "<div style='width: 100px;height: 100px;overflow: hidden;'>" + "<div>" + "<div style='position: absolute;'></div>" + "</div>" + "</div>"; test[3] = "<div style='position: relative;width: 100px;" + "height: 100px;overflow: hidden;'>" + "<div>" + "<div style='position: absolute;'></div>" + "</div>" + "</div>"; var dom = []; for (var i = 3; i >= 0; i--) { dom[i] = Dom.create(test[i]); Dom.prepend(dom[i], 'body'); } // 1 window.scrollTo(10, 10); var right = 10 + Dom.viewportWidth(), rect, bottom = 10 + Dom.viewportHeight(); rect = getVisibleRectForElement(dom[0].firstChild); expect(rect.left).toBeEqual(10); expect(rect.top).toBeEqual(10); expect(rect.right).toBeEqual(right); expect(rect.bottom).toBeEqual(bottom); window.scrollTo(200, 200); rect = getVisibleRectForElement(dom[0].firstChild); expect(rect.left).toEqual(200); expect(rect.bottom).toEqual(200 + Dom.viewportHeight()); expect(rect.top).toEqual(200); expect(rect.right).toEqual(200 + Dom.viewportWidth()); Dom.remove(dom[0]); // 2 window.scrollTo(10, 10); rect = getVisibleRectForElement(dom[1].firstChild); expect(rect).toBeEqualRect({ left: 10, top: 10, right: 100, bottom: 100 }); window.scrollTo(200, 200); rect = getVisibleRectForElement(dom[1].firstChild); expect(rect).toBe(null); Dom.remove(dom[1]); // 3 window.scrollTo(10, 10); rect = getVisibleRectForElement(dom[2].firstChild); expect(rect).toBeEqualRect({ left: 10, top: 10, right: 100, bottom: 100 }); window.scrollTo(200, 200); rect = getVisibleRectForElement(dom[2].firstChild); expect(rect).toBe(null); Dom.remove(dom[2]); // 4 window.scrollTo(10, 10); rect = getVisibleRectForElement(dom[3].firstChild); expect(rect).toBeEqualRect({ left: 10, top: 10, right: 100, bottom: 100 }); window.scrollTo(200, 200); rect = getVisibleRectForElement(dom[3].firstChild); expect(rect).toBe(null); Dom.remove(dom[3]); Dom.remove(gap); waits(200); runs(function () { window.scrollTo(0, 0); }); });
KISSY.add('editor-plugins/lib/maximize/cmd',["editor","event/dom","util","ua","node","dom"],function(S ,require, exports, module) {function e(e){this.editor=e}var t,i=require("editor"),o=require("event/dom"),r=require("util"),s=require("ua"),a=s.ie,n=document,d=require("node"),l=require("dom"),f="editor-toolbar-padding",c=function(){t||(t=d('<iframe style="position:absolute;top:-9999px;left:-9999px;" frameborder="0">').prependTo(n.body,void 0))};r.augment(e,{restoreWindow:function(){var e=this,t=e.editor;t.fire("beforeRestoreWindow")!==!1&&e._resize&&(o.remove(window,"resize",e._resize),e._resize.stop(),e._resize=0,e._saveEditorStatus(),e._restoreState(),setTimeout(function(){e._restoreEditorStatus(),t.notifySelectionChange(),t.fire("afterRestoreWindow")},30))},_restoreState:function(){var e=this,i=e.editor,o=i.get("textarea"),r=e._savedParents;if(r){for(var s=0;s<r.length;s++){var d=r[s];d.el.css("position",d.position)}e._savedParents=null}o.parent().css({height:e.iframeHeight}),o.css({height:e.iframeHeight}),l.css(n.body,{width:"",height:"",overflow:""}),n.documentElement.style.overflow="";var c=i.get("el")[0].style;c.position="static",c.width=e.editorElWidth,t.css({left:"-99999px",top:"-99999px"}),window.scrollTo(e.scrollLeft,e.scrollTop),8>a&&i.get("toolBarEl").removeClass(i.get("prefixCls")+f,void 0)},_saveSate:function(){var e=this,t=e.editor,i=[],o=t.get("el");e.iframeHeight=t.get("textarea").parent().style("height"),e.editorElWidth=o.style("width"),e.scrollLeft=l.scrollLeft(),e.scrollTop=l.scrollTop(),window.scrollTo(0,0);for(var r=o.parent();r;){var s=r.css("position");"static"!==s&&(i.push({el:r,position:s}),r.css("position","static")),r=r.parent()}e._savedParents=i,8>a&&t.get("toolBarEl").addClass(t.get("prefixCls")+f,void 0)},_saveEditorStatus:function(){var e=this,t=e.editor;if(e.savedRanges=null,s.gecko&&t.__iframeFocus){var i=t.getSelection();e.savedRanges=i&&i.getRanges()}},_restoreEditorStatus:function(){var e=this,t=e.editor,i=t.getSelection(),o=e.savedRanges;if(s.gecko&&t.activateGecko(),o&&i&&i.selectRanges(o),t.__iframeFocus&&i){var r=i.getStartElement();r&&r.scrollIntoView(void 0,{alignWithTop:!1,allowHorizontalScroll:!0,onlyScrollIfNeeded:!0})}},_maximize:function(e){var o=this,r=o.editor,s=r.get("el"),d=l.viewportHeight(),f=l.viewportWidth(),c=r.get("textarea"),h=r.get("statusBarEl")?r.get("statusBarEl")[0].offsetHeight:0,u=r.get("toolBarEl")[0].offsetHeight;a?n.body.style.overflow="hidden":l.css(n.body,{width:0,height:0,overflow:"hidden"}),n.documentElement.style.overflow="hidden",s.css({position:"absolute",zIndex:i.baseZIndex(i.ZIndexManager.MAXIMIZE),width:f+"px"}),t.css({zIndex:i.baseZIndex(i.ZIndexManager.MAXIMIZE-5),height:d+"px",width:f+"px"}),s.offset({left:0,top:0}),t.css({left:0,top:0}),c.parent().css({height:d-h-u+"px"}),c.css({height:d-h-u+"px"}),e!==!0&&arguments.callee.call(o,!0)},_real:function(){var e=this,t=e.editor;e._resize||(e._saveEditorStatus(),e._saveSate(),e._maximize(),e._resize||(e._resize=r.buffer(function(){e._maximize(),t.fire("afterMaximizeWindow")},100)),o.on(window,"resize",e._resize),setTimeout(function(){e._restoreEditorStatus(),t.notifySelectionChange(),t.fire("afterMaximizeWindow")},30))},maximizeWindow:function(){var e=this,t=e.editor;t.fire("beforeMaximizeWindow")!==!1&&(c(),e._real())},destroy:function(){var e=this;e._resize&&(o.remove(window,"resize",e._resize),e._resize.stop(),e._resize=0)}}),module.exports={init:function(t){if(!t.hasCommand("maximizeWindow")){var i=new e(t);t.addCommand("maximizeWindow",{exec:function(){i.maximizeWindow()}}),t.addCommand("restoreWindow",{exec:function(){i.restoreWindow()}})}}};});