Mercurial > gemma
comparison pkg/controllers/bottlenecks.go @ 3405:2b5c22f6bb1f
available fairway depth: Implemented backend for sections and stretches.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 23 May 2019 12:53:19 +0200 |
parents | cf0b5274698a |
children | 5e284f39a081 |
comparison
equal
deleted
inserted
replaced
3404:0c9467003d14 | 3405:2b5c22f6bb1f |
---|---|
563 | 563 |
564 jr = JSONResult{Result: &out} | 564 jr = JSONResult{Result: &out} |
565 return | 565 return |
566 } | 566 } |
567 | 567 |
568 func intervalMode(mode string) int { | |
569 switch strings.ToLower(mode) { | |
570 case "monthly": | |
571 return 0 | |
572 case "quarterly": | |
573 return 1 | |
574 case "yearly": | |
575 return 2 | |
576 default: | |
577 return 0 | |
578 } | |
579 } | |
580 | |
568 func bottleneckAvailableFairwayDepth(rw http.ResponseWriter, req *http.Request) { | 581 func bottleneckAvailableFairwayDepth(rw http.ResponseWriter, req *http.Request) { |
569 | 582 |
583 mode := intervalMode(req.FormValue("mode")) | |
584 var from, to time.Time | |
585 var los int | |
586 | |
570 bn := mux.Vars(req)["objnam"] | 587 bn := mux.Vars(req)["objnam"] |
571 | |
572 if bn == "" { | 588 if bn == "" { |
573 http.Error( | 589 http.Error( |
574 rw, "Missing objnam of bottleneck", | 590 rw, "Missing objnam of bottleneck", |
575 http.StatusBadRequest) | 591 http.StatusBadRequest) |
576 return | 592 return |
577 } | 593 } |
578 | |
579 var mode int | |
580 if m := req.FormValue("mode"); m != "" { | |
581 switch strings.ToLower(m) { | |
582 case "monthly": | |
583 mode = 0 | |
584 case "quarterly": | |
585 mode = 1 | |
586 case "yearly": | |
587 mode = 2 | |
588 default: | |
589 http.Error( | |
590 rw, fmt.Sprintf("Unknown 'mode' value %s.", m), | |
591 http.StatusBadRequest) | |
592 return | |
593 } | |
594 } | |
595 | |
596 var from, to time.Time | |
597 | 594 |
598 if f := req.FormValue("from"); f != "" { | 595 if f := req.FormValue("from"); f != "" { |
599 var err error | 596 var err error |
600 if from, err = time.Parse(common.TimeFormat, f); err != nil { | 597 if from, err = time.Parse(common.TimeFormat, f); err != nil { |
601 http.Error( | 598 http.Error( |
623 | 620 |
624 if to.Before(from) { | 621 if to.Before(from) { |
625 to, from = from, to | 622 to, from = from, to |
626 } | 623 } |
627 | 624 |
628 log.Printf("info: time interval: (%v - %v)\n", from, to) | |
629 | |
630 var los int | |
631 if l := req.FormValue("los"); l != "" { | 625 if l := req.FormValue("los"); l != "" { |
632 var err error | 626 var err error |
633 if los, err = strconv.Atoi(l); err != nil { | 627 if los, err = strconv.Atoi(l); err != nil { |
634 http.Error( | 628 http.Error( |
635 rw, fmt.Sprintf("Invalid format for 'los': %v.", err), | 629 rw, fmt.Sprintf("Invalid format for 'los': %v.", err), |
658 return | 652 return |
659 } | 653 } |
660 | 654 |
661 access := limitingFactor(limiting) | 655 access := limitingFactor(limiting) |
662 | 656 |
657 log.Printf("info: time interval: (%v - %v)\n", from, to) | |
658 | |
663 // load the measurements | 659 // load the measurements |
664 ms, err := loadDepthValues(ctx, conn, bn, los, from, to) | 660 ms, err := loadDepthValues(ctx, conn, bn, los, from, to) |
665 if err != nil { | 661 if err != nil { |
666 http.Error( | 662 http.Error( |
667 rw, fmt.Sprintf("Loading measurements failed: %v.", err), | 663 rw, fmt.Sprintf("Loading measurements failed: %v.", err), |