FilterWidget: fixes and improvements

This commit is contained in:
Paolo
2018-06-06 17:50:28 +02:00
30 changed files with 1700 additions and 810 deletions
+2 -2
View File
@@ -23,7 +23,7 @@
}
/*arrow toggle for panels*/
.panel-heading .accordion-toggle:before{
.panel-heading .accordion-toggle.arrowcollapse:before{
/* symbol for "opening" panels */
font-family: 'Glyphicons Halflings'; /* essential for enabling glyphicon */
content: "\e114"; /* adjust as needed, taken from bootstrap.css */
@@ -32,7 +32,7 @@
color: grey; /* adjust as needed */
}
.panel-heading .accordion-toggle.collapsed:before{
.panel-heading .accordion-toggle.collapsed.arrowcollapse:before{
/* symbol for "collapsed" panels */
content: "\e080"; /* adjust as needed, taken from bootstrap.css */
}
+23 -9
View File
@@ -32,7 +32,7 @@ function sideMenuHook()
{
if (typeof refreshSideMenu == 'function')
{
refreshSideMenu();
InfocenterPersonDataset.refreshSideMenu();
}
}
}
@@ -107,10 +107,10 @@ var FHC_FilterWidget = {
_resetAll: function() {
//
$("#dragAndDropFieldsArea").html("");
$("#addField").html("<option value=\"\">Select a field to add...</option>");
$("#addField").html('<option value="">' + FHC_PhraseLib.t('ui', 'bitteEintragWaehlen') + '</option>');
//
$("#appliedFilters").html("");
$("#addFilter").html("<option value=\"\">Select a filter to add...</option>");
$("#addFilter").html('<option value="">' + FHC_PhraseLib.t('ui', 'bitteEintragWaehlen') + '</option>');
},
/**
@@ -289,6 +289,9 @@ var FHC_FilterWidget = {
},
{
successCallback: function(data, textStatus, jqXHR) {
// Tablesorter filter local storage clean
$("#filterTableDataset").trigger("filterResetSaved");
FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR);
}
}
@@ -344,8 +347,7 @@ var FHC_FilterWidget = {
fieldToDisplay = data.columnsAliases[i];
}
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
$("#addField").append(strDropDown);
$("#addField").append('<option value="' + fieldName + '">' + fieldToDisplay + '</option>');
}
}
}
@@ -360,6 +362,9 @@ var FHC_FilterWidget = {
},
{
successCallback: function(data, textStatus, jqXHR) {
// Tablesorter filter local storage clean
$("#filterTableDataset").trigger("filterResetSaved");
FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR);
}
}
@@ -517,8 +522,7 @@ var FHC_FilterWidget = {
fieldToDisplay = data.columnsAliases[i];
}
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
$("#addFilter").append(strDropDown);
$("#addFilter").append('<option value="' + fieldName + '">' + fieldToDisplay + '</option>');
}
}
}
@@ -764,9 +768,19 @@ var FHC_FilterWidget = {
&& $('#filterTableDataset').hasClass('table-condensed'))
{
$("#filterTableDataset").tablesorter({
widgets: ["zebra", "filter"]
widgets: ["zebra", "filter"],
widgetOptions: {
filter_saveFilters : true
}
});
// reset filter storage if there is a filter id in url TODO: find better solution
var filter_id = FHC_AjaxClient.getUrlParameter("filter_id");
if (typeof filter_id !== 'undefined')
{
$("#filterTableDataset").trigger("filterResetSaved");
}
var config = $('#filterTableDataset')[0].config;
$.tablesorter.updateAll(config, true, null);
}
@@ -822,7 +836,7 @@ $(document).ready(function() {
filter_page: FHC_FilterWidget.getFilterPage()
},
{
successCallback: refreshSideMenu // NOTE: to be checked
successCallback: InfocenterPersonDataset.refreshSideMenu // NOTE: to be checked
}
);
}
+73
View File
@@ -0,0 +1,73 @@
/**
* FH-Complete
*
* @package
* @author
* @copyright Copyright (c) 2016 fhcomplete.org
* @license GPLv3
* @link https://fhcomplete.org
* @since Version 1.0.0
*/
/**
* Definition and initialization of object FHC_PhraseLib
*/
var FHC_PhraseLib = {
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Returns the phrase-text in the user's language
* @param {String} category : phrase-category
* @param {String} phrase : phrase-name
* @param {array} params : String-parameters to be set in variables in phrasentext
* @returns {String} : phrase-text
*/
t: function (category, phrase, params = []) {
// Checks if FHC_JS_PHRASES_STORAGE_OBJECT is an array
if ($.isArray(FHC_JS_PHRASES_STORAGE_OBJECT))
{
// loop through global JS PHRASES STORAGE OBJECT and search for phrase
for (i in FHC_JS_PHRASES_STORAGE_OBJECT)
{
var phraseObj = FHC_JS_PHRASES_STORAGE_OBJECT[i]; // Single phrase object
// If the single phrase match the given parameters and is not an empty string
if (phraseObj.category == category
&& phraseObj.phrase == phrase
&& phraseObj.text != null
&& phraseObj.text.trim() != '')
{
// If params is null or not an array
if (params == null || (params != null && !$.isArray(params)))
{
params = [];
}
return FHC_PhraseLib._replacePhraseVariable(phraseObj.text, params); // parsing
}
}
}
return '<< PHRASE ' + phrase + ' >>';
},
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Returns phrase with variables being replaced
* @param {String} phrase : phrasen-text (with one ore more variables)
* @param {array} replaceStringArr : String-array to be set in variables in phrasentext (order matters)
* @returns {String} : replaced phrasen-text
*/
_replacePhraseVariable: function (phrase, replaceStringArr) {
for (var i = 0; i < replaceStringArr.length; i++)
{
phrase = phrase.replace(/\{(.*?)\}/, replaceStringArr[i]);
}
return phrase;
}
};
+16 -21
View File
@@ -6,9 +6,8 @@ const CALLED_PATH = FHC_JS_DATA_STORAGE_OBJECT.called_path;
/**
* javascript file for infocenterDetails page
*/
$(document).ready(
function ()
{
$(document).ready(function ()
{
//initialise table sorter
Tablesort.addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
Tablesort.addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
@@ -133,7 +132,7 @@ $(document).ready(
var notizTitle = $(this).find("td:eq(1)").text();
var notizContent = this.title;
$("#notizform label:first").text("Notiz ändern").css("color", "red");
$("#notizform label:first").text(FHC_PhraseLib.t('infocenter', 'notizAendern')).css("color", "red");
$("#notizform :input[type='reset']").css("display", "inline-block");
$("#notizform :input[name='hiddenNotizId']").val(notizId);
@@ -209,8 +208,7 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getLastPrestudentWithZgvJson/" + encodeURIComponent(personid),
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
@@ -243,7 +241,7 @@ var InfocenterDetails = {
saveZgv: function(data)
{
var zgvError = function(){
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-danger'>Fehler beim Speichern der ZGV!</span>&nbsp;&nbsp;");
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-danger'>" + FHC_PhraseLib.t('ui', 'fehlerBeimSpeichern') + "</span>&nbsp;&nbsp;");
};
var prestudentid = data.prestudentid;
@@ -258,7 +256,7 @@ var InfocenterDetails = {
if (FHC_AjaxClient.hasData(data))
{
InfocenterDetails._refreshLog();
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-success'>ZGV erfolgreich gespeichert!</span>&nbsp;&nbsp;");
$("#zgvSpeichern_" + prestudentid).before("<span id='zgvSpeichernNotice' class='text-success'>" + FHC_PhraseLib.t('ui', 'gespeichert') + "</span>&nbsp;&nbsp;");
}
else
{
@@ -319,13 +317,11 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getStudienjahrEnd",
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
if (data)
{
console.log("studienjahr end executed");
var engdate = $.datepicker.parseDate("yy-mm-dd", data);
var gerdate = $.datepicker.formatDate("dd.mm.yy", engdate);
$("#parkdate").val(gerdate);
@@ -339,8 +335,7 @@ var InfocenterDetails = {
{
FHC_AjaxClient.ajaxCallGet(
CALLED_PATH + "/getParkedDate/"+encodeURIComponent(personid),
{
},
null,
{
successCallback: function(data, textStatus, jqXHR) {
InfocenterDetails._refreshParking(data);
@@ -392,11 +387,11 @@ var InfocenterDetails = {
if (data.length > 0)
InfocenterDetails.getParkedDate(personid);
else
$("#unparkmsg").removeClass().addClass("text-warning").text(" Nichts zum Ausparken.");
$("#unparkmsg").removeClass().addClass("text-warning").text(FHC_PhraseLib.t('infocenter', 'nichtsZumAusparken'));
}
},
errorCallback: function(){
$("#unparkmsg").removeClass().addClass("text-danger").text(" Fehler beim Ausparken!");
$("#unparkmsg").removeClass().addClass("text-danger").text(FHC_PhraseLib.t('infocenter', 'fehlerBeimAusparken'));
},
veilTimeout: 0
}
@@ -440,8 +435,8 @@ var InfocenterDetails = {
{
$("#parking").html(
'<div class="form-group form-inline">'+
'<button class="btn btn-default" id="parklink" type="button""><i class="fa fa-clock-o"></i>&nbsp;BewerberIn parken</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+
'bis&nbsp;&nbsp;'+
'<button class="btn btn-default" id="parklink" type="button""><i class="fa fa-clock-o"></i>&nbsp;' + FHC_PhraseLib.t('infocenter', 'bewerberParken') + '</button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+
FHC_PhraseLib.t('global', 'bis') + '&nbsp;&nbsp;'+
'<input id="parkdate" type="text" class="form-control" placeholder="Parkdatum" style="height: 25px; width: 99px">&nbsp;'+
'<span class="text-danger" id="parkmsg"></span>'+
'</div>');
@@ -467,8 +462,8 @@ var InfocenterDetails = {
var parkdate = $.datepicker.parseDate("yy-mm-dd", date);
var gerparkdate = $.datepicker.formatDate("dd.mm.yy", parkdate);
$("#parking").html(
'BewerberIn geparkt bis '+gerparkdate+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+
'<button class="btn btn-default" id="unparklink"><i class="fa fa-sign-out"></i>&nbsp;BewerberIn ausparken</button>&nbsp;'+
FHC_PhraseLib.t('infocenter', 'bewerberGeparktBis')+'&nbsp;&nbsp;'+gerparkdate+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+
'<button class="btn btn-default" id="unparklink"><i class="fa fa-sign-out"></i>&nbsp;'+FHC_PhraseLib.t('infocenter', 'bewerberAusparken')+'</button>&nbsp;'+
'<span id="unparkmsg"></span>'
);
@@ -491,11 +486,11 @@ var InfocenterDetails = {
{
$("#notizmsg").empty();
$("#notizform :input[name='hiddenNotizId']").val("");
$("#notizform label:first").text("Notiz hinzufügen").css("color", "black");
$("#notizform label:first").text(FHC_PhraseLib.t('infocenter', 'notizHinzufuegen')).css("color", "black");
$("#notizform :input[type='reset']").css("display", "none");
},
_errorSaveNotiz: function()
{
$("#notizmsg").text("Fehler beim Speichern der Notiz!&nbsp;");
$("#notizmsg").text(FHC_PhraseLib.t('ui', 'fehlerBeimSpeichern'));
}
};
+116 -138
View File
@@ -3,151 +3,129 @@
*/
$(document).ready(function() {
appendTableActionsHtml();
InfocenterPersonDataset.appendTableActionsHtml();
// setTableActions();
});
/**
* adds person table additional actions html (above and beneath it)
*/
function appendTableActionsHtml()
{
var currurl = window.location.href;
var url = currurl.replace(/infocenter\/InfoCenter(.*)/, "Messages/write");
var InfocenterPersonDataset = {
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
$("#datasetActionsTop").before(formHtml);
var selectAllHtml =
'<a href="javascript:void(0)" class="selectAll">' +
'<i class="fa fa-check"></i>&nbsp;Alle</a>&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="unselectAll">' +
'<i class="fa fa-times"></i>&nbsp;Keinen</a>&nbsp;&nbsp;&nbsp;&nbsp;';
var actionHtml = 'Mit Ausgew&auml;hlten:&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="sendMsgsLink">' +
'<i class="fa fa-envelope"></i>&nbsp;Nachricht senden</a>';
var legendHtml = '<i class="fa fa-circle text-danger"></i> Gesperrt&nbsp;&nbsp;&nbsp;&nbsp;' +
'<i class="fa fa-circle text-info"></i> Geparkt';
var personcount = 0;
$.ajax({
url: window.location.pathname.replace('infocenter/InfoCenter', 'Filters/rowNumber'),
method: "GET",
data: {
fhc_controller_id: getUrlParameter("fhc_controller_id"),
filter_page: FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method
},
dataType: "json"
})
.done(function(data, textStatus, jqXHR) {
if (data != null)
{
if (data.rowNumber != null)
{
personcount = data.rowNumber;
var persontext = personcount === 1 ? "Person" : "Personen";
var countHtml = personcount + " " + persontext;
$("#datasetActionsTop, #datasetActionsBottom").append(
"<div class='row'>"+
"<div class='col-xs-6'>" + selectAllHtml + "&nbsp;&nbsp;" + actionHtml + "</div>"+
"<div class='col-xs-4'>" + legendHtml + "</div>"+
"<div class='col-xs-2 text-right'>" + countHtml + "</div>"+
"<div class='clearfix'></div>"+
"</div>"
);
$("#datasetActionsBottom").append("<br><br>");
}
setTableActions();
}
}).fail(function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
});
}
/**
* sets functionality for the actions above and beneath the person table
*/
function setTableActions()
{
$(".sendMsgsLink").click(function() {
var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]");
if(idsel.length > 0)
{
var form = $("#sendMsgsForm");
form.find("input[type=hidden]").remove();
for (var i = 0; i < idsel.length; i++)
{
var id = $(idsel[i]).val();
form.append("<input type='hidden' name='person_id[]' value='" + id + "'>");
}
form.submit();
}
});
$(".selectAll").click(function()
{
//select only trs if not filtered by tablesorter
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", true);
}
);
$(".unselectAll").click(function()
{
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
}
);
}
/**
*
*/
function getUrlParameter(sParam)
{
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++)
/**
* adds person table additional actions html (above and beneath it)
/*
*/
appendTableActionsHtml: function()
{
sParameterName = sURLVariables[i].split('=');
var currurl = window.location.href;
var url = currurl.replace(/infocenter\/InfoCenter(.*)/, "Messages/write");
if (sParameterName[0] === sParam)
{
return sParameterName[1];
}
}
}
var formHtml = '<form id="sendMsgsForm" method="post" action="'+ url +'" target="_blank"></form>';
$("#datasetActionsTop").before(formHtml);
/**
* Refreshes the side menu
*/
function refreshSideMenu()
{
$.ajax({
url: window.location.pathname+"/setNavigationMenuArray",
method: "GET",
data: {
fhc_controller_id: getUrlParameter("fhc_controller_id")
}
})
.done(function(data, textStatus, jqXHR) {
var selectAllHtml =
'<a href="javascript:void(0)" class="selectAll">' +
'<i class="fa fa-check"></i>&nbsp;Alle</a>&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="unselectAll">' +
'<i class="fa fa-times"></i>&nbsp;Keinen</a>&nbsp;&nbsp;&nbsp;&nbsp;';
FHC_NavigationWidget.renderSideMenu();
var actionHtml = 'Mit Ausgew&auml;hlten:&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="sendMsgsLink">' +
'<i class="fa fa-envelope"></i>&nbsp;Nachricht senden</a>';
}).fail(function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
});
}
var legendHtml = '<i class="fa fa-circle text-danger"></i> Gesperrt&nbsp;&nbsp;&nbsp;&nbsp;' +
'<i class="fa fa-circle text-info"></i> Geparkt';
var personcount = 0;
FHC_AjaxClient.ajaxCallGet(
'system/Filters/rowNumber',
{
filter_page: FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method
},
{
successCallback: function(data, textStatus, jqXHR) {
if (data != null)
{
if (data.rowNumber != null)
{
personcount = data.rowNumber;
var persontext = personcount === 1 ? "Person" : "Personen";
var countHtml = personcount + " " + persontext;
$("#datasetActionsTop, #datasetActionsBottom").append(
"<div class='row'>"+
"<div class='col-xs-6'>" + selectAllHtml + "&nbsp;&nbsp;" + actionHtml + "</div>"+
"<div class='col-xs-4'>" + legendHtml + "</div>"+
"<div class='col-xs-2 text-right'>" + countHtml + "</div>"+
"<div class='clearfix'></div>"+
"</div>"
);
$("#datasetActionsBottom").append("<br><br>");
}
InfocenterPersonDataset.setTableActions();
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
}
);
},
/**
* sets functionality for the actions above and beneath the person table
*/
setTableActions: function()
{
$(".sendMsgsLink").click(function() {
var idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]");
if(idsel.length > 0)
{
var form = $("#sendMsgsForm");
form.find("input[type=hidden]").remove();
for (var i = 0; i < idsel.length; i++)
{
var id = $(idsel[i]).val();
form.append("<input type='hidden' name='person_id[]' value='" + id + "'>");
}
form.submit();
}
});
$(".selectAll").click(function()
{
//select only trs if not filtered by tablesorter
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", true);
}
);
$(".unselectAll").click(function()
{
var trs = $("#filterTableDataset tbody tr").not(".filtered");
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
}
);
},
/**
* Refreshes the side menu
*/
refreshSideMenu: function()
{
FHC_AjaxClient.ajaxCallGet(
'system/infocenter/InfoCenter/setNavigationMenuArrayJson',
null,
{
successCallback: function(data, textStatus, jqXHR) {
FHC_NavigationWidget.renderSideMenu();
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
}
);
}
};
+1 -1
View File
@@ -61,7 +61,7 @@ var Tablesort = {
size: size,
cssDisabled: 'disabled',
savePages: false,
output: '{startRow} {endRow} / {totalRows} Zeilen'
output: '{startRow} {endRow} / {totalRows} ' + FHC_PhraseLib.t('global', 'zeilen')
}
);
}