import BaseAlgorithm from '../core/BaseAlgorithm' import Window from '../core/Window' export default class ConnectRateAlgorithm extends BaseAlgorithm { compute(content: any, window: Window): void { let result = window.getResult() const finished = content["finished"] if (finished != "true") { return } const country = content["countryZh"] let { viaUserDevice, remoteInput, remoteOutput, localInput, localOutput, connEstablished, closeReason, localErrorMsg, remoteErrorMsg } = content let success = connEstablished == "1" || (localInput + localOutput > 0 && remoteInput + remoteOutput > 0) let deviceMetric: any = {} if (result[viaUserDevice]) { deviceMetric = result[viaUserDevice] } let metric = deviceMetric[country] if (!metric) { metric = { total: 0, fail: 0 } } else { metric["total"]++ if (!success) { metric["fail"]++ let errors = metric["errors"] if (!errors) { errors = {} } if (remoteErrorMsg) { if (errors[remoteErrorMsg]) { errors[remoteErrorMsg]++ } else { errors[remoteErrorMsg] = 1 } } if (localErrorMsg) { if (errors[localErrorMsg]) { errors[localErrorMsg]++ } else { errors[localErrorMsg] = 1 } } if (!remoteErrorMsg && !localErrorMsg) { if (errors[closeReason]) { errors[closeReason]++ } else { errors[closeReason] = 1 } } metric["errors"] = errors } } deviceMetric[country] = metric result[viaUserDevice] = deviceMetric window.setResult(result) } }