added sum and round filters
This commit is contained in:
parent
9945cba323
commit
a75cdaf916
3 changed files with 158 additions and 9 deletions
51
scraping.go
51
scraping.go
|
@ -75,6 +75,10 @@ func getFilterResult(filter *Filter) {
|
|||
case filter.Type == "math":
|
||||
{
|
||||
switch {
|
||||
case filter.Var1 == "sum":
|
||||
{
|
||||
getFilterResultSum(filter)
|
||||
}
|
||||
case filter.Var1 == "min":
|
||||
{
|
||||
getFilterResultMin(filter)
|
||||
|
@ -91,6 +95,10 @@ func getFilterResult(filter *Filter) {
|
|||
{
|
||||
getFilterResultCount(filter)
|
||||
}
|
||||
case filter.Var1 == "round":
|
||||
{
|
||||
getFilterResultRound(filter)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -277,6 +285,18 @@ func getFilterResultSubstring(filter *Filter) {
|
|||
}
|
||||
}
|
||||
|
||||
func getFilterResultSum(filter *Filter) {
|
||||
var sum float64 = 0.0
|
||||
for _, parent := range filter.Parents {
|
||||
for _, result := range parent.Results {
|
||||
if number, err := strconv.ParseFloat(result, 64); err == nil {
|
||||
sum += number
|
||||
}
|
||||
}
|
||||
}
|
||||
filter.Results = append(filter.Results, fmt.Sprintf("%f", sum))
|
||||
}
|
||||
|
||||
func getFilterResultMin(filter *Filter) {
|
||||
var min = math.MaxFloat64
|
||||
var setMin = false
|
||||
|
@ -334,6 +354,35 @@ func getFilterResultCount(filter *Filter) {
|
|||
for _, parent := range filter.Parents {
|
||||
count += len(parent.Children)
|
||||
}
|
||||
log.Println(fmt.Sprintf("%d", count))
|
||||
filter.Results = append(filter.Results, fmt.Sprintf("%d", count))
|
||||
}
|
||||
|
||||
// https://gosamples.dev/round-float/
|
||||
func roundFloat(val float64, precision uint) float64 {
|
||||
if precision == 0 {
|
||||
math.Round(val)
|
||||
}
|
||||
ratio := math.Pow(10, float64(precision))
|
||||
return math.Round(val*ratio) / ratio
|
||||
}
|
||||
|
||||
func getFilterResultRound(filter *Filter) {
|
||||
var decimals int64 = 0
|
||||
if filter.Var2 != nil {
|
||||
d, err := strconv.ParseInt(*filter.Var2, 10, 32)
|
||||
if err != nil {
|
||||
decimals = 0
|
||||
} else {
|
||||
decimals = d
|
||||
}
|
||||
}
|
||||
|
||||
for _, parent := range filter.Parents {
|
||||
for _, result := range parent.Results {
|
||||
if number, err := strconv.ParseFloat(result, 64); err == nil {
|
||||
rounded := roundFloat(number, uint(decimals))
|
||||
filter.Results = append(filter.Results, fmt.Sprintf("%.f", rounded))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -282,6 +282,10 @@ function onTypeChange(node) {
|
|||
mathSelect.name = "var1";
|
||||
mathSelect.id = "var1Input";
|
||||
mathSelect.classList.add("form-control");
|
||||
var mathOptionSum = document.createElement("option");
|
||||
mathOptionSum.value = "sum";
|
||||
mathOptionSum.innerHTML = "Sum";
|
||||
mathSelect.appendChild(mathOptionSum);
|
||||
var mathOptionMin = document.createElement("option");
|
||||
mathOptionMin.value = "min";
|
||||
mathOptionMin.innerHTML = "Min";
|
||||
|
@ -298,17 +302,33 @@ function onTypeChange(node) {
|
|||
mathOptionCount.value = "count";
|
||||
mathOptionCount.innerHTML = "Count";
|
||||
mathSelect.appendChild(mathOptionCount);
|
||||
var mathOptionRound = document.createElement("option");
|
||||
mathOptionRound.value = "round";
|
||||
mathOptionRound.innerHTML = "Round";
|
||||
mathSelect.appendChild(mathOptionRound);
|
||||
var1Label.innerHTML = "Function";
|
||||
var1Div.appendChild(mathSelect);
|
||||
mathSelect.value = var1Value;
|
||||
if (var1Value == "") {
|
||||
mathSelect.value = "min";
|
||||
}
|
||||
else {
|
||||
mathSelect.value = var1Value;
|
||||
}
|
||||
mathSelect.onchange = function () { onMathChange(node); };
|
||||
var var2Input = document.createElement("input");
|
||||
var2Input.name = "var2";
|
||||
var2Input.id = "var2Input";
|
||||
var2Input.value = var2Value;
|
||||
var2Input.classList.add("form-control");
|
||||
var2Input.disabled = true;
|
||||
var2Input.placeholder = "";
|
||||
var2Label.innerHTML = "-";
|
||||
if (mathSelect.value == "round") {
|
||||
var2Input.disabled = false;
|
||||
var2Label.innerHTML = "Decimals";
|
||||
}
|
||||
else {
|
||||
var2Input.placeholder = "";
|
||||
var2Input.disabled = true;
|
||||
var2Label.innerHTML = "-";
|
||||
}
|
||||
var2Div.appendChild(var2Input);
|
||||
var var3Input = document.createElement("input");
|
||||
var3Input.name = "var3";
|
||||
|
@ -323,7 +343,37 @@ function onTypeChange(node) {
|
|||
}
|
||||
}
|
||||
}
|
||||
function onMathChange(node) {
|
||||
if (node === void 0) { node = null; }
|
||||
var var1Input = document.getElementById("var1Input");
|
||||
var var1Label = document.getElementById("var1Label");
|
||||
var var2Input = document.getElementById("var2Input");
|
||||
var var2Label = document.getElementById("var2Label");
|
||||
var var3Input = document.getElementById("var3Input");
|
||||
var var3Label = document.getElementById("var3Label");
|
||||
var var2Value = "";
|
||||
var var3Value = "";
|
||||
if (node != null) {
|
||||
// @ts-ignore
|
||||
var2Value = node.meta.var2;
|
||||
// @ts-ignore
|
||||
var3Value = node.meta.var3;
|
||||
}
|
||||
if (var1Input.value == "round") {
|
||||
var2Input.disabled = false;
|
||||
var2Input.type = "number";
|
||||
var2Input.value = var2Value;
|
||||
var2Label.innerHTML = "Decimals";
|
||||
}
|
||||
else {
|
||||
var2Input.disabled = true;
|
||||
var2Input.type = "text";
|
||||
var2Input.value = "";
|
||||
var2Label.innerHTML = "-";
|
||||
}
|
||||
}
|
||||
function onSubmitNewFilter() {
|
||||
console.log("TEST");
|
||||
var nameInput = document.getElementById("nameInput");
|
||||
var name = nameInput.value;
|
||||
var selectType = document.getElementById("typeInput");
|
||||
|
|
|
@ -271,6 +271,10 @@ function onTypeChange(node: DiagramNode | null = null){
|
|||
mathSelect.name = "var1";
|
||||
mathSelect.id = "var1Input";
|
||||
mathSelect.classList.add("form-control");
|
||||
let mathOptionSum = document.createElement("option");
|
||||
mathOptionSum.value = "sum"
|
||||
mathOptionSum.innerHTML = "Sum";
|
||||
mathSelect.appendChild(mathOptionSum);
|
||||
let mathOptionMin = document.createElement("option");
|
||||
mathOptionMin.value = "min"
|
||||
mathOptionMin.innerHTML = "Min";
|
||||
|
@ -287,18 +291,32 @@ function onTypeChange(node: DiagramNode | null = null){
|
|||
mathOptionCount.value = "count";
|
||||
mathOptionCount.innerHTML = "Count";
|
||||
mathSelect.appendChild(mathOptionCount);
|
||||
let mathOptionRound = document.createElement("option")
|
||||
mathOptionRound.value = "round";
|
||||
mathOptionRound.innerHTML = "Round";
|
||||
mathSelect.appendChild(mathOptionRound);
|
||||
var1Label.innerHTML = "Function";
|
||||
var1Div.appendChild(mathSelect);
|
||||
mathSelect.value = var1Value;
|
||||
if (var1Value == ""){
|
||||
mathSelect.value = "min";
|
||||
} else {
|
||||
mathSelect.value = var1Value;
|
||||
}
|
||||
mathSelect.onchange = function() {onMathChange(node)}
|
||||
|
||||
let var2Input = document.createElement("input");
|
||||
var2Input.name = "var2";
|
||||
var2Input.id = "var2Input";
|
||||
var2Input.value = var2Value;
|
||||
var2Input.classList.add("form-control")
|
||||
var2Input.disabled = true;
|
||||
var2Input.placeholder = ""
|
||||
var2Label.innerHTML = "-";
|
||||
if (mathSelect.value == "round"){
|
||||
var2Input.disabled = false;
|
||||
var2Label.innerHTML = "Decimals";
|
||||
} else {
|
||||
var2Input.placeholder = ""
|
||||
var2Input.disabled = true;
|
||||
var2Label.innerHTML = "-";
|
||||
}
|
||||
var2Div.appendChild(var2Input);
|
||||
|
||||
let var3Input = document.createElement("input");
|
||||
|
@ -315,7 +333,39 @@ function onTypeChange(node: DiagramNode | null = null){
|
|||
}
|
||||
}
|
||||
|
||||
function onMathChange(node: DiagramNode | null = null){
|
||||
let var1Input = document.getElementById("var1Input") as HTMLSelectElement;
|
||||
let var1Label = document.getElementById("var1Label") as HTMLLabelElement;
|
||||
let var2Input = document.getElementById("var2Input") as HTMLInputElement;
|
||||
let var2Label = document.getElementById("var2Label") as HTMLLabelElement;
|
||||
let var3Input = document.getElementById("var3Input") as HTMLInputElement;
|
||||
let var3Label = document.getElementById("var3Label") as HTMLLabelElement;
|
||||
|
||||
let var2Value = "";
|
||||
let var3Value = "";
|
||||
if (node != null){
|
||||
// @ts-ignore
|
||||
var2Value = node.meta.var2;
|
||||
// @ts-ignore
|
||||
var3Value = node.meta.var3;
|
||||
}
|
||||
|
||||
if (var1Input.value == "round"){
|
||||
var2Input.disabled = false;
|
||||
var2Input.type = "number";
|
||||
var2Input.value = var2Value;
|
||||
var2Label.innerHTML = "Decimals";
|
||||
} else {
|
||||
var2Input.disabled = true;
|
||||
var2Input.type = "text";
|
||||
var2Input.value = "";
|
||||
var2Label.innerHTML = "-";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function onSubmitNewFilter(){
|
||||
console.log("TEST")
|
||||
let nameInput = document.getElementById("nameInput") as HTMLInputElement;
|
||||
let name = nameInput.value;
|
||||
let selectType = document.getElementById("typeInput") as HTMLSelectElement;
|
||||
|
|
Loading…
Add table
Reference in a new issue