Is a simple and straight-forward JQuery image picker library for retrieving, uploading, and deleting images from an image gallery. The library uses axios for making http request, JQuery to do DOM manipulation, and bootstrap for UI framework. The view can be easily swapped by creating new view file implementing the typescript interface defined at index.d.ts
The file dist/nc-image-picker.js is a browserify bundle ready to be used by HTML immediately. It, however, depends on JQuery and Bootstrap. See documentation/example-usage.html for example. In that example, mockModel is used instead of the real network-based model.
$('#imagePicker').NCImagePicker({
// Callback called when an image is selected
callbackFn: imageSelected,
// URL for adding, retrieving, and deleting images
// postURL: 'http://www.example.com/image',
// getURL: 'http://www.example.com/images',
// deleteURL: 'http://www.example.com/images/delete',
// For demo purposes, we use simulation
useMockModel: true,
// Number of image to be loaded in the beginning and when 'Load More' is pressed
numImagesPerLoad: 2
})
Files under gen-js/ are javascripts generated by typescript compiler that are compatible with browserify. The only caveat is the library expects JQuery to be SHIM-ed, which means the browser that would load the script is expected to have JQuery loaded as a <script>
. This is because
bundling JQuery through browserify enlarges the output substantially, and most of the time JQuery is already used in <script>
anyway.
From the backend side, there are 3 REST API endpoints the need to be implemented. See index.d.ts for the type definitions.
This is a GET an point that returns JSON data in the following format:
NCResponse<ImageObject[]>
When the optional thumbanailURL is provided, the gallery will use it for the thumbanil. This is useful to save on bandwidth and improve load time.
This is a POST endpoint that expects the image in terms of multipart/form-data
with the image identified by key file
For NodeJS-based server, it can be easily implemented using multer library. (see: https://www.npmjs.com/package/multer)
This is a POST endpoint that expects a JSON data with the following format:
{ filename: 'image to be deleted' }
Where filename is the one returned when retrieving all the images.