2014-11-20 20:46:51 +01:00
|
|
|
/**
|
|
|
|
* Created by knut on 14-11-19.
|
|
|
|
*/
|
2017-04-11 22:14:25 +08:00
|
|
|
var actors = {}
|
|
|
|
var messages = []
|
|
|
|
var notes = []
|
|
|
|
var title = ''
|
|
|
|
var Logger = require('../../logger')
|
|
|
|
var log = Logger.Log
|
|
|
|
|
|
|
|
exports.addActor = function (id, name, description) {
|
2015-12-06 05:53:08 -05:00
|
|
|
// Don't allow description nulling
|
2017-04-11 22:14:25 +08:00
|
|
|
var old = actors[id]
|
|
|
|
if (old && name === old.name && description == null) return
|
2015-12-06 05:53:08 -05:00
|
|
|
|
|
|
|
// Don't allow null descriptions, either
|
2017-04-11 22:14:25 +08:00
|
|
|
if (description == null) description = name
|
2015-12-06 05:53:08 -05:00
|
|
|
|
2017-04-11 22:14:25 +08:00
|
|
|
actors[id] = {name: name, description: description}
|
|
|
|
}
|
2014-11-20 20:46:51 +01:00
|
|
|
|
2017-04-11 22:14:25 +08:00
|
|
|
exports.addMessage = function (idFrom, idTo, message, answer) {
|
|
|
|
messages.push({from: idFrom, to: idTo, message: message, answer: answer})
|
|
|
|
}
|
2014-11-20 20:46:51 +01:00
|
|
|
|
2015-04-20 21:21:17 +02:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
2017-04-11 22:14:25 +08:00
|
|
|
exports.addSignal = function (idFrom, idTo, message, messageType) {
|
|
|
|
log.debug('Adding message from=' + idFrom + ' to=' + idTo + ' message=' + message + ' type=' + messageType)
|
|
|
|
messages.push({from: idFrom, to: idTo, message: message, type: messageType})
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.getMessages = function () {
|
|
|
|
return messages
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.getActors = function () {
|
|
|
|
return actors
|
|
|
|
}
|
|
|
|
exports.getActor = function (id) {
|
|
|
|
return actors[id]
|
|
|
|
}
|
|
|
|
exports.getActorKeys = function () {
|
|
|
|
return Object.keys(actors)
|
|
|
|
}
|
|
|
|
exports.getTitle = function () {
|
|
|
|
return title
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.clear = function () {
|
|
|
|
actors = {}
|
|
|
|
messages = []
|
|
|
|
}
|
2014-12-04 17:58:05 +01:00
|
|
|
|
|
|
|
exports.LINETYPE = {
|
2017-04-11 22:14:25 +08:00
|
|
|
SOLID: 0,
|
|
|
|
DOTTED: 1,
|
|
|
|
NOTE: 2,
|
|
|
|
SOLID_CROSS: 3,
|
|
|
|
DOTTED_CROSS: 4,
|
|
|
|
SOLID_OPEN: 5,
|
|
|
|
DOTTED_OPEN: 6,
|
|
|
|
LOOP_START: 10,
|
|
|
|
LOOP_END: 11,
|
|
|
|
ALT_START: 12,
|
|
|
|
ALT_ELSE: 13,
|
|
|
|
ALT_END: 14,
|
|
|
|
OPT_START: 15,
|
|
|
|
OPT_END: 16,
|
|
|
|
ACTIVE_START: 17,
|
|
|
|
ACTIVE_END: 18,
|
|
|
|
PAR_START: 19,
|
|
|
|
PAR_AND: 20,
|
|
|
|
PAR_END: 21
|
|
|
|
}
|
2014-12-04 17:58:05 +01:00
|
|
|
|
|
|
|
exports.ARROWTYPE = {
|
2017-04-11 22:14:25 +08:00
|
|
|
FILLED: 0,
|
|
|
|
OPEN: 1
|
|
|
|
}
|
2014-12-04 17:58:05 +01:00
|
|
|
|
|
|
|
exports.PLACEMENT = {
|
2017-04-11 22:14:25 +08:00
|
|
|
LEFTOF: 0,
|
|
|
|
RIGHTOF: 1,
|
|
|
|
OVER: 2
|
|
|
|
}
|
2014-12-04 17:58:05 +01:00
|
|
|
|
2017-04-11 22:14:25 +08:00
|
|
|
exports.addNote = function (actor, placement, message) {
|
|
|
|
var note = {actor: actor, placement: placement, message: message}
|
2014-12-04 17:58:05 +01:00
|
|
|
|
2015-11-06 02:42:03 -05:00
|
|
|
// Coerce actor into a [to, from, ...] array
|
2017-04-11 22:14:25 +08:00
|
|
|
var actors = [].concat(actor, actor)
|
2014-12-04 17:58:05 +01:00
|
|
|
|
2017-04-11 22:14:25 +08:00
|
|
|
notes.push(note)
|
|
|
|
messages.push({from: actors[0], to: actors[1], message: message, type: exports.LINETYPE.NOTE, placement: placement})
|
2016-03-04 12:48:58 -05:00
|
|
|
}
|
|
|
|
|
2017-04-11 22:14:25 +08:00
|
|
|
exports.setTitle = function (titleText) {
|
|
|
|
title = titleText
|
|
|
|
}
|
2014-12-04 17:58:05 +01:00
|
|
|
|
2017-04-11 22:14:25 +08:00
|
|
|
exports.parseError = function (err, hash) {
|
|
|
|
global.mermaidAPI.parseError(err, hash)
|
|
|
|
}
|
2015-01-04 17:56:58 +01:00
|
|
|
|
2017-04-11 22:14:25 +08:00
|
|
|
exports.apply = function (param) {
|
|
|
|
if (param instanceof Array) {
|
|
|
|
param.forEach(function (item) {
|
|
|
|
exports.apply(item)
|
|
|
|
})
|
|
|
|
} else {
|
2016-03-08 10:40:52 +01:00
|
|
|
// console.info(param);
|
2017-04-11 22:14:25 +08:00
|
|
|
switch (param.type) {
|
|
|
|
case 'addActor':
|
|
|
|
exports.addActor(param.actor, param.actor, param.description)
|
|
|
|
break
|
|
|
|
case 'activeStart':
|
|
|
|
exports.addSignal(param.actor, undefined, undefined, param.signalType)
|
|
|
|
break
|
|
|
|
case 'activeEnd':
|
|
|
|
exports.addSignal(param.actor, undefined, undefined, param.signalType)
|
|
|
|
break
|
|
|
|
case 'addNote':
|
|
|
|
exports.addNote(param.actor, param.placement, param.text)
|
|
|
|
break
|
|
|
|
case 'addMessage':
|
|
|
|
exports.addSignal(param.from, param.to, param.msg, param.signalType)
|
|
|
|
break
|
|
|
|
case 'loopStart':
|
|
|
|
// log.debug('Loop text: ',param.loopText);
|
|
|
|
exports.addSignal(undefined, undefined, param.loopText, param.signalType)
|
|
|
|
// yy.addSignal(undefined, undefined, $2, yy.LINETYPE.LOOP_START);
|
|
|
|
break
|
|
|
|
case 'loopEnd':
|
|
|
|
exports.addSignal(undefined, undefined, undefined, param.signalType)
|
|
|
|
break
|
|
|
|
case 'optStart':
|
|
|
|
// log.debug('Loop text: ',param.loopText);
|
|
|
|
exports.addSignal(undefined, undefined, param.optText, param.signalType)
|
|
|
|
// yy.addSignal(undefined, undefined, $2, yy.LINETYPE.LOOP_START);
|
|
|
|
break
|
|
|
|
case 'optEnd':
|
|
|
|
exports.addSignal(undefined, undefined, undefined, param.signalType)
|
|
|
|
break
|
|
|
|
case 'altStart':
|
|
|
|
// log.debug('Loop text: ',param.loopText);
|
|
|
|
exports.addSignal(undefined, undefined, param.altText, param.signalType)
|
|
|
|
// yy.addSignal(undefined, undefined, $2, yy.LINETYPE.LOOP_START);
|
|
|
|
break
|
|
|
|
case 'else':
|
|
|
|
exports.addSignal(undefined, undefined, param.altText, param.signalType)
|
|
|
|
break
|
|
|
|
case 'altEnd':
|
|
|
|
exports.addSignal(undefined, undefined, undefined, param.signalType)
|
|
|
|
break
|
|
|
|
case 'setTitle':
|
|
|
|
exports.setTitle(param.text)
|
|
|
|
break
|
|
|
|
case 'parStart':
|
|
|
|
exports.addSignal(undefined, undefined, param.parText, param.signalType)
|
|
|
|
break
|
|
|
|
case 'and':
|
|
|
|
exports.addSignal(undefined, undefined, param.parText, param.signalType)
|
|
|
|
break
|
|
|
|
case 'parEnd':
|
|
|
|
exports.addSignal(undefined, undefined, undefined, param.signalType)
|
|
|
|
break
|
2015-01-04 17:56:58 +01:00
|
|
|
}
|
2017-04-11 22:14:25 +08:00
|
|
|
}
|
|
|
|
}
|