Files
Saxonite/SaxoniteCoreWebOnline/wwwroot/js/sax-home.js
T
2022-12-11 15:08:41 +00:00

186 lines
7.8 KiB
JavaScript

/*
* Home scripts.
*/
(function (win, doc, undef)
{
"use strict";
//--------------------------------------------------------------
sax.refreshResults = function (delay)
{
if (sax.awaitingLogin) return;
if (!sax.awaitingRefreshResponse)
{
var $items = $('.sax-panel-item-list', sax.$pnl.results).fadeOut(200).empty();
var $msgs = $('.sax-panel-messages', sax.$pnl.results).hide().empty().append($('<div class="sax-message">' + sax.msg.dataQuerying + '</div>')).fadeIn(200);
}
sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Activity/Ajax/GetList', formId: 'frmActivityFilter', callbackFn: sax.doRefreshResults };
sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50);
sax.awaitingRefreshResponse = true;
}
sax.doRefreshResults = function (response)
{
//sax.debug('doRefreshResults', response);
delete sax.awaitingRefreshResponse;
var $msgs = $('.sax-panel-messages', sax.$pnl.results).hide().empty();
var $items = $('.sax-panel-item-list', sax.$pnl.results).hide().empty();
if (!response.success) return;
var items = response.activities;
if (!items.length)
return $msgs.append($('<div class="sax-message">' + sax.msg.dataNoneFound + '</div>')).fadeIn(500);
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
{
sax.activity = { item: items[itemIdx], $item: sax.getActivityTemplate() };
sax.populateItem(sax.activity);
$items.append(sax.activity.$item);
delete sax.activity;
}
$items.fadeIn(50);
}
sax.populateItem = function (activity)
{
//sax.debug('populateItem', activity);
let item = activity.item;
let $item = activity.$item;
if (!item) return;
$item.addClass(item.itemTypeClass);
sax.refreshItemReaction(activity);
$('.ActivityOrganisation', $item).text(item.organisation);
$('.ActivityOrganisationLogo', $item).toggle(!!item.organisationLogoUrl).find('img').prop('src', item.organisationLogoUrl);
$('.ActivityAuthor', $item).text(item.author);
$('.ActivityCaption', $item).text(item.caption);
$('.ActivityBlurb', $item).text(item.blurb);
$('.ActivityThumbnail', $item).toggle(!!item.thumbnailUrl).find('img').prop('src', item.thumbnailUrl);
$('.ActivitySport', $item).text(item.sport);
$('.ActivityRegion', $item).text(item.region);
$('.ActivityPublishedOn', $item).text(item.publishedOnFmt);
$item.on('click', '.sax-header .ActivityCaption', function () { sax.expandActivity(activity); }).on('dblclick', '.sax-content', function () { sax.expandActivity(activity); });
$('.sax-panel-messages', sax.$pnl.results).hide().empty();
}
sax.refreshItem = function (activity)
{
if (!activity) return;
sax.refreshItemReaction(activity);
}
sax.refreshItemReaction = function (activity)
{
if (!activity) return;
let $react = $('.ActivityReaction', activity.$item).empty();
for (let i = 1; i <= Math.min(5, activity.item.reaction); i++)
$react.append($('<img>').prop('src', '../img/icon/star-gold-16.png'));
}
//--------------------------------------------------------------
sax.getActivityTemplate = function ()
{
return $('.sax-panel-item-template .sax-panel-item.Activity', sax.$pnl.results).clone();
}
//--------------------------------------------------------------
sax.expandActivity = function (activity)
{
//sax.debug('expandActivity', activity);
let $frm = $('#frmActivityId');
$('.ActivityItemType', $frm).val(activity.item.itemType);
$('.ActivityItemId', $frm).val(activity.item.itemId);
sax.activity = activity;
sax.ajax.activityInfo = sax.ajax.activityInfo || { url: sax.url.base + 'Activity/Ajax/GetInfo', formId: 'frmActivityId', callbackFn: sax.showActivityDetails, noWaitIcon: true };
sax.doAjaxRequest(sax.ajax.activityInfo, 50);
}
sax.showActivityDetails = function (response)
{
//sax.debug('showActivityDetails', response);
let $act = $('.sax-content', sax.$dlg.activity).empty();
let $ar = $('.ActivityReaction', sax.$dlg.activity.parent()).hide();
let item;
let dlgH = 480;
if (item = response.article)
{
let $itm = $('.sax-panel-item-template .sax-panel-item.Article').clone();
let $segs = $('.ArticleContentSegments', $itm);
$('.ArticleHeadline', $itm).text(item.headline);
$('.ArticleSummary', $itm).text(item.summary).toggle(!!item.summary);
$('.ArticleAuthor', $itm).text(item.author);
$('.ArticleOrganisation', $itm).text(item.organisation);
$('.ArticleOrganisationLogo', $itm).toggle(!!item.organisationLogoUrl).find('img').prop('src', item.organisationLogoUrl);
$('.ArticleOrigin', $itm).toggle(!!(item.author || item.organisation));
let segs = item.content.segments;
for (let segIdx = 0; segIdx < segs.length; segIdx++)
{
let seg = segs[segIdx];
if (seg.body)
{
let $seg = $('.sax-panel-item-template .sax-panel-item.ArticleContentSegment').clone().html(seg.body.html);
$('a', $seg).prop('target', 'sax-art-lnk');
$seg.appendTo($segs);
}
if (seg.image)
{
let $seg = $('.sax-panel-item-template .sax-panel-item.ArticleContentSegmentImage').clone();
$('img', $seg).prop('src', seg.image.link);
$seg.appendTo($segs);
}
}
$act.append($itm);
$ar.show();
dlgH = 1600;
}
else if (item = response.event)
{
let $itm = $('.sax-panel-item-template .sax-panel-item.Event').clone();
$('.EventOrganisation', $itm).text(item.organisation);
$('.EventAt', $itm).text(item.eventAt);
$('.EventSummary', $itm).text(item.summary).toggle(!!item.summary);
$('.EventDetails', $itm).text(item.details).toggle(!!item.details);
$act.append($itm);
}
else if (item = response.opportunity)
{
let $itm = $('.sax-panel-item-template .sax-panel-item.Opportunity').clone();
$('.OpportunityOrganisation', $itm).text(item.organisation);
$('.OpportunityPosition', $itm).text(item.position).toggle(!!item.position);
$('.OpportunityOutline', $itm).text(item.outline).toggle(!!item.outline);
$act.append($itm);
}
else return;
sax.setActivityReactionButton(sax.activity.item.reaction);
sax.openDialog(sax.$dlg.activity, 800, dlgH);
}
//--------------------------------------------------------------
let selectedClass = 'sax-selected';
sax.setActivityReactionButton = function (r)
{
for (let i = 1; i <= 5; i++)
$('.sax-dialog-activity button.ActivityReaction' + i).toggleClass(selectedClass, i <= r);
}
sax.setActivityReaction = function (r)
{
//sax.debug('setActivityReaction', r, $('.sax-dialog-activity button.ActivityReaction' + r));
let fn = function (response)
{
if (!response.success) return;
sax.activity.item.reaction = response.reaction;
sax.setActivityReactionButton(response.reaction);
}
let $frm = $('#frmActivityReact');
$('.ActivityItemType', $frm).val(sax.activity.item.itemType);
$('.ActivityItemId', $frm).val(sax.activity.item.itemId);
$('.ActivityReaction', $frm).val(r);
sax.ajax.activityReact = sax.ajax.activityReact || { url: sax.url.base + 'Activity/Ajax/React', formId: 'frmActivityReact', callbackFn: fn, noWaitIcon: true };
sax.doAjaxRequest(sax.ajax.activityReact, 20);
}
//--------------------------------------------------------------
$(function ()
{
sax.$pnl.filter = $('.sax-panel-filter').on('input', '#ifFilterSearch', function () { sax.refreshResults(500) });
sax.$pnl.results = $('.sax-panel-results');
var opt = sax.dlgOpts();
opt.dialogClass += ' sax-dialog-activity sax-dialog-border-thin sax-dialog-rounding-none sax-dialog-titlebar-hide';
opt.buttons['close'] = { text: sax.dlg.btn.close, class: "floatr", click: function () { sax.refreshItem(sax.activity); delete sax.activity; $(this).dialog('close'); } };
for (let i = 1; i <= 5; i++)
opt.buttons['react' + i] = { text: i, class: "floatl ActivityReaction ActivityReaction" + i, click: function () { sax.setActivityReaction(i); } };
sax.$dlg.activity = $('#dlgActivity').dialog(opt);
setTimeout(sax.refreshResults, 250);
});
//--------------------------------------------------------------
}(window, window.document));
/* The End */