Files
Saxonite/Workspace/SaxoniteCoreWebOnline/wwwroot/js/sax-spt-exp.js
T
andy 9f22b522df v1.3.0 Restructure Saxonite workspace and upgrade to .NET 10 (#1)
Move Saxonite’s projects into a dedicated `Workspace` folder and align the solution with .NET 10 and the current Common workspace. Update encryption integration, test project structure and coverage, and repository guidance and upgrade notes.

- Relocate application and library projects while retaining Git rename history.
- Split tests into Admin, Online, and Shared projects; add representative behavioral and serialization tests.
- Update Common integration, application version, and repository documentation.

Application version: 1.3.0

Reviewed-on: #1
Co-authored-by: andy <andy@sarand.com>
2026-10-16 18:24:16 +01:00

156 lines
7.3 KiB
JavaScript

/*
* Sport Experience scripts.
*/
(function (win, doc, undef)
{
//--------------------------------------------------------------
"use strict";
let se = sax.sportExperience = { fn: {}, ajax: {}, data: {}, $pnl: {}, $frm: {}, $dlg: {} };
//--------------------------------------------------------------
sax.showSportExperience = function (usrSpt)
{
//sax.debug('showSportExperience', usrSpt);
$('.sax-header .SportName', se.$pnl.sportExp).text(usrSpt.sportName);
$('.sax-panel-section').slideUp(750, function () { se.$pnl.sportExp.slideDown(750); });
se.$dlg.sportExp.dialog('option', { 'title': sax.lbl.sportExperience + ' - ' + usrSpt.sportName });
let frm = $('#frmProfileSportId');
$('.UserSportId', frm).val(usrSpt.id);
$('.UserSportId', se.$frm.sportExp).val(usrSpt.id);
se.fn.refreshResults();
}
se.fn.refreshResults = function ()
{
let frm = $('#frmProfileSportId');
se.ajax.sportExperiences = se.ajax.sportExperiences || { url: sax.url.base + 'UserSport/Ajax/GetExperienceList', formId: frm.prop('id'), callbackFn: se.fn.handleSportExperiencesResponse };
sax.doAjaxRequest(se.ajax.sportExperiences, 50);
}
se.fn.handleSportExperiencesResponse = function (response)
{
//sax.debug('handleSportExperiencesResponse', response);
if (!response.success) return;
let sport = response.sport;
$('.sax-form-control.ExperienceSpeciality', se.$dlg.sportExp).toggle(!sport.speciality.notRelevant);
$('.sax-form-control.ExperienceSpeciality .sax-label-text', se.$dlg.sportExp).text(sport.speciality.label || sax.lbl.speciality);
let $results = se.$pnl.results;
let $msgs = $('.sax-panel-messages', $results).empty();
let $list = $('.sax-panel-item-list', $results).hide().empty();
let items = response.experiences;
se.idx = 0;
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
{
let item = items[itemIdx];
item.idx = ++se.idx;
let $item = se.fn.getItemTemplate();
$('.ExperiencePeriod', $item).text(item.period);
$('.ExperienceSummary', $item).text(item.summary);
$('.ExperienceTeam', $item).text(item.team);
$('.ExperienceLeague', $item).text(item.league);
$('.ExperienceSpeciality', $item).text(item.speciality);
let $mnu = $('.sax-burger .sax-dropdown-menu', $item).empty();
$mnu.append(se.fn.getMenuOption(se.fn.getItemActionTemplate(), sax.lbl.edit, function () { se.fn.updateSportExperience(item, $item); }, 'sax-edit'));
$('.sax-header .sax-caption', $item).on('click', function () { se.fn.updateSportExperience(item, $item); });
$('.sax-content', $item).on('dblclick', function () { se.fn.updateSportExperience(item, $item); });
$list.append($item);
}
$list.show();
}
//--------------------------------------------------------------
se.fn.getItemActionTemplate = function ()
{
return $('.sax-panel-item-template ul.sax-dropdown-menu.SportExperience li', se.$pnl.results).clone();
}
se.fn.getItemTemplate = function (idx)
{
return $('.sax-panel-item-template .sax-panel-item.SportExperience', se.$pnl.results).clone();
}
se.fn.getMenuOption = function ($opt, lbl, fn, cls)
{
return $opt.find('div.sax-label').text(lbl).end().on('click', fn).addClass(cls);
}
//--------------------------------------------------------------
sax.addSportExperience = function ()
{
//sax.debug('addSportExperience')
se.fn.clearSportExperience();
sax.openDialog(se.$dlg.sportExp, 560, 600);
}
se.fn.clearSportExperience = function ()
{
let frm = se.$frm.sportExp;
$('.sax-input,.sax-textarea,.sax-select,.UserSportExperienceId,.UserSportExperienceExists', frm).val('').prop('autofocus', null);
sax.clearControlErrors(frm);
}
se.fn.updateSportExperience = function (item, $item)
{
//sax.debug('updateSportExperience', item);
let frm = se.$frm.sportExpId;
$('.UserSportExperienceId', se.$frm.sportExpId).val(item.id);
se.ajax.sportExp = se.ajax.sportExp || { url: sax.url.base + 'UserSport/Ajax/GetExperience', formId: frm.prop('id'), callbackFn: se.fn.doUpdateSportExperience };
sax.doAjaxRequest(se.ajax.sportExp, 50);
}
se.fn.doUpdateSportExperience = function (response)
{
//sax.debug('doUpdateSportExperience', response);
if (!response.success) return;
let item = response.experience;
let frm = se.$frm.sportExp;
se.fn.clearSportExperience();
$('input.UserSportExperienceId', frm).val(item.id);
$('input.UserSportExperienceExists', frm).val(1);
//sax.debug(Date.parse(item.periodFrom_YMD));
$('.sax-input.ExperiencePeriodFrom', frm).datepicker('setDate', new Date(item.periodFrom_YMD));
$('.sax-input.ExperiencePeriodTo', frm).datepicker('setDate', item.periodTo_YMD ? new Date(item.periodTo_YMD) : null);
$('.sax-textarea.ExperienceSummary', frm).val(item.summary).prop('autofocus', true);
$('.sax-input.ExperienceOrganisationName', frm).val(item.organisationName);
$('.sax-input.ExperienceTeam', frm).val(item.team);
$('.sax-input.ExperienceLeague', frm).val(item.league);
$('.sax-input.ExperienceSpeciality', frm).val(item.speciality);
$('.sax-textarea.ExperienceAwards', frm).val(item.awards);
sax.openDialog(se.$dlg.sportExp, 560, 600);
}
//--------------------------------------------------------------
se.fn.storeSportExperience = function ()
{
//sax.debug('storeSportExperience');
let frm = se.$frm.sportExp;
se.ajax.storeSportExp = se.ajax.storeSportExp || { url: sax.url.base + 'UserSport/Ajax/StoreExperience', formId: frm.prop('id'), callbackFn: se.fn.onStoreSportExperience };
sax.doAjaxRequest(se.ajax.storeSportExp, 50);
}
se.fn.onStoreSportExperience = function (response)
{
//sax.debug('onStoreSportExperience', response);
sax.refreshControlValues(response.controlValues, se.$dlg.sprExp);
if (!response.success) return;
se.$dlg.sportExp.dialog('close');
se.fn.refreshResults();
}
sax.closeProfileSportExperience = function ()
{
se.$pnl.sportExp.slideUp(750, function () { $('.sax-panel-section').slideDown(750); });
sax.refreshProfileSportsInfo(50);
}
//--------------------------------------------------------------
$(function ()
{
se.$pnl.sportExp = $('.sax-panel.ProfileSportExperience');
se.$pnl.hdr = $('.sax-header', se.$pnl.sportExp);
se.$pnl.results = $('.sax-panel-results.ProfileSportExperiences', se.$pnl.sportExp);
se.$frm.sportExpId = $('#frmSportExperienceId');
var opt = sax.dlgOpts();
opt.buttons[sax.dlg.btn.ok] = function () { se.fn.storeSportExperience(); };
opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); };
se.$dlg.sportExp = $('#dlgSportExperience').dialog(opt);
se.$frm.sportExp = $('#frmSportExperience', se.$dlg.sportExp);
$('input,textarea', se.$frm.sportExp).on('input', function () { sax.clearControlError(this); }).on('change', function () { sax.clearControlError(this); });
$('select', se.$frm.sportExp).on('change', function () { sax.clearControlError(this); });
sax.initCalendars('#frmSportExperience .sax-calendar', { changeMonth: true, changeYear: true, yearRange: '-99:+00' });
se.$dpPeriodFrom = $('.sax-calendar.ExperiencePeriodFrom', se.$frm.sportExp);
se.$dpPeriodTo = $('.sax-calendar.ExperiencePeriodTo', se.$frm.sportExp);
se.$dpPeriodFrom.datepicker({ onSelect: function () { $(this).trigger('change'); } });
sax.allowClearCalendar('#frmSportExperience .sax-calendar.ExperiencePeriodTo');
});
//--------------------------------------------------------------
}(window, window.document));
/* The End */