| Server IP : 31.14.161.123 / Your IP : 216.73.216.229 Web Server : Apache System : Linux cpanel.classit.ro 4.18.0-553.144.1.el8_10.x86_64 #1 SMP Tue Jul 14 09:26:58 EDT 2026 x86_64 User : diamedic ( 1014) PHP Version : 8.2.32 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/diamedic/public_html/gestiune-analize/ |
Upload File : |
(function (angular) {
'use strict';
angular
.module('diaMedicalPort')
.component('diaMedicalPortGrid', {
templateUrl: '/gestiune-analize/diaMedicalPortGrid.tpl.html',
bindings: {},
controller: DiaMedicalPortGridCtrl
});
DiaMedicalPortGridCtrl.$inject = ['$injector'];
function DiaMedicalPortGridCtrl($injector) {
var $ctrl = this;
var currentDate = new Date();
$ctrl.agGridApi = undefined;
$ctrl.gridOptions = undefined;
$ctrl.openFactorList = undefined;
$ctrl.availablePatientList = undefined;
$ctrl.availableFactorObject = undefined;
$ctrl.availableFactorList = undefined;
$ctrl.patientListWithStats = undefined;
$ctrl.loadingPromiseList = [];
$ctrl.dateSelectorOpened = undefined;
$ctrl.selectedMonth = currentDate.getMonth();
$ctrl.selectedYear = currentDate.getFullYear();
$ctrl.selectedDate = new Date($ctrl.selectedYear, $ctrl.selectedMonth, 15);
$ctrl.dateOptions = {
formatYear: "yy",
startingDay: 1,
datepickerMode: "month",
minMode: "month"
};
$ctrl.monthLabels = {
1: "Ian",
2: "Feb",
3: "Mar",
4: "Apr",
5: "Mai",
6: "Iun",
7: "Iul",
8: "Aug",
9: "Sep",
10: "Oct",
11: "Noi",
12: "Dec"
};
$ctrl.factorList = ['28'];
$ctrl.$injector = $injector;
}
DiaMedicalPortGridCtrl.prototype.$onInit = $onInit;
DiaMedicalPortGridCtrl.prototype.loadPatienList = loadPatienList;
DiaMedicalPortGridCtrl.prototype.loadFactorList = loadFactorList;
DiaMedicalPortGridCtrl.prototype.loadPatientListWithEntityStats = loadPatientListWithEntityStats;
DiaMedicalPortGridCtrl.prototype.onSelectedDateChange = onSelectedDateChange;
DiaMedicalPortGridCtrl.prototype.generateColumnDefFromFactor = generateColumnDefFromFactor;
DiaMedicalPortGridCtrl.prototype.addNewColumn = addNewColumn;
DiaMedicalPortGridCtrl.prototype.toggleLoading = toggleLoading;
///////////////////////////////////////////
///////////// Public methods //////////////
///////////////////////////////////////////
function $onInit() {
/*jshint validthis:true */
var $ctrl = this;
var $q = $ctrl.$injector.get('$q', 'DiaMedicalPortGridCtrl');
var $http = $ctrl.$injector.get('$http', 'DiaMedicalPortGridCtrl');
$ctrl.columnDefs = [{
headerName: 'Nume',
field: 'nume',
lockPosition: true,
pinned: 'left',
cellRenderer: 'agGroupCellRenderer',
filter: 'agTextColumnFilter',
menuTabs: ['filterMenuTab'],
suppressMenuHide: true
}];
$ctrl.detailsColumnDefs = [{
headerName: 'Luna / An',
field: 'nume',
lockPosition: true,
pinned: 'left',
filter: false
}];
$ctrl.gridOptions = {
// defaultColDef: {editable: true},
columnDefs: $ctrl.columnDefs,
masterDetail: true,
rowData: undefined,
headerHeight: 40,
editType: 'fullRow',
alignedGrids: [],
suppressContextMenu: true,
defaultColDef: {
sortable: true,
menuTabs: false,
filter: false
},
detailCellRendererParams: {
detailGridOptions: {
suppressContextMenu: true,
defaultColDef: {
sortable: false,
filter: false,
menuTabs: false,
suppressMultiSort: true
},
columnDefs: $ctrl.detailsColumnDefs,
alignedGrids: [],
onGridReady: function (a) {
console.log(a);
}
},
getDetailRowData: function (params) {
var childrenData = _.get(params, 'data.children');
var promises = [];
if (childrenData && childrenData.length) {
return params.successCallback(childrenData);
}
_.forEach($ctrl.factorList, _defferPromises);
return $q.all(promises)
.then(_updateChildrenData);
function _defferPromises(factorId) {
var deferred = $q.defer();
$http.get('http://diamedicalport.ro/analize/api/istoric_factor.php',
{
params: {
factor: factorId,
cnp: _.get(params, 'data.cnp')
},
withCredentials: true
})
.then(function (res) {
var factorKey = 'factor' + factorId;
console.log(res);
deferred.resolve(_.set({}, factorKey, res.data));
})
.catch(function (err) {
deferred.reject(err);
});
promises.push(deferred.promise);
}
function _updateChildrenData(allData) {
var generateChildren = [];
_.forEach(allData, _generateHistory);
function _generateHistory(factorData, key) {
_.forEach(factorData, _updateFactorHistory);
}
function _updateFactorHistory(factorData, factorKey) {
_.forEach(factorData, _formatHistory);
function _formatHistory(factorRowData, key) {
var _historyKey = _.get($ctrl.monthLabels, factorRowData.luna) + ' - ' + factorRowData.an;
var factorChildrenHistory = _.find(generateChildren, {nume: _historyKey});
if (!factorChildrenHistory) {
factorChildrenHistory = {
nume: _historyKey,
cnp: params.data.cnp,
luna: factorRowData.luna,
an: factorRowData.an
};
_.set(factorChildrenHistory, factorKey, factorRowData);
generateChildren.push(factorChildrenHistory);
return;
}
_.set(factorChildrenHistory, factorKey, factorRowData);
}
}
_.set(params, 'data.children', childrenData);
return params.successCallback(generateChildren);
}
}
},
getMainMenuItems: function (a, b) {
// console.log(a, b);
},
// stopEditingWhenGridLosesFocus: true,
onCellValueChanged: function (event) {
if(event.newValue === event.oldValue){
return;
}
$ctrl.toggleLoading(true);
var factorKey = 'factor' + event.colDef.factorId;
var objectToSave = {
an: $ctrl.selectedYear,
cnp: event.data.cnp,
factor: event.colDef.factorId,
id: _.get(event, ['data', factorKey, 'id']),
luna: $ctrl.selectedMonth + 1,
name: event.colDef.headerName,
val: event.newValue || undefined
};
return $http
.post('http://diamedicalport.ro/analize/api/salvare.php', objectToSave)
.then(_resetLoadingState);
function _resetLoadingState(newID){
_.set(event, ['data', factorKey, 'id'], newID.data);
$ctrl.toggleLoading(false);
}
//http://diamedicalport.ro/analize/api/salvare.php
},
// onRowValueChanged: function (event) {
// console.log('onRowValueChanged: ');
// console.log(event.data);
// },
onGridReady: function (params) {
//console.log(params);
$ctrl.agGridApi = params.api;
// console.log(params);
$ctrl.loadPatientListWithEntityStats();
}
};
$ctrl.loadFactorList();
$ctrl.loadPatienList();
}
function generateColumnDefFromFactor(factorId) {
/*jshint validthis:true */
var $ctrl = this;
var $http = $ctrl.$injector.get('$http', 'DiaMedicalPortGridCtrl');
var $filter = $ctrl.$injector.get('$filter', 'DiaMedicalPortGridCtrl');
var factorKey = 'factor' + factorId;
var _columnDefLoadingPromise;
_columnDefLoadingPromise = $http
.get('http://diamedicalport.ro/analize/api/rezultate_analiza.php',
{
params: {
factor: factorId,
luna: $ctrl.selectedMonth + 1,
an: $ctrl.selectedYear
},
withCredentials: true
}
)
.then(function (patientList) {
return patientList.data;
})
.then(_addStatsInPatientList)
.then(_addColumnDef);
_.concat($ctrl.loadingPromiseList, _columnDefLoadingPromise);
function _addStatsInPatientList(factorResults) {
_.map($ctrl.gridOptions.rowData, _mapFactorsToPatient);
$ctrl.agGridApi.refreshCells();
return factorResults;
function _mapFactorsToPatient(patientData) {
var _patientFactor = _.chain(factorResults)
.find({u_cnp: patientData.cnp})
.set('factorId', factorId)
.value();
// _.set(patientData, 'children', _.cloneDeep($ctrl.gridOptions.rowData));
_.set(patientData, factorKey, _patientFactor);
return patientData;
}
}
function _addColumnDef(factorResults) {
var newColumnDef;
var _valueGetter = 'data.' + factorKey + '.value';
var _headerName = _.get($ctrl.availableFactorObject, factorId);
var _isEditable = !!_.get(_headerName, 'editable');
_headerName = _.get(_headerName, 'nume') || _.get(_headerName, 'cautare');
if (_.chain($ctrl.agGridApi).get('columnController.columnDefs').find({factorId: factorId}).value()) {
return;
}
newColumnDef = {
headerName: _headerName,
editable: _isEditable,
factorId: factorId,
valueGetter: function (params) {
var _parsedValue = _.chain(params)
.get(_valueGetter, undefined);
if (!_isEditable) {
_parsedValue = _parsedValue.round(2)
.defaultTo(undefined)
.value();
return _parsedValue && _parsedValue.toFixed(2);
} else {
return _parsedValue.value();
}
},
valueSetter: function (params) {
return _.set(params, _valueGetter, params.newValue);
},
cellClass: function(params) {
var cellValue = _.toNumber(_.get(params, 'value'));
var factorID = _.get(params, ['colDef', 'factorId']);
var factorProps = _.find($ctrl.availableFactorList, {id: factorID});
var minValue = _.toNumber(factorProps.min);
var maxValue = _.toNumber(factorProps.max);
if(!cellValue){
return;
}
if(factorProps.max && _.gt(cellValue, maxValue)) {
return 'value-high';
}
if(factorProps.min && _.lt(cellValue, minValue)) {
return 'value-low';
}
return;
}
};
$ctrl.gridOptions.columnDefs = _.concat($ctrl.gridOptions.columnDefs, newColumnDef);
var newDetailColumnDef = _.cloneDeep(newColumnDef);
newDetailColumnDef.editable = false;
$ctrl.gridOptions.detailCellRendererParams.detailGridOptions.columnDefs = _.concat($ctrl.gridOptions.detailCellRendererParams.detailGridOptions.columnDefs, newDetailColumnDef);
$ctrl.agGridApi.setColumnDefs($ctrl.gridOptions.columnDefs);
}
}
/**
* @description
*/
function loadPatienList() {
/*jshint validthis:true */
var $ctrl = this;
var $http = $ctrl.$injector.get('$http', 'DiaMedicalPortGridCtrl');
return $http
.get('http://diamedicalport.ro/analize/api/lista_pacienti.php',
{params: {}}
)
.then(function (patientList) {
return patientList.data;
})
.then(_setGridRowData);
function _setGridRowData(patientList) {
$ctrl.availablePatientList = patientList;
$ctrl.patientListWithStats = patientList;
$ctrl.gridOptions.rowData = patientList;
}
}
/**
* @description
*/
function loadFactorList() {
/*jshint validthis:true */
var $ctrl = this;
var $http = $ctrl.$injector.get('$http', 'DiaMedicalPortGridCtrl');
return $http
.get('http://diamedicalport.ro/analize/api/toti_factorii.php',
{params: {}}
)
.then(function (factorList) {
return factorList.data;
})
.then(_updateFactorList);
function _updateFactorList(factorList) {
$ctrl.availableFactorObject = factorList;
$ctrl.availableFactorList = _.chain(factorList).values().orderBy('cautare').value();
}
}
/**
* @description
* Updates $ctrl.inventoryForecastRequest with the new request
*/
function loadPatientListWithEntityStats() {
/*jshint validthis:true */
var $ctrl = this;
_.forEach($ctrl.factorList, $ctrl.generateColumnDefFromFactor.bind($ctrl));
}
/**
* @description
*/
function onSelectedDateChange(selectedDate) {
/*jshint validthis:true */
var $ctrl = this;
$ctrl.selectedMonth = selectedDate.getMonth();
$ctrl.selectedYear = selectedDate.getFullYear();
$ctrl.agGridApi.forEachNode(function(a){a.setExpanded(false);});
_.map($ctrl.gridOptions.rowData, _removeChildrenData);
$ctrl.loadPatientListWithEntityStats();
function _removeChildrenData(rowData) {
_.unset(rowData, 'children');
}
}
/**
* @description
*/
function addNewColumn(columnDetails) {
/*jshint validthis:true */
var $ctrl = this;
var currentColumnDef = _.get($ctrl.agGridApi, 'columnController.columnDefs');
var factorId = columnDetails.id;
$ctrl.agGridApi.forEachNode(function(a){a.setExpanded(false);});
_.map($ctrl.gridOptions.rowData, _removeChildrenData);
function _removeChildrenData(rowData) {
_.unset(rowData, 'children');
}
// $ctrl.openFactorList = false;
if (_.includes($ctrl.factorList, factorId)) {
_.pull($ctrl.factorList, factorId);
_.remove(currentColumnDef, {factorId: factorId});
_.remove($ctrl.gridOptions.detailCellRendererParams.detailGridOptions.columnDefs, {factorId: factorId});
$ctrl.agGridApi.setColumnDefs($ctrl.gridOptions.columnDefs);
return;
}
$ctrl.factorList.push(factorId);
$ctrl.generateColumnDefFromFactor(factorId);
}
/**
* @description
*/
function toggleLoading(enableLoading) {
/*jshint validthis:true */
var $ctrl = this;
if(enableLoading){
return $ctrl.agGridApi.showLoadingOverlay();
}
return $ctrl.agGridApi.hideOverlay();
}
}(window.angular));