UNPKG

ngx-bit

Version:

A flexible NG-ZORRO helper library

172 lines 16.1 kB
import { AsyncSubject } from 'rxjs'; export class ListByPage { constructor(curd, storage, option) { this.curd = curd; this.storage = storage; this.option = option; /** * 完成初始化 * Complete initialization */ this.ready = new AsyncSubject(); /** * 搜索字段定义 * Search field definition */ this.search = {}; /** * 分页数据 * Paging data */ this.data = []; /** * 加载状态 * Loading status */ this.loading = true; /** * 分页限制 * Paging limit */ this.limit = 0; /** * 分页总数 * Total number of pages */ this.totals = 0; /** * 分页页码 * Pagination page number */ this.index = 1; /** * 是否全被选中 * Are all selected */ this.checked = false; /** * 是否不完全被选中 * Is it not completely selected */ this.indeterminate = false; /** * 是否可进行批量处理 * Whether it can be batch processed */ this.batch = false; /** * 被选中的数量 * Number selected */ this.checkedNumber = 0; this.limit = option.limit; this.order = option.order; this.storage.get('search:' + option.id).subscribe((data) => { if (!data) { for (const value of option.query) { this.search[value.field] = value; } } else { this.search = data; } this.ready.next(data); this.ready.complete(); }); } /** * 设置数据 * Set data */ setData(data) { this.data = data; } /** * 判断是否包含该字段的搜索条件 * Determine whether to include the search criteria of the field */ hasSearch(field) { return this.search.hasOwnProperty(field); } /** * 主动触发搜索变动之后 * After actively triggering the search change */ afterSearch() { return this.storage.set('search:' + this.option.id, this.search); } /** * 主动触发搜索清空之后 * After actively triggering search and clearing */ clearSearch(reset = {}) { for (const key in this.search) { if (this.search.hasOwnProperty(key)) { const search = this.search[key]; if (reset.hasOwnProperty(search.field)) { search.value = reset[search.field]; } else { search.value = ''; } } } return this.storage.delete('search:' + this.option.id); } /** * 更新分页列表状态 * Update the status of the paging list */ refreshStatus() { const allChecked = this.data.every((value) => value.checked === true); const allUnchecked = this.data.every((value) => !value.checked); this.checked = this.data.length !== 0 && allChecked; this.indeterminate = !allChecked && !allUnchecked; this.batch = this.checked || this.indeterminate; this.checkedNumber = this.data.filter((value) => value.checked).length; } /** * 更改所有分页列表选中状态 * Change the selected state of all tabbed lists */ checkedAll(event) { this.data.forEach((data) => (data.checked = event)); this.refreshStatus(); } /** * 返回所有被选中的列表 * Return all selected lists */ getChecked() { return this.data.filter(value => value.checked); } /** * 获取当前的页码 * Get the current page number */ getPage() { return this.storage.get('page:' + this.option.id); } /** * 主动执行分页页码的持久化记录 * Actively execute persistent records of paging page numbers */ persistence() { this.storage.set('page:' + this.option.id, this.index).subscribe(_ => _); } /** * 返回查询定义数组 * Return query definition array */ toQuery() { return Object.values(this.search); } /** * 返回查询语句 * Return query statement */ toQuerySchema() { return this.curd.getQuerySchema(this.toQuery()); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1ieS1wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpdC9jb21tb24vdXRpbHMvbGlzdC1ieS1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFLaEQsTUFBTSxPQUFPLFVBQVU7SUF5RXJCLFlBQ1UsSUFBb0IsRUFDcEIsT0FBbUIsRUFDbkIsTUFBd0I7UUFGeEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDcEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQTNFbEM7OztXQUdHO1FBQ0gsVUFBSyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRW5EOzs7V0FHRztRQUNILFdBQU0sR0FBc0MsRUFBRSxDQUFDO1FBUS9DOzs7V0FHRztRQUNILFNBQUksR0FBVSxFQUFFLENBQUM7UUFFakI7OztXQUdHO1FBQ0gsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmOzs7V0FHRztRQUNILFVBQUssR0FBRyxDQUFDLENBQUM7UUFFVjs7O1dBR0c7UUFDSCxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRVg7OztXQUdHO1FBQ0gsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVWOzs7V0FHRztRQUNILFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEI7OztXQUdHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFdEI7OztXQUdHO1FBQ0gsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVkOzs7V0FHRztRQUNILGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBT2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFH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LElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPO1FBQ0wsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExpc3RCeVBhZ2VPcHRpb24sIFNlYXJjaE9wdGlvbiwgT3JkZXJPcHRpb24gfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7IEJpdEN1cmRTZXJ2aWNlIH0gZnJvbSAnLi4vYml0LWN1cmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMaXN0QnlQYWdlIHtcclxuICAvKipcclxuICAgKiDlrozmiJDliJ3lp4vljJZcclxuICAgKiBDb21wbGV0ZSBpbml0aWFsaXphdGlvblxyXG4gICAqL1xyXG4gIHJlYWR5OiBBc3luY1N1YmplY3Q8YW55PiA9IG5ldyBBc3luY1N1YmplY3Q8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiDmkJzntKLlrZfmrrXlrprkuYlcclxuICAgKiBTZWFyY2ggZmllbGQgZGVmaW5pdGlvblxyXG4gICAqL1xyXG4gIHNlYXJjaDogeyBbZmllbGQ6IHN0cmluZ106IFNlYXJjaE9wdGlvbiB9ID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIOaOkuW6j+Wtl+auteWumuS5iVxyXG4gICAqIFNvcnQgZmllbGQgZGVmaW5pdGlvblxyXG4gICAqL1xyXG4gIG9yZGVyOiBPcmRlck9wdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICog5YiG6aG15pWw5o2uXHJcbiAgICogUGFnaW5nIGRhdGFcclxuICAgKi9cclxuICBkYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiDliqDovb3nirbmgIFcclxuICAgKiBMb2FkaW5nIHN0YXR1c1xyXG4gICAqL1xyXG4gIGxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiDliIbpobXpmZDliLZcclxuICAgKiBQYWdpbmcgbGltaXRcclxuICAgKi9cclxuICBsaW1pdCA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIhumhteaAu+aVsFxyXG4gICAqIFRvdGFsIG51bWJlciBvZiBwYWdlc1xyXG4gICAqL1xyXG4gIHRvdGFscyA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIhumhtemhteeggVxyXG4gICAqIFBhZ2luYXRpb24gcGFnZSBudW1iZXJcclxuICAgKi9cclxuICBpbmRleCA9IDE7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuWFqOiiq+mAieS4rVxyXG4gICAqIEFyZSBhbGwgc2VsZWN0ZWRcclxuICAgKi9cclxuICBjaGVja2VkID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuS4jeWujOWFqOiiq+mAieS4rVxyXG4gICAqIElzIGl0IG5vdCBjb21wbGV0ZWx5IHNlbGVjdGVkXHJcbiAgICovXHJcbiAgaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiDmmK/lkKblj6/ov5vooYzmibnph4/lpITnkIZcclxuICAgKiBXaGV0aGVyIGl0IGNhbiBiZSBiYXRjaCBwcm9jZXNzZWRcclxuICAgKi9cclxuICBiYXRjaCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiDooqvpgInkuK3nmoTmlbDph49cclxuICAgKiBOdW1iZXIgc2VsZWN0ZWRcclxuICAgKi9cclxuICBjaGVja2VkTnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGN1cmQ6IEJpdEN1cmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlTWFwLFxyXG4gICAgcHJpdmF0ZSBvcHRpb246IExpc3RCeVBhZ2VPcHRpb25cclxuICApIHtcclxuICAgIHRoaXMubGltaXQgPSBvcHRpb24ubGltaXQ7XHJcbiAgICB0aGlzLm9yZGVyID0gb3B0aW9uLm9yZGVyO1xyXG4gICAgdGhpcy5zdG9yYWdlLmdldCgnc2VhcmNoOicgKyBvcHRpb24uaWQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghZGF0YSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2Ygb3B0aW9uLnF1ZXJ5KSB7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFt2YWx1ZS5maWVsZF0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBkYXRhO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVhZHkubmV4dChkYXRhKTtcclxuICAgICAgdGhpcy5yZWFkeS5jb21wbGV0ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDorr7nva7mlbDmja5cclxuICAgKiBTZXQgZGF0YVxyXG4gICAqL1xyXG4gIHNldERhdGEoZGF0YTogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKTmlq3mmK/lkKbljIXlkKvor6XlrZfmrrXnmoTmkJzntKLmnaHku7ZcclxuICAgKiBEZXRlcm1pbmUgd2hldGhlciB0byBpbmNsdWRlIHRoZSBzZWFyY2ggY3JpdGVyaWEgb2YgdGhlIGZpZWxkXHJcbiAgICovXHJcbiAgaGFzU2VhcmNoKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlYXJjaC5oYXNPd25Qcm9wZXJ0eShmaWVsZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDkuLvliqjop6blj5HmkJzntKLlj5jliqjkuYvlkI5cclxuICAgKiBBZnRlciBhY3RpdmVseSB0cmlnZ2VyaW5nIHRoZSBzZWFyY2ggY2hhbmdlXHJcbiAgICovXHJcbiAgYWZ0ZXJTZWFyY2goKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2Uuc2V0KCdzZWFyY2g6JyArIHRoaXMub3B0aW9uLmlkLCB0aGlzLnNlYXJjaCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDkuLvliqjop6blj5HmkJzntKLmuIXnqbrkuYvlkI5cclxuICAgKiBBZnRlciBhY3RpdmVseSB0cmlnZ2VyaW5nIHNlYXJjaCBhbmQgY2xlYXJpbmdcclxuICAgKi9cclxuICBjbGVhclNlYXJjaChyZXNldDogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zZWFyY2gpIHtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaFtrZXldO1xyXG4gICAgICAgIGlmIChyZXNldC5oYXNPd25Qcm9wZXJ0eShzZWFyY2guZmllbGQpKSB7XHJcbiAgICAgICAgICBzZWFyY2gudmFsdWUgPSByZXNldFtzZWFyY2guZmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZWFyY2gudmFsdWUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZGVsZXRlKCdzZWFyY2g6JyArIHRoaXMub3B0aW9uLmlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOabtOaWsOWIhumhteWIl+ihqOeKtuaAgVxyXG4gICAqIFVwZGF0ZSB0aGUgc3RhdHVzIG9mIHRoZSBwYWdpbmcgbGlzdFxyXG4gICAqL1xyXG4gIHJlZnJlc2hTdGF0dXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhbGxDaGVja2VkID0gdGhpcy5kYXRhLmV2ZXJ5KCh2YWx1ZSkgPT4gdmFsdWUuY2hlY2tlZCA9PT0gdHJ1ZSk7XHJcbiAgICBjb25zdCBhbGxVbmNoZWNrZWQgPSB0aGlzLmRhdGEuZXZlcnkoKHZhbHVlKSA9PiAhdmFsdWUuY2hlY2tlZCk7XHJcbiAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLmRhdGEubGVuZ3RoICE9PSAwICYmIGFsbENoZWNrZWQ7XHJcbiAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSAhYWxsQ2hlY2tlZCAmJiAhYWxsVW5jaGVja2VkO1xyXG4gICAgdGhpcy5iYXRjaCA9IHRoaXMuY2hlY2tlZCB8fCB0aGlzLmluZGV0ZXJtaW5hdGU7XHJcbiAgICB0aGlzLmNoZWNrZWROdW1iZXIgPSB0aGlzLmRhdGEuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUuY2hlY2tlZCkubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5pu05pS55omA5pyJ5YiG6aG15YiX6KGo6YCJ5Lit54q25oCBXHJcbiAgICogQ2hhbmdlIHRoZSBzZWxlY3RlZCBzdGF0ZSBvZiBhbGwgdGFiYmVkIGxpc3RzXHJcbiAgICovXHJcbiAgY2hlY2tlZEFsbChldmVudDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhLmZvckVhY2goKGRhdGEpID0+IChkYXRhLmNoZWNrZWQgPSBldmVudCkpO1xyXG4gICAgdGhpcy5yZWZyZXNoU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDov5Tlm57miYDmnInooqvpgInkuK3nmoTliJfooahcclxuICAgKiBSZXR1cm4gYWxsIHNlbGVjdGVkIGxpc3RzXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZCgpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZS5jaGVja2VkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluW9k+WJjeeahOmhteeggVxyXG4gICAqIEdldCB0aGUgY3VycmVudCBwYWdlIG51bWJlclxyXG4gICAqL1xyXG4gIGdldFBhZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0KCdwYWdlOicgKyB0aGlzLm9wdGlvbi5pZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDkuLvliqjmiafooYzliIbpobXpobXnoIHnmoTmjIHkuYXljJborrDlvZVcclxuICAgKiBBY3RpdmVseSBleGVjdXRlIHBlcnNpc3RlbnQgcmVjb3JkcyBvZiBwYWdpbmcgcGFnZSBudW1iZXJzXHJcbiAgICovXHJcbiAgcGVyc2lzdGVuY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdwYWdlOicgKyB0aGlzLm9wdGlvbi5pZCwgdGhpcy5pbmRleCkuc3Vic2NyaWJlKF8gPT4gXyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDov5Tlm57mn6Xor6LlrprkuYnmlbDnu4RcclxuICAgKiBSZXR1cm4gcXVlcnkgZGVmaW5pdGlvbiBhcnJheVxyXG4gICAqL1xyXG4gIHRvUXVlcnkoKTogU2VhcmNoT3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5zZWFyY2gpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6L+U5Zue5p+l6K+i6K+t5Y+lXHJcbiAgICogUmV0dXJuIHF1ZXJ5IHN0YXRlbWVudFxyXG4gICAqL1xyXG4gIHRvUXVlcnlTY2hlbWEoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VyZC5nZXRRdWVyeVNjaGVtYSh0aGlzLnRvUXVlcnkoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==