maxjohansen:autoform-images

v1.0.1Published 8 years ago

This package has not had recent updates. Please investigate it's current state before committing to using it in your project.

Autoform Images

An atmosphere package for adding image cropping and upload support to Autoform Build Status

Installation

Add package

meteor add maxjohansen:autoform-images

Install peer dependencies

meteor npm install --save croppie

Configuration

Settings configuration

We assume you have various S3 variables configured in your Meteor.settings file

1{
2    "AWSAccessKeyId": "********************",
3    "AWSSecretAccessKey": "****************************************",
4    "AWSRegion": "*********",
5    "AWSBucket": "*************"
6}

Add image[s] key to schema

You can just add a key of type: String if you want. It's ok to declare this as an array of strings if you want multiple images.

You can specify the custom autoform component inline in the schema, or you can specify it after-the-fact in your UI code via Collection.simpleSchema().addAutoFormOptions(options).

Inline example

1new SimpleSchema({
2    image:{
3        type: String,
4        autoform:{
5            afFieldInput:{
6                type: 'afImageElem',
7            }
8        },
9    },
10});

Outside of schema example

1dogsSchema = SimpleSchema({
2    image:{
3        type: String,
4    },
5});
6// ...
7// possibly in some other file
8Dogs.simpleSchema.addAutoFormOptions({
9    image:{
10        afFieldInput:{
11            type: 'afImageElem',
12        }
13    } 
14});

Now, just render an autoform somewhere that uses this schema.

Development

To test the latest version, clone the package from github.

git clone git@github.com:macsj200/autoform-images.git

Then, put the autoform-images folder inside your app's top-level packages directory. You can also symlink the folder in (cd packages; ln -s /path/to/autoform-images .). Make sure you've checked out the relevant branch.

Todos

Testing

Clean up UI

Create API

Handle errors

Verify efficiency in file handling (share uploaders, readers, etc.)

Bugs

iOS rotation metadata handling

We should probably just read the metadata, re-orient the image, then strip the metadata back out.

Cleaning up unused images

Currently, no images are deleted from the bucket, ever. We should figure out a reasonable schedule to do so. Also, we should look into adding user permissions so people can't trample other users' files.

  • Delete when component destroyed (array minus button)

    This strategy doesn't make much sense in the singleton case. Also, this may have issues with the way components are torn down (we don't want all the images removed when we refresh/navigate away)

  • Delete after a certain period of time

    This could also be problematic. I don't really like this option.

  • Add a remove button (distinct from array minus button)

Here, the user would manage their files. Ideally, this would mean that somehow even unsubmitted images persist somehow, possibly across forms. IDK if the user will actually be diligent about this though.