/// <inheritdoc/> public override UPMSearchPage CreatePageInstance() { UPMGridPage page = new UPMGridPage(StringIdentifier.IdentifierWithStringId("Analysis")) { ViewType = SearchPageViewType.List, AvailableFilters = null, AvailableOnlineSearch = false, HideSearchBar = true, FixedFirstColumn = true, SumRowAtEnd = true, EmptyCategoryText = string.Empty, IsUnsortedStateAllowed = true }; object val = this.Options.ValueOrDefault("FixedSumRow"); if (val != null) { if (val is int) { page.FixedSumRow = (int)val > 0; } else if (val is string) { page.FixedSumRow = ((string)val).ToLower() != "false"; } } else { page.FixedSumRow = false; } return(page); }
private static List <UPMField> CreateFieldArray(UPMGridPage searchPage, List <object> columnInfoArray) { var fieldArray = new List <UPMField>(); var i = 0; foreach (AnalysisDrillThruColumn col in columnInfoArray) { var fieldType = col.SourceField.CrmFieldInfo.FieldType; if (fieldType == "F" || fieldType == "L" || fieldType == "S") { searchPage.SetColumnInfoAtIndexDataTypeSpecialSort(i, UPMColumnDataType.Numeric, false); } else if (fieldType == "D") { searchPage.SetColumnInfoAtIndexDataTypeSpecialSort(i, UPMColumnDataType.Date, false); } var field = new UPMStringField(StringIdentifier.IdentifierWithStringId($"col {++i}")) { StringValue = col.DataSourceField.Label }; fieldArray.Add(field); } return(fieldArray); }
/// <inheritdoc/> public override void BuildPage() { UPMGridPage sp = (UPMGridPage)this.CreatePageInstance(); sp.Invalid = true; this.TopLevelElement = sp; }
private void ProcessResultRows( AnalysisResult result, UPMGridPage searchPage, IReadOnlyList <object> xColumnArray, bool keyAsRawString, int columnCount, UPMResultSection section) { var i = 0; var resultRows = CreateResultRows(result); var sumRow = result.SumLine; foreach (AnalysisRow row in resultRows) { var identifier = StringIdentifier.IdentifierWithStringId($"row {i}"); var listRow = new UPMResultRow(identifier) { Context = row }; i++; var fieldArray = CreateFieldArray(row, xColumnArray, keyAsRawString, columnCount, i); listRow.Fields = fieldArray; if (searchPage.FixedSumRow && sumRow != null && i == resultRows.Count && resultRows.Count > 12) { searchPage.SumResultRow = listRow; searchPage.SumRowAtEnd = false; } else { section.AddResultRow(listRow); } if (row.HasDetails) { var detailGroupCol1 = new UPMAnalysisResultRowGroup(StringIdentifier.IdentifierWithStringId("det1")) { Invalid = true, Left = true, Row = row }; listRow.AddDetailGroup(detailGroupCol1); var detailGroupCol2 = new UPMAnalysisResultRowGroup(StringIdentifier.IdentifierWithStringId("det2")) { Invalid = true, Left = false, Row = row }; listRow.AddDetailGroup(detailGroupCol2); } this.AddDrilldownActionsFromRowToListRow(row, listRow); this.AddDetailsActionFromRowToListRow(row, listRow); } }
private static UPMResultSection CreateSection(List <object> columnInfoArray, UPMGridPage searchPage) { var identifier = StringIdentifier.IdentifierWithStringId("columnHeader"); var section = new UPMResultSection(identifier); var columnHeaderListRow = new UPMResultRow(identifier); var fieldArray = CreateFieldArray(searchPage, columnInfoArray); columnHeaderListRow.Fields = fieldArray; section.AddResultRow(columnHeaderListRow); return(section); }
private void ProcessSearchPage(UPMGridPage searchPage, IReadOnlyList <string> contextMenuOptions, ICrmDataSourceRow crmRow, UPMResultRow listRow, AnalysisResult analysisResult, Page oldPage, int i) { var dataSource = analysisResult.DataSource; for (var j = 0; j < dataSource.NumberOfResultTables; j++) { var label = contextMenuOptions[j]; if (string.IsNullOrEmpty(label)) { continue; } var recordIdentification = crmRow.RecordIdentificationAtIndex(j); if (recordIdentification?.Length > 0) { var showRecordAction = new UPMOrganizerAnalysisShowRecordAction(StringIdentifier.IdentifierWithStringId($"action.row {i} record {j}")) { RecordIdentification = recordIdentification }; showRecordAction.SetTargetAction(this, this.PerformShowRecordAction); showRecordAction.LabelText = label; listRow.AddDetailAction(showRecordAction); } var backAction = new UPMOrganizerAnalysisBackAction(StringIdentifier.IdentifierWithStringId("action.back")) { AnalysisResult = analysisResult }; backAction.SetTargetAction(this, this.PerformBackToAnalysis); backAction.LabelText = LocalizedString.TextAnalysesBackToAnalysis; searchPage.AddHeadOption(new UPMGridHeadOption(backAction.LabelText, backAction)); searchPage.FixedFirstColumn = false; searchPage.SumRowAtEnd = false; var hasOnlyEmptyLabels = true; foreach (var lbl in contextMenuOptions) { if (lbl.Length > 0) { hasOnlyEmptyLabels = false; break; } } searchPage.ShowMenu = !hasOnlyEmptyLabels; this.TopLevelElement = searchPage; this.InformAboutDidChangeTopLevelElement(oldPage, searchPage, null, null); } }
private void AddCategoriesFromResultToPage(AnalysisResult result, UPMGridPage gridPage) { AnalysisCategory currentCategory = result.Settings.Category; gridPage.AddCategory(new UPMGridCategory(currentCategory.Label, null, true)); foreach (AnalysisCategory category in result.CategoryOptions) { UPMOrganizerAction action = new UPMOrganizerAction(StringIdentifier.IdentifierWithStringId($"action.{category.Key}")); action.SetTargetAction(this, this.PerformAnalysisWithCategory); action.ViewReference = new ViewReference(new Dictionary <string, object> { { "Category", category.Key } }, "PerformAnalysis"); action.LabelText = category.Label; gridPage.AddCategory(new UPMGridCategory(category.Label, action, false)); } }
private void UpdateResetHeadOption(UPMGridPage searchPage, bool reset, AnalysisResult result) { if (reset && searchPage.ResetHeadOption == null) { var resetAction = new UPMOrganizerAnalysisBackAction(StringIdentifier.IdentifierWithStringId("action.reset")) { AnalysisResult = result }; resetAction.SetTargetAction(this, this.PerformResetAnalysis); resetAction.LabelText = LocalizedString.TextAnalysesReset; var option = new UPMGridHeadOption(resetAction.LabelText, resetAction) { IsReset = true }; searchPage.ResetHeadOption = option; } }
private void AddDrillupActionsFromResultToPage(AnalysisResult result, UPMGridPage gridPage) { if (result.DrillupOptions != null) { foreach (AnalysisDrillupOption drillupOption in result.DrillupOptions) { string label = drillupOption.IsBack ? LocalizedString.TextBack : drillupOption.DrillupDisplayString(); UPMOrganizerDrillupAction action = new UPMOrganizerDrillupAction(StringIdentifier.IdentifierWithStringId($"action.{drillupOption.Key}")) { DrillupOption = drillupOption }; action.SetTargetAction(this, this.PerformDrillUp); gridPage.AddHeadOption(new UPMGridHeadOption(label, action)); } } }
private static void ProcessColumns( IEnumerable <object> resultColumns, UPMGridPage searchPage, ICollection <UPMField> fieldArray, ICollection <object> xColumnArray) { var i = 0; var k = 0; foreach (AnalysisColumn col in resultColumns) { var colDataType = col.IsTextColumn ? UPMColumnDataType.String : UPMColumnDataType.Numeric; searchPage.SetColumnInfoAtIndexDataTypeSpecialSort(++k, colDataType, false); var field = new UPMGridColumnHeaderStringField(StringIdentifier.IdentifierWithStringId($"col {++i}")) { StringValue = col.Label }; fieldArray.Add(field); field.NumberOfChildColumns = col.XCategoryValues?.Count ?? 0; xColumnArray.Add(field.NumberOfChildColumns); var j = 0; if (col.XCategoryValues != null) { foreach (var xCol in col.XCategoryValues) { searchPage.SetColumnInfoAtIndexDataTypeSpecialSort(++k, colDataType, false); var xField = new UPMGridColumnHeaderStringField(StringIdentifier.IdentifierWithStringId($"col {i}-x {++j}")) { NumberOfChildColumns = 0, IsSubField = true, StringValue = xCol.Label }; fieldArray.Add(xField); } } } }
private void ProcessResultRows( AnalysisRow row, List <object> columnInfoArray, UPMResultSection section, UPMGridPage searchPage, AnalysisResult analysisResult, Page oldPage) { var dataSource = analysisResult.DataSource; var contextMenuOptions = GetContextMenuOptions(dataSource); var i = 0; foreach (ICrmDataSourceRow crmRow in row.ResultRows) { var identifier = StringIdentifier.IdentifierWithStringId($"row {i}"); var listRow = new UPMResultRow(identifier) { Context = row }; var fieldArray = new List <UPMField>(); foreach (AnalysisDrillThruColumn col in columnInfoArray) { var field = new UPMStringField(StringIdentifier.IdentifierWithStringId($"row {++i}")) { StringValue = crmRow.ValueAtIndex(col.SourceField.QueryResultFieldIndex), RawStringValue = crmRow.RawValueAtIndex(col.SourceField.QueryResultFieldIndex) }; fieldArray.Add(field); } listRow.Fields = fieldArray; section.AddResultRow(listRow); ++i; this.ProcessSearchPage(searchPage, contextMenuOptions, crmRow, listRow, analysisResult, oldPage, i); } }
private void UpdatePageFromQueryResult(UPCRMResult result) { this.QueryResult = result; UPMGridPage searchPage = (UPMGridPage)this.CreatePageInstance(); Page oldPage = this.Page; int i, j; int columnCount = result.ColumnCount; StringIdentifier identifier = StringIdentifier.IdentifierWithStringId("columnHeader"); UPMResultSection section = new UPMResultSection(identifier); UPMResultRow columnHeaderListRow = new UPMResultRow(identifier); var fieldArray = new List <UPMField>(); searchPage.FixedFirstColumn = false; searchPage.ShowMenu = true; searchPage.SumRowAtEnd = false; for (i = 0; i < columnCount; i++) { UPContainerFieldMetaInfo fieldMetaInfo = result.ColumnFieldMetaInfoAtIndex(i); string fieldType = fieldMetaInfo.CrmFieldInfo.FieldType; if (fieldType == "F" || fieldType == "L" || fieldType == "S") { searchPage.SetColumnInfoAtIndexDataTypeSpecialSort(i, UPMColumnDataType.Numeric, false); } else if (fieldType == "D") { searchPage.SetColumnInfoAtIndexDataTypeSpecialSort(i, UPMColumnDataType.Date, true); } UPMGridColumnHeaderStringField field = new UPMGridColumnHeaderStringField(StringIdentifier.IdentifierWithStringId($"col {i}")) { StringValue = result.ColumnNameAtIndex(i) }; fieldArray.Add(field); } columnHeaderListRow.Fields = fieldArray; section.AddResultRow(columnHeaderListRow); searchPage.AddResultSection(section); int numberOfResultTables = result.NumberOfResultTables; List <object> contextMenuOptions = new List <object>(numberOfResultTables); var configStore = ConfigurationUnitStore.DefaultStore; for (j = 0; j < numberOfResultTables; j++) { string infoAreaId = result.ResultTableAtIndex(j).InfoAreaId; string infoAreaLabel = string.Empty; if (infoAreaId?.Length > 0) { InfoArea configInfoArea = configStore.InfoAreaConfigById(infoAreaId); UPConfigExpand expand = configStore.ExpandByName(infoAreaId); FieldControl fieldControl = configStore.FieldControlByNameFromGroup("Details", expand.FieldGroupName); if (configInfoArea != null && expand != null && fieldControl != null) { infoAreaLabel = LocalizedString.TextAnalysesShowParam.Replace("%@", configInfoArea.SingularName); } } contextMenuOptions.Add(infoAreaLabel); } for (i = 0; i < result.RowCount; i++) { identifier = StringIdentifier.IdentifierWithStringId($"row {i}"); var listRow = new UPMResultRow(identifier); var crmRow = result.ResultRowAtIndex(i) as UPCRMResultRow; fieldArray = new List <UPMField>(); var v = crmRow.Values(); for (j = 0; j < v.Count; j++) { UPMStringField field2 = new UPMStringField(StringIdentifier.IdentifierWithStringId($"cell{i}_{j}")) { StringValue = v[j], RawStringValue = crmRow.RawValueAtIndex(j) }; fieldArray.Add(field2); } listRow.Fields = fieldArray; section.AddResultRow(listRow); for (j = 0; j < numberOfResultTables; j++) { var label = contextMenuOptions[j] as string; if (label.Length == 0) { continue; } string recordIdentification = crmRow.RecordIdentificationAtIndex(j); if (recordIdentification?.Length > 0) { UPMOrganizerAnalysisShowRecordAction showRecordAction = new UPMOrganizerAnalysisShowRecordAction(StringIdentifier.IdentifierWithStringId($"action.row {i} record {j}")) { RecordIdentification = recordIdentification }; showRecordAction.SetTargetAction(this, this.PerformShowRecordAction); showRecordAction.LabelText = label; listRow.AddDetailAction(showRecordAction); } } } this.TopLevelElement = searchPage; this.InformAboutDidChangeTopLevelElement(oldPage, searchPage, null, null); }