DB now CouchDB + PouchDB

TODO : Remove toast messages
TODO remove persistence  from score dropdowns
This commit is contained in:
JeffDaniels 2024-12-10 22:48:25 -06:00
parent 235d36f878
commit b46109dc90
17 changed files with 528 additions and 279 deletions

View File

@ -97,7 +97,8 @@
"id": 44250508, "id": 44250508,
"ssh-key-file": "/.wappler/.ssh/ertfastfiller_ed25519.pub", "ssh-key-file": "/.wappler/.ssh/ertfastfiller_ed25519.pub",
"fingerprint": "64:50:e4:41:ed:26:78:df:fb:27:4a:cf:a7:58:02:2a", "fingerprint": "64:50:e4:41:ed:26:78:df:fb:27:4a:cf:a7:58:02:2a",
"type": "ed25519" "type": "ed25519",
"name": "ertfastfiller_ed25519"
}, },
"ertfastfiller_rsa": { "ertfastfiller_rsa": {
"id": 44250710, "id": 44250710,
@ -198,6 +199,34 @@
} }
} }
] ]
},
"MatrixDeveloper": {
"id": 461116055,
"status": "running",
"access": true,
"ip_address": "147.182.250.146",
"region": "San Francisco 3",
"price": 4,
"vcpus": 1,
"memory": 512,
"disk": 10,
"transfer": "0.5",
"ssh_keys": [
{
"id": 44250460,
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGsEr/uTng6hsmeec9KZNZ/G5QMqynZ3bOpGm6r/FyXz jndan@DESKTOP-N026HO3",
"name": "DO_Developer_12_2024",
"fingerprint": "f2:60:83:0a:b3:4e:c7:7b:51:d1:a8:28:88:10:1b:07"
},
{
"id": 44250508,
"ssh-key-file": "/.wappler/.ssh/ertfastfiller_ed25519.pub",
"fingerprint": "64:50:e4:41:ed:26:78:df:fb:27:4a:cf:a7:58:02:2a",
"type": "ed25519",
"name": "ertfastfiller_ed25519"
}
],
"services": {}
} }
} }
} }

View File

@ -30,6 +30,25 @@
{ {
"name": "db_employeeID", "name": "db_employeeID",
"type": "text" "type": "text"
},
{
"name": "db_signatureData",
"type": "text"
},
{
"name": "db_trainerSelected",
"type": "text"
},
{
"name": "db_stateName",
"type": "text"
},
{
"name": "dummy1",
"type": "text",
"ui": {
"label": "dummy"
}
} }
] ]
}, },
@ -41,15 +60,48 @@
}, },
{ {
"name": "docPDF", "name": "docPDF",
"type": "file" "type": "text"
} }
], ],
"status": {
"modified": true
},
"db_edits": { "db_edits": {
"name": "daData" "name": "daData"
} }
},
"driver": {
"meta": [
{
"name": "_id",
"type": "objectId"
},
{
"name": "db_fullName",
"type": "text"
},
{
"name": "db_licenseNumber",
"type": "text"
},
{
"name": "db_employeeID",
"type": "text"
},
{
"name": "db_signatureData",
"type": "text"
},
{
"name": "db_trainerSelected",
"type": "text"
},
{
"name": "db_stateName",
"type": "text"
},
{
"name": "dummy1",
"type": "text"
}
]
} }
}, },
"views": {} "views": {}

3
app/api/test.json Normal file
View File

@ -0,0 +1,3 @@
{
"exec": {}
}

View File

@ -1,171 +1,84 @@
dmx.config({ dmx.config({
"start": {
"repeat1": {
"meta": null,
"outputType": "text"
},
"tableRepeat1": {
"meta": [
{
"name": "isSection",
"type": "text"
},
{
"name": "numSection",
"type": "text"
},
{
"name": "txtSection",
"type": "text"
},
{
"name": "wNumSection",
"type": "number"
}
],
"outputType": "text"
}
},
"observationPage": { "observationPage": {
"flowClearPoints": { "tableRepeat4": {
"meta": [ "meta": [
{ {
"name": "zzmyTestFunction", "name": "_id",
"type": "text" "type": "objectId"
} },
],
"local": {}
},
"processPDF": {
"meta": [
{ {
"name": "PDFprocess", "name": "db_fullName",
"type": "text" "type": "text"
},
{
"name": "db_licenseNumber",
"type": "text"
},
{
"name": "db_employeeID",
"type": "text"
},
{
"name": "db_signatureData",
"type": "text"
},
{
"name": "db_trainerSelected",
"type": "text"
},
{
"name": "db_stateName",
"type": "text"
},
{
"name": "dummy1",
"type": "text",
"ui": {
"label": "dummy"
}
} }
], ],
"local": {} "outputType": "array"
}, },
"datastore1": [
{
"type": "text",
"name": "numSection"
},
{
"type": "text",
"name": "description"
},
{
"type": "text",
"name": "Points"
},
{
"type": "text",
"name": "section"
}
],
"data_view1": { "data_view1": {
"meta": [ "meta": [
{ {
"type": "number", "name": "_id",
"name": "ID" "type": "objectId"
}, },
{ {
"name": "db_fullName",
"type": "text"
},
{
"name": "db_licenseNumber",
"type": "text"
},
{
"name": "db_employeeID",
"type": "text"
},
{
"name": "db_signatureData",
"type": "text"
},
{
"name": "db_trainerSelected",
"type": "text"
},
{
"name": "db_stateName",
"type": "text"
},
{
"name": "dummy1",
"type": "text", "type": "text",
"name": "db_fullName" "ui": {
}, "label": "dummy"
{ }
"type": "text",
"name": "db_licenseNumber"
},
{
"type": "text",
"name": "db_stateIssue"
},
{
"type": "number",
"name": "db_employeeID"
},
{
"type": "text",
"name": "owner"
},
{
"type": "text",
"sub": [],
"name": "db_SignatureData"
} }
], ],
"outputType": "array" "outputType": "array"
} }
},
"index": {
"flowRunPageId": {
"meta": [
{
"name": "setRunPageId",
"type": "text"
}
],
"local": {}
},
"flowrunPageId": {
"meta": [
{
"name": "setRunPageId",
"type": "text"
}
],
"local": {}
},
"runPageId": {
"outputType": "text"
},
"flow1": {
"meta": [
{
"name": "saveSignatureFlow",
"type": "text"
}
],
"local": [
{
"name": "",
"type": "object",
"metaData": {
"alertMessage": {
"meta": null,
"outputType": "text"
}
}
}
]
},
"signatureEncodeFlow": {
"meta": [
{
"name": "signatureEncoded",
"type": "text"
},
{
"name": "submitServerConnect",
"type": "text"
}
],
"local": {}
},
"cookies": [
{
"type": "text",
"name": "userIdentifier"
}
]
},
"success": {
"cookies": [
{
"type": "text",
"name": "userIdentifier"
}
]
} }
}); });

