91 lines
3.1 KiB
Swift
91 lines
3.1 KiB
Swift
//
|
|
// ResourcesModelPerformance.swift
|
|
// PayCash
|
|
//
|
|
// Created by Igor on 09.03.2021.
|
|
// Copyright © 2021 AM. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
extension Resources.Model {
|
|
struct Performance {
|
|
enum Kind: String {
|
|
case cpu
|
|
case net
|
|
case ram
|
|
}
|
|
let kind: Kind
|
|
let available: Int
|
|
let max: Int
|
|
let staked: String
|
|
let stakedByMe: String
|
|
let stakedByOthers: String
|
|
let divider: Decimal
|
|
init(
|
|
kind: Kind,
|
|
available: Int? = nil,
|
|
max: Int? = nil,
|
|
staked: String? = nil,
|
|
stakedByMe: String? = nil
|
|
) {
|
|
self.kind = kind
|
|
self.available = available ?? 0
|
|
self.max = max ?? 0
|
|
self.staked = staked ?? Decimal(0).toString(max: .eosioToken)
|
|
self.stakedByMe = stakedByMe ?? Decimal(0).toString(max: .eosioToken)
|
|
let subtract = (staked?.amount.toDecimal() ?? 0) - self.stakedByMe.amount.toDecimal()
|
|
self.stakedByOthers = ((subtract > 0) ? subtract : 0).toString(max: .eosioToken)
|
|
self.divider = kind == .cpu ? 1000 : 1024
|
|
}
|
|
}
|
|
}
|
|
|
|
extension Resources.Model.Performance {
|
|
|
|
var availableProgress: Double { Double(available) / Double(max == 0 ? 1 : max) }
|
|
var availableProgressString: String { "\(Int(availableProgress*100))%" }
|
|
var availableString: String {
|
|
L10n.Resources.Performance.available(
|
|
(Decimal(available) / divider).roundDown(to: 2).toString(max: 2, group: false, symbol: kind.unit),
|
|
(Decimal(max) / divider).roundDown(to: 2).toString(max: 2, group: false, symbol: kind.unit),
|
|
availableProgressString
|
|
)
|
|
}
|
|
var availableKbString: String {
|
|
L10n.Resources.Performance.Available.kb(
|
|
(Decimal(available) / divider).roundDown(to: 2).toString(max: 2, group: false, symbol: kind.unit)
|
|
)
|
|
}
|
|
var used: Int { max - available }
|
|
var usedProgress: Double { 1 - availableProgress }
|
|
var usedProgressString: String { "\(Int(usedProgress*100))%" }
|
|
var usedString: String {
|
|
L10n.Resources.Performance.used(
|
|
(Decimal(used) / divider).roundDown(to: 2).toString(max: 2, group: false),
|
|
(Decimal(max) / divider).roundDown(to: 2).toString(max: 2, group: false),
|
|
kind.unit
|
|
)
|
|
}
|
|
|
|
var avaliableStr: String {
|
|
L10n.Resources.Performance.used2(
|
|
(Decimal(available) / divider).roundDown(to: 2).toString(max: 2, group: false),
|
|
kind.unit
|
|
)
|
|
}
|
|
var maxStr: String {
|
|
L10n.Resources.Performance.used2(
|
|
(Decimal(max) / divider).roundDown(to: 2).toString(max: 2, group: false),
|
|
kind.unit
|
|
)
|
|
}
|
|
}
|
|
|
|
extension Resources.Model.Performance.Kind {
|
|
var unit: String { self == .cpu ? L10n.Resources.Performance.Unit.ms : L10n.Resources.Performance.Unit.kb }
|
|
var prefix: String { "resources.performance.kind.\(rawValue).prefix".localized }
|
|
var name: String { "resources.performance.kind.\(rawValue).name".localized }
|
|
var title: String { prefix.isEmpty ? name : "\(prefix) (\(name))" }
|
|
}
|