專刊內文

當前位置:首頁>專刊分享>內文

瀏覽次數 : 824



iCoder-README


2019-09(2019-9-11)


* TimeBox組件在手機操作時無法點選icon選擇時間,已更正。

* Refval開窗選單,增加可以先在輸入框中輸入查詢值再以”Enter”鍵來開窗查詢此條件開頭的選單內容。

* Refval組件增加了AutoQueryColumn=True/False,可讓開窗選單進行全欄位查詢功能。

* DataGridXsBlock=True(小螢幕時會自動改為直排時),如果該DataGrid又沒有編輯DataForm時,編輯版位會沒有欄位標題,已更正。

* Word的欄位中增加 *UID (統一編號),可用來檢查公司的統一編號是否合法。

* Server端的UpdateComp新提供UpdateIfExists屬性(True/False),可以配合前端的importExcel方法從Excel上傳資料來新增,設定UpdateIfExistsTrue時,可以重複導入,沒有重複的資料會以Insert導入,重複的資料會自動以Update的動作進行更新。另前端新增一個importExcelNotApply的方法,與importExcel不同的是,importExcel會直接上傳給後端進行導入,importExcelNotApply則會讓User確認後再另外以submit的方法來存檔。

* Workflow在簽核意見中,開始的第一關的狀態不應該為審核,已更正為上呈才對。

* Word#D/#DT日期格式,可以透過iCoder來統一設定,但如果更改設定,必須重新產生RWD表單(Word無須重新讀入),如下在【工具】/【設定】中設定:



* Word新增 #Z ##Z(建檔者), #U##U(更改者),建檔者包括建檔日期時間,更改者也包括更改日期時間。規則如下 

1. #Z##Z產生表結構時,會產生建檔者建檔日期兩個欄位;#U##U會產生更改者更改日期。如要自定欄位名稱可以透過 Word”:”來定義之,但建檔與更改日期則必須透過【設定】/【系統】來統一設定,如下圖:



2. DataForm中的editor組件增加一個 CreatorUpdaterCreator於新增時自動預設使用者ID與目前時間,Updater於更改時同樣自動抓取使用者ID與目前時間,兩者都是ReadOnly,使用者無法更改。

