Beispiel #1
0
        /// <summary>
        /// Инициализировать права на представления из набора
        /// </summary>
        private void InitViewRightArr(ViewSetRight viewSetRight)
        {
            ViewSettings.ViewSet viewSet = viewSetRight.ViewSet;

            if (viewSet != null && viewSet.Count > 0)
            {
                bool             viewSetViewRight = viewSetRight.Right.ViewRight;
                bool             viewSetCtrlRight = viewSetRight.Right.CtrlRight;
                int              viewCnt          = viewSet.Count;
                MainData.Right[] viewRightArr     = new MainData.Right[viewCnt];

                for (int i = 0; i < viewCnt; i++)
                {
                    MainData.Right right = GetRight(Path.GetFileName(viewSet[i].FileName));
                    viewRightArr[i].ViewRight = right.ViewRight && viewSetViewRight;
                    viewRightArr[i].CtrlRight = right.CtrlRight && viewSetCtrlRight;
                }

                viewSetRight.ViewRightArr = viewRightArr;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Конструктор
        /// </summary>
        public FrmMain()
        {
            InitializeComponent();

            exeDir = "";
            configDir = "";
            webAppDir = "";
            commSettings = new CommSettings();
            webSettings = new WebSettings();
            viewSettings = new ViewSettings();
            regKey = "";

            loadedCommSettings = null;
            loadedWebSettings = null;
            loadedViewSettings = null;
            loadedRegKey = "";

            commSettingsChanged = false;
            webSettingsChanged = false;
            viewSettingsChanged = false;
            regKeyChanged = false;
            showing = false;

            selViewSet = null;
            selViewInfo = null;
        }
Beispiel #3
0
        private void tvTableSets_AfterSelect(object sender, TreeViewEventArgs e)
        {
            // определение выбранного набора или представления, вывод их свойств
            TreeNode node = e.Node;
            selViewSet = node.Tag as ViewSettings.ViewSet;
            selViewInfo = node.Tag as ViewSettings.ViewInfo;

            txtName.TextChanged -= txtName_TextChanged;
            txtDirOrFile.TextChanged -= txtDirOrFile_TextChanged;
            cbType.SelectedIndexChanged -= cbType_SelectedIndexChanged;

            if (selViewSet != null)
            {
                txtName.Text = selViewSet.Name;
                lblDir.Visible = true;
                lblFile.Visible = false;
                txtDirOrFile.Text = selViewSet.Directory;
                btnSelectView.Visible = false;
                lblType.Visible = cbType.Visible = false;
            }
            else if (selViewInfo != null)
            {
                selViewSet = node.Parent.Tag as ViewSettings.ViewSet;
                txtName.Text = selViewInfo.Title;
                lblDir.Visible = false;
                lblFile.Visible = true;
                txtDirOrFile.Text = selViewInfo.FileName;
                btnSelectView.Visible = true;
                lblType.Visible = cbType.Visible = true;
                cbType.SelectedIndex = GetViewTypeIndex(selViewInfo.Type);
            }
            else
            {
                txtName.Text = "";
                lblDir.Visible = true;
                lblFile.Visible = false;
                txtDirOrFile.Text = "";
                btnSelectView.Visible = false;
                lblType.Visible = cbType.Visible = false;
            }

            txtName.TextChanged += txtName_TextChanged;
            txtDirOrFile.TextChanged += txtDirOrFile_TextChanged;
            cbType.SelectedIndexChanged += cbType_SelectedIndexChanged;
        }
Beispiel #4
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            // удаление набора или представления
            if (selViewSet == null && selViewInfo == null)
            {
                ScadaUtils.ShowError(AppPhrases.ChooseViewToDelete);
            }
            else
            {
                if (selViewInfo == null)
                {
                    // удаление набора таблиц
                    int ind = viewSettings.ViewSetList.IndexOf(selViewSet);
                    viewSettings.ViewSetList.RemoveAt(ind);
                    tvTableSets.Nodes.RemoveAt(ind);

                    // определение выбранного набора таблиц
                    if (--ind < 0)
                        ind = 0;

                    if (ind < viewSettings.ViewSetList.Count)
                    {
                        selViewSet = viewSettings.ViewSetList[ind];
                        tvTableSets.SelectedNode = tvTableSets.Nodes[ind];
                    }
                    else
                    {
                        selViewSet = null;
                        tvTableSets.SelectedNode = null;

                        txtName.Text = "";
                        txtName.Enabled = false;
                        lblDir.Visible = true;
                        lblFile.Visible = false;
                        txtDirOrFile.Text = "";
                        txtDirOrFile.Enabled = false;
                        btnSelectView.Visible = false;
                    }
                }
                else
                {
                    // удаление представления
                    int tableInd = selViewSet.Items.IndexOf(selViewInfo);
                    selViewSet.Items.RemoveAt(tableInd);
                    int tableSetInd = viewSettings.ViewSetList.IndexOf(selViewSet);
                    TreeNode nodeTableSet = tvTableSets.Nodes[tableSetInd];
                    nodeTableSet.Nodes.RemoveAt(tableInd);

                    // определение выбранного представления
                    if (--tableInd < 0)
                        tableInd = 0;

                    if (tableInd < selViewSet.Count)
                    {
                        selViewInfo = selViewSet[tableInd];
                        tvTableSets.SelectedNode = nodeTableSet.Nodes[tableInd];
                    }
                    else
                    {
                        selViewInfo = null;
                        tvTableSets.SelectedNode = nodeTableSet;
                    }
                }

                viewSets_Changed();
            }
        }
Beispiel #5
0
        private void btnAddViewSet_Click(object sender, EventArgs e)
        {
            // добавление нового набора представлений
            int ind = viewSettings.ViewSetList.IndexOf(selViewSet) + 1;
            if (ind <= 0 || ind > viewSettings.ViewSetList.Count)
                ind = viewSettings.ViewSetList.Count;

            ViewSettings.ViewSet newTableSet = new ViewSettings.ViewSet(AppPhrases.NewViewSetName, "");
            viewSettings.ViewSetList.Insert(ind, newTableSet);
            TreeNode nodeTableSet = tvTableSets.Nodes.Insert(ind, newTableSet.Name);
            nodeTableSet.Tag = newTableSet;

            txtName.Enabled = true;
            txtDirOrFile.Enabled = true;
            tvTableSets.SelectedNode = nodeTableSet;
            ActiveControl = txtName;
            viewSets_Changed();
        }
Beispiel #6
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public ViewSetRight(ViewSettings.ViewSet viewSet)
 {
     ViewSet      = viewSet;
     Right        = MainData.Right.NoRights;
     ViewRightArr = null;
 }
Beispiel #7
0
        /// <summary>
        /// Получить представление заданного типа и права на него
        /// </summary>
        public bool GetView(Type viewType, int viewSetIndex, int viewIndex,
                            out BaseView view, out MainData.Right right)
        {
            bool result = false;

            view  = null;
            right = MainData.Right.NoRights;

            try
            {
                if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
                {
                    ViewSetRight         viewSetRight = viewSetRightList[viewSetIndex];
                    ViewSettings.ViewSet viewSet      = viewSetRight.ViewSet;

                    if (viewSetRight.ViewRightArr == null)
                    {
                        InitViewRightArr(viewSetRight);
                    }

                    MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                    if (viewSet != null && viewRightArr != null && 0 <= viewIndex &&
                        viewIndex < viewSet.Count && viewIndex < viewRightArr.Length)
                    {
                        ViewSettings.ViewInfo viewInfo = viewSet[viewIndex];
                        right = viewRightArr[viewIndex];

                        // попытка получить стандартный тип представления, если тип не задан
                        if (viewType == null)
                        {
                            viewType = viewInfo.GetViewType();
                        }

                        if (viewType == null)
                        {
                            // возврат представления из кэша, если тип не задан
                            view = viewInfo.ViewCash;
                            return(view != null);
                        }
                        else if (viewInfo.Type == viewType.Name)
                        {
                            if (viewInfo.ViewCash != null && viewInfo.ViewCash.GetType() == viewType)
                            {
                                // возврат представления из кэша,
                                // если в кэше загружено представление и его тип совпадает с заданным
                                view   = viewInfo.ViewCash;
                                result = true;
                            }
                            else
                            {
                                // создание и загрузка нового представления
                                view = (BaseView)Activator.CreateInstance(viewType);

                                if (!view.StoredOnServer)
                                {
                                    view.Path = viewInfo.FileName;
                                }

                                if (!view.StoredOnServer ||
                                    AppData.MainData.ServerComm.ReceiveView(viewSet.Directory + viewInfo.FileName, view))
                                {
                                    AppData.MainData.RefreshBase();
                                    view.BindCnlProps(AppData.MainData.CnlPropsArr);
                                    viewInfo.ViewCash = view;
                                    result            = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "Ошибка при получении представления: " :
                                         "Error getting view: ") + ex.Message, Log.ActTypes.Exception);
            }

            return(result);
        }
Beispiel #8
0
        protected string viewFileNameArrStr; // строковая запись массива имён файлов представлений

        protected void Page_Load(object sender, EventArgs e)
        {
            // отключение кэширования страницы
            ScadaUtils.DisablePageCache(Response);

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

            // проверка входа в систему
            userData.CheckLoggedOn(Context);

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

            // определение индекса выбранного при входе набора представлений
            int viewSetInd;

            int.TryParse(Request.Params["viewSet"], out viewSetInd);
            viewSetIndStr = viewSetInd.ToString();

            // получение выбранного набора представлений, если на него есть права
            ViewSettings.ViewSet viewSet = null;
            int viewCnt = 0;

            if (userData.GetViewSetRight(viewSetInd).ViewRight)
            {
                List <ViewSettings.ViewSet> viewSetList = userData.ViewSettings.ViewSetList;

                if (0 <= viewSetInd && viewSetInd < viewSetList.Count)
                {
                    viewSet = viewSetList[viewSetInd];
                    viewCnt = viewSet.Count;

                    // вывод заголовка страницы
                    Title = "SCADA - " + viewSet.Name;

                    // заполнение списка представлений
                    bool first = true;
                    for (int i = 0; i < viewCnt; i++)
                    {
                        if (userData.GetViewRight(viewSetInd, i).ViewRight)
                        {
                            ListItem item = new ListItem(viewSet[i].Title, i.ToString());
                            item.Selected = first;
                            ddlView.Items.Add(item);
                            first = false;
                        }
                    }
                }
            }

            // заполнение списков дней, месяцев и годов, выбор текущей даты
            DateTime today  = DateTime.Today;
            int      curDay = today.Day;

            for (int day = 1; day <= 31; day++)
            {
                string   dayStr = day.ToString();
                ListItem item   = new ListItem(day < 10 ? "0" + dayStr : dayStr, dayStr);
                item.Selected = day == curDay;
                ddlDay.Items.Add(item);
            }

            int curMonth = today.Month;

            string[] monthNames = Localization.Culture.DateTimeFormat.MonthNames;

            for (int month = 1; month <= 12; month++)
            {
                ListItem item = new ListItem(monthNames[month - 1], month.ToString());
                item.Selected = month == curMonth;
                ddlMonth.Items.Add(item);
            }

            for (int i = 0, year = today.Year; i < 10; i++, year--)
            {
                string   yearStr = year.ToString();
                ListItem item    = new ListItem(yearStr, yearStr);
                item.Selected = i == 0;
                ddlYear.Items.Add(item);
            }

            // добавление скрипта перемещения выпадающего списка дней после списка месяцев, если необходимо
            if (Localization.DayAfterMonth)
            {
                ClientScript.RegisterStartupScript(this.GetType(), "Startup", "PlaceDayAfterMonth();", true);
            }

            // привязка событий
            ddlView.Attributes["onchange"]    = "ShowData()";
            ddlDay.Attributes["onchange"]     = "ShowData()";
            ddlMonth.Attributes["onchange"]   = "ShowData()";
            ddlYear.Attributes["onchange"]    = "ShowData()";
            rbStage1.Attributes["onclick"]    = "ShowView()";
            rbStage2.Attributes["onclick"]    = "ShowView()";
            rbStageFull.Attributes["onclick"] = "ShowView()";

            // настройка отображения событий и фрейма для проверка входа в систему
            pnlEvents.Visible         = AppData.WebSettings.EventCnt > 0;
            frameLoginChecker.Visible = !pnlEvents.Visible;

            // формирование массивов, описывающих представления
            if (viewCnt > 0)
            {
                string[] viewTypeArr     = new string[viewCnt];
                string[] viewFileNameArr = new string[viewCnt];

                for (int i = 0; i < viewCnt; i++)
                {
                    ViewSettings.ViewInfo viewInfo = viewSet[i];
                    viewTypeArr[i]     = "\"" + viewInfo.Type + "\"";
                    viewFileNameArr[i] = "\"" + viewInfo.FileName + "\"";
                }

                viewTypeArrStr     = "[" + string.Join(", ", viewTypeArr) + "]";
                viewFileNameArrStr = "[" + string.Join(", ", viewFileNameArr) + "]";
            }
            else
            {
                viewTypeArrStr     = "\"\"";
                viewFileNameArrStr = "\"\"";
            }
        }
Beispiel #9
0
        /// <summary>
        /// Получить представление заданного типа и права на него
        /// </summary>
        public bool GetView(Type viewType, int viewSetIndex, int viewIndex,
                            out BaseView view, out MainData.Right right)
        {
            bool result = false;

            view  = null;
            right = MainData.Right.NoRights;

            try
            {
                if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
                {
                    ViewSetRight         viewSetRight = viewSetRightList[viewSetIndex];
                    ViewSettings.ViewSet viewSet      = viewSetRight.ViewSet;

                    if (viewSetRight.ViewRightArr == null)
                    {
                        InitViewRightArr(viewSetRight);
                    }

                    MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                    if (viewSet != null && viewRightArr != null && 0 <= viewIndex &&
                        viewIndex < viewSet.Count && viewIndex < viewRightArr.Length)
                    {
                        ViewSettings.ViewInfo viewInfo = viewSet[viewIndex];
                        right = viewRightArr[viewIndex];

                        if (viewType == null)
                        {
                            view = viewInfo.ViewCash;
                            return(view != null);
                        }
                        else if (viewInfo.Type == viewType.Name)
                        {
                            if (viewInfo.ViewCash != null && viewInfo.ViewCash.GetType() == viewType)
                            {
                                view   = viewInfo.ViewCash;
                                result = true;
                            }
                            else
                            {
                                view = (BaseView)Activator.CreateInstance(viewType);

                                if (!view.StoredOnServer)
                                {
                                    view.ItfObjName = Path.GetFileName(viewInfo.FileName);
                                }

                                if (!view.StoredOnServer ||
                                    AppData.MainData.ServerComm.ReceiveView(viewSet.Directory + viewInfo.FileName, view))
                                {
                                    AppData.MainData.RefreshBase();
                                    view.BindCnlProps(AppData.MainData.CnlPropsArr);
                                    viewInfo.ViewCash = view;
                                    result            = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "Ошибка при получении представления: " :
                                         "Error getting view: ") + ex.Message, Log.ActTypes.Exception);
            }

            return(result);
        }