diff vakata-jstree-3.3.5/src/sample.js @ 0:25602263cff0 draft default tip

planemo upload commit 841d8b22bf9f1aaed6bfe8344b60617f45b275b2-dirty
author mingchen0919
date Sun, 30 Dec 2018 13:11:48 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/src/sample.js	Sun Dec 30 13:11:48 2018 -0500
@@ -0,0 +1,93 @@
+/*global jQuery */
+// wrap in IIFE and pass jQuery as $
+(function ($, undefined) {
+	"use strict";
+
+	// some private plugin stuff if needed
+	var private_var = null;
+
+	// extending the defaults
+	$.jstree.defaults.sample = {
+		sample_option : 'sample_val'
+	};
+
+	// the actual plugin code
+	$.jstree.plugins.sample = function (options, parent) {
+		// own function
+		this.sample_function = function (arg) {
+			// you can chain this method if needed and available
+			if(parent.sample_function) { parent.sample_function.call(this, arg); }
+		};
+
+		// *SPECIAL* FUNCTIONS
+		this.init = function (el, options) {
+			// do not forget parent
+			parent.init.call(this, el, options);
+		};
+		// bind events if needed
+		this.bind = function () {
+			// call parent function first
+			parent.bind.call(this);
+			// do(stuff);
+		};
+		// unbind events if needed (all in jquery namespace are taken care of by the core)
+		this.unbind = function () {
+			// do(stuff);
+			// call parent function last
+			parent.unbind.call(this);
+		};
+		this.teardown = function () {
+			// do not forget parent
+			parent.teardown.call(this);
+		};
+		// state management - get and restore
+		this.get_state = function () {
+			// always get state from parent first
+			var state = parent.get_state.call(this);
+			// add own stuff to state
+			state.sample = { 'var' : 'val' };
+			return state;
+		};
+		this.set_state = function (state, callback) {
+			// only process your part if parent returns true
+			// there will be multiple times with false
+			if(parent.set_state.call(this, state, callback)) {
+				// check the key you set above
+				if(state.sample) {
+					// do(stuff); // like calling this.sample_function(state.sample.var);
+					// remove your part of the state, call again and RETURN FALSE, the next cycle will be TRUE
+					delete state.sample;
+					this.set_state(state, callback);
+					return false;
+				}
+				// return true if your state is gone (cleared in the previous step)
+				return true;
+			}
+			// parent was false - return false too
+			return false;
+		};
+		// node transportation
+		this.get_json = function (obj, options, flat) {
+			// get the node from the parent
+			var tmp = parent.get_json.call(this, obj, options, flat), i, j;
+			if($.isArray(tmp)) {
+				for(i = 0, j = tmp.length; i < j; i++) {
+					tmp[i].sample = 'value';
+				}
+			}
+			else {
+				tmp.sample = 'value';
+			}
+			// return the original / modified node
+			return tmp;
+		};
+	};
+
+	// attach to document ready if needed
+	$(function () {
+		// do(stuff);
+	});
+
+	// you can include the sample plugin in all instances by default
+	$.jstree.defaults.plugins.push("sample");
+})(jQuery);
\ No newline at end of file