soul-link's Introduction
soul-link's People
soul-link's Issues
Scroll lines
If the terminal has 20 lines but there are 25 rows of data, we should allow the user to scroll while in row mode. The column's names should be always displayed.
Scroll columns
If the terminal size has 300 columns and each table column consumes 100 terminal columns but the table data contains 4 columns, we should allow the user to scroll columns while being in column mode. Keep always the left column on the display.
Implement `x` (exit) action - table mode
When a user presses the x
key while being on table mode, the program should exit.
Maybe it would be a good idea to have multiple ways of exiting the program. For example:
- Ctrl-C should exit the table no matter what mode you are in.
- Ctrl-D should exit the table no matter what mode you are in.
- The
x
key should exit the table if the user is on table mode.
Implement `u` (undo) action - table mode
When a user presses the u
key while being in table mode undo the last done operation in any mode. Currently, the following list of actions comes to my mind when I think about what I would want to undo:
- Deleted row
- Added row
- Edited column
- Edited table configuration
Implement `o` (open) action - column mode
When a user presses the o
key while in column mode the program should open the current selected column.
Open steam URLs on Steam application
Open links on the device's steam application. This may allow us to open games.
Detect terminal resizing
If the terminal size changes, update column widths, amount of rows based on terminal lines, etc.
Prepare project for release
Create:
- User documentation
- Development documentation
- Contributing guide
- Licensing
Clean exit
Clear the console when a program exits. This will require dynamically changing which function calls the keyboard
module when it detects a key that should exit the loop.
Implement `o` (open) action - row mode
When a user presses the o
key while in row mode open the default column.
For example, if we configure the column shop_link
as the default column, if the user opens the row we could open the link in a browser.
Implement `e` (edit) action - table mode
Implement the edit table action by pressing the e
key in table mode.
This mode should open a text editor where:
- There are comments guiding on what can be done inside the editor.
- The user can add or remove columns. A comment displaying the available columns should be displayed.
- The user can modify each column's width or leave it empty to let the program calculate the width.
- The user can modify the column used to sort the table.
Implement `a` (add) action - table mode
When a user presses the a
key a new menu/text input should open to allow the user to type/paste a URL.
From the URL extract the required game information and create a new row. The feature of extracting data was already done for Steam but we should support other shops.
Improve table style
Test new table designs.
- Table header could be displayed differently than the rest of the table.
- Avoid using background color for displaying the selected row.
- Use background color to display which column is selected.
- Add hints for key presses?
Implement `o` (open) action - table mode
When a user presses the o
key while being in table mode open the linked Google sheet in a browser.
We need to define a way for the user to change the browser.
Implement `e` (edit) action - column mode
When a user presses the e
key while in column mode a new menu should open to allow to change the current column content.
Verify cursor movement
Check that the user does not move the cursor out of bounds. This is already implemented in the y-axis
(lines) but should also be implemented for the x-axis
(columns).
We need first to do #2 before this issue.
Implement `backspace` (delete) action - row mode
When a user presses the backspace
key while in row mode delete the current selected row. This change should, of course, be synced with Google Sheets.
Implement column mode
Implement a user to switch to column mode by using the arrow keys (left and right) to navigate between rows and columns.
You can enter this mode by previously being in row mode.
You will be able to exit this mode by hitting escape
.
Implement maximum column width
Text inside a column cannot be wider than its column width. In case its length is greater than its column width, display dots in the text letting the user know that the text is being cropped.
The user would be able to press the shortcut o
in column mode to display the full text.
Wait util issue #2 is done before working on this one.
Sync Google Sheet changes
If the Google Sheet linked with the list changes, we should display the changes. Keep in mind that:
- The cursor should be kept in place.
- But do not allow the cursor to be left out of bounds.
Implement `escape` (exit mode) - column mode
When a user presses the scape
key while in column mode the program should swap to row mode.
Improve google authentication
Currently, we require to have a service_account.json
file containing the credentials information about a Google service account for making the application work. This forces the user to create a Google Cloud project, enable the Sheets and Drive APIs, create a service account and download the new credentials into a file that the application needs to reach.
Could we maybe find a better solution that keeps the responsibility on the user?
More info can be found in this StackOverflow question.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.