標籤

2018年3月21日 星期三

桃捷時刻表(簡易版)

Date: 20180318
Version: 1

因為負責公司官網的時刻表功能,而接觸到了時刻表,剛好司機員APP也剛好告一段落,就想說是不是可以利用一下手邊的資源來做個桃捷時刻表APP呢?

這就分成兩部份了,後台資料處理,需要將OCC提供的時刻表轉成我之後APP方便處理的格式,這部分是用Perl完成的,並不難,難的地方是在邏輯思考的部分,這部分就想了快一天左右,想出來後之後都很簡單做。

資料處理好後,接下來是就是APP的設計了,既然要做時刻表APP,當然要參考一下業界的形式,而個人最常接觸的就是台鐵的時刻表如下:

http://twtraffic.tra.gov.tw/twrail/TW_Quicksearch.aspx

因此,我的APP設計版面都是參考台鐵而來的,畢竟台鐵的時刻表查詢理論上也是國人最常用的,因此,若介面相似的話,理論上旅客都會比較容易使用。

接下來就是選擇日期的部分,發現AI2的日期選擇不太好用,所以上網找了資料後,將資料改成中文後,以及國人常使用的日期顯示格式後,並參考家人的意見進行修改,好不容易日期選擇的部分終於完成了。

選項設定好後,接下來就是時刻表資料匯入,這部分也是搞了好幾天,推倒了好幾次,終於把資料匯入了,並且使用Scroll和html格式,讓時刻表可以滾動,並上網查資料如何讓新的資料輸出時可以回到最上頭,也參考別人的方法後,終於讓APP符合自身的預期。

看起來非常像有這麼一回事一樣,不過如果這個要推出的話,就要放到google play上了,不過這就是公司的問題了,因為google play是要收錢的,我個人是不會這樣做的,所以只能用公司的名義去做,另外就是,目前公司的APP招標開始了,我的想法是雖然開始招標,等到決標也是4月的事了,再等到功能要上架後,也差不多要4-6個月,這一段空窗期,是否可以提供一個簡易版的時刻表APP呢?當初的想法是這樣的,剩下就要看長官是否覺得可行?

不過這個版面大概就是這樣了,主要是提供旅客簡易的查詢時刻表APP,所以應該不會放太多精力在上面,主要就是簡易,這個只要2.7MB就可以了,非常快速,而且跟火車查詢很像啊。


























後來在測試的時候,發現datepicker在第一次使用會有bug出現,後來發現是因為第一次loading的時候,會比較久,所以造成timer讀取產生錯誤,解決方法就是在開起應用程式時,就進行載入,這樣後面使用datepicker時就不會造成讀取錯誤。



2018年3月18日 星期日

桃捷司機員APP

Date: 20180127
Version: 1

繼之前寫過一次APP後,最近又開始新的專題,目標是多人使用,之前有做過一次,可惜失敗了,直到現在公司長官覺得可以推推看後,就打算再試一次看看,如果我做不出來,那推也沒必要了,這一次就快了許多,畢竟有個人版可以參考修改,我只花了兩天就做出來了,後面三天主要還是在做優化的部分,整體來說,比上次進步許多,尤其是Perl的hash觀念幫忙我許多,不過因為資料庫處理的關係,顯示速度稍微比個人版的慢了一點,可以看下方關於顯示速度的優化,基本上功能都用好了,接下來就看看長官們到底買不買帳,畢竟APP的使用目的是有限的,例如:「看一個月內的班表、想看其他人的換班」,這些都只能回去看LINE上的圖片,再來是副段們修改是在電腦excel上,之後再轉成圖片放在LINE上,之後就看他們有甚麼要求吧,畢竟他們慣用的excel格式跟我使用的還是有所差距,另外總班表更換時,他們也要跟著更動,除非這些都是由我來負責的話就沒差了,單純就我這邊操作也是可以的,不過一旦我離職,這APP就會跟著GG了。

之後就會更新一些公司的狀況,看看這個APP之後的方向會是如何的呢?

小寫開頭為number or string
大寫開頭為array
中間有底線為hash
中間有@為database,為從google試算表中拉出的原始資料

