• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

geo-engine / BioIS / 26294416207

22 May 2026 02:42PM UTC coverage: 80.798% (+0.2%) from 80.558%
26294416207

Pull #14

github

web-flow
Merge e8b92e707 into 25711b0ec
Pull Request #14: feat: biodiversity impact

409 of 579 branches covered (70.64%)

Branch coverage included in aggregate %.

1246 of 1588 new or added lines in 24 files covered. (78.46%)

11 existing lines in 2 files now uncovered.

3155 of 3832 relevant lines covered (82.33%)

1.83 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.0
/frontend/src/app/result/result.component.html
1
<div>
7✔
2
  <h1 class="mat-h1">Result {{ resultId() }}</h1>
9✔
3
  <div class="grid-container">
7✔
4
    @for (result of results(); track result.key) {
9✔
5
      <mat-card class="dashboard-card">
2✔
6
        <mat-card-header>
7
          <mat-card-title>
8
            {{ result.title }}
2✔
9
          </mat-card-title>
2✔
10
          <button
2✔
11
            matIconButton
12
            class="more-button"
13
            [matMenuTriggerFor]="menu"
2✔
14
            aria-label="Toggle menu"
15
          >
16
            <mat-icon>more_vert</mat-icon>
2✔
17
          </button>
18
          <mat-menu #menu="matMenu" xPosition="before">
2✔
19
            <button mat-menu-item (click)="download(result.key)">Download</button>
2✔
20
          </mat-menu>
21
        </mat-card-header>
22
        <mat-card-content>
2✔
23
          @switch (result.type) {
2✔
24
            @case (ResultType.Number) {
2✔
NEW
25
              <p>{{ asNumber(result.value) | number: '1.0-2' }}</p>
×
26
            }
27
            @case (ResultType.Ndvi) {
28
              <app-number-indicator
1✔
29
                [value]="asNumber(result.value)"
1✔
30
                [min]="-1"
31
                [max]="1"
32
                [colors]="ndviColorMap"
33
              ></app-number-indicator>
34
            }
35
            @case (ResultType.Json) {
NEW
36
              <app-long-text>
×
37
                <code>
NEW
38
                  <pre>{{ result.value | json }}</pre>
×
39
                </code>
40
              </app-long-text>
41
            }
42
            @case (ResultType.Array) {
NEW
43
              <mat-list>
×
NEW
44
                @for (item of asArray(result.value); track item) {
×
NEW
45
                  <mat-list-item>
×
NEW
46
                    <span>{{ item }}</span>
×
47
                  </mat-list-item>
48
                } @empty {
NEW
49
                  <em>empty</em>
×
50
                }
NEW
51
              </mat-list>
×
52
            }
53
            @case (ResultType.JsonTable) {
54
              <table mat-table [dataSource]="asJsonTableRows(result.value)">
1✔
55
                @for (column of columns(result.value); track column.key) {
1✔
56
                  <ng-container [matColumnDef]="column.key">
4✔
57
                    <th mat-header-cell *matHeaderCellDef>{{ column.name }}</th>
4✔
58
                    @switch (column.type) {
4✔
59
                      @case (ColumnType.String) {
4✔
60
                        <td
1✔
61
                          mat-cell
62
                          *matCellDef="let element"
63
                          [innerHTML]="element[column.key].replaceAll('\n', '<br>')"
1✔
64
                        ></td>
65
                      }
66
                      @case (ColumnType.Url) {
67
                        <td mat-cell *matCellDef="let element">
1✔
68
                          <a [href]="element[column.key]" target="_blank">{{
1✔
69
                            element[column.key]
70
                          }}</a>
1✔
71
                        </td>
72
                      }
73
                      @case (ColumnType.Number) {
74
                        <td mat-cell *matCellDef="let element">
1✔
75
                          {{ element[column.key] | number: '1.0-2' }}
1✔
76
                        </td>
1✔
77
                      }
78
                      @case (ColumnType.Boolean) {
79
                        <td mat-cell *matCellDef="let element">
1✔
80
                          {{ element[column.key] ? 'True' : 'False' }}
1!
81
                        </td>
1✔
82
                      }
83
                      <!-- Prevent unhandled cases -->
84
                      @default never;
85
                    }
86
                  </ng-container>
87
                }
88

89
                <tr mat-header-row *matHeaderRowDef="columnKeys(result.value)"></tr>
1✔
90
                <tr mat-row *matRowDef="let row; columns: columnKeys(result.value)"></tr>
1✔
91
              </table>
1✔
92
            }
93
            @case (ResultType.String)
94
            @case (ResultType.Boolean)
95
            @default {
NEW
96
              <p>{{ result.value }}</p>
×
97
            }
98
          }
99
        </mat-card-content>
2✔
100
      </mat-card>
101
    }
102
  </div>
7✔
103
</div>
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc