Beispiel #1
0
        /// <summary>
        /// Начальная обработка дерева XML-документа
        /// </summary>
        protected override void StartXmlDocProc()
        {
            genDT = DateTime.Now;

            if (tableView == null)
            {
                hourTable = null;
            }
            else
            {
                AppData.MainData.RefreshData(date, out hourTable);
            }

            if (eventOut <= 0)
            {
                eventTable = null;
            }
            else
            {
                AppData.MainData.RefreshEvents(date, out eventTable);
            }

            templItemRow  = null;
            templEventRow = null;
            item          = null;
            eventView     = null;
        }
Beispiel #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // отключение кэширования страницы
            ScadaUtils.DisablePageCache(Response);

            // получение данных пользователя
            UserData userData = UserData.GetUserData();

            // проверка входа в систему
            userData.CheckLoggedOn(Context, false);
            if (!userData.LoggedOn)
            {
                throw new Exception(WebPhrases.NotLoggedOn);
            }

            // перевод веб-страницы
            Localization.TranslatePage(this, "Scada.Web.WFrmEvTable");

            // определение индексов выбранного представления
            int viewSetIndex, viewIndex;

            if (!int.TryParse(Request["viewSet"], out viewSetIndex))
            {
                viewSetIndex = -1;
            }
            if (!int.TryParse(Request["view"], out viewIndex))
            {
                viewIndex = -1;
            }

            // получение представления и прав пользователя на него
            BaseView view;

            MainData.Right right;
            userData.GetView(null, viewSetIndex, viewIndex, out view, out right);

            // вывод сообщения о загрузке
            if (view == null && right.ViewRight)
            {
                lblLoading.Visible = true;
                tblEv.Visible      = false;
                hidEvStamp.Value   = "-1";
                return;
            }

            // определение фильтра событий
            bool showAllEvents = Request["filter"] == "all";

            // проверка загрузки представления и прав на просмотр информации
            if (view == null)
            {
                throw new Exception(WebPhrases.UnableLoadView);
            }
            else if (!right.ViewRight || showAllEvents && userData.Role == ServerComm.Roles.Custom)
            {
                throw new Exception(CommonPhrases.NoRights);
            }

            // определение параметров запроса
            int year, month, day;

            int.TryParse(Request["year"], out year);
            int.TryParse(Request["month"], out month);
            int.TryParse(Request["day"], out day);

            DateTime reqDate;

            try
            {
                reqDate = new DateTime(year, month, day);
            }
            catch
            {
                throw new Exception(WebPhrases.IncorrectDate);
            }

            // получение обновлённых данных событий
            EventTableLight eventTable;

            AppData.MainData.RefreshEvents(reqDate, out eventTable);
            hidEvStamp.Value = eventTable.FileModTime.Ticks.ToString();

            List <int> cnlList = showAllEvents ? null : view.CnlList;
            List <MainData.EventView> events = AppData.MainData.ConvertEvents(
                AppData.MainData.GetLastEvents(eventTable, cnlList, AppData.WebSettings.EventCnt));

            if (events.Count > 0)
            {
                for (int eventInd = events.Count - 1; eventInd >= 0; eventInd--)
                {
                    MainData.EventView eventView = events[eventInd];
                    TableRow           row       = new TableRow();
                    WFrmTableView.NewCell(row, eventView.Num, "c");
                    WFrmTableView.NewCell(row, eventView.Date, "c");
                    WFrmTableView.NewCell(row, eventView.Time, "c");
                    WFrmTableView.NewCell(row, eventView.Obj);
                    WFrmTableView.NewCell(row, eventView.KP);
                    WFrmTableView.NewCell(row, eventView.Cnl);
                    WFrmTableView.NewCell(row, eventView.Text);

                    // установка номера события для воспроизведения звука при загрузке страницы
                    if (eventView.Sound && string.IsNullOrEmpty(hidSndEvNum.Value))
                    {
                        hidSndEvNum.Value = eventView.Num;
                    }

                    // формирование ячейки квитирования
                    if (right.CtrlRight && !eventView.Check)
                    {
                        string chkCellText = "<a href=\"javascript:CheckEvent(" + viewSetIndex + ", " + viewIndex +
                                             ", " + year + ", " + month + ", " + day + ", " + eventView.Num +
                                             ")\" style=\"color: " + eventView.Color + "\">" + eventView.User + "</a>";
                        WFrmTableView.NewCell(row, chkCellText, "c");
                    }
                    else
                    {
                        WFrmTableView.NewCell(row, eventView.User, "c");
                    }

                    // установка свойств строки таблицы
                    WFrmTableView.SetCssClass(row, eventInd % 3 == 2, eventInd == 0);
                    string color = eventView.Color;
                    if (!(color == "" || color.ToLower() == "black"))
                    {
                        row.ForeColor = Color.FromName(color);
                    }
                    tblEv.Rows.Add(row);
                }
            }
            else
            {
                lblNoData.Visible = true;
                tblEv.Visible     = false;
            }
        }
