Add project files.
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Admin - User page scripts.
|
||||
*/
|
||||
|
||||
(function (win, doc, undef)
|
||||
{
|
||||
"use strict";
|
||||
let cs = sax.codeSelection = sax.codeSelection || { fn: {}, $dlg: {}, codeIdPrefix: 'Code_' };
|
||||
|
||||
//--------------------------------------------------------------
|
||||
/*
|
||||
* Code selection config:
|
||||
* - caption - dialog title.
|
||||
* - width: preferred dialog width (default: 400).
|
||||
* - height: preferred dialog height (default: 400).
|
||||
* - showFilter: whether to display filter control(s).
|
||||
* - filterLabel: filter code field caption.
|
||||
* - maxItems: maximum number of available items to list.
|
||||
* - codes - list of {code,desc,comment} objects
|
||||
* - selectedCodes - list of codes.
|
||||
* - fnCallback - method to call on completion to store codes taking list of selected codes as parameter.
|
||||
*/
|
||||
cs.fn.openCodeSelection = function (cfg)
|
||||
{
|
||||
sax.debug('openCodeSelection', cfg);
|
||||
cs.fn.init();
|
||||
cs.cfg = cfg;
|
||||
cs.selectedCodes = cfg.selectedCodes || [];
|
||||
cs.fn.displayCodes(cfg.codes);
|
||||
sax.openDialog(cs.$dlg.dialog('option', { title: cfg.caption || 'Select Codes' }), cs.cfg.width || 400, cs.cfg.height || 400);
|
||||
}
|
||||
cs.fn.displayCodes = function (codes)
|
||||
{
|
||||
let $codesAvail = $('.sax-codeSelection-codes.AvailableCodes').empty();
|
||||
let $codesSelec = $('.sax-codeSelection-codes.SelectedCodes').empty();
|
||||
let $codeTmpl = $('.sax-panel-item-template .sax-panel-item.Code');
|
||||
for (let codeIdx = 0; codeIdx < codes.length; codeIdx++)
|
||||
{
|
||||
let code = codes[codeIdx];
|
||||
let selected = cs.selectedCodes.indexOf(code.code) >= 0;
|
||||
let $code = $codeTmpl.clone();
|
||||
$($code).prop('id', cs.codeIdPrefix + code.code).attr('aria-code', code.code).on('click', function () { cs.fn.onClickCode(code.code); }).on('dblclick', function () { cs.fn.onDblClickCode(code.code); }).find('.CodeDesc').text(code.desc).end();
|
||||
if (selected) $codesSelec.append($code);
|
||||
else $codesAvail.append($code);
|
||||
}
|
||||
}
|
||||
cs.fn.onClickCode = function (code)
|
||||
{
|
||||
$('.sax-panel-item.Code').removeClass('sel');
|
||||
$('.sax-panel-item.Code[aria-code="' + code + '"]').addClass('sel');
|
||||
}
|
||||
cs.fn.onDblClickCode = function (code)
|
||||
{
|
||||
let codeIdx = cs.selectedCodes.indexOf(code);
|
||||
//sax.debug('onDblClickCode', code, codeIdx);
|
||||
if (codeIdx >= 0) cs.selectedCodes.splice(codeIdx, 1); else cs.selectedCodes.push(code)
|
||||
cs.fn.displayCodes(cs.cfg.codes)
|
||||
$('.sax-panel-item.Code[aria-code="' + code + '"]').addClass('sel');
|
||||
}
|
||||
cs.fn.storeCodeSelection = function ()
|
||||
{
|
||||
//sax.debug('storeCodeSelection', cs.cfg, cs.selectedCodes);
|
||||
|
||||
if (cs.cfg.fnCallback) cs.cfg.fnCallback(cs.selectedCodes);
|
||||
|
||||
cs.$dlg.dialog('close');
|
||||
delete cs.cfg;
|
||||
delete cs.selectedCodes;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
cs.fn.init = function ()
|
||||
{
|
||||
if (!cs.$dlg) return;
|
||||
var opt = sax.dlgOpts();
|
||||
opt.buttons[sax.dlg.btn.ok] = function () { cs.fn.storeCodeSelection(); };
|
||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||
cs.$dlg = $('#dlgCodeSelection').dialog(opt);
|
||||
}
|
||||
|
||||
}(window, window.document));
|
||||
|
||||
/* The End */
|
||||
@@ -0,0 +1,472 @@
|
||||
/*
|
||||
* Admin - Main scripts.
|
||||
*/
|
||||
|
||||
(function (win, doc, undef)
|
||||
{
|
||||
"use strict";
|
||||
win.sax = win.sax || {};
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Utilities.
|
||||
sax.isDef = function (obj)
|
||||
{
|
||||
return obj === null || typeof obj == "undefined" ? false : true;
|
||||
}
|
||||
sax.isFn = function (fn)
|
||||
{
|
||||
return fn != null && typeof fn == typeof Function;
|
||||
}
|
||||
sax.isNumeric = function (n)
|
||||
{
|
||||
return !isNaN(parseFloat(n)) && isFinite(n);
|
||||
}
|
||||
sax.zeroPad = function (num, count)
|
||||
{
|
||||
var val = num + '';
|
||||
while (val.length < count) val = "0" + val;
|
||||
return val;
|
||||
}
|
||||
sax.toInt = function (value, defaultValue)
|
||||
{
|
||||
return sax.isNumeric(value) ? parseInt(value, 10) : defaultValue || 0;
|
||||
}
|
||||
sax.debug = sax.debugMode ? win.console.log.bind(win.console) : function () { };
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.compareCI = function (a, b)
|
||||
{
|
||||
var comparison = a.toLowerCase().localeCompare(b.toLowerCase());
|
||||
if (comparison === 0)
|
||||
return a.localeCompare(b);
|
||||
return comparison;
|
||||
}
|
||||
sax.arraySortCI = function ()
|
||||
{
|
||||
if (!this) return this;
|
||||
this.sort(function (a, b) { return sax.compareCI(a, b); });
|
||||
return this;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.setOddDataRowClass = function (rowSel)
|
||||
{
|
||||
$(rowSel).addClass(function (index, currentClasses)
|
||||
{
|
||||
return index % 2 == 1 ? "other" : "";
|
||||
});
|
||||
}
|
||||
sax.checkTextAreaMaxLength = function (ctrl, len)
|
||||
{
|
||||
if (ctrl == null || ctrl.value == null) return;
|
||||
if (ctrl.value.length > len) ctrl.value = ctrl.value.substring(0, len);
|
||||
}
|
||||
sax.setAvailableCharsLabel = function ($if, max, $lbl)
|
||||
{
|
||||
var avail = Math.max(0, max - $if.val().length);
|
||||
$lbl.text(avail == 1 ? sax.lbl.availableCharacter : sax.lbl.availableCharacters.replace(/\{0\}/g, avail));
|
||||
}
|
||||
sax.setCharsAvailableLabel = function ($if, max)
|
||||
{
|
||||
var avail = Math.max(0, max - $if.val().length);
|
||||
$('.sax-select-chars-available', $if.closest('.sax-form-control')).text(avail == 1 ? sax.lbl.availableCharacter : sax.lbl.availableCharacters.replace(/\{0\}/g, avail));
|
||||
}
|
||||
sax.setItemsSelectedLabel = function ($sel)
|
||||
{
|
||||
var sel = $(':selected', $sel).length;
|
||||
$('.sax-select-items-selected', $sel.closest('.sax-form-control')).text(sel == 0 ? sax.lbl.noneSelected : sax.lbl.numberSelected.replace(/\{0\}/g, sel));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Page navigation.
|
||||
sax.navigateTo = function (action)
|
||||
{
|
||||
sax.doPleaseWait();
|
||||
$('#frmNavigate').prop('action', sax.url.base + action).submit();
|
||||
}
|
||||
sax.goToPage = function (action)
|
||||
{
|
||||
sax.doPleaseWait();
|
||||
location = sax.url.base + action;
|
||||
}
|
||||
|
||||
// Account action.
|
||||
sax.onAccountAction = function (select)
|
||||
{
|
||||
var action = $(select).val();
|
||||
$(select).val("");
|
||||
if (action == "Profile")
|
||||
sax.navigateTo("Account/Profile");
|
||||
}
|
||||
|
||||
// Security.
|
||||
sax.redirectHome = function ()
|
||||
{
|
||||
sax.goToPage('');
|
||||
}
|
||||
sax.redirectHomeExp = function ()
|
||||
{
|
||||
sax.doPleaseWait();
|
||||
document.location = sax.url.sesionExpired;
|
||||
}
|
||||
sax.onSignOut = function ()
|
||||
{
|
||||
sax.doConfirm(sax.dlg.title.signOut, sax.msg.signOutConfirm, sax.doSignOut);
|
||||
}
|
||||
sax.doSignOut = function ()
|
||||
{
|
||||
sax.doAjaxRequest({ url: sax.url.base + 'Security/Ajax/SignOut', formId: 'frmNavigate' }, 50);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Dialogs.
|
||||
sax.openDialog = function ($dlg, width, height)
|
||||
{
|
||||
$dlg.dialog(
|
||||
{
|
||||
minWidth: null, maxWidth: null, width: Math.min(width || 400, $(win).width() * .90),
|
||||
minHeight: null, maxHeight: null, height: Math.min(height || 320, $(win).innerHeight() * .90)
|
||||
}).dialog('open');
|
||||
return $dlg;
|
||||
}
|
||||
sax.dlgOpts = function ()
|
||||
{
|
||||
return { autoOpen: false, modal: true, show: 'clip', hide: 'clip', minWidth: 320, maxWidth: 480, width: 'auto', resizable: false, draggable: false, closeOnEscape: false, dialogClass: "no-close center-buttons", buttons: {} };
|
||||
}
|
||||
sax.dlgOptsClose = function ()
|
||||
{
|
||||
var opts = sax.dlgOpts();
|
||||
opts.buttons[sax.dlg.btn.close] = function () { $(this).dialog('close'); };
|
||||
return opts;
|
||||
}
|
||||
sax.doAlert = function (title, msg, onOk)
|
||||
{
|
||||
if (!msg)
|
||||
{
|
||||
msg = title;
|
||||
title = null;
|
||||
}
|
||||
if (!sax.isDef(sax.$dlg.alert))
|
||||
{
|
||||
var opt = sax.dlgOpts();
|
||||
opt.buttons[sax.dlg.btn.ok] = function () { $(this).dialog('close'); if (onOk) onOk(); };
|
||||
sax.$dlg.alert = $('<div id="dlgAlert"><div id="dlgAlertMsg"></div></div>').dialog(opt);
|
||||
}
|
||||
$('#dlgAlertMsg', sax.$dlg.alert).html(msg);
|
||||
sax.$dlg.alert.dialog('option', { title: title || sax.dlg.title.alert });
|
||||
sax.openDialog(sax.$dlg.alert);
|
||||
}
|
||||
sax.doConfirm = function (title, msg, onOk, onCancel)
|
||||
{
|
||||
if (!msg)
|
||||
{
|
||||
msg = title;
|
||||
title = null;
|
||||
}
|
||||
if (!sax.isDef(sax.$dlg.confirm))
|
||||
{
|
||||
var opt = sax.dlgOpts();
|
||||
sax.$dlg.confirm = $('<div id="dlgConfirm"><div class="spacer2"></div><div id="dlgConfirmMsg"></div></div>').dialog(opt);
|
||||
}
|
||||
var buttons = sax.$dlg.confirm.dialog('option', 'buttons');
|
||||
buttons[sax.dlg.btn.yes] = function () { $(this).dialog('close'); if (onOk) onOk(); };
|
||||
buttons[sax.dlg.btn.no] = function () { $(this).dialog('close'); if (onCancel) onCancel(); };
|
||||
sax.$dlg.confirm.dialog('option', { title: title || sax.dlg.title.confirm, 'buttons': buttons });
|
||||
$('#dlgConfirmMsg').html(msg);
|
||||
sax.openDialog(sax.$dlg.confirm);
|
||||
}
|
||||
sax.doProgress = function (title, msg, delay)
|
||||
{
|
||||
if (!msg)
|
||||
{
|
||||
msg = title;
|
||||
title = null;
|
||||
}
|
||||
clearTimeout(sax.toShowProgress);
|
||||
if (!sax.isDef(sax.$dlg.progress))
|
||||
{
|
||||
var opt = sax.dlgOpts();
|
||||
opt.show = { effect: 'fade', duration: 200 };
|
||||
opt.hide = { effect: 'fade', duration: 200 };
|
||||
sax.$dlg.progress = $('<div id="dlgProgress"><div id="dlgProgressMsg"></div></div>').dialog(opt);
|
||||
}
|
||||
$('#dlgProgressMsg').html(msg);
|
||||
sax.$dlg.progress.dialog('option', { title: title || sax.dlg.title.progress });
|
||||
if (delay > 0) sax.toShowProgress = setTimeout(function () { sax.$dlg.progress.dialog('open'); }, delay);
|
||||
else sax.$dlg.progress.dialog('open');
|
||||
}
|
||||
sax.hideProgress = function ()
|
||||
{
|
||||
clearTimeout(sax.toShowProgress);
|
||||
sax.$dlg.progress.dialog('close');
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Notifications.
|
||||
sax.showNotification = function (title, msg)
|
||||
{
|
||||
win.clearTimeout(sax.toNotification);
|
||||
var $win = $(win);
|
||||
var $not = $('#sax-notification').hide();
|
||||
if (!$not.length)
|
||||
{
|
||||
$not = $('<div id="sax-notification"><div class="content"><div class="heading"><div class="close" onclick="sax.hideNotification()">✖</div><div class="title"></div></div><div class="message"></div></div></div>');
|
||||
$('body').append($not);
|
||||
}
|
||||
var $hdr = $('.heading', $not).css({ 'background-color': 'rgba(247,217,0,0.7)' });
|
||||
$('.title', $not).html(title);
|
||||
$('.message', $not).html(msg);
|
||||
var $bdy = $('.sax-page-body');
|
||||
sax.debug(sax.topMargin($bdy));
|
||||
var fbr = $bdy[0].getBoundingClientRect();
|
||||
var fn = function () { $hdr.delay(2000).animate({ backgroundColor: '#f0f0f0' }, 1000); };
|
||||
$not.css({ 'top': Math.max(0, fbr.top - sax.topMargin($bdy)), 'right': $win.width() - fbr.right }).slideDown(500, fn);
|
||||
sax.toNotification = setTimeout(sax.hideNotification, 6000);
|
||||
}
|
||||
sax.hideNotification = function ()
|
||||
{
|
||||
wwin.clearTimeout(sax.toNotification);
|
||||
$('#sax-notification').slideUp(500);
|
||||
}
|
||||
sax.doPleaseWait = function ()
|
||||
{
|
||||
sax.$pleaseWait = sax.$pleaseWait || $('#sax-please-wait');
|
||||
sax.$pleaseWait.stop(true, false).animate({ "null": 1 }, 200).fadeTo(200, 1);
|
||||
}
|
||||
sax.hidePleaseWait = function ()
|
||||
{
|
||||
if (sax.$pleaseWait) sax.$pleaseWait.stop(true, false).fadeOut(200);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Ajax.
|
||||
sax.doAjaxRequest = function (ajax, delay)
|
||||
{
|
||||
win.clearTimeout(ajax.timeout);
|
||||
if (!ajax.noWaitIcon) sax.doPleaseWait();
|
||||
ajax.timeout = setTimeout(function () { sax.execAjaxRequest(ajax); }, Math.max(50, parseInt(delay || 0, 10)));
|
||||
}
|
||||
sax.execAjaxRequest = function (ajax)
|
||||
{
|
||||
win.clearTimeout(ajax.timeout);
|
||||
if (ajax.request) ajax.request.abort();
|
||||
var cfgAjax =
|
||||
{
|
||||
url: ajax.url,
|
||||
type: 'POST',
|
||||
cache: false,
|
||||
//enctype: 'multipart/form-data',
|
||||
data: ajax.formData || $("#" + ajax.formId).serialize(),
|
||||
dataType: 'json',
|
||||
success: function (response, status, jqXHR)
|
||||
{
|
||||
if (!ajax.noWaitIcon) sax.hidePleaseWait();
|
||||
ajax.status = status;
|
||||
if (response.notification)
|
||||
sax.showNotification(response.notification.title, response.notification.message);
|
||||
if (response.message)
|
||||
{
|
||||
var fnCloseAlert = function ()
|
||||
{
|
||||
if (response.sessionExpired) return sax.redirectHomeExp();
|
||||
if (response.goHome) return sax.redirectHome();
|
||||
if (ajax.callbackFn) ajax.callbackFn(response);
|
||||
}
|
||||
sax.doAlert(response.message.title, response.message.text, function () { fnCloseAlert(); });
|
||||
}
|
||||
else if (response.sessionExpired)
|
||||
return sax.redirectHomeExp();
|
||||
else if (response.goHome)
|
||||
return sax.redirectHome();
|
||||
else if (response.error && ajax.errFn) ajax.errFn(response);
|
||||
else if (ajax.callbackFn) ajax.callbackFn(response);
|
||||
},
|
||||
error: function (jqXHR, status, errorThrown)
|
||||
{
|
||||
if (!ajax.noWaitIcon) sax.hidePleaseWait();
|
||||
ajax.status = status;
|
||||
if (status == "abort") return;
|
||||
sax.doAlert(sax.dlg.title.alert, sax.msg.somethingGoneWrong, sax.redirectHome);
|
||||
},
|
||||
complete: function (jqXHR, textStatus)
|
||||
{
|
||||
if (!ajax.noWaitIcon) sax.hidePleaseWait();
|
||||
ajax.formData = null;
|
||||
ajax.complete = true;
|
||||
}
|
||||
}
|
||||
if (ajax.formData)
|
||||
{
|
||||
//for (var pair of ajax.formData.entries()) sax.debug(pair[0] + ': ' + pair[1]);
|
||||
cfgAjax.processData = false;
|
||||
cfgAjax.contentType = false;
|
||||
}
|
||||
ajax.request = $.ajax(cfgAjax);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Session.
|
||||
sax.configureKeepLoggedIn = function ()
|
||||
{
|
||||
sax.debug('KeepLoggedIn Configuring');
|
||||
setTimeout(sax.doKeepLoggedIn, Math.max(30000, sax.keepLoggedInDelay || 300000));
|
||||
}
|
||||
sax.doKeepLoggedIn = function ()
|
||||
{
|
||||
sax.debug('KeepLoggedIn Calling');
|
||||
var onKeepLoggedIn = function (response)
|
||||
{
|
||||
sax.debug('KeepLoggedIn Responded', response);
|
||||
sax.configureKeepLoggedIn();
|
||||
}
|
||||
sax.doAjaxRequest({ url: sax.url.base + 'Security/Ajax/KeepLoggedIn', formId: 'frmNavigate', noWaitIcon: true, callbackFn: onKeepLoggedIn }, 1000)
|
||||
}
|
||||
sax.configureSessionRefresh = function ()
|
||||
{
|
||||
sax.debug('SessionRefresh Configuring');
|
||||
$(document).on('mousedown mousemove touchstart scroll keydown', sax.triggeRefreshSession);
|
||||
}
|
||||
sax.triggeRefreshSession = function ()
|
||||
{
|
||||
sax.session = sax.session || { refresh: {} };
|
||||
let ssr = sax.session.refresh;
|
||||
win.clearTimeout(ssr.timeout);
|
||||
ssr.timeout = setTimeout(function () { sax.refreshSession(); }, 150000);
|
||||
}
|
||||
sax.refreshSession = function ()
|
||||
{
|
||||
sax.debug('sax.refreshSession');
|
||||
sax.doKeepLoggedIn();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Data entry.
|
||||
sax.clearControlErrors = function ()
|
||||
{
|
||||
var $ctrls = $('.sax-form-control').removeClass('sax-error');
|
||||
$('.sax-message', $ctrls).empty();
|
||||
}
|
||||
sax.clearControlError = function (sel)
|
||||
{
|
||||
var $ctrl = $(sel).closest('.sax-form-control').removeClass('sax-error');
|
||||
$('.sax-message', $ctrl).empty();
|
||||
}
|
||||
sax.setControlError = function (sel, error)
|
||||
{
|
||||
sax.debug(sel, error);
|
||||
var $ctrl = $(sel).closest('.sax-form-control').addClass('sax-error');
|
||||
$('.sax-message', $ctrl).text(error);
|
||||
}
|
||||
sax.refreshControlValues = function (controlValues)
|
||||
{
|
||||
var $frmCtrls = $('.sax-form-control').removeClass('sax-error');
|
||||
sax.clearControlErrors();
|
||||
var values = (controlValues || []);
|
||||
var valuesLen = values.length;
|
||||
for (var valIdx = 0; valIdx < (controlValues || []).length; valIdx++)
|
||||
{
|
||||
let ctrlValue = controlValues[valIdx];
|
||||
$frmCtrls.each(function (idx, frmCtrl)
|
||||
{
|
||||
var $frmCtrl = $(frmCtrl);
|
||||
var $ctrl = $('input,textarea,select', $frmCtrl);
|
||||
if ($ctrl.prop('name') != ctrlValue.controlName) return;
|
||||
if (ctrlValue.value)
|
||||
$ctrl.val(ctrlValue.value);
|
||||
if (ctrlValue.error)
|
||||
$frmCtrl.addClass('sax-error').find('.sax-message').text(ctrlValue.error);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Elements.
|
||||
sax.objBtm = function (sel)
|
||||
{
|
||||
var $obj = $(sel);
|
||||
return Math.floor($obj.offset().top + $obj.outerHeight(true));
|
||||
}
|
||||
sax.innerBtm = function (sel)
|
||||
{
|
||||
var $obj = $(sel);
|
||||
return Math.floor($obj.offset().top + $obj.outerHeight() - sax.bottomSurround($obj));
|
||||
}
|
||||
sax.innerTop = function (sel)
|
||||
{
|
||||
var $obj = $(sel);
|
||||
return Math.floor($obj.offset().top + sax.topSurround($obj));
|
||||
}
|
||||
sax.topMargin = function (sel)
|
||||
{
|
||||
var $obj = $(sel);
|
||||
return parseInt($obj.css('margin-top'), 10);
|
||||
}
|
||||
sax.topSurround = function (sel)
|
||||
{
|
||||
var $obj = $(sel);
|
||||
return parseInt($obj.css('margin-top'), 10) + parseInt($obj.css('border-top-width'), 10) + parseInt($obj.css('padding-top'), 10);
|
||||
}
|
||||
sax.bottomSurround = function (sel)
|
||||
{
|
||||
var $obj = $(sel);
|
||||
return parseInt($obj.css('margin-bottom'), 10) + parseInt($obj.css('border-bottom-width'), 10) + parseInt($obj.css('padding-bottom'), 10);
|
||||
}
|
||||
sax.marginHeight = function (sel)
|
||||
{
|
||||
var $obj = $(sel);
|
||||
return parseInt($obj.css('margin-top'), 10) + parseInt($obj.css('margin-bottom'), 10);
|
||||
}
|
||||
sax.borderHeight = function (sel)
|
||||
{
|
||||
var $obj = $(sel);
|
||||
return parseInt($obj.css('border-top-width'), 10) + parseInt($obj.css('border-bottom-width'), 10);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Viewport - Desktop or Mobile.
|
||||
sax.isMob = function () { return $('body.mob').length > 0; };
|
||||
sax.onChangeViewport = function (viewport)
|
||||
{
|
||||
var $body = $('body');
|
||||
$body.removeClass('mob dsk');
|
||||
if (viewport.is('xs')) $body.addClass('mob');
|
||||
else if (viewport.current() != 'unrecognized') $body.addClass('dsk');
|
||||
}
|
||||
sax.isAutoHeight = function () { return ($(win).width() < 360 || $(win).height() < 560 || sax.isMob()); }
|
||||
sax.onWinResizePage = function () { };
|
||||
sax.onWinResize = function ()
|
||||
{
|
||||
var winH = $(win).height();
|
||||
var $pageBody = $('#sax-body');
|
||||
var $hdr = $('#sax-header');
|
||||
var $ftr = $('#sax-footer');
|
||||
if (sax.isAutoHeight())
|
||||
$pageBody.height('auto');
|
||||
else
|
||||
$pageBody.innerHeight(Math.min(1200, winH - $hdr.outerHeight() - $ftr.outerHeight(true)));
|
||||
$ftr.css('visibility', 'visible');
|
||||
sax.onWinResizePage();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
$(function ()
|
||||
{
|
||||
$('.sax-button-cta,.sax-button-action,.sax-action-link,.sax-social-icon.sax-action').prop('tabindex', 0);
|
||||
if (sax.keepLoggedIn)
|
||||
sax.configureKeepLoggedIn();
|
||||
else if (!sax.awaitingLogin)
|
||||
sax.configureSessionRefresh();
|
||||
});
|
||||
|
||||
}(window, window.document));
|
||||
|
||||
(function ()
|
||||
{
|
||||
if (typeof Object.defineProperty === 'function')
|
||||
{
|
||||
try { Object.defineProperty(Array.prototype, 'sortCI', { value: sax.arraySortCI }); } catch (e) { }
|
||||
}
|
||||
if (!Array.prototype.sortBy) Array.prototype.sortCI = sax.arraySortCI;
|
||||
})();
|
||||
|
||||
/* The End */
|
||||
@@ -0,0 +1,147 @@
|
||||
/*
|
||||
* Admin - Organisation page scripts.
|
||||
*/
|
||||
"use strict";
|
||||
sax.itemIdPrefix = 'Itm_';
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.refreshResults = function (delay)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
if (!sax.awaitingRefreshResponse)
|
||||
{
|
||||
var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty();
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
||||
}
|
||||
sax.ajaxRefreshResults = sax.ajaxRefreshResults || { url: sax.url.base + 'Organisation/Ajax/GetList', formId: 'frmOrganisationFilter', callbackFn: sax.doRefreshResults };
|
||||
sax.doAjaxRequest(sax.ajaxRefreshResults, delay || 50);
|
||||
sax.awaitingRefreshResponse = true;
|
||||
}
|
||||
sax.doRefreshResults = function (response)
|
||||
{
|
||||
sax.debug('doRefreshResults', response);
|
||||
delete sax.awaitingRefreshResponse;
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
var $results = $('.sax-panel-results');
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty();
|
||||
var $items = $('.sax-panel-item-list', $results).hide().empty();
|
||||
var $templ = $('.sax-panel-item-template .sax-panel-item.Organisation', $results);
|
||||
if (!response.success) return;
|
||||
// Items.
|
||||
var items = response.organisations;
|
||||
if (!items.length)
|
||||
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
|
||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||
{
|
||||
let item = items[itemIdx];
|
||||
let $item = $templ.clone();
|
||||
sax.populateItem($item, item);
|
||||
$items.append($item);
|
||||
}
|
||||
$items.fadeIn(50);
|
||||
}
|
||||
sax.populateItem = function ($item, item)
|
||||
{
|
||||
if (!item) return;
|
||||
$item.prop('id', sax.itemIdPrefix + item.id);
|
||||
$('.OrganisationName', $item).text(item.name);
|
||||
$('.OrganisationType', $item).text(item.typeDesc);
|
||||
$('.OrganisationCategory', $item).text(item.categoryDesc);
|
||||
$('.OrganisationMemberCount', $item).on('click', function () { sax.onClickMemberCount(item.id); }).find('.MemberCount').text(item.memberCount);
|
||||
$('.StatusDesc', $item).text(item.statusDesc);
|
||||
$('.sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) })
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.createItem = function ()
|
||||
{
|
||||
$('.OrganisationId,input[type="text"],textarea,select', sax.$frm.organisation).val('');
|
||||
sax.clearControlErrors();
|
||||
sax.$dlg.organisation.dialog('option', 'title', sax.dlg.title.createOrganisation);
|
||||
sax.openDialog(sax.$dlg.organisation, 600, 600);
|
||||
}
|
||||
sax.doCreateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.updateItem = function (id)
|
||||
{
|
||||
$('.OrganisationId', sax.$frm.organisationId).val(id);
|
||||
sax.ajaxUpdateItem = sax.ajaxUpdateItem || { url: sax.url.base + 'Organisation/Ajax/GetItem', formId: 'frmOrganisationId', callbackFn: sax.onUpdateItem };
|
||||
sax.doAjaxRequest(sax.ajaxUpdateItem, 50);
|
||||
}
|
||||
sax.onUpdateItem = function (response)
|
||||
{
|
||||
//sax.debug('onUpdateItem', response);
|
||||
let $frm = sax.$frm.organisation;
|
||||
$('.OrganisationId,input[type="text"],textarea,select', $frm).val('');
|
||||
if (!response.success) return;
|
||||
let item = response.organisation;
|
||||
$('.OrganisationId', $frm).val(item.id);
|
||||
$('.OrganisationName', $frm).val(item.name);
|
||||
$('.OrganisationType', $frm).val(item.typeCode);
|
||||
$('.OrganisationCategory', $frm).val(item.categoryCode);
|
||||
sax.clearControlErrors();
|
||||
sax.$dlg.organisation.dialog('option', 'title', sax.dlg.title.updateOrganisation);
|
||||
sax.openDialog(sax.$dlg.organisation, 600, 600);
|
||||
}
|
||||
sax.doUpdateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.storeItem = function ()
|
||||
{
|
||||
sax.ajaxStoreItem = sax.ajaxStoreItem || { url: sax.url.base + 'Organisation/Ajax/StoreItem', formId: 'frmOrganisation', callbackFn: sax.onStoreItem };
|
||||
sax.doAjaxRequest(sax.ajaxStoreItem, 50);
|
||||
}
|
||||
sax.onStoreItem = function (response)
|
||||
{
|
||||
//sax.debug('onStoreItem', response);
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
sax.$dlg.organisation.dialog('close');
|
||||
|
||||
var item = response.organisation;
|
||||
var $item = $('#' + sax.itemIdPrefix + item.id);
|
||||
if (!$item.length)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
$item = $('.sax-panel-item-template .sax-panel-item.Organisation', $results).clone();
|
||||
$('.sax-panel-item-list', $results).prepend($item).show();
|
||||
}
|
||||
sax.populateItem($item, item)
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.onClickMemberCount = function (id)
|
||||
{
|
||||
if (!(id * 1)) return;
|
||||
sax.doPleaseWait();
|
||||
let $frm = $('#frmOrganisationId');
|
||||
$('.OrganisationId',$frm).val(id);
|
||||
$frm.prop('action', sax.url.base + 'Organisation/Members').submit();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
$(function ()
|
||||
{
|
||||
$('.sax-panel-filter .sax-action.sax-item-create').on('click', function () { sax.createItem(); });
|
||||
$('.sax-panel-filter .sax-action.sax-results-refresh').on('click', function () { sax.refreshResults(); });
|
||||
$('.sax-input').on('keydown', function () { sax.clearControlError(this); });
|
||||
|
||||
sax.$frm.organisationId = $('#frmOrganisationId');
|
||||
sax.$frm.organisation = $('#frmOrganisation');
|
||||
|
||||
var opt = sax.dlgOpts();
|
||||
opt.buttons[sax.dlg.btn.ok] = function () { sax.doCreateItem(); };
|
||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||
sax.$dlg.organisation = $('#dlgOrganisation').dialog(opt);
|
||||
|
||||
setTimeout(sax.refreshResults, 250);
|
||||
});
|
||||
|
||||
//--------------------------------------------------------------
|
||||
@@ -0,0 +1,200 @@
|
||||
/*
|
||||
* Admin - Organisation Members page scripts.
|
||||
*/
|
||||
|
||||
(function (win, doc, undef)
|
||||
{
|
||||
"use strict";
|
||||
sax.itemIdPrefix = 'Itm_';
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.refreshResults = function (delay)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
if (!sax.awaitingRefreshResponse)
|
||||
{
|
||||
var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty();
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
||||
}
|
||||
sax.ajaxRefreshResults = sax.ajaxRefreshResults || { url: sax.url.base + 'Organisation/Ajax/GetMemberList', formId: 'frmMemberFilter', callbackFn: sax.doRefreshResults };
|
||||
sax.doAjaxRequest(sax.ajaxRefreshResults, delay || 50);
|
||||
sax.awaitingRefreshResponse = true;
|
||||
}
|
||||
sax.doRefreshResults = function (response)
|
||||
{
|
||||
sax.debug('doRefreshResults', response);
|
||||
delete sax.awaitingRefreshResponse;
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
var $results = $('.sax-panel-results');
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty();
|
||||
var $items = $('.sax-panel-item-list', $results).hide().empty();
|
||||
var $templ = $('.sax-panel-item-template .sax-panel-item.Member', $results);
|
||||
if (!response.success) return;
|
||||
// Reference data.
|
||||
if (response.memberRoles && response.memberRoles.length)
|
||||
sax.data.memberRoles = response.memberRoles;
|
||||
// Items.
|
||||
var items = response.members;
|
||||
if (!items.length)
|
||||
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
|
||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||
{
|
||||
let item = items[itemIdx];
|
||||
let $item = $templ.clone();
|
||||
sax.populateItem($item, item);
|
||||
$items.append($item);
|
||||
}
|
||||
$items.fadeIn(50);
|
||||
}
|
||||
sax.populateItem = function ($item, item)
|
||||
{
|
||||
if (!item) return;
|
||||
$item.prop('id', sax.itemIdPrefix + item.id);
|
||||
$('.UserEmailAddress', $item).text(item.emailAddress);
|
||||
$('.UserDisplayName', $item).text(item.displayName);
|
||||
$('.MemberRoleCount .RoleCount', $item).text(item.roleCount);
|
||||
$('.StatusDesc', $item).text(item.statusDesc);
|
||||
$('.sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) })
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.selectOrganisation = function ()
|
||||
{
|
||||
sax.debug('sax.selectOrganisation');
|
||||
sax.organisationSelection.fn.openDialog({ caption: sax.dlg.title.selectOrganisation, fnCallback: sax.onOrganisationSelected });
|
||||
}
|
||||
sax.onOrganisationSelected = function (id, name)
|
||||
{
|
||||
//sax.debug('sax.onOrganisationSelected', id, name);
|
||||
$('#frmMemberFilter #ifFilterOrganisationId').val(id);
|
||||
$('#frmMemberFilter #ifFilterOrganisation').val(name);
|
||||
sax.refreshResults(50);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// Member Roles.
|
||||
sax.selectMemberRoles = function ()
|
||||
{
|
||||
//sax.debug('selectMemberRoles',sax.data);
|
||||
sax.selectMemberRoleConfig = sax.selectMemberRoleConfig || { caption: sax.dlg.title.selectMemberRoles, width: 520, fnCallback: sax.updateMemberRoles };
|
||||
sax.selectMemberRoleConfig.codes = sax.data.memberRoles;
|
||||
sax.selectMemberRoleConfig.selectedCodes = sax.member.roleCodes || [];
|
||||
sax.codeSelection.fn.openCodeSelection(sax.selectMemberRoleConfig);
|
||||
}
|
||||
sax.updateMemberRoles = function (memberRoleCodes)
|
||||
{
|
||||
//sax.debug('updateMemberRoles', MemberRoleCodes);
|
||||
sax.member.roleCodes = memberRoleCodes;
|
||||
$('#ifMemberRoleCodes').val(memberRoleCodes.join(sax.data.memberRoleCodeDelim));
|
||||
$('#ifMemberRoles').val(sax.getSelectedMemberRoleDescs().join('\n'));
|
||||
}
|
||||
sax.getSelectedMemberRoleDescs = function ()
|
||||
{
|
||||
let roles = [];
|
||||
sax.member.roleCodes.forEach(function (value) { roles.push(sax.getMemberRoleDesc(value)); })
|
||||
return roles.sortCI();
|
||||
}
|
||||
sax.getMemberRoleDesc = function (roleCode)
|
||||
{
|
||||
let roleDesc = '';
|
||||
sax.data.memberRoles.some(function (value) { if (value.code == roleCode) { roleDesc = value.desc; return true; } return false; })
|
||||
return roleDesc || roleCode;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.createItem = function ()
|
||||
{
|
||||
let $frm = sax.$frm.member;
|
||||
$('.UserOrganisationId,.MemberRoleCodes,input[type="text"],textarea,select', $frm).val('');
|
||||
$('.MemberOrganisationId', $frm).val($('#frmMemberFilter #ifFilterOrganisationId').val());
|
||||
$('.MemberUserEmailAddress', $frm).prop('readonly', false);
|
||||
sax.clearControlErrors();
|
||||
sax.member = { roleCodes: [] };
|
||||
sax.$dlg.member.dialog('option', 'title', sax.dlg.title.createMember);
|
||||
sax.openDialog(sax.$dlg.member, 600, 600);
|
||||
}
|
||||
sax.doCreateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.updateItem = function (id)
|
||||
{
|
||||
$('.UserOrganisationId', sax.$frm.memberId).val(id);
|
||||
sax.ajaxUpdateItem = sax.ajaxUpdateItem || { url: sax.url.base + 'Organisation/Ajax/GetMember', formId: 'frmMemberId', callbackFn: sax.onUpdateItem };
|
||||
sax.doAjaxRequest(sax.ajaxUpdateItem, 50);
|
||||
}
|
||||
sax.onUpdateItem = function (response)
|
||||
{
|
||||
sax.debug('onUpdateItem', response);
|
||||
let $frm = sax.$frm.member;
|
||||
$('.UserOrganisationId,input[type="text"],textarea,select', $frm).val('');
|
||||
if (!response.success) return;
|
||||
let item = sax.member = response.member;
|
||||
$('.UserOrganisationId', $frm).val(item.id);
|
||||
$('.MemberOrganisationId', $frm).val($('#frmMemberFilter #ifFilterOrganisationId').val());
|
||||
$('.MemberUserEmailAddress', $frm).val(item.emailAddress).prop('readonly', true);
|
||||
$('.MemberUserName', $frm).val(item.displayName).prop('readonly', true);
|
||||
$('.MemberRoleCodes', $frm).val(item.roleCodes);
|
||||
$('#ifMemberRoles').val(sax.getSelectedMemberRoleDescs().join('\n'));
|
||||
sax.clearControlErrors();
|
||||
sax.$dlg.member.dialog('option', 'title', sax.dlg.title.updateMember);
|
||||
sax.openDialog(sax.$dlg.member, 600, 600);
|
||||
}
|
||||
sax.doUpdateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.storeItem = function ()
|
||||
{
|
||||
sax.ajaxStoreItem = sax.ajaxStoreItem || { url: sax.url.base + 'Organisation/Ajax/StoreMember', formId: 'frmMember', callbackFn: sax.onStoreItem };
|
||||
sax.doAjaxRequest(sax.ajaxStoreItem, 50);
|
||||
}
|
||||
sax.onStoreItem = function (response)
|
||||
{
|
||||
//sax.debug('onStoreItem', response);
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
sax.$dlg.member.dialog('close');
|
||||
|
||||
var item = response.member;
|
||||
var $item = $('#' + sax.itemIdPrefix + item.id);
|
||||
if (!$item.length)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
$item = $('.sax-panel-item-template .sax-panel-item.Member', $results).clone();
|
||||
$('.sax-panel-item-list', $results).prepend($item).show();
|
||||
}
|
||||
sax.populateItem($item, item)
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.onClickMemberCount = function (id)
|
||||
{
|
||||
sax.debug('onClickMemberCount', id);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
$(function ()
|
||||
{
|
||||
$('.sax-panel-filter .sax-action.sax-item-create').on('click', function () { sax.createItem(); });
|
||||
$('.sax-panel-filter .sax-action.sax-results-refresh').on('click', function () { sax.refreshResults(); });
|
||||
$('.sax-input').on('keydown', function () { sax.clearControlError(this); });
|
||||
|
||||
sax.$frm.memberId = $('#frmMemberId');
|
||||
sax.$frm.member = $('#frmMember');
|
||||
|
||||
var opt = sax.dlgOpts();
|
||||
opt.buttons[sax.dlg.btn.ok] = function () { sax.doCreateItem(); };
|
||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||
sax.$dlg.member = $('#dlgMember').dialog(opt);
|
||||
|
||||
setTimeout(sax.refreshResults, 250);
|
||||
});
|
||||
|
||||
}(window, window.document));
|
||||
|
||||
/* The End */
|
||||
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Admin - User page scripts.
|
||||
*/
|
||||
|
||||
(function (win, doc, undef)
|
||||
{
|
||||
"use strict";
|
||||
let os = sax.organisationSelection = sax.organisationSelection || { data: {}, fn: {}, $dlg: {}, itemIdPrefix: 'Org_' };
|
||||
|
||||
//--------------------------------------------------------------
|
||||
/*
|
||||
* Organisation selection config:
|
||||
* - caption - dialog title.
|
||||
* - width: preferred dialog width (default: 400).
|
||||
* - height: preferred dialog height (default: 400).
|
||||
* - fnCallback - method to call on completion.
|
||||
*/
|
||||
os.fn.openDialog = function (cfg)
|
||||
{
|
||||
//sax.debug('openDialog', cfg);
|
||||
os.fn.init();
|
||||
os.cfg = cfg;
|
||||
sax.openDialog(os.$dlg.dialog('option', { title: cfg.caption || os.dlgTitleSelectOrganisation || 'Select Organisation' }), os.cfg.width || 480, os.cfg.height || 600);
|
||||
}
|
||||
os.fn.refreshOrganisations = function (delay)
|
||||
{
|
||||
//sax.debug('refreshOrganisations');
|
||||
os.ajaxRefreshResults = os.ajaxRefreshResults || { url: sax.url.base + 'Organisation/Ajax/GetList', formId: 'frmOrganisationSelectionFilter', callbackFn: os.fn.doRefreshResults };
|
||||
sax.doAjaxRequest(os.ajaxRefreshResults, delay || 50);
|
||||
}
|
||||
os.fn.doRefreshResults = function (response)
|
||||
{
|
||||
//sax.debug('os.doRefreshResults', response);
|
||||
if (!response.success) return;
|
||||
let $results = $('.sax-selection-results.Organisations').empty().hide();
|
||||
let $tmpl = $('.sax-panel-item-template .sax-panel-item.Organisation');
|
||||
let items = response.organisations;
|
||||
if (items)
|
||||
{
|
||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||
{
|
||||
let item = items[itemIdx];
|
||||
let $item = $tmpl.clone().prop('id', os.itemIdPrefix + item.id).on('click', function () { os.fn.onClickOrganisation(item); }).on('dblclick', function () { os.fn.onDblClickOrganisation(item); });
|
||||
$('.Name', $item).text(item.name);
|
||||
$results.append($item);
|
||||
}
|
||||
}
|
||||
$results.fadeIn(200);
|
||||
}
|
||||
os.fn.onClickOrganisation = function (item)
|
||||
{
|
||||
//sax.debug('onClickOrganisation', item);
|
||||
os.data.item = item;
|
||||
$('.sax-panel-item.Organisation').removeClass('sel');
|
||||
$('.sax-panel-item.Organisation#' + os.itemIdPrefix + item.id).addClass('sel');
|
||||
}
|
||||
os.fn.onDblClickOrganisation= function (item)
|
||||
{
|
||||
//sax.debug('onDblClickCode', item);
|
||||
os.data.item = item;
|
||||
os.fn.confirmSelection();
|
||||
}
|
||||
os.fn.confirmSelection = function ()
|
||||
{
|
||||
//sax.debug('storeCodeSelection', os.data.item);
|
||||
if (!os.data.item) return;
|
||||
if (os.cfg.fnCallback) os.cfg.fnCallback(os.data.item.id, os.data.item.name);
|
||||
os.$dlg.dialog('close');
|
||||
delete os.cfg;
|
||||
delete os.data.item;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
os.fn.init = function ()
|
||||
{
|
||||
if (!os.$dlg) return;
|
||||
var opt = sax.dlgOpts();
|
||||
opt.open = function () { os.fn.refreshOrganisations(200); };
|
||||
opt.buttons[sax.dlg.btn.ok] = function () { os.fn.confirmSelection(); };
|
||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||
os.$dlg = $('#dlgOrganisationSelection').dialog(opt);
|
||||
}
|
||||
|
||||
}(window, window.document));
|
||||
|
||||
/* The End */
|
||||
@@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Admin - Region page scripts.
|
||||
*/
|
||||
"use strict";
|
||||
sax.itemIdPrefix = 'Itm_';
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.refreshResults = function (delay)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
if (!sax.awaitingRefreshResponse)
|
||||
{
|
||||
var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty();
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
||||
}
|
||||
sax.ajaxRefreshResults = sax.ajaxRefreshResults || { url: sax.url.base + 'Region/Ajax/GetList', formId: 'frmRegionFilter', callbackFn: sax.doRefreshResults };
|
||||
sax.doAjaxRequest(sax.ajaxRefreshResults, delay || 50);
|
||||
sax.awaitingRefreshResponse = true;
|
||||
}
|
||||
sax.doRefreshResults = function (response)
|
||||
{
|
||||
//sax.debug('doRefreshResults', response);
|
||||
delete sax.awaitingRefreshResponse;
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
var $results = $('.sax-panel-results');
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty();
|
||||
var $items = $('.sax-panel-item-list', $results).hide().empty();
|
||||
var $templ = $('.sax-panel-item-template .sax-panel-item.Region', $results);
|
||||
if (!response.success) return;
|
||||
// Items.
|
||||
var items = response.regions;
|
||||
if (!items.length)
|
||||
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
|
||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||
{
|
||||
let item = items[itemIdx];
|
||||
let $item = $templ.clone();
|
||||
sax.populateItem($item, item);
|
||||
$items.append($item);
|
||||
}
|
||||
$items.fadeIn(50);
|
||||
}
|
||||
sax.populateItem = function ($item, item)
|
||||
{
|
||||
if (!item) return;
|
||||
$item.prop('id', sax.itemIdPrefix + item.id);
|
||||
$('.RegionName', $item).text(item.name);
|
||||
$('.RegionCountryIso2Code', $item).text(item.countryIso2Code);
|
||||
$('.RegionTypeDesc', $item).text(item.regionTypeDesc);
|
||||
$('.RegionParentName', $item).text(item.parentName);
|
||||
$('.RegionStatusDesc', $item).text(item.statusDesc);
|
||||
$('.sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) })
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.createItem = function ()
|
||||
{
|
||||
$('.RegionId,input[type="text"],textarea,select', sax.$frm.region).val('');
|
||||
sax.clearControlErrors();
|
||||
sax.$dlg.region.dialog('option', 'title', sax.dlg.title.createRegion);
|
||||
sax.openDialog(sax.$dlg.region, 600, 600);
|
||||
}
|
||||
sax.doCreateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.updateItem = function (id)
|
||||
{
|
||||
$('.RegionId', sax.$frm.regionId).val(id);
|
||||
sax.ajaxUpdateItem = sax.ajaxUpdateItem || { url: sax.url.base + 'Region/Ajax/GetItem', formId: 'frmRegionId', callbackFn: sax.onUpdateItem };
|
||||
sax.doAjaxRequest(sax.ajaxUpdateItem, 50);
|
||||
}
|
||||
sax.onUpdateItem = function (response)
|
||||
{
|
||||
//sax.debug('onUpdateItem', response);
|
||||
let $frm = sax.$frm.region;
|
||||
$('.RegionId,input[type="text"],textarea,select', $frm).val('');
|
||||
if (!response.success) return;
|
||||
let item = response.region;
|
||||
$('.RegionId', $frm).val(item.id);
|
||||
$('.RegionType', $frm).val(item.regionTypeCode);
|
||||
$('.RegionCountryIso2Code', $frm).val(item.countryIso2Code);
|
||||
$('.RegionName', $frm).val(item.name);
|
||||
sax.clearControlErrors();
|
||||
sax.$dlg.region.dialog('option', 'title', sax.dlg.title.updateRegion);
|
||||
sax.openDialog(sax.$dlg.region, 600, 600);
|
||||
}
|
||||
sax.doUpdateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.storeItem = function ()
|
||||
{
|
||||
sax.ajaxStoreItem = sax.ajaxStoreItem || { url: sax.url.base + 'Region/Ajax/StoreItem', formId: 'frmRegion', callbackFn: sax.onStoreItem };
|
||||
sax.doAjaxRequest(sax.ajaxStoreItem, 50);
|
||||
}
|
||||
sax.onStoreItem = function (response)
|
||||
{
|
||||
//sax.debug('onStoreItem', response);
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
sax.$dlg.region.dialog('close');
|
||||
|
||||
var item = response.region;
|
||||
var $item = $('#' + sax.itemIdPrefix + item.id);
|
||||
if (!$item.length)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
$item = $('.sax-panel-item-template .sax-panel-item.Region', $results).clone();
|
||||
$('.sax-panel-item-list', $results).prepend($item).show();
|
||||
}
|
||||
sax.populateItem($item, item)
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
$(function ()
|
||||
{
|
||||
$('.sax-action.sax-item-create').on('click', function () { sax.createItem(); });
|
||||
$('.sax-action.sax-results-refresh').on('click', function () { sax.refreshResults(); });
|
||||
$('.sax-input').on('keydown', function () { sax.clearControlError(this); });
|
||||
|
||||
sax.$frm.regionId = $('#frmRegionId');
|
||||
sax.$frm.region = $('#frmRegion');
|
||||
|
||||
var opt = sax.dlgOpts();
|
||||
opt.buttons[sax.dlg.btn.ok] = function () { sax.doCreateItem(); };
|
||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||
sax.$dlg.region = $('#dlgRegion').dialog(opt);
|
||||
|
||||
setTimeout(sax.refreshResults, 250);
|
||||
});
|
||||
|
||||
//--------------------------------------------------------------
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Admin - Security page scripts.
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.doSignin = function ()
|
||||
{
|
||||
sax.clearControlErrors();
|
||||
sax.ajaxSignin = sax.ajaxSignin || { url: sax.url.base + 'Security/Ajax/Signin', formId: 'frmSignIn', callbackFn: sax.onSignin };
|
||||
sax.doAjaxRequest(sax.ajaxSignin, 50);
|
||||
}
|
||||
sax.onSignin = function (response)
|
||||
{
|
||||
sax.debug(response);
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
sax.goToPage('');
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.doScorePassword = function ()
|
||||
{
|
||||
sax.ajaxScorePassword = sax.ajaxScorePassword || { url: sax.url.base + 'Security/Ajax/ScorePassword', formId: 'frmChangePassword', callbackFn: sax.onScorePassword, noWaitIcon: true };
|
||||
sax.doAjaxRequest(sax.ajaxScorePassword, 250);
|
||||
}
|
||||
sax.onScorePassword = function (response)
|
||||
{
|
||||
var score = (response || {}).score || 0;
|
||||
sax.$prgPasswordStrength.progressbar("option", "value", score).removeClass('amber green').addClass(score > 3 ? 'green' : score > 2 ? 'amber' : '');
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.doChangePassword = function ()
|
||||
{
|
||||
sax.clearControlErrors();
|
||||
sax.ajaxChangePassword = sax.ajaxChangePassword || { url: sax.url.base + 'Security/Ajax/StorePassword', formId: 'frmChangePassword', callbackFn: sax.onChangePassword };
|
||||
sax.doAjaxRequest(sax.ajaxChangePassword, 50);
|
||||
}
|
||||
sax.onChangePassword = function (response)
|
||||
{
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
if ($('#ifRpe').length)
|
||||
sax.goToPage('Security/Signin');
|
||||
else sax.goToPage('');
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.doRequestPassword = function ()
|
||||
{
|
||||
sax.clearControlErrors();
|
||||
sax.ajaxRequestPassword = sax.ajaxRequestPassword || { url: sax.url.base + 'Security/Ajax/RequestNewPassword', formId: 'frmRequestPassword', callbackFn: sax.onRequestPassword };
|
||||
sax.doAjaxRequest(sax.ajaxRequestPassword, 50);
|
||||
}
|
||||
sax.onRequestPassword = function (response)
|
||||
{
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
var gotoSigninPage = function ()
|
||||
{
|
||||
sax.goToPage('Security/Signin');
|
||||
}
|
||||
if (response.successMsg)
|
||||
sax.doAlert($('.sax-page-caption').text(), response.successMsg, gotoSigninPage);
|
||||
else gotoSigninPage();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
$(function ()
|
||||
{
|
||||
$(':input:enabled:visible:first').focus();
|
||||
$('#ifEmailAddress,#ifPasswordCurrent,#ifPassword,#ifPasswordConfirm').on('keydown', function () { sax.clearControlError(this); });
|
||||
$('#frmChangePassword #ifPassword').on('keyup', sax.doScorePassword);
|
||||
sax.$prgPasswordStrength = $('#frmChangePassword #prgPasswordStrength').progressbar({ 'max': 5 });
|
||||
$('#ifEmailAddress,#ifPassword', $('#frmSignIn')).on('keypress', function (e) { if (e.which == 13) sax.doSignin(); });
|
||||
$('#frmSignIn #pbSignIn').on('click', function () { sax.doSignin(); });
|
||||
$('#ifPasswordCurrent,#ifPassword,#ifPasswordConfirm', $('#frmChangePassword')).on('keypress', function (e) { if (e.which == 13) sax.doChangePassword(); });
|
||||
$('#frmChangePassword #pbChangePassword').on('click', function () { sax.doChangePassword(); });
|
||||
$('#ifEmailAddress', $('#frmRequestPassword')).on('keypress', function (e) { if (e.which == 13) sax.doRequestPassword(); });
|
||||
$('#frmRequestPassword #pbRequestPassword').on('click', function () { sax.doRequestPassword(); });
|
||||
});
|
||||
|
||||
//--------------------------------------------------------------
|
||||
@@ -0,0 +1,136 @@
|
||||
/*
|
||||
* Admin - Sport page scripts.
|
||||
*/
|
||||
"use strict";
|
||||
sax.itemIdPrefix = 'Itm_';
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.refreshResults = function (delay)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
if (!sax.awaitingRefreshResponse)
|
||||
{
|
||||
var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty();
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
||||
}
|
||||
sax.ajaxRefreshResults = sax.ajaxRefreshResults || { url: sax.url.base + 'Sport/Ajax/GetList', formId: 'frmSportFilter', callbackFn: sax.doRefreshResults };
|
||||
sax.doAjaxRequest(sax.ajaxRefreshResults, delay || 50);
|
||||
sax.awaitingRefreshResponse = true;
|
||||
}
|
||||
sax.doRefreshResults = function (response)
|
||||
{
|
||||
//sax.debug('doRefreshResults', response);
|
||||
delete sax.awaitingRefreshResponse;
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
var $results = $('.sax-panel-results');
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty();
|
||||
var $items = $('.sax-panel-item-list', $results).hide().empty();
|
||||
var $templ = $('.sax-panel-item-template .sax-panel-item.Sport', $results);
|
||||
if (!response.success) return;
|
||||
// Items.
|
||||
var items = response.sports;
|
||||
if (!items.length)
|
||||
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
|
||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||
{
|
||||
let item = items[itemIdx];
|
||||
let $item = $templ.clone();
|
||||
sax.populateItem($item, item);
|
||||
$items.append($item);
|
||||
}
|
||||
$items.fadeIn(50);
|
||||
}
|
||||
sax.populateItem = function ($item, item)
|
||||
{
|
||||
if (!item) return;
|
||||
$item.prop('id', sax.itemIdPrefix + item.id);
|
||||
$('.SportName', $item).text(item.name);
|
||||
$('.SportType', $item).text(item.typeDesc);
|
||||
$('.SportCategory', $item).text(item.categoryDesc);
|
||||
$('.StatusDesc', $item).text(item.statusDesc);
|
||||
$('.sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) })
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.createItem = function ()
|
||||
{
|
||||
$('.SportId,input[type="text"],textarea,select', sax.$frm.sport).val('');
|
||||
sax.clearControlErrors();
|
||||
sax.$dlg.sport.dialog('option', 'title', sax.dlg.title.createSport);
|
||||
sax.openDialog(sax.$dlg.sport, 600, 600);
|
||||
}
|
||||
sax.doCreateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.updateItem = function (id)
|
||||
{
|
||||
$('.SportId', sax.$frm.sportId).val(id);
|
||||
sax.ajaxUpdateItem = sax.ajaxUpdateItem || { url: sax.url.base + 'Sport/Ajax/GetItem', formId: 'frmSportId', callbackFn: sax.onUpdateItem };
|
||||
sax.doAjaxRequest(sax.ajaxUpdateItem, 50);
|
||||
}
|
||||
sax.onUpdateItem = function (response)
|
||||
{
|
||||
//sax.debug('onUpdateItem', response);
|
||||
let $frm = sax.$frm.sport;
|
||||
$('.SportId,input[type="text"],textarea,select', $frm).val('');
|
||||
if (!response.success) return;
|
||||
let item = response.sport;
|
||||
$('.SportId', $frm).val(item.id);
|
||||
$('.SportName', $frm).val(item.name);
|
||||
$('.SportType', $frm).val(item.typeCode);
|
||||
$('.SportCategory', $frm).val(item.categoryCode);
|
||||
sax.clearControlErrors();
|
||||
sax.$dlg.sport.dialog('option', 'title', sax.dlg.title.updateSport);
|
||||
sax.openDialog(sax.$dlg.sport, 600, 600);
|
||||
}
|
||||
sax.doUpdateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.storeItem = function ()
|
||||
{
|
||||
sax.ajaxStoreItem = sax.ajaxStoreItem || { url: sax.url.base + 'Sport/Ajax/StoreItem', formId: 'frmSport', callbackFn: sax.onStoreItem };
|
||||
sax.doAjaxRequest(sax.ajaxStoreItem, 50);
|
||||
}
|
||||
sax.onStoreItem = function (response)
|
||||
{
|
||||
//sax.debug('onStoreItem', response);
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
sax.$dlg.sport.dialog('close');
|
||||
|
||||
var item = response.sport;
|
||||
var $item = $('#' + sax.itemIdPrefix + item.id);
|
||||
if (!$item.length)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
$item = $('.sax-panel-item-template .sax-panel-item.Sport', $results).clone();
|
||||
$('.sax-panel-item-list', $results).prepend($item).show();
|
||||
}
|
||||
sax.populateItem($item, item)
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
$(function ()
|
||||
{
|
||||
$('.sax-action.sax-item-create').on('click', function () { sax.createItem(); });
|
||||
$('.sax-action.sax-results-refresh').on('click', function () { sax.refreshResults(); });
|
||||
$('.sax-input').on('keydown', function () { sax.clearControlError(this); });
|
||||
|
||||
sax.$frm.sportId = $('#frmSportId');
|
||||
sax.$frm.sport = $('#frmSport');
|
||||
|
||||
var opt = sax.dlgOpts();
|
||||
opt.buttons[sax.dlg.btn.ok] = function () { sax.doCreateItem(); };
|
||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||
sax.$dlg.sport = $('#dlgSport').dialog(opt);
|
||||
|
||||
setTimeout(sax.refreshResults, 250);
|
||||
});
|
||||
|
||||
//--------------------------------------------------------------
|
||||
@@ -0,0 +1,185 @@
|
||||
/*
|
||||
* Admin - User page scripts.
|
||||
*/
|
||||
|
||||
(function (win, doc, undef)
|
||||
{
|
||||
"use strict";
|
||||
sax.itemIdPrefix = 'Itm_';
|
||||
sax.userAccount = {};
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.refreshResults = function (delay)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
if (!sax.awaitingRefreshResponse)
|
||||
{
|
||||
var $items = $('.sax-panel-item-list', $results).fadeOut(200).empty();
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
|
||||
}
|
||||
sax.ajaxRefreshResults = sax.ajaxRefreshResults || { url: sax.url.base + 'User/Ajax/GetList', formId: 'frmUserFilter', callbackFn: sax.doRefreshResults };
|
||||
sax.doAjaxRequest(sax.ajaxRefreshResults, delay || 50);
|
||||
sax.awaitingRefreshResponse = true;
|
||||
}
|
||||
sax.doRefreshResults = function (response)
|
||||
{
|
||||
//sax.debug('doRefreshResults', response);
|
||||
delete sax.awaitingRefreshResponse;
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
var $results = $('.sax-panel-results');
|
||||
var $msgs = $('.sax-panel-messages', $results).hide().empty();
|
||||
var $items = $('.sax-panel-item-list', $results).hide().empty();
|
||||
var $templ = $('.sax-panel-item-template .sax-panel-item.User', $results);
|
||||
if (!response.success) return;
|
||||
// Reference data.
|
||||
if (response.userRoles && response.userRoles.length)
|
||||
sax.data.userRoles = response.userRoles;
|
||||
// Items.
|
||||
var items = response.users;
|
||||
if (!items.length)
|
||||
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
|
||||
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
||||
{
|
||||
let item = items[itemIdx];
|
||||
let $item = $templ.clone();
|
||||
sax.populateItem($item, item);
|
||||
$items.append($item);
|
||||
}
|
||||
$items.fadeIn(50);
|
||||
// Reference data.
|
||||
if (response.userRoles && response.userRoles.length)
|
||||
sax.data.userRoles = response.userRoles;
|
||||
}
|
||||
sax.populateItem = function ($item, item)
|
||||
{
|
||||
if (!item) return;
|
||||
$item.prop('id', sax.itemIdPrefix + item.id);
|
||||
$('.UserEmailAddress', $item).text(item.emailAddress);
|
||||
$('.UserDisplayName', $item).text(item.displayName);
|
||||
$('.UserTitle', $item).text(item.title);
|
||||
$('.UserFirstName', $item).text(item.firstName);
|
||||
$('.UserLastName', $item).text(item.lastName);
|
||||
$('.UserRoleCount', $item).text(item.userRoleCount);
|
||||
$('.StatusDesc', $item).text(item.statusDesc);
|
||||
$('.sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item.id) })
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// User Roles.
|
||||
sax.selectUserRoles = function ()
|
||||
{
|
||||
//sax.debug('selectUserRoles');
|
||||
sax.selectUserRoleConfig = sax.selectUserRoleConfig || { caption: sax.dlg.title.selectUserRoles, width: 520, fnCallback: sax.updateUserRoles };
|
||||
sax.selectUserRoleConfig.codes = sax.data.userRoles;
|
||||
sax.selectUserRoleConfig.selectedCodes = sax.userAccount.userRoleCodes || [];
|
||||
sax.codeSelection.fn.openCodeSelection(sax.selectUserRoleConfig);
|
||||
}
|
||||
sax.updateUserRoles = function (userRoleCodes)
|
||||
{
|
||||
//sax.debug('updateUserRoles', userRoleCodes);
|
||||
sax.userAccount.userRoleCodes = userRoleCodes;
|
||||
$('#ifUserRoleCodes').val(userRoleCodes.join(sax.data.userRoleCodeDelim));
|
||||
$('#ifUserRoles').val(sax.getSelectedUserRoleDescs().join('\n'));
|
||||
}
|
||||
sax.getSelectedUserRoleDescs = function ()
|
||||
{
|
||||
let userRoles = [];
|
||||
sax.userAccount.userRoleCodes.forEach(function (value) { userRoles.push(sax.getUserRoleDesc(value)); })
|
||||
return userRoles.sortCI();
|
||||
}
|
||||
sax.getUserRoleDesc = function (roleCode)
|
||||
{
|
||||
let roleDesc = '';
|
||||
sax.data.userRoles.some(function (value) { if (value.code == roleCode) { roleDesc = value.desc; return true; } return false; })
|
||||
return roleDesc || roleCode;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.createItem = function ()
|
||||
{
|
||||
$('.UserAccountId,.UserRoleCodes,input[type="text"],textarea,select', sax.$frm.user).val('');
|
||||
sax.clearControlErrors();
|
||||
sax.userAccount = { userRoleCodes: [] };
|
||||
sax.$dlg.user.dialog('option', 'title', sax.dlg.title.createUser);
|
||||
sax.openDialog(sax.$dlg.user, 600, 600);
|
||||
}
|
||||
sax.doCreateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.updateItem = function (id)
|
||||
{
|
||||
$('.UserAccountId', sax.$frm.userId).val(id);
|
||||
sax.ajaxUpdateItem = sax.ajaxUpdateItem || { url: sax.url.base + 'User/Ajax/GetItem', formId: 'frmUserId', callbackFn: sax.onUpdateItem };
|
||||
sax.doAjaxRequest(sax.ajaxUpdateItem, 50);
|
||||
}
|
||||
sax.onUpdateItem = function (response)
|
||||
{
|
||||
//sax.debug('onUpdateItem', response);
|
||||
let $frm = sax.$frm.user;
|
||||
$('.UserAccountId,input[type="text"],textarea,select', $frm).val('');
|
||||
sax.clearControlErrors();
|
||||
if (!response.success) return;
|
||||
let item = sax.userAccount = response.user;
|
||||
$('.UserAccountId', $frm).val(item.id);
|
||||
$('.UserEmailAddress', $frm).val(item.emailAddress);
|
||||
$('.UserTitle', $frm).val(item.title);
|
||||
$('.UserFirstName', $frm).val(item.firstName);
|
||||
$('.UserLastName', $frm).val(item.lastName);
|
||||
$('.UserRoles', $frm).val(sax.getSelectedUserRoleDescs().join('\n'));
|
||||
$('#ifUserRoleCodes').val(item.userRoleCodes.join(sax.data.userRoleCodeDelim));
|
||||
sax.$dlg.user.dialog('option', 'title', sax.dlg.title.updateUser);
|
||||
sax.openDialog(sax.$dlg.user, 600, 600);
|
||||
}
|
||||
sax.doUpdateItem = function ()
|
||||
{
|
||||
sax.storeItem();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
sax.storeItem = function ()
|
||||
{
|
||||
sax.ajaxStoreItem = sax.ajaxStoreItem || { url: sax.url.base + 'User/Ajax/StoreItem', formId: 'frmUser', callbackFn: sax.onStoreItem };
|
||||
sax.doAjaxRequest(sax.ajaxStoreItem, 50);
|
||||
}
|
||||
sax.onStoreItem = function (response)
|
||||
{
|
||||
//sax.debug('onStoreItem', response);
|
||||
sax.refreshControlValues(response.controlValues);
|
||||
if (!response.success) return;
|
||||
sax.$dlg.user.dialog('close');
|
||||
|
||||
var item = response.user;
|
||||
var $item = $('#' + sax.itemIdPrefix + item.id);
|
||||
if (!$item.length)
|
||||
{
|
||||
var $results = $('.sax-panel-results');
|
||||
$item = $('.sax-panel-item-template .sax-panel-item.User', $results).clone();
|
||||
$('.sax-panel-item-list', $results).prepend($item).show();
|
||||
}
|
||||
sax.populateItem($item, item)
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
$(function ()
|
||||
{
|
||||
$('.sax-action.sax-item-create').on('click', function () { sax.createItem(); });
|
||||
$('.sax-action.sax-results-refresh').on('click', function () { sax.refreshResults(); });
|
||||
$('.sax-input,.sax-select').on('keydown click', function () { sax.clearControlError(this); });
|
||||
|
||||
sax.$frm.userId = $('#frmUserId');
|
||||
sax.$frm.user = $('#frmUser');
|
||||
|
||||
var opt = sax.dlgOpts();
|
||||
opt.buttons[sax.dlg.btn.ok] = function () { sax.doCreateItem(); };
|
||||
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
|
||||
sax.$dlg.user = $('#dlgUser').dialog(opt);
|
||||
|
||||
setTimeout(sax.refreshResults, 250);
|
||||
});
|
||||
|
||||
}(window, window.document));
|
||||
|
||||
/* The End */
|
||||
Reference in New Issue
Block a user