step-list.component.js 19.9 KB
/**
 * @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 { B2bService } from '../_services/b2b.service';
var StepListComponent = /** @class */ (function () {
    function StepListComponent(appConfigService, request, common, b2b) {
        this.appConfigService = appConfigService;
        this.request = request;
        this.common = common;
        this.b2b = b2b;
        this.mode = 'CREATE';
        this.columns = ['ลำดับที่', 'ผู้แก้ไข', 'วันที่', 'สถานะการติดตาม', 'หมายเหตุ'];
        this.stepList = [];
        this.dxgridPageSize = 10;
        this.allowedPageSizes1 = 10;
        this.allowedPageSizes2 = 25;
        this.allowedPageSizes3 = 50;
        this.allowedPageSizes4 = 100;
        this.customers = [];
        this.lastStep = '';
        this.config = appConfigService.getConfig();
    }
    /**
     * @return {?}
     */
    StepListComponent.prototype.ngOnInit = /**
     * @return {?}
     */
    function () {
        var _this = this;
        setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
            var _a;
            return tslib_1.__generator(this, function (_b) {
                switch (_b.label) {
                    case 0:
                        _a = this;
                        return [4 /*yield*/, this.b2b.getAttachmentToken()];
                    case 1:
                        _a.downloadToken = _b.sent();
                        return [2 /*return*/];
                }
            });
        }); }, 500);
        if (this.mode !== "CREATE") {
            this.getStepList();
        }
    };
    /**
     * @return {?}
     */
    StepListComponent.prototype.getStepList = /**
     * @return {?}
     */
    function () {
        return tslib_1.__awaiter(this, void 0, void 0, function () {
            var filter, data;
            return tslib_1.__generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        console.log('getStepList', this.stepList);
                        filter = {
                            filter: {
                                ref_table: "=" + this.option.data.ref_table,
                                ref_id: this.option.data.ref_id,
                                system_id: this.option.data.system_id
                            },
                            order_by: ["step_date desc"]
                        };
                        return [4 /*yield*/, this.request.post('/search/ct_step_data', filter)];
                    case 1:
                        data = _a.sent();
                        this.stepList = data.resultData;
                        if (this.stepList && this.stepList.length > 0) {
                            this.lastStep = this.stepList[0].name;
                        }
                        console.log('getStepList', this.stepList);
                        return [2 /*return*/];
                }
            });
        });
    };
    /**
     * @param {?} data
     * @return {?}
     */
    StepListComponent.prototype.addStepList = /**
     * @param {?} data
     * @return {?}
     */
    function (data) {
        /** @type {?} */
        var userData = this.b2b.getVerifyToken();
        data.username = userData.username;
        this.stepList.push(data);
        console.log('getStepList', this.stepList);
    };
    /**
     * @param {?} data
     * @return {?}
     */
    StepListComponent.prototype.getRowIndex = /**
     * @param {?} data
     * @return {?}
     */
    function (data) {
        if (!data.data) {
            return '';
        }
        /** @type {?} */
        var page = this.dxDataGridStepList.instance.option('paging.pageIndex') || 0;
        /** @type {?} */
        var pageSize = this.dxDataGridStepList.instance.option('paging.pageSize');
        /** @type {?} */
        var no = data.row.dataIndex + 1;
        return page * pageSize + no;
    };
    /**
     * @param {?} data
     * @return {?}
     */
    StepListComponent.prototype.view = /**
     * @param {?} data
     * @return {?}
     */
    function (data) {
        /** @type {?} */
        var viewData = {
            option: this.option,
            data: data,
            downloadToken: this.downloadToken
        };
        this.modalStepView.open(viewData);
    };
    /**
     * @return {?}
     */
    StepListComponent.prototype.getLastStep = /**
     * @return {?}
     */
    function () {
        return this.lastStep;
    };
    /**
     * @param {?} e
     * @return {?}
     */
    StepListComponent.prototype.onCellPrepared = /**
     * @param {?} e
     * @return {?}
     */
    function (e) {
        if (e.rowType === 'data') {
            e.cellElement.accessKey = e.column.caption;
        }
    };
    StepListComponent.decorators = [
        { type: Component, args: [{
                    selector: 'soc-step-list',
                    template: "<div class=\"col-sm-12\">\n    <!--[selectedRowKeys]=\"selectRowKeyId\" (onInitialized)=\"onInitialized($event)\" (onSelectionChanged)=\"selectRow($event)\"-->\n    <div class=\"table-responsive table-wrapper\">\n      <!--<dx-data-grid #dxDataGridStepList id=\"dxDataGridStepList\" [dataSource]=\"ds\" [hoverStateEnabled]=\"true\" noDataText=\"\"-->\n                    <!--showBorders=\"true\" [rowAlternationEnabled]=\"true\" [columnAutoWidth]=\"true\"-->\n                    <!--[columns]=\"columns\"-->\n                    <!--class=\"card-list-table\"-->\n                    <!--[allowColumnResizing]=\"true\"-->\n                    <!--[allowColumnReordering]=\"true\"-->\n                    <!--[wordWrapEnabled]=\"true\"-->\n                    <!--[columnMinWidth]=\"'100%'\" class=\"card-list-table\">-->\n        <!--<dxo-paging [pageSize]=\"dxgridPageSize\"></dxo-paging>-->\n        <!--<dxo-pager [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[allowedPageSizes1, allowedPageSizes2, allowedPageSizes3, allowedPageSizes4]\"-->\n                   <!--[showInfo]=\"false\" [visible]=\"true\" [showNavigationButtons]=\"true\">-->\n        <!--</dxo-pager>-->\n        <!--<dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>-->\n        <!--<dxo-remote-operations [sorting]=\"true\" [paging]=\"true\">-->\n        <!--</dxo-remote-operations>-->\n      <!--</dx-data-grid>-->\n      <dx-data-grid #dxDataGridStepList\n            id=\"gridContainer\" noDataText=\"\" showBorders=\"true\" class=\"card-list-table\"\n            (onCellPrepared)=\"onCellPrepared($event)\" [dataSource]=\"stepList\"\n            [hoverStateEnabled]=\"true\" [rowAlternationEnabled]=\"true\" [columnAutoWidth]=\"false\"\n            [allowColumnResizing]=\"true\" [allowColumnReordering]=\"true\" [wordWrapEnabled]=\"false\"\n            [showBorders]=\"true\">\n            <dxi-column caption=\"\u0E25\u0E33\u0E14\u0E31\u0E1A\u0E17\u0E35\u0E48\" [allowSorting]=\"false\" cellTemplate=\"cellTemplate\" alignment=\"center\" [width]=\"70\"></dxi-column>\n            <dxi-column caption=\"\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23\" [allowSorting]=\"false\" cellTemplate=\"cellTemplateAction\" alignment=\"center\" [width]=\"70\"></dxi-column>\n            <dxi-column dataField=\"username\" caption=\"\u0E1C\u0E39\u0E49\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\"></dxi-column>\n            <dxi-column dataField=\"step_date\" [caption]=\"option.data.system_id === 161?'\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48':'\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23'\" dataType=\"date\" alignment=\"center\" [width]=\"100\"></dxi-column>\n            <dxi-column dataField=\"step_name\" caption=\"\u0E2A\u0E16\u0E32\u0E19\u0E30\u0E01\u0E32\u0E23\u0E15\u0E34\u0E14\u0E15\u0E32\u0E21\"></dxi-column>\n            <dxi-column dataField=\"remark\" caption=\"\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E2B\u0E15\u0E38\"></dxi-column>\n            <dxo-paging [pageSize]=\"dxgridPageSize\"></dxo-paging>\n            <dxo-pager [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[allowedPageSizes1, allowedPageSizes2, allowedPageSizes3, allowedPageSizes4]\"\n            [showInfo]=\"false\" [visible]=\"true\" [showNavigationButtons]=\"true\">\n            </dxo-pager>\n            <dxo-state-storing [enabled]=\"true\" type=\"localStorage\" storageKey=\"stepListDataGrid\"></dxo-state-storing>\n            <div *dxTemplate=\"let data of 'cellTemplate'\">\n              {{getRowIndex(data)}}\n            </div>\n            <div *dxTemplate=\"let data of 'cellTemplateAction'\">\n              <a id=\"btnView\" (click)=\"view(data.data)\" class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\u0E14\u0E39\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\"><i class=\"fal fa-eye\"></i></a>\n            </div>\n      </dx-data-grid>\n    </div>\n</div><!--End col-sm-12-->\n<!--<modal-step #modalStep (onUpdateModal)='getStepList()' (onCreateModal)=\"addStepList($event)\" [mode]=\"mode\"></modal-step>-->\n<modal-step-view #modalStepView ></modal-step-view>\n"
                }] }
    ];
    /** @nocollapse */
    StepListComponent.ctorParameters = function () { return [
        { type: AppConfigService },
        { type: Request },
        { type: Common },
        { type: B2bService }
    ]; };
    StepListComponent.propDecorators = {
        mode: [{ type: Input }],
        option: [{ type: Input }],
        dxDataGridStepList: [{ type: ViewChild, args: ['dxDataGridStepList',] }],
        modalStepView: [{ type: ViewChild, args: ['modalStepView',] }]
    };
    return StepListComponent;
}());
export { StepListComponent };
if (false) {
    /** @type {?} */
    StepListComponent.prototype.mode;
    /** @type {?} */
    StepListComponent.prototype.option;
    /** @type {?} */
    StepListComponent.prototype.dxDataGridStepList;
    /** @type {?} */
    StepListComponent.prototype.modalStepView;
    /** @type {?} */
    StepListComponent.prototype.columns;
    /** @type {?} */
    StepListComponent.prototype.stepList;
    /** @type {?} */
    StepListComponent.prototype.th;
    /** @type {?} */
    StepListComponent.prototype.dxgridPageSize;
    /** @type {?} */
    StepListComponent.prototype.allowedPageSizes1;
    /** @type {?} */
    StepListComponent.prototype.allowedPageSizes2;
    /** @type {?} */
    StepListComponent.prototype.allowedPageSizes3;
    /** @type {?} */
    StepListComponent.prototype.allowedPageSizes4;
    /** @type {?} */
    StepListComponent.prototype.customers;
    /** @type {?} */
    StepListComponent.prototype.url;
    /** @type {?} */
    StepListComponent.prototype.lastStep;
    /** @type {?} */
    StepListComponent.prototype.config;
    /** @type {?} */
    StepListComponent.prototype.downloadToken;
    /** @type {?} */
    StepListComponent.prototype.appConfigService;
    /** @type {?} */
    StepListComponent.prototype.request;
    /** @type {?} */
    StepListComponent.prototype.common;
    /** @type {?} */
    StepListComponent.prototype.b2b;
}

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvYy1hcHAtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9zdGVwLWxpc3Qvc3RlcC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQXlCLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0lBOEJoRCwyQkFDWSxrQkFDQSxTQUNELFFBQ0M7UUFIQSxxQkFBZ0IsR0FBaEIsZ0JBQWdCO1FBQ2hCLFlBQU8sR0FBUCxPQUFPO1FBQ1IsV0FBTSxHQUFOLE1BQU07UUFDTCxRQUFHLEdBQUgsR0FBRztvQkExQnlCLFFBQVE7dUJBU3RDLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDO3dCQUMxRCxFQUFFOzhCQUVELEVBQUU7aUNBQ0MsRUFBRTtpQ0FDRixFQUFFO2lDQUNGLEVBQUU7aUNBQ0YsR0FBRzt5QkFDWCxFQUFFO3dCQUVILEVBQUU7UUFRVCxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO0tBQzlDOzs7O0lBRUQsb0NBQVE7OztJQUFSO1FBQUEsaUJBT0M7UUFORyxVQUFVLENBQUM7Ozs7O3dCQUNQLEtBQUEsSUFBSSxDQUFBO3dC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LFVBQWUsQ0FBQztRQUNaLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDdEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDOUM7S0FDSjs7Z0JBOUZKLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsMmlJQUF5QztpQkFDMUM7Ozs7Z0JBVk8sZ0JBQWdCO2dCQUVmLE9BQU87Z0JBQ1IsTUFBTTtnQkFFTixVQUFVOzs7dUJBUWIsS0FBSzt5QkFDTCxLQUFLO3FDQUNMLFNBQVMsU0FBQyxvQkFBb0I7Z0NBSTlCLFNBQVMsU0FBQyxlQUFlOzs0QkFyQjlCOztTQWFhLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb2RhbFN0ZXBDb21wb25lbnR9IGZyb20gJy4uL21vZGFsLXN0ZXAvbW9kYWwtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHtBcHBDb25maWdTZXJ2aWNlfSBmcm9tICcuLi9hcHAtY29uZmlnL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0R4RGF0YUdyaWRDb21wb25lbnR9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnLi4vX3NlcnZpY2VzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbn0gZnJvbSAnLi4vX3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7TW9kYWxTdGVwVmlld0NvbXBvbmVudH0gZnJvbSAnLi4vbW9kYWwtc3RlcC12aWV3L21vZGFsLXN0ZXAtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtCMmJTZXJ2aWNlfSBmcm9tICcuLi9fc2VydmljZXMvYjJiLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzb2Mtc3RlcC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXAtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3RlcExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgbW9kZTogJ0NSRUFURSd8J0VESVQnfCdWSUVXJyA9ICdDUkVBVEUnO1xuICAgIEBJbnB1dCgpIG9wdGlvbjogYW55O1xuICAgIEBWaWV3Q2hpbGQoJ2R4RGF0YUdyaWRTdGVwTGlzdCcpXG4gICAgZHhEYXRhR3JpZFN0ZXBMaXN0OiBEeERhdGFHcmlkQ29tcG9uZW50O1xuICAgIC8vIEBWaWV3Q2hpbGQoJ21vZGFsU3RlcCcpXG4gICAgLy8gbW9kYWxTdGVwOiBNb2RhbFN0ZXBDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnbW9kYWxTdGVwVmlldycpXG4gICAgbW9kYWxTdGVwVmlldzogTW9kYWxTdGVwVmlld0NvbXBvbmVudDtcblxuICAgIGNvbHVtbnMgPSBbJ+C4peC4s+C4lOC4seC4muC4l+C4teC5iCcsICfguJzguLnguYnguYHguIHguYnguYTguIInLCAn4Lin4Lix4LiZ4LiX4Li14LmIJywgJ+C4quC4luC4suC4meC4sOC4geC4suC4o+C4leC4tOC4lOC4leC4suC4oScsICfguKvguKHguLLguKLguYDguKvguJXguLgnXTtcbiAgICBzdGVwTGlzdDogYW55ID0gW107XG4gICAgdGg7XG4gICAgZHhncmlkUGFnZVNpemUgPSAxMDtcbiAgICBhbGxvd2VkUGFnZVNpemVzMSA9IDEwO1xuICAgIGFsbG93ZWRQYWdlU2l6ZXMyID0gMjU7XG4gICAgYWxsb3dlZFBhZ2VTaXplczMgPSA1MDtcbiAgICBhbGxvd2VkUGFnZVNpemVzNCA9IDEwMDtcbiAgICBjdXN0b21lcnMgPSBbXTtcbiAgICB1cmw7XG4gICAgbGFzdFN0ZXAgPSAnJztcbiAgICBjb25maWc6IGFueTtcbiAgICBkb3dubG9hZFRva2VuO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVxdWVzdDogUmVxdWVzdCxcbiAgICAgICAgcHVibGljIGNvbW1vbjogQ29tbW9uLFxuICAgICAgICBwcml2YXRlIGIyYjpCMmJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKT0+e1xuICAgICAgICAgICAgdGhpcy5kb3dubG9hZFRva2VuID0gYXdhaXQgdGhpcy5iMmIuZ2V0QXR0YWNobWVudFRva2VuKCk7XG4gICAgICAgIH0sNTAwKVxuICAgICAgICBpZih0aGlzLm1vZGUgIT09IFwiQ1JFQVRFXCIpe1xuICAgICAgICAgICAgdGhpcy5nZXRTdGVwTGlzdCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGdldFN0ZXBMaXN0KCkge1xuICAgICAgICBjb25zb2xlLmxvZygnZ2V0U3RlcExpc3QnLHRoaXMuc3RlcExpc3QpO1xuICAgICAgICBsZXQgZmlsdGVyID0ge1xuICAgICAgICAgICAgZmlsdGVyOntcbiAgICAgICAgICAgICAgICByZWZfdGFibGU6XCI9XCIrdGhpcy5vcHRpb24uZGF0YS5yZWZfdGFibGUsXG4gICAgICAgICAgICAgICAgcmVmX2lkOnRoaXMub3B0aW9uLmRhdGEucmVmX2lkLFxuICAgICAgICAgICAgICAgIHN5c3RlbV9pZDp0aGlzLm9wdGlvbi5kYXRhLnN5c3RlbV9pZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9yZGVyX2J5OltcInN0ZXBfZGF0ZSBkZXNjXCJdXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucmVxdWVzdC5wb3N0KCcvc2VhcmNoL2N0X3N0ZXBfZGF0YScsIGZpbHRlcik7XG4gICAgICAgIHRoaXMuc3RlcExpc3QgPSBkYXRhLnJlc3VsdERhdGE7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBMaXN0ICYmIHRoaXMuc3RlcExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sYXN0U3RlcCA9IHRoaXMuc3RlcExpc3RbMF0ubmFtZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygnZ2V0U3RlcExpc3QnLHRoaXMuc3RlcExpc3QpO1xuICAgIH1cblxuICAgIGFkZFN0ZXBMaXN0KGRhdGEpIHtcbiAgICAgICAgbGV0IHVzZXJEYXRhOmFueSA9IHRoaXMuYjJiLmdldFZlcmlmeVRva2VuKCk7XG4gICAgICAgIGRhdGEudXNlcm5hbWUgPSB1c2VyRGF0YS51c2VybmFtZTtcbiAgICAgICAgdGhpcy5zdGVwTGlzdC5wdXNoKGRhdGEpO1xuICAgICAgICBjb25zb2xlLmxvZygnZ2V0U3RlcExpc3QnLHRoaXMuc3RlcExpc3QpO1xuICAgIH1cblxuICAgIGdldFJvd0luZGV4KGRhdGEpIHtcbiAgICAgICAgaWYgKCFkYXRhLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5keERhdGFHcmlkU3RlcExpc3QuaW5zdGFuY2Uub3B0aW9uKCdwYWdpbmcucGFnZUluZGV4JykgfHwgMDtcbiAgICAgICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLmR4RGF0YUdyaWRTdGVwTGlzdC5pbnN0YW5jZS5vcHRpb24oJ3BhZ2luZy5wYWdlU2l6ZScpO1xuICAgICAgICBjb25zdCBubyA9IGRhdGEucm93LmRhdGFJbmRleCArIDE7XG4gICAgICAgIHJldHVybiBwYWdlICogcGFnZVNpemUgKyBubztcbiAgICB9XG4gICAgdmlldyhkYXRhKSB7XG4gICAgICAgIGNvbnN0IHZpZXdEYXRhID0ge1xuICAgICAgICAgICAgb3B0aW9uOiB0aGlzLm9wdGlvbixcbiAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICBkb3dubG9hZFRva2VuOiB0aGlzLmRvd25sb2FkVG9rZW5cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5tb2RhbFN0ZXBWaWV3Lm9wZW4odmlld0RhdGEpO1xuICAgIH1cbiAgICBnZXRMYXN0U3RlcCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0U3RlcDtcbiAgICB9XG5cbiAgICBvbkNlbGxQcmVwYXJlZChlKSB7XG4gICAgICAgIGlmIChlLnJvd1R5cGUgPT09ICdkYXRhJykge1xuICAgICAgICAgICAgZS5jZWxsRWxlbWVudC5hY2Nlc3NLZXkgPSBlLmNvbHVtbi5jYXB0aW9uO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19