linny-r 1.9.2 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -4
  3. package/package.json +1 -1
  4. package/server.js +1 -1
  5. package/static/images/eq-negated.png +0 -0
  6. package/static/images/power.png +0 -0
  7. package/static/images/tex.png +0 -0
  8. package/static/index.html +225 -10
  9. package/static/linny-r.css +458 -8
  10. package/static/scripts/linny-r-ctrl.js +6 -4
  11. package/static/scripts/linny-r-gui-actor-manager.js +1 -1
  12. package/static/scripts/linny-r-gui-chart-manager.js +20 -13
  13. package/static/scripts/linny-r-gui-constraint-editor.js +410 -50
  14. package/static/scripts/linny-r-gui-controller.js +127 -12
  15. package/static/scripts/linny-r-gui-dataset-manager.js +28 -20
  16. package/static/scripts/linny-r-gui-documentation-manager.js +11 -3
  17. package/static/scripts/linny-r-gui-equation-manager.js +1 -1
  18. package/static/scripts/linny-r-gui-experiment-manager.js +1 -1
  19. package/static/scripts/linny-r-gui-expression-editor.js +7 -1
  20. package/static/scripts/linny-r-gui-file-manager.js +31 -13
  21. package/static/scripts/linny-r-gui-finder.js +1 -1
  22. package/static/scripts/linny-r-gui-model-autosaver.js +1 -1
  23. package/static/scripts/linny-r-gui-monitor.js +1 -1
  24. package/static/scripts/linny-r-gui-paper.js +108 -25
  25. package/static/scripts/linny-r-gui-power-grid-manager.js +529 -0
  26. package/static/scripts/linny-r-gui-receiver.js +1 -1
  27. package/static/scripts/linny-r-gui-repository-browser.js +1 -1
  28. package/static/scripts/linny-r-gui-scale-unit-manager.js +1 -1
  29. package/static/scripts/linny-r-gui-sensitivity-analysis.js +1 -1
  30. package/static/scripts/linny-r-gui-tex-manager.js +110 -0
  31. package/static/scripts/linny-r-gui-undo-redo.js +1 -1
  32. package/static/scripts/linny-r-milp.js +1 -1
  33. package/static/scripts/linny-r-model.js +1016 -155
  34. package/static/scripts/linny-r-utils.js +3 -3
  35. package/static/scripts/linny-r-vm.js +714 -248
  36. package/static/show-diff.html +1 -1
  37. package/static/show-png.html +1 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022 Delft University of Technology
3
+ Copyright (c) 2024 Delft University of Technology
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -30,7 +30,7 @@ Technical documentation will be developed on GitHub: https://github.com/pwgbots/
30
30
  Linny-R is developed as a JavaScript package, and requires that **Node.js** is installed on your computer.
31
31
  This software can be downloaded from <a href="https://nodejs.org" target="_blank">https://nodejs.org</a>.
32
32
  Make sure that you choose the correct installer for your computer.
33
- Linny-R is developed using the _current_ release. Presently (November 2023) this is 21.2.0.
33
+ Linny-R is developed using the _current_ release. Presently (April 2024) this is 21.7.3.
34
34
 
35
35
  Run the installer and accept the default settings.
36
36
  There is **no** need to install the optional _Tools for Native Modules_.
@@ -41,7 +41,7 @@ Verify the installation by typing:
41
41
 
42
42
  ``node --version``
43
43
 
44
- The response should be the version number of Node.js, for example: v21.2.0.
44
+ The response should be the version number of Node.js, for example: v21.7.3.
45
45
 
46
46
  ## Installing Linny-R
47
47
  It is advisable to install Linny-R in a directory on your computer, not in a cloud.
@@ -245,8 +245,8 @@ Open the Command Line Interface (CLI) of your computer, change to your Linny-R d
245
245
  This response should be something similar to:
246
246
 
247
247
  <pre>
248
- Node.js server for Linny-R version 1.7.4
249
- Node.js version: v21.2.0
248
+ Node.js server for Linny-R version 1.9.3
249
+ Node.js version: v21.7.3
250
250
  ... etc.
