using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using DayPilot.Web.Ui; using DayPilot.Web.Ui.Enums; public partial class Png : System.Web.UI.Page { //DayPilotScheduler DayPilotScheduler1 = new DayPilotScheduler(); DataSet1 ds1 = new DataSet1(); public string aircraftid; protected void Page_Load(object sender, EventArgs e) { DayPilotScheduler1.StartDate = Convert.ToDateTime(Request.QueryString["start"]); DayPilotScheduler1.ScrollX = Convert.ToInt32(Request.QueryString["scrollx"]); DayPilotScheduler1.ScrollY = Convert.ToInt32(Request.QueryString["scrolly"]); int numofdays = Convert.ToInt32(Request.QueryString["days"]); DayPilotScheduler1.Days = numofdays; string aircraftid = Request.QueryString["aircraftid"].ToString(); LoadResources(); SetExportProperties(); SetDataSourceAndBind(); ExportToPng(); } private void ExportToPng() { Response.Clear(); Response.ContentType = "image/png"; MemoryStream img = DayPilotScheduler1.Export(ImageFormat.Png); img.WriteTo(Response.OutputStream); Response.End(); } private void LoadResources() { DataSet1TableAdapters.v_SkillTableAdapter dsSkill = new DataSet1TableAdapters.v_SkillTableAdapter(); dsSkill.Fill(ds1.v_Skill); DayPilotScheduler1.Resources.Clear(); foreach (DataRow dr in ds1.v_Skill.Rows) { DayPilotScheduler1.Resources.Add((string)dr["Skill"], Convert.ToString(dr["Skill"])); } } private void SetDataSourceAndBind() { DayPilotScheduler1.DataSource = GetData(DayPilotScheduler1.StartDate, DayPilotScheduler1.EndDate); DayPilotScheduler1.DataStartField = "StartDate"; DayPilotScheduler1.DataEndField = "EndDate"; DayPilotScheduler1.DataIdField = "TaskId"; DayPilotScheduler1.DataTextField = "TaskDescription"; DayPilotScheduler1.DataResourceField = "Skill"; DayPilotScheduler1.DataBind(); } private DataTable GetData(DateTime start, DateTime end) { //SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM [event] WHERE NOT (([eventend] <= @start) OR ([eventstart] >= @end))", ConfigurationManager.ConnectionStrings["ProgramPlanningConnectionString"].ConnectionString); //da.SelectCommand.Parameters.AddWithValue("start", start); //da.SelectCommand.Parameters.AddWithValue("end", end); SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ProgramPlanningConnectionString"].ConnectionString); SqlCommand command = new SqlCommand("proc_Tasks4Chart", con); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@StartDate", SqlDbType.VarChar).Value = Request.QueryString["start"]; command.Parameters.Add("@AirCraftId", SqlDbType.Int).Value = Request.QueryString["aircraftid"].ToString(); //aircraftid; command.Parameters.Add("@StartingShift", SqlDbType.Int).Value = "1"; SqlDataAdapter da = new SqlDataAdapter(command); DataTable dt = new DataTable(); da.Fill(dt); return dt; } private void SetExportProperties() { DayPilotScheduler1.Width = Unit.Percentage(100); // match the theme DayPilotScheduler1.HourNameBackColor = ColorTranslator.FromHtml("#eee"); DayPilotScheduler1.BackColor = Color.White; DayPilotScheduler1.NonBusinessBackColor = Color.White; DayPilotScheduler1.BorderColor = ColorTranslator.FromHtml("#999"); DayPilotScheduler1.HeaderFontColor = ColorTranslator.FromHtml("#666"); DayPilotScheduler1.CellBorderColor = ColorTranslator.FromHtml("#eee"); DayPilotScheduler1.EventFontColor = Color.White;// ColorTranslator.FromHtml("#666"); DayPilotScheduler1.EventFontSize = "10pt"; DayPilotScheduler1.EventBorderColor = ColorTranslator.FromHtml("#999"); DayPilotScheduler1.EventBackColor = ColorTranslator.FromHtml("#3A6EB7"); //CUSTOM SETTINGS //DayPilotScheduler1.Height = Unit.Pixel(20000); DayPilotScheduler1.Width = Unit.Percentage(100); DayPilotScheduler1.Scale = TimeScale.Day; DayPilotScheduler1.CellGroupBy = GroupByEnum.Day; DayPilotScheduler1.CellWidth = 300;// Convert.ToInt32(300); DayPilotScheduler1.HeaderHeight = 30; // Convert.ToInt32(30); DayPilotScheduler1.EventHeight = 80;// Convert.ToInt32(80); DayPilotScheduler1.SnapToGrid = false; DayPilotScheduler1.CellDuration = 10000; // Convert.ToInt32(10000); DayPilotScheduler1.TimeHeaders.Clear(); DayPilotScheduler1.TimeHeaders.Add(new TimeHeader(GroupByEnum.Month, "MMMM yyyy")); DayPilotScheduler1.TimeHeaders.Add(new TimeHeader(GroupByEnum.Day)); DayPilotScheduler1.DurationBarVisible = false; DayPilotScheduler1.UseEventBoxes = UseBoxesEnum.Never; DayPilotScheduler1.DynamicEventRendering = EventRendering.Progressive; DayPilotScheduler1.DynamicEventRenderingCacheSize = 4000; DayPilotScheduler1.DynamicEventRenderingCacheSweeping = false; DayPilotScheduler1.DynamicEventRenderingMargin = 50; DayPilotScheduler1.DynamicLoading = false; //old settings //DayPilotScheduler1.HourNameBackColor = ColorTranslator.FromHtml("#eee"); //DayPilotScheduler1.BackColor = Color.White; //DayPilotScheduler1.NonBusinessBackColor = Color.White; //DayPilotScheduler1.BorderColor = ColorTranslator.FromHtml("#999"); //DayPilotScheduler1.HeaderFontColor = ColorTranslator.FromHtml("#666"); //DayPilotScheduler1.CellBorderColor = ColorTranslator.FromHtml("#eee"); //DayPilotScheduler1.EventFontColor = ColorTranslator.FromHtml("#666"); //DayPilotScheduler1.EventCorners = CornerShape.Rounded; //DayPilotScheduler1.EventFontSize = "10pt"; //DayPilotScheduler1.EventBorderColor = ColorTranslator.FromHtml("#999"); //DayPilotScheduler1.EventBackColor = ColorTranslator.FromHtml("#58FA82"); //DayPilotScheduler1.HourBorderColor = ColorTranslator.FromHtml("#eee"); } protected void DayPilotScheduler1_BeforeEventRender(object sender, DayPilot.Web.Ui.Events.Scheduler.BeforeEventRenderEventArgs e) { int shiftsreq = (int)((byte)e.DataItem["ShiftsRequired"]); e.Html = WrappableString(e.Text, shiftsreq); } private static string WrappableString(string inputString, int shiftsreq) { int charlimit = shiftsreq * 16; if (string.IsNullOrEmpty(inputString)) return String.Empty; var sb = new StringBuilder(); //foreach (var c in inputString.Trim()) int numofchars = 0; int firstword = 0; foreach (var c in inputString.Split(new char[0])) { numofchars += Convert.ToInt32(c.Length.ToString()) + 1; if (numofchars < charlimit) { if (firstword == 0) { sb.Append(c); } else { sb.Append(" "); sb.Append(c); } } else { sb.Append("\n"); sb.Append(c); numofchars = Convert.ToInt32(c.Length.ToString()) + 1; // +1 for the extra space } firstword++; } return sb.ToString(); } }