View File

@ -0,0 +1,8 @@
/*!
App Connect Bootstrap 5 Alert
Version: 2.0.1
(c) 2024 Wappler.io
@build 2024-06-19 11:47:06
*/
dmx.Component("bs5-alert",{initialData:{visible:!1},attributes:{show:{type:Boolean,default:!1},type:{type:String,default:"primary",enum:["primary","secondary","success","danger","warning","info","light","dark"]},closable:{type:Boolean,default:!1}},methods:{toggle(){this._toggle()},show(){this._show()},hide(){this._hide()},setType(t){this._setType(t)},setTextContent(t){this._setTextContent(t)}},init(t){this._transitionendHandler=this._transitionendHandler.bind(this),this._closeButton=document.createElement("button"),this._closeButton.setAttribute("type","button"),this._closeButton.setAttribute("aria-label","Close"),this._closeButton.className="btn-close",this._closeButton.addEventListener("click",this._hide.bind(this)),t.setAttribute("role","alert"),t.classList.add("alert"),this.props.closable&&(t.appendChild(this._closeButton),t.classList.add("alert-dismissible")),this.props.show?(t.classList.add("show"),this.set("visible",!0)):t.style.setProperty("display","none"),this._setType(this.props.type)},performUpdate(t){t.has("type")&&this._setType(this.props.type),t.has("show")&&this[this.props.show?"_show":"_hide"](),t.has("closable")&&(this.props.closable?(this.$node.appendChild(this._closeButton),this.$node.classList.add("alert-dismissible")):(this.$closeButton.remove(),this.$node.classList.remove("alert-dismissible")))},_show:function(){this.$node.removeEventListener("transitionend",this._transitionendHandler),this.$node.style.removeProperty("display"),this.$node.offsetWidth,this.$node.classList.add("show"),this.set("visible",!0)},_hide:function(){this.$node.removeEventListener("transitionend",this._transitionendHandler),this.$node.classList.contains("fade")?this.$node.addEventListener("transitionend",this._transitionendHandler,{once:!0}):this.$node.style.setProperty("display","none"),this.$node.classList.remove("show"),this.set("visible",!1)},_transitionendHandler:function(){this.$node.style.setProperty("display","none")},_setType:function(t){var s=["primary","secondary","success","danger","warning","info","light","dark"].map((function(t){return"alert-"+t}));this.$node.classList.remove.apply(this.$node.classList,s),this.$node.classList.add("alert-"+t)},_setTextContent:function(t){this._closeButton.remove(),this.$node.textContent=t,this.props.closable&&this.$node.appendChild(this._closeButton)}});
//# sourceMappingURL=dmxBootstrap5Alert.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
dmx.Attribute('lazyload', 'mounted', function(node, attr) {
this.$addBinding(attr.value, function(value) {
node.classList.add('lazyload');
})
});
dmx.Attribute('lazyload-dynamic', 'mounted', function(node, attr) {
this.$addBinding(attr.value, function(value) {
node.classList.add('lazyload');
})
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/js/blah.js Normal file
View File

@ -0,0 +1,2 @@
let text = "hello world";
text.length;

View File

@ -2,7 +2,7 @@
<dmx-serverconnect id="serverconnect2" url="/api/qSubSection" dmx-param:subid="(swiper1.index + 1)"></dmx-serverconnect> <dmx-serverconnect id="serverconnect2" url="/api/qSubSection" dmx-param:subid="(swiper1.index + 1)"></dmx-serverconnect>
<div is="dmx-bs5-toasts" id="toasts1"></div> <div is="dmx-bs5-toasts" id="toasts1"></div>
<dmx-serverconnect id="serverconnect1" url="/api/qSection"></dmx-serverconnect> <dmx-serverconnect id="serverconnect1" url="/api/qSection"></dmx-serverconnect>
<meta name="ac:route" content="/start"> <meta name="ac:route" content="/Scrollable-sections">
<div class="container"> <div class="container">
<nav class="navbar navbar-expand-lg"> <nav class="navbar navbar-expand-lg">
<span class="navbar-text">Page {{(swiper1.index + 1)}}</span> <span class="navbar-text">Page {{(swiper1.index + 1)}}</span>
@ -11,7 +11,7 @@
</nav> </nav>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<div is="dmx-swiper" id="swiper1" pagination="fraction" navigation="true" dmx-bind:slides="serverconnect1.data.query" loop="true" scrollbar="true"> <div is="dmx-swiper" id="swiper1" pagination="bullets" navigation="true" dmx-bind:slides="serverconnect1.data.query" loop="true" scrollbar="true">
<div class="swiper-slide"> <div class="swiper-slide">
<div class="row"> <div class="row">
<h2> {{txtSection}}</h2> <h2> {{txtSection}}</h2>

View File

@ -1,10 +1,151 @@
<!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="index" appConnect="local" components="{dmxBootstrap5Navigation:{},dmxAnimateCSS:{},dmxStateManagement:{},dmxDatastore:{},dmxBootstrap5Modal:{},dmxFormatter:{},dmxBootstrap5TableGenerator:{},dmxBootstrap5Toasts:{},dmxBootbox5:{},dmxBrowser:{},dmxBootstrap5Tooltips:{},dmxValidator:{},dmxS3Upload:{},dmxDatePicker:{},dmxMasonry:{},dmxBootstrap5Popovers:{}}" jquery_slim_35="cdn" moment_2="cdn" --> <!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="index" appConnect="local" components="{dmxBootstrap5Navigation:{},dmxAnimateCSS:{},dmxStateManagement:{},dmxDatastore:{},dmxBootstrap5Modal:{},dmxFormatter:{},dmxBootstrap5TableGenerator:{},dmxBootstrap5Toasts:{},dmxBootbox5:{},dmxBrowser:{},dmxBootstrap5Tooltips:{},dmxValidator:{},dmxS3Upload:{},dmxDatePicker:{},dmxMasonry:{},dmxBootstrap5Popovers:{},dmxPouchDB:{},dmxLazyLoad:{}}" jquery_slim_35="cdn" moment_2="cdn" -->
<script is="dmx-flow" id="pouchSignatureDataByID" type="text/dmx-flow">{
pouchdb.single: {
name: "pouchSignatureData",
output: true,
outputType: "object",
connection: "dbCouch",
sql: {
type: "select",
columns: [
{table: "da", column: "db_signatureData"}
],
table: {name: "da"},
primary: "_id",
joins: [],
wheres: {
condition: "AND",
rules: [
{
id: "da._id",
field: "da._id",
type: "string",
operator: "equal",
value: "{{tableRepeat3[0].btn5.value}}",
data: {
table: "da",
column: "_id",
type: "text",
columnObj: {name: "_id", type: "objectId", primary: true}
},
operation: "=",
table: "da"
}
],
conditional: null,
valid: true
},
orders: [],
query: ""
}
}
}</script>
<dmx-value id="signatureEncoded" dmx-bind:value="signatureDataEncoded"></dmx-value>
<dmx-session-manager id="sessionStorage"></dmx-session-manager>
<div is="dmx-pouchdb-detail" id="pouchdbdetail1" dmx-bind:docid="" db="dbCouch" collection="da"></div>
<div is="dmx-pouchdb-view" id="pouchdbview1" db="dbCouch" collection="da"></div>
<script is="dmx-flow" id="pouchInsert" type="text/dmx-flow" dmx-on:error="toasts1.showSimple({message: 'ERROR ON INSERT', type: 'danger'})">[
{
pouchdb.insert: {
name: "pouchResult",
output: true,
connection: "dbCouch",
sql: {
type: "insert",
values: [
{
table: "da",
column: "db_fullName",
type: "text",
value: "{{pouchconnectform1.inp_db_fullName.value}}"
},
{
table: "da",
column: "db_licenseNumber",
type: "text",
value: "{{pouchconnectform1.inp_db_licenseNumber.value}}"
},
{
table: "da",
column: "db_employeeID",
type: "text",
value: "{{pouchconnectform1.inp_owner.value}}"
},
{
table: "da",
column: "db_trainerSelected",
type: "text",
value: "{{pouchconnectform1.select1.selectedText}}"
},
{
table: "da",
column: "db_stateName",
type: "text",
value: "{{pouchconnectform1.db_stateIssue.selectedText}}"
},
{
table: "da",
column: "db_signatureData",
type: "text",
value: "{{pouchconnectform1.db_signatureData.value}}"
},
{table: "da", column: "dummy1", type: "text", value: "Dymmy Field"}
],
table: "da",
returning: "_id",
query: "",
params: [
{
name: ":P1",
type: "expression",
value: "{{pouchconnectform1.inp_db_fullName.value}}",
test: ""
},
{
name: ":P2",
type: "expression",
value: "{{pouchconnectform1.inp_db_licenseNumber.value}}",
test: ""
},
{
name: ":P3",
type: "expression",
value: "{{pouchconnectform1.inp_owner.value}}",
test: ""
},
{
name: ":P4",
type: "expression",
value: "{{pouchconnectform1.select1.selectedText}}",
test: ""
},
{
name: ":P5",
type: "expression",
value: "{{pouchconnectform1.db_stateIssue.selectedText}}",
test: ""
},
{
name: ":P6",
type: "expression",
value: "{{pouchconnectform1.db_signatureData.value}}",
test: ""
}
]
}
}
},
{
toast.showSimple: {message: "Saved Entry", type: "success"}
}
]</script>
<dmx-pouchdb id="pouchdb1" db="dbCouch"></dmx-pouchdb>
<dmx-cookie-manager id="cookies1"></dmx-cookie-manager> <dmx-cookie-manager id="cookies1"></dmx-cookie-manager>
<dmx-toggle id="toggleSignatureDataEncoded" checked="true"></dmx-toggle> <dmx-toggle id="toggleSignatureDataEncoded" checked="true"></dmx-toggle>
<div is="dmx-browser" id="browser1"></div> <div is="dmx-browser" id="browser1"></div>
<script is="dmx-flow" id="signatureEncodeFlow" type="text/dmx-flow">[ <script is="dmx-flow" id="signatureEncodeFlow" type="text/dmx-flow">[
{ {
toast.showSimple: {message: "Saving Data", delay: 2500, type: "info"} toast.showSimple: {message: "Encoding Signature", delay: 2500, type: "info"}
}, },
{ {
runJS: { runJS: {
@ -13,20 +154,6 @@
outputType: "text", outputType: "text",
function: "getSignatureData" function: "getSignatureData"
} }
},
{
wait: {delay: 1000}
},
{
run: {
name: "submitServerConnect",
output: true,
outputType: "text",
action: "{{serverconnectform1.submit()}}"
}
},
{
toast.showSimple: {message: "Still processing", delay: 2000, type: "dark"}
} }
]</script> ]</script>
<script is="dmx-flow" id="flow1" type="text/dmx-flow">[ <script is="dmx-flow" id="flow1" type="text/dmx-flow">[
@ -47,27 +174,24 @@
<div class="modal-dialog modal-lg" role="document"> <div class="modal-dialog modal-lg" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title">Verify information.</h5> <h5 class="modal-title" contenteditable="false">Submitted Signature for {{pouchconnectform1.inp_db_fullName.value}}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" is="dmx-button" value=""></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<p>Signature will show here. Is it acceptable? Save or discard.</p> <p>Signature will show here. Is it acceptable? You can change it before saving everything.</p>
<div class="container">
<p>A nice paragraph {{serverconnectform1.inp_db_fullName.value}}</p>
</div>
<p> <p>
<div class="container" id="signatureContainer"> <div class="container" id="signatureContainer">
<div class="row"> <div class="row">
<div class="col text-center"> <div class="col text-center">
<img id="uploadedSignature" alt="Signature will appear here" dmx-style:uploadedsignaturestyle="'max-width: 690; border: 1px solid #ccc;'" width="700" height="225"> <img id="uploadedSignature" alt="Signature will appear here" dmx-style:uploadedsignaturestyle="'max-width: 690; border: 1px solid #ccc;'" width="700" height="225" dmx-bind:src="signatureEncoded.value">
</div> </div>
</div> </div>
</div> </div>
</p> </p>
</div> </div>
<div is="dmx-pouchdb-detail" id="pouchdbdetail2" dmx-bind:docid="tableRepeat3[0].btn5.value" db="dbCouch" collection="da"></div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div> </div>
</div> </div>
</div> </div>
@ -79,7 +203,6 @@
<div class="modal-body"> <div class="modal-body">
<p class="text-center text-success"><i class="fas fa-check-circle fa-6x"></i></p> <p class="text-center text-success"><i class="fas fa-check-circle fa-6x"></i></p>
<h4 class="text-center fw-light">Success!</h4> <h4 class="text-center fw-light">Success!</h4>
<h4 class="text-center fw-light">Next step. Submit your signature.</h4>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
@ -94,7 +217,7 @@
<p class="text-center text-danger"><i class="fas fa-times-circle fa-6x"></i></p> <p class="text-center text-danger"><i class="fas fa-times-circle fa-6x"></i></p>
<h4 class="text-center fw-light">Error!</h4> <h4 class="text-center fw-light">Error!</h4>
<h4 class="text-center fw-light">Something wrong happen. <br>Get help from a Trainer.!</h4> <h4 class="text-center fw-light">Something wrong happen. <br>Get help from a Trainer.!</h4>
<p>system returned: {{serverconnectform1.lastError.message}}</p> <p>system returned: {{pouchconnectform1.lastError.message}}</p>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
@ -108,7 +231,7 @@
<div class="modal-dialog modal-lg" role="document"> <div class="modal-dialog modal-lg" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title">Hi {{serverconnectform1.inp_db_fullName.value}}, double check info and sign the box below.&nbsp; Thanks.</h5> <h5 class="modal-title">Hi {{pouchconnectform1.inp_db_fullName.value}}, double check info and sign the box below.&nbsp; Thanks.</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body text-center"> <div class="modal-body text-center">
@ -125,10 +248,10 @@
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<th scope="row">{{serverconnectform1.inp_db_fullName.value}}</th> <th scope="row">{{pouchconnectform1.inp_db_fullName.value}}</th>
<td>{{serverconnectform1.inp_db_licenseNumber.value}}</td> <td>{{pouchconnectform1.inp_db_licenseNumber.value}}</td>
<td>{{serverconnectform1.db_stateIssue.value}}</td> <td>{{pouchconnectform1.db_stateIssue.value}}</td>
<td>{{serverconnectform1.inp_owner.value}}</td> <td>{{pouchconnectform1.inp_owner.value}}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -140,7 +263,7 @@
<div class="modal-footer"> <div class="modal-footer">
<button id="btn4" class="btn btn-warning w-25" data-bs-toggle="button" onclick="clearCanvas()">Clear Signature</button> <button id="btn4" class="btn btn-warning w-25" data-bs-toggle="button" onclick="clearCanvas()">Clear Signature</button>
<button type="button" class="btn btn-danger w-auto" data-bs-dismiss="modal" dmx-bs-tooltip="'Close Signature Panel'" data-bs-trigger="hover" data-bs-placement="top" onclick="getSignatureData()">CLOSE</button> <button type="button" class="btn btn-danger w-auto" data-bs-dismiss="modal" dmx-bs-tooltip="'Close Signature Panel'" data-bs-trigger="hover" data-bs-placement="top" onclick="getSignatureData()">CLOSE</button>
<button type="button" class="btn btn-success w-auto" dmx-on:click="signatureEncodeFlow.run()">Save</button> <button type="button" class="btn btn-success w-auto" data-bs-dismiss="modal" dmx-on:click="signatureEncodeFlow.run()">Accept</button>
</div> </div>
</div> </div>
</div> </div>
@ -194,7 +317,7 @@
</div> </div>
</div> </div>
</div> </div>
<dmx-toggle id="dataStoreVisibality"></dmx-toggle> <dmx-toggle id="toggleRecordsTable" checked="true"></dmx-toggle>
<div class="container wappler-block pt-3 pb-3"> <div class="container wappler-block pt-3 pb-3">
<nav class="navbar navbar-expand-lg justify-content-around"> <nav class="navbar navbar-expand-lg justify-content-around">
@ -220,10 +343,12 @@
</div> </div>
<div class="nav-item dropdown"><a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" id="dropdown3" role="button" aria-haspopup="true" aria-expanded="false">view</a> <div class="nav-item dropdown"><a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" id="dropdown3" role="button" aria-haspopup="true" aria-expanded="false">view</a>
<div class="dropdown-menu" aria-labelledby="dropdown3"> <div class="dropdown-menu" aria-labelledby="dropdown3">
<a class="dropdown-item" dmx-on:click="modal1.show()">Show Records</a> <a class="dropdown-item" dmx-on:click="toggleRecordsTable.toggle()">Show Records</a>
<a class="dropdown-item" href="#" dmx-on:click="SignatureModal1.show()">SignatureModal1</a> <a class="dropdown-item" href="#" dmx-on:click="SignatureModal1.show()">SignatureModal1</a>
<a class="dropdown-item" href="#" dmx-on:click="toggleSignatureDataEncoded.toggle()">SignatureEncoding</a> <a class="dropdown-item" href="#" dmx-on:click="toggleSignatureDataEncoded.toggle()">SignatureEncoding</a>
<a class="dropdown-item" href="#" dmx-on:click="modalVerifySignature.show()">modalVerifySignature</a>
<a class="dropdown-item" href="/observationPage" dmx-on:click="toggleSignatureDataEncoded.toggle()" internal="true">Observation</a> <a class="dropdown-item" href="/observationPage" dmx-on:click="toggleSignatureDataEncoded.toggle()" internal="true">Observation</a>
<a class="dropdown-item" dmx-on:click="toggleSignatureDataEncoded.toggle()">ToggleViews</a>
</div> </div>
</div> </div>
<div class="nav-item dropdown"><a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" id="dropdown4" role="button" aria-haspopup="true" aria-expanded="false">Help</a> <div class="nav-item dropdown"><a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" id="dropdown4" role="button" aria-haspopup="true" aria-expanded="false">Help</a>
@ -282,69 +407,106 @@
<div class="row"> <div class="row">
<div class="col" id="colTop"> <div class="col" id="colTop">
<h1 class="text-center">Lets Begin<br>Please enter required information&nbsp;</h1> <h1 class="text-center">Please enter required information&nbsp;</h1>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<p>*All fields are required</p>
<!--
<form is="dmx-serverconnect-form" id="serverconnectform1" method="post" action="/api/insert" dmx-generator="bootstrap5" dmx-form-type="horizontal" dmx-on:done="DBSC1.load({})" dmx-on:success="insertID.setValue(serverconnectform1.data.insert.identity);toasts1.showSimple({message: 'Save successful', delay: 2500, type: 'success'});cookies1.set('userIdentifier',serverconnectform1.data.insert.identity,{})" dmx-on:submit="SignatureModal1.hide()"> <form is="dmx-serverconnect-form" id="serverconnectform1" method="post" action="/api/insert" dmx-generator="bootstrap5" dmx-form-type="horizontal" dmx-on:done="DBSC1.load({})" dmx-on:success="insertID.setValue(serverconnectform1.data.insert.identity);toasts1.showSimple({message: 'Save successful', delay: 2500, type: 'success'});cookies1.set('userIdentifier',serverconnectform1.data.insert.identity,{})" dmx-on:submit="SignatureModal1.hide()">
<div class="form-group mb-3 row"> </form>
<label for="inp_db_fullName" class="col-sm-2 col-form-label">full name</label> -->
<div class="col-sm-4"> </div>
<input type="text" class="form-control" id="inp_db_fullName" name="db_fullName" aria-describedby="inp_db_fullName_help" placeholder="Enter full name"> <form id="pouchconnectform1">
</div> <div class="form-group mb-3 row">
<label for="inp_db_fullName" class="col-sm-2 col-form-label">full name</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="inp_db_fullName" name="db_fullName" aria-describedby="inp_db_fullName_help" placeholder="Enter full name" required="">
</div> </div>
<div class="form-group mb-3 row"> </div>
<label for="inp_db_licenseNumber" class="col-sm-2 col-form-label">license number</label> <div class="form-group mb-3 row">
<div class="col-sm-4"> <label for="inp_db_licenseNumber" class="col-sm-2 col-form-label">license number</label>
<input type="text" class="form-control" id="inp_db_licenseNumber" name="db_licenseNumber" aria-describedby="inp_db_licenseNumber_help" placeholder="Enter license number"> <div class="col-sm-9">
</div> <input type="text" class="form-control" id="inp_db_licenseNumber" name="db_licenseNumber" aria-describedby="inp_db_licenseNumber_help" placeholder="Enter license number" required="">
</div> </div>
<div class="form-group mb-3 row"> </div>
<label for="db_stateIssue" class="col-sm-2 col-form-label">state issue</label> <div class="form-group mb-3 row">
<div class="col-sm-4"> <label for="db_stateIssue" class="col-sm-2 col-form-label">state issue</label>
<select id="db_stateIssue" class="form-select" dmx-bind:options="stateJSON.data.states" optiontext="name" optionvalue="abbreviation" name="db_stateIssue" dmx-bind:value="selectedValue"> <div class="col-sm-9">
</select> <select id="db_stateIssue" class="form-select" dmx-bind:options="stateJSON.data.states" optiontext="name" optionvalue="abbreviation" name="db_stateIssue" dmx-bind:value="selectedValue">
</div> </select>
<div class="col-6 text-start"> </div>
<small id="bs5-form-group-help1" class="form-text text-muted">State your license was issued by</small> </div>
</div> <div class="form-group mb-3 row">
<label for="select1" class="col-sm-2 col-form-label">Trainer</label>
<div class="col-9">
<select id="select1" class="form-select" dmx-bind:options="trainerJSON.data.Trainer" name="db_employeeID" optiontext="Name" optionvalue="ID" dmx-bind:value="selectedValue">
</select>
</div> </div>
<div class="form-group mb-3 row">
<label for="select1" class="col-sm-2 col-form-label">Trainer</label>
<div class="col-4">
<select id="select1" class="form-select" dmx-bind:options="trainerJSON.data.Trainer" name="db_employeeID" optiontext="Name" optionvalue="ID" dmx-bind:value="selectedValue">
</select>
</div>
</div>
<div class="form-group mb-3 row">
<label for="inp_owner" class="col-sm-2 col-form-label">Date</label>
<div class="col-sm-5">
<input type="text" class="form-control" id="inp_owner" name="owner" aria-describedby="inp_owner_help" placeholder="Date" dmx-bind:value="DateTimeNow.datetime.formatDate('MM-dd-yyyy')" readonly="true">
</div> </div>
<div class="form-group mb-3 row"> </div>
<label for="inp_owner" class="col-sm-2 col-form-label">Date</label> <div class="form-group mb-3 row">
<div class="col-sm-4"> <div class="col align-self-center">
<input type="text" class="form-control" id="inp_owner" name="owner" aria-describedby="inp_owner_help" placeholder="Date" dmx-bind:value="DateTimeNow.datetime.formatDate('MM-dd-yyyy')" readonly="true" is="dmx-date-picker" mindate="2024-12-01" maxdate="2025-12-31"> <div class="row">
</div> <div class="col-6 offset-1">
</div> <button id="btn2" class="btn text-start">Encoded signature Data</button>
<div class="form-group mb-3 row">
<div class="col align-self-center">
<div class="row">
<div class="col">
<button id="btn2" class="btn">View</button>
</div>
</div> </div>
</div> </div>
<div class="col-sm-9">
<textarea id="db_signatureData" class="form-control" name="db_signatureData" dmx-bind:value="signatureDataEncoded" dmx-show="toggleSignatureDataEncoded.checked"></textarea>
</div>
</div> </div>
</form> <div class="col-sm-9">
</div> <textarea id="db_signatureData" class="form-control" name="db_signatureData" dmx-bind:value="signatureEncoded.value"></textarea>
<button id="btn1" class="btn btn-lg text-bg-primary text-warning fw-bold text-capitalize" data-bs-toggle="modal" data-bs-target="#SignatureModal1" dmx-bind:disabled="serverconnectform1.inp_db_fullName.value.isEmpty()||serverconnectform1.inp_db_licenseNumber.value.isEmpty()">Click for the next step&nbsp;</button> </div>
</div><button id="btn1" class="btn btn-lg text-bg-primary text-warning fw-bold text-capitalize" data-bs-toggle="modal" data-bs-target="#SignatureModal1">Click to Sign</button><button id="btn5" class="btn btn-lg text-warning fw-bold text-capitalize text-bg-success ms-4" data-bs-target="#SignatureModal1" dmx-on:click="pouchInsert.run();modalsuccess.show()" dmx-bind:disabled="inp_db_fullName.value.isEmpty()||inp_db_licenseNumber.value.isEmpty()">Save Everything</button>
<button id="btn6" class="btn" type="reset">reset</button>
</form>
</div>
</div>
<div class="align-self-center col-5">
<h4 dmx-hide="!pouchconnectform1.db_signatureData.value.isEmpty()">Pending Signature Preview</h4>
<div class="row">
<img width="150" height="100" class="bg-warning-subtle" dmx-bind:data-srcset="" dmx-bind:data-src="pouchconnectform1.db_signatureData.value" dmx-bind:src="signatureEncoded.value" dmx-show="!pouchconnectform1.db_signatureData.value.isEmpty()">
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="container"> <div class="container" dmx-show="toggleRecordsTable.checked">
<table class="table table-striped table-sm">
<thead>
<tr>
<th></th>
<th>full name</th>
<th>license number</th>
<th>Date</th>
<th>signature data</th>
<th>trainer&nbsp;</th>
<th>state&nbsp;</th>
<th>Dummy1</th>
</tr>
</thead>
<tbody is="dmx-repeat" dmx-generator="bs5table" dmx-bind:repeat="pouchdbview1.data" id="tableRepeat3">
<tr>
<td dmx-text="_id"></td>
<td dmx-text="db_fullName"></td>
<td dmx-text="db_licenseNumber"></td>
<td dmx-text="db_employeeID"></td>
<td dmx-text="db_signatureData.substring(0, 15)">
</td>
<td dmx-text="db_trainerSelected"></td>
<td dmx-text="db_stateName"></td>
<td dmx-text="dummy1"></td>
</tr>
</tbody>
</table>
</div> </div>

View File

@ -53,6 +53,14 @@
<link rel="stylesheet" href="/dmxAppConnect/dmxDatePicker/bgthemes/bootstrap.css" /> <link rel="stylesheet" href="/dmxAppConnect/dmxDatePicker/bgthemes/bootstrap.css" />
<script src="https://cdn.jsdelivr.net/npm/pouchdb@8.0.1/dist/pouchdb.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/pouchdb@8.0.1/dist/pouchdb.find.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/pouchdb@8.0.1/dist/pouchdb.indexeddb.min.js" defer></script>
<script src="/dmxAppConnect/dmxPouchDB/dmxPouchDB.js" defer></script>
<script src="/js/connections/dbCouch.js" defer></script>
<script src="/dmxAppConnect/dmxLazyLoad/dmxLazyLoad.js" defer></script>
<script src="/dmxAppConnect/dmxLazyLoad/lazysizes.min.js" defer></script>
<script src="/dmxAppConnect/dmxBootstrap5Alert/dmxBootstrap5Alert.js" defer></script>
</head> </head>
<body is="dmx-app" id="main"> <body is="dmx-app" id="main">

View File

@ -1,4 +1,39 @@
<!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="observationPage" appConnect="local" components="{dmxBootstrap5TableGenerator:{},dmxMasonry:{},dmxFormatter:{},dmxBootstrap5Popovers:{},dmxBootstrap5Toasts:{},dmxDataTraversal:{},dmxStateManagement:{},dmxDatastore:{},dmxValidator:{},dmxBootstrap5Offcanvas:{},dmxBootstrap5Modal:{},dmxBootstrap5Navigation:{},dmxBootstrap5Tooltips:{},dmxBootbox5:{},dmxNotifications:{}}" --> <!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="observationPage" appConnect="local" components="{dmxBootstrap5TableGenerator:{},dmxMasonry:{},dmxFormatter:{},dmxBootstrap5Popovers:{},dmxBootstrap5Toasts:{},dmxDataTraversal:{},dmxStateManagement:{},dmxDatastore:{},dmxValidator:{},dmxBootstrap5Offcanvas:{},dmxBootstrap5Modal:{},dmxBootstrap5Navigation:{},dmxBootstrap5Tooltips:{},dmxBootbox5:{},dmxNotifications:{},dmxPouchDB:{},dmxBootstrap5Alert:{}}" -->
<div class="modal" id="saveObservationResults" is="dmx-bs5-modal" tabindex="-1">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Finalize and Save Observation Record</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div id="conditional1" is="dmx-if">
<div class="alert" id="alert1" is="dmx-bs5-alert" role="alert" show="true" type="danger">
<p>The data is outdated. Please click REFRESH</p><button id="btn3" class="btn btn-secondary" dmx-on:click="pouchdbdetail1.refresh()">REFRESH DATA</button>
</div>
</div>
<p>Modal body text goes here.</p>
<form id="form2">
<div class="form-group mb-3 row">
<label for="input1" class="col-sm-2 col-form-label">FN</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="input1" name="input1" aria-describedby="input1_help" placeholder="Full Name" dmx-bind:value="pouchdbdetail1.data.db_fullName">
<small id="input1_help" class="form-text text-muted">Your input is very valuable.</small>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
<div is="dmx-pouchdb-detail" id="pouchdbdetail1" dmx-bind:docid="select1.value" db="dbCouch" collection="da"></div>
<div is="dmx-pouchdb-view" id="pouchdbview1" db="dbCouch" collection="da"></div>
<dmx-pouchdb id="pouchdb1" db="dbCouch"></dmx-pouchdb>
<dmx-notifications id="notifies1" closable="true" timeout="3000"></dmx-notifications> <dmx-notifications id="notifies1" closable="true" timeout="3000"></dmx-notifications>
<dmx-serverconnect id="serverconnect_signature" url="/api/uploadSignature" noload="true"></dmx-serverconnect> <dmx-serverconnect id="serverconnect_signature" url="/api/uploadSignature" noload="true"></dmx-serverconnect>
<div class="modal" id="modalTestButton" is="dmx-bs5-modal" tabindex="-1"> <div class="modal" id="modalTestButton" is="dmx-bs5-modal" tabindex="-1">
@ -59,6 +94,30 @@
args: ["/PDF/testpdf.pdf", "{{datastore1.data}}", "{{data_view1.data}}"] args: ["/PDF/testpdf.pdf", "{{datastore1.data}}", "{{data_view1.data}}"]
} }
}</script> }</script>
<div class="container" id="navContainer">
<nav class="navbar navbar-expand-lg">
<span class="navbar-text bg-opacity-25">Controls</span>
<div id="collapse1" class="collapse navbar-collapse">
<div class="nav w-100">
<a class="nav-item nav-link" href="#" onclick="runMyFunction()">Link</a>
<a class="nav-item nav-link placeholder-glow" data-bs-toggle="offcanvas" data-bs-target="#offcanvas1" internal="true">Settings</a>
<a class="nav-item nav-link" href="#" data-bs-toggle="modal" data-bs-target="#modal1">Print</a>
<a class="nav-item nav-link" href="#" dmx-on:click="flowClearPoints.run()">Save</a>
<a class="nav-item nav-link" href="#" dmx-on:click="processPDF.run()" dmx-hide="datastore1.data.isEmpty()">ProcessPDF</a>
<div class="nav-item dropdown"><a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" id="dropdown1" role="button" aria-haspopup="true" aria-expanded="false">Options</a>
<div class="dropdown-menu" aria-labelledby="dropdown1">
<a class="dropdown-item" href="#">Modal Test </a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</div>
</div><button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#collapse1" aria-controls="collapse1" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</nav>
</div>
<div class="container wappler-block pt-3 pb-3"> <div class="container wappler-block pt-3 pb-3">
<div class="modal" id="modal-success" is="dmx-bs5-modal" tabindex="-1" role="dialog"> <div class="modal" id="modal-success" is="dmx-bs5-modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
@ -110,6 +169,10 @@
<input class="form-check-input" type="checkbox" value="" id="CKBinput2" name="canvasCBShowHideSectionDetail"> <input class="form-check-input" type="checkbox" value="" id="CKBinput2" name="canvasCBShowHideSectionDetail">
<label class="form-check-label" for="CKBinput2">Hide Score detail</label> <label class="form-check-label" for="CKBinput2">Hide Score detail</label>
</div> </div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="CKBinput4" name="canvasCBShowHideSectionDetail">
<label class="form-check-label" for="CKBinput4">Hide Top Main panel</label>
</div>
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="CKBinput3" name="canvasCBShowHideSectionDetail"> <input class="form-check-input" type="checkbox" value="" id="CKBinput3" name="canvasCBShowHideSectionDetail">
<label class="form-check-label" for="CKBinput3">Show Section detail</label> <label class="form-check-label" for="CKBinput3">Show Section detail</label>
@ -129,34 +192,13 @@
<meta name="ac:route" content="/observationPage"> <meta name="ac:route" content="/observationPage">
<dmx-serverconnect id="scQuerySection" url="/api/qSection"></dmx-serverconnect> <dmx-serverconnect id="scQuerySection" url="/api/qSection"></dmx-serverconnect>
<div class="container border-primary border-2 border"> <div class="container border-primary border-2 border" id="mainPanel" dmx-hide="offcanvas1.CKBinput4.checked">
<nav class="navbar navbar-expand-lg">
<span class="navbar-text bg-opacity-25">Controls</span>
<div id="collapse1" class="collapse navbar-collapse">
<div class="nav w-100">
<a class="nav-item nav-link" href="#" onclick="runMyFunction()">Link</a>
<a class="nav-item nav-link placeholder-glow" data-bs-toggle="offcanvas" data-bs-target="#offcanvas1" internal="true">Settings</a>
<a class="nav-item nav-link" href="#" data-bs-toggle="modal" data-bs-target="#modal1">Print</a>
<a class="nav-item nav-link" href="#" dmx-on:click="flowClearPoints.run()">Save</a>
<a class="nav-item nav-link" href="#" dmx-on:click="processPDF.run()" dmx-hide="datastore1.data.isEmpty()">ProcessPDF</a>
<div class="nav-item dropdown"><a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" id="dropdown1" role="button" aria-haspopup="true" aria-expanded="false">Options</a>
<div class="dropdown-menu" aria-labelledby="dropdown1">
<a class="dropdown-item" href="#">Modal Test </a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</div>
</div><button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#collapse1" aria-controls="collapse1" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</nav>
<div class="row"> <div class="row">
<div class="col-3 align-self-center"> <div class="col-3 align-self-center">
<select id="select1" class="form-select" dmx-bind:options="qDB.data.query" optiontext="db_fullName" optionvalue="ID" dmx-bind:disabled="datastore1.data.hasItems()"> <select id="select1" class="form-select" optiontext="db_fullName.concat(' ').concat(_id)" optionvalue="_id" dmx-bind:disabled="datastore1.data.hasItems()" dmx-bind:options="pouchdbview1.data">
</select> </select>
@ -164,35 +206,43 @@
<div class="col"> <div class="col">
<table class="table table-striped table-sm"> <table class="table table-striped table-sm">
<thead> <thead>
<tr class="text-xl-center"> <tr>
<th>Name</th> <th>Name</th>
<th>License No.</th> <th>License No.</th>
<th>Issue State</th> <th>Issue State</th>
<th>Employee No.</th> <th>Employee No.</th>
<th>DATE</th>
</tr> </tr>
</thead> </thead>
<tbody is="dmx-repeat" dmx-generator="bs5table" dmx-bind:repeat="data_view1.data" id="tableRepeat4"> <tbody is="dmx-repeat" dmx-generator="bs5table" id="tableRepeat4" dmx-bind:repeat="data_view1.data">
<tr class="text-xl-center"> <tr>
<td dmx-text="db_fullName" dmx-bs-tooltip="('Record # '+ID)" data-bs-trigger="hover" data-bs-placement="top"></td> <td dmx-bs-tooltip="('Record # '+_id)" data-bs-trigger="hover" data-bs-placement="top" dmx-text="db_fullName"></td>
<td dmx-text="db_licenseNumber"></td> <td dmx-text="db_licenseNumber"></td>
<td dmx-text="db_stateIssue" dmx-class:bg-danger="db_stateIssue.isEmpty()"></td> <td dmx-class:bg-danger="db_stateName.isEmpty()" dmx-text="db_stateName"></td>
<td dmx-text="db_employeeID"></td> <td dmx-text="db_employeeID"></td>
<td dmx-text="owner"></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<dmx-data-view id="data_view1" dmx-bind:data="qDB.data.query" filter="ID==select1.value"></dmx-data-view> <dmx-data-view id="data_view1" dmx-bind:data="pouchdbview1.data" filter="_id==select1.value"></dmx-data-view>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<p>status messages: {{myResult}}</p> <div id="conditional2" is="dmx-if" dmx-bind:condition="pouchdbdetail1.stale">
<div class="alert" id="alert2" is="dmx-bs5-alert" role="alert">
<p>!!! Use this alert to show if its a stale db read and refresh</p>
</div>
</div>
<p>status messages: {{select1.value}}</p>
<div class="row">
<button id="btn2" class="btn bg-warning" data-bs-toggle="modal" data-bs-target="#saveObservationResults">Save ERT test results</button>
</div>
</div> </div>
<div class="col"> <div class="col">
<a><img width="450" height="125" dmx-bind:src="data_view1.data[0].db_SignatureData"></a> <a><img width="450" height="125" dmx-bind:src="data_view1.data[0].db_signatureData"></a>
</div> </div>
</div> </div>
<div class="row">
</div>
</div> </div>
<div class="container border rounded border-warning-subtle border-3 mb-md-3 pt-md-4 pb-md-4" id="btnMenu"> <div class="container border rounded border-warning-subtle border-3 mb-md-3 pt-md-4 pb-md-4" id="btnMenu">
@ -225,12 +275,12 @@
</div> </div>
<div class="container" dmx-show="toggle1.checked"> <div class="container" dmx-show="toggle1.checked">
<div class="row" dmx-hide="offcanvas1.CKBinput2.checked"> <div class="row" dmx-hide="offcanvas1.CKBinput2.checked">
<div class="col"> <div class="col-5">
<p class="fw-bold">The DT should fill out the evaluation form during the Enhanced Road Test based on the below points system and description. Every item in Section must have a score to be considered complete and valid; there should be no blank spaces. A DA candidate must have a score of total score 10 or lower to pass.</p> <p>The DT should fill out the evaluation form during the Enhanced Road Test based on the below points system and description. Every item in Section must have a score to be considered complete and valid; there should be no blank spaces. A DA candidate must have a score of total score 10 or lower to pass.</p>
</div> </div>
<div class="col"> <div class="col">
<table class="table table-striped"> <table class="table table-striped table-sm">
<thead class="table-primary"> <thead class="table-primary">
<tr> <tr>
<th scope="col">Tier</th> <th scope="col">Tier</th>
@ -259,6 +309,9 @@
</div> </div>
</div> </div>
<div class="row">
<textarea id="text2" class="form-control"></textarea>
</div>
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>

