Project has been accepted and we'll invest significant time on this in coming weeks / months . What is currently called Advanced Rating syntax should be renamed to Tiki Calculations which can be used all over Tiki, including advanced ratings and the Mathematical Calculation Tracker Field


This page is to brainstorm and plan to make Tiki better at calculations. It should be possible for any data in Tiki to be used for calculations and for the results to be used anywhere in Tiki, to do all kinds of useful things: alerts, reports, etc.

Overview

Why is it important to calculate values server-side?

For Spreadsheet, PivotTable, TableSorter and WickedGrid, calculations are done client-side (by the user's browser) and thus, we can't use formulae the same way we use Mathematical Calculation Tracker Field calculations. This would be needed for

  • Unattended operations. Ex.: trigger actions via PluginListExecute to send alerts (based on calculations) or reports (with results of calculations)
  • For security reasons: imagine we are using these formulae to manage complex tax scenarios in the shopping cart. We don't want a clever user to Greasemonkey the Tiki Shopping Cart into giving them a special price. Same thing for form validation.
    • It could be checked against server side value if the special price is valid but I understand your concern

Questions

  • Should we be looking into a way to do Server-side JavaScript?
    • Either JS via PHP: Server-side JavaScript
      These are just ways of coding in js instead of coding in php. There is nothing here which is easier to do in js than in php except if you haven't learnt php
    • Or via PhantomJS which will now be easy to deploy via Composer Web Installer
    • Yes, why not? 😊
      Isn't PhantomJS the opposite of what we want to achieve? PhantomJS is for automated regression testing of web-based software (very nice). It is an emulation of what a user can do. If we double check what the user does while he is doing it using PhantomJS, I believe it will mess whith the user's session and actions, like doubling the orders, etc

Ideas

  • Should Advanced Ratings be added to PluginList?
  • Should we have a new concept of value which can be set? Perhaps PluginValue which can be set, updated, emptied, used, etc.
  • Could be useful for Stats (e.g. how many times page was edited, most "time consuming" page, calculate man-hours, etc.) and Action Reports?

Opinions

  • I like spreadsheets because it's easy to visualize the calculations. I'd like diverse values all over Tiki to be in the spreadsheet, and from here, to use the spreadsheet formulae and then, for these resulting values to make their way into wiki pages, reports, alerts, etc. and in some cases into other spreadsheets 😊
  • I prefer trackers over spreadsheets, cause trackers collect data dynamically. There is an option to import data from trackers to spreadsheets in Tiki, Although this seems to be a one-off import (not dynamically updated). Further more the input to trackers is made by pre-defined forms, which cannot be altered by most users (user groups) and work even for Anonymous in some Use Cases, where spreadsheets are difficult to maintain, specifically to lock partially. Where in spreadsheets users can alter data from other users and mix up fields, this can easily prevented with Trackers.
    Imho the biggest disadvantage of trackers is the current lack of cross-item and cross-tracker calculation, which same time seems to be the biggest advantage of spreadsheets - calculation across culomns and sheets.

Use Cases

See Calculations Use Cases

Code and libraries


alias

Calculation