DHIS2 - Data Visutalization/Reports - charts

I am getting No Values found while trying to configure report/charts in DHIS2.
I have been
Created DataElements
Created Category Options
Added a Category to include Category Options
Created a Category Combination item to and added the category created in Step3 in it.
Now updated the DataElements and assigned the Category Combination.
Now created a DataSet with these DataElements and assigned to the 2. organization units.
Using the DataEntry module the data is added successfully for desired time period and marked as completed.
But when trying to create a report/chart for these DataElments or DataSets, I am getting the message that No Values found. However when trying to create reports/charts on Demo site, everything works fine.
Is there anything that I am missing where while performing all the above mentioned steps.
Thanks.

To use the stored values of completed data sets, once must run Analytics.
See the image below for reference.
First Click on Analytics and Data Mart
Second click on the Start export with Analytics tables update check box marked.
NOTE: This action can only be performed by a user with System Administrator rights.

Related

Cypress / React-Admin table sort question

Looking for some inspiration here. I'm using react-admin, which is a material-ui based framework, with Cypress for e2e testing, and got stuck on table sorting.
There is a Cypress test within the react-admin github project to test for table sorting, but all it does is look at whether the up/down indicator appears after you click the table heading to toggle the sort. That's a UI test, not an end-to-end test, as it doesn't look at the actual data to see if the data is sorted.
In my case, when you change the sort order, an API request is made and the UI renders the new sorted data from the API.
However, although Cypress correctly checks for the content of the first row using .contains() before the sort, once the sort is done, Cypress still responds as if the first row in the table contains the same data, rather than the new data I can see on-screen. I've checked source, and the DOM is updated to the new order.
It's like there's some caching going on somewhere, and I can't figure out where.
I can't share the full code as it's complex and proprietary, but I've boiled it down to a minimal example, which is available at https://gitlab.com/notifium_public/cypress-table-sort
This uses react-admin's own demo site.
Just do:
git clone https://gitlab.com/notifium_public/cypress-table-sort.git
npm install
npm run test
then run the table_sort.js test in Cypress.
You'll see that test logs in, checks the first row, then clicks a column header and checks that first row again. The data is randomised, so the best check I could come up with is to check the new first row doesn't contain a customer with a "last seen" date in 2020.
Visually, the new entry in the top row will be 2016/2017, but the test fails, as it's still got a a reference to the original 2020 row.
Any thoughts?
Regards,
Andy

Prevent users from creating Work Items that have no parents in Azure Devops(VSTS)

I want to prevent users from creating work items(tasks) directly. Tasks must only be created by using add child option in a User Story and not directly. Is it possible?
Prevent users from creating Work Items that have no parents in Azure Devops(VSTS)
There is a workaround but not full solution, you can check if it work for you.
You can create a rule for the task in the process.
Organization Settings->Process->click Your custom process->click Task->Rules->New Rule:
Then we create the task directly, you will get the error:
TF401320: Rule Error for field Related Link Count. Error code:
Required, InvalidEmpty.
You have to add Related work before you save this task. But at the moment we could not limit the link type of Related work to be only Parent.
Hope this helps.
It is not perfect, but this is my workaround
Another workaround: using two rules
when related link count =0 clear value of Parent link custom field which is required
when related link count =1 set Parent link field = Yes

How to delete a dynamically generated entry in selenium IDE

I want to automate a test where I add particular details which are nicely stored in table(which initially was empty), I verify those details and then I delete those details from the table. This is repeated over a period of time.
I have been able to implement this till verification, but the problem arises when I try to delete the entries from table. The test is successfully executed once, but when new details are added again, the indexes of table entries changes and hence the selenium IDE is not being able to find the entries based on locator defined earlier.
Is it possible to find the dynamically generated indexes of table and then delete those entries?

How to configure an "on edit" trigger on a file created automatically (with a google script)?

I have followed the following tutorial : https://developers.google.com/apps-script/storing_data_spreadsheets#writing-1.
First, I have a source spreadsheet with the following columns ( First Name, Last Name and Department) and associated data (see a screenshot of the source file here : https://developers.google.com/apps-script/images/reading_spreadsheet_data_image1.jpg).
Then, I dynamically create one Sheet per department name (see tutorial code) : every sheet contains the information about employees in that department. (see tutorial screenshot).
I have customized this tutorial to create, dynamically, one Spreadsheet per departement instead of one Sheet per department.
When each child Spreadsheet is modified, i want to launch an "On Edit" trigger. This "On Edit" trigger will re-generated the source spreadsheet with all child spreasheets data.
I have tested this functionnality but it seems that i can't program the creation of an "OnEdit" trigger on a distant spreadsheet (execution validation issue). It seems that only a manual creation (of the "On Edit" trigger) is possible.
Is it possible to create, dynamically with Google Script, a trigger on a distant spreadsheet ?
Best Regards
You can create a trigger function that handles events from remote spreadsheets or forms. See Class Triggerbuilder.
Your trigger function must be accessible to the script creating the trigger - in other words, it must be part of the same script.
var ssKey = 'XXXXXXXXXXXXXXXXXXXXX';
function myFunction() {
ScriptApp.newTrigger('myOnEdit')
.forSpreadsheet(ssKey)
.onEdit()
.create();
}
function myOnEdit(e) {
Logger.log(JSON.stringify(e));
}
Of course, you'll want to do something useful in the trigger function, but this is just an example.
There is an issue to be aware of. This remote function will not receive the documented source property documented under "Spreadsheet Edit Events" in Understanding Events. See Issue 2856, and star it for updates.
Why does that matter? If that worked, you MIGHT be able to have the same trigger function registered to handle events from ALL your spreadsheets, and use the source property to work on one sheet at a time.

Oracle Global Temporary Tables and using stored procedures and functions

we recently changed one of the databases I develop on from Oracle accounts to LDAP login accounts and all went well for the front end used by the staff that access the system. However, we have a second method of entry restricted to admin staff that load the data onto the database and a lot of processing is called using the dbms_scheduler.
Most of the database tables have a created_by column which is defaulted to pick up their user name from a sys_context but when the data loads are run from dbms_scheduler this information is not available and hence the created_by columns all get populated with APP_GLOBAL.
I have managed to populate a Global Temporary Table (GTT) with the sys_context value and use this to populate the created_by from a stored procedure called by dbms_scheduler so my next logical step was to put this in a function and call it so it could be used throughout the system or even be referenced from a before insert trigger.
The problem is, when putting the code into a function the data from the GTT is not found. The table is set to preserve rows.
I have trawled many a site for an answer but have found nothing to help me can anyone here provide a solution?
The scheduler will be using a different session than the session that created the job - preserve rows will not make the GTT data visible in a different session.
I am assuming the created_by columns have a default value like nvl(sys_context(...),'APP_GLOBAL'). Consider passing the user name as a parameter to the job and set the context as the first step in the job.
A weekend off and a closer look at my code showed a fatal flaw in my syntax where the selection of data from the GTT would never happen. A quick tweak and recompile and all is well.
Jack, thanks for your help.