using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.ExtendedControls;
using CMS.GlobalHelper;
using CMS.UIControls;
using CMS.WebAnalytics;
public partial class CMSModules_WebAnalytics_Controls_SelectGraphType : CMSAdminControl, IPostBackEventHandler
{
#region "Variables"
///
/// Thrown when graph type changed.
///
public event EventHandler OnGraphTypeChanged;
private string mDefaultClassName = "GraphTypeButton";
private bool mUseImages = true;
#endregion
#region "Properties"
///
/// Selected graph type.
///
public HitsIntervalEnum SelectedValue
{
get
{
return HitsIntervalEnumFunctions.StringToHitsConversion(ValidationHelper.GetString(ViewState["GraphTypePeriod"], "Day"));
}
set
{
ViewState["GraphTypePeriod"] = value;
}
}
///
/// If true, add images to panels.
///
public bool UseImages
{
get
{
return mUseImages;
}
set
{
mUseImages = value;
}
}
///
/// Default class name - to this class is automatically added sufix "Text" or "Image".
///
public string DefaultClassName
{
get
{
return mDefaultClassName;
}
set
{
mDefaultClassName = value;
}
}
#endregion
#region "Methods"
protected void Page_Load(object sender, EventArgs e)
{
if (UseImages)
{
// Set image for period selector
imgYear.ImageUrl = UIHelper.GetImageUrl(Page, "CMSModules/CMS_WebAnalytics/year.png");
imgMonth.ImageUrl = UIHelper.GetImageUrl(Page, "CMSModules/CMS_WebAnalytics/month_31.png");
imgWeek.ImageUrl = UIHelper.GetImageUrl(Page, "CMSModules/CMS_WebAnalytics/week.png");
imgDay.ImageUrl = UIHelper.GetImageUrl(Page, "CMSModules/CMS_WebAnalytics/day.png");
imgHour.ImageUrl = UIHelper.GetImageUrl(Page, "CMSModules/CMS_WebAnalytics/hour.png");
// Set tooltip for period selector
imgYear.ToolTip = ResHelper.GetString("reports_year.header");
imgMonth.ToolTip = ResHelper.GetString("reports_month.header");
imgWeek.ToolTip = ResHelper.GetString("reports_week.header");
imgDay.ToolTip = ResHelper.GetString("reports_day.header");
imgHour.ToolTip = ResHelper.GetString("reports_hour.header");
// Set alternate text for period selector
imgYear.AlternateText = ResHelper.GetString("reports_year.header");
imgMonth.AlternateText = ResHelper.GetString("reports_month.header");
imgWeek.AlternateText = ResHelper.GetString("reports_week.header");
imgDay.AlternateText = ResHelper.GetString("reports_day.header");
imgHour.AlternateText = ResHelper.GetString("reports_hour.header");
DefaultClassName += "Image";
// Set visibility
imgYear.Visible = true;
imgMonth.Visible = true;
imgWeek.Visible = true;
imgDay.Visible = true;
imgHour.Visible = true;
}
else
{
DefaultClassName += "Text";
// Set visibility
lblYear.Visible = true;
lblMonth.Visible = true;
lblWeek.Visible = true;
lblDay.Visible = true;
lblHour.Visible = true;
}
// Register JavaScript
ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "GraphTypeChange_" + ClientID,
ScriptHelper.GetScript(@"function highlightSelectedGraphType_" + ClientID + @" (elem) {
document.getElementById('" + pnlHour.ClientID + "').className = '" + DefaultClassName + @"'
document.getElementById('" + pnlDay.ClientID + "').className = '" + DefaultClassName + @"'
document.getElementById('" + pnlWeek.ClientID + "').className = '" + DefaultClassName + @"'
document.getElementById('" + pnlMonth.ClientID + "').className = '" + DefaultClassName + @"'
document.getElementById('" + pnlYear.ClientID + "').className = 'GraphTypeButtonLast " + DefaultClassName + @"'
elem.className = elem.className+'Selected';
}
function graphTypeSelected_" + ClientID + "(elem) {highlightSelectedGraphType_" + ClientID + "(elem); " + ControlsHelper.GetPostBackEventReference(this, "#", false).Replace("'#'", "elem.id+''") + "}"));
// Add onClick event
pnlYear.Attributes.Add("onClick", "graphTypeSelected_" + ClientID + "(this)");
pnlMonth.Attributes.Add("onClick", "graphTypeSelected_" + ClientID + "(this)");
pnlWeek.Attributes.Add("onClick", "graphTypeSelected_" + ClientID + "(this)");
pnlHour.Attributes.Add("onClick", "graphTypeSelected_" + ClientID + "(this)");
pnlDay.Attributes.Add("onClick", "graphTypeSelected_" + ClientID + "(this)");
HighlightSelectedType();
}
///
/// Highlight selected panel and deselect all others.
///
public void HighlightSelectedType()
{
// Add CSS class
pnlYear.Attributes.Add("class", DefaultClassName + " GraphTypeButtonLast");
pnlMonth.Attributes.Add("class", DefaultClassName);
pnlWeek.Attributes.Add("class", DefaultClassName);
pnlDay.Attributes.Add("class", DefaultClassName);
pnlHour.Attributes.Add("class", DefaultClassName);
// Add CSS class for selected item
switch (SelectedValue)
{
case HitsIntervalEnum.Hour:
pnlHour.Attributes.Add("class", DefaultClassName + "Selected");
break;
case HitsIntervalEnum.Day:
pnlDay.Attributes.Add("class", DefaultClassName + "Selected");
break;
case HitsIntervalEnum.Week:
pnlWeek.Attributes.Add("class", DefaultClassName + "Selected");
break;
case HitsIntervalEnum.Month:
pnlMonth.Attributes.Add("class", DefaultClassName + "Selected");
break;
case HitsIntervalEnum.Year:
pnlYear.Attributes.Add("class", DefaultClassName + "Selected" + " GraphTypeButtonLast");
break;
}
}
///
/// Raises PostBack Event
///
/// Event argument
public void RaisePostBackEvent(string eventArgument)
{
// Select item according to event argument
if (eventArgument == pnlHour.ClientID)
{
SelectedValue = HitsIntervalEnum.Hour;
}
else if (eventArgument == pnlDay.ClientID)
{
SelectedValue = HitsIntervalEnum.Day;
}
else if (eventArgument == pnlWeek.ClientID)
{
SelectedValue = HitsIntervalEnum.Week;
}
else if (eventArgument == pnlMonth.ClientID)
{
SelectedValue = HitsIntervalEnum.Month;
}
else if (eventArgument == pnlYear.ClientID)
{
SelectedValue = HitsIntervalEnum.Year;
}
HighlightSelectedType();
// Raise change graph type event
if (OnGraphTypeChanged != null)
{
OnGraphTypeChanged(this, new EventArgs());
}
}
#endregion
}