public CommanderViewModel(string commanderName, List <string> logs, Languages languages)
        {
            CommanderName = commanderName;

            var entryDatas = JsonConvert.DeserializeObject <List <EntryData> >(IOUtils.GetEntryDatasJson());
            var converter  = new ItemNameConverter(entryDatas);

            State = new State(entryDatas, languages);

            journalEntryConverter = new JournalEntryConverter(converter, State.Cargo, languages);
            blueprintConverter    = new BlueprintConverter(State.Cargo);
            LoadBlueprints();

            languages.PropertyChanged += (o, e) => OnPropertyChanged(nameof(Filters));

            LoadState(logs);

            var datas               = State.Cargo.Select(c => c.Value.Data);
            var ingredientUsed      = Blueprints.SelectMany(blueprint => blueprint.Ingredients);
            var ingredientUsedNames = ingredientUsed.Select(ingredient => ingredient.Entry.Data.Name).Distinct();
            var unusedIngredients   = datas.Where(data => !ingredientUsedNames.Contains(data.Name));

            foreach (var data in unusedIngredients)
            {
                data.Unused = true;
            }
        }