@page "/editor" @using Microsoft.AspNetCore.Components.QuickGrid @using SchemaEditor.Services @using ExcelKv.Core @inject ExcelService ExcelService @inject GarnetClientService GarnetClient @inject IJSRuntime JSRuntime @rendermode InteractiveServer
| # | @for (int c = 0; c < MaxCols; c++) { bool isSearchMatch = SearchMatch(c, -1); bool isLeftAxis = c >= config.LeftHeaderStartCol && c < config.LeftHeaderStartCol + config.LeftHeaderWidth; SetLeftCol(c)" title="Click to extend Width">
@c
@if(isLeftAxis) { AXIS }
|
}
|---|---|
| SetTopRow(r)" class="text-center fw-bold text-muted bg-light position-relative sticky-col row-index-cell" title="Click to extend Depth"> @r @if(isLimit) { END } | @{ int dataStartCol = config.LeftHeaderStartCol + config.LeftHeaderWidth; bool isDataRowRange = r >= (config.TopHeaderStartRow + config.TopHeaderDepth) && (!config.DataEndRow.HasValue || r <= config.DataEndRow.Value); } @for (int c = 0; c < MaxCols; c++) { var val = c < rawData[r].Length ? rawData[r][c] : ""; bool isHighlighted = (r == highlightedRow && c == highlightedCol); bool isLimitCol = (config.DataEndCol.HasValue && c == config.DataEndCol.Value); bool isLeftAxisCol = c >= config.LeftHeaderStartCol && c < config.LeftHeaderStartCol + config.LeftHeaderWidth; bool isDataStartColumn = (c == dataStartCol); // Determine cell style based on region string cellClass = ""; if (isHighlighted) cellClass = "table-active border border-3 border-danger fw-bold"; else if (isLimitCol) cellClass = "border-end border-3 border-danger"; else if (isLeftAxisCol) cellClass = "table-light text-primary"; else if (isHeaderRow && !isLeftAxisCol) cellClass = "table-primary fw-bold text-center"; // Feature: Yellow Data Region Start Line if (isDataStartColumn && isDataRowRange) { cellClass += " border-start border-4 border-warning"; }OnPreviewCellDoubleClick(r, c)" style="white-space: nowrap; overflow: hidden; max-width: 120px; text-overflow: ellipsis; cursor: pointer;" title="@val"> @{ // Determine if this is the "End" cell // Rule: It is the End Row. // And it is either the explicit End Col OR the global max column if End Col is null. bool isVisualEndCol = false; if (isLimit) { if (config.DataEndCol.HasValue) isVisualEndCol = (c == config.DataEndCol.Value); else isVisualEndCol = (c == MaxCols - 1); } } @if(isDataStartRow && isDataStartColumn) { START } @if(isLimit && isVisualEndCol) { END } @val | }
| Key | Value |
|---|---|
| @item.Key | @item.Value |
| ... showing first 100 of @FilteredItems.Count() (Refine Search) ... | |