• 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          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          options.Width,
    160         height: options.Height
    161     });
    162     dialogHelper.position(dialogObj, DialogBody, minusHeight);
    163 };
  • 相关阅读:
    极速地将git项目部署到SAE的svn服务器上
    深入了解Javascript模块化编程
    自己实现的一款在线Javascript正则表达式测试器——JRE-Parser
    Javascript中的一种深复制实现
    如何循序渐进地学习Javascript
    handsontable实例----来源github
    HandsontableWithVue (一) 导入官方的汉化包
    Handsontable 入坑的开始
    开始前端的生活
    c3p0数据源的第一次尝试
  • 原文地址:https://www.cnblogs.com/jessiecaisme/p/4260454.html
Copyright © 2020-2023  润新知