Github user chemikadze commented on a diff in the pull request:

    https://github.com/apache/incubator-griffin/pull/446#discussion_r228035101
  
    --- Diff: ui/angular/src/app/measure/create-measure/raw/raw.component.ts ---
    @@ -0,0 +1,180 @@
    +/*
    +Licensed to the Apache Software Foundation (ASF) under one
    +or more contributor license agreements.  See the NOTICE file
    +distributed with this work for additional information
    +regarding copyright ownership.  The ASF licenses this file
    +to you under the Apache License, Version 2.0 (the
    +"License"); you may not use this file except in compliance
    +with the License.  You may obtain a copy of the License at
    +
    +  http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing,
    +software distributed under the License is distributed on an
    +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    +KIND, either express or implied.  See the License for the
    +specific language governing permissions and limitations
    +under the License.
    +*/
    +import {Component, OnInit} from "@angular/core";
    +import {ServiceService} from "../../../service/service.service";
    +import {TREE_ACTIONS, ITreeOptions} from "angular-tree-component";
    +import {ToasterService} from "angular2-toaster";
    +import * as $ from "jquery";
    +import {HttpClient} from "@angular/common/http";
    +import {ActivatedRoute, Router} from "@angular/router";
    +import {AfterViewChecked, ElementRef} from "@angular/core";
    +import {MeasureFormatService, Format} from 
"../../../service/measure-format.service";
    +
    +@Component({
    +  selector: "app-raw",
    +  templateUrl: "./raw.component.html",
    +  providers: [ServiceService, MeasureFormatService],
    +  styleUrls: ["./raw.component.css"]
    +})
    +export class RawComponent implements AfterViewChecked, OnInit {
    +
    +  constructor(
    +    private elementRef: ElementRef,
    +    private toasterService: ToasterService,
    +    private measureFormatService: MeasureFormatService,
    +    private http: HttpClient,
    +    private router: Router,
    +    public serviceService: ServiceService
    +  ) {
    +  }
    +
    +  data = "";
    +  valid = false;
    +  Format: typeof Format = Format;
    +  format: Format;
    +  createResult: any;
    +  public visible = false;
    +  public visibleAnimate = false;
    +
    +  public hide(): void {
    +    this.visibleAnimate = false;
    +    setTimeout(() => (this.visible = false), 300);
    +    $("#save").removeAttr("disabled");
    +  }
    +
    +  public onContainerClicked(event: MouseEvent): void {
    +    if ((<HTMLElement>event.target).classList.contains("modal")) {
    +      this.hide();
    +    }
    +  }
    +
    +  onResize(event) {
    +    this.resizeWindow();
    +  }
    +
    +  resizeWindow() {
    +    var stepSelection = ".formStep";
    +    $(stepSelection).css({
    +      height: window.innerHeight - $(stepSelection).offset().top
    +    });
    +    $("fieldset").height(
    +      $(stepSelection).height() -
    +      $(stepSelection + ">.stepDesc").height() -
    +      $(".btn-container").height() -
    +      130
    +    );
    +    $(".y-scrollable").css({
    +      height: $("fieldset").height()
    +    });
    +  }
    +
    +  submit(form) {
    +    if (!form.valid) {
    +      this.toasterService.pop(
    +        "error",
    +        "Error!",
    +        "please complete the form in this step before proceeding"
    +      );
    +      return false;
    +    }
    +    this.visible = true;
    +    setTimeout(() => (this.visibleAnimate = true), 100);
    +  }
    +
    +  save() {
    +    let measure2Save = this.measureFormatService.parse(this.data, 
this.format);
    +    console.log(measure2Save);
    +    let addModels = this.serviceService.config.uri.addModels;
    +    $("#save").attr("disabled", "true");
    +    this.http.post(addModels, measure2Save).subscribe(
    +      data => {
    +        this.createResult = data;
    +        this.hide();
    +        this.router.navigate(["/measures"]);
    +      },
    +      err => {
    +        let response = JSON.parse(err.error);
    +        if (response.code === '40901') {
    +          this.toasterService.pop("error", "Error!", "Measure name already 
exists!");
    +        } else {
    +          this.toasterService.pop("error", "Error!", "Measure is not 
valid");
    --- End diff --
    
    AFAIK response typically contains valid error message that can be shown
    
    there was similar issue in other place: 
https://github.com/apache/incubator-griffin/pull/423/files


---

Reply via email to