Giter Club home page Giter Club logo

soul-link's Introduction

soul-link's People

Contributors

dloez avatar

Watchers

 avatar

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

Detect terminal resizing

If the terminal size changes, update column widths, amount of rows based on terminal lines, etc.

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.

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 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.

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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.