calculator.component.html 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <div [hidden]="!isVisible()" class="card mainpanel">
  2. <hs-panel-header name="adjuster" [title]="'CALCULATOR.panelHeader' | translate">
  3. <extra-buttons>
  4. <!-- LOADER -->
  5. <div class="spinner-border spinner spinner-sm mx-2" role="status"
  6. title="{{ 'CALCULATOR.loading' | translate }}..." *ngIf="calcService.lpisLoading">
  7. <span class="visually-hidden">{{ 'CALCULATOR.loading' | translate }}...</span>
  8. </div>
  9. </extra-buttons>
  10. </hs-panel-header>
  11. <div class="card-body">
  12. <div class="p-2 center-block">
  13. <!-- FIELD & INDEX SELECTION PART -->
  14. <div *ngIf="!noFieldSelected(); else noField">
  15. <p *ngIf="data.selectedFieldsProperties.length === 1; else moreFields">
  16. {{ 'CALCULATOR.selectedField' | translate}} {{data.selectedFieldsProperties[0]?.['id_dpb'] ?? '?'}}
  17. </p>
  18. <ng-template #moreFields>
  19. <p>
  20. {{ 'CALCULATOR.selectedFields' | translate}}
  21. <span *ngFor="let props of data.selectedFieldsProperties; last as isLast">
  22. {{props?.['id_dpb'] ?? '?'}}<ng-container *ngIf="!isLast">,</ng-container>
  23. </span>
  24. </p>
  25. </ng-template>
  26. </div>
  27. <ng-template #noField>
  28. <div>
  29. <p class="p-1 text-info">{{ 'CALCULATOR.selectField' | translate}}</p>
  30. <p class="p-1 text-warning" *ngIf="!lpisWfsVisible"><i class="icon-warning-sign"></i>&nbsp;{{ 'CALCULATOR.zoomIn' | translate}}</p>
  31. </div>
  32. </ng-template>
  33. <div>
  34. <p class="p-1 text-info">{{ 'CALCULATOR.selectMore' | translate}}</p>
  35. </div>
  36. <div>
  37. {{hsLanguageService.getTranslationIgnoreNonExisting('CALCULATOR', 'selectQuantiles', {quantileCount:
  38. calcService.quantileCount})}}:&emsp;
  39. <input type="range" min="2" max="10" step="1" [(ngModel)]="calcService.quantileCount">
  40. </div>
  41. <div>
  42. {{ 'CALCULATOR.selectBlur' | translate}}:&emsp;{{calcService.blurValue}}&nbsp;px <span
  43. *ngIf="calcService.blurValue === 0">({{ 'CALCULATOR.blurNone' | translate}})</span>
  44. <input type="range" min="{{calcService.BLUR_MIN_VALUE}}" max="{{calcService.BLUR_MAX_VALUE}}" step="1"
  45. [(ngModel)]="calcService.blurValue">
  46. </div>
  47. <div>
  48. {{ 'CALCULATOR.selectIndex' | translate}}:&emsp;
  49. <select class="form-select" [(ngModel)]="data.selectedProduct" (ngModelChange)="resetDate()">
  50. <option *ngFor="let product of calcService.AVAILABLE_PRODUCTS" [ngValue]="product">{{product}}</option>
  51. </select>
  52. </div>
  53. <div class="d-flex">
  54. <div>
  55. <button type="button" class="btn btn-primary btn-lg" (click)="getDates()"
  56. [disabled]="noFieldSelected() || noProductSelected()">{{ 'CALCULATOR.getDates' | translate}}</button>
  57. </div>
  58. <!-- LOADER -->
  59. <div class="spinner-border spinner mx-2" role="status" *ngIf="calcService.datesLoading" aria-hidden="true">
  60. <span class="visually-hidden">{{ 'CALCULATOR.loading' | translate }}...</span>
  61. </div>
  62. </div>
  63. <!-- DATE SELECTION PART -->
  64. <div [hidden]="noDates()">
  65. {{ 'CALCULATOR.selectDate' | translate}}:&emsp;
  66. <select class="form-select" [(ngModel)]="calcService.selectedDate" (ngModelChange)="updateRangeSlider($event)">
  67. <option *ngFor="let date of calcService.availableDates" [ngValue]="date">{{date}}</option>
  68. </select>
  69. <!-- TODO: date-picker instead of select -->
  70. <fc-date-range-slider [values]="calcService.availableDates"></fc-date-range-slider>
  71. </div>
  72. <div class="d-flex" *ngIf="!noDates()">
  73. <button type="button" class="btn btn-primary btn-lg" (click)="getZones()" [disabled]="noDateSelected()">{{
  74. 'CALCULATOR.getZones' | translate }}</button>
  75. <!-- LOADER -->
  76. <div class="spinner-border spinner mx-2" role="status" *ngIf="calcService.zonesLoading" aria-hidden="true">
  77. <span class="visually-hidden">{{ 'CALCULATOR.loading' | translate }}...</span>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. </div>