adding update capabilities for classification nodes - #470

Merged
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk
Aug 5, 2022
Merged

adding update capabilities for classification nodes#470
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk

Conversation

@a11smiles

Copy link
Copy Markdown
Contributor

PR Summary

  • Added Update-VSTeamArea and Update-VSTeamIteration wrappers and their base function Update-VSTeamClassificationNodes to allow updates to classification nodes.
  • Updated StartTime and FinishTime to be nullable for iterations, which includes the base classification nodes functions.
  • Updated the ClassificationNode object to provide a direct reference to an iteration's start and finish date, if provided, rather than being required to access them through the InternalObject.
  • Small updates to typos in the documentation.

For the second bullet, consider the following scenario:

In a situation where I'm syncing two projects (e.g. copying iterations from one to another), the current implementation would require me to write the following if-else statement to check if dates are provided because it doesn't allow for a nullable DateTime.

if ($null-eq$Node.InternalObject.Attributes.StartDate) {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path
} else {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate
}

Not allowing a nullable DateTime is okay if the node is net new. However, I have the write this if-else for pre-existing nodes when attempting to simply copy them.

[Add|Update]-VSTeamIteration

Params changed to the following:

[Parameter(Mandatory=$false)]
[Nullable[datetime]] $StartDate,
[Parameter(Mandatory=$false)]
[Nullable[datetime]] $FinishDate,

This also removes the need for these if statements. (Also, AzDO requires that if one date is set, the other MUST also be set. It won't allow a StartDate and not a FinishDate, and vice versa.)

if ($StartDate) {
$params.StartDate=$StartDate
}
if ($FinishDate) {
$params.FinishDate=$FinishDate
}

By making the above changes, I no longer need my original if-else statement. I can simply write the following one line and the null values are accepted.

Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate

PR Checklist

@a11smiles

Copy link
Copy Markdown
ContributorAuthor

@SebastianSchuetze can you run the workflows please? I had a mistype in my unit tests. Thanks!

@SebastianSchuetze

Copy link
Copy Markdown
Contributor

looks like you have green lights. I will review in the next few days.

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check the comments. Nothing serious. Otherwise I will approve as soon as I understand or changes are made. :-)

Comment threadSource/Classes/Provider/ClassificationNode.cs

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry forgot to save my other suggestions @a11smiles :-)

Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
@SebastianSchuetze

Copy link
Copy Markdown
Contributor

@a11smiles anything I can help with to get this PR finished?

a11smilesand others added 6 commits August 2, 2022 21:36
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
@a11smiles

Copy link
Copy Markdown
ContributorAuthor

I wasn't sure how particular you guys were with 'return' vs. 'update'. Thanks for making the changes.

@SebastianSchuetze
SebastianSchuetze enabled auto-merge (squash) August 5, 2022 15:07

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good now, thanks!

@SebastianSchuetze
SebastianSchuetze merged commit 33c5f0c into MethodsAndPractices:trunkAug 5, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a11smiles@SebastianSchuetze
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

adding update capabilities for classification nodes - #470

Merged
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk
Aug 5, 2022
Merged

adding update capabilities for classification nodes#470
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk

Conversation

@a11smiles

Copy link
Copy Markdown
Contributor

PR Summary

  • Added Update-VSTeamArea and Update-VSTeamIteration wrappers and their base function Update-VSTeamClassificationNodes to allow updates to classification nodes.
  • Updated StartTime and FinishTime to be nullable for iterations, which includes the base classification nodes functions.
  • Updated the ClassificationNode object to provide a direct reference to an iteration's start and finish date, if provided, rather than being required to access them through the InternalObject.
  • Small updates to typos in the documentation.

For the second bullet, consider the following scenario:

In a situation where I'm syncing two projects (e.g. copying iterations from one to another), the current implementation would require me to write the following if-else statement to check if dates are provided because it doesn't allow for a nullable DateTime.

if ($null-eq$Node.InternalObject.Attributes.StartDate) {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path
} else {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate
}

Not allowing a nullable DateTime is okay if the node is net new. However, I have the write this if-else for pre-existing nodes when attempting to simply copy them.

