197 lines
12 KiB
Plaintext
197 lines
12 KiB
Plaintext
######################################################################
|
|
Grab bag stuff that didn't fit into official TODO
|
|
and may not be worth doing or isn't urgent
|
|
######################################################################
|
|
|
|
todo: validation errors not expanded in errorbox,
|
|
for example saving a widget with same name results in proper display at name field but in error box says:
|
|
Validation error
|
|
ErrorAPI2200
|
|
I expect it to say the full errorapi2200 bit or simply "Validation error"
|
|
or, maybe it's ok as is?
|
|
|
|
|
|
todo: Attachments button should indicate attachments:
|
|
Flags hasattachments status visually, do it!
|
|
(Says add attachment when none)
|
|
|
|
|
|
|
|
todo: going to need some default views for certain lists that come with AyaNova automatically (even if migrating)
|
|
some lists may need a list of all but also a list of all relevant items only (part inventory?)
|
|
Views that supply common tasks or functionality that was in v7 in another way
|
|
perhaps need a case to consolidate that under or maybe add the views during development?
|
|
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: consider that a picklist could come in separate versions that are most appropriate to their area
|
|
so a PO might show a different part list than a wo etc
|
|
not sure if sustainable as the system just expects one picklist per ayatype, but it could be tied into the variant or
|
|
maybe needs additional hint
|
|
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: document "variants" for picklists somewhere in the API docs
|
|
UserPickList inside, outside
|
|
UnitPickList customerid:333
|
|
|
|
todo: erasedatabase for import causes a conflict with client cached settings like lxistview etc
|
|
Noticed it when v8 migrate and superuser account getting error about missing datalxistview 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 |