Skip to content

Instantly share code, notes, and snippets.

View redgeoff's full-sized avatar

Geoff Cox redgeoff

View GitHub Profile
@redgeoff
redgeoff / index.js
Last active November 4, 2018 04:23
MSON Talk: Model Component
import Component from 'mson/lib/component';
class MyComponent extends Component {
_className = 'MyComponent';
_create(props) {
super._create(props);
this.set({
schema: {
component: 'Form',
@redgeoff
redgeoff / index.js
Created November 4, 2018 04:04
MSON Talk: Simple App
{
component: 'RecordList', label: 'Contacts',
baseFormFactory: {
component: 'Factory',
product: {
component: 'Form',
fields: [{ name: 'fullName', component: 'PersonFullNameField' }]
}
},
store: { component: 'LocalStorageStore', storeName: 'contacts' }
@redgeoff
redgeoff / move.sql
Created October 27, 2018 18:01
Sequential Ordering: Moving an item
-- Move up
SET order = order + 1
WHERE
order >= newOrder
AND order < oldOrder
-- Move down
SET order = order - 1
WHERE
order > oldOrder
@redgeoff
redgeoff / index.js
Last active November 5, 2018 17:19
Autogenerating Forms Old - Conditional Submit
handleSubmit = () => {
const { form } = this.state;
// TODO: Contact some API with the data
console.log("submitting", form.getValues());
// Simulate response from API saying that email address is already in use and report this error
// to the user
if (form.get("fields.email.value") === "taken@example.com") {
@redgeoff
redgeoff / index.js
Last active November 5, 2018 17:20
Autogenerating Forms Old - Load Values
loadValues(form) {
// Load any initial data, e.g. from an API
form.setValues({
id: 'abc123',
firstName: "Bob",
lastName: "Marley",
email: "bob@example.com"
});
}
@redgeoff
redgeoff / index.js
Last active November 5, 2018 17:20
Autogenerating Forms Old - Mounting
componentDidMount() {
const form = compiler.newComponent(definition);
this.setState({ form });
this.loadValues(form);
form.on("submit", this.handleSubmit);
form.on("reset", this.handleReset);
}
@redgeoff
redgeoff / index.js
Created October 11, 2018 22:46
Autogenerating Forms - Validation
validators: [
{
where: {
"fields.email.value": "nope@example.com"
},
error: {
field: "email",
error: "must not be {{fields.email.value}}"
}
@redgeoff
redgeoff / index.js
Last active November 5, 2018 17:20
Autogenerating Forms Old - Render
ReactDOM.render(
<Component component={form} />,
document.getElementById("root")
);
@redgeoff
redgeoff / index.js
Last active November 5, 2018 17:20
Autogenerating Forms Old - Submit Listener
form.on("submit", () => alert(JSON.stringify(form.getValues())));
@redgeoff
redgeoff / index.js
Last active November 5, 2018 17:21
Autogenerating Forms Old - Definition
const form = compiler.newComponent({
component: "Form",
fields: [
{
name: "heading",
component: "Text",
text: "# Form using [MSON](https://github.com/redgeoff/mson)"
},
{
name: "fullName",