Commit cbee6d6c authored by prumde's avatar prumde

Updated


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@174497 ce508802-f39f-4f6c-b175-0d175dae99d5
parent dc483c5e
<div class="review-title-block">
<span class="write-review-title">My review</span>
</div>
<span class="product-title">{{detail.itemHeader.itemDescr}}</span>
<form #reviewForm="ngForm" (ngSubmit)="submitReview();">
<div class="write-review-section">
<div>
<span class="product-rating-title">Product rating</span>
<rating [isResponsive]="true" (updateRate)="updateRate($event)" [rate]="reviewData.productRating"></rating>
</div>
<md-input-container class="review-title-box">
<input #titleRef="ngModel" [(ngModel)]="reviewData.productRemarks" mdInput placeholder="Review title" name="title" class="review-title-input">
<md-error *ngIf="titleRef.errors && titleRef.dirty">Review title required</md-error>
</md-input-container>
<md-input-container class="descr-box">
<textarea #dscrRef [(ngModel)]="reviewData.productComments" mdInput placeholder="Description" name="dscr" rows="3" cols="40" class="descr-input"> </textarea>
<md-error *ngIf="dscrRef.errors && dscrRef.dirty">Description required</md-error>
</md-input-container>
</div>
<button type="submit" md-button class="submit-review-btn" [disabled]="reviewData.productRating == 0">Submit</button>
</form>
<button md-button class="cancel-review-btn" (click)="closePanel.emit();">Cancel</button>
\ No newline at end of file
...@@ -5,10 +5,10 @@ import 'rxjs/add/operator/catch'; ...@@ -5,10 +5,10 @@ import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map'; import 'rxjs/add/operator/map';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import {AppState} from '../ecm-store/reducers'; import { AppState } from '../ecm-store/reducers';
import { ReviewAction} from '../ecm-store/actions'; import { ReviewAction } from '../ecm-store/actions';
import { Review } from './review-manager/review.model'; import { Review } from './review-manager/review.model';
import { Reviews } from '../ecm-model/product-review.model';
@Injectable() @Injectable()
export class UserReviewService { export class UserReviewService {
...@@ -17,15 +17,17 @@ export class UserReviewService { ...@@ -17,15 +17,17 @@ export class UserReviewService {
userReview: Review[]; userReview: Review[];
constructor(private http: Http, private store: Store<AppState>, private reviewActions: ReviewAction) { } value;
constructor( private http: Http, private store: Store<AppState>, private reviewActions: ReviewAction ) { }
loadUserReview(){ loadUserReview() {
this.fetchUserInfo().subscribe( this.fetchUserInfo().subscribe(
data => { data => {
this.userReview = data; this.userReview = data;
if ( data && data != null ) { if ( data && data != null ) {
this.userReview.forEach( userReview => { this.userReview.forEach( userReview => {
this.store.dispatch(this.reviewActions.updateReviews(userReview)); this.store.dispatch( this.reviewActions.updateReviews( userReview ) );
}) })
} }
}); });
...@@ -38,97 +40,122 @@ export class UserReviewService { ...@@ -38,97 +40,122 @@ export class UserReviewService {
let options = new RequestOptions( { headers: headers }); let options = new RequestOptions( { headers: headers });
return this.http.get( this.userActionUrl, options ) return this.http.get( this.userActionUrl, options )
.map( (res) => this.extractData(res) ); .map(( res ) => this.extractData( res ) );
} }
updateUserInfo( userReview ) { updateUserInfo( userReview ) {
console.log( "StoreInReview Called" ); console.log( "StoreInReview Called" );
console.log(JSON.stringify(userReview)); console.log( JSON.stringify( userReview ) );
let headers = new Headers( { 'Content-Type': 'application/json' }); let headers = new Headers( { 'Content-Type': 'application/json' });
let options = new RequestOptions( { headers: headers }); let options = new RequestOptions( { headers: headers });
return this.http.post( '', JSON.stringify(userReview) , options) return this.http.post( '', JSON.stringify( userReview ), options )
.map( (res) => this.extractData(res) ); .map(( res ) => this.extractData( res ) );
} }
deleteCartItem( userReview ) { deleteCartItem( userReview ) {
console.log( "deleteUserreview Called" ); console.log( "deleteUserreview Called" );
return this.http.delete( this.userActionUrl + '/' + userReview.userCode, {}) return this.http.delete( this.userActionUrl + '/' + userReview.userCode, {})
.map(res => res.json()); .map( res => res.json() );
}
getUserReview( itemCode ) {
let getUserReviewUrl = '/ecm/service/feeds/review/';
getUserReviewUrl = getUserReviewUrl + itemCode;
console.log( "URL: " + getUserReviewUrl );
let headers = new Headers( { 'Content-Type': 'application/json' });
let options = new RequestOptions( { headers: headers });
return this.http.get( getUserReviewUrl, options )
.map( this.extractData )
.catch( this.handleError );
} }
submitReview(reviewData){
let userServiceUrl = '/ecm/service/feeds/review';
let headers = new Headers( { 'Content-Type': 'application/json' });
let options = new RequestOptions( { headers: headers });
private extractData(res: Response) { console.log("Submitting Review...");
console.log(JSON.stringify(reviewData));
this.http.post(userServiceUrl, reviewData, options)
.subscribe(data => {
console.log("Add Review");
}, error => {
console.log(error.json());
});
}
get itemCode(): string { return this.value; }
set itemCode( itemCode: string ) {
console.log( 'set itemCode', itemCode );
this.value = itemCode;
}
private extractData( res: Response ) {
let respJson = res.json(); let respJson = res.json();
console.log('extracData',respJson); console.log( 'extracData', respJson );
if(respJson != null) if ( respJson != null ) {
{ for ( let key of Object.keys( respJson ) ) {
for( let key of Object.keys( respJson ) )
{
console.log( "getUserReview Review ==> key: " + key ) console.log( "getUserReview Review ==> key: " + key )
let data = respJson[key]; let data = respJson[key];
try try {
{
respJson[key] = JSON.parse( data ); respJson[key] = JSON.parse( data );
console.log( "getUserReview Review try : " + respJson[key] ); console.log( "getUserReview Review try : " + respJson[key] );
} }
catch(e) catch ( e ) {
{ console.log( "getUserReview Review ==> key: ", data, typeof data === 'object' )
console.log( "getUserReview Review ==> key: " ,data, typeof data === 'object') if ( typeof data === 'object' )
if(typeof data === 'object') respJson[key] = this.formatObject( data );
respJson[key] = this.formatObject(data);
else else
respJson[key] = data; respJson[key] = data;
console.log( "getUserAddress Review catch : " + respJson[key] ); console.log( "getUserAddress Review catch : " + respJson[key] );
} }
} }
console.log('extractData[' + JSON.stringify(respJson) + ']'); console.log( 'extractData[' + JSON.stringify( respJson ) + ']' );
} }
return respJson || { }; return respJson || {};
} }
formatObject(respJson: any) { formatObject( respJson: any ) {
console.log('formatObject',respJson); console.log( 'formatObject', respJson );
if(respJson != null) if ( respJson != null ) {
{ for ( let key of Object.keys( respJson ) ) {
for( let key of Object.keys( respJson ) )
{
console.log( "formatObject Review ==> key: " + key ) console.log( "formatObject Review ==> key: " + key )
let data = respJson[key]; let data = respJson[key];
try try {
{
respJson[key] = JSON.parse( data ); respJson[key] = JSON.parse( data );
console.log( "formatObject Review try : " + respJson[key] ); console.log( "formatObject Review try : " + respJson[key] );
} }
catch(e) catch ( e ) {
{
respJson[key] = data; respJson[key] = data;
console.log( "formatObject Review catch : " + respJson[key] ); console.log( "formatObject Review catch : " + respJson[key] );
} }
} }
console.log('formatObject[' + JSON.stringify(respJson) + ']'); console.log( 'formatObject[' + JSON.stringify( respJson ) + ']' );
} }
return respJson || { }; return respJson || {};
} }
private handleError (error: Response | any) { private handleError( error: Response | any ) {
// In a real world app, we might use a remote logging infrastructure // In a real world app, we might use a remote logging infrastructure
let errMsg: string; let errMsg: string;
if (error instanceof Response) { if ( error instanceof Response ) {
const body = error.json() || ''; const body = error.json() || '';
const err = body.error || JSON.stringify(body); const err = body.error || JSON.stringify( body );
errMsg = `${error.status} - ${error.statusText || ''} ${err}`; errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else { } else {
errMsg = error.message ? error.message : error.toString(); errMsg = error.message ? error.message : error.toString();
} }
console.error('Service handleError:' + errMsg); console.error( 'Service handleError:' + errMsg );
return Observable.throw(errMsg); return Observable.throw( errMsg );
} }
} }
...@@ -34,8 +34,9 @@ ...@@ -34,8 +34,9 @@
background: #fff; background: #fff;
color: mediumvioletred !important; color: mediumvioletred !important;
box-shadow: 0 0px 5px 1px rgba(0,0,0,.1); box-shadow: 0 0px 5px 1px rgba(0,0,0,.1);
/* position: relative; */ min-width: 80px;
/* left: 200px; */ margin-right: 5px;
width: calc(50% - 10px);
} }
.save-review-button { .save-review-button {
...@@ -45,11 +46,11 @@ ...@@ -45,11 +46,11 @@
background: mediumvioletred; background: mediumvioletred;
color: #fff !important; color: #fff !important;
text-align: center; text-align: center;
margin-left: 10px; margin-left: 5px;
box-shadow: 0 0px 5px 1px rgba(0,0,0,.1); box-shadow: 0 0px 5px 1px rgba(0,0,0,.1);
border-radius: 3px; border-radius: 3px;
/* position: relative; */ min-width: 80px;
/* left: 200px; */ width: calc(50% - 10px);
} }
/* .user-review-card{ */ /* .user-review-card{ */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<!-- <div class="user-review-card"> --> <!-- <div class="user-review-card"> -->
<!-- <span class="review-card-info">My Reviews</span> --> <!-- <span class="review-card-info">My Reviews</span> -->
<!-- </div> --> <!-- </div> -->
<review-screen [editMode] = "editMode" [reviewList]='reviewList'></review-screen> <review-screen [editMode] = "editMode" [reviewList]='reviewList' [userReview]="userReview"></review-screen>
<div class="user-review-edit-button" *ngIf="editMode == 'V' "> <div class="user-review-edit-button" *ngIf="editMode == 'V' ">
<button md-button class="review-card-delete-button" (click)="remove();" > <button md-button class="review-card-delete-button" (click)="remove();" >
......
import { Component, OnInit, Output, EventEmitter, ViewEncapsulation, Input, ElementRef } from '@angular/core'; import { Component, OnInit, Output, EventEmitter, ViewEncapsulation, Input, ElementRef } from '@angular/core';
import { Review } from './review.model'; import { Review } from './review.model';
import { Reviews } from '../../ecm-model/product-review.model';
import { IScreenEditor } from '../screen-editor'; import { IScreenEditor } from '../screen-editor';
import { UserReviewService } from '../ecm-user-review.service';
import { Observable } from 'rxjs/Observable';
@Component({ @Component({
selector: 'review-manager', selector: 'review-manager',
...@@ -10,18 +14,48 @@ import { IScreenEditor } from '../screen-editor'; ...@@ -10,18 +14,48 @@ import { IScreenEditor } from '../screen-editor';
export class ReviewEditor implements OnInit { export class ReviewEditor implements OnInit {
@Output() onDiscard : EventEmitter<string> = new EventEmitter<string>(); @Output() onDiscard : EventEmitter<string> = new EventEmitter<string>();
@Output() onAddNew : EventEmitter<Review> = new EventEmitter<Review>(); @Output() onAddNew : EventEmitter<Reviews> = new EventEmitter<Reviews>();
@Output() onSave : EventEmitter<Review> = new EventEmitter<Review>(); @Output() onSave : EventEmitter<Reviews> = new EventEmitter<Reviews>();
@Output() onCancel = new EventEmitter();
@Input() editorId : string; @Input() editorId : string;
@Input() editMode : string = 'V'; @Input() editMode : string = 'V';
@Input() reviewList : Review; @Input() reviewList : Review;
@Input('isDetailPage') isDetailPage: boolean = false;
itemCode;
oldReview : Review;
oldReview : Review ; @Input() userReview: Reviews;
constructor() { } constructor(private userReviewService:UserReviewService){
this.userReview = new Reviews();
this.userReview.productRemarks = "";
this.userReview.productComments = "";
}
ngOnInit() { ngOnInit() {
console.log('isDetailPage-Manager',this.isDetailPage);
this.itemCode = this.userReviewService.itemCode;
/* TODO For order page*/
if(!this.itemCode){
this.itemCode = 'L2D0140006';
}
/* */
this.userReviewService.getUserReview(this.itemCode).subscribe(
userReview => {
if(userReview && userReview!=null){
this.userReview.productRating = userReview.rating;
this.userReview.productRemarks = userReview.remarks;
this.userReview.productComments = userReview.comments;
}
this.userReview.item_code = this.itemCode;
/* Remove */
this.userReview.reviewBy = 'BASE';
}
);
} }
...@@ -32,9 +66,9 @@ export class ReviewEditor implements OnInit { ...@@ -32,9 +66,9 @@ export class ReviewEditor implements OnInit {
} }
save(){ save(){
console.log('save', this.reviewList); console.log('save', this.userReview);
this.onSave.emit(this.reviewList); this.onSave.emit(this.userReview);
console.log('save...'); console.log('save...');
localStorage.removeItem('editorId'); localStorage.removeItem('editorId');
this.editMode = 'V'; this.editMode = 'V';
...@@ -44,7 +78,9 @@ export class ReviewEditor implements OnInit { ...@@ -44,7 +78,9 @@ export class ReviewEditor implements OnInit {
//console.log('cancel', this.profileData, this.oldProfile); //console.log('cancel', this.profileData, this.oldProfile);
this.reviewList = this.oldReview; this.reviewList = this.oldReview;
localStorage.removeItem('editorId'); localStorage.removeItem('editorId');
if(this.isDetailPage)
this.onCancel.emit();
else
this.editMode = 'V'; this.editMode = 'V';
} }
......
...@@ -14,17 +14,17 @@ ...@@ -14,17 +14,17 @@
<!-- <span class="category-name">{{reviewList?.itemCategory}}</span> --> <!-- <span class="category-name">{{reviewList?.itemCategory}}</span> -->
<!-- </div> --> <!-- </div> -->
<div> <div>
<rating [rate]="reviewList?.ratings"></rating> <rating [rate]="userReview?.productRating"></rating>
</div> </div>
<div class="user-review-title"> <div class="user-review-title">
<span class="review-title">{{reviewList?.reviewTitle}}</span> <span class="review-title">{{userReview?.productRemarks}}</span>
</div> </div>
<!-- <div class="items-seller-info"> --> <!-- <div class="items-seller-info"> -->
<!-- <span class="seller-info">{{reviewList?.sellerInfo}}</span> --> <!-- <span class="seller-info">{{reviewList?.sellerInfo}}</span> -->
<!-- </div> --> <!-- </div> -->
<div class="item-review"> <div class="item-review">
<!-- <span class="item-review">{{reviewList?.itemdescription}}</span> --> <!-- <span class="item-review">{{reviewList?.itemdescription}}</span> -->
<ecm-readmore [text]="reviewList?.itemdescription" [maxLength]="112"></ecm-readmore> <ecm-readmore [text]="userReview?.productComments" [maxLength]="112"></ecm-readmore>
</div> </div>
</div> </div>
</div> </div>
...@@ -42,14 +42,14 @@ ...@@ -42,14 +42,14 @@
<!-- <span class="edit-category-name">{{reviewList?.itemCategory}}</span> --> <!-- <span class="edit-category-name">{{reviewList?.itemCategory}}</span> -->
<!-- </div> --> <!-- </div> -->
<div class="user-edit-review-item-rating"> <div class="user-edit-review-item-rating">
<rating [rate]="reviewList.ratings" (updateRate)="updateRate($event)" [isResponsive]="true" ></rating> <rating [rate]="userReview.productRating" (updateRate)="updateRate($event)" [isResponsive]="true" ></rating>
</div> </div>
<div class="input-review-title"> <div class="input-review-title">
<md-form-field class="review"> <md-form-field class="review">
<textarea mdInput [placeholder]="'Title'" [(ngModel)]="reviewList.reviewTitle"></textarea> <textarea mdInput [placeholder]="'Title'" [(ngModel)]="userReview.productRemarks"></textarea>
</md-form-field> </md-form-field>
<md-form-field class="itemList-review"> <md-form-field class="itemList-review">
<textarea mdInput [placeholder]="'Review'" [(ngModel)]="reviewList.itemReview"></textarea> <textarea mdInput [placeholder]="'Review'" [(ngModel)]="userReview.productComments"></textarea>
</md-form-field> </md-form-field>
</div> </div>
</div> </div>
......
import { Component, OnInit, Input } from '@angular/core'; import { Component, OnInit, Input } from '@angular/core';
import { Review } from '../review.model'; import { Review } from '../review.model';
import { Reviews } from '../../../ecm-model/product-review.model';
@Component({ @Component( {
selector: 'review-screen', selector: 'review-screen',
templateUrl: './review-screen.component.html', templateUrl: './review-screen.component.html',
styleUrls: ['./review-screen.component.css'] styleUrls: ['./review-screen.component.css']
}) })
export class ReviewScreenComponent implements OnInit { export class ReviewScreenComponent implements OnInit {
@Input() editMode : string = 'V'; @Input() editMode: string = 'V';
@Input() reviewList : Review; @Input() reviewList: Review;
@Input( 'userReview' ) userReview: Reviews;
constructor() { } constructor() { }
...@@ -17,9 +19,9 @@ export class ReviewScreenComponent implements OnInit { ...@@ -17,9 +19,9 @@ export class ReviewScreenComponent implements OnInit {
ngOnInit() { ngOnInit() {
} }
updateRate(updatedRate) { updateRate( updatedRate ) {
console.log('Updated Rate: '+updatedRate); console.log( 'Updated Rate: ' + updatedRate );
this.reviewList.ratings = updatedRate; this.userReview.productRating = updatedRate;
} }
} }
<div class="user-review-all-info"> <div class="user-review-all-info">
<review-manager [id] = "'REV_1'" [editorId] = "'REV_1'" [reviewList] = "reviewList" <review-manager [id] = "'REV_1'" [editorId] = "'REV_1'" [reviewList] = "reviewList"
(onSave) = 'onSaveClick($event)' (onSave) = 'onSaveClick($event)'
(onDiscard) = 'onDiscard($event)' > (onDiscard) = 'onDiscard($event)' (onCancel)="onCancel.emit();" [isDetailPage]="isDetailPage" [editMode]="editMode">
</review-manager> </review-manager>
</div> </div>
\ No newline at end of file
import { Component, OnInit, ViewChildren, QueryList} from '@angular/core'; import { Component, OnInit, ViewChildren, QueryList, Input, Output, EventEmitter} from '@angular/core';
import { Review } from './review-manager/review.model'; import { Review } from './review-manager/review.model';
import { ReviewEditor } from './review-manager'; import { ReviewEditor } from './review-manager';
import { AppState } from '../ecm-store/reducers'; import { AppState } from '../ecm-store/reducers';
...@@ -14,7 +14,11 @@ import { ReviewAction} from '../ecm-store/actions'; ...@@ -14,7 +14,11 @@ import { ReviewAction} from '../ecm-store/actions';
}) })
export class UserReviewComponent implements OnInit { export class UserReviewComponent implements OnInit {
@ViewChildren(ReviewEditor) reviewEditors: QueryList<ReviewEditor> @ViewChildren(ReviewEditor) reviewEditors: QueryList<ReviewEditor>;
@Output() onCancel = new EventEmitter();
@Input('editMode') editMode : string = 'V';
@Input('isDetailPage') isDetailPage: boolean = false;
// reviewList: Review[]= [ // reviewList: Review[]= [
// new Review('Kabab Special','4','Awesome Taste...Good Quantity','By Bipinraj sartape','very nice to eat never eat such good food in my life i will come again and again'), // new Review('Kabab Special','4','Awesome Taste...Good Quantity','By Bipinraj sartape','very nice to eat never eat such good food in my life i will come again and again'),
...@@ -25,38 +29,26 @@ export class UserReviewComponent implements OnInit { ...@@ -25,38 +29,26 @@ export class UserReviewComponent implements OnInit {
userReview : Observable<Review[]>; userReview : Observable<Review[]>;
constructor(private store: Store<AppState>, private reviewActions: ReviewAction){} constructor(private store: Store<AppState>, private reviewActions: ReviewAction, private userReviewService:UserReviewService){}
ngOnInit() { ngOnInit() {
console.log('isDetailPage',this.isDetailPage);
localStorage.removeItem('editorId'); localStorage.removeItem('editorId');
} }
onSaveClick() onSaveClick( userReview )
{ {
console.log('On Save Click ', this.userReview); console.log('On Save Click ', userReview);
//TODO Call POST service (review)
this.userReview = this.store.select('userAddress');
this.userReview.subscribe( ReviewData => { this.userReviewService.submitReview(userReview);
ReviewData.forEach( this.onCancel.emit();
profileInfo => {
}
);
});
} }
deleteCartItem( userReview ) { deleteCartItem( userReview ) {
console.log( "deleteCartItem Called" ); console.log( "deleteCartItem Called" );
this.store.dispatch(this.reviewActions.deleteReviews(userReview)); this.store.dispatch(this.reviewActions.deleteReviews(userReview));
} }
onDiscard(editorId: string) onDiscard(editorId: string)
{ {
console.log('On Discard Click ', editorId); console.log('On Discard Click ', editorId);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment