From a55b6f4b0422f675900ae34f23c45cc7e88ca463 Mon Sep 17 00:00:00 2001 From: SheetJS Date: Sat, 12 Nov 2022 04:16:51 -0500 Subject: [PATCH] steamdeck --- .../01-installation/04-amd.md | 3 - docz/docs/06-solutions/05-output.md | 31 +++--- docz/docs/09-miscellany/05-contributing.md | 96 ++++++++++++++++--- 3 files changed, 100 insertions(+), 30 deletions(-) diff --git a/docz/docs/02-getting-started/01-installation/04-amd.md b/docz/docs/02-getting-started/01-installation/04-amd.md index 22e5100..0af339f 100644 --- a/docz/docs/02-getting-started/01-installation/04-amd.md +++ b/docz/docs/02-getting-started/01-installation/04-amd.md @@ -55,9 +55,6 @@ sap.ui.define([ :::warning -The [SAP Website has a note about including third-party JS libraries.](https://blogs.sap.com/2017/04/30/how-to-include-third-party-libraries-modules-in-sapui5/) -It recommends copying and pasting JavaScript code. - **Copy and pasting code does not work** for SheetJS scripts as they contain Unicode characters that may be mangled. The standalone script should be downloaded and manually uploaded to the project. diff --git a/docz/docs/06-solutions/05-output.md b/docz/docs/06-solutions/05-output.md index 657e191..7bb42cb 100644 --- a/docz/docs/06-solutions/05-output.md +++ b/docz/docs/06-solutions/05-output.md @@ -152,7 +152,7 @@ given that every related vendor stopped providing support for their software. `XLSX.writeFile` techniques work for most modern browsers as well as older IE. For much older browsers, there are workarounds implemented by wrapper libraries. -[`Downloadify`](https://github.com/dcneiner/downloadify) uses a Flash SWF button +[`Downloadify`](/docs/demos/legacy#download-strategies) uses a Flash SWF button to generate local files, suitable for environments where ActiveX is unavailable: ```js @@ -544,13 +544,15 @@ Node 17.5 and 18.0 have native support for fetch: ```js const XLSX = require("xlsx"); -const buf = XLSX.write(workbook, { bookType: "xlsx", type: "buffer" }); -var blob = new Blob([buf], {type:"application/octet-stream"}); -var formdata = new FormData(); -formdata.append("file", blob, "test.xlsx"); +async function upload_wb(workbook, url, name="test.xlsx", field="file") { + const buf = XLSX.write(workbook, { bookType: "xlsx", type: "buffer" }); + const blob = new Blob([buf], {type:"application/octet-stream"}); + const body = new FormData(); + body.append(field, blob, name); -/* perform POST request */ -fetch("https://thisis.a.test/upload", { method: 'POST', body: formdata }); + /* perform POST request */ + return fetch(url, { method: 'POST', body }); +} ``` @@ -597,17 +599,15 @@ With the `header: 1` option, the function exports an array of arrays of values. -[`x-spreadsheet`](https://github.com/myliang/x-spreadsheet) is an interactive -data grid for previewing and modifying structured data in the web browser. The -[demo](/docs/demos/grid#x-spreadsheet) includes a sample script and live demo. +[`x-spreadsheet`](/docs/demos/grid#x-spreadsheet) is an interactive data grid +for previewing and modifying structured data in the web browser. -[`react-data-grid`](https://adazzle.github.io/react-data-grid) is a data grid -built for React. It uses two properties: `rows` of data objects and `columns` -which describe the columns. For the purposes of massaging the data to fit the -`react-data-grid` API it is easiest to start from an array of arrays. +[`react-data-grid`](/docs/demos/grid#react-data-grid) is a data grid built for +React. It uses two properties: `rows` of data objects and `columns` which +describe the columns. The grid API can play nice with an array of arrays. This demo starts by fetching a remote file and using `XLSX.read` to extract: @@ -642,8 +642,7 @@ export default function App() { -[`vue3-table-lite`](https://vue3-lite-table.vercel.app/) is a simple VueJS 3 -data table. It is featured in the [dedicated demo](/docs/demos/grid#vue3-table-lite). +[`vue3-table-lite`](/docs/demos/grid#vue3-table-lite) is a VueJS 3 data table. diff --git a/docz/docs/09-miscellany/05-contributing.md b/docz/docs/09-miscellany/05-contributing.md index 3505f65..aa59cdb 100644 --- a/docz/docs/09-miscellany/05-contributing.md +++ b/docz/docs/09-miscellany/05-contributing.md @@ -81,19 +81,92 @@ Initial setup: 0) Ensure mercurial, subversion, and NodeJS are installed. The WSL instructions will have installed these dependencies, so WSL users can skip to step 1. -On Linux: +:::note + +[The official NodeJS site](https://nodejs.org/en/download/) provides installers +for "LTS" and "Current" releases. The "LTS" version should be installed. + +::: + +Mercurial and Subversion: + + + + +On Linux, install using the system package manager. Debian and Ubuntu use `apt`: ```bash sudo apt-get install mercurial subversion ``` -On MacOS, install using Homebrew: +Other Linux distributions may use other package managers. + +
Steam Deck (click to show) + +Desktop Mode on the Steam Deck uses `pacman`. It also requires a few steps. + +0) Switch to Desktop mode and open `Konsole` + +1) Set a password for the user by running `passwd` and following instructions. + +2) Disable read-only mode: + +```bash +sudo steamos-readonly disable +``` + +(When prompted, enter the password assigned in step 1) + +3) Configure keyring: + +```bash +echo "keyserver hkps://keyserver.ubuntu.com" >> /etc/pacman.d/gnupg/gpg.conf +sudo pacman-key --init +sudo pacman-key --populate +sudo pacman-key --refresh-keys +``` + +4) Install dependencies: + +```bash +yay -S base-devel mercurial subversion +``` + +
+ +
+ + +On MacOS, install using Homebrew. + +0) Open a terminal window and install Homebrew: + +```bash +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +``` + +1) Close the window, open a new terminal window, and disable analytics: + +```bash +brew analytics off +``` + +To confirm analytics are disabled, run + +```bash +brew analytics state +``` + +It should print `Analytics are disabled.` + +2) Install Mercurial and Subversion: ```bash brew install mercurial subversion ``` -NodeJS installers can be found at the project homepage. + +
1) Install NodeJS modules for building the scripts @@ -105,6 +178,15 @@ npm install sudo npm i -g mocha@2.5.3 voc @sheetjs/uglify-js ``` +:::note Older Versions of Dependencies + +Some of the dependencies are wildly out of date. While SheetJS aims to run in +older versions of NodeJS and browsers, some libraries have chosen to break +backwards compatibility. The specific versions are used because they are known +to work and known to produce consistent results. + +::: + 2) Initialize the test files: ```bash @@ -149,14 +231,6 @@ to produce the scripts. To produce the dist files, run `make dist`. The dist files are updated in each version release and *should not be committed between versions*. -**A note on Older Versions** - -Some of the dependencies are wildly out of date. While SheetJS aims to run in -older versions of NodeJS and browsers, some libraries have chosen to break -backwards compatibility. The specific versions are used because they are known -to work and known to produce consistent results. - - ## Tests The `test_misc` target runs the targeted feature tests. It should take 5-10