[Add|Update]-VSTeamIteration

Params changed to the following:

[Parameter(Mandatory=$false)]
[Nullable[datetime]] $StartDate,
[Parameter(Mandatory=$false)]
[Nullable[datetime]] $FinishDate,

This also removes the need for these if statements. (Also, AzDO requires that if one date is set, the other MUST also be set. It won't allow a StartDate and not a FinishDate, and vice versa.)

if ($StartDate) {
$params.StartDate=$StartDate
}
if ($FinishDate) {
$params.FinishDate=$FinishDate
}

By making the above changes, I no longer need my original if-else statement. I can simply write the following one line and the null values are accepted.

Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate

PR Checklist

@a11smiles

Copy link
Copy Markdown
ContributorAuthor

@SebastianSchuetze can you run the workflows please? I had a mistype in my unit tests. Thanks!

@SebastianSchuetze

Copy link
Copy Markdown
Contributor

looks like you have green lights. I will review in the next few days.

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check the comments. Nothing serious. Otherwise I will approve as soon as I understand or changes are made. :-)

Comment threadSource/Classes/Provider/ClassificationNode.cs

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry forgot to save my other suggestions @a11smiles :-)

Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
@SebastianSchuetze

Copy link
Copy Markdown
Contributor

@a11smiles anything I can help with to get this PR finished?

a11smilesand others added 6 commits August 2, 2022 21:36
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
@a11smiles

Copy link
Copy Markdown
ContributorAuthor

I wasn't sure how particular you guys were with 'return' vs. 'update'. Thanks for making the changes.

@SebastianSchuetze
SebastianSchuetze enabled auto-merge (squash) August 5, 2022 15:07

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good now, thanks!

@SebastianSchuetze
SebastianSchuetze merged commit 33c5f0c into MethodsAndPractices:trunkAug 5, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a11smiles@SebastianSchuetze
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

adding update capabilities for classification nodes - #470

Merged
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk
Aug 5, 2022
Merged

adding update capabilities for classification nodes#470
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk

Conversation

@a11smiles

Copy link
Copy Markdown
Contributor

PR Summary

  • Added Update-VSTeamArea and Update-VSTeamIteration wrappers and their base function Update-VSTeamClassificationNodes to allow updates to classification nodes.
  • Updated StartTime and FinishTime to be nullable for iterations, which includes the base classification nodes functions.
  • Updated the ClassificationNode object to provide a direct reference to an iteration's start and finish date, if provided, rather than being required to access them through the InternalObject.
  • Small updates to typos in the documentation.

For the second bullet, consider the following scenario:

In a situation where I'm syncing two projects (e.g. copying iterations from one to another), the current implementation would require me to write the following if-else statement to check if dates are provided because it doesn't allow for a nullable DateTime.

if ($null-eq$Node.InternalObject.Attributes.StartDate) {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path
} else {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate
}

Not allowing a nullable DateTime is okay if the node is net new. However, I have the write this if-else for pre-existing nodes when attempting to simply copy them.

[Add|Update]-VSTeamIteration

Params changed to the following:

[Parameter(Mandatory=$false)]
[Nullable[datetime]] $StartDate,
[Parameter(Mandatory=$false)]
[Nullable[datetime]] $FinishDate,

This also removes the need for these if statements. (Also, AzDO requires that if one date is set, the other MUST also be set. It won't allow a StartDate and not a FinishDate, and vice versa.)

if ($StartDate) {
$params.StartDate=$StartDate
}
if ($FinishDate) {
$params.FinishDate=$FinishDate
}

By making the above changes, I no longer need my original if-else statement. I can simply write the following one line and the null values are accepted.

Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate

PR Checklist

@a11smiles

Copy link
Copy Markdown
ContributorAuthor

@SebastianSchuetze can you run the workflows please? I had a mistype in my unit tests. Thanks!

@SebastianSchuetze

Copy link
Copy Markdown
Contributor

looks like you have green lights. I will review in the next few days.

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check the comments. Nothing serious. Otherwise I will approve as soon as I understand or changes are made. :-)

