예제 #1
0
 public DataTypeViewModel(DocumentIdViewModel id,
                          DocumentUriViewModel uri,
                          TitlesViewModel titlesViewModel,
                          SyntaxViewModel syntaxViewModel,
                          DocumentReferenceViewModel @base,
                          LocationViewModel location,
                          InheritanceViewModel inheritance,
                          ParametersViewModel parameters,
                          ReturnsViewModel returns,
                          UxClassPropertiesViewModel uxProperties,
                          ValuesViewModel values,
                          CommentViewModel comment,
                          DocumentReferenceViewModel declaredIn,
                          ImplementedInterfacesViewModel implementedInterfaces,
                          AttributesViewModel attributes,
                          IEntity underlyingEntity)
     : base(id, uri, titlesViewModel, syntaxViewModel, comment, declaredIn, underlyingEntity)
 {
     Base                  = @base;
     Location              = location;
     Inheritance           = inheritance;
     Parameters            = parameters;
     Returns               = returns;
     UxProperties          = uxProperties;
     Values                = values;
     ImplementedInterfaces = implementedInterfaces;
     Attributes            = attributes;
 }
예제 #2
0
 public SwizzlerTypeViewModel(DocumentIdViewModel id,
                              DocumentUriViewModel uri,
                              TitlesViewModel titles,
                              CommentViewModel comment)
     : base(id, uri, titles, null, comment, null, null)
 {
 }
예제 #3
0
 public NamespaceViewModel(DocumentIdViewModel id,
                           DocumentUriViewModel uri,
                           TitlesViewModel titles,
                           SyntaxViewModel syntax,
                           CommentViewModel comment)
     : base(id, uri, titles, syntax, comment, null, null)
 {
 }
예제 #4
0
        void AddMemberToTarget(Member member, DataType parentDataType, HashSet <DocumentViewModel> target)
        {
            // If this is some kind of overridden member, try to resolve the original declaration as it's the one that's
            // interesting to us
            member = ResolveOriginalDeclaration(member);

            // NOTE: Instead of just using GetUri and GetId directly on the entity to generate the ID, we use the
            // signature variants of the uri/id methods instead and prefix it with the uri and id of the containing
            // data type.
            //
            // This is done to properly support flattening inherited members into the data exchange format used by the
            // compiler backend; while the ToString() method on a type that inherits from Uno.Object without overriding
            // ToString() directly will have the ToString() method listed when using the EnumerateFlattenedMethods()
            // extension method, that method will still belong to Uno.Object and not the type that inherited the method.
            //
            // The data structure requires the type to own its own inherited methods, hence we do it like this.
            var id  = parentDataType.GetUri() + "/" + member.GetUriSignature();
            var uri = GetMemberUri(member, parentDataType);

            var comment = _commentParser.Read(member);
            var ns      = parentDataType.FindNamespace();
            var titles  = new TitlesViewModel(Naming.GetPageTitle(member),
                                              Naming.GetIndexTitle(member),
                                              Naming.GetFullIndexTitle(member),
                                              Naming.GetNavigationTitle(member),
                                              member.FullName);
            var syntax       = new SyntaxViewModel(Syntax.BuildUnoSyntax(member, parentDataType), Syntax.BuildUxSyntax(member));
            var location     = new LocationViewModel(ns.FullName, ns.GetUri(), member.Source.Package.Name, member.Source.Package.Version);
            var declaredIn   = new DataTypeBuilder(Naming, Syntax, Exportable, AttachedMembers, _commentParser).BuildReference(member.DeclaringType);
            var parameters   = GetParameters(member);
            var returns      = GetReturns(member);
            var uxProperties = GetUxProperties(member);
            var values       = BuildValues(member);
            var flags        = BuildFlags(member);
            var attributes   = BuildAttributes(member);

            var type      = GetTypeName(member, comment, uxProperties);
            var isVirtual = uri == null;

            var viewModel = new MemberViewModel(new DocumentIdViewModel(id, parentDataType.GetUri(), type, member.GetModifierNames()),
                                                new DocumentUriViewModel(id, member.GetUri(), isVirtual),
                                                titles,
                                                syntax,
                                                location,
                                                declaredIn,
                                                parameters,
                                                returns,
                                                uxProperties,
                                                values,
                                                flags,
                                                new CommentViewModel(comment),
                                                attributes,
                                                member);

            target.AddIfNotExists(viewModel);
        }
예제 #5
0
        private TitlesViewModel BuildDataTypeTitles(DataType dataType)
        {
            var titles = new TitlesViewModel(Naming.GetPageTitle(dataType),
                                             Naming.GetIndexTitle(dataType),
                                             Naming.GetFullIndexTitle(dataType),
                                             Naming.GetNavigationTitle(dataType),
                                             dataType.QualifiedName);

            return(titles);
        }
