DialogHelper

  1 //require ScrollHelper.js
  2 function DialogHelper() {
  3     var _this = this;
  4     var doc = window.document;
  5     _this.maskDiv = null;
  6     _this.contentDiv = null;
  7     var options = {
  8         opacity: 0.4
  9     };
 10
 11     this.popup = function (contentdiv, optionArg) {
 12         if (optionArg) {
 13             for (var prop in optionArg) {
 14                 options[prop] = optionArg[prop];
 15             }
 16         }
 17
 18         _this.contentDiv = contentdiv || _this.contentDiv;
 19
 20         _this.maskDiv = $(‘<div>‘);
 21         _this.maskDiv.addClass(‘MaskDiv‘);
 22         _this.maskDiv.css({
 23             ‘filter‘: "Alpha(opacity=" + ( options.opacity - "0" ) * 100 + ");",
 24             ‘opacity‘: options.opacity,
 25             ‘display‘: ‘block‘
 26         });
 27
 28         $(doc.body).append(_this.maskDiv);
 29
 30         if (_this.contentDiv) {
 31             $(doc.body).append(_this.contentDiv);
 32             _this.contentDiv.show();
 33             _this.contentDiv.draggable({
 34                 containment: "document",
 35                 cursor: ‘move‘,
 36                 handle: ".Dialog_Head"
 37             });
 38             $(_this.maskDiv).on("mousemove", function() {
 39                 $("body").preventScroll();
 40             });
 41             $(_this.maskDiv).on("mouseout", function() {
 42                 $("body").liveScroll();
 43             });
 44             if ($(".cke").length == 0 && $(".Dialog_Body").length > 0) {
 45                 $(".Dialog_Body").preventOuterScroll();
 46             }
 47         }
 48     };
 49
 50     this.remove = function () {
 51         if (_this.contentDiv) {
 52             _this.contentDiv.remove();
 53         }
 54         if (_this.maskDiv) {
 55             _this.maskDiv.remove();
 56         }
 57         $("body").liveScroll();
 58     };
 59
 60     this.formatPercentNumber = function (value, whole) {
 61         if (isNaN(value) && typeof value === "string") {
 62             if (value.indexOf("%") !== -1) {
 63                 value = (value.replace("%", "") / 100) * whole;
 64             } else if (value.indexOf("px") !== -1) {
 65                 value = value.replace("px", "");
 66             }
 67         }
 68         return Math.ceil(value);
 69     };
 70
 71     this.position = function (dialog, dialogBody, minusHeight) {
 72         dialog = dialog || $(".ShowDialogDiv");
 73         if (dialog[0]) {
 74             var clientWidth = document.documentElement.clientWidth;
 75             var clientHeight = document.documentElement.clientHeight;
 76             var width = _this.formatPercentNumber(dialog.data("position").width, clientWidth) || dialog.width();
 77             var height = _this.formatPercentNumber(dialog.data("position").height, clientHeight) || dialog.height();
 78             width = width < 300 ? 300 : width;
 79             height = height < 450 ? 450 : height;
 80             $(dialog).css({
 81                 "width": width + "px",
 82                 "height": height + "px",
 83                 "top": Math.ceil((clientHeight - height) / 2) + "px",
 84                 "left": Math.ceil((clientWidth - width) / 2) + "px"
 85             });
 86             dialogBody = dialogBody || $(".Dialog_Body");
 87             if (dialogBody[0]) {
 88                 minusHeight = minusHeight || ($(".Dialog_Head").outerHeight() + $(".Dialog_Foot").outerHeight());
 89                 var dialogBodyHeight = height - minusHeight;
 90                 dialogBody.height(dialogBodyHeight);
 91             }
 92         }
 93     }
 94 }
 95
 96 var createDialogTemplate = function (optionArg, contentHtml, saveBtnClickHandler) {
 97     var options = {
 98         "Action": "",
 99         "Title": "",
100         "Width": "50%",
101         "Height": "50%"
102     };
103     if (optionArg) {
104         for (var prop in optionArg) {
105             options[prop] = optionArg[prop];
106         }
107     }
108     var newDialog = $("<div class=‘ShowDialogDiv‘ id=‘Dialog_" + options.Title + "‘>");
109     var DialogHead = $("<div class=‘Dialog_Head‘>").appendTo(newDialog);
110     $("<span class=‘HeadLabel‘>").html(options.Action + " " + options.Title).appendTo(DialogHead);
111     var DialogClose = $("<span class=‘DialogClose‘>").appendTo(DialogHead);
112     var DialogBody = $("<div class=‘Dialog_Body‘>").html(contentHtml).appendTo(newDialog);
113     var DialogFoot = $("<div class=‘Dialog_Foot‘>").appendTo(newDialog);
114     var newDiv = $("<div class=‘Right‘>").appendTo(DialogFoot);
115     var ActionCancelDiv = $("<div class=‘ActionButtonContainer‘ title=‘Cancel‘>").appendTo(newDiv);
116     DialogClose.on("click", function() {
117         dialogHelper.remove();
118     });
119     ActionCancelDiv.on("click", function() {
120         dialogHelper.remove();
121     });
122     var newA = $("<div class=‘ActionButton‘ id=‘ActionButtonCancel‘>").appendTo(ActionCancelDiv);
123     $("<div class=‘Icon Cancel‘>").appendTo(newA);
124     $("<div class=‘Title IconTitle‘>").html("Cancel").appendTo(newA);
125     var ActionSaveDiv = $("<div class=‘ActionButtonContainer‘ title=‘Save‘>").appendTo(newDiv);
126     var newB = $("<div class=‘ActionButton ActionButtonAttention‘ id=‘ActionButtonSave‘>").appendTo(ActionSaveDiv);
127     newB.on(‘click‘, function () {
128         if (typeof saveBtnClickHandler == "function") {
129             saveBtnClickHandler();
130         }
131     });
132     $("<div class=‘Icon Save‘>").appendTo(newB);
133     $("<div class=‘Title IconTitle SaveButton‘>").html("Save").appendTo(newB);
134     var minusHeight = DialogHead.outerHeight() + DialogFoot.outerHeight();
135     newDialog.data("position", {
136         width: options.Width,
137         height: options.Height
138     });
139     dialogHelper.position(newDialog, DialogBody, minusHeight);
140     return newDialog;
141 };
142
143 var changeDialogLayout = function(optionArg, dialogObj) {
144     var options = {
145         "Width": "70%",
146         "Height": "90%"
147     };
148     if (optionArg) {
149         for (var prop in optionArg) {
150             options[prop] = optionArg[prop];
151         }
152     }
153     var DialogBody = $(dialogObj).find(".Dialog_Body");
154     var DialogHead = $(dialogObj).find(".Dialog_Head");
155     var DialogFoot = $(dialogObj).find(".Dialog_Foot");
156     var other =  Math.round(DialogBody.css("padding-top").replace(/[a-z]/ig, "")) + Math.round(DialogBody.css("padding-bottom").replace(/[a-z]/ig, ""));
157     var minusHeight = DialogHead.outerHeight() + DialogFoot.outerHeight() + other;
158     dialogObj.data("position", {
159         width: options.Width,
160         height: options.Height
161     });
162     dialogHelper.position(dialogObj, DialogBody, minusHeight);
163 };
时间: 2024-10-06 13:41:11

