Mini Kabibi Habibi
using System;
using System.Linq;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxSplitter;
using DevExpress.XtraScheduler;
using DevExpress.XtraScheduler.iCalendar;
using DevExpress.Web.ASPxNavBar;
using System.Collections;
public partial class Calendar : System.Web.UI.Page {
protected void Page_PreInit(object sender, EventArgs e) {
Utils.ApplyTheme(this);
}
protected void Page_Init(object sender, EventArgs e) {
new SchedulerRowInsertionHelper().ProvideRowInsertion(Scheduler, AppointmentDataSource);
ResourceNavBar.DataBind();
}
protected void Page_Load(object sender, EventArgs e) {
PrepareMasterSplitter();
if(!SchedulerData.GetAppointments().Any())
ImportCalendarData();
}
protected void Scheduler_FilterAppointment(object sender, PersistentObjectCancelEventArgs e) {
if(_selectedResourceNameCache == null)
_selectedResourceNameCache = FindSelectedResourceNames();
int resourceId;
var appointment = (Appointment)e.Object;
if(int.TryParse(appointment.ResourceId.ToString(), out resourceId)) {
var resource = SchedulerData.GetResources().First(r => r.ID == resourceId);
e.Cancel = !_selectedResourceNameCache.Contains(resource.Name);
}
}
protected bool GetResourceCheckedState(NavBarItemTemplateContainer container) {
return container.Item.Group.VisibleIndex == 0 && container.Item.VisibleIndex == 0;
}
void PrepareMasterSplitter() {
var rootHolder = Page.Master.Master.FindControl("RootHolder");
var splitter = ((ASPxSplitter)rootHolder.FindControl("LayoutSplitter"));
splitter.GetPaneByName("LeftPane").Size = GetNavigationAreaSize();
var pane = splitter.GetPaneByName("MainPane");
pane.PaneStyle.BorderLeft.BorderWidth = 1;
pane.ScrollBars = ScrollBars.Auto;
}
int GetNavigationAreaSize() {
var theme = Utils.CurrentTheme;
if(theme == "Metropolis" || theme == "MetropolisBlue")
return 345;
return 300;
}
void ImportCalendarData() {
Scheduler.DataBind();
new iCalendarImporter(Scheduler.Storage).Import(Server.MapPath("~/App_Data/CalendarData.ics"));
}
ISet<string> _selectedResourceNameCache;
ISet<string> FindSelectedResourceNames() {
var result = new HashSet<string>();
for(int i = 0; i < ResourceNavBar.Items.Count; i++) {
var checkbox = ResourceNavBar.Items[i].FindControl("CheckBox") as ASPxCheckBox;
if(checkbox != null && checkbox.Checked)
result.Add(checkbox.Text);
}
return result;
}
}