Varia library working group XPPL.
https://gitea.xpub.nl/XPUB/XPPL
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
281 lines
7.7 KiB
281 lines
7.7 KiB
/* Add your Application JavaScript */
|
|
$(function() {
|
|
$("div[data-toggle=fieldset]").each(function() {
|
|
var $this = $(this);
|
|
|
|
//Add new entry
|
|
$this.find("button[data-toggle=fieldset-add-row]").click(function() {
|
|
var target = $($(this).data("target"))
|
|
console.log(target);
|
|
var oldrow = target.find("[data-toggle=fieldset-entry]:last");
|
|
var row = oldrow.clone(true, true);
|
|
console.log(row.find(":input")[0]);
|
|
var elem_id = row.find(":input")[0].id;
|
|
var elem_num = parseInt(elem_id.replace(/.*-(\d{1,4})-.*/m, '$1')) + 1;
|
|
row.attr('data-id', elem_num);
|
|
row.find(":input").each(function() {
|
|
console.log(this);
|
|
var id = $(this).attr('id').replace('-' + (elem_num - 1) + '-', '-' + (elem_num) + '-');
|
|
$(this).attr('name', id).attr('id', id).val('').removeAttr("checked");
|
|
});
|
|
oldrow.after(row);
|
|
}); //End add new entry
|
|
|
|
//Remove row
|
|
$this.find("button[data-toggle=fieldset-remove-row]").click(function() {
|
|
if ($this.find("[data-toggle=fieldset-entry]").length > 1) {
|
|
var thisRow = $(this).closest("[data-toggle=fieldset-entry]");
|
|
thisRow.remove();
|
|
}
|
|
}); //End remove row
|
|
});
|
|
});
|
|
|
|
|
|
$(function() {
|
|
$("#draggable").draggable();
|
|
$("#droppable").droppable({
|
|
drop: function(event, ui) {
|
|
$(this)
|
|
.addClass("ui-state-highlight")
|
|
.find("p")
|
|
.html("Dropped!");
|
|
}
|
|
});
|
|
});
|
|
|
|
$("#title_xppl").click(function() {
|
|
generateTitle(this);
|
|
});
|
|
|
|
$(document).ready(function() {
|
|
generateTitle("#title_xppl");
|
|
});
|
|
|
|
function generateTitle(elem) {
|
|
var x = ["XPERIMENTAL"]
|
|
var p1 = ["POTENTIAL", "PUBLIC", "POST", "PI", "PLATFORM FOR", "PRETENTIOUS"]
|
|
var p2 = ["PIRATE", "PERFORMATIVE", "PUBLIC", "PUBLISHING", "POTENTIAL"]
|
|
var l = ["LIBRARY", "LIAISON", "LAB", "LEGALITY", "LABOUR"]
|
|
|
|
$(elem).text(x[Math.floor(Math.random() * x.length)] + " " + p1[Math.floor(Math.random() * p1.length)] + " " + p2[Math.floor(Math.random() * p2.length)] + " " + l[Math.floor(Math.random() * l.length)]);
|
|
|
|
}
|
|
|
|
$(function() {
|
|
$("#tabs").tabs().addClass("ui-tabs-vertical ui-helper-clearfix");
|
|
$("#tabs li").removeClass("ui-corner-top").addClass("ui-corner-left");
|
|
});
|
|
|
|
|
|
|
|
|
|
$(".no_cover").each(function() {
|
|
var string = $(this).attr('id')
|
|
var randomColor = colorHash(string).rgb
|
|
|
|
$(this).css({
|
|
'background-color': randomColor,
|
|
});
|
|
|
|
})
|
|
|
|
function colorHash(inputString) {
|
|
var sum = 0;
|
|
|
|
for (var i in inputString) {
|
|
sum += inputString.charCodeAt(i);
|
|
}
|
|
|
|
r = ~~(('0.' + Math.sin(sum + 1).toString().substr(6)) * 256);
|
|
g = ~~(('0.' + Math.sin(sum + 2).toString().substr(6)) * 256);
|
|
b = ~~(('0.' + Math.sin(sum + 3).toString().substr(6)) * 256);
|
|
|
|
var rgb = "rgb(" + r + ", " + g + ", " + b + ")";
|
|
|
|
var hex = "#";
|
|
|
|
hex += ("00" + r.toString(16)).substr(-2, 2).toUpperCase();
|
|
hex += ("00" + g.toString(18)).substr(-2, 2).toUpperCase();
|
|
hex += ("00" + b.toString(20)).substr(-2, 2).toUpperCase();
|
|
|
|
return {
|
|
r: r,
|
|
g: g,
|
|
b: b,
|
|
rgb: rgb,
|
|
hex: hex
|
|
};
|
|
}
|
|
|
|
|
|
|
|
//newsticker
|
|
|
|
$('.marquee').marquee({
|
|
duplicated: true,
|
|
pauseOnHover: true
|
|
});
|
|
|
|
$( document ).ready(function() {
|
|
|
|
update();
|
|
function update() {
|
|
$.ajax({
|
|
url: "/updates",
|
|
type: 'GET',
|
|
async: false,
|
|
success : function(text)
|
|
{
|
|
response = text;
|
|
$('.marquee').marquee('destroy')
|
|
$('.marquee-text').text(response)
|
|
$('.marquee').marquee({
|
|
duplicated: true,
|
|
pauseOnHover: true,
|
|
duration: 7000,
|
|
speed: 30,
|
|
gap: 200,
|
|
startVisible:true
|
|
});
|
|
console.log(response)
|
|
},
|
|
cache: false,
|
|
contentType: false,
|
|
processData: false
|
|
});
|
|
}
|
|
|
|
});
|
|
|
|
$(document).ready(function()
|
|
{
|
|
$('.messages').scrollTop($('.messages')[0].scrollHeight)
|
|
|
|
$("#table").tablesorter();
|
|
|
|
}
|
|
|
|
);
|
|
|
|
// Autocomplete for search - Contact Joca in case of trouble
|
|
|
|
$('#search').on("input", function() {
|
|
var query = this.value;
|
|
|
|
|
|
$.ajax({
|
|
url: "/autocomplete_suggestions",
|
|
data: $('form').serialize(),
|
|
type: "POST",
|
|
success: function(response) {
|
|
//console.log("Got your query!");
|
|
}
|
|
});
|
|
|
|
function getData() {
|
|
var deferredData = new jQuery.Deferred();
|
|
|
|
$.ajax({
|
|
type: "GET",
|
|
url: "/autocomplete_suggestions",
|
|
dataType: "json",
|
|
success: function(data) {
|
|
deferredData.resolve(data);
|
|
}
|
|
});
|
|
return deferredData; // contains the passed data
|
|
};
|
|
|
|
var dataDeferred = getData();
|
|
|
|
$.when(dataDeferred).done( function( data ) {
|
|
var suggestion_list = data;
|
|
console.log(suggestion_list);
|
|
$().ready(function() {
|
|
// search only, if the regexp matches
|
|
var suggestions = data;
|
|
|
|
// Defines for the example the match to take which is any word (with Umlauts!!).
|
|
function _leftMatch(string, area) {
|
|
//return string.substring(0, area.selectionStart).match(/[\wäöüÄÖÜß]+$/)
|
|
//console.log(string.substring(string.lastIndexOf(" ")+1).match(/[\wäöüÄÖÜß]+$/))
|
|
return string.substring(string.lastIndexOf(" ")+1).match(/[\wäöüÄÖÜß]+$/)
|
|
|
|
}
|
|
|
|
function _setCursorPosition(area, pos) {
|
|
if (area.setSelectionRange) {
|
|
area.setSelectionRange(pos, pos);
|
|
} else if (area.createTextRange) {
|
|
var range = area.createTextRange();
|
|
range.collapse(true);
|
|
range.moveEnd('character', pos);
|
|
range.moveStart('character', pos);
|
|
range.select();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$("#search").autocomplete({
|
|
position: { my : "right top", at: "right bottom" },
|
|
source: function(request, response) {
|
|
var str = _leftMatch(request.term, $("#search")[0]);
|
|
str = (str != null) ? str[0] : "";
|
|
console.log(str);
|
|
response($.ui.autocomplete.filter(
|
|
suggestions, str));
|
|
},
|
|
minLength: 1, // does have no effect, regexpression is used instead
|
|
focus: function() {
|
|
// prevent value inserted on focus
|
|
return false;
|
|
},
|
|
// Insert the match inside the ui element at the current position by replacing the matching substring
|
|
select: function(event, ui) {
|
|
//alert("completing "+ui.item.value);},
|
|
var m = _leftMatch(this.value, this)[0];
|
|
var beg = this.value.substring(0, this.selectionStart - m.length);
|
|
this.value = beg + ui.item.value + this.value.substring(this.selectionStart, this.value.length);
|
|
var pos = beg.length + ui.item.value.length;
|
|
_setCursorPosition(this, pos);
|
|
return false;
|
|
},
|
|
search:function(event, ui) {
|
|
var m = _leftMatch(this.value, this);
|
|
return (m != null )
|
|
}
|
|
|
|
});
|
|
})
|
|
|
|
});
|
|
|
|
});
|
|
|
|
// Get the modal
|
|
var modal = document.getElementById('myModal');
|
|
|
|
// Get the button that opens the modal
|
|
var btn = document.getElementById("myBtn");
|
|
|
|
// Get the <span> element that closes the modal
|
|
var span = document.getElementsByClassName("close")[0];
|
|
|
|
// When the user clicks on the button, open the modal
|
|
btn.onclick = function() {
|
|
modal.style.display = "block";
|
|
}
|
|
|
|
// When the user clicks on <span> (x), close the modal
|
|
span.onclick = function() {
|
|
modal.style.display = "none";
|
|
}
|
|
|
|
// When the user clicks anywhere outside of the modal, close it
|
|
window.onclick = function(event) {
|
|
if (event.target == modal) {
|
|
modal.style.display = "none";
|
|
}
|
|
}
|
|
|