linny-r 1.7.4 → 1.8.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.
package/README.md CHANGED
@@ -66,7 +66,7 @@ and then type at the command line prompt:
66
66
 
67
67
  ``npm install --prefix . linny-r``
68
68
 
69
- > **Important**
69
+ > [!IMPORTANT]
70
70
  > The spacing around the dot is essential. Type the command in lower case.
71
71
 
72
72
  After installation has completed, `Linny-R` should have this directory tree structure:
@@ -98,7 +98,7 @@ on a Windows machine the batch script `linny-r.bat`. By default, this script fil
98
98
  two commands: first change to the Linny-R directory and then tell Node.js to launch the
99
99
  start the Linny-R server.
100
100
 
101
- > **Note**
101
+ > [!NOTE]
102
102
  > When configuring Linny-R for a network environment where individual users
103
103
  > each have their personal work space (e.g., a virtual drive U:), you must edit this script file,
104
104
  > adding the argument `workspace=path/to/workspace` to the `node` command.
@@ -129,7 +129,7 @@ version 1.4.0, open the CLI, change to your `Linny-R` directory, and then type:
129
129
 
130
130
  ``npm install linny-r@1.4.0``
131
131
 
132
- > **Note**
132
+ > [!NOTE]
133
133
  > This will overwrite the contents of the `node_modules` directory, but
134
134
  > it will not affect the files in your user space.
135
135
 
@@ -139,7 +139,7 @@ directory and type:
139
139
 
140
140
  ``npm install --prefix . linny-r@1.4.0``
141
141
 
142
- > **Note**
142
+ > [!NOTE]
143
143
  > To run a specific version in your browser, you must start the server from
144
144
  > the directory where you installed this version.
145
145
  > Should you wish to run two different versions concurrently, you must use
@@ -152,7 +152,7 @@ Gurobi, MOSEK and CPLEX are _considerably_ more powerful than the open source so
152
152
  but they require a license.
153
153
  Academic licenses can be obtained by students and staff of eligible institutions.
154
154
 
155
- > **Important**
155
+ > [!IMPORTANT]
156
156
  > When installing a solver, it is advisable to accept the default file
157
157
  > locations that are proposed by the installer.
158
158
  > After installation, do **not** move files to some other directory,
@@ -262,7 +262,7 @@ while in the CLI you should see a long series of server log messages like:
262
262
  ... etc.
263
263
  </pre>
264
264
 
265
- > **Important**
265
+ > [!IMPORTANT]
266
266
  > Do **not** close the CLI. If you do, the Linny-R GUI may still be
267
267
  > visible in your browser, but you will be warned that it cannot connect
268
268
  > to the server (at 127.0.0.1:5050). This means that you have to restart
@@ -348,7 +348,7 @@ The sub-directories of this directory `user` are used by Linny-R to store files.
348
348
  * `solver` will contain the files that are exchanged with the Mixed Integer Linear Programming (MILP) solver
349
349
  (the names of the files that will appear in this directory may vary, depending on the MILP-solver you use)
350
350
 
351
- > **Note**
351
+ > [!NOTE]
352
352
  > By default, the `user` directory is created in your `Linny-R` directory.
353
353
  > You can overrule this by starting the server with the `workspace=[path]` option.
354
354
  > This will create a new, empty workspace (the directories listed above) in the specified path.
@@ -381,7 +381,7 @@ Linny-R will automatically detect whether Inkscape is installed by searching
381
381
  for it in the environment variable PATH on your computer. On a macOS computer,
382
382
  Linny-R will look for Inkscape in `/Applications/Inkscape.app/Contents/MacOS`.
383
383
 
384
- > **Note**
384
+ > [!NOTE]
385
385
  > The installation wizard for Inkscape (version 1.3) may **not**
386
386
  > add the application to the PATH variable. Please check whether you need to
387
387
  > do this yourself.
@@ -396,7 +396,7 @@ If you open a CLI box, change to your `Linny-R` directory, and then type:
396
396
 
397
397
  you will see the command line options that allow you to run models in various ways.
398
398
 
399
- > **Note**
399
+ > [!NOTE]
400
400
  > The console-only version is still in development, and does not provide all functions yet.
401
401
 
402
402
  ## Troubleshooting problems
@@ -405,7 +405,7 @@ If during any of the steps above you encounter problems, please try to diagnose
405
405
  You can find a lot of useful information on the Linny-R user documentation website:
406
406
  <a href="https://linny-r.info" target="_blank">https://linny-r.info</a>.
407
407
 
408
- > **Important**
408
+ > [!IMPORTANT]
409
409
  > To diagnose a problem, always look in the CLI box where Node.js is running,
410
410
  > as informative server-side error messages will appear there.
411
411
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linny-r",
3
- "version": "1.7.4",
3
+ "version": "1.8.1",
4
4
  "description": "Executable graphical language with WYSIWYG editor for MILP models",
5
5
  "main": "server.js",
