Giter VIP home page Giter VIP logo

quadratichq / quadratic Goto Github PK

View Code? Open in Web Editor NEW
2.7K 2.7K 128.0 1.16 GB

Quadratic | Data Science Spreadsheet with Python & SQL

Home Page: https://QuadraticHQ.com

License: Other

JavaScript 2.32% HTML 0.43% CSS 0.26% TypeScript 50.55% Python 1.45% Rust 44.49% SCSS 0.05% Procfile 0.01% Shell 0.33% Dockerfile 0.05% PLpgSQL 0.07%
data data-analysis data-engineering data-science etl python quadratic spreadsheet sql wasm webgl

quadratic's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quadratic's Issues

Cleanup Before Release

  • Bug where cursor moves but the editor does not.
  • Make sure self explanatory enough for someone coming in for the first time
  • - Opens a example file by default
  • Zoom bar
  • Static items in top bar
  • Make bottom bar show cursor location and last edited
  • CodeEditor
  • - show commands, buttons
  • - show selected cell
  • - ? add cursor showing which cell is currently being edited? (stashed)
  • make sure npm run dev works properly

Cell Interaction: Notes

Using this issue to keep track of common interaction issues:

  • When moving back to a python cell, it should save your scroll position.
  • Command + Enter should not close the editor
  • Better indicator of cells that contain code

Python client for uploading data

Hi there! First of all love your product and the direction it's going. I come from a background of using numpy, pandas, vaex etc on a daily basis and so have learned to be pretty comfortable querying and manipulating data in python. Doing the same operations through google sheets, by comparison, makes me surprisingly frustrated.

I run a lot of ML experiments that output numbers it would be easiest for me to see in a spreadsheet format. Recently I looked into using the google sheets API or python clients (pygsheets and gsheets) and while the onboarding experience was quite terrible (it took so long to figure out authentication) the eventual experience has been quite nice for me. To keep it simple, I generate a pandas dataframe and push it up to a new worksheet I create for that experiment.

That get's me now 80% of the way there because I then just have to apply some styling and copy some additional cells from a template I have and I get a mostly programmatically auto-generated output from my freeform experiments, which I love!

So, is there any ideas of in the future making a python client that makes it very easy to use quadratic as the frontend for ML experiment results or any other data science workflow? A lot of folks use jupyter notebook variants or streamlit, but they don't quite work as well as I think this could.

Demo App Collaborative Files

Dexie Cloud

You can use your when creating databases using npx dexie-cloud create. Let me know if you need more email addresses added!

Some new docs were added [Dexie Cloud docs](https://dexie.org/cloud/docs/) in recent days. Unless you already have the grip of it, one way to get started with the service is by playing around with the [todo-list sample app](https://github.com/dexie/Dexie.js/tree/master/samples/dexie-cloud-todo-app).

Alert on Startup to Use Chrome

Quadratic is only officially supported on Chrome and stable on Firefox. Safari is not well supported.

We should create a welcome message for users of Safari encouraging them to use Chrome.

Cell Select & Multi Select Bug (rewrite)

https://github.com/davidkircos/quadratic/blob/06b4b6e012d7c49c7513dc6bca2d80a5bc3d65e1/src/grid/interaction/interaction.ts#L106-L111

Does not work for selecting a single cell, or selecting cells anywhere in the negative cell space.

  • Write multi select cursor as ReactPixi element
  • Write select logic on QuadraticGrid
  • Rewerite input box
  • Double click to edit cell
  • Move input state to atom
  • Cleanup - Delete old unused logic
  • Cleanup - File organization
  • Cleanup - Move Atoms to files

ReferenceError: WebAssembly is not defined

In browsers where WASM is not supported show a modal asking users to use Chrome.

Sentry Issue: QUADRATIC-4

ReferenceError: WebAssembly is not defined
  at abort (/pyodide/v0.19.0/full/pyodide.asm.js:14:202379)
  at None (/pyodide/v0.19.0/full/pyodide.asm.js:14:191667)
  at loadPyodide (../src/js/pyodide.js:282:9)

Progress Indicator for Cells While Running Code

Show progress for cells that are running.
If a cell returned an array, show that space as allocated while running. Maybe keep old values as shimmering?
Move Python code execution to a WebWorker (if feasible).

feat: Data Types

  • Have grid cells format text for common data types: currency, date, number, etc
  • In Python take cells input and interpret them natively in their Quadratic Cell type. Ex if a user inputs a date, when the cell data arrives in python, it should be a DateTime type.

Improve Quadratic Cell API in Python

getCell()
getCells()
c()

  • Come up with easier to use functions to get quadratic data
  • Get as pandas data frame
  • Remove necessity to add await (very confusing for typical python users)
  • Return cells in a native type that is easier to work with and more beginner friendly
    Includes making cell type work for default operations like adding.

QuadraticDependencyGraph Usage Bugs

The dependency graph usage has many bugs.

  • Clean up cell loop to not run cells multiple times
  • Updates to Cell deps does not remove old deps
  • Deleted Cells are not removed from Dep Tree
  • Everywhere UpdateCellsDB or DeleteCellsDB are called we need to call actions instead that manage the DGraph as well as updating the DB

Optional -- Probably Move to A Future Task

  • Tests to verify everything is working properly.
  • Loops can be created

Copy Paste Error

Bug

What is the issue?

Copy pasting a group of cells results in error page

How to reproduce the issue?

Copy paste any cells that contains the table data and paste it in an empty location.

What are the environment details?

OS: macOS Monetery 12.0.1
System: Macbook M1 Pro 2021
node version: 10.15.1
npm version: 7.24.2
browser: Firefox 99.0.1

Screenshots

Screen Shot 2022-04-24 at 11 41 55

Python Errors: Stack Trace is Wrong

Line errors are not helpful when they come from other packages. Says a line number that isn’t in your code, without the full stack trace.

Example formula:

import pandas as pd

a = pd.DataFrame()
a[0][0]

Screen Shot 2022-04-20 at 3 08 44 PM

Resizable Columns

Quadratic columns are currently a fixed width.

To Do list

  • UI for column header
  • UI for row header
  • UI for resizing columns
  • Backend for storing column widths
  • Make sure all offsets in the code work properly with columns of varying width (clicking on a cell, drawing cells, etc.)

Demos

  • Create a way to load and save files (to json, simple)
  • Create a few examples to be able to demo

Database Support

Knex.js for connecting databases

Should work for npm start & electron. No support for "Cloud".

  • get node+express running alongside app (web + electron)
  • store database credentials in localstorage
  • pipe requests through Node, Express API running locally
  • Database credentatls are added via file bar
  • Databaes are queried via cells.
  • Create SQL Editor
  • Select target database, or grid

Integrating Python requests

As discussed before with @davidkircos , it would be cool if requests could be integrated in Quadratic.

This in turn could enable all kinds of cool use cases, like loading CSV from an URL.

import pandas
from io import StringIO
import requests

pandas.read_csv(StringIO(requests.get('https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv').text))

My current progress of shimming requests is tracked here bartbroere/requests#1 and here: https://github.com/NetherlandsForensicInstitute/pyodide/blob/0.19.0/packages/requests/meta.yaml

It is integrated in custom Pyodide builds by patching the original requests package. I would be happy to help and get this to work.

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.