253 lines
8.5 KiB
Go
253 lines
8.5 KiB
Go
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<br><br>", "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
|
|
}
|
|
|
|
}
|