From 8b406c58397db320a045b7a092ac2d6fb9a40c7d Mon Sep 17 00:00:00 2001
From: Nour125 <ahmed.noureddin.00@gmail.com>
Date: Mon, 3 Jul 2023 21:19:30 +0200
Subject: [PATCH] merged for testing

---
 Frontend/main.py                              |  60 ++++++++++++------
 backend/__pycache__/dqn.cpython-311.pyc       | Bin 2115 -> 2094 bytes
 .../__pycache__/environment.cpython-311.pyc   | Bin 12006 -> 13003 bytes
 backend/__pycache__/eventlog.cpython-311.pyc  | Bin 11294 -> 11384 bytes
 backend/__pycache__/petrinet.cpython-311.pyc  | Bin 3802 -> 3802 bytes
 .../simplesimmodel.cpython-311.pyc            | Bin 31456 -> 31456 bytes
 backend/simtest.py                            |  12 ----
 backend/test.py                               |  12 ----
 8 files changed, 41 insertions(+), 43 deletions(-)

diff --git a/Frontend/main.py b/Frontend/main.py
index c22d590..4d08a99 100644
--- a/Frontend/main.py
+++ b/Frontend/main.py
@@ -13,13 +13,8 @@ The following are the import for the backend. Just write the name of the script
 Then you can immediately use the function from the script directly in the app.
 """
 sys.path.append(os.path.join(os.path.dirname(sys.path[0]),'backend'))
-<<<<<<< HEAD
 import input, dqn, petrinet
-import eventlog as elog
-=======
-
-import input
->>>>>>> nour
+import eventlog as elog 
 
 #define the app
 app = Flask(__name__)
@@ -60,7 +55,7 @@ def upload_file():
         #if no file has been selected, flashes a warning
         flash('No files selected! Please select a file!')
         return redirect(url_for('index'))
-    return redirect(url_for('case_id', uploaded_file.filename)) 
+    return redirect(url_for('case_id', filename = uploaded_file.filename)) 
     
 """
 The download usage. Currently just downloads fish.jpg. 
@@ -87,39 +82,68 @@ There is a preview functionality, when clicked will show a preview of a generate
 The generated image currently displays static images and not instantly generated ones from the backend.
 Currently it displays moyai.jpg by default and fish.jpg on case 1 and 2. Will change this later.
 """
-@app.route('/case.html', methods=['GET'])
+@app.route('/case.html/<filename>', methods=['GET'])
 def case_id(filename):
     #temporary choice of cases until I figure out where the actual function from backend is.
     #give the list here in selection using functions from
-    selection = elog.get_active_cases(filename)
+    selection = elog.get_active_cases(filename) 
+    
     previewid = request.args.get("selectpreview")
+    while request.args.get("selectpreview")!= None:
+        print(previewid)
+        previewid = request.args.get("selectpreview")
+        break
+
+    preview = "../static/fish.jpg" 
+
+    if previewid != None:
+        result = int(previewid)
+        state = elog.get_state(result, filename)
+        rec = dqn.deploy(state)
+        rec = int(rec)
+        print(rec)
+        petrinet.decorate_petri_net(result, filename)
+
+        preview = os.path.join(app.config['STATIC_FOLDER'], 'preview_net.png')
+    else:
+        print("else")
+        preview = "../static/fish.jpg"
+
+    '''
     if previewid == '1':
         preview = os.path.join(app.config['STATIC_FOLDER'], 'fish.jpg')
     elif previewid == '2':
         preview = os.path.join(app.config['STATIC_FOLDER'], 'fish.jpg')
     else:
         preview = os.path.join(app.config['STATIC_FOLDER'], 'moyai.jpg') 
+    '''
     
-    return render_template('case.html', selection=selection, preview=preview, filename = filename)
+    return render_template('case.html', selection=selection, preview=preview, filename=filename)
     
 """
 Route for sending the case id towards recommendation. This is linked to the 'Optimize now' button in the case ID page.
 I have decided to use a separate dropdown list to avoid cross sending the http requests by accident.
 """
-@app.route('/case.html', methods=['POST'])
-def send_caseid():
+@app.route('/case.html/<filename>', methods=['POST'])
+def send_caseid(filename):
     result = request.form.get("selectresult")
-    return redirect(url_for('recommendation', result=result))
+    return redirect(url_for('recommendation', result=result, filename=filename))
 
 """
 The result page. 
 It processes "id" (for now it uses the "foo" function from input.py) using backend functions
 and prints out the result immediately in the page.
 """
-@app.route('/result.html/<result>', methods=['GET'])
-def recommendation(result):
-    res = input.foo(result)
-    return render_template('result.html',res=res)
+@app.route('/result.html/<filename>/<result>', methods=['GET'])
+def recommendation(result, filename):
+    result = int(result)
+    state = elog.get_state(result, filename)
+    rec = dqn.deploy(state)
+    rec = int(rec)
+    
+    petrinet.decorate_petri_net_with_rec(result, rec, filename)
+    # time.sleep(15)
+    return render_template('result.html')
 
 """
 Loading page. Has yet to be used.
