Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/actions/buildAndPackage/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ runs:
- name: 'Install for CI'
shell: bash
run: npm ci
- name: 'Replace emfular by public 3.0.1'
shell: bash
run: npm install --no-package-lock --no-save emfular@3.0.1
- name: 'Test with CI configuration'
shell: bash
run: npm run test:ci
Expand Down
17 changes: 10 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"@angular/router": "^19.2.4",
"@angular/ssr": "^19.2.5",
"@types/uuid": "^10.0.0",
"emfular": "^3.0.1",
"emfular": "^5.1.0",
"express": "^4.18.2",
"material-icons": "^1.13.12",
"ngx-svg-graphics": "^1.2.1",
Expand All @@ -41,7 +41,6 @@
"@types/express": "^4.17.17",
"@types/jasmine": "~5.1.0",
"@types/node": "^18.18.0",
"emfular": "file:../../../EMFular/projects/emfular/src/lib",
"jasmine-core": "~5.1.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
Expand Down
31 changes: 14 additions & 17 deletions src/app/shared/keml/core/author.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import {AuthorJson} from "@app/shared/keml/json/sequence-diagram-models"
import {Preknowledge} from "./msg-info";
import {Deserializer, Ref} from "emfular";
import {EClasses} from "@app/shared/keml/eclasses";
import {RefHandler, ReferencableTreeListContainer} from "emfular";
import {RefHandler, ReTreeListContainer} from "emfular";

export class Author extends LifeLine{
static readonly preknowledgePrefix: string = 'preknowledge';
static readonly messagesPrefix: string = 'messages';
static readonly $preknowledgeName: string = 'preknowledge';
static readonly $messagesName: string = 'messages';

_preknowledge: ReferencableTreeListContainer<Preknowledge>;
_preknowledge: ReTreeListContainer<Preknowledge>;
get preknowledge(): Preknowledge[] {
return this._preknowledge.get()
}
Expand All @@ -20,7 +20,7 @@ export class Author extends LifeLine{
})
}

_messages: ReferencableTreeListContainer<Message>;
_messages: ReTreeListContainer<Message>;
get messages(): Message[] {
return this._messages.get()
}
Expand All @@ -34,32 +34,29 @@ export class Author extends LifeLine{
ref?: Ref) {
let refC = RefHandler.createRefIfMissing(EClasses.Author, ref)
super(name, xPosition, refC);
this._preknowledge = new ReferencableTreeListContainer<Preknowledge>(this, Author.preknowledgePrefix)
this._messages = new ReferencableTreeListContainer<Message>(this, Author.messagesPrefix)
this.$treeChildren.push(this._preknowledge, this._messages)
this._preknowledge = new ReTreeListContainer<Preknowledge>(this, Author.$preknowledgeName)
this._messages = new ReTreeListContainer<Message>(this, Author.$messagesName)
}

