2023年7月12日 星期三

jQuery.map 及 jQuery.grep 的用法 - 取得object陣列的部份欄位陣列, 符合條件的 object

目的: 1> jQuery.map  : 產生一個新的陣列,但只包含原陣列的特定欄位

          2>jQuery.grep: 產生一個新的陣列,但只包含合乎條件的項目   

Ex: var people =[
{name: 'Apple' , sex: 'female'},
{name: 'Bob' , sex: 'male'},
{name: 'Jacky' , sex: 'male'},
{name: 'Oliver' , sex: 'male'},
{name: 'Helen' , sex: 'female'},
]


處理說明: 1>取得 people 的 name 陣列

    var nameList = $.map(people, function(item, index) { return item.name; });
     --> 結果: [ 'Apple', 'Bob', 'Helen', 'Jacky', 'Oliver']


                  2>取得people 中為女姓的 陣列
     var femaleList = $.grep(people, function(item, index) { return item.sex === 'female'; });
     --> 結果:  [{name: 'Apple' , sex: 'female'},
                        {name: 'Helen' , sex: 'female'},
                      ]

傳統寫法:

1>取得 people 的 name 陣列
      var nameList=[];
      $.each(people,function(index,item){
          nameList.push(people.name);
       }
   -->
      var nameList=$.map(people,function(item,index){ return item.name; });


2>取得 people 中為 femail 的人員陣列

      var femaleList=[];
      $.each(people,function(index,item){
          if (item.sex=='female)
              femaleList.push(item);
       }
   -->
      var femaleList=$.grep(people,function(item,index){ 
       if (item.sex=='female'){
           return item; }
});


將 Edge 設為預設瀏覽器 , 若IE 版本(IE ver11)太舊,則可能無法執行Web改版程式

 目的: Web改版 若IE 版本(IE ver11)太舊,則可能無法執行Web改版程式

           建議改為 Edge

處理步驟:  1>開啟 Edge

                   2>點右上角 [...] 設定鈕

                   3>選 [預設瀏覽器] 選項, 將目前 Edge 設為預設的瀏覽器






2023年7月5日 星期三

V120202B - JSBarcode - 一維條碼 - online測試 -font-size -pt

 目的: V120202B - JSBarcode - 一維條碼 -  online HTML測試

           font-size: 3pt;  --> 1inch=72pt , 1pt=1/72inch

處理說明:  1>利用 online HTML 編輯 ,網址如下:
                         https://www.tutorialspoint.com/online_html_editor.php
                   2>引用 barcode 的 js (JsBarcode.code39.min.js)
<script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.5/dist/barcodes/JsBarcode.code39.min.js"></script>
                   3> 產生 barcode 
                        <div><svg  id='JSBarCode1'></svg></div> 
                      -->  JsBarcode("#JSBarCode_PN", "LAMAERO-73428-0001");
                  4>設定 barcode 的顯示範圍
                       var settings = {
                        width: 0.5,
                        height: 10,
                        displayValue: true,
                        fontSize: 8,
                            :
                    };
                      JsBarcode("#JSBarCode_PN", "LAMAERO-73428-0001",settings);



1>*.HTML
<!DOCTYPE html>
<html>
<title>Online HTML Editor</title>

<head>
    <script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.5/dist/barcodes/JsBarcode.code39.min.js"></script>
    <script language="JavaScript">
        function greet() {
            alert("Hello!!");
        }
        var settings = {
                        width: 0.5,
                        height: 10,
                        displayValue: true,
                        fontSize: 8,
                        textAlign: 'left',
                        margin: 1,
                        marginLeft: 10,
                        //marginBottom: 5,
                        font: "新細明體",
                        //format: "CODE39",
                        //background: "#00FF00"
                    };
        function genbarcode() {
            console.log("genbarcode!!");
            JsBarcode("#JSBarCode1", "Q20170922001",settings);
        }
        function genbarcode_PN() {
            console.log("genbarcode_PN!!");
            JsBarcode("#JSBarCode_PN", "LAMAERO-73428-0001",settings);
        }
    </script>
</head>

<body>
    <form>
        <input type="button" value="Hello" onclick="genbarcode()">
        <input type="button" value="PN barcode" onclick="genbarcode_PN()">
    </form>
    <div><svg  id='JSBarCode1'></svg></div>
    <div id='print_area' style='width:10cm;height:4cm;border:5px solid green;'>
        <div id='my_div_1' style='width: 10cm; height: 4cm;border: 1px solid yellow;font-size:4pt;'>
            <table id='my_tbl1' style='width:100%;padding:0 0 0 0;' border=1px borderstyle='solid' bordercolor='blue' cellspacing=0>
                <tr>
                    <td width=35%>機號: A049 </td>
                    <td width=35% '>工號: 12345678</td>
<td width=35% '>工單件號: SROPN_1 </td>
                </tr>
            </table>
            <table id='my_tbl2' style='width:100%;' border=1px borderstyle='solid' bordercolor='red' cellspacing=0>
                <tr style='height: 0.5cm;'>
                    <td width=50%>申請件號:LAMAERO-73428-0001</td>
                    <td width=50%>申請件號:LAMAERO-73428-0001</td>
                </tr>
                <tr style='height:0.5cm;'>
                    <td width=50%><svg  id='JSBarCode_PN' width=50 height=15></svg></td>
                    <td width=50%><svg  id='JSBarCode_MATNR' width=50 height=15></svg></td>
                </tr>
                <tr>
                    <td width=50%>名稱:TFE DRY LUBE</td>
                    <td width=50%>儲位2:防C</td>
                </tr>
                <tr>
                    <td width=50%>儲位1:防B</td>
                    <td width=50%>庫房:23#</td>
                </tr>
                <tr>
                    <td width=50%>撥料數量:4</td>
                    <td width=50%></td>
                </tr>
            </table>
            <table id='my_tbl3' style='width: 100%;' border=1px cellspacing=0 bordercolor=blue>
                <tr>
                    <td width=50%><svg  id='JSBarCode_APNO' width=50 height=15></svg></td>
                    <td width=50%>需求者:612578 楊智為 856
                        <br>需求地點:A08</td>
                </tr>
            </table>
        </div>
        <div class='display' id='break_page1' style='break-after:page'></div>
        <svg id="barcode"></svg>
</body>
</html>

V120202B - 標籤列印 - HTML online 模擬標籤排版 -table

 目的: V120202B - 標籤列印 - HTML online 模擬標籤排版 - <table>

處理說明: 0>[列印範圍]先以框線標出
                  1>利用 HTML online模擬器, 模擬標簽文字內容
                       HTML online : https://www.tutorialspoint.com/online_html_editor.php
                       --> 直接修改即可看到 HTML排版結果,不需等 VS 執行後,才看到排版結果
                  2>以 <div><table> 的邊線畫出範圍
                  3>以  style 設定範圍/邊框/顏色, 
                       style='width: 10cm; height: 4cm;border: 5px solid green; '
                  4><table>邊框個別設定,邊際實線cellspacing=0 , border=2px , bordercolor='blue'
                  5>縮小元件size <tr style='transform: scale(0.9);' ></tr>



     


1>*.html
<!DOCTYPE html>
<html>
<title>Online HTML Editor</title>
<head>
</head>
<body>
<div id='print_area' style='width: 10cm; height: 4cm; border: 5px solid green;'>
<div id='my_div' style='width: 10cm; height: 4cm;border: 3px solid yellow; font-size: 4pt;'>
<table id='my_tbl1' style='width: 10cm;' border=2px cellspacing=0 borderstyle='solid' bordercolor='blue'>
<tr>
<td width=30%>機號: A049 </td>
<td width=35%>工號: 12345678 </td>
<td width=35%>工單件號: SROPN_1 </td>
</tr>
</table>
<table id='my_tbl2' style='width:10cm;' border=2px cellspacing=0 borderstyle='solid' bordercolor='red'>
<tr style='height: 0.3cm;'>
<td width=50%>申請件號:LAMAERO-73428-0001</td>
<td width=50%>申請件號:LAMAERO-73428-0001</td>
</tr>
<tr>
<td width=50% style='height:0.4cm'></td>
<td width=50%></td>
</tr>
<tr>
<td width=50%>名稱:TFE DRY LUBE</td>
<td width=50%>儲位2:防C</td>
</tr>
<tr>
<td width=50%>儲位1:防B</td>
<td width=50%>庫房:23#</td>
</tr>
<tr>
<td width=50%>撥料數量:4</td>
<td width=50%></td>
</tr>
</table>
<table id='my_tbl3' style='width:10cm' border=2px cellspacing=0 borderstyle='solid' bordercolor='blue'>
<tr>
<td width=50%></td>
<td width=50%>需求者:612578 楊智為 856
<br>需求地點:A08</td>
</tr>
</div>
</div>
</body>
</html>

2023年7月3日 星期一

V120202B - 了解畫面 DOM的結構 – sub_panel2 -append - $

 目的: V120202B了解畫面 DOM的結構 – sub_panel2

一.顯示[畫面元件]對應[DOM] -操作說明:
                    1>console.log("sub_panel2:", sub_panel2);
                    2>由[console]分頁 ,  展開 [sub_panel2] 欄位值, 點 div sub_panel2 , 跳至 [Elements]分頁
                    3>[Elements]分頁點選div[sub_panel2_header], 畫面顯示該 div
                    
二. $().append處理說明:  0> Ext 元件 panel , 實際上在 DOM 的結構分成 2 div(header, body)
                                          1>$("#sub_panel2").append("div  id=my_div_barcode  xxxx") , 
                                              會加在 body 下方看不到











1>*.js
 {
    xtype: 'button', text: '顯示  QrCode ', id: 'sub_QrCode_Btn',
    listeners: {
                click: function () {
                    //genQRcodeDiv("sub_panel2", "5325YET064602&test&123eee");                            
                    var Tmp_barcode_text = "5325YET064602&test&123eee";
                    var Tmp_QrcodeStr= "<div id='my_div_barcode'  style='width: 150px; height: 150px;margin-top: 5pt;margin-left: 30pt; font-size: 6pt;' >"
                        + genQRcodeStr(Tmp_barcode_text, 100, 100, true)
                        + "</div>"                    
                    //$("#print_area").remove();                    
                    //var Tmp_sub_panel2 = $("#sub_panel2");  --> 會看不到 條碼
                    var Tmp_sub_panel2 = $("#sub_panel2-innerCt"); //20230703
                    Tmp_sub_panel2.append(Tmp_QrcodeStr);
                    console.log("0 Tmp_sub_panel2:", Tmp_sub_panel2);
                    var pub_print_area_Str1 = "<div  id='print_area'   style='border: 5px solid green;'>";
                    Tmp_sub_panel2.append(pub_print_area_Str1);
                    console.log("1 Tmp_sub_panel2:", Tmp_sub_panel2);                    
                },
            }
        },









2023年6月29日 星期四

V120502B 1>Qrcode:二維條碼 2>Barcode:一維條碼 3>預覽列印:printThis.js 4>套件載入: centerTab.cshtml

目的: V120502B - 二維條碼列印 - 預覽列印 - printThis.js 

處理說明:   1>二維條碼套件 : qrcode.js  
                     2>一維條碼套件: JsBarcode.code39.min.js
                     3>預覽列印: printThis.js
                     4>套件放在 ..\Scripts\目錄 : 如上3檔案屬於套件的 *.js  
                     5>centerTab.cshtml : 程式啟動時 ,必需載入如上套件檔案


1>二維條碼 :  qrcode.js 





2>一維條碼 :  JsBarcode.code39.min





3>套件放在 ..\Scripts\目錄

4>centerTab.cshtml : 程式啟動時 ,必需載入如上套件檔案
     <!-- ***  barcode 相關 script  *** -->
    <script type="text/javascript" src="~/Scripts/tlsbase.js?v=@date"></script>
    <script type="text/javascript" src="~/Scripts/qrcode.js?v=@date"></script>
    <script type="text/javascript" src="~/Scripts/JsBarcode.code39.min.js?v=@date"></script>
    <script type="text/javascript" src="~/Scripts/printThis.js?v=@date"></script>

2023年6月26日 星期一

V120202E –[領料明細查詢] – 資料未正常顯示 , null.toString() --> Error - nulltoStr(rec["ITMNO]) - 將欄位值轉為 str

 目的: V120202E –[領料明細查詢] – 資料未正常顯示 , null.toString() à Error

處理說明: 1>  null.toString() à Error , rec["MATNR"].toString() , 
                           若rec["MATNR"]為 null, 則會Error
                  2> 先利用 rec2Str(rec) , 將 rec 的欄位值為 null , 轉成 ""
                  3>function DatetoStr(par_date) {   //若日期為空白,則傳回 ""
                       if (checkisnull(par_date)) {
                           return "";
                         }
                     var Tmp_DateStr;
                      Tmp_DateStr = Ext.Date.format(new Date(par_date), 'Y/m/d');
                      return Tmp_DateStr;
                     }
 





1>*.js

 //開啟 store;
    Ext.getCmp('sub_Grid').store.on("load", function (me, records, successful, eOpts) {
        console.log("records:", records);
        if (successful) {
            //設定畫面欄位值  -             
            np["sub_APNO"] = par_APNO;
            var Tmp_url = "../../api/V120202FAPI/get_main_data";
            //取得挑選資料的 dt2JSON 字串
            var rtn_Str = getUrlStr(Tmp_url, np, "設定畫面資料");
            console.log("rtn_Str:", rtn_Str);
            if (checkRtnOK(rtn_Str)) {
                var recs = Ext.decode(rtn_Str);
                console.log("recs:", recs);
                var rec = recs[0];
                console.log("0 rec:", rec);
                rec2Str(rec);
                //for (key in rec) {                    
                //    var value = rec[key];                                     
                //    if (checkisnull(value)) {                        
                //        rec[key] = '';
                //    };                    
                //};
                console.log("1 rec:", rec);
                var Tmp_APNO, Tmp_MATNR, Tmp_APER, Tmp_APDT, Tmp_MPKUPP, Tmp_MPKUPDT;
                var Tmp_APER_, Tmp_MPKUPP_;
                Tmp_APNO = rec["APNO"].toString();
                Tmp_MATNR = rec["MATNR"].toString();
                Tmp_APER = rec["APER"].toString();
                Tmp_APER_ = rec["APER_"].toString();
                Tmp_APDT = DatetoStr(rec["APDT"], "Y/m/d"); 
                Tmp_MPKUPP = rec["MPKUPP"].toString();
                Tmp_MPKUPP_ = rec["MPKUPP_"].toString();
                Tmp_MPKUPDT = DatetoStr(rec["MPKUPDT"], "Y/m/d"); 
                Ext.getCmp('sub_APNO').setValue(Tmp_APNO);
                Ext.getCmp('sub_MATNR').setValue(Tmp_MATNR);
                Ext.getCmp('sub_APER').setValue(Tmp_APER);
                Ext.getCmp('sub_APER_').setValue(Tmp_APER_);
                Ext.getCmp('sub_APDT').setValue(Tmp_APDT);
                Ext.getCmp('sub_MPKUPP').setValue(Tmp_MPKUPP);
                Ext.getCmp('sub_MPKUPP_').setValue(Tmp_MPKUPP_);
                Ext.getCmp('sub_MPKUPDT').setValue(Tmp_MPKUPDT);
            }// end of  if (checkRtnOK(rtn_Str)) 
        }  //end of  if(sucessful)
    }
    );  //end of on load

function DatetoStr(par_date) {
    //若日期為空白,則傳回 "" , 否則會傳回 , 0NaNNan
    if (checkisnull(par_date)) {
        return "";
    }
    var Tmp_DateStr;
    Tmp_DateStr = Ext.Date.format(new Date(par_date), 'Y/m/d');
    return Tmp_DateStr;
}