﻿@using System.Web.UI.WebControls
@using RevZone.Core.AppDomain.Processes
@using RevZone.Services.Common
@using RevZone.Core.Common
@using RevZone.Web.MVC.ViewModels.Processes
@using System.Web.Script.Serialization
@model ProcessesHistorViewModel

@(Html.DevExpress().GridView<ProcessHistory>(
            settings =>
            {
                settings.Name = "ProcessesHistoryGrid";
                settings.CallbackRouteValues = new
                {
                    Controller = "Processes",
                    Action = "GetHistoryGridCallback"
                };
                settings.SetDefaultSettings();

                settings.ClientSideEvents.ContextMenu = "RzHistory.ContextMenu.Display";
                settings.ClientSideEvents.BeginCallback = "RzHistory.Process.Grid.BeginCallback";
                settings.ClientSideEvents.EndCallback = "RzHistory.Process.Grid.EndCallback";
                settings.ClientSideEvents.RowClick = "RzHistory.Process.Grid.RowClick";
                settings.ClientSideEvents.Init = "RzHistory.Process.Grid.Init";
                settings.ClientSideEvents.CallbackError = "function(s,e){ Main.CallbackError(s,e)}";
                settings.SettingsDataSecurity.AllowReadUnlistedFieldsFromClientApi = DefaultBoolean.True;
                settings.Settings.GridLines = GridLines.Both;

                settings.KeyFieldName = "IdRecord";

                settings.SettingsExport.Styles.Header.HorizontalAlign = HorizontalAlign.Left;
                settings.CommandColumn.Visible = false;
                settings.SettingsPager.EnableAdaptivity = true;
                settings.SettingsPager.LastPageButton.Visible = false;
                settings.SettingsPager.FirstPageButton.Visible = false;
                settings.SettingsPager.PageSizeItemSettings.Visible = false;
                settings.SettingsPager.PageSize = 100;


                //settings.SettingsPager.EnableAdaptivity = true;
                //settings.SettingsBehavior.AllowSelectByRowClick = false;
                //settings.SettingsBehavior.AllowFocusedRow = true;

                settings.Settings.GridLines = GridLines.Horizontal;
                settings.SettingsSearchPanel.Visible = false;
                settings.Settings.VerticalScrollBarMode = ScrollBarMode.Visible;
                //  settings.Settings.VerticalScrollableHeight = 50;

                //Settings Resizing
                //settings.SettingsResizing.Visualization = ResizingMode.Live;
                //   settings.SettingsResizing.ColumnResizeMode = ColumnResizeMode.NextColumn;

                settings.Toolbars.Add(t =>
                {
                    t.ItemAlign = GridToolbarItemAlign.Justify;
                    t.Items.Add(i =>
                    {
                        i.SetTemplateContent(c =>
                        {
                            ViewContext.Writer.Write("<div class='column-toolbar' style= 'padding-top:5px';>");
                            Html.DevExpress().Button(
                                   y =>
                                   {
                                       y.Name = "ProcessHistoryOpenRecord";
                                       y.EnableTheming = false;
                                       y.Text = SystemConfig.IsManage() ? T("OpenRecord").ToString() : T("Properties").ToString();
                                       y.Images.Image.SpriteProperties.CssClass = SystemConfig.GetOpenIcon();
                                       y.Images.Image.SpriteProperties.DisabledCssClass = SystemConfig.GetOpenIconDisabled();
                                       y.ClientSideEvents.Click = "function(s,e){ RzHistory.Default.RowDblClick()}";
                                   }).GetHtml();
                            ViewContext.Writer.Write("</div>");
                            ViewContext.Writer.Write("<div class='column-toolbar' style= 'padding-top:5px;float: right;'>");
                            Html.DevExpress().Button(
                                   y =>
                                   {
                                       y.Name = "ProcessHistoryLegacy";
                                       y.EnableTheming = false;
                                       y.ClientVisible = !Model.isLegacy;
                                       y.ToolTip =string.Format("{0}\r\n{1}", T("Legacy").ToString(), T("TheHistoryOfThisProcessIsAvailableOnlyInTheOldFormat").ToString());
                                       y.Text = T("Legacy").ToString();
                                       y.Images.Image.SpriteProperties.CssClass = "solidworks question_16x16";
                                       y.Images.Image.SpriteProperties.DisabledCssClass = "solidworks _disabled_question_16x16 ";
                                   }).GetHtml();
                            ViewContext.Writer.Write("</div>");
                        });
                    });
                });

                settings.CustomJSProperties = (s, e) =>
                {
                    JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                    javaScriptSerializer.MaxJsonLength = Int32.MaxValue;
                    e.Properties["cpSelectedIndex"] = Model.selectedIndex;
                };

                settings.Columns.Add(column =>
                {
                    column.Name = "VersionIndex";
                    column.FieldName = "VersionIndex";
                    column.Visible = false;
                });
                settings.Columns.Add(column =>
                {
                    column.Name = "IdRecord";
                    column.FieldName = "IdRecord";
                    column.Visible = false;
                });
                settings.Columns.Add(
                    column =>
                    {


                        column.FieldName = "ImageIndex";
                        column.Caption = T("Step_").ToString();
                        column.Width = Unit.Pixel(60);
                        column.ColumnType = MVCxGridViewColumnType.Image;

                        column.SetDataItemTemplateContent(imageSettings =>
                        {
                            Html.DevExpress().Image(image =>
                            {//TODO here sprite image
                                image.Name = "image-"+Guid.NewGuid();
                                string step = DataBinder.Eval(imageSettings.DataItem, "ImageIndex").ToString();
                                image.ImageUrl = step.Equals("0")?ImagesName.Tick16 : ImagesName.Blueright16;
                            }).GetHtml();

                            ViewContext.Writer.Write("<span>  " + DataBinder.Eval(imageSettings.DataItem, "Step")+ "</span>");

                        });
                    });

                settings.Columns.Add(column =>
                {
                    column.Name = "LastModifiedBy";
                    column.FieldName = "LastModifiedBy";
                    column.Width = Unit.Pixel(150);
                    column.Caption = T("User").ToString();
                });
                settings.Columns.Add(column =>
                {
                    column.Name = "DateModified";
                    column.FieldName = "DateModified";
                    column.Width = Unit.Pixel(180);
                    column.Caption = Model.isLegacy ? T("Date_").ToString() : T("DateCompleted").ToString();
                });

                if (Model.isLegacy)
                {
                    settings.Columns.Add(column =>
                    {
                        column.Name = "EventType";
                        column.FieldName = "EventType";
                        column.Width = Unit.Pixel(120);
                        column.Caption = T("Event").ToString();
                    });
                    settings.Columns.Add(column =>
                    {
                        column.Name = "StageName";
                        column.FieldName = "StageName";
                        column.Width = Unit.Pixel(120);
                        column.Caption = T("Stage").ToString();
                    });
                    settings.Columns.Add(column =>
                    {
                        column.Name = "SentTo";
                        column.FieldName = "SentTo";
                        column.Width = Unit.Pixel(150);
                        column.Caption = T("SentTo").ToString();
                    });

                    settings.Columns.Add(column =>
                    {
                        column.Name = "Comments";
                        column.FieldName = "Comments";
                        column.Width = Unit.Pixel(150);
                        column.Caption = T("Comments").ToString();
                    });
                }
                else
                {
                    settings.Columns.Add(column =>
                    {
                        column.Name = "ChoosenPath";
                        column.FieldName = "ChoosenPath";
                        column.Width = Unit.Pixel(300);
                        column.Caption = T("Information").ToString();
                    });
                }


            }).Bind(Model.processHistoriesData).GetHtml())
