mirror of
https://github.com/Karaka-Management/jsOMS.git
synced 2026-01-11 01:48:40 +00:00
Cleanup and DocBlocks
This commit is contained in:
parent
7e11669ca3
commit
e6a6a80368
|
|
@ -1,19 +1,37 @@
|
|||
(function (jsOMS, undefined) {
|
||||
jsOMS.Autoloader = {};
|
||||
jsOMS.Autoloader.loaded = [];
|
||||
/**
|
||||
* Autoloader.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (jsOMS, undefined)
|
||||
{
|
||||
jsOMS.Autoloader = {};
|
||||
jsOMS.Autoloader.loaded = [];
|
||||
jsOMS.Autoloader.namespaced = [];
|
||||
|
||||
jsOMS.Autoloader.defineNamespace = function(namespace)
|
||||
/**
|
||||
* Define namespace
|
||||
*
|
||||
* @param {string} namespace Namespace
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Autoloader.defineNamespace = function (namespace)
|
||||
{
|
||||
if(jsOMS.Autoloader.namespaced.indexOf(namespace) === -1) {
|
||||
if (jsOMS.Autoloader.namespaced.indexOf(namespace) === -1) {
|
||||
let paths = namespace.split('.');
|
||||
paths.splice(0, 1);
|
||||
|
||||
let length = paths.length,
|
||||
let length = paths.length,
|
||||
current = jsOMS;
|
||||
|
||||
for(let i = 0; i < length; i++) {
|
||||
if(typeof current[paths[i]] === 'undefined') {
|
||||
for (let i = 0; i < length; i++) {
|
||||
if (typeof current[paths[i]] === 'undefined') {
|
||||
current[paths[i]] = {};
|
||||
}
|
||||
|
||||
|
|
@ -24,33 +42,56 @@
|
|||
}
|
||||
};
|
||||
|
||||
jsOMS.Autoloader.initPreloaded = function()
|
||||
/**
|
||||
* Collect all loaded javascript files
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Autoloader.initPreloaded = function ()
|
||||
{
|
||||
let scripts = document.getElementsByTagName('script'),
|
||||
length = scripts.length;
|
||||
length = scripts.length;
|
||||
|
||||
for(let i = 0; i < length; i++) {
|
||||
for (let i = 0; i < length; i++) {
|
||||
scripts[i].src.replace(URL + '/', '');
|
||||
|
||||
if(jsOMS.Autoloader.loaded.indexOf(scripts[i].src) === -1) {
|
||||
if (jsOMS.Autoloader.loaded.indexOf(scripts[i].src) === -1) {
|
||||
jsOMS.Autoloader.loaded.push(scripts[i].src);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
jsOMS.Autoloader.setPreloaded = function(file)
|
||||
/**
|
||||
* Add loaded script
|
||||
*
|
||||
* @param {string} file Script URI
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Autoloader.addPreloaded = function (file)
|
||||
{
|
||||
if(jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
||||
if (jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
||||
jsOMS.Autoloader.loaded.push(file);
|
||||
}
|
||||
};
|
||||
|
||||
jsOMS.Autoloader.include = function(file, callback)
|
||||
/**
|
||||
* Include script
|
||||
*
|
||||
* @param {string} file Script URI
|
||||
* @param {callback} callback Callback after script loading
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Autoloader.include = function (file, callback)
|
||||
{
|
||||
let length = file.length;
|
||||
|
||||
for(let i = 0; i < length; i++) {
|
||||
if(jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
||||
for (let i = 0; i < length; i++) {
|
||||
if (jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
||||
// todo: implement asset loading and pass callback
|
||||
|
||||
jsOMS.Autoloader.loaded.push(file);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,16 @@
|
|||
this.xhr = new XMLHttpRequest();
|
||||
};
|
||||
|
||||
/**
|
||||
* Get browser.
|
||||
*
|
||||
* @return {string}
|
||||
*
|
||||
* @method
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Message.Request.Request.getBrowser = function ()
|
||||
{
|
||||
if ((!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0) {
|
||||
|
|
@ -47,6 +57,16 @@
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get os.
|
||||
*
|
||||
* @return {string}
|
||||
*
|
||||
* @method
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Message.Request.Request.getOS = function ()
|
||||
{
|
||||
for (let os in jsOMS.Message.Request.OSType) {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
(function (jsOMS, undefined)
|
||||
{
|
||||
jsOMS.Autoloader.defineNamespace('jsOMS.Message.Request');
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*
|
||||
|
|
@ -21,22 +21,45 @@
|
|||
*/
|
||||
jsOMS.Message.Request.RequestManager = function ()
|
||||
{
|
||||
this.groups = {};
|
||||
this.groups = {};
|
||||
this.callbacks = {};
|
||||
};
|
||||
|
||||
jsOMS.Message.Request.RequestManager.prototype.addGroup = function(id, group)
|
||||
/**
|
||||
* Add request group.
|
||||
*
|
||||
* @return {string} id Request id
|
||||
* @return {string} group Group id
|
||||
*
|
||||
* @method
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Message.Request.RequestManager.prototype.addGroup = function (id, group)
|
||||
{
|
||||
if(typeof this.groups[group] == 'undefined') {
|
||||
if (typeof this.groups[group] == 'undefined') {
|
||||
this.groups[group] = {};
|
||||
}
|
||||
|
||||
this.groups[group][id] = false;
|
||||
};
|
||||
|
||||
jsOMS.Message.Request.RequestManager.prototype.hasOutstanding = function(group)
|
||||
/**
|
||||
* Group has outstanding/pending requests?
|
||||
*
|
||||
* @return {string} group Group id
|
||||
*
|
||||
* @return {boolean}
|
||||
*
|
||||
* @method
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Message.Request.RequestManager.prototype.hasOutstanding = function (group)
|
||||
{
|
||||
if(typeof this.groups[group] === 'undefined') {
|
||||
if (typeof this.groups[group] === 'undefined') {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -49,20 +72,42 @@
|
|||
return false;
|
||||
};
|
||||
|
||||
jsOMS.Message.Request.RequestManager.prototype.triggerDone = function(id, group)
|
||||
/**
|
||||
* Mark request as done.
|
||||
*
|
||||
* @return {string} id Request id
|
||||
* @return {string} group Group id
|
||||
*
|
||||
* @method
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Message.Request.RequestManager.prototype.triggerDone = function (id, group)
|
||||
{
|
||||
if(typeof this.groups[group] !== 'undefined') {
|
||||
if (typeof this.groups[group] !== 'undefined') {
|
||||
this.groups[group][id] = true;
|
||||
}
|
||||
|
||||
if(!this.hasOutstanding(group)) {
|
||||
if (!this.hasOutstanding(group)) {
|
||||
this.callbacks[group]();
|
||||
delete this.callbacks[group];
|
||||
delete this.groups[group];
|
||||
}
|
||||
};
|
||||
|
||||
jsOMS.Message.Request.RequestManager.prototype.setDone = function(group, callback)
|
||||
/**
|
||||
* Create callback for request pool.
|
||||
*
|
||||
* @return {string} group Group id
|
||||
* @return {callback} callback Callback
|
||||
*
|
||||
* @method
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Message.Request.RequestManager.prototype.setDone = function (group, callback)
|
||||
{
|
||||
this.callbacks[group] = callback;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,22 +1,35 @@
|
|||
(function (uriFactory, undefined) {
|
||||
/**
|
||||
* Response manager class.
|
||||
*
|
||||
* Used for auto handling different responses.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (uriFactory, undefined)
|
||||
{
|
||||
jsOMS.Autoloader.defineNamespace('jsOMS.Message.Response');
|
||||
|
||||
jsOMS.Message.Response.Response = function (data) {
|
||||
|
||||
jsOMS.Message.Response.Response = function (data)
|
||||
{
|
||||
this.responses = data;
|
||||
};
|
||||
|
||||
jsOMS.Message.Response.Response.prototype.get = function(id)
|
||||
jsOMS.Message.Response.Response.prototype.get = function (id)
|
||||
{
|
||||
return this.responses[id];
|
||||
};
|
||||
|
||||
jsOMS.Message.Response.Response.prototype.getByIndex = function(index)
|
||||
jsOMS.Message.Response.Response.prototype.getByIndex = function (index)
|
||||
{
|
||||
//return this.responses[Object.keys(this.responses).sort()[index]];
|
||||
return this.responses;
|
||||
};
|
||||
|
||||
jsOMS.Message.Response.Response.prototype.count = function()
|
||||
jsOMS.Message.Response.Response.prototype.count = function ()
|
||||
{
|
||||
return 1;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -24,21 +24,53 @@
|
|||
this.ignore = {};
|
||||
};
|
||||
|
||||
/**
|
||||
* Get form
|
||||
*
|
||||
* @param {string} id Form Id
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.get = function (id)
|
||||
{
|
||||
return this.forms[id];
|
||||
};
|
||||
|
||||
/**
|
||||
* Is form ignored?
|
||||
*
|
||||
* @param {string} id Form Id
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.isIgnored = function (id)
|
||||
{
|
||||
return this.ignore.indexOf(id) !== -1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Unbind form
|
||||
*
|
||||
* @param {string} id Form Id
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.unbind = function (id)
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Bind form
|
||||
*
|
||||
* @param {string} id Form Id (optional)
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.bind = function (id)
|
||||
{
|
||||
if (typeof id !== 'undefined' && typeof this.ignore[id] === 'undefined') {
|
||||
|
|
@ -55,6 +87,14 @@
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Bind form
|
||||
*
|
||||
* @param {string} id Form Id
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.bindForm = function (id)
|
||||
{
|
||||
if (typeof id === 'undefined' || !id) {
|
||||
|
|
@ -74,6 +114,14 @@
|
|||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Unbind form
|
||||
*
|
||||
* @param {string} id Form Id
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.unbindForm = function (id)
|
||||
{
|
||||
// todo: do i need the findex? can't i just use id?
|
||||
|
|
@ -89,6 +137,16 @@
|
|||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Submit form
|
||||
*
|
||||
* Calls injections first befor executing the actual form submit
|
||||
*
|
||||
* @param {Object} form Form object
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.submit = function (form)
|
||||
{
|
||||
/* Handle injects */
|
||||
|
|
@ -110,6 +168,16 @@
|
|||
this.app.eventManager.triggerDone('?', form.getId());
|
||||
};
|
||||
|
||||
/**
|
||||
* Submit form data
|
||||
*
|
||||
* Submits the main form data
|
||||
*
|
||||
* @param {Object} form Form object
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.submitForm = function (form)
|
||||
{
|
||||
if (!form.isValid()) {
|
||||
|
|
@ -160,6 +228,14 @@
|
|||
request.send();
|
||||
};
|
||||
|
||||
/**
|
||||
* Count the bound forms
|
||||
*
|
||||
* @return {number}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.FormManager.prototype.count = function ()
|
||||
{
|
||||
return this.forms.length;
|
||||
|
|
|
|||
92
UI/Input.js
92
UI/Input.js
|
|
@ -13,57 +13,81 @@
|
|||
jsOMS.Autoloader.defineNamespace('jsOMS.UI');
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* Unbind input element
|
||||
*
|
||||
* @param {Object} input Input element
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.unbind = function(input)
|
||||
jsOMS.UI.Input.unbind = function (input)
|
||||
{
|
||||
this.app.inputManager.getKeyboardManager().unbind(input);
|
||||
input.removeEventListener('change', changeBind, false);
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.bind = function(input)
|
||||
/**
|
||||
* Bind input elment
|
||||
*
|
||||
* @param {Object} input Input elment
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.bind = function (input)
|
||||
{
|
||||
let self = this;
|
||||
|
||||
input.addEventListener('change', function changeBind(event) {
|
||||
|
||||
input.addEventListener('change', function changeBind(event)
|
||||
{
|
||||
/* Handle remote datalist/autocomplete input element */
|
||||
let listId, list;
|
||||
if(typeof (listId = this.getAttribute('list')) !== 'undefined' && (list = document.getElementById(listId)).getAttribute('data-list-src') !== 'undefined') {
|
||||
if (typeof (listId = this.getAttribute('list')) !== 'undefined' && (list = document.getElementById(listId)).getAttribute('data-list-src') !== 'undefined') {
|
||||
self.addRemoteDatalistOptions(this, list);
|
||||
}
|
||||
|
||||
/* Handle html defined functions */
|
||||
let change;
|
||||
if(typeof (change = this.getAttribute('data-change-func')) !== 'undefined') {
|
||||
if (typeof (change = this.getAttribute('data-change-func')) !== 'undefined') {
|
||||
change(this);
|
||||
}
|
||||
|
||||
/* Handle pre-defined dynamic change events */
|
||||
let ref;
|
||||
if(typeof (ref = this.getAttribute('data-ref')) !== 'undefined') {
|
||||
if (typeof (ref = this.getAttribute('data-ref')) !== 'undefined') {
|
||||
let e = document.getElementById(ref);
|
||||
|
||||
switch(e.tagName) {
|
||||
switch (e.tagName) {
|
||||
case 'ul':
|
||||
break;
|
||||
case 'table':
|
||||
break;
|
||||
};
|
||||
}
|
||||
;
|
||||
}
|
||||
});
|
||||
|
||||
let dataButton;
|
||||
if(typeof (dataButton = input.getAttribute('data-button')) !== 'undefined') {
|
||||
this.app.inputManager.getKeyboardManager().bind(input, 13, function() {
|
||||
document.getElementById(dataButton).click();
|
||||
if (typeof (dataButton = input.getAttribute('data-button')) !== 'undefined') {
|
||||
this.app.inputManager.getKeyboardManager().bind(input, 13, function ()
|
||||
{
|
||||
document.getElementById(dataButton).click();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.addRemoteDatalistOptions = function(input, datalist)
|
||||
/**
|
||||
* Add remote datalist options
|
||||
*
|
||||
* This only applies for datalists that have remote options
|
||||
*
|
||||
* @param {Object} input Input elment
|
||||
* @param {Object} datalist Datalist elment
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.addRemoteDatalistOptions = function (input, datalist)
|
||||
{
|
||||
this.clearDatalistOptions(datalist);
|
||||
|
||||
|
|
@ -73,27 +97,28 @@
|
|||
request.setUri(datalist.getAttribute('data-list-src'));
|
||||
request.setMethod(jsOMS.Message.Request.RequestMethod.POST);
|
||||
request.setRequestHeader('Content-Type', 'application/json');
|
||||
request.setSuccess(function (xhr) {
|
||||
request.setSuccess(function (xhr)
|
||||
{
|
||||
try {
|
||||
let o = JSON.parse(xhr.response),
|
||||
response = new Response(o),
|
||||
responseLength = response.count(),
|
||||
tempResponse = null,
|
||||
success = null;
|
||||
let o = JSON.parse(xhr.response),
|
||||
response = new Response(o),
|
||||
responseLength = response.count(),
|
||||
tempResponse = null,
|
||||
success = null;
|
||||
|
||||
for (let k = 0; k < responseLength; k++) {
|
||||
tempResponse = response.getByIndex(k);
|
||||
console.log(tempResponse);
|
||||
|
||||
let option = null,
|
||||
data = tempResponse.getData(),
|
||||
length = data.length;
|
||||
data = tempResponse.getData(),
|
||||
length = data.length;
|
||||
|
||||
for(let i = 0; i < length; i++) {
|
||||
option = document.createElement('option');
|
||||
for (let i = 0; i < length; i++) {
|
||||
option = document.createElement('option');
|
||||
option.value = tempResponse.value;
|
||||
option.text = tempResponse.text;
|
||||
|
||||
option.text = tempResponse.text;
|
||||
|
||||
datalist.appendChild(option);
|
||||
}
|
||||
}
|
||||
|
|
@ -106,12 +131,19 @@
|
|||
request.send();
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.clearDatalistOptions = function(datalist)
|
||||
/**
|
||||
* Remove all datalist options from datalist
|
||||
*
|
||||
* @param {Object} datalist Datalist elment
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.clearDatalistOptions = function (datalist)
|
||||
{
|
||||
let length = datalist.options.length,
|
||||
i = 0;
|
||||
let length = datalist.options.length;
|
||||
|
||||
for(i = 0; i < length; i++) {
|
||||
for (let i = 0; i < length; i++) {
|
||||
datalist.remove(0);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,18 +1,50 @@
|
|||
(function (jsOMS, undefined) {
|
||||
/**
|
||||
* UI manager class.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (jsOMS, undefined)
|
||||
{
|
||||
jsOMS.Autoloader.defineNamespace('jsOMS.UI.Input');
|
||||
|
||||
jsOMS.UI.Input.InputManager = function ()
|
||||
{
|
||||
this.keyBoardManager = new jsOMS.UI.Input.Keyboard.KeyboardManager();
|
||||
this.mouseManager = new jsOMS.UI.Input.Mouse.MouseManager();
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.InputManager = function ()
|
||||
{
|
||||
this.keyBoardManager = new jsOMS.UI.Input.Keyboard.KeyboardManager();
|
||||
this.mouseManager = new jsOMS.UI.Input.Mouse.MouseManager();
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.InputManager.prototype.getKeyboardManager = function()
|
||||
{
|
||||
return this.keyBoardManager;
|
||||
};
|
||||
/**
|
||||
* Get keyboard manager.
|
||||
*
|
||||
* @return {Object}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.InputManager.prototype.getKeyboardManager = function ()
|
||||
{
|
||||
return this.keyBoardManager;
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.InputManager.prototype.getMouseManager = function()
|
||||
/**
|
||||
* Get mouse manager.
|
||||
*
|
||||
* @return {Object}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.InputManager.prototype.getMouseManager = function ()
|
||||
{
|
||||
return this.mouseManager;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,13 +1,38 @@
|
|||
/**
|
||||
* Keyboard manager class.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (jsOMS, undefined)
|
||||
{
|
||||
jsOMS.Autoloader.defineNamespace('jsOMS.UI.Input.Keyboard');
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Keyboard.KeyboardManager = function ()
|
||||
{
|
||||
this.elements = {};
|
||||
this.down = [];
|
||||
};
|
||||
|
||||
/**
|
||||
* Add input listener.
|
||||
*
|
||||
* @param {string} element Container id
|
||||
* @param {Array} keys Keyboard keys
|
||||
* @param {callback} callback Callback
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Keyboard.KeyboardManager.prototype.add = function (element, keys, callback)
|
||||
{
|
||||
if (typeof this.elements[element] === 'undefined') {
|
||||
|
|
@ -19,6 +44,14 @@
|
|||
this.elements[element].push({keys: keys, callback: callback});
|
||||
};
|
||||
|
||||
/**
|
||||
* Bind container for keyboard input.
|
||||
*
|
||||
* @param {string} element Container id
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Keyboard.KeyboardManager.prototype.bind = function (element)
|
||||
{
|
||||
let self = this;
|
||||
|
|
@ -31,14 +64,22 @@
|
|||
|
||||
document.addEventListener('keyup', function keyBind(event)
|
||||
{
|
||||
if(self.down.length > 0) {
|
||||
self.run(element, event);
|
||||
if (self.down.length > 0) {
|
||||
self.run(element);
|
||||
self.down = [];
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.Keyboard.KeyboardManager.prototype.run = function (element, event)
|
||||
/**
|
||||
* Execute callback based on key presses.
|
||||
*
|
||||
* @param {string} element Container id
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Keyboard.KeyboardManager.prototype.run = function (element)
|
||||
{
|
||||
if (typeof this.elements[element] === 'undefined') {
|
||||
throw 'Unexpected elmenet!';
|
||||
|
|
@ -60,7 +101,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
if(match) {
|
||||
if (match) {
|
||||
jsOMS.preventAll(event);
|
||||
actions[i].callback();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Click type.
|
||||
* Event type.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,40 @@
|
|||
/**
|
||||
* Mouse manager class.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (jsOMS, undefined)
|
||||
{
|
||||
jsOMS.Autoloader.defineNamespace('jsOMS.UI.Input.Mouse');
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Mouse.MouseManager = function ()
|
||||
{
|
||||
this.elements = {};
|
||||
this.click = {time: 0};
|
||||
};
|
||||
|
||||
/**
|
||||
* Add input listener.
|
||||
*
|
||||
* @param {string} element Container id
|
||||
* @param {int} type Action type
|
||||
* @param {int} button Button
|
||||
* @param {callback} callback Callback
|
||||
* @param {bool} exact ??? todo: can't remember why this was important oO!!!
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Mouse.MouseManager.prototype.add = function (element, type, button, callback, exact)
|
||||
{
|
||||
if (typeof this.elements[element] === 'undefined') {
|
||||
|
|
@ -18,12 +45,21 @@
|
|||
this.elements[element].push({callback: callback, type: type, button: button, exact: exact});
|
||||
};
|
||||
|
||||
/**
|
||||
* Add input listener.
|
||||
*
|
||||
* @param {string} element Element id
|
||||
* @param {int} type Action type
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Mouse.MouseManager.prototype.bind = function (element, type)
|
||||
{
|
||||
let self = this,
|
||||
e = document.getElementById(element);
|
||||
e = document.getElementById(element);
|
||||
|
||||
if(e === null) {
|
||||
if (e === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -56,6 +92,15 @@
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Run mouse input callback.
|
||||
*
|
||||
* @param {string} element Element id
|
||||
* @param {Object} event Click event
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Mouse.MouseManager.prototype.run = function (element, event)
|
||||
{
|
||||
if (typeof this.elements[element] === 'undefined') {
|
||||
|
|
|
|||
|
|
@ -1,83 +0,0 @@
|
|||
/**
|
||||
* Swipe manager class.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (jsOMS, undefined)
|
||||
{
|
||||
jsOMS.Autoloader.defineNamespace('jsOMS.UI.Input.Touch');
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Touch.SwipeManager = function (app)
|
||||
{
|
||||
this.app = app;
|
||||
this.activeSwipe = {};
|
||||
this.resetSwipe();
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.Touch.SwipeManager.prototype.resetSwipe = function ()
|
||||
{
|
||||
this.activeSwipe = {'startX': null, 'startY': null, 'time': null};
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.Touch.SwipeManager.prototype.add = function ()
|
||||
{
|
||||
let self = this;
|
||||
|
||||
e.addEventListener('touchstart', function (event)
|
||||
{
|
||||
let touch = this.changedTouches[0];
|
||||
|
||||
self.activeSwipe.startX = touch.pageX;
|
||||
self.activeSwipe.startY = touch.pageY;
|
||||
self.activeSwipe.time = new Date().getTime();
|
||||
|
||||
jsOMS.preventAll(event);
|
||||
});
|
||||
|
||||
e.addEventListener('touchmove', function (event)
|
||||
{
|
||||
jsOMS.preventAll(event);
|
||||
});
|
||||
|
||||
e.addEventListener('touchend', function (event)
|
||||
{
|
||||
let touch = this.changedTouches[0],
|
||||
distX = touch.pageX - self.activeSwipe.startX,
|
||||
distY = touch.pageY - self.activeSwipe.startY,
|
||||
elapsedTime = new Date().getTime() - self.activeSwipe.time;
|
||||
|
||||
if (elapsedTime < 500) {
|
||||
let e = new Event('keyup');
|
||||
|
||||
if (distY > 100) {
|
||||
e.keyCode = 38;
|
||||
document.dispatchEvent(e);
|
||||
} else if (distX > 100) {
|
||||
e.keyCode = 39;
|
||||
document.dispatchEvent(e);
|
||||
} else if (distY < -100) {
|
||||
e.keyCode = 40;
|
||||
document.dispatchEvent(e);
|
||||
} else if (distX < -100) {
|
||||
e.keyCode = 37;
|
||||
document.dispatchEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
self.resetSwipe();
|
||||
|
||||
jsOMS.preventAll(event);
|
||||
});
|
||||
};
|
||||
|
||||
}(window.jsOMS = window.jsOMS || {}));
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/**
|
||||
* Touch manager class.
|
||||
*
|
||||
|
|
@ -15,17 +14,89 @@
|
|||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @param {Object} app Application
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Touch.TouchManager = function (app)
|
||||
{
|
||||
this.app = app;
|
||||
this.swipe = new jsOMS.UI.Input.Touch.SwipeManager(app);
|
||||
this.app = app;
|
||||
this.activeSwipe = {};
|
||||
this.resetSwipe();
|
||||
};
|
||||
|
||||
jsOMS.UI.Input.Touch.TouchManager.prototype.getSwipeManager = function ()
|
||||
/**
|
||||
* Reset swipe data.
|
||||
*
|
||||
* This is called in between swipes in order to reset previous swipe data.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Touch.TouchManager.prototype.resetSwipe = function ()
|
||||
{
|
||||
return this.swipe;
|
||||
this.activeSwipe = {'startX': null, 'startY': null, 'time': null};
|
||||
};
|
||||
|
||||
/**
|
||||
* Adding swipe functionality.
|
||||
*
|
||||
* Forwarding swipe to arrow keyes.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.UI.Input.Touch.TouchManager.prototype.add = function ()
|
||||
{
|
||||
let self = this;
|
||||
|
||||
e.addEventListener('touchstart', function (event)
|
||||
{
|
||||
let touch = this.changedTouches[0];
|
||||
|
||||
self.activeSwipe.startX = touch.pageX;
|
||||
self.activeSwipe.startY = touch.pageY;
|
||||
self.activeSwipe.time = new Date().getTime();
|
||||
|
||||
jsOMS.preventAll(event);
|
||||
});
|
||||
|
||||
e.addEventListener('touchmove', function (event)
|
||||
{
|
||||
jsOMS.preventAll(event);
|
||||
});
|
||||
|
||||
e.addEventListener('touchend', function (event)
|
||||
{
|
||||
let touch = this.changedTouches[0],
|
||||
distX = touch.pageX - self.activeSwipe.startX,
|
||||
distY = touch.pageY - self.activeSwipe.startY,
|
||||
elapsedTime = new Date().getTime() - self.activeSwipe.time;
|
||||
|
||||
self.resetSwipe();
|
||||
// todo: only prevent all if success
|
||||
jsOMS.preventAll(event);
|
||||
|
||||
if (elapsedTime > 300 && distY < 3 && distX < 3) {
|
||||
// todo: handle long press here
|
||||
} else if (elapsedTime < 500) {
|
||||
let e = new Event('keyup');
|
||||
|
||||
if (distY > 100) {
|
||||
e.keyCode = 38;
|
||||
document.dispatchEvent(e);
|
||||
} else if (distX > 100) {
|
||||
e.keyCode = 39;
|
||||
document.dispatchEvent(e);
|
||||
} else if (distY < -100) {
|
||||
e.keyCode = 40;
|
||||
document.dispatchEvent(e);
|
||||
} else if (distX < -100) {
|
||||
e.keyCode = 37;
|
||||
document.dispatchEvent(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}(window.jsOMS = window.jsOMS || {}));
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @param {Object} app Application object
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,23 +1,49 @@
|
|||
(function (uriFactory, undefined) {
|
||||
/**
|
||||
* Uri factory.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (uriFactory, undefined)
|
||||
{
|
||||
jsOMS.Autoloader.defineNamespace('jsOMS.Uri.UriFactory');
|
||||
|
||||
/**
|
||||
* Uri values
|
||||
*
|
||||
* @var {Object}
|
||||
* @since 1.0.0
|
||||
*/
|
||||
jsOMS.Uri.UriFactory.uri = {};
|
||||
|
||||
/**
|
||||
* Parse uri
|
||||
*
|
||||
* @return {Object}
|
||||
*
|
||||
* @function
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Uri.UriFactory.parseUrl = function (str)
|
||||
{
|
||||
let query, key = ['source', 'scheme', 'authority', 'userInfo', 'user', 'pass', 'host', 'port',
|
||||
'relative', 'path', 'directory', 'file', 'query', 'fragment'
|
||||
],
|
||||
mode = 'php',
|
||||
parser = {
|
||||
mode = 'php',
|
||||
parser = {
|
||||
php: /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
|
||||
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
|
||||
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // Added one optional slash to post-scheme to catch file:/// (should restrict this)
|
||||
};
|
||||
|
||||
let m = parser[mode].exec(str),
|
||||
let m = parser[mode].exec(str),
|
||||
uri = {},
|
||||
i = 14;
|
||||
i = 14;
|
||||
|
||||
while (i--) {
|
||||
if (m[i]) {
|
||||
|
|
@ -47,17 +73,31 @@
|
|||
{
|
||||
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
|
||||
|
||||
let regex = new RegExp("[\\?&]*" + name + "=([^&#]*)"),
|
||||
let regex = new RegExp("[\\?&]*" + name + "=([^&#]*)"),
|
||||
results = regex.exec(query);
|
||||
|
||||
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
|
||||
};
|
||||
|
||||
jsOMS.Uri.UriFactory.setQuery = function(key, value, overwrite)
|
||||
/**
|
||||
* Set uri query
|
||||
*
|
||||
* @param {string} key Query key
|
||||
* @param {string} value Query value
|
||||
* @param {boolean} overwrite Overwrite if already exists?
|
||||
*
|
||||
* @return {boolean}
|
||||
*
|
||||
* @function
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Uri.UriFactory.setQuery = function (key, value, overwrite)
|
||||
{
|
||||
overwrite = typeof overwrite !== 'undefined' ? overwrite : true;
|
||||
|
||||
if(overwrite || !jsOMS.Uri.UriFactory.uri.hasProperty(key)) {
|
||||
if (overwrite || !jsOMS.Uri.UriFactory.uri.hasProperty(key)) {
|
||||
jsOMS.Uri.UriFactory.uri[key] = value;
|
||||
|
||||
return true;
|
||||
|
|
@ -66,22 +106,34 @@
|
|||
return false;
|
||||
};
|
||||
|
||||
jsOMS.Uri.UriFactory.build = function(uri, toMatch)
|
||||
/**
|
||||
* Build uri
|
||||
*
|
||||
* @param {string} uri Raw uri
|
||||
* @param {Object} toMatch Key/value pair to replace in raw
|
||||
*
|
||||
* @function
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Uri.UriFactory.build = function (uri, toMatch)
|
||||
{
|
||||
let current = jsOMS.Uri.UriFactory.parseUrl(window.location.href);
|
||||
|
||||
return uri.replace(new RegExp('\{[\/#\?@\.\$][a-zA-Z0-9]*\}', 'g'), function(match) {
|
||||
return uri.replace(new RegExp('\{[\/#\?@\.\$][a-zA-Z0-9]*\}', 'g'), function (match)
|
||||
{
|
||||
match = match.substr(1, match.length - 2);
|
||||
|
||||
if(typeof toMatch !== 'undefined' && toMatch.hasProperty(match)) {
|
||||
if (typeof toMatch !== 'undefined' && toMatch.hasProperty(match)) {
|
||||
return toMatch[match];
|
||||
} else if(jsOMS.Uri.UriFactory.uri[match] !== 'undefined') {
|
||||
} else if (jsOMS.Uri.UriFactory.uri[match] !== 'undefined') {
|
||||
return jsOMS.Uri.UriFactory.uri[match];
|
||||
} else if (match.indexOf('#') === 0) {
|
||||
return document.getElementById(match.substring(1, match.length)).value;
|
||||
} else if(match.indexOf('?') === 0) {
|
||||
} else if (match.indexOf('?') === 0) {
|
||||
return jsOMS.Uri.UriFactory.getUriQueryParameter(current.query, match.substring(1, match.length));
|
||||
} else if(match.indexOf('/') === 0) {
|
||||
} else if (match.indexOf('/') === 0) {
|
||||
// todo: second match should return second path
|
||||
return 'ERROR PATH';
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,25 @@
|
|||
/**
|
||||
* Form view.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (jsOMS, undefined)
|
||||
{
|
||||
"use strict";
|
||||
jsOMS.Autoloader.defineNamespace('jsOMS.Views');
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*
|
||||
* @param {string} id Form id
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView = function (id)
|
||||
{
|
||||
this.id = id;
|
||||
|
|
@ -12,6 +29,14 @@
|
|||
this.success = null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize members
|
||||
*
|
||||
* Pulled out since this is used in a cleanup process
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.initializeMembers = function ()
|
||||
{
|
||||
this.submitInjects = [];
|
||||
|
|
@ -19,48 +44,111 @@
|
|||
this.action = '';
|
||||
};
|
||||
|
||||
/**
|
||||
* Get method
|
||||
*
|
||||
* @return {string}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getMethod = function ()
|
||||
{
|
||||
return this.method;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get action
|
||||
*
|
||||
* @return {string}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getAction = function ()
|
||||
{
|
||||
return this.action;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get submit elements
|
||||
*
|
||||
* @return {Object}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getSubmit = function ()
|
||||
{
|
||||
return document.getElementById(this.id).querySelectorAll('input[type=submit]')[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* Get success callback
|
||||
*
|
||||
* @return {callback}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getSuccess = function ()
|
||||
{
|
||||
return this.success;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set success callback
|
||||
*
|
||||
* @param {callback} callback Callback
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.setSuccess = function (callback)
|
||||
{
|
||||
this.success = callback;
|
||||
};
|
||||
|
||||
jsOMS.Views.FormView.prototype.injectSubmit = function (id, callback)
|
||||
/**
|
||||
* Inject submit with post callback
|
||||
*
|
||||
* @param {callback} callback Callback
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.injectSubmit = function (callback)
|
||||
{
|
||||
this.submitInjects.push(callback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Get form elements
|
||||
*
|
||||
* @return {Array}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getFormElements = function ()
|
||||
{
|
||||
let form = document.getElementById(this.id),
|
||||
selects = form.getElementsByTagName('select'),
|
||||
textareas = form.getElementsByTagName('textarea'),
|
||||
inputs = form.getElementsByTagName('input'),
|
||||
external = document.querySelectorAll('[form=' + this.id + ']'),
|
||||
elements = Array.prototype.slice.call(inputs).concat(Array.prototype.slice.call(selects), Array.prototype.slice.call(textareas), Array.prototype.slice.call(external));
|
||||
external = document.querySelectorAll('[form=' + this.id + ']');
|
||||
|
||||
return elements;
|
||||
return Array.prototype.slice.call(inputs).concat(Array.prototype.slice.call(selects), Array.prototype.slice.call(textareas), Array.prototype.slice.call(external));
|
||||
};
|
||||
|
||||
/**
|
||||
* Get form data
|
||||
*
|
||||
* @return {Object}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getData = function ()
|
||||
{
|
||||
let data = {},
|
||||
|
|
@ -75,11 +163,27 @@
|
|||
return data;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get form id
|
||||
*
|
||||
* @return {string}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getId = function ()
|
||||
{
|
||||
return this.id;
|
||||
};
|
||||
|
||||
/**
|
||||
* Validate form
|
||||
*
|
||||
* @return {boolean}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.isValid = function ()
|
||||
{
|
||||
let elements = this.getFormElements(),
|
||||
|
|
@ -98,11 +202,27 @@
|
|||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get form element
|
||||
*
|
||||
* @return {Object}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getElement = function ()
|
||||
{
|
||||
return document.getElementById(this.getId());
|
||||
};
|
||||
|
||||
/**
|
||||
* Get form element id
|
||||
*
|
||||
* @return {string}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.getElementId = function (e)
|
||||
{
|
||||
let id = e.getAttribute('name');
|
||||
|
|
@ -122,11 +242,25 @@
|
|||
return id;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get submit injects
|
||||
*
|
||||
* @return {Object}
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.getSubmitInjects = function ()
|
||||
{
|
||||
return this.submitInjects;
|
||||
};
|
||||
|
||||
/**
|
||||
* Bind form
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.bind = function ()
|
||||
{
|
||||
this.clean();
|
||||
|
|
@ -153,17 +287,21 @@
|
|||
this.bindButton(elements[i]);
|
||||
break;
|
||||
}
|
||||
;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Unbind form
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.unbind = function ()
|
||||
{
|
||||
let elements = this.getFormElements(),
|
||||
length = elements.length,
|
||||
i = 0;
|
||||
length = elements.length;
|
||||
|
||||
for (i = 0; i < length; i++) {
|
||||
for (let i = 0; i < length; i++) {
|
||||
switch (elements[i].tagName) {
|
||||
case 'input':
|
||||
jsOMS.UI.Input.unbind(elements[i])
|
||||
|
|
@ -178,10 +316,15 @@
|
|||
this.bindButton(elements[i]);
|
||||
break;
|
||||
}
|
||||
;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Clean form
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Views.FormView.prototype.clean = function ()
|
||||
{
|
||||
this.unbind();
|
||||
|
|
|
|||
|
|
@ -1,19 +1,37 @@
|
|||
(function (jsOMS, undefined) {
|
||||
jsOMS.Autoloader = {};
|
||||
jsOMS.Autoloader.loaded = [];
|
||||
/**
|
||||
* Autoloader.
|
||||
*
|
||||
* @author OMS Development Team <dev@oms.com>
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
* @copyright 2013 Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0 * @since 1.0.0
|
||||
*/
|
||||
(function (jsOMS, undefined)
|
||||
{
|
||||
jsOMS.Autoloader = {};
|
||||
jsOMS.Autoloader.loaded = [];
|
||||
jsOMS.Autoloader.namespaced = [];
|
||||
|
||||
jsOMS.Autoloader.defineNamespace = function(namespace)
|
||||
/**
|
||||
* Define namespace
|
||||
*
|
||||
* @param {string} namespace Namespace
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Autoloader.defineNamespace = function (namespace)
|
||||
{
|
||||
if(jsOMS.Autoloader.namespaced.indexOf(namespace) === -1) {
|
||||
if (jsOMS.Autoloader.namespaced.indexOf(namespace) === -1) {
|
||||
let paths = namespace.split('.');
|
||||
paths.splice(0, 1);
|
||||
|
||||
let length = paths.length,
|
||||
let length = paths.length,
|
||||
current = jsOMS;
|
||||
|
||||
for(let i = 0; i < length; i++) {
|
||||
if(typeof current[paths[i]] === 'undefined') {
|
||||
for (let i = 0; i < length; i++) {
|
||||
if (typeof current[paths[i]] === 'undefined') {
|
||||
current[paths[i]] = {};
|
||||
}
|
||||
|
||||
|
|
@ -24,33 +42,56 @@
|
|||
}
|
||||
};
|
||||
|
||||
jsOMS.Autoloader.initPreloaded = function()
|
||||
/**
|
||||
* Collect all loaded javascript files
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Autoloader.initPreloaded = function ()
|
||||
{
|
||||
let scripts = document.getElementsByTagName('script'),
|
||||
length = scripts.length;
|
||||
length = scripts.length;
|
||||
|
||||
for(let i = 0; i < length; i++) {
|
||||
for (let i = 0; i < length; i++) {
|
||||
scripts[i].src.replace(URL + '/', '');
|
||||
|
||||
if(jsOMS.Autoloader.loaded.indexOf(scripts[i].src) === -1) {
|
||||
if (jsOMS.Autoloader.loaded.indexOf(scripts[i].src) === -1) {
|
||||
jsOMS.Autoloader.loaded.push(scripts[i].src);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
jsOMS.Autoloader.setPreloaded = function(file)
|
||||
/**
|
||||
* Add loaded script
|
||||
*
|
||||
* @param {string} file Script URI
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Autoloader.addPreloaded = function (file)
|
||||
{
|
||||
if(jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
||||
if (jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
||||
jsOMS.Autoloader.loaded.push(file);
|
||||
}
|
||||
};
|
||||
|
||||
jsOMS.Autoloader.include = function(file, callback)
|
||||
/**
|
||||
* Include script
|
||||
*
|
||||
* @param {string} file Script URI
|
||||
* @param {callback} callback Callback after script loading
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
jsOMS.Autoloader.include = function (file, callback)
|
||||
{
|
||||
let length = file.length;
|
||||
|
||||
for(let i = 0; i < length; i++) {
|
||||
if(jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
||||
for (let i = 0; i < length; i++) {
|
||||
if (jsOMS.Autoloader.loaded.indexOf(file) === -1) {
|
||||
// todo: implement asset loading and pass callback
|
||||
|
||||
jsOMS.Autoloader.loaded.push(file);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user