tussenopslag

This commit is contained in:
Monique
2022-10-25 13:43:24 +02:00
parent ab9a53542e
commit 5dfba96fc6
8 changed files with 308 additions and 130 deletions
@@ -15,6 +15,7 @@ class Streefcijfers extends MY_Controller{
};// if
}
function gethierarchie($selfid){
if (!$this->userid) die;
$organisatie= $this->Organisaties_model->get_record_by_id($selfid);
@@ -127,8 +128,19 @@ class Streefcijfers extends MY_Controller{
return $ambitieorgs;
}
function checkrecht(){
if (!$this->userid) die;
$manage = 'F';
if($this->super) $manage = 'T';
else {
$result = $this->Autorisatiesnivos_model->checkmanage($this->userid, $this->orgid);
if($result) $manage = 'T';
}
$this->json($manage);
}
function mh_getorgversies_ambities(){
function getambitie(){
if (!$this->userid) die;
$orgid = $this->uri->segment(4);
$module = $this->session->userdata('module');
@@ -148,31 +160,41 @@ function mh_getorgversies_ambities(){
}
$toporgs = rtrim($toporgs, ',' );
$orgversies = $this->Orgversies_model->getorgversies($toporgs, $module);
if(!$orgversies) echo json_encode("geen orgversies");
$ambitie = $this->Ambities_model->mh_get_ambitie($module, $ambitieorgs, $toporgs);
if(!$ambitie) return json_encode("Er is geen actieve versie bij het instrument");
$ambities = [];
foreach($orgversies as $orgversie) {
$ambitie = $this->Ambities_model->get_ambities_orgversie($orgversie->id, $ambitieorgs, $toporgs);
if ($ambitie) $ambtities [] = $ambitie;
else {
$aantalY = $this->Ijkpunten_model->telijkpunten($orgversie->id);
$ambities[] = ['id' => 0,
'gemscore' => 80,
'aantalY' => $aantalY,
'xijkpunten' => round($aantalY * 0.8),
'z_procent' => 60,
'orgversieid' => $orgversie->id,
'geldigvanaf' => $orgversie->geldigvanaf,
'geldigtm' => $orgversie->geldigtm,
'periodenummer' => $orgversie->periodenummer,
'actief' => $orgversie->actief,
'naam' => $orgversie->naam,
'soort' => 0];
}
echo json_encode($ambitie);
echo json_encode($ambities);
}
function saveAmbitie(){
if (!$this->userid) die;
$orgversieid = $this->clean_input("orgversieid");
$orgid = $this->clean_input("orgid");
if($this->super == false){
if ($orgid != $this->orgid) return;
$result = $this->Autorisatiesnivos_model->checkmanage($this->userid, $this->orgid);
if(!$result) return;
}
$bestaand = $this->Ambities_model->get_fieldvalue(['organisatie_id'=>$orgid,
'orgversie_id' =>$orgversieid], 'id');
if(!$bestaand) {
$id = $this->Ambities_model->insert_record([
'organisatie_id' => $orgid,
'orgversie_id' => $orgversieid,
'gem_score' => $this->clean_input("gemscore"),
'x_ijkpunten' => $this->clean_input("xijkpunten"),
'z_procent' => $this->clean_input("zprocent")
]);
}
$this->json($id);
}
+33 -22
View File
@@ -103,31 +103,42 @@ class Ambities_model extends MY_Model{
return $ambitie;
}
function get_ambities_orgversie($orgversieid, $ambitieorgs, $toporgs)
{
$this->sql = "
SELECT A.id,
A.gem_score AS gemscore,
A.z_procent AS zprocent,
OV.id AS orgversie_id,
DATE_FORMAT( OV.geldigvanaf, '%d-%m-%Y') as geldigvanaf,
DATE_FORMAT( OV.geldigtm, '%d-%m-%Y') as geldigtm,
OV.periodenummer, OV.actief, V.naam,
O.soort
function mh_get_ambitie($moduleid, $ambitieorgs, $toporgs){
$this->sql = " SELECT COALESCE(A.id, 0) AS ambitieID,
COALESCE(A.gem_score, 80) AS gemscore,
COUNT(Y.id) AS aantalY,
COALESCE(A.x_ijkpunten, ROUND(COUNT(Y.id) * 0.8)) AS xijkpunten,
COALESCE(A.z_procent, 60) AS zprocent,
OV.id AS orgversie_id,
DATE_FORMAT( OV.geldigvanaf, '%d-%m-%Y') as geldigvanaf,
DATE_FORMAT( OV.geldigtm, '%d-%m-%Y') as geldigtm,
OV.periodenummer, V.naam,
COALESCE(O.soort, 0) AS soort,
O.id AS orgID,
CASE WHEN O.soort IS NULL THEN
'standaard'
WHEN O.soort = 1 THEN
'swv'
WHEN O.soort = 2 THEN
'regio'
WHEN O.soort = 3 THEN
'bestuur'
WHEN O.soort = 4 THEN
'school'
END AS ambitievan
FROM tb_orgversies OV
JOIN tb_versies V ON OV.versie_id = V.id
JOIN tb_ambities A ON A.orgversie_id = OV.id
JOIN tb_organisaties O ON A.organisatie_id = O.id
WHERE A.organisatie_id IN ({$ambitieorgs})
JOIN tb_versies V ON OV.versie_id = V.id
JOIN tb_ijkpunten Y ON V.id = Y.versie_id
LEFT JOIN tb_ambities A ON A.orgversie_id = OV.id
LEFT JOIN tb_organisaties O ON A.organisatie_id = O.id
WHERE (A.organisatie_id IN ({$ambitieorgs}) OR A.id IS NULL)
AND OV.organisatie_id IN ({$toporgs})
AND OV.id = {$orgversieid}
AND V.modulenr = {$moduleid}
AND OV.actief = 1
AND Y.disabled = 'F'
ORDER BY soort DESC
LIMIT 1;
";
LIMIT 1 ";
return $this->get_query_result();
}
@@ -43,29 +43,6 @@ class Orgversies_model extends MY_Model{
return $this->get_query_result();
}
function getorgversies($toporgs, $module){
$this->sql="SELECT OV.id,
periodenummer,
OV.actief,
DATE_FORMAT(geldigvanaf,'%d-%m-%Y') as geldigvanaf,
DATE_FORMAT(geldigtm,'%d-%m-%Y') as geldigtm,
V.naam,
COUNT(Y.id) AS aantalY
FROM tb_orgversies OV
JOIN tb_versies V ON V.id = versie_id
JOIN tb_ijkpunten Y ON V.id = Y.versie_id
WHERE OV.organisatie_id IN ({$toporgs})
AND V.modulenr = {$module}
AND Y.disabled = 'F' ";
$this->sql .=" GROUP BY OV.id
ORDER BY periodenummer DESC";
return $this->get_query_result();
}
function getVersieinfo($orgversieid){
$this->sql="SELECT OV.id AS orgversieid,
OV.organisatie_id,
@@ -50,5 +50,17 @@ class Autorisatienivos_model extends MY_Model{
return $this->get_query_row('nivo');
}
function checkmanage($userid, $orgid){
$this->sql=" SELECT nivo
FROM tb_autorisatienivos AN
JOIN tb_autorisaties A ON A.nivo_id = AN.id
JOIN tb_orgusers OU ON OU.id = A.orguser_id
WHERE OU.user_id = {$userid}
AND OU.organisatie_id = {$orgid}
AND AN.nivo IN (1, 4, 16, 64, 256) ";
return $this->get_query_row('nivo');
}
}
@@ -1,7 +1,8 @@
<div class="col-sm-12 mainpagina submenupage" id ="pagcompactsop">
<h2 data-bind="text: 'Compact ' + label()"></h2>
<?php $this->load->view("monpas/compactsop/maaksoponderdelen/knoppenbalk"); ?>
<?php $this->load->view("monpas/compactsop/maaksoponderdelen/knoppenbalk"); ?>
<div class="row" style="margin-left: 10px;" data-bind="visible: toonOnderdelen()">
<?php $this->load->view("monpas/compactsop/maaksoponderdelen/kiesonderdelen"); ?>
@@ -1,6 +1,6 @@
<div class="col-sm-12 mainpagina" id ="pagstreefcijfers">
<div class="row" >
<div class="col-sm-12 col-md-4">
<div class="col-sm-12 col-md-3">
<h3>Selecteer een organisatieniveau</h3>
@@ -205,40 +205,113 @@
</div >
</div>
<div class="col-sm-12 col-md-8" data-bind="visible: selectedOrg().id !=0">
<div class="col-sm-12 col-md-9" data-bind="visible: selectedOrg().id !=0" style="margin: 0; padding:0">
<h4> Criteria voor scholen onder organisatie:
<span data-bind="text: selectedOrg().naam"></span>
</h4>
<table style="width: 100%;">
<table style="width: 100%;padding: 0; margin: 0; ">
<thead>
<tr>
<th style="width:20px">nr</th>
<th >versie</th>
<th style="width:95px">van</th>
<th style ="width:95px">t/m</th>
<th style="width:100px"> gem.<br/>score</th>
<th style="width:280px">minimum <?=$labels['ijkpunten']?> </th>
<th style="width: 20px">D</th>
<th style="width: 3%; vertical-align: text-top">nr</th>
<th style="width: 15%; vertical-align: text-top">versie</th>
<th style="width: 13%; vertical-align: text-top">van</th>
<th style="width: 13%; vertical-align: text-top">t/m</th>
<th style="width: 8%; vertical-align: text-top"> gem. score</th>
<th style="width: 36%; vertical-align: text-top">minimum</th>
<th style="width: 9%; vertical-align: text-top">criteria van</th>
<th style="width: 3%; vertical-align: text-top"></th>
</tr>
</thead>
<tbody data-bind="foreach: versieambities">
<tbody data-bind="with: versieambities ? versieambities : '' ">
<tr>
<td data-bind="text: periodenummer"></td>
<td data-bind="text:naam"></td>
<td data-bind="text: geldigvanaf"></td>
<td data-bind="text: geldigtm"></td>
<td><input class="integer"
data-bind="textInput: gemscore, event:{input: $root.fUpdateAmbitie}, enable: wijzigok" />%</td>
<td><input class="integer"
data-bind="textInput: xijkpunten, event:{input: $root.fUpdateAmbitie},enable:wijzigok" /> ijkpunten
op <input class="integer"
data-bind="textInput: zprocent, event:{input: $root.fUpdateAmbitie}, enable:wijzigok" />% of hoger
<td><input class="integer" type="number" min="0" max="100" step="5"
data-bind="textInput: gemscore,
event: {input: $parent.fUpdateAmbitie},
enable: $parent.manage() == 'T' && $parent.toporg().soort == soort " />%</td>
<td><input class="integer" type="number" min="0" step="1"
data-bind="textInput: xijkpunten,
event: {input: $parent.fUpdateAmbitie},
attr: {'max': aantalY},
enable: $parent.manage() =='T' && $parent.toporg().soort == soort " /> ijkpunten
op <input class="integer" type="number" min="0" max="100" step="5"
data-bind="textInput: zprocent,
event: {input: $parent.fUpdateAmbitie},
enable: $parent.manage() =='T' && $parent.toporg().soort == soort " />
<span > % of hoger</span>
</td>
<td class="glyphicon glyphicon-trash" data-bind="click:$root.fDelete"></td>
</tr>
<td data-bind="text: ambitievan " ></td>
<td style="text-align: right">
<span class="glyphicon glyphicon-trash"
data-bind="visible: $parent.manage() =='T' && $parent.toporg().soort == soort ,
click:$root.fDelete ">
</span>
</td>
</tr>
<!-- ko if: $parent.insert() == false -->
<tr>
<td colspan="2">
<button style="background-color: #A28A29; color: white; box-shadow: 1px 1px 2px #faf7eb;
font-weight: bold; margin-top; 20px;"
data-bind="click: $parent.fNew,
visible: $parent.manage() =='T' &&
$parent.toporg().soort != soort
&& $parent.toporg().id == $parent.selectedOrg().id ">nieuw
</button>
</td>
<td colspan="6"></td>
</tr>
<!--/ko -->
<!-- ko if: $parent.insert() -->
<tr>
<td data-bind="text: periodenummer "></td>
<td data-bind="text: naam "></td>
<td data-bind="text: geldigvanaf"></td>
<td data-bind="text: geldigtm"></td>
<td><input type="number" min="0" max="100" step="5" class="integer"
data-bind="textInput: $parent.scoreNieuw "/>%</td>
<td><input type="number" min="0" class="integer"
data-bind="textInput: $parent.ijkNieuw,
attr: {'max': aantalY} " /> ijkpunten
op <input type="number" min="0" max="100" step="5" class="integer"
data-bind="textInput: $parent.procentNieuw" />% of hoger
</td>
<td data-bind="text: nieuw " ></td>
<td >
</td>
</tr>
<tr>
<td colspan="2">
<button style="background-color: #A28A29; color: white; box-shadow: 1px 1px 2px #faf7eb;
font-weight: bold; margin-top; 20px;"
data-bind="click: $parent.fOpslaan ">opslaan
</button>
<button style="background-color: #f1f1f1; box-shadow: 1px 1px 2px ghostwhite;
font-weight: bold; margin-top; 20px;"
data-bind="click: $parent.fAnnuleer ">annuleer
</button>
</td>
<td colspan="4"></td>
</tr>
<!--/ko -->
</tbody>
</table>
</div> <!-- rechts -->
</div>
+1 -1
View File
@@ -895,7 +895,7 @@ tr.selected, td.selected{
.integer{
text-align: right;
padding-right: 3px;
max-width: 40px;
max-width: 50px;
}
.datum{
width: 80px;
+123 -41
View File
@@ -8,8 +8,10 @@ $(function(){
ls.initStreefcijfersModel = function(){
var timeout;
function fAddVersieAmbitie(p){
this.id = p.id; // ambitie id
function fAddVersieAmbitie(i, p, toporgsoort){
let dit = this;
this.id = p.ambitieID; // ambitie id
this.orgID = p.orgID;
this.periodenummer = p.periodenummer;
this.naam = p.naam ; // versienaam
this.orgversieid = p.orgversie_id;
@@ -21,9 +23,22 @@ ls.initStreefcijfersModel = function(){
},this);
this.gemscore = ko.observable(p.gemscore);
this.xijkpunten = ko.observable(p.xijkpunten);
this.zprocent = ko.observable(p.zprocent);
this.wijzigok = ko.observable(true);
this.aantalY = p.aantalY;
this.xijkpunten = ko.observable(p.xijkpunten);
this.ambitievan = ko.observable(p.ambitievan);
this.soort = p.soort;
this.nieuw = ko.observable('');
switch(Number(toporgsoort)){
case 1: dit.nieuw = 'swv';
break;
case 2: dit.nieuw = 'regio';
break;
case 3: dit.nieuw = 'bestuur';
break;
case 4: dit.nieuw = 'school';
break;
}
}
@@ -89,16 +104,20 @@ ls.initStreefcijfersModel = function(){
}
else {
ls.StreefcijfersModel = {
versieambities : ko.observableArray([]),
versieambities : ko.observable(),
toporg : ko.observableArray([]),
orgsoort : ko.observable(1),
orgversions : ko.observableArray([]),
selectedOrgversion : ko.observable(''),
selectedOrg : ko.observable(''),
userniveau : ko.observable(4),
inzage : ko.observable(),
manage : ko.observable('F'),
bezig : ko.observable(false),
isSWV : ko.observable(false),
insert : ko.observable(false),
scoreNieuw : ko.observable(100),
ijkNieuw : ko.observable(0),
procentNieuw : ko.observable(100),
initBindings :function(){
var self = ls.StreefcijfersModel;
@@ -112,37 +131,42 @@ ls.initStreefcijfersModel = function(){
var self = ls.StreefcijfersModel;
self.toporg('');
$.post("index.php/monpas/rapijkpunten/getorgs", function(data){
self.bezig(true);
if (data.organisatie){
$.post("index.php/monpas/streefcijfers/checkrecht", function(data){
if(data) {self.manage(data);}
$.post("index.php/monpas/rapijkpunten/getorgs", function(data){
self.bezig(true);
if (data.organisatie) {
self.orgsoort(data.soort);
switch (self.orgsoort()) {
case 1:
self.toporg(new fAddSWV(data.organisatie));
self.isSWV(true);
break;
case 2:
self.toporg(new fAddKamer(data.organisatie));
break;
case 3:
self.toporg(new fAddBG(data.organisatie));
break;
case 4:
self.toporg(new fAddSchool(data.organisatie));
break;
} // switch
self.orgsoort(data.soort);
switch (self.orgsoort()){
case 1: self.toporg(new fAddSWV(data.organisatie));
self.isSWV(true);
break;
case 2: self.toporg(new fAddKamer(data.organisatie));
break;
case 3: self.toporg(new fAddBG(data.organisatie));
break;
case 4: self.toporg(new fAddSchool(data.organisatie));
break;
} // switch
$.post('index.php/monpas/rapijkpunten/getusernivo', function(result){
self.userniveau(result);
self.selectedOrg(self.toporg());
$.post('index.php/monpas/rapmatrix/checkinzage', function(result){
self.inzage(result);
},'json');
}
self.fGetAmbities();
},'json');
}
self.bezig(false);
self.bezig(false);
self.fGetAmbitie();
},'json');
},'json');
},
fToggleGeopend: function(){
@@ -159,16 +183,18 @@ ls.initStreefcijfersModel = function(){
self.isSWV(true);
}
self.fGetAmbities();
self.fGetAmbitie();
},
fGetAmbities : function() {
fGetAmbitie : function() {
var self = ls.StreefcijfersModel;
self.versieambities.removeAll();
$.post("index.php/monpas/streefcijfers/mh_getorgversies_ambities/" + self.selectedOrg().id, function(data){
self.versieambities('');
$.post("index.php/monpas/streefcijfers/getambitie/" + self.selectedOrg().id, function(data){
if (data){
let soort = self.toporg().soort;
$.each(data, function(i,p){
self.versieambities.push(new fAddVersieAmbitie(p));
self.versieambities(new fAddVersieAmbitie(i,p, soort ));
});
}
},'json');
@@ -190,12 +216,68 @@ ls.initStreefcijfersModel = function(){
"gemscore" : dit.gemscore(),
"xijkpunten" : dit.xijkpunten(),
"zprocent" : dit.zprocent()}
// $.post("index.php/monpas/streefcijfers/updateambitie", submitData, function(newid){
// if (newid) {self.fGetAmbities();};
// self.bezig(false);
// },'json');
$.post("index.php/monpas/streefcijfers/updateambitie", submitData, function(newid){
if (newid) {self.fGetAmbitie()}
self.bezig(false);
},'json');
},700);
},
fNew: function(){
var self = ls.StreefcijfersModel;
self.insert(true);
self.scoreNieuw(this.gemscore());
self.ijkNieuw(this.xijkpunten());
self.procentNieuw(this.zprocent());
},
fOpslaan: function (){
var self = ls.StreefcijfersModel;
let dit = this;
if(!self.selectedOrg().id) return
if(self.toporg().id !== self.selectedOrg().id) return;
if (timeout){
clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(function(){
self.bezig(true);
var submitData={
"orgversieid" : dit.orgversieid,
"orgid" : self.selectedOrg().id,
"gemscore" : self.scoreNieuw(),
"xijkpunten" : self.ijkNieuw(),
"zprocent" : self.procentNieuw()
}
console.log(submitData, "data")
$.post("index.php/monpas/streefcijfers/saveAmbitie", submitData, function(newid){
if (newid) {self.fGetAmbitie()}
self.bezig(false);
self.insert(false);
self.scoreNieuw(0);
self.ijkNieuw(0);
self.procentNieuw(0);
},'json');
},700);
},
fAnnuleer: function(){
var self = ls.StreefcijfersModel;
self.insert(false);
self.scoreNieuw(0);
self.ijkNieuw(0);
self.procentNieuw(0);
},
fDelete:function(){
var self = ls.StreefcijfersModel;
if (self.bezig()) return;