today: 今天日期
year: 今天年份, from today
month: 今天月份, from today
day: 今天日期, from today
driver: 使用者工號

Type: 班型
Time:  當月日期
Start: 上班時間
End: 下班時間
Extra: 加班時間
Detail: 任務內容
AllDetail: 所有資訊

Type@Database: 所有班型資料,含班型、上班時間、下班時間、加班時間、任務內容。
Driver@Database: 司機員資料,含工號、當月班型。

Driver_Schedule: 司機員相對應之當月班型
Time_Type: 當月日期對應之班型
Weekday_Name: 星期幾的中文名稱
Month_DayNumber: 當月份之天數
Type_Start: 班型相對應之上班時間
Type_End: 班型相對應之下班時間
Type_Extra: 班型相對應之加班時間
Type_Detail: 班型相對應之任務內容
Type_AllDetail: 班型相對應之所有資訊

完成部分:(*未完成)
今日顯示
工號清單
日期清單
任務清單功能
資訊顯示
班型按鈕顯示
今日按鈕顯示
工號清單功能
日期清單功能
使用者系統(第1頁輸入-->第2頁呈現)*
使用者鎖定(第一次輸入使用者後,再開啟會鎖定使用者,故不需上方的使用者系統)
返回按鈕顯示
月曆模式

顯示速度優化測試:
個人版:舊版,0.567秒
多人版:初版,各資料顯示放於各資料庫讀取階段,故2階段需1.101秒
多人版-2:統一資料顯示時機後,0.868秒,加快20%顯示速度
多人版-3:司機員匯入數量增加(3->57),0.901秒,約慢了3%

自動化系統:(未完成,失敗,Net::Google::Spreadsheets安裝失敗,QQ)
修改完資料後,運用perl後會進行上傳至google試算表

Perl轉檔
perl會使用perl2exe轉成exe檔後,提供使用

特地去做了一個返回鍵的圖示,是用PowerPoint做的,效果還不錯,還蠻符合APP的色調。
以下為APP目前形式:

























後來,與中油的朋友討論時,發現中油也有輪班表APP,但他們只有4種班型,不會有個資的問題,所以他們的APP可以在Google Play上找到的,另外我也找到中鋼的APP,兩者的共通點都是只有4個班型,而且都是用月曆的模式來呈現,因此我也在思考是否可以做出動態的月曆出來,畢竟之前我是使用圖片的方式呈現。

經過一翻思考與設計後,月曆模式終於完成了,可以呈現出該月的班型狀況,使用三種顏色,藍色是當日,紅色是放假,灰色是上班,另本來打算是要在班型的地方改用按鈕方式呈現,但按鈕的效果不如預期,所以最後使用的是在月曆下方使用下拉是選單,來讀取班型內容,當然也有選擇使用者的功能。

























目前,大致上會有三種版本,1)日曆模式、2)月曆模式、3)日曆+月曆模式,中油和中鋼是2,之前個人版算是1+2的圖片,理論上應該會是使用3的版本提供大家使用,當然最後還是要看使用者的意見決定之。

後來也仿照其他APP的功能,多做了一個關於的功能,放一些資訊,可供長官們發揮的區塊,另外還學習如何使用Email的功能,App Inventor 2的功能真是越來越厲害了,不過還是有許多地方還可以再改進。

經過一段時間後,Mail的功能已經做好了,並且也與車務中心開了兩次會議,中心主任甚至認為這個APP推出後,其他場域的人都會想用,不過最重要的是希望可以與公司的ERP系統介接,這樣資訊都會是最新最完整的,關於這部分,我剛好在看一些APP的作品有用到json的格式來達到類似的目標,所以如果可以將ERP的資料用json的格式丟出的話,理論上我這邊的APP應該是可以做到的,再來就是json資料的資安規範,要如何規劃,畢竟要接到我的APP一定是要透過外網來使用,所以外網的資訊安全就格外重要,目前公司這邊還在處理ERP資料拋出的部分,所以這部分就要等ERP部分處理好後,才會接下去,到時候可能就會再開一個新的文章了。