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),