Files
Saxonite/SaxoniteCoreWebOnline/wwwroot/js/sax-home.js
T
2021-07-02 09:28:37 +01:00

165 lines
6.6 KiB
JavaScript

/*
* Home scripts.
*/
(function (win, doc, undef)
{
"use strict";
sax.itemIdPrefix = 'Act_';
//--------------------------------------------------------------
sax.refreshResults = function (delay)
{
if (sax.awaitingLogin) return;
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.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 $results = $('.sax-panel-results');
var $msgs = $('.sax-panel-messages', $results).hide().empty();
var $items = $('.sax-panel-item-list', $results).hide().empty();
var $tmpl = $('.sax-panel-item-template .sax-panel-item', $results);
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++)
{
let item = items[itemIdx];
let $item = $tmpl.clone();
sax.populateItem($item, item);
$items.append($item);
}
$items.fadeIn(50);
}
sax.populateItem = function ($item, item)
{
//sax.debug('populateItem', item);
if (!item) return;
$item.prop('id', sax.itemIdPrefix + item.itemIdx).addClass(item.itemTypeClass).toggleClass('sax-activity-reaction-' + item.reaction, !!item.reaction);
$('.ActivityCaption', $item).text(item.caption);
$('.ActivityBlurb', $item).text(item.blurb);
$('.ActivitySport', $item).text(item.sport);
$('.ActivityRegion', $item).text(item.region);
$('.ActivityPublishedOn', $item).text(item.publishedOnFmt);
$item.off('click').on('click', function () { sax.expandActivity(item, $item); })
$('.sax-panel-results .sax-panel-messages').hide().empty();
}
sax.refreshItem = function ()
{
if (!sax.activity) return;
for (let i = 1; i < 4; i++)
sax.activity.$item.toggleClass('sax-activity-reaction-' + i, sax.activity.item.reaction == i);
}
//--------------------------------------------------------------
sax.expandActivity = function (item, $item)
{
//sax.debug('expandActivity', item, $item);
let $frm = $('#frmActivityId');
$('.ActivityType', $frm).val(item.itemType);
$('.ActivityIdx', $frm).val(item.itemIdx);
sax.activity = { item: item, $item: $item };
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 = $('#dlgActivity .sax-content').empty();
let item;
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).toggle(!!item.author);
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);
$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);
}
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, 1600);
}
//--------------------------------------------------------------
let selectedClass = 'sax-selected';
sax.setActivityReactionButton = function (r)
{
sax.clearActivityReactionButton();
$('.sax-dialog-activity button.ActivityReaction' + r).addClass(selectedClass);
}
sax.clearActivityReactionButton = function (r)
{
$('.sax-dialog-activity button.ActivityReaction').removeClass(selectedClass);
}
sax.setActivityReaction = function (r)
{
//sax.debug('setActivityReaction', r);
if ($('.sax-dialog-activity button.ActivityReaction' + r).hasClass(selectedClass)) r = 0;
sax.clearActivityReactionButton();
let fn = function (response)
{
if (!response.success) return;
sax.activity.item.reaction = response.reaction;
sax.setActivityReactionButton(response.reaction);
}
let $frm = $('#frmActivityReact');
$('.ActivityType', $frm).val(sax.activity.item.itemType);
$('.ActivityIdx', $frm).val(sax.activity.item.itemIdx);
$('.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 ()
{
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(); delete sax.activity; $(this).dialog('close'); } };
opt.buttons['react1'] = { text: '1', class: "floatl ActivityReaction ActivityReaction1", click: function () { sax.setActivityReaction(1); } };
opt.buttons['react2'] = { text: '2', class: "floatl ActivityReaction ActivityReaction2", click: function () { sax.setActivityReaction(2); } };
opt.buttons['react3'] = { text: '3', class: "floatl ActivityReaction ActivityReaction3", click: function () { sax.setActivityReaction(3); } };
sax.$dlg.activity = $('#dlgActivity').dialog(opt);
setTimeout(sax.refreshResults, 250);
});
}(window, window.document));
/* The End */