You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2018/12/12 14:45:30 UTC
[myfaces-tobago] branch master updated: TOBAGO-1633: Use TypeScript
instead of JavaScript.
This is an automated email from the ASF dual-hosted git repository.
lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
The following commit(s) were added to refs/heads/master by this push:
new 9664bff TOBAGO-1633: Use TypeScript instead of JavaScript.
9664bff is described below
commit 9664bff5f01cf38e11f9f07568bc4f6a8de05bc7
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Wed Dec 12 15:45:11 2018 +0100
TOBAGO-1633: Use TypeScript instead of JavaScript.
refactor:
* clean up
* event-listeners
---
.../tobago-bootstrap/_version/js/tobago-sheet.js | 37 ++----
.../tobago-bootstrap/_version/js/tobago-suggest.js | 46 +++----
.../tobago-bootstrap/_version/js/tobago.js | 146 +--------------------
3 files changed, 42 insertions(+), 187 deletions(-)
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-sheet.js b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-sheet.js
index df5f018..7305a19 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-sheet.js
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-sheet.js
@@ -92,7 +92,7 @@ Tobago.Sheet.prototype.reloadWithAction = function(source, action) {
var renderIds = this.id;
if (this.behaviorCommands && this.behaviorCommands.reload) {
if (this.behaviorCommands.reload.execute) {
- executeIds += " " + behaviorCommands.reload.execute;
+ executeIds += " " + this.behaviorCommands.reload.execute;
}
if (this.behaviorCommands.reload.render) {
renderIds += " " + this.behaviorCommands.reload.render;
@@ -300,7 +300,7 @@ Tobago.Sheet.setup2 = function (sheets) {
});
// scrolling
- jQuery(sheets).find(".tobago-sheet-body").bind("scroll", function () {
+ jQuery(sheets).find(".tobago-sheet-body").on("scroll", function () {
var sheetBody = jQuery(this);
var scrollLeft = sheetBody.prop("scrollLeft");
var scrollTop = sheetBody.prop("scrollTop");
@@ -334,12 +334,12 @@ Tobago.Sheet.setup2 = function (sheets) {
var selectionMode = sheet.data("tobago-selection-mode");
if (selectionMode === "single" || selectionMode === "singleOrNone" || selectionMode === "multi") {
Tobago.Sheet.getRows(sheet).each(function () {
- var row = jQuery(this);
- row.bind("mousedown", function (event) {
+ var $row = jQuery(this);
+ $row.on("mousedown", function (event) {
sheet.data("tobago-mouse-down-x", event.clientX);
sheet.data("tobago-mouse-down-y", event.clientY);
});
- row.click(function (event) {
+ $row.click(function (event) {
var $target = jQuery(event.target);
var $row = jQuery(this);
if ($target.hasClass("tobago-sheet-columnSelector") || !Tobago.Sheet.isInputElement($target)) {
@@ -410,7 +410,7 @@ Tobago.Sheet.setup2 = function (sheets) {
});
// todo:
if (Tobago.Sheets.get(sheet.attr("id")).dblClickActionId) {
- row.bind("dblclick", function (event) {
+ $row.on("dblclick", function (event) {
// todo: re-implement
Tobago.Sheets.get(sheet.attr("id")).doDblClick(event);
});
@@ -501,29 +501,17 @@ Tobago.Sheet.prototype.setup = function() {
};
Tobago.Sheet.prototype.initReload = function() {
- var sheet = jQuery(Tobago.Utils.escapeClientId(this.id));
- var reload = sheet.data("tobago-reload");
+ var $sheet = jQuery(Tobago.Utils.escapeClientId(this.id));
+ var reload = $sheet.data("tobago-reload");
if (typeof reload === "number") {
Tobago.addReloadTimeout(this.id, Tobago.bind2(this, "reloadWithAction", null, this.id), reload);
}
};
Tobago.Sheet.prototype.doDblClick = function(event) {
- if (! event) {
- event = window.event;
- }
-
- var srcElement;
- if (event.target) {
- // W3C DOM level 2
- srcElement = event.target;
- } else {
- // IE
- srcElement = event.srcElement;
- }
-
- if (!Tobago.Sheet.isInputElement(jQuery(srcElement))) {
- var row = jQuery(srcElement).closest("tr");
+ var target = event.target;
+ if (!Tobago.Sheet.isInputElement(jQuery(target))) {
+ var row = jQuery(target).closest("tr");
var sheet = row.closest(".tobago-sheet");
var rowIndex = row.index() + sheet.data("tobago-first");
if (this.dblClickActionId) {
@@ -535,7 +523,6 @@ Tobago.Sheet.prototype.doDblClick = function(event) {
action = this.id + ":" + rowIndex + ":" + this.dblClickActionId;
}
if (this.dblClickReloadComponentId && this.dblClickReloadComponentId.length > 0) {
- //Tobago.reloadComponent(srcElement, this.dblClickReloadComponentId, action);
jsf.ajax.request(
action,
event,
@@ -545,7 +532,7 @@ Tobago.Sheet.prototype.doDblClick = function(event) {
render: this.dblClickReloadComponentId
});
} else {
- Tobago.submitAction(srcElement, action);
+ Tobago.submitAction(target, action);
}
}
}
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-suggest.js b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-suggest.js
index dbb6b0a..31b04c3 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-suggest.js
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago-suggest.js
@@ -25,7 +25,7 @@ Tobago.Suggest.loadFromServer = function (input) {
var suggest = jQuery(Tobago.Utils.escapeClientId(input.data("tobago-suggest-for")));
- if (suggest.val() != query) {
+ if (suggest.val() !== query) {
if (timeout) {
clearTimeout(timeout);
@@ -71,19 +71,19 @@ Tobago.Suggest.init = function (elements) {
var suggests = Tobago.Utils.selectWithJQuery(elements, ".tobago-suggest");
suggests.each(function () {
- var suggest = jQuery(this);
- var input = jQuery(Tobago.Utils.escapeClientId(suggest.data("tobago-suggest-for")));
+ var $suggest = jQuery(this);
+ var $input = jQuery(Tobago.Utils.escapeClientId($suggest.data("tobago-suggest-for")));
- var minChars = suggest.data("tobago-suggest-min-chars");
- var maxItems = suggest.data("tobago-suggest-max-items");
+ var minChars = $suggest.data("tobago-suggest-min-chars");
+ var maxItems = $suggest.data("tobago-suggest-max-items");
- var update = typeof suggest.data("tobago-suggest-update") != "undefined";
- var totalCount = suggest.data("tobago-suggest-total-count"); // todo
+ var update = typeof $suggest.data("tobago-suggest-update") != "undefined";
+ var totalCount = $suggest.data("tobago-suggest-total-count"); // todo
var localMenu = false;
- var dataTobagoMarkup = jQuery(Tobago.Utils.escapeClientId(input.attr("name"))).attr("data-tobago-markup");
+ var dataTobagoMarkup = jQuery(Tobago.Utils.escapeClientId($input.attr("name"))).attr("data-tobago-markup");
if (dataTobagoMarkup !== undefined) {
- var markups = jQuery.parseJSON(jQuery(Tobago.Utils.escapeClientId(input.attr("name"))).attr("data-tobago-markup"));
+ var markups = jQuery.parseJSON(jQuery(Tobago.Utils.escapeClientId($input.attr("name"))).attr("data-tobago-markup"));
markups.forEach(function (markup) {
if (markup === "localMenu") {
localMenu = true;
@@ -91,21 +91,21 @@ Tobago.Suggest.init = function (elements) {
});
}
- if (update && input.hasClass("tt-input")) { // already initialized: so only update data
- var asyncResults = suggest.data("tobago-suggest-callback"); // comes from "findMatches()"
+ if (update && $input.hasClass("tt-input")) { // already initialized: so only update data
+ var asyncResults = $suggest.data("tobago-suggest-callback"); // comes from "findMatches()"
if (asyncResults) {
- var data1 = suggest.data("tobago-suggest-data");
+ var data1 = $suggest.data("tobago-suggest-data");
asyncResults(data1);
}
} else { // new
- input.data("tobago-suggest-for", suggest.attr("id"));
- input.attr("autocomplete", "off");
+ $input.data("tobago-suggest-for", $suggest.attr("id"));
+ $input.attr("autocomplete", "off");
var source;
if (update) {
- source = Tobago.Suggest.loadFromServer(input);
+ source = Tobago.Suggest.loadFromServer($input);
} else {
- var data2 = suggest.data("tobago-suggest-data");
+ var data2 = $suggest.data("tobago-suggest-data");
source = Tobago.Suggest.fromClient(data2);
}
@@ -113,16 +113,16 @@ Tobago.Suggest.init = function (elements) {
return jQuery(Tobago.Utils.escapeClientId(suggest.attr('id') + "::popup"));
}
- var $suggestPopup = getSuggestPopup(suggest);
+ var $suggestPopup = getSuggestPopup($suggest);
if ($suggestPopup.length > 0) {
$suggestPopup.remove();
}
jQuery(".tobago-page-menuStore")
- .append("<div id='" + suggest.attr('id') + "::popup" + "' class='tt-menu tt-empty'/>");
- $suggestPopup = getSuggestPopup(suggest);
+ .append("<div id='" + $suggest.attr('id') + "::popup" + "' class='tt-menu tt-empty'/>");
+ $suggestPopup = getSuggestPopup($suggest);
- input.typeahead({
+ $input.typeahead({
menu: localMenu ? null : $suggestPopup,
minLength: minChars,
hint: true,// todo
@@ -132,13 +132,13 @@ Tobago.Suggest.init = function (elements) {
limit: maxItems,
source: source
}).on('typeahead:change', function (event) {
- input.trigger('change');
+ $input.trigger('change');
});
- input.bind('typeahead:open', function () {
+ $input.on('typeahead:open', function () {
var $input = jQuery(this);
var $suggest = $input.parent().siblings(".tobago-suggest");
- if ($suggest.length == 0) {
+ if ($suggest.length === 0) {
$suggest = $input.parent().parent().parent().siblings(".tobago-suggest");
}
var $suggestPopup = jQuery(Tobago.Utils.escapeClientId($suggest.attr('id') + "::popup"));
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago.js b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago.js
index 4ad5716..5d50596 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago.js
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/META-INF/resources/tobago/standard/tobago-bootstrap/_version/js/tobago.js
@@ -53,8 +53,6 @@ var Tobago = {
jsObjects: [],
- eventListeners: [],
-
/**
* Check browser types and versions.
* Please try to use jQuery.support instead of this object!
@@ -146,9 +144,10 @@ var Tobago = {
this.initMarker = true;
console.time("[tobago] init"); // @DEV_ONLY
- this.addBindEventListener(Tobago.findForm().get(0), 'submit', this, Tobago.onSubmit);
- this.addBindEventListener(window, 'unload', this, 'onUnload');
+ document.querySelector("form").addEventListener('submit', Tobago.onSubmit);
+
+ window.addEventListener('unload', Tobago.onUnload);
for (var order = 0; order < Tobago.listeners.documentReady.length; order++) {
var list = Tobago.listeners.documentReady[order];
@@ -212,6 +211,8 @@ var Tobago = {
*/
onUnload: function() {
+ console.info('on onload'); // @DEV_ONLY
+
var phase = this.isSubmit ? Tobago.listeners.beforeUnload : Tobago.listeners.beforeExit;
for (var order = 0; order < phase.length; order++) {
@@ -229,8 +230,6 @@ var Tobago = {
},
destroyObjects: function() {
- this.removeEventListeners();
-
for (var i = 0; i < this.jsObjects.length; i++) {
try {
this.destroyObject(this.jsObjects[i]);
@@ -242,21 +241,6 @@ var Tobago = {
delete this.jsObjects;
},
- removeEventListeners: function() {
- var count = 0;
- for (var i = 0; i < this.eventListeners.length; i++) {
- var el = this.eventListeners[i];
- this.removeEventListener(el);
- delete el.element;
- delete el.event;
- delete el.func;
- this.eventListeners[i] = undefined;
- count++;
- }
- delete this.eventListeners;
-// alert(count + " EverntListener geloescht");
- },
-
destroyObject: function(obj) {
if (obj.htmlElement) {
// test
@@ -403,7 +387,7 @@ var Tobago = {
} else {
scrollPanels = elements.find("[data-tobago-scroll-panel]");
}
- scrollPanels.bind("scroll", function () {
+ scrollPanels.on("scroll", function () {
var panel = jQuery(this);
var scrollLeft = panel.prop("scrollLeft");
var scrollTop = panel.prop("scrollTop");
@@ -423,46 +407,6 @@ var Tobago = {
});
},
- /* supports only two background images in the moment */
- fixMultiBackgroundIE8: function (element) {
- var style = element.data("tobago-style");
- var index;
- var backgroundImage = style.backgroundImage;
- var backgroundImage2;
- if (backgroundImage) {
- index = backgroundImage.indexOf(",");
- if (index > -1) {
- style.backgroundImage = backgroundImage.substring(0, index);
- backgroundImage2 = backgroundImage.substring(index + 1);
- }
- }
- var backgroundPosition = style.backgroundPosition;
- var backgroundPosition2;
- if (backgroundPosition) {
- index = backgroundPosition.indexOf(",");
- if (index > -1) {
- style.backgroundPosition = backgroundPosition.substring(0, index);
- backgroundPosition2 = backgroundPosition.substring(index + 1);
- }
- }
- if (backgroundImage2) {
- var extra = jQuery("<span>").appendTo(element);
- extra.css({
- backgroundImage: backgroundImage2,
- backgroundPosition: backgroundPosition2,
- backgroundRepeat: "no-repeat",
- position: "absolute",
- left: "0",
- right: "0",
- top: "0",
- bottom: "0"
- });
- element.css({
- position: "relative"
- });
- }
- },
-
// -------- Util functions ----------------------------------------------------
/**
@@ -563,38 +507,6 @@ var Tobago = {
},
/**
- * Add an event listener to an HTML element
- */
- addEventListener: function(element, event, myFunction) {
- var el = new Tobago.EventListener(element, event, myFunction);
- if (el.element.addEventListener) { // this is DOM2
- el.element.addEventListener(el.event, el.func, false);
- } else { // IE
- el.element.attachEvent('on' + el.event, el.func);
- }
- },
-
- /**
- * Remove an event listener from an HTML element
- */
- removeEventListener: function(element, event, myFunction) {
- if (!event && !myFunction && element.element && element.event && element.func) {
- myFunction = element.func;
- event = element.event;
- element = element.element;
- }
- if (element.removeEventListener) { // this is DOM2
- element.removeEventListener(event, myFunction, true);
- }
- else if (element.detachEvent) { // IE
- element.detachEvent('on' + event, myFunction);
- } else {
- console.debug('Unknown Element: ' + typeof element); // @DEV_ONLY
- }
-
- },
-
- /**
* Returns a function which binds the named function 'func' of the object 'object'.
* additional arguments to bind function are added to the arguments at
* function call.
@@ -609,20 +521,7 @@ var Tobago = {
* will bind Tobago.setElementWidth(id, width) to f(id)
*
*/
- bind: function(object, func) {
- var rest = [];
- for (var i = 2; i < arguments.length; i++) {
- rest.push(arguments[i]);
- }
- return function() {
- var args = [];
- for (var i = 0; i < arguments.length; i++) {
- args.push(arguments[i]);
- }
- object[func].apply(object, args.concat(rest));
- };
- },
-
+ /* XXX please remove */
bind2: function(object, func) {
var rest = [];
for (var i = 2; i < arguments.length; i++) {
@@ -637,33 +536,9 @@ var Tobago = {
},
/**
- * Returns a function which binds the named function 'func' of the object 'object'
- * as eventListener.
- * E.g.:
- * var f = Tobago.bindAsEventListener(Tobago, "doSomthing");
- * will bind Tobago.doSomthing(event) to f(event)
- */
- bindAsEventListener: function(object, func) {
- return function(event) {
- object[func].call(object, event || window.event);
- };
- },
-
- /**
- * Adds a function which binds the named function 'func' of the object 'object'
- * as eventListener to an element.
- */
- addBindEventListener: function(element, event, object, func) {
- this.addEventListener(element, event, this.bindAsEventListener(object, func));
- },
-
- /**
* Stop event bubbling
*/
stopEventPropagation: function(event) {
- if (! event) {
- event = window.event;
- }
event.cancelBubble = true; // this is IE, no matter if not supported by actual browser
if (event.stopPropagation) {
event.stopPropagation(); // this is DOM2
@@ -836,13 +711,6 @@ Tobago.Config = {
Tobago.registerListener(Tobago.initDom, Tobago.Phase.DOCUMENT_READY, Tobago.Phase.Order.LATER);
Tobago.registerListener(Tobago.initDom, Tobago.Phase.AFTER_UPDATE, Tobago.Phase.Order.LATER);
-Tobago.EventListener = function(element, event, func) {
- this.element = element;
- this.event = event;
- this.func = func;
- Tobago.eventListeners[Tobago.eventListeners.length] = this;
-};
-
Tobago.Transport = {
requests: [],
currentActionId: null,