/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ViewChild, Input } from '@angular/core'; import { AppConfigService } from '../app-config/app-config.service'; import { DxDataGridComponent } from 'devextreme-angular'; import { Request } from '../_services/request.service'; import { Common } from '../_services/common.service'; import { ModalStepViewComponent } from '../modal-step-view/modal-step-view.component'; import { ModalDirective } from 'ngx-bootstrap'; import { FormBuilder, FormControl, Validators } from '@angular/forms'; import { B2bService } from '../_services/b2b.service'; export class SentListComponent { /** * @param {?} appConfigService * @param {?} request * @param {?} common * @param {?} formBuilder * @param {?} b2b */ constructor(appConfigService, request, common, formBuilder, b2b) { this.appConfigService = appConfigService; this.request = request; this.common = common; this.formBuilder = formBuilder; this.b2b = b2b; this.mode = 'CREATE'; this.sentList = []; this.dxgridPageSize = 10; this.allowedPageSizes1 = 10; this.allowedPageSizes2 = 25; this.allowedPageSizes3 = 50; this.allowedPageSizes4 = 100; this.customers = []; this.lastStep = ''; this.recieveData = {}; this.submittedRecieve = false; this.config = appConfigService.getConfig(); } /** * @return {?} */ ngOnInit() { // if(this.mode === "EDIT"){ // setTimeout(async ()=>{ // this.downloadToken = await this.b2b.getAttachmentToken(); // },500) this.getSentList(); this.recieveForm = this.formBuilder.group({ book_no: ['', [Validators.required]], recv_date: new FormControl(''), }); // } } /** * @return {?} */ fr() { return this.recieveForm.controls; } /** * @return {?} */ getSentList() { return tslib_1.__awaiter(this, void 0, void 0, function* () { console.log('getSentList', this.sentList); /** @type {?} */ let sentData = this.option.data; /** @type {?} */ let filter = { filter: { ref_table: sentData.ref_table, ref_id: sentData.ref_id }, order_by: ["is_important", "send_book_no", "created_at"] }; /** @type {?} */ const data = yield this.request.post('/search/v_ct_step_sent', filter); this.sentList = data.resultData; console.log('getSentList', this.sentList); }); } /** * @param {?} data * @return {?} */ getRowIndex(data) { if (!data.data) { return ''; } /** @type {?} */ const page = this.dxDataGridSentList.instance.option('paging.pageIndex') || 0; /** @type {?} */ const pageSize = this.dxDataGridSentList.instance.option('paging.pageSize'); /** @type {?} */ const no = data.row.dataIndex + 1; return page * pageSize + no; } /** * @param {?} data * @return {?} */ editRecieve(data) { console.log('data', data); this.tmpData = data; this.recieveModal.show(); } /** * @return {?} */ closeRecieveModal() { this.submittedRecieve = false; this.recieveData = {}; this.tmpData = {}; this.recieveModal.hide(); } /** * @return {?} */ onSubmitRecieve() { return tslib_1.__awaiter(this, void 0, void 0, function* () { this.submittedRecieve = true; // ถ้า form ไม่ครบหรือผิดตามเงื่อนไขที่ตั้งไว้จะจบที่ตรงนี้ if (this.recieveForm.invalid) { return; } console.log('tmpData', this.tmpData); this.recieveData.name = this.tmpData.name; if (this.tmpData.ct_main_id) this.recieveData.ct_main_id = this.tmpData.ct_main_id; if (this.tmpData.ct_send_id) this.recieveData.ct_send_id = this.tmpData.ct_send_id; if (this.tmpData.ct_step_data_id) this.recieveData.ct_step_data_id = this.tmpData.ct_step_data_id; console.log('recieveData', this.recieveData); yield this.request.post("/db/ct_recieve", this.recieveData); this.getSentList(); this.closeRecieveModal(); }); } /** * @param {?} data * @return {?} */ isImportant(data) { return data.is_important ? "สำคัญ" : ""; } /** * @param {?} e * @return {?} */ onCellPrepared(e) { if (e.rowType === 'data') { e.cellElement.accessKey = e.column.caption; } } } SentListComponent.decorators = [ { type: Component, args: [{ selector: 'soc-sent-list', template: "\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{getRowIndex(data)}}\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n

\n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
First Name is required
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n" }] } ]; /** @nocollapse */ SentListComponent.ctorParameters = () => [ { type: AppConfigService }, { type: Request }, { type: Common }, { type: FormBuilder }, { type: B2bService } ]; SentListComponent.propDecorators = { mode: [{ type: Input }], option: [{ type: Input }], dxDataGridSentList: [{ type: ViewChild, args: ['dxDataGridSentList',] }], modalStepView: [{ type: ViewChild, args: ['modalStepView',] }], recieveModal: [{ type: ViewChild, args: ['recieveModal',] }] }; if (false) { /** @type {?} */ SentListComponent.prototype.mode; /** @type {?} */ SentListComponent.prototype.option; /** @type {?} */ SentListComponent.prototype.dxDataGridSentList; /** @type {?} */ SentListComponent.prototype.modalStepView; /** @type {?} */ SentListComponent.prototype.recieveModal; /** @type {?} */ SentListComponent.prototype.sentList; /** @type {?} */ SentListComponent.prototype.th; /** @type {?} */ SentListComponent.prototype.dxgridPageSize; /** @type {?} */ SentListComponent.prototype.allowedPageSizes1; /** @type {?} */ SentListComponent.prototype.allowedPageSizes2; /** @type {?} */ SentListComponent.prototype.allowedPageSizes3; /** @type {?} */ SentListComponent.prototype.allowedPageSizes4; /** @type {?} */ SentListComponent.prototype.customers; /** @type {?} */ SentListComponent.prototype.url; /** @type {?} */ SentListComponent.prototype.lastStep; /** @type {?} */ SentListComponent.prototype.config; /** @type {?} */ SentListComponent.prototype.recieveData; /** @type {?} */ SentListComponent.prototype.tmpData; /** @type {?} */ SentListComponent.prototype.submittedRecieve; /** @type {?} */ SentListComponent.prototype.recieveForm; /** @type {?} */ SentListComponent.prototype.appConfigService; /** @type {?} */ SentListComponent.prototype.request; /** @type {?} */ SentListComponent.prototype.common; /** @type {?} */ SentListComponent.prototype.formBuilder; /** @type {?} */ SentListComponent.prototype.b2b; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvYy1hcHAtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9zZW50LWxpc3Qvc2VudC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQXlCLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFNcEQsTUFBTTs7Ozs7Ozs7SUEyQkYsWUFDWSxrQkFDQSxTQUNELFFBQ0MsYUFDQTtRQUpBLHFCQUFnQixHQUFoQixnQkFBZ0I7UUFDaEIsWUFBTyxHQUFQLE9BQU87UUFDUixXQUFNLEdBQU4sTUFBTTtRQUNMLGdCQUFXLEdBQVgsV0FBVztRQUNYLFFBQUcsR0FBSCxHQUFHO29CQTlCeUIsUUFBUTt3QkFTaEMsRUFBRTs4QkFFRCxFQUFFO2lDQUNDLEVBQUU7aUNBQ0YsRUFBRTtpQ0FDRixFQUFFO2lDQUNGLEdBQUc7eUJBQ1gsRUFBRTt3QkFFSCxFQUFFOzJCQUVLLEVBQUU7Z0NBRUQsS0FBSztRQVNwQixJQUFJLENBQUMsTUFBTSxHQUFHLGdC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YyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb2RhbFN0ZXBDb21wb25lbnR9IGZyb20gJy4uL21vZGFsLXN0ZXAvbW9kYWwtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHtBcHBDb25maWdTZXJ2aWNlfSBmcm9tICcuLi9hcHAtY29uZmlnL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0R4RGF0YUdyaWRDb21wb25lbnR9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnLi4vX3NlcnZpY2VzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbn0gZnJvbSAnLi4vX3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7TW9kYWxTdGVwVmlld0NvbXBvbmVudH0gZnJvbSAnLi4vbW9kYWwtc3RlcC12aWV3L21vZGFsLXN0ZXAtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtNb2RhbERpcmVjdGl2ZX0gZnJvbSAnbmd4LWJvb3RzdHJhcCc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBBYnN0cmFjdENvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q3VzdG9tVmFsaWRhdG9yc30gZnJvbSAnbmcyLXZhbGlkYXRpb24nO1xuaW1wb3J0IHtCMmJTZXJ2aWNlfSBmcm9tICcuLi9fc2VydmljZXMvYjJiLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzb2Mtc2VudC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbnQtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VudExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgbW9kZTogJ0NSRUFURSd8J0VESVQnfCdWSUVXJyA9ICdDUkVBVEUnO1xuICAgIEBJbnB1dCgpIG9wdGlvbjogYW55O1xuICAgIEBWaWV3Q2hpbGQoJ2R4RGF0YUdyaWRTZW50TGlzdCcpXG4gICAgZHhEYXRhR3JpZFNlbnRMaXN0OiBEeERhdGFHcmlkQ29tcG9uZW50O1xuICAgIC8vIEBWaWV3Q2hpbGQoJ21vZGFsU3RlcCcpXG4gICAgLy8gbW9kYWxTdGVwOiBNb2RhbFN0ZXBDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnbW9kYWxTdGVwVmlldycpXG4gICAgbW9kYWxTdGVwVmlldzogTW9kYWxTdGVwVmlld0NvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdyZWNpZXZlTW9kYWwnKSByZWNpZXZlTW9kYWw6IE1vZGFsRGlyZWN0aXZlO1xuICAgIHNlbnRMaXN0OiBhbnkgPSBbXTtcbiAgICB0aDtcbiAgICBkeGdyaWRQYWdlU2l6ZSA9IDEwO1xuICAgIGFsbG93ZWRQYWdlU2l6ZXMxID0gMTA7XG4gICAgYWxsb3dlZFBhZ2VTaXplczIgPSAyNTtcbiAgICBhbGxvd2VkUGFnZVNpemVzMyA9IDUwO1xuICAgIGFsbG93ZWRQYWdlU2l6ZXM0ID0gMTAwO1xuICAgIGN1c3RvbWVycyA9IFtdO1xuICAgIHVybDtcbiAgICBsYXN0U3RlcCA9ICcnO1xuICAgIGNvbmZpZzogYW55O1xuICAgIHJlY2lldmVEYXRhOmFueSA9IHt9O1xuICAgIHRtcERhdGE6YW55O1xuICAgIHN1Ym1pdHRlZFJlY2lldmUgPSBmYWxzZTtcbiAgICByZWNpZXZlRm9ybTogRm9ybUdyb3VwO1xuICAgIC8vIGRvd25sb2FkVG9rZW46YW55O1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVxdWVzdDogUmVxdWVzdCxcbiAgICAgICAgcHVibGljIGNvbW1vbjogQ29tbW9uLFxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBiMmI6QjJiU2VydmljZSkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIGlmKHRoaXMubW9kZSA9PT0gXCJFRElUXCIpe1xuICAgICAgICAvLyBzZXRUaW1lb3V0KGFzeW5jICgpPT57XG4gICAgICAgIC8vICAgICB0aGlzLmRvd25sb2FkVG9rZW4gPSBhd2FpdCB0aGlzLmIyYi5nZXRBdHRhY2htZW50VG9rZW4oKTtcbiAgICAgICAgLy8gfSw1MDApXG4gICAgICAgIHRoaXMuZ2V0U2VudExpc3QoKTtcbiAgICAgICAgdGhpcy5yZWNpZXZlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgYm9va19ubzogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgcmVjdl9kYXRlOiAgbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBmcigpIHsgcmV0dXJuIHRoaXMucmVjaWV2ZUZvcm0uY29udHJvbHM7IH1cblxuICAgIGFzeW5jIGdldFNlbnRMaXN0KCkge1xuICAgICAgICBjb25zb2xlLmxvZygnZ2V0U2VudExpc3QnLHRoaXMuc2VudExpc3QpO1xuICAgICAgICBsZXQgc2VudERhdGEgPSB0aGlzLm9wdGlvbi5kYXRhO1xuICAgICAgICBsZXQgZmlsdGVyID0ge1xuICAgICAgICAgICAgZmlsdGVyIDoge1xuICAgICAgICAgICAgICAgIHJlZl90YWJsZSA6IHNlbnREYXRhLnJlZl90YWJsZSxcbiAgICAgICAgICAgICAgICByZWZfaWQgOiBzZW50RGF0YS5yZWZfaWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcmRlcl9ieTpbXCJpc19pbXBvcnRhbnRcIixcInNlbmRfYm9va19ub1wiLFwiY3JlYXRlZF9hdFwiXVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnJlcXVlc3QucG9zdCgnL3NlYXJjaC92X2N0X3N0ZXBfc2VudCcsZmlsdGVyKTtcbiAgICAgICAgdGhpcy5zZW50TGlzdCA9IGRhdGEucmVzdWx0RGF0YTtcbiAgICAgICAgY29uc29sZS5sb2coJ2dldFNlbnRMaXN0Jyx0aGlzLnNlbnRMaXN0KTtcbiAgICB9XG5cbiAgICBnZXRSb3dJbmRleChkYXRhKSB7XG4gICAgICAgIGlmICghZGF0YS5kYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuZHhEYXRhR3JpZFNlbnRMaXN0Lmluc3RhbmNlLm9wdGlvbigncGFnaW5nLnBhZ2VJbmRleCcpIHx8IDA7XG4gICAgICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5keERhdGFHcmlkU2VudExpc3QuaW5zdGFuY2Uub3B0aW9uKCdwYWdpbmcucGFnZVNpemUnKTtcbiAgICAgICAgY29uc3Qgbm8gPSBkYXRhLnJvdy5kYXRhSW5kZXggKyAxO1xuICAgICAgICByZXR1cm4gcGFnZSAqIHBhZ2VTaXplICsgbm87XG4gICAgfVxuXG4gICAgZWRpdFJlY2lldmUoZGF0YSkge1xuICAgICAgICBjb25zb2xlLmxvZygnZGF0YScsZGF0YSk7XG4gICAgICAgIHRoaXMudG1wRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMucmVjaWV2ZU1vZGFsLnNob3coKTtcbiAgICB9XG5cbiAgICBjbG9zZVJlY2lldmVNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5zdWJtaXR0ZWRSZWNpZXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVjaWV2ZURhdGEgPSB7fTtcbiAgICAgICAgdGhpcy50bXBEYXRhID0ge307XG4gICAgICAgIHRoaXMucmVjaWV2ZU1vZGFsLmhpZGUoKTtcbiAgICB9XG5cbiAgICBhc3luYyBvblN1Ym1pdFJlY2lldmUoKSB7XG4gICAgICAgIHRoaXMuc3VibWl0dGVkUmVjaWV2ZSA9IHRydWU7XG5cbiAgICAgICAgLy8g4LiW4LmJ4LiyIGZvcm0g4LmE4Lih4LmI4LiE4Lij4Lia4Lir4Lij4Li34Lit4Lic4Li04LiU4LiV4Liy4Lih4LmA4LiH4Li34LmI4Lit4LiZ4LmE4LiC4LiX4Li14LmI4LiV4Lix4LmJ4LiH4LmE4Lin4LmJ4LiI4Liw4LiI4Lia4LiX4Li14LmI4LiV4Lij4LiH4LiZ4Li14LmJXG4gICAgICAgIGlmICh0aGlzLnJlY2lldmVGb3JtLmludmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygndG1wRGF0YScsdGhpcy50bXBEYXRhKTtcbiAgICAgICAgdGhpcy5yZWNpZXZlRGF0YS5uYW1lID0gdGhpcy50bXBEYXRhLm5hbWU7XG4gICAgICAgIGlmKHRoaXMudG1wRGF0YS5jdF9tYWluX2lkKSB0aGlzLnJlY2lldmVEYXRhLmN0X21haW5faWQgPSB0aGlzLnRtcERhdGEuY3RfbWFpbl9pZDtcbiAgICAgICAgaWYodGhpcy50bXBEYXRhLmN0X3NlbmRfaWQpIHRoaXMucmVjaWV2ZURhdGEuY3Rfc2VuZF9pZCA9IHRoaXMudG1wRGF0YS5jdF9zZW5kX2lkO1xuICAgICAgICBpZih0aGlzLnRtcERhdGEuY3Rfc3RlcF9kYXRhX2lkKSB0aGlzLnJlY2lldmVEYXRhLmN0X3N0ZXBfZGF0YV9pZCA9IHRoaXMudG1wRGF0YS5jdF9zdGVwX2RhdGFfaWQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZWNpZXZlRGF0YScsdGhpcy5yZWNpZXZlRGF0YSk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdC5wb3N0KFwiL2RiL2N0X3JlY2lldmVcIix0aGlzLnJlY2lldmVEYXRhKTtcbiAgICAgICAgdGhpcy5nZXRTZW50TGlzdCgpO1xuICAgICAgICB0aGlzLmNsb3NlUmVjaWV2ZU1vZGFsKCk7XG4gICAgfVxuICAgIGlzSW1wb3J0YW50KGRhdGEpe1xuICAgICAgICByZXR1cm4gZGF0YS5pc19pbXBvcnRhbnQ/XCLguKrguLPguITguLHguI1cIjpcIlwiO1xuICAgIH1cblxuICAgIG9uQ2VsbFByZXBhcmVkKGUpIHtcbiAgICAgICAgaWYgKGUucm93VHlwZSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgICBlLmNlbGxFbGVtZW50LmFjY2Vzc0tleSA9IGUuY29sdW1uLmNhcHRpb247XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=