67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
import Ember from 'ember';
|
|
import $ from 'jquery'
|
|
|
|
export default Ember.Service.extend({
|
|
list(modelName, start, limit, params) {
|
|
var p = {
|
|
start: start,
|
|
limit: limit
|
|
};
|
|
if ($.type(params) === 'string') {
|
|
p.search = params;
|
|
}
|
|
else {
|
|
$.extend(true, p, params);
|
|
}
|
|
return this.ajaxGet(this._pathForType(modelName, '/list'), p);
|
|
},
|
|
find(modelName, params) {
|
|
return this.ajaxGet(this._pathForType(modelName, '/find'), params);
|
|
},
|
|
count(modelName) {
|
|
return this.ajaxGet(this._pathForType(modelName, '/count'));
|
|
},
|
|
create(modelName, model) {
|
|
return this.ajaxPost(this._pathForType(modelName, '/create'), model);
|
|
},
|
|
update(modelName, model) {
|
|
return this.ajaxPost(this._pathForType(modelName, '/update'), model);
|
|
},
|
|
del(modelName, model) {
|
|
return this.ajaxPost(this._pathForType(modelName, '/delete'), model);
|
|
},
|
|
modelAjaxGet: function(modelName, path, params) {
|
|
return this.ajaxGet(this._pathForType(modelName, path), params);
|
|
},
|
|
modelAjaxPost(modelName, path, params) {
|
|
return this.ajaxPost(this._pathForType(modelName, path), params);
|
|
},
|
|
ajaxGet(url, params) {
|
|
return this._ajax_request('doGet', url, params);
|
|
},
|
|
ajaxPost(url, params) {
|
|
return this._ajax_request('doPost', url, params);
|
|
},
|
|
_ajax_request(method, url, params) {
|
|
let me = this;
|
|
return new Ember.RSVP.Promise((resolve, reject) => {
|
|
let paramsType = $.type(params);
|
|
me.ajax[method ? method : 'doGet'](url,
|
|
paramsType === 'string' ||
|
|
paramsType === 'number' ?
|
|
{id: params} : params,
|
|
(data) => {
|
|
Ember.run(null, resolve, data);
|
|
}, (msg, r) => {
|
|
reject(msg);
|
|
me.dialog.error(msg || 'Ajax request erorr caused');
|
|
});
|
|
}, 'Ambition: Store#ajax request [' + url + ']');
|
|
},
|
|
_pathForType(modelName, path) {
|
|
return (/^[a-zA-Z_][a-zA-Z0-9_]+$/.test(modelName) ?
|
|
Ember.String.dasherize(modelName) : modelName) +
|
|
(/^\//.test(path) ? path : '/' + path);
|
|
}
|
|
});
|