--- a/src/pyams_skin/resources/js/myams-widgets.js Mon Jan 18 18:41:23 2016 +0100
+++ b/src/pyams_skin/resources/js/myams-widgets.js Mon Jan 18 18:45:59 2016 +0100
@@ -4,12 +4,15 @@
* ©2014 Thierry Florac <tflorac@ulthar.net>
*/
-(function($) {
+(function($, globals) {
+
+ 'use strict';
/* Private functions */
function checkValue(value) {
- if (value < 10)
+ if (value < 10) {
value = '0' + value;
+ }
return value;
}
@@ -24,12 +27,15 @@
return options.timestampFormat.replace(/%d%/g, day)
.replace(/%m%/g, month)
.replace(/%y%/g, year)
- .replace(/%h%/g, hour)
+ .replace(/%h%/g, hours)
.replace(/%i%/g, minutes)
.replace(/%s%/g, seconds);
}
+ var MyAMS = globals.MyAMS;
+
+
function Widget(element, options) {
this.widget = element;
this.options = $.extend({}, MyAMSWidget.defaults, options);
@@ -44,51 +50,69 @@
this.init();
}
-
Widget.prototype = {
init: function() {
var self = this;
- if (self.options.rtl === true)
+ var widget;
+
+ if (self.options.rtl === true) {
$('body').addClass('rtl');
+ }
self.grid.each(function() {
$(this).addClass('sortable-grid');
});
self._getSettings();
if (self.hasGrid && self.storage) {
+
+ var key;
if (self.position) {
var position = JSON.parse(self.position);
- for (var key in position.grid) {
+ for (key in position.grid) {
+ if (!position.grid.hasOwnProperty(key)) {
+ continue;
+ }
var changeOrder = self.grid.find(self.options.subgrid + '.sortable-grid').eq(key);
- for (var key2 in position.grid[key].section)
+ for (var key2 in position.grid[key].section) {
+ if (!position.grid[key].section.hasOwnProperty(key2)) {
+ continue;
+ }
changeOrder.append($('#' + position.grid[key].section[key2].id));
+ }
}
}
if (self.settings) {
var settings = JSON.parse(self.settings);
- for (var key in settings.widget) {
- var widget = settings.widget[key];
+ for (key in settings.widget) {
+ if (!settings.widget.hasOwnProperty(key)) {
+ continue;
+ }
+ widget = settings.widget[key];
var widgetId = $('#' + widget.id);
- if (widget.style)
+ if (widget.style) {
widgetId.removeClassPrefix('ams-widget-color-')
.addClass(widget.style)
.attr('data-widget-attstyle', widget.style);
- if (widget.hidden == 1)
+ }
+ if (widget.hidden === 1) {
widgetId.hide(1);
- else
+ } else {
widgetId.show(1)
.removeAttr('data-widget-hidden');
- if (widget.collapsed == 1)
+ }
+ if (widget.collapsed === 1) {
widgetId.addClass('ams-widget-collapsed')
.children('div')
.hide(1);
+ }
var title = widgetId.children('header').children('h2');
- if (title.text() != widget.title)
+ if (title.text() !== widget.title) {
title.text(widget.title);
+ }
}
}
}
- var widget = self.widget;
+ widget = self.widget;
var data = widget.data();
var data_options = {
grid: data.amsWidgetGrid,
@@ -142,65 +166,85 @@
var widgetOptions = $.extend({}, self.options, data_options);
var header = widget.children('header');
if (!header.parent().attr('role')) {
- if (data.widgetHidden === true)
+
+ var customBtn,
+ deleteBtn,
+ editBtn,
+ fullscreenBtn,
+ toggleBtn,
+ refreshBtn;
+ if (data.widgetHidden === true) {
widget.hide();
- if (data.widgetCollapsed === true)
+ }
+ if (data.widgetCollapsed === true) {
widget.addClass('ams-widget-collapsed')
.children('div').hide();
+ }
if (widgetOptions.customButton &&
(data.widgetCustombutton === undefined) &&
- (self.customClass[0].length != 0))
- var customBtn = '<a href="#" class="button-icon ams-widget-custom-btn"><i class="' + self.customClass[0] + '"></i></a>';
- else
+ (self.customClass[0].length !== 0)) {
+ customBtn = '<a href="#" class="button-icon ams-widget-custom-btn"><i class="' + self.customClass[0] + '"></i></a>';
+ } else {
customBtn = "";
- if (widgetOptions.deleteButton && (data.widgetDeleteButton === undefined))
- var deleteBtn = '<a href="#" class="button-icon ams-widget-delete-btn hint" title="' + MyAMSWidget.i18n.DELETE_BTN + '" data-ams-hint-gravity="se">' +
- '<i class="' + widgetOptions.deleteClass + '"></i></a>';
- else
+ }
+ if (widgetOptions.deleteButton && (data.widgetDeleteButton === undefined)) {
+ deleteBtn = '<a href="#" class="button-icon ams-widget-delete-btn hint" title="' + MyAMSWidget.i18n.DELETE_BTN + '" data-ams-hint-gravity="se">' +
+ '<i class="' + widgetOptions.deleteClass + '"></i></a>';
+ } else {
deleteBtn = "";
+ }
if (widgetOptions.editButton && (data.widgetEditButton === undefined)) {
var editClass = widgetOptions.editClass.split('|')[0];
- var editBtn = '<a href="#" class="button-icon ams-widget-edit-btn hint" title="' + MyAMSWidget.i18n.EDIT_BTN + '" data-ams-hint-gravity="se">' +
- '<i class="' + editClass + '"></i></a>';
- } else
+ editBtn = '<a href="#" class="button-icon ams-widget-edit-btn hint" title="' + MyAMSWidget.i18n.EDIT_BTN + '" data-ams-hint-gravity="se">' +
+ '<i class="' + editClass + '"></i></a>';
+ } else {
editBtn = "";
+ }
if (widgetOptions.fullscreenButton && (data.widgetFullscreenButton === undefined)) {
var fullscreenClass = widgetOptions.fullscreenClass.split('|')[0];
- var fullscreenBtn = '<a href="#" class="button-icon ams-widget-fullscreen-btn hint" title="' + MyAMSWidget.i18n.FULLSCREEN_BTN + '" data-ams-hint-gravity="se">' +
- '<i class="' + fullscreenClass + '"></i></a>';
- } else
+ fullscreenBtn = '<a href="#" class="button-icon ams-widget-fullscreen-btn hint" title="' + MyAMSWidget.i18n.FULLSCREEN_BTN + '" data-ams-hint-gravity="se">' +
+ '<i class="' + fullscreenClass + '"></i></a>';
+ } else {
fullscreenBtn = "";
+ }
if (widgetOptions.toggleButton && (data.widgetToggleButton === undefined)) {
var toggleClass = widgetOptions.toggleClass.split('|');
+ var toggleSettings;
if ((widget.dataWidgetCollapsed === true) ||
- widget.hasClass('ams-widget-collapsed'))
- var toggleSettings = toggleClass[1];
- else
+ widget.hasClass('ams-widget-collapsed')) {
+ toggleSettings = toggleClass[1];
+ } else {
toggleSettings = toggleClass[0];
- var toggleBtn = '<a href="#" class="button-icon ams-widget-toggle-btn hint" title="' + MyAMSWidget.i18n.COLLAPSE_BTN + '" data-ams-hint-gravity="se">' +
- '<i class="' + toggleSettings + '"></i></a>';
- } else
+ }
+ toggleBtn = '<a href="#" class="button-icon ams-widget-toggle-btn hint" title="' + MyAMSWidget.i18n.COLLAPSE_BTN + '" data-ams-hint-gravity="se">' +
+ '<i class="' + toggleSettings + '"></i></a>';
+ } else {
toggleBtn = "";
+ }
if (widgetOptions.refreshButton &&
(data.widgetRefreshButton === undefined) &&
- data.widgetLoad)
- var refreshBtn = '<a href="#" class="button-icon ams-widget-refresh-btn hint" title="' + MyAMSWidget.i18n.REFRESH_BTN + '" data-loading-text=" ' + MyAMSWidget.i18n.LOADING_MSG + ' " data-ams-hint-gravity="se">' +
- '<i class="' + widgetOptions.refreshClass + '"></i></a>';
- else
+ data.widgetLoad) {
+ refreshBtn = '<a href="#" class="button-icon ams-widget-refresh-btn hint" title="' + MyAMSWidget.i18n.REFRESH_BTN + '" data-loading-text=" ' + MyAMSWidget.i18n.LOADING_MSG + ' " data-ams-hint-gravity="se">' +
+ '<i class="' + widgetOptions.refreshClass + '"></i></a>';
+ } else {
refreshBtn = "";
+ }
var buttons = widgetOptions.buttonsOrder.replace(/%refresh%/, refreshBtn)
.replace(/%custom%/, customBtn)
.replace(/%edit%/, editBtn)
.replace(/%toggle%/, toggleBtn)
.replace(/%fullscreen%/, fullscreenBtn)
.replace(/%delete%/, deleteBtn);
- if (refreshBtn || customBtn || editBtn || toggleBtn || fullscreenBtn || deleteBtn)
+ if (refreshBtn || customBtn || editBtn || toggleBtn || fullscreenBtn || deleteBtn) {
header.prepend('<div class="ams-widget-ctrls">' + buttons + '</div>');
- if (widgetOptions.sortable && (data.widgetSortable === undefined))
+ }
+ if (widgetOptions.sortable && (data.widgetSortable === undefined)) {
widget.addClass('ams-widget-sortable');
+ }
var placeholder = widget.find(widgetOptions.editPlaceholder);
- if (placeholder.length > 0)
+ if (placeholder.length > 0) {
placeholder.find('input').val($.trim(header.children('h2').text()));
+ }
header.append('<span class="ams-widget-loader"><i class="fa fa-refresh fa-spin"></i></span>');
widget.attr('role', 'widget')
.children('div').attr('role', 'content')
@@ -209,8 +253,9 @@
MyAMS.plugins.enabled.hint(header);
}
widget.data('widget-options', widgetOptions);
- if (self.options.hiddenButtons)
+ if (self.options.hiddenButtons) {
$(self.controls).hide();
+ }
widget.find("[data-widget-load]").each(function() {
var item = $(this),
header = item.children(),
@@ -224,8 +269,9 @@
setInterval(function() {
self._loadAjaxFile(item, path, header);
}, reloadTime);
- } else
+ } else {
self._loadAjaxFile(item, path, header);
+ }
}
});
if (self.options.hiddenButtons) {
@@ -237,26 +283,30 @@
}
self._setClickEvents();
$(self.options.deleteSettingsKey).on(self.clickEvent, this, function(e) {
- if (self.storage) {
- var cleared = confirm(self.options.settingsKeyLabel);
- if (cleared)
+ if (self.storage && globals.confirm) {
+ var cleared = globals.confirm(self.options.settingsKeyLabel);
+ if (cleared) {
self.storage.removeItem(self.settingsKey);
+ }
}
e.preventDefault();
});
$(self.options.deletePositionKey).on(self.clickEvent, this, function(e) {
- if (self.storage) {
- var cleared = confirm(self.options.positionKeyLabel);
- if (cleared)
+ if (self.storage && globals.confirm) {
+ var cleared = globals.confirm(self.options.positionKeyLabel);
+ if (cleared) {
self.storage.removeItem(self.positionKey);
+ }
}
e.preventDefault();
});
if (self.storage) {
- if (self.settingsKey === null || self.settingsKey.length < 1)
+ if (self.settingsKey === null || self.settingsKey.length < 1) {
self._saveWidgetSettings();
- if (self.positionKey === null || self.positionKey.length < 1)
+ }
+ if (self.positionKey === null || self.positionKey.length < 1) {
self._saveWidgetPosition();
+ }
}
self.grid.data('ams-widgets-loaded', true);
},
@@ -269,9 +319,9 @@
_getSettings: function() {
var self = this;
- if (!self.hasGrid || !self.gridId)
+ if (!self.hasGrid || !self.gridId) {
self.storage = null;
- else {
+ } else {
switch (self.options.storage) {
case 'local':
self.storage = localStorage;
@@ -283,14 +333,14 @@
self.storage = null;
}
}
- var use_storage = (self.storage != null) && function() {
+ var use_storage = (self.storage !== null) && function() {
var result,
- uid = +new Date;
+ uid = +new Date();
try {
self.storage.setItem(uid, uid);
- result = self.storage.getItem(uid) == uid;
+ result = self.storage.getItem(uid) === uid;
self.storage.removeItem(uid);
- return result
+ return result;
} catch (e) {}
}();
if (use_storage) {
@@ -299,21 +349,23 @@
self.positionKey = "AMS_position_" + location.pathname + location.hash + "_" + self.gridId;
self.position = self.storage.getItem(self.positionKey);
}
- if (("ontouchstart" in window) || window.DocumentTouch && document instanceof DocumentTouch) {
- self.clickEvent = "touchstart"
+ if (("ontouchstart" in globals) ||
+ globals.DocumentTouch && globals.document instanceof globals.DocumentTouch) {
+ self.clickEvent = "touchstart";
} else {
- self.clickEvent = "click"
+ self.clickEvent = "click";
}
},
_runLoaderWidget: function(widget) {
var self = this;
- if (self.options.indicator)
+ if (self.options.indicator) {
widget.find('.ams-widget-loader')
.stop(true, true)
.fadeIn(100)
.delay(self.options.indicatorTime)
.fadeOut(100);
+ }
},
_loadAjaxFile: function(url, widget, loader) {
@@ -336,10 +388,12 @@
gridSettings.push(widgetSettings);
});
var gridSettingsStr = JSON.stringify({widget: gridSettings});
- if (self.settings != gridSettingsStr)
+ if (self.settings !== gridSettingsStr) {
self.storage.setItem(self.settingsKey, gridSettingsStr);
- if (typeof(self.options.onSave) == 'function')
+ }
+ if (typeof(self.options.onSave) === 'function') {
self.options.onSave.call(this, null, gridSettings);
+ }
}
},
@@ -353,24 +407,27 @@
$(this).children(self.options.widgets).each(function () {
var subObj = {};
subObj.id = $(this).attr("id");
- subgridPosition.push(subObj)
+ subgridPosition.push(subObj);
});
var out = {section: subgridPosition};
- gridPosition.push(out)
+ gridPosition.push(out);
});
var gridPositionStr = JSON.stringify({grid: gridPosition});
- if (self.position != gridPositionStr)
+ if (self.position !== gridPositionStr) {
self.storage.setItem(self.positionKey, gridPositionStr);
- if (typeof(self.options.onSave) == 'function')
+ }
+ if (typeof(self.options.onSave) === 'function') {
self.options.onSave.call(this, null, gridPosition);
+ }
}
},
_setClickEvents: function() {
function setFullscreenHeight() {
- if ($('#ams-widget-fullscreen-mode').length > 0) {
- var widgets = $('#ams-widget-fullscreen-mode').find(self.options.widgets);
+ var mode = $('#ams-widget-fullscreen-mode');
+ if (mode.length > 0) {
+ var widgets = mode.find(self.options.widgets);
var windowHeight = $(window).height();
var headerHeight = widgets.children('header')
.height();
@@ -392,8 +449,9 @@
self._runLoaderWidget(widget);
var canToggle = true;
if (widget.hasClass('ams-widget-collapsed')) {
- if (widgetOptions.onToggle)
+ if (widgetOptions.onToggle) {
canToggle = widgetOptions.onToggle.call(this, widget, 'expand');
+ }
if (canToggle !== false) {
button.children().removeClass(toggleClass[1])
.addClass(toggleClass[0]);
@@ -403,8 +461,9 @@
});
}
} else {
- if (widgetOptions.onToggle)
+ if (widgetOptions.onToggle) {
canToggle = widgetOptions.onToggle.call(this, widget, 'collapse');
+ }
if (canToggle !== false) {
button.children().removeClass(toggleClass[0])
.addClass(toggleClass[1]);
@@ -441,9 +500,10 @@
.parents(self.controls)
.children('a')
.show();
- if (content.hasClass('ams-widget-visible'))
+ if (content.hasClass('ams-widget-visible')) {
content.hide()
.removeClass('ams-widget-visible');
+ }
} else {
$('body').addClass('nooverflow');
widget.wrap('<div id="ams-widget-fullscreen-mode"></div>')
@@ -455,13 +515,15 @@
.parents(self.controls)
.children('a:not(.ams-widget-fullscreen-btn)')
.hide();
- if (content.is(':hidden'))
+ if (content.is(':hidden')) {
content.show()
.addClass('ams-widget-visible');
+ }
}
setFullscreenHeight();
- if (typeof(widgetOptions.onFullscreen) == 'function')
+ if (typeof(widgetOptions.onFullscreen) === 'function') {
widgetOptions.onFullscreen.call(this, widget);
+ }
});
$(window).resize(function() {
setFullscreenHeight();
@@ -489,8 +551,9 @@
.addClass(editClass[1]);
placeholder.slideDown(widgetOptions.editSpeed);
}
- if (typeof(widgetOptions.onEdit) == 'function')
+ if (typeof(widgetOptions.onEdit) === 'function') {
widgetOptions.onEdit.call(this, widget);
+ }
});
$(self.options.editPlaceholder).find('input').keyup(function() {
$(this).parents(self.options.widgets)
@@ -511,13 +574,15 @@
button.children()
.removeClass(customClass[0])
.addClass(customClass[1]);
- if (typeof(widgetOptions.customStart) == 'function')
+ if (typeof(widgetOptions.customStart) === 'function') {
widgetOptions.customStart.call(this, widget);
+ }
} else {
button.children('.' + customClass[1])
- .addClass(customClass[0]);
- if (typeof(widgetOptions.customEnd) == 'function')
+ .addClass(customClass[0]);
+ if (typeof(widgetOptions.customEnd) === 'function') {
widgetOptions.customEnd.call(this, widget);
+ }
}
self._saveWidgetSettings();
});
@@ -538,12 +603,13 @@
content: MyAMSWidget.i18n.DELETE_MSG,
buttons: "[" + MyAMS.i18n.BTN_OK + "][" + MyAMS.i18n.BTN_CANCEL + "]"
}, function(buttonPressed) {
- if (buttonPressed == MyAMS.i18n.BTN_OK) {
+ if (buttonPressed === MyAMS.i18n.BTN_OK) {
self._runLoaderWidget(widget);
$('#' + wId).fadeOut(widgetOptions.deleteSpeed, function() {
button.remove();
- if (typeof(widgetOptions.onDelete) == 'function')
+ if (typeof(widgetOptions.onDelete) === 'function') {
widgetOptions.onDelete.call(this, widget);
+ }
});
}
});
@@ -566,10 +632,10 @@
}, 1000);
});
}
- }
+ };
- MyAMSWidget = {
+ var MyAMSWidget = {
i18n: $.extend({
SETTINGS_KEY_LABEL: "Reset settings?",
@@ -589,8 +655,9 @@
}, MyAMS.plugins.i18n.widgets),
initWidgetsGrid: function(grid) {
- if (!grid.exists())
+ if (!grid.exists()) {
return;
+ }
var options = $('.ams-widget:first', grid).data('AMSWidget').options;
if (options.sortable && $.ui) {
var sortItem = grid.find('.sortable-grid').not("[data-widget-excludegrid]");
@@ -611,14 +678,14 @@
var widget = ui.item.data('AMSWidget');
widget._runLoaderWidget(widget.widget);
widget._saveWidgetPosition();
- if (typeof(options.onChange) == 'function')
+ if (typeof(options.onChange) === 'function') {
options.onChange.call(this, ui.item);
+ }
}
});
}
}
- }
-
+ };
MyAMSWidget.defaults = {
grid: '.ams-widget-grid',
@@ -679,7 +746,9 @@
onChange : null,
onSave : null,
ajax_nav : MyAMS.ajax_nav
- }
+ };
+
+ globals.MyAMSWidget = MyAMSWidget;
$.fn.extend({
@@ -750,4 +819,4 @@
});
-})(jQuery);
+})(jQuery, this);