Subversion Repositories SmartDukaan

Rev

Rev 4124 | Rev 4133 | 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;
4004 chandransh 4
import in.shop2020.hotspot.dashbaord.shared.actions.Alert;
167 ashish 5
import in.shop2020.hotspot.dashbaord.shared.actions.Order;
6
 
7
import java.util.Date;
8
import java.util.List;
9
 
10
import org.enunes.gwt.mvp.client.EventBus;
11
 
12
import com.google.gwt.core.client.GWT;
4124 chandransh 13
import com.google.gwt.dom.client.Style.Unit;
167 ashish 14
import com.google.gwt.resources.client.CssResource;
15
import com.google.gwt.uibinder.client.UiBinder;
16
import com.google.gwt.uibinder.client.UiField;
4124 chandransh 17
import com.google.gwt.user.cellview.client.DataGrid;
18
import com.google.gwt.user.cellview.client.RowStyles;
19
import com.google.gwt.user.cellview.client.SimplePager;
20
import com.google.gwt.user.cellview.client.TextColumn;
167 ashish 21
import com.google.gwt.user.client.ui.ResizeComposite;
22
import com.google.gwt.user.client.ui.Widget;
4124 chandransh 23
import com.google.gwt.view.client.AsyncDataProvider;
24
import com.google.gwt.view.client.HasData;
25
import com.google.gwt.view.client.Range;
26
import com.google.gwt.view.client.SelectionChangeEvent;
27
import com.google.gwt.view.client.SingleSelectionModel;
167 ashish 28
 
