1
- import React from 'react' ;
1
+ import React , { useState } from 'react' ;
2
2
import path from "path" ;
3
3
const { dialog} = require ( '@electron/remote' ) ;
4
- import versions from '../versions' ;
4
+ const versions = require ( '../versions' ) ;
5
5
import { listEMMEPythonPaths } from './search_emme_pythonpath' ;
6
6
import classNames from 'classnames' ;
7
7
@@ -10,13 +10,46 @@ const EnvironmentOption = ({
10
10
} ) => {
11
11
return (
12
12
< div className = "Settings__environment_option" >
13
- < p > { envPath } </ p >
14
- < button className = { classNames ( 'Settings__env_option_btn' , { 'Settings__env_btn_disabled ' : isSelected } ) } disabled = { isSelected } onClick = { ( ) => setPath ( envPath ) } > { isSelected ? 'Käytössä' : 'Valitse' } </ button >
15
- < button className = " Settings__env_option_btn" onClick = { ( ) => removePath ( envPath ) } > Poista</ button >
13
+ < p className = 'Settings__env_option_text' > { envPath } </ p >
14
+ < button className = { classNames ( 'Settings__env_option_btn' , { 'Settings__btn_disabled ' : isSelected } ) } disabled = { isSelected } onClick = { ( ) => setPath ( envPath ) } > { isSelected ? 'Käytössä' : 'Valitse' } </ button >
15
+ < button className = { classNames ( ' Settings__env_option_btn' , 'Settings__env_option_remove' ) } onClick = { ( ) => removePath ( envPath ) } > Poista</ button >
16
16
</ div >
17
17
)
18
18
}
19
19
20
+ const EmmeVersionEdit = ( {
21
+ emmeVersion, setEmmeVersion, closeEditing
22
+ } ) => {
23
+
24
+ const [ savingDisabled , setSavingDisabled ] = useState ( true ) ;
25
+ const [ newEmmeVersion , setNewEmmeVersion ] = useState ( '' ) ;
26
+ const VERSION_NUMBER_REGEX = RegExp ( / ^ ( \d + \. ) ? ( \d + \. ) ? ( \* | \d + ) $ / ) ;
27
+ const validateVersionNumber = ( e ) => {
28
+ const regExpResults = e . target . value . match ( VERSION_NUMBER_REGEX ) ;
29
+ return regExpResults !== null ;
30
+ }
31
+
32
+ return (
33
+ < div className = 'Settings__emme_input' >
34
+ < span className = "Settings__pseudo-label" > Syötä uusi EMME versio: </ span >
35
+ < input type = 'text' defaultValue = { emmeVersion } placeholder = 'esim. 4.5.0' onChange = { ( e ) => {
36
+
37
+ setNewEmmeVersion ( e . target . value ) ;
38
+ const validationPasses = validateVersionNumber ( e ) ;
39
+ setSavingDisabled ( ! validationPasses ) ;
40
+ } } > </ input >
41
+ < button className = { classNames ( 'Settings__emme_edit_save_btn' , { 'Settings__btn_disabled' : savingDisabled } ) }
42
+ disabled = { savingDisabled }
43
+ onClick = { ( ) => {
44
+ closeEditing ( ) ;
45
+ setEmmeVersion ( newEmmeVersion ) ;
46
+ } } >
47
+ Tallenna
48
+ </ button >
49
+ </ div >
50
+ )
51
+ } ;
52
+
20
53
const PathOptionDivider = ( ) => < div className = 'Settings__env_option_divider' />
21
54
22
55
const Settings = ( {
@@ -26,8 +59,11 @@ const Settings = ({
26
59
basedataPath, setBasedataPath,
27
60
resultsPath, setResultsPath,
28
61
closeSettings,
29
- promptModelSystemDownload,
62
+ promptModelSystemDownload, emmeVersion , setEmmeVersion ,
30
63
} ) => {
64
+
65
+ const [ showEmmeDialog , setShowEmmeDialog ] = useState ( false ) ;
66
+
31
67
return (
32
68
< div className = "Settings" >
33
69
@@ -38,6 +74,20 @@ const Settings = ({
38
74
< div className = "Settings__dialog-controls" onClick = { ( e ) => closeSettings ( ) } > </ div >
39
75
40
76
< div className = "Settings__dialog-heading" > Projektin asetukset</ div >
77
+
78
+ < div className = "Settings__emme_version_group" >
79
+ < span className = "Settings__pseudo-label" > { `EMME-versio: ${ emmeVersion } ` } </ span >
80
+ < button className = 'Settings__emme_edit_btn'
81
+ onClick = { ( ) => {
82
+ setShowEmmeDialog ( ! showEmmeDialog ) ;
83
+ } }
84
+ >
85
+ { showEmmeDialog ? 'Peruuta' : 'Muokkaa' }
86
+ </ button >
87
+ </ div >
88
+ { showEmmeDialog && < EmmeVersionEdit emmeVersion = { emmeVersion }
89
+ setEmmeVersion = { setEmmeVersion }
90
+ closeEditing = { ( ) => setShowEmmeDialog ( false ) } /> }
41
91
< div className = "Settings__dialog-input-group" >
42
92
< span className = "Settings__pseudo-label" > Käytettävät Python-ympäristöt:</ span >
43
93
{ emmePythonEnvs && ( emmePythonEnvs . map ( ( env , index ) => { return (
@@ -47,7 +97,7 @@ const Settings = ({
47
97
removePath = { removeFromEMMEPythonEnvs } />
48
98
{ index < emmePythonEnvs . length && < PathOptionDivider /> }
49
99
</ div > ) } ) ) }
50
- < button className = "Settings__input -btn"
100
+ < button className = "Settings__python-env-input -btn"
51
101
onClick = { ( ) => {
52
102
dialog . showOpenDialog ( {
53
103
defaultPath : emmePythonPath ? emmePythonPath : path . resolve ( '/' ) ,
@@ -65,9 +115,9 @@ const Settings = ({
65
115
>
66
116
Lisää Python-ympäristö
67
117
</ button >
68
- < button className = "Settings__input -btn"
118
+ < button className = "Settings__python-env-input -btn"
69
119
onClick = { ( e ) => {
70
- const [ found , pythonPaths ] = listEMMEPythonPaths ( ) ;
120
+ const [ found , pythonPaths ] = listEMMEPythonPaths ( emmeVersion ) ;
71
121
if ( found ) {
72
122
alert ( `Python-ympäristöjä löytyi. Valitse listasta oikea EMME Python-ympäristö ja ota sen jälkeen käyttöön ${ pythonPaths } ` )
73
123
setEMMEPythonEnvs ( pythonPaths ) ;
0 commit comments