It happens that the wiki is just a few weeks old and is in its infancy. During this formative period, the references to the User Manual and the FAQ on the Main page are very important. Whatever documentation existed before the wiki is there. I'll copy those references toward the top of the Main page to make them more prominent. But Memento users have been and I would guess will continue to be people who are able and willing to learn by trial with help through this group. The wiki could begin to change that over time.
In the future, the Manual and FAQ will be integrated into the wiki. Even with the User Manual and FAQ, though, it is still true that the documentation is sparse. With the wiki, that is beginning to change, but again, we're just getting started.
There is a chapter in the User Manual on the Calculation field type and also on the JavaScript field type. The Calculation field has been a part of Memento for quite a while, and the JavaScript field type is new; right now both exist, but in the long term, maybe Calculations will become deprecated; that's just my guess. There is also a chapter in the FAQ on Calculations, with a subchapter on JavaScript.
Keep in mind that references through links to non-key fields in the referenced library are made using Calculation or JavaScript field scripts.
Link To Entry fields have also been around a while, though just recently it was expanded to support not only one-to-many references, but also one-to-one and many-to-many references. I can speak to one-to-many references, and I am writing that wiki page right now. To write the others, I'll have to do some experimentation first.
Please ask questions to the group or privately to me as appropriate, and we'll get them answered for you.
My guess/assessment for what it's worth, is as follows. This product was pretty young when I ran across it, and over the time since then, it has continued to be actively developed. Early on, the version I used was free, and the only attempt to monetize was the Pro edition (no cloud in those days), which is a one-time charge thing, so it was mostly a labor-of-love kind of thing. With the cloud and added Desktop Edition, he is now starting to monetize for real.
I say "he", because from our perspective, it appears as if Vasya is programming everything himself. I expect there is a team, but I don't know that, and it is clear he is the focal point of everything. He has his following, and he dedicates all his time to development, so documentation has so far been only as really needed, driven by user feedback.
It has been interesting to see the direction of development. He has developed along classic relational database lines showing real knowledge of that -- something you don't see much from mobile app authors -- but the features he implements are driven by usability for mobile users -- something you don't see much from real relational vendors. That's what I liked about hanDBase in the old days, though I ended up a SmartList user back then.
Memento is still in its high-growth stage, with features and platforms coming out pretty fast. But yes, that could change at any time. I gather he may be starting to make money off the Desktop Edition with business users, and that could help to keep this product development cycle running.
As for documentation, I also consider the Manual and FAQ to be pretty paltry, but most things that would be hard to figure out from trial and error do seem to find a mention there. Now, he has started the wiki, and for the moment, he has commissioned me to get that going; I'm sure there will be others contributing before long, and ultimately it may become a very user-developed thing, like Wikipedia, though with the Manual and FAQ integrated, he'll always have a proprietary interest in its quality and accuracy.
Finally, note that in certain areas, the product has embedded help built in. In scripting a Calculation field, for instance, press the buttons to enter a field or function, and you'll have assistance regarding the available functions, what arguments they take, and what results they return.
I don't know Vasya, but he seems to me to be driven by a combination of building the core UP so as to support more features and then implementing OUT those features. I think I know him well enough to make sure he reads this thread, and if I get any response, I'll share it, but I'm not sure there are enough of us fully-relational types out there to incent him to support these use cases. I'd focus on the use cases themselves, as you did in your post. He is moving in the direction of more JavaScript support.
Suppose I have customers,
who pay me in dollars.
For tax purposes, I need to calculate my income in rubles.
using the exchange rate of a certain date, which is valid for 30-40 days.
I build two libraries:
DATABASE1
Date of payment
Customer ID
Dollars paid
Exchange date --> link to (Database 2).date
Exchage rate <-- extracted from Database 2
Rubles taxable - calculated (dollars x exchange rate)
DATABASE2
Exchange date <-- key field looked up by Database1
Exchange rate <-- extracted by database1
My friend wants me to make the same table for him, and brings me his 10 000 pieces of data that I need to import it into this type database.
I'll do the following,
Sync both of my databases with Google sheets.
Populate DB1 and DB2 with my friend's data *in Google sheets*
Resync the DB2, and then DB1.
All the links between the records will be established automatically without me having to manually re-establish the link in each entry.
"Exchange date --> link to (Database 2).date"
How did you establish this link? Using "link to entry" field type? Or calculation?
When you say you did this:
Exchage rate <-- extracted from Database 2
4. Create DB2
5. Create Link-to-entry field called "ID2" and set the link to DB1.
6. Create Calculated field called "extractedData"
A. Set the formula '#{id2.mydata}'(you can use the insert field button) --> it will use ID2 to extract field "mydata" from the reference therein
B. Don't forget to set the result output to string type
7. Sync DB1 to Google Sheets
8. Sync DB2 to Google Sheets
It will ask you to set unique ID for a linked field - agree.
9. Go to Google Sheets.
10. Look for your DB1 and DB2 there. You may have to update the view by swiping your finger from top to bottom of the screen, if you don't see the databases DB1 and DB2 there.
In GOOGLE SHEETS in cells
11. Populate DB1 as:
Id1= 1 Mydata = Hello
Id1= 2 Mydata = Bye
Id1= 4 Mydata = Wow
12. Populate DB2 as:
Id2=4
Id2=1
Id2=2
Don't touch MEMENTO_ID field or extracted data field.
13. Go back to Memento
14. Sync the keys first -- DB1
15. Sync the extracting base -- DB2
Open DB2 and see the contents of records. Links to records 4,2,1 and data exctracted therefrom will alraedy be there.
And yes -- you can import tables with one or more links to other tables into Memento - no problem,
as long as the db structures are prepared and synced to new tables in Google Sheets before entry of new data,
and the key fields are set as entry names and unique and in referenced tables, where data is extracted from.
This method to me appears even better than in standard databases, because you can combine several fields by setting them as entry name - thus making a unique entry name (=key field) without needing to create a separate keyfield with a numeric code. Though, you can, if you want to.
Therefore, Memento is fully relational, but has a bit different (I'd say more universal) logic for setting up key fields for adding external data than other databases, making unique field identifiers optional in imported data.
There is a problem with some users who think that google sheets are for exporting memento tables to other phones.
They are not. Google tables are intended for 2 purposes -
1. adding new data from third party sources and
2. changing field types in existing tables (for example, change integer / calculate type to text type) - this used to be documented before. I don't know if it is in Wiki.
GT can also be used to enter custom data with URI's to photos, for example...
After the wiki is mostly booted up, I hope still to be involved, that others will start joining in, and what I will start doing is mining the tips, techniques, and other information from the user group postings like this one and getting it into the wiki, as well, being careful to do version-shifting to make sure it is up to date, or at least documenting the age and version/platform of the information. In addition to the manual-ish parts, the wiki should contain such user-experienced wisdom, in my view.
There's much to do. Working...