Comment threadSource/Classes/Provider/ClassificationNode.cs

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry forgot to save my other suggestions @a11smiles :-)

Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
@SebastianSchuetze

Copy link
Copy Markdown
Contributor

@a11smiles anything I can help with to get this PR finished?

a11smilesand others added 6 commits August 2, 2022 21:36
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
@a11smiles

Copy link
Copy Markdown
ContributorAuthor

I wasn't sure how particular you guys were with 'return' vs. 'update'. Thanks for making the changes.

@SebastianSchuetze
SebastianSchuetze enabled auto-merge (squash) August 5, 2022 15:07

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good now, thanks!

@SebastianSchuetze
SebastianSchuetze merged commit 33c5f0c into MethodsAndPractices:trunkAug 5, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a11smiles@SebastianSchuetze
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

adding update capabilities for classification nodes - #470

Merged
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk
Aug 5, 2022
Merged

adding update capabilities for classification nodes#470
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk

Conversation

@a11smiles

Copy link
Copy Markdown
Contributor

PR Summary

  • Added Update-VSTeamArea and Update-VSTeamIteration wrappers and their base function Update-VSTeamClassificationNodes to allow updates to classification nodes.
  • Updated StartTime and FinishTime to be nullable for iterations, which includes the base classification nodes functions.
  • Updated the ClassificationNode object to provide a direct reference to an iteration's start and finish date, if provided, rather than being required to access them through the InternalObject.
  • Small updates to typos in the documentation.

For the second bullet, consider the following scenario:

In a situation where I'm syncing two projects (e.g. copying iterations from one to another), the current implementation would require me to write the following if-else statement to check if dates are provided because it doesn't allow for a nullable DateTime.

if ($null-eq$Node.InternalObject.Attributes.StartDate) {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path
} else {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate
}

Not allowing a nullable DateTime is okay if the node is net new. However, I have the write this if-else for pre-existing nodes when attempting to simply copy them.

[Add|Update]-VSTeamIteration

Params changed to the following:

[Parameter(Mandatory=$false)]
[Nullable[datetime]] $StartDate,
[Parameter(Mandatory=$false)]
[Nullable[datetime]] $FinishDate,

This also removes the need for these if statements. (Also, AzDO requires that if one date is set, the other MUST also be set. It won't allow a StartDate and not a FinishDate, and vice versa.)

if ($StartDate) {
$params.StartDate=$StartDate
}
if ($FinishDate) {
$params.FinishDate=$FinishDate
}

By making the above changes, I no longer need my original if-else statement. I can simply write the following one line and the null values are accepted.

Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate

PR Checklist

@a11smiles

Copy link
Copy Markdown
ContributorAuthor

@SebastianSchuetze can you run the workflows please? I had a mistype in my unit tests. Thanks!

@SebastianSchuetze

Copy link
Copy Markdown
Contributor

looks like you have green lights. I will review in the next few days.

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check the comments. Nothing serious. Otherwise I will approve as soon as I understand or changes are made. :-)

Comment threadSource/Classes/Provider/ClassificationNode.cs

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry forgot to save my other suggestions @a11smiles :-)

Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
@SebastianSchuetze

Copy link
Copy Markdown
Contributor

@a11smiles anything I can help with to get this PR finished?

a11smilesand others added 6 commits August 2, 2022 21:36
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
@a11smiles

Copy link
Copy Markdown
ContributorAuthor

I wasn't sure how particular you guys were with 'return' vs. 'update'. Thanks for making the changes.

@SebastianSchuetze
SebastianSchuetze enabled auto-merge (squash) August 5, 2022 15:07

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good now, thanks!

@SebastianSchuetze
SebastianSchuetze merged commit 33c5f0c into MethodsAndPractices:trunkAug 5, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a11smiles@SebastianSchuetze
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

adding update capabilities for classification nodes - #470

Merged
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk
Aug 5, 2022
Merged

adding update capabilities for classification nodes#470
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk

Conversation

@a11smiles

Copy link
Copy Markdown
Contributor

