diff --git a/app/api/compress.json b/app/api/compress.json new file mode 100644 index 0000000..18cca0a --- /dev/null +++ b/app/api/compress.json @@ -0,0 +1,3 @@ +{ + "exec": {} +} \ No newline at end of file diff --git a/public/DSPlist.json b/public/DSPlist.json new file mode 100644 index 0000000..97ade16 --- /dev/null +++ b/public/DSPlist.json @@ -0,0 +1,52 @@ +{ + "DSPCompanies": [ + { + "dspShortCode": "ABHM", + "dspName": "Abraham" + }, + { + "dspShortCode": "CNSL", + "dspName": "CNS Logistics" + }, + { + "dspShortCode": "RBBT", + "dspName": "Ready Rabbit" + }, + { + "dspShortCode": "MICA", + "dspName": "Micaramy" + }, + { + "dspShortCode": "LULO", + "dspName": "Lumnious Logistics" + }, + { + "dspShortCode": "DADL", + "dspName": "Dennis and Dustin Trucking" + }, + { + "dspShortCode": "LQLG", + "dspName": "LQ Logistics" + }, + { + "dspShortCode": "KWIK", + "dspName": "KWIK Logistics" + }, + { + "dspShortCode": "TALE", + "dspName": "Talento" + }, + { + "dspShortCode": "RLLS", + "dspName": "Reliant" + }, + { + "dspShortCode": "ELKO", + "dspName": "ELKO Logistics" + }, + { + "dspShortCode": "SMGS", + "dspName": "Smart Motion" + } + ] +} \ No newline at end of file diff --git a/public/PDF/PDFDemo-2.pdf b/public/PDF/PDFDemo-2.pdf deleted file mode 100644 index 8589a9b..0000000 Binary files a/public/PDF/PDFDemo-2.pdf and /dev/null differ diff --git a/public/PDF/PDFdemo.pdf b/public/PDF/PDFdemo.pdf deleted file mode 100644 index 28995a5..0000000 Binary files a/public/PDF/PDFdemo.pdf and /dev/null differ diff --git a/public/PDF/ertff_template_1.pdf b/public/PDF/ertff_template_1.pdf new file mode 100644 index 0000000..5d7cacc Binary files /dev/null and b/public/PDF/ertff_template_1.pdf differ diff --git a/public/assets/ertff_template_1.pdf b/public/assets/ertff_template_1.pdf new file mode 100644 index 0000000..d87ea0c Binary files /dev/null and b/public/assets/ertff_template_1.pdf differ diff --git a/public/dmxAppConnect/config.js b/public/dmxAppConnect/config.js index 2859d47..9831047 100644 --- a/public/dmxAppConnect/config.js +++ b/public/dmxAppConnect/config.js @@ -79,6 +79,42 @@ dmx.config({ } ], "outputType": "array" + }, + "processPDF": { + "meta": [ + { + "name": "PDFprocess", + "type": "text" + } + ], + "local": {} + }, + "datastore1": [ + { + "type": "text", + "name": "db_fullName" + }, + { + "type": "text", + "name": "db_licenseNumber" + }, + { + "type": "text", + "name": "db_stateName" + }, + { + "type": "text", + "name": "db_employeeID" + } + ], + "minCalc": { + "meta": [ + { + "name": "CalculateMinutes", + "type": "text" + } + ], + "local": {} } } }); diff --git a/public/dmxAppConnect/dmxBootstrap5Collapse/dmxBootstrap5Collapse.js b/public/dmxAppConnect/dmxBootstrap5Collapse/dmxBootstrap5Collapse.js new file mode 100644 index 0000000..d9d6ac9 --- /dev/null +++ b/public/dmxAppConnect/dmxBootstrap5Collapse/dmxBootstrap5Collapse.js @@ -0,0 +1,8 @@ +/*! + App Connect Bootstrap 5 Collapse + Version: 2.0.1 + (c) 2024 Wappler.io + @build 2024-11-01 11:48:13 + */ +dmx.Component("bs5-collapse",{initialData:{collapsed:!0},attributes:{show:{type:Boolean,default:!1}},methods:{toggle(){this._instance.toggle()},show(){this._instance.show()},hide(){this._instance.hide()}},events:{show:Event,shown:Event,hide:Event,hidden:Event},init(s){s.classList.add("collapse"),s.addEventListener("show.bs.collapse",this.dispatchEvent.bind(this,"show")),s.addEventListener("shown.bs.collapse",this.dispatchEvent.bind(this,"shown")),s.addEventListener("hide.bs.collapse",this.dispatchEvent.bind(this,"hide")),s.addEventListener("hidden.bs.collapse",this.dispatchEvent.bind(this,"hidden")),s.addEventListener("shown.bs.collapse",this._shownHandler.bind(this)),s.addEventListener("hidden.bs.collapse",this._hiddenHandler.bind(this));const t={toggle:!1};s.hasAttribute("data-bs-parent")&&(t.parent=s.getAttribute("data-bs-parent")),this._instance=new bootstrap.Collapse(s,t),this._instance[this.props.show?"show":"hide"]()},destroy(){this._instance.dispose()},performUpdate(s){s.has("show")&&(this._instance[this.props.show?"show":"hide"](),this.set("collapsed",!this.props.show))},_shownHandler(){this.set("collapsed",!1)},_hiddenHandler(){this.set("collapsed",!0)}}); +//# sourceMappingURL=dmxBootstrap5Collapse.js.map diff --git a/public/dmxAppConnect/dmxBootstrap5Collapse/dmxBootstrap5Collapse.js.map b/public/dmxAppConnect/dmxBootstrap5Collapse/dmxBootstrap5Collapse.js.map new file mode 100644 index 0000000..206cb8d --- /dev/null +++ b/public/dmxAppConnect/dmxBootstrap5Collapse/dmxBootstrap5Collapse.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/collapse.js"],"names":["dmx","Component","initialData","collapsed","attributes","show","type","Boolean","default","methods","toggle","this","_instance","hide","events","Event","shown","hidden","init","node","classList","add","addEventListener","dispatchEvent","bind","_shownHandler","_hiddenHandler","options","hasAttribute","parent","getAttribute","bootstrap","Collapse","props","destroy","dispose","performUpdate","updatedProps","has","set"],"mappings":";;;;;;AAAAA,IAAAC,UAAA,eAAA,CAEAC,YAAA,CACAC,WAAA,GAGAC,WAAA,CACAC,KAAA,CACAC,KAAAC,QACAC,SAAA,IAIAC,QAAA,CACAC,SACAC,KAAAC,UAAAF,QACA,EAEAL,OACAM,KAAAC,UAAAP,MACA,EAEAQ,OACAF,KAAAC,UAAAC,MACA,GAGAC,OAAA,CACAT,KAAAU,MACAC,MAAAD,MACAF,KAAAE,MACAE,OAAAF,OAGAG,KAAAC,GACAA,EAAAC,UAAAC,IAAA,YAEAF,EAAAG,iBAAA,mBAAAX,KAAAY,cAAAC,KAAAb,KAAA,SACAQ,EAAAG,iBAAA,oBAAAX,KAAAY,cAAAC,KAAAb,KAAA,UACAQ,EAAAG,iBAAA,mBAAAX,KAAAY,cAAAC,KAAAb,KAAA,SACAQ,EAAAG,iBAAA,qBAAAX,KAAAY,cAAAC,KAAAb,KAAA,WAEAQ,EAAAG,iBAAA,oBAAAX,KAAAc,cAAAD,KAAAb,OACAQ,EAAAG,iBAAA,qBAAAX,KAAAe,eAAAF,KAAAb,OAEA,MAAAgB,EAAA,CAAAjB,QAAA,GAEAS,EAAAS,aAAA,oBACAD,EAAAE,OAAAV,EAAAW,aAAA,mBAGAnB,KAAAC,UAAA,IAAAmB,UAAAC,SAAAb,EAAAQ,GACAhB,KAAAC,UAAAD,KAAAsB,MAAA5B,KAAA,OAAA,SACA,EAEA6B,UACAvB,KAAAC,UAAAuB,SACA,EAEAC,cAAAC,GACAA,EAAAC,IAAA,UACA3B,KAAAC,UAAAD,KAAAsB,MAAA5B,KAAA,OAAA,UACAM,KAAA4B,IAAA,aAAA5B,KAAAsB,MAAA5B,MAEA,EAEAoB,gBACAd,KAAA4B,IAAA,aAAA,EACA,EAEAb,iBACAf,KAAA4B,IAAA,aAAA,EACA","file":"dmxBootstrap5Collapse.js","sourcesContent":["dmx.Component('bs5-collapse', {\r\n\r\n initialData: {\r\n collapsed: true\r\n },\r\n\r\n attributes: {\r\n show: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n toggle () {\r\n this._instance.toggle();\r\n },\r\n\r\n show () {\r\n this._instance.show();\r\n },\r\n\r\n hide () {\r\n this._instance.hide();\r\n }\r\n },\r\n\r\n events: {\r\n show: Event,\r\n shown: Event,\r\n hide: Event,\r\n hidden: Event\r\n },\r\n\r\n init (node) {\r\n node.classList.add('collapse');\r\n\r\n node.addEventListener('show.bs.collapse', this.dispatchEvent.bind(this, 'show'));\r\n node.addEventListener('shown.bs.collapse', this.dispatchEvent.bind(this, 'shown'));\r\n node.addEventListener('hide.bs.collapse', this.dispatchEvent.bind(this, 'hide'));\r\n node.addEventListener('hidden.bs.collapse', this.dispatchEvent.bind(this, 'hidden'));\r\n\r\n node.addEventListener('shown.bs.collapse', this._shownHandler.bind(this));\r\n node.addEventListener('hidden.bs.collapse', this._hiddenHandler.bind(this));\r\n\r\n const options = { toggle: false };\r\n\r\n if (node.hasAttribute('data-bs-parent')) {\r\n options.parent = node.getAttribute('data-bs-parent');\r\n }\r\n\r\n this._instance = new bootstrap.Collapse(node, options);\r\n this._instance[this.props.show ? 'show' : 'hide']();\r\n },\r\n\r\n destroy () {\r\n this._instance.dispose();\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('show')) {\r\n this._instance[this.props.show ? 'show' : 'hide']();\r\n this.set('collapsed', !this.props.show);\r\n }\r\n },\r\n\r\n _shownHandler () {\r\n this.set('collapsed', false);\r\n },\r\n\r\n _hiddenHandler () {\r\n this.set('collapsed', true);\r\n },\r\n\r\n});\r\n"]} \ No newline at end of file diff --git a/public/js/libProcessScript.js b/public/js/libProcessScript.js index e765240..b18c371 100644 --- a/public/js/libProcessScript.js +++ b/public/js/libProcessScript.js @@ -10,10 +10,12 @@ console.log("LIBRARY: libProcessScript.js") -//const path = FileSystemHandle.require('node:path') -let showLog = true; -const dd = createDebugLogger(showLog, "dd"); // code function at bottom of the page + + + + +const dd = createDebugLogger(true, "dd"); // code function at bottom of the page @@ -61,12 +63,15 @@ async function updatePdfFields( dataSources.forEach((dataSource) => { dataSource.forEach((record) => { Object.entries(record).forEach(([fieldName, fieldValue]) => { + try { const formField = form.getTextField(fieldName); if (formField) { + console.info(`Field "${fieldName}" OK`); dd(fieldName, "-->", fieldValue); formField.setText(String(fieldValue)); } else if (!skipMissingFields) { + //dd(`Skipping Field: ${fieldName} NOT FOUND`) console.warn(`Field "${fieldName}" not found.`); } } catch (err) { @@ -127,6 +132,8 @@ async function savePdfToFile(pdfBytes) { } function createDebugLogger(debug, prefix = "DD") { + + return function (message, ...optionalParams) { switch (debug) { diff --git a/public/js/timepicker.css b/public/js/timepicker.css new file mode 100644 index 0000000..e8d71fc --- /dev/null +++ b/public/js/timepicker.css @@ -0,0 +1,25 @@ +/* CSS Document */ + +.timepicker { + position: relative; + display: inline-block; +} + +.dropdown { + display: none; + position: absolute; + z-index: 10; + border: 1px solid #ddd; + background: white; + max-height: 150px; + overflow-y: auto; +} + +.dropdown div { + padding: 8px; + cursor: pointer; +} + +.dropdown div:hover { + background-color: #f0f0f0; +} diff --git a/public/js/timepicker.js b/public/js/timepicker.js new file mode 100644 index 0000000..cb5cb1a --- /dev/null +++ b/public/js/timepicker.js @@ -0,0 +1,33 @@ +// JavaScript Document + +const timeInput = document.getElementById('timeInput'); +const dropdown = document.getElementById('timeDropdown'); +const minuteInterval = 5 // Will interval of 5 min + +timeInput.addEventListener('click', () => { + dropdown.innerHTML = ''; // Clear previous options + dropdown.style.display = 'block'; + generateTimeOptions(); +}); + +document.addEventListener('click', (e) => { + if (!e.target.closest('.timepicker')) { + dropdown.style.display = 'none'; + } +}); + +function generateTimeOptions() { + for (let h = 0; h < 24; h++) { + for (let m = 0; m < 60; m += minuteInterval) { + const hour = h.toString().padStart(2, '0'); + const minute = m.toString().padStart(2, '0'); + const option = document.createElement('div'); + option.textContent = `${hour}:${minute}`; + option.addEventListener('click', () => { + timeInput.value = `${hour}:${minute}`; + dropdown.style.display = 'none'; + }); + dropdown.appendChild(option); + } + } +} diff --git a/views/index.ejs b/views/index.ejs index 450e840..03e725d 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -1,13 +1,14 @@ - +
+ \ No newline at end of file diff --git a/views/index0.ejs b/views/index0.ejs index 6f77a52..fd50cf7 100644 --- a/views/index0.ejs +++ b/views/index0.ejs @@ -42,8 +42,8 @@ }status messages: {{select1.value}}