View File

@ -1,17 +1,13 @@
<!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="success" appConnect="local" components="{dmxStateManagement:{}}" --> <!-- Wappler include head-page="layouts/main" fontawesome_5="cdn" bootstrap5="local" is="dmx-app" id="success" appConnect="local" components="{dmxStateManagement:{}}" -->
<dmx-cookie-manager id="cookies1"></dmx-cookie-manager>
<meta name="ac:route" content="/success"> <meta name="ac:route" content="/success">
<div class="container wappler-block p-5"> <div class="container wappler-block p-5">
<div class="row">
<h1 class="text-center">User Identifier No.<br>{{cookies1.data.userIdentifier}}</h1>
</div>
<div class="row text-center p-5"> <div class="row text-center p-5">
<div class="col"> <div class="col">
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="150" fill="#51c42b" class="bi bi-check-circle-fill" viewBox="0 0 16 16"> <svg xmlns="http://www.w3.org/2000/svg" width="150" height="150" fill="#51c42b" class="bi bi-check-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"></path> <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"></path>
</svg> </svg>
<h1 class="mt-4">All Done<br>Thank you</h1> <h1 class="mt-4">All Done<br>Stay on this page<br>Wait for further instruction</h1>
<p class="lead">Thank you for filling out the forms. Your trainer will get with you when its your turn</p> <p class="lead">Thank you for filling out the forms.</p>
<a class="btn btn-primary" href="/">Return home</a> <a class="btn btn-primary" href="/">Return home</a>
</div> </div>
</div> </div>