-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDataTable.swift
79 lines (55 loc) · 2.06 KB
/
DataTable.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//
// DataTable.swift
// MiniSQL Client
//
// Created by Yuanlin Lin on 2021/6/13.
//
import Foundation
import SwiftUI
struct DataTable:View {
@Binding var fields: [Attribute];
@Binding var data: [[String]];
@Binding var page: Int;
func dataFromIndex() -> Int {
return 60 * (page-1) > data.count ? data.count - 1 : 60 * (page-1)
}
func dataToIndex() -> Int {
return 60 * (page) > data.count ? data.count : 60 * page
}
var body: some View {
VStack(spacing: 0) {
HStack(spacing: 0) {
ForEach(fields, id: \.name) { i in
Text(i.name).foregroundColor(Color.white).padding().frame(width: 120,height: 24)
Divider()
}
Spacer()
}.background(Color.gray).frame(height: 24)
Divider()
ScrollView {
ForEach( data.count == 0 ? [] : data[dataFromIndex()..<dataToIndex()], id: \.self) { i in
HStack(spacing: 0) {
ForEach(i, id: \.self) { j in
Text(j).padding().frame(width: 120,height: 18)
Divider()
}
Spacer()
}
Divider()
}
}.frame(height: 240)
HStack {
Spacer()
if(page > 1) {
Button("Next Page") {
page-=1
}
}
Text("Page " + String(page))
Button("Next Page") {
page+=1
}
}.padding(12)
}.background(Color.white)
}
}