From 6ea74c268a12325296a1d2e7fc31b02030ddb8bc Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 12 May 2023 17:42:09 -0300 Subject: use ESM module syntax & minor cleanups The biggest change here is moving various element classes under more scope-specific directories, which helps to avoid circular dependencies and is just cleaner to navigate and expand in the future. Otherwise this is a largely uncritical port to ESM module syntax! There are probably a number of changes and other cleanups that remain much needed. Whenever I make changes to tui-lib it's hard to believe it's already been years since the previous time. First commits are from January 2017, and the code originates a month earlier in KAaRMNoD! --- ui/tools/FilePickerForm.js | 88 ---------------------------------------------- 1 file changed, 88 deletions(-) delete mode 100644 ui/tools/FilePickerForm.js (limited to 'ui/tools/FilePickerForm.js') diff --git a/ui/tools/FilePickerForm.js b/ui/tools/FilePickerForm.js deleted file mode 100644 index 51d59a9..0000000 --- a/ui/tools/FilePickerForm.js +++ /dev/null @@ -1,88 +0,0 @@ -const fs = require('fs') -const util = require('util') -const path = require('path') - -const readdir = util.promisify(fs.readdir) -const stat = util.promisify(fs.stat) -const naturalSort = require('node-natural-sort') - -const Button = require('../form/Button') -const ListScrollForm = require('../form/ListScrollForm') - -module.exports = class FilePickerForm extends ListScrollForm { - fillItems(dirPath) { - this.inputs = [] - this.children = [] - - const button = new Button('..Loading..') - this.addInput(button) - this.firstInput(false) - - readdir(dirPath).then( - async items => { - this.removeInput(button) - - const processedItems = await Promise.all(items.map(item => { - const itemPath = path.resolve(dirPath, item) - return stat(itemPath).then(s => { - return { - path: itemPath, - label: item + (s.isDirectory() ? '/' : ''), - isDirectory: s.isDirectory() - } - }) - })) - - const sort = naturalSort({ - properties: { - caseSensitive: false - } - }) - processedItems.sort((a, b) => { - if (a.isDirectory === b.isDirectory) { - return sort(a.label, b.label) - } else { - if (a.isDirectory) { - return -1 - } else { - return +1 - } - } - }) - - processedItems.unshift({ - path: path.resolve(dirPath, '..'), - label: '../', - isDirectory: true - }) - - let y = 0 - for (const item of processedItems) { - const itemButton = new Button(item.label) - itemButton.y = y - y++ - this.addInput(itemButton) - - itemButton.on('pressed', () => { - if (item.isDirectory) { - this.emit('browsingDirectory', item.path) - this.fillItems(item.path) - } else { - this.emit('selected', item.path) - } - }) - } - - console.log('HALLO.', false) - this.firstInput(false) - this.fixLayout() - }, - () => { - button.text = 'Failed to read path! (Cancel)' - button.on('pressed', () => { - this.emit('canceled') - }) - }) - } -} - -- cgit 1.3.0-6-gf8a5