dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
318 lines • 18.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable } from '@angular/core';
import { ApiService, ElementApiService, ElementsService } from 'dbweb-core';
import { from } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import { ElementViewDigest } from '../model/element-columns-digest';
/**
* @record
*/
function CacheFetchParam() { }
if (false) {
/** @type {?} */
CacheFetchParam.prototype.timeOutTime;
/** @type {?} */
CacheFetchParam.prototype.data;
}
/**
* @record
*/
function UpdateViewParam() { }
if (false) {
/** @type {?} */
UpdateViewParam.prototype.Name;
/** @type {?} */
UpdateViewParam.prototype.OwnerBy;
/** @type {?} */
UpdateViewParam.prototype.Owner;
/** @type {?} */
UpdateViewParam.prototype.Columns;
}
/**
* @record
*/
function UpdateViewNameParam() { }
if (false) {
/** @type {?} */
UpdateViewNameParam.prototype.OldName;
/** @type {?} */
UpdateViewNameParam.prototype.Name;
/** @type {?} */
UpdateViewNameParam.prototype.OwnerBy;
/** @type {?} */
UpdateViewNameParam.prototype.Owner;
}
/**
* @record
*/
function BuildRecordViewURLParam() { }
if (false) {
/** @type {?} */
BuildRecordViewURLParam.prototype.Title;
/** @type {?} */
BuildRecordViewURLParam.prototype.Condition;
/** @type {?|undefined} */
BuildRecordViewURLParam.prototype.More;
}
var BackFaceService = /** @class */ (function () {
function BackFaceService(eleApi, api, eles) {
this.eleApi = eleApi;
this.api = api;
this.eles = eles;
this.paramCache = new Map();
}
/**
* @param {?} param
* @return {?}
*/
BackFaceService.prototype.buildRecordViewURL = /**
* @param {?} param
* @return {?}
*/
function (param) {
return this.eleApi.get(this.eleName, 'build-record-view-url', param);
};
/**
* @private
* @template T
* @param {?} method
* @param {?=} param
* @return {?}
*/
BackFaceService.prototype.apiGet = /**
* @private
* @template T
* @param {?} method
* @param {?=} param
* @return {?}
*/
function (method, param) {
return this.api.get(this.url, method, this.eles.getURLSign(this.url), param);
};
/**
* @private
* @template T
* @param {?} method
* @param {?=} param
* @return {?}
*/
BackFaceService.prototype.apiPost = /**
* @private
* @template T
* @param {?} method
* @param {?=} param
* @return {?}
*/
function (method, param) {
return this.api.post(this.url, method, this.eles.getURLSign(this.url), param);
};
/**
* @param {?} param
* @return {?}
*/
BackFaceService.prototype.fetchRowCount = /**
* @param {?} param
* @return {?}
*/
function (param) {
return this.apiPost('fetch-row-count', param);
};
/**
* @param {?} param
* @return {?}
*/
BackFaceService.prototype.fetchData = /**
* @param {?} param
* @return {?}
*/
function (param) {
/** @type {?} */
var startTime = new Date().getTime();
return this.apiPost('fetch-data', param).pipe(map((/**
* @param {?} v
* @return {?}
*/
function (v) { return (tslib_1.__assign({}, v, { TimeConsuming: (new Date().getTime() - startTime) / 1000 })); })));
};
/**
* @return {?}
*/
BackFaceService.prototype.fetParamCache = /**
* @return {?}
*/
function () {
var _this = this;
if (this.paramCache.has(this.eleName)) {
/** @type {?} */
var data = this.paramCache.get(this.eleName);
// 如果没有超时则返回
if (data.timeOutTime > new Date()) {
return from([data.data]);
}
}
// console.log('fetch', eleName, 'param');
return this.apiGet('fetch-param').pipe(tap((/**
* @param {?} val
* @return {?}
*/
function (val) {
/** @type {?} */
var date = new Date();
date.setTime(date.getTime() + 5 * 1000 * 60); // 5分钟超时
_this.paramCache.set(_this.eleName, { timeOutTime: date, data: val });
})));
};
/**
* @return {?}
*/
BackFaceService.prototype.fetchAllColumns = /**
* @return {?}
*/
function () {
return this.apiGet('fetch-all-columns');
};
// 获取视图清单
// 获取视图清单
/**
* @return {?}
*/
BackFaceService.prototype.fetchElementViewList =
// 获取视图清单
/**
* @return {?}
*/
function () {
return this.apiGet('fetch-element-view-list', this.eleName).pipe(map((/**
* @param {?} v
* @return {?}
*/
function (v) { return v.map((/**
* @param {?} vv
* @return {?}
*/
function (vv) { return ElementViewDigest.fromInterface(vv); })); })));
};
/**
* @param {?} param
* @return {?}
*/
BackFaceService.prototype.getViewColumns = /**
* @param {?} param
* @return {?}
*/
function (param) {
return this.apiGet('get-view-columns', param);
};
// 新增视图,只有名称,没有内容
// 新增视图,只有名称,没有内容
/**
* @param {?} param
* @return {?}
*/
BackFaceService.prototype.addView =
// 新增视图,只有名称,没有内容
/**
* @param {?} param
* @return {?}
*/
function (param) {
return this.apiPost('add-view', param);
};
// 更新视图
// 更新视图
/**
* @param {?} param
* @return {?}
*/
BackFaceService.prototype.updateView =
// 更新视图
/**
* @param {?} param
* @return {?}
*/
function (param) {
return this.apiPost('update-view', param);
};
// 更新视图名称
// 更新视图名称
/**
* @param {?} param
* @return {?}
*/
BackFaceService.prototype.updateViewName =
// 更新视图名称
/**
* @param {?} param
* @return {?}
*/
function (param) {
return this.apiPost('update-view-name', param);
};
// 删除视图
// 删除视图
/**
* @param {?} param
* @return {?}
*/
BackFaceService.prototype.removeView =
// 删除视图
/**
* @param {?} param
* @return {?}
*/
function (param) {
return this.apiPost('remove-view', param);
};
// 返回多个标签的涉及列
// 返回多个标签的涉及列
/**
* @return {?}
*/
BackFaceService.prototype.comboLabelsView =
// 返回多个标签的涉及列
/**
* @return {?}
*/
function () {
return this.apiGet('combo-labels-view');
};
BackFaceService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
BackFaceService.ctorParameters = function () { return [
{ type: ElementApiService },
{ type: ApiService },
{ type: ElementsService }
]; };
return BackFaceService;
}());
export { BackFaceService };
if (false) {
/** @type {?} */
BackFaceService.prototype.eleName;
/** @type {?} */
BackFaceService.prototype.url;
/** @type {?} */
BackFaceService.prototype.paramCache;
/**
* @type {?}
* @private
*/
BackFaceService.prototype.eleApi;
/**
* @type {?}
* @private
*/
BackFaceService.prototype.api;
/**
* @type {?}
* @private
*/
BackFaceService.prototype.eles;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2ZhY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kYndlYi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvcmVjb3JkLXZpZXcvc2VydmljZS9iYWNrZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBVXBFLDhCQUdDOzs7SUFGQSxzQ0FBa0I7O0lBQ2xCLCtCQUF3Qjs7Ozs7QUFHekIsOEJBS0M7OztJQUpBLCtCQUFhOztJQUNiLGtDQUFnQjs7SUFDaEIsZ0NBQWM7O0lBQ2Qsa0NBQTBCOzs7OztBQUUzQixrQ0FLQzs7O0lBSkEsc0NBQWdCOztJQUNoQixtQ0FBYTs7SUFDYixzQ0FBZ0I7O0lBQ2hCLG9DQUFjOzs7OztBQUVmLHNDQUlDOzs7SUFIQSx3Q0FBYzs7SUFDZCw0Q0FBa0I7O0lBQ2xCLHVDQUFnQjs7QUFHakI7SUFLQyx5QkFBb0IsTUFBeUIsRUFBVSxHQUFlLEVBQVUsSUFBcUI7UUFBakYsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFEckcsZUFBVSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO0lBQ3dELENBQUM7Ozs7O0lBQ3pHLDRDQUFrQjs7OztJQUFsQixVQUFtQixLQUE4QjtRQUNoRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFTLElBQUksQ0FBQyxPQUFPLEVBQUUsdUJBQXVC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Qjs7Ozs7SUFBRSwrQkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UsIEVsZW1lbnRBcGlTZXJ2aWNlLCBFbGVtZW50c1NlcnZpY2UgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbGV2aWV3L3R5cGVzL21vZGVsJztcclxuaW1wb3J0IHsgRWxlbWVudFZpZXdEaWdlc3QgfSBmcm9tICcuLi9tb2RlbC9lbGVtZW50LWNvbHVtbnMtZGlnZXN0JztcclxuaW1wb3J0IHtcclxuXHRJRGlzcGxheUNvbHVtbixcclxuXHRJRWxlbWVudFZpZXdEaWdlc3QsXHJcblx0SUZldGNoRGF0YVBhcmFtLFxyXG5cdElGZXRjaERhdGFSZXN1bHRUeXBlLFxyXG5cdElGZXRjaFBhcmFtUmVzdWx0LFxyXG5cdElGZXRjaFJvd0NvdW50UmVzdWx0XHJcbn0gZnJvbSAnLi4vbW9kZWwvbW9kZWwnO1xyXG5cclxuaW50ZXJmYWNlIENhY2hlRmV0Y2hQYXJhbSB7XHJcblx0dGltZU91dFRpbWU6IERhdGU7XHJcblx0ZGF0YTogSUZldGNoUGFyYW1SZXN1bHQ7XHJcbn1cclxuXHJcbmludGVyZmFjZSBVcGRhdGVWaWV3UGFyYW0ge1xyXG5cdE5hbWU6IHN0cmluZztcclxuXHRPd25lckJ5OiBzdHJpbmc7XHJcblx0T3duZXI6IHN0cmluZztcclxuXHRDb2x1bW5zOiBJRGlzcGxheUNvbHVtbltdO1xyXG59XHJcbmludGVyZmFjZSBVcGRhdGVWaWV3TmFtZVBhcmFtIHtcclxuXHRPbGROYW1lOiBzdHJpbmc7XHJcblx0TmFtZTogc3RyaW5nO1xyXG5cdE93bmVyQnk6IHN0cmluZztcclxuXHRPd25lcjogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBCdWlsZFJlY29yZFZpZXdVUkxQYXJhbSB7XHJcblx0VGl0bGU6IHN0cmluZztcclxuXHRDb25kaXRpb246IHN0cmluZztcclxuXHRNb3JlPzogc3RyaW5nW107XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhY2tGYWNlU2VydmljZSB7XHJcblx0cHVibGljIGVsZU5hbWU6IHN0cmluZztcclxuXHRwdWJsaWMgdXJsOiBzdHJpbmc7XHJcblx0cGFyYW1DYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZUZldGNoUGFyYW0+KCk7XHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVBcGk6IEVsZW1lbnRBcGlTZXJ2aWNlLCBwcml2YXRlIGFwaTogQXBpU2VydmljZSwgcHJpdmF0ZSBlbGVzOiBFbGVtZW50c1NlcnZpY2UpIHt9XHJcblx0YnVpbGRSZWNvcmRWaWV3VVJMKHBhcmFtOiBCdWlsZFJlY29yZFZpZXdVUkxQYXJhbSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWxlQXBpLmdldDxzdHJpbmc+KHRoaXMuZWxlTmFtZSwgJ2J1aWxkLXJlY29yZC12aWV3LXVybCcsIHBhcmFtKTtcclxuXHR9XHJcblx0cHJpdmF0ZSBhcGlHZXQ8VD4obWV0aG9kOiBzdHJpbmcsIHBhcmFtPzogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGkuZ2V0PFQ+KHRoaXMudXJsLCBtZXRob2QsIHRoaXMuZWxlcy5nZXRVUkxTaWduKHRoaXMudXJsKSwgcGFyYW0pO1xyXG5cdH1cclxuXHRwcml2YXRlIGFwaVBvc3Q8VD4obWV0aG9kOiBzdHJpbmcsIHBhcmFtPzogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGkucG9zdDxUPih0aGlzLnVybCwgbWV0aG9kLCB0aGlzLmVsZXMuZ2V0VVJMU2lnbih0aGlzLnVybCksIHBhcmFtKTtcclxuXHR9XHJcblx0ZmV0Y2hSb3dDb3VudChwYXJhbTogSUZldGNoRGF0YVBhcmFtKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGlQb3N0PElGZXRjaFJvd0NvdW50UmVzdWx0PignZmV0Y2gtcm93LWNvdW50JywgcGFyYW0pO1xyXG5cdH1cclxuXHRmZXRjaERhdGEocGFyYW06IElGZXRjaERhdGFQYXJhbSkge1xyXG5cdFx0Y29uc3Qgc3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGlQb3N0PElGZXRjaERhdGFSZXN1bHRUeXBlPignZmV0Y2gtZGF0YScsIHBhcmFtKS5waXBlKFxyXG5cdFx0XHRtYXAodiA9PiAoeyAuLi52LCBUaW1lQ29uc3VtaW5nOiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydFRpbWUpIC8gMTAwMCB9KSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRmZXRQYXJhbUNhY2hlKCkge1xyXG5cdFx0aWYgKHRoaXMucGFyYW1DYWNoZS5oYXModGhpcy5lbGVOYW1lKSkge1xyXG5cdFx0XHRjb25zdCBkYXRhID0gdGhpcy5wYXJhbUNhY2hlLmdldCh0aGlzLmVsZU5hbWUpO1xyXG5cdFx0XHQvLyDlpoLmnpzmsqHmnInotoXml7bliJnov5Tlm55cclxuXHRcdFx0aWYgKGRhdGEudGltZU91dFRpbWUgPiBuZXcgRGF0ZSgpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGZyb20oW2RhdGEuZGF0YV0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQvLyBjb25zb2xlLmxvZygnZmV0Y2gnLCBlbGVOYW1lLCAncGFyYW0nKTtcclxuXHRcdHJldHVybiB0aGlzLmFwaUdldDxJRmV0Y2hQYXJhbVJlc3VsdD4oJ2ZldGNoLXBhcmFtJykucGlwZShcclxuXHRcdFx0dGFwKHZhbCA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdFx0ZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgNSAqIDEwMDAgKiA2MCk7IC8vIDXliIbpkp/otoXml7ZcclxuXHJcblx0XHRcdFx0dGhpcy5wYXJhbUNhY2hlLnNldCh0aGlzLmVsZU5hbWUsIHsgdGltZU91dFRpbWU6IGRhdGUsIGRhdGE6IHZhbCB9KTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdGZldGNoQWxsQ29sdW1ucygpIHtcclxuXHRcdHJldHVybiB0aGlzLmFwaUdldDxJQ29sdW1uVHlwZVtdPignZmV0Y2gtYWxsLWNvbHVtbnMnKTtcclxuXHR9XHJcblxyXG5cdC8vIOiOt+WPluinhuWbvua4heWNlVxyXG5cdGZldGNoRWxlbWVudFZpZXdMaXN0KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuYXBpR2V0PElFbGVtZW50Vmlld0RpZ2VzdFtdPignZmV0Y2gtZWxlbWVudC12aWV3LWxpc3QnLCB0aGlzLmVsZU5hbWUpLnBpcGUoXHJcblx0XHRcdG1hcCh2ID0+IHYubWFwKHZ2ID0+IEVsZW1lbnRWaWV3RGlnZXN0LmZyb21JbnRlcmZhY2UodnYpKSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdGdldFZpZXdDb2x1bW5zKHBhcmFtOiBJRWxlbWVudFZpZXdEaWdlc3QpIHtcclxuXHRcdHJldHVybiB0aGlzLmFwaUdldDxJRGlzcGxheUNvbHVtbltdPignZ2V0LXZpZXctY29sdW1ucycsIHBhcmFtKTtcclxuXHR9XHJcblx0Ly8g5paw5aKe6KeG5Zu+77yM5Y+q5pyJ5ZCN56ew77yM5rKh5pyJ5YaF5a65XHJcblx0YWRkVmlldyhwYXJhbTogSUVsZW1lbnRWaWV3RGlnZXN0KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGlQb3N0PGJvb2xlYW4+KCdhZGQtdmlldycsIHBhcmFtKTtcclxuXHR9XHJcblx0Ly8g5pu05paw6KeG5Zu+XHJcblx0dXBkYXRlVmlldyhwYXJhbTogVXBkYXRlVmlld1BhcmFtKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGlQb3N0PGJvb2xlYW4+KCd1cGRhdGUtdmlldycsIHBhcmFtKTtcclxuXHR9XHJcblx0Ly8g5pu05paw6KeG5Zu+5ZCN56ewXHJcblx0dXBkYXRlVmlld05hbWUocGFyYW06IFVwZGF0ZVZpZXdOYW1lUGFyYW0pIHtcclxuXHRcdHJldHVybiB0aGlzLmFwaVBvc3Q8Ym9vbGVhbj4oJ3VwZGF0ZS12aWV3LW5hbWUnLCBwYXJhbSk7XHJcblx0fVxyXG5cdC8vIOWIoOmZpOinhuWbvlxyXG5cdHJlbW92ZVZpZXcocGFyYW06IElFbGVtZW50Vmlld0RpZ2VzdCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuYXBpUG9zdDxib29sZWFuPigncmVtb3ZlLXZpZXcnLCBwYXJhbSk7XHJcblx0fVxyXG5cdC8vIOi/lOWbnuWkmuS4quagh+etvueahOa2ieWPiuWIl1xyXG5cdGNvbWJvTGFiZWxzVmlldygpIHtcclxuXHRcdHJldHVybiB0aGlzLmFwaUdldDxzdHJpbmdbXT4oJ2NvbWJvLWxhYmVscy12aWV3Jyk7XHJcblx0fVxyXG59XHJcbiJdfQ==