89 lines
3.1 KiB
JavaScript
89 lines
3.1 KiB
JavaScript
import Service from '@ember/service';
|
|
import { typeOf } from '@ember/utils';
|
|
import { inject as service } from '@ember/service';
|
|
|
|
export default Service.extend({
|
|
primaryKey: 'id',
|
|
store: service('store'),
|
|
message: service('message'),
|
|
pageSize: 64,
|
|
constraints: {},
|
|
createConstraints: null,
|
|
updateConstraints: null,
|
|
find(params) {
|
|
console.log('Find Model: ', params);
|
|
return this._getStore().find(this.get('modelName'), params);
|
|
},
|
|
list(start, limit, params) {
|
|
console.log('List Models Start: ', start, ', Limit: ', limit, ", Search: ", params);
|
|
return this._getStore().list(this.get('modelName'), start, limit, params);
|
|
},
|
|
listPage(page, params) {
|
|
page > 0 || (page = 1);
|
|
let me = this;
|
|
let pageSize = me.get('pageSize');
|
|
return me.list((page - 1) * pageSize, pageSize, params);
|
|
},
|
|
create(model) {
|
|
console.log('Create Model: ', model);
|
|
return this._getStore().create(this.get('modelName'), model);
|
|
},
|
|
update(model, defaultPromise) {
|
|
console.log('Update model: ', model);
|
|
let me = this;
|
|
let p = me._getStore().update(me.get('modelName'), model);
|
|
if (defaultPromise) {
|
|
p.then((m) => {
|
|
console.log('After update: ', m);
|
|
!(model instanceof FormData) && m &&
|
|
Object.keys(m).forEach((prop) => {
|
|
Ember.set(model, prop, m[prop]);
|
|
});
|
|
me.get('message').alert('更新成功');
|
|
})
|
|
}
|
|
return p;
|
|
},
|
|
del(params) {
|
|
console.log('delete model: ', params);
|
|
return this._getStore().del(this.get('modelName'), params[this.get('primaryKey')]);
|
|
},
|
|
ajaxGet(path, params) {
|
|
return this._getStore().modelAjaxGet(this.get('modelName'), path, params);
|
|
},
|
|
ajaxPost(path, params) {
|
|
return this._getStore().modelAjaxPost(this.get('modelName'), path, params);
|
|
},
|
|
validate(model, constraints) {
|
|
let me = this;
|
|
console.log('Validate Model: ', model);
|
|
if (constraints) {
|
|
if (typeOf(constraints) === 'string') {
|
|
constraints = me.get(constraints);
|
|
}
|
|
else if (typeOf(constraints) !== 'object') {
|
|
validation = me.get('constraints');
|
|
}
|
|
}
|
|
else {
|
|
constraints = me.get('constraints');
|
|
}
|
|
return validate(model, constraints || me.get('constraints'));
|
|
},
|
|
createValidate(model) {
|
|
console.log('Create validate model: ', model);
|
|
let me = this;
|
|
let constraints = me.get('createConstraints') || me.get('constraints') || null;
|
|
return constraints && validate(model, constraints);
|
|
},
|
|
updateValidate(model) {
|
|
console.log('Update validate model: ', model);
|
|
let me = this;
|
|
let constraints = me.get('updateConstraints') || me.get('constraints') || null;
|
|
return constraints && validate(model, constraints);
|
|
},
|
|
_getStore() {
|
|
return this.get('store');
|
|
}
|
|
});
|