• javasrcipt array 码农


    1:array group
    const groups = [1,2,3,2,4,3,1].reduce((prev, curr) => {
    if (!prev.includes(curr)) {
    prev.push(curr);
    }
    return prev;
    }, []);

    import { Component, OnInit, OnDestroy } from '@angular/core';
    import { logger } from '../../../../../../share/utils/logs';
    import { TerminalHardware } from '../../../../services/terminal/hardware.service';
    import { terminalConfig } from '../../../../../../share/main-proc/terminal-config/terminal-config';
    import { HardwareAPI } from '../../../../../../share/protocols/kiosk-api-event';
    import { HardwareError } from '../../../../services/terminal/terminal-config.service';
    import { ListenEvent } from '../../../../services/terminal/terminal-config.service';
    import { ActivatedRoute, Router } from '@angular/router';
    import { PublicMethod } from '../../../../services/terminal/public-method.service';
    import { kioskPlog } from '../../../../../../share/main-proc/kiosk-plog/kiosk-plog';
    import { ErrorResolveService } from '../../../../services/error-resolve.service';
    import { HardwareService } from '../../../../services/hardware/hardware.service';
    import { CommonService } from '../../../../services/common.service';
    import { DialogService } from '../../../../services/dialog.service';
    import { ErrorSubModule } from '../../../../models/errorcontext';
    import {
        ResponseObject,
        ResponseObjectCode,
    } from '../../../../../../share/models/response-common';
    import {
        PrinterStatus,
        DoorOpen,
        SystemMonitorErrorArg,
        HelplightErrorArg,
    } from '../../../../../../share/models/hw-serv/event-args';
    @Component({
        selector: 'app-system-watch',
        templateUrl: './system-watch.component.html',
        styleUrls: [
            './system-watch.component.scss',
            '../../common.scss',
            '../nfc-reader/nfc-reader.component.scss',
        ],
    })
    export class SystemWatchComponent implements OnInit, OnDestroy {
        constructor(
            private activatedRoute: ActivatedRoute,
            private router: Router,
            private dataService: TerminalHardware,
            private publicMethod: PublicMethod,
            private listenEvent: ListenEvent,
            private errorSvc: ErrorResolveService,
            private commonSvc: CommonService,
            private hwSvc: HardwareService,
            private dialogSvc: DialogService
        ) {
            this.commonSvc.enterPageLog(SystemWatchComponent.name);
        }
        helpLightVersion = {
            hardwareVersion: '',
            driverVersion: '',
        };
        sysMonVersion = {
            hardwareVersion: '',
            driverVersion: '',
        };
        doorStatus = [
            {
                normal: true,
                imgSrc: 'assets/imgs/terminal/gray01.png',
                content: 'PAPER SENSOR',
            },
            {
                normal: true,
                imgSrc: 'assets/imgs/terminal/gray01.png',
                content: 'MAIN DOOR',
            },
            {
                normal: true,
                imgSrc: 'assets/imgs/terminal/gray01.png',
                content: 'TICKET DOOR',
            },
            {
                normal: true,
                imgSrc: 'assets/imgs/terminal/gray01.png',
                content: 'PRINTER DOOR',
            },
        ];
        initHelpLight = false;
        isOn = false;
        isOff = false;
        hardwareId = terminalConfig.hardwareId;
        listen: any = {
            sysMonitorError: null,
            helpLightError: null,
            paperSensorStatus: null,
            doorStatus: null,
        };
        tipCn = '';
        tipEn = '';
        ngOnInit() {
            // this.removeWholeDoorListen();
            // this.removeWholePrinterListen();
            this.init();
        }
        removeWholeDoorListen() {
            if (this.listenEvent.doorListen) {
                this.listenEvent.doorListen.unsubscribe();
            }
        }
        startWholeDoorListen() {
            this.publicMethod.setListenDoor();
        }
        removeWholePrinterListen() {
            this.listenEvent.printerErrorListen.unsubscribe();
        }
    
        clearError() {
            kioskPlog.helpLightError = 0;
            kioskPlog.doorSensorError = 0;
        }
        async back() {
            // Door must be closed before continue
            const [id, isOpen]: any = await this.hwSvc.isAnyDoorOpened();
            if (isOpen) {
                logger.info('Door must be closed before continue');
                this.errorSvc.finishHandling();
                this.errorSvc.triggerDoorOpenError(id);
                return;
            }
            // this.startWholePrinterListen();
            // this.startWholeDoorListen();
            this.activatedRoute.queryParams.subscribe((queryParam) => {
                if (this.errorSvc.inErrorMessageFlow) {
                    this.errorSvc.toNextPage();
                } else if (queryParam.hasOwnProperty('prevPath')) {
                    this.router.navigateByUrl('/terminal');
                } else {
                    history.back();
                }
            });
        }
        getVersion(path, type, hardwareName) {
            return new Promise((res, rej) => {
                this.dataService.getInfo(path).then(
                    (data: ResponseObject) => {
                        // x=JSON.parse(x)
                        if (data.code === ResponseObjectCode.SUCCESS_CODE) {
                            if (hardwareName === HardwareAPI.SYSTEM_MONITER) {
                                this.sysMonVersion[type] = data.body;
                            }
                            if (hardwareName === HardwareAPI.HELP_LIGHT) {
                                this.helpLightVersion[type] = data.body;
                            }
                            res(true);
                        } else {
                            logger.info(path, type, data);
                            res(false);
                        }
                    },
                    (err) => {
                        logger.error(err);
                        res(false);
                    }
                );
            });
        }
        ngOnDestroy() {
            this.errorSvc.errorContext.ErrorSubModule = ErrorSubModule.None;
            this.listen.sysMonitorError.unsubscribe();
            this.listen.helpLightError.unsubscribe();
            this.listen.paperSensorStatus.unsubscribe();
            this.listen.doorStatus.unsubscribe();
            this.commonSvc.exitPageLog(SystemWatchComponent.name);
        }
        getPaperSensorStatus() {
            return new Promise((res, rej) => {
                this.dataService.getPaperSensorStatus().then((data) => {
                    if (data.code === ResponseObjectCode.SUCCESS_CODE) {
                        this.paperSensorLight(data.body);
                        res(true);
                    } else {
                        logger.info('getPaperSensorStatus fail', data);
                        res(false);
                    }
                });
            });
        }
        paperSensorLight(data) {
            switch (data) {
                case PrinterStatus.normal:
                    this.doorStatus[0].normal = true;
                    this.doorStatus[0].imgSrc = 'assets/imgs/terminal/gray01.png';
                    break;
                case PrinterStatus.malfunction:
                case PrinterStatus.paperOut:
                case PrinterStatus.paperLow:
                case PrinterStatus.paperJam:
                    this.doorStatus[0].imgSrc = 'assets/imgs/terminal/red01.png';
                    this.doorStatus[0].normal = false;
                    break;
                default:
                    break;
            }
        }
        listenPaperSensor() {
            this.listen.paperSensorStatus = this.dataService
                .listenPrintError()
                .subscribe((data) => {
                    console.log(data, 'aboutPaperSensor');
                    this.paperSensorLight(data);
                });
        }
        getDoorStatus() {
            return new Promise((res, rej) => {
                this.dataService.getDoorStatus().then((data) => {
                    if (data.code === ResponseObjectCode.SUCCESS_CODE) {
                        const doors = data.body.doors;
                        for (const door of doors) {
                            this.handleDoorValue(door);
                        }
                        res(true);
                    } else {
                        logger.info('getDoorStatus fail', data);
                        res(false);
                    }
                });
            });
        }
    
        handleDoorValue(door) {
            console.log('door', door);
            switch (door.id) {
                case DoorOpen.MainDoor:
                case DoorOpen.ScannerDoor:
                case DoorOpen.PrinterDoor:
                    this.doorStatus[door.id].normal = !door.isOpen;
                    this.doorStatus[door.id].imgSrc =
                        'assets/imgs/terminal/' +
                        (door.isOpen ? 'red01.png' : 'gray01.png');
                    break;
            }
        }
        listenDoorStatus() {
            this.listen.doorStatus = this.dataService
                .listenDoor()
                .subscribe((data) => {
                    this.handleDoorValue(data);
                });
        }
        async init() {
            this.commonSvc.loading();
            await this.getVersion(
                `${HardwareAPI.SYSTEM_MONITER}/${HardwareAPI.VERSION}`,
                'hardwareVersion',
                HardwareAPI.SYSTEM_MONITER
            );
            await this.getVersion(
                `${HardwareAPI.SYSTEM_MONITER}/${HardwareAPI.LIB_VERSION}`,
                'driverVersion',
                HardwareAPI.SYSTEM_MONITER
            );
            // get system monitor all type version
            await this.getVersion(
                `${HardwareAPI.HELP_LIGHT}/${HardwareAPI.VERSION}`,
                'hardwareVersion',
                HardwareAPI.HELP_LIGHT
            );
            await this.getVersion(
                `${HardwareAPI.HELP_LIGHT}/${HardwareAPI.LIB_VERSION}`,
                'driverVersion',
                HardwareAPI.HELP_LIGHT
            );
            // get help ligth all type version
            await this.getDoorStatus();
            await this.getPaperSensorStatus();
            // initHelpLight
            this.listenPaperSensor();
            this.listenDoorStatus();
            this.listen.sysMonitorError = this.dataService
                .systemMonitorError()
                .subscribe((error) => {
                    switch (error) {
                        case SystemMonitorErrorArg.malfunction:
                            this.tipCn = '硬件故障';
                            this.tipEn = 'SYSMON ERROR - HARDWARE MALFUNCTION';
                            break;
    
                        default:
                            break;
                    }
                });
            this.listen.helpLightError = this.dataService
                .helpLightError()
                .subscribe((error) => {
                    switch (error) {
                        case HelplightErrorArg.malfunction:
                            this.helpLightErrTip();
                            break;
    
                        default:
                            break;
                    }
                });
            this.commonSvc.cancelLoading();
        }
        switchChange($event) {
            this.commonSvc.loading();
            setTimeout(() => {
                const value = $event
                    ? `${HardwareAPI.HELP_LIGHT}/${HardwareAPI.LIGHT_ON}`
                    : `${HardwareAPI.HELP_LIGHT}/${HardwareAPI.LIGHT_OFF}`;
                this.dataService.getInfo(value).then(
                    (res: ResponseObject) => {
                        this.commonSvc.cancelLoading();
                        // x=JSON.parse(x)
                        if (res.code === ResponseObjectCode.SUCCESS_CODE) {
                            this.tipCn = '';
                            this.tipEn = '';
                            if (
                                value ===
                                `${HardwareAPI.HELP_LIGHT}/${HardwareAPI.LIGHT_ON}`
                            ) {
                                console.log(111);
                                this.isOn = true;
                                this.isOff = false;
                            } else {
                                this.isOn = false;
                                this.isOff = true;
                            }
                        } else {
                            logger.info(value, res);
                            this.helpLightErrTip();
                        }
                    },
                    (err) => {
                        this.commonSvc.cancelLoading();
                        this.helpLightErrTip();
                        logger.error(err);
                        console.log(err);
                    }
                );
            }, 1000);
        }
        helpLightErrTip() {
            this.tipCn = '硬件故障';
            this.tipEn = 'HELP LIGHT ERROR - Help Light Malfunction';
        }
    }
  • 相关阅读:
    今天学到的单词
    今天是运维的一天
    今天是属于数据库的一天
    Python基础9 元组的访问和拆包
    Python基础8 元组的创建
    Python基础7 序列
    Python基础6 控制语句 if else elif range() while for
    Python基础5 运算符
    Python基础4 字符串的查找 find rfind 字符串类型和数字类型的转换
    Python基础2 数据类型:数字类型
  • 原文地址:https://www.cnblogs.com/dming4/p/16326795.html
Copyright © 2020-2023  润新知