PR Summary

  • Added Update-VSTeamArea and Update-VSTeamIteration wrappers and their base function Update-VSTeamClassificationNodes to allow updates to classification nodes.
  • Updated StartTime and FinishTime to be nullable for iterations, which includes the base classification nodes functions.
  • Updated the ClassificationNode object to provide a direct reference to an iteration's start and finish date, if provided, rather than being required to access them through the InternalObject.
  • Small updates to typos in the documentation.

For the second bullet, consider the following scenario:

In a situation where I'm syncing two projects (e.g. copying iterations from one to another), the current implementation would require me to write the following if-else statement to check if dates are provided because it doesn't allow for a nullable DateTime.

if ($null-eq$Node.InternalObject.Attributes.StartDate) {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path
} else {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate
}

Not allowing a nullable DateTime is okay if the node is net new. However, I have the write this if-else for pre-existing nodes when attempting to simply copy them.

[Add|Update]-VSTeamIteration

Params changed to the following:

[Parameter(Mandatory=$false)]
[Nullable[datetime]] $StartDate,
[Parameter(Mandatory=$false)]
[Nullable[datetime]] $FinishDate,

This also removes the need for these if statements. (Also, AzDO requires that if one date is set, the other MUST also be set. It won't allow a StartDate and not a FinishDate, and vice versa.)

if ($StartDate) {
$params.StartDate=$StartDate
}
if ($FinishDate) {
$params.FinishDate=$FinishDate
}

By making the above changes, I no longer need my original if-else statement. I can simply write the following one line and the null values are accepted.

Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate

PR Checklist

@a11smiles

Copy link
Copy Markdown
ContributorAuthor

@SebastianSchuetze can you run the workflows please? I had a mistype in my unit tests. Thanks!

@SebastianSchuetze

Copy link
Copy Markdown
Contributor

looks like you have green lights. I will review in the next few days.

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check the comments. Nothing serious. Otherwise I will approve as soon as I understand or changes are made. :-)

Comment threadSource/Classes/Provider/ClassificationNode.cs

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry forgot to save my other suggestions @a11smiles :-)

Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
@SebastianSchuetze

Copy link
Copy Markdown
Contributor

@a11smiles anything I can help with to get this PR finished?

a11smilesand others added 6 commits August 2, 2022 21:36
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
@a11smiles

Copy link
Copy Markdown
ContributorAuthor

I wasn't sure how particular you guys were with 'return' vs. 'update'. Thanks for making the changes.

@SebastianSchuetze
SebastianSchuetze enabled auto-merge (squash) August 5, 2022 15:07

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good now, thanks!

@SebastianSchuetze
SebastianSchuetze merged commit 33c5f0c into MethodsAndPractices:trunkAug 5, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a11smiles@SebastianSchuetze
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

adding update capabilities for classification nodes - #470

Merged
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk
Aug 5, 2022
Merged

adding update capabilities for classification nodes#470
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk

Conversation

@a11smiles

Copy link
Copy Markdown
Contributor

PR Summary

  • Added Update-VSTeamArea and Update-VSTeamIteration wrappers and their base function Update-VSTeamClassificationNodes to allow updates to classification nodes.
  • Updated StartTime and FinishTime to be nullable for iterations, which includes the base classification nodes functions.
  • Updated the ClassificationNode object to provide a direct reference to an iteration's start and finish date, if provided, rather than being required to access them through the InternalObject.
  • Small updates to typos in the documentation.

For the second bullet, consider the following scenario:

In a situation where I'm syncing two projects (e.g. copying iterations from one to another), the current implementation would require me to write the following if-else statement to check if dates are provided because it doesn't allow for a nullable DateTime.

if ($null-eq$Node.InternalObject.Attributes.StartDate) {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path
} else {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate
}

Not allowing a nullable DateTime is okay if the node is net new. However, I have the write this if-else for pre-existing nodes when attempting to simply copy them.

[Add|Update]-VSTeamIteration

Params changed to the following:

[Parameter(Mandatory=$false)]
[Nullable[datetime]] $StartDate,
[Parameter(Mandatory=$false)]
[Nullable[datetime]] $FinishDate,

