Subversion Repositories SmartDukaan

Rev

Rev 5387 | Rev 8717 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
167 ashish 1
package in.shop2020.hotspot.dashbaord.client.inbox;
2
 
3
import in.shop2020.hotspot.dashbaord.client.event.LoadOrderDetailsEvent;
4133 chandransh 4
import in.shop2020.hotspot.dashbaord.client.event.LoadOrderListEvent;
4398 rajveer 5
import in.shop2020.hotspot.dashbaord.shared.actions.OrderAlert;
167 ashish 6
import in.shop2020.hotspot.dashbaord.shared.actions.Order;
4133 chandransh 7
import in.shop2020.hotspot.dashbaord.shared.actions.OrderType;
167 ashish 8
 
9
import java.util.Date;
10
import java.util.List;
11
 
12
import org.enunes.gwt.mvp.client.EventBus;
13
 
4361 rajveer 14
import com.google.gwt.cell.client.CheckboxCell;
167 ashish 15
import com.google.gwt.core.client.GWT;
4124 chandransh 16
import com.google.gwt.dom.client.Style.Unit;
167 ashish 17
import com.google.gwt.resources.client.CssResource;
18
import com.google.gwt.uibinder.client.UiBinder;
19
import com.google.gwt.uibinder.client.UiField;
4361 rajveer 20
import com.google.gwt.user.cellview.client.Column;
4124 chandransh 21
import com.google.gwt.user.cellview.client.DataGrid;
22
import com.google.gwt.user.cellview.client.RowStyles;
23
import com.google.gwt.user.cellview.client.SimplePager;
24
import com.google.gwt.user.cellview.client.TextColumn;
167 ashish 25
import com.google.gwt.user.client.ui.ResizeComposite;
26
import com.google.gwt.user.client.ui.Widget;
4124 chandransh 27
import com.google.gwt.view.client.AsyncDataProvider;
28
import com.google.gwt.view.client.HasData;
29
import com.google.gwt.view.client.Range;
30
import com.google.gwt.view.client.SelectionChangeEvent;
31
import com.google.gwt.view.client.SingleSelectionModel;
167 ashish 32
 
