738 lines
39 KiB
Plaintext
738 lines
39 KiB
Plaintext
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 4 - REPORTING / DASHBOARD / KPI
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
TODO: Users doesn't work anymore on remote
|
||
{"error":{"code":"2010","message":"Specified argument was out of the range of valid values. (Parameter 'DataList \"UserDataList\" specified does not exist')"}}
|
||
no error in UI at all either, just empty list!?
|
||
|
||
|
||
REPORTING
|
||
|
||
Useful links:
|
||
https://handlebarsjs.com/
|
||
Report templates pre-designed and open source: https://github.com/wildbit/postmark-templates
|
||
|
||
TODO: Works on other platforms
|
||
Do a distribution to linux and test
|
||
|
||
TODO: BASIC CAN REPORT OFF DATA WITH TEMPLATE ENGINE WORKING TESTS
|
||
|
||
Make a sample report with handlebars of each kind of report
|
||
Report off a single widget with handlebars
|
||
Report off a filtered widget list with handlebars
|
||
Report off a list with custom javascript functions for totals and subtotals
|
||
Report with logo
|
||
Go through v7 reports of all kinds and look for anything to test that I might have missed above or below
|
||
|
||
|
||
TODO: Confirm basics before coding
|
||
_Handlebars works properly
|
||
page breaks properly
|
||
I guess when it starts a new record in a big list of data or something i.e. in a list of widgets it starts a new page on a new widget
|
||
Wiki / Markdown renders prints
|
||
logo / graphics
|
||
_custom javascript functions
|
||
Shared javascript libs
|
||
Localization
|
||
_handlebars helpers
|
||
Localized dates and currency
|
||
Bar codes
|
||
Mailing labels
|
||
Alternate paper sizes A4, Letter etc
|
||
Reports on each type of data anticipated
|
||
Security of scripts / scrubbing or sandboxing
|
||
make sure can't access file system at server with a malicious report
|
||
logging
|
||
log errors, handlebars template errors, javascript errors etc
|
||
timeout
|
||
handle timeout waiting for report
|
||
|
||
SERVER render route actual:
|
||
template with content, script and style is retrieved
|
||
(for testing from default report in memory or whatever is easiest)
|
||
Datasource determined (for testing from report default)
|
||
render engine determined (for testing from report default)
|
||
locale determined (for testing from report default)
|
||
Render out and return
|
||
call render engine, provide report and data as one object I guess
|
||
check with jsreport source, what do they do for this?
|
||
return results to browser
|
||
|
||
CLIENT TODO HERE: Nothing at client until I get to here to save backtracking
|
||
TODO: Sample reports from client end with passed in data like any of the data-table based ui pages
|
||
TODO: Sample reports from client with actual objects
|
||
TODO: build the report designer at client end
|
||
Need to get to a point where Joyce can do testing and whip up some reports and give feedback on improving that
|
||
Confirm it won't load extra stuff unless user actually designs report
|
||
If not then make it an external app or alternate or whatever it takes
|
||
|
||
|
||
|
||
|
||
|
||
----------- REPORTING NOTES ----------------------
|
||
|
||
|
||
Assume headless chrome first for rendering, if it suffices then don't bother with other renderers unless it becomes necessary.
|
||
it's the most modern and probably supported long term way of doing the rendering and also easiest to grok for users since they develop in chrome should look the same or closest
|
||
|
||
|
||
TODO: Template engine / javascript test - Render a report off static data
|
||
Check how jsreport feeds javascript to their rendering process
|
||
https://github.com/jsreport/jsreport-core
|
||
https://github.com/jsreport/jsreport-core/blob/master/lib/render/engineScript.js
|
||
|
||
//actual render here
|
||
https://github.com/jsreport/jsreport-chrome-pdf/blob/d3fe318aac3628d8cb62f86f8f71314f21745798/lib/conversion.js
|
||
|
||
Design a simple report with static json data that exercises the template engine and javascript functions both shared and unique to the report
|
||
Excercise both handlebars and custom javascript and shared javascript
|
||
also css needs to be in there as well, just working, not necessarily correct or beautiful, just make sure it can work
|
||
|
||
Process:
|
||
handlebars compiles template
|
||
handlebars runs compiled template against data and generates HTML
|
||
Open HTML generated in headless and pdf it
|
||
return pdf
|
||
|
||
CLIENT UI
|
||
At client maybe pick output format first then select report, so can pick HTML to just view immediately, can pick pdf to download or print, can pick csv to export etc
|
||
|
||
|
||
|
||
REPORT TEMPLATE FORMAT
|
||
Report template is a db stored object with fields relating to various bits of the report design:
|
||
content - the html markup for the report
|
||
css - css style to apply to report
|
||
script - javascript methods to use with report
|
||
defaultlocale - default locale to render from
|
||
defaultDataAyType - default object type for this report when it's intended to report directly off an object
|
||
i.e. Widget type so all the report requires is an ID to render and it will fetch that and report it
|
||
defaultDataList - default dataListOptions values (saved datalist?)
|
||
can be subbed at runtime by giving alternate or this will just be the default
|
||
defaultData - static data saved with report like a json fragment or something
|
||
renderAsType - renderType (pdf, text, csv, etc this way the report is designed specifically for that type and if they want more than one they need to copy and modify)
|
||
How to include libs like labels etc?
|
||
I guess we have a curated set we include and for security and if they want something else they can just use a CDN script link
|
||
Need to vet those I guess
|
||
|
||
|
||
Data
|
||
Reports during render can be told to use ayaType and id, dynamic data list object or static data object passed directly into route
|
||
priority is aytype, direct data then datalist
|
||
can pass in a datalistoptions or actual data during render or if not specified then it looks to it's defaultDataList first, then to it's defaultData
|
||
if no data source specified then it could be just a blank template form for hand filling or something so just print it anyway
|
||
|
||
|
||
|
||
|
||
TODO:
|
||
Render route api
|
||
|
||
route:
|
||
report/render
|
||
parameters:
|
||
reporttemplateid
|
||
(any value in template having dynamic option? or just predefined?)
|
||
dataObjectId (if reporting directly off an object type then this is the id of the object to fetch)
|
||
dataListOptions object (optional, overrides data)
|
||
data (optional, json format, overriden by dataList if specified instead)
|
||
render (optional, defaults to default PDF renderer but can support other kinds, should support more than one of same kind i.e. pdf-chrome, pdf-weasy)
|
||
enum type renderType
|
||
pdf-chrome, pdf-weasy, text, excel, docx, html
|
||
localeHint (some kind of locale hint as to how to process dates and stuff or maybe this is in the report itself)
|
||
Actually, the report itself should contain the chosen localization stuff as it will be generated without a client involvement at times
|
||
so the designer would set this, maybe it follows the server or maybe we *do* send a hint but also the report has a default locale if none specified
|
||
hard coded
|
||
Process:
|
||
consolidates the data, report, checks rights, sanitizes report html / css using whatever tool is necessary (client should also do this)
|
||
renders document, perhaps in a queue system is best
|
||
|
||
returns:
|
||
like a download route, returns rendered document with correct mime type set
|
||
|
||
report object
|
||
Mix of javascript, html and css and some header shit
|
||
Columns:
|
||
id, content, css, js, version?(need version for future proofing when changes to designer or system ensue),
|
||
|
||
|
||
|
||
COMMERCIAL OPTIONS
|
||
=-=-=-=-=-=-=-=-=-
|
||
|
||
Look at stimulsoft again, see email, it appears I can buy a single developer and just distribute it with ayanova at will no extra royalties etc
|
||
|
||
|
||
|
||
|
||
ROLLING MY OWN
|
||
=-=-=-=-=-=-=-=-
|
||
|
||
DESIGN
|
||
Users will be able to design report templates inside AyaNova (unless it doesn't seperate as a bundle and bloats too much then maybe as an external app)
|
||
|
||
This is the jsreport designer libs used for reference: https://github.com/jsreport/jsreport-studio/blob/master/package.json
|
||
|
||
I will use the Monaco editor which is what vscode uses, here is a Vue wrapper:
|
||
https://github.com/egoist/vue-monaco
|
||
|
||
|
||
RENDER
|
||
Going to need to render at the server, possibly from data passed from teh client to the server or generated AT the server in the case of notification deliver reports
|
||
(Localization is a "black hole" issue if rendered AT the server)
|
||
Need to queue rendering, can't just spin up endless converters for every report
|
||
|
||
JSReport renders at server and returns result to client, the API docs show pretty clearly how this happens:
|
||
https://jsreport.net/learn/api
|
||
Note that the api docs also give some ideas as to how I should structure my api
|
||
|
||
HTML -> PDF
|
||
JSREPORT has a comparison table of various html to pdf tools here:
|
||
https://jsreport.net/learn/pdf-recipes
|
||
|
||
|
||
Headless Chrome
|
||
https://github.com/jsreport/jsreport-chrome-pdf
|
||
FAST SPEED (according to jsreport docs)
|
||
jsreport uses headless chrome by default which has built in pdf from html ability.
|
||
they use a NODE library Puppeteer for it, but there is a c# wrapper for .net core linux windows mac: https://github.com/hardkoded/puppeteer-sharp
|
||
some kind of example that may be relevant: https://github.com/kblok/netconfar-puppeteer-sharp-demo/blob/master/hacking-the-browser-api/Controllers/MediumController.cs#L13
|
||
Maybe not the only one for c# core, need to dig around
|
||
Issues:
|
||
Issue with header / footer not being settable apparently which is a big breaking issue for many biz reports usage
|
||
someone said that another pdf tool can be used to set those post processing but fuckery abounds
|
||
other solutions below apparently don't have this issue.
|
||
Even jsreport has listed workarounds and tools to resolve this
|
||
Update: apparently there are ways:
|
||
https://stackoverflow.com/questions/44575628/alter-the-default-header-footer-when-printing-to-pdf?noredirect=1&lq=1
|
||
see last comment seems relevant, also other linked cases all mention various things. Finally, could use a pdf writer tool to post process maybe.
|
||
|
||
There seem to be many potential issues with missing libraries, rights and sandbox and etc etc etc on linux
|
||
These things kind of turned me off this a bit, it's not plug and play and simple
|
||
|
||
|
||
LINKS:
|
||
https://github.com/hardkoded/puppeteer-sharp
|
||
https://github.com/puppeteer/puppeteer
|
||
https://stackoverflow.com/search?q=puppeteer-sharp
|
||
https://stackoverflow.com/questions/62042078/puppeteer-sharp-for-server-side-html-to-pdf-conversions
|
||
https://www.singlestoneconsulting.com/blog/how-to-generate-server-side-pdf-reports-puppeteer-d3-handlebars/
|
||
https://github.com/hardkoded/puppeteer-sharp/issues/1510 - shows being used by someone other than jsreport which buries all the details in endless libs
|
||
https://github.com/hardkoded/puppeteer-sharp/issues/1514
|
||
|
||
WeasyPrint
|
||
https://github.com/jsreport/jsreport-weasyprint-pdf
|
||
SLOWEST SPEED
|
||
https://github.com/Kozea/WeasyPrint based on python, does it's own rendering doesn't rely on a web browser engine like the rest
|
||
free, recommended by wkhtmltopdf author as an alternative
|
||
May be slow, slower than the other options likely, has some installation steps that are a bit convoluted but ironically only for windows as it's included in package managers
|
||
Very good support for modern css3 PAGE properties apparently
|
||
WRAPPER
|
||
https://github.com/balbarak/WeasyPrint-netcore/blob/master/src/Balbarak.WeasyPrint/WeasyPrintClient.cs
|
||
|
||
|
||
wkhtmltopdf
|
||
https://github.com/jsreport/jsreport-wkhtmltopdf
|
||
MEDIUM SPEED
|
||
https://wkhtmltopdf.org/downloads.html
|
||
Well used, old based on older webkit so doesn't support css3 but likely enough for our purposes
|
||
has an easy installer for all platforms
|
||
free
|
||
Has warnings about how unsanitized html can take down a server or own it somehow
|
||
WRAPPERS
|
||
https://github.com/carloscds/HtmlToPDFCore/tree/master/HtmlToPDFCore This one looks cool, all platforms supported includes binary possibly?
|
||
https://blog.elmah.io/generate-a-pdf-from-asp-net-core-for-free/
|
||
|
||
|
||
HTML -> DOCX
|
||
This is a possiblity that needs to be researched, instead of pdf go docx which is in theory multi platform and openable on other devices? Not sure
|
||
https://github.com/jsreport/jsreport-docx
|
||
https://github.com/EricWhiteDev/Open-Xml-PowerTools
|
||
|
||
HTML -> XLSX
|
||
https://github.com/jsreport/jsreport-xlsx
|
||
|
||
HTML -> TEXT
|
||
https://github.com/jsreport/jsreport-html-to-text
|
||
https://github.com/jsreport/jsreport-text
|
||
|
||
|
||
TEMPLATE ENGINE
|
||
https://github.com/jsreport/jsreport-handlebars
|
||
Handlebars by default for jsreport which is easy peasy to work with
|
||
|
||
PDF META DATA EDITING
|
||
https://github.com/jsreport/jsreport-pdf-meta
|
||
|
||
Render outputs
|
||
JSReport renders to different outputs, they call it recipes https://jsreport.net/learn/recipes
|
||
HTML - just outputs as html for viewing in the browser / printing from browser
|
||
PDF: https://jsreport.net/learn/pdf-recipes
|
||
Outputs 5 different pdf converters because they all support different feature sets which is ominous
|
||
|
||
"BLACK HOLES"
|
||
How to localize same as client but at server for dates and currency etc
|
||
maybe if it's rendering via a headless chrome can just pass the locale strings from the client browser or something along those lines
|
||
maybe since it's all one user generally in same zone they can just stick with one format for all reports?
|
||
|
||
Can I render at the client for some things or better to just go all server?
|
||
Does client send data back to server for render or ...?
|
||
=-=-=-=-
|
||
|
||
|
||
Research procedure:
|
||
REQUIREMENTS
|
||
Look at existing reports in v7 and generalize them and the features provided that are used
|
||
pdf, email, print, download
|
||
print / download / email / export immediately as an option no only preview and then those other things
|
||
custom fields must be available, perhaps as widgets that handle if they are present or hidden and etc
|
||
whatever is easiest from a design point of view
|
||
wiki must be a type of field like any other that can be inserted into a report and will properly render
|
||
this way they can make a report with only a wiki or a report with a hybrid data and wiki or whatever
|
||
and it flows with how the wiki is now just a field on the data object like any other
|
||
grid filter options and filter name must be an available field for report designer
|
||
probably need a filter summarizer widget that can also be used inside the UI at the top of grids as well
|
||
logo field with choice of size to correspond to the logo route
|
||
graphs and charts that show in UI should be printable / KPI Metrics stuff
|
||
labels wtf?
|
||
bar codes, holy fuck this looks good: https://github.com/metafloor/bwip-js used by jsreport too in sample
|
||
notification needs to be able to generate reports and send them
|
||
Schedule form reporting
|
||
keep in mind, but ultimately it's probably a dedicated schedule thing
|
||
|
||
test harness UI so can quickly test out things via widget list
|
||
if it's faster, just whip up some kind of standalone project for testing?
|
||
|
||
Once clear on needs, research solutions online
|
||
This case has a lot of old research in it:
|
||
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3451
|
||
look at commercial ones just to steal ideas
|
||
|
||
POTENTIAL STRATEGIES
|
||
HTML to PDF generated at the server then downloaded or viewed
|
||
JSREPORT commercial tool seems to do this and if you look at their samples in their designer it gives clues as to how we could do it ourselves
|
||
|
||
OPEN SOURCE TOO: https://github.com/jsreport
|
||
|
||
Their example playground for designing their sample reports shows exactly how they do it, it's like I imagined, templated like mustache / vue exactly
|
||
probably rendered to pdf need to dig more and the samples show exactly the types of css and html features needed to do reporting
|
||
https://playground.jsreport.net/w/admin/dI2_fUqZ (for example this sample report shows <div style="page-break-before: always;"></div> which is interesting)
|
||
|
||
The examples are golden for me if I want to go this route, they showcase solutions to literally all the problems I recall Joyce mentioning.
|
||
Here is how they describe the overall concept: " The original concept based on javascript templating engines and pdf converters has been proven in time by more than 200 000 downloads."
|
||
|
||
|
||
|
||
|
||
OPEN SOURCE TOOLS
|
||
JSREPORT it's fucking open source completely!!!
|
||
https://github.com/jsreport
|
||
I can just pore over it and get the gist of what I need
|
||
|
||
Definitely something here but not sure if it's appropriate or not:
|
||
https://github.com/FastReports/FastReport
|
||
They have commercial versions, not clear what this open source one is specifically in relation to the rest but it puports to be free and work on .net core
|
||
|
||
COMMERCIAL REPORTING TOOLS FOR REFERENCE / IDEAS
|
||
Seems as though they render on the server then just transport somehow to the client
|
||
maybe canvas, as an image, etc
|
||
https://www.telerik.com/blogs/using-telerik-reporting-in-net-core-applications
|
||
HTML, PDF and OpenXML-based renderings are supported on Linux/macOS.
|
||
uses GDI to draw to and requires a libgdiplus library for linux macos to replicate Windows method
|
||
Seems like it's not a step in the right direction as it's very Windows graphical in nature and they just try to throw a shim over it on linux
|
||
|
||
JSREPORT
|
||
https://playground.jsreport.net/w/admin/dI2_fUqZ
|
||
|
||
|
||
|
||
|
||
|
||
TODO: Report templates pre-designed and open source: https://github.com/wildbit/postmark-templates
|
||
|
||
|
||
|
||
todo: from reporting specs doc, not vetted, was written a while ago:
|
||
- All v7 reports ported to RAVEN
|
||
- ALL Fields even the ones that don't show on the report but are available for adding to a report in the editor need to be available
|
||
|
||
- REPORTS
|
||
- Report object has following properties:
|
||
- DataList name it's based off of
|
||
- Required fields from DataList
|
||
- Report template itself with it's own code and template requirements TBD
|
||
- Report columns returned: When user selects to show a report, client will fixup any missing columns from the datalistview currently in use
|
||
- For example they are viewing a table based on a TestWidgetDataList DataListview with only 3 columns in it
|
||
- They drop down the reports list which shows all reports based off TestWidgetDataList view
|
||
- They select a report to print.
|
||
- Report code looks at report's required fields from DatalistView and sees report uses 6 fields listed
|
||
- Code compares report fields to in use DataListview fields and appends any report required fields missing from current view to the right of the collection in the current DataListview
|
||
- When report is run it will have all fields this way returned but will still be sorted and filtered by table view
|
||
- As part of editing process user can select an existing datalistview to prime their report editing view
|
||
- A report can be selected from any client table that is based on the same view
|
||
|
||
|
||
TODO: Reporting datasources
|
||
Needs to be able to handle getting data from different types of sources and be cool with it
|
||
e.g. Some datatables with selections are directly off a server list, not the regular datalist
|
||
others are datalist
|
||
yet others may just be an array at client with no tie to server at all
|
||
IDEALLY: report code should just handle whatever data is thrown at it.
|
||
Maybe each type of data should have a property to indicate it's of a kind so the report code knows what to offer / handle with it
|
||
Reporting code needs to be flexible and just work with what it gets
|
||
|
||
todo: REPORTS v8 MIGRATE / EXPORT (CUSTOMIZED NOT STOCK) FROM v7? Try to see if plugin can export any aspect of reports
|
||
code behind?
|
||
even if just exported as comments in js for the new format just to have the formula's etc
|
||
basic layout, maybe as HTML?
|
||
anything that would help, even just the name of it and it's existence and a TODO in the middle is better than nothing at all
|
||
Any info to assist report designer with V8.
|
||
Be nice to see field list with translation for equivalent new.
|
||
|
||
todo: REPORTING wiki Download, open as pdf, email?
|
||
|
||
|
||
todo: REPORTING wiki in datalist?
|
||
- will need for reports but can't show in a grid, maybe it's available for something but can't be seen or filtered?
|
||
- shows in grid as basically a bool like has wiki or not but doesn't show any actual wiki?
|
||
- this is only to feed report, no other purpose to it.
|
||
|
||
|
||
Report templates pre-designed and open source: https://github.com/wildbit/postmark-templates
|
||
|
||
todo: Report editor for creating new report accessed from the report any **existing** reports preview form if have the rights.
|
||
- or maybe from the report selector dialog box if they have the rights, although would that fuck up navigation process?
|
||
- This seems better because, what if they can't preview a report for some reason, then they can never fix it or make a new one?
|
||
- NOT like v7 where accessed from the object edit form (this is to keep menu options down to a reasonable number)
|
||
- Every list sb reportable case https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3653
|
||
- Also search results and history? Can feed from UI level to report component?
|
||
- Reporting case with various things pertinent to look over BEFORE starting in on this:
|
||
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3451
|
||
- https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1849
|
||
Instantly print? https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/818
|
||
Guy took the time to request it, so have a look think and see if there is a way to do this
|
||
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1734
|
||
- https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/962
|
||
|
||
DASHBOARD / KPI / BIZ METRICS
|
||
todo: DASHBOARD
|
||
- Joyce kpi / charts and graphs
|
||
- these cases:
|
||
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/2024
|
||
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1974
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@ ROADMAP STAGE 5 - FINALIZE ALL NON BIZ OBJECT SPECIFIC FUNCTIONALITY
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
todo: Much of this stage below needs TRIAGING, do that first.
|
||
Any real (corebizobject) shit goes to stage 7
|
||
|
||
|
||
todo: MAPPING
|
||
getting a *lot* of request about this
|
||
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1816
|
||
maybe stage 7 or I guess could fake it for now, it's going to be known what will be needed
|
||
https://news.ycombinator.com/item?id=23722133
|
||
https://blog.mapbox.com/openstreetmap-a-global-map-for-worldwide-insight-4e041cbf1ec1
|
||
|
||
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)
|
||
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: back and forward buttons when running without browser controls in application mode?
|
||
- wait and see on this one, as it will be likely outside of any particular form so not something to be baked in early necessarily
|
||
|
||
todo: GUIDED TOUR
|
||
- This is an important feature and at least get a basic one in there for starters and initial release
|
||
- This is a replacement for the tutorials and videos in v7 a
|
||
- Need to add that auto-pilot thingy that allows for guided tours in HTML apps
|
||
- Specifically it should at least have an ONBOARDING walk through of how to move around, enter data, get help etc. Not feature specific but usage specfic.
|
||
- Later I'll add feature specfic tutorials like how to make a workorder etc
|
||
|
||
|
||
|
||
todo: clickable urls
|
||
https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/1738
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-----------------
|
||
|
||
TODO AFTER CLIENT block ABOVE:
|
||
TODO: ON UPDATE TO NEW version
|
||
have an url that opens automatically or a notification and link to one after a new version has been detected just
|
||
like visual studio does in order to show what is new in this version
|
||
maybe ideally it opens to a new document page "whats new in version x.xx"
|
||
this way no need to go beyond the local server or hit our site unnecessarily
|
||
|
||
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 6 - INSTALLER, LICENSING, ROCKFISH SUPPORT FOR RAVEN
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
|
||
|
||
todo: WINDOWS INSTALLER
|
||
Runner harness wrapper thing?
|
||
even if windows only
|
||
it could modify config since it's outside the server
|
||
check for Postgres server extant and if not automatically start the standalone postgres instance
|
||
manage postgres start and stop and configuration changes, sit in tray, run AyaNova server from there?
|
||
|
||
easy way to select command line params without resorting to editing text files for end user
|
||
initially it's an installation option, but then need to edit after the fact
|
||
Quick check of installers available still and is it still kosher to keep using INNO setup or is something better, more supported by windows etc?
|
||
Wix if want MSI (some say that's desireable)
|
||
INNO is still relevant
|
||
I don't need hardly any requirements that can't just be copy or unzip deployed so maybe don't even need an installer for now?
|
||
(zip distribution is going to be problematic with Windows file protection shit)
|
||
https://docs.microsoft.com/en-us/dotnet/core/deploying/
|
||
https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
|
||
|
||
|
||
Completely packaged and installable. REady for users to install as a test as I iterate stage 7 below
|
||
All the stuff needed for someone to run it as a test without the real objects yet.
|
||
Some kind of expiring license so they can't just keep using it as fucked as it may be some might do that
|
||
I want short targetted testing only, not someone downloading and trying it out a month later, that's useless for us
|
||
This needs to be focused on what I need to get from people about testing
|
||
|
||
|
||
todo: LINUX INSTALLER
|
||
Linux users don't mind doing the manual config thing as much, they're used to it and it could just be a shell file anyway
|
||
So mainly this would be a documentation steps to install type issue
|
||
|
||
|
||
todo: DOCUMENT DOCKER
|
||
Present dockerfile maybe for docker installation with FILES folder pre-ready to build / run
|
||
Whatever docker needs
|
||
Or maybe private registry with docker images on our servers somewhere
|
||
|
||
todo: rockfish, can't do purchase for raven or view it I think
|
||
Test a whole sales process from eval to purchase and make it work
|
||
todo: rockfish, upgrade to latest bootstrap, out of date Currently
|
||
todo: rockfish, trial license fetched On date not updating? (not showing in UI)
|
||
|
||
todo: Joyce rockfish notes:
|
||
Licensing:
|
||
noticed that the field "Fetched on" is NEVER updated.
|
||
is it much to be able to see the TIME as well as the DATE, when "Requested" and when "Processed"?
|
||
There are drop down selections NEW, APPROVED, REJECTED for the (already generated) listed keys. But can not actually save to a different Status. What is the purpose of the drop down options if can not select?
|
||
|
||
|
||
|
||
|
||
todo: Discourse bootstrapping install
|
||
look over, get ideas make case steal ideas profit FTW$
|
||
https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md
|
||
//here is their standalone config yml definition for DOCKER
|
||
https://github.com/discourse/discourse_docker/blob/master/samples/standalone.yml
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 7 - "REALITY"
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
All in on porting over all the real objects from v7
|
||
|
||
todo: First of all triage the features to port over in the sanest order so not stubbing too much stuff
|
||
Try to get scheduleable stuff early because schedule form will take some time
|
||
|
||
todo: Schedule form
|
||
- new gold standard is Google schedule so emulate that amap
|
||
- This one is big but requires the data to be there so as soon as implement enough things that are scheduleable then do this
|
||
- printing / reporting
|
||
|
||
todo: Notifications
|
||
Many are on hold until there are real objects to code against, now is the time to code them as the objects are added
|
||
|
||
todo: can beta test at this point
|
||
post installer, enlist trial users get feedback, don't get too down when they shit all over it as they will undoubtedly :)
|
||
|
||
todo: Document in user manual all form controls with instruction on how to use the various controls etc
|
||
- "Anatomy of a AyaNova Form"
|
||
|
||
WORKORDER UI
|
||
todo: Investigate Workorder structure and datagrid see case https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3768
|
||
Likely that workorder grids inside will not be full blown custom datagrid I wrote but just a vanilla v-data-table control since there is likely no need for the full customization shit
|
||
todo: workorder UI layout stuff (TTM!! Don't re-invent the wheel!)
|
||
There's been a lot of ideas about wo floating around and considered, but at the end of the day what I have works so maybe try to meld
|
||
into what I have the new concepts and see what comes out. Support a rich wo UI on big screens and scroll around UI on phone maybe.
|
||
some notes:
|
||
Workorder UI good ideas here: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3475
|
||
Basically (based on RI) it boils down to don't make the user go up to the workorder item level when they can go sideways directly to an alternate child of woitem
|
||
i.e. going from parts to labor shouldn't require going up a level
|
||
All workorder in one document and just really really tall? (people bitch about RI requiring too many navigation steps to get to shit)
|
||
Header and items in one document then bottom in seperate pages?
|
||
Is it going to be far easier to code this bitch if I have all the workorder data at hand or..?
|
||
How does WBI handle all this because it's kind of the poster child for RAVEN
|
||
Workorder is one of those things that may require different views for phone and tablet and laptop etc
|
||
Kind of like two views, tiny phone and anything larger
|
||
On a PC people will want and expect it to look as much like v7 workorder as possible, maybe that's still a valid layout
|
||
just tweaked to work better as a web app a bit but theoretically I could almost duplicate that layout with the tools I have
|
||
|
||
|
||
Consider UI in this as well, will need to decide at least what is visible when
|
||
Workorder UI good ideas here: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3475
|
||
How to add items, like new woitem?
|
||
send to server get back new object?
|
||
lots of biz rules and stuff need to happen, want to minimize load at client
|
||
but lots of data back and forth is not ideal
|
||
maybe request a woitem and get it back?
|
||
what exactly needs to be processed in the wo when items are added / removed?
|
||
math / totalling?
|
||
simple calcs sb client doable
|
||
this will drive what has to happen.
|
||
Need to go over all wo features and factor them into this decision properly
|
||
The whole idea of a completed section of a wo and stuff, is that dropped due to TTM or still viable?
|
||
maybe can pick out the best new features of that which can be integrated into existing design rather than re-inventing the wheel
|
||
Here is an overview: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3412
|
||
How best to be able to service LoanUnits on a workorder?
|
||
Just make them Units with extra properties exposed if type of loaner?
|
||
This seems simplest, but what will it effect?
|
||
Hard to make them serviceable if they are an alternate table of source for what's being repaired as that breaks a lot of other code or adds exceptions
|
||
Customer is then who exactly because it's fundamental to a lot of wo functionality?
|
||
from a biz perspective isn't it like you are your own customer when you service your own equipment that you loan out?
|
||
Does Serial field need to be numeric, could it be text instead?
|
||
prompted by case 3428 saying that it's hard to deal with constant conversion to text for UI etc
|
||
plus, I'm thinking it opens door to textual scheme like appending -A or whatever to a wo.
|
||
or, is that a display issue?
|
||
Calling something "serial" implies it's unique but it isn't, maybe I should call it "number" instead or "ID" or something?
|
||
INFO: did a test workorder with ALL fields filled out heavily and one woitem, exported from db entire graph based on detailed report so every line was every item repeated
|
||
still only 84kb and it's a lot bigger than any typical wo in v8 would be as it will be far more efficient without having to repeat lines flatly
|
||
so I think size of object is a non-issue really from a practical standpoint.
|
||
|
||
|
||
UI
|
||
|
||
idea: UI reflects tentativeness state of object:
|
||
The UI doesn't imply something is done by changing it fully until the save is completed.
|
||
This serves two purposes:
|
||
1) user knows at a glance what isn't saved yet and will know it's waiting for save clearly, hopefully leading them to save more often,
|
||
2) client doesn't need to track invisible shit behind the scenes, can more easily do patch updates right off UI source
|
||
|
||
e.g.:
|
||
if deleted a row in parts, that row doesn't disappear but rather shows crossed out, maybe grayed out but still there until save to indicate it's tentative status
|
||
if added a row, shows green or something or bold or asterisk, (can style with css based on state) until saved
|
||
problems:
|
||
how to handle regular fields that are changed (that's a lot of field data to track for changes)?
|
||
Maybe client keeps a virgin copy of the original wo for comparison
|
||
periodically does a compare and flags differences on updates?
|
||
(this would also help to serve as an Undo maybe?)
|
||
|
||
|
||
|
||
todo: Documentation
|
||
Need to think this through carefully
|
||
Need to get the critical bits in for onboarding and importing so people can get going
|
||
Most important stuff is anything non-obvious
|
||
Seems pointless to have one doc per form that just says "The name field is the name and must be unique"
|
||
maybe have that kind of stuff in the form basics and then have a doc per OBJECT instead with anything unique or interesting about the object
|
||
(and each object form has a link to formbasics so can link to the object form from UI and they get both)
|
||
Parts of it can be done post-release for sure
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 8 - EXTENSIONS (was plugins)
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
Plan the order of criticality for extensions
|
||
ACCOUNTING is obviously the first and foremost one and MUST be there for a lot of people to take up
|
||
MUST be done in a way to support other alternative accounting apps that are coming around now like freshbooks or whatever it's called that Joyce is using now
|
||
probably going to need a "trick" of some kind to interface with desktop accounting
|
||
i.e. a local windows app that uses the api and just copy over the qbi code
|
||
or a local server that has it's own web interface
|
||
or regular raven UI but the accounting section interfaces with a local server for local desktop qbi stuff and
|
||
the raven server interfaces with QBOnline for the QBOI stuff
|
||
|
||
based on sales, how many subscribed now
|
||
which ones are porting and which are not
|
||
Implement in order or priority
|
||
Fuck peachtree?
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 9 - RELEASE
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
Assuming has passed all testing
|
||
Plan pricing and sales strategy
|
||
What to do with licenses for v7 people
|
||
Another payment processor?
|
||
support bitcoin if possible as well
|
||
|
||
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 10 - ROCKFISH / HOSTING BACKEND SELF SERVER READINESS
|
||
DO server allocation, rockfish revamp to drive this part (or maybe it's an alternate app)
|
||
https://blog.digitalocean.com/its-all-about-the-bandwidth-why-many-network-intensive-services-select-digitalocean-as-their-cloud/?utm_medium=email&utm_source=do_newsletter&utm_campaign=04292020
|
||
https://www.youtube.com/watch?v=zZVoo5AbANI
|
||
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 11 - RELEASE SELF SERVE / HOSTING
|
||
Fall of 2020 hopefully
|
||
links on website for sign up
|
||
marketing can begin in earnest
|
||
|
||
NOTE: HOSTING cases are all moved to priority 2 and most have "HOSTING" in the title tags
|
||
|
||
todo: Administration - Account
|
||
Down the road will need an Account page for seeing their account status in rental SAAS situation
|
||
Nothing to do here, it's an obvious one, just delete this later, it's to percolate in brain a bit
|
||
maybe under license
|
||
|
||
|
||
MARKETING
|
||
Analytics alternatives to Google:
|
||
https://news.ycombinator.com/item?id=24198329
|
||
|
||
Also very nice screen shot effect:
|
||
https://umami.is/
|
||
Created by:
|
||
|
||
dom96 2 hours ago [–]
|
||
|
||
Nice! Question for you, how did you make that nice 3D image on the front page with various screenshots overlaid over each other? :)
|
||
|
||
reply
|
||
|
||
|
||
mcao 2 hours ago [–]
|
||
|
||
It's all done in Photoshop. Just take screenshots, then transform, rotate, distort them to look flat. Then add some drop shadows for a 3d look.
|
||
|
||
reply
|
||
|
||
|
||
|
||
|
||
Good day. I have a pricing question.
|
||
|
||
I have a software company and am the sole developer and am looking to add reporting to my business software product I will be selling to companies as a product they can install themselves and also will be offering that software as a SAAS rental version I will be hosting for those that don't want to install it themselves.
|
||
|
||
The project is an asp.net core webapi back end with a Vue html 5 based front end client. My customers will need to be able to design / modify / view / export their own reports off the provided data sources using only an HTML 5 browser at the Client end.
|
||
|
||
I am investigating rolling my own reporting solution however if the price is viable I might go with a commercial solution such as yours to save time.
|
||
|
||
Users will need to be able to design reports off our provided data sources as well as print / view and export. It needs to work with asp.net core Windows / Linux / Mac at the back end web api and any modern HTML 5 browser at the client end.
|
||
|
||
To be clear this would be used in a business software product I am selling directly to my customers who would be using the reporting feature to design / modify and print reports provided by my software for their business. I would provide sample reports they can customize or use as is.
|
||
|
||
Do you provide licensing that supports this and how much will that cost for a single developer?
|
||
|
||
- John |