mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
Introduce make_zjquery().
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
set_global('$', global.zjquery);
|
||||
set_global('$', global.make_zjquery());
|
||||
|
||||
set_global('page_params', {
|
||||
realm_users: [],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var common = require("js/common.js");
|
||||
|
||||
set_global('$', global.zjquery);
|
||||
set_global('$', global.make_zjquery());
|
||||
|
||||
(function test_basics() {
|
||||
common.autofocus('#home');
|
||||
|
||||
@@ -10,7 +10,7 @@ set_global('page_params', {
|
||||
use_websockets: false,
|
||||
});
|
||||
|
||||
set_global('$', global.zjquery);
|
||||
set_global('$', global.make_zjquery());
|
||||
|
||||
add_dependencies({
|
||||
compose: 'js/compose',
|
||||
|
||||
@@ -40,8 +40,7 @@ global.write_test_output = output.write_test_output;
|
||||
global.append_test_output = output.append_test_output;
|
||||
|
||||
// Set up fake jQuery
|
||||
var zjquery = require('./zjquery.js');
|
||||
global.zjquery = zjquery.zjquery;
|
||||
global.make_zjquery = require('./zjquery.js').make_zjquery;
|
||||
|
||||
var noop = function () {};
|
||||
|
||||
|
||||
@@ -1,168 +1,179 @@
|
||||
var noop = function () {};
|
||||
|
||||
var zjquery = (function () {
|
||||
|
||||
var elems = {};
|
||||
var exports = {};
|
||||
|
||||
function new_elem(selector) {
|
||||
var html = 'never-been-set';
|
||||
var text = 'never-been-set';
|
||||
var value;
|
||||
var shown = false;
|
||||
var focused = false;
|
||||
var children = new Dict();
|
||||
var my_parent;
|
||||
var classes = new Dict();
|
||||
exports.make_zjquery = function () {
|
||||
|
||||
var self = {
|
||||
val: function () {
|
||||
if (arguments.length === 0) {
|
||||
return value || '';
|
||||
}
|
||||
value = arguments[0];
|
||||
},
|
||||
css: noop,
|
||||
data: noop,
|
||||
empty: noop,
|
||||
height: noop,
|
||||
removeAttr: noop,
|
||||
removeData: noop,
|
||||
trigger: noop,
|
||||
blur: function () {
|
||||
focused = false;
|
||||
},
|
||||
html: function (arg) {
|
||||
if (arg !== undefined) {
|
||||
html = arg;
|
||||
} else {
|
||||
return html;
|
||||
}
|
||||
},
|
||||
text: function (arg) {
|
||||
if (arg !== undefined) {
|
||||
text = arg;
|
||||
} else {
|
||||
return text;
|
||||
}
|
||||
},
|
||||
focus: function () {
|
||||
focused = true;
|
||||
},
|
||||
show: function () {
|
||||
shown = true;
|
||||
},
|
||||
hide: function () {
|
||||
shown = false;
|
||||
},
|
||||
addClass: function (class_name) {
|
||||
classes.set(class_name, true);
|
||||
return self;
|
||||
},
|
||||
removeClass: function (class_name) {
|
||||
classes.del(class_name);
|
||||
return self;
|
||||
},
|
||||
hasClass: function (class_name) {
|
||||
return classes.has(class_name);
|
||||
},
|
||||
debug: function () {
|
||||
return {
|
||||
value: value,
|
||||
shown: shown,
|
||||
selector: selector,
|
||||
};
|
||||
},
|
||||
visible: function () {
|
||||
return shown;
|
||||
},
|
||||
is_focused: function () {
|
||||
// is_focused is not a jQuery thing; this is
|
||||
// for our testing
|
||||
return focused;
|
||||
},
|
||||
find: function (child_selector) {
|
||||
var child = children.get(child_selector);
|
||||
if (child) {
|
||||
return child;
|
||||
}
|
||||
var elems = {};
|
||||
|
||||
throw "Cannot find " + child_selector + " in " + selector;
|
||||
},
|
||||
add_child: function (child_selector, child_elem) {
|
||||
child_elem.set_parent(self);
|
||||
children.set(child_selector, child_elem);
|
||||
},
|
||||
set_parent: function (parent_elem) {
|
||||
my_parent = parent_elem;
|
||||
},
|
||||
parent: function () {
|
||||
return my_parent;
|
||||
},
|
||||
expectOne: function () {
|
||||
// silently do nothing
|
||||
return self;
|
||||
},
|
||||
on: function () {
|
||||
return self;
|
||||
},
|
||||
};
|
||||
return self;
|
||||
}
|
||||
function new_elem(selector) {
|
||||
var html = 'never-been-set';
|
||||
var text = 'never-been-set';
|
||||
var value;
|
||||
var shown = false;
|
||||
var focused = false;
|
||||
var children = new Dict();
|
||||
var my_parent;
|
||||
var classes = new Dict();
|
||||
|
||||
function jquery_array(elem) {
|
||||
var result = [elem];
|
||||
var self = {
|
||||
val: function () {
|
||||
if (arguments.length === 0) {
|
||||
return value || '';
|
||||
}
|
||||
value = arguments[0];
|
||||
},
|
||||
css: noop,
|
||||
data: noop,
|
||||
empty: noop,
|
||||
height: noop,
|
||||
removeAttr: noop,
|
||||
removeData: noop,
|
||||
trigger: noop,
|
||||
blur: function () {
|
||||
focused = false;
|
||||
},
|
||||
html: function (arg) {
|
||||
if (arg !== undefined) {
|
||||
html = arg;
|
||||
} else {
|
||||
return html;
|
||||
}
|
||||
},
|
||||
text: function (arg) {
|
||||
if (arg !== undefined) {
|
||||
text = arg;
|
||||
} else {
|
||||
return text;
|
||||
}
|
||||
},
|
||||
focus: function () {
|
||||
focused = true;
|
||||
},
|
||||
show: function () {
|
||||
shown = true;
|
||||
},
|
||||
hide: function () {
|
||||
shown = false;
|
||||
},
|
||||
addClass: function (class_name) {
|
||||
classes.set(class_name, true);
|
||||
return self;
|
||||
},
|
||||
removeClass: function (class_name) {
|
||||
classes.del(class_name);
|
||||
return self;
|
||||
},
|
||||
hasClass: function (class_name) {
|
||||
return classes.has(class_name);
|
||||
},
|
||||
debug: function () {
|
||||
return {
|
||||
value: value,
|
||||
shown: shown,
|
||||
selector: selector,
|
||||
};
|
||||
},
|
||||
visible: function () {
|
||||
return shown;
|
||||
},
|
||||
is_focused: function () {
|
||||
// is_focused is not a jQuery thing; this is
|
||||
// for our testing
|
||||
return focused;
|
||||
},
|
||||
find: function (child_selector) {
|
||||
var child = children.get(child_selector);
|
||||
if (child) {
|
||||
return child;
|
||||
}
|
||||
|
||||
for (var attr in elem) {
|
||||
if (Object.prototype.hasOwnProperty.call(elem, attr)) {
|
||||
result[attr] = elem[attr];
|
||||
throw "Cannot find " + child_selector + " in " + selector;
|
||||
},
|
||||
add_child: function (child_selector, child_elem) {
|
||||
child_elem.set_parent(self);
|
||||
children.set(child_selector, child_elem);
|
||||
},
|
||||
remove_child: function (child_selector) {
|
||||
children.del(child_selector);
|
||||
},
|
||||
set_parent: function (parent_elem) {
|
||||
my_parent = parent_elem;
|
||||
},
|
||||
parent: function () {
|
||||
return my_parent;
|
||||
},
|
||||
expectOne: function () {
|
||||
// silently do nothing
|
||||
return self;
|
||||
},
|
||||
on: function () {
|
||||
return self;
|
||||
},
|
||||
remove: function () {
|
||||
if (my_parent) {
|
||||
my_parent.remove_child(selector);
|
||||
}
|
||||
},
|
||||
};
|
||||
return self;
|
||||
}
|
||||
|
||||
function jquery_array(elem) {
|
||||
var result = [elem];
|
||||
|
||||
for (var attr in elem) {
|
||||
if (Object.prototype.hasOwnProperty.call(elem, attr)) {
|
||||
result[attr] = elem[attr];
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
var zjquery = function (arg) {
|
||||
if (typeof arg === "function") {
|
||||
// If somebody is passing us a function, we emulate
|
||||
// jQuery's behavior of running this function after
|
||||
// page load time. But there are no pages to load,
|
||||
// so we just call it right away.
|
||||
arg();
|
||||
return;
|
||||
}
|
||||
|
||||
exports.zjquery = function (arg) {
|
||||
if (typeof arg === "function") {
|
||||
// If somebody is passing us a function, we emulate
|
||||
// jQuery's behavior of running this function after
|
||||
// page load time. But there are no pages to load,
|
||||
// so we just call it right away.
|
||||
arg();
|
||||
return;
|
||||
}
|
||||
var selector = arg;
|
||||
if (elems[selector] === undefined) {
|
||||
var elem = new_elem(selector);
|
||||
elems[selector] = jquery_array(elem);
|
||||
}
|
||||
return elems[selector];
|
||||
};
|
||||
|
||||
var selector = arg;
|
||||
if (elems[selector] === undefined) {
|
||||
var elem = new_elem(selector);
|
||||
elems[selector] = jquery_array(elem);
|
||||
}
|
||||
return elems[selector];
|
||||
|
||||
zjquery.stub_selector = function (selector, stub) {
|
||||
elems[selector] = stub;
|
||||
};
|
||||
|
||||
zjquery.trim = function (s) { return s; };
|
||||
|
||||
zjquery.state = function () {
|
||||
// useful for debugging
|
||||
var res = _.map(elems, function (v) {
|
||||
return v.debug();
|
||||
});
|
||||
|
||||
res = _.map(res, function (v) {
|
||||
return [v.selector, v.value, v.shown];
|
||||
});
|
||||
|
||||
res.sort();
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
zjquery.Event = noop;
|
||||
|
||||
return zjquery;
|
||||
};
|
||||
|
||||
exports.zjquery.stub_selector = function (selector, stub) {
|
||||
elems[selector] = stub;
|
||||
};
|
||||
|
||||
exports.zjquery.trim = function (s) { return s; };
|
||||
|
||||
exports.zjquery.state = function () {
|
||||
// useful for debugging
|
||||
var res = _.map(elems, function (v) {
|
||||
return v.debug();
|
||||
});
|
||||
|
||||
res = _.map(res, function (v) {
|
||||
return [v.selector, v.value, v.shown];
|
||||
});
|
||||
|
||||
res.sort();
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
exports.zjquery.Event = noop;
|
||||
|
||||
return exports;
|
||||
}());
|
||||
module.exports = zjquery;
|
||||
module.exports = exports;
|
||||
|
||||
Reference in New Issue
Block a user