package com.sabre.apd.mi.smartgwt.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.i18n.client.Messages;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Image;
import com.isomorphic.datasource.DSRequest;
import com.isomorphic.datasource.DSResponse;
import com.sabre.apd.mi.smartgwt.client.layout.Banner;
import com.sabre.apd.mi.smartgwt.client.layout.NavigationToolBar;
import com.sabre.apd.mi.smartgwt.client.layout.ReportPane;
import com.sabre.apd.mi.smartgwt.client.layout.SearchCriteriaPane;
import com.sabre.apd.mi.smartgwt.server.cache.CacheManager;
import com.smartgwt.client.core.KeyIdentifier;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSCallback;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.ImageStyle;
import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.util.KeyCallback;
import com.smartgwt.client.util.Page;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.*;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.FormItemIfFunction;
import com.smartgwt.client.widgets.form.fields.*;
import com.smartgwt.client.widgets.form.fields.events.*;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.TabSet;
import org.apache.poi.xwpf.usermodel.VerticalAlign;
import org.omg.CORBA.PUBLIC_MEMBER;
import javax.print.DocFlavor;
import javax.validation.constraints.Null;
import java.awt.*;
import java.util.*;
import java.util.List;
/**
* Entry point classes define onModuleLoad()
.
*/
public class MarketIntelligence implements EntryPoint {
private final Messages messages = GWT.create(Messages.class);
/**
* This is the entry point method.
*/
public void onModuleLoad() {
KeyIdentifier debugKey = new KeyIdentifier();
debugKey.setCtrlKey(true);
debugKey.setKeyName("D");
Page.registerKey(debugKey, new KeyCallback() {
public void execute(String keyName) {
SC.showConsole();
}
});
final DynamicForm form = new DynamicForm();
form.setWidth(500);
form.setNumCols(6);
final SelectItem DateRangeItem = new SelectItem();
DateRangeItem.setName("DateRange");
DateRangeItem.setTitle("DateRange");
DateRangeItem.setValueMap("Monthly", "Quartely", "Yearly");
DateRangeItem.setDefaultToFirstOption(true);
final SelectItem fromYear = new SelectItem();
fromYear.setName("fromYear");
fromYear.setPickListWidth(210);
fromYear.setTitle("fromYear");
final SelectItem fromMonth = new SelectItem() ;
fromMonth.setName("fromMonth");
fromMonth.setTitle("fromMonth");
String selectedDateRangeType =(String) DateRangeItem.getValue() ;
if(selectedDateRangeType == null)
selectedDateRangeType = "Monthly";
FillDateRange(fromYear,fromMonth,selectedDateRangeType,false) ;
DateRangeItem.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
String selectedDateRangeType = (String) event.getValue();
FillDateRange(fromYear,fromMonth,selectedDateRangeType,false) ;
}
});
fromYear.addChangeHandler(new ChangeHandler() {
//@Override
public void onChange(ChangeEvent event) {
String selectedDateRangeType =(String) DateRangeItem.getValue() ;
FillDateRange(fromYear,fromMonth,selectedDateRangeType,true) ;
}
});
form.setItems(DateRangeItem,fromYear,fromMonth);
form.draw();
}
public void FillDateRange(final SelectItem fromYear,final SelectItem fromMonth,final String selectedDateRangeType,final boolean blnPullFromSI)
{
DataSource dS = DataSource.get("dateRange");
Criteria criteria = new Criteria();
criteria.addCriteria("PRODUCT_ID","SA");
criteria.addCriteria("CLIENT_ID", 99);
com.smartgwt.client.data.DSRequest dSR = new com.smartgwt.client.data.DSRequest();
dSR.setOperationId("yearQuarterMonthFetch");
dS.fetchData(criteria, new DSCallback() {
@Override
public void execute(com.smartgwt.client.data.DSResponse dsResponse, Object o, com.smartgwt.client.data.DSRequest dsRequest) {
Record[] recordDR = dsResponse.getData();
String selectedYear = null;
if(blnPullFromSI)
selectedYear= fromYear.getValue().toString();
else
selectedYear = fillYears(recordDR,"",fromYear);
getMonths(recordDR,selectedDateRangeType,fromMonth,selectedYear);
}
}, dSR);
}
public String fillYears(Record[] recordDR,String selectedDateRangeType ,SelectItem selectItem)
{
LinkedHashMap yearList = new LinkedHashMap();
for (Record i : recordDR)
{
yearList.put(i.getAttributeAsString("YEAR_NUM"),i.getAttributeAsString("YEAR_NUM"));
}
selectItem.setValueMap(yearList);
if(recordDR.length>0)
selectItem.setValue( recordDR[0].getAttributeAsString("YEAR_NUM"));
return recordDR[0].getAttributeAsString("YEAR_NUM");
}
public void getMonths(Record[] recordDR,String selectedDateRangeType ,SelectItem selectItem,String selectedYear)
{
selectItem.clearValue();
LinkedHashMap monthList = new LinkedHashMap();
int cnt = 0; boolean flag= true;
String StrColumn = null;
if(selectedDateRangeType.equalsIgnoreCase("Monthly"))
StrColumn ="MONTH_SHORT_NAME";
if(selectedDateRangeType.equalsIgnoreCase("Quartely"))
StrColumn ="QU_QUARTER_SHORT_NAME";//"QU_QUARTER_SHORT_NAME";
if(selectedDateRangeType.equalsIgnoreCase("Yearly"))
StrColumn="QU_QUARTER_SHORT_NAME";
String strTemp = null;
for (Record i : recordDR)
{
if(flag)
cnt++;
String b = i.getAttributeAsString("YEAR_NUM");
if(b.equalsIgnoreCase(selectedYear))
{
monthList.put(i.getAttribute(StrColumn),i.getAttributeAsString(StrColumn));
flag= false;
}
}
selectItem.setValueMap( monthList);
if(recordDR.length>0)
selectItem.setValue( recordDR[cnt-1].getAttributeAsString(StrColumn));
}
public void GetDateRange( final SelectItem fromYear )
{
DataSource dS = DataSource.get("dateRange");
Criteria criteria = new Criteria();
criteria.addCriteria("PRODUCT_ID","SA");
criteria.addCriteria("CLIENT_ID", 99);
com.smartgwt.client.data.DSRequest dSR = new com.smartgwt.client.data.DSRequest();
dSR.setOperationId("yearQuarterMonthFetch");
dS.fetchData(criteria, new DSCallback() {
@Override
public void execute(com.smartgwt.client.data.DSResponse dsResponse, Object o, com.smartgwt.client.data.DSRequest dsRequest) {
Record[] recordDR = dsResponse.getData();
fillYears(recordDR,"",fromYear);
}
}, dSR);
}
}