..
This commit is contained in:
@@ -15,12 +15,34 @@ namespace FPJ0000
|
||||
int projectindex = 0;
|
||||
EEEntities db;
|
||||
List<EETGW_ProjectsSchedule> list;
|
||||
Boolean bini = false;
|
||||
public fProjectSchedule(int project_)
|
||||
{
|
||||
InitializeComponent();
|
||||
projectindex = project_;
|
||||
db = new EEEntities();//this.dsPRJ.ProjectsSchedule.TableNewRow += ProjectsSchedule_TableNewRow;
|
||||
fn_fpcolsize = util.MakeFilePath(util.CurrentPath, "formSetting", "fp_" + this.Name + ".ini");
|
||||
this.FormClosed += FProjectSchedule_FormClosed;
|
||||
this.FormClosing += FProjectSchedule_FormClosing;
|
||||
}
|
||||
|
||||
private void FProjectSchedule_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (dsPRJ.HasChanges())
|
||||
{
|
||||
var dlg = FCOMMON.Util.MsgQ("변경된 자료가 있습니다. 지금 화면을 닫으면 해당 자료는 손실됩니다\n화면을 닫을까요?");
|
||||
if (dlg != DialogResult.Yes)
|
||||
{
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void FProjectSchedule_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
|
||||
this.dsPRJ.EETGW_ProjectsSchedule.RowChanged += EETGW_ProjectsSchedule_RowChanged;
|
||||
}
|
||||
|
||||
void ProjectsSchedule_TableNewRow(object sender, DataTableNewRowEventArgs e)
|
||||
@@ -33,7 +55,32 @@ namespace FPJ0000
|
||||
private void fProjectSchedule_Load(object sender, EventArgs e)
|
||||
{
|
||||
RefreshData();
|
||||
|
||||
RefreshGraph();
|
||||
this.dsPRJ.EETGW_ProjectsSchedule.RowChanged += EETGW_ProjectsSchedule_RowChanged;
|
||||
bini = true;
|
||||
|
||||
//시작할떄 cww 를 가져오낟.
|
||||
var sql = "select dbo.getWorkWeek('" + DateTime.Now.ToShortDateString() + "')";
|
||||
var cmd = new System.Data.SqlClient.SqlCommand(sql, this.ta.Connection);
|
||||
cmd.Connection.Open();
|
||||
var wccstr = cmd.ExecuteScalar();
|
||||
CWW = int.Parse(wccstr.ToString());
|
||||
cmd.Connection.Dispose();
|
||||
cmd.Dispose();
|
||||
|
||||
}
|
||||
|
||||
int CWW = 0;
|
||||
|
||||
private void EETGW_ProjectsSchedule_RowChanged(object sender, DataRowChangeEventArgs e)
|
||||
{
|
||||
if (bini == false) return;
|
||||
RefreshGraph();
|
||||
}
|
||||
|
||||
void RefreshGraph()
|
||||
{
|
||||
panel1.Invalidate();
|
||||
}
|
||||
void RefreshData()
|
||||
{
|
||||
@@ -57,11 +104,12 @@ namespace FPJ0000
|
||||
this.bs.EndEdit();
|
||||
this.ta.Update(this.dsPRJ.EETGW_ProjectsSchedule);
|
||||
dsPRJ.EETGW_ProjectsSchedule.AcceptChanges();
|
||||
RefreshGraph();
|
||||
}
|
||||
|
||||
private void fillToolStripButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -111,6 +159,11 @@ namespace FPJ0000
|
||||
newdr.seq = this.bs.Count + 1;
|
||||
newdr.gcode = FCOMMON.info.Login.gcode;
|
||||
dsPRJ.EETGW_ProjectsSchedule.AddEETGW_ProjectsScheduleRow(newdr);
|
||||
|
||||
this.bs.EndEdit();
|
||||
this.fpSpread1.Focus();
|
||||
if (this.bs.Count > 0)
|
||||
this.bs.Position = this.bs.Count - 1;
|
||||
}
|
||||
|
||||
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
|
||||
@@ -129,7 +182,7 @@ namespace FPJ0000
|
||||
var drv = this.bs.Current as DataRowView;
|
||||
if (drv == null) return;
|
||||
var dr = drv.Row as dsPRJ.EETGW_ProjectsScheduleRow;
|
||||
if(dr.idx == -1)
|
||||
if (dr.idx == -1)
|
||||
{
|
||||
this.fpSpread2.Enabled = false;
|
||||
bnTodo.Enabled = false;
|
||||
@@ -156,6 +209,12 @@ namespace FPJ0000
|
||||
newdr.pidx = this.projectindex;
|
||||
newdr.pseq = dr.idx;
|
||||
this.dsPRJ.EETGW_ProjectToDo.AddEETGW_ProjectToDoRow(newdr);
|
||||
|
||||
bsTodo.EndEdit();
|
||||
this.fpSpread2.Focus();
|
||||
|
||||
if (this.bsTodo.Count > 0)
|
||||
this.bsTodo.Position = this.bsTodo.Count - 1;
|
||||
}
|
||||
|
||||
private void toolStripButton9_Click(object sender, EventArgs e)
|
||||
@@ -171,14 +230,239 @@ namespace FPJ0000
|
||||
|
||||
private void toolStripButton8_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Validate();
|
||||
this.bsTodo.EndEdit();
|
||||
var cnt = taTodo.Update(this.dsPRJ.EETGW_ProjectToDo);
|
||||
FCOMMON.Util.MsgI($"{cnt}건의 자료가 업데이트 되었습니다");
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.tam.UpdateAll(this.dsPRJ);
|
||||
this.Close();
|
||||
this.Validate();
|
||||
this.bs.EndEdit();
|
||||
this.bsTodo.EndEdit();
|
||||
if (this.dsPRJ.HasChanges() == false)
|
||||
{
|
||||
FCOMMON.Util.MsgE("변경된 내용이 없습니다");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
var cnt = this.tam.UpdateAll(this.dsPRJ);
|
||||
if (cnt == 0)
|
||||
{
|
||||
FCOMMON.Util.MsgE("저장된 자료가 없습니다");
|
||||
}
|
||||
else
|
||||
{
|
||||
FCOMMON.Util.MsgI($"{cnt}건의 자료가 저장 되었습니다");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void panel1_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
var list = this.dsPRJ.EETGW_ProjectsSchedule.Where(t => t.RowState != DataRowState.Deleted).Where(t => t.RowState != DataRowState.Detached).OrderBy(t => t.seq).ToList();
|
||||
e.Graphics.Clear(Color.DimGray);
|
||||
//e.Graphics.DrawString(list.Count.ToString(), this.Font, Brushes.White, 10, 10);
|
||||
var colsize = new int[] { 50 };
|
||||
var cols = new List<string>();
|
||||
cols.Add("Item");
|
||||
|
||||
if (list == null || list.Count < 1) return;
|
||||
|
||||
var vsw = list.Max(t => t.sw);
|
||||
var vew = list.Max(t => t.ew);
|
||||
var vswa = list.Max(t => t.swa);
|
||||
var vewa = list.Max(t => t.ewa);
|
||||
|
||||
var maxw = Math.Max(vsw, vew);
|
||||
maxw = Math.Max(maxw, vswa);
|
||||
maxw = Math.Max(maxw, vewa);
|
||||
if (maxw == 0) return; //값이 없다.
|
||||
|
||||
|
||||
var mvsw = list.Min(t => t.sw);
|
||||
var mvew = list.Min(t => t.ew);
|
||||
var mvswa = list.Min(t => t.swa);
|
||||
var mvewa = list.Min(t => t.ewa);
|
||||
|
||||
var minw = 999;
|
||||
if (mvsw > 0) minw = Math.Min(minw, mvsw);
|
||||
if (mvew > 0) minw = Math.Min(minw, mvew);
|
||||
if (mvswa > 0) minw = Math.Min(minw, mvswa);
|
||||
if (mvewa > 0) minw = Math.Min(minw, mvewa);
|
||||
if (minw == 999) return; //값이 없다.
|
||||
|
||||
|
||||
var wwcnt = maxw - minw + 1;
|
||||
for (int i = 1; i <= wwcnt; i++)
|
||||
{
|
||||
cols.Add("ww" + (minw + i - 1).ToString());//
|
||||
}
|
||||
|
||||
|
||||
var rect_title = new Rectangle(3, 3, panel1.Width - 6, 30);
|
||||
var rect_body = new Rectangle(rect_title.Left, rect_title.Bottom + 1, rect_title.Width, panel1.Height - rect_title.Height - 5);
|
||||
var lineheight = (rect_body.Height - list.Count * 2) / list.Count;
|
||||
var linewidth = rect_body.Width;// - 6;
|
||||
|
||||
//제목줄표시
|
||||
var ci = 0;
|
||||
var titlewi = 200f;
|
||||
var twidth = (rect_title.Width - titlewi) / (cols.Count - 1);
|
||||
foreach (var col in cols)
|
||||
{
|
||||
var titleWidth = ci == 0 ? titlewi : twidth;
|
||||
var padX = ci > 0 ? ((ci - 1) * twidth + titlewi) : 0;
|
||||
var rect = new RectangleF(rect_title.Left + padX, rect_title.Top, titleWidth, rect_title.Height);
|
||||
e.Graphics.DrawRectangle(Pens.Black, rect.Left, rect.Top, rect.Width, rect.Height);
|
||||
e.Graphics.DrawString(col, this.Font, Brushes.Gold, rect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
||||
ci += 1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
var dr = list[i];
|
||||
var rect = new RectangleF(rect_body.Left, rect_body.Top + i * lineheight + ((i + 1) * 2), linewidth, lineheight);
|
||||
|
||||
if (i % 2 == 0)
|
||||
e.Graphics.FillRectangle(Brushes.Gray, rect.Left, rect.Top, rect.Width, rect.Height);
|
||||
else
|
||||
e.Graphics.FillRectangle(Brushes.DimGray, rect.Left, rect.Top, rect.Width, rect.Height);
|
||||
|
||||
Color PBg = Color.SkyBlue;
|
||||
Color ABg = Color.Gold;
|
||||
var sw = dr.sw;
|
||||
var ew = dr.ew;
|
||||
var swa = dr.swa;
|
||||
var ewa = dr.ewa;
|
||||
if (sw == 0) { sw = minw; PBg = Color.Transparent; }
|
||||
if (ew == 0) ew = sw;
|
||||
|
||||
var isEmpty = swa == 0;
|
||||
if (swa == 0) { swa = minw; ABg = Color.Transparent; };
|
||||
var isBusy = ewa == 0; //아직 완료되지 않았다
|
||||
if (ewa == 0) ewa = swa;
|
||||
if (isBusy && ABg != Color.Transparent) ABg = Color.Pink;
|
||||
|
||||
|
||||
ci = 0;
|
||||
foreach (var col in cols)
|
||||
{
|
||||
var ww = minw + (ci - 1);
|
||||
var titleWidth = ci == 0 ? titlewi : twidth;
|
||||
var padX = ci > 0 ? ((ci - 1) * twidth + titlewi) : 0;
|
||||
|
||||
var rect2 = new RectangleF(rect.Left + padX, rect.Top, titleWidth, rect.Height);
|
||||
var rect2T = new RectangleF(rect.Left + padX, rect.Top, titleWidth, rect.Height / 2f);
|
||||
var rect2L = new RectangleF(rect2T.Left, rect2T.Bottom, rect2T.Width, rect2T.Height);
|
||||
|
||||
|
||||
var spacing = 3f;
|
||||
var rect2TP = new RectangleF(rect2T.Left + spacing, rect2T.Top + spacing, rect2T.Width - spacing * 2, rect2T.Height - spacing * 2);
|
||||
var rect2BP = new RectangleF(rect2L.Left + spacing, rect2L.Top + spacing, rect2L.Width - spacing * 2, rect2L.Height - spacing * 2);
|
||||
|
||||
var str = ci == 0 ? dr.title : ww.ToString();
|
||||
if (ci == 0)
|
||||
{
|
||||
//e.Graphics.DrawRectangle(Pens.Black, rect2.Left, rect2.Top, rect2.Width, rect2.Height);
|
||||
e.Graphics.DrawString(str + "\n" + dr.uid,
|
||||
this.Font,
|
||||
Brushes.Gold,
|
||||
rect2,
|
||||
new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center }
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
//plan
|
||||
if (ww >= sw && ww <= ew)
|
||||
e.Graphics.FillRectangle(new SolidBrush(PBg), rect2TP.Left, rect2TP.Top, rect2TP.Width, rect2TP.Height);
|
||||
|
||||
using (Pen p = new Pen(Color.FromArgb(50, 50, 50)))
|
||||
{
|
||||
e.Graphics.DrawRectangle(p, rect2TP.Left, rect2TP.Top, rect2TP.Width, rect2TP.Height);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//actual
|
||||
if (ww >= swa && ww <= ewa)
|
||||
e.Graphics.FillRectangle(new SolidBrush(ABg), rect2BP.Left, rect2BP.Top, rect2BP.Width, rect2BP.Height);
|
||||
else if (isEmpty == false && isBusy && ww >= swa && ww <= this.CWW )
|
||||
{
|
||||
e.Graphics.FillRectangle(new SolidBrush(Color.Pink), rect2BP.Left, rect2BP.Top, rect2BP.Width, rect2BP.Height);
|
||||
}
|
||||
|
||||
|
||||
e.Graphics.DrawRectangle(Pens.Black, rect2BP.Left, rect2BP.Top, rect2BP.Width, rect2BP.Height);
|
||||
|
||||
//title
|
||||
if (ci == 1)
|
||||
{
|
||||
using (Font f = new Font("맑은 고딕", 7, FontStyle.Bold))
|
||||
{
|
||||
var fsizeT = e.Graphics.MeasureString("PLAN", f);
|
||||
var fsizeB = e.Graphics.MeasureString("ACTUAL", f);
|
||||
e.Graphics.DrawString("PLAN", f, Brushes.White, rect2TP.Left - fsizeT.Width * 1.1f, rect2TP.Top + (rect2TP.Height - fsizeT.Height) / 2f);
|
||||
e.Graphics.DrawString("ACTUAL", f, Brushes.White, rect2BP.Left - fsizeB.Width * 1.1f, rect2BP.Top + (rect2BP.Height - fsizeB.Height) / 2f);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
ci += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void panel1_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
RefreshGraph();
|
||||
}
|
||||
|
||||
private void toolStripButton10_Click(object sender, EventArgs e)
|
||||
{
|
||||
//if (this.dsPRJ.EETGW_ProjectsSchedule.Rows.Count > 0)
|
||||
//{
|
||||
// var dlg = FCOMMON.Util.MsgQ("기존 목록을 삭제할까요?");
|
||||
// if (dlg == DialogResult.Yes)
|
||||
// {
|
||||
// for (int i = this.dsPRJ.EETGW_ProjectsSchedule.Count; i > 0; i--)
|
||||
// {
|
||||
// dsPRJ.EETGW_ProjectsSchedule.Rows[i - 1].Delete();
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
var db = new EEEntities();
|
||||
var list = db.Common.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.grp == "21")
|
||||
.OrderBy(t => t.code)
|
||||
.ToList();
|
||||
|
||||
|
||||
foreach (var item in list)
|
||||
{
|
||||
var newdr = this.dsPRJ.EETGW_ProjectsSchedule.NewEETGW_ProjectsScheduleRow();
|
||||
newdr.wuid = FCOMMON.info.Login.no;
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.seq += dsPRJ.EETGW_ProjectsSchedule.Rows.Count + 1;
|
||||
newdr.title = item.memo;
|
||||
newdr.project = this.projectindex;
|
||||
newdr.gcode = FCOMMON.info.Login.gcode;
|
||||
dsPRJ.EETGW_ProjectsSchedule.AddEETGW_ProjectsScheduleRow(newdr);
|
||||
}
|
||||
}
|
||||
|
||||
private void fProjectSchedule_SizeChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.panel1.Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user