Các hàm JS dùng chung trang master adminxml

Các hàm JS dùng chung trang master adminxml hay sử dụng khi lập trình iif

 

1. Lệnh từ URL master
2. Hàm Open Popup

 * Cách mở popup có xác nhận YES/NO
 * Cách mở popup có thay đổi giá trị gọi trên url hiển thị
 * Hiển thị popup nhưng có xác nhận mới mở
 * Hàm nạp lại được gọi từ cửa sổ con, đến cửa sổ cha khi áp dụng angular

3. Hàm đóng cửa số popup
4. Hàm Alert
5. Một số hàm thư viện common JS
------------------------
** Url
** Số
** Hàm hiển thị loading
** Ngày
** Chữ


------------------------

1. Lệnh từ URL
&config_sys=nomaster
&config_class_hide=ten_class1,ten_class2 
   * Muốn ID thêm @ trước tên class

Hay dùng:   &config_sys=nomaster&config_class_hide=bt_sys_config

&_s_call_js
Muốn gọi 1 hàm javascript qua tham số url thêm
  _s_call_js=tenham('ts');tenham2('ts2)

Ví dụ:
  &_s_call_js=alert_pIIF('thông báo','thành công')

  Khi chạy vào trong sẽ thông báo alert


2. Hàm Open Popup
  Để mở cửa sổ mới ta dùng thẻ a hay button, sau đó thay thế lại các chữ màu đỏ
    Ví dụ gọi áp dụng Query:
Html:
 <button  type="button" class="bt_open_w_pIIF" p_l="url" p_w'="80%" p_h="600px" p_t="Tên" data-toggle="modal" data-target="#Obj_popup_pIIF" >OK</button>

** ví dụ thẻ a
<a class="bt_open_w_pIIF" p_l="link"  p_w="500px" p_h="600px" p_t="Tên_cửa_sổ" data-toggle="modal" data-target="#Obj_popup_pIIF"  href="#">[Xem phiếu]</a>

* Khi hiển thì popup muốn các menu hệ thống  ẩn đi
thêm:
   &config_sys=nomaster&config_class_hide=bt_sys_config

* Một số tham số gọi trên url
Muốn gọi 1 hàm javascript qua tham số url thêm _s_call_js=tenham('ts');tenham2('ts2)


<a class="bt_open_w_pIIF" p_l="xml_form_ds.aspx?name=NhaHang/TaoMoiHopDong&key=xx&config_sys=nomaster&config_class_hide=bt_sys_config"  p_w="500px" p_h="600px" p_t="Tên_cửa_sổ" data-toggle="modal" data-target="#Obj_popup_pIIF"  href="#">[Xem phiếu]</a>


Javascript hàm này đã có trong trang master: (ko cần viết thêm)
$(".bt_open_w_pIIF").click(function(){  
    
    var url_go=$(this).attr('p_l');
    var w=$(this).attr('p_w');
    var h=$(this).attr('p_h');
    var t=$(this).attr('p_t');
    IIF_f_OpenUrlPopup(url_go,w,h,t);
});

** Trong TH muốn gán vào class khác
$(".ten_class").click(function(){  
    
    var url_go=$(this).attr('p_l');
    var w=$(this).attr('p_w');
    var h=$(this).attr('p_h');
    var t=$(this).attr('p_t');
    alert(url_go);
    IIF_f_OpenUrlPopup(url_go,w,h,t);
});
Viết rút gọn 1:
$(".ten_class").click(function(){          
    IIF_f_OpenUrlPopup($(this).attr('p_l'),$(this).attr('p_w'),$(this).attr('p_h'),$(this).attr('p_t'));
});
Viết rút gọn 2:
$(".ten_class").click(function(){          
    IIF_f_OpenUrlPopup_Obj($(this));
});
Viết rút gọn 3(thay đối url):
$(".ten_class").click(function(){          
   var dom_b = $(this);
   dom_b.attr("p_l","link" );
    IIF_f_OpenUrlPopup_Obj(dom_b);
});

-----------


* Cách mở popup có xác nhận YES/NO

Ví dụ:
<a class="bt_open_w_pIIF_alert btn btn-outline-danger" p_alert="Bạn có muốn copy dữ liệu đến THANH LÝ?" p_l="...."  p_w="700px" p_h="300px" p_t="Copy" data-toggle="modal" data-target="#Obj_popup_pIIF"  href="#"><i class="far fa-copy"></i> Copy số lượng từ hợp đồng sang</a>

Khi click vào sẽ hỏi câu: Bạn có muốn copy dữ liệu đến THANH LÝ?

Nếu OK thì mới mở url chỉ định

**** Các hàm mở cửa sổ con muốn debug xem giá trị URL hãy thêm p_debug="1"

 

 

* Cách mở popup có thay đổi giá trị gọi trên url hiển thị

   -- Khi muốm mở lên nhưng thay thế giá trị 1 ô từ input vào url mở:
  <a class="bt_open_w_pIIF_Replace btn btn-primary" p_txt_re="{TuThayThe}" p_obj_get="DoiTuongHTML" p_l="/adminxml/table_data.aspx?file=QR:NhaHang/HopDong_DanhSach_Chon&col=So-/-Số&objreturn=thongtinsohopdong&colfindgrid=So&value_select={TuThayThe}"  p_w="95%" p_h="700px" p_t="X" data-toggle="modal" data-target="#Obj_popup_pIIF"  href="#">Chọn</a>

Ví dụ:
 <a class="bt_open_w_pIIF_Replace btn btn-primary" p_txt_re="{so}" p_obj_get="#SoHopDongThamChieu" p_l="/adminxml/table_data.aspx?file=QR:NhaHang/HopDong_DanhSach_Chon&col=So-/-Số&objreturn=thongtinsohopdong&colfindgrid=So&value_select={so}"  p_w="95%" p_h="700px" p_t="X" data-toggle="modal" data-target="#Obj_popup_pIIF"  href="#">Chọn</a>

Giải thích dòng lệnh:
  p_txt_re="{so} chỉ định từ thay thế   
  Lấy giá trị có ID=SoHopDongThamChieu thay thế vào {0} p_l

Javascript hàm này đã có trong trang master: (ko cần viết thêm)
$(".bt_open_w_pIIF_Replace").click(function(){ 
    var name_obj_get=$(this).attr('p_obj_get'); // #txtSo
    var val_Re=  $(name_obj_get).val();
    var p_txt_re=$(this).attr('p_txt_re'); // giá trị tìm trong url thay
    var url_go=$(this).attr('p_l');
    url_go=url_go.replace(p_txt_re,val_Re  );
    var w=$(this).attr('p_w');
    var h=$(this).attr('p_h');
    var t=$(this).attr('p_t');
    IIF_f_OpenUrlPopup(url_go,w,h,t);
});

 

-----------

 


 Ví dụ gọi hàm, áp dụng khi js angular
  <button  ng-click="hienthihopthoai(obj.ID)" type="button" class="btn btn" data-toggle="modal" data-target="#Obj_popup_pIIF" >XXX<i class="fas fa-home"></i></button>
  ** obj.ID thay thế lại đối tượng json
     IIF_f_OpenUrlPopup(url,"900px","600px",'Xem đơn hàng');
   Thêm hàm trong angular:
 $scope.hienthihopthoai = function (id) {
       url="report.aspx?name=BanHangOnline/mayinnhiet&id="+id;//
        IIF_f_OpenUrlPopup(url,"900px","600px",'Xem đơn hàng'); //hàm này trong trang master
    };  

   Chú ý: từ cửa sổ con (iframe) có gọi được hàm javascript trong angular hay không ?
     Trả lời: Không được.
     Cách xử lý: tạo 1 nút lệnh và gọi qua trigger

       * Cửa số cha: <a class="btn btn-primary btNapLai" ng-click="loadData ()" role="button">Nạp lại</a>
         loadData: hàm loadData trong angular
 

       * Cửa số con:
    $("#btClose").click(function(){
 window.parent.$(".btNapLai").trigger("click");
 window.parent.IIF_f_Close_Popup(); // nếu muốn đóng cửa sổ
 
});

 

 * Khi cửa sổ con mở lên muốn gọi các javascript từ cửa sổ cha thì dùng
<script>
window.parent.lệnh;   ví dụ: window.parent.location="http://google.com";          window.parent.hàm_viết_bên_trang_con() ;
window.parent.location.reload();   //nạp lại web
 </script>

 

** Hiển thị popup nhưng có xác nhận mới mở
<a class="bt_open_w_pIIF_alert p_alert="Bạn có muốn ?" p_l="xml_form_ds.aspx?name=NhaHang/TaoMoiHopDong&key=xx&config_sys=nomaster&config_class_hide=bt_sys_config"  p_w="500px" p_h="600px" p_t="Tên_cửa_sổ" data-toggle="modal" data-target="#Obj_popup_pIIF"  href="#">Thực thi</a>
 

 *** Hàm nạp lại được gọi từ cửa sổ con, đến cửa sổ cha khi áp dụng angular
loadData_CallFPageParent_From_Popop(nameButtonTriger, cmd_close,alert_msg,alert_caption,alert_cmd)
Hàm thông thường nạp lại:
     window.parent.location.reload();   //nạp lại web
  Ví dụ:
        window.parent.loadData_CallFPageParent_From_Popop("#btLoad","close","Xóa thành công !");

  Ví dụ đầy đủ khi gọi 1 query:
<script>
 $(".btDel").click(function(){
 if (confirm("Bạn có chắc chắn xóa ?") == true) {
 url="/adminxml/Query_Do.aspx?name=NhaHang_ThuChi/ChungTu_Delete&out=json&_SYS_KEY="+key;
   $.get(url, function(data, status){
    //alert(   JSON.stringify(data ) );
    //alert(data.Q1[0].Row_Delete);
    if(data.Q1[0].Row_Delete>0)
    {
        window.parent.loadData_CallFPageParent_From_Popop("#btLoad","close","Xóa thành công !");
    }
    
  });
}
});
</script>

 



3. Hàm đóng cửa số popup
Hàm này đã có trong trang master
function IIF_f_Close_Popup()
{
    $(".close_pIIF").trigger( "click" );
}
function IIF_f_Close_Popup_R()
{
    $(".close_pIIF").trigger( "click" );
    location.reload();
}

Nếu từ cửa sổ con được mở hãy gọi hàm:
window.parent.IIF_f_Close_Popup();
window.parent.IIF_f_Close_Popup_R();
 



4. Hàm Alert
alert_pIIF('thông báo','Lưu thành công !'); //hàm này trong trang master
Thêm tham số
alert_pIIF('thông báo','Lưu thành công !',thời_gian_ẩn,màu_nền,thời gian nạp_lại_nếu_iframe ); //hàm này trong
function alert_pIIF(title,msg,time_hide,bgr_color,isframe_reload){}


5. Một số hàm thư viện common JS

** Url
urlGetValuePara(name)
urlGetValuePara_Null(name,ifnull)
urlIsNotEmpty(name)
urlIsEmpty(name) trả về true hay false
urlHasPara(name)
urlIsEmpty_objHtmlHide(nameUrl,nameHtml)
UpdateValueUrl(url,name,value)

** Hay dùng
urlCurrent_AddPara(name,value)
  Ví dụ:
   url trình duyệt: http://iif.vn?id=10
   var url = window.location;
   url = urlCurrent_AddPara("id","20");   
   window.location.href =url ;
     * Chỉ thay đổi giá trị id chứ không thêm mới http://iif.vn?id=10&id=20
    Tham khảo javascript URL

* Xử lý chuyển url đến co tham số

if( urlIsEmpty('tungay') && urlIsEmpty('denngay'))
{
 var today = new Date();

  var date =today.getDate()+"/" + (today.getMonth()+1) + "/"+ today.getFullYear();

  url_g= urlCurrent_AddPara("tungay",date ); // add tham số hiện tại, nếu có thì sửa
  url_g= urlStr_AddPara(url_g,"denngay",date );
  window.location.assign(url_g);
}

 

urlCurrent_DelPara(name)
  * Xóa tham số hiện tại


urlCurrent_AddPara_Del(name,value,name_del)
  * Thêm vào và xóa tham số


** Số
covertNumberToStr(vl)
// 2.000 đồng 2.000 vnd
// ==> 2000

NumFormat  (prototype)
 Có biến kiểu số so=20000
  so.NumFormat()   sẽ ra 20.000


converStrNum
     200.000,23

     Kết quả là 200000.23  (giá trị này để lưu csdl)

** Ngày
convertDateToStr(vl)
    Chuyển kiểu ngày sang định ngày ngày bằng chữ có kiểu dd/mm/yyyy

    -> Kiểu json trả về ngày
    convert 2023-12-31 T 00:00  -> 31-12-2023


convertDate_dmy_ymd(vl)
  // convert 31/12/2023  ->  2023/12/31
  // Tham số đưa vào là kiểu chữ

getDateCurrent_ymd(vl)
    // trả về giá trị chữ với ngày hiện hành có dạng 2023/12/31

getDateCurrent_dmy(vl)
     // trả về giá trị chữ với ngày hiện hành có dạng 31/12/2023

getHourMinuterStr()
   // Trả về giờ phút giây hiện hành
   // 04:20 45

convertDateJsonToObjDate(vl)
 // Chuyển giá trị biến kiểu ngày từ Json sang kiểu Date trong Javascrip
 // Giá trị json có định dạng 2023-12-31 T 00:00, sẽ chuyển sang kiểu Date

convertStrToObjDate
 // Chuyển giá trị chữ sang kiểu ngày
 // Tham số vào: 29/2/2023 14:30
 // Kết quả trả về biến kiểu ngày.
 


 

** Hàm hiển thị loading

loadding_show(str)
Ví dụ: loadding_show("Đang tải...") ;
 str: là chữ hay gõ #imgloading để lấy ảnh loading động gif
Ví dụ: loadding_show( "#imgloading") ;

loadding_hide()

  - Lưu tại ham_master_top.js

** Chữ

isEmpty(gt)

isEmptySet(val,val_is_empty)

   * nếu biến rỗng thì gán giá trị cho biến, nếu khác rỗng thì lấy giá trị val
 

** Khác
htmlEncode(input)
hide_column_tb('tên id table', vị trí cột ẩn) (nằm trong ham_master_top.js)


 

Mục liên quan: