private void DuplicatePhaidraAttributeExecute(object obj) { if (SelectedField != null) { var maxIndex = _phaidraAttributeFields.Where(i => i.PhaidraAttribute == SelectedField.PhaidraAttribute).Max(i => i.Set.Index); var set = new PhaidraMetadataSet(maxIndex + 1); int foundIndexForInsertion = -1; for (int i = _phaidraAttributeFields.Count - 1; i >= 0; i--) { if (_phaidraAttributeFields[i].PhaidraAttribute == SelectedField.PhaidraAttribute) { foundIndexForInsertion = i; break; } } foreach (var field in SelectedField.PhaidraAttribute.Fields) { var attrField = new PhaidraAttributeField() { PhaidraAttribute = SelectedField.PhaidraAttribute, Field = new KeyValuePair <string, string>(field.Key, field.Value), Set = set }; if (foundIndexForInsertion > -1) { _phaidraAttributeFields.Insert(foundIndexForInsertion + 1, attrField); foundIndexForInsertion++; } else { _phaidraAttributeFields.Add(attrField); } } FilterFields(); } }
public MappingsViewModel(Dictionary <int, string> headers, List <Dictionary <int, string> > rows, string rootDir) { _headers = headers; _rows = rows; _rootDir = rootDir; _currentRowIndex = 0; AddMappingCommand = new Command(AddMappingExecute, AddMappingCanExecute); DeleteSelectedMappingCommand = new Command(RemoveSelectedMappingExecute, RemoveSelectedMappingCanExecute); OKCommand = new Command(OKExecute); ResetMappingsCommand = new Command(ResetMappingsExecute); PreviousRowCommand = new Command(PreviousRowExecute, PreviousRowCanExecute); NextRowCommand = new Command(NextRowExecute, NextRowCanExecute); SelectPhaidraAttributeFieldCommand = new Command(SelectPhaidraAttributeFieldExecute, SelectPhaidraAttributeFieldCanExecute); DuplicateCsvColumnCommand = new Command(DuplicateCsvColumnExecute); DebugCommand = new Command(DebugExecute); CsvColumns = new ObservableCollection <CsvColumn>(); PhaidraAttributes = new ObservableCollection <PhaidraAttribute>(); //Mappings = new ObservableCollection<PhaidraMapping>(); Mappings2 = new ObservableCollection <PhaidraAttributeField2CsvColumn2>(); PhaidraAttributeFields = new ObservableCollection <PhaidraAttributeField>(); SelectedMappingPhaidraAttributesField2CsvColumns = new ObservableCollection <PhaidraAttributeField2CsvColumn>(); CsvColumns.Add(CsvColumn.Empty); foreach (var header in _headers) { CsvColumns.Add(new CsvColumn { Name = header.Value, Header = header }); } SetCsvColumnValues(); var attributes = PhaidraAttribute.GetPhaidraAttributes(); var attributeFields = new List <PhaidraAttributeField>(); attributeFields.Add(PhaidraAttributeField.Empty); foreach (var attribute in attributes) { PhaidraAttributes.Add(attribute); var set = new PhaidraMetadataSet(); //marks belonging fields (used when duplicating field sets) foreach (var field in attribute.Fields) { attributeFields.Add(new PhaidraAttributeField() { PhaidraAttribute = attribute, Field = field, Set = set }); } } foreach (var attributeField in attributeFields.OrderBy(i => i.DisplayName)) { PhaidraAttributeFields.Add(attributeField); } //PhaidraAttributes.Add(new FilenamePhaidraAttribute()); //PhaidraAttributes.Add(new CollectionPhaidraAttribute()); //PhaidraAttributes.Add(new AssociationPhaidraAttribute()); //PhaidraAttributes.Add(new AccessRestrictionPhaidraAttribute()); //PhaidraAttributes.Add(new TitlePhaidraAttribute()); //PhaidraAttributes.Add(new DescriptionPhaidraAttribute()); //PhaidraAttributes.Add(new DateArrayPhaidraAttribute("Creation date", "Creation date", "dcterms:created")); //PhaidraAttributes.Add(new DateArrayPhaidraAttribute("Date of production", "Date of production", "rdau:P60071")); //PhaidraAttributes.Add(new RolePhaidraAttribute("Photographer", "role:pht")); //PhaidraAttributes.Add(new RolePhaidraAttribute("Author", "role:aut")); ResetMappings(); }