Toolbox/goMetrix/app.wasm/output.go

268 lines
10 KiB
Go

package main
import (
"Toolbox/goDataverseStrict/metrics"
"fmt"
"log"
"strconv"
"strings"
"syscall/js"
"time"
"git.archium.org/archium_public/ebkTools/wasm"
)
type lokalRequestType metrics.RequestComponentsType
func metricsSelectDispatcher(server_url, api_token string, rcs metrics.RequestComponentsType) (mdat []byte, mres string) {
var err error
var mtypeOrMdctypeCombi string
//var header map[string]string
header := make(map[string]string)
if len(api_token) > 0 {
header["X-Dataverse-key"] = api_token
}
if len(rcs.Level3ReturnformatType) > 0 {
header["Accept"] = string(rcs.Level3ReturnformatType)
}
switch rcs.Level0MetricsType {
case string(metrics.MT7makeDataCount):
mtypeOrMdctypeCombi = rcs.Level0MetricsType + "/" + rcs.Level1MetricsDataCountType
default:
mtypeOrMdctypeCombi = rcs.Level0MetricsType
}
switch rcs.Level2SearchType {
case string(metrics.ST1total):
mdat, mres = metrics.MetricsTotal(PDPURL, "", metrics.ReturnformatType(rcs.Level3ReturnformatType), mtypeOrMdctypeCombi)
case string(metrics.ST2tomonth):
ts, _ := time.Parse("2006-01", rcs.Level21UserInput)
mdat, mres = metrics.MetricsToMonth(PDPURL, "", metrics.ReturnformatType(rcs.Level3ReturnformatType), mtypeOrMdctypeCombi, ts)
case string(metrics.ST3pastdays):
mdat, mres = metrics.MetricsPastDays(PDPURL, "", metrics.ReturnformatType(rcs.Level3ReturnformatType), mtypeOrMdctypeCombi, func() int {
r, _ := strconv.Atoi(rcs.Level21UserInput)
return r
}())
case string(metrics.ST4monthly):
if len(rcs.Level21UserInput) >= 17 && strings.ContainsAny(strings.ToLower(rcs.Level21UserInput), strings.ToLower(SPANSEPARATOR)) {
ts := func(s string) [2]time.Time {
defer recover()
rowvalues := make([]string, 2, 2)
rowvalues = strings.SplitN(s, strings.ToLower(SPANSEPARATOR), 2)
return [2]time.Time{func() (r time.Time) {
r, _ = time.Parse("2006-01", strings.TrimSpace(rowvalues[0]))
return
}(), func() (r time.Time) {
r, _ = time.Parse("2006-01", strings.TrimSpace(rowvalues[1]))
return
}()}
}(strings.ToLower(rcs.Level21UserInput))
mdat, mres = metrics.MetricsReallyMonthlySpan(PDPURL, "", metrics.ReturnformatType(rcs.Level3ReturnformatType), mtypeOrMdctypeCombi, ts)
} else {
mdat, mres = metrics.MetricsReallyMonthly(PDPURL, "", metrics.ReturnformatType(rcs.Level3ReturnformatType), mtypeOrMdctypeCombi)
}
case string(metrics.ST5tree):
ts, _ := time.Parse("2006-01", rcs.Level21UserInput)
mdat, mres = metrics.MetricsTree(PDPURL, "", metrics.ReturnformatType(rcs.Level3ReturnformatType), ts)
}
//log.Println("DEBUG:", mtypeOrMdctypeCombi)
//res := metrics.MonthlyJsonData{}
//json.Unmarshal([]byte(data), &res)
//log.Println("TIE BREAK", metrics.JsonStructSelector(mdat))
if err != nil {
log.Fatal(err)
}
return
}
func (this *lokalRequestType) triggerResultprintationGedöhnz(injectpoint js.Value) {
injectpoint.Set("innerHTML", fmt.Sprintf("%v<br>%v<br>%v %v<br>%v<br><br>", this.Level0MetricsType, this.Level1MetricsDataCountType, this.Level2SearchType, this.Level21UserInput, this.Level3ReturnformatType))
data, request := metricsSelectDispatcher(PDPURL, "", metrics.RequestComponentsType(*this))
//res := metrics.MonthlyJsonData{}
//log.Println(json.Unmarshal(data, &res))
//fmt.Println(res)
htmlstring := fmt.Sprintf("DIE BAQUE %s<br> %s<br><br>", request, data)
//log.Println("DIE BAQUE", htmlstring)
//res := metrics.MonthlyJsonData{}
//json.Unmarshal([]byte(data), &res)
//log.Println("TIE BREAK", metrics.LinkifyDoiDoi(data))
//https://planetary-data-portal.org/file.xhtml?persistentId=
//var htmlstring string
//windowbase := js.Global().Get("window")
injectpoint.Set("innerHTML", time.Now().String()+"<br>"+htmlstring)
//res := metrics.MonthlyJsonData{}
/*
json.Unmarshal(md, &res)
label := make([]interface{}, len(res.Data), len(res.Data))
bar0 := make([]any, len(res.Data), len(res.Data))
bar1 := make([]any, len(res.Data), len(res.Data))
for i := 0; i < len(res.Data); i++ {
label[i] = res.Data[i].Date
bar0[i] = res.Data[i].Counttotal
bar1[i] = res.Data[i].Countmonth
}
//log.Println(res.Data[0].)
_ = windowbase.Call("removeAllData", windowbase.Get("fubagchart"))
//_ = windowbase.Call("addAllData", windowbase.Get("fubagchart"), js.ValueOf([]interface{}{[]interface{}{"Aa", "Bb"}, []interface{}{9, 2}, []interface{}{2, 9}}))
_ = windowbase.Call("addAllData", windowbase.Get("fubagchart"), js.ValueOf([]interface{}{label, bar0, bar1}))
*/
}
/*
func triggerResultprintation(teip metrics.MetricsType, riesaltformat metrics.ReturnformatType, deineCheckers []archiumwasm.Checkerboard, injectpoint js.Value) {
var htmlstring string
var windowbase js.Value
windowbase = js.Global().Get("window")
for _, v := range deineCheckers {
if v.Disabled == false { //= the single one, that is enabled
switch v.Id {
case "input_" + string(metrics.ST1total):
md, me := metrics.MetricsTotal(PDPURL, "", riesaltformat, teip)
htmlstring = fmt.Sprintf("%s<br> %s<br><br>", me, md)
case "input_" + string(metrics.ST2tomonth):
ts, _ := time.Parse("2006-01", v.Value)
md, me := metrics.MetricsToMonth(PDPURL, "", riesaltformat, teip, ts)
htmlstring = fmt.Sprintf("%s<br> %s<br><br>", me, md)
case "input_" + string(metrics.ST3pastdays):
md, me := metrics.MetricsPastDays(PDPURL, "", riesaltformat, teip, func() int {
r, _ := strconv.Atoi(v.Value)
return r
}())
htmlstring = fmt.Sprintf("%s<br> %s<br><br>", me, md)
case "input_" + string(metrics.ST4monthly):
var me string
var md []byte
if len(v.Value) >= 17 && strings.ContainsAny(strings.ToLower(v.Value), strings.ToLower(SPANSEPARATOR)) {
ts := func(s string) [2]time.Time {
defer recover()
rowvalues := make([]string, 2, 2)
rowvalues = strings.SplitN(s, strings.ToLower(SPANSEPARATOR), 2)
return [2]time.Time{func() (r time.Time) {
r, _ = time.Parse("2006-01", strings.TrimSpace(rowvalues[0]))
return
}(), func() (r time.Time) {
r, _ = time.Parse("2006-01", strings.TrimSpace(rowvalues[1]))
return
}()}
}(strings.ToLower(v.Value))
md, me = metrics.MetricsReallyMonthlySpan(PDPURL, "", riesaltformat, teip, ts)
} else {
md, me = metrics.MetricsReallyMonthly(PDPURL, "", riesaltformat, teip)
}
res := metrics.MonthlyJsonData{}
json.Unmarshal(md, &res)
label := make([]interface{}, len(res.Data), len(res.Data))
bar0 := make([]any, len(res.Data), len(res.Data))
bar1 := make([]any, len(res.Data), len(res.Data))
for i := 0; i < len(res.Data); i++ {
label[i] = res.Data[i].Date
bar0[i] = res.Data[i].Counttotal
bar1[i] = res.Data[i].Countmonth
}
//log.Println(res.Data[0].)
_ = windowbase.Call("removeAllData", windowbase.Get("fubagchart"))
//_ = windowbase.Call("addAllData", windowbase.Get("fubagchart"), js.ValueOf([]interface{}{[]interface{}{"Aa", "Bb"}, []interface{}{9, 2}, []interface{}{2, 9}}))
_ = windowbase.Call("addAllData", windowbase.Get("fubagchart"), js.ValueOf([]interface{}{label, bar0, bar1}))
htmlstring = fmt.Sprintf("%s<br> %s<br><br>", me, md)
case "input_" + string(metrics.ST5tree):
ts, _ := time.Parse("2006-01", v.Value)
md, me := metrics.MetricsTree(PDPURL, "", riesaltformat, ts)
htmlstring = fmt.Sprintf("%s<br> %s<br><br>", me, md)
}
//md, me := metrics.MetricsTree("https://pdp.archium.org", "", metrics.RT1json, time.Time{})
injectpoint.Set("innerHTML", time.Now().String()+"<br>"+htmlstring)
//log.Printf("WASM: %s<br> %s<br><br>", me, md)
}
}
}
*/
func actualizeForms[dings metrics.MetricsType | metrics.MetricsDataCountType | metrics.SearchType | metrics.ReturnformatType | string](injectpoint js.Value, ojpsdata []metrics.OneJumpPointSet, startlevel int8, startindex dings) {
//disable all
//log.Println(startlevel)
//log.Println("HIER")
if startlevel >= 0 {
for i := int8(startlevel) + 1; i <= 3; i++ {
list, _ := metrics.FilterStacklist(ojpsdata, i)
for _, idmark := range list {
injectpoint.Call(wasm.DOCUMENTS_METHOD_getElementById, metrics.IDRequestCriteriaPrefix+idmark).Call(wasm.ELEMENTS_METHOD_setAttribute, "disabled", "")
}
}
/*
for i := 0; i < len(ojpsdata); i++ {
log.Println(startlevel, ojpsdata[i], startindex)
}
*/
//enable any
for i := 0; i < len(ojpsdata); i++ {
if ojpsdata[i].Active {
switch startlevel {
case 0:
injectpoint.Call(wasm.DOCUMENTS_METHOD_getElementById, metrics.IDRequestCriteriaPrefix+string(ojpsdata[i].Level0)).Call(wasm.ELEMENTS_METHOD_removeAttribute, "disabled", "")
fallthrough
case 1:
if startindex == dings(ojpsdata[i].Level0) {
injectpoint.Call(wasm.DOCUMENTS_METHOD_getElementById, metrics.IDRequestCriteriaPrefix+string(ojpsdata[i].Level1)).Call(wasm.ELEMENTS_METHOD_removeAttribute, "disabled", "")
}
fallthrough
case 2:
if startindex == dings(ojpsdata[i].Level0) || startindex == dings(ojpsdata[i].Level1) {
injectpoint.Call(wasm.DOCUMENTS_METHOD_getElementById, metrics.IDRequestCriteriaPrefix+string(ojpsdata[i].Level2)).Call(wasm.ELEMENTS_METHOD_removeAttribute, "disabled", "")
}
fallthrough
default: // ist in diesem Fall identisch mit case 3:
if startindex == dings(ojpsdata[i].Level0) || startindex == dings(ojpsdata[i].Level1) || startindex == dings(ojpsdata[i].Level2) {
injectpoint.Call(wasm.DOCUMENTS_METHOD_getElementById, metrics.IDRequestCriteriaPrefix+string(ojpsdata[i].Level3)).Call(wasm.ELEMENTS_METHOD_removeAttribute, "disabled", "")
}
}
}
// for idindex, idmark := range list {
// if activity[idindex] {
// injectpoint.Call(wasm.DOCUMENTS_METHOD_getElementById, metrics.IDRequestCriteriaPrefix+idmark).Call(wasm.ELEMENTS_METHOD_removeAttribute, "disabled", "")
// }
// }
}
}
/*
injectpoint.Call(wasm.DOCUMENTS_METHOD_getElementById, metrics.IDRequestCriteriaPrefix+string(metrics.MDCT2viewsTotalRegular)).Call(wasm.ELEMENTS_METHOD_setAttribute, "disabled", "")
injectpoint.Call(wasm.DOCUMENTS_METHOD_getElementById, metrics.IDRequestCriteriaPrefix+string(metrics.MDCT2viewsTotalRegular)).Call(wasm.ELEMENTS_METHOD_removeAttribute, "disabled", "")
*/
}