예제 #6
0
 public RootViewModel(TitlesViewModel titles)
     : base(new DocumentIdViewModel("__root__", null, "Root", new List <string>()),
            new DocumentUriViewModel("__root__", "index", false),
            titles,
            null,
            null,
            null,
            null)
 {
 }
예제 #7
0
        public ActionResult Index(string searchString)
        {
            ViewBag.Title = "Home Page";

            var model = new TitlesViewModel()
            {
                SearchString = searchString,
            };

            return(View(model));
        }
예제 #8
0
        void AddAttachedMemberToTarget(string name, MemberType memberType, Method underlyingMethod, DataType returnType, DataType parentDataType, HashSet <DocumentViewModel> target)
        {
            var uxAttribute = underlyingMethod.Attributes.SingleOrDefault(e => e.ReturnType.QualifiedName == ExportConstants.UxAttachedPropertySetterAttributeName ||
                                                                          e.ReturnType.QualifiedName == ExportConstants.UxAttachedEventAdderAttributeName);

            if (uxAttribute == null)
            {
                throw new ArgumentException($"UX attached attribute not found on {underlyingMethod.UnoName}");
            }

            var uxAttributeName = uxAttribute.Arguments.Length == 0 ? null : uxAttribute.Arguments[0].ConstantString;

            if (string.IsNullOrWhiteSpace(uxAttributeName))
            {
                throw new ArgumentException($"UX attached attribute did not contain any on {underlyingMethod.UnoName}");
            }
            uxAttributeName = uxAttributeName.ToLowerInvariant()
                              .Replace(".", "_");

            var id     = parentDataType.GetUri() + "/" + uxAttributeName + "_" + underlyingMethod.GetUriSignature();
            var titles = new TitlesViewModel(Naming.GetPageTitle(underlyingMethod),
                                             uxAttribute.Arguments[0].ConstantString,
                                             uxAttribute.Arguments[0].ConstantString,
                                             Naming.GetNavigationTitle(underlyingMethod),
                                             Naming.GetFullIndexTitle(underlyingMethod));
            var declaredIn = new DataTypeBuilder(Naming, Syntax, Exportable, AttachedMembers, _commentParser).BuildReference(underlyingMethod.DeclaringType);
            var parameters = GetParameters(underlyingMethod);
            var returns    = GetReturns(underlyingMethod, returnType);
            var values     = BuildValues(returnType);
            var source     = new AttachedMemberSourceViewModel(underlyingMethod.DeclaringType.GetUri(), Naming.GetIndexTitle(underlyingMethod.DeclaringType));
            var comment    = _commentParser.Read(underlyingMethod);

            if (!Exportable.IsExportableAndVisible(underlyingMethod.DeclaringType))
            {
                throw new Exception($"Found attached UX member {underlyingMethod.FullName} declared inside non-exportable class {underlyingMethod.DeclaringType.FullName}");
            }

            var viewModel = new AttachedMemberViewModel(new DocumentIdViewModel(id, parentDataType.GetUri(), "AttachedUx" + memberType.ToString("G"), new List <string>()),
                                                        new DocumentUriViewModel(id, underlyingMethod.GetUri(), true),
                                                        titles,
                                                        declaredIn,
                                                        parameters,
                                                        returns,
                                                        values,
                                                        source,
                                                        new CommentViewModel(comment),
                                                        underlyingMethod);

            target.AddIfNotExists(viewModel);
        }
예제 #9
0
        void AddNamespaceToTarget(Namespace ns, HashSet <DocumentViewModel> target)
        {
            var titles = new TitlesViewModel(Naming.GetPageTitle(ns),
                                             Naming.GetIndexTitle(ns),
                                             Naming.GetFullIndexTitle(ns),
                                             Naming.GetNavigationTitle(ns),
                                             ns.QualifiedName);
            var syntax    = new SyntaxViewModel(Syntax.BuildUnoSyntax(ns), Syntax.BuildUxSyntax(ns));
            var parentUri = ns.ParentNamespace == null || ns.ParentNamespace.Name == ExportConstants.RootNamespaceName ? null : ns.ParentNamespace.GetUri();

            target.AddIfNotExists(new NamespaceViewModel(new DocumentIdViewModel(ns.GetUri(), parentUri, "Namespace", new List <string>()),
                                                         new DocumentUriViewModel(ns.GetUri(), ns.GetUri(), false),
                                                         titles,
                                                         syntax,
                                                         null));
        }
