blessed-landmine

這是一篇我在用 blessed 時踩的一些雷 會持續的更新 1. 記得 render 今天在寫 API 時踩到兩次 更新了資料卻沒有 render 例如 textarea.setValue() 這個函式設定完之後他畫面不會更新 要自己 render 2. textarea.setValue() 只接受字串當參數 我個人覺得 blessed 缺少一個像是 jquery 的函式庫 沒有一個很好的 API 包裝 例如說這個函式 textarea.setValue() 就只吃字串 因為他用了 String.prototype.replace 這個函數 而且他沒有一個很好的防呆機制例如參數型別檢查 幸好是他的程式碼沒有做 uglify 還算簡單易懂 而且 node 的錯誤訊息的 stack 可以引導到真正出錯的地方

2020-February-26 · 1 分鐘 · simba-fs

blessed切換畫面

今天完成了新版本的 treetify 看這 同時我設計好了右邊的 edit 但是我的問題是他要根據情況不同切換不同的頁面 來看看我的一些想法: 從 screen.children[2] 把他會掉,可是會出錯不行 有一個元件 Carousel 好像可以但是他其實是用方向鍵控制所以也不行 終於我想了一個方法,接下來來介紹 這是測試程式碼 const blessed = require('blessed'); const contrib = require('blessed-contrib'); const screen = blessed.screen({ title: 'JSON viewer', debug: true }); const grid = new contrib.grid({ rows: 1, cols: 2, screen: screen }); const tree = grid.set(0, 0, 1, 1, blessed.box, { border: {type: 'line'}, content: 'Tree', label: 'Tree' }); const edit = grid....

2020-February-20 · 1 分鐘 · simba-fs

blessed-contrib-tree

Tree 想說先想一個專案來練練手 熟悉一下 blessed 突然看到 blessed-contrib 裡有個元件叫 tree 想說可以做成 JSON viewer 於是就開工了! 其中最重要的部份就是搞定樹狀結構 因為他有特定的格式和選項 下面是官方的範例 範例 { extended: true, children: { 'Fruit': { children: { 'Banana': {}, 'Apple': {}, 'Cherry': {}, 'Exotics': { children: { 'Mango': {}, 'Papaya': {}, 'Kiwi': { name: 'Kiwi(notthebird!)', myCustomProperty: "hairyfruit" } } }, 'Pear': {} } }, 'Vegetables': { children: { 'Peas': {}, 'Lettuce': {}, 'Pepper': {} } } } } 每個節點都是物件 他的子節點存在 children 裡 如果是空物件代表這是葉節點 extended 屬性是是否展開,預設 true name 是顯示出來的字,如果要改再設,預設是 index myCustomProperty 直翻是自訂屬性,應該是當 tree....

2020-February-18 · 1 分鐘 · simba-fs

blessed

某天我有一個問題 gtop 的圖畫界面是怎麼做的,我知道他是用 node 寫的,對他別有興趣 我上 github 看他的 package.json 發現他的 depandence 只有三個 ... "dependencies": { "blessed": "^0.1.81", "blessed-contrib": "^4.8.16", "systeminformation": "^4.14.4" }, ... 其中 systeminformation 很顯然是取得系統資訊 那 GUI 的 library 應該就是 blessed 和 blessed-contrib 了 去 blessed 的 github 看看 沒想到這是一個超強大的函式庫 可是網路上的教學卻很少 只好自己看 docs 啦 接下來是我測試的一些程式碼和截圖

2020-February-17 · 1 分鐘 · simba-fs