feat: product and document patch versions (#10265)

* feat: product and document patch versions

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>

* fix: use proper patch version

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>

* fix qms ui tests

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>

---------

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
This commit is contained in:
Alexander Onnikov
2025-12-02 11:43:38 +07:00
committed by GitHub
parent 3ebd0ef1f4
commit 8a21c04739
59 changed files with 270 additions and 143 deletions
@@ -72,7 +72,7 @@
}
if (isDocument(document)) {
return `v${document.major}.${document.minor} | ${translatedStates ? translatedStates[state] : ''}`
return `v${document.major}.${document.minor}.${document.patch} | ${translatedStates ? translatedStates[state] : ''}`
} else {
return `${document.name} | ${translatedStates ? translatedStates[state] : ''}`
}
@@ -51,7 +51,10 @@
return (
doc.major < $controlledDocument.major ||
(doc.major === $controlledDocument.major && doc.minor <= $controlledDocument.minor)
(doc.major === $controlledDocument.major && doc.minor < $controlledDocument.minor) ||
(doc.major === $controlledDocument.major &&
doc.minor === $controlledDocument.minor &&
doc.patch <= $controlledDocument.patch)
)
})
.sort(documentCompareFn)
@@ -52,6 +52,7 @@
} from '../../stores/editors/document/editor'
enum Severity {
Patch = 'patch',
Minor = 'minor',
Major = 'major'
}
@@ -154,7 +155,10 @@
allVersionsDesc: ControlledDocument[]
): ControlledDocument | undefined {
return allVersionsDesc.find(
(d) => (d.major === document.major && d.minor < document.minor) || d.major < document.major
(d) =>
(d.major === document.major && d.minor === document.minor && d.patch < document.patch) ||
(d.major === document.major && d.minor < document.minor) ||
d.major < document.major
)
}
@@ -166,13 +170,17 @@
const prevDocument = getPreviousDocument(document, allVersionsDesc)
if (prevDocument == null) {
return document.major > 0 ? Severity.Major : Severity.Minor
return document.major > 0 ? Severity.Major : document.minor > 0 ? Severity.Minor : Severity.Patch
} else {
return prevDocument.major < document.major ? Severity.Major : Severity.Minor
return prevDocument.major < document.major
? Severity.Major
: prevDocument.minor < document.minor
? Severity.Minor
: Severity.Patch
}
}
function getVersionForSeverity (severity: Severity): { major: number, minor: number } | undefined {
function getVersionForSeverity (severity: Severity): { major: number, minor: number, patch: number } | undefined {
if ($controlledDocument == null) {
return
}
@@ -182,12 +190,20 @@
if (severity === Severity.Major) {
return {
major: (prevDocument?.major ?? 0) + 1,
minor: 0
minor: 0,
patch: 0
}
} else if (severity === Severity.Minor) {
return {
major: prevDocument?.major ?? 0,
minor: (prevDocument?.minor ?? 0) + 1,
patch: 0
}
} else {
return {
major: prevDocument?.major ?? 0,
minor: (prevDocument?.minor ?? 0) + 1
minor: prevDocument?.minor ?? 0,
patch: (prevDocument?.patch ?? 0) + 1
}
}
}
@@ -218,6 +234,18 @@
<Label label={documentsRes.string.ChangeSeverity} />
</header>
<div class="flex-col">
<RadioButton
group={severity}
id={Severity.Patch}
labelIntl={documentsRes.string.Patch}
labelGap="large"
value={Severity.Patch}
disabled={!canEdit}
action={() => {
void handleSeverityChanged(Severity.Patch)
}}
gap="large"
/>
<RadioButton
group={severity}
id={Severity.Minor}
@@ -8,5 +8,5 @@
</script>
{#if value}
<Label label={document.string.VersionValue} params={{ major: value.major, minor: value.minor }} />
<Label label={document.string.VersionValue} params={{ major: value.major, minor: value.minor, patch: value.patch }} />
{/if}