toJson(): AuthorJson {
return {
name: this.name,
xPosition: this.xPosition,
messages: this.messages.map(m => m.toJson()),
preknowledge: this.preknowledge.map(p => p.toJson()),
}
override toJson(): AuthorJson {
let json: AuthorJson = (<AuthorJson>super.toJson())
json.preknowledge = this._preknowledge.toJson()
json.messages = this._messages.toJson()
return json
}

static createTreeBackbone(ref: Ref, context: Deserializer): Author {
let authorJson: AuthorJson = context.getJsonFromTree(ref.$ref)
let author = new Author(authorJson.name? authorJson.name : '', authorJson.xPosition, ref)
context.put(author)
authorJson.messages.map((mj, i) => {
let newRefRef = RefHandler.mixWithPrefixAndIndex(ref.$ref, Author.messagesPrefix, i)
let newRefRef = RefHandler.mixWithPrefixAndIndex(ref.$ref, Author.$messagesName, i)
let newRef = RefHandler.createRef(newRefRef, mj.eClass)
let m = Message.createTreeBackbone(newRef, context)
author.addMessage(m)
} )
authorJson.preknowledge.map((_, i) => {
let newRefRef = RefHandler.mixWithPrefixAndIndex(ref.$ref, Author.preknowledgePrefix, i)
let newRefRef = RefHandler.mixWithPrefixAndIndex(ref.$ref, Author.$preknowledgeName, i)
let newRef = RefHandler.createRef(newRefRef, EClasses.Preknowledge)
let p = Preknowledge.createTreeBackbone(newRef, context)
author.addPreknowledge(p)
Expand Down
7 changes: 2 additions & 5 deletions src/app/shared/keml/core/conversation-partner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,8 @@ export class ConversationPartner extends LifeLine {
super(name, xPosition, refC);
}

toJson(): ConversationPartnerJson {
return {
name: this.name,
xPosition: this.xPosition,
}
override toJson(): ConversationPartnerJson {
return super.toJson();
}

static createTreeBackbone(ref: Ref, context: Deserializer): ConversationPartner {
Expand Down
33 changes: 15 additions & 18 deletions src/app/shared/keml/core/conversation.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
import {Author} from "./author";
import {ConversationPartner} from "./conversation-partner";
import {ConversationJson} from "@app/shared/keml/json/sequence-diagram-models";
import {Deserializer, Ref, Referencable, RefHandler, ReferencableTreeSingletonContainer, ReferencableTreeListContainer} from "emfular";
import {Deserializer, Ref, Referencable, RefHandler, ReTreeSingleContainer, ReTreeListContainer} from "emfular";
import {EClasses} from "@app/shared/keml/eclasses";


export class Conversation extends Referencable {
static readonly ownPath: string = '/'
static readonly authorPrefix = 'author';
static readonly conversationPartnersPrefix = 'conversationPartners';
static readonly $authorName = 'author';
static readonly $conversationPartnersName = 'conversationPartners';
title: string;
_author: ReferencableTreeSingletonContainer<Author>;
_author: ReTreeSingleContainer<Author>;
get author(): Author {
return this._author.get()!!
}
set author(author: Author) {
this._author.add(author);
}
_conversationPartners: ReferencableTreeListContainer<ConversationPartner>;
_conversationPartners: ReTreeListContainer<ConversationPartner>;
get conversationPartners(): ConversationPartner[] {
return this._conversationPartners.get()
}
Expand All @@ -31,31 +30,29 @@ export class Conversation extends Referencable {
title: string = 'New Conversation',
author: Author = new Author(),
) {
let ref = RefHandler.createRef(Conversation.ownPath, EClasses.Conversation)
let ref = RefHandler.createRef(RefHandler.rootPath, EClasses.Conversation)
super(ref);
this._author = new ReferencableTreeSingletonContainer<Author>(this, Conversation.authorPrefix);
this._conversationPartners = new ReferencableTreeListContainer<ConversationPartner>(this, Conversation.conversationPartnersPrefix);
this.$treeChildren.push(this._author, this._conversationPartners);
this._author = new ReTreeSingleContainer<Author>(this, Conversation.$authorName);
this._conversationPartners = new ReTreeListContainer<ConversationPartner>(this, Conversation.$conversationPartnersName);
this.title = title;
this.author = author;
}

toJson(): ConversationJson {
this.prepare(Conversation.ownPath);
let cps = this.conversationPartners.map(x => x.toJson())
override toJson(): ConversationJson {
this.prepare(RefHandler.rootPath);

return {
eClass: this.ref.eClass,
title: this.title,
conversationPartners: cps,
author: this.author.toJson(),
conversationPartners: this._conversationPartners.toJson(),
author: this._author.toJson(),
};
}

static fromJSON (convJson: ConversationJson): Conversation {
let context = new Deserializer(convJson);
let ref: Ref = {
$ref: Conversation.ownPath,
$ref: RefHandler.rootPath,
eClass: EClasses.Conversation
}
let conv = this.createTreeBackbone(ref, context);
Expand All @@ -69,12 +66,12 @@ export class Conversation extends Referencable {
context.put(conv)
//trigger children:
convJson.conversationPartners.map((_, i) => {
let newRefRef = RefHandler.mixWithPrefixAndIndex(ref.$ref, Conversation.conversationPartnersPrefix, i)
let newRefRef = RefHandler.mixWithPrefixAndIndex(ref.$ref, Conversation.$conversationPartnersName, i)
let newRef: Ref = RefHandler.createRef(newRefRef, EClasses.ConversationPartner)
let cp = ConversationPartner.createTreeBackbone(newRef, context)
conv.addCP(cp)
})
let authorRefRef = RefHandler.computePrefix(ref.$ref, Conversation.authorPrefix)
let authorRefRef = RefHandler.computePrefix(ref.$ref, Conversation.$authorName)
let authorRef: Ref = {$ref: authorRefRef, eClass: EClasses.Author}
conv.author = Author.createTreeBackbone(authorRef, context)
return conv;
Expand Down
9 changes: 9 additions & 0 deletions src/app/shared/keml/core/life-line.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import {Ref, Referencable} from "emfular";
import {LifeLineJson} from "@app/shared/keml/json/sequence-diagram-models";


export abstract class LifeLine extends Referencable{
name: string;
Expand All @@ -10,4 +12,11 @@ export abstract class LifeLine extends Referencable{
this.xPosition = xPosition;
}

override toJson(): LifeLineJson {
return {
name: this.name,
xPosition: this.xPosition
};
}

}
Loading