package main
import (
"reflect"
"strings"
"syscall/js"
"time"
"Toolbox/goDataverseStrict/metrics"
"git.archium.org/archium_public/ebkTools/wasm"
archiumwasm "git.archium.org/archium_public/ebkTools/wasm"
//_ nwa "git.archium.org/archium_public/ebkTools/nhooyrioWebsocketAddons"
//"Toolbox/goDataverseStrict/metrics"
)
// Setze und lese aus ID
const (
//ENHANCErecords = false
//ENHANCEebenen = false
DEBUG = true
LOOPTAKT = "0.6s" //Kontschi sagt "0.7s"
PDPURL = "https://pdp.archium.org" //"http://localhost:8080"
SPANSEPARATOR = "bis"
)
/*
var signal = make(chan int)
func keepAlive() {
for {
<-signal
}
}
*/
func getIdWhichJustChanged() func(js.Value, []metrics.OneJumpPointSet) (string, int8) {
var oldIds, newIds []wasm.Checkerboard
internalClosureFunction := func(injectpoint js.Value, ojpsdata []metrics.OneJumpPointSet) (string, int8) {
var founditS string
var founditI int8 = -1 //Default
var tmpIdsS []string
var tmpIdsI []int8
for l := int8(0); l <= 3; l++ {
a, _ := metrics.FilterStacklist(ojpsdata, l)
for _, v := range a {
tmpIdsS = append(tmpIdsS, metrics.IDRequestCriteriaPrefix+v)
tmpIdsI = append(tmpIdsI, l)
}
}
//log.Println(tmpIdsS)
newIds = wasm.GetStatusFromBulkOfIds(injectpoint, tmpIdsS)
if len(oldIds) > 0 && !reflect.DeepEqual(oldIds, newIds) {
for i, n := range newIds {
if oldIds[i].Checked != n.Checked && !oldIds[i].Checked && n.Checked { //newIds[i].Checked
founditS = strings.TrimPrefix(n.Id, metrics.IDRequestCriteriaPrefix)
founditI = tmpIdsI[i]
break
}
}
}
oldIds = newIds
return founditS, founditI
}
return internalClosureFunction
}
func barseTuration(s string) time.Duration {
d, err := time.ParseDuration(s)
if err != nil {
panic(err)
}
return d
}
func main() {
var (
dombase, bodyInject, scriptarea, chartarea, submitbutton js.Value
//dombase, body, body2, butt, , bodyDatabase, bodyTectonics, js.Value
/*TODO: WICHTIG nicht löschen
oldcheckers, newcheckers []archiumwasm.Checkerboard
checked_type, oldchecked_type, checked_result string
*/
)
closureGetIdWhichJustChanged := getIdWhichJustChanged()
//log.Println("started")
//connectionReceive, _, errReceive := websocket.Dial(ctx, "ws://"+configs["websockeIp"]+":"+configs["websocketPort0S"], nil)
//connectionSend, _, errSend := websocket.Dial(ctx, "ws://"+configs["websockeIp"]+":"+configs["websocketPort1R"], nil)
dombase = js.Global().Get("document")
//bodyDatabase = dombase.Call("getElementById", vectorIdDatabase) //.Index(0)
//bodyTectonics = dombase.Call("getElementById", vectorIdDescription)
bodyInject = dombase.Call(wasm.DOCUMENTS_METHOD_getElementById, "injectarea")
scriptarea = dombase.Call(wasm.DOCUMENTS_METHOD_getElementById, "scriptarea")
//formarea = dombase.Call("getElementById", "formarea")
//testarea = dombase.Call(wasm.DOCUMENTS_METHOD_getElementById, "testarea")
chartarea = dombase.Call(archiumwasm.DOCUMENTS_METHOD_getElementById, "chartarea")
submitbutton = dombase.Call(archiumwasm.DOCUMENTS_METHOD_getElementById, metrics.IDFormSubmit)
var oldPseudoSubmitData, pseudoSubmitData lokalRequestType
//butt = dombase.Call("getElementById", "runButton")
//lmog.Println(butt)
// tmpRohtext := bodyDatabase.Get("innerText").String()
//tmpRohtextTectonics := bodyTectonics.Get("innerText").String()
//bodyInject.Set("innerText", fmt.Sprintf("%v", os.Args))
if DEBUG { // Zeige Pinguin als Zeichen dafür, daß das Programm vollständig durchlaufen wurde
image := dombase.Call("createElement", "img")
image.Set("src", "data:image/png;base64,"+imageByteArrayAsBase64)
bodyInject.Call("appendChild", image)
}
//image2 := dombase.Call("createElement", "img")
//image2.Set("src", "data:image/png;base64,"+imageByteArrayAsBase64)
//body2.Call("appendChild", image)
//js.Global().Get("console").Call("log", "Just another way to send a string to console-log!")
//js.Global().Get("document").Call("getElementsByTagName", "body").Index(0).Set("innerText", time.Now().String())
//keepAlive()
/*
fmt.Println("HIER")
fmt.Println(js.Global().Get("dataaa").Index(1))
fmt.Println("BIER")
fmt.Println(windowbase.Get("dataaa"))
dataaaJS := windowbase.Get("dataaa")
var bb []byte
fmt.Println(dataaaJS)
fmt.Println(bb)
// windowbase.Set("dataaa", js.ValueOf([]interface{}{1, 2, 3, 4, 5, 6, 7, 9}))
fmt.Println("GIER")
*/
//chartarea.Set("innerHTML", "")
chartarea.Set("innerHTML", ca0)
scriptarea.Set("innerHTML", insebody0)
js.Global().Set("removeAllData", js.FuncOf(removeAllDataGo))
js.Global().Set("addAllData", js.FuncOf(addAllDataGo))
js.Global().Set("pseudoSubmit", js.FuncOf(pseudoSubmitData.pseudoSubmit))
//log.Println( submitbutton Set("onclick", "pseudoSubmit"))
submitbutton.Call(archiumwasm.ELEMENTS_METHOD_setAttribute, "onclick", "pseudoSubmit()")
/*TODO: WICHTIG nicht löschen
_, _, checked_result = archiumwasm.GetCheckedRadioOrCheckbox(dombase.Call(archiumwasm.DOCUMENTS_METHOD_getElementsByName, "form_results_radio")) //Ändert sich nach neuer Arbeitsweise ja nicht mehr.
var firstTimeEqual bool
*/
for ; true; time.Sleep(barseTuration(LOOPTAKT)) {
s, l := closureGetIdWhichJustChanged(dombase, metrics.OneJumpPoints)
//log.Println("Websocket loop started")
//botz := dombase.Call("getElementById", "input_"+string(metrics.MT1dataverses))
//botz := dombase.Call("getElementById", "form_types") //.Get("innerHTML")
//dombase.Call("getElementById", "form_types")
//botz.Call("createAttribute", "checked")
//botz.Call("setAttribute", "checked", "true")
//fmt.Println(botz.Call("getAttribute", "checked").String())
// log.Println(botz.Index(0).Get("checked"))
// log.Println(botz.Index(1).Get("checked"))
// log.Println(botz.Index(2).IsUndefined())
//log.Println(dombase.Call(archiumwasm.DOCUMENTS_METHOD_getElementById, "input_"+string(metrics.ST1_total)).Get("value").String())
/*FIXME: Wichtig Nicht löschen
_, _, checked_type = archiumwasm.GetCheckedRadioOrCheckbox(dombase.Call(archiumwasm.DOCUMENTS_METHOD_getElementsByName, "form_types_radio"))
newcheckers = archiumwasm.GetStatusFromBulkOfIds(dombase, []string{
//"input_" + string(metrics.MT1dataverses),
//"input_" + string(metrics.MT2datasets),
//"input_" + string(metrics.MT3files),
//"input_" + string(metrics.MT4downloads),
//"input_" + string(metrics.MT5filedownloads),
//"input_" + string(metrics.MT6uniquefiledownloads),
//"input_" + string(metrics.RT1json),
//"input_" + string(metrics.RT2csv),
"input_" + string(metrics.ST1_total),
"input_" + string(metrics.ST2_tomonth),
"input_" + string(metrics.ST3_pastdays),
"input_" + string(metrics.ST4_monthly),
"input_" + string(metrics.ST5_tree),
})
*/
//dombase.Call("getElementById", metrics.IDRequestCriteriaPrefix+metrics.MT1dataverses).Call("setAttribute", "checked", "true")
//wasm.GetStatusFromBulkOfIds(dombase, metrics.FilterStacklist(metrics.OneJumpPoints, 0))
//testarea.Set("innerHTML", fmt.Sprintf("OneJumpPointSet: %v
", "TEST"))
//log.Println(oldcheckers)
//log.Println(newcheckers)
//log.Println(reflect.DeepEqual(oldcheckers, newcheckers))
/*TODO: Wichtig nicht löschen
if reflect.DeepEqual(oldcheckers, newcheckers) && oldchecked_type == checked_type {
if !firstTimeEqual {
firstTimeEqual = true
//_, _, checked_type = archiumwasm.GetCheckedRadioOrCheckbox(dombase.Call(archiumwasm.DOCUMENTS_METHOD_getElementsByName, "form_types_radio"))
//_, _, checked_result = archiumwasm.GetCheckedRadioOrCheckbox(dombase.Call(archiumwasm.DOCUMENTS_METHOD_getElementsByName, "form_results_radio"))
triggerResultprintation(metrics.MetricsType(checked_type), metrics.ReturnformatType(checked_result), newcheckers, bodyInject)
}
//windowbase.Set("dataaa", js.ValueOf([]interface{}{9, 2, 3, 8, 5, 6, 2, 1}))
// _ = windowbase.Get("fubagchart").Call("update", "")
} else {
oldcheckers = newcheckers
oldchecked_type = checked_type
firstTimeEqual = false
//scriptarea.Set("innerHTML", insebody0)
//dataaaJS := windowbase.Get("fubagchart")
//_ = dataaaJS.Call("update", "")
//_ =js.Global().Call("alert", 123)
//windowbase.Set("dataaa", js.ValueOf([]interface{}{1, 2, 3, 4, 5, 6, 7, 9}))
//_ = windowbase.Get("fubagchart").Call("update", "")
}
*/
pseudoSubmitData.changeTicker(s, l)
if !reflect.DeepEqual(oldPseudoSubmitData, pseudoSubmitData) {
pseudoSubmitData.triggerResultprintationGedöhnz(bodyInject)
}
oldPseudoSubmitData = pseudoSubmitData
}
}