|
|
@ -128,16 +128,36 @@
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
@if (product1.isOpenSource) {
|
|
|
|
@if (product1.isOpenSource) {
|
|
|
|
<ng-container i18n>✅ Yes</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product1.name }} is Open Source Software"
|
|
|
|
|
|
|
|
>✅ Yes</span
|
|
|
|
|
|
|
|
>
|
|
|
|
} @else {
|
|
|
|
} @else {
|
|
|
|
<ng-container i18n>❌ No</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product1.name }} is not Open Source Software"
|
|
|
|
|
|
|
|
>❌ No</span
|
|
|
|
|
|
|
|
>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
@if (product2.isOpenSource) {
|
|
|
|
@if (product2.isOpenSource) {
|
|
|
|
<ng-container i18n>✅ Yes</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product2.name }} is Open Source Software"
|
|
|
|
|
|
|
|
>✅ Yes</span
|
|
|
|
|
|
|
|
>
|
|
|
|
} @else {
|
|
|
|
} @else {
|
|
|
|
<ng-container i18n>❌ No </ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product2.name }} is not Open Source Software"
|
|
|
|
|
|
|
|
>❌ No</span
|
|
|
|
|
|
|
|
>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
|
@ -147,16 +167,36 @@
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
@if (product1.hasSelfHostingAbility === true) {
|
|
|
|
@if (product1.hasSelfHostingAbility === true) {
|
|
|
|
<ng-container i18n>✅ Yes</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product1.name }} can be self-hosted"
|
|
|
|
|
|
|
|
>✅ Yes</span
|
|
|
|
|
|
|
|
>
|
|
|
|
} @else if (product1.hasSelfHostingAbility === false) {
|
|
|
|
} @else if (product1.hasSelfHostingAbility === false) {
|
|
|
|
<ng-container i18n>❌ No</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product1.name }} cannot be self-hosted"
|
|
|
|
|
|
|
|
>❌ No</span
|
|
|
|
|
|
|
|
>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
@if (product2.hasSelfHostingAbility === true) {
|
|
|
|
@if (product2.hasSelfHostingAbility === true) {
|
|
|
|
<ng-container i18n>✅ Yes</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product2.name }} can be self-hosted"
|
|
|
|
|
|
|
|
>✅ Yes</span
|
|
|
|
|
|
|
|
>
|
|
|
|
} @else if (product2.hasSelfHostingAbility === false) {
|
|
|
|
} @else if (product2.hasSelfHostingAbility === false) {
|
|
|
|
<ng-container i18n>❌ No</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product2.name }} cannot be self-hosted"
|
|
|
|
|
|
|
|
>❌ No</span
|
|
|
|
|
|
|
|
>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
|
@ -166,16 +206,36 @@
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
@if (product1.useAnonymously === true) {
|
|
|
|
@if (product1.useAnonymously === true) {
|
|
|
|
<ng-container i18n>✅ Yes</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product1.name }} can be used anonymously"
|
|
|
|
|
|
|
|
>✅ Yes</span
|
|
|
|
|
|
|
|
>
|
|
|
|
} @else if (product1.useAnonymously === false) {
|
|
|
|
} @else if (product1.useAnonymously === false) {
|
|
|
|
<ng-container i18n>❌ No</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product1.name }} cannot be used anonymously"
|
|
|
|
|
|
|
|
>❌ No</span
|
|
|
|
|
|
|
|
>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
@if (product2.useAnonymously === true) {
|
|
|
|
@if (product2.useAnonymously === true) {
|
|
|
|
<ng-container i18n>✅ Yes</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product2.name }} can be used anonymously"
|
|
|
|
|
|
|
|
>✅ Yes</span
|
|
|
|
|
|
|
|
>
|
|
|
|
} @else if (product2.useAnonymously === false) {
|
|
|
|
} @else if (product2.useAnonymously === false) {
|
|
|
|
<ng-container i18n>❌ No</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product2.name }} cannot be used anonymously"
|
|
|
|
|
|
|
|
>❌ No</span
|
|
|
|
|
|
|
|
>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
|
@ -185,16 +245,36 @@
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
@if (product1.hasFreePlan === true) {
|
|
|
|
@if (product1.hasFreePlan === true) {
|
|
|
|
<ng-container i18n>✅ Yes</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product1.name }} offers a free plan"
|
|
|
|
|
|
|
|
>✅ Yes</span
|
|
|
|
|
|
|
|
>
|
|
|
|
} @else if (product1.hasFreePlan === false) {
|
|
|
|
} @else if (product1.hasFreePlan === false) {
|
|
|
|
<ng-container i18n>❌ No</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product1.name }} does not offer a free plan"
|
|
|
|
|
|
|
|
>❌ No</span
|
|
|
|
|
|
|
|
>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
<td class="mat-mdc-cell px-1 py-2">
|
|
|
|
@if (product2.hasFreePlan === true) {
|
|
|
|
@if (product2.hasFreePlan === true) {
|
|
|
|
<ng-container i18n>✅ Yes</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product2.name }} offers a free plan"
|
|
|
|
|
|
|
|
>✅ Yes</span
|
|
|
|
|
|
|
|
>
|
|
|
|
} @else if (product2.hasFreePlan === false) {
|
|
|
|
} @else if (product2.hasFreePlan === false) {
|
|
|
|
<ng-container i18n>❌ No</ng-container>
|
|
|
|
<span
|
|
|
|
|
|
|
|
i18n
|
|
|
|
|
|
|
|
i18n-title
|
|
|
|
|
|
|
|
title="{{ product2.name }} does not offer a free plan"
|
|
|
|
|
|
|
|
>❌ No</span
|
|
|
|
|
|
|
|
>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</td>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
|
|