6
6
  "scripts": {
package/static/index.html CHANGED
@@ -375,7 +375,7 @@ and move the cursor over the status bar">
375
375
  <img id="redo-btn" class="btn disab" src="images/redo.png"
376
376
  title="Redo (Ctrl-Y)">
377
377
  <img id="solve-btn" class="btn enab" src="images/solve.png"
378
- title="Run simulation (Ctrl-R)">
378
+ title="Run simulation (Ctrl-R) &ndash; Alt-click to diagnose infeasible/unbounded problem (Alt-R)">
379
379
  <img id="stop-btn" class="btn enab off" src="images/stop.png"
380
380
  title="Stop solving (Ctrl-Q)">
381
381
  <img id="reset-btn" class="btn enab off" src="images/reset.png"
@@ -576,11 +576,9 @@ and move the cursor over the status bar">
576
576
  <table style="width:100%; white-space: nowrap">
577
577
  <tr>
578
578
  <td style="padding:0px">
579
- <div id="settings-decimal-comma" class="box clear"></div>
580
- </td>
581
- <td style="padding-bottom:4px">
582
- Use decimal <u>comma</u> when copying data to clipboard
579
+ <div id="settings-block-arrows" class="box clear"></div>
583
580
  </td>
581
+ <td style="padding-bottom:4px">Show hidden flows as block arrows</td>
584
582
  </tr>
585
583
  <tr>
586
584
  <td style="padding:0px">
@@ -632,25 +630,34 @@ and move the cursor over the status bar">
632
630
  title="Set solver preferences">
633
631
  </td>
634
632
  </tr>
633
+ <tr title="When checked, finite process bounds and slack variables are always added">
634
+ <td style="padding:0px">
635
+ <div id="settings-diagnose" class="box clear"></div>
636
+ </td>
637
+ <td style="padding-bottom:4px">Diagnose infeasible/unbounded problems</td>
638
+ </td>
639
+ </tr>
635
640
  <tr>
636
641
  <td style="padding:0px">
637
642
  <div id="settings-cost-prices" class="box clear"></div>
638
643
  </td>
639
644
  <td style="padding-bottom:4px">Infer and display cost prices</td>
640
645
  </tr>
641
- <tr title="Reports will be saved in user/reports/, and removed after 24 h">
646
+ <tr>
642
647
  <td style="padding:0px">
643
- <div id="settings-report-results" class="box clear"></div>
648
+ <div id="settings-decimal-comma" class="box clear"></div>
644
649
  </td>
645
650
  <td style="padding-bottom:4px">
646
- Report results after each run
651
+ Use decimal <u>comma</u> when copying data to clipboard
647
652
  </td>
648
653
  </tr>
649
- <tr>
654
+ <tr title="Reports will be saved in user/reports/, and removed after 24 h">
650
655
  <td style="padding:0px">
651
- <div id="settings-block-arrows" class="box clear"></div>
656
+ <div id="settings-report-results" class="box clear"></div>
657
+ </td>
658
+ <td style="padding-bottom:4px">
659
+ Report results after each run
652
660
  </td>
653
- <td style="padding-bottom:4px">Show hidden flows as block arrows</td>
654
661
  </tr>
655
662
  <tr>
656
663
  <td style="padding:0px">
@@ -723,23 +730,23 @@ NOTE: Unit symbols are case-sensitive, so BTU &ne; Btu">
723
730
  </div>
724
731
  <table style="width: 100%">
725
732
  <tr title="This solver will be used if it is installed">
726
- <td>
733
+ <td colspan="2">
727
734
  <label>Preferred solver:</label>
728
735
  <select id="solver-preference">
729
736
  </select>
730
737
  </td>
731
738
  </tr>
732
739
  <tr title="Tolerance may range from 1e-9 to 0.1">
733
- <td>
740
+ <td colspan="2">
734
741
  <label>Integer feasibility tolerance:</label>
735
- <input id="solver-int-feasibility" style="width: 55px"
742
+ <input id="solver-int-feasibility" style="width: 65px"
736
743
  placeholder="5e-7" type="text" autocomplete="off">
737
744
  </td>
738
745
  </tr>
739
746
  <tr title="Relative gap may range from 0 to 0.5">
740
- <td>
747
+ <td colspan="2">
741
748
  <label>Relative MIP gap:</label>
742
- <input id="solver-mip-gap" style="width: 55px"
749
+ <input id="solver-mip-gap" style="width: 65px"
743
750
  placeholder="1e-4" type="text" autocomplete="off">
744
751
  </td>
745
752
  </tr>
@@ -313,6 +313,15 @@ img.sbtn.senab:hover {
313
313
  filter: brightness(150%);
314
314
  }
315
315
 
316
+ img.sgray {
317
+ width: 16px;
318
+ height: 16px;
319
+ margin: -1px;
320
+ vertical-align: middle;
321
+ filter: grayscale(100%);
322
+ }
323
+
324
+
316
325
  /* Bounds button indicates whether LB = UB */
317
326
  div.bbtn {
318
327
  background-size: contain;
@@ -1002,7 +1011,7 @@ input.pws-5 {
1002
1011
  }
1003
1012
 
1004
1013
  #solver-dlg {
1005
- width: 212px;
1014
+ width: 250px;
1006
1015
  height: min-content;
1007
1016
  }
1008
1017
 
@@ -2727,6 +2736,7 @@ td.equation-expression {
2727
2736
  top: 134px;
2728
2737
  left: 2px;
2729
2738
  width: calc(100% - 5px);
2739
+ white-space: nowrap;
2730
2740
  }
2731
2741
 
2732
2742
  #series-clip {
@@ -572,6 +572,7 @@ class Controller {
572
572
  VM.reset();
573
573
  // Redraw model in the browser (GUI only).
574
574
  MODEL.clearSelection();
575
+ this.clearStatusLine();
575
576
  this.drawDiagram(MODEL);
576
577
  }
577
578
 
@@ -605,6 +606,7 @@ class Controller {
605
606
  setProgressNeedle() {}
606
607
  updateTimeStep() {}
607
608
  updateIssuePanel() {}
609
+ clearStatusLine() {}
608
610
  updateDraggableDialogs() {}
609
611
  logHeapSize() {}
610
612