Code Monkey home page Code Monkey logo

grist-core's People

Contributors

alexmojaki avatar arnaudriegert avatar berhalak avatar camillelegeron avatar chiuta avatar comradekingu avatar cpind avatar dsagal avatar fflorent avatar fprijate avatar georgegevoian avatar github-actions[bot] avatar jakubserafin avatar jasongwq avatar jmixiii avatar jordigh avatar jvorob avatar k-fujimaru avatar louisdelbosc avatar matrej avatar metala avatar paulfitz avatar przemekskw avatar ricpol avatar ronnix avatar santossi avatar spoffy avatar vladimir-va avatar vviers avatar yohanboniface avatar

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

grist-core's Issues

API Subdomain breaks docker images

Currently, the docker instructions do not match the latest version of the code (unless you have a host set up)

gristUrls has a default subdomain of 'api' which, when run with docker, will prepend api with the IP of the host.

i.e.
image

Could we use the api route by default instead and make this configurable through an environment variable, perhaps?

Incremental imports

Grist has support for importing data, but could do a better job when re-importing updated data from the same source.

Improved search

Search within a document is now more predictable, and easier to limit to a single page.

Improved custom widgets

Custom widgets have proved very useful already for extending Grist (adding invoices, labels, maps, etc). It would be good to improve ease of discoverability and use of widgets, and to make the grist-core and grist-widget repos work well together.

public viewer needs to sign in?

I'm trying public sharing.
On the docker version, the default user [email protected] is attributed to anonymous viewer. Since this user is the author, everyone has write access, can be fixed easily but unsecure by default ๐Ÿ˜„
On your hosted version, making it public for viewers:
image

Then opening in another browser throws:

image

well, if it's public ...

Expanding/collapsing widgets

In addition to laying out widgets side-by-side as is currently possible, it is sometimes useful to collapse some widgets, or to expand one to the full screen. Mobile views address this in a way. Something similar should be available on the desktop.

Unauthorized Origin response for WebExtensions

Creating a POST API request from the background script of a Chrome Extension (have not tested in FF yet) results in an Unauthorized Origin response. I assume this is because of the function referenced below.

