Skip to content

Commit 16225bb

Browse files
authored
Add files via upload
1 parent d3a0a0e commit 16225bb

File tree

4 files changed

+104
-9
lines changed

4 files changed

+104
-9
lines changed

examples.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,5 +446,64 @@ Services</lifelinename>
446446
<operand t="42">updated content</operand>
447447
</frame>
448448
</framelist>
449+
</sequencediagml>`,
450+
// TCP Transmission Example
451+
TCP: `<?xml version="1.0" encoding="UTF-8"?>
452+
<sequencediagml>
453+
<parameters>
454+
<hspacing>300</hspacing>
455+
<vspacing>20</vspacing>
456+
<max_t>33</max_t>
457+
<fontsize>12</fontsize>
458+
<objectfill>#c8fac8</objectfill>
459+
<activitybarfill>#FFFFFF</activitybarfill>
460+
</parameters>
461+
<lifelinelist>
462+
<lifeline type="object">
463+
<lifelinename>Client</lifelinename>
464+
<activitybars/>
465+
</lifeline>
466+
<lifeline type="object">
467+
<lifelinename>Server</lifelinename>
468+
<activitybars/>
469+
</lifeline>
470+
</lifelinelist>
471+
<messagelist>
472+
<message type="asynchronous" from="0" to="1" t="1" t_delay="1">
473+
<messagetext>SYN i</messagetext>
474+
</message>
475+
<message type="asynchronous" from="1" to="0" t="4" t_delay="1">
476+
<messagetext>SYN j, ACK i+1</messagetext>
477+
</message>
478+
<message type="asynchronous" from="0" to="1" t="7" t_delay="1">
479+
<messagetext>ACK j+1</messagetext>
480+
</message>
481+
<message type="asynchronous" from="0" to="1" t="13" t_delay="1">
482+
<messagetext>SEQ=a, ACK=b, DATA</messagetext>
483+
</message>
484+
<message type="asynchronous" from="1" to="0" t="16" t_delay="1">
485+
<messagetext>SEQ=b, ACK=a+len(DATA)</messagetext>
486+
</message>
487+
<message type="asynchronous" from="0" to="1" t="22" t_delay="1">
488+
<messagetext>FIN, SEQ=m, ACK=n</messagetext>
489+
</message>
490+
<message type="asynchronous" from="1" to="0" t="25" t_delay="1">
491+
<messagetext>ACK=m+1</messagetext>
492+
</message>
493+
<message type="asynchronous" from="1" to="0" t="27" t_delay="1">
494+
<messagetext>FIN, SEQ=n, ACK=m+1</messagetext>
495+
</message>
496+
<message type="asynchronous" from="0" to="1" t="30" t_delay="1">
497+
<messagetext>ACK=n+1</messagetext>
498+
</message>
499+
</messagelist>
500+
<framelist>
501+
<frame type="LOOP" left="0" right="1" top="10" bottom="19">
502+
<operand t="10">While(DATA)</operand>
503+
</frame>
504+
<frame type="SD" widthfactor="1">
505+
<operand t="">TCP Data Transmission</operand>
506+
</frame>
507+
</framelist>
449508
</sequencediagml>`
450509
};

index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@
156156
<label for="tValue">Message t:</label>
157157
<input id="tValue" type="number" min="1" style="width: 5ch;"/>
158158
</p>
159+
<p>
160+
<label for="delayValue">Transit t:</label>
161+
<input id="delayValue" type="number" min="0" max="5" style="width: 5ch;"/>
162+
</p>
159163
<div id="showSyncResponse" class="initially-hidden">
160164
<label for="showResponse">Show Response:</label>
161165
<input type="checkbox" id="showResponse" name="showResponse"/>

seqdiag.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ function saveSvgDocument() {
273273
if (svgFilename) {
274274
const xsltProcessor = new XSLTProcessor();
275275
xsltProcessor.importStylesheet(xslSVG);
276-
xsltProcessor.setParameter(null, 'BOUNDINGRECTS', 'no');
276+
xsltProcessor.setParameter(null, 'BROWSERRENDER', 'no');
277277
const theSvgDoc = xsltProcessor.transformToDocument(theSourceDoc.dom);
278278
const s = new XMLSerializer();
279279
const contentSvg = s.serializeToString(theSvgDoc);
@@ -417,6 +417,7 @@ function showMessageDialog(messageIndex) {
417417
hideMessageDialog();
418418
const maxT = getMaxT();
419419
document.getElementById('tValue').setAttribute('max', maxT);
420+
document.getElementById('delayValue').value = '0';
420421
document.getElementById('rtValue').setAttribute('max', maxT);
421422
document.getElementById('showSyncResponse').style.display = "none";
422423
document.getElementById('syncResponse').style.display = "none";
@@ -461,6 +462,9 @@ function populateMessageDialog(messageIdx) {
461462
}
462463
document.getElementById('messageText').value = messageData.getElementsByTagName('messagetext')[0].textContent;
463464
document.getElementById('tValue').value = messageData.getAttribute('t');
465+
if (messageData.getAttribute('t_delay') != null) {
466+
document.getElementById('delayValue').value = messageData.getAttribute('t_delay');
467+
}
464468
if (messageData.getElementsByTagName('response').length) {
465469
document.getElementById('showResponse').checked = true;
466470
document.getElementById('syncResponse').style.display = "inline-block";
@@ -830,13 +834,15 @@ function updateMessage() {
830834
const typeAttr = document.getElementById('messageType').value;
831835
const fromAttr = document.getElementById('fromLifeline').value;
832836
const tAttr = document.getElementById('tValue').value;
837+
const delayAttr = document.getElementById('delayValue').value;
833838
newElement.setAttribute('type',typeAttr);
834839
newElement.setAttribute('from',fromAttr);
835840
if (!(typeAttr == 'reflexive')) {
836841
const toAttr = document.getElementById('toLifeline').value;
837842
newElement.setAttribute('to',toAttr);
838843
}
839844
newElement.setAttribute('t',tAttr);
845+
newElement.setAttribute('t_delay',delayAttr);
840846
let newMessageText = xmlDoc.createElement('messagetext');
841847
const messageText = document.getElementById('messageText').value;
842848
const newMessageTextTextNode = xmlDoc.createTextNode(messageText);
@@ -1189,6 +1195,8 @@ document.onreadystatechange = () => {
11891195
messageText.addEventListener('change', enableApplyMessageDialog);
11901196
const messageT = document.getElementById('tValue');
11911197
messageT.addEventListener('input', tValueInput);
1198+
const delayT = document.getElementById('delayValue');
1199+
delayT.addEventListener('change', enableApplyMessageDialog);
11921200
const messageResponse = document.getElementById('responseText');
11931201
messageResponse.addEventListener('change', enableApplyMessageDialog);
11941202
const rtValue = document.getElementById('rtValue');

svg.xsl

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<xsl:param name="SHOWSCALE" select="''"/>
44
<xsl:param name="SCALEFACTOR" select="1"/>
55
<!-- invisible bounding rects to make it easier to click on lines -->
6-
<xsl:param name="BOUNDINGRECTS" select="'yes'"/>
6+
<xsl:param name="BROWSERRENDER" select="'yes'"/>
77
<!-- space between lifelines -->
88
<xsl:variable name="HSPACING" select="/sequencediagml/parameters/hspacing/text()"/>
99
<!-- space between increments of t -->
@@ -301,6 +301,14 @@
301301
<xsl:with-param name="RUNNINGTOTAL">0</xsl:with-param>
302302
</xsl:call-template>
303303
</xsl:variable>
304+
<xsl:variable name="T_DELAY">
305+
<xsl:choose>
306+
<xsl:when test="@t_delay">
307+
<xsl:value-of select="@t_delay"/>
308+
</xsl:when>
309+
<xsl:otherwise>0</xsl:otherwise>
310+
</xsl:choose>
311+
</xsl:variable>
304312
<xsl:variable name="MESSAGEOFFSET">
305313
<xsl:choose>
306314
<xsl:when test="@to > @from">
@@ -384,7 +392,7 @@
384392
<xsl:attribute name="x1"><xsl:value-of select="($FROMXFACTOR * $HSPACING) + $MESSAGEOFFSET"/></xsl:attribute>
385393
<xsl:attribute name="y1"><xsl:value-of select="(@t * $VSPACING)"/></xsl:attribute>
386394
<xsl:attribute name="x2"><xsl:value-of select="($TOXFACTOR * $HSPACING) - $MESSAGEOFFSETTO"/></xsl:attribute>
387-
<xsl:attribute name="y2"><xsl:value-of select="@t * $VSPACING"/></xsl:attribute>
395+
<xsl:attribute name="y2"><xsl:value-of select="(@t + $T_DELAY) * $VSPACING"/></xsl:attribute>
388396
<xsl:if test="@type = 'create'">
389397
<xsl:attribute name="style">stroke-dasharray: 5 5;</xsl:attribute>
390398
</xsl:if>
@@ -408,13 +416,21 @@
408416
</xsl:otherwise>
409417
</xsl:choose>
410418
</xsl:element>
411-
<xsl:if test="$BOUNDINGRECTS = 'yes'">
412-
<xsl:element name="rect">
419+
<xsl:if test="$BROWSERRENDER = 'yes'">
420+
<!-- <xsl:element name="rect">
413421
<xsl:attribute name="x"><xsl:value-of select="$XBOUNDRECT"/></xsl:attribute>
414422
<xsl:attribute name="y"><xsl:value-of select="(@t * $VSPACING) - 3.5"/></xsl:attribute>
415423
<xsl:attribute name="width"><xsl:value-of select="$WIDTHBOUNDRECT"/></xsl:attribute>
416424
<xsl:attribute name="height">7</xsl:attribute>
417425
<xsl:attribute name="visibility">hidden</xsl:attribute>
426+
</xsl:element> -->
427+
<xsl:element name="line">
428+
<xsl:attribute name="x1"><xsl:value-of select="($FROMXFACTOR * $HSPACING) + $MESSAGEOFFSET"/></xsl:attribute>
429+
<xsl:attribute name="y1"><xsl:value-of select="(@t * $VSPACING)"/></xsl:attribute>
430+
<xsl:attribute name="x2"><xsl:value-of select="($TOXFACTOR * $HSPACING) - $MESSAGEOFFSETTO"/></xsl:attribute>
431+
<xsl:attribute name="y2"><xsl:value-of select="(@t + $T_DELAY) * $VSPACING"/></xsl:attribute>
432+
<xsl:attribute name="stroke-width">10</xsl:attribute>
433+
<xsl:attribute name="visibility">hidden</xsl:attribute>
418434
</xsl:element>
419435
</xsl:if>
420436

@@ -423,7 +439,7 @@
423439
<xsl:attribute name="x1"><xsl:value-of select="($TOXFACTOR * $HSPACING) - $MESSAGEOFFSET"/></xsl:attribute>
424440
<xsl:attribute name="y1"><xsl:value-of select="response/@t * $VSPACING"/></xsl:attribute>
425441
<xsl:attribute name="x2"><xsl:value-of select="($FROMXFACTOR * $HSPACING) + $MESSAGEOFFSET"/></xsl:attribute>
426-
<xsl:attribute name="y2"><xsl:value-of select="response/@t * $VSPACING"/></xsl:attribute>
442+
<xsl:attribute name="y2"><xsl:value-of select="(response/@t + $T_DELAY) * $VSPACING"/></xsl:attribute>
427443
<xsl:attribute name="style">stroke-dasharray: 5 5;</xsl:attribute>
428444
<xsl:attribute name="marker-end"><xsl:value-of select="$ARROWTYPE"/></xsl:attribute>
429445
</xsl:element>
@@ -445,12 +461,20 @@
445461
</xsl:otherwise>
446462
</xsl:choose>
447463
</xsl:element>
448-
<xsl:if test="$BOUNDINGRECTS = 'yes'">
449-
<xsl:element name="rect">
464+
<xsl:if test="$BROWSERRENDER = 'yes'">
465+
<!--<xsl:element name="rect">
450466
<xsl:attribute name="x"><xsl:value-of select="$XBOUNDRECT"/></xsl:attribute>
451467
<xsl:attribute name="y"><xsl:value-of select="(response/@t * $VSPACING) - 3.5"/></xsl:attribute>
452468
<xsl:attribute name="width"><xsl:value-of select="$WIDTHBOUNDRECT"/></xsl:attribute>
453-
<xsl:attribute name="height">7</xsl:attribute>
469+
<xsl:attribute name="height">10</xsl:attribute>
470+
<xsl:attribute name="visibility">hidden</xsl:attribute>
471+
</xsl:element> -->
472+
<xsl:element name="line">
473+
<xsl:attribute name="x1"><xsl:value-of select="($FROMXFACTOR * $HSPACING) + $MESSAGEOFFSET"/></xsl:attribute>
474+
<xsl:attribute name="y1"><xsl:value-of select="(response/@t * $VSPACING)"/></xsl:attribute>
475+
<xsl:attribute name="x2"><xsl:value-of select="($TOXFACTOR * $HSPACING) - $MESSAGEOFFSETTO"/></xsl:attribute>
476+
<xsl:attribute name="y2"><xsl:value-of select="(response/@t + $T_DELAY) * $VSPACING"/></xsl:attribute>
477+
<xsl:attribute name="stroke-width">10</xsl:attribute>
454478
<xsl:attribute name="visibility">hidden</xsl:attribute>
455479
</xsl:element>
456480
</xsl:if>

0 commit comments

Comments
 (0)