/// <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; } }
/// <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; }
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; }
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(); } }
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(); }
/// <summary> /// Конструктор /// </summary> public ViewSetRight(ViewSettings.ViewSet viewSet) { ViewSet = viewSet; Right = MainData.Right.NoRights; ViewRightArr = null; }
/// <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); }
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 = "\"\""; } }
/// <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); }