Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

more on component model and database initialization #10

Open
adriatic opened this issue Apr 4, 2017 · 0 comments
Open

more on component model and database initialization #10

adriatic opened this issue Apr 4, 2017 · 0 comments

Comments

@adriatic
Copy link
Member

adriatic commented Apr 4, 2017

This article is a continuation of this section - as it seems that I "waffled" in my response to @Thanood's question. In other words, whatever my answer was, this text here supersedes it in full.

The CatalogContextSeedData.cs file defines the autocomplete entity to be

    sampleTag = "Autocomplete";
    var autocompleteComponent = new Component()
    {
        DateCreated = DateTime.UtcNow,
        Name = sampleTag,
        CreatorName = "@catalogAdmin",
        ComponentTags = new List<ComponentTag>() { new ComponentTag { cTag = "autocomplete" } },
        Samples = new List<Sample>()
        {
            new Sample() { Name = "basic-use", gist = "0ddb2e1d4ff26b988382c9150d4fc475" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "basic-use" } } },
            new Sample() { Name = "api", gist = "55999353554add4f866b26481f0ad555" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "api" } } },
            new Sample() { Name = "customizing-templates", gist = "f4755c3c68dab68260647851ff9e52a0" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "customizing-templates" } } },
            new Sample() { Name = "events", gist = "625fc6a733b599fa9374d732ae5e696d" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "events" } } },
            new Sample() { Name = "server-filtering", gist = "65f25b1fb2e07ec4e2749d21136650e7" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "server-filtering" } } },
            new Sample() { Name = "virtualization", gist = "1abf5f5fbb4d3e1306385506bc676aff" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "virtualization" } } },
            new Sample() { Name = "grouping", gist = "5da30e9c363cf37fe3e313476a65edb4" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "grouping" } } },
            new Sample() { Name = "value-binding", gist = "ba981cf9b774273a75bb6a4dedf21190" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "value-binding" } } },
            new Sample() { Name = "highlighting", gist = "078dec4fe353ff9214ef6d5ee0e091a7" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "highlighting" } } },
            new Sample() { Name = "with.bind", gist = "2fa190db778824c2b406b10c673ae9ae" , sampleTags = new List<SampleTag>() { new SampleTag { sTag = "with.bind" } } },
        }
    };

The entity ComponentTags is defined here as

 ComponentTags = new List<ComponentTag>() { new ComponentTag { cTag = "autocomplete" } }

which states that the object containing the tags for a component is a List of ComponentTag objects, which in turn are almost "plain strings" (objects consisting of a string, containing the actual tag and the index of that tag

    public class ComponentTag
    {
        public int Id { get; set; }
        public string cTag { get; set; }
    }

One could say that this ComponentTag is unnecessary, since it is an element of a List which already implies ordering and the Id is redundant - and this is where I initially answered that my original code is wrong.

As @JeroenVinke takes over this part (being kind to bail me out of my "deep water" situation) - this can be resolved by either replacing List with an unordered Collection, or any other way.

Note that I wanted to preserve the ComponentTag class to remain in the form it is now, so we can enrich it later.

Note that the code being discussed here is created by the GenerateSampleHeader(title, componentName) function. So, if the decision will be made to change the initialization code for all components - that would be a simple thing to do and I will recreate the database once someone defines this change for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant