This page demonstrates how to calculate totals, average and sums, and standard deviation (by use of ConfiForms REST API)
All rows
Rows:
Total:
Average:
<p>Standard deviation: <span id="confiReport"></span></p> <script type="application/javascript"> function calculateStandardDeviation(array) { const n = array.length; const mean = array.reduce((a,b) => a+b)/n; return Math.sqrt(array.map(x => Math.pow(x-mean,2)).reduce((a,b) => a+b)/n); } AJS.toInit(function() { var isPageEdit = AJS.$('#content').hasClass('page edit'); if (!isPageEdit) { var url = 'https://wiki.vertuna.com/ajax/confiforms/rest/filter.action?pageId=52625840&f=f&q='; var xhr = AJS.$.ajax({ url: url, timeout: 10000, // 10 sec success: function (data) { var arr = []; var rows = data.list.entry; for (i=0;i<rows.length;i++) { arr[i] = rows[i].fields.d; } AJS.$('#confiReport').append(calculateStandardDeviation(arr)); }, error: function (jqXHR, textStatus, errorThrown) { console.log('request to get data from ConfiForms has failed... ' + textStatus); } }); } }); </script> |
Code for the demo is here:
<ac:structured-macro ac:macro-id="c221d30d-8349-441f-8d7a-1f42c9a6112f" ac:name="confiform-entry-register" ac:schema-version="1"> <ac:parameter ac:name="embedded">true</ac:parameter> <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter> <ac:rich-text-body> <p> <br/> </p> </ac:rich-text-body> </ac:structured-macro> <ac:structured-macro ac:macro-id="bb37bde6-f2ce-4953-b852-33f215a4d5d7" ac:name="confiform" ac:schema-version="1"> <ac:parameter ac:name="formName">f1</ac:parameter> <ac:parameter ac:name="allowReads">true</ac:parameter> <ac:parameter ac:name="export">true</ac:parameter> <ac:rich-text-body> <p> <br/> </p> <p> <ac:structured-macro ac:macro-id="c7d16d0d-29b9-4eea-8dfc-f83e3b80c7af" ac:name="confiform-field-definition" ac:schema-version="1"> <ac:parameter ac:name="fieldName">d</ac:parameter> <ac:parameter ac:name="fieldLabel">d</ac:parameter> <ac:parameter ac:name="values">false[1=one|2=two|3=tre|4=four|]</ac:parameter> <ac:parameter ac:name="type">select</ac:parameter> <ac:parameter ac:name="required">true</ac:parameter> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <p> <br/> </p> <p>All rows</p> <ac:structured-macro ac:macro-id="114580e2-3c29-4bc2-a822-a491540201d8" ac:name="confiform-table" ac:schema-version="1"> <ac:parameter ac:name="formName">f1</ac:parameter> <ac:rich-text-body> <p> <ac:structured-macro ac:macro-id="755e0e54-fef2-416e-9591-3852d18c9cfc" ac:name="confiform-field" ac:schema-version="1"> <ac:parameter ac:name="overrideLabel">(ID of d)</ac:parameter> <ac:parameter ac:name="fieldName">d.id</ac:parameter> </ac:structured-macro> </p> <p> <ac:structured-macro ac:macro-id="a921da18-107a-42f8-a6fc-32311c625749" ac:name="confiform-field" ac:schema-version="1"> <ac:parameter ac:name="fieldName">d</ac:parameter> </ac:structured-macro> </p> </ac:rich-text-body> </ac:structured-macro> <p> <br/> </p> <p>Rows: <ac:structured-macro ac:macro-id="d0323d13-c6d6-4bf9-93c2-8e25eb47e57a" ac:name="confiform-value" ac:schema-version="1"> <ac:parameter ac:name="fieldName">Rows:([total])</ac:parameter> <ac:parameter ac:name="formName">f1</ac:parameter> </ac:structured-macro> </p> <p>Total: <ac:structured-macro ac:macro-id="e139194f-9ae6-4eea-bf09-d59acdb3eb69" ac:name="confiform-value" ac:schema-version="1"> <ac:parameter ac:name="fieldName">Total:([entry.d])</ac:parameter> <ac:parameter ac:name="formName">f1</ac:parameter> </ac:structured-macro> </p> <p>Average: <ac:structured-macro ac:macro-id="e536712c-00cf-4da8-a66a-0bc49addbac0" ac:name="confiform-value" ac:schema-version="1"> <ac:parameter ac:name="fieldName">Average:([entry.d]/[total])</ac:parameter> <ac:parameter ac:name="formName">f1</ac:parameter> </ac:structured-macro> </p> <ac:structured-macro ac:macro-id="0fb8923e-370d-46db-bfab-2f50d025f487" ac:name="html" ac:schema-version="1"> <ac:plain-text-body><![CDATA[<p>Standard deviation: <span id="confiReport"></span></p> <script type="application/javascript"> function calculateStandardDeviation(array) { const n = array.length; const mean = array.reduce((a,b) => a+b)/n; return Math.sqrt(array.map(x => Math.pow(x-mean,2)).reduce((a,b) => a+b)/n); } AJS.toInit(function() { var isPageEdit = AJS.$('#content').hasClass('page edit'); if (!isPageEdit) { var url = 'https://wiki.vertuna.com/ajax/confiforms/rest/filter.action?pageId=52625840&f=f1&q='; var xhr = AJS.$.ajax({ url: url, timeout: 10000, // 10 sec success: function (data) { var arr = []; var rows = data.list.entry; for (i=0;i<rows.length;i++) { arr[i] = rows[i].fields.d; } AJS.$('#confiReport').append(calculateStandardDeviation(arr)); }, error: function (jqXHR, textStatus, errorThrown) { console.log('request to get data from ConfiForms has failed... ' + textStatus); } }); } }); </script> ]]></ac:plain-text-body> </ac:structured-macro> |