UNPKG

geminis-ng

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.14.

149 lines 17.4 kB
import { ChangeDetectorRef, Directive, ElementRef, Input, Optional, Renderer2 } from '@angular/core'; import { ControlContainer, FormGroup, FormGroupDirective } from '@angular/forms'; import { HttpClient } from '@angular/common/http'; import { NzModalRef } from 'ng-zorro-antd/modal'; import { GnJsonUtils, GnObjectUtils } from 'geminis-ng-core'; export function controlContainerFactory() { const formGroupDirective = new FormGroupDirective([], []); formGroupDirective.form = new FormGroup({}); return formGroupDirective; } export class GnFormDirective { constructor(controlContainer, elementRef, renderer, http, changeDetectorRef, modalRef) { this.controlContainer = controlContainer; this.elementRef = elementRef; this.renderer = renderer; this.http = http; this.changeDetectorRef = changeDetectorRef; this.binded = false; this.labelWidth = 6; this.controlWidth = 18; this.autoLoadData = true; this.submitMethod = 'put'; this.loadMethod = 'post'; this.format = 'json'; this.formGroup = controlContainer.control; this.formGroup.valueChanges.subscribe(newValue => { if (modalRef) { modalRef.updateConfig({ nzOkDisabled: this.formGroup.invalid }); } if (this.innerBindValue && this.binded) { Object.assign(this.innerBindValue, newValue); } }); } set cols(value) { this.colsValue = value; if (!this.colsValue || this.colsValue < 1) { return; } this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'grid'); this.renderer.setStyle(this.elementRef.nativeElement, 'grid-template-columns', 'repeat(' + this.colsValue + ', 1fr)'); } get cols() { return this.colsValue; } set bindValue(value) { this.binded = false; this.innerBindValue = value; this.formGroup.patchValue(value); this.binded = true; } setValue(value) { this.defaultValue = value; this.formGroup.patchValue(value); } get submitValue() { let submitValue; if (this.defaultValue) { submitValue = Object.assign(GnObjectUtils.deepCopy(this.defaultValue), this.formGroup.value); } else { submitValue = this.formGroup.value; } if (this.format === 'form') { submitValue = GnJsonUtils.obj2FormData(submitValue); } return submitValue; } submit() { if (!this.url) { return Promise.resolve(this.submitValue); } else { const options = Object.assign({ body: this.submitValue }, this.submitOptions); return this.http.request(this.submitMethod, this.url, options).toPromise(); } } loadData() { if (!this.url || !this.dataId) { if (this.defaultValue) { this.formGroup.patchValue(this.defaultValue); } return Promise.resolve(null); } const queryParameter = { pageSize: 1, pageIndex: 0, includes: this.dataIncludes, filterGroup: { type: 'and', filters: [{ field: this.dataKey, compareType: '=', value: this.dataId }] } }; const options = Object.assign({ body: queryParameter }, this.loadOptions); return this.http.request(this.loadMethod, this.url, options) .toPromise() .then((resp) => { if (resp.content.length === 0) { throw new Error(`未找到数据[${this.dataId}]`); } this.defaultValue = this.defaultValue || {}; Object.assign(this.defaultValue, resp.content[0]); this.formGroup.patchValue(this.defaultValue); return this.defaultValue; }); } ngOnInit() { if (this.autoLoadData) { this.loadData(); } } ngAfterViewInit() { this.changeDetectorRef.detectChanges(); } } GnFormDirective.decorators = [ { type: Directive, args: [{ selector: '[gn-form]', providers: [ { provide: ControlContainer, useFactory: controlContainerFactory } ] },] } ]; GnFormDirective.ctorParameters = () => [ { type: ControlContainer }, { type: ElementRef }, { type: Renderer2 }, { type: HttpClient }, { type: ChangeDetectorRef }, { type: NzModalRef, decorators: [{ type: Optional }] } ]; GnFormDirective.propDecorators = { url: [{ type: Input }], labelWidth: [{ type: Input }], controlWidth: [{ type: Input }], dataId: [{ type: Input }], dataKey: [{ type: Input }], dataIncludes: [{ type: Input }], autoLoadData: [{ type: Input }], submitMethod: [{ type: Input }], loadMethod: [{ type: Input }], format: [{ type: Input }], submitOptions: [{ type: Input }], loadOptions: [{ type: Input }], defaultValue: [{ type: Input }], cols: [{ type: Input }], bindValue: [{ type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW1pbmlzLW5nL3NyYy9mb3JtL2Zvcm0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsV0FBVyxFQUFFLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTNELE1BQU0sVUFBVSx1QkFBdUI7SUFDckMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsT0FBTyxrQkFBa0IsQ0FBQztBQUM1QixDQUFDO0FBUUQsTUFBTSxPQUFPLGVBQWU7SUEwQzFCLFlBQW9CLGdCQUFrQyxFQUNsQyxVQUFzQixFQUN0QixRQUFtQixFQUNuQixJQUFnQixFQUNoQixpQkFBb0MsRUFDaEMsUUFBb0I7UUFMeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBMUNoRCxXQUFNLEdBQUcsS0FBSyxDQUFD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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge056TW9kYWxSZWZ9IGZyb20gJ25nLXpvcnJvLWFudGQvbW9kYWwnO1xuaW1wb3J0IHtHbkpzb25VdGlscywgR25PYmplY3RVdGlsc30gZnJvbSAnZ2VtaW5pcy1uZy1jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRyb2xDb250YWluZXJGYWN0b3J5KCk6IEZvcm1Hcm91cERpcmVjdGl2ZSB7XG4gIGNvbnN0IGZvcm1Hcm91cERpcmVjdGl2ZSA9IG5ldyBGb3JtR3JvdXBEaXJlY3RpdmUoW10sIFtdKTtcbiAgZm9ybUdyb3VwRGlyZWN0aXZlLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcmV0dXJuIGZvcm1Hcm91cERpcmVjdGl2ZTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2duLWZvcm1dJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUZhY3Rvcnk6IGNvbnRyb2xDb250YWluZXJGYWN0b3J5fVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEduRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHJpdmF0ZSBjb2xzVmFsdWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBpbm5lckJpbmRWYWx1ZTogYW55O1xuICBwcml2YXRlIGJpbmRlZCA9IGZhbHNlO1xuXG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbFdpZHRoID0gNjtcbiAgQElucHV0KCkgY29udHJvbFdpZHRoID0gMTg7XG4gIEBJbnB1dCgpIGRhdGFJZDogc3RyaW5nO1xuICBASW5wdXQoKSBkYXRhS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGFJbmNsdWRlczogc3RyaW5nW107XG4gIEBJbnB1dCgpIGF1dG9Mb2FkRGF0YSA9IHRydWU7XG4gIEBJbnB1dCgpIHN1Ym1pdE1ldGhvZDogJ3Bvc3QnIHwgJ3B1dCcgPSAncHV0JztcbiAgQElucHV0KCkgbG9hZE1ldGhvZDogJ3Bvc3QnIHwgJ3B1dCcgfCAnZ2V0JyA9ICdwb3N0JztcbiAgQElucHV0KCkgZm9ybWF0OiAnanNvbicgfCAnZm9ybScgPSAnanNvbic7XG4gIEBJbnB1dCgpIHN1Ym1pdE9wdGlvbnM6IGFueTtcbiAgQElucHV0KCkgbG9hZE9wdGlvbnM6IGFueTtcbiAgQElucHV0KCkgZGVmYXVsdFZhbHVlOiBhbnk7XG5cbiAgQElucHV0KCkgc2V0IGNvbHModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuY29sc1ZhbHVlID0gdmFsdWU7XG4gICAgaWYgKCF0aGlzLmNvbHNWYWx1ZSB8fCB0aGlzLmNvbHNWYWx1ZSA8IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnZ3JpZCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnLCAncmVwZWF0KCcgKyB0aGlzLmNvbHNWYWx1ZSArICcsIDFmciknKTtcbiAgfVxuXG4gIGdldCBjb2xzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29sc1ZhbHVlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGJpbmRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5iaW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlubmVyQmluZFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5iaW5kZWQgPSB0cnVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgbW9kYWxSZWY6IE56TW9kYWxSZWYpIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IGNvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICBpZiAobW9kYWxSZWYpIHtcbiAgICAgICAgbW9kYWxSZWYudXBkYXRlQ29uZmlnKHtuek9rRGlzYWJsZWQ6IHRoaXMuZm9ybUdyb3VwLmludmFsaWR9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlubmVyQmluZFZhbHVlICYmIHRoaXMuYmluZGVkKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5pbm5lckJpbmRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc3VibWl0VmFsdWUoKTogYW55IHtcbiAgICBsZXQgc3VibWl0VmFsdWU6IGFueTtcblxuICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgc3VibWl0VmFsdWUgPSBPYmplY3QuYXNzaWduKEduT2JqZWN0VXRpbHMuZGVlcENvcHkodGhpcy5kZWZhdWx0VmFsdWUpLCB0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1Ym1pdFZhbHVlID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09PSAnZm9ybScpIHtcbiAgICAgIHN1Ym1pdFZhbHVlID0gR25Kc29uVXRpbHMub2JqMkZvcm1EYXRhKHN1Ym1pdFZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VibWl0VmFsdWU7XG4gIH1cblxuICBzdWJtaXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMudXJsKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc3VibWl0VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7Ym9keTogdGhpcy5zdWJtaXRWYWx1ZX0sIHRoaXMuc3VibWl0T3B0aW9ucyk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3QodGhpcy5zdWJtaXRNZXRob2QsIHRoaXMudXJsLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgICB9XG4gIH1cblxuICBsb2FkRGF0YSgpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghdGhpcy51cmwgfHwgIXRoaXMuZGF0YUlkKSB7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1ldGVyID0ge1xuICAgICAgcGFnZVNpemU6IDEsXG4gICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICBpbmNsdWRlczogdGhpcy5kYXRhSW5jbHVkZXMsXG4gICAgICBmaWx0ZXJHcm91cDoge1xuICAgICAgICB0eXBlOiAnYW5kJyxcbiAgICAgICAgZmlsdGVyczogW3tmaWVsZDogdGhpcy5kYXRhS2V5LCBjb21wYXJlVHlwZTogJz0nLCB2YWx1ZTogdGhpcy5kYXRhSWR9XVxuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7Ym9keTogcXVlcnlQYXJhbWV0ZXJ9LCB0aGlzLmxvYWRPcHRpb25zKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdCh0aGlzLmxvYWRNZXRob2QsIHRoaXMudXJsLCBvcHRpb25zKVxuICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAudGhlbigocmVzcDogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwLmNvbnRlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDmnKrmib7liLDmlbDmja5bJHt0aGlzLmRhdGFJZH1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZSB8fCB7fTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRlZmF1bHRWYWx1ZSwgcmVzcC5jb250ZW50WzBdKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWx1ZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0xvYWREYXRhKSB7XG4gICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbn1cbiJdfQ==