Go to file
Dmitry S f024aaaf5d (core) Fix some bugs with ChoiceList in summary tables, and evaluation of lookups.
Summary:
Addresses several issues:
- Error 'Cannot modify summary group-by column' when changing Text ->
  ChoiceList in the presence of summary tables.
- Error 'ModifyColumn in unexpected position' when changing ChoiceList -> Text
  in the presence of summary tables.
- Double-evaluation of trigger formulas in some cases.

Fixes include:
- Fixed verification that summary group-by columns match the underlying ones,
  and added comments to explain.
- Avoid updating non-metadata lookups after each doc-action (early lookups
  generated extra actions to populate summary tables, causing the 'ModifyColumn
  in unexpected position' bug)
- When updating formulas, do update lookups first.
- Made a client-side tweak to avoid a JS error in case of some undos.

Solution to reduce lookups is based on https://phab.getgrist.com/D3069?vs=on&id=12445,
and tests for double-evaluation of trigger formulas are taken from there.

Add a new test case to protect against bugs caused by incorrect order of
evaluating #lookup columns.

Enhanced ChoiceList browser test to check a conversion scenario in the presence
of summary tables, previously triggering bugs.

Test Plan: Various tests added or enhanced.

Reviewers: alexmojaki

Reviewed By: alexmojaki

Subscribers: jarek

Differential Revision: https://phab.getgrist.com/D3184
2021-12-15 09:51:18 -05:00
.github/workflows (core) run test:docker target prior to pushing grist-core image 2021-12-14 14:22:02 -05:00
app (core) Fix some bugs with ChoiceList in summary tables, and evaluation of lookups. 2021-12-15 09:51:18 -05:00
bower_components (core) add Dockerfile for grist-core 2020-10-12 15:45:22 -04:00
buildtools (core) Extending default locale list 2021-09-24 15:10:13 +02:00
plugins/core (core) Move file import plugins into core/sandbox/grist 2021-08-09 18:37:14 +02:00
sandbox (core) Fix some bugs with ChoiceList in summary tables, and evaluation of lookups. 2021-12-15 09:51:18 -05:00
static (core) Change datepicker in DateEditor to use moment format, show AltText in DateEditor 2021-12-07 11:33:49 -05:00
stubs/app (core) move more tests to grist-core 2021-12-10 18:33:07 -05:00
test (core) Fix some bugs with ChoiceList in summary tables, and evaluation of lookups. 2021-12-15 09:51:18 -05:00
.dockerignore (core) fix some rusting of the grist-core build 2021-11-30 12:01:41 -05:00
.gitignore (core) Move report-why-tests-hang helper to core 2021-04-26 23:52:16 -04:00
bin Initial config with a few files that build on client and server side. 2020-05-20 00:50:46 -04:00
Dockerfile (core) move more tests to grist-core 2021-12-10 18:33:07 -05:00
LICENSE.txt (core) Add Apache-2.0 license to grist-core. 2020-08-06 10:59:48 -04:00
NOTICE.txt (core) lightly freshen the core readme, mentioning roadmap and forums etc. 2021-08-17 23:51:58 -04:00
ormconfig.js (core) move home server into core 2020-07-21 20:39:10 -04:00
package.json (core) move more tests to grist-core 2021-12-10 18:33:07 -05:00
README.md (core) lightly freshen the core readme, mentioning roadmap and forums etc. 2021-08-17 23:51:58 -04:00
tsconfig.json (core) freshen grist-core build 2021-04-03 09:41:06 -04:00
yarn.lock (core) move more tests to grist-core 2021-12-10 18:33:07 -05:00

Grist

Grist is a modern relational spreadsheet. It combines the flexibility of a spreadsheet with the robustness of a database to organize your data and make you more productive.

⚠️ This repository is in a pre-release state. Its release will be announced when it has all the planned components, and a solid independent build and test set-up. Currently, stand-alone server functionality is present, along with a single-user web client.

This repository, grist-core, is maintained by Grist Labs. Our flagship product, available at getgrist.com, is built from the code you see here, combined with business-specific software designed to scale it to many users, handle billing, etc.

If you are looking to use Grist in the cloud, head on over to getgrist.com. If you are curious about where Grist is going heading, see our roadmap, drop a question in our forum, or browse our extensive documentation.

Opening and editing a Grist document locally

The easiest way to use Grist locally on your computer is with Docker. From a terminal, do:

docker pull gristlabs/grist
docker run -p 8484:8484 -it gristlabs/grist

Then visit http://localhost:8484 in your browser. You'll be able to create and edit documents, and to import documents downloaded from the https://docs.getgrist.com host. You'll also be able to use the Grist API.

To preserve your work across docker runs, provide a directory to save it in:

docker pull gristlabs/grist
docker run -p 8484:8484 -v $PWD/persist:/persist -it gristlabs/grist

Building from source

Here are the steps needed:

yarn install
yarn run build:prod
yarn run install:python
yarn start
# grist client available at http://localhost:8484
# grist api available at http://localhost:8484/api/

Then you can use the Grist client, or the API. You can view and edit Grist documents throught the client and the API. All imported/created documents will appear in the docs subdirectory. You cannot (yet) edit Grist documents in place on your file system.

Grist does not have a login system built in. To activate one, you can configure Grist to talk to an identity provider such as Auth0 using SAML. For running on your own computer, this isn't necessary, but it is important if you are self-hosting Grist for use by a team.

Why Open Source?

By opening its source code and offering an OSI-approved free license, Grist benefits its users:

  • Open Source Community. An active community is the main draw of open-source projects. Anyone can examine source code, and contribute bug fixes or even new features. This is a big deal for a general-purpose spreadsheet-like product, where there is a long tail of features vital to someone somewhere.
  • Increased Trust. Because anyone can examine the source code, “security by obscurity” is not an option. Vulnerabilities in the code can be found by others and reported before they can cause damage.
  • Independence. The published source code—and the product built from it—are available to you regardless of the fortunes of the Grist Labs business. Whatever happens to us, this repo or its forks can live on, so that you can continue to work on your data in Grist.
  • Price Flexibility. You can build Grist from source and use it for yourself all you want without paying us a cent. While you cant go wrong with our fully set-up and supported online service, some organizations may choose the do-it-yourself route and pay for their own server and maintenance, rather than a per-user price. DIY users are often the ones to develop new features, and can contribute them back to benefit all users of Grist.
  • Extensibility. For developers, having the source open makes it easier to build extensions (such as the experimental Custom Widget). You can more easily include Grist in your pipeline. And if a feature is missing, you can just take the source code and build on top of it!

License

This repository, grist-core, is released under the Apache License, Version 2.0, which is an OSI-approved free software license. See LICENSE.txt and NOTICE.txt for more information.