ngx-bit
Version:
A flexible NG-ZORRO helper library
137 lines • 16.4 kB
JavaScript
import { Injectable } from '@angular/core';
import { of } from 'rxjs';
import { map, switchMap } from 'rxjs/operators';
import { BitCurdService } from './bit-curd.service';
import * as i0 from "@angular/core";
import * as i1 from "./bit-config";
import * as i2 from "./bit-http.service";
export class BitCurdCommonService extends BitCurdService {
/**
* 获取单条数据请求
* Get a single data request
*/
get(model, condition, order, path) {
let http;
const url = path || this.curd.get;
if (Array.isArray(condition)) {
http = this.http.req(model + url, {
where: this.getQuerySchema(condition),
order
});
}
else {
http = this.http.req(model + url, {
id: condition
});
}
return http.pipe(map(res => !res.error ? res.data : null));
}
/**
* 获取分页数据请求
* Get pagination data request
*/
lists(model, factory, option, path) {
const url = path || this.curd.lists;
if (option.refresh || option.persistence) {
if (option.refresh) {
factory.index = 1;
}
factory.persistence();
}
return factory.getPage().pipe(switchMap(index => {
factory.index = index ? index : 1;
return this.http.req(model + url, {
page: {
limit: factory.limit,
index: factory.index
},
where: factory.toQuerySchema(),
order: factory.order
});
}), map(res => {
factory.totals = !res.error ? res.data.total : 0;
factory.loading = false;
factory.checked = false;
factory.indeterminate = false;
factory.batch = false;
factory.checkedNumber = 0;
return !res.error ? res.data.lists : null;
}));
}
/**
* 获取原始列表数据请求
* Get original list data request
*/
originLists(model, condition = [], order, path) {
const url = path || this.curd.originLists;
return this.http.req(model + url, {
where: this.getQuerySchema(condition),
order
}).pipe(map(res => !res.error ? res.data : null));
}
/**
* 新增数据请求
* New data request
*/
add(model, data, path) {
const url = path || this.curd.add;
return this.http.req(model + url, data);
}
/**
* 修改数据请求
* Modify data request
*/
edit(model, data, condition, path) {
const url = path || this.curd.edit;
data.switch = false;
return !condition ?
this.http.req(model + url, data) :
this.http.req(model + url, Object.assign(data, {
where: this.getQuerySchema(condition)
}));
}
/**
* 状态切换请求
* State switch request
*/
status(model, data, field = 'status', extra, path) {
const url = path || this.curd.status;
const body = {
id: data.id,
switch: true,
[field]: !data[field]
};
if (extra !== undefined) {
Object.assign(body, extra);
}
return this.http.req(model + url, body).pipe(map((res) => {
if (!res.error) {
data[field] = !data[field];
}
return res;
}));
}
/**
* 删除数据请求
* Delete data request
*/
delete(model, id, condition, path) {
const url = path || this.curd.delete;
if (id !== undefined) {
return this.http.req(model + url, {
id
});
}
if (condition !== undefined) {
return this.http.req(model + url, {
where: this.getQuerySchema(condition)
});
}
return of(false);
}
}
BitCurdCommonService.ɵprov = i0.ɵɵdefineInjectable({ factory: function BitCurdCommonService_Factory() { return new BitCurdCommonService(i0.ɵɵinject(i1.BitConfig), i0.ɵɵinject(i2.BitHttpService)); }, token: BitCurdCommonService, providedIn: "root" });
BitCurdCommonService.decorators = [
{ type: Injectable, args: [{ providedIn: 'root' },] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWN1cmQtY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYml0L2NvbW1vbi9iaXQtY3VyZC1jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFHcEQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGNBQWM7SUFDdEQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLEtBQWEsRUFBRSxTQUEyQyxFQUFFLEtBQW1CLEVBQUUsSUFBYTtRQUNoRyxJQUFJLElBQXFCLENBQUM7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRTtnQkFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO2dCQUNyQyxLQUFLO2FBQ04sQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFO2dCQUNoQyxFQUFFLEVBQUUsU0FBUzthQUNkLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUNkLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxD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Q0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFhLEVBQUUsRUFBVSxFQUFFLFNBQTBCLEVBQUUsSUFBYTtRQUN6RSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRTtnQkFDaEMsRUFBRTthQUNILENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRTtnQkFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQzs7OztZQTNJRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXJkSW50ZXJmYWNlLCBMaXN0c09wdGlvbiwgT3JkZXJPcHRpb24sIFNlYXJjaE9wdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTGlzdEJ5UGFnZSB9IGZyb20gJy4vdXRpbHMvbGlzdC1ieS1wYWdlJztcclxuaW1wb3J0IHsgQml0Q3VyZFNlcnZpY2UgfSBmcm9tICcuL2JpdC1jdXJkLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEJpdEN1cmRDb21tb25TZXJ2aWNlIGV4dGVuZHMgQml0Q3VyZFNlcnZpY2UgaW1wbGVtZW50cyBDdXJkSW50ZXJmYWNlIHtcclxuICAvKipcclxuICAgKiDojrflj5bljZXmnaHmlbDmja7or7fmsYJcclxuICAgKiBHZXQgYSBzaW5nbGUgZGF0YSByZXF1ZXN0XHJcbiAgICovXHJcbiAgZ2V0KG1vZGVsOiBzdHJpbmcsIGNvbmRpdGlvbjogbnVtYmVyIHwgc3RyaW5nIHwgU2VhcmNoT3B0aW9uW10sIG9yZGVyPzogT3JkZXJPcHRpb24sIHBhdGg/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IGh0dHA6IE9ic2VydmFibGU8YW55PjtcclxuICAgIGNvbnN0IHVybCA9IHBhdGggfHwgdGhpcy5jdXJkLmdldDtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmRpdGlvbikpIHtcclxuICAgICAgaHR0cCA9IHRoaXMuaHR0cC5yZXEobW9kZWwgKyB1cmwsIHtcclxuICAgICAgICB3aGVyZTogdGhpcy5nZXRRdWVyeVNjaGVtYShjb25kaXRpb24pLFxyXG4gICAgICAgIG9yZGVyXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaHR0cCA9IHRoaXMuaHR0cC5yZXEobW9kZWwgKyB1cmwsIHtcclxuICAgICAgICBpZDogY29uZGl0aW9uXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0dHAucGlwZShcclxuICAgICAgbWFwKHJlcyA9PiAhcmVzLmVycm9yID8gcmVzLmRhdGEgOiBudWxsKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWIhumhteaVsOaNruivt+axglxyXG4gICAqIEdldCBwYWdpbmF0aW9uIGRhdGEgcmVxdWVzdFxyXG4gICAqL1xyXG4gIGxpc3RzKG1vZGVsOiBzdHJpbmcsIGZhY3Rvcnk6IExpc3RCeVBhZ2UsIG9wdGlvbjogTGlzdHNPcHRpb24sIHBhdGg/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gcGF0aCB8fCB0aGlzLmN1cmQubGlzdHM7XHJcbiAgICBpZiAob3B0aW9uLnJlZnJlc2ggfHwgb3B0aW9uLnBlcnNpc3RlbmNlKSB7XHJcbiAgICAgIGlmIChvcHRpb24ucmVmcmVzaCkge1xyXG4gICAgICAgIGZhY3RvcnkuaW5kZXggPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIGZhY3RvcnkucGVyc2lzdGVuY2UoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWN0b3J5LmdldFBhZ2UoKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaW5kZXggPT4ge1xyXG4gICAgICAgIGZhY3RvcnkuaW5kZXggPSBpbmRleCA/IGluZGV4IDogMTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnJlcShtb2RlbCArIHVybCwge1xyXG4gICAgICAgICAgcGFnZToge1xyXG4gICAgICAgICAgICBsaW1pdDogZmFjdG9yeS5saW1pdCxcclxuICAgICAgICAgICAgaW5kZXg6IGZhY3RvcnkuaW5kZXhcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB3aGVyZTogZmFjdG9yeS50b1F1ZXJ5U2NoZW1hKCksXHJcbiAgICAgICAgICBvcmRlcjogZmFjdG9yeS5vcmRlclxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KSxcclxuICAgICAgbWFwKHJlcyA9PiB7XHJcbiAgICAgICAgZmFjdG9yeS50b3RhbHMgPSAhcmVzLmVycm9yID8gcmVzLmRhdGEudG90YWwgOiAwO1xyXG4gICAgICAgIGZhY3RvcnkubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGZhY3RvcnkuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIGZhY3RvcnkuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGZhY3RvcnkuYmF0Y2ggPSBmYWxzZTtcclxuICAgICAgICBmYWN0b3J5LmNoZWNrZWROdW1iZXIgPSAwO1xyXG4gICAgICAgIHJldHVybiAhcmVzLmVycm9yID8gcmVzLmRhdGEubGlzdHMgOiBudWxsO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWOn+Wni+WIl+ihqOaVsOaNruivt+axglxyXG4gICAqIEdldCBvcmlnaW5hbCBsaXN0IGRhdGEgcmVxdWVzdFxyXG4gICAqL1xyXG4gIG9yaWdpbkxpc3RzKG1vZGVsOiBzdHJpbmcsIGNvbmRpdGlvbjogU2VhcmNoT3B0aW9uW10gPSBbXSwgb3JkZXI/OiBPcmRlck9wdGlvbiwgcGF0aD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBwYXRoIHx8IHRoaXMuY3VyZC5vcmlnaW5MaXN0cztcclxuICAgIHJldHVybiB0aGlzLmh0dHAucmVxKG1vZGVsICsgdXJsLCB7XHJcbiAgICAgIHdoZXJlOiB0aGlzLmdldFF1ZXJ5U2NoZW1hKGNvbmRpdGlvbiksXHJcbiAgICAgIG9yZGVyXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBtYXAocmVzID0+ICFyZXMuZXJyb3IgPyByZXMuZGF0YSA6IG51bGwpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5paw5aKe5pWw5o2u6K+35rGCXHJcbiAgICogTmV3IGRhdGEgcmVxdWVzdFxyXG4gICAqL1xyXG4gIGFkZChtb2RlbDogc3RyaW5nLCBkYXRhOiBhbnksIHBhdGg/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gcGF0aCB8fCB0aGlzLmN1cmQuYWRkO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXEobW9kZWwgKyB1cmwsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5L+u5pS55pWw5o2u6K+35rGCXHJcbiAgICogTW9kaWZ5IGRhdGEgcmVxdWVzdFxyXG4gICAqL1xyXG4gIGVkaXQobW9kZWw6IHN0cmluZywgZGF0YTogYW55LCBjb25kaXRpb24/OiBTZWFyY2hPcHRpb25bXSwgcGF0aD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBwYXRoIHx8IHRoaXMuY3VyZC5lZGl0O1xyXG4gICAgZGF0YS5zd2l0Y2ggPSBmYWxzZTtcclxuICAgIHJldHVybiAhY29uZGl0aW9uID9cclxuICAgICAgdGhpcy5odHRwLnJlcShtb2RlbCArIHVybCwgZGF0YSkgOlxyXG4gICAgICB0aGlzLmh0dHAucmVxKG1vZGVsICsgdXJsLCBPYmplY3QuYXNzaWduKGRhdGEsIHtcclxuICAgICAgICAgIHdoZXJlOiB0aGlzLmdldFF1ZXJ5U2NoZW1hKGNvbmRpdGlvbilcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog54q25oCB5YiH5o2i6K+35rGCXHJcbiAgICogU3RhdGUgc3dpdGNoIHJlcXVlc3RcclxuICAgKi9cclxuICBzdGF0dXMobW9kZWw6IHN0cmluZywgZGF0YTogYW55LCBmaWVsZCA9ICdzdGF0dXMnLCBleHRyYT86IGFueSwgcGF0aD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBwYXRoIHx8IHRoaXMuY3VyZC5zdGF0dXM7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBpZDogZGF0YS5pZCxcclxuICAgICAgc3dpdGNoOiB0cnVlLFxyXG4gICAgICBbZmllbGRdOiAhZGF0YVtmaWVsZF1cclxuICAgIH07XHJcbiAgICBpZiAoZXh0cmEgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBPYmplY3QuYXNzaWduKGJvZHksIGV4dHJhKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucmVxKG1vZGVsICsgdXJsLCBib2R5KS5waXBlKFxyXG4gICAgICBtYXAoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmICghcmVzLmVycm9yKSB7XHJcbiAgICAgICAgICBkYXRhW2ZpZWxkXSA9ICFkYXRhW2ZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTmlbDmja7or7fmsYJcclxuICAgKiBEZWxldGUgZGF0YSByZXF1ZXN0XHJcbiAgICovXHJcbiAgZGVsZXRlKG1vZGVsOiBzdHJpbmcsIGlkPzogYW55W10sIGNvbmRpdGlvbj86IFNlYXJjaE9wdGlvbltdLCBwYXRoPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHBhdGggfHwgdGhpcy5jdXJkLmRlbGV0ZTtcclxuICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucmVxKG1vZGVsICsgdXJsLCB7XHJcbiAgICAgICAgaWRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29uZGl0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5yZXEobW9kZWwgKyB1cmwsIHtcclxuICAgICAgICB3aGVyZTogdGhpcy5nZXRRdWVyeVNjaGVtYShjb25kaXRpb24pXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICB9XHJcbn1cclxuIl19