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":
|
case filter.Type == "math":
|
||||||
{
|
{
|
||||||
switch {
|
switch {
|
||||||
|
case filter.Var1 == "sum":
|
||||||
|
{
|
||||||
|
getFilterResultSum(filter)
|
||||||
|
}
|
||||||
case filter.Var1 == "min":
|
case filter.Var1 == "min":
|
||||||
{
|
{
|
||||||
getFilterResultMin(filter)
|
getFilterResultMin(filter)
|
||||||
|
@ -91,6 +95,10 @@ func getFilterResult(filter *Filter) {
|
||||||
{
|
{
|
||||||
getFilterResultCount(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) {
|
func getFilterResultMin(filter *Filter) {
|
||||||
var min = math.MaxFloat64
|
var min = math.MaxFloat64
|
||||||
var setMin = false
|
var setMin = false
|
||||||
|
@ -334,6 +354,35 @@ func getFilterResultCount(filter *Filter) {
|
||||||
for _, parent := range filter.Parents {
|
for _, parent := range filter.Parents {
|
||||||
count += len(parent.Children)
|
count += len(parent.Children)
|
||||||
}
|
}
|
||||||
log.Println(fmt.Sprintf("%d", count))
|
|
||||||
filter.Results = append(filter.Results, 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.name = "var1";
|
||||||
mathSelect.id = "var1Input";
|
mathSelect.id = "var1Input";
|
||||||
mathSelect.classList.add("form-control");
|
mathSelect.classList.add("form-control");
|
||||||
|
var mathOptionSum = document.createElement("option");
|
||||||
|
mathOptionSum.value = "sum";
|
||||||
|
mathOptionSum.innerHTML = "Sum";
|
||||||
|
mathSelect.appendChild(mathOptionSum);
|
||||||
var mathOptionMin = document.createElement("option");
|
var mathOptionMin = document.createElement("option");
|
||||||
mathOptionMin.value = "min";
|
mathOptionMin.value = "min";
|
||||||
mathOptionMin.innerHTML = "Min";
|
mathOptionMin.innerHTML = "Min";
|
||||||
|
@ -298,17 +302,33 @@ function onTypeChange(node) {
|
||||||
mathOptionCount.value = "count";
|
mathOptionCount.value = "count";
|
||||||
mathOptionCount.innerHTML = "Count";
|
mathOptionCount.innerHTML = "Count";
|
||||||
mathSelect.appendChild(mathOptionCount);
|
mathSelect.appendChild(mathOptionCount);
|
||||||
|
var mathOptionRound = document.createElement("option");
|
||||||
|
mathOptionRound.value = "round";
|
||||||
|
mathOptionRound.innerHTML = "Round";
|
||||||
|
mathSelect.appendChild(mathOptionRound);
|
||||||
var1Label.innerHTML = "Function";
|
var1Label.innerHTML = "Function";
|
||||||
var1Div.appendChild(mathSelect);
|
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");
|
var var2Input = document.createElement("input");
|
||||||
var2Input.name = "var2";
|
var2Input.name = "var2";
|
||||||
var2Input.id = "var2Input";
|
var2Input.id = "var2Input";
|
||||||
var2Input.value = var2Value;
|
var2Input.value = var2Value;
|
||||||
var2Input.classList.add("form-control");
|
var2Input.classList.add("form-control");
|
||||||
var2Input.disabled = true;
|
if (mathSelect.value == "round") {
|
||||||
var2Input.placeholder = "";
|
var2Input.disabled = false;
|
||||||
var2Label.innerHTML = "-";
|
var2Label.innerHTML = "Decimals";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var2Input.placeholder = "";
|
||||||
|
var2Input.disabled = true;
|
||||||
|
var2Label.innerHTML = "-";
|
||||||
|
}
|
||||||
var2Div.appendChild(var2Input);
|
var2Div.appendChild(var2Input);
|
||||||
var var3Input = document.createElement("input");
|
var var3Input = document.createElement("input");
|
||||||
var3Input.name = "var3";
|
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() {
|
function onSubmitNewFilter() {
|
||||||
|
console.log("TEST");
|
||||||
var nameInput = document.getElementById("nameInput");
|
var nameInput = document.getElementById("nameInput");
|
||||||
var name = nameInput.value;
|
var name = nameInput.value;
|
||||||
var selectType = document.getElementById("typeInput");
|
var selectType = document.getElementById("typeInput");
|
||||||
|
|
|
@ -271,6 +271,10 @@ function onTypeChange(node: DiagramNode | null = null){
|
||||||
mathSelect.name = "var1";
|
mathSelect.name = "var1";
|
||||||
mathSelect.id = "var1Input";
|
mathSelect.id = "var1Input";
|
||||||
mathSelect.classList.add("form-control");
|
mathSelect.classList.add("form-control");
|
||||||
|
let mathOptionSum = document.createElement("option");
|
||||||
|
mathOptionSum.value = "sum"
|
||||||
|
mathOptionSum.innerHTML = "Sum";
|
||||||
|
mathSelect.appendChild(mathOptionSum);
|
||||||
let mathOptionMin = document.createElement("option");
|
let mathOptionMin = document.createElement("option");
|
||||||
mathOptionMin.value = "min"
|
mathOptionMin.value = "min"
|
||||||
mathOptionMin.innerHTML = "Min";
|
mathOptionMin.innerHTML = "Min";
|
||||||
|
@ -287,18 +291,32 @@ function onTypeChange(node: DiagramNode | null = null){
|
||||||
mathOptionCount.value = "count";
|
mathOptionCount.value = "count";
|
||||||
mathOptionCount.innerHTML = "Count";
|
mathOptionCount.innerHTML = "Count";
|
||||||
mathSelect.appendChild(mathOptionCount);
|
mathSelect.appendChild(mathOptionCount);
|
||||||
|
let mathOptionRound = document.createElement("option")
|
||||||
|
mathOptionRound.value = "round";
|
||||||
|
mathOptionRound.innerHTML = "Round";
|
||||||
|
mathSelect.appendChild(mathOptionRound);
|
||||||
var1Label.innerHTML = "Function";
|
var1Label.innerHTML = "Function";
|
||||||
var1Div.appendChild(mathSelect);
|
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");
|
let var2Input = document.createElement("input");
|
||||||
var2Input.name = "var2";
|
var2Input.name = "var2";
|
||||||
var2Input.id = "var2Input";
|
var2Input.id = "var2Input";
|
||||||
var2Input.value = var2Value;
|
var2Input.value = var2Value;
|
||||||
var2Input.classList.add("form-control")
|
var2Input.classList.add("form-control")
|
||||||
var2Input.disabled = true;
|
if (mathSelect.value == "round"){
|
||||||
var2Input.placeholder = ""
|
var2Input.disabled = false;
|
||||||
var2Label.innerHTML = "-";
|
var2Label.innerHTML = "Decimals";
|
||||||
|
} else {
|
||||||
|
var2Input.placeholder = ""
|
||||||
|
var2Input.disabled = true;
|
||||||
|
var2Label.innerHTML = "-";
|
||||||
|
}
|
||||||
var2Div.appendChild(var2Input);
|
var2Div.appendChild(var2Input);
|
||||||
|
|
||||||
let var3Input = document.createElement("input");
|
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(){
|
function onSubmitNewFilter(){
|
||||||
|
console.log("TEST")
|
||||||
let nameInput = document.getElementById("nameInput") as HTMLInputElement;
|
let nameInput = document.getElementById("nameInput") as HTMLInputElement;
|
||||||
let name = nameInput.value;
|
let name = nameInput.value;
|
||||||
let selectType = document.getElementById("typeInput") as HTMLSelectElement;
|
let selectType = document.getElementById("typeInput") as HTMLSelectElement;
|
||||||
|
|
Loading…
Add table
Reference in a new issue