4125 chandransh 33
public class OrderList extends ResizeComposite {
167 ashish 34
 
4125 chandransh 35
	interface OrderListUiBinder extends UiBinder<Widget, OrderList>{}
167 ashish 36
 
4125 chandransh 37
	interface SelectionStyle extends CssResource {
167 ashish 38
		String selectedRow();
4004 chandransh 39
		String fatalRow();
40
		String criticalRow();
167 ashish 41
	}
42
	//add gin here
584 chandransh 43
	private static final OrderListUiBinder binder = GWT.create(OrderListUiBinder.class);
167 ashish 44
 
4124 chandransh 45
	@UiField DataGrid<Order> table;
46
    // Create paging controls.
47
    @UiField SimplePager pager = new SimplePager();
167 ashish 48
	@UiField SelectionStyle selectionStyle;
49
 
4361 rajveer 50
 
51
	Column<Order, Boolean> checkboxColumn = new Column<Order, Boolean>(new CheckboxCell(true, false)) {
52
		@Override
53
		public Boolean getValue(Order order) {
54
			return table.getSelectionModel().isSelected(order);
55
		}
56
	};
57
 
58
 
4666 rajveer 59
    private TextColumn<Order> promisedShippingDateColumn = new TextColumn<Order>() {
60
    	@Override
4124 chandransh 61
        public String getValue(Order order) {
4671 rajveer 62
            return getDisplayableDate(new Date(order.getPromisedShippingTime()))+"";
4124 chandransh 63
        }
64
    };
65
 
66
    private TextColumn<Order> paymentModeColumn = new TextColumn<Order>() {
67
        @Override
68
        public String getValue(Order order) {
69
            return order.isCod() ? "COD" : "Prepaid";
70
        }
71
    };
72
 
7422 rajveer 73
    private TextColumn<Order> orderFromColumn = new TextColumn<Order>() {
74
    	@Override
75
        public String getValue(Order order) {
76
            return order.getSource();
77
        }
78
    };
79
 
4124 chandransh 80
    private TextColumn<Order> idColumn = new TextColumn<Order>() {
81
        @Override
82
        public String getValue(Order order) {
83
            return "" + order.getOrderId();
84
        }
85
    };
86
 
87
    private TextColumn<Order> productDescriptionColumn = new TextColumn<Order>() {
88
        @Override
89
        public String getValue(Order order) {
90
        	StringBuilder productDescription = new StringBuilder(order.getProductGroup());
91
			if(order.getBrand()!=null)
92
				productDescription.append(" " + order.getBrand());
93
			if(order.getModelNumber()!=null)
94
				productDescription.append(" " + order.getModelNumber());
95
			if(order.getModelName()!=null)
96
				productDescription.append(" " + order.getModelName());
97
			if(order.getColor()!=null)
4175 rajveer 98
				productDescription.append(" " + order.getColor());		
99
			if(order.getDealText()!=null)
100
					productDescription.append(" (" + order.getDealText() + ")");
5387 rajveer 101
			if(order.getQuantity() > 1)
102
				productDescription.append(" (" + order.getQuantity() + ")");
4124 chandransh 103
            return productDescription.toString();
104
        }
105
    };
106
 
107
    private TextColumn<Order> creationDateColumn = new TextColumn<Order>() {
108
        @Override
109
        public String getValue(Order order) {
110
            return getDisplayableDate(new Date(order.getCreatedOn()))+"";
111
        }
112
    };
113
 
7422 rajveer 114
//    private TextColumn<Order> promisedDeliveryDateColumn = new TextColumn<Order>() {
115
//        @Override
116
//        public String getValue(Order order) {
117
//            return getDisplayableDate(new Date(order.getPromisedDeliveryTime()))+"";
118
//        }
119
//    };
120
//    
121
//    private TextColumn<Order> expectedDeliveryDateColumn = new TextColumn<Order>() {
122
//        @Override
123
//        public String getValue(Order order) {
124
//            return getDisplayableDate(new Date(order.getExpectedDeliveryTime()))+"";
125
//        }
126
//    };
4124 chandransh 127
 
128
    private TextColumn<Order> statusMessageColumn = new TextColumn<Order>() {
129
        @Override
130
        public String getValue(Order order) {
131
            return order.getStatusMessage();
132
        }
133
    };
134
 
135
    AsyncDataProvider<Order> asyncDataProvider = new AsyncDataProvider<Order>() {
136
 
137
		@Override
138
		protected void onRangeChanged(HasData<Order> display) {
139
            Range range = display.getVisibleRange();
4133 chandransh 140
            int newStart = range.getStart();
141
			// This is to prevent the recursive firing of onRangeChanged events.
142
			// Every time fresh data is pushed into the DataProvider, this
143
			// method is called. This, in turn, fires an event to refresh the
144
			// data. If the start of the new range is same as that of the
145
			// currently loaded data, there is no point in proceeding further.
146
            GWT.log(this + "Current start: " + start + ", New start:" + newStart);
147
            if(newStart == start)
148
            	return;
4124 chandransh 149
            int limit = range.getLength();
4133 chandransh 150
 
151
            eventbus.fireEvent(new LoadOrderListEvent(orderType, newStart, limit));
4124 chandransh 152
		}
153
 
154
    };
155
 
167 ashish 156
	private final EventBus eventbus;
4133 chandransh 157
	private final OrderType orderType;
167 ashish 158
	private final List<Order> orders;
4133 chandransh 159
	private int count;
160
	private final int start;
167 ashish 161
 
4133 chandransh 162
	public OrderList(EventBus eventbus, OrderType orderType, List<Order> orders, int start, int count){
167 ashish 163
		this.orders = orders;
4124 chandransh 164
		this.eventbus = eventbus;
4133 chandransh 165
		this.orderType = orderType;
166
		this.start = start;
167
		this.count = count;
167 ashish 168
		initWidget(binder.createAndBindUi(this));
169
		initTable();
170
	}
171
 
172
	private void initTable(){
4124 chandransh 173
 
174
		//Add custom styles to show in case we want to alert the user
175
		table.setRowStyles(new RowStyles<Order>(){
167 ashish 176
 
4124 chandransh 177
			@Override
178
			public String getStyleNames(Order order, int rowIndex) {
4133 chandransh 179
				if(order==null)
180
					return "";
4398 rajveer 181
				OrderAlert alert = order.getAlert();
4124 chandransh 182
				String style = "";
183
			    switch(alert){
184
			    case DELIVERY_TIME_EXCEEDED:
185
			    case SHIPPING_TIME_EXCEEDED:
186
			    case VERIFICATION_DELAYED_TOO_MUCH:
187
			    case ACCEPTANCE_DELAYED_TOO_MUCH:
188
			    case ORDER_NOT_CONNECTED_FOR_TOO_LONG:
189
			        style = selectionStyle.fatalRow();
190
			        break;
191
			    case ACCEPTANCE_DELAYED:
192
			    case VERIFICATION_DELAYED:
193
			    case ORDER_NOT_CONNECTED:
194
			        style = selectionStyle.criticalRow();
195
		            break;
196
			    case WARNING:
197
			    case NONE:
198
			    }
199
				return style;
200
			}
201
		});
202
 
4361 rajveer 203
 
204
 
205
        // Add the columns.
206
	    table.addColumn(checkboxColumn,"");
4666 rajveer 207
        table.addColumn(promisedShippingDateColumn, "Promised Shipping");
4124 chandransh 208
        table.addColumn(paymentModeColumn, "Type");
7422 rajveer 209
        table.addColumn(orderFromColumn, "Order From");
4124 chandransh 210
        table.addColumn(idColumn, "Order Id");
211
        table.addColumn(productDescriptionColumn, "Product Description");
212
        table.addColumn(creationDateColumn, "Creation Date");
7422 rajveer 213
//        table.addColumn(promisedDeliveryDateColumn, "Promised Delivery");
214
//        table.addColumn(expectedDeliveryDateColumn, "Expected Delivery");
4124 chandransh 215
        table.addColumn(statusMessageColumn, "Current Status");
167 ashish 216
 
4124 chandransh 217
        //Set the widths
218
        table.setWidth("100%");
4670 rajveer 219
        table.setColumnWidth(checkboxColumn, 30, Unit.PX);
220
        table.setColumnWidth(promisedShippingDateColumn, 140.0, Unit.PX);
4124 chandransh 221
        table.setColumnWidth(paymentModeColumn, 60.0, Unit.PX);
4125 chandransh 222
        table.setColumnWidth(idColumn, 70.0, Unit.PX);
7422 rajveer 223
        table.setColumnWidth(orderFromColumn, 70.0, Unit.PX);
4670 rajveer 224
        table.setColumnWidth(productDescriptionColumn, 230.0, Unit.PX);
225
        table.setColumnWidth(creationDateColumn, 140.0, Unit.PX);
7422 rajveer 226
//        table.setColumnWidth(promisedDeliveryDateColumn, 140.0, Unit.PX);
227
//        table.setColumnWidth(expectedDeliveryDateColumn, 140.0, Unit.PX);
4670 rajveer 228
        table.setColumnWidth(statusMessageColumn, 180.0, Unit.PX);
4124 chandransh 229
 
4133 chandransh 230
        table.setRowCount(count, true);
231
        table.setVisibleRange(start, orders.size());
232
 
4124 chandransh 233
        // Connect the table to the data provider.
234
        asyncDataProvider.addDataDisplay(table);
4133 chandransh 235
 
4124 chandransh 236
        //Add paging support
237
        pager.setDisplay(table);
238
 
239
        // Initialize the data
4133 chandransh 240
		asyncDataProvider.updateRowCount(count, true);
241
		asyncDataProvider.updateRowData(start, orders);
4124 chandransh 242
 
243
        // Add a selection model to handle item selection.
244
        final SingleSelectionModel<Order> selectionModel = new SingleSelectionModel<Order>();
245
        table.setSelectionModel(selectionModel);
246
        selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
247
 
248
            @Override
249
            public void onSelectionChange(SelectionChangeEvent event) {
250
            	Order selectedOrder = selectionModel.getSelectedObject();
251
            	eventbus.fireEvent(new LoadOrderDetailsEvent(selectedOrder));
4004 chandransh 252
            }
4124 chandransh 253
        });
254
 
255
	}
167 ashish 256
 
306 ashish 257
	private String getDisplayableDate(Date date){
258
		String dateString = date.toString();
259
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
260
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
261
		return dateString;		
262
	}
167 ashish 263
}