فهرست منبع

Fixed Job Document Set Tag Lookups
Enabled multi-edit of Job Document Sets and Milestones

Frank van den Bos 2 سال پیش
والد
کامیت
ef9f9f7856

+ 3 - 1
prs.classes/Entities/Job/DocumentSet/JobDocumentSetTag.cs

@@ -58,8 +58,10 @@ namespace Comal.Classes
         protected override void DoGenerateLookups()
         {
             Clear();
+            var filter = new Filter<JobDocumentSetTag>(x => x.Type).IsEqualTo(Type);
+            filter = filter.And(new Filter<JobDocumentSetTag>(x => x.Job.ID).IsEqualTo(_jobid).Or(x => x.Job.ID).IsEqualTo(Guid.Empty));
             var tags = new Client<JobDocumentSetTag>().Query(
-                new Filter<JobDocumentSetTag>(x=>x.Type).IsEqualTo(Type).And(x=>x.Job.ID).IsEqualTo(_jobid),
+                filter,
                 new Columns<JobDocumentSetTag>(x => x.ID, x => x.Description),
                 new SortOrder<JobDocumentSetTag>(x => x.Description)
             );

+ 11 - 1
prs.classes/Entities/Job/ITP/JobITPLookups.cs

@@ -6,7 +6,7 @@ namespace Comal.Classes
 {
     public class JobITPLookups : EntityLookup<JobITP>, ILookupDefinition<JobITP, JobBillOfMaterialsItem>,
         ILookupDefinition<JobITP, ManufacturingPacket>,
-        ILookupDefinition<JobITP, Assignment>
+        ILookupDefinition<JobITP, Assignment>,ILookupDefinition<JobITP,JobDocumentSet>
     {
         public Filter<JobITP> DefineFilter(Assignment[] items)
         {
@@ -14,7 +14,17 @@ namespace Comal.Classes
                 return new Filter<JobITP>(x => x.Job.ID).IsEqualTo(items.First().JobLink.ID);
             return DefineFilter();
         }
+        
+        public Filter<JobITP> DefineFilter(JobDocumentSet[] items)
+        {
+            Guid id = items.FirstOrDefault()?.Job.ID ?? Guid.Empty;
+            return new Filter<JobITP>(x => x.Job.ID).IsEqualTo(id);
+        }
 
+        public Columns<JobDocumentSet> DefineFilterColumns()
+            => new Columns<JobDocumentSet>(x => x.Job.ID);
+        
+        
         Columns<Assignment> ILookupDefinition<JobITP, Assignment>.DefineFilterColumns()
             => new Columns<Assignment>(x => x.JobLink.ID);
 

+ 1 - 0
prs.desktop/Panels/Jobs/DocumentSets/JobDocumentSetTree.xaml

@@ -44,6 +44,7 @@
                     Grid.Row="2" 
                     Tag="{Binding Path=Value, Converter={StaticResource descriptionConverter}, ConverterParameter=ID}" 
                     Text="{Binding Path=Value, Converter={StaticResource descriptionConverter}, ConverterParameter=Tags}" 
+                    FontStyle="Italic"
                     VerticalAlignment="Center"
                     Margin="10,0,0,2"
                 />

+ 24 - 18
prs.desktop/Panels/Jobs/DocumentSets/JobDocumentSetTree.xaml.cs

@@ -452,21 +452,24 @@ namespace PRSDesktop
             if (rowColumnIndex.ColumnIndex < 2)
             {
 
-                var document = treeGrid.SelectedItem as DocumentSetNode;
+                var documents = treeGrid.SelectedItems.Select(x => (x as DocumentSetNode)).ToArray();
+                var ids = documents.Select(x => x.ID).ToArray();
                 
                 MenuItem edit = new MenuItem();
                 edit.Header = "Edit Document Set";
-                edit.Click += (o, args) => { EditDocumentSets(new Guid[] { document.ID }); };
+                edit.Click += (o, args) => { EditDocumentSets(ids); };
                 MileStoneMenu.Items.Add(edit);
-
-                MileStoneMenu.Items.Add(new Separator());
-                
-                MenuItem addchild = new MenuItem();
-                addchild.Header = "Add Child";
-                addchild.Click += (o,args) => { AddChildDocument(document); };
-                MileStoneMenu.Items.Add(addchild);
                 
-                var documents = treeGrid.SelectedItems.Select(x => (x as DocumentSetNode));
+                if (documents.Length == 1)
+                {
+                    MileStoneMenu.Items.Add(new Separator());
+                    MenuItem addchild = new MenuItem();
+                    addchild.Header = "Add Child";
+                    addchild.Click += (o, args) => { AddChildDocument(documents.First()); };
+                    MileStoneMenu.Items.Add(addchild);
+                }
+
+
                 MenuItem movetofolder = new MenuItem();
                 movetofolder.Header = "Move To Folder";
                 bool hasfolders = PopulateFolders(movetofolder, documents);
@@ -573,15 +576,17 @@ namespace PRSDesktop
                 }
 
                 MileStoneMenu.Items.Add(setstatus);
+                
+                MenuItem editmilestone = new MenuItem() { Header = "Edit MileStone" };
+                editmilestone.Click += (o, args) => { EditMileStones(milestones); };
+                MileStoneMenu.Items.Add(editmilestone);
 
 
                 //var closed = milestones.Any(r => !r.Get<JobDocumentSetMileStone, DateTime>(c => c.Closed).IsEmpty());
                 if ((setids.Length == 1) && (milestones.Length == 1)) // && !closed)
                 {
                     
-                    MenuItem editmilestone = new MenuItem() { Header = "Edit MileStone" };
-                    editmilestone.Click += (o, args) => { EditMileStone(milestones[0]); };
-                    MileStoneMenu.Items.Add(editmilestone);
+
 
                     var attachments = milestones[0].Get<JobDocumentSetMileStone, int>(x => x.Attachments);
                     if (attachments > 1)
@@ -1109,13 +1114,14 @@ namespace PRSDesktop
             Refresh();
         }
 
-        private void EditMileStone(CoreRow row)
+        private void EditMileStones(CoreRow[] rows)
         {
-            var milestone = new Client<JobDocumentSetMileStone>().Query(
-                new Filter<JobDocumentSetMileStone>(x => x.ID).IsEqualTo(row.Get<JobDocumentSetMileStone, Guid>(x => x.ID))
-            ).Rows.FirstOrDefault()?.ToObject<JobDocumentSetMileStone>();
+            var ids = rows.Select(r => r.Get<JobDocumentSetMileStone, Guid>(x => x.ID)).ToArray();
+            var milestones = new Client<JobDocumentSetMileStone>().Query(
+                new Filter<JobDocumentSetMileStone>(x => x.ID).InList(ids)
+            ).Rows.Select(r=>r.ToObject<JobDocumentSetMileStone>()).ToArray();
             var grid = new JobDocumentSetMileStoneGrid();
-            if (grid.EditItems(new[] { milestone }))
+            if (grid.EditItems(milestones))
                 Refresh();
         }