199da06d0Sopenharmony_ci/**
299da06d0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
399da06d0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
499da06d0Sopenharmony_ci * you may not use this file except in compliance with the License.
599da06d0Sopenharmony_ci * You may obtain a copy of the License at
699da06d0Sopenharmony_ci *
799da06d0Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
899da06d0Sopenharmony_ci *
999da06d0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1099da06d0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1199da06d0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1299da06d0Sopenharmony_ci * See the License for the specific language governing permissions and
1399da06d0Sopenharmony_ci * limitations under the License.
1499da06d0Sopenharmony_ci */
1599da06d0Sopenharmony_ci
1699da06d0Sopenharmony_ci/**
1799da06d0Sopenharmony_ci * @file: Tools
1899da06d0Sopenharmony_ci */
1999da06d0Sopenharmony_ci
2099da06d0Sopenharmony_ci
2199da06d0Sopenharmony_ci/**
2299da06d0Sopenharmony_ci * Carry when the time is greater than 9 seconds
2399da06d0Sopenharmony_ci */
2499da06d0Sopenharmony_ciconst NINE_MAX = 9;
2599da06d0Sopenharmony_ci
2699da06d0Sopenharmony_ci/**
2799da06d0Sopenharmony_ci * Divide by 60 to get minutes and seconds
2899da06d0Sopenharmony_ci */
2999da06d0Sopenharmony_ciconst SIXTY_SECONDS = 60;
3099da06d0Sopenharmony_ciconst SEC_VAL = 1000;
3199da06d0Sopenharmony_ciconst MIN_VAL = SIXTY_SECONDS * SEC_VAL
3299da06d0Sopenharmony_ci
3399da06d0Sopenharmony_ciexport default class Utils {
3499da06d0Sopenharmony_ci  private static sUtils: Utils
3599da06d0Sopenharmony_ci
3699da06d0Sopenharmony_ci  public static getInstance(): Utils {
3799da06d0Sopenharmony_ci    if (Utils.sUtils == null) {
3899da06d0Sopenharmony_ci      Utils.sUtils = new Utils()
3999da06d0Sopenharmony_ci    }
4099da06d0Sopenharmony_ci    return Utils.sUtils;
4199da06d0Sopenharmony_ci  }
4299da06d0Sopenharmony_ci
4399da06d0Sopenharmony_ci  /**
4499da06d0Sopenharmony_ci   * format phone number
4599da06d0Sopenharmony_ci   *
4699da06d0Sopenharmony_ci   * @param { string } phoneNumber
4799da06d0Sopenharmony_ci   */
4899da06d0Sopenharmony_ci  public formatPhoneNum(phoneNumber) {
4999da06d0Sopenharmony_ci    if (/^1\d{10}$/.test(phoneNumber)) {
5099da06d0Sopenharmony_ci      const str01 = phoneNumber.substring(0, 3);
5199da06d0Sopenharmony_ci      const str02 = phoneNumber.substring(3, 7);
5299da06d0Sopenharmony_ci      const str03 = phoneNumber.substring(7, 11);
5399da06d0Sopenharmony_ci      return `${str01} ${str02} ${str03}`;
5499da06d0Sopenharmony_ci    }
5599da06d0Sopenharmony_ci    return phoneNumber;
5699da06d0Sopenharmony_ci  }
5799da06d0Sopenharmony_ci
5899da06d0Sopenharmony_ci  /**
5999da06d0Sopenharmony_ci   * format time
6099da06d0Sopenharmony_ci   *
6199da06d0Sopenharmony_ci   * @param { number } count
6299da06d0Sopenharmony_ci   */
6399da06d0Sopenharmony_ci  public formatTime(count) {
6499da06d0Sopenharmony_ci    const second = Math.floor((count % MIN_VAL) / SEC_VAL);
6599da06d0Sopenharmony_ci    const minute = Math.floor((count / MIN_VAL) % SIXTY_SECONDS);
6699da06d0Sopenharmony_ci    const hour = Math.floor(count / (SIXTY_SECONDS * MIN_VAL));
6799da06d0Sopenharmony_ci    const secondStr = second <= NINE_MAX ? '0' + second : second;
6899da06d0Sopenharmony_ci    const minuteStr = minute <= NINE_MAX ? '0' + minute : minute;
6999da06d0Sopenharmony_ci    return hour > 0 ? `${hour}:${minuteStr}:${secondStr}` : `${minuteStr}:${secondStr}`;
7099da06d0Sopenharmony_ci  }
7199da06d0Sopenharmony_ci
7299da06d0Sopenharmony_ci  /**
7399da06d0Sopenharmony_ci   * debounce
7499da06d0Sopenharmony_ci   *
7599da06d0Sopenharmony_ci   * @param {Function} func
7699da06d0Sopenharmony_ci   *
7799da06d0Sopenharmony_ci   * @param {Number} delay
7899da06d0Sopenharmony_ci   *
7999da06d0Sopenharmony_ci   * @return function
8099da06d0Sopenharmony_ci   */
8199da06d0Sopenharmony_ci  public debounce(func, delay = 200) {
8299da06d0Sopenharmony_ci    let timer = null;
8399da06d0Sopenharmony_ci    return function () {
8499da06d0Sopenharmony_ci      clearTimeout(timer);
8599da06d0Sopenharmony_ci      timer = setTimeout(() => {
8699da06d0Sopenharmony_ci        func.apply(this, arguments);
8799da06d0Sopenharmony_ci      }, delay);
8899da06d0Sopenharmony_ci    };
8999da06d0Sopenharmony_ci  }
9099da06d0Sopenharmony_ci}