251
251
  </pre>
252
252
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linny-r",
3
- "version": "1.9.2",
3
+ "version": "2.0.1",
4
4
  "description": "Executable graphical language with WYSIWYG editor for MILP models",
5
5
  "main": "server.js",
6
6
  "scripts": {
package/server.js CHANGED
@@ -12,7 +12,7 @@ that pass the MILP equation model to the solver, and then return the solution
12
12
  to the Linny-R "virtual machine" that is running in the browser.
13
13
  */
14
14
  /*
15
- Copyright (c) 2020-2022 Delft University of Technology
15
+ Copyright (c) 2020-2024 Delft University of Technology
16
16
 
17
17
  Permission is hereby granted, free of charge, to any person obtaining a copy
18
18
  of this software and associated documentation files (the "Software"), to deal
Binary file
Binary file
Binary file
package/static/index.html CHANGED
@@ -28,7 +28,7 @@ implementation is made available via the Linny-R web site.
28
28
  -->
29
29
 
30
30
  <!--
31
- Copyright (c) 2017-2023 Delft University of Technology
31
+ Copyright (c) 2017-2024 Delft University of Technology
32
32
 
33
33
  Permission is hereby granted, free of charge, to any person obtaining
34
34
  a copy of this software and associated documentation files (the
@@ -49,8 +49,15 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
49
49
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
50
50
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
51
51
  -->
52
-
53
52
  <link rel="shortcut icon" type="image/png" href="images/icon.png">
53
+ <link rel="stylesheet"
54
+ href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css"
55
+ integrity="sha384-n8MVd4RsNIU0tAv4ct0nTaAbDJwPJzDEaqSD1odI+WdtXRGWt2kTvGFasHpSy3SV"
56
+ crossorigin="anonymous">
57
+ <!-- The loading of KaTeX is deferred to speed up page rendering -->
58
+ <script src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"
59
+ integrity="sha384-XjKyOOlGwcjNTAIQHIpgOno0Hl1YQqzUOEleOLALmuqehneUG+vnGctmUb0ZY0l8"
60
+ crossorigin="anonymous"></script>
54
61
  <!-- NOTE: do not display the page until after software update check -->
55
62
  <style>body { display: none; }</style>
56
63
  <script>
@@ -83,6 +90,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
83
90
  SENSITIVITY_ANALYSIS = null,
84
91
  CONSTRAINT_EDITOR = null,
85
92
  DOCUMENTATION_MANAGER = null,
93
+ TEX_MANAGER = null,
86
94
  RECEIVER = null,
87
95
  REPOSITORY_BROWSER = null,
88
96
  // Stack for undo/redo operations
@@ -125,11 +133,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
125
133
  '-gui-paper', '-gui-controller', '-gui-monitor',
126
134
  '-gui-file-manager', '-gui-expression-editor',
127
135
  '-gui-model-autosaver', '-gui-scale-unit-manager',
136
+ '-gui-power-grid-manager',
128
137
  '-gui-actor-manager', '-gui-constraint-editor',
129
138
  '-gui-repository-browser', '-gui-dataset-manager',
130
139
  '-gui-equation-manager', '-gui-chart-manager',
131
140
  '-gui-sensitivity-analysis', '-gui-experiment-manager',
132
- '-gui-documentation-manager', '-gui-finder', '-gui-receiver',
141
+ '-gui-documentation-manager', '-gui-tex-manager',
142
+ '-gui-finder', '-gui-receiver',
133
143
  '-gui-undo-redo', '-vm', '-utils'], t);
134
144
  }
135
145
  }
@@ -209,6 +219,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
209
219
  X_EDIT = new ExpressionEditor();
210
220
  ACTOR_MANAGER = new ActorManager();
211
221
  SCALE_UNIT_MANAGER = new ScaleUnitManager();
222
+ POWER_GRID_MANAGER = new PowerGridManager();
212
223
  EQUATION_MANAGER = new EquationManager();
213
224
  FINDER = new Finder();
214
225
  CONSTRAINT_EDITOR = new ConstraintEditor();
@@ -221,6 +232,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
221
232
  EXPERIMENT_MANAGER = new GUIExperimentManager();
222
233
  MONITOR = new GUIMonitor();
223
234
  RECEIVER = new GUIReceiver();
235
+ TEX_MANAGER = new TEXManager();
224
236
  // Check for software updates only when running on local server
225
237
  // NOTE: do this *after* GUI elements have been created, as the
226
238
  // updater uses a dialog
@@ -280,6 +292,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
280
292
  title="Listen for commands from local host (Ctrl-H)">
281
293
  <img id="documentation-btn" class="btn enab" src="images/info.png"
282
294
  title="View information and documentation (Ctrl-I)">
295
+ <img id="tex-btn" class="btn enab" src="images/tex.png"
296
+ title="View mathematical formula for node under cursor">
283
297
  </div>
284
298
  <!-- if diagram is not the TOP cluster, show a button to move up to the parent cluster -->
285
299
  <div id="focal-cluster">
@@ -637,6 +651,16 @@ and move the cursor over the status bar">
637
651
  <td style="padding-bottom:4px">Diagnose infeasible/unbounded problems</td>
638
652
  </td>
639
653
  </tr>
654
+ <tr>
655
+ <td style="padding:0px">
656
+ <div id="settings-power" class="box clear"></div>
657
+ </td>
658
+ <td>
659
+ <span style="padding-bottom:4px">Support power grid options</span>
660
+ <img id="settings-power-btn" class="sbtn" src="images/power.png"
661
+ title="View/edit power grid settings">
662
+ </td>
663
+ </tr>
640
664
  <tr>
641
665
  <td style="padding:0px">
642
666
  <div id="settings-cost-prices" class="box clear"></div>
@@ -720,6 +744,91 @@ NOTE: Unit symbols are case-sensitive, so BTU &ne; Btu">
720
744
  </div>
721
745
  </div>
722
746
 
747
+ <!-- the POWER GRIDS dialog allows viewing/editing power grids -->
748
+ <div id="power-grids-modal" class="modal">
749
+ <div id="power-grids-dlg" class="inp-dlg">
750
+ <div class="dlg-title">
751
+ Power grids
752
+ <img class="close-btn" src="images/close.png">
753
+ </div>
754
+ <div id="power-grids-buttons">
755
+ <img id="power-grids-new-btn" class="btn enab" src="images/new.png"
756
+ title="New power grid">
757
+ <img id="power-grids-edit-btn" class="btn disab" src="images/edit.png"
758
+ title="Edit selected power grid">
759
+ <img id="power-grids-delete-btn" class="btn disab" src="images/delete.png"
760
+ title="Delete selected power grid">
761
+ </div>
762
+ <div id="power-grids-scroll-area">
763
+ <table id="power-grids-table">
764
+ </table>
765
+ </div>
766
+ </div>
767
+ </div>
768
+
769
+ <!-- the ADD POWER GRID dialog prompts for a new power grid -->
770
+ <div id="new-power-grid-modal" class="modal">
771
+ <div id="new-power-grid-dlg" class="inp-dlg">
772
+ <div class="dlg-title">
773
+ <span id="new-power-grid-action" >Define new</span> power grid
774
+ <img class="cancel-btn" src="images/cancel.png"">
775
+ <img class="ok-btn" src="images/ok.png">
776
+ </div>
777
+ <table style="margin: auto">
778
+ <tr>
779
+ <td colspan="2">Name:</td>
780
+ <td>
781
+ <input id="new-power-grid-name" type="text" autocomplete="off">
782
+ </td>
783
+ </tr>
784
+ <tr>
785
+ <td colspan="2">
786
+ Voltage:
787
+ </td>
788
+ <td>
789
+ <input id="new-power-grid-voltage" type="text" autocomplete="off">
790
+ kV
791
+ <span style="margin-left: 40px">Color:</span>
792
+ <input id="new-power-grid-color" type="color">
793
+ </td>
794
+ </tr>
795
+ <tr title="Unit of the level of power grid processes.
796
+ NOTE: Products directly linked to such processes should have a proportional unit.">
797
+ <td colspan="3">
798
+ Power unit:
799
+ <select id="new-power-grid-unit">
800
+ <option value="W">watt (W)</option>
801
+ <option value="kW">kilowatt (kW)</option>
802
+ <option value="MW">megawatt (MW)</option>
803
+ <option value="GW">gigawatt (GW)</option>
804
+ </select>
805
+ </td>
806
+ </tr>
807
+ <tr title="When checked, Kirchhoff's voltage law will be observed">
808
+ <td style="padding: 0px; margin-bottom: 1px; width: 20px">
809
+ <div id="grid-kirchhoff" class="box clear"></div>
810
+ </td>
811
+ <td colspan="2" style="padding-bottom:4px">
812
+ Add power flow constraints
813
+ </td>
814
+ </tr>
815
+ <tr title="Power loss is computed by approximating rP&sup2;">
816
+ <td colspan="2">
817
+ Losses:
818
+ </td>
819
+ <td>
820
+ <select id="new-power-grid-losses">
821
+ <option value="0">Disregard</option>
822
+ <option value="1">Proportional with load</option>
823
+ <option value="2">Piecewise linear (2 slopes)</option>
824
+ <option value="3">Piecewise linear (3 slopes)</option>
825
+ </select>
826
+ </td>
827
+ </tr>
828
+ </table>
829
+ </div>
830
+ </div>
831
+
723
832
  <!-- the SOLVER dialog permits specifying solver preference and tolerances -->
724
833
  <div id="solver-modal" class="modal">
725
834
  <div id="solver-dlg" class="inp-dlg">
@@ -1320,7 +1429,7 @@ NOTE: Unit symbols are case-sensitive, so BTU &ne; Btu">
1320
1429
  -->
1321
1430
  <div id="constraint-modal" class="modal">
1322
1431
  <div id="constraint-dlg" class="inp-dlg">
1323
- <div class="dlg-title">Constraint X &DDotrahd; Y
1432
+ <div class="dlg-title">Constraint X <span style="font-weight: normal">&#x219D;</span> Y
1324
1433
  <span id="constraint-group"></span>
1325
1434
  <div style="display: inline-block; margin-left: 219px; margin-bottom: -7px">
1326
1435
  <img class="cancel-btn" src="images/cancel.png">
@@ -1334,7 +1443,9 @@ NOTE: Unit symbols are case-sensitive, so BTU &ne; Btu">
1334
1443
  <img id="del-point-btn" class="mbtn disab"
1335
1444
  title="Remove selected point from bound line" src="images/remove.png">
1336
1445
  <img id="add-bl-btn" class="mbtn enab" title="Add new bound line"
1337
- style="margin-left: 10px" src="images/pwlf.png">
1446
+ style="margin-left: 15px" src="images/pwlf.png">
1447
+ <img id="bl-data-btn" class="mbtn enab" title="Add/modify bound line data"
1448
+ src="images/dataset.png">
1338
1449
  <!-- NOTE: values correspond to constants used by Virtual Machine -->
1339
1450
  <select id="bl-type" title="Bound type">
1340
1451
  <option value="1">&le;</option>
@@ -1343,9 +1454,6 @@ NOTE: Unit symbols are case-sensitive, so BTU &ne; Btu">
1343
1454
  </select>
1344
1455
  <img id="del-bl-btn" class="mbtn disab" src="images/delete.png"
1345
1456
  title="Delete selected bound line">
1346
- <label>Selectors:</label>
1347
- <input id="bl-selectors" type="text" placeholder="(any)"
1348
- title="When specified, bound line will constrain only in matching experiment runs">
1349
1457
  </div>
1350
1458
  <div id="constraint-y-label">% range of <span id="constraint-to-name"></span></div>
1351
1459
  <!-- NOTE: this is the div that will contain the chart's SVG image -->
@@ -1374,6 +1482,63 @@ NOTE: Unit symbols are case-sensitive, so BTU &ne; Btu">
1374
1482
  </div>
1375
1483
  </div>
1376
1484
 
1485
+ <!-- BOUNDLINE DATA modal -->
1486
+ <div id="boundline-data-modal" class="modal">
1487
+ <div id="boundline-data-dlg" class="inp-dlg">
1488
+ <div class="dlg-title">
1489
+ Boundline data
1490
+ <img class="close-btn" src="images/close.png">
1491
+ </div>
1492
+ <div id="boundline-data-remote">
1493
+ <img id="boundline-data-clip" src="images/paperclip.png">
1494
+ <input id="boundline-data-url" type="text"
1495
+ placeholder="URL or path on local host"
1496
+ title="Path can be absolute, or relative to (Linny-R)/user/data.
1497
+ Parameters %i, %j and %k will be replaced by the corresponding iterator values.">
1498
+ </div>
1499
+ <div id="boundline-data-series-lbl">Point data</div>
1500
+ <img class="btn enab" id="boundline-data-edit-btn"
1501
+ src="images/edit.png" title="Edit point data">
1502
+ <img class="ok-btn off" id="boundline-data-save-btn"
1503
+ src="images/ok.png" title="Save changes">
1504
+ <img class="cancel-btn off" id="boundline-data-cancel-btn"
1505
+ src="images/cancel.png" title="Discard changes">
1506
+ <div id="boundline-data-series-area">
1507
+ <table id="boundline-data-series-table">
1508
+ </table>
1509
+ </div>
1510
+ <textarea id="boundline-data-series" hidden="hidden" autocomplete="off"
1511
+ autocorrect="off" autocapitalize="off" spellcheck="false"
1512
+ title="Point coordinates must be semicolon-separated values between 0 and 1.
1513
+ Each line should represent the points of a different bound line.">
1514
+ </textarea>
1515
+ <div id="boundline-data-line">
1516
+ <span id="boundline-data-line-number"></span>
1517
+ (<span id="boundline-data-line-count">no data</span>)
1518
+ </div>
1519
+ <div id="boundline-data-sel-titles" style="display: block;">
1520
+ <span>Selector</span>
1521
+ <span style="margin-left: 38px">Line index expression or
1522
+ <span class="blpoints">points expression</span></span>
1523
+ </div>
1524
+ <div id="boundline-data-sel-area">
1525
+ <table id="boundline-data-sel-table">
1526
+ </table>
1527
+ </div>
1528
+ <div id="boundline-data-sel-buttons">
1529
+ <img id="bl-add-sel-btn" class="btn enab"
1530
+ src="images/add-selector.png" title="Add new selector">
1531
+ <img id="bl-rename-sel-btn" class="btn disab"
1532
+ src="images/rename.png" title="Rename selected selector">
1533
+ <img id="bl-edit-sel-btn" class="btn disab"
1534
+ src="images/edit.png" title="Edit expression of selected selector">
1535
+ <img id="bl-delete-sel-btn" class="btn disab"
1536
+ src="images/delete.png" title="Delete selected selector"
1537
+ style="margin-left: 20px">
1538
+ </div>
1539
+ </div>
1540
+ </div>
1541
+
1377
1542
  <!-- BOUNDLINE POINT modal -->
1378
1543
  <div id="boundline-point-modal" class="modal">
1379
1544
  <div id="boundline-point-dlg" class="inp-dlg">
@@ -1439,6 +1604,27 @@ NOTE: Unit symbols are case-sensitive, so BTU &ne; Btu">
1439
1604
  <div id="process-collapsed" class="box clear"></div>
1440
1605
  <div id="process-collapsed-lbl">Display as small rectangle</div>
1441
1606
  </div>
1607
+ <div id="process-grid-plate" class="no-grid-plate"></div>
1608
+ <div id="process-grid-plate-menu"></div>
1609
+ <div id="process-grid-overlay" hidden="hidden">
1610
+ <img id="process-negated" src="images/eq-negated.png">
1611
+ <div id="process-negated-msg">
1612
+ will be set to minus upper bound
1613
+ </div>
1614
+ <div id="process-grid-msg">
1615
+ When marked as grid element, lower bound, initial level,
1616
+ integer constraint, shut-down and level change frequency data
1617
+ are preserved but ignored.
1618
+ </div>
1619
+ <div id="process-length-div">
1620
+ Length of line or cable:
1621
+ <input id="process-length" type="text" autocomplete="off">
1622
+ km
1623
+ </div>
1624
+ </div>
1625
+ <input id="process-tex-id" type="text"
1626
+ title="TEX code to identify this process in formulas"
1627
+ autocomplete="off" hidden="hidden">
1442
1628
  </div>
1443
1629
  </div>
1444
1630
 
@@ -1509,6 +1695,9 @@ NOTE: Unit symbols are case-sensitive, so BTU &ne; Btu">
1509
1695
  <div id="product-no-links" class="box clear"></div>
1510
1696
  <div id="product-no-links-lbl">Hide related links</div>
1511
1697
  </div>
1698
+ <input id="product-tex-id" type="text"
1699
+ title="TEX code to identify this product in formulas"
1700
+ autocomplete="off" hidden="hidden">
1512
1701
  <div id="product-io" title="Click to set/unset as model parameter">
1513
1702
  &#10063;
1514
1703
  <div id="product-import">&darr;</div>
@@ -1745,7 +1934,7 @@ Start with = to find exact match, with ~ to match first characters">
1745
1934
  <div id="new-selector-modal" class="modal">
1746
1935
  <div id="new-selector-dlg" class="inp-dlg">
1747
1936
  <div class="dlg-title">
1748
- New dataset modifier
1937
+ New <span id="new-selector-type">dataset modifier</span>
1749
1938
  <img class="cancel-btn" src="images/cancel.png">
1750
1939
  <img class="ok-btn" src="images/ok.png">
1751
1940
  </div>
@@ -1761,7 +1950,7 @@ NOTE: * and ? will be interpreted as wildcards"
1761
1950
  <div id="rename-selector-modal" class="modal">
1762
1951
  <div id="rename-selector-dlg" class="inp-dlg">
1763
1952
  <div class="dlg-title">
1764
- Rename dataset modifier
1953
+ Rename <span id="rename-selector-type">dataset modifier</span>
1765
1954
  <img class="cancel-btn" src="images/cancel.png">
1766
1955
  <img class="ok-btn" src="images/ok.png">
1767
1956
  </div>
@@ -2886,6 +3075,32 @@ where X can be one or several of these letters: ABCDELPQ">
2886
3075
  <div id="monitor-resize" class="resizer"></div>
2887
3076
  </div>
2888
3077
 
3078
+ <!-- the TEX dialog shows mathematical equations for nodes -->
3079
+ <div id="tex-dlg" class="inp-dlg">
3080
+ <div id="tex-hdr" class="dragger dlg-title">Mathematical formulas
3081
+ <img id="tex-close-btn" class="close-btn" src="images/close.png">
3082
+ </div>
3083
+ <div id="tex-entity"></div>
3084
+ <div id="tex-tabs" class="tabs">
3085
+ <div id="tex-formula-tab" class="tab sel-tab"
3086
+ title="Mathematical formula">
3087
+ Formula
3088
+ </div>
3089
+ <div id="tex-code-tab" class="tab"
3090
+ title="Formula in TEX syntax">
3091
+ TEX code
3092
+ </div>
3093
+ <span style="margin-left: 20px; font-style: italic; color: purple">
3094
+ Work in progress!
3095
+ </span>
3096
+ </div>
3097
+ <div id="tex-formula"></div>
3098
+ <textarea id="tex-code" autocomplete="off" autocorrect="off"
3099
+ autocapitalize="off" spellcheck="false" hidden="hidden"
3100
+ readonly="true"></textarea>
3101
+ <div id="tex-resize" class="resizer"></div>
3102
+ </div>
3103
+
2889
3104
  <!-- the CHANNEL dialog prompts for two paths: channel and call-back -->
2890
3105
  <div id="channel-modal" class="modal">
2891
3106
  <div id="channel-dlg" class="inp-dlg">