Fixed version history issues

This commit is contained in:
Gürkan Güran 2022-09-06 13:49:06 +02:00
parent 23722bfcf5
commit db147e3ed1
4 changed files with 30 additions and 9 deletions

View file

@ -240,6 +240,7 @@ export namespace Components {
"getCanvas": () => Promise<HTMLElsaCanvasElement>;
"getWorkflowDefinition": () => Promise<WorkflowDefinition>;
"importWorkflow": (workflowDefinition: WorkflowDefinition) => Promise<void>;
"loadWorkflowVersions": () => Promise<void>;
"monacoLibPath": string;
"newWorkflow": () => Promise<WorkflowDefinition>;
"registerActivityDrivers": (register: (registry: ActivityDriverRegistry) => void) => Promise<void>;

View file

@ -65,7 +65,6 @@ export class WorkflowDefinitionEditor {
@Watch('workflowDefinition')
async onWorkflowDefinitionChanged(value: WorkflowDefinition) {
await this.importWorkflow(value);
await this.loadWorkflowVersions();
}
@Listen('resize', {target: 'window'})
@ -122,7 +121,6 @@ export class WorkflowDefinitionEditor {
@Method()
async updateWorkflowDefinition(workflowDefinition: WorkflowDefinition): Promise<void> {
this.workflowDefinitionState = workflowDefinition;
await this.loadWorkflowVersions();
}
@Method()
@ -145,16 +143,33 @@ export class WorkflowDefinitionEditor {
return workflowDefinition;
}
loadWorkflowVersions = async () => {
@Method()
async loadWorkflowVersions(): Promise<void> {
if(this.workflowDefinitionState.definitionId != null && this.workflowDefinitionState.definitionId.length > 0)
{
this.workflowVersions = await this.workflowDefinitionApi.getVersions(this.workflowDefinitionState.definitionId);
const workflowVersions = await this.workflowDefinitionApi.getVersions(this.workflowDefinitionState.definitionId);
this.workflowVersions = workflowVersions.sort(x => x.version).reverse();
}
else {
this.workflowVersions = [];
}
}
sortByProperty(property) {
var sortOrder = 1;
if(property[0] === "-") {
sortOrder = -1;
property = property.substr(1);
}
return function (a,b) {
/* next line works with strings and numbers,
* and you may want to customize it to your needs
*/
var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
return result * sortOrder;
}
}
async componentWillLoad() {
await this.updateWorkflowDefinition(this.workflowDefinition);
await this.loadWorkflowVersions();

View file

@ -1,8 +1,7 @@
import {Component, Event, EventEmitter, h, Host, Method, Prop, State, Watch} from '@stencil/core';
import {Component, Event, EventEmitter, h, Prop, Watch} from '@stencil/core';
import {Container} from "typedi";
import {EventBus} from "../../../services";
import {WorkflowDefinition} from "../models/entities";
import {VersionedEntity} from "../../../models";
import {WorkflowDefinitionsApi} from "../../workflow-definitions/services/api";
import {DeleteIcon, RevertIcon, PublishedIcon} from "../../../components/icons/tooling";
import moment from "moment";
@ -74,7 +73,7 @@ export class WorkflowDefinitionVersionHistory {
<button onClick={e => this.onViewVersionClick(e, v)}
type="button"
disabled={this.selectedVersion.version == v.version}
class="btn btn-secondary">
class={this.selectedVersion.version == v.version ? "btn btn-secondary" : "btn btn-primary"}>
View
</button>
</td>
@ -83,7 +82,7 @@ export class WorkflowDefinitionVersionHistory {
<elsa-context-menu
menuItems={[
{text: 'Delete', clickHandler: e => this.onDeleteVersionClick(e, v), icon: <DeleteIcon/>},
{text: 'Reverse', clickHandler: e => this.onRevertVersionClick(e, v), icon: <RevertIcon/>},
{text: 'Revert', clickHandler: e => this.onRevertVersionClick(e, v), icon: <RevertIcon/>},
]}
/>
}

View file

@ -93,6 +93,7 @@ export class WorkflowDefinitionsPlugin implements Plugin {
private saveWorkflowDefinition = async (definition: WorkflowDefinition, publish: boolean): Promise<WorkflowDefinition> => {
const updatedWorkflow = await this.workflowDefinitionManager.saveWorkflow(definition, publish);
await this.workflowDefinitionEditorElement.updateWorkflowDefinition(updatedWorkflow);
await this.workflowDefinitionEditorElement.loadWorkflowVersions();
return updatedWorkflow;
}
@ -115,11 +116,16 @@ export class WorkflowDefinitionsPlugin implements Plugin {
return;
}
if(updatedWorkflowDefinition.version == e.detail.latestVersionNumber)
if(updatedWorkflowDefinition.version == e.detail.latestVersionNumber || updatedWorkflowDefinition.isPublished)
{
const currentWorkflowDefinition = await this.api.get({definitionId: updatedWorkflowDefinition.definitionId, versionOptions: {version: updatedWorkflowDefinition.version}});
if(!isEqual(currentWorkflowDefinition.root.activities, updatedWorkflowDefinition.root.activities))
{
if(updatedWorkflowDefinition.isPublished)
updatedWorkflowDefinition.version = e.detail.latestVersionNumber;
await this.saveWorkflowDefinition(updatedWorkflowDefinition, false);
}
}
}