Exemplo n.º 1
0
        public override async Task <IViewProviderResult> BuildEditAsync(Topic topic, IViewProviderContext updater)
        {
            List <int> selectedLabels;

            // Persist state on post back
            if (_request.Method == "POST")
            {
                selectedLabels = await GetLabelsToAddAsync();
            }
            else
            {
                // Get entity labels
                var labels = await GetEntityLabelsByEntityIdAsync(topic.Id);

                selectedLabels = labels?.Select(l => l.LabelId).ToList();
            }

            var viewModel = new LabelDropDownViewModel()
            {
                Options = new LabelIndexOptions()
                {
                    FeatureId = await GetFeatureIdAsync()
                },
                HtmlName       = LabelHtmlName,
                SelectedLabels = selectedLabels?.ToArray()
            };

            return(Views(
                       View <LabelDropDownViewModel>("Topic.Labels.Edit.Sidebar", model => viewModel).Zone("sidebar")
                       .Order(2)
                       ));
        }
Exemplo n.º 2
0
        public async Task <IViewComponentResult> InvokeAsync(LabelDropDownViewModel model)
        {
            if (model.SelectedLabels == null)
            {
                model.SelectedLabels = new int[0];
            }

            var labels = await BuildSelectionsAsync(model);

            if (labels != null)
            {
                model.LabelsJson = labels.Serialize();
            }

            return(View(model));
        }
Exemplo n.º 3
0
        private async Task <IEnumerable <LabelApiResult> > BuildSelectionsAsync(LabelDropDownViewModel model)
        {
            if (model.SelectedLabels == null)
            {
                return(new List <LabelApiResult>());
            }

            if (((int[])model.SelectedLabels).Length == 0)
            {
                return(new List <LabelApiResult>());
            }

            // Get all labels for selected ids
            var labels = await _labelStore.QueryAsync()
                         .Select <LabelQueryParams>(q =>
            {
                q.Id.IsIn(model.SelectedLabels.ToArray());
            })
                         .OrderBy("TotalEntities", OrderBy.Desc)
                         .ToList();

            // Build results
            var results = new List <LabelApiResult>();

            if (labels?.Data != null)
            {
                foreach (var label in labels.Data)
                {
                    results.Add(new LabelApiResult()
                    {
                        Id          = label.Id,
                        Name        = label.Name,
                        Description = label.Description,
                        ForeColor   = label.ForeColor,
                        BackColor   = label.BackColor
                    });
                }
            }
            return(results);
        }