Add PocketBase login, first-sign-in password changes, account settings, and user activation, reactivation and deletion with self-removal guards. Protect application pages and APIs and keep private pages out of PWA caches. Resolve plant locations from site assignments and improve map controls, profit chart views, navigation and mobile table layouts. Validation: production build and TypeScript passed; 28 unit tests passed. Backend access integration tests and mobile verification are documented.
475 lines
No EOL
8.8 KiB
JSON
475 lines
No EOL
8.8 KiB
JSON
[
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 5,
|
|
"wideTables": [],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/settings",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 9,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/plant/map",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 137,
|
|
"wideTables": [],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/income",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 47,
|
|
"wideTables": [],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/income/invoices",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 15,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/expenses",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 12,
|
|
"wideTables": [],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/expenses/finance",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 5,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/expenses/personnel",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 5,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/expenses/petty-cash",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 5,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/expenses/rent",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 5,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/expenses/subscriptions",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 5,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/expenses/vehicles",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 5,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/overheads",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 4,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
},
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
},
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
},
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
},
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
},
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
},
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/charts",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 10,
|
|
"wideTables": [],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/sites",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 17,
|
|
"wideTables": [],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/sites/5we0qrj6jdb15sz",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 8,
|
|
"wideTables": [],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/plant",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 11,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 812,
|
|
"overflow": false,
|
|
"route": "/running",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 49,
|
|
"wideTables": [],
|
|
"width": 375
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 6,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/settings",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 14,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/plant",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 12,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/plant/map",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 138,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/income",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 49,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/income/invoices",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 16,
|
|
"wideTables": [
|
|
{
|
|
"contained": true,
|
|
"scrollAffordance": true,
|
|
"stickyFirstColumn": true,
|
|
"touchScroll": true
|
|
}
|
|
],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/running",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 51,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/expenses",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 13,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/expenses/finance",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 6,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/expenses/personnel",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 6,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/expenses/petty-cash",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 6,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/expenses/rent",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 6,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/expenses/subscriptions",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 6,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/expenses/vehicles",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 6,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/overheads",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 5,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/charts",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 11,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/sites",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 19,
|
|
"wideTables": [],
|
|
"width": 768
|
|
},
|
|
{
|
|
"height": 1024,
|
|
"overflow": false,
|
|
"route": "/sites/5we0qrj6jdb15sz",
|
|
"smallTaps": [],
|
|
"smallText": [],
|
|
"tapCount": 9,
|
|
"wideTables": [],
|
|
"width": 768
|
|
}
|
|
] |