예제 #1
0
 public ViewFilterControl()
 {
     InitializeComponent();
     m_sorter = new FilterSorter(0);
     listViewFilters.ListViewItemSorter = m_sorter;
     PopulateComboBox(comboBoxDecision, typeof(FilterDecision));
     PopulateComboBox(comboBoxFilterComparison, typeof(FilterComparison));
 }
예제 #2
0
        public static IComparer <Filter> GetComparer()
        {
            if (sorter == null)
            {
                sorter = new FilterSorter();
            }

            return(sorter);
        }
예제 #3
0
 void filterDialog_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     if (filterDialog.DialogResult == true)
     {
         filterValues = filterDialog.PropValuePair;
         PropSort     = filterDialog.PropSort;
         BindGrid();
         pivotDgInvTrans.RefreshData();
     }
     e.Cancel = true;
     filterDialog.Hide();
 }
 private Task FilterData(IEnumerable<PropValuePair> propValuePair, FilterSorter sorter)
 {
     return dgProjectTransaction.Filter(propValuePair, sorter);
 }
        private void FilterDialog_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (filterDialog.DialogResult == true)
            {
                var filtersProps = filterDialog.Filters.Select(p => new FilterProperties()
                {
                    PropertyName = p.name, UserInput = p.value, ParameterType = p.parameterType
                });
                filterValues = filterDialog.PropValuePair;
                PropSort     = filterDialog.PropSort;
                if (lstOfFilters.ContainsKey(selectedDataSourceName))
                {
                    if (filterValues == null || filterValues.Count() == 0)
                    {
                        lstOfFilters.Remove(selectedDataSourceName);
                    }
                    else
                    {
                        lstOfFilters[selectedDataSourceName] = filterValues;
                    }
                }
                else
                {
                    if (filterValues != null && filterValues.Count() > 0)
                    {
                        lstOfFilters.Add(selectedDataSourceName, filterValues);
                    }
                }

                if (lstOfNewFilters.ContainsKey(selectedDataSourceName))
                {
                    if (filtersProps == null || filtersProps.Count() == 0)
                    {
                        lstOfNewFilters.Remove(selectedDataSourceName);
                    }
                    else
                    {
                        lstOfNewFilters[selectedDataSourceName] = filtersProps?.ToList();
                    }
                }
                else
                {
                    if (filtersProps != null && filtersProps.Count() > 0)
                    {
                        lstOfNewFilters.Add(selectedDataSourceName, filtersProps?.ToList());
                    }
                }

                if (lstOfSorters.ContainsKey(selectedDataSourceName))
                {
                    if (PropSort == null || PropSort.sortingProperties.Count() == 0)
                    {
                        lstOfSorters.Remove(selectedDataSourceName);
                    }
                    else
                    {
                        lstOfSorters[selectedDataSourceName] = PropSort;
                    }
                }
                else
                {
                    if (PropSort != null && PropSort.sortingProperties.Count() > 0)
                    {
                        lstOfSorters.Add(selectedDataSourceName, PropSort);
                    }
                }
                LoadOnOpen = true;
                DataDashboardItem dataItem = FocusedItem as DataDashboardItem;
                if (dataItem == null)
                {
                    return;
                }
                string dsComponentName = dataItem.DataSource.ComponentName;
                if (!dataSourceLoadingParams.Contains(dsComponentName))
                {
                    dataSourceLoadingParams.Add(dsComponentName);
                }
                dashboardViewerUniconta.ReloadData();
            }
            e.Cancel = true;
            filterDialog.Hide();
        }
        public void OpenFilterDialog()
        {
            try
            {
                if (!string.IsNullOrEmpty(selectedDataSourceName) && tableType != null)
                {
                    if (lstOfFilters.ContainsKey(selectedDataSourceName))
                    {
                        filterValues = lstOfFilters[selectedDataSourceName];
                    }
                    else
                    {
                        filterValues = null;
                    }

                    List <FilterProperties> filterProps;
                    if (lstOfNewFilters.ContainsKey(selectedDataSourceName))
                    {
                        filterProps = lstOfNewFilters[selectedDataSourceName];
                    }
                    else
                    {
                        filterProps = null;
                    }

                    if (lstOfSorters.ContainsKey(selectedDataSourceName))
                    {
                        PropSort = lstOfSorters[selectedDataSourceName];
                    }
                    else
                    {
                        PropSort = null;
                    }
                    Filter[]            filters = null;
                    SortingProperties[] sorters = null;
                    //if (filterValues != null)
                    //    filters = Utility.CreateDefaultFilter(filterValues, tableType);
                    if (filterValues != null)
                    {
                        filters = filterProps.Select(p => new Filter()
                        {
                            name = p.PropertyName, value = p.UserInput, parameterType = p.ParameterType
                        }).ToArray();
                    }
                    if (PropSort != null)
                    {
                        sorters = Utility.CreateDefaultSort(PropSort);
                    }
                    var fixedComp = fixedCompanies?.FirstOrDefault(x => x.DatasourceName == selectedDataSourceName);
                    if (fixedComp == null || this.company.CompanyId == fixedComp.CompanyId)
                    {
                        filterDialog = new CWServerFilter(api, tableType, filters, sorters, null);
                    }
                    else
                    {
                        var comp    = CWDefaultCompany.loadedCompanies.FirstOrDefault(x => x.CompanyId == fixedComp.CompanyId) as Company;
                        var compApi = new CrudAPI(api.session, comp);
                        filterDialog = new CWServerFilter(compApi, tableType, filters, sorters, null);
                    }
                    filterDialog.Closing += FilterDialog_Closing;
                    filterDialog.Show();
                }
            }
            catch (Exception ex)
            {
                UnicontaMessageBox.Show(ex);
            }
        }
        private bool ReadDataFromDB(byte[] selectedDashBoardBinary)
        {
            busyIndicator.IsBusy = true;
            bool retVal = true;

            try
            {
                lstOfFilters.Clear();
                lstOfNewFilters.Clear();
                var customReader = StreamingManagerReuse.Create(selectedDashBoardBinary);
                var version      = customReader.readByte();
                if (version < 1 || version > 3)
                {
                    return(false);
                }

                var bufferedReport = StreamingManager.readMemory(customReader);
                var st             = Compression.UncompressStream(bufferedReport);

                if (version < 3 && customReader.readBoolean())
                {
                    int filterCount = (int)customReader.readNum();
                    for (int i = 0; i < filterCount; i++)
                    {
                        var key        = customReader.readString();
                        var arrpropval = (PropValuePair[])customReader.ToArray(typeof(PropValuePair));
                        lstOfFilters.Add(key, arrpropval);
                    }
                }
                else if (version == 3)
                {
                    if (customReader.readBoolean())
                    {
                        int filterCount = (int)customReader.readNum();
                        for (int i = 0; i < filterCount; i++)
                        {
                            var key       = customReader.readString();
                            var arrFilter = (FilterProperties[])customReader.ToArray(typeof(FilterProperties));
                            lstOfNewFilters.Add(key, arrFilter.ToList());
                        }
                    }
                    if (customReader.readBoolean())
                    {
                        int filterCount = (int)customReader.readNum();
                        for (int i = 0; i < filterCount; i++)
                        {
                            var key = customReader.readString();
                            List <PropValuePair> propVal = new List <PropValuePair>();
                            var arrpropval = (PropValuePair[])customReader.ToArray(typeof(PropValuePair));
                            propVal = arrpropval.ToList();
                            lstOfFilters.Add(key, arrpropval);
                        }
                    }
                }
                if (customReader.readBoolean())
                {
                    int sortCount = (int)customReader.readNum();
                    for (int i = 0; i < sortCount; i++)
                    {
                        var          key      = customReader.readString();
                        var          arrSort  = (SortingProperties[])customReader.ToArray(typeof(SortingProperties));
                        FilterSorter propSort = new FilterSorter(arrSort);
                        if (lstOfSorters != null && !lstOfSorters.ContainsKey(key))
                        {
                            lstOfSorters.Add(key, propSort);
                        }
                    }
                }
                customReader.Release();

                XDocument xdoc    = XDocument.Load(st);
                var       element = xdoc.Root.Attributes().Where(x => x.Name == "RefreshTimer").FirstOrDefault();
                if (element != null)
                {
                    int refreshTimer = (int)NumberConvert.ToInt(element.Value);
                    if (refreshTimer > 0)
                    {
                        if (timer == null)
                        {
                            timer = new System.Windows.Forms.Timer();
                        }
                        timer.Interval = refreshTimer < 300 ? 300 * 1000 : refreshTimer * 1000;
                        timer.Tick    += Timer_Tick;
                        timer.Start();
                    }
                }
                ShowBusyIndicator();
                st.Seek(0, System.IO.SeekOrigin.Begin);
                dashboardViewerUniconta.LoadDashboard(st);
                st.Release();
                return(retVal);
            }
            catch (Exception ex)
            {
                ClearBusy();
                UnicontaMessageBox.Show(ex);
                CloseDockItem();
                return(false);
            }
        }
        private void DashboardViewerUniconta_DashboardLoaded(object sender, DevExpress.DashboardWpf.DashboardLoadedEventArgs e)
        {
            Dashboard dasdboard = e.Dashboard;

            foreach (var item in dasdboard?.Items)
            {
                var name = dasdboard?.CustomProperties.GetValue(item.ComponentName);
                if (name != null)
                {
                    if (name[0] == '&')
                    {
                        item.Name = Uniconta.ClientTools.Localization.lookup(name.Substring(1));
                    }
                    ;
                }
            }

            if (!dasdboard.Title.ShowMasterFilterState)
            {
                rowFilter.Visibility = Visibility.Collapsed;
            }

            XElement data = e.Dashboard.UserData;

            if (data != null)
            {
                var state = data.Element("DashboardState");
                if (state != null)
                {
                    dState.LoadFromXml(XDocument.Parse(state.Value));
                }

                var fixedComps = data.Element("FixedCompanies");
                if (fixedComps != null)
                {
                    fixedCompanies = null;
                    var rootelement = XElement.Parse(fixedComps.ToString());
                    foreach (var el in rootelement.Elements())
                    {
                        var fxdComps = XDocument.Parse(el.ToString()).Elements("FixedCompany")
                                       .Select(p => new FixedCompany
                        {
                            CompanyId      = int.Parse(p.Element("CompanyId").Value),
                            DatasourceName = p.Element("DatasourceName").Value
                        }).ToList();
                        if (fixedCompanies != null)
                        {
                            fixedCompanies.AddRange(fxdComps);
                        }
                        else
                        {
                            fixedCompanies = fxdComps;
                        }
                    }

                    if (fixedCompanies != null)
                    {
                        for (int i = 0; i < fixedCompanies.Count; i++)
                        {
                            var comp     = CWDefaultCompany.loadedCompanies.FirstOrDefault(x => x.CompanyId == fixedCompanies[i].CompanyId) as Company;
                            var openComp = OpenFixedCompany(comp).GetAwaiter().GetResult();
                            if (openComp != null)
                            {
                                openComp.GenerateUserType();
                                LoadListOfTableTypes(openComp);
                            }
                            else
                            {
                                UnicontaMessageBox.Show(Uniconta.ClientTools.Localization.lookup("UserNoAccessToCompany"), Uniconta.ClientTools.Localization.lookup("Information"));
                            }
                        }
                    }
                }

                var ldOnOpn = data.Element("LoadOnOpen");
                if (ldOnOpn != null)
                {
                    LoadOnOpen = bool.Parse(ldOnOpn.Value);
                }

                var userId = data.Element("LogedInUserIdFilter");
                if (userId != null)
                {
                    UserIdPropName = userId.Value;
                }

                var filters = data.Element("Filters");
                if (filters != null)
                {
                    var filtersBytes = Convert.FromBase64String(filters.Value);
                    var r            = StreamingManagerReuse.Create(filtersBytes);
                    int version      = r.readByte();
                    if (version != 0)
                    {
                        if (version < 3 && r.readBoolean())
                        {
                            int filterCount = (int)StreamingManager.readNum(r);
                            for (int i = 0; i < filterCount; i++)
                            {
                                var key = r.readString();
                                List <PropValuePair> propVal = new List <PropValuePair>();
                                var arrpropval = (PropValuePair[])r.ToArray(typeof(PropValuePair));
                                propVal = arrpropval.ToList();
                                lstOfFilters.Add(key, arrpropval);
                            }
                        }
                        else
                        {
                            int filterCount = (int)StreamingManager.readNum(r);
                            for (int i = 0; i < filterCount; i++)
                            {
                                var key       = r.readString();
                                var arrFilter = (FilterProperties[])r.ToArray(typeof(FilterProperties));
                                lstOfNewFilters.Add(key, arrFilter.ToList());
                            }
                        }
                    }
                    if (r.readBoolean())
                    {
                        if (version < 3)
                        {
                            int sortCount = (int)r.readNum();
                            for (int i = 0; i < sortCount; i++)
                            {
                                var          key      = r.readString();
                                var          arrSort  = (SortingProperties[])r.ToArray(typeof(SortingProperties));
                                FilterSorter propSort = new FilterSorter(arrSort);
                                lstOfSorters.Add(key, propSort);
                            }
                        }
                    }
                    r.Release();
                }
            }
            else
            {
                LoadOnOpen = true;  // for old saved dashboards
            }
            if (LoadOnOpen)
            {
                foreach (var ds in e.Dashboard.DataSources)
                {
                    dataSourceLoadingParams.Add(ds.ComponentName);
                }
            }
        }