protected void repCnlsByView_ItemCommand(object source, RepeaterCommandEventArgs e) { // добавление выбранного канала в список if (e.CommandName == "AddCnl") { int cnlNum = int.Parse((string)e.CommandArgument); if (!selCnlSet.Contains(cnlNum)) { int viewID = int.Parse(ddlView.SelectedValue); CnlViewPair pair = new CnlViewPair(cnlNum, viewID); pair.FillInfo(appData.DataAccess.GetCnlProps(cnlNum), null); selCnls.Add(pair); ViewState.Add("SelCnls", selCnls); btnSubmit.Enabled = true; bool warnWasVisible = pnlPerfWarn.Visible; pnlPerfWarn.Visible = selCnls.Count > ChartUtils.NormalChartCnt; if (pnlPerfWarn.Visible != warnWasVisible) { ChartUtils.AddUpdateModalHeightScript(this); } } Label lblCnlAdded = (Label)e.Item.FindControl("lblCnlAdded"); lblCnlAdded.Visible = true; } }
protected void btnApplyAddedCnls_Click(object sender, EventArgs e) { // добавление каналов if (hidAddedCnlNums.Value != "") { int[] addedCnls = WebUtils.QueryParamToIntArray(hidAddedCnlNums.Value); int[] addedViewIDs = WebUtils.QueryParamToIntArray(hidAddedViewIDs.Value); ChartUtils.CheckArrays(addedCnls, addedViewIDs); HashSet <int> selCnlSet = ChartUtils.GetCnlSet(selCnls); for (int i = 0, cnt = addedCnls.Length; i < cnt; i++) { int cnlNum = addedCnls[i]; if (!selCnlSet.Contains(cnlNum)) { CnlViewPair pair = new CnlViewPair(cnlNum, addedViewIDs[i]); pair.FillInfo(appData.DataAccess.GetCnlProps(cnlNum), userData.UserViews); selCnls.Add(pair); } } ViewState.Add("SelCnls", selCnls); ShowSelCnls(); hidAddedCnlNums.Value = ""; hidAddedViewIDs.Value = ""; } }
protected void btnGenReport_Click(object sender, EventArgs e) { // проверка параметров отчёта и добавление скрипта генерации отчёта if (selCnls.Count > 0) { DateTime dateFrom; DateTime dateTo; int period; string errMsg; if (RepUtils.ParseDates(txtDateFrom.Text, txtDateTo.Text, out dateFrom, out dateTo, out errMsg) && RepUtils.CheckDayPeriod(dateFrom, dateTo, out period, out errMsg)) { string cnlNums; string viewIDs; ChartUtils.GetSelection(selCnls, out cnlNums, out viewIDs); ScriptManager.RegisterClientScriptBlock(this, GetType(), "GenerateReportScript", string.Format("generateReport('{0}', '{1}', {2}, {3}, {4}, {5});", cnlNums, viewIDs, dateFrom.Year, dateFrom.Month, dateFrom.Day, period), true); } else { pnlErrMsg.ShowAlert(errMsg); } } }
protected HashSet <int> selCnlSet; // множество выбранных каналов /// <summary> /// Отобразить каналы выбранного представления /// </summary> private void ShowCnlsByView() { int viewID; int.TryParse(ddlView.SelectedValue, out viewID); List <CnlViewPair> cnlsByView = ChartUtils.GetCnlViewPairsByView( viewID, appData.DataAccess, userData.UserViews); repCnlsByView.DataSource = cnlsByView; repCnlsByView.DataBind(); lblUnableLoadView.Visible = cnlsByView == null; lblNoCnlsByView.Visible = cnlsByView != null && cnlsByView.Count == 0; }
/// <summary> /// Проверить заданные права на возможность просмотра входных каналов, входящих в указанные представления /// </summary> /// <remarks>Если проверка не пройдена, вызывается исключение</remarks> public void CheckRights(UserRights userRights, int[] cnlNums, int[] viewIDs) { if (userRights == null) { throw new ArgumentNullException("userRights"); } ChartUtils.CheckArrays(cnlNums, viewIDs); userData = null; this.userRights = userRights; if (!userRights.ViewAllRight) { BaseView singleView; CheckRights(cnlNums, viewIDs, out singleView); } }
protected void Page_Load(object sender, EventArgs e) { appData = AppData.GetAppData(); userData = UserData.GetUserData(); // проверка входа в систему if (!userData.LoggedOn) { throw new ScadaException(WebPhrases.NotLoggedOn); } if (IsPostBack) { // получение выбранных каналов selCnls = (List <CnlViewPair>)ViewState["SelCnls"]; selCnlSet = ChartUtils.GetCnlSet(selCnls); } else { // перевод веб-страницы Translator.TranslatePage(Page, "Scada.Web.Plugins.Chart.WFrmSelectCnls"); lblPerfWarn.Text = ChartPhrases.PerfWarning; // настройка элементов управления btnSubmit.Enabled = false; pnlPerfWarn.Visible = false; // создание списка выбранных каналов selCnls = new List <CnlViewPair>(); ViewState.Add("SelCnls", selCnls); selCnlSet = ChartUtils.GetCnlSet(selCnls); // заполнение выпадающего списка представлений и отображение каналов по представлению ChartUtils.FillViewList(ddlView, 0, userData.UserViews); ShowCnlsByView(); } }
/// <summary> /// Проверить права текущего пользователя на просмотр входных каналов, входящих в указанные представления, /// а также получить представление, если оно единственное /// </summary> /// <remarks>Если проверка не пройдена, вызывается исключение</remarks> public void CheckRights(UserData userData, int[] cnlNums, int[] viewIDs, out BaseView singleView) { if (userData == null) { throw new ArgumentNullException("userData"); } if (!userData.LoggedOn) { throw new ScadaException(WebPhrases.NotLoggedOn); } ChartUtils.CheckArrays(cnlNums, viewIDs); this.userData = userData; userRights = userData.UserRights; if (userRights.ViewAllRight) { singleView = ElementsEqual(viewIDs) ? GetView(viewIDs[0]) : null; } else { CheckRights(cnlNums, viewIDs, out singleView); } }
protected void ddlView_SelectedIndexChanged(object sender, EventArgs e) { // выбор каналов по представлению ShowCnlsByView(); ChartUtils.AddUpdateModalHeightScript(this); }