Exemplo n.º 1
0
 /// <summary>
 /// Realiza a consulta de registros specificados no Paper e estoca os registros
 /// obtidos no cache indicado.
 /// </summary>
 /// <param name="paper">A instância de IPaper que contém as consultas a dados.</param>
 /// <param name="cache">O cache para estocagem dos registros consultados.</param>
 public static void CacheData(IPaper paper, EntryCollection cache)
 {
     if (paper._Has("GetCards"))
     {
         var data = paper._Call("GetCards");
         if (data != null)
         {
             var dataWrapper = DataWrapperEnumerable.Create(data);
             cache.Set(CacheKeys.Cards, dataWrapper);
         }
     }
 }
Exemplo n.º 2
0
 public static Sort AddFieldsFrom(this Sort sort, object data)
 {
     if (data is IEnumerable && !(data is IDictionary))
     {
         var wrapper = DataWrapperEnumerable.Create(data);
         sort.AddRange(wrapper.EnumerateKeys());
     }
     else
     {
         var wrapper = DataWrapper.Create(data);
         sort.AddRange(wrapper.EnumerateKeys());
     }
     return(sort);
 }
Exemplo n.º 3
0
        private static void AddRowsAndLinks(IPaper paper, Entity entity, PaperContext ctx, DataWrapperEnumerable cards)
        {
            var keys = cards.EnumerateKeys().ToArray();

            foreach (DataWrapper card in cards)
            {
                var rowEntity = new Entity();
                rowEntity.AddRel(Rel.Card);

                foreach (var key in keys)
                {
                    var value = card.GetValue(key);
                    rowEntity.AddProperty(key, value);
                }

                var linkRenderers = paper._Call <IEnumerable <ILink> >("GetCardLinks", card.DataSource);
                if (linkRenderers != null)
                {
                    foreach (var linkRenderer in linkRenderers)
                    {
                        var link = linkRenderer.RenderLink(ctx);
                        if (link != null)
                        {
                            link.Rel?.Remove(RelNames.Link);
                            var isSelf = (link.Rel?.Contains(RelNames.Self) == true);
                            if (!isSelf)
                            {
                                link.AddRel(RelNames.Self);
                            }
                            rowEntity.AddLink(link);
                        }
                    }
                }

                entity.AddEntity(rowEntity);
            }
        }
Exemplo n.º 4
0
        private static void AddRowHeaders(IPaper paper, Entity entity, PaperContext ctx, DataWrapperEnumerable rows)
        {
            // Adicionando os campos autodetectados
            //
            var keys = rows.EnumerateKeys().ToArray();

            foreach (var key in keys)
            {
                var header = rows.GetHeader(key);
                entity.AddRowHeader(header);
            }

            // Adicionando os campos personalizados
            //
            var headers = paper._Call <IEnumerable <HeaderInfo> >("GetRowHeaders", rows.DataSource);

            if (headers != null)
            {
                if (!(headers is IList))
                {
                    headers = headers.ToArray();
                }

                entity.AddRowHeaders(headers);

                // Ocultando as colunas não personalizadas
                //
                entity.ForEachRowHeader((e, h) =>
                {
                    h.Hidden = !headers.Any(x => x.Name.EqualsIgnoreCase(h.Name));
                });
            }

            // Adicionando informação de ordenação
            //
            var sort = paper._Get <Sort>("Sort");

            if (sort != null)
            {
                entity.ForEachRowHeader((e, h) =>
                                        AddRowHeaderSortInfo(paper, ctx, sort, e, h)
                                        );
            }
        }