linny-r 1.4.3 → 1.4.4
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 +102 -48
- package/package.json +1 -1
- package/server.js +31 -6
- package/static/images/check-off-not-same-changed.png +0 -0
- package/static/images/check-off-not-same-not-changed.png +0 -0
- package/static/images/check-off-same-changed.png +0 -0
- package/static/images/check-off-same-not-changed.png +0 -0
- package/static/images/check-on-not-same-changed.png +0 -0
- package/static/images/check-on-not-same-not-changed.png +0 -0
- package/static/images/check-on-same-changed.png +0 -0
- package/static/images/check-on-same-not-changed.png +0 -0
- package/static/images/eq-not-same-changed.png +0 -0
- package/static/images/eq-not-same-not-changed.png +0 -0
- package/static/images/eq-same-changed.png +0 -0
- package/static/images/eq-same-not-changed.png +0 -0
- package/static/images/ne-not-same-changed.png +0 -0
- package/static/images/ne-not-same-not-changed.png +0 -0
- package/static/images/ne-same-changed.png +0 -0
- package/static/images/ne-same-not-changed.png +0 -0
- package/static/images/sort-asc-lead.png +0 -0
- package/static/images/sort-asc.png +0 -0
- package/static/images/sort-desc-lead.png +0 -0
- package/static/images/sort-desc.png +0 -0
- package/static/images/sort-not.png +0 -0
- package/static/index.html +51 -35
- package/static/linny-r.css +167 -53
- package/static/scripts/linny-r-gui-actor-manager.js +340 -0
- package/static/scripts/linny-r-gui-chart-manager.js +944 -0
- package/static/scripts/linny-r-gui-constraint-editor.js +681 -0
- package/static/scripts/linny-r-gui-controller.js +4005 -0
- package/static/scripts/linny-r-gui-dataset-manager.js +1176 -0
- package/static/scripts/linny-r-gui-documentation-manager.js +739 -0
- package/static/scripts/linny-r-gui-equation-manager.js +307 -0
- package/static/scripts/linny-r-gui-experiment-manager.js +1944 -0
- package/static/scripts/linny-r-gui-expression-editor.js +449 -0
- package/static/scripts/linny-r-gui-file-manager.js +392 -0
- package/static/scripts/linny-r-gui-finder.js +727 -0
- package/static/scripts/linny-r-gui-model-autosaver.js +230 -0
- package/static/scripts/linny-r-gui-monitor.js +448 -0
- package/static/scripts/linny-r-gui-paper.js +2789 -0
- package/static/scripts/linny-r-gui-receiver.js +323 -0
- package/static/scripts/linny-r-gui-repository-browser.js +819 -0
- package/static/scripts/linny-r-gui-scale-unit-manager.js +244 -0
- package/static/scripts/linny-r-gui-sensitivity-analysis.js +778 -0
- package/static/scripts/linny-r-gui-undo-redo.js +560 -0
- package/static/scripts/linny-r-model.js +24 -11
- package/static/scripts/linny-r-utils.js +10 -0
- package/static/scripts/linny-r-vm.js +21 -12
- package/static/scripts/linny-r-gui.js +0 -16908
package/README.md
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
<img src="https://sysmod.tbm.tudelft.nl/linny-r/images/logo.png" height="55px" alt="Linny-R">
|
2
2
|
|
3
|
-
|
4
|
-
<a href="https://en.wikipedia.org/wiki/Linear_programming" target="_blank">linear programming</a>
|
5
|
-
|
6
|
-
<a href="https://en.wikipedia.org/wiki/
|
3
|
+
Linny-R is an executable graphical specification language for mixed integer
|
4
|
+
<a href="https://en.wikipedia.org/wiki/Linear_programming" target="_blank">linear programming</a>
|
5
|
+
(MILP) problems, especially
|
6
|
+
<a href="https://en.wikipedia.org/wiki/Unit_commitment_problem_in_electrical_power_production"
|
7
|
+
target="_blank">unit commitment problems</a>
|
8
|
+
(UCP) and
|
9
|
+
<a href="https://en.wikipedia.org/wiki/Generation_expansion_planning"
|
10
|
+
target="_blank">generation expansion planning</a> (GEP).
|
7
11
|
|
8
12
|
The graphical language and WYSIWYG model editor are developed by **Pieter Bots** at
|
9
13
|
<a href="https://tudelft.nl" target="_blank">Delft University of Technology</a>.
|
@@ -16,8 +20,9 @@ and a graphical user interface (GUI) that runs in any modern browser.
|
|
16
20
|
These <a href="https://sysmod.tbm.tudelft.nl/linny-r/docs/?68" target="_blank">instruction videos</a>
|
17
21
|
published on YouTube give an idea of what Linny-R can do.
|
18
22
|
|
19
|
-
User documentation for Linny-R is still scant, but it is growing. You can contribute yourself
|
20
|
-
via the official user documentation site
|
23
|
+
User documentation for Linny-R is still scant, but it is growing. You can contribute yourself
|
24
|
+
(in "wiki fashion") via the official user documentation site
|
25
|
+
<a href="https://linny-r.info" target="_blank">https://linny-r.info</a>.
|
21
26
|
Technical documentation will be developed on GitHub: https://github.com/pwgbots/linny-r/wiki
|
22
27
|
|
23
28
|
## Installing Node.js
|
@@ -45,7 +50,11 @@ so in all commands you should replace this with the actual directory path.
|
|
45
50
|
On a Windows machine the suggested path is `C:\Users\(your user name)\Documents\Linny-R`,
|
46
51
|
and on a macOS machine `/Users/(your user name)/Linny-R`.
|
47
52
|
|
48
|
-
To install Linny-R in this directory, first
|
53
|
+
To install Linny-R in this directory, first change to the parent directory like so:
|
54
|
+
|
55
|
+
``cd /Users/(your user name)``
|
56
|
+
|
57
|
+
Then create the `Linny-R` directory:
|
49
58
|
|
50
59
|
``mkdir Linny-R``
|
51
60
|
|
@@ -57,7 +66,8 @@ and then type at the command line prompt:
|
|
57
66
|
|
58
67
|
``npm install --prefix . linny-r``
|
59
68
|
|
60
|
-
**
|
69
|
+
> **Important**
|
70
|
+
> The spacing around the dot is essential. Type the command in lower case.
|
61
71
|
|
62
72
|
After installation has completed, `Linny-R` should have this directory tree structure:
|
63
73
|
|
@@ -88,11 +98,12 @@ on a Windows machine the batch script `linny-r.bat`. By default, this script fil
|
|
88
98
|
two commands: first change to the Linny-R directory and then tell Node.js to launch the
|
89
99
|
start the Linny-R server.
|
90
100
|
|
91
|
-
**
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
101
|
+
> **Note**
|
102
|
+
> When configuring Linny-R for a network environment where individual users
|
103
|
+
> each have their personal work space (e.g., a virtual drive U:), you must edit this script file,
|
104
|
+
> adding the argument `workspace=path/to/workspace` to the `node` command.
|
105
|
+
> This will instruct Linny-R to create the `user` directory in this workspace directory
|
106
|
+
> instead of the Linny-R directory.
|
96
107
|
|
97
108
|
The `linny-r` directory should contain this file `README.md`,
|
98
109
|
the files `server.js` and `console.js` that will be run by Node.js,
|
@@ -107,6 +118,33 @@ It should also contain the style sheet `linny-r.css` required by the GUI.
|
|
107
118
|
The sub-directories of `static` contain files that are served to the browser by the script
|
108
119
|
`server.js` when it is running in Node.js.
|
109
120
|
|
121
|
+
#### Installing and using an earlier version of Linny-R
|
122
|
+
|
123
|
+
By default, **npm** will install the latest release of the Linny-R software.
|
124
|
+
As this software is developed as part of academic research, new features are added
|
125
|
+
without rigorous testing. Although much effort is dedicated to maintaining upward
|
126
|
+
and downward compatibility, you may find that the latest version does not work as
|
127
|
+
well for you as some earlier version. To re-install an earlier release, for example
|
128
|
+
version 1.4.0, open the CLI, change to your `Linny-R` directory, and then type:
|
129
|
+
|
130
|
+
``npm install linny-r@1.4.0``
|
131
|
+
|
132
|
+
> **Note**
|
133
|
+
> This will overwrite the contents of the `node_modules` directory, but
|
134
|
+
> it will not affect the files in your user space.
|
135
|
+
|
136
|
+
If you prefer to have different versions of Linny-R on your computer, you can
|
137
|
+
create a separate directory for a specific version, then change to this
|
138
|
+
directory and type:
|
139
|
+
|
140
|
+
``npm install --prefix . linny-r@1.4.0``
|
141
|
+
|
142
|
+
> **Note**
|
143
|
+
> To run a specific version in your browser, you must start the server from
|
144
|
+
> the directory where you installed this version.
|
145
|
+
> Should you wish to run two different versions concurrently, you must use
|
146
|
+
> the `port=[number]` option when you start the server for the second version.
|
147
|
+
|
110
148
|
## Configuring the MILP solver
|
111
149
|
|
112
150
|
Linny-R presently supports four MILP solvers: Gurobi, CPLEX, SCIP and LP_solve.
|
@@ -114,6 +152,12 @@ Gurobi and CPLEX are _considerably_ more powerful than the open source solvers S
|
|
114
152
|
but they require a license.
|
115
153
|
Academic licenses can be obtained by students and staff of eligible institutions.
|
116
154
|
|
155
|
+
> **Important**
|
156
|
+
> When installing a solver, it is advisable to accept the default file
|
157
|
+
> locations that are proposed by the installer.
|
158
|
+
> After installation, do **not** move files to some other directory,
|
159
|
+
> as this is bound to cause problems.
|
160
|
+
|
117
161
|
#### Installing Gurobi
|
118
162
|
|
119
163
|
The software you need to install is **Gurobi Optimizer**.
|
@@ -125,9 +169,6 @@ Gurobi on your computer can be obtained via this URL:
|
|
125
169
|
When running a model, Linny-R will try to execute the command line application `gurobi_cl`.
|
126
170
|
It will look for this application in the directory specified in the environment variable PATH on your computer.
|
127
171
|
|
128
|
-
When installing Gurobi, please accept the default file locations that are proposed by the installer.
|
129
|
-
Then do **not** move Gurobi files to some other directory, as this is bound to cause problems.
|
130
|
-
|
131
172
|
#### Installing CPLEX
|
132
173
|
|
133
174
|
The software you need to install is **CPLEX**.
|
@@ -141,9 +182,6 @@ It will look for this application in the directory specified in the environment
|
|
141
182
|
or more specifically in the environment variable CPLEX_STUDIO_BINARIES<em>nnnn</em>
|
142
183
|
(where _nnnn_ denotes the CPLEX version number) on your computer.
|
143
184
|
|
144
|
-
When installing CPLEX, please accept the default file locations that are proposed by the installer.
|
145
|
-
Then do **not** move CPLEX files to some other directory, as this is bound to cause problems.
|
146
|
-
|
147
185
|
#### Installing SCIP
|
148
186
|
|
149
187
|
The SCIP software is open source. Instructions for installation can be found via this URL:
|
@@ -152,9 +190,6 @@ The SCIP software is open source. Instructions for installation can be found via
|
|
152
190
|
When running a model, Linny-R will try to execute the command line application `scip`.
|
153
191
|
It will look for this application in the directory specified in the environment variable PATH on your computer.
|
154
192
|
|
155
|
-
When installing SCIP, please accept the default file locations that are proposed by the installer.
|
156
|
-
Then do **not** move SCIP files to some other directory, as this is bound to cause problems.
|
157
|
-
|
158
193
|
#### Installing LP_solve
|
159
194
|
|
160
195
|
The LP_solve software is open source and can be downloaded via this URL:
|
@@ -216,15 +251,23 @@ while in the CLI you should see a long series of server log messages like:
|
|
216
251
|
... etc.
|
217
252
|
</pre>
|
218
253
|
|
254
|
+
> **Important**
|
255
|
+
> Do **not** close the CLI. If you do, the Linny-R GUI may still be
|
256
|
+
> visible in your browser, but you will be warned that it cannot connect
|
257
|
+
> to the server (at 127.0.0.1:5050). This means that you have to restart
|
258
|
+
> Linny-R from a new CLI.
|
259
|
+
|
219
260
|
After loading into the browser, Linny-R will try to connect to the solver.
|
220
|
-
If successful, a notification (blue background) will appear on the status bar
|
221
|
-
stating the name of the solver.
|
261
|
+
If successful, a notification (blue background) will appear on the status bar
|
262
|
+
at the bottom of the window, stating the name of the solver.
|
222
263
|
|
223
264
|
You can then test the GUI by creating a simple model.
|
224
265
|
Make one that has at least one process that outputs a product,
|
225
|
-
and this product must have a price or a set lower bound, otherwise the model
|
266
|
+
and this product must have a price or a set lower bound, otherwise the model
|
267
|
+
will have no objective function.
|
226
268
|
Then click on the _Solve_ button at the bottom of the left-hand tool bar.
|
227
|
-
The Linny-R icon in the upper left corner should start rotating, while the
|
269
|
+
The Linny-R icon in the upper left corner should start rotating, while the
|
270
|
+
status bar at the bottom should display:
|
228
271
|
|
229
272
|
<pre>
|
230
273
|
Solving block 1 of 1
|
@@ -238,10 +281,11 @@ Meanwhile, in the CLI, you should see a server log message like:
|
|
238
281
|
Solve block 1 a
|
239
282
|
</pre>
|
240
283
|
|
241
|
-
To end a modeling session, you can shut down the server by
|
242
|
-
in the upper right corner of the Linny-R GUI in your browser,
|
243
|
-
and then
|
244
|
-
you
|
284
|
+
To end a modeling session, you can shut down the server by clicking on the
|
285
|
+
local host icon in the upper right corner of the Linny-R GUI in your browser,
|
286
|
+
confirming that you want to leave, and then closing your browser (tab).
|
287
|
+
If you do not shut down the server from the browser, you can also stop the
|
288
|
+
server by repeatedly pressing ``Ctrl+C`` in the CLI.
|
245
289
|
|
246
290
|
## Command line options
|
247
291
|
|
@@ -262,8 +306,8 @@ To facilitate start-up, you can create a shortcut icon for Linny-R on your deskt
|
|
262
306
|
On a Windows machine, open the _File Explorer_, select your Linny-R folder,
|
263
307
|
right-click on the batch file `linny-r.bat`, and select the _Create shortcut_ option.
|
264
308
|
Then right-click on the shortcut file to edit its properties, and click the _Change Icon_ button.
|
265
|
-
The dialog that then appears will allow you to go to the sub-folder
|
266
|
-
where you should select the file `linny-r.ico`.
|
309
|
+
The dialog that then appears will allow you to go to the sub-folder
|
310
|
+
`node_modules\linny-r\static\images`, where you should select the file `linny-r.ico`.
|
267
311
|
Finally, rename the shortcut to `Linny-R` and move or copy it to your desktop.
|
268
312
|
|
269
313
|
On a macOS machine, open Terminal and change to your Linny-R directory, and then type:
|
@@ -293,35 +337,43 @@ The sub-directories of this directory `user` are used by Linny-R to store files.
|
|
293
337
|
* `solver` will contain the files that are exchanged with the Mixed Integer Linear Programming (MILP) solver
|
294
338
|
(the names of the files that will appear in this directory may vary, depending on the MILP-solver you use)
|
295
339
|
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
340
|
+
> **Note**
|
341
|
+
> By default, the `user` directory is created in your `Linny-R` directory.
|
342
|
+
> You can overrule this by starting the server with the `workspace=[path]` option.
|
343
|
+
> This will create a new, empty workspace (the directories listed above) in the specified path.
|
344
|
+
> It will **not** affect or duplicate information from existing workspaces.
|
300
345
|
|
301
346
|
## Installing Inkscape
|
302
347
|
|
303
348
|
Linny-R creates its diagrams and charts as SVG images.
|
304
349
|
When you download a diagram, it will be saved as a .svg file.
|
305
|
-
These files can be viewed and edited using Inkscape, an open source
|
350
|
+
These files can be viewed and edited using Inkscape, an open source
|
351
|
+
vector graphics editor.
|
306
352
|
|
307
|
-
As it may be tedious to first save a diagram as SVG and then render it
|
308
|
-
Linny-R features a *Render diagram as bitmap* button
|
353
|
+
As it may be tedious to first save a diagram as SVG and then render it
|
354
|
+
manually as a bitmap image, Linny-R features a *Render diagram as bitmap* button
|
355
|
+
on the top toolbar, and on the bottom toolbar of the _Chart manager_.
|
309
356
|
When you click it, Linny-R will send the image as SVG to the server.
|
310
357
|
The server script will save the SVG in the `user/diagrams` sub-directory,
|
311
|
-
and then try to execute an Inkscape command that will convert this SVG to
|
358
|
+
and then try to execute an Inkscape command that will convert this SVG to
|
359
|
+
a PNG image file in the same directory.
|
312
360
|
The file name will be `diagram-(date and time).png`.
|
313
|
-
Meanwhile, the browser will have opened a new tab that will be "waiting"
|
361
|
+
Meanwhile, the browser will have opened a new tab that will be "waiting"
|
362
|
+
for this PNG image to become available.
|
314
363
|
If rendering was successful, the image will appear in this browser tab;
|
315
364
|
if rendering failed, the original SVG image will be shown.
|
316
365
|
|
317
366
|
To install Inkscape, please look here:
|
318
367
|
<a href="https://inkscape.org/release" target="_blank">https://inkscape.org/release</a>
|
319
368
|
|
320
|
-
Linny-R will automatically detect whether Inkscape is installed by searching
|
321
|
-
|
369
|
+
Linny-R will automatically detect whether Inkscape is installed by searching
|
370
|
+
for it in the environment variable PATH on your computer. On a macOS computer,
|
371
|
+
Linny-R will look for Inkscape in `/Applications/Inkscape.app/Contents/MacOS`.
|
322
372
|
|
323
|
-
|
324
|
-
|
373
|
+
> **Note**
|
374
|
+
> The installation wizard for Inkscape (version 1.3) may **not**
|
375
|
+
> add the application to the PATH variable. Please check whether you need to
|
376
|
+
> do this yourself.
|
325
377
|
|
326
378
|
## Using Linny-R console
|
327
379
|
|
@@ -333,7 +385,8 @@ If you open a CLI box, change to your `Linny-R` directory, and then type:
|
|
333
385
|
|
334
386
|
you will see the command line options that allow you to run models in various ways.
|
335
387
|
|
336
|
-
**
|
388
|
+
> **Note**
|
389
|
+
> The console-only version is still in development, and does not provide all functions yet.
|
337
390
|
|
338
391
|
## Troubleshooting problems
|
339
392
|
|
@@ -341,8 +394,9 @@ If during any of the steps above you encounter problems, please try to diagnose
|
|
341
394
|
You can find a lot of useful information on the Linny-R user documentation website:
|
342
395
|
<a href="https://linny-r.info" target="_blank">https://linny-r.info</a>.
|
343
396
|
|
344
|
-
|
345
|
-
|
397
|
+
> **Important**
|
398
|
+
> To diagnose a problem, always look in the CLI box where Node.js is running,
|
399
|
+
> as informative server-side error messages will appear there.
|
346
400
|
|
347
401
|
Then also look at the console window of your browser.
|
348
402
|
Most browsers offer a _Web Developer Tools_ option via their application menu.
|
package/package.json
CHANGED
package/server.js
CHANGED
@@ -1380,8 +1380,9 @@ function convertSVGtoPNG(req, res, sp) {
|
|
1380
1380
|
// Enclose paths in double quotes if they contain spaces
|
1381
1381
|
if(cmd.indexOf(' ') >= 0) cmd = `"${cmd}"`;
|
1382
1382
|
if(svg.indexOf(' ') >= 0) svg = `"${svg}"`;
|
1383
|
-
|
1384
|
-
|
1383
|
+
cmd += ` --export-type=png --export-dpi=${SETTINGS.dpi} ${svg}`;
|
1384
|
+
console.log(cmd);
|
1385
|
+
child_process.exec(cmd,
|
1385
1386
|
(error, stdout, stderr) => {
|
1386
1387
|
let ext = '.svg';
|
1387
1388
|
console.log(stdout);
|
@@ -1389,8 +1390,24 @@ function convertSVGtoPNG(req, res, sp) {
|
|
1389
1390
|
console.log('WARNING: Failed to run Inkscape --', error);
|
1390
1391
|
console.log(stderr);
|
1391
1392
|
} else {
|
1392
|
-
|
1393
|
-
|
1393
|
+
// Look for the PNG file.
|
1394
|
+
const mode = fs.constants.R_OK | fs.constants.W_O;
|
1395
|
+
try {
|
1396
|
+
fs.accessSync(fp + '.png', mode);
|
1397
|
+
ext = '.png';
|
1398
|
+
} catch(err) {
|
1399
|
+
// NOTE: Inkscape 1.3 adds ".png" to the original file name,
|
1400
|
+
// so this may end on ".svg.png"
|
1401
|
+
try {
|
1402
|
+
fs.accessSync(fp + '.svg.png', mode);
|
1403
|
+
// If found, rename the PNG file.
|
1404
|
+
fs.renameSync(fp + '.svg.png', fp + '.png');
|
1405
|
+
ext = '.png';
|
1406
|
+
} catch(err) {
|
1407
|
+
console.log('WARNING: Inkscape did not output a PNG file');
|
1408
|
+
}
|
1409
|
+
}
|
1410
|
+
// Delete the SVG file.
|
1394
1411
|
try {
|
1395
1412
|
fs.unlinkSync(fp + '.svg');
|
1396
1413
|
} catch(error) {
|
@@ -1669,9 +1686,17 @@ function commandLineSettings() {
|
|
1669
1686
|
}
|
1670
1687
|
// Verify that Inkscape is installed
|
1671
1688
|
if(settings.inkscape) {
|
1672
|
-
// NOTE:
|
1673
|
-
|
1689
|
+
// NOTE: On Windows, the command line version is a .com file
|
1690
|
+
let ip = path.join(settings.inkscape,
|
1674
1691
|
'inkscape' + (PLATFORM.startsWith('win') ? '.com' : ''));
|
1692
|
+
try {
|
1693
|
+
fs.accessSync(ip, fs.constants.X_OK);
|
1694
|
+
} catch(err) {
|
1695
|
+
// NOTE: As of Inkscape version 1.3, the command line executable
|
1696
|
+
// is called inkscapecom(.com)
|
1697
|
+
ip = path.join(settings.inkscape,
|
1698
|
+
'inkscapecom' + (PLATFORM.startsWith('win') ? '.com' : ''));
|
1699
|
+
}
|
1675
1700
|
try {
|
1676
1701
|
fs.accessSync(ip, fs.constants.X_OK);
|
1677
1702
|
console.log('Path to Inkscape:', settings.inkscape);
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
package/static/index.html
CHANGED
@@ -121,7 +121,16 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
121
121
|
document.getElementById('doc-head').appendChild(link);
|
122
122
|
// Reload the scripts in their proper sequence, i.e., such that all
|
123
123
|
// classes are initialized before their instances are created
|
124
|
-
loadScripts(['-config', '-model', '-ctrl',
|
124
|
+
loadScripts(['-config', '-model', '-ctrl',
|
125
|
+
'-gui-paper', '-gui-controller', '-gui-monitor',
|
126
|
+
'-gui-file-manager', '-gui-expression-editor',
|
127
|
+
'-gui-model-autosaver', '-gui-scale-unit-manager',
|
128
|
+
'-gui-actor-manager', '-gui-constraint-editor',
|
129
|
+
'-gui-repository-browser', '-gui-dataset-manager',
|
130
|
+
'-gui-equation-manager', '-gui-chart-manager',
|
131
|
+
'-gui-sensitivity-analysis', '-gui-experiment-manager',
|
132
|
+
'-gui-documentation-manager', '-gui-finder', '-gui-receiver',
|
133
|
+
'-gui-undo-redo', '-vm', '-utils'], t);
|
125
134
|
}
|
126
135
|
}
|
127
136
|
|
@@ -877,9 +886,9 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
877
886
|
will discard changes you made to the current model. Continue?
|
878
887
|
</div>
|
879
888
|
<div id="confirm-load-from-repo-buttons">
|
880
|
-
<img class="ok-btn
|
889
|
+
<img class="ok-btn" src="images/ok.png">
|
881
890
|
Yes
|
882
|
-
<img class="cancel-btn
|
891
|
+
<img class="cancel-btn" src="images/cancel.png">
|
883
892
|
No
|
884
893
|
</div>
|
885
894
|
</div>
|
@@ -898,9 +907,9 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
898
907
|
<span id="confirm-delete-from-repo-name"></span>?
|
899
908
|
</div>
|
900
909
|
<div id="confirm-delete-from-repo-buttons">
|
901
|
-
<img class="ok-btn
|
910
|
+
<img class="ok-btn" src="images/ok.png">
|
902
911
|
Yes
|
903
|
-
<img class="cancel-btn
|
912
|
+
<img class="cancel-btn" src="images/cancel.png">
|
904
913
|
No
|
905
914
|
</div>
|
906
915
|
</div>
|
@@ -1016,7 +1025,7 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1016
1025
|
<tr>
|
1017
1026
|
<td>Actor:</td>
|
1018
1027
|
<td>
|
1019
|
-
<input id="add-process-actor
|
1028
|
+
<input id="add-process-actor" style="width:223px" type="text"
|
1020
1029
|
autocomplete="off">
|
1021
1030
|
</td>
|
1022
1031
|
</tr>
|
@@ -1065,6 +1074,7 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1065
1074
|
<div id="cluster-dlg" class="inp-dlg">
|
1066
1075
|
<div class="dlg-title">
|
1067
1076
|
<span id="cluster-action">Add</span> cluster
|
1077
|
+
<span id="cluster-group"></span>
|
1068
1078
|
<img class="cancel-btn" src="images/cancel.png">
|
1069
1079
|
<img class="ok-btn" src="images/ok.png">
|
1070
1080
|
</div>
|
@@ -1076,7 +1086,7 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1076
1086
|
</tr>
|
1077
1087
|
<tr>
|
1078
1088
|
<td>Actor:</td>
|
1079
|
-
<td><input id="cluster-actor
|
1089
|
+
<td><input id="cluster-actor" style="width:270px"
|
1080
1090
|
type="text" autocomplete="off"></td>
|
1081
1091
|
</tr>
|
1082
1092
|
</table>
|
@@ -1136,11 +1146,14 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1136
1146
|
<div id="link-modal" class="modal">
|
1137
1147
|
<div id="link-dlg" class="inp-dlg">
|
1138
1148
|
<div class="dlg-title">
|
1139
|
-
<!-- link arrow symbol depends on type of link: product => solid,
|
1140
|
-
|
1141
|
-
|
1142
|
-
<span id="link-arrow-
|
1143
|
-
<div id="link-
|
1149
|
+
<!-- link arrow symbol depends on type of link: product => solid,
|
1150
|
+
data => dashed; no spacing between <span> elements, as these
|
1151
|
+
elements have left and right padding. -->
|
1152
|
+
<div id="link-x-y">Link X<span id="link-arrow-1">➝</span>Y:</div>
|
1153
|
+
<div id="link-from-name" title="FROM">
|
1154
|
+
</div><span id="link-arrow-2">➝</span><div id="link-to-name" title="TO">
|
1155
|
+
</div>
|
1156
|
+
<span id="link-group"></span>
|
1144
1157
|
<img class="cancel-btn" src="images/cancel.png">
|
1145
1158
|
<img class="ok-btn" src="images/ok.png">
|
1146
1159
|
</div>
|
@@ -1231,13 +1244,14 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1231
1244
|
<div id="constraint-modal" class="modal">
|
1232
1245
|
<div id="constraint-dlg" class="inp-dlg">
|
1233
1246
|
<div class="dlg-title">Constraint X ⤑ Y
|
1247
|
+
<span id="constraint-group"></span>
|
1234
1248
|
<div style="display: inline-block; margin-left: 219px; margin-bottom: -7px">
|
1235
1249
|
<img class="cancel-btn" src="images/cancel.png">
|
1236
1250
|
<img class="ok-btn" src="images/ok.png"
|
1237
1251
|
style="margin-left: 4px; margin-bottom: 3px">
|
1238
1252
|
</div>
|
1239
1253
|
</div>
|
1240
|
-
<div id="
|
1254
|
+
<div id="constraint-button-bar">
|
1241
1255
|
<img id="add-point-btn" class="mbtn enab" src="images/add.png"
|
1242
1256
|
title="Add new point to selected bound line">
|
1243
1257
|
<img id="del-point-btn" class="mbtn disab"
|
@@ -1256,27 +1270,27 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1256
1270
|
<input id="bl-selectors" type="text" placeholder="(any)"
|
1257
1271
|
title="When specified, bound line will constrain only in matching experiment runs">
|
1258
1272
|
</div>
|
1259
|
-
<div id="
|
1273
|
+
<div id="constraint-y-label">% range of <span id="constraint-to-name"></span></div>
|
1260
1274
|
<!-- NOTE: this is the div that will contain the chart's SVG image -->
|
1261
|
-
<div id="
|
1262
|
-
<div id="
|
1263
|
-
<div id="
|
1264
|
-
<div id="
|
1265
|
-
<div id="
|
1266
|
-
<div id="
|
1267
|
-
<div id="
|
1268
|
-
<div id="
|
1275
|
+
<div id="constraint-container"></div>
|
1276
|
+
<div id="constraint-x-label">% range of <span id="constraint-from-name"></span></div>
|
1277
|
+
<div id="constraint-pos-x">X = 0</div>
|
1278
|
+
<div id="constraint-pos-y">Y = 0</div>
|
1279
|
+
<div id="constraint-point" title="Selected point"></div>
|
1280
|
+
<div id="constraint-equation" title="Equation for line segment"></div>
|
1281
|
+
<div id="constraint-bottom-div">
|
1282
|
+
<div id="constraint-no-slack-div"
|
1269
1283
|
title="Check to enforce bounds (Caution: this may make model infeasible)">
|
1270
|
-
<div id="
|
1271
|
-
<div id="
|
1284
|
+
<div id="constraint-no-slack" class="box clear"></div>
|
1285
|
+
<div id="constraint-no-slack-lbl">No slack</div>
|
1272
1286
|
</div>
|
1273
|
-
<div id="
|
1287
|
+
<div id="constraint-soc">
|
1274
1288
|
<label>Attributed share of cost:</label>
|
1275
|
-
<select id="
|
1289
|
+
<select id="constraint-soc-direct">
|
1276
1290
|
<option value="1">X→Y</option>
|
1277
1291
|
<option value="-1">Y→X</option>
|
1278
1292
|
</selector>
|
1279
|
-
<input id="
|
1293
|
+
<input id="constraint-share-of-cost" type="text" autocomplete="off"><label>%</label>
|
1280
1294
|
</div>
|
1281
1295
|
</div>
|
1282
1296
|
</div>
|
@@ -1287,6 +1301,7 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1287
1301
|
<div id="process-dlg" class="inp-dlg">
|
1288
1302
|
<div class="dlg-title">
|
1289
1303
|
Process properties
|
1304
|
+
<span id="process-group"></span>
|
1290
1305
|
<img class="cancel-btn" src="images/cancel.png">
|
1291
1306
|
<img class="ok-btn" src="images/ok.png">
|
1292
1307
|
</div>
|
@@ -1303,7 +1318,7 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1303
1318
|
<img id="process-UB-x" class="sbtn enab" src="images/edit.png"
|
1304
1319
|
title="Edit expression for upper process bound">
|
1305
1320
|
<!-- "equal bounds" button is displayed middle-left of the two input fields -->
|
1306
|
-
<div id="process-UB-equal" class="
|
1321
|
+
<div id="process-UB-equal" class="bbtn ne" title="Set equal bounds"></div>
|
1307
1322
|
<div id="process-IL-lbl">Initial level:</div>
|
1308
1323
|
<input id="process-IL" type="text" autocomplete="off">
|
1309
1324
|
<img id="process-IL-x" class="sbtn enab" src="images/edit.png"
|
@@ -1320,9 +1335,9 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1320
1335
|
</div>
|
1321
1336
|
<div id="process-pace-div">
|
1322
1337
|
Level change frequency: 1/
|
1323
|
-
<input id="process-
|
1338
|
+
<input id="process-LCF" type="text" autocomplete="off">
|
1324
1339
|
time step(s)
|
1325
|
-
<img id="process-
|
1340
|
+
<img id="process-LCF-x" class="sbtn enab" src="images/edit.png"
|
1326
1341
|
title="Edit expression for level change frequency">
|
1327
1342
|
</div>
|
1328
1343
|
<div id="process-collapsed-div">
|
@@ -1337,6 +1352,7 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1337
1352
|
<div id="product-dlg" class="inp-dlg">
|
1338
1353
|
<div class="dlg-title">
|
1339
1354
|
Product properties
|
1355
|
+
<span id="product-group"></span>
|
1340
1356
|
<img class="cancel-btn" src="images/cancel.png">
|
1341
1357
|
<img class="ok-btn" src="images/ok.png">
|
1342
1358
|
</div>
|
@@ -1371,7 +1387,7 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1371
1387
|
<img id="product-UB-x" class="sbtn enab" src="images/edit.png"
|
1372
1388
|
title="Edit expression for upper product bound">
|
1373
1389
|
<!-- "equal bounds" button is displayed middle-left of the two input fields -->
|
1374
|
-
<div id="product-UB-equal" class="
|
1390
|
+
<div id="product-UB-equal" class="bbtn ne" title="Set equal bounds"></div>
|
1375
1391
|
<div id="product-IL-lbl">Initial level:</div>
|
1376
1392
|
<input id="product-IL" type="text" autocomplete="off">
|
1377
1393
|
<img id="product-IL-x" class="sbtn enab" src="images/edit.png"
|
@@ -1456,9 +1472,9 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
1456
1472
|
to this cluster?
|
1457
1473
|
</div>
|
1458
1474
|
<div id="move-buttons">
|
1459
|
-
<img class="ok-btn
|
1475
|
+
<img class="ok-btn" src="images/ok.png">
|
1460
1476
|
Yes
|
1461
|
-
<img class="cancel-btn
|
1477
|
+
<img class="cancel-btn" src="images/cancel.png">
|
1462
1478
|
No
|
1463
1479
|
</div>
|
1464
1480
|
</div>
|
@@ -2807,9 +2823,9 @@ where X can be one or several of these letters: ABCDELPQ">
|
|
2807
2823
|
</div>
|
2808
2824
|
<div id="check-update-msg"></div>
|
2809
2825
|
<div id="check-update-buttons">
|
2810
|
-
<img class="ok-btn
|
2826
|
+
<img class="ok-btn" src="images/ok.png">
|
2811
2827
|
Shut down server to install new version
|
2812
|
-
<img class="cancel-btn
|
2828
|
+
<img class="cancel-btn" src="images/cancel.png">
|
2813
2829
|
Continue using current version
|
2814
2830
|
</div>
|
2815
2831
|
</div>
|