Skip to content

Commit

Permalink
Merge pull request #18 from carapai/master
Browse files Browse the repository at this point in the history
Fixed bug in importing data
  • Loading branch information
carapai authored Jan 9, 2020
2 parents 34d8614 + 3d036e9 commit 2d11a46
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 32 deletions.
2 changes: 1 addition & 1 deletion public/manifest.webapp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
},
"appType": "APP",
"name": "Data Import Wizard",
"version": "1.0.6",
"version": "1.0.7",
"description": "Data Importer Wizard",
"icons": {
"48": "favicon.ico"
Expand Down
1 change: 1 addition & 0 deletions src/components/schedule.js
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ class Schedule extends React.Component {
>
<FormControlLabel value="Every5s" control={<Radio />} label="Every Five Seconds" />
<FormControlLabel value="Minutely" control={<Radio />} label="Every Minute" />
<FormControlLabel value="Every5m" control={<Radio />} label="Every Five Minutes" />
<FormControlLabel value="Hourly" control={<Radio />} label="Hourly" />
<FormControlLabel value="Daily" control={<Radio />} label="Daily" />
<FormControlLabel value="Weekly" control={<Radio />} label="Weekly" />
Expand Down
8 changes: 4 additions & 4 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ import { Provider } from "mobx-react";

const config = {};
if (process.env.NODE_ENV === 'development') {
// config.baseUrl = `http://localhost:8080/api`;
config.baseUrl = `http://localhost:8080/api`;
// config.baseUrl = 'https://play.dhis2.org/2.30/api'
// config.baseUrl = 'https://ds.dev.hispuganda.org/api'
// config.baseUrl = 'https://ds.dev.hispuganda.org/api';
config.baseUrl = 'https://programs.psiug.org/psi/api'
// config.headers = { Authorization: 'Basic YWRtaW46ZGlzdHJpY3Q=' }; // admin
config.headers = { Authorization: 'Basic SGlzcDpBcGlAMjAxOSE=' };// dev pace
// config.baseUrl = 'https://programs.psiug.org/psi/api'
config.headers = { Authorization: 'Basic YWRtaW46ZGlzdHJpY3Q=' }; // admin
// config.headers = { Authorization: 'Basic SGlzcDpBcGlAMjAxOSE=' };// dev pace
// config.baseUrl = `http://dhis2-staging.kuunika.org:8087/api`;
// config.headers = { Authorization: 'Basic bWJvbmdlbmljaGl6b25kYTpBYmlreWwyMkA=' };
// config.headers = { Authorization: 'Basic c3RlcGhlbjpIaXNwQDIwMTk=' };
Expand Down
28 changes: 11 additions & 17 deletions src/stores/Program.js
Original file line number Diff line number Diff line change
Expand Up @@ -566,16 +566,9 @@ class Program {
@action
updateDHISEvents = (eventsUpdate) => {
const api = this.d2.Api.getApi();
const events = eventsUpdate.map(event => {
return event.dataValues.map(dataValue => {
const { eventDate, ...others } = event;
return { event: { ...others, dataValues: [dataValue] }, dataElement: dataValue.dataElement };
});
return eventsUpdate.map(event => {
return api.update('events/' + event.event, event, {})
});
return _.flatten(events).map(ev => {
return api.update('events/' + ev.event.event + '/' + ev.dataElement, ev.event, {})
})
};
@action setResponses = val => {
Expand Down Expand Up @@ -673,17 +666,18 @@ class Program {
}
if (eventsUpdate && eventsUpdate.length > 0) {
const total = newEvents.length;
const total = eventsUpdate.length;
let current = 0;
this.setMessage(`Updating events ${current}/${total}`);
const chunkedEvents = _.chunk(eventsUpdate, 250);
for (const events of chunkedEvents) {
current = current + events.length;
this.setMessage(`Updating events ${current}/${total}`);
const eventsResults = await Promise.all(this.updateDHISEvents(events));
this.setResponses(eventsResults);
}
this.setMessage('Finished updating events');
console.log(JSON.stringify(chunkedEvents, null, 2));
// for (const events of chunkedEvents) {
// current = current + events.length;
// this.setMessage(`Updating events ${current}/${total}`);
// const eventsResults = await Promise.all(this.updateDHISEvents(events));
// this.setResponses(eventsResults);
// }
// this.setMessage('Finished updating events');
}
this.setPulledData(null);
Expand Down
31 changes: 21 additions & 10 deletions src/utils/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -375,13 +375,11 @@ export const programUniqueAttribute = (program) => {

return null;
};


export const validText = (dataType, value) => {
switch (dataType) {
case 'TEXT':
case 'LONG_TEXT':
return value !== null && value !== undefined && value.toString() !== '';
return value !== null && value !== undefined;
case 'NUMBER':
return !isNaN(value);
case 'EMAIL':
Expand Down Expand Up @@ -1133,14 +1131,17 @@ export const searchSavedEvent = (programStages, event, eventsData) => {
if (ev2 && !many1) {
const differingElements = _.differenceWith(event['dataValues'], ev2['dataValues'], (a, b) => {
return a.dataElement === b.dataElement && a.value + '' === b.value + '';
}).filter(v => {
return v.value !== 'null';
});

if (differingElements.length > 0 && updateEvents) {
return {
...ev2,
update: true,
eventDate: moment(ev2['eventDate']).format('YYYY-MM-DD'),
duplicates: false,
dataValues: differingElements
dataValues: _.unionBy(ev2['dataValues'].filter(e => e.value !== ''), event['dataValues'], 'dataElement')
};
}
return null;
Expand All @@ -1161,14 +1162,17 @@ export const searchSavedEvent = (programStages, event, eventsData) => {
if (ev1 && !many1) {
const differingElements = _.differenceWith(event['dataValues'], ev1['dataValues'], (a, b) => {
return a.dataElement === b.dataElement && a.value + '' === b.value + '';
}).filter(v => {
return v.value !== 'null';
});

if (differingElements.length > 0) {
return {
...ev1,
update: true,
eventDate: moment(ev1['eventDate']).format('YYYY-MM-DD'),
duplicates: false,
dataValues: differingElements
dataValues: _.unionBy(ev1['dataValues'].filter(e => e.value !== ''), event['dataValues'], 'dataElement')
};
}
return null;
Expand All @@ -1188,15 +1192,20 @@ export const searchSavedEvent = (programStages, event, eventsData) => {
const { event: ev2, many: many1 } = currentEvent;
if (ev2 && !many1) {
const differingElements = _.differenceWith(event['dataValues'], ev2['dataValues'], (a, b) => {
return a.dataElement === b.dataElement && a.value + '' === b.value + '';
return a.dataElement === b.dataElement && a.value && b.value && a.value + '' === b.value + '';
}).filter(v => {
return v.value !== 'null';
});

if (differingElements.length > 0) {
return {
...ev2,
eventDate: moment(ev2['eventDate']).format('YYYY-MM-DD'),
update: true,
duplicates: false,
dataValues: differingElements
dataValues: _.unionWith(ev2['dataValues'].filter(e => e.value !== ''), event['dataValues'], (a, b) => {
return a.dataElement === b.dataElement;
})
};
}
return null;
Expand Down Expand Up @@ -1264,17 +1273,19 @@ export const processEvents = (program, data, eventsData) => {

if (eventDate && mapped.length > 0) {
const dataValues = mapped.map(e => {
const value = d[e.column.value];
let value = d[e.column.value];
const type = e.dataElement.valueType;
if (type === 'TEXT') {
value = String(value).trim();
}
const optionsSet = e.dataElement.optionSet;
const validatedValue = validateValue(type, value, optionsSet);

if (value !== '' && validatedValue !== null) {
return {
dataElement: e.dataElement.id,
value: validatedValue
}
} else if (value !== undefined && value !== null) {
} else if (value !== undefined && value !== null && value !== '') {
conflicts = [...conflicts, {
error: optionsSet === null ? 'Invalid value ' + value + ' for value type ' + type : 'Invalid value: ' + value + ', expected: ' + _.map(optionsSet.options, o => {
return o.code
Expand Down

0 comments on commit 2d11a46

Please sign in to comment.