Add Local Time Zone
This commit is contained in:
@@ -4,13 +4,12 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>[#]lang:project_id[#]</th>
|
||||
<th>[#]lang:id_project[#]</th>
|
||||
<th>[#]lang:project[#]</th>
|
||||
<th>[#]lang:mode[#]</th>
|
||||
<th>[#]lang:code_name[#]</th>
|
||||
<th>[#]lang:start[#]</th>
|
||||
<th>[#]lang:end[#]</th>
|
||||
<th>[#]lang:time_zone[#]</th>
|
||||
<th>[#]lang:delete[#]</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -23,10 +22,10 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>[#]lang:feed_id[#]</th>
|
||||
<th>[#]lang:id_feed[#]</th>
|
||||
<th>[#]lang:ref_feed_id[#]</th>
|
||||
<th>[#]lang:spot_id[#]</th>
|
||||
<th>[#]lang:project_id[#]</th>
|
||||
<th>[#]lang:id_spot[#]</th>
|
||||
<th>[#]lang:id_project[#]</th>
|
||||
<th>[#]lang:name[#]</th>
|
||||
<th>[#]lang:status[#]</th>
|
||||
<th>[#]lang:last_update[#]</th>
|
||||
@@ -41,7 +40,7 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>[#]lang:spot_id[#]</th>
|
||||
<th>[#]lang:id_spot[#]</th>
|
||||
<th>[#]lang:ref_spot_id[#]</th>
|
||||
<th>[#]lang:name[#]</th>
|
||||
<th>[#]lang:model[#]</th>
|
||||
@@ -71,35 +70,41 @@ oSpot.onFeedback = function(sType, sMsg, asContext) {
|
||||
|
||||
function setProjects(asElemTypes) {
|
||||
var aoEvents = [{on:'change', callback:commit}, {on:'keyup', callback:waitAndCommit}];
|
||||
|
||||
var aoChangeEvent = [aoEvents[0]];
|
||||
|
||||
$.each(asElemTypes, function(sElemType, aoElems) {
|
||||
$.each(aoElems, function(iKey, oElem) {
|
||||
var sElemId = sElemType+'_'+oElem.id;
|
||||
var bNew = ($('#'+sElemId).length == 0);
|
||||
|
||||
var $Elem = (bNew?$('<tr>', {'id': sElemId}):$('#'+sElemId).empty())
|
||||
|
||||
var $Elem = (bNew?$('<tr>', {'id': sElemId}):$('#'+sElemId))
|
||||
.data('type', sElemType)
|
||||
.data('id', oElem.id)
|
||||
.append($('<td>').text(oElem.id || ''));
|
||||
|
||||
.data('id', oElem.id);
|
||||
|
||||
if(oElem.del) $Elem.remove();
|
||||
else if(!bNew) {
|
||||
$Elem.find('input').each(function(iKey, oInput){
|
||||
var $Input = $(oInput);
|
||||
if($Input.attr('name') in oElem && $Input.attr('type')!='date') $Input.val(oElem[$Input.attr('name')]);
|
||||
});
|
||||
}
|
||||
else {
|
||||
$Elem.append($('<td>').text(oElem.id || ''));
|
||||
switch(sElemType) {
|
||||
case 'project':
|
||||
$Elem
|
||||
.append($('<td>').addInput('text', 'name', oElem.name, aoEvents))
|
||||
.append($('<td>', {'class': 'mode'}).text(oElem.mode))
|
||||
.append($('<td>').addInput('text', 'codename', oElem.codename, aoEvents))
|
||||
.append($('<td>').addInput('date', 'active_from', oElem.active_from.substr(0, 10), aoEvents))
|
||||
.append($('<td>').addInput('date', 'active_to', oElem.active_to.substr(0, 10), aoEvents))
|
||||
.append($('<td>').addInput('text', 'timezone', oElem.timezone, aoEvents))
|
||||
.append($('<td>').addInput('date', 'active_from', oElem.active_from, aoChangeEvent))
|
||||
.append($('<td>').addInput('date', 'active_to', oElem.active_to, aoChangeEvent))
|
||||
.append($('<td>').addButton('close fa-lg', '', 'del_proj', del));
|
||||
break;
|
||||
case 'feed':
|
||||
$Elem
|
||||
.append($('<td>').addInput('text', 'ref_feed_id', oElem.ref_feed_id, aoEvents))
|
||||
.append($('<td>').addInput('number', 'spot_id', oElem.id_spot, aoEvents))
|
||||
.append($('<td>').addInput('number', 'project_id', oElem.id_project, aoEvents))
|
||||
.append($('<td>').addInput('number', 'id_spot', oElem.id_spot, aoEvents))
|
||||
.append($('<td>').addInput('number', 'id_project', oElem.id_project, aoEvents))
|
||||
.append($('<td>').text(oElem.name))
|
||||
.append($('<td>').text(oElem.status))
|
||||
.append($('<td>').text(oElem.last_update))
|
||||
@@ -112,8 +117,8 @@ function setProjects(asElemTypes) {
|
||||
.append($('<td>').text(oElem.model))
|
||||
break;
|
||||
}
|
||||
|
||||
if(bNew) $Elem.appendTo($('#'+sElemType+'s').find('table tbody'));
|
||||
|
||||
$Elem.appendTo($('#'+sElemType+'s').find('table tbody'));
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -126,16 +131,16 @@ function createProject() {
|
||||
function commit(event, $This) {
|
||||
$This = $This || $(this);
|
||||
if(typeof self.tmp('wait') != 'undefined') clearTimeout(self.tmp('wait'));
|
||||
|
||||
|
||||
var sOldVal = $This.data('old_value');
|
||||
var sNewVal = $This.val();
|
||||
if(sOldVal!=sNewVal) {
|
||||
$This.data('old_value', sNewVal);
|
||||
|
||||
|
||||
var $Record = $This.closest('tr');
|
||||
var asInputs = {type: $Record.data('type'), id: $Record.data('id'), field: $This.attr('name'), value: sNewVal};
|
||||
var asInputs = {type: $Record.data('type'), id: $Record.data('id'), field: $This.attr('name'), value: sNewVal};
|
||||
self.get(
|
||||
'admin_set',
|
||||
'admin_set',
|
||||
function(asData){
|
||||
oSpot.onFeedback('success', self.lang('admin_save_success'), asInputs);
|
||||
setProjects(asData);
|
||||
@@ -156,9 +161,9 @@ function waitAndCommit(event) {
|
||||
|
||||
function del() {
|
||||
var $Record = $(this).closest('tr');
|
||||
var asInputs = {type: $Record.data('type'), id: $Record.data('id')};
|
||||
var asInputs = {type: $Record.data('type'), id: $Record.data('id')};
|
||||
self.get(
|
||||
'admin_del',
|
||||
'admin_del',
|
||||
function(asData){
|
||||
oSpot.onFeedback('success', self.lang('admin_save_success'), asInputs);
|
||||
setProjects(asData);
|
||||
@@ -169,4 +174,4 @@ function del() {
|
||||
}
|
||||
);
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -204,21 +204,13 @@ function initProject(sProjectCodeName, oFocusPost){
|
||||
//Page Title
|
||||
self.setPageTitle(oSpot.vars(['project', 'name']));
|
||||
|
||||
//Timezone difference notice
|
||||
var bSameTime = (
|
||||
(new Date()).toLocaleString([], {timeZone: oSpot.consts.timezone}) ==
|
||||
(new Date()).toLocaleString([], {timeZone: oSpot.vars(['project', 'timezone'])})
|
||||
);
|
||||
self.tmp('site_tz_notice', bSameTime?'':getTimeZoneDesc(oSpot.consts.timezone));
|
||||
self.tmp('proj_tz_notice', bSameTime?'':getTimeZoneDesc(self.vars(['project', 'timezone'])));
|
||||
|
||||
//Load Track & Markers
|
||||
$.when(
|
||||
//Markers: Spot Messages & Medias
|
||||
self.get(
|
||||
'markers',
|
||||
function(){},
|
||||
{project_id: self.vars(['project', 'id'])},
|
||||
{id_project: self.vars(['project', 'id'])},
|
||||
function(e){console.log(e);}
|
||||
),
|
||||
//Project Geojson: Hike track
|
||||
@@ -230,7 +222,7 @@ function initProject(sProjectCodeName, oFocusPost){
|
||||
).done(function(aoMessages, aoTracks) {
|
||||
var asData = aoMessages[0]['data'];
|
||||
setMapLayers(asData['maps']);
|
||||
initSpotMessages(asData['messages'] || [], aoTracks[0], aoMessages[0]['desc']=='No Data');
|
||||
initSpotMessages(asData['messages'] || [], aoTracks[0], asData['empty_project']);
|
||||
updateSettingsPanel(asData['last_update']);
|
||||
});
|
||||
|
||||
@@ -268,7 +260,7 @@ function initPosts() {
|
||||
updateFeed(true);
|
||||
},
|
||||
{
|
||||
project_id: self.vars(['project', 'id']),
|
||||
id_project: self.vars(['project', 'id']),
|
||||
name: $('#name').val(),
|
||||
content: $('#post').val()
|
||||
}
|
||||
@@ -590,10 +582,10 @@ function initSpotMessages(aoMessages, aoTracks, bNoFeed) {
|
||||
.append(oMsg.formatted_time+(self.vars(['project', 'mode'])==self.consts.modes.blog?' ('+oMsg.relative_time+')':'')));
|
||||
|
||||
//Tooltip: Time Zone
|
||||
if(self.tmp('site_tz_notice')!='') {
|
||||
if(oMsg.formatted_time_local != oMsg.formatted_time) {
|
||||
$Tooltip.append($('<p>', {'class':'timezone'})
|
||||
.addIcon('fa-timezone fa-fw fa-lg')
|
||||
.append(self.tmp('site_tz_notice')));
|
||||
.append(oSpot.lang('local_time', oMsg.formatted_time_local)));
|
||||
}
|
||||
|
||||
//Tooltip: Medias
|
||||
@@ -743,8 +735,8 @@ function updateFeed(bFirstChunk, bDiscrete, fCallback) {
|
||||
|
||||
self.tmp('updatable', true);
|
||||
}, {
|
||||
'project_id': self.vars(['project', 'id']),
|
||||
'chunk': self.tmp('news_chunk')
|
||||
id_project: self.vars(['project', 'id']),
|
||||
chunk: self.tmp('news_chunk')
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -789,6 +781,8 @@ function getPost(asPost) {
|
||||
|
||||
var sRelTime = (asPost.relative_time!='')?((self.vars('project') && self.vars(['project', 'mode'])==self.consts.modes.histo)?asPost.formatted_time.substr(0, 10):asPost.relative_time):'';
|
||||
var sAbsTime = asPost.formatted_time;
|
||||
var sAbsTimeLocal = asPost.formatted_time_local;
|
||||
var bTimeDiff = (sAbsTime && sAbsTimeLocal != sAbsTime);
|
||||
var sType = asPost.subtype || asPost.type;
|
||||
var $Body = {};
|
||||
|
||||
@@ -800,7 +794,7 @@ function getPost(asPost) {
|
||||
.data('clicked', false)
|
||||
.append($('<p>').addIcon('fa-coords', true).append(getGoogleMapsLink(asPost)))
|
||||
.append($('<p>').addIcon('fa-time', true).append(sAbsTime))
|
||||
.append((self.tmp('site_tz_notice')!='')?$('<p>').addIcon('fa-timezone', true).append(self.tmp('site_tz_notice')):'')
|
||||
.append(bTimeDiff?$('<p>').addIcon('fa-timezone', true).append(oSpot.lang('local_time', sAbsTimeLocal)):'')
|
||||
.append($('<a>', {'class':'drill'})
|
||||
.append($('<img>', {'class':'staticmap', title: oSpot.lang('click_zoom'), src: getWmtsApiUrl('static', asPost.latitude, asPost.longitude, 13)}))
|
||||
.append($('<span>', {'class': 'drill-icon fa-stack'})
|
||||
@@ -868,7 +862,7 @@ function getPost(asPost) {
|
||||
.addIcon('fa-'+sType)
|
||||
.append(asPost.displayed_id?' '+oSpot.lang('counter', asPost.displayed_id):'')
|
||||
)
|
||||
.append($('<span>', {'class':'time'}).hoverSwap(sRelTime, sAbsTime+((self.tmp('site_tz_notice')!='')?' ('+self.tmp('site_tz_notice')+')':''))))
|
||||
.append($('<span>', {'class':'time', title:bTimeDiff?oSpot.lang('local_time', sAbsTimeLocal):''}).hoverSwap(sRelTime, bTimeDiff?oSpot.lang('your_time', sAbsTime):sAbsTime)))
|
||||
.append($('<div>', {'class':'body'}).append($Body));
|
||||
|
||||
if(bLink) {
|
||||
@@ -894,22 +888,19 @@ function getWmtsApiUrl(sMapId, iLat, iLng, iZoom) {
|
||||
}
|
||||
|
||||
function getMediaLink(asData, sType) {
|
||||
var bTimeDiff = (asData.posted_on_formatted && asData.posted_on_formatted_local != asData.posted_on_formatted);
|
||||
|
||||
var $PostedOn =
|
||||
$('<span>', {'class': 'lb-caption-line', title: oSpot.lang(asData.subtype)+' '+oSpot.lang('add_on', asData.posted_on_formatted)})
|
||||
$('<span>', {'class': 'lb-caption-line', title: bTimeDiff?oSpot.lang('local_time', asData.posted_on_formatted_local):''})
|
||||
.addIcon('fa-upload fa-lg fa-fw', true)
|
||||
.append(asData.posted_on_formatted);
|
||||
|
||||
var $TakenOn = (asData.taken_on == '0000-00-00 00:00:00')?'':
|
||||
$('<span>', {'class': 'lb-caption-line', title: oSpot.lang(asData.subtype)+' '+oSpot.lang(asData.subtype+'_taken', asData.taken_on_formatted)})
|
||||
$('<span>', {'class': 'lb-caption-line', title: bTimeDiff?oSpot.lang('local_time', asData.taken_on_formatted_local):''})
|
||||
.addIcon('fa-'+asData.subtype+'-shot fa-lg fa-fw', true)
|
||||
.append(asData.taken_on_formatted);
|
||||
|
||||
var $Timezone = (self.tmp('site_tz_notice') == '')?'':
|
||||
$('<span>', {'class': 'lb-caption-line'})
|
||||
.addIcon('fa-timezone fa-lg fa-fw', true)
|
||||
.append(self.tmp('site_tz_notice'));
|
||||
|
||||
var $Title = $('<div>').append(sType=='marker'?$TakenOn:$PostedOn).append(sType=='marker'?$PostedOn:$TakenOn).append($Timezone);
|
||||
var $Title = $('<div>').append(sType=='marker'?$TakenOn:$PostedOn).append(sType=='marker'?$PostedOn:$TakenOn);
|
||||
var $Link =
|
||||
$('<a>', {
|
||||
'class': 'drill',
|
||||
|
||||
@@ -16,14 +16,15 @@ oSpot.pageInit = function(asHash) {
|
||||
.attr('data-url', self.getActionLink('upload'))
|
||||
.fileupload({
|
||||
dataType: 'json',
|
||||
formData: {t: self.consts.timezone},
|
||||
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|mov)$/i,
|
||||
done: function (e, asData) {
|
||||
$.each(asData.result.files, function(iKey, oFile) {
|
||||
var bError = ('error' in oFile);
|
||||
|
||||
|
||||
//Feedback
|
||||
addStatus(bError?oFile.error:(self.lang('upload_success', [oFile.name])));
|
||||
|
||||
|
||||
//Comments
|
||||
if(!bError) addCommentBox(oFile.id, oFile.thumbnail);
|
||||
});
|
||||
@@ -62,7 +63,7 @@ function addCommentBox(iMediaId, sThumbnailPath) {
|
||||
function addStatus(sMsg, bClear) {
|
||||
bClear = bClear || false;
|
||||
if(bClear) self.tmp('status-box').empty();
|
||||
|
||||
|
||||
self.tmp('status-box').append($('<p>').text(sMsg));
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user