This also removes the need for these if statements. (Also, AzDO requires that if one date is set, the other MUST also be set. It won't allow a StartDate and not a FinishDate, and vice versa.)

if ($StartDate) {
$params.StartDate=$StartDate
}
if ($FinishDate) {
$params.FinishDate=$FinishDate
}

By making the above changes, I no longer need my original if-else statement. I can simply write the following one line and the null values are accepted.

Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate

PR Checklist

@a11smiles

Copy link
Copy Markdown
ContributorAuthor

@SebastianSchuetze can you run the workflows please? I had a mistype in my unit tests. Thanks!

@SebastianSchuetze

Copy link
Copy Markdown
Contributor

looks like you have green lights. I will review in the next few days.

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check the comments. Nothing serious. Otherwise I will approve as soon as I understand or changes are made. :-)

Comment threadSource/Classes/Provider/ClassificationNode.cs

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry forgot to save my other suggestions @a11smiles :-)

Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
@SebastianSchuetze

Copy link
Copy Markdown
Contributor

@a11smiles anything I can help with to get this PR finished?

a11smilesand others added 6 commits August 2, 2022 21:36
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
@a11smiles

Copy link
Copy Markdown
ContributorAuthor

I wasn't sure how particular you guys were with 'return' vs. 'update'. Thanks for making the changes.

@SebastianSchuetze
SebastianSchuetze enabled auto-merge (squash) August 5, 2022 15:07

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good now, thanks!

@SebastianSchuetze
SebastianSchuetze merged commit 33c5f0c into MethodsAndPractices:trunkAug 5, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a11smiles@SebastianSchuetze
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

adding update capabilities for classification nodes - #470

Merged
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk
Aug 5, 2022
Merged

adding update capabilities for classification nodes#470
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk

Conversation

@a11smiles

Copy link
Copy Markdown
Contributor

PR Summary

  • Added Update-VSTeamArea and Update-VSTeamIteration wrappers and their base function Update-VSTeamClassificationNodes to allow updates to classification nodes.
  • Updated StartTime and FinishTime to be nullable for iterations, which includes the base classification nodes functions.
  • Updated the ClassificationNode object to provide a direct reference to an iteration's start and finish date, if provided, rather than being required to access them through the InternalObject.
  • Small updates to typos in the documentation.

For the second bullet, consider the following scenario:

In a situation where I'm syncing two projects (e.g. copying iterations from one to another), the current implementation would require me to write the following if-else statement to check if dates are provided because it doesn't allow for a nullable DateTime.

if ($null-eq$Node.InternalObject.Attributes.StartDate) {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path
} else {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate
}

Not allowing a nullable DateTime is okay if the node is net new. However, I have the write this if-else for pre-existing nodes when attempting to simply copy them.

[Add|Update]-VSTeamIteration

Params changed to the following:

[Parameter(Mandatory=$false)]
[Nullable[datetime]] $StartDate,
[Parameter(Mandatory=$false)]
[Nullable[datetime]] $FinishDate,

This also removes the need for these if statements. (Also, AzDO requires that if one date is set, the other MUST also be set. It won't allow a StartDate and not a FinishDate, and vice versa.)

if ($StartDate) {
$params.StartDate=$StartDate
}
if ($FinishDate) {
$params.FinishDate=$FinishDate
}

By making the above changes, I no longer need my original if-else statement. I can simply write the following one line and the null values are accepted.

Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate

PR Checklist

@a11smiles

Copy link
Copy Markdown
ContributorAuthor

@SebastianSchuetze can you run the workflows please? I had a mistype in my unit tests. Thanks!

@SebastianSchuetze

Copy link
Copy Markdown
Contributor

looks like you have green lights. I will review in the next few days.

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check the comments. Nothing serious. Otherwise I will approve as soon as I understand or changes are made. :-)

Comment threadSource/Classes/Provider/ClassificationNode.cs

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry forgot to save my other suggestions @a11smiles :-)

Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
@SebastianSchuetze

Copy link
Copy Markdown
Contributor

@a11smiles anything I can help with to get this PR finished?

a11smilesand others added 6 commits August 2, 2022 21:36
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
@a11smiles

