/*******************************************************************************
* Copyright (c) 2012 Dmitry Tikhomirov.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* Dmitry Tikhomirov - initial API and implementation
******************************************************************************/
package org.opensheet.client.widges.department;
import org.opensheet.client.services.StatService;
import org.opensheet.client.services.StatServiceAsync;
import com.extjs.gxt.ui.client.data.BaseModel;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Label;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class AssignmentDetailPanel extends ContentPanel{
private TextField<String> name,owner,indexTextField;
private NumberField assignmentHourSumField,assignmentHourSumThisMonthField, timelineField,timelineOverTimeField,budgetField,overBudgetTimeField;
private NumberField intrarateField,extrarateField,intrarateCurrentMonthField,extrarateCurrentMonthField;
private Integer assignmentId,departmentId;
private StatServiceAsync statService = GWT.create(StatService.class);
private FormPanel fp;
public AssignmentDetailPanel(){
setFrame(true);
setWidth(724);
setHeight(600);
setLayout(new ColumnLayout());
add(detailPanel());
}
private FormPanel detailPanel(){
fp = new FormPanel();
fp.setWidth(724);
fp.setHeight(500);
fp.setHeaderVisible(false);
fp.setLayout(new ColumnLayout());
FormPanel cp = new FormPanel();
cp.setHeaderVisible(false);
cp.setHeight(500);
cp.setWidth(250);
LayoutContainer main = new LayoutContainer();
main.setLayout(new ColumnLayout());
LayoutContainer left = new LayoutContainer();
left.setStyleAttribute("paddingRight", "10px");
left.setWidth(150);
FormLayout layout = new FormLayout();
layout.setLabelAlign(LabelAlign.LEFT);
left.setLayout(layout);
LayoutContainer rightContainer = new LayoutContainer();
rightContainer.setWidth(400);
rightContainer.setLayout(new ColumnLayout());
LayoutContainer center = new LayoutContainer();
center.setStyleAttribute("paddingLeft", "10px");
layout = new FormLayout();
layout.setLabelAlign(LabelAlign.TOP);
center.setLayout(layout);
LayoutContainer right = new LayoutContainer();
right.setStyleAttribute("paddingLeft", "10px");
layout = new FormLayout();
layout.setLabelAlign(LabelAlign.TOP);
right.setLayout(layout);
name = new TextField<String>();
name.setName("Name");
name.setReadOnly(true);
name.setFieldLabel("Name");
cp.add(name,new FormData(180, 22));
owner = new TextField<String>();
owner.setName("Owner");
owner.setReadOnly(true);
owner.setFieldLabel("Owner");
cp.add(owner,new FormData(180, 22));
assignmentHourSumField = new NumberField();
assignmentHourSumField.setFieldLabel("Hours Sum");
assignmentHourSumField.setEditable(false);
right.add(assignmentHourSumField,new FormData(100, 22));
assignmentHourSumThisMonthField = new NumberField();
assignmentHourSumThisMonthField.setFieldLabel("Hours Sum this Month");
assignmentHourSumThisMonthField.setEditable(false);
right.add(assignmentHourSumThisMonthField,new FormData(100, 22));
timelineField = new NumberField();
timelineField.setFieldLabel("Timeline");
timelineField.setEditable(true);
center.add(timelineField,new FormData(100, 22));
timelineOverTimeField = new NumberField();
timelineOverTimeField.setFieldLabel("Over Time");
timelineOverTimeField.setEditable(false);
center.add(timelineOverTimeField,new FormData(100, 22));
intrarateField = new NumberField();
intrarateField.setFieldLabel("Sum of Internal rates");
intrarateField.setEditable(false);
center.add(intrarateField,new FormData(100, 22));
extrarateField = new NumberField();
extrarateField.setFieldLabel("Sum of External rates this month");
extrarateField.setEditable(false);
center.add(extrarateField,new FormData(100, 22));
intrarateCurrentMonthField = new NumberField();
intrarateCurrentMonthField.setFieldLabel("Sum of Internal rates, this month");
intrarateField.setEditable(false);
right.add(intrarateCurrentMonthField,new FormData(100, 22));
extrarateCurrentMonthField = new NumberField();
extrarateCurrentMonthField.setFieldLabel("Sum of External rates, this month");
extrarateCurrentMonthField.setEditable(false);
right.add(extrarateCurrentMonthField,new FormData(100, 22));
budgetField = new NumberField();
budgetField.setFieldLabel("Budget");
budgetField.setEditable(false);
center.add(budgetField,new FormData(100, 22));
overBudgetTimeField = new NumberField();
overBudgetTimeField.setFieldLabel("Over budget");
overBudgetTimeField.setEditable(false);
right.add(overBudgetTimeField,new FormData(100, 22));
// main.add(left, new ColumnData(.5));
main.add(center, new ColumnData(.5));
main.add(right, new ColumnData(3.5));
// main.add(rightContainer, new ColumnData(.5));
fp.add(cp);
fp.add(main);
return fp;
}
public void setData(Integer assignmentId,Integer departmentId){
fp.clear();
statService.getAssignmentDepartmentDetail(assignmentId, departmentId, new AsyncCallback<BaseModel>(){
@Override public void onFailure(Throwable caught) {
MessageBox.info("Error",caught.getMessage(),null);
}
@Override
public void onSuccess(BaseModel result) {
name.setValue(result.get("name").toString());
owner.setValue(result.get("owner").toString());
intrarateField.setValue(Integer.parseInt(result.get("intratesum").toString()));
extrarateField.setValue(Integer.parseInt(result.get("intratesumMonth").toString()));
intrarateCurrentMonthField.setValue(Integer.parseInt(result.get("extraratesum").toString()));
extrarateCurrentMonthField.setValue(Integer.parseInt(result.get("extratesumMonth").toString()));
Integer timeline = Integer.parseInt(result.get("timeline").toString());
Integer sum = Integer.parseInt(result.get("sum").toString());
Integer sumMonth = Integer.parseInt(result.get("sum_month").toString());
timelineField.setValue(timeline);
assignmentHourSumField.setValue(sum);
assignmentHourSumThisMonthField.setValue(sumMonth);
if(sum > timeline){
Integer overTime = sum - timeline;
timelineOverTimeField.setValue(overTime);
}
}
});
}
}