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,130 +5,157 @@ import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
import { Store } from '@ngrx/store';
import {AppState} from '../ecm-store/reducers';
import { ReviewAction} from '../ecm-store/actions';
import { AppState } from '../ecm-store/reducers';
import { ReviewAction } from '../ecm-store/actions';
import { Review } from './review-manager/review.model';
import { Reviews } from '../ecm-model/product-review.model';
@Injectable()
export class UserReviewService {
private userActionUrl = '';
userReview: Review[];
constructor(private http: Http, private store: Store<AppState>, private reviewActions: ReviewAction) { }
loadUserReview(){
this.fetchUserInfo().subscribe(
data => {
this.userReview = data;
if ( data && data != null ) {
this.userReview.forEach( userReview => {
this.store.dispatch(this.reviewActions.updateReviews(userReview));
})
}
});
}
private userActionUrl = '';
userReview: Review[];
value;
constructor( private http: Http, private store: Store<AppState>, private reviewActions: ReviewAction ) { }
loadUserReview() {
this.fetchUserInfo().subscribe(
data => {
this.userReview = data;
if ( data && data != null ) {
this.userReview.forEach( userReview => {
this.store.dispatch( this.reviewActions.updateReviews( userReview ) );
})
}
});
}
fetchUserInfo(): Observable<Review[]> {
let headers = new Headers( { 'Content-Type': 'application/json' });
let options = new RequestOptions( { headers: headers });
return this.http.get( this.userActionUrl, options )
.map( (res) => this.extractData(res) );
}
let headers = new Headers( { 'Content-Type': 'application/json' });
let options = new RequestOptions( { headers: headers });
return this.http.get( this.userActionUrl, options )
.map(( res ) => this.extractData( res ) );
}
updateUserInfo( userReview ) {
console.log( "StoreInReview Called" );
console.log(JSON.stringify(userReview));
console.log( JSON.stringify( userReview ) );
let headers = new Headers( { 'Content-Type': 'application/json' });
let options = new RequestOptions( { headers: headers });
return this.http.post( '', JSON.stringify(userReview) , options)
.map( (res) => this.extractData(res) );
return this.http.post( '', JSON.stringify( userReview ), options )
.map(( res ) => this.extractData( res ) );
}
deleteCartItem( userReview ) {
console.log( "deleteUserreview Called" );
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 );
}
private extractData(res: Response) {
submitReview(reviewData){
let userServiceUrl = '/ecm/service/feeds/review';
let headers = new Headers( { 'Content-Type': 'application/json' });
let options = new RequestOptions( { headers: headers });
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();
console.log('extracData',respJson);
if(respJson != null)
{
for( let key of Object.keys( respJson ) )
{
console.log( 'extracData', respJson );
if ( respJson != null ) {
for ( let key of Object.keys( respJson ) ) {
console.log( "getUserReview Review ==> key: " + key )
let data = respJson[key];
try
{
try {
respJson[key] = JSON.parse( data );
console.log( "getUserReview Review try : " + respJson[key] );
}
catch(e)
{
console.log( "getUserReview Review ==> key: " ,data, typeof data === 'object')
if(typeof data === 'object')
respJson[key] = this.formatObject(data);
catch ( e ) {
console.log( "getUserReview Review ==> key: ", data, typeof data === 'object' )
if ( typeof data === 'object' )
respJson[key] = this.formatObject( data );
else
respJson[key] = data;
console.log( "getUserAddress Review catch : " + respJson[key] );
}
}
console.log('extractData[' + JSON.stringify(respJson) + ']');
console.log( 'extractData[' + JSON.stringify( respJson ) + ']' );
}
return respJson || { };
}
formatObject(respJson: any) {
console.log('formatObject',respJson);
if(respJson != null)
{
for( let key of Object.keys( respJson ) )
{
return respJson || {};
}
formatObject( respJson: any ) {
console.log( 'formatObject', respJson );
if ( respJson != null ) {
for ( let key of Object.keys( respJson ) ) {
console.log( "formatObject Review ==> key: " + key )
let data = respJson[key];
try
{
try {
respJson[key] = JSON.parse( data );
console.log( "formatObject Review try : " + respJson[key] );
}
catch(e)
{
catch ( e ) {
respJson[key] = data;
console.log( "formatObject Review catch : " + respJson[key] );
}
}
console.log('formatObject[' + JSON.stringify(respJson) + ']');
console.log( 'formatObject[' + JSON.stringify( respJson ) + ']' );
}
return respJson || { };
}
private handleError (error: Response | any) {
return respJson || {};
}
private handleError( error: Response | any ) {
// In a real world app, we might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
if ( error instanceof Response ) {
const body = error.json() || '';
const err = body.error || JSON.stringify( body );
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
errMsg = error.message ? error.message : error.toString();
}
console.error('Service handleError:' + errMsg);
return Observable.throw(errMsg);
}
console.error( 'Service handleError:' + errMsg );
return Observable.throw( errMsg );
}
}
......@@ -26,7 +26,7 @@
}
.cancel-review-button {
display: inline-block;
display: inline-block;
height: 46px;
line-height: 40px;
text-align: center;
......@@ -34,8 +34,9 @@
background: #fff;
color: mediumvioletred !important;
box-shadow: 0 0px 5px 1px rgba(0,0,0,.1);
/* position: relative; */
/* left: 200px; */
min-width: 80px;
margin-right: 5px;
width: calc(50% - 10px);
}
.save-review-button {
......@@ -45,11 +46,11 @@
background: mediumvioletred;
color: #fff !important;
text-align: center;
margin-left: 10px;
margin-left: 5px;
box-shadow: 0 0px 5px 1px rgba(0,0,0,.1);
border-radius: 3px;
/* position: relative; */
/* left: 200px; */
min-width: 80px;
width: calc(50% - 10px);
}
/* .user-review-card{ */
......
......@@ -2,7 +2,7 @@
<!-- <div class="user-review-card"> -->
<!-- <span class="review-card-info">My Reviews</span> -->
<!-- </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' ">
<button md-button class="review-card-delete-button" (click)="remove();" >
......
import { Component, OnInit, Output, EventEmitter, ViewEncapsulation, Input, ElementRef } from '@angular/core';
import { Review } from './review.model';
import { Reviews } from '../../ecm-model/product-review.model';
import { IScreenEditor } from '../screen-editor';
import { UserReviewService } from '../ecm-user-review.service';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'review-manager',
......@@ -10,18 +14,48 @@ import { IScreenEditor } from '../screen-editor';
export class ReviewEditor implements OnInit {
@Output() onDiscard : EventEmitter<string> = new EventEmitter<string>();
@Output() onAddNew : EventEmitter<Review> = new EventEmitter<Review>();
@Output() onSave : EventEmitter<Review> = new EventEmitter<Review>();
@Output() onAddNew : EventEmitter<Reviews> = new EventEmitter<Reviews>();
@Output() onSave : EventEmitter<Reviews> = new EventEmitter<Reviews>();
@Output() onCancel = new EventEmitter();
@Input() editorId : string;
@Input() editMode : string = 'V';
@Input() reviewList : Review;
@Input() editMode : string = 'V';
@Input() reviewList : Review;
@Input('isDetailPage') isDetailPage: boolean = false;
oldReview : Review ;
itemCode;
oldReview : Review;
@Input() userReview: Reviews;
constructor() { }
constructor(private userReviewService:UserReviewService){
this.userReview = new Reviews();
this.userReview.productRemarks = "";
this.userReview.productComments = "";
}
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 {
}
save(){
console.log('save', this.reviewList);
console.log('save', this.userReview);
this.onSave.emit(this.reviewList);
this.onSave.emit(this.userReview);
console.log('save...');
localStorage.removeItem('editorId');
this.editMode = 'V';
......@@ -44,8 +78,10 @@ export class ReviewEditor implements OnInit {
//console.log('cancel', this.profileData, this.oldProfile);
this.reviewList = this.oldReview;
localStorage.removeItem('editorId');
this.editMode = 'V';
if(this.isDetailPage)
this.onCancel.emit();
else
this.editMode = 'V';
}
......
......@@ -14,17 +14,17 @@
<!-- <span class="category-name">{{reviewList?.itemCategory}}</span> -->
<!-- </div> -->
<div>
<rating [rate]="reviewList?.ratings"></rating>
<rating [rate]="userReview?.productRating"></rating>
</div>
<div class="user-review-title">
<span class="review-title">{{reviewList?.reviewTitle}}</span>
<span class="review-title">{{userReview?.productRemarks}}</span>
</div>
<!-- <div class="items-seller-info"> -->
<!-- <span class="seller-info">{{reviewList?.sellerInfo}}</span> -->
<!-- </div> -->
<div class="item-review">
<!-- <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>
......@@ -42,19 +42,19 @@
<!-- <span class="edit-category-name">{{reviewList?.itemCategory}}</span> -->
<!-- </div> -->
<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 class="input-review-title">
<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 class="itemList-review">
<textarea mdInput [placeholder]="'Review'" [(ngModel)]="reviewList.itemReview"></textarea>
<textarea mdInput [placeholder]="'Review'" [(ngModel)]="userReview.productComments"></textarea>
</md-form-field>
</div>
</div>
</div>
</ng-template>
</ng-template>
......
import { Component, OnInit, Input } from '@angular/core';
import { Component, OnInit, Input } from '@angular/core';
import { Review } from '../review.model';
import { Reviews } from '../../../ecm-model/product-review.model';
@Component({
selector: 'review-screen',
templateUrl: './review-screen.component.html',
styleUrls: ['./review-screen.component.css']
@Component( {
selector: 'review-screen',
templateUrl: './review-screen.component.html',
styleUrls: ['./review-screen.component.css']
})
export class ReviewScreenComponent implements OnInit {
@Input() editMode : string = 'V';
@Input() reviewList : Review;
constructor() { }
@Input() editMode: string = 'V';
@Input() reviewList: Review;
@Input( 'userReview' ) userReview: Reviews;
ngOnInit() {
}
updateRate(updatedRate) {
console.log('Updated Rate: '+updatedRate);
this.reviewList.ratings = updatedRate;
}
constructor() { }
ngOnInit() {
}
updateRate( updatedRate ) {
console.log( 'Updated Rate: ' + updatedRate );
this.userReview.productRating = updatedRate;
}
}
<div class="user-review-all-info">
<review-manager [id] = "'REV_1'" [editorId] = "'REV_1'" [reviewList] = "reviewList"
(onSave) = 'onSaveClick($event)'
(onDiscard) = 'onDiscard($event)' >
(onDiscard) = 'onDiscard($event)' (onCancel)="onCancel.emit();" [isDetailPage]="isDetailPage" [editMode]="editMode">
</review-manager>
</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 { ReviewEditor } from './review-manager';
import { AppState } from '../ecm-store/reducers';
......@@ -14,7 +14,11 @@ import { ReviewAction} from '../ecm-store/actions';
})
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[]= [
// 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 {
userReview : Observable<Review[]>;
constructor(private store: Store<AppState>, private reviewActions: ReviewAction){}
constructor(private store: Store<AppState>, private reviewActions: ReviewAction, private userReviewService:UserReviewService){}
ngOnInit() {
console.log('isDetailPage',this.isDetailPage);
localStorage.removeItem('editorId');
}
onSaveClick()
onSaveClick( userReview )
{
console.log('On Save Click ', this.userReview);
//TODO Call POST service (review)
console.log('On Save Click ', userReview);
this.userReview = this.store.select('userAddress');
this.userReview.subscribe( ReviewData => {
ReviewData.forEach(
profileInfo => {
}
);
});
this.userReviewService.submitReview(userReview);
this.onCancel.emit();
}
deleteCartItem( userReview ) {
console.log( "deleteCartItem Called" );
this.store.dispatch(this.reviewActions.deleteReviews(userReview));
this.store.dispatch(this.reviewActions.deleteReviews(userReview));
}
onDiscard(editorId: string)
{
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