summaryrefslogtreecommitdiff
path: root/interface/main.go
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2022-05-24 12:57:09 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2022-05-24 12:57:09 +0400
commit5ac59d00add5c7982bc3eefa9145bfe676044734 (patch)
treecbf50112eda1839b6a514dcf85b657c7f77aa9d1 /interface/main.go
parent31d4558821bfffbc07d5fae54fa063c019a6f7a9 (diff)
Базовая версия интерфейса
Diffstat (limited to 'interface/main.go')
-rw-r--r--interface/main.go140
1 files changed, 140 insertions, 0 deletions
diff --git a/interface/main.go b/interface/main.go
new file mode 100644
index 0000000..8f7566d
--- /dev/null
+++ b/interface/main.go
@@ -0,0 +1,140 @@
+package main
+
+import (
+ "fmt"
+ "fyne.io/fyne/v2"
+ "fyne.io/fyne/v2/app"
+ "fyne.io/fyne/v2/canvas"
+ "fyne.io/fyne/v2/container"
+ "fyne.io/fyne/v2/layout"
+ "fyne.io/fyne/v2/widget"
+ "image/color"
+)
+
+type DBInterface struct {
+ window fyne.Window
+ db SQLConnection
+}
+
+func insertView(window fyne.Window, db SQLConnection, table string) {
+ window.SetTitle(fmt.Sprintf("Insert into table %s", table))
+ columns, _ := db.getColumns(table)
+
+ var elements []fyne.CanvasObject
+ for _, val := range columns {
+ label := canvas.NewText(val, color.White)
+ input := widget.NewEntry()
+ elements = append(elements, container.New(
+ layout.NewBorderLayout(nil, nil, label, nil),
+ label, input))
+ }
+ elements = append(elements, widget.NewButton("Вставить", func() {}))
+ elements = append(elements, widget.NewButton("Назад", func() {
+ showTable(window, db, table)
+ }))
+
+ mainContainer := container.NewVBox(elements...)
+ window.SetContent(mainContainer)
+}
+
+func showTable(window fyne.Window, db SQLConnection, table string) {
+ data, err := db.getTable(table)
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ columns, err := db.getColumns(table)
+
+ list := widget.NewTable(
+ func() (int, int) {
+ return len(data), len(columns)
+ },
+ func() fyne.CanvasObject {
+ return widget.NewLabel("wide content")
+ },
+ func(i widget.TableCellID, o fyne.CanvasObject) {
+ o.(*widget.Label).SetText(fmt.Sprintf("%v", data[i.Row][i.Col]))
+ })
+
+ signup := widget.NewButton("Вставить", func() {
+ insertView(window, db, table)
+ })
+
+ back := widget.NewButton("Назад", func() {
+ adminView(window, db)
+ })
+
+ window.SetContent(container.NewBorder(nil, container.NewHBox(signup, back), nil, nil, list))
+}
+
+func adminView(window fyne.Window, db SQLConnection) {
+ tables, _ := db.getTables()
+
+ var tableBtns []fyne.CanvasObject
+ tableBtns = append(tableBtns, container.NewCenter(widget.NewLabel("Таблицы")))
+ for _, val := range tables {
+ e := val
+ tableBtns = append(
+ tableBtns, widget.NewButton(
+ fmt.Sprintf("Показать %s", val),
+ func() {
+ showTable(window, db, e)
+ }))
+ }
+
+ views, _ := db.getViews()
+ var viewsBtns []fyne.CanvasObject
+ viewsBtns = append(viewsBtns, container.NewCenter(widget.NewLabel("Представления")))
+ for _, val := range views {
+ e := val
+ viewsBtns = append(
+ viewsBtns, widget.NewButton(
+ fmt.Sprintf("Показать %s", val),
+ func() {
+ showTable(window, db, e)
+ }))
+ }
+
+ tablesScroll := container.NewVScroll(container.NewVBox(tableBtns...))
+ viewsScroll := container.NewVScroll(container.NewVBox(viewsBtns...))
+
+ dataBox := container.NewHBox(tablesScroll, viewsScroll)
+ menuBtn := widget.NewButton("В меню", func() {
+ menu(window, db)
+ })
+
+ window.SetContent(container.NewBorder(nil, menuBtn, nil, nil, dataBox))
+}
+
+func userView(window fyne.Window, db SQLConnection) {
+
+}
+
+func menu(window fyne.Window, db SQLConnection) {
+ window.SetContent(container.NewCenter(
+ container.NewVBox(
+ widget.NewButton("Режим Администратора", func() {
+ adminView(window, db)
+ }),
+ widget.NewButton("Режим Пользователя", func() {
+ userView(window, db)
+ }),
+ ),
+ ))
+}
+
+func main() {
+ myApp := app.New()
+ window := myApp.NewWindow("Table Widget")
+ window.Resize(fyne.NewSize(700, 480))
+
+ db := SQLConnection{}
+ err := db.init()
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+
+ menu(window, db)
+ window.ShowAndRun()
+}