Copy link
Copy Markdown
ContributorAuthor

I wasn't sure how particular you guys were with 'return' vs. 'update'. Thanks for making the changes.

@SebastianSchuetze
SebastianSchuetze enabled auto-merge (squash) August 5, 2022 15:07

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good now, thanks!

@SebastianSchuetze
SebastianSchuetze merged commit 33c5f0c into MethodsAndPractices:trunkAug 5, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a11smiles@SebastianSchuetze
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

adding update capabilities for classification nodes - #470

Merged
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk
Aug 5, 2022
Merged

adding update capabilities for classification nodes#470
SebastianSchuetze merged 12 commits into
MethodsAndPractices:trunkfrom
a11smiles:trunk

Conversation

@a11smiles

Copy link
Copy Markdown
Contributor

PR Summary

  • Added Update-VSTeamArea and Update-VSTeamIteration wrappers and their base function Update-VSTeamClassificationNodes to allow updates to classification nodes.
  • Updated StartTime and FinishTime to be nullable for iterations, which includes the base classification nodes functions.
  • Updated the ClassificationNode object to provide a direct reference to an iteration's start and finish date, if provided, rather than being required to access them through the InternalObject.
  • Small updates to typos in the documentation.

For the second bullet, consider the following scenario:

In a situation where I'm syncing two projects (e.g. copying iterations from one to another), the current implementation would require me to write the following if-else statement to check if dates are provided because it doesn't allow for a nullable DateTime.

if ($null-eq$Node.InternalObject.Attributes.StartDate) {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path
} else {
Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate
}

Not allowing a nullable DateTime is okay if the node is net new. However, I have the write this if-else for pre-existing nodes when attempting to simply copy them.

[Add|Update]-VSTeamIteration

Params changed to the following:

[Parameter(Mandatory=$false)]
[Nullable[datetime]] $StartDate,
[Parameter(Mandatory=$false)]
[Nullable[datetime]] $FinishDate,

This also removes the need for these if statements. (Also, AzDO requires that if one date is set, the other MUST also be set. It won't allow a StartDate and not a FinishDate, and vice versa.)

if ($StartDate) {
$params.StartDate=$StartDate
}
if ($FinishDate) {
$params.FinishDate=$FinishDate
}

By making the above changes, I no longer need my original if-else statement. I can simply write the following one line and the null values are accepted.

Add-VSTeamIteration-ProjectName $DestinationProject-Name $Node.Name-Path $Path-StartDate $Node.InternalObject.Attributes.StartDate-FinishDate $Node.InternalObject.Attributes.FinishDate

PR Checklist

@a11smiles

Copy link
Copy Markdown
ContributorAuthor

@SebastianSchuetze can you run the workflows please? I had a mistype in my unit tests. Thanks!

@SebastianSchuetze

Copy link
Copy Markdown
Contributor

looks like you have green lights. I will review in the next few days.

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check the comments. Nothing serious. Otherwise I will approve as soon as I understand or changes are made. :-)

Comment threadSource/Classes/Provider/ClassificationNode.cs

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry forgot to save my other suggestions @a11smiles :-)

Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamIteration.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamClassificationNode.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
Comment threadTests/function/tests/Update-VSTeamArea.Tests.ps1 Outdated
@SebastianSchuetze

Copy link
Copy Markdown
Contributor

@a11smiles anything I can help with to get this PR finished?

a11smilesand others added 6 commits August 2, 2022 21:36
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
Co-authored-by: Sebastian Schütze <sebastian.schuetze@razorspoint.com>
@a11smiles

Copy link
Copy Markdown
ContributorAuthor

I wasn't sure how particular you guys were with 'return' vs. 'update'. Thanks for making the changes.

@SebastianSchuetze
SebastianSchuetze enabled auto-merge (squash) August 5, 2022 15:07

@SebastianSchuetzeSebastianSchuetze left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good now, thanks!

@SebastianSchuetze
SebastianSchuetze merged commit 33c5f0c into MethodsAndPractices:trunkAug 5, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@a11smiles@SebastianSchuetze