https://github.com/jackadams/meteor-editable-json
Editable JSON for Meteor
https://github.com/jackadams/meteor-editable-json
Last synced: over 1 year ago
JSON representation
Editable JSON for Meteor
- Host: GitHub
- URL: https://github.com/jackadams/meteor-editable-json
- Owner: JackAdams
- License: mit
- Created: 2015-03-06T19:20:22.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2021-07-22T03:53:49.000Z (about 5 years ago)
- Last Synced: 2025-03-26T00:51:17.703Z (over 1 year ago)
- Language: JavaScript
- Homepage: http://meteorpad.com/pad/AphADo6eR4aiJmNzS/Editable%20JSON%20Example
- Size: 68.4 KB
- Stars: 5
- Watchers: 3
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
Editable JSON for Meteor - [Click here for demo app](http://meteorpad.com/pad/AphADo6eR4aiJmNzS/Editable%20JSON%20Example)
===
Quick Start
---
```
meteor add babrahams:editable-json
```
In a template, write:
```
{{> editableJSON}}
```
This will turn the current data context into an editable block of JSON.
After editing _(which won't have any effect on the data context or make any database writes)_, you can retrieve the modified JSON, as a javascript object, with:
```
EditableJSON.retrieve();
```
If you __do__ want immediate updates to a certain document in a certain collection to be persisted in mongo, just write:
```
{{> editableJSON collection="posts" document=post}}
```
where the helper `post` is returning a document from the `posts` collection. Or write `document=this` if the surrounding data context is already a document from the `posts` collection.
More advanced use
---
If you want to explicity pass a javascript object to the widget instead of using the surrounding data context:
```
{{> editableJSON json=myJSObjectFromAHelper}}
```
If you want several widgets operating on the screen at once:
```
{{> editableJSON json=JSObj1 store="custom1"}}
{{> editableJSON json=JSObj2 store="custom2"}}
```
And to retrieve these:
```
var JSObj1 = EditableJSON.retrieve("custom1");
var JSObj2 = EditableJSON.retrieve("custom2");
```
You can add callbacks (that fire on client only).
After updates:
```
EditableJSON.afterUpdate(function (store, action, JSONbefore, documentsUpdated) {
// Overwrite this function in client side js to create a callback after every edit
// `this` in the callback function context is the document or the json AFTER the update
// `store` is the name of the data store as defined above (it will be `undefined` if not defined)
// `store` will be the collection name, if you're using the package to do direct updates to Mongo documents
// `action` is a Mongo update operator -- either `{$set: {field: value}}` or `{$unset: {field: 1}}`
}[, store]);
```
If you include the optional parameter `store` the callback will only fire when the specified store (or collection) is updated, otherwise it will fire on any update to any store/collection.
If a newly added field appears to be unpublished:
```
EditableJSON.onUnpublishedFieldAdded(function (collection, field, value) {
// Overwrite this function in client side js to alert user that they
// may not be seeing what they expect when adding new fields
// due to restrictions on the fields being published
});
```
WARNING
===
This is **not** intended for production use. Its purpose is to help build client debugging tools for Meteor developers.