/// <summary>
        /// Adds the given client-query to the list of queries
        /// </summary>
        /// <param parameterName="parameterExternalName">The parameterName to show to the end user</param>
        /// <param parameterName="table">The table descriptor that the query belongs to</param>
        /// <param parameterName="predicate">The predicate that defines the filter for the query</param>
        /// <param parameterName="parameterDefinitions">The parameter definitions defining the functionParameters to be used</param>
        private LiteQueryViewModel NewUserQuery(string externalName, FeatureTableDescriptor table, System.Linq.Expressions.Expression predicate, ParameterDefinitionCollection parameterDefinitions, bool addToQueries)
        {
            LiteQueryViewModel clientQuery = null;

            if (IsAuthenticated && Queries != null)
            {
                var predicateText = predicate != null?predicate.GeoLinqText(useInternalParameterNames : true) : null;

                var queryDefinition = new FeatureCollectionQueryDefinition()
                {
                    ServiceProviderGroup = table.ServiceProviderGroup,
                    Context              = ServiceProviderDatumContext.User,
                    Name                 = externalName.ToLower(),
                    ExternalName         = externalName,
                    TableDescriptor      = table,
                    ParameterDefinitions = parameterDefinitions
                };

                clientQuery = new LiteQueryViewModel(this.Messenger, queryDefinition, predicateText);

                if (addToQueries)
                {
                    Queries.Add(clientQuery);

                    SaveUserQueries();
                }
            }

            return(clientQuery);
        }
 /// <summary>
 /// Detach from the query's remove command and property change notification
 /// </summary>
 /// <param name="query">The query to detach from</param>
 private void DetachQuery(LiteQueryViewModel query)
 {
     if (query != null)
     {
         query.RequestRemoveQuery -= RemoveUserQuery;
         query.PropertyChanged    -= QueryPropertyChanged;
     }
 }
        /// <summary>
        /// Whenever a query is renamed, restore it in the sorted collection
        /// </summary>
        /// <param parameterName="query">The query that was renamed</param>
        private void RenamedQuery(LiteQueryViewModel query)
        {
            if (Queries != null && query != null)
            {
                // Might need to be reordered; reinsert the item
                Queries.Remove(query);
                Queries.Add(query);

                SaveUserQueries();
            }
        }
Exemple #4
0
        /// <summary>
        /// Setup the datacontext for this control
        /// </summary>
        private void SetupDataContext()
        {
            _viewModel = DataContext as LiteQueryViewModel;

            if (_viewModel != null)
            {
                SetBinding(IsExpandedProperty, new Binding(LiteQueryViewModel.IsExpandedPropertyName)
                {
                    Mode = BindingMode.TwoWay
                });
            }

            UpdateVisualState(false);
        }
        /// <summary>
        /// Remove the specified query
        /// </summary>
        /// <param parameterName="query">The query to remove</param>
        private async void RemoveUserQuery(LiteQueryViewModel query)
        {
            if (Queries != null && query != null)
            {
                var caption      = ApplicationResources.QueryRemoveTitle;
                var removeString = string.Format(ApplicationResources.QueryRemoveStringFormat, query.ExternalName);
                var result       = await this.MessageBoxService.ShowAsync(removeString, caption, MessageBoxButton.OKCancel, MessageBoxResult.Cancel);

                if (result == MessageBoxResult.OK)
                {
                    Queries.Remove(query);
                }

                if (query.Query != null && query.Query.Context == ServiceProviderDatumContext.User)
                {
                    SaveUserQueries();
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// Constructs the storage model for the specified model
        /// </summary>
        /// <param name="model"></param>
        public LiteUserQueryStorageModel(LiteQueryViewModel model)
        {
            var query = model.Query;
            var table = query.TableDescriptor;

            ProjectName = TransactionContext.ActiveContext.ProjectName;

            ProviderName  = table.ServiceProviderGroup.ServiceProvider.Name;
            ProviderGroup = new XYServiceProviderGroupDto(table.ServiceProviderGroup, false);
            if (query.ParameterDefinitions != null)
            {
                ParameterDefinitions = new XYParameterDefinitionCollectionDto(query.ParameterDefinitions);
            }

            Name         = model.Name;
            ExternalName = model.ExternalName;

            TableName     = table.Name;
            PredicateText = model.Predicate;
        }
Exemple #7
0
        /// <summary>
        /// Converts the storage model to a QueryViewModel that can be used within Lite.
        /// </summary>
        /// <param name="messenger">The messenger the ViewModel should be connected to</param>
        /// <param name="sources">The sources available for resolution of the Table</param>
        /// <returns>A LiteQueryViewModel</returns>
        public async Task <LiteQueryViewModel> ToUserQueryViewModel(Messenger messenger, ServiceProviderDatumCollection <FeatureSourceDescriptor> sources)
        {
            LiteQueryViewModel result = null;

            if (TransactionContext.ActiveContext.ProjectName == this.ProjectName)
            {
                var serviceProvider = ServiceProviderManager.Instance.ServiceProvider(ProviderName);
                if (serviceProvider != null)
                {
                    var group  = ProviderGroup.ToServiceProviderGroup(serviceProvider);
                    var source = sources.Find(group);

                    if (source != null)
                    {
                        var table = source.TableDescriptors[TableName];

                        // Check the table, since it can have disappeared in the mean-time
                        if (table != null)
                        {
                            // Ensure we have a table with fields and all
                            await table.EvaluateAsync();

                            var parameterDefinitions = this.ParameterDefinitions.ToParameterDefinitionCollection(serviceProvider);
                            var queryDefinition      = new FeatureCollectionQueryDefinition()
                            {
                                ServiceProviderGroup = table.ServiceProviderGroup,
                                Context              = ServiceProviderDatumContext.User,
                                Name                 = Name,
                                ExternalName         = ExternalName,
                                TableDescriptor      = table,
                                ParameterDefinitions = parameterDefinitions
                            };

                            result = new LiteQueryViewModel(messenger, queryDefinition, PredicateText);
                        }
                    }
                }
            }

            return(result);
        }
 /// <summary>
 /// Track the report creation
 /// </summary>
 public static void TrackQueryCreate(LiteQueryViewModel query)
 {
     TrackEvent(Category.Data, Action.Create, query.Name);
 }
 /// <summary>
 /// Track the report creation
 /// </summary>
 public static void TrackQuery(LiteQueryViewModel query, Source source)
 {
     TrackEvent(Category.Data, Action.Query, string.Format("{0} from {1}", query.Name, source.ToString()));
 }