專刊內文

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

瀏覽次數 : 597



iCoder-README

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內容於月曆上。

* IE瀏覽器在#A多行預設時,會導致datagrid無法新增,已更正。

* iCoder設定【授權開發者】,可以勾選唯讀模式,讓被授權的開發者只能讀取不能更改系統。

* Word增加 #AE (Area Editor), 代表為一個HTMLTextArea編輯器,可以輸入富有變化的文字與連結或加入小的圖檔。如下:

(注意:印表到Word時只能是一般的文字內容,無法保留html的格式與連結或圖檔)

*iCoderEEPCloud中,Word/Excel/TRS/Workflow等模組提供群組分類的功能,只要在【系統/檔案群組】中設定模組的群組類別,即可在各個Word/Excel/TRS/Workflow的節點中找到群組目錄,並以拖拉的方式來分類群組。(EEPCloudServer/Client/RWD會有相同的這些群組目錄來做分類)

* #F #P FileUpload編輯時,如果原來有資料會出現一個 Hyperlink可以下載,改成在Hyperlink之後多一個 [X] icon,可以清除目前欄位,但後端是不會刪除原來的文件的。

*EEPCloudRWD中新增甘特圖(gantt)的元件, 屬性如下:

RemoteName: 後端對應的資料查取模組。

WhereStr: 如果不需要一開始有資料,可以設定1=0

RowID:甘特圖資料表中的Key欄位,此欄位通常是唯一鍵值的欄位。

ParentID: 上層欄位,如果甘特圖有多層的關係,需定義哪一個欄位存放上層的連結。

TextCoumn: 甘特圖項目名稱的欄位。

TextCaption: 項目欄位的標題。

StartDate: 起始日期的欄位。

EndDate: 結束日期的欄位。

Progress: 進度百分比的欄位,沒有可以省略。

ActuallyStart: 實際起始日期的欄位,如果有的話。

ActuallyEnd: 實際結束日期的欄位,如果有的話。

Scale: 範圍可以選日期/星期/月份等三種。

Readonly: True只用來顯示,False則可以拖拉進度。

AutoSave: True拖拉進度之後會自動存回資料,False則可以透過js寫程式寫回。

ShowToday: 是否顯示今天的日期線。

ShowGrid: 是否顯示左方的表格資料。

ShowStartDateColumn: ShowGridTrue時,是否顯示起始日期內容。

ShowDurationColumn: ShowGridTrue,是否顯示期間日數()

OnBeforeLoad事件:載入本元件完畢之後所執行的事件。

* WorkfloweMail通知沒有包含所設定的Presentfield ,但待辦事項中是有的。

 


2019
-05(2019-5-28)

* Word已經可以支援多個detail了,第一個Detail使用'##',第二Detail使用'##2'即可,其餘的使用方式完全與'##'相同;第三Detail則使用'##3',的方式,一個Word表格最多只能使用三個Detail明細表。另外,明細表如果需要自定義命名,原來第一個Detail使用'#MD:'的方式命名,第二Detail則用"#MD2:"的方式,第三則用"#MD3:"來命名。

* Word的公式設定 #[field1]=[field2]時,如果field2為必填欄位'*'時,field2會找不到,已更正。

* Excel印表輸出時,如果數值欄位設定 N2格式時,並沒有輸出該Format,已更正。

* #R#RV 自動產生的關聯選單欄位,除了對方的#K#KN, 會自動加入前三個必填欄位,以豐富關聯選單內容。

* TreeViewCSS主題沒有隨著用戶設定變化,已更正。

* WORD"其他設定"中的"樹狀設定", 增加一個"上層欄位"設定,可以設定多層的TreeView,讓TreeView可以多階展開並聯動DataGrid的資料。

* WF工作流增加SkipSameUser=True/Falase 的屬性,可以控制連續的上下兩作業如果都是同一用戶,則下一個會自動跳過。

* EEPCloudSchedule行事曆元件中,增加allowAdd=True/FalseEditForm,如果設定allowAddTrue,行事曆上方會有一個"+"的按鈕,可以用以EditForm所指定的DataForm來新增一個行程。

* Schedule增加OnUpdate事件,配合有設定 EditForm時,需要一個事件來處理編輯與刪除的許可權。如:

function Schedule1_onUpdate(row)

{ 

    var userid = $.getVariableValue('user');

    var group = $.getVariableValue('groups');

    if (row.申請人==userid || group.indexOf("99")>=0) {

        $(this).schedule('options').editable = true;

    }

    else {

        $(this).schedule('options').editable = false;

    }

}