4125 chandransh 29
public class OrderList extends ResizeComposite {
167 ashish 30
 
4125 chandransh 31
	interface OrderListUiBinder extends UiBinder<Widget, OrderList>{}
167 ashish 32
 
4125 chandransh 33
	interface SelectionStyle extends CssResource {
167 ashish 34
		String selectedRow();
4004 chandransh 35
		String fatalRow();
36
		String criticalRow();
167 ashish 37
	}
38
	//add gin here
584 chandransh 39
	private static final OrderListUiBinder binder = GWT.create(OrderListUiBinder.class);
167 ashish 40
 
4124 chandransh 41
	@UiField DataGrid<Order> table;
42
    // Create paging controls.
43
    @UiField SimplePager pager = new SimplePager();
167 ashish 44
	@UiField SelectionStyle selectionStyle;
45
 
4124 chandransh 46
    private TextColumn<Order> batchColumn = new TextColumn<Order>() {
47
        @Override
48
        public String getValue(Order order) {
49
            return "" + order.getBatchNo();
50
        }
51
    };
52
 
53
    private TextColumn<Order> serialNoColumn = new TextColumn<Order>() {
54
        @Override
55
        public String getValue(Order order) {
56
            return "" + order.getSerialNo();
57
        }
58
    };
59
 
60
    private TextColumn<Order> paymentModeColumn = new TextColumn<Order>() {
61
        @Override
62
        public String getValue(Order order) {
63
            return order.isCod() ? "COD" : "Prepaid";
64
        }
65
    };
66
 
67
    private TextColumn<Order> idColumn = new TextColumn<Order>() {
68
        @Override
69
        public String getValue(Order order) {
70
            return "" + order.getOrderId();
71
        }
72
    };
73
 
74
    private TextColumn<Order> productDescriptionColumn = new TextColumn<Order>() {
75
        @Override
76
        public String getValue(Order order) {
77
        	StringBuilder productDescription = new StringBuilder(order.getProductGroup());
78
			if(order.getBrand()!=null)
79
				productDescription.append(" " + order.getBrand());
80
			if(order.getModelNumber()!=null)
81
				productDescription.append(" " + order.getModelNumber());
82
			if(order.getModelName()!=null)
83
				productDescription.append(" " + order.getModelName());
84
			if(order.getColor()!=null)
85
				productDescription.append(" " + order.getColor());
86
            return productDescription.toString();
87
        }
88
    };
89
 
90
    private TextColumn<Order> creationDateColumn = new TextColumn<Order>() {
91
        @Override
92
        public String getValue(Order order) {
93
            return getDisplayableDate(new Date(order.getCreatedOn()))+"";
94
        }
95
    };
96
 
97
    private TextColumn<Order> promisedDeliveryDateColumn = new TextColumn<Order>() {
98
        @Override
99
        public String getValue(Order order) {
100
            return getDisplayableDate(new Date(order.getPromisedDeliveryTime()))+"";
101
        }
102
    };
103
 
104
    private TextColumn<Order> expectedDeliveryDateColumn = new TextColumn<Order>() {
105
        @Override
106
        public String getValue(Order order) {
107
            return getDisplayableDate(new Date(order.getExpectedDeliveryTime()))+"";
108
        }
109
    };
110
 
111
    private TextColumn<Order> statusMessageColumn = new TextColumn<Order>() {
112
        @Override
113
        public String getValue(Order order) {
114
            return order.getStatusMessage();
115
        }
116
    };
117
 
118
    AsyncDataProvider<Order> asyncDataProvider = new AsyncDataProvider<Order>() {
119
 
120
		@Override
121
		protected void onRangeChanged(HasData<Order> display) {
122
            Range range = display.getVisibleRange();
123
            int start = range.getStart();
124
            int limit = range.getLength();
125
            int lastIndex = start + limit;
126
            if(lastIndex > orders.size()){
127
            	lastIndex = orders.size();
128
            }
129
    		asyncDataProvider.updateRowCount(orders.size(), true);
130
    		asyncDataProvider.updateRowData(start, orders.subList(start, lastIndex));
131
		}
132
 
133
    };
134
 
167 ashish 135
	private final EventBus eventbus;
136
 
137
	private final List<Order> orders;
138
 
139
	public OrderList(EventBus eventbus, List<Order> orders){
140
		this.orders = orders;
4124 chandransh 141
		this.eventbus = eventbus;
167 ashish 142
		initWidget(binder.createAndBindUi(this));
143
		initTable();
144
	}
145
 
146
	private void initTable(){
4124 chandransh 147
 
148
		//Add custom styles to show in case we want to alert the user
149
		table.setRowStyles(new RowStyles<Order>(){
167 ashish 150
 
4124 chandransh 151
			@Override
152
			public String getStyleNames(Order order, int rowIndex) {
153
				Alert alert = order.getAlert();
154
				String style = "";
155
			    switch(alert){
156
			    case DELIVERY_TIME_EXCEEDED:
157
			    case SHIPPING_TIME_EXCEEDED:
158
			    case VERIFICATION_DELAYED_TOO_MUCH:
159
			    case ACCEPTANCE_DELAYED_TOO_MUCH:
160
			    case ORDER_NOT_CONNECTED_FOR_TOO_LONG:
161
			        style = selectionStyle.fatalRow();
162
			        break;
163
			    case ACCEPTANCE_DELAYED:
164
			    case VERIFICATION_DELAYED:
165
			    case ORDER_NOT_CONNECTED:
166
			        style = selectionStyle.criticalRow();
167
		            break;
168
			    case WARNING:
169
			    case NONE:
170
			    }
171
				return style;
172
			}
173
		});
174
 
175
        // Add the columns.        
176
        table.addColumn(batchColumn, "Batch");
177
        table.addColumn(serialNoColumn, "S.No.");
178
        table.addColumn(paymentModeColumn, "Type");
179
        table.addColumn(idColumn, "Order Id");
180
        table.addColumn(productDescriptionColumn, "Product Description");
181
        table.addColumn(creationDateColumn, "Creation Date");
182
        table.addColumn(promisedDeliveryDateColumn, "Promised Delivery");
183
        table.addColumn(expectedDeliveryDateColumn, "Expected Delivery");
184
        table.addColumn(statusMessageColumn, "Current Status");
167 ashish 185
 
4124 chandransh 186
        //Set the widths
187
        table.setWidth("100%");
4125 chandransh 188
        table.setColumnWidth(batchColumn, 50.0, Unit.PX);
4124 chandransh 189
        table.setColumnWidth(serialNoColumn, 50.0, Unit.PX);
190
        table.setColumnWidth(paymentModeColumn, 60.0, Unit.PX);
4125 chandransh 191
        table.setColumnWidth(idColumn, 70.0, Unit.PX);
4124 chandransh 192
        table.setColumnWidth(productDescriptionColumn, 250.0, Unit.PX);
4125 chandransh 193
        table.setColumnWidth(creationDateColumn, 140.0, Unit.PX);
194
        table.setColumnWidth(promisedDeliveryDateColumn, 140.0, Unit.PX);
195
        table.setColumnWidth(expectedDeliveryDateColumn, 140.0, Unit.PX);
4124 chandransh 196
        table.setColumnWidth(statusMessageColumn, 200.0, Unit.PX);
197
 
198
        // Connect the table to the data provider.
199
        asyncDataProvider.addDataDisplay(table);
167 ashish 200
 
4124 chandransh 201
        //Add paging support
202
        pager.setDisplay(table);
203
 
204
        // Initialize the data
205
        int lastIndex = pager.getPageSize();
206
        if(lastIndex > orders.size()){
207
        	lastIndex = orders.size();
208
        }
209
		asyncDataProvider.updateRowCount(orders.size(), true);
210
		asyncDataProvider.updateRowData(0, orders.subList(0, lastIndex));
211
 
212
        // Add a selection model to handle item selection.
213
        final SingleSelectionModel<Order> selectionModel = new SingleSelectionModel<Order>();
214
        table.setSelectionModel(selectionModel);
215
        selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
216
 
217
            @Override
218
            public void onSelectionChange(SelectionChangeEvent event) {
219
            	Order selectedOrder = selectionModel.getSelectedObject();
220
            	eventbus.fireEvent(new LoadOrderDetailsEvent(selectedOrder));
4004 chandransh 221
            }
4124 chandransh 222
        });
223
 
224
	}
167 ashish 225
 
306 ashish 226
	private String getDisplayableDate(Date date){
227
		String dateString = date.toString();
228
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
229
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
230
		return dateString;		
231
	}
167 ashish 232
}