Fix Locking

This commit is contained in:
2025-05-23 19:48:22 +02:00
parent f8ab5c8358
commit 3e07e2f06e
6 changed files with 77 additions and 59 deletions

View File

@@ -5,8 +5,11 @@ import (
"fmt"
"net/http"
db_table "api-cds-search/cmd/database/table"
"code.achtarmig.org/pas/ui/element"
"code.achtarmig.org/pas/ui/element/container"
"code.achtarmig.org/pas/ui/element/form"
"code.achtarmig.org/pas/ui/element/input"
"code.achtarmig.org/pas/ui/element/option"
"code.achtarmig.org/pas/ui/element/table"
@@ -21,14 +24,22 @@ func cdsDetails() {
p.OnRequest = onRequestDetails
container.New(p, "Details", func(p *container.Element) {
p.Justify = option.JustifyCenter
input.New(p, "q", input.TypeText, func(p *input.Element) {
p.Placeholder = "CDSViewTechnicalName"
p.Shape = option.ShapeRound
p.SetHTMX(element.HTMX{
Method: http.MethodGet,
Target: "#DetailsTable",
URL: "/cds",
PushURL: true,
form.New(p, "qForm", func(p *form.Element) {
p.Method = http.MethodGet
p.Target = "#DetailsTable"
p.URL = "/cds"
p.PushURL = true
input.New(p, "q", input.TypeText, func(p *input.Element) {
p.ValidateInput = true
p.RequestDelay = 200
p.Parameter = true
p.Placeholder = "CDSViewTechnicalName"
p.Shape = option.ShapeRound
p.OnValidate = func(e *input.Element, v any) error {
_, err := db_table.GetCDSView(db_table.TechnicalName(v.(string)))
return err
}
})
})
})
@@ -43,7 +54,7 @@ func cdsDetails() {
}
func onRequestDetails(e *view.Element, w http.ResponseWriter, r *http.Request) view.ProcessElements {
cds, _ := e.GetElement("q").(*input.Element).GetDataText()
cds, _ := e.GetElement("q").(*input.Element).GetDataString()
e.Title = fmt.Sprintf("CDSDetails - %s", cds)

View File

@@ -40,7 +40,7 @@ func noResults(v *view.Element) element.ElementInterface {
cont := v.GetElement("SearchResultsContainer")
cont.DeleteAllChildren()
pl, _ := placeholder.New(cont, "", func(p *placeholder.Element) {
pl := placeholder.New(cont, "", func(p *placeholder.Element) {
p.Icon = option.IconLoupe
p.Title = "No Results"
p.Subtitle = "Try refining your search term"

View File

@@ -19,7 +19,7 @@ func noSearch(v *view.Element) element.ElementInterface {
cont := v.GetElement("SearchResultsContainer")
cont.DeleteAllChildren()
pl, _ := placeholder.New(cont, "", func(p *placeholder.Element) {
pl := placeholder.New(cont, "", func(p *placeholder.Element) {
p.Icon = option.IconLoupe
p.Title = "Search CDS-Views"
p.Subtitle = "Find CDS-Views from the Business Accelerator Hub"
@@ -33,7 +33,7 @@ func searchView() {
p.Title = "CDS-Search"
p.OnRequest = func(v *view.Element, w http.ResponseWriter, r *http.Request) view.ProcessElements {
inputQuery := v.GetElement("q").(*input.Element)
inputQueryValue, _ := v.GetElement("q").(*input.Element).GetDataText()
inputQueryValue, _ := v.GetElement("q").(*input.Element).GetDataString()
searchTerm := search.GetSearchTerm(inputQueryValue)
if inputQueryValue == "" {
@@ -43,7 +43,7 @@ func searchView() {
inputPage := v.GetElement("p").(*input.Element)
inputMaxPage := v.GetElement("MaxPage").(*input.Element)
currentPage, _ := inputPage.GetDataNumber()
currentPage, _ := inputPage.GetDataInt()
if inputQuery.GetDataChanged() && inputQueryValue != "" {
buf, err := search.GetBuffer(searchTerm)
@@ -70,25 +70,24 @@ func searchView() {
return view.ProcessElements{
Partial: []element.ElementInterface{v.GetElement("SearchResultsContainer")},
OOBUpdate: []element.ElementInterface{inputPage, inputMaxPage},
OOBUpdate: []element.ElementInterface{v.GetElement("pagerForm")},
}
}
container.New(p, "MainContainer", func(p *container.Element) {
p.Justify = option.JustifyCenter
form.New(p, "SearchForm", func(p *form.Element) {
p.SetHTMX(element.HTMX{
Method: http.MethodGet,
Target: "#SearchResultsContainer>*",
Swap: "outerHTML",
URL: "/search",
PushURL: true,
Params: "q, p",
})
p.Method = http.MethodGet
p.Target = "#SearchResultsContainer>*"
p.Swap = "outerHTML"
p.URL = "/search"
p.PushURL = true
p.Params = "q, p"
container.New(p, "SearchFormLinked", func(p *container.Element) {
p.Justify = option.JustifyCenter
p.LinkedHorizontal = true
input.New(p, "q", input.TypeText, func(p *input.Element) {
p.Parameter = true
p.Placeholder = "Search here"
p.Shape = option.ShapeRound
@@ -110,38 +109,43 @@ func searchView() {
container.New(p, "CenterPager", func(p *container.Element) {
p.Justify = option.JustifyCenter
container.New(p, "Pager", func(p *container.Element) {
container.New(p, "RightCenterPager", func(p *container.Element) {
p.MaxWidth = 42
p.MinWidth = 10
p.Justify = option.JustifyRight
p.LinkedHorizontal = true
input.New(p, "p", input.TypeNumber, func(p *input.Element) {
p.Shape = option.ShapeRound
form.New(p, "pagerForm", func(p *form.Element) {
p.MaxWidth = -1
p.MinWidth = 8
p.Method = http.MethodGet
p.Include = "[name='q'], [name='p']"
p.Target = "#SearchResultsContainer>*"
p.URL = "/search"
p.Swap = "outerHTML"
p.Trigger = "change from:#p"
p.PushURL = true
container.New(p, "LinkPager", func(p *container.Element) {
p.LinkedHorizontal = true
input.New(p, "p", input.TypeNumber, func(p *input.Element) {
p.Parameter = true
p.Shape = option.ShapeRound
p.SetMin = true
p.Min = 0
p.SetMin = true
p.Min = 0
p.SetMax = true
p.Max = 0
p.SetMax = true
p.Max = 0
p.MinWidth = 4
p.SetHTMX(element.HTMX{
Method: http.MethodGet,
Include: "[name='q'], [name='p']",
Target: "#SearchResultsContainer>*",
URL: "/search",
Swap: "outerHTML",
PushURL: true,
p.MinWidth = 4
})
input.New(p, "MaxPage", input.TypeNumber, func(p *input.Element) {
p.Disabled = true
p.Shape = option.ShapeRound
p.MinWidth = 4
p.SetMin = true
p.SetMax = true
})
})
})
input.New(p, "MaxPage", input.TypeNumber, func(p *input.Element) {
p.Disabled = true
p.Shape = option.ShapeRound
p.MinWidth = 4
p.SetMin = true
p.SetMax = true
})
})
})