45 lines
2.2 KiB
Swift
45 lines
2.2 KiB
Swift
import Foundation
|
||
|
||
/// Демо-данные для плейсхолдера, галереи виджетов и превью.
|
||
/// Плейсхолдер нужен и в релизе, поэтому файл не под `#if DEBUG`.
|
||
enum PreviewData {
|
||
static var entry: CryptoEntry {
|
||
CryptoEntry(
|
||
date: .now,
|
||
quotes: thumbs.map { thumb in
|
||
Quote(thumb: thumb, series: series(for: thumb), icon: nil)
|
||
}
|
||
)
|
||
}
|
||
|
||
static let thumbs: [SymbolThumb] = [
|
||
SymbolThumb(symbol: "BTC/USDT", open: 71000, high: 71381.5, low: 68894.5,
|
||
close: 70324, chg: 0.0234, change: 1676, volume: 223.9,
|
||
turnover: 41_930_552, quoteCurrencyName: "Bitcoin",
|
||
baseCurrency: "USDT", quoteCurrency: "BTC"),
|
||
SymbolThumb(symbol: "ETH/USDT", open: 2152.9, high: 2177.4, low: 2105,
|
||
close: 2143.5, chg: -0.00446, change: -9.4, volume: 27226,
|
||
turnover: 119_347_435, quoteCurrencyName: "Ethereum",
|
||
baseCurrency: "USDT", quoteCurrency: "ETH"),
|
||
SymbolThumb(symbol: "SOL/USDT", open: 91.77, high: 92.29, low: 88.3,
|
||
close: 90.08, chg: -0.01913, change: -1.69, volume: 349_968,
|
||
turnover: 71_024_390, quoteCurrencyName: "Solana",
|
||
baseCurrency: "USDT", quoteCurrency: "SOL"),
|
||
SymbolThumb(symbol: "TON/USDT", open: 1.31, high: 1.35, low: 1.29,
|
||
close: 1.3382, chg: 0.0223, change: 0.0282, volume: 5_200_000,
|
||
turnover: 6_958_640, quoteCurrencyName: "Toncoin",
|
||
baseCurrency: "USDT", quoteCurrency: "TON"),
|
||
]
|
||
|
||
/// Синтетический ряд, похожий на дневной график.
|
||
private static func series(for thumb: SymbolThumb, points: Int = 48) -> [Double] {
|
||
var values = (0..<points).map { index -> Double in
|
||
let t = Double(index) / Double(points - 1)
|
||
let wave = sin(t * 7) * 0.4 + sin(t * 17 + 1.2) * 0.18 + sin(t * 3.3) * 0.5
|
||
return thumb.open + (thumb.close - thumb.open) * t + wave * (thumb.high - thumb.low) * 0.35
|
||
}
|
||
values.append(thumb.close)
|
||
return values
|
||
}
|
||
}
|