Commit 43a8ffe1 authored by Michail Tzanatos's avatar Michail Tzanatos
Browse files

add SortByValuePipe and integrate it into product offerings component for...

add SortByValuePipe and integrate it into product offerings component for sorting characteristic values
parent f044509b
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ import { PreviewMarketPlaceItemComponent } from './p_product/marketplace/preview
import { AssignProductOfferingsComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component';
import { AssignSubcategoriesComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component';
import { ConfirmCharacteristicAssignmentComponent } from './p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/confirm-characteristic-assignment/confirm-characteristic-assignment.component';

import { SortByValuePipe } from './p_product/admin/productCatalogManagement/edit-product-offerings/sort-by-value.pipe';

@NgModule({
    declarations: [
@@ -48,7 +48,8 @@ import { ConfirmCharacteristicAssignmentComponent } from './p_product/admin/prod
        EditProductOfferingsComponent,
        PreviewMarketPlaceItemComponent,
        AssignProductOfferingsComponent,
        AssignSubcategoriesComponent
        AssignSubcategoriesComponent,
        SortByValuePipe
    ],
    imports: [
        CommonModule,
+2 −5
Original line number Diff line number Diff line
@@ -214,26 +214,23 @@
                                                                            <p class="mb-2 text-primary text-small">Select the characteristic values for this offering:</p>
                                                                            
                                                                            <div class="row">
                                                                                <div class="col-md-6 col-lg-4" *ngFor="let val of char.productSpecCharacteristicValue">
                                                                                <div class="col-md-6 col-lg-4" *ngFor="let val of char.productSpecCharacteristicValue | sortByValue">
                                                                                    
                                                                                    <mat-checkbox 
                                                                                        [checked]="isValueSelected(char, val)"
                                                                                        [disabled]="!isCharacteristicSelected(char)"
                                                                                        (change)="onValueToggle(char, val, $event)">
                                                                                        
                                                                                        <ng-container *ngIf="val.value; else emptyValue">
                                                                                            
                                                                                            <span *ngIf="val.value.alias">
                                                                                                {{val.value.alias}}: {{val.value.value}}
                                                                                                <span *ngIf="val.unitOfMeasure" class="text-muted"> - ({{val.unitOfMeasure}})</span>
                                                                                            </span>

                                                                                            <span *ngIf="!val.value.alias">
                                                                                                {{val.value.value}}
                                                                                                <span *ngIf="val.unitOfMeasure" class="text-muted">({{val.unitOfMeasure}})</span>
                                                                                            </span>

                                                                                        </ng-container>

                                                                                        <ng-template #emptyValue>
                                                                                            <span class="text-muted font-italic">Empty Value</span>
                                                                                        </ng-template>
+3 −2
Original line number Diff line number Diff line
@@ -162,8 +162,9 @@ export class EditProductOfferingsComponent implements OnInit {
             this.selectedCharValues.set(offeringChar.name, selectedUUIDs);
          });
        }

      },
      error => console.error("Failed to load full spec details", error)
      error => this.toastrService.error("Failed to load full spec details", error)
    );
  }

@@ -296,7 +297,7 @@ export class EditProductOfferingsComponent implements OnInit {
        description: formValue.description,
        lifecycleStatus: formValue.lifecycleStatus,
        version: formValue.version,
        validFor: formValue.validFor,
        validFor: {"startDateTime": formValue.validFor.startDateTime, "endDateTime": formValue.validFor.endDateTime},
        isSellable: true, 
        statusReason: '',
        productSpecification: productSpecRef,
+21 −0
Original line number Diff line number Diff line
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'sortByValue'
})
export class SortByValuePipe implements PipeTransform {

  transform(values: any[]): any[] {
    if (!values || !Array.isArray(values)) {
      return [];
    }

    return [...values].sort((a, b) => {
      const labelA = (a.value?.alias || a.value?.value || '').toString().toLowerCase();
      const labelB = (b.value?.alias || b.value?.value || '').toString().toLowerCase();

      return labelA.localeCompare(labelB, undefined, { numeric: true });
    });
  }

}
 No newline at end of file