@gsp-cmp/ccmp-ui
Version:
CCMP UI Component Library for Angular
775 lines (758 loc) • 27.5 kB
JavaScript
import { GspComponent, GspComponentConvertor, DefaultGspComponentSerializeContext } from '@gsp-cmp/common-component';
import { WebServiceComponentSerializerContext } from '@gsp-cmp/wscmp-models';
import { CommonModule } from '@angular/common';
import { FarrisDialogModule } from '@farris/ui-dialog';
import { MessagerService, MessagerModule } from '@farris/ui-messager';
import { NotifyService, NotifyModule } from '@farris/ui-notify';
import { DatagridModule } from '@farris/ui-datagrid';
import { BsModalService, ModalModule } from '@farris/ui-modal';
import { HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { BasePathService } from '@farris/rtf';
import { Injectable, Pipe, NgModule, Injector, EventEmitter, ComponentFactoryResolver, Component, Input, Output, ViewChild, defineInjectable, inject, INJECTOR } from '@angular/core';
/**
* @fileoverview added by tsickle
* Generated from: lib/i18n/assets/en.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const EnI18nSource = {
'operation_code': 'Operation Code',
'operation_name': 'Operation Name',
'operation_list': 'Operation List',
'operation_choose': 'Please select a widget action',
'confirm': 'OK',
'cancel': 'Cancel'
};
/**
* @fileoverview added by tsickle
* Generated from: lib/i18n/assets/zh-CHS.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const ZHCHSI18nSource = {
'operation_code': '操作编号',
'operation_name': '操作名称',
'operation_list': '操作列表',
'operation_choose': '请选择构件操作',
'confirm': '确定',
'cancel': '取消'
};
/**
* @fileoverview added by tsickle
* Generated from: lib/i18n/assets/zh-CHT.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const ZHCHTI18nSource = {
'operation_code': '操作編號',
'operation_name': '操作名稱',
'operation_list': '操作列表',
'operation_choose': '請選擇構件操作',
'confirm': '確定',
'cancel': '取消'
};
/**
* @fileoverview added by tsickle
* Generated from: lib/i18n/i18n-translate-service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class LangCode {
}
LangCode.en = 'en';
LangCode.zhCHS = 'zh-CHS';
LangCode.zhCHT = 'zh-CHT';
class I18nTranslateService {
/**
* @param {?} notify
*/
constructor(notify) {
this.notify = notify;
this.i18nSource = new Map();
/** @type {?} */
const localLang = notify.localeService.localeId;
this.langCode = localLang ? localLang : LangCode.zhCHS;
this.i18nSource.set(LangCode.en, EnI18nSource);
this.i18nSource.set(LangCode.zhCHS, ZHCHSI18nSource);
this.i18nSource.set(LangCode.zhCHT, ZHCHTI18nSource);
}
/**
* @param {?} value
* @return {?}
*/
instant(value) {
if (!value) {
return '';
}
/** @type {?} */
const i18nValue = this.getI18nValue(value);
// 未获取到则返回传入的值
if (!i18nValue) {
return value;
}
return i18nValue;
}
/**
* 读取配置文件中的国际化资源,未获取到则返回''
* @private
* @param {?} value
* @return {?}
*/
getI18nValue(value) {
/** @type {?} */
const i18nSource = this.i18nSource.get(this.langCode);
return i18nSource ? i18nSource[value] : '';
}
}
/**
* @fileoverview added by tsickle
* Generated from: lib/view-utils/view-utils.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class ViewUtils {
/**
* @param {?} messagerService
* @param {?} notify
*/
constructor(messagerService, notify) {
this.messagerService = messagerService;
this.notify = notify;
this.translateService = new I18nTranslateService(notify);
}
/**
* 获取模态框配置信息
* @param {?} btnRef 按钮模板引用
* @param {?=} options 配置项,暂未使用
* @return {?}
*/
getModalConfig(btnRef, options) {
return {
title: (options && options.title) ? options.title : this.translateService.instant('operation_list'),
width: (options && options.width) ? options.width : 450,
height: (options && options.height) ? options.width : 500,
resizable: (options && options.resizable) ? options.resizable : true,
showButtons: true,
showMaxButton: false,
enableScroll: false,
buttons: btnRef
};
}
/**
* @param {?} data
* @return {?}
*/
showObseleteDialog(data) {
this.messagerService.show('warning', `通用构件${data.code}已过时!
升级步骤:
1. 重新定义通用构件元数据;
2. 开发新版本构件代码。
请参考GSPCloud开发文档->高级开发->构件开发->通用构件开发`, { safeHtml: false });
}
/**
* @param {?} message
* @param {?} infoType
* @param {?} title
* @param {?} timeout
* @return {?}
*/
showInfo(message, infoType, title, timeout) {
this.notify.config.position = 'top-center';
if (infoType == 'success') {
this.notify.success((/** @type {?} */ ({ title: title, msg: message, timeout: timeout })));
}
else if (infoType == 'info') {
this.notify.info((/** @type {?} */ ({ title: title, msg: message, timeout: timeout })));
}
else if (infoType == 'warning') {
this.notify.warning((/** @type {?} */ ({ title: title, msg: message, timeout: timeout })));
}
else if (infoType == 'error') {
this.notify.error((/** @type {?} */ ({ title: title, msg: message, timeout: timeout })));
}
}
}
ViewUtils.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
ViewUtils.ctorParameters = () => [
{ type: MessagerService },
{ type: NotifyService }
];
/** @nocollapse */ ViewUtils.ngInjectableDef = defineInjectable({ factory: function ViewUtils_Factory() { return new ViewUtils(inject(MessagerService), inject(NotifyService)); }, token: ViewUtils, providedIn: "root" });
/**
* @fileoverview added by tsickle
* Generated from: lib/convertor/convertor.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class ComponentConvertor {
/**
* @param {?} entity
* @param {?} ctx
* @return {?}
*/
convertorToObject(entity, ctx) {
/** @type {?} */
let covertor = new GspComponentConvertor();
/** @type {?} */
let obj = new Object();
covertor.convertToObject(obj, entity, ctx);
return obj;
}
/**
* @param {?} obj
* @param {?} ctx
* @return {?}
*/
initFromObject(obj, ctx) {
/** @type {?} */
let covertor = new GspComponentConvertor();
/** @type {?} */
let entity = new GspComponent();
covertor.initFromObject(entity, obj, ctx);
return entity;
}
}
/**
* @fileoverview added by tsickle
* Generated from: lib/params/component-info.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class ComponentInfo {
/**
* @param {?} obj
* @return {?}
*/
init(obj) {
this.id = obj['id'];
this.obselete = obj['obselete'];
this.code = obj['code'];
this.name = obj['name'];
this.nameSpace = obj['nameSpace'];
this.fileName = obj['fileName'];
this.type = obj['type'];
this.bizobjectID = obj['bizobjectID'];
this.language = obj['language'];
if (obj['metadata']) {
/** @type {?} */
let convertor = new ComponentConvertor();
switch (this.type) {
case 'CommonComponent':
/** @type {?} */
let ctx = new DefaultGspComponentSerializeContext();
this.metadata = convertor.initFromObject(obj['metadata'], ctx);
break;
case 'WebServiceComponent':
/** @type {?} */
let ctx1 = new WebServiceComponentSerializerContext();
this.metadata = convertor.initFromObject(obj['metadata'], ctx1);
break;
default:
throw new Error('不支持的构件类型' + this.type);
}
}
}
}
/**
* @fileoverview added by tsickle
* Generated from: lib/ccmp-selector/common-component-selector.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class CommonComponentSelectorComponent {
/**
* @param {?} utils
*/
constructor(utils) {
this.utils = utils;
this.selectedIds = [];
this.columns = [];
this.multiSelection = false;
this.confirmEmitter = new EventEmitter();
this.closeEmitter = new EventEmitter();
}
/**
* @param {?} _componentInfo
* @return {?}
*/
set componentInfo(_componentInfo) {
this._componentInfo = _componentInfo;
switch (this._componentInfo.type) {
case 'CommonComponent':
this.CommonComponentInit(this._componentInfo);
break;
case 'WebServiceComponent':
this.WebServiceComponentInit(this._componentInfo);
break;
default:
throw new Error('不支持的构件类型' + this._componentInfo.type);
}
}
/**
* @param {?} options
* @return {?}
*/
set _options(options) {
this.multiSelection = options && options.multiSelection || false;
}
/**
* @return {?}
*/
ngOnInit() {
this._componentInfo = this._componentInfo || new ComponentInfo();
this.columnsInit();
}
/**
* @return {?}
*/
columnsInit() {
this.columns = [
{ field: 'code', width: 100, title: this.utils.translateService.instant('operation_code') },
{ field: 'name', width: 100, title: this.utils.translateService.instant('operation_name') },
];
}
/**
* @param {?} _componentInfo
* @return {?}
*/
CommonComponentInit(_componentInfo) {
/** @type {?} */
let convertor = new ComponentConvertor();
/** @type {?} */
let ctx = new DefaultGspComponentSerializeContext();
this.metadata = convertor.initFromObject(convertor.convertorToObject(_componentInfo.metadata, ctx), ctx);
this.metadata.operations = new Array();
}
/**
* @param {?} _componentInfo
* @return {?}
*/
WebServiceComponentInit(_componentInfo) {
/** @type {?} */
let convertor = new ComponentConvertor();
/** @type {?} */
let ctx = new WebServiceComponentSerializerContext();
this.metadata = convertor.initFromObject(convertor.convertorToObject(_componentInfo.metadata, ctx), ctx);
this.metadata.operations = new Array();
}
/**
* @return {?}
*/
confirm() {
if (this.selectedIds.length <= 0) {
this.utils.showInfo(this.utils.translateService.instant('operation_choose'), 'info', '', 1500);
return;
}
this.metadata.operations = [];
this.selectedIds.map((/**
* @param {?} x
* @return {?}
*/
x => {
/** @type {?} */
let operation = this._componentInfo.metadata.operations.find((/**
* @param {?} op
* @return {?}
*/
op => op.code === x));
if (operation) {
this.metadata.operations.push(operation);
}
}));
if (this.dialog) {
this.dialog.close();
}
this.confirmEmitter.emit(this.metadata);
this.selectedIds = [];
}
/**
* @return {?}
*/
close() {
if (this.dialog) {
this.dialog.close();
}
this.closeEmitter.emit();
}
/**
* @param {?} row
* @return {?}
*/
checkedHandler(row) {
/** @type {?} */
let index = this.selectedIds.findIndex((/**
* @param {?} x
* @return {?}
*/
x => x === row.id));
if (index == (-1)) {
this.selectedIds.push(row.id);
}
}
/**
* @param {?} row
* @return {?}
*/
unCheckedHandler(row) {
/** @type {?} */
let index = this.selectedIds.findIndex((/**
* @param {?} x
* @return {?}
*/
x => x === row.id));
if (index !== (-1)) {
this.selectedIds.splice(index, 1);
}
}
/**
* @param {?} rows
* @return {?}
*/
checkAllHandler(rows) {
if (rows && rows.length > 0) {
rows.forEach((/**
* @param {?} row
* @return {?}
*/
row => {
/** @type {?} */
let index = this.selectedIds.findIndex((/**
* @param {?} x
* @return {?}
*/
x => x === row.id));
if (index == (-1)) {
this.selectedIds.push(row.id);
}
}));
}
}
/**
* @param {?} rows
* @return {?}
*/
unCheckAllHandler(rows) {
if (rows && rows.length > 0) {
rows.forEach((/**
* @param {?} row
* @return {?}
*/
row => {
/** @type {?} */
let index = this.selectedIds.findIndex((/**
* @param {?} x
* @return {?}
*/
x => x === row.id));
if (index !== (-1)) {
this.selectedIds.splice(index, 1);
}
}));
}
}
}
CommonComponentSelectorComponent.decorators = [
{ type: Component, args: [{
selector: 'common-component-selector',
template: "<div class=\"d-flex\" style=\"position: absolute;top: 0;bottom: 0;left: 0;right: 0;\">\r\n <div class=\"f-utils-fill selector-modal\">\r\n <farris-datagrid #dg=\"datagrid\" [showLineNumber]=\"true\" [fit]=\"true\" [pagination]=\"true\" [virtualized]=\"false\"\r\n [fitColumns]=\"true\" [showAllCheckbox]=\"true\" [selectOnCheck]=\"true\" [showCheckbox]=\"true\" [idField]=\"'code'\"\r\n [multiSelect]=\"multiSelection\" [showPageList]=\"true\" [onlySelectSelf]=\"true\" [columns]=\"columns\" [data]=\"_componentInfo.metadata.operations\"\r\n (checkAll)=\"checkAllHandler($event)\" (unCheckAll)=\"unCheckAllHandler($event)\" (checked)=\"checkedHandler($event)\" (unChecked)=\"unCheckedHandler($event)\">\r\n </farris-datagrid>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #btnRef>\r\n <div style=\"width: 100%;line-height: 50px; text-align: center;min-width: 140px;\"> \r\n <button class=\"btn btn-primary\" (click)=confirm() style=\"float:right;margin-right: 5px\">{{'confirm'|i18n}}</button>\r\n <button class=\"btn btn-secondary\" (click)=\"close()\" style=\"float:right;margin-right: 5px\">{{'cancel'|i18n}}</button>\r\n </div>\r\n</ng-template>",
styles: [".selector-modal{padding:0 8px;width:100%;display:flex}"]
}] }
];
/** @nocollapse */
CommonComponentSelectorComponent.ctorParameters = () => [
{ type: ViewUtils }
];
CommonComponentSelectorComponent.propDecorators = {
componentInfo: [{ type: Input }],
dg: [{ type: ViewChild, args: ['dg',] }],
btnRef: [{ type: ViewChild, args: ['btnRef',] }],
confirmEmitter: [{ type: Output }],
closeEmitter: [{ type: Output }]
};
/**
* @fileoverview added by tsickle
* Generated from: lib/ccmp-ui.rt-service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class CommonComponentUiRTService {
/**
* @param {?} resolver
* @param {?} injector
* @param {?} util
* @param {?} modalService
* @param {?} http
*/
constructor(resolver, injector, util, modalService, http) {
this.resolver = resolver;
this.injector = injector;
this.util = util;
this.modalService = modalService;
this.http = http;
}
/**
* 通用构件操作选择器
* @param {?} metadataId 通用构件元数据
* @param {?} sessionId 功能sessionId
* @param {?=} options UI可选配置参数
* @return {?}
*/
openSelector(metadataId, sessionId, options) {
return this.getComponentInfo(metadataId, sessionId).pipe(map((/**
* @param {?} data
* @return {?}
*/
(data) => {
if (data.obselete) {
this.util.showObseleteDialog(data);
return { confirmEvent: new EventEmitter(), closeEvent: new EventEmitter() };
}
else {
return this.create(data, options);
}
})));
}
/**
* 获取构件信息
* @param {?} metadataId 构件元数据ID
* @param {?} sessionId 功能sessionid
* @return {?}
*/
getComponentInfo(metadataId, sessionId) {
/** @type {?} */
let headers = new HttpHeaders();
headers.set("sessionId", sessionId);
/** @type {?} */
let url = `/api/runtime/sys/v1.0/common-component/component-info/${metadataId}`;
return this.http.get(BasePathService.convertPath(url), { headers: headers }).pipe(map((/**
* @param {?} data
* @return {?}
*/
data => {
if (data) {
/** @type {?} */
let cmpInfo = new ComponentInfo();
cmpInfo.init(data);
return cmpInfo;
}
})));
}
/**
* @private
* @param {?} componentInfo
* @param {?} options
* @return {?}
*/
create(componentInfo, options) {
/** @type {?} */
let fac = this.resolver.resolveComponentFactory(CommonComponentSelectorComponent);
/** @type {?} */
let cmpRef = fac.create(this.injector);
cmpRef.instance.componentInfo = componentInfo;
cmpRef.instance._options = options;
/** @type {?} */
let modalConfig = this.util.getModalConfig(cmpRef.instance.btnRef, options);
/** @type {?} */
let dialog = this.modalService.show(cmpRef, modalConfig);
cmpRef.instance.dialog = dialog;
return { confirmEvent: cmpRef.instance.confirmEmitter, closeEvent: cmpRef.instance.closeEmitter };
}
}
CommonComponentUiRTService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
CommonComponentUiRTService.ctorParameters = () => [
{ type: ComponentFactoryResolver },
{ type: Injector },
{ type: ViewUtils },
{ type: BsModalService },
{ type: HttpClient }
];
/** @nocollapse */ CommonComponentUiRTService.ngInjectableDef = defineInjectable({ factory: function CommonComponentUiRTService_Factory() { return new CommonComponentUiRTService(inject(ComponentFactoryResolver), inject(INJECTOR), inject(ViewUtils), inject(BsModalService), inject(HttpClient)); }, token: CommonComponentUiRTService, providedIn: "root" });
/**
* @fileoverview added by tsickle
* Generated from: lib/ccmp-ui.dt-service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class CommonComponentUiDTService {
/**
* @param {?} resolver
* @param {?} injector
* @param {?} util
* @param {?} modalService
* @param {?} http
*/
constructor(resolver, injector, util, modalService, http) {
this.resolver = resolver;
this.injector = injector;
this.util = util;
this.modalService = modalService;
this.http = http;
}
/**
* 通用构件操作选择器
* @param {?} metadataId 通用构件元数据
* @param {?} sessionId 功能sessionId
* @param {?=} options UI可选配置参数
* @return {?}
*/
openSelector(metadataId, sessionId, options) {
return this.getComponentInfo(metadataId, sessionId).pipe(map((/**
* @param {?} data
* @return {?}
*/
(data) => {
if (data.obselete) {
this.util.showObseleteDialog(data);
return { confirmEvent: new EventEmitter(), closeEvent: new EventEmitter() };
}
else {
return this.create(data, options);
}
})));
}
/**
* 获取构件信息
* @param {?} metadataId 构件元数据ID
* @param {?} sessionId 功能sessionid
* @return {?}
*/
getComponentInfo(metadataId, sessionId) {
/** @type {?} */
let headers = new HttpHeaders();
headers.set("sessionId", sessionId);
/** @type {?} */
let url = `/api/dev/main/v1.0/common-component/component-info/${metadataId}`;
return this.http.get(BasePathService.convertPath(url), { headers: headers }).pipe(map((/**
* @param {?} data
* @return {?}
*/
data => {
if (data) {
/** @type {?} */
let cmpInfo = new ComponentInfo();
cmpInfo.init(data);
return cmpInfo;
}
})));
}
/**
* @private
* @param {?} componentInfo
* @param {?} options
* @return {?}
*/
create(componentInfo, options) {
/** @type {?} */
let fac = this.resolver.resolveComponentFactory(CommonComponentSelectorComponent);
/** @type {?} */
let cmpRef = fac.create(this.injector);
cmpRef.instance._options = options;
cmpRef.instance.componentInfo = componentInfo;
/** @type {?} */
let modalConfig = this.util.getModalConfig(cmpRef.instance.btnRef, options);
/** @type {?} */
let dialog = this.modalService.show(cmpRef, modalConfig);
cmpRef.instance.dialog = dialog;
return { confirmEvent: cmpRef.instance.confirmEmitter, closeEvent: cmpRef.instance.closeEmitter };
}
}
CommonComponentUiDTService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
CommonComponentUiDTService.ctorParameters = () => [
{ type: ComponentFactoryResolver },
{ type: Injector },
{ type: ViewUtils },
{ type: BsModalService },
{ type: HttpClient }
];
/** @nocollapse */ CommonComponentUiDTService.ngInjectableDef = defineInjectable({ factory: function CommonComponentUiDTService_Factory() { return new CommonComponentUiDTService(inject(ComponentFactoryResolver), inject(INJECTOR), inject(ViewUtils), inject(BsModalService), inject(HttpClient)); }, token: CommonComponentUiDTService, providedIn: "root" });
/**
* @fileoverview added by tsickle
* Generated from: lib/i18n/i18n-tranalate.pipe.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class I18nTranslatePipe {
/**
* @param {?} utils
*/
constructor(utils) {
this.utils = utils;
}
/**
* @param {?} value
* @return {?}
*/
transform(value) {
/** @type {?} */
const i18nValue = this.utils.translateService.instant(value);
return i18nValue;
}
}
I18nTranslatePipe.decorators = [
{ type: Pipe, args: [{ name: 'i18n' },] }
];
/** @nocollapse */
I18nTranslatePipe.ctorParameters = () => [
{ type: ViewUtils }
];
/**
* @fileoverview added by tsickle
* Generated from: lib/ccmp-ui.module.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class CommonComponentUiModule {
}
CommonComponentUiModule.decorators = [
{ type: NgModule, args: [{
declarations: [
CommonComponentSelectorComponent,
I18nTranslatePipe
],
imports: [
NotifyModule,
CommonModule,
HttpClientModule,
ModalModule.forRoot(),
FarrisDialogModule,
DatagridModule,
MessagerModule.forRoot(),
],
entryComponents: [CommonComponentSelectorComponent],
providers: [
CommonComponentUiRTService,
CommonComponentUiDTService,
ViewUtils
],
exports: [CommonComponentSelectorComponent]
},] }
];
/**
* @fileoverview added by tsickle
* Generated from: lib/params/selector-result.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* 选择器返回结果
*/
class SelectorResult {
}
/**
* @fileoverview added by tsickle
* Generated from: public-api.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* Generated from: gsp-cmp-ccmp-ui.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { CommonComponentUiModule, CommonComponentSelectorComponent, CommonComponentUiRTService, CommonComponentUiDTService, SelectorResult, I18nTranslatePipe as ɵb, ViewUtils as ɵa };
//# sourceMappingURL=gsp-cmp-ccmp-ui.js.map