linny-r 1.9.3 → 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.
- package/LICENSE +1 -1
- package/README.md +4 -4
- package/package.json +1 -1
- package/server.js +1 -1
- package/static/images/eq-negated.png +0 -0
- package/static/images/power.png +0 -0
- package/static/images/tex.png +0 -0
- package/static/index.html +225 -10
- package/static/linny-r.css +458 -8
- package/static/scripts/linny-r-ctrl.js +6 -4
- package/static/scripts/linny-r-gui-actor-manager.js +1 -1
- package/static/scripts/linny-r-gui-chart-manager.js +20 -13
- package/static/scripts/linny-r-gui-constraint-editor.js +410 -50
- package/static/scripts/linny-r-gui-controller.js +127 -12
- package/static/scripts/linny-r-gui-dataset-manager.js +28 -20
- package/static/scripts/linny-r-gui-documentation-manager.js +11 -3
- package/static/scripts/linny-r-gui-equation-manager.js +1 -1
- package/static/scripts/linny-r-gui-experiment-manager.js +1 -1
- package/static/scripts/linny-r-gui-expression-editor.js +7 -1
- package/static/scripts/linny-r-gui-file-manager.js +31 -13
- package/static/scripts/linny-r-gui-finder.js +1 -1
- package/static/scripts/linny-r-gui-model-autosaver.js +1 -1
- package/static/scripts/linny-r-gui-monitor.js +1 -1
- package/static/scripts/linny-r-gui-paper.js +108 -25
- package/static/scripts/linny-r-gui-power-grid-manager.js +529 -0
- package/static/scripts/linny-r-gui-receiver.js +1 -1
- package/static/scripts/linny-r-gui-repository-browser.js +1 -1
- package/static/scripts/linny-r-gui-scale-unit-manager.js +1 -1
- package/static/scripts/linny-r-gui-sensitivity-analysis.js +1 -1
- package/static/scripts/linny-r-gui-tex-manager.js +110 -0
- package/static/scripts/linny-r-gui-undo-redo.js +1 -1
- package/static/scripts/linny-r-milp.js +1 -1
- package/static/scripts/linny-r-model.js +973 -120
- package/static/scripts/linny-r-utils.js +3 -3
- package/static/scripts/linny-r-vm.js +714 -248
- package/static/show-diff.html +1 -1
- package/static/show-png.html +1 -1
package/static/linny-r.css
CHANGED
@@ -10,7 +10,7 @@ file that implements the graphical user interface for Linny-R.
|
|
10
10
|
*/
|
11
11
|
|
12
12
|
/*
|
13
|
-
Copyright (c) 2017-
|
13
|
+
Copyright (c) 2017-2024 Delft University of Technology
|
14
14
|
|
15
15
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
16
16
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -947,6 +947,157 @@ img.inline-cancel-btn {
|
|
947
947
|
border-top: 1px solid Silver;
|
948
948
|
}
|
949
949
|
|
950
|
+
/* styles for the NEW POWER GRID dialog */
|
951
|
+
#new-power-grid-modal {
|
952
|
+
z-index: 115; /* on top of the POWER GRIDS modal */
|
953
|
+
}
|
954
|
+
|
955
|
+
#new-power-grid-dlg {
|
956
|
+
width: 225px;
|
957
|
+
height: min-content;
|
958
|
+
max-height: 450px;
|
959
|
+
}
|
960
|
+
|
961
|
+
#new-power-grid-name {
|
962
|
+
width: 170px;
|
963
|
+
}
|
964
|
+
|
965
|
+
#new-power-grid-voltage {
|
966
|
+
width: 45px;
|
967
|
+
}
|
968
|
+
|
969
|
+
#new-power-grid-color {
|
970
|
+
display: inline-block;
|
971
|
+
width: 24px;
|
972
|
+
height: 22px;
|
973
|
+
}
|
974
|
+
|
975
|
+
#new-power-grid-unit {
|
976
|
+
font-size: 12px;
|
977
|
+
margin-left: 3px;
|
978
|
+
}
|
979
|
+
|
980
|
+
#new-power-grid-losses {
|
981
|
+
font-size: 12px;
|
982
|
+
}
|
983
|
+
|
984
|
+
/* styles for the POWER GRIDS dialog */
|
985
|
+
#power-grids-modal {
|
986
|
+
z-index: 110; /* on top of the SETTINGS dialog */
|
987
|
+
}
|
988
|
+
|
989
|
+
#power-grids-dlg {
|
990
|
+
width: 280px;
|
991
|
+
height: min-content;
|
992
|
+
max-height: 250px;
|
993
|
+
}
|
994
|
+
|
995
|
+
#power-grids-buttons > img.btn {
|
996
|
+
height: 20px;
|
997
|
+
width: 20px;
|
998
|
+
}
|
999
|
+
|
1000
|
+
#power-grids-scroll-area {
|
1001
|
+
margin: 2px;
|
1002
|
+
width: calc(100% - 4px);
|
1003
|
+
max-height: 250px;
|
1004
|
+
overflow-y: auto;
|
1005
|
+
border-top: 1px solid Silver;
|
1006
|
+
}
|
1007
|
+
|
1008
|
+
div.menu-plate,
|
1009
|
+
div.no-grid-plate,
|
1010
|
+
div.grid-kV-plate {
|
1011
|
+
display: inline-block;
|
1012
|
+
height: 17px;
|
1013
|
+
min-width: 30px;
|
1014
|
+
color: White;
|
1015
|
+
text-shadow: 1px 1px 1px Black;
|
1016
|
+
background-color: #0000ff;
|
1017
|
+
font-size: 9px;
|
1018
|
+
text-align: center;
|
1019
|
+
padding: 1px;
|
1020
|
+
padding-bottom: 0px;
|
1021
|
+
border-radius: 3px;
|
1022
|
+
margin-right: 3px;
|
1023
|
+
}
|
1024
|
+
|
1025
|
+
div.no-grid-plate {
|
1026
|
+
color: Gray;
|
1027
|
+
border: 1px solid Gray !important;
|
1028
|
+
box-shadow: Gray 0px 0px 3px 1px inset;
|
1029
|
+
margin: 1px !important;
|
1030
|
+
padding: 0px !important;
|
1031
|
+
text-shadow: none;
|
1032
|
+
background-color: #f4f0f2 !important;
|
1033
|
+
font-size: 10px;
|
1034
|
+
height: 16px;
|
1035
|
+
max-height: 17px !important;
|
1036
|
+
}
|
1037
|
+
|
1038
|
+
div.menu-plate {
|
1039
|
+
width: calc(100% - 4px);
|
1040
|
+
margin: 1px;
|
1041
|
+
border: 1px solid silver;
|
1042
|
+
padding-top: 3px;
|
1043
|
+
max-height: 14px;
|
1044
|
+
}
|
1045
|
+
|
1046
|
+
div.menu-plate:hover {
|
1047
|
+
border: 1px solid black;
|
1048
|
+
box-shadow: black 0px 0px 1px 2px;
|
1049
|
+
}
|
1050
|
+
|
1051
|
+
div.grid-watts {
|
1052
|
+
display: inline-block;
|
1053
|
+
vertical-align: middle;
|
1054
|
+
height: 15px;
|
1055
|
+
min-width: 18px;
|
1056
|
+
color: gray;
|
1057
|
+
border: 1px solid #b8b8b8;
|
1058
|
+
background-color: #f0f0f0;
|
1059
|
+
font-size: 9px;
|
1060
|
+
text-align: center;
|
1061
|
+
padding: 1px;
|
1062
|
+
padding-bottom: 0px;
|
1063
|
+
margin-right: 3px;
|
1064
|
+
}
|
1065
|
+
|
1066
|
+
div.grid-kcl-symbol {
|
1067
|
+
display: inline-block;
|
1068
|
+
height: 17px;
|
1069
|
+
font-size: 19px;
|
1070
|
+
color: #0000a0;
|
1071
|
+
text-shadow: 0px 0px 2px #00c0f0;
|
1072
|
+
margin-right: 3px;
|
1073
|
+
vertical-align: top;
|
1074
|
+
}
|
1075
|
+
|
1076
|
+
div.grid-loss-symbol {
|
1077
|
+
background-color: #202020;
|
1078
|
+
color: white;
|
1079
|
+
display: inline-block;
|
1080
|
+
vertical-align: middle;
|
1081
|
+
font-size: 12px;
|
1082
|
+
padding-left: 2px;
|
1083
|
+
padding-right: 2px;
|
1084
|
+
border-radius: 3px;
|
1085
|
+
margin-right: 3px;
|
1086
|
+
}
|
1087
|
+
|
1088
|
+
table.power-flow th {
|
1089
|
+
text-align: left;
|
1090
|
+
}
|
1091
|
+
|
1092
|
+
table.power-flow td:not(:first-child) {
|
1093
|
+
text-align: right;
|
1094
|
+
}
|
1095
|
+
|
1096
|
+
table.power-flow th:not(:first-child) {
|
1097
|
+
text-align: right;
|
1098
|
+
min-width: 40px;
|
1099
|
+
}
|
1100
|
+
|
950
1101
|
/* styles for the MODEL SETTINGS dialog */
|
951
1102
|
#settings-dlg {
|
952
1103
|
width: min-content;
|
@@ -967,6 +1118,17 @@ img.inline-cancel-btn {
|
|
967
1118
|
filter: brightness(200%);
|
968
1119
|
}
|
969
1120
|
|
1121
|
+
#settings-power-btn {
|
1122
|
+
margin-left: 0px;
|
1123
|
+
margin-right: 7px;
|
1124
|
+
margin-top: -3px;
|
1125
|
+
cursor: pointer;
|
1126
|
+
}
|
1127
|
+
|
1128
|
+
#settings-power-btn:hover {
|
1129
|
+
filter: brightness(160%);
|
1130
|
+
}
|
1131
|
+
|
970
1132
|
#password-dlg {
|
971
1133
|
width: min-content;
|
972
1134
|
height: min-content;
|
@@ -1208,7 +1370,7 @@ td.import {
|
|
1208
1370
|
}
|
1209
1371
|
|
1210
1372
|
td.export {
|
1211
|
-
color: #
|
1373
|
+
color: #00000b;
|
1212
1374
|
}
|
1213
1375
|
|
1214
1376
|
/* styles for the SERVER dialog */
|
@@ -1460,6 +1622,78 @@ td.export {
|
|
1460
1622
|
width: 65px;
|
1461
1623
|
}
|
1462
1624
|
|
1625
|
+
#process-grid-plate {
|
1626
|
+
position: absolute;
|
1627
|
+
top: 191px;
|
1628
|
+
left: 185px;
|
1629
|
+
margin: 1px;
|
1630
|
+
padding-top: 3px;
|
1631
|
+
max-height: 14px;
|
1632
|
+
cursor: pointer;
|
1633
|
+
}
|
1634
|
+
|
1635
|
+
#process-grid-plate-menu {
|
1636
|
+
position: absolute;
|
1637
|
+
top: 191px;
|
1638
|
+
left: 185px;
|
1639
|
+
width: 33px;
|
1640
|
+
cursor: pointer;
|
1641
|
+
}
|
1642
|
+
|
1643
|
+
#process-grid-overlay {
|
1644
|
+
position: absolute;
|
1645
|
+
background-color: inherit;
|
1646
|
+
top: 117px;
|
1647
|
+
left: 1px;
|
1648
|
+
width: calc(100% - 8px);
|
1649
|
+
height: 66px;
|
1650
|
+
padding: 3px;
|
1651
|
+
}
|
1652
|
+
|
1653
|
+
#process-negated {
|
1654
|
+
position: absolute;
|
1655
|
+
top: -38px;
|
1656
|
+
left: 0px;
|
1657
|
+
height: 32px;
|
1658
|
+
}
|
1659
|
+
|
1660
|
+
#process-negated-msg {
|
1661
|
+
position: absolute;
|
1662
|
+
top: -47px;
|
1663
|
+
left: 92px;
|
1664
|
+
max-height: 24px;
|
1665
|
+
width: 210px;
|
1666
|
+
padding: 5px;
|
1667
|
+
font-style: italic;
|
1668
|
+
color: #8050a0;
|
1669
|
+
background-color: #f4f0f2;
|
1670
|
+
}
|
1671
|
+
|
1672
|
+
#process-grid-msg {
|
1673
|
+
padding-left: 6px;
|
1674
|
+
font-style: italic;
|
1675
|
+
color: #8050a0;
|
1676
|
+
}
|
1677
|
+
|
1678
|
+
#process-length-div {
|
1679
|
+
margin-top: 4px;
|
1680
|
+
}
|
1681
|
+
|
1682
|
+
#process-length {
|
1683
|
+
width: 30px;
|
1684
|
+
margin-left: 2px;
|
1685
|
+
}
|
1686
|
+
|
1687
|
+
#process-tex-id {
|
1688
|
+
bottom: 3px;
|
1689
|
+
position: absolute;
|
1690
|
+
right: 3px;
|
1691
|
+
width: 45px;
|
1692
|
+
height: 14px !important;
|
1693
|
+
font-size: 11px;
|
1694
|
+
background: #ecd8ec;
|
1695
|
+
}
|
1696
|
+
|
1463
1697
|
/* styles for the PRODUCT properties dialog */
|
1464
1698
|
#product-dlg {
|
1465
1699
|
width: 360px;
|
@@ -1634,6 +1868,15 @@ td.export {
|
|
1634
1868
|
width: 120px;
|
1635
1869
|
}
|
1636
1870
|
|
1871
|
+
#product-tex-id {
|
1872
|
+
bottom: 3px;
|
1873
|
+
position: absolute;
|
1874
|
+
left: 293px;
|
1875
|
+
width: 45px;
|
1876
|
+
height: 14px !important;
|
1877
|
+
font-size: 11px;
|
1878
|
+
background: #ecd8ec;
|
1879
|
+
}
|
1637
1880
|
|
1638
1881
|
/* NOTE: actors, datasets and products have import/export toggle boxes */
|
1639
1882
|
#actor-io {
|
@@ -2069,6 +2312,10 @@ div.menu-item:hover {
|
|
2069
2312
|
}
|
2070
2313
|
|
2071
2314
|
/* the BOUNDLINE POINT DIALOG allows entering precise coordinates */
|
2315
|
+
#boundline-point-modal {
|
2316
|
+
z-index: 101;
|
2317
|
+
}
|
2318
|
+
|
2072
2319
|
#boundline-point-dlg {
|
2073
2320
|
width: 200px;
|
2074
2321
|
height: 67px;
|
@@ -2112,10 +2359,140 @@ div.menu-item:hover {
|
|
2112
2359
|
left: 188px;
|
2113
2360
|
}
|
2114
2361
|
|
2362
|
+
/* the BOUNDLINE DATA DIALOG allows entering series data for bound lines */
|
2363
|
+
#boundline-data-modal {
|
2364
|
+
z-index: 101;
|
2365
|
+
}
|
2366
|
+
|
2367
|
+
#boundline-data-dlg {
|
2368
|
+
width: 330px;
|
2369
|
+
height: 350px;
|
2370
|
+
margin-left: calc(50vw + 170px);
|
2371
|
+
}
|
2372
|
+
|
2373
|
+
#boundline-data-remote {
|
2374
|
+
position: absolute;
|
2375
|
+
top: 24px;
|
2376
|
+
left: 2px;
|
2377
|
+
width: calc(100% - 4px);
|
2378
|
+
}
|
2379
|
+
|
2380
|
+
#boundline-data-clip {
|
2381
|
+
height: 12px;
|
2382
|
+
width: 12px;
|
2383
|
+
vertical-align: middle;
|
2384
|
+
}
|
2385
|
+
|
2386
|
+
#boundline-data-url {
|
2387
|
+
width: calc(100% - 17px);
|
2388
|
+
font-size: 12px;
|
2389
|
+
}
|
2390
|
+
|
2391
|
+
#boundline-data-series-lbl {
|
2392
|
+
position: absolute;
|
2393
|
+
top: 47px;
|
2394
|
+
left: 2px;
|
2395
|
+
}
|
2396
|
+
|
2397
|
+
#boundline-data-edit-btn,
|
2398
|
+
#boundline-data-save-btn,
|
2399
|
+
#boundline-data-cancel-btn {
|
2400
|
+
position: absolute;
|
2401
|
+
top: 46px;
|
2402
|
+
left: 65px;
|
2403
|
+
width: 14px;
|
2404
|
+
height: 14px;
|
2405
|
+
}
|
2406
|
+
|
2407
|
+
#boundline-data-save-btn,
|
2408
|
+
#boundline-data-cancel-btn {
|
2409
|
+
top: 48px;
|
2410
|
+
}
|
2411
|
+
|
2412
|
+
#boundline-data-cancel-btn {
|
2413
|
+
left: 82px;
|
2414
|
+
}
|
2415
|
+
|
2416
|
+
#boundline-data-series,
|
2417
|
+
#boundline-data-series-area {
|
2418
|
+
position: absolute;
|
2419
|
+
top: 64px;
|
2420
|
+
left: 3px;
|
2421
|
+
width: calc(100% - 6px);
|
2422
|
+
height: 120px;
|
2423
|
+
}
|
2424
|
+
|
2425
|
+
#boundline-data-series-area {
|
2426
|
+
overflow: auto;
|
2427
|
+
}
|
2428
|
+
|
2429
|
+
#boundline-data-series-table {
|
2430
|
+
border-top: 1px solid Silver
|
2431
|
+
}
|
2432
|
+
|
2433
|
+
#boundline-data-series-table tr:first-child {
|
2434
|
+
background-color: #e0e0e0;
|
2435
|
+
}
|
2436
|
+
|
2437
|
+
td.bl-odnr {
|
2438
|
+
text-align: right;
|
2439
|
+
padding-left: 3px;
|
2440
|
+
padding-right: 6px;
|
2441
|
+
width: 1px;
|
2442
|
+
color: #a05090;
|
2443
|
+
font-weight: bold;
|
2444
|
+
}
|
2445
|
+
|
2446
|
+
td.bl-od {
|
2447
|
+
width: 100%;
|
2448
|
+
border-left: 1px solid silver;
|
2449
|
+
padding-left: 6px;
|
2450
|
+
}
|
2451
|
+
|
2452
|
+
span.grit {
|
2453
|
+
color: #a05090;
|
2454
|
+
font-style: italic;
|
2455
|
+
margin-left: 8px;
|
2456
|
+
}
|
2457
|
+
|
2458
|
+
#boundline-data-line {
|
2459
|
+
position: absolute;
|
2460
|
+
top: 52px;
|
2461
|
+
right: 4px;
|
2462
|
+
font-size: 10px;
|
2463
|
+
}
|
2464
|
+
|
2465
|
+
#boundline-data-sel-titles {
|
2466
|
+
position: absolute;
|
2467
|
+
top: 189px;
|
2468
|
+
left: 4px;
|
2469
|
+
}
|
2470
|
+
|
2471
|
+
#boundline-data-sel-area {
|
2472
|
+
position: absolute;
|
2473
|
+
top: 205px;
|
2474
|
+
left: 3px;
|
2475
|
+
overflow: scroll;
|
2476
|
+
width: calc(100% - 6px);
|
2477
|
+
height: 120px;
|
2478
|
+
border-top: 1px solid Silver;
|
2479
|
+
}
|
2480
|
+
|
2481
|
+
#boundline-data-sel-buttons {
|
2482
|
+
position: absolute;
|
2483
|
+
bottom: 2px;
|
2484
|
+
left: 2px;
|
2485
|
+
}
|
2486
|
+
|
2487
|
+
#boundline-data-sel-buttons > img.btn {
|
2488
|
+
height: 18px;
|
2489
|
+
width: 18px;
|
2490
|
+
}
|
2491
|
+
|
2115
2492
|
/* NOTE: The following dialogs are not modal, but "stay-on-top",
|
2116
2493
|
i.e., windows that remain open (until dismissed) and above
|
2117
2494
|
the main window, and they are draggable and resizable.
|
2118
|
-
The z-indices are lower (5-
|
2495
|
+
The z-indices are lower (5-95) than those of modal dialogs. */
|
2119
2496
|
|
2120
2497
|
/* all resizable dialogs have a striped triangle at the bottom right */
|
2121
2498
|
div.resizer {
|
@@ -2225,6 +2602,7 @@ div.io-box {
|
|
2225
2602
|
}
|
2226
2603
|
|
2227
2604
|
#scale-units-table,
|
2605
|
+
#power-grids-table,
|
2228
2606
|
#dataset-table,
|
2229
2607
|
#dataset-modif-table,
|
2230
2608
|
#equation-table,
|
@@ -2237,6 +2615,8 @@ div.io-box {
|
|
2237
2615
|
#finder-table,
|
2238
2616
|
#finder-item-table,
|
2239
2617
|
#finder-expression-table,
|
2618
|
+
#boundline-data-series-table,
|
2619
|
+
#boundline-data-sel-table,
|
2240
2620
|
#restore-table {
|
2241
2621
|
width: 100%;
|
2242
2622
|
max-width: 100%;
|
@@ -2310,7 +2690,7 @@ div.io-box {
|
|
2310
2690
|
top: 60px;
|
2311
2691
|
left: calc(40% + 4px);
|
2312
2692
|
width: calc(60% - 6px);
|
2313
|
-
height: calc(100% -
|
2693
|
+
height: calc(100% - 85px);
|
2314
2694
|
overflow-y: auto;
|
2315
2695
|
border-top: 1px solid Silver;
|
2316
2696
|
}
|
@@ -2377,6 +2757,18 @@ div.modif::before {
|
|
2377
2757
|
margin-right: 2px;
|
2378
2758
|
}
|
2379
2759
|
|
2760
|
+
span.blpoints {
|
2761
|
+
color: #8020a0;
|
2762
|
+
text-shadow: #b9c 0.5px 0.5px;
|
2763
|
+
}
|
2764
|
+
|
2765
|
+
span.blpoints::before {
|
2766
|
+
content: ' \2234';
|
2767
|
+
color: #b00080;
|
2768
|
+
font-weight: bolder;
|
2769
|
+
margin-right: 2px;
|
2770
|
+
}
|
2771
|
+
|
2380
2772
|
div.outcome::before,
|
2381
2773
|
span.outcome::before {
|
2382
2774
|
content: ' \25C8';
|
@@ -2603,6 +2995,12 @@ td.equation-expression-multi {
|
|
2603
2995
|
width: calc(100% - 6px);
|
2604
2996
|
}
|
2605
2997
|
|
2998
|
+
/* NOTE: New and Rename modals must be above boundline data modal */
|
2999
|
+
#new-selector-modal,
|
3000
|
+
#rename-selector-modal {
|
3001
|
+
z-index: 102;
|
3002
|
+
}
|
3003
|
+
|
2606
3004
|
#new-selector-dlg,
|
2607
3005
|
#rename-selector-dlg {
|
2608
3006
|
width: 215px;
|
@@ -2755,7 +3153,7 @@ td.equation-expression-multi {
|
|
2755
3153
|
|
2756
3154
|
#series-clip {
|
2757
3155
|
height: 12px;
|
2758
|
-
width:
|
3156
|
+
width: 12px;
|
2759
3157
|
vertical-align: middle;
|
2760
3158
|
}
|
2761
3159
|
|
@@ -3256,7 +3654,7 @@ img.v-disab {
|
|
3256
3654
|
/* the SENSITIVITY DIALOG displays the sensitivity analysis */
|
3257
3655
|
#sensitivity-dlg {
|
3258
3656
|
display: none;
|
3259
|
-
z-index:
|
3657
|
+
z-index: 20;
|
3260
3658
|
margin: 0;
|
3261
3659
|
width: 500px;
|
3262
3660
|
height: 265px;
|
@@ -3296,7 +3694,7 @@ td.sa-ds-sel {
|
|
3296
3694
|
}
|
3297
3695
|
|
3298
3696
|
td.sa-ds-sel:hover {
|
3299
|
-
text-decoration: underline solid #
|
3697
|
+
text-decoration: underline solid #b00080;
|
3300
3698
|
text-decoration-thickness: 1.5px;
|
3301
3699
|
}
|
3302
3700
|
|
@@ -3541,7 +3939,7 @@ td.sa-not-run {
|
|
3541
3939
|
/* the EXPERIMENT DIALOG displays the experiment manager */
|
3542
3940
|
#experiment-dlg {
|
3543
3941
|
display: none;
|
3544
|
-
z-index:
|
3942
|
+
z-index: 25;
|
3545
3943
|
margin: 0;
|
3546
3944
|
width: 450px;
|
3547
3945
|
height: 275px;
|
@@ -3755,6 +4153,7 @@ td.sa-not-run {
|
|
3755
4153
|
margin-left: 2px;
|
3756
4154
|
font-weight: 600;
|
3757
4155
|
font-style: italic;
|
4156
|
+
width: calc(100% - 120px);
|
3758
4157
|
white-space: nowrap;
|
3759
4158
|
overflow: hidden;
|
3760
4159
|
text-overflow: ellipsis;
|
@@ -4836,6 +5235,53 @@ div.sel-tab {
|
|
4836
5235
|
box-shadow: inset #bfc0e2 0 0 7px 2px;
|
4837
5236
|
}
|
4838
5237
|
|
5238
|
+
/* the TEX DIALOG displays mathematical formulas */
|
5239
|
+
#tex-dlg {
|
5240
|
+
display: none;
|
5241
|
+
z-index: 45;
|
5242
|
+
margin: 0;
|
5243
|
+
width: 300px;
|
5244
|
+
height: 200px;
|
5245
|
+
min-width: 250px;
|
5246
|
+
min-height: 150px;
|
5247
|
+
max-height: 99vh;
|
5248
|
+
max-width: 99vw;
|
5249
|
+
}
|
5250
|
+
|
5251
|
+
#tex-entity {
|
5252
|
+
position: absolute;
|
5253
|
+
left: 3px;
|
5254
|
+
bottom: 2px;
|
5255
|
+
width: calc(100% - 24px);
|
5256
|
+
white-space: nowrap;
|
5257
|
+
}
|
5258
|
+
|
5259
|
+
#tex-tabs {
|
5260
|
+
width: calc(100% - 6px);
|
5261
|
+
}
|
5262
|
+
|
5263
|
+
#tex-formula {
|
5264
|
+
position: absolute;
|
5265
|
+
left: 3px;
|
5266
|
+
top: 43px;
|
5267
|
+
padding: 6px;
|
5268
|
+
width: calc(100% - 20px);
|
5269
|
+
height: calc(100% - 73px);
|
5270
|
+
border: 1px solid silver;
|
5271
|
+
background-color: white;
|
5272
|
+
overflow: scroll;
|
5273
|
+
}
|
5274
|
+
|
5275
|
+
#tex-code {
|
5276
|
+
position: absolute;
|
5277
|
+
left: 3px;
|
5278
|
+
top: 42px;
|
5279
|
+
width: calc(100% - 6px);
|
5280
|
+
height: calc(100% - 60px);
|
5281
|
+
font: 12px monospace;
|
5282
|
+
border: 1px solid Black;
|
5283
|
+
}
|
5284
|
+
|
4839
5285
|
/* the CHANNEL DIALOG configures and activates the receiver */
|
4840
5286
|
#channel-dlg {
|
4841
5287
|
width: 258px;
|
@@ -5096,6 +5542,10 @@ div.call-stack-expr {
|
|
5096
5542
|
}
|
5097
5543
|
|
5098
5544
|
/* the CHECK UPDATE modal asks for permission to update the software */
|
5545
|
+
#check-update-modal {
|
5546
|
+
z-index: 150;
|
5547
|
+
}
|
5548
|
+
|
5099
5549
|
#check-update-dlg {
|
5100
5550
|
width: 500px;
|
5101
5551
|
height: min-content;
|
@@ -12,7 +12,7 @@ file all have their graphical extensions in file linny-r-gui.js.
|
|
12
12
|
*/
|
13
13
|
|
14
14
|
/*
|
15
|
-
Copyright (c) 2017-
|
15
|
+
Copyright (c) 2017-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
|
@@ -124,6 +124,7 @@ class Controller {
|
|
124
124
|
decimal_comma: 'Use decimal comma',
|
125
125
|
grid_pixels: 'Grid resolution',
|
126
126
|
align_to_grid: 'Align to grid',
|
127
|
+
with_power_flow: 'Add power flow constraints',
|
127
128
|
infer_cost_prices: 'Infer cost prices',
|
128
129
|
show_block_arrows: 'Show block arrows',
|
129
130
|
timeout_period: 'Solver time-out',
|
@@ -135,13 +136,14 @@ class Controller {
|
|
135
136
|
ENTITY_PROPS: ['units', 'actors', 'clusters', 'processes', 'products',
|
136
137
|
'datasets', 'equations', 'links', 'constraints'],
|
137
138
|
UNIT_PROPS: ['multiplier', 'base_unit'],
|
138
|
-
ACTOR_PROPS: ['weight', 'comments'],
|
139
|
+
ACTOR_PROPS: ['weight', 'comments', 'TEX_id'],
|
139
140
|
CLUSTER_PROPS: ['comments', 'collapsed', 'ignore'],
|
140
141
|
PROCESS_PROPS: ['comments', 'lower_bound', 'upper_bound', 'initial_level',
|
141
|
-
'pace_expression', 'equal_bounds', 'level_to_zero', 'integer_level',
|
142
|
+
'pace_expression', 'equal_bounds', 'level_to_zero', 'integer_level',
|
143
|
+
'collapsed', 'TEX_id'],
|
142
144
|
PRODUCT_PROPS: ['comments', 'lower_bound', 'upper_bound', 'initial_level',
|
143
145
|
'scale_unit', 'equal_bounds', 'price', 'is_source', 'is_sink', 'is_buffer',
|
144
|
-
'is_data', 'integer_level', 'no_slack'],
|
146
|
+
'is_data', 'integer_level', 'no_slack', 'TEX_id'],
|
145
147
|
DATASET_PROPS: ['comments', 'default_value', 'scale_unit', 'time_scale',
|
146
148
|
'time_unit', 'method', 'periodic', 'array', 'url', 'default_selector'],
|
147
149
|
LINK_PROPS: ['comments', 'multiplier', 'relative_rate', 'share_of_cost',
|
@@ -11,7 +11,7 @@ functionality for the Linny-R Actor Manager dialog.
|
|
11
11
|
*/
|
12
12
|
|
13
13
|
/*
|
14
|
-
Copyright (c) 2017-
|
14
|
+
Copyright (c) 2017-2024 Delft University of Technology
|
15
15
|
|
16
16
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
17
17
|
of this software and associated documentation files (the "Software"), to deal
|