AjaxCall
A simple ajax call formatter between server and client (built in es6 and compiled in es5 with babel)
It requires Express installed in your project!
This is the server module, a client module (for Angularjs) can be found here: Ajax-interceptor
Installing it
npm install ajax-call
Usage
app;
The module ajax-call has four models of formatters:
AjaxCallModel
It is the main model, from which all other models inherit.
Returns the following structure:
code: 0 // a code of request success: true // if the request was successful result: 0 // a result of request message: 'message' // an optional message value: {} // the payload of the response from the server
Methods
send(res)
res
is the express res
object.
This method sends the payload in response, through the method json
object res
to express.
sendValue(res, value [, statusCode])
res
is the expressres
object.value
is thevalue
property sent in payloadstatusCode
optional is the status code of the response. If not set, set the status code to200
,204
ifvalue
is empty object
Send the payload in response, setting the 'value' with the argument passed to the method.
sendErrorMessage(res, result, message)
res
is the expressres
object.result
is the number of the error type This will be set as the response statusCodemessage
is the message of the error
Send an error message to the client, setting the statusCode response.
sendUncaughtExceptionMessage(res, err)
res
is the expressres
object.err
is the error object
Send an error message to the client, not caught by the server.
The statusCode response will be automatically set as 500
.
The message will automatically be set as UncaughtException
.
It also launched a log with status fatal
(see section log)
sendUnhandledExceptionMessage(res, err)
res
is the expressres
object.err
is the error object
Send an error message to the client, not handled by the server.
The statusCode response will be automatically set as 501
.
The message will automatically be set as UnhandledException
.
It also launched a log with status error
(see section log)
AjaxListModel
It adds an array of items to the response.
app;
Returns the following structure:
code: 0 // a code of request success: true // if the request was successful result: 0 // a result of request message: 'message' // an optional message value: {} // the payload of the response from the server items: // the collection of items uniqueItems: // *optional* the collection of **unique** items
Methods
addItem(item)
item
is the value pushed into arrayitems
Add an element into array items
concatItems(...items)
items
are n ° arguments passed to this method that are concatenated to the elementitems
sent in the response
An example can be found in tests
addUniqueItem(uniqueItem)
uniqueItem
is the value added into SetuniqueItems
Being 'uniqueItems' an instance of Set, the elements will be unique inside.
Pay attention to objects:
var a = a: 1 b = a: 1;a !== b // is true!
AjaxFormCallModel
It formats the response by grouping errors for field
app;
Returns the following structure:
code: 0 // a code of request success: true // if the request was successful result: 0 // a result of request message: 'message' // an optional message value: {} // the payload of the response from the server errrors: {} // the collection of errors countErrors: 0 // the number of errors
An example of response with errors can be found in tests
Methods
addError(name, error)
name
is the name of fielderror
is the error message
Add an error in the errors
object
hasError()
Return true if countErrors
> 0
AjaxDataGridModel
This model inherits from AjaxList
It formats the response by entering information relevant to pagination.
app;
Returns the following structure:
code: 0 // a code of request success: true // if the request was successful result: 0 // a result of request message: 'message' // an optional message value: {} // the payload of the response from the server items: // the collection of items uniqueItems: // *optional* the collection of **unique** items totalItems: 0 // the total items for pagination currentPage: 1 // the current page totalPages: 0 // total number of pages itemsPerPage: 10 // number of items per page
You can configure a itemsPerPage
default number. See section config for more details.
Methods
reInit([totalItems=0, currentPage=1, totalPages=0, itemsPerPage=config.resultsPerPageDefault])
totalItems
is the total items for paginationcurrentPage
is the current pagetotalPages
is the total number of pagesitemsPerPage
is number of items per page (default config.resultsPerPageDefault)
Re-init information relevant to pagination.
setLogger Config
You can configure a itemsPerPage
default number and max number with global config.
Default number setted are:
- resultsPerPageDefault : 10
- resultsPerPageMax : 100
var ajaxCallConfig = config;ajaxCallConfigresultsPerPageDefault = 20;ajaxCallConfigresultsPerPageMax = 50;
Logger
You can set the logging system used by the module when methods are called sendUncaughtExceptionMessage
and sendUnhandledExceptionMessage
For example log4js
By default, the module will use console
var log4js = ;log4js; // config log4jsvar logger = log4js;var ajaxCallLogger = ; ajaxCallLogger;