3. CreatorUpdaterDataGridDataForm顯示都會以複合欄位顯示以節省版位空間。(DataGrid的欄位也會增加CreatorUpdaterFormat格式。

* 新增一個PromptDialog組件,用來打開一個輸入窗口,窗口內可以自由設定變數讓用戶使用所有的查詢元件輸入,通常用在調用前端或後端的JS方法所要輸入的變數窗口,如下例子:

貼入一個PromptDialog組件,設定Columns如下:



year()設定為dateselect,格式為 YYYY

sales(業務員)設定為 refvalRemoteName為員工資料表。

deCost(扣除成本)設定為switch,選項為是/否。

然後利用DataGridToolitems或自行貼入一個Button,執行一個JS來觸發這個PromptDialog,如下:


function exec()

{

   $('#PromptDialog1_sales').refval('setValue',$.getVariableValue('user'));  //設定sales的預設值

    var lastyear=$.getVariableValue('lastdayly');

    $('#PromptDialog1_year').dateselect('setValue',lastyear.substr(0,4));   // 設定年度為去年

    $('#PromptDialog1').promptdialog('show', function(row){  // 開啟輸入窗口

        // 使用 row.變數名稱 取值

        $.callMethod('業績結算','doClose',{sales:row.sales,year:row.year,swt:row.deCost},function(result){ // 執行後端結算方法

            alert('結算成功!');

        });

    });

}


* Word中實現完成印出工作流的所有簽核紀錄,可使用 ##WN##WU##WS##WC##WD(分別代表作業名稱、簽核者、電子簽名、簽核意見、簽核日期),並以表格來呈現,如下的表單實例:



* Word增加 #DC格式,用來產生Varchar(8)的日期格式,另提供 $TODAYC8 系統變數,傳回 Varchar8的日期格式 YYYYMMDD來配合 #DC的使用。

* 提供兩個獨立開啟表單的方法,分別為openForm(Title,FormName)打開表單在Dialog上,及openTab(Title,FormName)用來打開表單在另一個頁簽上;注意FormName如果RWD表單,前面要加上”bootstrap/”, 如果是jQuery的表單,前面要加上”client/”,如下的範例:

function open1()

{

    $.openForm('開啟表單在交談窗','bootstrap/客戶資料表3');

}

function open2()

{

    $.openTab('開啟表單在頁簽','bootstrap/客戶資料表3');

//注意在設計模式中預覽狀態下無法使用 openTab()

}


* 使用者的登入頁面中,增加自動顯示方案名稱的功能,如下可以在EEPCloud 【工具】/【設定】中,將登入頁顯示方案名稱打開即可。如下:


* 導入的Excel報表格式,如果設定為Pdf輸出時,Runtime時下載會打不開,已更正。

* EEPCloud中新增了另一種exportWordLoop的方法。WordMaster/Detail套表時有兩種方法,原來的exportWord(預設的方法),其明細表##的部分是以存儲格插入的方式進行,所以當Detail資料很多時,只會延展Detail內容,並不會有分頁的功能(分頁是由Word所控制);目前exportWordLoop的方法在套表Detail時不會用插入的方式,而是以覆蓋填入的方式進行,當儲存格不足時,會自動分頁,並自動複製一個空表格往下套印。其特色如下:

1. 分頁還可以重複出現表頭與表尾。

2. 可以解決中一刀的套表格式(中一刀的紙張大小需透過Word來設定)

3. 可以一次連續列印多張單據(在同一個Word當中)

4. 同樣可以使用 exportWordLoopPdf 方法來以pdf格式輸出。

如下圖的說明:







exportWordLoop是有限制的,如下:

  1. Word中要使用一個完整的表格來設計完整的一頁,也就是說一頁中不能分開成多個獨立的表格,文字與圖形還有欄位都不能放到表格外,如果非放不可,可以使用表格的隱藏線。

  2. 如果有配合使用Workflow者,只支持 #WWorkflow簽核參數, ##W 所有簽核意見列表將不支持。

 3. 只支持Master/Detail中的第一個Detail ## 的欄位參數, 第二個第三個Detail(##2 ##3)將不支援。

* 樞紐分析 (PivotTable) 的頁面中,右上角會新增一個匯出Button,可以將目前的統計資料匯出到Excel並下載。




2019-08(2019-8-23)

* #B: #MD: 同時存在同一個表格內時, #MD會被顯示在頁簽的標題上,已更正。

* 提供exportWordAll的方法, 來列印多筆的Word,並提供一個RAR壓縮檔來讓USER下載下來,doc會按鍵值分開成多個 (日期+鍵值內容),資料條件會根據DataGrid的內容印出,注意資料不要過多(如數百筆以上),否則耗費很多時間印表。

* RWDSecurity機制中,增加一個活動的頁簽,可以讓開發者控制Workflow在某個指定的活動中編輯或顯示某些特殊的欄位(就是某個作業才能編輯或顯示內容)。如在Security活動頁中增加一個名稱為倉管確認這個活動,當流程進行到此活動時,就可以設定那些欄位可以輸入,那些欄位不能輸入。

 

* EEPCloudTable中的【預存程式】中, 如果有Parameters, 修改存檔會報錯,已更正。

* iCoder讀入Word時,如果Word沒有該欄位,但COLDEF中有,此時讀入後會以藍色的字顯示區別;如確實沒有要這些欄位,可以刪除這些欄位;如有多個Word共用同一個資料表的情況,就不可以刪除欄位,此時這些藍字欄位在Server端與RWD中就會自動不產生。

* Excel新增提供#QDE= YYYYMM這種查詢類型,用來產生DateSelectQuery格式。

* 原本 #R #RV 關聯選單中,無法自動加入不同群組(#G群組)的對應欄位(ColumnMatch),就是RefvalColumnMatch無法跨越 #G群組,已更正可以跨越。

* Server端的Method如果有發生錯誤,目前會把Call Stack及錯誤行號也回應到前端,以方便開發人員debug,如下:發生錯誤的地方在出勤打卡.js的第7行的第99個位置。

* EEPCloud提供系統文件列印功能,如下5種文件:

Table Schema(資料表結構)

Server Module(服務端模組)

RWD Page(前端網頁)

Transaction(過帳處理)

Workflow(工作流程)

* 組件LineChartDataField增加 Style屬性 (Line/Bar, 預設為Line), 可以同時顯示LineBar功能。

* #R#RV等所產生的Refval的預設欄位,除了KN欄位外,現在會自動增加’*’的欄位前3個,以豐富Refval的選單。

* OptionsSwitch的欄位更改,不會觸發 FieldOnBlur事件,已經更正。

* Server端的Transaction增加onBeforeTrans事件, 用來處理:

 1. 動態更換TargetField

 2. 動態決定是否要過帳(retrun false可以不過帳)

 3. 動態決定SourceField過帳值,更換欄位或使用計算公式

如下例可以控制是否要持續交易:

exports.trs請假單_年度特休假表_onBeforeTrans = function(row, oldRow, fields)

{

   if (row.請假類型!='特休假' && oldRow.請假類型!='特休假') {  //考慮更改時新舊值都不為特休假

       return false;

   }

   else if (oldRow.請假類型=='特休假') {  //如果是特休假改為其他假時

       row.請假天數=0;  //新值為0可以扣除原來的累加值

   }

   return true;

};

* DataGrid如果採用直接編輯方式時,#S所產生的欄位沒有效果,已經更正。

* Word格式中提供: ^R (Readonly),^Q (Qeury), ^H (Hidden) 等三種設定,^R可以在產生畫面時將欄位自動設為Readonly, ^Q可以自動設定查詢為Y,^H 可以自動將顯示與編輯都自動設為N

* 提供 USERS密碼的後端加密函數,如下,可以自行處理EEPCloudUSERS密碼加密。encryptPassword()為一個非同步的呼叫方式,請參考以下的應用實例:

// addUserServer Method

exports.addUser = function(param,callback){

    var dm=this;

    var sql="INSERT INTO [USERS] (USERID,USERNAME,PWD,EMAIL,CREATEDATE) VALUES ";

    this.encryptPassword(param.userid, param.password, function(err, newPassword){  // 此為非同步調用

sql=sql+"('"+param.userid+"',N'"+param.username+"',N'"+newPassword+"',N'"+param.email+"',N'"+param.date+"')";

dm.query(dm.clientInfo, dm.clientInfo.database,[sql],{}, function(err){

            callback(err);

        });

    });

}

* #C Combo組件,新增屬性Multiple=True/FalseTrue時可以進行多選(複選)功能,但資料長度要配合設定長一點,另配合一個MultipleSeparator屬性,用來設定多選的資料分隔符號,預設為’,’

* $NOWTRS過帳時,並沒有內容值,已經更正。

* EEPCloud的管理者帳號中新增【系統通知】功能(此為EEPCloud私有雲的功能),可以透過此功能廣播訊息通知所有的開發者,開發者登入時會收到這個廣播訊息,並可以點選下次不要顯示代表已讀。如下,管理者可以新增系統通知訊息及有效日期。

* Word印表時,如果是#O#CK#S,內容有使用到符號時,會自動根據選項內容更換成實心的符號。如下:

印表的結果如下:

 

*看板管理 Type表格,請增加 排序欄位的設定,可以設定選回排序欄位,組SQL的時候加上 Order by的子句

* 看板管理中,增加一個寬度的設定,可以選Normal一般(預設),或選擇Large(代表兩倍寬度)

* RWD UserLogin時,因為EEPUSER帳號可以不為大小寫,所以當帳號為小寫但USER登入為大寫時,保存到Session$USERID為大寫,造成不少困擾,已經更正登入成功後會自動與USER帳號重新同步。






2019-07(2019-7-24)

* iCoder可以提供不同開發者所開發的不同方案進行整合,也就是在Runtime時用戶可以自由切換不同的方案,如下圖Andyeip寫的EIP系統中,可以透過右上角的"用戶"來切換其他開發者的方案(AndystockStock方案與ccmtest寫的ccmtest方案)

設定的方式很簡單,透過 iCoder"工具"/"授權整合方案"功能來設定,如上例中的"andystock"開發者,要授權給"andyeip"開發者並輸入"andyeip"的密碼即可(需要帳號與密碼都要正確),這樣,andyeip的用戶進來就可以看到"andystock"所開發的方案。

但要注意以下幾件事:

1. 整合的不同的開發者方案,最好都使用同一個資料庫,可以透過資料庫【編輯連線設定】來跳轉到同一個資料庫(與混合雲的設定方法一致)。如果整合到同一個資料庫有困難,也可以分開沒有關係,但用戶/群組角色的資料最好同步一致,否則將會造成用戶帳戶錯亂的現象。

2. 資料庫如果整合到同一個,因為兩個開發者的方案都是"SOLUTION1"(系統預設),所以會造成兩個開發者所設定的方案名稱重複,造成用戶選單功能表衝突的現象,此情況必須讓其中的每一個SOLUTION1更名,可以使用EEPCloud的【系統/方案】中直接針對某個方案按下【重命名】來更換方案名稱。

* 為了配合多個方案的整合,EEPCloud在【系統/方案】中直接針對某個方案新增【重命名】來更換方案名稱。

* Excel提供 PivotTable(樞紐分析)的功能,可以利用原來Excel裡的 #G (Y),#X (X,等同於一般的 # 欄位),及#NT (要統計的數值欄位),如下的統計表,可以透過 '#X' 來增加樞紐分析的頁簽(原來的Excel產生查詢及印表的頁面還是存在):

如上導入Excel之後,會多出一個"樞紐分析"頁簽,並根據#G#X#NT來設定此樞紐分析,如下: (X/Y/上方欄位都可以任意拖拉)

* iCoder Flow流程審核,額外選擇通知對象時Checkbox會顯示不出來,已修正。

* 行事曆元件在資料量大的時候,效能有問題,已經更正只讀目前月份的資料,進行分頁管理。

* EEPCloud的【工具】增加【複製系統資料表】功能,可以複製別的資料庫的系統資料表到目前的資料庫中,並可以勾選那些TableName

* EEPCloud Server端新增InfoMail的元件,屬性如下:

Subject: 郵件主題

Body:郵件內容

To: 收件人地址(可以設定多個,用';'隔開)

BCC: 密送地址

CC:抄送地址

Attachments:附件文件

FromName: 設定發件人名稱

 

後端的發信案例:

exports.sendMail = function(param, callback){

    var async = require('async'); // 引用 async 同步非同步模組

this.getComponent('InfoMail1','infomail',function(err,result){

        // 取出infoMail1組件放入result

        var tolist = ['andykao@infolight.com.tw'];  //設定 eMail對象的名單

async.eachSeries(tolist,function(to,cb){

            // 依次發送tolist的名單

            var body = "Dear "+to+"<br>";

            body=body="你好, 這是個郵件測試, 請不要回復, <br>謝謝你支持 iCoder, 祝你使用愉快!!<br>";  // 設定郵件內容

            var param = {'to':to,'body':body};

            result.Send(param,cb);  // 發送郵件

},callback);

    })

}

如果固定的對象與內容,可以直接在屬性上設定,如果為動態的對象與內容,就可以如上以JS的程式來控制。

* Word中刪除欄位時(刪除有#的欄位),重新讀入時會自動將刪除的欄位自動標示為藍色,作為是否同步刪除的選擇。如下,重新讀入之後,發現縣市名稱鄉鎮名稱已經被刪除,如要同步刪除,可以按上面的刪除按鈕。

* iCoder的工具中的【看板管理】,會自動紀錄對應的目前方案(Solution),這樣當User切換方案時,才可以個別顯示不同的【看板管理】。

* #O所產生的Option元件,增加了OnSelect事件,可以控制當user點選選項時觸發。

*為了大量數據的效能的提升,Serverinfocommandselectpaging預設改為true,包括設計模式中的Command Text EditorSQL Select語句也預設為true,提升效能。

* infocommand中有使用Order By的語法,又使用selectpagingtrue時,語法會發生錯誤,已經更正。

* 修改 #F (FileUpload元件)上傳多個檔案時,在Datagrid下載的連結會擠在一起,更改時無法顯示原來的內容,也無法刪除,已更正。

* Schedule(行事曆元件)增加MonthTitle(True/False)屬性,可以直接顯示Title內容於月曆上。