-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.jl.html
137 lines (137 loc) · 13.6 KB
/
app.jl.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<div id="gbTemplateContainer-2" class="container">
<p v-text="msg"></p>
<div class="row">
<div id="ifd3" class="st-col col-12 col-sm st-module">
<h1 id="ibyx">Worker & Inventory Management</h1>
<div class="row">
<div id="ipixn" class="st-col col-12 col-sm st-module">
<h6 id="ieh4k"><strong id="ilbfb">READ INSTRUCTIONS FIRST</strong><br><br>1. <strong id="iemes">DOWNLOAD</strong> File template and follow instructions inside, then <strong id="iwu39j"> UPLOAD</strong> it beside.<br>2. <strong id="iemes-2">CUSTOMISE</strong> Options & Costs to your preference<br>3. <strong id="iemes-2-2">CLICK OPTIMISE</strong> to start program. <br>4. For graphs, <em><strong id="iemes-3">CLICK</strong></em> each line in legend once to filter it out, or <em><strong id="iemes-4">DOUBLE-CLICK</strong></em> to show line by itself.<br>5.<strong id="iemes-5"> EXPORT</strong> graph image from its topright plots or Results.xlsx data from the right of the webapp.</h6>
</div>
<div id="i2xnk" class="st-col col-sm st-module col-3">
<h6 id="im1hu">Files</h6>
<div class="row">
<div class="row justify-center"></div>
<q-btn id="ik7xbv" color="warning" icon="file_download" label="Download File Template" v-on:click="download_template = true"></q-btn>
</div>
<div id="irl56u" class="row">
<q-uploader accept=".xlsx" text-color="black" :auto-upload="true" :hide-upload-btn="true" label="Upload File Template here" :max-files="3" :multiple="true" :no-thumbnails="true" :url="'/____/upload/' + channel_" id="itk3fm"></q-uploader>
</div>
<q-btn id="i17zd8" color="primary" icon="arrow_outward" label="Export Results.xlsx" v-on:click="download_df = true"></q-btn>
<div id="izf9qi" class="row">
<div class="row justify-center"></div>
</div>
</div>
</div>
<div class="st-col col-12 col-sm st-module">
<h6 id="i0szps">Options</h6>
<div class="row">
<div class="st-col col-12 col-sm st-module">
<q-select id="iwqc1p" :filled="true" label="Select Product" :options="product_names" v-model="selected_product" color="primary"></q-select>
</div>
<div class="st-col col-12 col-sm st-module">
<q-select id="ipozdk" :filled="true" label="Select Worker" v-model="selected_worker" color="primary" :options="worker_names"></q-select>
</div>
<div class="st-col col-12 col-sm st-module">
<q-input iscomposite="true" id="icu7p1" :clearable="true" :filled="true" label="Starting Date" v-model="start_date">
<q-icon id="i4viwq" class="cursor-pointer" name="event">
<q-popup-proxy>
<q-date id="istwxv" mask="YYYY-MM-DD" :no-unset="true" :today-btn="true" v-model="start_date"></q-date>
</q-popup-proxy>
</q-icon>
</q-input>
</div>
<div class="st-col col-12 col-sm st-module">
<q-input iscomposite="true" id="ih9il2" :clearable="true" :filled="true" label="Ending Date" v-model="end_date">
<q-icon id="ib31ug" class="cursor-pointer" name="event">
<q-popup-proxy>
<q-date id="ijo02z" mask="YYYY-MM-DD" :no-unset="true" :today-btn="true" v-model="end_date"></q-date>
</q-popup-proxy>
</q-icon>
</q-input>
</div>
<div class="st-col col-12 col-sm st-module">
<q-toggle id="it1mqn" color="negative" label="Disable Backlogging" v-model="disable_backlogging" icon="cancel"></q-toggle>
</div>
<div class="st-col col-12 col-sm st-module">
<h6 id="idt8m6">Total Costs: <strong id="i4t9qp" style="color: yellow;">{{cost_str}}</strong></h6>
</div>
</div>
</div>
<div class="row">
<div class="row"></div>
<div id="ic0zg" class="st-col col-12 col-sm st-module">
<h6 id="i5st9">Costs</h6>
<div class="row">
<div class="st-col col-12 col-sm st-module">
<div class="st-col col-12 col-sm st-module">
<q-icon id="il2bxo" class="text-red" name="group_add" size="xs" color="green"></q-icon>
<h6>Hiring</h6>
<q-input id="i78cd9" type="number" :rules="[val => Number.isInteger(Number(val)) || 'Value must be an integer']" v-model="cost_hiring_cH" :filled="true" :clearable="true" :dense="true" label="Input Hiring cost"></q-input>
<q-slider id="iq83bf" color="primary" :label="true" :max="10000" :min="1" :step="10" v-model="cost_hiring_cH"></q-slider>
</div>
<div class="st-col col-12 col-sm st-module">
<q-icon id="i4r98t" class="text-red" name="group_off" size="xs" color="red"></q-icon>
<h6>Firing</h6>
<q-input id="ih485l" type="number" :rules="[val => Number.isInteger(Number(val)) || 'Value must be an integer']" v-model="cost_firing_cF" :filled="true" :clearable="true" :dense="true" label="Input Firing cost"></q-input>
<q-slider id="ix80p4" color="primary" :label="true" :max="5000" :min="1" :step="10" v-model="cost_firing_cF"></q-slider>
</div>
<div class="st-col col-12 col-sm st-module">
<q-icon id="ipwg9h" class="text-red" name="group" size="xs" color="blue"></q-icon>
<h6>Labour</h6>
<q-input id="ivq95j" type="number" :rules="[val => Number.isInteger(Number(val)) || 'Value must be an integer']" v-model="cost_labour_cR" :filled="true" :clearable="true" :dense="true" label="Input Labour cost"></q-input>
<q-slider id="ibea4t" color="primary" :label="true" :max="5000" :min="1" :step="10" v-model="cost_labour_cR"></q-slider>
</div>
<div class="st-col col-12 col-sm st-module">
<q-icon id="ifw932" class="text-red" name="timer" size="xs" color="orange"></q-icon>
<h6>Overtime</h6>
<q-input id="ie570r" type="number" :rules="[val => Number.isInteger(Number(val)) || 'Value must be an integer']" v-model="cost_overtime_cO" :filled="true" :clearable="true" :dense="true" label="Input Overtime cost"></q-input>
<q-slider id="itk7kn" color="primary" :label="true" :max="5000" :step="10" v-model="cost_overtime_cO" :min="cost_labour_cR"></q-slider>
</div>
</div>
<div class="st-col col-12 col-sm st-module">
<div class="st-col col-12 col-sm st-module">
<q-icon id="imibix" class="text-red" name="person_search" size="xs" color="yellow"></q-icon>
<h6>Subcontracting</h6>
<q-input id="i3xpat" type="number" :rules="[val => Number.isInteger(Number(val)) || 'Value must be an integer']" v-model="cost_subcontract_cS" :filled="true" :clearable="true" :dense="true" label="Input Subcontracting cost"></q-input>
<q-slider id="ih06g" color="primary" :label="true" :max="5000" :step="10" v-model="cost_subcontract_cS" :min="cost_labour_cR"></q-slider>
</div>
<div class="st-col col-12 col-sm st-module">
<q-icon id="i8dioo" class="text-red" name="hourglass_bottom" size="xs" color="red"></q-icon>
<h6>Idle</h6>
<q-input id="i2jhyp" type="number" :rules="[val => Number.isInteger(Number(val)) || 'Value must be an integer']" v-model="cost_idle_cU" :filled="true" :clearable="true" :dense="true" label="Input Idle Cost"></q-input>
<q-slider id="iw4uld" color="primary" :label="true" :max="5000" :min="1" :step="10" v-model="cost_idle_cU"></q-slider>
</div>
<div class="st-col col-12 col-sm st-module">
<q-icon id="ij2v9b" class="text-red" name="warehouse" size="xs" color="grey"></q-icon>
<h6>Inventory</h6>
<q-input id="ikywom" type="number" :rules="[val => Number.isInteger(Number(val)) || 'Value must be an integer']" v-model="cost_inventory_cI" :filled="true" :clearable="true" :dense="true" label="Input Inventory cost"></q-input>
<q-slider id="iljdly" color="primary" :label="true" :max="5000" :min="1" :step="10" v-model="cost_inventory_cI"></q-slider>
</div>
<div class="st-col col-12 col-sm st-module">
<q-icon id="i8vaat" class="text-red" name="backspace" size="xs" color="purple"></q-icon>
<h6>Backlogging</h6>
<q-input id="iohkal" type="number" :rules="[val => Number.isInteger(Number(val)) || 'Value must be an integer']" v-model="cost_backlogging_cB" :filled="true" :clearable="true" :dense="true" label="Input Backlogging cost" :disable="disable_backlogging"></q-input>
<q-slider id="ig1d0c" color="primary" :label="true" :max="5000" :min="1" :step="10" v-model="cost_backlogging_cB" :disable="disable_backlogging"></q-slider>
</div>
</div>
</div>
<div class="row">
<h1></h1>
</div>
<div class="row justify-center">
<q-btn id="i1a9i" color="primary" text-color="white" icon="timeline" label="Optimise" v-on:click="press_optimise = true" :disable="press_optimise" :loading="press_optimise"></q-btn>
</div>
</div>
<div class="row">
<div class="st-col col-3 col-sm st-module"></div>
<div class="st-col col-9 st-module"></div>
</div>
<div id="ittlw9" class="st-col col-12 col-sm st-module">
<h6 id="imjggd">Graphs</h6>
<plotly id="iuoms" data="W3siZ2J0eXBlIjoiTGluZSBDaGFydCIsIngiOiIkX3tkYXRlX2xpc3R9IiwieSI6IiRfe2RlbWFuZF9wbG90fSIsIm1vZGUiOiJsaW5lcyttYXJrZXJzIiwibmFtZSI6IkRlbWFuZCJ9LHsiZ2J0eXBlIjoiTGluZSBDaGFydCIsIngiOiIkX3tkYXRlX2xpc3R9IiwieSI6IiRfe2ludmVudG9yeV9wbG90fSIsIm1vZGUiOiJsaW5lcyttYXJrZXJzIiwibmFtZSI6IkludmVudG9yeSIsIm1hcmtlciI6eyJjb2xvciI6ImdyZXkifX0seyJnYnR5cGUiOiJMaW5lIENoYXJ0IiwieCI6IiRfe2RhdGVfbGlzdH0iLCJ5IjoiJF97cHJvZHVjdGlvbl9wbG90fSIsIm5hbWUiOiJQcm9kdWN0aW9uIiwibW9kZSI6ImxpbmVzK21hcmtlcnMifSx7IngiOiIkX3tkYXRlX2xpc3R9IiwieSI6IiRfe292ZXJ0aW1lX3Bsb3R9IiwibmFtZSI6Ik92ZXJ0aW1lIiwibW9kZSI6ImxpbmVzK21hcmtlcnMiLCJtYXJrZXIiOnsiY29sb3IiOiIjZmY4ODAwIn19LHsieCI6IiRfe2RhdGVfbGlzdH0iLCJ5IjoiJF97YmFja2xvZ2dpbmdfcGxvdH0iLCJuYW1lIjoiQmFja2xvZ2dpbmciLCJtb2RlIjoibGluZXMrbWFya2VycyJ9LHsiZ2J0eXBlIjoiTGluZSBDaGFydCIsIngiOiIkX3tkYXRlX2xpc3R9IiwieSI6IiRfe2lkbGVfcGxvdH0iLCJ0eXBlIjoic2NhdHRlciIsIm1vZGUiOiJsaW5lcyttYXJrZXJzIiwibmFtZSI6IklkbGUiLCJtYXJrZXIiOnsiY29sb3IiOiIjZmYwMDAwIn19LHsieCI6IiRfe2RhdGVfbGlzdH0iLCJ5IjoiJF97c3ViY29udHJhY3RfcGxvdH0iLCJ0eXBlIjoic2NhdHRlciIsIm5hbWUiOiJTdWJjb250cmFjdCIsIm1hcmtlciI6eyJjb2xvciI6IiNmYmZmMDAifSwibW9kZSI6ImxpbmVzK21hcmtlcnMifV0=" config="e30=" layout="eyJ0aXRsZSI6IiRfe3NlbGVjdGVkX3Byb2R1Y3R9IiwieWF4aXMiOnsidGl0bGUiOnsidGV4dCI6IlN0b2NrIFF1YW50aXR5IiwiZm9udCI6eyJjb2xvciI6IiNmZmZmZmYifX19LCJ4YXhpcyI6eyJ0aXRsZSI6eyJ0ZXh0IjoiRGF0ZSIsImZvbnQiOnsiY29sb3IiOiIjZmZmZmZmIn19fSwicGxvdF9iZ2NvbG9yIjoiIzEwMTgyNyIsInBhcGVyX2JnY29sb3IiOiIjMTAxODI3IiwiZm9udCI6eyJjb2xvciI6IiNmZmZmZmYifX0="></plotly>
<plotly id="ivxw9" data="W3siZ2J0eXBlIjoiQmFyIENoYXJ0IiwieCI6IiRfe2RhdGVfbGlzdH0iLCJ5IjoiJF97aGlyZWRfcGxvdH0iLCJ0eXBlIjoiYmFyIiwibmFtZSI6IkhpcmVkIFdvcmtlcnMiLCJtYXJrZXIiOnsiY29sb3IiOiIjNGRmZjAwIn19LHsiZ2J0eXBlIjoiQmFyIENoYXJ0IiwieCI6IiRfe2RhdGVfbGlzdH0iLCJ5IjoiJF97ZmlyZWRfcGxvdH0iLCJ0eXBlIjoiYmFyIiwibmFtZSI6IkZpcmVkIFdvcmtlcnMiLCJtYXJrZXIiOnsiY29sb3IiOiIjZmYwMDAwIn19LHsiZ2J0eXBlIjoiTGluZSBDaGFydCIsIngiOiIkX3tkYXRlX2xpc3R9IiwieSI6IiRfe3dvcmtlcmxldmVsX3Bsb3R9IiwidHlwZSI6InNjYXR0ZXIiLCJtb2RlIjoibGluZXMrbWFya2VycyIsIm5hbWUiOiJXb3JrZXIgTGV2ZWwiLCJsaW5lIjp7ImNvbG9yIjoiIzAwNTZlMCJ9fV0=" config="e30=" layout="eyJ0aXRsZSI6IiRfe3NlbGVjdGVkX3dvcmtlcn0iLCJ4YXhpcyI6eyJ0aXRsZSI6eyJ0ZXh0IjoiRGF0ZSIsImZvbnQiOnsiY29sb3IiOiIjZmZmZmZmIn19fSwieWF4aXMiOnsidGl0bGUiOnsidGV4dCI6IldvcmtlcnMiLCJmb250Ijp7ImNvbG9yIjoiI2ZmZmZmZiJ9fX0sInBhcGVyX2JnY29sb3IiOiIjMTAxODI3IiwiZm9udCI6eyJjb2xvciI6IiNmZmZmZmYifSwicGxvdF9iZ2NvbG9yIjoiIzEwMTgyNyJ9"></plotly>
</div>
</div>
</div>
</div>
</div>