Wow, is all I can say. Thanks

Tony

On Monday, 18 December 2017 10:14:02 UTC+11, Evan Balster wrote:
>
> Hey, all —
>
> Here's *Formula plugin* 0.1.1:  
> http://evanbalster.com/tiddlywiki/formulas.html
> Source and issue tracking on GitHub:  
> https://github.com/EvanBalster/TiddlyWikiFormula
>
> This version adds:
>
>    - A $formula-vars macro
>    - Preliminary date and time support
>       - Date literals as datum values
>       - Support for converting to/from TiddlyWiki timestamps
>       - Offset and difference functions
>       - Calendar functions
>    - Workflow enhancements based on spreadsheet software
>       - Datums (included values) beginning with "=" are treated as 
>       formulas
>       - Can use names like "B3" as shorthand for individual DataTiddler 
>       indexes
>    - Fixed errors with rounding functions
>    - Fixed an issue with error handing in datums
>    - Various other small stuff
>
> Please continue experimenting and reporting any issues you turn up.  I'll 
> be interested to see if the date & time stuff suits the needs of the users 
> who've chimed in about that.
>
>
> On Sunday, 17 December 2017 02:22:36 UTC-6, Evan Balster wrote:
>>
>> Hey, Tony —
>>
>> I might have been a little terse in documenting the logical functions.
>>
>> The IF function chooses between its second and third arguments based on 
>> the first.  For example,
>>
>> if({{!!x}}<1, "x is less than 1", "x is more than 1")
>>
>> The second and third argument can be whatever sort of date you like.  
>> Instead of strings they could be transclusions, or other functions or 
>> complicated bits of math.
>>
>> IFS basically works like "if (arg1) {return arg2} else if (arg3) {return 
>> arg4} else if (arg5) {return arg6} else return undefined".  The 
>> odd-numbered arguments should be booleans and the even-numbered arguments 
>> can be whatever you like.  So this would be fine:
>>
>> ifs(and({{!!x}} > {{!!y}}, {{!!x}} > {{!!z}}), "x is biggest", ({{!!y}} > 
>> {{!!z}}), "y is biggest", TRUE, "z is biggest");
>>
>> Though it would be the same as:
>>
>> if(and({{!!x}} > {{!!y}}, {{!!x}} > {{!!z}}), "x is biggest", if({{!!y}} 
>> > {{!!z}}, "y is biggest", "z is biggest"));
>>
>> Anyway, all the logic functions are designed to work like their 
>> (better-documented) analogs in Excel and Google Sheets.
>>
>> * (Notably, formula currently uses javascript rules when determining 
>> whether to treat numbers and strings as "true" or "false".  So zero and 
>> empty strings are falsy, while non-zero numbers and non-empty strings are 
>> truthy.  I can't guarantee this behavior will continue to be the case, as 
>> it might be different from how spreadsheet software does things.)
>>
>>
>> On Saturday, 16 December 2017 20:02:28 UTC-6, TonyM wrote:
>>>
>>> Evan,
>>>
>>> Please forgive my Ignorance; What can a and b be equal to in Formulas' 
>>> logical functions, like IF and IFS?
>>>
>>> I am thinking if something evaluates to true how do I use this to
>>>
>>>    - list
>>>    - transclude
>>>    - Use macro
>>>    - Show some text etc...
>>>    - Set a variable/field
>>>
>>>
>>> I imagine there is a way to write a list filter if a formula it true to 
>>> show when true (or False) etc...
>>>
>>> I expect knowing this may help the less sophisticated users (still me at 
>>> this point) make use of formula.
>>>
>>> Thanks in Advance
>>> Tony
>>>
>>> On Sunday, 17 December 2017 12:41:19 UTC+11, Evan Balster wrote:
>>>>
>>>> Hey, Tony —
>>>>
>>>> I'm not an impatient reader.  :)
>>>>
>>>> I've added a Date type in my working copy, based on JavaScript's 
>>>> built-in Date (which is reasonably feature-rich).  TiddlyWiki has some 
>>>> functions for date formatting in core, too.  Libraries like moment.js 
>>>> offer 
>>>> a "kitchen sink" of features but I'm not sure if that's necessary at the 
>>>> moment.
>>>>
>>>> Probably my next step will be to add a basic date parser and some 
>>>> utility functions (convert timestamps, convert with string, construct and 
>>>> decompose dates).
>>>>
>>>> *Is there value sharing what I find, or do you have it covered?*
>>>>>
>>>>
>>>> If you find something interesting, sure, share it.  But given that 
>>>> there's standardized support for basic date processing in JavaScript 
>>>> itself 
>>>> I'm going to try to steer clear of libraries.
>>>>
>>>> *May I ask how you use the results TRUE and FALSE in wikitest once 
>>>>> calculated?*
>>>>>
>>>>
>>>> Right now, the best use of these is in Formulas' logical functions, 
>>>> like IF and IFS.  In the future I might implement a $formula-if widget 
>>>> that 
>>>> works a little like the reveal widget.
>>>>
>>>> Expect a new update tomorrow or so.
>>>>
>>>>
>>>>
>>>> On Saturday, 16 December 2017 19:17:24 UTC-6, TonyM wrote:
>>>>>
>>>>> Evan,
>>>>>
>>>>> Very exciting, date manipulation is timely for me, rather than wait I 
>>>>> will look into some existing options. *Is there value sharing what I 
>>>>> find, or do you have it covered?*
>>>>>
>>>>> On multidimensional, I am not so much looking for array manipulation. 
>>>>> Tiddlywiki and your solution already meets my requirements. Imagin a 
>>>>> large 
>>>>> 2d spreadsheet with 3 columns containing unique keys (or missing keys) 
>>>>> even 
>>>>> including date/time. If you choose a key and sort on it before you 
>>>>> manipulate a 2D array you are effectively looking at the data in another 
>>>>> dimension. This is very easy for TiddlyWiki.
>>>>>
>>>>> *May I ask how you use the results TRUE and FALSE in wikitest once 
>>>>> calculated?*
>>>>>
>>>>> Do you use it in filters etc?
>>>>>
>>>>> Regards
>>>>> Tony
>>>>>
>>>>> On Sunday, 17 December 2017 03:20:17 UTC+11, Evan Balster wrote:
>>>>>>
>>>>>> Question: do you have or are you planning any rounding  or averaging 
>>>>>>> functions?
>>>>>>
>>>>>>
>>>>>> There are rounding functions in there now.  See "Functions" and 
>>>>>> "FormulaWidget" in the doc wiki.  No averaging yet, but that's a popular 
>>>>>> function I'll replicate at some point soon.  (My last round of functions 
>>>>>> was ).
>>>>>>
>>>>>> I did find that the rounding functions fail when a second parameter 
>>>>>>> is provided, so I submitted an issue on Github.
>>>>>>
>>>>>>
>>>>>> Ah, I'll fix those then.  Good catch.
>>>>>>
>>>>>>
>>>>>> I am very interested in "Multidimensional" arrays.
>>>>>>
>>>>>>  
>>>>>> From what I can tell Excel and Sheets can do 1D and 2D arrays, and 
>>>>>> these may be internally represented as selection sets.  Anyway, there's 
>>>>>> a 
>>>>>> lot of flexibility in what "value" types could be added (especially with 
>>>>>> extensions) but I'll probably imitate spreadsheet conventions and 
>>>>>> functions 
>>>>>> to begin with. 
>>>>>>
>>>>>>
>>>>>> One question: Could this be made to work with date and time?
>>>>>>
>>>>>>  
>>>>>> Yes, I'll be adding support for a date/time datatype.  There's a long 
>>>>>> history of date/time functionality in Excel/Sheets and there are some 
>>>>>> standard TiddlyWiki/javascript functions that can be built upon.
>>>>>>
>>>>>>
>>>>>> Reverse polish notation https://tid.li/tw5/hacks.html
>>>>>>
>>>>>>  
>>>>>> Useful reference.  Before I was driven to implement this plugin I 
>>>>>> experimented various macro-based solutions (including some homemade 
>>>>>> ones).  
>>>>>> I even have an accounting wiki built around a sum macro.  It was my 
>>>>>> conclusion that the $set/$vars/$macrocall boilerplate makes recursive JS 
>>>>>> macros a bit too unwieldy compared to a dedicated formula syntax.  A 
>>>>>> widget 
>>>>>> also has more potential for caching/optimization/efficiency in the long 
>>>>>> term.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Saturday, 16 December 2017 04:29:18 UTC-6, ste...@gmail.com wrote:
>>>>>>>
>>>>>>> This looks very good, especially since it is incredibly easy to set 
>>>>>>> up and use! One question: Could this be made to work with date and time?
>>>>>>>
>>>>>>> Cheers,
>>>>>>>
>>>>>>> Stef
>>>>>>>
>>>>>>> On Friday, December 15, 2017 at 5:37:26 AM UTC+1, Evan Balster wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> Introducing the *Formula plugin*:  
>>>>>>>> http://evanbalster.com/tiddlywiki/formulas.html  (version 0.1.0 at 
>>>>>>>> time of posting)
>>>>>>>>
>>>>>>>>
>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this group, send email to tiddlywiki@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/2948010c-536b-4dfb-ba4c-539700aa0e8c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to