diff --git a/public-typescript/main.js b/public-typescript/main.js index 5d694200..333c9113 100644 --- a/public-typescript/main.js +++ b/public-typescript/main.js @@ -330,9 +330,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); 'Displaying ' + (offset + 1).toString() + ' to ' + - Math.min(count, limit + offset) + + Math.min(count, limit + offset).toString() + ' of ' + - count + + count.toString() + '' + '') + ('
' + diff --git a/public-typescript/main.ts b/public-typescript/main.ts index 798bc558..470746a0 100644 --- a/public-typescript/main.ts +++ b/public-typescript/main.ts @@ -440,9 +440,9 @@ declare const bulmaJS: BulmaJS 'Displaying ' + (offset + 1).toString() + ' to ' + - Math.min(count, limit + offset) + + Math.min(count, limit + offset).toString() + ' of ' + - count + + count.toString() + '
' + '') + ('
' + diff --git a/public/javascripts/main.min.js b/public/javascripts/main.min.js index 4d9e3ac9..e7b13b31 100644 --- a/public/javascripts/main.min.js +++ b/public/javascripts/main.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{let e=!1;function t(){return e}function s(e){const t=e.currentTarget.closest(".field").querySelector("input, select");if(t.classList.remove("is-readonly"),"INPUT"===t.tagName)t.readOnly=!1,t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()}const a={type:"date",dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info",displayMode:"dialog"};const o=Object.freeze({Map:cityssm.escapeHTML(exports.aliases.map),map:cityssm.escapeHTML(exports.aliases.map.toLowerCase()),Maps:cityssm.escapeHTML(exports.aliases.maps),maps:cityssm.escapeHTML(exports.aliases.maps.toLowerCase()),Lot:cityssm.escapeHTML(exports.aliases.lot),lot:cityssm.escapeHTML(exports.aliases.lot.toLowerCase()),Lots:cityssm.escapeHTML(exports.aliases.lots),lots:cityssm.escapeHTML(exports.aliases.lots.toLowerCase()),Occupancy:cityssm.escapeHTML(exports.aliases.occupancy),occupancy:cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()),Occupancies:cityssm.escapeHTML(exports.aliases.occupancies),occupancies:cityssm.escapeHTML(exports.aliases.occupancies.toLowerCase()),Occupant:cityssm.escapeHTML(exports.aliases.occupant),occupant:cityssm.escapeHTML(exports.aliases.occupant.toLowerCase()),Occupants:cityssm.escapeHTML(exports.aliases.occupants),occupants:cityssm.escapeHTML(exports.aliases.occupants.toLowerCase()),ExternalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber),externalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber.toLowerCase()),OccupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate),occupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate.toLowerCase()),WorkOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate),workOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate.toLowerCase()),WorkOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate),workOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate.toLowerCase())}),c=["red","green","orange","blue","pink","yellow","purple"],n=["bright","light","dark"];const i=document.querySelector("main").dataset.urlPrefix;function r(e,t,s,a){return i+"/"+e+(t?"/"+t.toString():"")+(t&&s?"/edit":"")+(a?"/?t="+Date.now().toString():"")}const l={urlPrefix:i,apiKey:document.querySelector("main").dataset.apiKey,highlightMap:function(e,t,s){let a,o=t;for(;null===(a=e.querySelector("#"+o))&&o.includes("-");)o=o.slice(0,Math.max(0,o.lastIndexOf("-")));if(null!==a){a.style.fill="",a.classList.add("highlight","is-"+s);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=""}},initializeUnlockFieldButtons:function(e){const t=e.querySelectorAll(".is-unlock-field-button");for(const e of t)e.addEventListener("click",s)},initializeDatePickers:function(e){var t,s;const o=e.querySelectorAll("input[type='date']");for(const c of o){const o=Object.assign({},a);c.required&&(o.showClearButton=!1),""!==c.min&&(o.minDate=cityssm.dateStringToDate(c.min)),""!==c.max&&(o.maxDate=cityssm.dateStringToDate(c.max));const n=exports.bulmaCalendar.attach(c,o)[0];n.on("save",()=>{c.value=n.value(),c.dispatchEvent(new Event("change"))}),n.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),n.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const i=e.querySelector("#"+n._id),r=i.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add(`is-${null!==(t=a.color)&&void 0!==t?t:""}`),e.classList.remove("is-text");const l=i.querySelector(".datetimepicker-clear-button");null!==l&&(c.required?l.remove():(l.dataset.tooltip="Clear",l.setAttribute("aria-label","Clear"),l.innerHTML=''));const p=document.querySelector("label[for='"+c.id+"']");null!==p&&i.querySelector(".datetimepicker-dummy-input").setAttribute("aria-label",null!==(s=p.textContent)&&void 0!==s?s:"")}},populateAliases:function(e){const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Map":e.textContent=exports.aliases.map;break;case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}},escapedAliases:o,getRandomColor:function(e){let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:c[t.codePointAt(t.length-1)%c.length],luminosity:n[t.codePointAt(t.length-2)%n.length]})},setUnsavedChanges:function(){t()||(e=!0,cityssm.enableNavBlocker())},clearUnsavedChanges:function(){e=!1,cityssm.disableNavBlocker()},hasUnsavedChanges:t,getMoveUpDownButtonFieldHTML:function(e,t,s=!0){return`
\n
\n \n \n \n
\n
\n \n \n \n
\n
`},getLoadingParagraphHTML:function(e="Loading..."){return`

\n
\n ${cityssm.escapeHTML(e)}\n

`},getSearchResultsPagerHTML:function(e,t,s){return'
Displaying '+(t+1).toString()+" to "+Math.min(s,e+t)+" of "+s+'
'+(t>0?'
':"")+(e+t
':"")+"
"},getMapURL:function(e="",t=!1,s=!1){return r("maps",e,t,s)},getLotURL:function(e="",t=!1,s=!1){return r("lots",e,t,s)},getLotOccupancyURL:function(e="",t=!1,s=!1){return r("lotOccupancies",e,t,s)},getWorkOrderURL:function(e="",t=!1,s=!1){return r("workOrders",e,t,s)}};exports.los=l})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{let e=!1;function t(){return e}function s(e){const t=e.currentTarget.closest(".field").querySelector("input, select");if(t.classList.remove("is-readonly"),"INPUT"===t.tagName)t.readOnly=!1,t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()}const a={type:"date",dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info",displayMode:"dialog"};const o=Object.freeze({Map:cityssm.escapeHTML(exports.aliases.map),map:cityssm.escapeHTML(exports.aliases.map.toLowerCase()),Maps:cityssm.escapeHTML(exports.aliases.maps),maps:cityssm.escapeHTML(exports.aliases.maps.toLowerCase()),Lot:cityssm.escapeHTML(exports.aliases.lot),lot:cityssm.escapeHTML(exports.aliases.lot.toLowerCase()),Lots:cityssm.escapeHTML(exports.aliases.lots),lots:cityssm.escapeHTML(exports.aliases.lots.toLowerCase()),Occupancy:cityssm.escapeHTML(exports.aliases.occupancy),occupancy:cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()),Occupancies:cityssm.escapeHTML(exports.aliases.occupancies),occupancies:cityssm.escapeHTML(exports.aliases.occupancies.toLowerCase()),Occupant:cityssm.escapeHTML(exports.aliases.occupant),occupant:cityssm.escapeHTML(exports.aliases.occupant.toLowerCase()),Occupants:cityssm.escapeHTML(exports.aliases.occupants),occupants:cityssm.escapeHTML(exports.aliases.occupants.toLowerCase()),ExternalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber),externalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber.toLowerCase()),OccupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate),occupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate.toLowerCase()),WorkOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate),workOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate.toLowerCase()),WorkOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate),workOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate.toLowerCase())}),c=["red","green","orange","blue","pink","yellow","purple"],n=["bright","light","dark"];const i=document.querySelector("main").dataset.urlPrefix;function r(e,t,s,a){return i+"/"+e+(t?"/"+t.toString():"")+(t&&s?"/edit":"")+(a?"/?t="+Date.now().toString():"")}const l={urlPrefix:i,apiKey:document.querySelector("main").dataset.apiKey,highlightMap:function(e,t,s){let a,o=t;for(;null===(a=e.querySelector("#"+o))&&o.includes("-");)o=o.slice(0,Math.max(0,o.lastIndexOf("-")));if(null!==a){a.style.fill="",a.classList.add("highlight","is-"+s);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=""}},initializeUnlockFieldButtons:function(e){const t=e.querySelectorAll(".is-unlock-field-button");for(const e of t)e.addEventListener("click",s)},initializeDatePickers:function(e){var t,s;const o=e.querySelectorAll("input[type='date']");for(const c of o){const o=Object.assign({},a);c.required&&(o.showClearButton=!1),""!==c.min&&(o.minDate=cityssm.dateStringToDate(c.min)),""!==c.max&&(o.maxDate=cityssm.dateStringToDate(c.max));const n=exports.bulmaCalendar.attach(c,o)[0];n.on("save",()=>{c.value=n.value(),c.dispatchEvent(new Event("change"))}),n.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),n.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const i=e.querySelector("#"+n._id),r=i.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add(`is-${null!==(t=a.color)&&void 0!==t?t:""}`),e.classList.remove("is-text");const l=i.querySelector(".datetimepicker-clear-button");null!==l&&(c.required?l.remove():(l.dataset.tooltip="Clear",l.setAttribute("aria-label","Clear"),l.innerHTML=''));const p=document.querySelector("label[for='"+c.id+"']");null!==p&&i.querySelector(".datetimepicker-dummy-input").setAttribute("aria-label",null!==(s=p.textContent)&&void 0!==s?s:"")}},populateAliases:function(e){const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Map":e.textContent=exports.aliases.map;break;case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}},escapedAliases:o,getRandomColor:function(e){let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:c[t.codePointAt(t.length-1)%c.length],luminosity:n[t.codePointAt(t.length-2)%n.length]})},setUnsavedChanges:function(){t()||(e=!0,cityssm.enableNavBlocker())},clearUnsavedChanges:function(){e=!1,cityssm.disableNavBlocker()},hasUnsavedChanges:t,getMoveUpDownButtonFieldHTML:function(e,t,s=!0){return`
\n
\n \n \n \n
\n
\n \n \n \n
\n
`},getLoadingParagraphHTML:function(e="Loading..."){return`

\n
\n ${cityssm.escapeHTML(e)}\n

`},getSearchResultsPagerHTML:function(e,t,s){return'
Displaying '+(t+1).toString()+" to "+Math.min(s,e+t).toString()+" of "+s.toString()+'
'+(t>0?'
':"")+(e+t
':"")+"
"},getMapURL:function(e="",t=!1,s=!1){return r("maps",e,t,s)},getLotURL:function(e="",t=!1,s=!1){return r("lots",e,t,s)},getLotOccupancyURL:function(e="",t=!1,s=!1){return r("lotOccupancies",e,t,s)},getWorkOrderURL:function(e="",t=!1,s=!1){return r("workOrders",e,t,s)}};exports.los=l})(); \ No newline at end of file diff --git a/views/_footerA.ejs b/views/_footerA.ejs index 5676b7b3..6ad29010 100644 --- a/views/_footerA.ejs +++ b/views/_footerA.ejs @@ -1,32 +1,32 @@ @@ -34,8 +34,8 @@ diff --git a/views/_footerB.ejs b/views/_footerB.ejs index 15b90110..308b1d01 100644 --- a/views/_footerB.ejs +++ b/views/_footerB.ejs @@ -1,3 +1,2 @@ - diff --git a/views/_header.ejs b/views/_header.ejs index e1141696..f08b4fc9 100644 --- a/views/_header.ejs +++ b/views/_header.ejs @@ -2,114 +2,115 @@ - - - + + + - - <%= headTitle %>: <%= configFunctions.getProperty("application.applicationName") %> - + + <%= headTitle %>: + <%= configFunctions.getProperty("application.applicationName") %> + - " /> + " /> - - + + - -
" - data-is-admin="<%= user.userProperties.isAdmin ? "true" : "false" %>" - data-api-key="<%= user.userProperties.apiKey %>"> \ No newline at end of file +
" + data-is-admin="<%= user.userProperties.isAdmin ? "true" : "false" %>" + data-api-key="<%= user.userProperties.apiKey %>"> \ No newline at end of file diff --git a/views/_menu-admin.ejs b/views/_menu-admin.ejs index 16d922bb..e112e1cd 100644 --- a/views/_menu-admin.ejs +++ b/views/_menu-admin.ejs @@ -1,45 +1,45 @@ \ No newline at end of file diff --git a/views/_menu-workOrders.ejs b/views/_menu-workOrders.ejs index f35f755b..15357afa 100644 --- a/views/_menu-workOrders.ejs +++ b/views/_menu-workOrders.ejs @@ -1,41 +1,41 @@ \ No newline at end of file diff --git a/views/dashboard.ejs b/views/dashboard.ejs index df9ab0e5..f6fc3884 100644 --- a/views/dashboard.ejs +++ b/views/dashboard.ejs @@ -1,403 +1,404 @@ <%- include('_header'); -%>

- <%= configFunctions.getProperty("application.applicationName") %> + <%= configFunctions.getProperty("application.applicationName") %>

- <% if (workOrderMilestones.length > 0) { %> - <% const workOrderPrints = configFunctions.getProperty("settings.workOrders.prints"); %> -
-
-
-
-
-
-

- Today's Milestones -

-
-
-
-
- <%= workOrderMilestones.length %> -
-
-
-
- <% for (const milestone of workOrderMilestones) { %> -
-
-
- <% if (milestone.workOrderMilestoneCompletionDate) { %> - - - - <% } else { %> - - - - <% } %> -
-
- <% if (workOrderPrints.length > 0) { %> - - - - - - <% } %> - <% if (milestone.workOrderMilestoneTime) { %> - <%= milestone.workOrderMilestoneTimeString %>
- <% } %> - <% if (milestone.workOrderMilestoneTypeId) { %> - <%= milestone.workOrderMilestoneType %>
- <% } %> - - - <%= milestone.workOrderNumber %> -
- <% - if (milestone.workOrderLots.length > 0) { - for (const lot of milestone.workOrderLots) { - %> - - "> - <%= lot.lotName %> -
- <% - } - } - - if (milestone.workOrderLotOccupancies.length > 0) { - for (const occupancy of milestone.workOrderLotOccupancies) { - for (const occupant of occupancy.lotOccupancyOccupants) { - %> - - "> - <%= occupant.occupantName %> -
- <% - } - } - } - %> -
-
-
-
+ <% if (workOrderMilestones.length > 0) { %> + <% const workOrderPrints = configFunctions.getProperty("settings.workOrders.prints"); %> +
+
+
+
+
+
+

+ Today's Milestones +

+
+
+
+
+ <%= workOrderMilestones.length %> +
+
+
+
+ <% for (const milestone of workOrderMilestones) { %> +
+
+
+ <% if (milestone.workOrderMilestoneCompletionDate) { %> + + + + <% } else { %> + + + <% } %> +
+
+ <% if (workOrderPrints.length > 0) { %> + + + + + + <% } %> + <% if (milestone.workOrderMilestoneTime) { %> + <%= milestone.workOrderMilestoneTimeString %>
+ <% } %> + <% if (milestone.workOrderMilestoneTypeId) { %> + <%= milestone.workOrderMilestoneType %>
+ <% } %> + + + + <%= milestone.workOrderNumber %> +
+ <% + if (milestone.workOrderLots.length > 0) { + for (const lot of milestone.workOrderLots) { + %> + + "> + <%= lot.lotName %> +
+ <% + } + } + + if (milestone.workOrderLotOccupancies.length > 0) { + for (const occupancy of milestone.workOrderLotOccupancies) { + for (const occupant of occupancy.lotOccupancyOccupants) { + %> + + "> + <%= occupant.occupantName %> +
+ <% + } + } + } + %> +
+
-
- <% } %> -
-
-
-
-
-
-
- -
-
-
-
-
-

- Work Orders -

-
-
- <% if (workOrderCount > 0) { %> - - <% } %> -
-

View and maintain work orders.

-
-
-
- -
-
-
-
-
-
-
- -
-
-

- <%= configFunctions.getProperty("aliases.occupancies") %> -

-

View and maintain current and past - <%= configFunctions.getProperty("aliases.occupancies").toLowerCase() %>.

-
-
-
- <% if (user.userProperties.canUpdate) { %> - - <% } %> -
-
-
-
-
-
-
-
-
- -
-
-

- <%= configFunctions.getProperty("aliases.lots") %> -

-

View and maintain <%= configFunctions.getProperty("aliases.lots").toLowerCase() %> within a - <%= configFunctions.getProperty("aliases.map").toLowerCase() %>.

-
-
-
- <% if (user.userProperties.canUpdate) { %> - - <% } %> -
-
-
-
-
-
-
- -
-
-

- <%= configFunctions.getProperty("aliases.maps") %> -

-

View and maintain <%= configFunctions.getProperty("aliases.maps").toLowerCase() %>.

-
-
-
- <% if (user.userProperties.canUpdate) { %> - - <% } %> -
-
-
-
-
-
-
-
-
- -
-
-

- Report Library -

-

Produce reports and export data.

-
-
-
-
-
-
-
-
-
-
- -
-
-

- Help Documentation -

-

Instructions on how to use this application.

-
-
-
- -
-
-
- - <% if (user.userProperties.isAdmin) { %> -

Administrator Tools

- -
-
-
-
- -
-
-

- Fee Management -

-

- Manage fees for - <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> - <%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> - and specific - <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types. -

-
-
-
-
-
-
- -
-
-

- <%= configFunctions.getProperty("aliases.occupancy") %> Type Management -

-

- Manage - <%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> types, - the fields associated with them, - and their available print options. -

-
-
-
-
-
-
- -
-
-

- <%= configFunctions.getProperty("aliases.lot") %> Type Management -

-

- Manage - <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types - and fields associated with them. -

-
-
-
-
-
-
- -
-
-

- Config Table Management -

-

- Manage simple configuration tables fees for - work order types, - <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> statuses, - and <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> <%= configFunctions.getProperty("aliases.occupant").toLowerCase() %> types. -

-
-
-
-
-
-
- -
-
-

- Database Maintenance -

-

- Backup the database before making significant updates. - Permanently delete records that have been previously deleted from the database. -

-
-
-
- <% if (configFunctions.getProperty("application.ntfyStartup")) { %> -
-
-
- -
-
-

- Ntfy Startup Notification -

-

- Subscribe to application startup notifications on a phone or a desktop computer. -

-
-
-
- <% } %> -
+
<% } %> +
+ <% } %> +
+
+
+
+
+
+
+ +
+
+
+
+
+

+ Work Orders +

+
+
+ <% if (workOrderCount > 0) { %> + + <% } %> +
+

View and maintain work orders.

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+

+ <%= configFunctions.getProperty("aliases.occupancies") %> +

+

View and maintain current and past + <%= configFunctions.getProperty("aliases.occupancies").toLowerCase() %>.

+
+
+
+ <% if (user.userProperties.canUpdate) { %> + + <% } %> +
+
+
+
+
+
+
+
+
+ +
+
+

+ <%= configFunctions.getProperty("aliases.lots") %> +

+

View and maintain <%= configFunctions.getProperty("aliases.lots").toLowerCase() %> within a + <%= configFunctions.getProperty("aliases.map").toLowerCase() %>.

+
+
+
+ <% if (user.userProperties.canUpdate) { %> + + <% } %> +
+
+
+
+
+
+
+ +
+
+

+ <%= configFunctions.getProperty("aliases.maps") %> +

+

View and maintain <%= configFunctions.getProperty("aliases.maps").toLowerCase() %>.

+
+
+
+ <% if (user.userProperties.canUpdate) { %> + + <% } %> +
+
+
+
+
+
+
+
+
+ +
+
+

+ Report Library +

+

Produce reports and export data.

+
+
+
+
+
+
+
+
+
+
+ +
+
+

+ Help Documentation +

+

Instructions on how to use this application.

+
+
+
+ +
+
+
+ + <% if (user.userProperties.isAdmin) { %> +

Administrator Tools

+ +
+
+
+
+ +
+
+

+ Fee Management +

+

+ Manage fees for + <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> + <%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> + and specific + <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types. +

+
+
+
+
+
+
+ +
+
+

+ <%= configFunctions.getProperty("aliases.occupancy") %> Type Management +

+

+ Manage + <%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> types, + the fields associated with them, + and their available print options. +

+
+
+
+
+
+
+ +
+
+

+ <%= configFunctions.getProperty("aliases.lot") %> Type Management +

+

+ Manage + <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types + and fields associated with them. +

+
+
+
+
+
+
+ +
+
+

+ Config Table Management +

+

+ Manage simple configuration tables fees for + work order types, + <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> statuses, + and <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> <%= configFunctions.getProperty("aliases.occupant").toLowerCase() %> types. +

+
+
+
+
+
+
+ +
+
+

+ Database Maintenance +

+

+ Backup the database before making significant updates. + Permanently delete records that have been previously deleted from the database. +

+
+
+
+ <% if (configFunctions.getProperty("application.ntfyStartup")) { %> +
+
+
+ +
+
+

+ Ntfy Startup Notification +

+

+ Subscribe to application startup notifications on a phone or a desktop computer. +

+
+
+
+ <% } %> +
+ <% } %> +
<%- include('_footerA'); -%> diff --git a/views/login.ejs b/views/login.ejs index 5a5c06ae..624380f7 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -2,95 +2,96 @@ ')"> - - Login: <%= configFunctions.getProperty("application.applicationName") %> - + + Login: + <%= configFunctions.getProperty("application.applicationName") %> + - - + + - " /> + " /> - + -
-
-
-
-
- " alt="" style="max-height:400px" /> -
-
-

- <%= configFunctions.getProperty("application.applicationName") %> -

-
- - +
+
+
+
+
+ " alt="" style="max-height:400px" /> +
+
+

+ <%= configFunctions.getProperty("application.applicationName") %> +

+ + + -
-
- <%= configFunctions.getProperty("application.userDomain") %>\ -
-
- -
-
-
- -
- - - - -
-
- <% if (useTestDatabases) { %> -
-

- Testing databases in use! -

-
- <% } %> -
-
- <% if (message !== "") { %> - - - - <%= message %> - <% } %> -
-
- -
-
- -
-
- Build <%= buildNumber %>
- Help - GitHub -
-
-
-
+
+
+ <%= configFunctions.getProperty("application.userDomain") %>\ +
+
+ +
+
+
+ +
+ + + + +
+
+ <% if (useTestDatabases) { %> +
+

+ Testing databases in use! +

+
+ <% } %> +
+
+ <% if (message !== "") { %> + + + + <%= message %> + <% } %> +
+
+ +
+
+ +
+
+ Build <%= buildNumber %>
+ Help + GitHub +
+
+
+
- - + + - \ No newline at end of file +