@@ -140,5 +164,3 @@ if __name__ == "__main__":
     app.run(debug=True, host='0.0.0.0', port=port)
 
 
-
-
diff --git a/backend/__pycache__/dqn.cpython-311.pyc b/backend/__pycache__/dqn.cpython-311.pyc
index fca2596bb6917b819255895b808c30fddb1029fd..089a4e571840d4c9f139aef698c98bca7df52cbe 100644
GIT binary patch
delta 273
zcmX>suugz?IWI340|Ns?s?_2X>xsM_TpSDx49pA+44<Pm&Oga0Rl~A|V;LI*!)i8=
zDiE$^P2sF%OW~T_!lcQ{lft`(Z}KK4Uq=2(%sTw?t*--j$X&J16i{bi&}5nH!mKbk
zn^}q3!HIwK1ZD?DE)@m_29SNl`jc<5?36LNkeu;>fuWkwk?8{i1FsX)M=<#XL~h>1
zYQ(6nz`($8i!Cv^Br`wn7Gr!d3j+g#f`WoVkuq2!CAA<Yzp_YoGB>*|qv~W&c11>k
z$=U3R+M)~$3`HU!0%T>8E&~I@N`@j;kN`;MFAkgB{FKt1RJ$UR$=lgGSU@rWKSn=J

delta 276
zcmZ1{a9DtMIWI340|NuYr6-G0Tqp8&aB(s)FfcPPFno^LIR7N0ObSO0%NovQ><kR6
z*+J?+xRy1AtClT=dvX(#CM$0W-x~hO8<>0<1t$Mv(vg@o69it`r$ZP!?K1_`85lHK
zCtETru(75m=H@0&j$l@1z91yLxsKU^kxP|<fdS-%Vx!3?Sa!-AUkHo5kX!VDfx(r@
zo9P1s1FsL$M=<#XL~fqTYQ)H>IQasb1fL261H&!0l+=Qp{K_J|$=}#)8Pz76uq!eO
zP7Y&N)D~l4U?>s=5g;py^cWZzRx%W+fdoK0e{tC4=BJeAq}mmkPF}>`!2*&20Ahtl
AzW@LL

diff --git a/backend/__pycache__/environment.cpython-311.pyc b/backend/__pycache__/environment.cpython-311.pyc
index 930a99fcfd79b331cba55c3f17138f409ca55c40..94659ed7505dd39eae282fe375e57d776ea4098c 100644
GIT binary patch
delta 2065
zcmaDBdpebGIWI340|NuYF{#BVLMjvat}^;ee4?b!(!vnMmcre^kj9w8*1{RZp2CyD
z(ZU$Tk;2)+5XG6o)xr?P)xl7~7{wjTpvk*gpRtFNQFrnlu1slWka189VuSGKT?`Bi
z(-|gjP?xG-#>l|1nh~mip_aLZDTOhc3B)gEt6@rEg0PGDYM4`)B|*YqoWg=&2Q$<#
zrLaQOf%ULK*cf^k(e+euG1N2EvY;AWgJQHMyI&DI0|UcLeg+1HA`TD%a@<QW0rHC`
zW04jE1A``Okupe9hk=3N7F%L+NoIatkuHcMSd>~^oL^d09AA)MoCy*yW@TVtPym4<
zwR(^ezVy_Rc&M`E)Z!{dr_$ogywu|2fTH~5)Z${-yfQshC8i7v48?T}3=9nnHv~kk
z3#eTZP+L%TQ9$pCfL;gd4Q{~+fnC-g7}z+?XQ(Z3nxz9~-Vm0UA$dhud4b~<VYLf9
zYBzX=C)gEsMSoym;WVG&wjgnqH<*d8?ty~Z3c-b37kFf0G8a@#uLzr6;4z!rCnL?2
z#X8xB+hp?u?rV&86Bvs+OQgYZ1SV=2Q6rd<0Y#P}3lyYal__kJ43j6aN(i7TSim>A
zkV%x8t%h-OH>=#_NxahBpr`<ASs*aEkV$0n8D1?Wh_W=c8pdTz3=FG5(F0ZjOH4&-
zDeSczH4GJuS%P2*1_p*2jw)UThGeFAgb0#*YB^IlYPnK4YPmBRYI$lnYdC7SYPf57
z(pZBh-{(<s;zf363TF*N7R+3REV%Wv8B(}v7-uu2aL;8$4~Uw{c}x<M_4yQXd286K
zxEL5}`D*y!?qyD4tmVj)NZ~0_g`3NeB@AQN@TKsg`V?#eK_8ZAPJYiQHhB&=*W^2V
z{M@{dtWqos73bksugB$Uh7>-kg&>0_zh4n3l#290xdxQOLW)2oPZ5V50|P_mxBvhD
zyH)W!rl;nWD5PYjC?qEqrz%u&DS&cTS!PM4!Y@X>bVy(bIlKhv%zX3z|9?%<$>;eC
z4NO3W%7L;LOL0kRL6H)enVVRWaf>-8KfMT45NPs4a;y;p1H<Gz0ZS8zDz3cLijw%^
zlEjkKTP!L0d8xNJONvVKk`qf(Q*N<j=B4G|Vks`kFSx~0l9`)2`L=+RvNHn%LzOs|
zJPWeh5tLJZO_mT;;8<dFMcL{Cx7Fl8!9}be_!tC5Cw~((_Wa0T%xU|SM{t5#r*DsM
zhwoh;!3io?gj5zpUJ=s2$YXGY$KV2w0a*09km@BN)dd+F*e(j0UlB6D$YXJZ$KnEy
z#Rnb+Ve!eXLI(8$BG>tqF7YcZuvigxk>B(Rzv&LaOZ-+J7}$9o8E;6+OkleqAToh_
z3iph%ivp@3#tm7;E3*0%xNeBcOklYoqd0-{hPdPemK)-V3(QuSY>?dHazWhTf`G#V
zVeu(8SA><X2&;FveC1%^6}lkgyTE0M&lMGm3qrmZgnSRUT@VH{E(rNv<ng=0<9C6_
z?*rT9W}&T&lAA4sU04{+C)bJ37P11x4=7SJIUtb`JXu>pi_w2_n1mu@*yIWcS;obi
zr%A9gF&^AJPfCc9F?RAs=_JNun?+>auxb?<fV7)~2u=_IN<HAB`6U~OYX~Z?L1Hgi
zCTl4fFvd=fR!U<$xA~CLd}g);P+840IbBU3l1M;tR}==)mI5L&K}0DiweZHrC+8#<
z7bmCY<iy8oG8V;8KBy+kxPJ0|H8~?YHdfIO3~)k#gVp>41DueEXJobgz<@-$FmF~+
z-_5L+4>BI)K8P1`LEJnL0m=n01wd|NE=rrssJ)OElnshO*&S3*Onx9B!gGryH!(A>
zsFQ(#;rZtC+9FI+E({C|x0qe?%8EcW3RtG73}jr=<iENSj1wk{=_Qy(GBb*PV8Bk!
W5S}Cc5iIuwOhVO_u}xmBXAJ-xbm}kw

delta 1128
zcmX?|`Ye`jIWI340|NuYr6-G0j1?yGU1fBe_(VyQtAinpF@?2-Gm0&RJB7W4F^WBf
zqlF=gBZaetA&Rqup@K1rE0{r(XR|3|4=1Dc<U?GU;!GfepqQ0`fq|KUf#Gu$%VY~)
z6Rs47Y_N2(#N-bGVw-b#uQ9R|eJYWj%*QXrID7J0ejRQ;s8)sr{F4otL?%lJXiYvO
zAkWHC!?1vTvLTb`WNSf%T#g#{DlP_wTCN(d6h?@dMa(H|wcL3UDeNVRFf$k!vIJr5
z8m<(MWlRhVtHCY+iGoewu3@NP%n}0eLAZvyikE>QnJFGFQldWjBD2`!dxDbO91xp|
zWuaobc)2ELGV@I~5aKuGtmR4JtmVyQsO78Stl_TVso|~ROJfaYNa3o*X~*OV0^$KU
zb!u|^6@eW4lAnQrp@^M<fgz*_6iqK#7#JARL9S(B5OR145^_tQH4_AO?$;EV{70xz
zPmY0s;TB7ANov6@mfXaWj9bh(`RPSUAcG_s7#KA9i<Chs*b<XVGV}8$&lR>b0V&Tf
zxW$#1T2T^TT#{IldW)qbGdC5i>lRB&eqQP=&XS_iyyV1^)RbE+nR#jXlet8s*lZaX
z7^=i4C$bB3fh;s;U|=YYnCvd1AbE*f{R0Chr`ZaVH8xkY?GKn7vAN<LbwN97a=yqS
z<_7{Ilf^`hWj-({bJ{-T5u6ZmMO6KQkmf}mtt&iQ7kIQD2#HOeBx=AXA~D70im>t(
zVf7A|4?L4Y#I`a@ZRQepVPQ0!>@PiA$OPmqkl!>pz}_nIoBT&wi_vGYx{M-QAjowR
zAlI=Kr52}_G;B_nVP|5Tw>e)<h><a3a+7=#<KoRv<=?Psy#$4Jks-)5P7nbK@*)lf
z28NexAOe(<UxLL9CjVA7V2qfoqn5_Fdh=wp`OIw5pit$WY@wwu3JQ-RkhMkeAX8F6
zMB(H{Em6j($<wuDofa@KF#Kp>fWZ$eQmhgm7~q5z8>{FC1~?($#mH*=fdPq(V%p5A
zy_;Dr8)R?>h)4qw1|T8}MCgNDD*$p3b5Y{tXL<`6Ehcy9tFyK;Ffbh1yhUGx$=Hs8
zf#DXjYhGCqD32C_WQvMFdSgL^28d8&U|{&gVUwGmQks)$SJX54w_$>5855)E2L|lq
W4B<KAAHi~8z$8>%0qf)mM%Do4UlJ(*

diff --git a/backend/__pycache__/eventlog.cpython-311.pyc b/backend/__pycache__/eventlog.cpython-311.pyc
index d33a75c44c1df2f1e74740d27b74a2267589bfca..2d6febe6e8636c9f95540538da385a20b838660e 100644
GIT binary patch
delta 706
zcmbOi@gstFIWI340|Ns?zVzahWgB_x*%>uA_p%2uGrDhnz!l8Gn7G-5e=8GX)8toz
zeT?;!D}@#^39wF<5q`|WU&~*^U&E9lXv4rTSzcIzQE0M-u<T?<5eY%T6vh<c6rmK6
zIsCPPCF~3glkGVrCpU{oaf+shr8A|7uaTI%Ohl7Wbn*p}SVqaodZNbMk~Rzs3^l?v
z!YNXdb3`qfMI{*~3yACLiqwd>FvJ$sih|`tB|(k_;~LRyCJ+N5k|H^oNz9N@XtIge
zL`Koc$HWxDW*bbF5RaBe*2#cH=Ol4gX=$(<Bx|HnWWX$@8mSan5UWITvVf?hs#J|Y
zjZ_LwRW(w<44QJ2zlpnZ%P}x8ywn8|+?#zRN*Ni8Cm)ua!`08gz|hXXz)&2sIaA7*
znfWP?_~t5E9TuLKk|4Dj3=9lKIg>Xj9%89xU|^VBtYkBJi;_F*d<F)F51W+PS=91C
zDiT0M0f@*45yc>akAZ<fleH)g#O|N0t1e^E!N9<9iz7L)I5j7;xa1alQED-WQ3O`r
z2T})e-z~P(vedki;-c=!mFfnp%NZCL#5b=~PiK??F;_AaNr6;KfXrgaP0Y+ITE)P?
zU_IGTGeTt=NRTzJG`FC#s0763PR`HCNlh-v%+D(>Vg~7(GI_1$G7FHei$H!T0+|Um
z;TA`Hd|qO1YJ7arN{~XhEx$Nya`RJ4b5iY!woLBUddA2xxk%eaD2<U(@B;%988rET
Gb{qh()2Q+Q

delta 655
zcmewnF)xC5IWI340|NuYr6-G0OgHk@vomUK?qv^RX7t$nfGe1VF=?|2|5hf(=E<)F
z`xqN0R|+j;y2dhDM))z0U@d<Qe+^TLkPQRFWO-o;M&Zd8!m^VcMI;1;QW#T2QiM}P
z=kV7GmasE0Ot$BgoZKuT#VM8|p3amau|{(8G7(KivB?)iVi~0->xmk3OW80mFw_Xw
z2&YI-&Jnd_7L#O{EFi9{D^erk!Vp_jD+-nqlLR>yjB7-*nLrGLNQ%^CCNV=s;mIaq
z6B)%O9}`mqn{6;zLOfa?StkP)os+~}<z>KbkgSnPkp;7uYNS%+z$~d?22J_N1`_T9
zAnRUgFfcH@<OUJCo0}v`85v6^|B#%+HGzSFp@V^eq1b%$JSk)5&EI6XSa^!E85kIf
zazI4hWFDnMlP@b-GZl4A=2rG%oyWky@Md$AGCNCsK1e|Vh$sXR1t6jXMDQ^%Fle$C
z#evu$3vRI%CFZ54-eS&4%_|ZBNpcmLgCsi{7#MDGBqtW9=42L^++r_EEe0`)z^3$r
zROo_Ku%(uz=9Lr|^?*3cC8Y($pad}afx0s5G6n_);msTx>5PoaCKqUmv94rbU@)KD
ztr@{P6{MOquQa!yvZ!?O2Td`?$&(GW#3##X^~-}?RRr=%5y*fdkfvK4@$q?yxvBB-
lMJpzs(UM@?Jo%~CGe)k-XS8jE5*Zl<KQJJX9+RbX;sDX|pVt5Y

diff --git a/backend/__pycache__/petrinet.cpython-311.pyc b/backend/__pycache__/petrinet.cpython-311.pyc
index 1a800625f7cc61acce7367fb93d8f5826dfe6810..4e816769a074371c0b68ac0602573f0181a57fef 100644
GIT binary patch
delta 20
bcmca5drOvkIWI340|NsClhopk+~@fKIX(p)

delta 20
ccmca5drOvkIWI340|Ns?+p|R*xzF<f070DwYybcN

diff --git a/backend/__pycache__/simplesimmodel.cpython-311.pyc b/backend/__pycache__/simplesimmodel.cpython-311.pyc
index 2e2aa23d489d07e08be8d127421bc6e17b6dcabc..36dd67d3fec2dd972b20a2da97cca35e80cfec2d 100644
GIT binary patch
delta 22
ecmaFxmGQw>M(*Xjyj%<n3=B+Ci#Kv#tpWgEpa)F=

delta 22
ecmaFxmGQw>M(*Xjyj%<n3=Ef^EZWF@wF&@f2MFc>

diff --git a/backend/simtest.py b/backend/simtest.py
index a8c8e5a..c88e3bd 100644
--- a/backend/simtest.py
+++ b/backend/simtest.py
@@ -34,30 +34,18 @@ def main():
     ressources.append(num_p_b+1)
     num_p_c = 3
     ressources.append(num_p_c+1)
-<<<<<<< HEAD
-    num_ds_a = 25
-    ressources.append(num_ds_a+1)
-    num_ds_b = 40
-    ressources.append(num_ds_b+1)
-    num_ds_c = 40
-=======
     num_ds_a = 30
     ressources.append(num_ds_a+1)
     num_ds_b = 45
     ressources.append(num_ds_b+1)
     num_ds_c = 45
->>>>>>> nour
     ressources.append(num_ds_c+1)
 
     model_env = simpy.Environment()
     process = simmodel.BusinessProcess(model_env, ressources)
     model_env.process(simmodel.run_process(model_env, process))
 
-<<<<<<< HEAD
-    for i in range(2000):
-=======
     for i in range(30000):
->>>>>>> nour
         model_env.step()
         print(simmodel.get_ressources(process))
 
diff --git a/backend/test.py b/backend/test.py
index 66410b4..2ef5392 100644
--- a/backend/test.py
+++ b/backend/test.py
@@ -3,15 +3,9 @@ import numpy as np
 import dqn
 
 def test_agent():
-<<<<<<< HEAD
-    case = [1,0,1,0,0,0,0,0,0,0,0,0,0,0,0]
-    event = 3
-    process = [1,4,2,2,2,4,0,2,3,3,20,20,20]
-=======
     case = [1,1,0,1,0,0,0,0,0,0,0,0,0,0,0]
     event = 4
     process = [0,2,1,2,0,0,3,2,3,3,7,6,0]
->>>>>>> nour
 
     state = OrderedDict()
     state['case'] = np.asarray(case) 
@@ -19,10 +13,4 @@ def test_agent():
     state['process'] = np.asarray(process)
     print(state)
 
-<<<<<<< HEAD
     print(dqn.deploy(state))
-
-test_agent()
-=======
-    print(dqn.deploy(state))
->>>>>>> nour
-- 
GitLab