Subversion Repositories SmartDukaan

Rev

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