@ecip/auth
Version:
223 lines • 17.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, ViewChild } from '@angular/core';
import { NzMessageService, NzModalRef } from 'ng-zorro-antd';
import { SFComponent } from '@delon/form';
import { DictService, DataSourceService } from "@ecip/service";
import { map } from "rxjs/operators";
export class AuthDataSourceEditComponent {
/**
* @param {?} modal
* @param {?} dataSourceService
* @param {?} messageService
* @param {?} dictService
*/
constructor(modal, dataSourceService, messageService, dictService) {
this.modal = modal;
this.dataSourceService = dataSourceService;
this.messageService = messageService;
this.dictService = dictService;
this.title = '编辑数据源';
this.schema = {
properties: {
dsName: {
type: 'string',
title: '数据源名称',
ui: {
//异步验证:判断是否已经存在相同数据源名称的记录,
//如果是修改数据源,和自己原本的数据源名称相同则忽略
validator: (/**
* @param {?} value
* @return {?}
*/
(value) => this.dataSourceService.existsDsName(value)
.pipe(map((/**
* @param {?} res
* @return {?}
*/
res => (res && (this.isNew || this.record.dsName != value)) ? [{ keyword: 'required', message: '数据源名已存在' }] : []))))
}
},
dbType: {
type: "string",
title: '数据库类型',
default: '',
ui: {
widget: 'select'
}
},
dbName: {
type: 'string',
title: '数据库名'
},
url: {
type: 'string',
title: '协议(URL前缀)'
},
ip: {
type: 'string',
title: '主机(IP或域名)'
},
port: {
type: 'number',
title: '端口号',
ui: {
widget: 'string',
}
},
username: {
type: 'string',
title: '用户名'
},
password: {
type: 'string',
title: '密码',
ui: {
widget: 'string',
type: 'password'
}
},
},
required: ['dsName', 'dbType', 'dbName', 'url', 'ip', 'port', 'username', 'password'],
};
this.ui = {
'*': {
grid: { span: 18, offset: 2 },
},
};
}
/**
* @return {?}
*/
ngOnInit() {
if (this.isNew === true) {
this.title = '新建数据源';
}
}
/**
* @return {?}
*/
ngAfterViewInit() {
//异步渲染下拉框
this.dictService.getTypeList('dbType').subscribe((/**
* @param {?} res
* @return {?}
*/
(res) => {
this.sf.schema.properties.dbType.enum = [{ value: '', label: '请选择' }].concat(res);
this.sf.refreshSchema();
}));
}
/**
* @param {?} dataSource
* @return {?}
*/
submit(dataSource) {
if (this.isNew === true) {
this.create(dataSource);
}
else {
this.update(dataSource);
}
}
/**
* @param {?} dataSource
* @return {?}
*/
create(dataSource) {
this.dataSourceService.post(dataSource).subscribe((/**
* @return {?}
*/
() => {
this.modal.close(true);
}));
}
/**
* @param {?} dataSource
* @return {?}
*/
update(dataSource) {
this.dataSourceService.put(this.record.id, dataSource).subscribe((/**
* @return {?}
*/
() => {
this.modal.close(true);
}));
}
/**
* @param {?} dataSource
* @return {?}
*/
testConnection(dataSource) {
this.dataSourceService.testConnection(dataSource).subscribe((/**
* @param {?} res
* @return {?}
*/
res => {
if (res.body === true) {
this.messageService.success("连接成功");
}
else {
this.messageService.error("连接失败");
}
}));
}
/**
* @return {?}
*/
close() {
this.modal.destroy();
}
}
AuthDataSourceEditComponent.decorators = [
{ type: Component, args: [{
selector: 'app-auth-ds-edit',
template: "<div class=\"modal-header\">\r\n <div class=\"modal-title\">{{title}}</div>\r\n</div>\r\n<nz-spin *ngIf=\"!isNew&&!record\"></nz-spin>\r\n<sf #sf mode=\"default\" [schema]=\"schema\" [ui]=\"ui\" [formData]=\"record\" button=\"none\">\r\n <div class=\"modal-footer\">\r\n <button nz-button type=\"button\" nzType=\"primary\" (click)=\"testConnection(sf.value)\" [disabled]=\"!sf.valid\" [nzLoading]=\"dataSourceService.http.loading\">\u6D4B\u8BD5\u8FDE\u63A5</button>\r\n <button nz-button type=\"submit\" nzType=\"primary\" (click)=\"submit(sf.value)\" [disabled]=\"!sf.valid\" [nzLoading]=\"dataSourceService.http.loading\">\u4FDD\u5B58</button>\r\n <button nz-button type=\"button\" (click)=\"close()\">\u53D6\u6D88</button>\r\n </div>\r\n</sf>\r\n"
}] }
];
/** @nocollapse */
AuthDataSourceEditComponent.ctorParameters = () => [
{ type: NzModalRef },
{ type: DataSourceService },
{ type: NzMessageService },
{ type: DictService }
];
AuthDataSourceEditComponent.propDecorators = {
sf: [{ type: ViewChild, args: ['sf',] }],
record: [{ type: Input }],
isNew: [{ type: Input }]
};
if (false) {
/** @type {?} */
AuthDataSourceEditComponent.prototype.sf;
/** @type {?} */
AuthDataSourceEditComponent.prototype.record;
/** @type {?} */
AuthDataSourceEditComponent.prototype.isNew;
/** @type {?} */
AuthDataSourceEditComponent.prototype.title;
/** @type {?} */
AuthDataSourceEditComponent.prototype.schema;
/** @type {?} */
AuthDataSourceEditComponent.prototype.ui;
/**
* @type {?}
* @private
*/
AuthDataSourceEditComponent.prototype.modal;
/** @type {?} */
AuthDataSourceEditComponent.prototype.dataSourceService;
/**
* @type {?}
* @private
*/
AuthDataSourceEditComponent.prototype.messageService;
/**
* @type {?}
* @private
*/
AuthDataSourceEditComponent.prototype.dictService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHNlZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BlY2lwL2F1dGgvIiwic291cmNlcyI6WyJzcmMvZGF0YXNvdXJjZS9lZGl0L2RzZWRpdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBd0IsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFNbkMsTUFBTSxPQUFPLDJCQUEyQjs7Ozs7OztJQTJFdEMsWUFDVSxLQUFpQixFQUNsQixpQkFBbUMsRUFDbEMsY0FBK0IsRUFDL0IsV0FBdUI7UUFIdkIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXBFakMsVUFBSyxHQUFDLE9BQU8sQ0FBQztRQUVkLFdBQU0sR0FBYTtZQUNqQixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFO29CQUNOLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxPQUFPO29CQUNkLEVBQUUsRUFBQzs7O3dCQUdELFNBQVM7Ozs7d0JBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDOzZCQUNsRSxJQUFJLENBQUUsR0FBRzs7Ozt3QkFBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOek1lc3NhZ2VTZXJ2aWNlLCBOek1vZGFsUmVmIH0gZnJvbSAnbmctem9ycm8tYW50ZCc7XHJcbmltcG9ydCB7IFNGQ29tcG9uZW50LCBTRlNjaGVtYSwgU0ZVSVNjaGVtYSB9IGZyb20gJ0BkZWxvbi9mb3JtJztcclxuaW1wb3J0IHsgRGljdFNlcnZpY2UsIERhdGFTb3VyY2VTZXJ2aWNlIH0gZnJvbSBcIkBlY2lwL3NlcnZpY2VcIjtcclxuaW1wb3J0IHttYXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYXV0aC1kcy1lZGl0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHNlZGl0LmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhEYXRhU291cmNlRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2YnKVxyXG4gIHNmOlNGQ29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJlY29yZDogYW55IDtcclxuXHJcbiAgQElucHV0KClcclxuICBpc05ldzogYm9vbGVhbiA7XHJcblxyXG4gIHRpdGxlPSfnvJbovpHmlbDmja7mupAnO1xyXG5cclxuICBzY2hlbWE6IFNGU2NoZW1hID0ge1xyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgICBkc05hbWU6IHtcclxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgICB0aXRsZTogJ+aVsOaNrua6kOWQjeensCcsXHJcbiAgICAgICAgdWk6e1xyXG4gICAgICAgICAgLy/lvILmraXpqozor4HvvJrliKTmlq3mmK/lkKblt7Lnu4/lrZjlnKjnm7jlkIzmlbDmja7mupDlkI3np7DnmoTorrDlvZXvvIxcclxuICAgICAgICAgIC8v5aaC5p6c5piv5L+u5pS55pWw5o2u5rqQ77yM5ZKM6Ieq5bex5Y6f5pys55qE5pWw5o2u5rqQ5ZCN56ew55u45ZCM5YiZ5b+955WlXHJcbiAgICAgICAgICB2YWxpZGF0b3I6ICh2YWx1ZTogYW55KSA9PiB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLmV4aXN0c0RzTmFtZSh2YWx1ZSlcclxuICAgICAgICAgICAgLnBpcGUoIG1hcChyZXMgPT4gKHJlcyAmJiAodGhpcy5pc05ldyB8fCB0aGlzLnJlY29yZC5kc05hbWUhPXZhbHVlKSkgPyBbIHsga2V5d29yZDogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ+aVsOaNrua6kOWQjeW3suWtmOWcqCd9IF0gOiBbXSkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkYlR5cGU6IHtcclxuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgIHRpdGxlOiAn5pWw5o2u5bqT57G75Z6LJyxcclxuICAgICAgICBkZWZhdWx0OiAnJyxcclxuICAgICAgICB1aToge1xyXG4gICAgICAgICAgd2lkZ2V0OiAnc2VsZWN0J1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZGJOYW1lOiB7XHJcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgdGl0bGU6ICfmlbDmja7lupPlkI0nXHJcbiAgICAgIH0sXHJcbiAgICAgIHVybDoge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn5Y2P6K6uKFVSTOWJjee8gCknXHJcbiAgICAgIH0sXHJcbiAgICAgIGlwOiB7XHJcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgdGl0bGU6ICfkuLvmnLooSVDmiJbln5/lkI0pJ1xyXG4gICAgICB9LFxyXG4gICAgICBwb3J0OiB7XHJcbiAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgdGl0bGU6ICfnq6/lj6Plj7cnLFxyXG4gICAgICAgIHVpOntcclxuICAgICAgICAgIHdpZGdldDogJ3N0cmluZycsXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB1c2VybmFtZToge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn55So5oi35ZCNJ1xyXG4gICAgICB9LFxyXG4gICAgICBwYXNzd29yZDoge1xyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIHRpdGxlOiAn5a+G56CBJyxcclxuICAgICAgICB1aTp7XHJcbiAgICAgICAgICB3aWRnZXQ6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICByZXF1aXJlZDogWydkc05hbWUnLCdkYlR5cGUnLCdkYk5hbWUnLCd1cmwnLCdpcCcsJ3BvcnQnLCd1c2VybmFtZScsJ3Bhc3N3b3JkJ10sXHJcblxyXG4gIH07XHJcblxyXG4gIHVpOiBTRlVJU2NoZW1hID0ge1xyXG4gICAgJyonOiB7XHJcbiAgICAgIGdyaWQ6IHsgc3BhbjogMTgsIG9mZnNldDogMiB9LFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWw6IE56TW9kYWxSZWYsXHJcbiAgICBwdWJsaWMgZGF0YVNvdXJjZVNlcnZpY2U6RGF0YVNvdXJjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOk56TWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpY3RTZXJ2aWNlOkRpY3RTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuaXNOZXc9PT10cnVlKXtcclxuICAgICAgdGhpcy50aXRsZT0n5paw5bu65pWw5o2u5rqQJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8v5byC5q2l5riy5p+T5LiL5ouJ5qGGXHJcbiAgICB0aGlzLmRpY3RTZXJ2aWNlLmdldFR5cGVMaXN0KCdkYlR5cGUnKS5zdWJzY3JpYmUoKHJlczp7dmFsdWUsIGxhYmVsfVtdKT0+e1xyXG4gICAgICB0aGlzLnNmLnNjaGVtYS5wcm9wZXJ0aWVzLmRiVHlwZS5lbnVtID0gW3t2YWx1ZTonJywgbGFiZWw6J+ivt+mAieaLqSd9XS5jb25jYXQocmVzKTtcclxuICAgICAgdGhpcy5zZi5yZWZyZXNoU2NoZW1hKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBzdWJtaXQoZGF0YVNvdXJjZTphbnkpe1xyXG4gICAgaWYodGhpcy5pc05ldz09PXRydWUpe1xyXG4gICAgICB0aGlzLmNyZWF0ZShkYXRhU291cmNlKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnVwZGF0ZShkYXRhU291cmNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZShkYXRhU291cmNlOiBhbnkpIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UucG9zdChkYXRhU291cmNlKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsLmNsb3NlKHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUoZGF0YVNvdXJjZTogYW55KSB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlLnB1dCh0aGlzLnJlY29yZC5pZCwgZGF0YVNvdXJjZSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbC5jbG9zZSh0cnVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdGVzdENvbm5lY3Rpb24oZGF0YVNvdXJjZTogYW55KXtcclxuICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2UudGVzdENvbm5lY3Rpb24oZGF0YVNvdXJjZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGlmKHJlcy5ib2R5PT09dHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFwi6L+e5o6l5oiQ5YqfXCIpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFwi6L+e5o6l5aSx6LSlXCIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5tb2RhbC5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=