Beispiel #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // получение данных пользователя
            UserData userData = UserData.GetUserData();

            // проверка входа в систему
            if (!userData.LoggedOn)
            {
                throw new Exception(WebPhrases.NotLoggedOn);
            }

            // очистка сообщения об ошибке
            lblMessage.Text    = "";
            lblMessage.Visible = false;

            // установка активного элемента формы и кнопки по умолчанию
            Form.DefaultFocus  = btnCheck.ClientID;
            Form.DefaultButton = btnCheck.UniqueID;

            if (IsPostBack)
            {
                Title = (string)ViewState["Title"];
            }
            else
            {
                // перевод веб-страницы
                Localization.TranslatePage(this, "Scada.Web.WFrmEvCheck");

                // определение параметров квитирования
                DateTime date;
                int      evNum;

                try
                {
                    date = new DateTime(int.Parse(Request["year"]), int.Parse(Request["month"]),
                                        int.Parse(Request["day"]));
                    ViewState.Add("Date", date);
                }
                catch
                {
                    throw new Exception(WebPhrases.IncorrectEvDate);
                }

                try
                {
                    evNum = int.Parse(Request["evNum"]);
                    ViewState.Add("EvNum", evNum);
                }
                catch
                {
                    throw new Exception(WebPhrases.IncorrectEvNum);
                }

                // вывод номера и даты события
                lblNum.Text  = evNum.ToString();
                lblDate.Text = date.ToString("d", Localization.Culture);

                // получение квитируемого события
                EventTableLight eventTable;
                AppData.MainData.RefreshEvents(date, out eventTable);
                EventTableLight.Event ev = AppData.MainData.GetEventByNum(eventTable, evNum);

                if (ev == null)
                {
                    lblMessage.Text    = string.Format(WebPhrases.ErrorFormat, WebPhrases.EventNotFound);
                    lblMessage.Visible = true;

                    lblTime.Text     = lblObj.Text = lblKP.Text = lblCnl.Text = lblEvent.Text = "";
                    btnCheck.Enabled = false;
                }
                else
                {
                    // определение индексов выбранного представления
                    int viewSetIndex, viewIndex;
                    if (!int.TryParse(Request["viewSet"], out viewSetIndex))
                    {
                        viewSetIndex = -1;
                    }
                    if (!int.TryParse(Request["view"], out viewIndex))
                    {
                        viewIndex = -1;
                    }

                    // получение представления и прав пользователя на него
                    BaseView       view;
                    MainData.Right right;
                    userData.GetView(null, viewSetIndex, viewIndex, out view, out right);

                    // проверка загрузки представления и прав на квитирование
                    if (view == null)
                    {
                        throw new Exception(WebPhrases.UnableLoadView);
                    }
                    else if (!right.CtrlRight || userData.Role == ServerComm.Roles.Custom &&
                             !view.CnlList.Contains(ev.CnlNum))
                    {
                        throw new Exception(CommonPhrases.NoRights);
                    }

                    MainData.EventView eventView = AppData.MainData.ConvertEvent(ev);
                    lblTime.Text  = eventView.Time;
                    lblObj.Text   = eventView.Obj;
                    lblKP.Text    = eventView.KP;
                    lblCnl.Text   = eventView.Cnl;
                    lblEvent.Text = eventView.Text;

                    lblNum.ForeColor     = lblDate.ForeColor = lblTime.ForeColor = lblObj.ForeColor =
                        lblCnl.ForeColor = lblEvent.ForeColor = Color.FromName(eventView.Color);
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Окончательная обработка дерева XML-документа
        /// </summary>
        protected override void FinalXmlDocProc()
        {
            int  hourDataWsInd    = 0; // индекс листа часовых срезов
            int  eventsWsInd      = 1; // индекс листа событий
            bool hourDataWsExists = workbook != null && workbook.Worksheets.Count > hourDataWsInd;
            bool eventsWsExists   = workbook != null && workbook.Worksheets.Count > eventsWsInd;

            // работа с листом часовых срезов
            if (tableView == null)
            {
                // удаление листа часовых срезов
                if (hourDataWsExists)
                {
                    workbook.RemoveWorksheet(hourDataWsInd);
                    eventsWsInd--;
                }
            }
            else
            {
                // перевод наименования листа
                if (hourDataWsExists)
                {
                    workbook.Worksheets[hourDataWsInd].Name = WebPhrases.HourDataPage;
                }

                if (templItemRow != null)
                {
                    // удаление лишних атрибутов таблицы
                    Table table = templItemRow.ParentTable;
                    table.RemoveTableNodeAttrs();

                    // заполнение таблицы часовых срезов
                    for (int i = 0; i < tableView.VisibleCount; i++)
                    {
                        item = tableView.VisibleItems[i];
                        Row rowClone = templItemRow.Clone();
                        ExcelProc(rowClone);
                        table.AppendRow(rowClone);
                    }
                    item = null;

                    // удаление строки-шаблона
                    int rowIndex = table.Rows.IndexOf(templItemRow);
                    table.RemoveRow(rowIndex);
                }
            }

            // работа с листом событий
            if (eventOut <= 0)
            {
                // удаление листа событий
                if (eventsWsExists)
                {
                    workbook.RemoveWorksheet(eventsWsInd);
                }
            }
            else
            {
                // перевод наименования листа
                if (eventsWsExists)
                {
                    workbook.Worksheets[eventsWsInd].Name = WebPhrases.EventsPage;
                }

                if (templEventRow != null)
                {
                    // удаление лишних атрибутов таблицы
                    Table table = templEventRow.ParentTable;
                    table.RemoveTableNodeAttrs();

                    // выбор событий
                    List <MainData.EventView> eventViewList =
                        AppData.MainData.ConvertEvents(eventOut == 1 ?
                                                       AppData.MainData.GetEvents(eventTable, null) :
                                                       AppData.MainData.GetEvents(eventTable, baseView.CnlList));

                    // заполнение таблицы событий
                    for (int i = 0; i < eventViewList.Count; i++)
                    {
                        eventView = eventViewList[i];
                        Row rowClone = templEventRow.Clone();
                        ExcelProc(rowClone);
                        table.AppendRow(rowClone);
                    }

                    // удаление строки-шаблона
                    int rowIndex = table.Rows.IndexOf(templEventRow);
                    table.RemoveRow(rowIndex);
                }
            }
        }