diff --git a/Frontend/main.py b/Frontend/main.py index d903a3575fe55314baf73bf4053084414376df4a..9986f9ac928f1396097e9d1fddd5f205b577f6f8 100644 --- a/Frontend/main.py +++ b/Frontend/main.py @@ -87,13 +87,36 @@ 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) + 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) @@ -118,7 +141,7 @@ def recommendation(result, filename): rec = dqn.deploy(state) rec = int(rec) - petrinet.decorate_petri_net(result, rec, filename) + petrinet.decorate_petri_net_with_rec(result, rec, filename) # time.sleep(15) return render_template('result.html') diff --git a/Frontend/static/net.png b/Frontend/static/net.png index f9f9db8b03428dc1135b3201784b9d49d0b05c0a..4cf1306829b32d53e94e122f8c00e9baeace56a2 100644 Binary files a/Frontend/static/net.png and b/Frontend/static/net.png differ diff --git a/backend/__pycache__/petrinet.cpython-311.pyc b/backend/__pycache__/petrinet.cpython-311.pyc index 987d4fcca2741bb26c78d24863796a9e0b6d1f7e..db4b19e553a2c0460eff857e9a971eb22fcfe843 100644 Binary files a/backend/__pycache__/petrinet.cpython-311.pyc and b/backend/__pycache__/petrinet.cpython-311.pyc differ diff --git a/backend/petrinet.py b/backend/petrinet.py index b0a7c84b07b009e149d693aee24ba3d953fc65dd..c1f71d5e6eee6eb32f8a6f10ea36854f760485e0 100644 --- a/backend/petrinet.py +++ b/backend/petrinet.py @@ -24,7 +24,48 @@ def generate_petri_net(): return net, initial_marking, final_marking -def decorate_petri_net(case, rec, name): +def decorate_petri_net(case, name): + activity_mapping = { + 1: 'place order', + 2: 'arrange standard order', + 3: 'arrange custom order', + 4: 'pick from stock A', + 5: 'pick from stock B', + 6: 'pick from stock C', + 7: 'manufacture A', + 8: 'manufacture B', + 9: 'pack A', + 10: 'pack B', + 11: 'pack C', + 12: 'attempt delivery A', + 13: 'attempt delivery B', + 14: 'attempt delivery C', + 15: 'order completed', + } + + net, initial_marking, final_marking = generate_petri_net() + state = eventlog.get_state(case, name) + events = state['case'] + + event_names = [] + for i in range(len(events)): + if events[i] == 1: + event_names.append(activity_mapping[i+1]) + + decoration = {} + + for t in net.transitions: + print(str(t.label)) + if str(t.label) in event_names: + decoration.update({t: {}}) + decoration[t].update({"color":"blue"}) + decoration[t].update({"label":t.label}) + + + pm4py.view_petri_net(net, initial_marking, final_marking, decorations = decoration) + pm4py.save_vis_petri_net(net, initial_marking, final_marking, decorations = decoration, file_path = r"static\preview_net.png") + +def decorate_petri_net_with_rec(case, rec, name): activity_mapping = { 1: 'place order', 2: 'arrange standard order',