Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BAH-961 | Vinisha | Translate section and table names on forms2 display control #277

Merged
merged 6 commits into from Apr 10, 2020
Merged
4 changes: 3 additions & 1 deletion ui/app/common/constants.js
Expand Up @@ -13,6 +13,7 @@ Bahmni.Common = Bahmni.Common || {};
var BACTERIOLOGY = RESTWS_V1;
var BASE_URL = hostUrl + "/bahmni_config/openmrs/apps/";
var CUSTOM_URL = hostUrl + "/implementation_config/openmrs/apps/";
var IE_APPS_API = RESTWS_V1 + "/bahmniie";

var serverErrorMessages = [
{
Expand Down Expand Up @@ -256,7 +257,8 @@ Bahmni.Common = Bahmni.Common || {};
patientFormsUrl: BAHMNI_CORE + "/patient/{patientUuid}/forms",
defaultPossibleRelativeSearchLimit: 10,
formBuilderDisplayControlType: "formsV2",
formBuilderType: "v2"
formBuilderType: "v2",
formBuilderTranslationApi: IE_APPS_API + '/form/translate'
};
})();

@@ -1,7 +1,7 @@
'use strict';

angular.module('bahmni.common.displaycontrol.observation')
.service('formRecordTreeBuildService', ['formService', function (formService) {
.service('formRecordTreeBuildService', ['formService', '$http', '$window', function (formService, $http, $window) {
var self = this;

self.build = function (bahmniObservations, hasNoHierarchy) {
Expand Down Expand Up @@ -103,7 +103,13 @@ angular.module('bahmni.common.displaycontrol.observation')
if (formDetailsAsString) {
var formDef = JSON.parse(formDetailsAsString);
formDef.version = observationForm.version;
forms.push(self.updateObservationsWithRecordTree(formDef, form));
var locale = $window.localStorage["NG_TRANSLATE_LANG_KEY"] || "en";
return formService.getFormTranslate(formDef.name, formDef.version, locale)
.then(function (response) {
var translationData = response.data;
forms.push(self.updateObservationsWithRecordTree(formDef, form, translationData));
observation.value = forms;
});
}
observation.value = forms;
});
Expand Down Expand Up @@ -132,14 +138,14 @@ angular.module('bahmni.common.displaycontrol.observation')
return member ? member.formFieldPath.split('.')[1].split('/')[0] : undefined;
};

self.updateObservationsWithRecordTree = function (formDef, form) {
self.updateObservationsWithRecordTree = function (formDef, form, translationData) {
var recordTree = getRecordTree(formDef, form.groupMembers);
recordTree = JSON.parse(JSON.stringify(recordTree));
self.createGroupMembers(recordTree, form, form.groupMembers);
self.createGroupMembers(recordTree, form, form.groupMembers, translationData);
return form;
};

self.createColumnGroupsForTable = function (record, columns, tableGroup, obsList) {
self.createColumnGroupsForTable = function (record, columns, tableGroup, obsList, translationData) {
_.forEach(columns, function (column, index) {
var obsGroup = {
"groupMembers": [],
Expand All @@ -148,16 +154,30 @@ angular.module('bahmni.common.displaycontrol.observation')
"conceptClass": null
}
};
obsGroup.concept.shortName = column.value;
var translationKey = column.translationKey;
var defaultShortName = column.value;
obsGroup.concept.shortName = self.getTranslatedShortName(translationData, translationKey, obsGroup, defaultShortName);
var columnRecord = self.getColumnObs(index, record);
column.children = columnRecord;
self.createGroupMembers(column, obsGroup, obsList);
self.createGroupMembers(column, obsGroup, obsList, translationData);
if (obsGroup.groupMembers.length > 0) {
tableGroup.groupMembers.push(obsGroup);
}
});
};

self.getTranslatedShortName = function (translationData, translationKey, obsGroup, defaultShortName) {
if (self.isTranslationKeyPresent(translationData, translationKey)) {
return translationData.labels[translationKey][0];
}
return defaultShortName;
};

self.isTranslationKeyPresent = function (translationData, translationKey) {
return translationData && translationData.labels &&
translationData.labels[translationKey][0] !== translationKey;
};

self.getColumnObs = function (columnIndex, record) {
var columnChildren = [];
_.map(record.children, function (child) {
Expand All @@ -168,7 +188,7 @@ angular.module('bahmni.common.displaycontrol.observation')
return columnChildren;
};

self.createGroupMembers = function (recordTree, obsGroup, obsList) {
self.createGroupMembers = function (recordTree, obsGroup, obsList, translationData) {
_.forEach(recordTree.children, function (record) {
if (record.control.type === 'obsControl' || record.control.type === 'obsGroupControl') {
var recordObservations = self.getRecordObservations(record.formFieldPath, obsList);
Expand All @@ -177,16 +197,16 @@ angular.module('bahmni.common.displaycontrol.observation')
});
}
else if (record.control.type === 'section') {
var sectionGroup = self.createObsGroup(record);
self.createGroupMembers(record, sectionGroup, obsList);
var sectionGroup = self.createObsGroup(record, translationData);
self.createGroupMembers(record, sectionGroup, obsList, translationData);
if (sectionGroup.groupMembers.length > 0) {
obsGroup.groupMembers.push(sectionGroup);
}
}
else if (record.control.type === "table") {
var tableGroup = self.createObsGroup(record);
var tableGroup = self.createObsGroup(record, translationData);
var columns = record.control.columnHeaders;
self.createColumnGroupsForTable(record, columns, tableGroup, obsList);
self.createColumnGroupsForTable(record, columns, tableGroup, obsList, translationData);
if (tableGroup.groupMembers.length > 0) {
obsGroup.groupMembers.push(tableGroup);
}
Expand All @@ -206,15 +226,18 @@ angular.module('bahmni.common.displaycontrol.observation')
});
};

self.createObsGroup = function (record) {
self.createObsGroup = function (record, translationData) {
var obsGroup = {
"groupMembers": [],
"concept": {
"shortName": "",
"conceptClass": null
}
};
obsGroup.concept.shortName = record.control.label.value;
var translationKey = record.control.label.translationKey;
vinishad marked this conversation as resolved.
Show resolved Hide resolved
var defaultShortName = record.control.label.value;
obsGroup.concept.shortName =
self.getTranslatedShortName(translationData, translationKey, obsGroup, defaultShortName);
return obsGroup;
};
}]);
5 changes: 5 additions & 0 deletions ui/app/common/services/formService.js
Expand Up @@ -35,11 +35,16 @@ angular.module('bahmni.common.conceptSet')
return $http.get(Bahmni.Common.Constants.formTranslationsUrl, { params: form});
};

var getFormTranslate = function (formName, formVersion, locale) {
return $http.get(Bahmni.Common.Constants.formBuilderTranslationApi, { params: {formName: formName, formVersion: formVersion, locale: locale}});
};

return {
getFormList: getFormList,
getAllForms: getAllForms,
getFormDetail: getFormDetail,
getFormTranslations: getFormTranslations,
getFormTranslate: getFormTranslate,
getAllPatientForms: getAllPatientForms
};
}]);