193 lines
7.6 KiB
JavaScript
193 lines
7.6 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);
|
|
$('.ActivityAuthor', $item).text(item.author);
|
|
$('.ActivityCaption', $item).text(item.caption);
|
|
$('.ActivityBlurb', $item).text(item.blurb);
|
|
$('.ActivityAuthor', $item).text(item.author);
|
|
$('.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);
|
|
$('.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 */ |