oms-Navigation/Models/Navigation.js
2018-02-03 13:09:09 +01:00

146 lines
3.4 KiB
JavaScript

/**
* Navigation class.
*
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @since 1.0.0
*/
(function (jsOMS)
{
"use strict";
/** @namespace jsOMS.Modules.Navigation.Models */
jsOMS.Autoloader.defineNamespace('jsOMS.Modules.Navigation.Models');
/**
* Construct
*
* @param {Object} data Initialization (optional)
*
* @since 1.0.0
*/
jsOMS.Modules.Navigation.Models.Navigation = function (data)
{
if (typeof data === 'undefined') {
this.scrollPosition = {x: 0, y: 0};
this.activeLinks = {};
this.visible = true;
this.openCategories = {};
} else {
this.scrollPosition = typeof data.scrollPosition === 'undefined' ? {x : 0, y : 0} : data.scrollPosition;
this.activeLinks = typeof data.activeLinks === 'undefined' ? {} : data.activeLinks;
this.visible = typeof data.visible === 'undefined' ? true : data.visible;
this.openCategories = typeof data.openCategories === 'undefined' ? {} : data.openCategories;
}
};
/**
* Set scroll position
*
* @param {int} x Horizontal position
* @param {int} y Vertical position
*
* @return {void}
*
* @since 1.0.0
*/
jsOMS.Modules.Navigation.Models.Navigation.prototype.setScrollPosition = function (x, y)
{
this.scrollPosition.x = x;
this.scrollPosition.y = y;
};
/**
* Get scroll position
*
* @return {Object}
*
* @since 1.0.0
*/
jsOMS.Modules.Navigation.Models.Navigation.prototype.getScrollPosition = function ()
{
return this.scrollPosition;
};
/**
* Open navigation category
*
* @param {string} id Category id
*
* @return {void}
*
* @since 1.0.0
*/
jsOMS.Modules.Navigation.Models.Navigation.prototype.setOpen = function (id)
{
this.openCategories[id] = true;
};
/**
* Close navigation category
*
* @param {string} id Category id
*
* @return {void}
*
* @since 1.0.0
*/
jsOMS.Modules.Navigation.Models.Navigation.prototype.setClose = function (id)
{
delete this.openCategories[id];
};
/**
* Get open navigation elements
*
* @return {Object}
*
* @since 1.0.0
*/
jsOMS.Modules.Navigation.Models.Navigation.prototype.getOpen = function ()
{
return this.openCategories;
};
jsOMS.Modules.Navigation.Models.Navigation.prototype.active = function (id)
{
this.allInactive();
};
jsOMS.Modules.Navigation.Models.Navigation.prototype.allInactive = function ()
{
};
jsOMS.Modules.Navigation.Models.Navigation.prototype.inactive = function (id)
{
};
/**
* Set navigation visibility
*
* @param {bool} visible Visibility
*
* @return {bool}
*
* @since 1.0.0
*/
jsOMS.Modules.Navigation.Models.Navigation.prototype.setVisible = function (visible)
{
this.visible = visible;
};
/**
* Is navigation visible
*
* @return {bool}
*
* @since 1.0.0
*/
jsOMS.Modules.Navigation.Models.Navigation.prototype.isVisible = function ()
{
return this.visible;
};
}(window.jsOMS = window.jsOMS || {}));