Files
raven-client/ayanova/devdocs/rando-todo.txt
2020-12-10 18:03:00 +00:00

170 lines
11 KiB
Plaintext

Grab bag stuff that didn't fit into official TODO
todo: Look for english text at server and client source code and change it all to translation keys
todo: Users / Contacts lists not reportable from main UI
not using regular DataList for user lists and contact lists?
currently not reportable as a list easily since not a GZDataList but could probably rectify that even without switching to datalist
likely just a bit of code required to enable it
todo: PROBABLY NOT REQUIRED SEE BOTTOM LINE BELOW: missing feature, can't filter widgetlist by User due to no UserList being available
Is this meant to be text only filter and we have no id filter system?
How hard to add proper list selection and ID because it seems important?
thoughts:
I think it might be possible to do this, but may not be desireable to do this:
Right now it assumes user is filtering by name which is useful and easy in some ways
if it was by ID that's pretty specific and not necessarily better for the user
it's better that they can select by click
but it's limiting in that they can't type "Ford*" and get all items that start with "Ford " i.e. all Ford dealers
but if they want a specific ford dealer they can type "Ford Nashville Center" or whatever and get that specfic one
## BOTTOM LINE: the text filter works perfectly even for filtering widgets by user name and you can do starts with etc so easy peasy, I don't see the need for this
possible implementation:
it appears that the server code filter criteria builder is built with this in mind (see below)
so it may be a case of changing DataList field definitions like this one:
FieldDefinitions.Add(new AyaDataListFieldDefinition
{
TKey = "WidgetName",
FieldKey = "widgetname",
AyaObjectType = (int)AyaType.Widget,
UiFieldDataType = (int)UiFieldDataType.Text,
SqlIdColumnName = "awidget.id",
SqlValueColumnName = "awidget.name",
IsRowId = true
});
to uiFieldDataType = InternalId instead and some fixup at the client datagrid to support that as a text view column.
For now I'm going to leave it as is, it's not the end of the world to have to redefine it (though post release it might get ugly)
Server:datalistsqlcriteriafilterbuilder:
//prep for possible ID field filter instead
string columnNameToFilter = string.Empty;
UiFieldDataType DataTypeToFilter = UiFieldDataType.NoType;
//Check if filtering by ID rather than by name
//this is indicated by this column being an id type
//and by the comparison operator being eq or neq
//and the value being a number not a string
if (DataListField.HasIdColumn() && IsPossibleIdValue && (opType == DataListFilterComparisonOperator.Equality || opType == DataListFilterComparisonOperator.NotEqual))
{
columnNameToFilter = DataListField.SqlIdColumnName;
DataTypeToFilter = UiFieldDataType.InternalId;
}
else
{
DataTypeToFilter = (UiFieldDataType)dataType;
columnNameToFilter = DataListField.GetSqlValueColumnName();
}
todo: VUE / VUETIFY ROADMAP RELEASES (Sept 23 2020 was put on hold as it appears vuetify is way behind so looking like post release but check again here)
Q1 2021 is vuetify v3
https://vuetifyjs.com/en/introduction/roadmap/
look at what's coming on the radar before release in the big libs I'm using at front end as well, i.e. new vue or vuetify major release etc
I would really like to release without a huge new migration looming over my head post release with potential breaking changes
Vue 3.x is about ready now or very shortly: https://v3.vuejs.org/guide/migration/introduction.html#overview
"The Composition API is purely additive and does not affect / deprecate any existing 2.x APIs. I"
looks like I can switch to vue 3 without code changes, at least when it comes to composition api
Vuetify 3.x is lagging way behind vue 3.x and doesn't appear to be even close so
Put front end newification on hold until it all shakes out, looks like post release`
todo: See if this has a use: as an aside there is a relative time formatter available which might be handy
does locale aware things like "5 days ago" or "8 years from now" etc
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat
todo: hide swagger logo and branding in api explorer
Is this really that important?
also, in the docs is a section specifically saying I should do something because I'm using newtonsoft json not microsoft built in
https://github.com/domaindrivendev/Swashbuckle.AspNetCore#systemtextjson-stj-vs-newtonsoft
https://github.com/domaindrivendev/Swashbuckle.AspNetCore
todo: keycodes mirror common menu options like save close back etc
Ok, half coded this then realized it would conflict with almost every browser and os combination plus whatever hotkey helper people have installed
https://stackoverflow.com/questions/3329420/what-are-cross-browser-and-cross-os-safe-keyboard-shortcuts-usable-for-web-appli
but, if I were to do it then this is how:
https://github.com/jaywcjlove/hotkeys
import hotkeys from "hotkeys-js";
//https://github.com/jaywcjlove/hotkeys/issues/115#issuecomment-654283151
Vue.prototype.$keys = hotkeys.noConflict(true);
todo: can I support keycodes for saving in AyaNova and other shit that are the same as in v7 or as much as possible, i.e. ctrl-s to save (or whatever was defined)
watch out the report editor uses a bunch of hotkeys pre-defined
What v7 used to support:
f1 - help, case (Keys.Alt | Keys.X) //Close form, alt-w new workorder, alt-m new pm workorder, alt-q new quote, alt-c new client, alt-u new unit, alt-p new part, ctrl-alt-g grid criteria for development,
IMPORTANT / DO THIS: insert date and time (localized) as text anywhere with a key combo
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1514
todo: service workers for monaco going in root of website folder, must be a config setting to move it into the proper place (not there)
couldn't find anything about it, may need to post to ask, it's not the end of the world but kind of stupid looking as all the rest of the js is in subfolder
https://github.com/microsoft/monaco-editor-webpack-plugin/issues/126
awaiting reply, if nothing by the time I get here then delete and wait for email notification or if I care enough again to bother with it (cosmetic)
todo: consider feature to set server to always use a pre-set browser locale settings and not the ones in the browse itself
Scenario is user in another country but needs to login and work with central server?
server - wide
User specific
YAGNI / TTM?
todo: REPORTING bits and pieces
- page breaks properly EXAMPLE NEEDED
this is the current CSS property, not the one jsreport was using: https://developer.mozilla.org/en-US/docs/Web/CSS/break-before
There are many options including ones for columns and some to prevent page breaks splitting up blocks.
<div style="break-before: page;">
<h2>{{ Name }}</h2>
<div>Notes: <span class='example'>{{ Notes }}</span></div>
</div>
old jsreport ref: https://playground.jsreport.net/w/admin/dI2_fUqZ (for example this sample report shows <div style="page-break-before: always;"></div> which is interesting)
- print properties in css ref: https://www.tutorialspoint.com/css/css_print_references.htm
@page https://developer.mozilla.org/en-US/docs/Web/CSS/@page
- custom extra javascript functions EXAMPLE NEEDED
actually there's nothing really to this, just define function outside of the prepare block and it's there to use
- Mailing labels
if a hassle can skip, it's an unusual thing probably today and users could export to open office then print or whathaveyou
- Alternate paper sizes A4, Letter etc
https://developer.mozilla.org/en-US/docs/Web/CSS/@page/size
Also note that can pass on pdf render options to the puppeteer pdf rendering code which include
http://www.puppeteersharp.com/api/PuppeteerSharp.PdfOptions.html
- Helper for datalist filter human readable
also useful for the UI of the datalist as well
- readable errors:
https://stackoverflow.com/questions/56959242/how-do-i-get-readable-browser-page-errors-out-of-puppeteer-sharp
todo: notification queue? Is there a need for a form where can see all queued notifications and delete them or something in case of issues?
or maybe just a single clear it all out button?\
todo: datetime controls, would be nice to add a More menu | that can be used to
pick date ranges like if it's a start date it can quickly be used to pick the first day last month or
last day of a pre-set range from our already defined date range choices for grid filters
some of the 3rd party date pickers were like that
todo: ON HOLD TIL LATER Lagging typing in name field on customize form for data grid filter
Giving up on this for now, but noticed the following:
No exceptions or errors just regular processing
On a lighter grid with less columns it's much faster so the column count contributes majorly
If I remove the v-model binding from the name control it types fast so it's the recalc going on from the model change
TO TRY LATER:
More computed property usage (if any now) and less methods because functions run on every change wherease computed are not if not necessary
methods are going to be slower than computed properties theoretically
Pick through and replace function calls in UI with computed properties bit by bit and see what happens
Several collections bound to array in data object, is that array changing on typing text? Triggering something?
Should it be bound to a computed getter instead of directly to the data object?
todo: erasedatabase for import causes a conflict with client cached settings like listview etc
Noticed it when v8 migrate and superuser account getting error about missing datalistview when reviewing imported data
was easy to just switch to the default view and force it to reset for that grid so not life or death issue for sure
Client needs to also erase it's cache, but how will it know?
Maybe not a significant issue, if needs addressing look into a flag of some kind, maybe a version match or something
but considering how rare this would be outside of onboarding etc I'm inclined to maybe say fuck it.
Best solution probably when client sees something it expects to be at server is missing to trigger a reset process