* WordMasterDetail都是"自動編號"(#KA)時,Master/Detail同時新增情況下,Detail會沒有作用,已更正。

* Word的公式函數中,更正ToAmtUpper()會包含""的內容,此目地是為了處理包含小數的金額"元角分"的處理。如: 21.35結果為"貳拾壹元參角五分"

* WORD增加 '#SG' (Signature) '##SG',用來讓使用者簽名所使用;此產生Table的結構自動會設定為nText類型,對應的 editor則為signature。並可以在Word印表時自動印出簽名者的簽名內容。

* Tree樹狀組件增加AllowAdd=True/FalseEditForm屬性用來編輯樹狀的內容,此功能與Schedule類似,可以直接在Tree中新增更改刪除樹狀內容。

* 系統變數增加 $NOW,與$TODAY類似,差別$NOW有目前時間,$TODAY為今天沒有時間。

* Word 的預設值可以使用 {} 來設定,如果這個預設內容有()的話,會自動被識別為函數的預設值,如 { getTree() },代表預設內容為一個 getTree()JS方法。

* EEPCloudRWD表單有提供一個"免登入URL"的方法,可以讓這個網頁不必登入用戶帳號就可以使用,但必須注意以下幾點,來確保其他RWD網頁的資訊安全,如下步驟:

1. 如果該RWD網頁有使用JS程式碼的話,必須將這些JS程式碼改貼到 Literal組件的Html當中,與Html網頁合併使用時只要在這個JS程式碼前後加上 <script></script>即可。

2. 在該RWE表單的右鍵打開這個"免登入URL"功能,並按下"存檔"EEPCloud記錄這個網址加以區別,如下圖:

3. RWD表單所對應的Server端如果有用到InfoCommand組件的話,也須將NonLogin屬性設為True才能讓免登入的用戶存取數據。

4. 萬一Server端有用到Server Method的話,還要在Server端貼入 ServiceManager組件, 並將這些Server Method設定為免登入的Server Method

* WORD的明細中,使用到 '*'的欄位會沒有'必填'的效果,並在套表印出時,印不出欄位內容,目前已更正。

* iCoder所產生的各組件屬性,在二次開發中程式師即使改了也經常被顧問師再次讀入Word/Excel後覆蓋掉。除了原本有打紅色'*'的屬性屬於EEPCloud二次開發專用的屬性外(不會被iCoder覆蓋),現又增加"鎖定""釋放"的功能,二次開發的程式師可以透過自訂的"鎖定"來保留該屬性內容(如下圖),如果不想保留可以將該屬性釋放即可(鎖定後會有一個藍色的'*')

* WORD增加 '#QR' (QRCode) '##QR',用來將該資料顯示為QRCode的方式。此#QR的欄位在DataFormDataGrid輸入時為一般的Text,在顯示時會將format設定為qrcode,並在WordExcel印表輸出時,自動會以QRCode的方式顯示。

* EEPCloudFileUpload組件,增加一個AutoNumber=True屬性,可以在上傳時如果已經存在,自動加上後面的序號。如"invoice.doc"存在,上傳後會變成invoice(01).doc,再上傳為invoice(02).doc,以此類推。

* EEPCloud'網頁'中增加 "主頁原始碼(JS)" "主頁樣式表(CSS)",可以用來控制與改變主畫面的呈現與風格。

如,用來控制顯示或隱藏主選單及flow頁簽等

$(function(){

    // 隱藏menu 

     $('#menu').toggleClass('min');$('#tab').toggleClass('max');

    //  顯示flow頁簽

    $('a[href="#flow"]').tab('show');

})

* DateboxDataTimeBox等日曆組件的呈現位置要隨著畫面自動調整,已更正。

* place位置組件, 增加屬性ReadOnly(True/False)ValueType(address/latlng)address代表以地址為座標,latlag則以經緯度為座標。

* Master/Detail中,更正DetailDuplicateCheck=True問題(Detail整批存檔的情況下)此整批的狀態下,會改在前端檢查Detail的資料是否有重複。

* Word#A如果要預設換行的資料,可以在 { } 預設資料的內容中加入"\n"代表換行的意思,注意如果預設內容很長,需要自行擴充系統表COLDEFDEFAULT_VALUE寬度(建議設為500)。如下:

* FileUpload組件,增加了一個MultiFiles=True/False,可提供多個擋案一次上傳。(保存到欄位時會以';'隔開多個檔案)

 



2019-03/04(2019-4-15)

* Excel讀入時,支援 #M: ServerName.Command的格式,ServerName用來定義對應的Word表單名稱(欄位元字典)Command則會對應到ServerName的服務端模組中指定的SQL Command的資料源。ServerName用在iCoder讀入時來找到Excel欄位定義,Command用在User執行時會真正以指定的SQL語法取得數據。例如: #M:出貨單.應收帳統計,以"出貨單.DOC"為欄位定義,並以"應收帳統計"USER執行時的數據來源。

* Excel讀入時, 可以省略 #M: 的定義(按照Excel的檔案名稱)

* #KA自動編號欄位,如果同時用到":"(指定欄位名稱)"AUTO:"(自動編號公式)時會失效,已更正。

* Excel設定中的,"印表格式"與查詢設定中的"預設",更正第2次讀入時,不會被覆蓋。

* 新提供RWDDrilldown資料追蹤元件,可以透過任何DataGrid來追蹤任何表單的資料。RWDDrilldown屬性如下:

BindingObject: 要配合DrillDownDataGrid組件對象。

Columns: DataGrid與對方表單的配對欄位,可以設定多個。

Mode: 可以設定打開為Dailog(交談窗)/Tab(頁簽)/Window(獨立視窗)

TargetRemoteName: 對方表單的RemoteName模組。

Page: 對方表單名稱。

PageTitle: 打開後對方表單的標題。


設定後,在DataGrid所要DrillDown的欄位須另外設定Format"DrillDown"即可(如果有多個DrillDown,可以設定為"DrillDown,#DrillDown2"


* ServerMove提供一個新的 CarryTrial()方法, 用來找出上期的餘額並回寫來源表的結轉試算的計算資料。例如,庫存進出明細表中,可以根據每個產品的上期期末庫存,來試算每筆進出之後的庫存值(回寫每筆的期初庫存與期末庫存)。設定參數如下:

CarryTrial(Where,CarryKeyField,Period)

Where: ServerMove元件所指定的Source資料源的Where條件。

CarryKeyField, SourceCommand的試算鍵值欄位,如庫存就是產品編號,會計總帳就是科目編號等。

Period: 代表要試算的期數,通常是YYYYMM等格式的年月。

如下的Server Method,用來進行庫存試算:


exports.doTrial = function(param,callback){

   var yymm = param.ym; // 取出 年月

    this.getComponent('ServerMove2','servermove',function(err,result){

        result.CarryTrial("年月='"+yymm+"'","產品編號",yymm,callback);

   })

};


上述的 ServerMove.SourceCommand"庫存進出明細表"CloseTable"庫存結帳表"(存放每期的餘額)BeginningField"期初"EndingField"期末"這兩個欄位必須同時存在於SourceCloseTable中。Calculation"期初+isnull(進貨數量,0)-isnull(銷貨數量,0)" (null的數值代表0),執行後會得到以下的試算結果:



 

* 改善 #DE (分隔的日期) 的欄位內容如果太小會顯示不出來的問題。

* Word讀入時如果有 "#KR" "#KC" 也可以, 不一定非要"#K""#KA"不可。

* Word文件定義中。WORD欄位元表格內可設定"{}"者,括號內的內容即代表預設值,如: 地址: # {臺北市}     日期: #D {$LASTDAY}  金額: #N {0}

* WORD欄位表格內設定有 "*RANGE" "*CID" "*TID" "*EMAIL" "*URL"者,會自動設定檢驗值,如: 身分證: # *CID    郵箱: # *EMAIL    電話: # *RANGE 0,9

* EEPCloud中,DataGrid/DataFormToolIems中,可以拖入Copy的功能。

* WORD內的 #S #O 讀入Word後,會預設為第1個。

* iCoder "工具"列中,新增了"SQL Profiler"SQL語法追蹤功能表。

* WORD提供 [TRS] 的格式定義,可以由目前 [TRS] 視覺化模組以 "保存到文本"方式把 [TRS] 變成文字模式格式,再貼到 Word中長久保存。此目的是把 WORD可以保留所有的規格, 包含Table/Server/RWDPageTRS,以方便進行批次轉移與大量更動系統規格。

* 新增 AutoNumberonGetFixed事件可以取得蘭位元資料的內容, 並以某個欄位元內容進行自動編號


exports.AutoNumber1_onGetFixed = function(fixedString, rows)

{   

   var fixed = rows[0].客戶編號 + fixedString; //以客戶編號+年度的YY

return fixed;

};


* Word增加 '#JS' '#JC'定義,分別代表Server端的java scriptClient(RWD)java script。可以把完成的 JS 貼到Word永久保存,並轉移到別的系統中同步。 (注意已經有jsServer端與RWD表單時, 為了保險起見將不進行覆蓋,如果希望以Wordjs為主, 需將 Server端或RWD表單的js先行清空再重新上傳Word) 如下例: (注意,#JS#JC需上下對稱)

* Excel印表時, #G如果有資料有重複時, 不能獨自合併, 須考量上一個 #G的欄位是否也重複才能合併。