This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".
The branch, master has been updated
via 58832233161bb327515ed34694de207439185b9f (commit)
from 6f66f353f99fdbacf57080fb14ff2d10604eb222 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=58832233161bb327515ed34694de207439185b9f
commit 58832233161bb327515ed34694de207439185b9f
Author: Franck Villaume <[email protected]>
Date: Fri Dec 2 18:46:03 2016 +0100
add jquery gentleSelect plugin
diff --git a/src/vendor/jquery-gentleSelect/img/expand.png
b/src/vendor/jquery-gentleSelect/img/expand.png
new file mode 100644
index 0000000..f692d80
Binary files /dev/null and b/src/vendor/jquery-gentleSelect/img/expand.png
differ
diff --git a/src/vendor/jquery-gentleSelect/jquery-gentleSelect.css
b/src/vendor/jquery-gentleSelect/jquery-gentleSelect.css
new file mode 100644
index 0000000..d424578
--- /dev/null
+++ b/src/vendor/jquery-gentleSelect/jquery-gentleSelect.css
@@ -0,0 +1,66 @@
+.gentleselect-data { display: none; }
+
+.gentleselect-label {
+ padding: 1px 20px 1px 20px;
+ background-color: #eee;
+
+ border: 2px solid #ddd;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+
+ background-repeat: no-repeat;
+ background-position: center right;
+
+ cursor: pointer;
+ color: #555;
+}
+
+.gentleselect-label-highlight {
+ border: 2px solid #aaa;
+ background-image: url('img/expand.png');
+}
+
+.gentleselect-dialog {
+ position: absolute;
+ z-index: 500;
+ display: none;
+
+ background-color: #fff;
+ border: 2px solid #999;
+
+ -moz-box-shadow: 0px 0px 12px #555;
+ -webkit-box-shadow: 0px 0px 12px #555;
+ box-shadow: 0px 0px 12px #555;
+
+ margin: 0; padding: 0;
+}
+
+.gentleselect-dialog > ul { padding: 0; margin: 0; list-style: none; }
+.gentleselect-dialog > ul > li {
+ margin: 0;
+ padding: 3px 20px 3px 25px;
+
+ cursor: pointer;
+}
+.gentleselect-dialog > ul > li.selected {
+ font-weight: bold;
+ color: #369;
+ background-color: #eee;
+}
+.gentleselect-dialog > ul > li.gentleselect-dummy:hover { background-color:
#fff; }
+.gentleselect-dialog > ul > li:hover {
+ background-color: #69c;
+ color: #fff;
+}
+
+.gentleselect-dialog > .gentleselect-title {
+ display: block;
+ text-align: center;
+ margin: 0;
+ padding: 2px;
+ background-color: #ddd;
+ font-size: 0.8em;
+ color: #666;
+ overflow: hidden;
+}
diff --git a/src/vendor/jquery-gentleSelect/jquery-gentleSelect.js
b/src/vendor/jquery-gentleSelect/jquery-gentleSelect.js
new file mode 100644
index 0000000..b4326c7
--- /dev/null
+++ b/src/vendor/jquery-gentleSelect/jquery-gentleSelect.js
@@ -0,0 +1,300 @@
+/*
+ * jQuery gentleSelect plugin
+ * http://shawnchin.github.com/jquery-gentleSelect
+ *
+ * Copyright (c) 2010 Shawn Chin.
+ * Licensed under the MIT license.
+ *
+ * Usage:
+ * (JS)
+ *
+ * $('#myselect').gentleSelect(); // default. single column
+ *
+ * $('#myselect').gentleSelect({ // 3 columns, 150px wide each
+ * itemWidth : 150,
+ * columns : 3,
+ * });
+ *
+ * (HTML)
+ * <select id='myselect'><options> .... </options></select>
+ *
+ */
+(function($) {
+
+ var defaults = {
+ minWidth : 100, // only applies if columns and itemWidth not set
+ itemWidth : undefined,
+ columns : undefined,
+ rows : undefined,
+ title : undefined,
+ prompt : "Make A Selection",
+ maxDisplay: 0, // set to 0 for unlimited
+ openSpeed : 400,
+ closeSpeed : 400,
+ openEffect : "slide",
+ closeEffect : "slide",
+ hideOnMouseOut : true
+ }
+
+ function defined(obj) {
+ if (typeof obj == "undefined") { return false; }
+ else { return true; }
+ }
+
+ function hasError(c, o) {
+ if (defined(o.columns) && defined(o.rows)) {
+ $.error("gentleSelect: You cannot supply both 'rows' and
'columns'");
+ return true;
+ }
+ if (defined(o.columns) && !defined(o.itemWidth)) {
+ $.error("gentleSelect: itemWidth must be supplied if 'columns' is
specified");
+ return true;
+ }
+ if (defined(o.rows) && !defined(o.itemWidth)) {
+ $.error("gentleSelect: itemWidth must be supplied if 'rows' is
specified");
+ return true;
+ }
+ if (!defined(o.openSpeed) || typeof o.openSpeed != "number" &&
+ (typeof o.openSpeed == "string" && (o.openSpeed != "slow" &&
o.openSpeed != "fast"))) {
+ $.error("gentleSelect: openSpeed must be an integer or \"slow\" or
\"fast\"");
+ return true;
+ }
+ if (!defined(o.closeSpeed) || typeof o.closeSpeed != "number" &&
+ (typeof o.closeSpeed == "string" && (o.closeSpeed != "slow" &&
o.closeSpeed != "fast"))) {
+ $.error("gentleSelect: closeSpeed must be an integer or \"slow\"
or \"fast\"");
+ return true;
+ }
+ if (!defined(o.openEffect) || (o.openEffect != "fade" && o.openEffect
!= "slide")) {
+ $.error("gentleSelect: openEffect must be either 'fade' or
'slide'!");
+ return true;
+ }
+ if (!defined(o.closeEffect)|| (o.closeEffect != "fade" &&
o.closeEffect != "slide")) {
+ $.error("gentleSelect: closeEffect must be either 'fade' or
'slide'!");
+ return true;
+ }
+ if (!defined(o.hideOnMouseOut) || (typeof o.hideOnMouseOut !=
"boolean")) {
+ $.error("gentleSelect: hideOnMouseOut must be supplied and either
\"true\" or \"false\"!");
+ return true;
+ }
+ return false;
+ }
+
+ function optionOverrides(c, o) {
+ if (c.attr("multiple")) {
+ o.hideOnMouseOut = true; // must be true or dialog will never hide
+ }
+ }
+
+ function getSelectedAsText(elemList, opts) {
+ // If no items selected, return prompt
+ if (elemList.length < 1) { return opts.prompt; }
+
+ // Truncate if exceed maxDisplay
+ if (opts.maxDisplay != 0 && elemList.length > opts.maxDisplay) {
+ var arr = elemList.slice(0, opts.maxDisplay).map(function(){return
$(this).text();});
+ arr.push("...");
+ } else {
+ var arr = elemList.map(function(){return $(this).text();});
+ }
+ return arr.get().join(", ");
+ }
+
+ var methods = {
+ init : function(options) {
+ var o = $.extend({}, defaults, options);
+
+ if (hasError(this, o)) { return this; }; // check for errors
+ optionOverrides(this, o); //
+ this.hide(); // hide original select box
+
+ // initialise <span> to replace select box
+ label_text = getSelectedAsText(this.find(":selected"), o);
+ var label = $("<span class='gentleselect-label'>" + label_text +
"</span>")
+ .insertBefore(this)
+ .bind("mouseenter.gentleselect", event_handlers.labelHoverIn)
+ .bind("mouseleave.gentleselect", event_handlers.labelHoverOut)
+ .bind("click.gentleselect", event_handlers.labelClick)
+ .data("root", this);
+ this.data("label", label)
+ .data("options", o);
+
+ // generate list of options
+ var ul = $("<ul></ul>");
+ this.find("option").each(function() {
+ var li = $("<li>" + $(this).text() + "</li>")
+ .data("value", $(this).attr("value"))
+ .data("name", $(this).text())
+ .appendTo(ul);
+ if ($(this).attr("selected")) { li.addClass("selected"); }
+ });
+
+ // build dialog box
+ var dialog = $("<div class='gentleselect-dialog'></div>")
+ .append(ul)
+ .insertAfter(label)
+ .bind("click.gentleselect", event_handlers.dialogClick)
+ .bind("mouseleave.gentleselect", event_handlers.dialogHoverOut)
+ .data("label", label)
+ .data("root", this);
+ this.data("dialog", dialog);
+
+ // if to be displayed in columns
+ if (defined(o.columns) || defined(o.rows)) {
+
+ // Update CSS
+ ul.css("float", "left")
+ .find("li").width(o.itemWidth).css("float","left");
+
+ var f = ul.find("li:first");
+ var actualWidth = o.itemWidth
+ + parseInt(f.css("padding-left"))
+ + parseInt(f.css("padding-right"));
+ var elemCount = ul.find("li").length;
+ if (defined(o.columns)) {
+ var cols = parseInt(o.columns);
+ var rows = Math.ceil(elemCount / cols);
+ } else {
+ var rows = parseInt(o.rows);
+ var cols = Math.ceil(elemCount / rows);
+ }
+ dialog.width(actualWidth * cols);
+
+ // add padding
+ for (var i = 0; i < (rows * cols) - elemCount; i++) {
+ $("<li style='float:left'
class='gentleselect-dummy'><span> </span></li>").appendTo(ul);
+ }
+
+ // reorder elements
+ var ptr = [];
+ var idx = 0;
+ ul.find("li").each(function() {
+ if (idx < rows) {
+ ptr[idx] = $(this);
+ } else {
+ var p = idx % rows;
+ $(this).insertAfter(ptr[p]);
+ ptr[p] = $(this);
+ }
+ idx++;
+ });
+ } else if (typeof o.minWidth == "number") {
+ dialog.css("min-width", o.minWidth);
+ }
+
+ if (defined(o.title)) {
+ $("<div class='gentleselect-title'>" + o.title +
"</div>").prependTo(dialog);
+ }
+
+ // ESC key should hide all dialog boxes
+ $(document).bind("keyup.gentleselect", event_handlers.keyUp);
+
+ return this;
+ },
+
+ // if select box was updated externally, we need to bring everything
+ // else up to speed.
+ update : function() {
+ var opts = this.data("options");
+
+ // Update li with selected data
+ var v = (this.attr("multiple")) ? this.val() : [this.val()];
+ $("li", this.data("dialog")).each(function() {
+ var $li = $(this);
+ var isSelected = ($.inArray($li.data("value"), v) != -1);
+ $li.toggleClass("selected", isSelected);
+ });
+
+ // Update label
+ var label = getSelectedAsText(this.find(":selected"), opts);
+ this.data("label").text(label);
+
+ return this;
+ }
+ };
+
+ var event_handlers = {
+
+ labelHoverIn : function() {
+ $(this).addClass('gentleselect-label-highlight');
+ },
+
+ labelHoverOut : function() {
+ $(this).removeClass('gentleselect-label-highlight');
+ },
+
+ labelClick : function() {
+ var $this = $(this);
+ var pos = $this.position();
+ var root = $this.data("root");
+ var opts = root.data("options");
+ var dialog = root.data("dialog")
+ .css("top", pos.top + $this.height())
+ .css("left", pos.left + 1);
+ if (opts.openEffect == "fade") {
+ dialog.fadeIn(opts.openSpeed);
+ } else {
+ dialog.slideDown(opts.openSpeed);
+ }
+ },
+
+ dialogHoverOut : function() {
+ var $this = $(this);
+ if ($this.data("root").data("options").hideOnMouseOut) {
+ $this.hide();
+ }
+ },
+
+ dialogClick : function(e) {
+ var clicked = $(e.target);
+ var $this = $(this);
+ var root = $this.data("root");
+ var opts = root.data("options");
+ if (!root.attr("multiple")) {
+ if (opts.closeEffect == "fade") {
+ $this.fadeOut(opts.closeSpeed);
+ } else {
+ $this.slideUp(opts.closeSpeed);
+ }
+ }
+
+ if (clicked.is("li") && !clicked.hasClass("gentleselect-dummy")) {
+ var value = clicked.data("value");
+ var name = clicked.data("name");
+ var label = $this.data("label")
+
+ if ($this.data("root").attr("multiple")) {
+ clicked.toggleClass("selected");
+ var s = $this.find("li.selected");
+ label.text(getSelectedAsText(s, opts));
+ var v = s.map(function(){ return $(this).data("value"); });
+ // update actual selectbox and trigger change event
+ root.val(v.get()).trigger("change");
+ } else {
+ $this.find("li.selected").removeClass("selected");
+ clicked.addClass("selected");
+ label.text(clicked.data("name"));
+ // update actual selectbox and trigger change event
+ root.val(value).trigger("change");
+ }
+ }
+ },
+
+ keyUp : function(e) {
+ if (e.keyCode == 27 ) { // ESC
+ $(".gentleselect-dialog").hide();
+ }
+ }
+ };
+
+ $.fn.gentleSelect = function(method) {
+ if (methods[method]) {
+ return methods[method].apply(this,
Array.prototype.slice.call(arguments, 1));
+ } else if (typeof method === 'object' || ! method) {
+ return methods.init.apply(this, arguments);
+ } else {
+ $.error( 'Method ' + method + ' does not exist on
jQuery.gentleSelect' );
+ }
+ };
+
+
+})(jQuery);
-----------------------------------------------------------------------
Summary of changes:
src/vendor/jquery-gentleSelect/img/expand.png | Bin 0 -> 627 bytes
.../jquery-gentleSelect/jquery-gentleSelect.css | 66 +++++
.../jquery-gentleSelect/jquery-gentleSelect.js | 300 +++++++++++++++++++++
3 files changed, 366 insertions(+)
create mode 100644 src/vendor/jquery-gentleSelect/img/expand.png
create mode 100644 src/vendor/jquery-gentleSelect/jquery-gentleSelect.css
create mode 100644 src/vendor/jquery-gentleSelect/jquery-gentleSelect.js
hooks/post-receive
--
FusionForge
_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits