Skip to content

Commit

Permalink
#338 #324 optimise deploy assembly form loading, fix assembly referen…
Browse files Browse the repository at this point in the history
…ce in template item wizard
  • Loading branch information
josephmcmac committed Nov 8, 2022
1 parent d8dd78f commit 280ae32
Show file tree
Hide file tree
Showing 13 changed files with 110 additions and 71 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using JosephM.Application.Application;
using JosephM.Application.ViewModel;
using JosephM.Application.ViewModel.Dialog;
using JosephM.Application.ViewModel.Shared;
using JosephM.Core.AppConfig;
Expand All @@ -11,7 +10,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;

namespace JosephM.Application.Desktop.Module.ServiceRequest
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class DeployAssemblyDialog : ServiceRequestDialog<DeployAssemblyService,
IVisualStudioService VisualStudioService { get; set; }

public DeployAssemblyDialog(DeployAssemblyService service, IDialogController dialogController, IVisualStudioService visualStudioService, XrmRecordService xrmRecordService, XrmPackageSettings packageSettings)
: base(service, dialogController, null, nextButtonLabel: "Deploy", initialLoadingMessage: "Please wait while loading assembly for grid editing. This may take a while.")
: base(service, dialogController, null, nextButtonLabel: "Deploy")
{
VisualStudioService = visualStudioService;
PackageSettings = packageSettings;
Expand All @@ -54,6 +54,7 @@ protected override void CompleteDialogExtention()

protected override void LoadDialogExtention()
{
LoadingViewModel.LoadingMessage = "Please wait while building and loading assembly information. This may take a while";
//hijack the load method so that we can prepopulate
//the entered request with various details
AssemblyLoadErrorMessage = LoadAssemblyDetails();
Expand Down Expand Up @@ -114,7 +115,7 @@ private string LoadAssemblyDetails()
return "Assembly Cannot By Deployed. No Plugin Classes Were Found In The Assembly";

Request.AssemblyName = assemblyName;
Request.Content = assemblyContent;
Request.SetContent(assemblyContent);

var preAssembly = XrmRecordService.GetFirst(Entities.pluginassembly, Fields.pluginassembly_.name, assemblyName);
if (preAssembly != null)
Expand Down
30 changes: 30 additions & 0 deletions JosephM.Xrm.Vsix.App/Module/DeployAssembly/DeployAssemblyModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,35 @@ namespace JosephM.Xrm.Vsix.Module.DeployAssembly
public class DeployAssemblyModule : ServiceRequestModule<DeployAssemblyDialog, DeployAssemblyService, DeployAssemblyRequest, DeployAssemblyResponse, DeployAssemblyResponseItem>
{
public override string MenuGroup => "Plugins";

public override void RegisterTypes()
{
base.RegisterTypes();
AddWorkflowGroupAutocomplete();
}

private void AddWorkflowGroupAutocomplete()
{
Func<RecordEntryViewModelBase, IEnumerable<AutocompleteOption>> getExistingWorkflowGroups = (recordForm) =>
{
var parentForm = recordForm.ParentForm;
if (parentForm == null)
return new AutocompleteOption[0];
var objectRecord = parentForm.GetRecord() as ObjectRecord;
if (objectRecord == null)
return new AutocompleteOption[0];
var instance = objectRecord.Instance as DeployAssemblyRequest;
if (instance == null)
return new AutocompleteOption[0];
return instance
.PluginTypes
.Select(pt => pt.GroupName)
.Where(g => !string.IsNullOrWhiteSpace(g))
.Distinct()
.Select(s => new AutocompleteOption(s))
.ToArray();
};
this.AddAutocompleteFunction(new AutocompleteFunction(getExistingWorkflowGroups, isValidForFormFunction: (form) => getExistingWorkflowGroups(form).Any(), cacheAsStaticList: true), typeof(PluginType), nameof(PluginType.GroupName));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,18 @@ public DeployAssemblyRequest()

[Hidden]
public string Id { get; set; }
[Hidden]
public string Content { get; set; }

private string content;

public string GetContent()
{
return content;
}

public void SetContent(string value)
{
content = value;
}

[RequiredProperty]
[DisplayOrder(10)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public override void ExecuteExtention(DeployAssemblyRequest request, DeployAssem
if (request.Id != null)
assemblyRecord.SetField(Fields.pluginassembly_.pluginassemblyid, request.Id, service);
assemblyRecord.SetField(Fields.pluginassembly_.name, request.AssemblyName, service);
assemblyRecord.SetField(Fields.pluginassembly_.content, request.Content, service);
assemblyRecord.SetField(Fields.pluginassembly_.content, request.GetContent(), service);
assemblyRecord.SetField(Fields.pluginassembly_.isolationmode, (int)request.IsolationMode, service);
var matchField = Fields.pluginassembly_.pluginassemblyid;

Expand Down
Binary file modified TemplateItems/CSharp/XRM/JosephM XRM Entity JavaScript.zip
Binary file not shown.
Binary file modified TemplateItems/CSharp/XRM/JosephM XRM Entity Plugin.zip
Binary file not shown.
Binary file modified TemplateItems/CSharp/XRM/JosephM XRM Test.zip
Binary file not shown.
Binary file modified TemplateItems/CSharp/XRM/JosephM XRM WorkflowActivity.zip
Binary file not shown.
32 changes: 16 additions & 16 deletions TemplateItems/JosephM XRM Entity JavaScript/MyTemplate.vstemplate
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
<DefaultName>entity.js</DefaultName>
<Name>XRM Entity JavaScript</Name>
<Description>Template For An Entity JavaScript In XRM Solutioon </Description>
<ProjectType>CSharp</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="" TargetFileName="$fileinputname$.js" ReplaceParameters="true">template_javascript.js</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>JosephM.XRM.VSIX, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=25a4b5603b9d4ed3</Assembly>
<FullClassName>JosephM.XRM.VSIX.Wizards.XrmEntityJavaScriptWizard</FullClassName>
</WizardExtension>
<TemplateData>
<DefaultName>entity.js</DefaultName>
<Name>XRM Entity JavaScript</Name>
<Description>Template For An Entity JavaScript In XRM Solutioon </Description>
<ProjectType>CSharp</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="" TargetFileName="$fileinputname$.js" ReplaceParameters="true">template_javascript.js</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>JM Dataverse Toolbelt Dev Kit, Version=3.0.0.0, Culture=Neutral, PublicKeyToken=25a4b5603b9d4ed3</Assembly>
<FullClassName>JosephM.XRM.VSIX.Wizards.XrmEntityJavaScriptWizard</FullClassName>
</WizardExtension>
</VSTemplate>
32 changes: 16 additions & 16 deletions TemplateItems/JosephM XRM Entity Plugin/MyTemplate.vstemplate
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
<DefaultName>Plugin.cs</DefaultName>
<Name>XRM Entity Plugin</Name>
<Description>Template For An Entity Plugin In XRM Solution Template</Description>
<ProjectType>CSharp</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Plugin.cs</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>JosephM.XRM.VSIX, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=25a4b5603b9d4ed3</Assembly>
<FullClassName>JosephM.XRM.VSIX.Wizards.XrmEntityPluginWizard</FullClassName>
</WizardExtension>
<TemplateData>
<DefaultName>Plugin.cs</DefaultName>
<Name>XRM Entity Plugin</Name>
<Description>Template For An Entity Plugin In XRM Solution Template</Description>
<ProjectType>CSharp</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Plugin.cs</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>JM Dataverse Toolbelt Dev Kit, Version=3.0.0.0, Culture=Neutral, PublicKeyToken=25a4b5603b9d4ed3</Assembly>
<FullClassName>JosephM.XRM.VSIX.Wizards.XrmEntityPluginWizard</FullClassName>
</WizardExtension>
</VSTemplate>
32 changes: 16 additions & 16 deletions TemplateItems/JosephM XRM Test/MyTemplate.vstemplate
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
<DefaultName>XrmTest.cs</DefaultName>
<Name>XRM Test</Name>
<Description>Template For A Test Script In XRM Solution Template</Description>
<ProjectType>CSharp</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">XrmTest.cs</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>JosephM.XRM.VSIX, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=25a4b5603b9d4ed3</Assembly>
<FullClassName>JosephM.XRM.VSIX.Wizards.XrmTestWizard</FullClassName>
</WizardExtension>
<TemplateData>
<DefaultName>XrmTest.cs</DefaultName>
<Name>XRM Test</Name>
<Description>Template For A Test Script In XRM Solution Template</Description>
<ProjectType>CSharp</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">XrmTest.cs</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>JM Dataverse Toolbelt Dev Kit, Version=3.0.0.0, Culture=Neutral, PublicKeyToken=25a4b5603b9d4ed3</Assembly>
<FullClassName>JosephM.XRM.VSIX.Wizards.XrmTestWizard</FullClassName>
</WizardExtension>
</VSTemplate>
32 changes: 16 additions & 16 deletions TemplateItems/JosephM XRM WorkflowActivity/MyTemplate.vstemplate
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
<DefaultName>WorkflowActivity.cs</DefaultName>
<Name>XRM Workflow Activity</Name>
<Description>Template For A Dynamics CRM Custom Workflow Activity In XRM Solution Template</Description>
<ProjectType>CSharp</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true" CopyParameters="true">WorkflowActivityTemplate.cs</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>JosephM.XRM.VSIX, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=25a4b5603b9d4ed3</Assembly>
<FullClassName>JosephM.XRM.VSIX.Wizards.XrmWorkflowActivityWizard</FullClassName>
</WizardExtension>
<TemplateData>
<DefaultName>WorkflowActivity.cs</DefaultName>
<Name>XRM Workflow Activity</Name>
<Description>Template For A Dynamics CRM Custom Workflow Activity In XRM Solution Template</Description>
<ProjectType>CSharp</ProjectType>
<SortOrder>10</SortOrder>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
<TemplateContent>
<References />
<ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true" CopyParameters="true">WorkflowActivityTemplate.cs</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>JM Dataverse Toolbelt Dev Kit, Version=3.0.0.0, Culture=Neutral, PublicKeyToken=25a4b5603b9d4ed3</Assembly>
<FullClassName>JosephM.XRM.VSIX.Wizards.XrmWorkflowActivityWizard</FullClassName>
</WizardExtension>
</VSTemplate>

0 comments on commit 280ae32

Please sign in to comment.