Skip to content

Commit

Permalink
(core) updates from grist-core
Browse files Browse the repository at this point in the history
  • Loading branch information
paulfitz committed Mar 27, 2023
2 parents 361af23 + d9197cf commit 6485fbd
Show file tree
Hide file tree
Showing 11 changed files with 134 additions and 71 deletions.
44 changes: 36 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,36 @@
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, `grist-core`, is the heart of Grist, and has what you
need to run a powerful spreadsheet hosting server. If you wish to view and edit
spreadsheets stored locally, another option is to use the
[`grist-electron`](https://github.com/gristlabs/grist-electron) desktop app for Linux, Mac, and Windows. And to show Grist spreadsheets on a website
without any special back-end support, your options include
[`grist-static`](https://github.com/gristlabs/grist-static),
a fully in-browser build of Grist.
The `grist-core` repository is the basis for all these options, and
for the hosted spreadsheet services offered by
[`Grist Labs`](https://getgrist.com), an NYC-based company 🇺🇸 that is the main developer of Grist, and by
[`ANCT Données et Territoires`](https://donnees.incubateur.anct.gouv.fr/toolbox/grist),
a French government agency 🇫🇷 whose developers have made many
contributions to the code-base.
The `grist-core`, `grist-electron`, and `grist-static` repositories
are all open-source (Apache License, Version 2.0).

https://user-images.githubusercontent.com/118367/151245587-892e50a6-41f5-4b74-9786-fe3566f6b1fb.mp4

## Features

(By popular request: we have a specific write-up of [Grist vs Airtable](https://www.getgrist.com/blog/grist-v-airtable/) that may be helpful).
Grist is a hybrid database/spreadsheet, meaning that:

- Columns work like they do in databases. They are named, and hold one kind of data.
- Columns can be filled by formula, spreadsheet-style, with automatic updates when referenced cells change.

This difference can confuse people coming directly from Excel or Google Sheets. Give it a chance!
If you are coming from Airtable, you'll find the model familiar though (and there's a
[Grist vs Airtable](https://www.getgrist.com/blog/grist-v-airtable/) article that might interest you).


Here are some specific feature highlights of Grist:

* Python formulas.
Expand All @@ -23,6 +43,8 @@ Here are some specific feature highlights of Grist:
- Any tool that can read SQLite can read numeric and text data from a Grist file.
- Great format for [backups](https://support.getgrist.com/exports/#backing-up-an-entire-document) that you can be confident you can restore in full.
- Great format for moving between different hosts.
- Can be displayed on a static website with [grist-static](https://github.com/gristlabs/grist-static).
- There's a self-contained desktop app available for viewing and editing: [grist-electron](https://github.com/gristlabs/grist-electron).
* Convenient editing and formatting features.
- Choices and [choice lists](https://support.getgrist.com/col-types/#choice-list-columns), for adding colorful tags to records without fuss.
- [References](https://support.getgrist.com/col-refs/#creating-a-new-reference-list-column) and reference lists, for cross-referencing records in other tables.
Expand All @@ -45,7 +67,7 @@ Here are some specific feature highlights of Grist:
- Can link data with custom widgets hosted externally.
* [Many templates](https://templates.getgrist.com/) to get you started, from investment research to organizing treasure hunts.
* Access control options.
- (You'll need SSO logins set up to make use of these options)
- (You'll need SSO logins set up to make use of these options; [grist-omnibus](https://github.com/gristlabs/grist-omnibus) has a prepackaged solution if configuring this feels daunting)
- Share [individual documents](https://support.getgrist.com/sharing/), or workspaces, or [team sites](https://support.getgrist.com/team-sharing/).
- Control access to [individual rows, columns, and tables](https://support.getgrist.com/access-rules/).
- Control access based on cell values and user attributes.
Expand All @@ -56,6 +78,8 @@ Here are some specific feature highlights of Grist:
[gVisor](https://github.com/google/gvisor) sandboxing at the individual
document level.
- On OSX, you can use native sandboxing.
- On any OS, including Windows, you can use a wasm-based sandbox.
* Translated to many languages.

If you are curious about where Grist is going heading,
see [our roadmap](https://github.com/gristlabs/grist-core/projects/1), drop a
Expand All @@ -64,11 +88,16 @@ or browse [our extensive documentation](https://support.getgrist.com).

## Using Grist

There are docker images set up for individual use, or (with some
configuration) for self-hosting. Grist Labs offers a hosted service
at [docs.getgrist.com](https://docs.getgrist.com).
If you just want a quick demo of Grist:

* You can try Grist out at the hosted service run
by Grist Labs at [docs.getgrist.com](https://docs.getgrist.com)
(no registration needed).
* Or you can see an experimental fully in-browser build of Grist
at [gristlabs.github.io/grist-static](https://gristlabs.github.io/grist-static/).
* Or you can download Grist as a desktop app from [github.com/gristlabs/grist-electron](https://github.com/gristlabs/grist-electron).

To get Grist running on your computer with [Docker](https://www.docker.com/get-started), do:
To get `grist-core` running on your computer with [Docker](https://www.docker.com/get-started), do:

```sh
docker pull gristlabs/grist
Expand Down Expand Up @@ -120,6 +149,7 @@ environment variable.
uses the native `sandbox-exec` command for sandboxing.
* On Linux with [gVisor's runsc](https://github.com/google/gvisor)
installed, `export GRIST_SANDBOX_FLAVOR=gvisor` is an option.
* On any OS including Windows, `export GRIST_SANDBOX_FLAVOR=pyodide` is available.

These sandboxing methods have been written for our own use at Grist Labs and
may need tweaking to work in your own environment - pull requests
Expand Down Expand Up @@ -348,5 +378,3 @@ This repository, `grist-core`, is released under the [Apache License, Version
2.0](http://www.apache.org/licenses/LICENSE-2.0), which is an
[OSI](https://opensource.org/)-approved free software license.
See LICENSE.txt and NOTICE.txt for more information.
If you have received a version of Grist with an `ext` directory,
the material within it is separately licensed.
4 changes: 2 additions & 2 deletions app/client/ui/GridViewMenus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ export function MultiColumnMenu(options: IMultiColumnContextMenu) {
menuItemCmd(allCommands.deleteFields, nameDeleteColumns, disableForReadonlyColumn),

menuDivider(),
menuItemCmd(allCommands.insertFieldBefore, t("Insert column to the {{to}}", {to: 'left'}), disableForReadonlyView),
menuItemCmd(allCommands.insertFieldAfter, t("Insert column to the {{to}}", {to: 'right'}), disableForReadonlyView)
menuItemCmd(allCommands.insertFieldBefore, t("Insert column to the left"), disableForReadonlyView),
menuItemCmd(allCommands.insertFieldAfter, t("Insert column to the right"), disableForReadonlyView)
];
}

Expand Down
8 changes: 5 additions & 3 deletions static/locales/de.client.json
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@
"Document will be permanently deleted.": "Das Dokument wird endgültig gelöscht.",
"Documents stay in Trash for 30 days, after which they get deleted permanently.": "Dokumente bleiben 30 Tage lang im Papierkorb, danach werden sie endgültig gelöscht.",
"Edited {{at}}": "Bearbeitet {{at}}",
"Examples & Templates": "Beispiele und Vorlagen",
"Examples & Templates": "Beispiele & Vorlagen",
"Examples and Templates": "Beispiele und Vorlagen",
"Featured": "Hervorgehoben",
"Manage Users": "Benutzer verwalten",
Expand Down Expand Up @@ -409,7 +409,9 @@
"Sorted (#{{count}})_one": "Sortiert (#{{count}})",
"Sorted (#{{count}})_other": "Sortiert (#{{count}})",
"Unfreeze {{count}} columns_one": "Diese Spalte entsperren",
"Unfreeze {{count}} columns_other": "{{count}} Spalten entsperren"
"Unfreeze {{count}} columns_other": "{{count}} Spalten entsperren",
"Insert column to the right": "Spalte rechts einfügen",
"Insert column to the left": "Spalte links einfügen"
},
"GristDoc": {
"Added new linked section to view {{viewName}}": "Neuer verlinkter Abschnitt zur Ansicht hinzugefügt {{viewName}}",
Expand Down Expand Up @@ -446,7 +448,7 @@
"Create Workspace": "Arbeitsbereich erstellen",
"Delete": "Löschen",
"Delete {{workspace}} and all included documents?": "{{workspace}} und alle enthaltenen Dokumente löschen?",
"Examples & Templates": "Beispiele und Vorlagen",
"Examples & Templates": "Beispiele & Vorlagen",
"Import Document": "Dokument importieren",
"Manage Users": "Benutzer verwalten",
"Rename": "Umbenennen",
Expand Down
4 changes: 3 additions & 1 deletion static/locales/en.client.json
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,9 @@
"Sorted (#{{count}})_other": "Sorted (#{{count}})",
"Unfreeze all columns": "Unfreeze all columns",
"Unfreeze {{count}} columns_one": "Unfreeze this column",
"Unfreeze {{count}} columns_other": "Unfreeze {{count}} columns"
"Unfreeze {{count}} columns_other": "Unfreeze {{count}} columns",
"Insert column to the left": "Insert column to the left",
"Insert column to the right": "Insert column to the right"
},
"GristDoc": {
"Added new linked section to view {{viewName}}": "Added new linked section to view {{viewName}}",
Expand Down
8 changes: 5 additions & 3 deletions static/locales/es.client.json
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@
"Document will be permanently deleted.": "El documento será eliminado permanentemente.",
"Documents stay in Trash for 30 days, after which they get deleted permanently.": "Los documentos permanecen en la papelera durante 30 días, tras los cuales se eliminan definitivamente.",
"Edited {{at}}": "Editado {{at}}",
"Examples & Templates": "Ejemplos y Plantillas",
"Examples & Templates": "Ejemplos & Plantillas",
"Examples and Templates": "Ejemplos y Plantillas",
"Featured": "Destacados",
"Manage Users": "Gestionar usuarios",
Expand Down Expand Up @@ -338,7 +338,9 @@
"Sorted (#{{count}})_one": "Ordenado (#{{count}})",
"Sorted (#{{count}})_other": "Ordenado (#{{count}})",
"Unfreeze {{count}} columns_one": "Descongelar esta columna",
"Unfreeze {{count}} columns_other": "Descongelar {{count}} columnas"
"Unfreeze {{count}} columns_other": "Descongelar {{count}} columnas",
"Insert column to the right": "Insertar columna a la derecha",
"Insert column to the left": "Insertar columna a la izquierda"
},
"HomeIntro": {
", or find an expert via our ": ", o encontrar un experto a través de nuestro",
Expand Down Expand Up @@ -370,7 +372,7 @@
"Create Workspace": "Crear espacio de trabajo",
"Delete": "Borrar",
"Delete {{workspace}} and all included documents?": "Eliminar {{workspace}} y todos los documentos incluidos?",
"Examples & Templates": "Ejemplos y Plantillas",
"Examples & Templates": "Ejemplos & Plantillas",
"Import Document": "Importar documento",
"Manage Users": "Gestionar usuarios",
"Rename": "Renombrar",
Expand Down
3 changes: 2 additions & 1 deletion static/locales/fr.client.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,8 @@
"App": {
"Description": "Description",
"Key": "Clé",
"Memory Error": "Erreur mémoire"
"Memory Error": "Erreur mémoire",
"Translators: please translate this only when your language is ready to be offered to users": "[TRANSLATED]"
},
"AppHeader": {
"Home Page": "Page d’accueil",
Expand Down
10 changes: 6 additions & 4 deletions static/locales/it.client.json
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@
"Number Format": "Formato numerico"
},
"HyperLinkEditor": {
"[link label] url": "[testo link] url"
"[link label] url": "[testo link] URL"
},
"welcomeTour": {
"Editing Data": "Modificare i dati",
Expand Down Expand Up @@ -467,7 +467,7 @@
"Create separate series for each value of the selected column.": "Creare serie separate per ciascun valore delle colonne selezionate.",
"Pick a column": "Scegli una colonna",
"Toggle chart aggregation": "Grafici aggregati",
"selected new group data columns": "Selezionato un nuovo gruppo di colonne dati",
"selected new group data columns": "Selezionato un nuovo gruppo-colonne dati",
"Each Y series is followed by a series for the length of error bars.": "Ciascuna serie Y è seguita da una serie per la lunghezza della barra di errore.",
"Each Y series is followed by two series, for top and bottom error bars.": "Ciascuna serie Y è seguita da due serie, per le barre di errore alta e bassa."
},
Expand Down Expand Up @@ -705,7 +705,9 @@
"Reset {{count}} columns_other": "Resetta {{count}} colonne",
"Show column {{- label}}": "Mostra colonna {{- label}}",
"Sorted (#{{count}})_other": "Ordinati (#{{count}})",
"Unfreeze {{count}} columns_other": "Sblocca {{count}} colonne"
"Unfreeze {{count}} columns_other": "Sblocca {{count}} colonne",
"Insert column to the left": "Inserisci colonna a sinistra",
"Insert column to the right": "Inserisci colonna a destra"
},
"GristDoc": {
"Import from file": "Importa da file",
Expand Down Expand Up @@ -877,7 +879,7 @@
},
"modals": {
"Cancel": "Annulla",
"Ok": "Ok",
"Ok": "OK",
"Save": "Salva"
},
"pages": {
Expand Down
Loading

0 comments on commit 6485fbd

Please sign in to comment.