165 lines
6.7 KiB
Plaintext
165 lines
6.7 KiB
Plaintext
include mixins
|
|
|
|
- var generateUID = function() { return ("000000" + (Math.random()*Math.pow(36,6) << 0).toString(36)).slice(-6) };
|
|
|
|
mixin do_person(elem)
|
|
- var my_uid = generateUID();
|
|
.panel.panel-info(id=my_uid, data-elemname=elem.name, data-elemkontext=elem.kontext, data-parishdb="", data-dn=elem.dn, data-elemtype="person")
|
|
.panel-heading
|
|
h4.panel-title(data-toggle="collapse", data-target="#PANEL_"+my_uid, aria-expanded="false", aria-controls="PANEL_"+my_uid) #{elem.name}
|
|
.panel-collapse.collapse.panel-parishdb-details-person(id="PANEL_"+my_uid)
|
|
|
|
mixin do_groupmember(elem, group)
|
|
- var my_uid = generateUID();
|
|
.panel.panel-info(id=my_uid, data-elemname=elem.name, data-dn=elem.person_dn)
|
|
.panel-heading
|
|
h4.panel-title(data-toggle="collapse", data-target="#PANEL_"+my_uid, aria-expanded="false", aria-controls="PANEL_"+my_uid) #{elem.name}
|
|
if elem.role !== ''
|
|
p.parishdbelemspane_elem_role #{elem.role}
|
|
.panel-collapse.collapse.panel-parishdb-details-person(id="PANEL_"+my_uid)
|
|
|
|
mixin do_group(elem)
|
|
- var my_uid = generateUID();
|
|
.panel.panel-success.panel_group_and_unit(id=my_uid, data-elemname=elem.name, data-elemkontext=elem.kontext, data-parishdb="", data-dn=elem.dn, data-elemtype="group")
|
|
.panel-heading
|
|
h4.panel-title(data-toggle="collapse", data-target="#PANEL_"+my_uid, aria-expanded="false", aria-controls="PANEL_"+my_uid) #{elem.name}
|
|
//- table(width="100%")
|
|
//- tr
|
|
//- td #{elem.name}
|
|
//- td(align="right", onclick="var event = arguments[0] || window.event; event.stopPropagation(); $('#PANEL_#{my_uid}').collapse('toggle'); return false;")
|
|
//- a(role="button", style="font-size: 10px; line-height: 1;", data-toggle="collapse", data-target="#PANEL_#{my_uid}", aria-expanded="false", aria-controls="PANEL_#{my_uid}", onclick="$(this).find('.glyphicon').toggleClass('glyphicon-chevron-down glyphicon-chevron-up');")
|
|
//- span(class="glyphicon glyphicon-chevron-down", aria-hidden="true")
|
|
.panel-collapse.collapse(id="PANEL_"+my_uid)
|
|
.panel-body(style="padding: 7px;")
|
|
each member in elem.members
|
|
+do_groupmember(member, elem)
|
|
|
|
mixin do_unit(elem)
|
|
- var my_uid = generateUID();
|
|
- var my_border_color = elem.is_pastoral ? "border-color: "+ elem.color +"; " : "";
|
|
- var my_background_image = elem.is_pastoral ? "background-image: linear-gradient(to bottom,"+elem.color+" 50%, #ffffff 100%); border-color: #ffffff; background-color: #ffffff; border-top-left-radius: 0px; border-top-right-radius: 0px;" : "";
|
|
- var my_border_top_color = elem.is_pastoral ? "border-top-color: #ffffff;" : "";
|
|
.panel.panel-default.panel_group_and_unit(id=my_uid, data-elemname=elem.name, data-elemkontext=elem.kontext, data-parishdb="", data-dn=elem.dn, data-elemtype="unit", data-depth=elem.depth, style=my_border_color )
|
|
.panel-heading(style=my_background_image)
|
|
h4.panel-title(data-toggle="collapse", data-target="#PANEL_"+my_uid, aria-expanded="false", aria-controls="PANEL_"+my_uid) #{elem.name}
|
|
//- border-bottom: 2px solid #{elem.color};
|
|
.panel-collapse.collapse(id="PANEL_"+my_uid)
|
|
.panel-body(style="padding: 10px; "+my_border_top_color)
|
|
for child in elem.childs
|
|
if(child.type === "unit")
|
|
+do_unit(child)
|
|
if(child.type === "person")
|
|
+do_person(child)
|
|
if(child.type === "group")
|
|
+do_group(child)
|
|
|
|
doctype strict
|
|
html
|
|
include header
|
|
script(src='/javascripts/pfiswebsocket.js')
|
|
script(src='/templates/parishdb_person.js')
|
|
script(src='/javascripts/runtime.js')
|
|
style.
|
|
.panel { margin-bottom: 5px; }
|
|
.panel-title { cursor: pointer; }
|
|
.panel_group_and_unit { border-width: 3px; }
|
|
body
|
|
|
|
.root
|
|
|
|
.new_flex_zero
|
|
+nav_with_form("PfarrInfoSystem", "PfIS", "parishdbnav")
|
|
.container-fluid
|
|
h1 Pfarrdatenbank
|
|
.new_flex_one
|
|
.container-fluid
|
|
for elem in parishdb.tree
|
|
if(elem.type === "unit")
|
|
+do_unit(elem)
|
|
|
|
script.
|
|
$("#parishdbnav-form").on('submit', function(e){
|
|
e.preventDefault();
|
|
});
|
|
|
|
function show_searchbar(functiontocall) {
|
|
$("#parishdbnav-form").append("<div class='input-group'><div class='input-group-addon'><span class='glyphicon glyphicon-search'></span></div><input class='form-control' type='text' placeholder='Suche' style='display: inline;' oninput='" + functiontocall + "'></input></div>");
|
|
}
|
|
show_searchbar("adjust_visible_elems(this);"); // can always be on!!!
|
|
|
|
var units_are_shown = false;
|
|
function adjust_visible_elems(my_input) {
|
|
substrRegex = new RegExp(my_input.value, 'i');
|
|
|
|
if(!units_are_shown) {
|
|
$("[data-elemtype='unit']").each(function(index) {
|
|
var panel_id = "#PANEL_" + $(this).prop('id');
|
|
$(panel_id).collapse('show');
|
|
});
|
|
console.log('SHOW ALL UNITS');
|
|
units_are_shown = true;
|
|
}
|
|
|
|
set_visibility_according_to_filter(substrRegex, $("[data-parishdb][data-elemtype!='unit']"));
|
|
|
|
for(var d = #{parishdb.max_depth}; d > 0; d--) {
|
|
$("[data-depth="+d+"]").each(function(index){
|
|
var parishdb_childs = $(this).children(".panel-collapse").children(".panel-body").children("[data-parishdb]");
|
|
var visible = false;
|
|
parishdb_childs.each(function(index) {
|
|
if($(this).css("display") !== "none") {
|
|
visible = true;
|
|
return false;
|
|
}
|
|
});
|
|
if(visible)
|
|
$(this).show();
|
|
else
|
|
$(this).hide();
|
|
});
|
|
}
|
|
}
|
|
|
|
function set_visibility_according_to_filter(substrRegex, elems) {
|
|
console.log(elems.length)
|
|
elems.each(function(index) {
|
|
var show = substrRegex.test($(this).data('elemname'));
|
|
if(!show)
|
|
show = substrRegex.test($(this).data('elemkontext'));
|
|
|
|
if($(this).data('elemtype') === "group") {
|
|
var childelems = $(this).find('[data-elemname]');
|
|
childelems.each(function(index) {
|
|
if(substrRegex.test($(this).data('elemname'))) {
|
|
show = true;
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
if(show) {
|
|
$(this).show();
|
|
}
|
|
else {
|
|
$(this).hide();
|
|
}
|
|
});
|
|
}
|
|
|
|
var ws = new PfISWebSocket("#{sessionuuid}");
|
|
ws.bind_standard_close_handler();
|
|
|
|
$(".panel-parishdb-details-person").on("show.bs.collapse", function(event) {
|
|
if($(event.target).children().length === 0) {
|
|
console.log("Loading person from DB ...");
|
|
ws.send('get_parishdb_person', {dn: $(event.target).parent().data('dn')});
|
|
}
|
|
});
|
|
|
|
ws.bind('get_parishdb_person_result', function(data) {
|
|
console.log(data.person);
|
|
if(data.result === "OK")
|
|
$("[data-dn='"+data.person.dn+"']").children('.panel-collapse').html(parishdb_person_template(data));
|
|
else
|
|
$("[data-dn='"+data.person.dn+"']").children('.panel-collapse').html("<div class='.panel-body'><p style='color: red;'>Fehler beim Abrufen der Pfarrdatenbank!</p></div>")
|
|
});
|