diff --git a/src/app/features/model-details/model-details.component.scss b/src/app/features/model-details/model-details.component.scss index 21ace6d6e57e62a6685710abd8a7078387ad456a..1afd91d6708bf3de9a151c13a55f5bd1a31167ca 100644 --- a/src/app/features/model-details/model-details.component.scss +++ b/src/app/features/model-details/model-details.component.scss @@ -306,74 +306,6 @@ ul { text-transform: none; } -.c-breadcrumb { - list-style-type: none; - clear: both; - padding: 0; - margin: 0; -} - -.c-breadcrumb li:first-child { - margin-left: 0; - padding-left: 0; -} - -.c-breadcrumb li { - display: inline-block; - padding: 0 5px; -} - -.c-breadcrumb li:first-child:before { - content: ""; -} - -.c-breadcrumb li:before { - content: "/"; - position: relative; - left: -6px; -} - -.c-breadcrumb li a { - color: #2e2f2f; - text-decoration: none; - font-weight: 600; - font-size: 13px; -} - -.c-breadcrumb.solution_id_top li:last-child::before { - content: "-" !important; -} - -.c-breadcrumb li span.md-breadcrumb-item { - max-width: 300px; - position: relative; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - display: inline-block; - float: right; -} - -.c-breadcrumb li:last-child, -.c-breadcrumb li:last-child a { - font-weight: normal; - color: #8f8f8f; - font-size: 13px; -} - -.c-breadcrumb li { - display: inline-block; - padding: 0 5px; -} - -.solution_id_top .solution_id_bg { - background-color: #f1f1f1; - border: 1px solid #ccc; - font-size: 10px; - border-radius: 15px; - padding: 0 5px; -} - .md-lbl1 { margin-right: 3px; margin-top: 0; @@ -433,6 +365,8 @@ ul { font-size: 12px; font-weight: normal; border: 1px solid #671c9d; + background: #671c9d; + color: #fff; text-transform: none; line-height: 24px; height: 25px; diff --git a/src/app/features/model-details/model-details.component.ts b/src/app/features/model-details/model-details.component.ts index a624e95160692afc2d166edf01a9e7366b26594b..eec0bb1f4c40716ac23a599873f9629f38fa50e7 100644 --- a/src/app/features/model-details/model-details.component.ts +++ b/src/app/features/model-details/model-details.component.ts @@ -49,6 +49,8 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { JwtTokenService } from 'src/app/core/services/auth/jwt-token.service'; import { apiConfig } from 'src/app/core/config'; import { PrivateCatalogsService } from 'src/app/core/services/private-catalogs.service'; +import { SolutionIdComponent } from 'src/app/shared/components/solution-id/solution-id.component'; +import { BreadcrumbNavigationComponent } from 'src/app/shared/components/breadcrumb-navigation/breadcrumb-navigation.component'; interface SolutionData { solutionId: string; @@ -86,6 +88,8 @@ interface SolutionData { MatSelectModule, ReactiveFormsModule, FormsModule, + SolutionIdComponent, + BreadcrumbNavigationComponent, ], templateUrl: './model-details.component.html', styleUrl: './model-details.component.scss', @@ -107,7 +111,6 @@ export class ModelDetailsComponent implements OnInit { version: string; revisionId: string; }; - editModel: boolean = false; averageRatings!: AverageRatings; allRatings: AllUserRating[] = []; totalRatingsCount: number = 0; @@ -125,6 +128,7 @@ export class ModelDetailsComponent implements OnInit { .getUserDetails() .pipe(map((details) => details?.userId)); isLoggedIn$: Observable<boolean>; + userId!: string; data$: Observable<SolutionData>; defaultSolutionData: SolutionData = { @@ -145,6 +149,7 @@ export class ModelDetailsComponent implements OnInit { comments!: CommentReplyModel[]; firstName: string = ''; lastName: string = ''; + editModel: boolean = false; constructor( private activatedRoute: ActivatedRoute, @@ -218,7 +223,13 @@ export class ModelDetailsComponent implements OnInit { // Handle the case where userId is not available return of(null); } + this.userId = userId; this.solutionId = params['solutionId']; + this.publicSolutionsService + .getSolutionDetails(params['solutionId'], params['revisionId']) + .subscribe((res) => { + this.disableEdit(userId, res); + }); return this.privateCatalogsService.getSolutionRatings( this.solutionId, userId, @@ -535,7 +546,6 @@ export class ModelDetailsComponent implements OnInit { this.privateCatalogsService .getComments(solutionId, revisionId) .subscribe((res) => { - console.log({ res }); this.comments = this.transformComments(res); }); } @@ -554,7 +564,7 @@ export class ModelDetailsComponent implements OnInit { } }); - // Now, associate each comment with its parent. + // associate each comment with its parent. const rootComments: CommentReplyModel[] = []; comments.forEach((comment) => { if ( @@ -574,4 +584,35 @@ export class ModelDetailsComponent implements OnInit { return rootComments; } + + disableEdit(userId: string, solution: PublicSolutionDetailsModel) { + // Allow editing if the solution is not active. + if (!solution.active) { + this.editModel = true; + return; // No further checks needed if the solution is inactive. + } + + // If the solution is active and the user is the owner, allow editing. + if (solution.ownerId === userId) { + this.editModel = true; + return; + } + + // If there are other owners and the user is one of them, allow editing. + const isCoOwner = solution.ownerListForSol?.some( + (owner) => owner.userId === userId, + ); + if (isCoOwner) { + this.editModel = true; + } + } + + OnlClickManageMyModel() { + this.router.navigate([ + '/dashboard/manageMyModel/solutionId', + this.solutionId, + 'revisionId', + this.revisionId, + ]); + } }