예제 #10
0
 protected DocumentViewModel(DocumentIdViewModel id,
                             DocumentUriViewModel uri,
                             TitlesViewModel titles,
                             SyntaxViewModel syntax,
                             CommentViewModel comment,
                             DocumentReferenceViewModel declaredIn,
                             IEntity underlyingEntity)
 {
     Id               = id;
     Uri              = uri;
     Titles           = titles;
     Syntax           = syntax;
     Comment          = comment;
     Reference        = new DocumentReferenceViewModel(id, uri, titles);
     DeclaredIn       = declaredIn;
     UnderlyingEntity = underlyingEntity;
 }
예제 #11
0
 public AttachedMemberViewModel(DocumentIdViewModel id,
                                DocumentUriViewModel uri,
                                TitlesViewModel titles,
                                DocumentReferenceViewModel declaredIn,
                                ParametersViewModel parameters,
                                ReturnsViewModel returns,
                                ValuesViewModel values,
                                AttachedMemberSourceViewModel source,
                                CommentViewModel comment,
                                IEntity underlyingEntity)
     : base(id, uri, titles, null, comment, declaredIn, underlyingEntity)
 {
     Parameters = parameters;
     Returns    = returns;
     Values     = values;
     Source     = source;
 }
예제 #12
0
 public MemberViewModel(DocumentIdViewModel id,
                        DocumentUriViewModel uri,
                        TitlesViewModel titles,
                        SyntaxViewModel syntax,
                        LocationViewModel location,
                        DocumentReferenceViewModel declaredIn,
                        ParametersViewModel parameters,
                        ReturnsViewModel returns,
                        UxMemberPropertiesViewModel uxProperties,
                        ValuesViewModel values,
                        MemberFlagsViewModel flags,
                        CommentViewModel comment,
                        AttributesViewModel attributes,
                        IEntity underlyingEntity)
     : base(id, uri, titles, syntax, comment, declaredIn, underlyingEntity)
 {
     Location     = location;
     Parameters   = parameters;
     Returns      = returns;
     UxProperties = uxProperties;
     Flags        = flags;
     Values       = values;
     Attributes   = attributes;
 }
예제 #13
0
 public TitlesView(TitlesViewModel viewModel)
     : base(viewModel)
 {
     InitializeComponent();
 }
예제 #14
0
        public async Task <IActionResult> Index(string sortTypeStr = "имени(возр)", string sortParm = "все", int page = 1)
        {
            this.sortParm    = sortParm;
            this.sortTypeStr = sortTypeStr;
            List <Movie> source = new List <Movie>();

            if (sortParm != "все")
            {
                Genre g = await db.Genres.FirstAsync(el => el.RuGenreName.ToLower() == sortParm);

                List <MovieGenres> MoviesOfCurrentGenre = await db.MoviesGenres.Where(el => el.GenreId == g.Id).ToListAsync();

                foreach (MovieGenres el in MoviesOfCurrentGenre)
                {
                    source.Add(await db.Movies.FirstAsync(m => m.Id == el.MovieId));
                }
            }
            else
            {
                source = db.Movies.ToList();
            }
            switch (sortTypeStr)
            {
            case "имени(возр.)":
            {
                this.sortType = SortType.Name_asc;
                source        = source.OrderBy(s => s.RuTitle).ToList();
                break;
            }

            case "имени(убыв.)":
            {
                this.sortType = SortType.Name_desc;
                source        = source.OrderByDescending(s => s.RuTitle).ToList();
                break;
            }

            case "рейтингу(возр.)":
            {
                this.sortType = SortType.Rating_asc;
                source        = source.OrderBy(s => s.Rating).ToList();
                break;
            }

            case "рейтингу(убыв.)":
            {
                this.sortType = SortType.Rating_desc;
                source        = source.OrderByDescending(s => s.Rating).ToList();
                break;
            }

            case "дате выхода(возр.)":
            {
                this.sortType = SortType.Year_asc;
                source        = source.OrderBy(s => s.ReleaseDate).ToList();
                break;
            }

            case "дате выхода(убыв.)":
            {
                this.sortType = SortType.Year_desc;
                source        = source.OrderByDescending(s => s.ReleaseDate).ToList();
                break;
            }

            default:
                break;
            }
            int count = source.Count;
            var items = source.Skip((page - 1) * pageSize).Take(pageSize).ToList();

            PageViewModel   pageViewModel = new PageViewModel(count, page, pageSize);
            TitlesViewModel viewModel     = new TitlesViewModel
            {
                PageViewModel = pageViewModel,
                Movies        = items,
                sortType      = this.sortType,
                sortParm      = this.sortParm,
                Genres        = genres,
                sortTypeStr   = this.sortTypeStr
            };

            return(View(viewModel));
        }