Esempio n. 1
0
        public CnlProps(Cnl cnl, ConfigDataset configDataset)
        {
            ArgumentNullException.ThrowIfNull(cnl, nameof(cnl));
            ArgumentNullException.ThrowIfNull(configDataset, nameof(configDataset));

            CnlNum  = cnl.CnlNum;
            JoinLen = cnl.IsString() ? cnl.GetDataLength() : 1;
            Unit    = cnl.UnitID.HasValue ? configDataset.UnitTable.GetItem(cnl.UnitID.Value)?.Name : null;
        }
Esempio n. 2
0
        public HtmlString RenderTableView()
        {
            StringBuilder sbHtml = new();

            sbHtml.AppendLine("<table class='table-main'>");

            // columns
            sbHtml.AppendLine("<colgroup>");
            sbHtml.AppendLine("<col class='col-cap'>");
            sbHtml.AppendLine("<col class='col-cur'>");

            foreach (ColumnMeta columnMeta in allColumnMetas)
            {
                sbHtml.Append("<col class='col-hist' data-time='").Append(columnMeta.UtcTime).AppendLine("'>");
            }

            sbHtml.AppendLine("</colgroup>");

            // header
            sbHtml.AppendLine("<thead><tr class='row-hdr'>");
            sbHtml.Append("<th class='hdr-cap'>").Append(PluginPhrases.ItemColumn).AppendLine("</th>");
            sbHtml.Append("<th class='hdr-cur'>").Append(PluginPhrases.CurrentColumn).AppendLine("</th>");

            foreach (ColumnMeta columnMeta in allColumnMetas)
            {
                sbHtml.Append("<th class='hdr-hist'><span class='hdr-date'>").Append(columnMeta.ShortDate)
                .Append("</span> <span class='hdr-time'>").Append(columnMeta.ShortTime)
                .AppendLine("</span></th>");
            }

            sbHtml.AppendLine("</tr></thead>");

            // rows
            bool enableCommands = webContext.AppConfig.GeneralOptions.EnableCommands &&
                                  userContext.Rights.GetRightByView(tableView.ViewEntity).Control;

            sbHtml.AppendLine("<tbody>");

            foreach (TableItem tableItem in tableView.VisibleItems)
            {
                Cnl    itemCnl  = tableItem.Cnl;
                bool   showVal  = itemCnl != null && itemCnl.IsArchivable();
                int    joinLen  = itemCnl != null && itemCnl.IsString() ? itemCnl.GetDataLength() : 1;
                string itemText = string.IsNullOrWhiteSpace(tableItem.Text) ?
                                  "&nbsp;" : HttpUtility.HtmlEncode(tableItem.Text);

                sbHtml.Append("<tr class='row-item' data-cnlnum='").Append(tableItem.CnlNum)
                .Append("' data-showval='").Append(showVal.ToLowerString())
                .Append("' data-joinlen='").Append(joinLen).AppendLine("'>")
                .Append("<td><div class='item'>");

                if (tableItem.CnlNum > 0)
                {
                    sbHtml
                    .Append("<span class='item-icon'><img src='").Append(GetQuantityIconUrl(itemCnl))
                    .Append("' data-bs-toggle='tooltip' data-bs-placement='right' data-bs-html='true' title='");
                    AddTooltipHtml(sbHtml, tableItem.CnlNum, itemCnl);

                    sbHtml
                    .Append("' /></span>")
                    .Append("<span class='item-text item-link'>").Append(itemText).Append("</span>");

                    if (enableCommands && itemCnl != null && itemCnl.IsOutput())
                    {
                        sbHtml
                        .Append("<span class='item-cmd' title='").Append(PluginPhrases.SendCommandTip)
                        .Append("'><i class='fas fa-rocket'></i></span>");
                    }
                }
                else
                {
                    sbHtml.Append("<span class='item-text'>").Append(itemText).Append("</span>");
                }

                sbHtml.AppendLine("</div></td>");                // close first cell
                sbHtml.AppendLine("<td class='cell-cur'></td>"); // current data cell

                for (int i = 0, cnt = allColumnMetas.Count; i < cnt; i++)
                {
                    sbHtml.AppendLine("<td class='cell-hist'></td>"); // historical data cell
                }

                sbHtml.AppendLine("</tr>");
            }

            sbHtml.AppendLine("</tbody>");
            sbHtml.AppendLine("</table>");
            return(new HtmlString(sbHtml.ToString()));
        }