Webextensions cannot make POST requests from their content_scripts anymore and the background script is the only way moving forward. That does mean that origin is set to the ID of the extension (i.e. chrome://fcdlpgnheghipfpjodagagpdfejijfoi) and I believe this fails the trust check. Could the handlers for extensions also be added to the trusted domains?

function trustOriginHandler(req: express.Request, res: express.Response, next: express.NextFunction) {

Reference lists

Support cells containing references to many rows of another table.

Freeze columns

One or more columns to the left of a table can now be "frozen" so they remain visible as the table is scrolled to the right.

Python3 support

Revamp sandboxing approach to support python 3.9 (until now our sandboxing method has limited us to python 2.7).

Access from outside localhost?

Since I'm on proxmox environment I couldn't get the docker variant working, but I got the manual build working fine.

However, how can I access it from outside of localhost? Is there a command to listen on all devices when starting the server?

Support outgoing webhooks

Grist should allow the user (and integrators) to trigger other services on common events such as record updates.

Without webhooks, users (and integrators) need to resort to polling, which is less than ideal for everyone concerned. Our Zapier integration currently uses polling, but if we had webhooks it could be upgraded to 'instant' triggers, meaning faster workflows for users and less server load for us. Update: this happened.

Update: there is some unofficial support for webhooks, for those willing to use the Grist API to configure them.

For hosted Grist, Webhook URLs are allowed for the following domains:

  • zapier.com
  • pabbly.com
  • webhook.site
  • meta-api.io
  • pipedream.com, pipedream.net
  • deta.sh
  • netlify.com
  • wa-toolbox.web.app
  • ntfy.sh

If you need a different domain, please request it. There used to be a limit to the domains hosted Grist would deliver to, but now all domains are permitted.

If self-hosting, be sure to add the domain you care about to a comma-separated ALLOWED_WEBHOOK_DOMAINS environment variable (e.g. zapier.com,pabbly.com,webhook.site). You can also set ALLOWED_WEBHOOK_DOMAINS to * to allow any domain, but we don't recommend this unless either you (1) trust all Grist document authors, or (2) have configured a proxy with GRIST_HTTPS_PROXY to deliver payloads without exposing your internal endpoints.

Update: there is now a UI for configuring and monitoring webhooks: https://support.getgrist.com/newsletters/2023-05/#webhooks

Raw data tables

Grist is very customizable for slicing and dicing different views of data, but sometimes it would be useful to have a simple, universal way to see non-customized views of all the data a document contains.

Read-only "editor"

Allows someone with read-only access to open details of a cell (previously only truncated content was accessible).

Timestamp columns

Setting up columns with "created at" and "updated at" timestamps is now fully supported.

Support data science libraries

It would be useful to support using libraries such as pandas, scipy, spacy, numpy etc. This requires both iteration on sandboxing (already in the works) and considering how formulas should operate with tabular inputs and outputs.

Filter bar

A bar can be added above widgets to show and set active filters more conveniently.

[Docs] POST new row creates multiple rows

I'm sure I didn't fully get the doc at https://support.getgrist.com/api/#tag/Data-Tables
I'm working on your fantastic CRM tutorial with the API.
A POST at http://0.0.0.0:8484/api/docs/hdNL4QimrQYxSeAmoFAaH7/tables/Contacts/data with BODY as {"name":"test"}
is successfully returning ... 4 rows:
[
3,
4,
5,
6
]
and therefore ...
image
๐Ÿ˜„

AFAIU, I need to POST a single character, then record the response for the rowID, then PATCH this row?
There's some room for improvement :)

BTW, the response to the PATCH was null instead of the rowID.

Native form support

Grist has a card view that is similar to forms. A polished form experience would be useful to add, in addition to the existing option of integrations via e.g. Zapier.

"failed to fetch" after docker run

Hello,
I've gt error after container install:
image

Here are the logs after adding DEBUG=1:

yarn run v1.22.5
,$ NODE_PATH=_build:_build/stubs node _build/stubs/app/server/server.js
,Welcome to Grist.
,2021-07-01 10:26:48.338 - info: == Grist version is 0.1.1 (commit unknown)
,2021-07-01 10:26:48.344 - info: Loading empty config because /config.json missing
,2021-07-01 10:26:48.444 - warn: did not find an appropriately named example workspace in deployment
,2021-07-01 10:26:48.485 - info: No plugins directory: ENOENT: no such file or directory, scandir '/.grist/plugins'
,2021-07-01 10:26:48.486 - info: No plugins directory: ENOENT: no such file or directory, scandir '/plugins'
,2021-07-01 10:26:48.486 - info: Found 0 valid plugins on the system
,2021-07-01 10:26:48.492 - info: Server timeouts: keepAliveTimeout 305000 headersTimeout 306000
,2021-07-01 10:26:48.496 - info: server(home,docs,static) available at 0.0.0.0:8484
,2021-07-01 10:26:48.506 - info: == appRoot: /
,2021-07-01 10:26:48.506 - info: == docsRoot: /persist/docs
,2021-07-01 10:26:48.507 - info: == defaultBaseDomain: undefined
,2021-07-01 10:26:48.507 - info: == pluginUrl: undefined
,2021-07-01 10:26:48.507 - info: == instanceRoot: /
,2021-07-01 10:26:48.507 - info: == tag: unknown
,2021-07-01 10:26:48.507 - info: == database: sqlite:///persist/home.sqlite3
,2021-07-01 10:26:48.507 - info: == userRoot: /.grist
,2021-07-01 10:26:48.507 - info: == loginMiddlewareComment: no-logins
,2021-07-01 10:26:48.507 - info: == s3: disabled
,2021-07-01 10:26:48.507 - info: == docWorkerId: testDocWorkerId_8484
,2021-07-01 10:26:48.512 - info: activity docCount=0, orgCount=0, orgInGoodStandingCount=0, userCount=5, userWithLoginCount=5
,2021-07-01 10:26:49.228 - debug: Auth[GET]: id 5 email [email protected] host 0.0.0.0:8484 path / org 
,2021-07-01 10:26:49.245 - debug: Redirecting userId 5 to: http://0.0.0.0:8484/o/docs/
,2021-07-01 10:26:49.261 0.0.0.0:8484 GET / 302 32.205 ms - 98
,2021-07-01 10:26:49.264 - debug: Auth[GET]: id 5 email [email protected] host 0.0.0.0:8484 path / org docs
,2021-07-01 10:26:49.269 0.0.0.0:8484 GET /o/docs/ 200 13.191 ms - 2607
,2021-07-01 10:26:49.299 0.0.0.0:8484 GET /v/unknown/jqueryui/themes/smoothness/jquery-ui.css 304 3.258 ms - -
,2021-07-01 10:26:49.301 0.0.0.0:8484 GET /v/unknown/hljs.default.css 304 0.822 ms - -
,2021-07-01 10:26:49.301 0.0.0.0:8484 GET /v/unknown/bundle.css 304 0.775 ms - -
,2021-07-01 10:26:49.304 0.0.0.0:8484 GET /v/unknown/bootstrap/dist/css/bootstrap.min.css 304 4.596 ms - -
,2021-07-01 10:26:49.304 0.0.0.0:8484 GET /v/unknown/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css 304 4.442 ms - -
,2021-07-01 10:26:49.305 0.0.0.0:8484 GET /v/unknown/icons/icons.css 304 3.389 ms - -
,2021-07-01 10:26:49.306 0.0.0.0:8484 GET /v/unknown/jquery/dist/jquery.min.js 304 0.670 ms - -
,2021-07-01 10:26:49.306 0.0.0.0:8484 GET /v/unknown/jqueryui/jquery-ui.min.js 304 0.669 ms - -
,2021-07-01 10:26:49.307 0.0.0.0:8484 GET /v/unknown/browser-check.js 404 10.145 ms - 520
,2021-07-01 10:26:49.307 0.0.0.0:8484 GET /v/unknown/bootstrap/dist/js/bootstrap.min.js 304 0.384 ms - -
,2021-07-01 10:26:49.310 0.0.0.0:8484 GET /v/unknown/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js 304 0.518 ms - -
,2021-07-01 10:26:49.311 0.0.0.0:8484 GET /v/unknown/main.bundle.js 304 0.240 ms - -
,2021-07-01 10:26:49.371 0.0.0.0:8484 GET /v/unknown/img/gplaypattern.png 304 0.350 ms - -
,2021-07-01 10:26:49.580 0.0.0.0:8484 GET /v/unknown/browser-check.js 404 1.891 ms - 520

I'm running Ubuntu 20.04 and have other containers running fine.

Initial certifications

There are some security-related certificates that some clients could benefit from, as an alternative to self-hosting Grist and dealing with compliance themselves. We should also confirm GDPR compliance.

Support larger databases

Some UI features are only practical for medium-sized databases. We could do a better job of supporting essential operations on larger documents.

Record-based API

Grist's API for accessing table data is currently columnar, which users find confusing. We are working on providing a parallel record-based API, that returns table data as a collection of records. This is more in line with the spreadsheet API ecology.

Rich text column type

We have an undocumented custom markup widget, but it would be more convenient to have a native, easily discoverable column type for rich text.

Within-document links

Links from one part of a document to are now easier to produce (with SELF_HYPERLINK) and work more cleanly.

Authorship columns

Support columns containing information about who created or updated the record. This is an alternative to the existing document history log.

Read-only "editor"

Allows someone with read-only access to open details of a cell (previously only truncated content was accessible).

Better integrations

Every app needs to integrate with every other app these days. Grist supports Zapier, has an API, and uses an open data format (Sqlite), but could do more to support the universe of possible integrations.

NO_METADATA_ERROR, recovery failed

Hello,
I'm trying to import an sqlite database into Grist through open.
I'm getting the error:

Error opening document
You can try reloading the document, or using recovery mode. Recovery mode opens the document to be fully accessible to owners, and inaccessible to others. [NO_METADATA_ERROR: <ID> has no metadata]

Reload throws the same error and recovery mode throws in the console:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)
BaseAPI.ts:113 Fetched http://0.0.0.0:8484/o/docs/api/docs/<ID>/recover
errors.ts:50 ERROR: Error: Request to http://0.0.0.0:8484/o/docs/api/docs/<ID>/recover failed with status 500: Internal Server Error (NO_METADATA_ERROR: <ID> has no metadata)
    at u (BaseAPI.ts:142)
    at d.<anonymous> (BaseAPI.ts:116)
    at Generator.next (<anonymous>)
    at s (main.bundle.js:12)
h @ knockout-latest.js:1
BaseAPI.ts:142 Uncaught (in promise) Error: Request to http://0.0.0.0:8484/o/docs/api/docs/<ID>/recover failed with status 500: Internal Server Error (NO_METADATA_ERROR: <ID> has no metadata)
    at u (BaseAPI.ts:142)
    at d.<anonymous> (BaseAPI.ts:116)
    at Generator.next (<anonymous>)
    at s (main.bundle.js:12)

With a 500 error, I'm not sure if recovery mode is failing at building metadata or expects something in metadata.

How to import a sqlite file into Grist?

Unicode improvements

As preparation for upcoming python upgrades, unicode handling has been improved significantly.

Support merging document forks

There is easy and convenient UI to make experimental copies of a document, and to optionally "land" changes in that copy back on the original. But there isn't yet a convenient way to merge changes if the original diverges.

Chart Improvements

Improve Chart UI to present more configuration options; add new chart types such as gauge, donut, radar (aka spider or web), and stacked bar chart.

Support currency formatting

Currently Grist is very US-centric in its approach to formatting currency columns. This needs to be generalized.

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.