Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Generate HTML forms and bind hierarchical and tabular data with the help of JSON Schema.
Form-Chen supports master-detail relationships and undo/redo transaction management.
It uses gridchen to produce Excel-like web-components for tabular (aka table/grid/matrix) data.
Edits on the original object are emitted as standard JSON Patch, which can be directly passed to the back end.
Optionally, object properties can be specified by JSON Pointers to be bound to given HTML-elements.
Formchen is written in plain EcmaScript 2017 modules and can be directly imported as such with any modern browser.
Either
pip install formchen
npm install formchen
Note: cdn.jsdelivr.net currently does not support bare module specifiers.
This is a basic form which runs standalone or can be loaded from https://decatur.github.io/formchen/usage.html.
<!DOCTYPE html>
<div class="form-chen">
<div id="/person"></div>
<span style="font-size: x-large" id="/person/vip"></span>
</div>
<script type="module">
import {createFormChen} from "https://decatur.github.io/formchen/formchen/webcomponent.js"
const schema = {
title: 'Person',
pathPrefix: '/person',
type: 'object',
properties: {
name: {
title: 'Full Name of Person', type: 'string'
},
dateOfBirth: {
title: 'Date of Birth', type: 'string', format: 'full-date'
},
vip: {
type: 'boolean'
}
}
};
const data = {
name: 'Frida Krum',
dateOfBirth: '2019-01-01T00:00Z',
vip: true
};
createFormChen(schema, data);
</script>
See https://decatur.github.io/formchen
Deploy both formchen and
gridchen directories from the respective git repositories.
formchen depends on gridchen to be at the bare URL gridchen
, i.e. import "gridchen/webcomponent.js"
So be sure you bundle or inplace your imports.
⚠ Currently formchen is not registered with npmjs!
Using Python you can install the formchen package. A Python routing example can be found in the provided dev server.
The old way of module resolution is via
bare import specifiers
such as import "gridchen/webcomponent.js"
. Note the missing slash at the beginning.
This is usually handled by bundlers, which replace the bare import specifier with a relative path to the routed module location.
As we do not want to rely on any bundler, and because currently there is no Web browser standard for module resolution of bare import
specifiers, we opted for the relative URL approach.
At any level, the schema can be marked readOnly:true|false
, the default value being false
.
The readOnly
property is inherited by sub-schemas.
The form is generated as a flat list of paired elements. The input elements are generated with the document ID corresponding to the JSON Pointer to its value.
Pairs | Semantic |
---|---|
<label/> <input> | For all scalar fields |
<label/> <select> | For all scalar fields having an enum type |
<label/> <checkbox> | For all scalar boolean fields |
<label> <grid-chen/> </label> | For all grid fields |
<label class=error/> | For errors |
In case a field has a unit, then the label will have a nested <span class=unit/> element.
No direct element style is applied.
Based on this flat list of paired elements, the layout can be tweaked using CSS Column Layout, CSS Grid Layout or CSS Flex Layout, or whatever. See the demos for examples.
Please see the source code of the demos or formchen TypeScript Definitions for the public JavaScript Api.
Form-Chen is written in plain EcmaScript 2017 modules with JSDocs type hinting. There is no overhead related to transpiling or packing. As tool I recommend either vscode or one of JetBrains IDEs (WebStorm, PyCharm).
There is a FastAPI-based dev server in the dev_server directory.
After starting the dev server, navigate to http://localhost:8000/gridchen/testing/suiterunner.html?testpath=/formchen/tests/
Formchen can be deployed to a static web server. We use Github Pages and serve from /docs of the master branch. The /docs folder is generated from project root by running
python build.py
This will substitute the bare import specifier gridchen/
with https://decatur.github.io/gridchen/gridchen/
.
Steps:
python build.py
./docs/index.html
(PyCharm: Open in browser) and navigating the site.git push
vi setup.py
git commit . -m'bumped version'
git tag x.y.z
python setup.py sdist bdist_wheel
python -m twine upload dist/*
Bump version in fromchen/package.json
and git tag
.
cd fromchen & npm publish
FAQs
Generate HTML forms and bind hierarchical and tabular data.
We found that formchen demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.