DialogHelper的相关文章

Retrofit+RxJava 优雅的处理服务器返回异常、错误

开始本博客之前,请先阅读: Retrofit请求数据对错误以及网络异常的处理 异常&错误 实际开发经常有这种情况,比如登录请求,接口返回的 信息包括请求返回的状态:失败还是成功,错误码,User对象等等.如果网络等原因引起的登录失败可以归结为异常,如果是用户信息输入错误导致的登录失败算是错误. 假如服务器返回的是统一数据格式: /** * 标准数据格式 * @param <T> */ public class Response<T> { public int state;

Android Retrofit+RxJava 优雅的处理服务器返回异常、错误

开始本博客之前,请先阅读: Retrofit请求数据对错误以及网络异常的处理 异常&错误 实际开发经常有这种情况,比如登录请求,接口返回的 信息包括请求返回的状态:失败还是成功,错误码,User对象等等.如果网络等原因引起的登录失败可以归结为异常,如果是用户信息输入错误导致的登录失败算是错误. 假如服务器返回的是统一数据格式: /** * 标准数据格式 * @param <T> */ public class Response<T> { public int state;

FloatHelper

1 function FloatHelper() { 2 } 3 4 FloatHelper.prototype.showFloater = function (Target, Title, Action, ActionCallback, Callback, IsNeedTemplete) { 5 this.hideFloater(); 6 var FloaterID = "Float_" + Title; 7 var Floater = $("#" + Float

OKHttp和NumberProgressbar组建强大的Android版本更新功能

你们看过韩国电影<奇怪的她>不?女主角是不是超级漂亮的.......好啦,扯正事吧,先看看女神照片. 公司新项目用到了OKHttp网络框架,在下载文件这块都蒙圈啦,再查查资料就一个Resopnse方法返回数据,而且是在下载文件结束之后才会走这个方法,整个项目和服务器打交道那块用得都是OKHttp,如果我再整个原生的HttpClient在里边实现版本更新总觉得我这代码脏了,心里不舒服,但是那我怎么获取下载的进度啊,所幸在网上找到了相应的案例,写的非常好,大家可以参考参考,可以获取下载的进度啦,那

企业级控件库之大数据量分页控件(转)

在上篇:我介绍了原创企业级控件库之组合查询控件,这篇我将给大家介绍:企业级控件库之大数据量分页控件.  摘要  说到分页,大家采用的方法各有千秋,分页在一个中大型软件项目中对数据的快速呈现起到很关键的作用,试想一个数据量上几十万或者几百万的数据表,要是没有分页功能会是一个什么样的效果.总的说来,大家采用的分页方法大同小异,但到底那种方法才是最佳的呢,各有各的看法,让数据说话最有效.今天我给大家分享一个WinForm下大数据量分页控件(当然分页思想也可用于WebForm).虽然不能说是最佳的,但在

ASP.NET 解决在点击Button执行服务器事件之前验证用户输入并阻塞

在网站项目开发时,为了减少用户的错误性的操作,很多时候我们都需要做一些必要的JS验证来提醒用户,比如:"输入的值不符合规则,请重新输入"."提交后无法修改,您确定要继续吗?"友好性的提示. 这时候我们想到了Button有一个客户端的点击事件(OnClientClick),大家知道,ASP.NET 页面ASPX页面被创建的时候会生成 一段代码 <input type="hidden" name="__EVENTTARGET"

Android之UI--打造12种Dialog对话框

最近有空,来把app中常用到的Dialog对话框写一篇博客,在app中很多地方都会用到Dialog对话框,今天小编我就给大家介绍Dialog对话框. 先看看效果图: 12种,可根据需求选择,上图可知,底部弹框也可通过Dialog对话框实现,可以不用PopupWindow来实现了,比较方便 Android Support Library v22.1 中开始提供了 Material 风格的 Dialog 控件 ,看起来也是很好看的 Material 风格的 Dialog类:android.suppo

【转】WPF: 自动设置Owner的ShowDialog 适用于MVVM

原文地址:http://www.mgenware.com/blog/?p=339 WPF中的Windows的ShowDialog方法并没有提供设置Owner的参数,开发者需要在ShowDialog前设置好Window的Owner属性,正因为如此,许多时候你可能就忘了设置Owner,直接把对话框显示出去了.这样显示的对话框看似没有问题,但是当用户在任务栏切换窗体或者切换至程序时,对话框会显示在主窗体后面,而此时主窗体是不可点的!如果主窗体可以覆盖整个对话框(通常是这样的),那么此时用户将会无法操作