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; }
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) ? " " : 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())); }