@@ -1,5 +1,8 @@
|
||||
; Global Framework Config
|
||||
|
||||
[SERVER]
|
||||
SERVER_NAME = PATHFINDER
|
||||
|
||||
[globals]
|
||||
; Default Verbosity level of the stack trace.
|
||||
; Assign values between 0 to 3 for increasing verbosity levels. Check (environment.ini) config for overwriting
|
||||
|
||||
18
app/cron.ini
18
app/cron.ini
@@ -5,20 +5,26 @@ web = TRUE
|
||||
|
||||
[CRON.presets]
|
||||
; run every minute
|
||||
instant = * * * * *
|
||||
instant = * * * * *
|
||||
|
||||
; run on EVE downtime 11:00 GMT/UTC
|
||||
downtime = 0 11 * * *
|
||||
; 12 times per hour (each 5min)
|
||||
fiveMinutes = */5 * * * *
|
||||
|
||||
; 6 times per hour (each 10min)
|
||||
sixthHour = */10 * * * *
|
||||
tenMinutes = */10 * * * *
|
||||
|
||||
; 2 times per hour (each 30min)
|
||||
halfHour = */30 * * * *
|
||||
halfHour = */30 * * * *
|
||||
|
||||
; run on EVE downtime 11:00 GMT/UTC
|
||||
downtime = 0 11 * * *
|
||||
|
||||
[CRON.jobs]
|
||||
; delete expired connections (e.g. EOL)
|
||||
deleteConnections = Cron\MapUpdate->deleteConnections, @fiveMinutes
|
||||
|
||||
; delete character log data
|
||||
deleteLogData = Cron\CharacterUpdate->deleteLogData, @sixthHour
|
||||
deleteLogData = Cron\CharacterUpdate->deleteLogData, @tenMinutes
|
||||
|
||||
; delete expired signatures
|
||||
deleteSignatures = Cron\MapUpdate->deleteSignatures, @halfHour
|
||||
|
||||
@@ -1074,11 +1074,16 @@ class Cortex extends Cursor {
|
||||
if ($this->emit('beforeerase')===false)
|
||||
return false;
|
||||
if ($this->fieldConf) {
|
||||
foreach($this->fieldConf as $field => $conf)
|
||||
if (isset($conf['has-many']) &&
|
||||
$conf['has-many']['hasRel']=='has-many')
|
||||
$this->set($field,null);
|
||||
$this->save();
|
||||
$changed = false;
|
||||
foreach($this->fieldConf as $field => $conf){
|
||||
if (isset($conf['has-many']) && $conf['has-many']['hasRel']=='has-many'){
|
||||
$this->set($field,null);
|
||||
$changed = true;
|
||||
}
|
||||
}
|
||||
if($changed){
|
||||
$this->save();
|
||||
}
|
||||
}
|
||||
$this->mapper->erase();
|
||||
$this->emit('aftererase');
|
||||
|
||||
@@ -168,20 +168,27 @@ class Map extends Controller\AccessController {
|
||||
|
||||
// get max number of shared entities per map ------------------------------------------------------------------
|
||||
$maxSharedCount = [
|
||||
'character' => $f3->get('PATHFINDER.MAP.PRIVATE.MAX_SHARED'),
|
||||
'corporation' => $f3->get('PATHFINDER.MAP.CORPORATION.MAX_SHARED'),
|
||||
'alliance' => $f3->get('PATHFINDER.MAP.ALLIANCE.MAX_SHARED'),
|
||||
'character' => $f3->get('PATHFINDER.MAP.PRIVATE.MAX_SHARED'),
|
||||
'corporation' => $f3->get('PATHFINDER.MAP.CORPORATION.MAX_SHARED'),
|
||||
'alliance' => $f3->get('PATHFINDER.MAP.ALLIANCE.MAX_SHARED'),
|
||||
];
|
||||
$return->maxSharedCount = $maxSharedCount;
|
||||
|
||||
// get activity log options per map ---------------------------------------------------------------------------
|
||||
$activityLogging = [
|
||||
'character' => $f3->get('PATHFINDER.MAP.PRIVATE.ACTIVITY_LOGGING'),
|
||||
'corporation' => $f3->get('PATHFINDER.MAP.CORPORATION.ACTIVITY_LOGGING'),
|
||||
'alliance' => $f3->get('PATHFINDER.MAP.ALLIANCE.ACTIVITY_LOGGING'),
|
||||
'character' => $f3->get('PATHFINDER.MAP.PRIVATE.ACTIVITY_LOGGING'),
|
||||
'corporation' => $f3->get('PATHFINDER.MAP.CORPORATION.ACTIVITY_LOGGING'),
|
||||
'alliance' => $f3->get('PATHFINDER.MAP.ALLIANCE.ACTIVITY_LOGGING'),
|
||||
];
|
||||
$return->activityLogging = $activityLogging;
|
||||
|
||||
// route search config ----------------------------------------------------------------------------------------
|
||||
$return->routeSearch = [
|
||||
'defaultCount' => $this->getF3()->get('PATHFINDER.ROUTE.SEARCH_DEFAULT_COUNT'),
|
||||
'maxDefaultCount' => $this->getF3()->get('PATHFINDER.ROUTE.MAX_Default_COUNT'),
|
||||
'limit' => $this->getF3()->get('PATHFINDER.ROUTE.LIMIT'),
|
||||
];
|
||||
|
||||
// get program routes -----------------------------------------------------------------------------------------
|
||||
$return->routes = [
|
||||
'ssoLogin' => $this->getF3()->alias( 'sso', ['action' => 'requestAuthorization'] )
|
||||
@@ -374,28 +381,34 @@ class Map extends Controller\AccessController {
|
||||
|
||||
// share map between characters -> set access
|
||||
if(isset($formData['mapCharacters'])){
|
||||
// remove character corporation (re-add later)
|
||||
$accessCharacters = array_diff($formData['mapCharacters'], [$activeCharacter->_id]);
|
||||
|
||||
// avoid abuse -> respect share limits
|
||||
$accessCharacters = array_slice( $formData['mapCharacters'], 0, $f3->get('PATHFINDER.MAP.PRIVATE.MAX_SHARED') );
|
||||
$maxShared = max($f3->get('PATHFINDER.MAP.PRIVATE.MAX_SHARED') - 1, 0);
|
||||
$accessCharacters = array_slice($accessCharacters, 0, $maxShared);
|
||||
|
||||
// clear map access. In case something has removed from access list
|
||||
$map->clearAccess();
|
||||
if($accessCharacters){
|
||||
// clear map access. In case something has removed from access list
|
||||
$map->clearAccess();
|
||||
|
||||
/**
|
||||
* @var $tempCharacter Model\CharacterModel
|
||||
*/
|
||||
$tempCharacter = Model\BasicModel::getNew('CharacterModel');
|
||||
/**
|
||||
* @var $tempCharacter Model\CharacterModel
|
||||
*/
|
||||
$tempCharacter = Model\BasicModel::getNew('CharacterModel');
|
||||
|
||||
foreach($accessCharacters as $characterId){
|
||||
$tempCharacter->getById( (int)$characterId );
|
||||
foreach($accessCharacters as $characterId){
|
||||
$tempCharacter->getById( (int)$characterId );
|
||||
|
||||
if(
|
||||
!$tempCharacter->dry() &&
|
||||
$tempCharacter->shared == 1 // check if map shared is enabled
|
||||
){
|
||||
$map->setAccess($tempCharacter);
|
||||
if(
|
||||
!$tempCharacter->dry() &&
|
||||
$tempCharacter->shared == 1 // check if map shared is enabled
|
||||
){
|
||||
$map->setAccess($tempCharacter);
|
||||
}
|
||||
|
||||
$tempCharacter->reset();
|
||||
}
|
||||
|
||||
$tempCharacter->reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -411,28 +424,34 @@ class Map extends Controller\AccessController {
|
||||
|
||||
// share map between corporations -> set access
|
||||
if(isset($formData['mapCorporations'])){
|
||||
// remove character corporation (re-add later)
|
||||
$accessCorporations = array_diff($formData['mapCorporations'], [$corporation->_id]);
|
||||
|
||||
// avoid abuse -> respect share limits
|
||||
$accessCorporations = array_slice( $formData['mapCorporations'], 0, $f3->get('PATHFINDER.MAP.CORPORATION.MAX_SHARED') );
|
||||
$maxShared = max($f3->get('PATHFINDER.MAP.CORPORATION.MAX_SHARED') - 1, 0);
|
||||
$accessCorporations = array_slice($accessCorporations, 0, $maxShared);
|
||||
|
||||
// clear map access. In case something has removed from access list
|
||||
$map->clearAccess();
|
||||
if($accessCorporations){
|
||||
// clear map access. In case something has removed from access list
|
||||
$map->clearAccess();
|
||||
|
||||
/**
|
||||
* @var $tempCorporation Model\CorporationModel
|
||||
*/
|
||||
$tempCorporation = Model\BasicModel::getNew('CorporationModel');
|
||||
/**
|
||||
* @var $tempCorporation Model\CorporationModel
|
||||
*/
|
||||
$tempCorporation = Model\BasicModel::getNew('CorporationModel');
|
||||
|
||||
foreach($accessCorporations as $corporationId){
|
||||
$tempCorporation->getById( (int)$corporationId );
|
||||
foreach($accessCorporations as $corporationId){
|
||||
$tempCorporation->getById( (int)$corporationId );
|
||||
|
||||
if(
|
||||
!$tempCorporation->dry() &&
|
||||
$tempCorporation->shared == 1 // check if map shared is enabled
|
||||
){
|
||||
$map->setAccess($tempCorporation);
|
||||
if(
|
||||
!$tempCorporation->dry() &&
|
||||
$tempCorporation->shared == 1 // check if map shared is enabled
|
||||
){
|
||||
$map->setAccess($tempCorporation);
|
||||
}
|
||||
|
||||
$tempCorporation->reset();
|
||||
}
|
||||
|
||||
$tempCorporation->reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -448,30 +467,35 @@ class Map extends Controller\AccessController {
|
||||
|
||||
// share map between alliances -> set access
|
||||
if(isset($formData['mapAlliances'])){
|
||||
// remove character alliance (re-add later)
|
||||
$accessAlliances = array_diff($formData['mapAlliances'], [$alliance->_id]);
|
||||
|
||||
// avoid abuse -> respect share limits
|
||||
$accessAlliances = array_slice( $formData['mapAlliances'], 0, $f3->get('PATHFINDER.MAP.ALLIANCE.MAX_SHARED') );
|
||||
$maxShared = max($f3->get('PATHFINDER.MAP.ALLIANCE.MAX_SHARED') - 1, 0);
|
||||
$accessAlliances = array_slice($accessAlliances, 0, $maxShared);
|
||||
|
||||
// clear map access. In case something has removed from access list
|
||||
$map->clearAccess();
|
||||
if($accessAlliances){
|
||||
// clear map access. In case something has removed from access list
|
||||
$map->clearAccess();
|
||||
|
||||
/**
|
||||
* @var $tempAlliance Model\AllianceModel
|
||||
*/
|
||||
$tempAlliance = Model\BasicModel::getNew('AllianceModel');
|
||||
/**
|
||||
* @var $tempAlliance Model\AllianceModel
|
||||
*/
|
||||
$tempAlliance = Model\BasicModel::getNew('AllianceModel');
|
||||
|
||||
foreach($accessAlliances as $allianceId){
|
||||
$tempAlliance->getById( (int)$allianceId );
|
||||
foreach($accessAlliances as $allianceId){
|
||||
$tempAlliance->getById( (int)$allianceId );
|
||||
|
||||
if(
|
||||
!$tempAlliance->dry() &&
|
||||
$tempAlliance->shared == 1 // check if map shared is enabled
|
||||
){
|
||||
$map->setAccess($tempAlliance);
|
||||
if(
|
||||
!$tempAlliance->dry() &&
|
||||
$tempAlliance->shared == 1 // check if map shared is enabled
|
||||
){
|
||||
$map->setAccess($tempAlliance);
|
||||
}
|
||||
|
||||
$tempAlliance->reset();
|
||||
}
|
||||
|
||||
$tempAlliance->reset();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// the alliance of the current user should always have access
|
||||
|
||||
@@ -491,6 +491,9 @@ class Route extends Controller\AccessController {
|
||||
*/
|
||||
$map = Model\BasicModel::getNew('MapModel');
|
||||
|
||||
// limit max search routes to max limit
|
||||
array_splice($routesData, $f3->get('PATHFINDER.ROUTE.LIMIT'));
|
||||
|
||||
foreach($routesData as $key => $routeData){
|
||||
// mapIds are optional. If mapIds is empty or not set
|
||||
// route search is limited to CCPs static data
|
||||
@@ -537,6 +540,7 @@ class Route extends Controller\AccessController {
|
||||
$returnRoutData = [
|
||||
'systemFromData' => $routeData['systemFromData'],
|
||||
'systemToData' => $routeData['systemToData'],
|
||||
'skipSearch' => (bool) $routeData['skipSearch'],
|
||||
'maps' => $mapData,
|
||||
'mapIds' => $mapIds
|
||||
];
|
||||
@@ -544,7 +548,10 @@ class Route extends Controller\AccessController {
|
||||
// add filter options for each route as well
|
||||
$returnRoutData += $filterData;
|
||||
|
||||
if(count($mapIds) > 0){
|
||||
if(
|
||||
!$returnRoutData['skipSearch'] &&
|
||||
count($mapIds) > 0
|
||||
){
|
||||
$systemFrom = $routeData['systemFromData']['name'];
|
||||
$systemTo = $routeData['systemToData']['name'];
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ class Signature extends Controller\AccessController {
|
||||
// this key should not be saved (it is an obj)
|
||||
unset($data['updated']);
|
||||
|
||||
$system->getById( (int)$data['systemId']);
|
||||
$system->getById( (int)$data['systemId'], 0);
|
||||
|
||||
if( !$system->dry() ){
|
||||
// update/save signature
|
||||
|
||||
@@ -264,21 +264,9 @@ class User extends Controller\Controller{
|
||||
|
||||
// sharing config -------------------------------------------------------------
|
||||
if(isset($formData['share'])){
|
||||
$privateSharing = 0;
|
||||
$corporationSharing = 0;
|
||||
$allianceSharing = 0;
|
||||
|
||||
if(isset($formData['privateSharing'])){
|
||||
$privateSharing = 1;
|
||||
}
|
||||
|
||||
if(isset($formData['corporationSharing'])){
|
||||
$corporationSharing = 1;
|
||||
}
|
||||
|
||||
if(isset($formData['allianceSharing'])){
|
||||
$allianceSharing = 1;
|
||||
}
|
||||
$privateSharing = (int)$formData['privateSharing'];
|
||||
$corporationSharing = (int)$formData['corporationSharing'];
|
||||
$allianceSharing = (int)$formData['allianceSharing'];
|
||||
|
||||
// update private/corp/ally
|
||||
$corporation = $activeCharacter->getCorporation();
|
||||
@@ -298,6 +286,13 @@ class User extends Controller\Controller{
|
||||
$activeCharacter->save();
|
||||
}
|
||||
|
||||
// character config -----------------------------------------------------------
|
||||
if(isset($formData['character'])){
|
||||
$activeCharacter->logLocation = (int)$formData['logLocation'];
|
||||
|
||||
$activeCharacter->save();
|
||||
}
|
||||
|
||||
// get fresh updated user object
|
||||
$newUserData = $user->getData();
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
namespace cron;
|
||||
use DB;
|
||||
use Model;
|
||||
|
||||
class MapUpdate {
|
||||
|
||||
@@ -62,6 +63,48 @@ class MapUpdate {
|
||||
$log->write( sprintf(self::LOG_TEXT_MAPS, __FUNCTION__, $deletedMapsCount) );
|
||||
}
|
||||
|
||||
/**
|
||||
* delete expired connections (EOL connections)
|
||||
* >> php index.php "/cron/deleteConnections"
|
||||
* @param \Base $f3
|
||||
*/
|
||||
function deleteConnections(\Base $f3){
|
||||
$eolExpire = (int)$f3->get('PATHFINDER.CACHE.EXPIRE_CONNECTIONS_EOL');
|
||||
|
||||
if($eolExpire > 0){
|
||||
$pfDB = DB\Database::instance()->getDB('PF');
|
||||
|
||||
$sql = "SELECT
|
||||
`con`.`id`
|
||||
FROM
|
||||
`connection` `con` INNER JOIN
|
||||
`map` ON
|
||||
`map`.`id` = `con`.`mapId`
|
||||
WHERE
|
||||
`map`.`deleteExpiredConnections` = :deleteExpiredConnections AND
|
||||
TIMESTAMPDIFF(SECOND, `con`.`eolUpdated`, NOW() ) > :expire_time
|
||||
";
|
||||
|
||||
$connectionsData = $pfDB->exec($sql, [
|
||||
'deleteExpiredConnections' => 1,
|
||||
'expire_time' => $eolExpire
|
||||
]);
|
||||
|
||||
if($connectionsData){
|
||||
/**
|
||||
* @var $connection Model\ConnectionModel
|
||||
*/
|
||||
$connection = Model\BasicModel::getNew('ConnectionModel');
|
||||
foreach($connectionsData as $data){
|
||||
$connection->getById( (int)$data['id'] );
|
||||
if( !$connection->dry() ){
|
||||
$connection->erase();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* delete all expired signatures on "inactive" systems
|
||||
* >> php index.php "/cron/deleteSignatures"
|
||||
@@ -84,7 +127,6 @@ class MapUpdate {
|
||||
|
||||
$pfDB->exec($sqlDeleteExpiredSignatures, ['lifetime' => $signatureExpire]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -49,9 +49,7 @@ class AllianceMapModel extends BasicModel {
|
||||
* see parent
|
||||
*/
|
||||
public function clearCacheData(){
|
||||
parent::clearCacheData();
|
||||
|
||||
// clear map cache as well
|
||||
// clear map cache
|
||||
$this->mapId->clearCacheData();
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ class AllianceModel extends BasicModel {
|
||||
|
||||
/**
|
||||
* get all alliance data
|
||||
* @return array
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function getData(){
|
||||
$allianceData = (object) [];
|
||||
|
||||
@@ -92,6 +92,11 @@ abstract class BasicModel extends \DB\Cortex {
|
||||
*/
|
||||
protected $fieldChanges = [];
|
||||
|
||||
/**
|
||||
* default TTL for getData(); cache
|
||||
*/
|
||||
const DEFAULT_CACHE_TTL = 120;
|
||||
|
||||
public function __construct($db = NULL, $table = NULL, $fluid = NULL, $ttl = 0){
|
||||
|
||||
$this->addStaticFieldConfig();
|
||||
@@ -105,7 +110,6 @@ abstract class BasicModel extends \DB\Cortex {
|
||||
|
||||
$this->afterinsert(function($self, $pkeys){
|
||||
$self->afterInsertEvent($self, $pkeys);
|
||||
$self->clearCacheData();
|
||||
});
|
||||
|
||||
// update events ------------------------------------------------------------------------------------
|
||||
@@ -115,7 +119,6 @@ abstract class BasicModel extends \DB\Cortex {
|
||||
|
||||
$this->afterupdate( function($self, $pkeys){
|
||||
$self->afterUpdateEvent($self, $pkeys);
|
||||
$self->clearCacheData();
|
||||
});
|
||||
|
||||
// erase events -------------------------------------------------------------------------------------
|
||||
@@ -318,6 +321,14 @@ abstract class BasicModel extends \DB\Cortex {
|
||||
return $valid;
|
||||
}
|
||||
|
||||
/**
|
||||
* get key for for all objects in this table
|
||||
* @return string
|
||||
*/
|
||||
private function getTableCacheKey(){
|
||||
return $this->dataCacheKeyPrefix .'.' . strtoupper($this->table);
|
||||
}
|
||||
|
||||
/**
|
||||
* get the cache key for this model
|
||||
* ->do not set a key if the model is not saved!
|
||||
@@ -329,14 +340,12 @@ abstract class BasicModel extends \DB\Cortex {
|
||||
|
||||
// set a model unique cache key if the model is saved
|
||||
if( $this->id > 0){
|
||||
$cacheKey = $this->getTableCacheKey();
|
||||
|
||||
// check if there is a given key prefix
|
||||
// -> if not, use the standard key.
|
||||
// this is useful for caching multiple data sets according to one row entry
|
||||
|
||||
$cacheKey = $this->dataCacheKeyPrefix;
|
||||
$cacheKey .= '.' . strtoupper($this->table);
|
||||
|
||||
if($dataCacheTableKeyPrefix){
|
||||
if( !empty($dataCacheTableKeyPrefix) ){
|
||||
$cacheKey .= '.' . $dataCacheTableKeyPrefix . '_';
|
||||
}else{
|
||||
$cacheKey .= '.ID_';
|
||||
@@ -353,13 +362,14 @@ abstract class BasicModel extends \DB\Cortex {
|
||||
* @return \stdClass|null
|
||||
*/
|
||||
protected function getCacheData($dataCacheKeyPrefix = ''){
|
||||
|
||||
$cacheKey = $this->getCacheKey($dataCacheKeyPrefix);
|
||||
$cacheData = null;
|
||||
|
||||
// table cache exists
|
||||
// -> check cache for this row data
|
||||
$cacheKey = $this->getCacheKey($dataCacheKeyPrefix);
|
||||
|
||||
if( !is_null($cacheKey) ){
|
||||
$f3 = self::getF3();
|
||||
|
||||
if( $f3->exists($cacheKey) ){
|
||||
$cacheData = $f3->get( $cacheKey );
|
||||
}
|
||||
@@ -374,15 +384,14 @@ abstract class BasicModel extends \DB\Cortex {
|
||||
* @param string $dataCacheKeyPrefix
|
||||
* @param int $data_ttl
|
||||
*/
|
||||
public function updateCacheData($cacheData, $dataCacheKeyPrefix = '', $data_ttl = 300){
|
||||
|
||||
public function updateCacheData($cacheData, $dataCacheKeyPrefix = '', $data_ttl = self::DEFAULT_CACHE_TTL){
|
||||
$cacheDataTmp = (array)$cacheData;
|
||||
|
||||
// check if data should be cached
|
||||
// and cacheData is not empty
|
||||
if(
|
||||
$data_ttl > 0 &&
|
||||
!empty( $cacheDataTmp )
|
||||
!empty($cacheDataTmp)
|
||||
){
|
||||
$cacheKey = $this->getCacheKey($dataCacheKeyPrefix);
|
||||
|
||||
@@ -394,13 +403,30 @@ abstract class BasicModel extends \DB\Cortex {
|
||||
|
||||
/**
|
||||
* unset the getData() cache for this object
|
||||
* -> see also clearCacheDataWithPrefix(), for more information
|
||||
*/
|
||||
public function clearCacheData(){
|
||||
$cacheKey = $this->getCacheKey();
|
||||
$this->clearCache($cacheKey);
|
||||
}
|
||||
|
||||
if( !is_null($cacheKey) ){
|
||||
/**
|
||||
* unset object cached data by prefix
|
||||
* -> primarily used by object cache with multiple data caches
|
||||
* @param string $dataCacheKeyPrefix
|
||||
*/
|
||||
public function clearCacheDataWithPrefix($dataCacheKeyPrefix = ''){
|
||||
$cacheKey = $this->getCacheKey($dataCacheKeyPrefix);
|
||||
$this->clearCache($cacheKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* unset object cached data (if exists)
|
||||
* @param $cacheKey
|
||||
*/
|
||||
private function clearCache($cacheKey){
|
||||
if( !empty($cacheKey) ){
|
||||
$f3 = self::getF3();
|
||||
|
||||
if( $f3->exists($cacheKey) ){
|
||||
$f3->clear($cacheKey);
|
||||
}
|
||||
|
||||
@@ -16,14 +16,6 @@ class CharacterLogModel extends BasicModel {
|
||||
|
||||
protected $table = 'character_log';
|
||||
|
||||
/**
|
||||
* caching for relational data
|
||||
* -> 5s matches REST API - Expire: Header-Data
|
||||
* for "Location" calls
|
||||
* @var int
|
||||
*/
|
||||
protected $rel_ttl = 5;
|
||||
|
||||
protected $fieldConf = [
|
||||
'active' => [
|
||||
'type' => Schema::DT_BOOL,
|
||||
@@ -203,6 +195,45 @@ class CharacterLogModel extends BasicModel {
|
||||
return $systemId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* return false will stop any further action
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterInsertEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* return false will stop any further action
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterUpdateEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* can be overwritten
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterEraseEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* see parent
|
||||
*/
|
||||
public function clearCacheData(){
|
||||
// clear character "LOG" cache
|
||||
// -> character data without "LOG" has not changed!
|
||||
$this->characterId->clearCacheDataWithPrefix(CharacterModel::DATA_CACHE_KEY_LOG);
|
||||
}
|
||||
|
||||
/**
|
||||
* update session data for active character
|
||||
* @param int $systemId
|
||||
|
||||
@@ -49,9 +49,7 @@ class CharacterMapModel extends BasicModel {
|
||||
* see parent
|
||||
*/
|
||||
public function clearCacheData(){
|
||||
parent::clearCacheData();
|
||||
|
||||
// clear map cache as well
|
||||
// clear map cache
|
||||
$this->mapId->clearCacheData();
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,11 @@ class CharacterModel extends BasicModel {
|
||||
|
||||
protected $table = 'character';
|
||||
|
||||
/**
|
||||
* cache key prefix for getData(); result WITH log data
|
||||
*/
|
||||
const DATA_CACHE_KEY_LOG = 'LOG';
|
||||
|
||||
protected $fieldConf = [
|
||||
'lastLogin' => [
|
||||
'type' => Schema::DT_TIMESTAMP,
|
||||
@@ -84,6 +89,11 @@ class CharacterModel extends BasicModel {
|
||||
'nullable' => false,
|
||||
'default' => 0
|
||||
],
|
||||
'logLocation' => [
|
||||
'type' => Schema::DT_BOOL,
|
||||
'nullable' => false,
|
||||
'default' => 1
|
||||
],
|
||||
'userCharacter' => [
|
||||
'has-one' => ['Model\UserCharacterModel', 'characterId']
|
||||
],
|
||||
@@ -107,19 +117,20 @@ class CharacterModel extends BasicModel {
|
||||
$cacheKeyModifier = '';
|
||||
|
||||
// check if there is cached data
|
||||
// -> IMPORTANT: $addCharacterLogData is optional! -> therefore we need 2 cache keys!
|
||||
if($addCharacterLogData){
|
||||
$cacheKeyModifier = strtoupper($this->table) . '_LOG';
|
||||
$cacheKeyModifier = self::DATA_CACHE_KEY_LOG;
|
||||
}
|
||||
|
||||
$characterData = $this->getCacheData($cacheKeyModifier);
|
||||
|
||||
if(is_null($characterData)){
|
||||
|
||||
// no cached character data found
|
||||
|
||||
$characterData = (object) [];
|
||||
$characterData->id = $this->id;
|
||||
$characterData->name = $this->name;
|
||||
$characterData->shared = $this->shared;
|
||||
$characterData->logLocation = $this->logLocation;
|
||||
|
||||
if($addCharacterLogData){
|
||||
if($logModel = $this->getLog()){
|
||||
@@ -140,7 +151,7 @@ class CharacterModel extends BasicModel {
|
||||
// max caching time for a system
|
||||
// the cached date has to be cleared manually on any change
|
||||
// this includes system, connection,... changes (all dependencies)
|
||||
$this->updateCacheData($characterData, $cacheKeyModifier, 10);
|
||||
$this->updateCacheData($characterData, $cacheKeyModifier);
|
||||
}
|
||||
|
||||
return $characterData;
|
||||
@@ -180,6 +191,56 @@ class CharacterModel extends BasicModel {
|
||||
return $accessToken;
|
||||
}
|
||||
|
||||
public function set_logLocation($logLocation){
|
||||
$logLocation = (bool)$logLocation;
|
||||
if(
|
||||
!$logLocation &&
|
||||
$logLocation !== $this->logLocation &&
|
||||
$this->hasLog()
|
||||
){
|
||||
$this->getLog()->erase();
|
||||
}
|
||||
|
||||
return $logLocation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterInsertEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterUpdateEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterEraseEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* see parent
|
||||
*/
|
||||
public function clearCacheData(){
|
||||
parent::clearCacheData();
|
||||
|
||||
// clear data with "log" as well!
|
||||
parent::clearCacheDataWithPrefix(self::DATA_CACHE_KEY_LOG);
|
||||
}
|
||||
|
||||
/**
|
||||
* check whether this character has already a user assigned to it
|
||||
* @return bool
|
||||
@@ -188,6 +249,14 @@ class CharacterModel extends BasicModel {
|
||||
return is_object($this->userCharacter);
|
||||
}
|
||||
|
||||
/**
|
||||
* check whether this character has an active location log
|
||||
* @return bool
|
||||
*/
|
||||
public function hasLog(){
|
||||
return is_object($this->characterLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* check whether this character has a corporation
|
||||
* @return bool
|
||||
@@ -341,29 +410,32 @@ class CharacterModel extends BasicModel {
|
||||
* @return $this
|
||||
*/
|
||||
public function updateLog($additionalOptions = []){
|
||||
// Try to pull data from CREST
|
||||
$ssoController = new Sso();
|
||||
$logData = $ssoController->getCharacterLocationData($this->getAccessToken(), $additionalOptions);
|
||||
//check if log update is enabled for this user
|
||||
if( $this->logLocation ){
|
||||
// Try to pull data from CREST
|
||||
$ssoController = new Sso();
|
||||
$logData = $ssoController->getCharacterLocationData($this->getAccessToken(), $additionalOptions);
|
||||
|
||||
if($logData['timeout'] === false){
|
||||
if( empty($logData['system']) ){
|
||||
// character is not in-game
|
||||
if(is_object($this->characterLog)){
|
||||
// delete existing log
|
||||
$this->characterLog->erase();
|
||||
$this->save();
|
||||
}
|
||||
}else{
|
||||
// character is currently in-game
|
||||
if( !$characterLog = $this->getLog() ){
|
||||
// create new log
|
||||
$characterLog = $this->rel('characterLog');
|
||||
$characterLog->characterId = $this->_id;
|
||||
}
|
||||
$characterLog->setData($logData);
|
||||
$characterLog->save();
|
||||
if($logData['timeout'] === false){
|
||||
if( empty($logData['system']) ){
|
||||
// character is not in-game
|
||||
if( $this->hasLog() ){
|
||||
// delete existing log
|
||||
$this->characterLog->erase();
|
||||
$this->save();
|
||||
}
|
||||
}else{
|
||||
// character is currently in-game
|
||||
if( !$characterLog = $this->getLog() ){
|
||||
// create new log
|
||||
$characterLog = $this->rel('characterLog');
|
||||
$characterLog->characterId = $this->_id;
|
||||
}
|
||||
$characterLog->setData($logData);
|
||||
$characterLog->save();
|
||||
|
||||
$this->characterLog = $characterLog;
|
||||
$this->characterLog = $characterLog;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -445,7 +517,7 @@ class CharacterModel extends BasicModel {
|
||||
public function getLog(){
|
||||
$characterLog = false;
|
||||
if(
|
||||
is_object($this->characterLog) &&
|
||||
$this->hasLog() &&
|
||||
!$this->characterLog->dry()
|
||||
){
|
||||
$characterLog = &$this->characterLog;
|
||||
|
||||
@@ -224,8 +224,7 @@ class ConnectionModel extends BasicModel{
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterInsertEvent($self, $pkeys){
|
||||
parent::afterInsertEvent($self, $pkeys);
|
||||
|
||||
$self->clearCacheData();
|
||||
$self->logActivity('connectionCreate');
|
||||
}
|
||||
|
||||
@@ -236,8 +235,7 @@ class ConnectionModel extends BasicModel{
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterUpdateEvent($self, $pkeys){
|
||||
parent::afterUpdateEvent($self, $pkeys);
|
||||
|
||||
$self->clearCacheData();
|
||||
$self->logActivity('connectionUpdate');
|
||||
}
|
||||
|
||||
@@ -248,8 +246,7 @@ class ConnectionModel extends BasicModel{
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterEraseEvent($self, $pkeys){
|
||||
parent::afterUpdateEvent($self, $pkeys);
|
||||
|
||||
$self->clearCacheData();
|
||||
$self->logActivity('connectionDelete');
|
||||
}
|
||||
|
||||
@@ -302,9 +299,6 @@ class ConnectionModel extends BasicModel{
|
||||
* see parent
|
||||
*/
|
||||
public function clearCacheData(){
|
||||
parent::clearCacheData();
|
||||
|
||||
// clear map cache as well
|
||||
$this->mapId->clearCacheData();
|
||||
}
|
||||
|
||||
|
||||
@@ -49,9 +49,7 @@ class CorporationMapModel extends BasicModel {
|
||||
* see parent
|
||||
*/
|
||||
public function clearCacheData(){
|
||||
parent::clearCacheData();
|
||||
|
||||
// clear map cache as well
|
||||
// clear map cache
|
||||
$this->mapId->clearCacheData();
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ class CorporationModel extends BasicModel {
|
||||
|
||||
/**
|
||||
* get all cooperation data
|
||||
* @return array
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function getData(){
|
||||
$cooperationData = (object) [];
|
||||
|
||||
@@ -55,6 +55,11 @@ class MapModel extends BasicModel {
|
||||
'nullable' => false,
|
||||
'default' => ''
|
||||
],
|
||||
'deleteExpiredConnections' => [
|
||||
'type' => Schema::DT_BOOL,
|
||||
'nullable' => false,
|
||||
'default' => 1
|
||||
],
|
||||
'systems' => [
|
||||
'has-many' => ['Model\SystemModel', 'mapId']
|
||||
],
|
||||
@@ -134,6 +139,7 @@ class MapModel extends BasicModel {
|
||||
$mapData->id = $this->id;
|
||||
$mapData->name = $this->name;
|
||||
$mapData->icon = $this->icon;
|
||||
$mapData->deleteExpiredConnections = $this->deleteExpiredConnections;
|
||||
$mapData->created = strtotime($this->created);
|
||||
$mapData->updated = strtotime($this->updated);
|
||||
|
||||
@@ -194,12 +200,39 @@ class MapModel extends BasicModel {
|
||||
// max caching time for a map
|
||||
// the cached date has to be cleared manually on any change
|
||||
// this includes system, connection,... changes (all dependencies)
|
||||
$this->updateCacheData($mapDataAll, '', 300);
|
||||
$this->updateCacheData($mapDataAll);
|
||||
}
|
||||
|
||||
return $mapDataAll;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterInsertEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterUpdateEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterEraseEvent($self, $pkeys){
|
||||
$self->clearCacheData();
|
||||
}
|
||||
|
||||
/**
|
||||
* get blank system model pre-filled with default SDE data
|
||||
* -> check for "inactive" systems on this map first!
|
||||
@@ -401,7 +434,7 @@ class MapModel extends BasicModel {
|
||||
}
|
||||
} elseif($obj instanceof AllianceModel){
|
||||
|
||||
// check whether the corporation already has map access
|
||||
// check whether the alliance already has map access
|
||||
$this->has('mapAlliances', ['active = 1 AND allianceId = :allianceId', ':allianceId' => $obj->id]);
|
||||
$result = $this->findone(['id = :id', ':id' => $this->id]);
|
||||
|
||||
@@ -531,7 +564,7 @@ class MapModel extends BasicModel {
|
||||
|
||||
/**
|
||||
* get data for all characters that are currently online "viewing" this map
|
||||
* -> the result of this function is cached!
|
||||
* -> The result of this function is cached!
|
||||
* @return \stdClass[]
|
||||
*/
|
||||
private function getCharactersData(){
|
||||
@@ -639,13 +672,7 @@ class MapModel extends BasicModel {
|
||||
* @return bool
|
||||
*/
|
||||
public function isPrivate(){
|
||||
$isPrivate = false;
|
||||
|
||||
if($this->typeId->id == 2){
|
||||
$isPrivate = true;
|
||||
}
|
||||
|
||||
return $isPrivate;
|
||||
return ($this->typeId->id === 2);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -653,13 +680,7 @@ class MapModel extends BasicModel {
|
||||
* @return bool
|
||||
*/
|
||||
public function isCorporation(){
|
||||
$isCorporation = false;
|
||||
|
||||
if($this->typeId->id == 3){
|
||||
$isCorporation = true;
|
||||
}
|
||||
|
||||
return $isCorporation;
|
||||
return ($this->typeId->id === 3);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -667,13 +688,7 @@ class MapModel extends BasicModel {
|
||||
* @return bool
|
||||
*/
|
||||
public function isAlliance(){
|
||||
$isAlliance = false;
|
||||
|
||||
if($this->typeId->id == 4){
|
||||
$isAlliance = true;
|
||||
}
|
||||
|
||||
return $isAlliance;
|
||||
return ($this->typeId->id === 4);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -277,7 +277,7 @@ class SystemModel extends BasicModel {
|
||||
// max caching time for a system
|
||||
// the cached date has to be cleared manually on any change
|
||||
// this includes system, connection,... changes (all dependencies)
|
||||
$this->updateCacheData($systemData, '', 300);
|
||||
$this->updateCacheData($systemData);
|
||||
}
|
||||
|
||||
return $systemData;
|
||||
@@ -358,19 +358,16 @@ class SystemModel extends BasicModel {
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* return false will stop any further action
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterInsertEvent($self, $pkeys){
|
||||
parent::afterInsertEvent($self, $pkeys);
|
||||
|
||||
$self->clearCacheData();
|
||||
$self->logActivity('systemCreate');
|
||||
}
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* can be overwritten
|
||||
* return false will stop any further action
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
@@ -397,12 +394,11 @@ class SystemModel extends BasicModel {
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* return false will stop any further action
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterUpdateEvent($self, $pkeys){
|
||||
parent::afterUpdateEvent($self, $pkeys);
|
||||
$self->clearCacheData();
|
||||
|
||||
// check if rally point mail should be send
|
||||
if(
|
||||
@@ -418,13 +414,11 @@ class SystemModel extends BasicModel {
|
||||
|
||||
/**
|
||||
* Event "Hook" function
|
||||
* can be overwritten
|
||||
* @param self $self
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterEraseEvent($self, $pkeys){
|
||||
parent::afterUpdateEvent($self, $pkeys);
|
||||
|
||||
$self->clearCacheData();
|
||||
$self->logActivity('systemDelete');
|
||||
}
|
||||
|
||||
|
||||
@@ -183,8 +183,6 @@ class SystemSignatureModel extends BasicModel {
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterInsertEvent($self, $pkeys){
|
||||
parent::afterInsertEvent($self, $pkeys);
|
||||
|
||||
$self->logActivity('signatureCreate');
|
||||
}
|
||||
|
||||
@@ -195,8 +193,6 @@ class SystemSignatureModel extends BasicModel {
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterUpdateEvent($self, $pkeys){
|
||||
parent::afterUpdateEvent($self, $pkeys);
|
||||
|
||||
$self->logActivity('signatureUpdate');
|
||||
}
|
||||
|
||||
@@ -207,8 +203,6 @@ class SystemSignatureModel extends BasicModel {
|
||||
* @param $pkeys
|
||||
*/
|
||||
public function afterEraseEvent($self, $pkeys){
|
||||
parent::afterUpdateEvent($self, $pkeys);
|
||||
|
||||
$self->logActivity('signatureDelete');
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
[PATHFINDER]
|
||||
NAME = Pathfinder
|
||||
; installed version (used for CSS/JS cache busting)
|
||||
VERSION = v1.1.6
|
||||
VERSION = v1.1.7
|
||||
; contact information [optional]
|
||||
CONTACT = https://github.com/exodus4d
|
||||
; public contact email [optional]
|
||||
@@ -77,6 +77,12 @@ ACTIVITY_LOGGING = 0
|
||||
; max recursive search depth for routes (default: 7000)
|
||||
; decrease it on performance problems
|
||||
SEARCH_DEPTH = 7000
|
||||
; default count of routes that will be checked (initial) when a system is selected (default: 2)
|
||||
SEARCH_DEFAULT_COUNT = 2
|
||||
; max count of routes that can be selected in "route settings" dialog (default: 4)
|
||||
MAX_Default_COUNT = 4
|
||||
; max count of routes that will be checked (MAX_COUNT + custom routes ) (default: 6)
|
||||
LIMIT = 6
|
||||
|
||||
; Email notifications =============================================================================
|
||||
; Requires SMTP configuration (see environment.ini)
|
||||
@@ -119,6 +125,8 @@ CHARACTER_LOG = 300
|
||||
CONSTELLATION_SYSTEMS = 1728000
|
||||
; max expire time. Expired cache files will be deleted by cronjob (seconds) (default: 10d)
|
||||
EXPIRE_MAX = 864000
|
||||
; expire time for EOL (end of life) connections (seconds) (default: 4h + 15min)
|
||||
EXPIRE_CONNECTIONS_EOL = 15300
|
||||
; expire time for signatures (inactive systems) (seconds) (default 3d)
|
||||
EXPIRE_SIGNATURES = 259200
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
"80";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002550";"68";
|
||||
"81";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002516";"6";
|
||||
"82";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002516";"21";
|
||||
"83";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002534";"18";
|
||||
"83";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002534";"30";
|
||||
"84";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002534";"59";
|
||||
"85";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002508";"39";
|
||||
"86";"2016-07-16 13:53:20";"2016-07-16 13:53:20";"31002508";"28";
|
||||
|
||||
|
@@ -204,7 +204,7 @@ INSERT INTO `system_wormhole` (`id`, `created`, `updated`, `systemId`, `wormhole
|
||||
(80, '2016-07-16 13:53:20', '2016-07-16 13:53:20', 31002550, 68),
|
||||
(81, '2016-07-16 13:53:20', '2016-07-16 13:53:20', 31002516, 6),
|
||||
(82, '2016-07-16 13:53:20', '2016-07-16 13:53:20', 31002516, 21),
|
||||
(83, '2016-07-16 13:53:20', '2016-07-16 13:53:20', 31002534, 18),
|
||||
(83, '2016-07-16 13:53:20', '2016-07-16 13:53:20', 31002534, 30),
|
||||
(84, '2016-07-16 13:53:20', '2016-07-16 13:53:20', 31002534, 59),
|
||||
(85, '2016-07-16 13:53:20', '2016-07-16 13:53:20', 31002508, 39),
|
||||
(86, '2016-07-16 13:53:20', '2016-07-16 13:53:20', 31002508, 28),
|
||||
|
||||
@@ -320,7 +320,7 @@ define(['jquery'], function($) {
|
||||
5: { // Wormhole
|
||||
1: 'D792 - HS',
|
||||
2: 'C391 - LS',
|
||||
3: 'Z142 - 0.0',
|
||||
3: 'C248 - 0.0',
|
||||
4: 'F135 - Thera'
|
||||
},
|
||||
6: { // ORE
|
||||
@@ -418,4 +418,4 @@ define(['jquery'], function($) {
|
||||
};
|
||||
|
||||
return signatureTypes;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -58,7 +58,7 @@ define([
|
||||
var tableHeadline = $('<h4>', {
|
||||
text: ' Processes'
|
||||
}).prepend( $('<i>', {
|
||||
class: ['fa', 'fa-fw', 'fa-lg', 'fa-list-alt'].join(' ')
|
||||
class: ['fa', 'fa-fw', 'fa-lg', 'fa-microchip'].join(' ')
|
||||
}));
|
||||
|
||||
// add content Structure to dome before table initialization
|
||||
|
||||
@@ -464,10 +464,12 @@ define([
|
||||
*/
|
||||
var initNotificationPanel = function(){
|
||||
var storageKey = 'notification_panel';
|
||||
var currentVersion = $('body').data('version');
|
||||
var currentVersion = Util.getVersion();
|
||||
|
||||
var showNotificationPanel = function(){
|
||||
var data = {};
|
||||
var data = {
|
||||
version: Util.getVersion()
|
||||
};
|
||||
|
||||
requirejs(['text!templates/ui/notice.html', 'mustache'], function(template, Mustache) {
|
||||
var content = Mustache.render(template, data);
|
||||
@@ -514,11 +516,10 @@ define([
|
||||
*/
|
||||
var initCharacterAnimation = function(imageWrapperElement){
|
||||
|
||||
imageWrapperElement.velocity('stop').delay(300).velocity('transition.flipBounceXIn', {
|
||||
imageWrapperElement.velocity('stop').velocity('transition.flipBounceXIn', {
|
||||
display: 'inline-block',
|
||||
stagger: 60,
|
||||
drag: true,
|
||||
duration: 600
|
||||
duration: 500
|
||||
});
|
||||
|
||||
// Hover effect for character info layer
|
||||
@@ -528,7 +529,7 @@ define([
|
||||
characterInfoElement.velocity('finish').velocity({
|
||||
width: ['100%', [ 400, 15 ] ]
|
||||
},{
|
||||
easing: 'easeInSine'
|
||||
easing: 'easeOutSine'
|
||||
});
|
||||
}, function(e){
|
||||
var characterInfoElement = $(this).find('.' + config.characterImageInfoClass);
|
||||
@@ -537,7 +538,7 @@ define([
|
||||
width: 0
|
||||
},{
|
||||
duration: 150,
|
||||
easing: 'easeInOutSine'
|
||||
easing: 'easeOutSine'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1067,6 +1067,16 @@ define([
|
||||
// system alias changed -> mark system as updated
|
||||
system.markAsChanged();
|
||||
});
|
||||
|
||||
headElement.on('shown', function(e, editable) {
|
||||
var inputElement = editable.input.$input.select();
|
||||
|
||||
// "fake" timeout until dom rendered
|
||||
setTimeout(function(input){
|
||||
// pre-select value
|
||||
input.select();
|
||||
}, 0, inputElement);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1406,7 +1416,7 @@ define([
|
||||
var moduleData = {
|
||||
id: config.mapContextMenuId,
|
||||
items: [
|
||||
{icon: 'fa-info', action: 'info', text: 'info'},
|
||||
{icon: 'fa-street-view', action: 'info', text: 'information'},
|
||||
{icon: 'fa-plus', action: 'add_system', text: 'add system'},
|
||||
{icon: 'fa-object-ungroup', action: 'select_all', text: 'select all'},
|
||||
{icon: 'fa-filter', action: 'filter_scope', text: 'filter scope', subitems: [
|
||||
@@ -2703,6 +2713,7 @@ define([
|
||||
mapElement = $(mapElement);
|
||||
|
||||
// get current character log data
|
||||
var characterLogExists = false;
|
||||
var currentCharacterLog = Util.getCurrentCharacterLog();
|
||||
|
||||
// check if map is frozen
|
||||
@@ -2716,6 +2727,14 @@ define([
|
||||
userCount: 0 // active user in a map
|
||||
};
|
||||
|
||||
if(
|
||||
currentCharacterLog &&
|
||||
currentCharacterLog.system
|
||||
){
|
||||
characterLogExists = true;
|
||||
headerUpdateData.currentSystemName = currentCharacterLog.system.name;
|
||||
}
|
||||
|
||||
// check if current user was found on the map
|
||||
var currentUserOnMap = false;
|
||||
|
||||
@@ -2753,20 +2772,17 @@ define([
|
||||
}
|
||||
|
||||
// the current user can only be in a single system ------------------------------------------
|
||||
if( !currentUserOnMap){
|
||||
if(
|
||||
characterLogExists &&
|
||||
!currentUserOnMap &&
|
||||
currentCharacterLog.system.id === systemId
|
||||
){
|
||||
currentUserIsHere = true;
|
||||
currentUserOnMap = true;
|
||||
|
||||
if(
|
||||
currentCharacterLog &&
|
||||
currentCharacterLog.system &&
|
||||
currentCharacterLog.system.id === systemId
|
||||
){
|
||||
currentUserIsHere = true;
|
||||
currentUserOnMap = true;
|
||||
|
||||
// set current location data for header update
|
||||
headerUpdateData.currentSystemId = $(system).data('id');
|
||||
headerUpdateData.currentSystemName = currentCharacterLog.system.name;
|
||||
}
|
||||
// set current location data for header update
|
||||
headerUpdateData.currentSystemId = $(system).data('id');
|
||||
//headerUpdateData.currentSystemName = currentCharacterLog.system.name;
|
||||
}
|
||||
|
||||
system.updateSystemUserData(map, tempUserData, currentUserIsHere);
|
||||
|
||||
@@ -86,7 +86,13 @@ define([
|
||||
if(validDeleteSystems.length){
|
||||
var msg = '';
|
||||
if(validDeleteSystems.length === 1){
|
||||
msg = 'Delete system "' + $(validDeleteSystems[0]).data('name') + '" and all its connections?';
|
||||
var deleteSystem = $(validDeleteSystems[0]);
|
||||
var systemName = deleteSystem.data('name');
|
||||
var systemAlias = deleteSystem.getSystemInfo( ['alias'] );
|
||||
|
||||
var systemNameStr = (systemName === systemAlias) ? '"' + systemName + '"' : '"' + systemAlias + '" (' + systemName + ')';
|
||||
systemNameStr = '<span class="txt-color txt-color-warning">' + systemNameStr + '</span>';
|
||||
msg = 'Delete system ' + systemNameStr + ' and all its connections?';
|
||||
}else{
|
||||
msg = 'Delete ' + validDeleteSystems.length + ' selected systems and their connections?';
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@ define([
|
||||
Init.routes = initData.routes;
|
||||
Init.notificationStatus = initData.notificationStatus;
|
||||
Init.activityLogging = initData.activityLogging;
|
||||
Init.routeSearch = initData.routeSearch;
|
||||
|
||||
// init tab change observer, Once the timers are available
|
||||
Page.initTabChangeObserver();
|
||||
|
||||
@@ -164,7 +164,7 @@ define([
|
||||
height: [ moduleHeight + 'px', [ 400, 15 ] ]
|
||||
},{
|
||||
duration: 400,
|
||||
easing: 'easeInSine',
|
||||
easing: 'easeOutSine',
|
||||
complete: function(){
|
||||
moduleElement.removeClass( config.moduleClosedClass );
|
||||
moduleElement.removeData();
|
||||
@@ -172,10 +172,10 @@ define([
|
||||
});
|
||||
}else{
|
||||
moduleElement.velocity('finish').velocity({
|
||||
height: [ '36px', [ 400, 15 ] ]
|
||||
height: [ '35px', [ 400, 15 ] ]
|
||||
},{
|
||||
duration: 400,
|
||||
easing: 'easeInSine',
|
||||
easing: 'easeOutSine',
|
||||
complete: function(){
|
||||
moduleElement.addClass( config.moduleClosedClass );
|
||||
}
|
||||
|
||||
@@ -51,9 +51,7 @@ define([
|
||||
headUserShipClass: 'pf-head-user-ship', // class for "user settings" link
|
||||
userShipImageClass: 'pf-head-user-ship-image', // class for "current user ship image"
|
||||
headActiveUserClass: 'pf-head-active-user', // class for "active user" link
|
||||
headCurrentLocationClass: 'pf-head-current-location', // class for "show current location" link
|
||||
headProgramStatusClass: 'pf-head-program-status', // class for "program status" notification
|
||||
headMapTrackingId: 'pf-head-map-tracking', // id for "map tracking" toggle (checkbox)
|
||||
|
||||
// footer
|
||||
pageFooterId: 'pf-footer', // id for page footer
|
||||
@@ -197,7 +195,7 @@ define([
|
||||
href: '#'
|
||||
}).html(' Account').prepend(
|
||||
$('<i>',{
|
||||
class: 'fa fa-sliders fa-fw'
|
||||
class: 'fa fa-user fa-fw'
|
||||
})
|
||||
).on('click', function(){
|
||||
$(document).triggerMenuEvent('ShowSettingsDialog');
|
||||
@@ -279,9 +277,9 @@ define([
|
||||
$('<a>', {
|
||||
class: 'list-group-item',
|
||||
href: '#'
|
||||
}).html(' Status').prepend(
|
||||
}).html(' Information').prepend(
|
||||
$('<i>',{
|
||||
class: 'fa fa-info fa-fw'
|
||||
class: 'fa fa-street-view fa-fw'
|
||||
})
|
||||
).on('click', function(){
|
||||
$(document).triggerMenuEvent('ShowMapInfo');
|
||||
@@ -292,7 +290,7 @@ define([
|
||||
$('<a>', {
|
||||
class: 'list-group-item',
|
||||
href: '#'
|
||||
}).html(' Map config').prepend(
|
||||
}).html(' Configuration').prepend(
|
||||
$('<i>',{
|
||||
class: 'fa fa-gears fa-fw'
|
||||
})
|
||||
@@ -402,7 +400,7 @@ define([
|
||||
userCharacterImageClass: config.userCharacterImageClass,
|
||||
userShipClass: config.headUserShipClass,
|
||||
userShipImageClass: config.userShipImageClass,
|
||||
mapTrackingId: config.headMapTrackingId
|
||||
mapTrackingId: Util.config.headMapTrackingId
|
||||
};
|
||||
|
||||
var headRendered = Mustache.render(TplHead, moduleData);
|
||||
@@ -431,7 +429,7 @@ define([
|
||||
});
|
||||
|
||||
// current location
|
||||
$('.' + config.headCurrentLocationClass).find('a').on('click', function(){
|
||||
$('#' + Util.config.headCurrentLocationId).find('a').on('click', function(){
|
||||
Util.getMapModule().getActiveMap().triggerMenuEvent('SelectSystem', {systemId: $(this).data('systemId') });
|
||||
});
|
||||
|
||||
@@ -447,7 +445,7 @@ define([
|
||||
});
|
||||
|
||||
// tracking toggle
|
||||
var mapTrackingCheckbox = $('#' + config.headMapTrackingId);
|
||||
var mapTrackingCheckbox = $('#' + Util.config.headMapTrackingId);
|
||||
mapTrackingCheckbox.bootstrapToggle({
|
||||
size: 'mini',
|
||||
on: 'on',
|
||||
@@ -494,7 +492,6 @@ define([
|
||||
* load page footer
|
||||
*/
|
||||
$.fn.loadFooter = function(){
|
||||
|
||||
var pageElement = $(this);
|
||||
|
||||
var moduleData = {
|
||||
@@ -727,7 +724,6 @@ define([
|
||||
* updates the header with current user data
|
||||
*/
|
||||
$.fn.updateHeaderUserData = function(){
|
||||
|
||||
var userData = Util.getCurrentUserData();
|
||||
|
||||
var userInfoElement = $('.' + config.headUserCharacterClass);
|
||||
@@ -771,7 +767,7 @@ define([
|
||||
|
||||
};
|
||||
|
||||
// check for changes
|
||||
// check for character/ship changes ---------------------------------------------
|
||||
if(
|
||||
userData &&
|
||||
userData.character
|
||||
@@ -783,6 +779,9 @@ define([
|
||||
newShipId = userData.character.log.ship.typeId;
|
||||
newShipName = userData.character.log.ship.typeName;
|
||||
}
|
||||
|
||||
// en/disable "map tracking" toggle
|
||||
updateMapTrackingToggle(userData.character.logLocation);
|
||||
}
|
||||
|
||||
var newCharactersOptionIds = userData.characters.map(function(data){
|
||||
@@ -831,6 +830,19 @@ define([
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* update "map tracking" toggle in header
|
||||
* @param status
|
||||
*/
|
||||
var updateMapTrackingToggle = function(status){
|
||||
var mapTrackingCheckbox = $('#' + Util.config.headMapTrackingId);
|
||||
if(status === true){
|
||||
mapTrackingCheckbox.bootstrapToggle('enable');
|
||||
}else{
|
||||
mapTrackingCheckbox.bootstrapToggle('off').bootstrapToggle('disable');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* delete active character log for the current user
|
||||
*/
|
||||
@@ -873,29 +885,22 @@ define([
|
||||
* @param locationData
|
||||
*/
|
||||
var updateHeaderCurrentLocation = function(locationData){
|
||||
var currentLocationElement = $('.' + config.headCurrentLocationClass);
|
||||
var currentLocationElement = $('#' + Util.config.headCurrentLocationId);
|
||||
var linkElement = currentLocationElement.find('a');
|
||||
var textElement = linkElement.find('span');
|
||||
|
||||
if( linkElement.data('systemName') !== locationData.currentSystemName ){
|
||||
var tempSystemName = locationData.currentSystemName;
|
||||
var tempSystemId = locationData.currentSystemId;
|
||||
|
||||
if(
|
||||
tempSystemName === undefined ||
|
||||
tempSystemId === undefined
|
||||
){
|
||||
tempSystemName = false;
|
||||
tempSystemId = false;
|
||||
}
|
||||
var tempSystemName = (locationData.currentSystemName) ? locationData.currentSystemName : false;
|
||||
var tempSystemId = (locationData.currentSystemId) ? locationData.currentSystemId : 0;
|
||||
|
||||
if(
|
||||
linkElement.data('systemName') !== tempSystemName ||
|
||||
linkElement.data('systemId') !== tempSystemId
|
||||
){
|
||||
linkElement.data('systemName', tempSystemName);
|
||||
linkElement.data('systemId', tempSystemId);
|
||||
linkElement.toggleClass('disabled', !tempSystemId);
|
||||
|
||||
if(
|
||||
tempSystemName !== false &&
|
||||
tempSystemId !== false
|
||||
){
|
||||
if(tempSystemName !== false){
|
||||
textElement.text(locationData.currentSystemName);
|
||||
currentLocationElement.velocity('fadeIn', {duration: Init.animationSpeed.headerLink});
|
||||
}else{
|
||||
|
||||
@@ -16,6 +16,7 @@ define([
|
||||
settingsDialogId: 'pf-settings-dialog', // id for "settings" dialog
|
||||
settingsAccountContainerId: 'pf-settings-dialog-account', // id for the "account" container
|
||||
settingsShareContainerId: 'pf-settings-dialog-share', // id for the "share" container
|
||||
settingsCharacterContainerId: 'pf-settings-dialog-character', // id for the "character" container
|
||||
|
||||
// captcha
|
||||
captchaKeyUpdateAccount: 'SESSION.CAPTCHA.ACCOUNT.UPDATE', // key for captcha reason
|
||||
@@ -47,6 +48,7 @@ define([
|
||||
id: config.settingsDialogId,
|
||||
settingsAccountContainerId: config.settingsAccountContainerId,
|
||||
settingsShareContainerId: config.settingsShareContainerId,
|
||||
settingsCharacterContainerId: config.settingsCharacterContainerId,
|
||||
userData: Init.currentUserData,
|
||||
captchaImageWrapperId: config.captchaImageWrapperId,
|
||||
captchaImageId: config.captchaImageId,
|
||||
@@ -193,7 +195,7 @@ define([
|
||||
accountSettingsDialog.find('.navbar a').on('shown.bs.tab', function(e){
|
||||
|
||||
// init "toggle" switches on current active tab
|
||||
accountSettingsDialog.find( $(this).attr('href') ).find('input[type="checkbox"]').bootstrapToggle({
|
||||
accountSettingsDialog.find( $(this).attr('href') ).find('input[data-toggle="toggle"][type="checkbox"]').bootstrapToggle({
|
||||
on: '<i class="fa fa-fw fa-check"></i> Enable',
|
||||
off: 'Disable <i class="fa fa-fw fa-ban"></i>',
|
||||
onstyle: 'success',
|
||||
|
||||
@@ -27,7 +27,7 @@ define([
|
||||
|
||||
var data = {
|
||||
logoContainerId: config.creditsDialogLogoContainerId,
|
||||
version: $('body').data('version')
|
||||
version: Util.getVersion()
|
||||
};
|
||||
|
||||
var content = Mustache.render(template, data);
|
||||
|
||||
@@ -211,6 +211,9 @@ define([
|
||||
// name
|
||||
tempData.name = tempSystemData.name;
|
||||
|
||||
// alias
|
||||
tempData.alias = (tempSystemData.alias === tempSystemData.name) ? '' : tempSystemData.alias;
|
||||
|
||||
// region
|
||||
tempData.region = tempSystemData.region.name;
|
||||
|
||||
@@ -339,6 +342,9 @@ define([
|
||||
},{
|
||||
title: 'system',
|
||||
data: 'name'
|
||||
},{
|
||||
title: 'alias',
|
||||
data: 'alias'
|
||||
},{
|
||||
title: 'region',
|
||||
data: 'region'
|
||||
|
||||
@@ -20,6 +20,8 @@ define([
|
||||
dialogMapSettingsContainerId: 'pf-map-dialog-settings', // id for the "settings" container
|
||||
dialogMapDownloadContainerId: 'pf-map-dialog-download', // id for the "download" container
|
||||
|
||||
deleteExpiredConnectionsId: 'pf-map-dialog-delete-connections', // id for "deleteExpiredConnections" checkbox
|
||||
|
||||
characterSelectId: 'pf-map-dialog-character-select', // id for "character" select
|
||||
corporationSelectId: 'pf-map-dialog-corporation-select', // id for "corporation" select
|
||||
allianceSelectId: 'pf-map-dialog-alliance-select', // id for "alliance" select
|
||||
@@ -103,6 +105,7 @@ define([
|
||||
var accessCharacter = [];
|
||||
var accessCorporation = [];
|
||||
var accessAlliance = [];
|
||||
var deleteExpiredConnections = true;
|
||||
|
||||
if(mapData !== false){
|
||||
// set current map information
|
||||
@@ -115,6 +118,8 @@ define([
|
||||
accessCharacter = mapData.config.access.character;
|
||||
accessCorporation = mapData.config.access.corporation;
|
||||
accessAlliance = mapData.config.access.alliance;
|
||||
|
||||
deleteExpiredConnections = mapData.config.deleteExpiredConnections;
|
||||
}
|
||||
|
||||
// render main dialog -----------------------------------------------------
|
||||
@@ -144,6 +149,9 @@ define([
|
||||
hideDownloadTab: hideDownloadTab,
|
||||
|
||||
// settings tab --------------
|
||||
deleteExpiredConnectionsId : config.deleteExpiredConnectionsId,
|
||||
deleteExpiredConnections: deleteExpiredConnections,
|
||||
|
||||
characterSelectId: config.characterSelectId,
|
||||
corporationSelectId: config.corporationSelectId,
|
||||
allianceSelectId: config.allianceSelectId,
|
||||
@@ -207,10 +215,10 @@ define([
|
||||
var selectField = $(this);
|
||||
var selectValues = selectField.val();
|
||||
|
||||
if(selectValues === null){
|
||||
selectField.parents('.form-group').addClass('has-error');
|
||||
}else{
|
||||
if(selectValues.length > 0){
|
||||
selectField.parents('.form-group').removeClass('has-error');
|
||||
}else{
|
||||
selectField.parents('.form-group').addClass('has-error');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -223,12 +231,20 @@ define([
|
||||
var dialogContent = mapInfoDialog.find('.modal-content');
|
||||
dialogContent.showLoadingAnimation();
|
||||
|
||||
var newMapData = {formData: form.getFormValues()};
|
||||
// get form data
|
||||
var formData = form.getFormValues();
|
||||
|
||||
// checkbox fix -> settings tab
|
||||
if( form.find('#' + config.deleteExpiredConnectionsId).length ){
|
||||
formData.deleteExpiredConnections = formData.hasOwnProperty('deleteExpiredConnections') ? parseInt( formData.deleteExpiredConnections ) : 0;
|
||||
}
|
||||
|
||||
var requestData = {formData: formData};
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: Init.path.saveMap,
|
||||
data: newMapData,
|
||||
data: requestData,
|
||||
dataType: 'json'
|
||||
}).done(function(responseData){
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ define([
|
||||
title: 'Σ ',
|
||||
searchable: false,
|
||||
width: 20,
|
||||
className: ['text-right', 'hidden-xs', 'hidden-sm', 'separator-right'].join(' '),
|
||||
className: ['text-right', 'separator-right'].join(' ') ,
|
||||
data: 'systemSum',
|
||||
render: {
|
||||
_: renderNumericColumn
|
||||
@@ -208,7 +208,7 @@ define([
|
||||
title: 'Σ ',
|
||||
searchable: false,
|
||||
width: 20,
|
||||
className: ['text-right', 'hidden-xs', 'hidden-sm', 'separator-right'].join(' '),
|
||||
className: ['text-right', 'separator-right'].join(' '),
|
||||
data: 'connectionSum',
|
||||
render: {
|
||||
_: renderNumericColumn
|
||||
@@ -251,7 +251,7 @@ define([
|
||||
title: 'Σ ',
|
||||
searchable: false,
|
||||
width: 20,
|
||||
className: ['text-right', 'hidden-xs', 'hidden-sm', 'separator-right'].join(' '),
|
||||
className: ['text-right', 'separator-right'].join(' '),
|
||||
data: 'signatureSum',
|
||||
render: {
|
||||
_: renderNumericColumn
|
||||
|
||||
@@ -139,7 +139,7 @@ define([
|
||||
placeholder: 'System name',
|
||||
allowClear: true,
|
||||
maximumSelectionLength: options.maxSelectionLength,
|
||||
escapeMarkup: function (markup) {
|
||||
escapeMarkup: function(markup){
|
||||
// let our custom formatter work
|
||||
return markup;
|
||||
}
|
||||
@@ -257,12 +257,12 @@ define([
|
||||
dropdownParent: selectElement.parents('.modal-body'),
|
||||
theme: 'pathfinder',
|
||||
minimumInputLength: 3,
|
||||
placeholder: '',
|
||||
placeholder: options.type + ' names',
|
||||
allowClear: false,
|
||||
maximumSelectionLength: options.maxSelectionLength,
|
||||
templateResult: formatResultData,
|
||||
templateSelection: formatSelectionData,
|
||||
escapeMarkup: function (markup) {
|
||||
escapeMarkup: function(markup){
|
||||
// let our custom formatter work
|
||||
return markup;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ define([
|
||||
moduleElementToolbarClass: 'pf-table-tools', // class for "module toolbar" element
|
||||
moduleToolbarActionId: 'pf-system-info-collapse-container', // id for "module toolbar action" element
|
||||
descriptionTextareaElementClass: 'pf-system-info-description', // class for "description" textarea element (xEditable)
|
||||
descriptionTextareaTooltipClass: 'pf-system-info-description-tooltip' // class for "description" tooltip
|
||||
descriptionTextareaCharCounter: 'pf-form-field-char-count' // class for "character counter" element for form field
|
||||
};
|
||||
|
||||
// disable Module update temporary (until. some requests/animations) are finished
|
||||
@@ -46,6 +46,9 @@ define([
|
||||
// animation speed values
|
||||
var animationSpeedToolbarAction = 200;
|
||||
|
||||
// max character length for system description
|
||||
var maxDescriptionLength = 512;
|
||||
|
||||
/**
|
||||
* set module observer and look for relevant system data to update
|
||||
*/
|
||||
@@ -69,7 +72,7 @@ define([
|
||||
|
||||
toolsActionElement.velocity('stop').velocity({
|
||||
opacity: 1,
|
||||
height: '75px'
|
||||
height: '100%'
|
||||
},{
|
||||
duration: animationSpeedToolbarAction,
|
||||
display: 'block',
|
||||
@@ -176,6 +179,33 @@ define([
|
||||
$('.' + config.descriptionArea).hideLoadingAnimation();
|
||||
};
|
||||
|
||||
/**
|
||||
* update a character counter field with current value length - maxCharLength
|
||||
* @param field
|
||||
* @param charCounterElement
|
||||
* @param maxCharLength
|
||||
*/
|
||||
var updateCounter = function(field, charCounterElement, maxCharLength){
|
||||
var value = field.val();
|
||||
var inputLength = value.length;
|
||||
|
||||
// line breaks are 2 characters!
|
||||
var newLines = value.match(/(\r\n|\n|\r)/g);
|
||||
var addition = 0;
|
||||
if (newLines != null) {
|
||||
addition = newLines.length;
|
||||
}
|
||||
inputLength += addition;
|
||||
|
||||
charCounterElement.text(maxCharLength - inputLength);
|
||||
|
||||
if(maxCharLength <= inputLength){
|
||||
charCounterElement.toggleClass('txt-color-red', true);
|
||||
}else{
|
||||
charCounterElement.toggleClass('txt-color-red', false);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param parentElement
|
||||
@@ -247,6 +277,7 @@ define([
|
||||
rows: 5,
|
||||
name: 'description',
|
||||
inputclass: config.descriptionTextareaElementClass,
|
||||
tpl: '<textarea maxlength="' + maxDescriptionLength + '"></textarea>',
|
||||
params: function(params){
|
||||
|
||||
params.mapData = {
|
||||
@@ -292,12 +323,24 @@ define([
|
||||
});
|
||||
|
||||
// on xEditable open -------------------------------------------------------------------------
|
||||
descriptionTextareaElement.on('shown', function(e){
|
||||
descriptionTextareaElement.on('shown', function(e, editable){
|
||||
var textarea = editable.input.$input;
|
||||
|
||||
// disable module update until description field is open
|
||||
disableModuleUpdate = true;
|
||||
|
||||
// disable tooltip
|
||||
tempModuleElement.find('.' + config.descriptionTextareaTooltipClass).tooltip('disable');
|
||||
// create character counter
|
||||
var charCounter = $('<kbd>', {
|
||||
class: [config.descriptionTextareaCharCounter, 'txt-color', 'text-right'].join(' ')
|
||||
});
|
||||
textarea.parent().next().append(charCounter);
|
||||
|
||||
// update character counter
|
||||
updateCounter(textarea, charCounter, maxDescriptionLength);
|
||||
|
||||
textarea.on('keyup', function(){
|
||||
updateCounter($(this), charCounter, maxDescriptionLength);
|
||||
});
|
||||
});
|
||||
|
||||
// on xEditable close ------------------------------------------------------------------------
|
||||
@@ -305,14 +348,9 @@ define([
|
||||
var value = $(this).editable('getValue', true);
|
||||
|
||||
if(value.length === 0){
|
||||
|
||||
// show button if value is empty
|
||||
hideToolsActionElement();
|
||||
|
||||
descriptionButton.show();
|
||||
}else{
|
||||
// enable tooltip
|
||||
tempModuleElement.find('.' + config.descriptionTextareaTooltipClass).tooltip('enable');
|
||||
}
|
||||
|
||||
// enable module update
|
||||
@@ -338,23 +376,29 @@ define([
|
||||
tooltipElements.tooltip();
|
||||
|
||||
// init system effect popover ----------------------------------------------------------------
|
||||
var systemEffectData = Util.getSystemEffectData( systemData.security, systemData.effect);
|
||||
var infoEffectElement = $(moduleElement).find('.' + config.systemInfoEffectInfoClass);
|
||||
|
||||
if(systemEffectData !== false){
|
||||
var infoEffectElement = $(moduleElement).find('.' + config.systemInfoEffectInfoClass);
|
||||
if(infoEffectElement.length){
|
||||
// effect row exists -> get effect data
|
||||
var systemEffectData = Util.getSystemEffectData( systemData.security, systemData.effect);
|
||||
|
||||
// transform data into table
|
||||
var systemEffectTable = Util.getSystemEffectTable( systemEffectData );
|
||||
if(systemEffectData !== false){
|
||||
// transform data into table
|
||||
var systemEffectTable = Util.getSystemEffectTable( systemEffectData );
|
||||
|
||||
infoEffectElement.popover({
|
||||
html: true,
|
||||
trigger: 'hover',
|
||||
placement: 'top',
|
||||
delay: 200,
|
||||
title: 'System effects',
|
||||
container: 'body',
|
||||
content: systemEffectTable
|
||||
});
|
||||
infoEffectElement.popover({
|
||||
html: true,
|
||||
trigger: 'hover',
|
||||
placement: 'top',
|
||||
delay: 200,
|
||||
title: 'System effects',
|
||||
container: 'body',
|
||||
content: systemEffectTable
|
||||
});
|
||||
}else{
|
||||
// effect data not found (e.g. !unknown! shattered system) -> hide "popover" icon icon
|
||||
infoEffectElement.children().hide();
|
||||
}
|
||||
}
|
||||
|
||||
// init static wormhole information ----------------------------------------------------------
|
||||
@@ -421,7 +465,6 @@ define([
|
||||
descriptionButtonClass: config.addDescriptionButtonClass,
|
||||
moduleToolbarActionId: config.moduleToolbarActionId,
|
||||
descriptionTextareaClass: config.descriptionTextareaElementClass,
|
||||
descriptionTooltipClass: config.descriptionTextareaTooltipClass,
|
||||
|
||||
shatteredWormholeInfo: shatteredWormholeInfo,
|
||||
|
||||
|
||||
@@ -93,9 +93,9 @@ define([
|
||||
var animationStatus = 'changed';
|
||||
|
||||
// search for an existing row (e.g. on mass "table refresh" [all routes])
|
||||
// get rowIndex where column 0 (equals to "systemToData.name") matches rowData.systemToData.name
|
||||
// get rowIndex where column 1 (equals to "systemToData.name") matches rowData.systemToData.name
|
||||
var indexes = dataTable.rows().eq(0).filter( function (rowIdx) {
|
||||
return (dataTable.cell(rowIdx, 0 ).data().name === rowData.systemToData.name);
|
||||
return (dataTable.cell(rowIdx, 1 ).data().name === rowData.systemToData.name);
|
||||
});
|
||||
|
||||
if(indexes.length > 0){
|
||||
@@ -151,6 +151,7 @@ define([
|
||||
mapIds: (rowData.hasOwnProperty('mapIds')) ? rowData.mapIds : [],
|
||||
systemFromData: (rowData.hasOwnProperty('systemFromData')) ? rowData.systemFromData : {},
|
||||
systemToData: (rowData.hasOwnProperty('systemToData')) ? rowData.systemToData : {},
|
||||
skipSearch: (rowData.hasOwnProperty('skipSearch')) ? rowData.skipSearch | 0 : 0,
|
||||
stargates: (rowData.hasOwnProperty('stargates')) ? rowData.stargates | 0 : 1,
|
||||
jumpbridges: (rowData.hasOwnProperty('jumpbridges')) ? rowData.jumpbridges | 0 : 1,
|
||||
wormholes: (rowData.hasOwnProperty('wormholes')) ? rowData.wormholes | 0 : 1,
|
||||
@@ -301,7 +302,8 @@ define([
|
||||
systemSelectOptions = dataStore.routes;
|
||||
}
|
||||
|
||||
var maxSelectionLength = 4;
|
||||
// max count of "default" target systems
|
||||
var maxSelectionLength = Init.routeSearch.maxDefaultCount;
|
||||
|
||||
var data = {
|
||||
id: config.routeSettingsDialogId,
|
||||
@@ -459,7 +461,36 @@ define([
|
||||
*/
|
||||
var formatRouteData = function(routeData){
|
||||
|
||||
/**
|
||||
* get status icon for route
|
||||
* @param status
|
||||
* @returns {string}
|
||||
*/
|
||||
let getStatusIcon= function(status){
|
||||
let color = 'txt-color-danger';
|
||||
let title = 'route not found';
|
||||
switch(status){
|
||||
case 1:
|
||||
color = 'txt-color-success';
|
||||
title = 'route exists';
|
||||
break;
|
||||
case 2:
|
||||
color = 'txt-color-warning';
|
||||
title = 'not search performed';
|
||||
break;
|
||||
}
|
||||
|
||||
return '<i class="fa fa-fw fa-circle txt-color ' + color + '" title="' + title + '"></i>';
|
||||
};
|
||||
|
||||
// route status:
|
||||
// 0: not found
|
||||
// 1: round (OK)
|
||||
// 2: not searched
|
||||
var routeStatus = routeData.skipSearch ? 2 : 0;
|
||||
|
||||
var reloadButton = '<i class="fa ' + ['fa-refresh'].join(' ') + '"></i>';
|
||||
var searchButton = '<i class="fa ' + ['fa-search-plus '].join(' ') + '"></i>';
|
||||
var deleteButton = '<i class="fa ' + ['fa-close', 'txt-color', 'txt-color-redDarker'].join(' ') + '"></i>';
|
||||
|
||||
// default row data (e.g. no route found)
|
||||
@@ -467,14 +498,14 @@ define([
|
||||
systemFromData: routeData.systemFromData,
|
||||
systemToData: routeData.systemToData,
|
||||
jumps: {
|
||||
value: 0,
|
||||
formatted: '---'
|
||||
value: 9999, // for sorting
|
||||
formatted: ''
|
||||
},
|
||||
avgTrueSec: {
|
||||
value: '',
|
||||
formatted: ''
|
||||
},
|
||||
route: 'not found',
|
||||
route: routeStatus === 2 ? 'search now' : 'not found',
|
||||
stargates: routeData.stargates,
|
||||
jumpbridges: routeData.jumpbridges,
|
||||
wormholes: routeData.wormholes,
|
||||
@@ -482,7 +513,7 @@ define([
|
||||
wormholesCritical: routeData.wormholesCritical,
|
||||
wormholesEOL: routeData.wormholesEOL,
|
||||
reload: {
|
||||
button: reloadButton
|
||||
button: routeData.skipSearch ? searchButton : reloadButton
|
||||
},
|
||||
clear: {
|
||||
button: deleteButton
|
||||
@@ -496,6 +527,7 @@ define([
|
||||
routeData.route.length > 0
|
||||
){
|
||||
// route data available
|
||||
routeStatus = 1;
|
||||
|
||||
// add route Data
|
||||
var jumpData = [];
|
||||
@@ -503,20 +535,26 @@ define([
|
||||
|
||||
// loop all systems on this route
|
||||
for(var i = 0; i < routeData.route.length; i++){
|
||||
var routeNodeData = routeData.route[i];
|
||||
let routeNodeData = routeData.route[i];
|
||||
// format system name (camelCase)
|
||||
var systemName = routeNodeData.system.charAt(0).toUpperCase() + routeNodeData.system.slice(1).toLowerCase();
|
||||
let systemName = routeNodeData.system.charAt(0).toUpperCase() + routeNodeData.system.slice(1).toLowerCase();
|
||||
|
||||
var systemSec = Number(routeNodeData.security).toFixed(1).toString();
|
||||
var tempSystemSec = systemSec;
|
||||
let systemSec = Number(routeNodeData.security).toFixed(1).toString();
|
||||
let tempSystemSec = systemSec;
|
||||
|
||||
if(tempSystemSec <= 0){
|
||||
tempSystemSec = '0-0';
|
||||
}
|
||||
|
||||
var systemSecClass = config.systemSecurityClassPrefix + tempSystemSec.replace('.', '-');
|
||||
let systemSecClass = config.systemSecurityClassPrefix + tempSystemSec.replace('.', '-');
|
||||
|
||||
var system = '<i class="fa fa-square ' + systemSecClass + '" ';
|
||||
// check for wormhole
|
||||
let icon = 'fa-square';
|
||||
if( /^J\d+$/.test(systemName) ){
|
||||
icon = 'fa-dot-circle-o';
|
||||
}
|
||||
|
||||
let system = '<i class="fa ' + icon + ' ' + systemSecClass + '" ';
|
||||
system += 'data-toggle="tooltip" data-placement="bottom" data-container="body" ';
|
||||
system += 'title="' + systemName + ' [' + systemSec + '] "></i>';
|
||||
jumpData.push( system );
|
||||
@@ -548,6 +586,12 @@ define([
|
||||
tableRowData.route = jumpData.join(' ');
|
||||
}
|
||||
|
||||
// route status data ----------------------------------------------------------------------
|
||||
tableRowData.status = {
|
||||
value: routeStatus,
|
||||
formatted: getStatusIcon(routeStatus)
|
||||
};
|
||||
|
||||
return tableRowData;
|
||||
};
|
||||
|
||||
@@ -601,7 +645,7 @@ define([
|
||||
var routesTable = table.DataTable( {
|
||||
paging: false,
|
||||
ordering: true,
|
||||
order: [ 1, 'asc' ],
|
||||
order: [[ 2, 'asc' ], [ 0, 'asc' ]],
|
||||
info: false,
|
||||
searching: false,
|
||||
hover: false,
|
||||
@@ -614,6 +658,17 @@ define([
|
||||
{
|
||||
targets: 0,
|
||||
orderable: true,
|
||||
title: '',
|
||||
width: '10px',
|
||||
class: ['text-center'].join(' '),
|
||||
data: 'status',
|
||||
render: {
|
||||
_: 'formatted',
|
||||
sort: 'value'
|
||||
}
|
||||
},{
|
||||
targets: 1,
|
||||
orderable: true,
|
||||
title: 'system ',
|
||||
class: Util.config.popoverTriggerClass,
|
||||
data: 'systemToData',
|
||||
@@ -628,7 +683,7 @@ define([
|
||||
});
|
||||
}
|
||||
},{
|
||||
targets: 1,
|
||||
targets: 2,
|
||||
orderable: true,
|
||||
title: '<span title="jumps" data-toggle="tooltip"><i class="fa fa-arrows-h"></i> </span>',
|
||||
width: '18px',
|
||||
@@ -639,7 +694,7 @@ define([
|
||||
sort: 'value'
|
||||
}
|
||||
},{
|
||||
targets: 2,
|
||||
targets: 3,
|
||||
orderable: true,
|
||||
title: '<span title="average security" data-toggle="tooltip">Ø </span>',
|
||||
width: '15px',
|
||||
@@ -650,12 +705,12 @@ define([
|
||||
sort: 'value'
|
||||
}
|
||||
},{
|
||||
targets: 3,
|
||||
targets: 4,
|
||||
orderable: false,
|
||||
title: 'route',
|
||||
data: 'route'
|
||||
},{
|
||||
targets: 4,
|
||||
targets: 5,
|
||||
title: '',
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
@@ -683,6 +738,7 @@ define([
|
||||
mapIds: rowData.mapIds,
|
||||
systemFromData: rowData.systemFromData,
|
||||
systemToData: rowData.systemToData,
|
||||
skipSearch: 0,
|
||||
stargates: rowData.stargates ? 1 : 0,
|
||||
jumpbridges: rowData.jumpbridges ? 1 : 0,
|
||||
wormholes: rowData.wormholes ? 1 : 0,
|
||||
@@ -696,7 +752,7 @@ define([
|
||||
});
|
||||
}
|
||||
},{
|
||||
targets: 5,
|
||||
targets: 6,
|
||||
title: '',
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
@@ -845,15 +901,24 @@ define([
|
||||
|
||||
// init search routes dialog --------------------------------------------------------------
|
||||
moduleElement.find('.' + config.systemModuleHeadlineIconSearch).on('click', function(e){
|
||||
var dialogData = {
|
||||
moduleElement: moduleElement,
|
||||
mapId: mapId,
|
||||
systemFromData: systemFromData,
|
||||
dataTable: routesTable
|
||||
};
|
||||
let maxRouteSearchLimit = this.Init.routeSearch.limit;
|
||||
|
||||
showFindRouteDialog(dialogData);
|
||||
});
|
||||
if(routesTable.rows().count() >= maxRouteSearchLimit){
|
||||
// max routes limit reached -> show warning
|
||||
Util.showNotify({title: 'Route limit reached', text: 'Serch is limited by ' + maxRouteSearchLimit, type: 'warning'});
|
||||
}else{
|
||||
var dialogData = {
|
||||
moduleElement: moduleElement,
|
||||
mapId: mapId,
|
||||
systemFromData: systemFromData,
|
||||
dataTable: routesTable
|
||||
};
|
||||
|
||||
showFindRouteDialog(dialogData);
|
||||
}
|
||||
}.bind({
|
||||
Init: Init
|
||||
}));
|
||||
|
||||
// init settings dialog -------------------------------------------------------------------
|
||||
moduleElement.find('.' + config.systemModuleHeadlineIconSettings).on('click', function(e){
|
||||
@@ -897,6 +962,10 @@ define([
|
||||
var requestRouteData = [];
|
||||
var currentTimestamp = Util.getServerTime().getTime();
|
||||
|
||||
// Skip some routes from search
|
||||
// -> this should help to throttle requests (heavy CPU load for route calculation)
|
||||
var defaultRoutesCount = Init.routeSearch.defaultCount;
|
||||
|
||||
for(var i = 0; i < systemsTo.length; i++){
|
||||
var systemToData = systemsTo[i];
|
||||
|
||||
@@ -920,7 +989,8 @@ define([
|
||||
var searchData = {
|
||||
mapIds: [mapId],
|
||||
systemFromData: systemFromData,
|
||||
systemToData: systemToData
|
||||
systemToData: systemToData,
|
||||
skipSearch: requestRouteData.length >= defaultRoutesCount
|
||||
};
|
||||
|
||||
requestRouteData.push( getRouteRequestDataFromRowData( searchData ));
|
||||
|
||||
@@ -50,7 +50,8 @@ define([
|
||||
// xEditable
|
||||
moduleIcon: 'pf-module-icon-button', // class for "filter" - icons
|
||||
editableDescriptionInputClass: 'pf-editable-description', // class for "description" textarea
|
||||
editableFilterInputClass: 'pf-editable-filter' // class for "filter" selects
|
||||
editableFilterElementClass: 'pf-editable-filter', // class for "filter" selects (not active)
|
||||
editableFilterSelectPopoverClass: 'pf-editable-filter-active' // class for active "filter" selects (popover)
|
||||
};
|
||||
|
||||
// lock Signature Table update temporary (until. some requests/animations) are finished
|
||||
@@ -106,13 +107,10 @@ define([
|
||||
* @returns {Array}
|
||||
*/
|
||||
var getSignatureTableData = function(){
|
||||
|
||||
var signatureTableApi = signatureTable.api();
|
||||
|
||||
var tableData = [];
|
||||
|
||||
signatureTableApi.rows().eq(0).each(function(idx){
|
||||
|
||||
var row = signatureTableApi.row(idx);
|
||||
// default row data
|
||||
var defaultRowData = row.data();
|
||||
@@ -125,22 +123,23 @@ define([
|
||||
if(editableFields.length > 0){
|
||||
var values = $(editableFields).editable('getValue');
|
||||
|
||||
// convert to lower for better compare options
|
||||
values.name = values.name.toLowerCase();
|
||||
if(values.name){
|
||||
// convert to lower for better compare options
|
||||
values.name = values.name.toLowerCase();
|
||||
|
||||
// add pk for this row
|
||||
values.id = defaultRowData.id;
|
||||
// add pk for this row
|
||||
values.id = defaultRowData.id;
|
||||
|
||||
// add updated for this row
|
||||
values.updated = defaultRowData.updated;
|
||||
// add updated for this row
|
||||
values.updated = defaultRowData.updated;
|
||||
|
||||
// add row index
|
||||
values.index = idx;
|
||||
// add row index
|
||||
values.index = idx;
|
||||
|
||||
tableData.push( values );
|
||||
tableData.push( values );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return tableData;
|
||||
@@ -456,6 +455,39 @@ define([
|
||||
*/
|
||||
$.fn.updateSignatureTableByClipboard = function(systemData, clipboard, options){
|
||||
|
||||
var requestData = function(){
|
||||
// lock update function until request is finished
|
||||
lockSignatureTable();
|
||||
|
||||
// lock copy during request (prevent spamming (ctrl + c )
|
||||
disableCopyFromClipboard = true;
|
||||
|
||||
var requestData = {
|
||||
signatures: signatureData,
|
||||
deleteOld: (options.deleteOld) ? 1 : 0,
|
||||
systemId: parseInt(systemData.id)
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: Init.path.saveSignatureData,
|
||||
data: requestData,
|
||||
dataType: 'json'
|
||||
}).done(function(responseData){
|
||||
unlockSignatureTable(true);
|
||||
|
||||
// updates table with new/updated signature information
|
||||
moduleElement.updateSignatureTable(responseData.signatures, false);
|
||||
}).fail(function( jqXHR, status, error) {
|
||||
var reason = status + ' ' + error;
|
||||
Util.showNotify({title: jqXHR.status + ': Update signatures', text: reason, type: 'warning'});
|
||||
$(document).setProgramStatus('problem');
|
||||
}).always(function() {
|
||||
unlockSignatureTable(true);
|
||||
disableCopyFromClipboard = false;
|
||||
});
|
||||
};
|
||||
|
||||
// check if copy&paste is enabled
|
||||
if( !disableCopyFromClipboard ){
|
||||
var moduleElement = $(this);
|
||||
@@ -464,38 +496,30 @@ define([
|
||||
var signatureData = parseSignatureString(systemData, clipboard);
|
||||
|
||||
if(signatureData.length > 0){
|
||||
// save signature data
|
||||
// valid signature data parsed
|
||||
|
||||
// lock update function until request is finished
|
||||
lockSignatureTable();
|
||||
// check if signatures will be added to a system where character is currently in
|
||||
// if user is not in any system -> id === undefined -> no "confirmation required
|
||||
var currentLocationData = Util.getCurrentLocationData();
|
||||
if(
|
||||
currentLocationData.id &&
|
||||
currentLocationData.id !== systemData.id
|
||||
){
|
||||
|
||||
// lock copy during request (prevent spamming (ctrl + c )
|
||||
disableCopyFromClipboard = true;
|
||||
var systemNameStr = (systemData.name === systemData.alias) ? '"' + systemData.name + '"' : '"' + systemData.alias + '" (' + systemData.name + ')';
|
||||
systemNameStr = '<span class="txt-color txt-color-warning">' + systemNameStr + '</span>';
|
||||
|
||||
var requestData = {
|
||||
signatures: signatureData,
|
||||
deleteOld: (options.deleteOld) ? 1 : 0,
|
||||
systemId: parseInt(systemData.id)
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: Init.path.saveSignatureData,
|
||||
data: requestData,
|
||||
dataType: 'json'
|
||||
}).done(function(responseData){
|
||||
unlockSignatureTable(true);
|
||||
|
||||
// updates table with new/updated signature information
|
||||
moduleElement.updateSignatureTable(responseData.signatures, false);
|
||||
}).fail(function( jqXHR, status, error) {
|
||||
var reason = status + ' ' + error;
|
||||
Util.showNotify({title: jqXHR.status + ': Update signatures', text: reason, type: 'warning'});
|
||||
$(document).setProgramStatus('problem');
|
||||
}).always(function() {
|
||||
unlockSignatureTable(true);
|
||||
disableCopyFromClipboard = false;
|
||||
});
|
||||
var msg = '';
|
||||
msg += 'Update signatures in ' + systemNameStr + ' ? This not your current location, "' + currentLocationData.name + '" !';
|
||||
bootbox.confirm(msg, function(result) {
|
||||
if(result){
|
||||
requestData();
|
||||
}
|
||||
});
|
||||
}else{
|
||||
// current system selected -> no "confirmation" required
|
||||
requestData();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -762,19 +786,6 @@ define([
|
||||
};
|
||||
|
||||
Render.showModule(moduleConfig, moduleData);
|
||||
|
||||
// event listener for global "paste" signatures into the page -------------------------------------------------
|
||||
$(document).off('paste').on('paste', function(e){
|
||||
|
||||
// do not read clipboard if pasting into form elements
|
||||
if(
|
||||
$(e.target).prop('tagName').toLowerCase() !== 'input' &&
|
||||
$(e.target).prop('tagName').toLowerCase() !== 'textarea'
|
||||
){
|
||||
var clipboard = (e.originalEvent || e).clipboardData.getData('text/plain');
|
||||
moduleElement.updateSignatureTableByClipboard(systemData, clipboard, {});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1387,9 +1398,12 @@ define([
|
||||
* @returns {*}
|
||||
*/
|
||||
$.fn.drawSignatureTable = function(signatureData, systemData){
|
||||
|
||||
var moduleElement = $(this);
|
||||
|
||||
// setup filter select in footer
|
||||
// column indexes that need a filter select
|
||||
var filterColumnIndexes = [2];
|
||||
|
||||
// create new signature table ---------------------------------------------------------------------------------
|
||||
var table = $('<table>', {
|
||||
class: ['display', 'compact', 'nowrap', config.sigTableClass, config.sigTablePrimaryClass].join(' ')
|
||||
@@ -1409,38 +1423,26 @@ define([
|
||||
|
||||
var dataTableOptions = {
|
||||
data: signatureData,
|
||||
drawCallback: function(settings){
|
||||
this.api().columns(filterColumnIndexes).every(function(){
|
||||
var column = this;
|
||||
var footerColumnElement = $(column.footer());
|
||||
var filterSelect = footerColumnElement.find('.editable');
|
||||
|
||||
// update select values
|
||||
filterSelect.editable('option', 'source', getColumnTableDataForFilter(column));
|
||||
});
|
||||
},
|
||||
initComplete: function (settings, json){
|
||||
// setup filter select in footer
|
||||
// column indexes that need a filter select
|
||||
var filterColumnIndexes = [2];
|
||||
|
||||
this.api().columns(filterColumnIndexes).every(function(){
|
||||
var column = this;
|
||||
var headerLabel = $(column.header()).text();
|
||||
var selectField = $('<a class="pf-editable ' +
|
||||
config.moduleIcon + ' ' +
|
||||
config.editableFilterInputClass +
|
||||
config.editableFilterElementClass +
|
||||
'" href="#" data-type="select" data-name="' + headerLabel + '"></a>');
|
||||
|
||||
// get all available options from column
|
||||
var source = {};
|
||||
column.data().unique().sort(function(a,b){
|
||||
// sort alphabetically
|
||||
var valA = a.filter.toLowerCase();
|
||||
var valB = b.filter.toLowerCase();
|
||||
|
||||
if(valA < valB) return -1;
|
||||
if(valA > valB) return 1;
|
||||
return 0;
|
||||
}).each(function(callData){
|
||||
if(callData.filter){
|
||||
source[callData.filter] = callData.filter;
|
||||
}
|
||||
});
|
||||
|
||||
// add empty option
|
||||
source[0] = '';
|
||||
|
||||
// add field to footer
|
||||
selectField.appendTo( $(column.footer()).empty() );
|
||||
|
||||
@@ -1449,8 +1451,8 @@ define([
|
||||
onblur: 'submit',
|
||||
title: 'filter',
|
||||
showbuttons: false,
|
||||
source: source,
|
||||
value: 0
|
||||
source: getColumnTableDataForFilter(column),
|
||||
inputclass: config.editableFilterSelectPopoverClass
|
||||
});
|
||||
|
||||
selectField.on('save', { column: column }, function(e, params) {
|
||||
@@ -1472,6 +1474,34 @@ define([
|
||||
return signatureTable;
|
||||
};
|
||||
|
||||
/**
|
||||
* get unique column data from column object for select filter options
|
||||
* @param column
|
||||
* @returns {{}}
|
||||
*/
|
||||
var getColumnTableDataForFilter = function(column){
|
||||
// get all available options from column
|
||||
var source = {};
|
||||
column.data().unique().sort(function(a,b){
|
||||
// sort alphabetically
|
||||
var valA = a.filter.toLowerCase();
|
||||
var valB = b.filter.toLowerCase();
|
||||
|
||||
if(valA < valB) return -1;
|
||||
if(valA > valB) return 1;
|
||||
return 0;
|
||||
}).each(function(callData){
|
||||
if(callData.filter){
|
||||
source[callData.filter] = callData.filter;
|
||||
}
|
||||
});
|
||||
|
||||
// add empty option
|
||||
source[0] = '';
|
||||
|
||||
return source;
|
||||
};
|
||||
|
||||
/**
|
||||
* format signature data array into dataTable structure
|
||||
* @param systemData
|
||||
@@ -1831,8 +1861,9 @@ define([
|
||||
/**
|
||||
* set module observer and look for relevant signature data to update
|
||||
* @param moduleElement
|
||||
* @param systemData
|
||||
*/
|
||||
var setModuleObserver = function(moduleElement){
|
||||
var setModuleObserver = function(moduleElement, systemData){
|
||||
var tablePrimaryElement = $('.' + config.sigTablePrimaryClass);
|
||||
var dataTablePrimary = signatureTable.DataTable();
|
||||
var signatureTableApi = signatureTable.api();
|
||||
@@ -1859,6 +1890,20 @@ define([
|
||||
// check delete button
|
||||
checkDeleteSignaturesButton();
|
||||
});
|
||||
|
||||
// event listener for global "paste" signatures into the page -------------------------------------------------
|
||||
$(document).off('paste').on('paste', function(e){
|
||||
|
||||
// do not read clipboard if pasting into form elements
|
||||
if(
|
||||
$(e.target).prop('tagName').toLowerCase() !== 'input' &&
|
||||
$(e.target).prop('tagName').toLowerCase() !== 'textarea'
|
||||
){
|
||||
var clipboard = (e.originalEvent || e).clipboardData.getData('text/plain');
|
||||
|
||||
moduleElement.updateSignatureTableByClipboard(systemData, clipboard, {});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1967,16 +2012,19 @@ define([
|
||||
type: 'POST',
|
||||
url: Init.path.getSignatures,
|
||||
data: requestData,
|
||||
dataType: 'json'
|
||||
dataType: 'json',
|
||||
context: {
|
||||
systemData: systemData
|
||||
}
|
||||
}).done(function(signatureData){
|
||||
|
||||
var signatureTableData = formatSignatureData(systemData, signatureData, fullSignatureOptions);
|
||||
var signatureTableData = formatSignatureData(this.systemData, signatureData, fullSignatureOptions);
|
||||
|
||||
// draw signature table
|
||||
moduleElement.drawSignatureTable(signatureTableData, systemData);
|
||||
moduleElement.drawSignatureTable(signatureTableData, this.systemData);
|
||||
|
||||
// set module observer
|
||||
setModuleObserver(moduleElement);
|
||||
setModuleObserver(moduleElement, this.systemData);
|
||||
}).fail(function( jqXHR, status, error) {
|
||||
var reason = status + ' ' + error;
|
||||
Util.showNotify({title: jqXHR.status + ': Get signatures', text: reason, type: 'warning'});
|
||||
@@ -1991,7 +2039,6 @@ define([
|
||||
* @param systemData
|
||||
*/
|
||||
$.fn.drawSignatureTableModule = function(systemData){
|
||||
|
||||
var parentElement = $(this);
|
||||
|
||||
// show module
|
||||
@@ -2004,7 +2051,6 @@ define([
|
||||
unlockSignatureTable(true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ define([
|
||||
// head
|
||||
headMapTrackingId: 'pf-head-map-tracking', // id for "map tracking" toggle (checkbox)
|
||||
headCharacterSwitchId: 'pf-head-character-switch', // id for "character switch" popover
|
||||
headCurrentLocationId: 'pf-head-current-location', // id for "show current location" element
|
||||
|
||||
// menu
|
||||
menuButtonFullScreenId: 'pf-menu-button-fullscreen', // id for menu button "fullscreen"
|
||||
@@ -393,22 +394,33 @@ define([
|
||||
*/
|
||||
$.fn.getFormValues = function(){
|
||||
var form = $(this);
|
||||
|
||||
var formData = {};
|
||||
var values = form.serializeArray();
|
||||
|
||||
// add "unchecked" checkboxes as well
|
||||
values = values.concat(
|
||||
form.find('input[type=checkbox]:not(:checked)').map(
|
||||
function() {
|
||||
return {name: this.name, value: 0};
|
||||
}).get()
|
||||
);
|
||||
|
||||
for(let field of values){
|
||||
// check for numeric values -> convert to Int
|
||||
let value = ( /^\d+$/.test(field.value) ) ? parseInt(field.value) : field.value;
|
||||
|
||||
$.each(form.serializeArray(), function(i, field) {
|
||||
if(field.name.indexOf('[]') !== -1){
|
||||
// array field
|
||||
var key = field.name.replace('[]', '');
|
||||
if(! $.isArray(formData[key]) ){
|
||||
if( !$.isArray(formData[key]) ){
|
||||
formData[key] = [];
|
||||
}
|
||||
|
||||
formData[key].push( field.value);
|
||||
formData[key].push( value);
|
||||
}else{
|
||||
formData[field.name] = field.value;
|
||||
formData[field.name] = value;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// get xEditable values
|
||||
var editableValues = form.find('.' + config.formEditableFieldClass).editable('getValue');
|
||||
@@ -841,12 +853,19 @@ define([
|
||||
* ==========================================================================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
* get current Pathfinder version number
|
||||
* @returns {*|jQuery}
|
||||
*/
|
||||
var getVersion = function(){
|
||||
return $('body').data('version');
|
||||
};
|
||||
|
||||
/**
|
||||
* show current program version information in browser console
|
||||
*/
|
||||
var showVersionInfo = function(){
|
||||
var versionNumber = $('body').data('version');
|
||||
console.info('PATHFINDER ' + versionNumber);
|
||||
console.info('PATHFINDER ' + getVersion());
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1469,7 +1488,10 @@ define([
|
||||
|
||||
var currentMapUserData = false;
|
||||
|
||||
if( mapId === parseInt(mapId, 10) ){
|
||||
if(
|
||||
mapId === parseInt(mapId, 10) &&
|
||||
Init.currentMapUserData
|
||||
){
|
||||
// search for a specific map
|
||||
for(var i = 0; i < Init.currentMapUserData.length; i++){
|
||||
if(Init.currentMapUserData[i].config.id === mapId){
|
||||
@@ -1703,6 +1725,18 @@ define([
|
||||
return Init.currentSystemData;
|
||||
};
|
||||
|
||||
/**
|
||||
* get current location data
|
||||
* -> system data where current user is located
|
||||
* @returns {{id: *, name: *}}
|
||||
*/
|
||||
var getCurrentLocationData = function(){
|
||||
var currentLocationLink = $('#' + config.headCurrentLocationId).find('a');
|
||||
return {
|
||||
id: currentLocationLink.data('systemId'),
|
||||
name: currentLocationLink.data('systemName')
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* get all "open" dialog elements
|
||||
@@ -1831,6 +1865,7 @@ define([
|
||||
|
||||
return {
|
||||
config: config,
|
||||
getVersion: getVersion,
|
||||
showVersionInfo: showVersionInfo,
|
||||
initPrototypes: initPrototypes,
|
||||
initDefaultBootboxConfig: initDefaultBootboxConfig,
|
||||
@@ -1867,6 +1902,7 @@ define([
|
||||
getCurrentUserData: getCurrentUserData,
|
||||
setCurrentSystemData: setCurrentSystemData,
|
||||
getCurrentSystemData: getCurrentSystemData,
|
||||
getCurrentLocationData: getCurrentLocationData,
|
||||
getCurrentUserInfo: getCurrentUserInfo,
|
||||
getCurrentCharacterLog: getCurrentCharacterLog,
|
||||
setDestination: setDestination,
|
||||
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 382 KiB After Width: | Height: | Size: 434 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["app.js.src.js"],"names":["mainScriptPath","document","body","getAttribute","jsBaseUrl","requirejs","config","baseUrl","paths","layout","dialog","templates","img","login","mappage","setup","jquery","bootstrap","text","mustache","localForage","velocity","velocityUI","slidebars","jsPlumb","farahey","customScrollbar","mousewheel","xEditable","morris","raphael","bootbox","easyPieChart","peityInlineChart","dragToSelect","hoverIntent","fullScreen","select2","validator","lazylinepainter","blueImpGallery","blueImpGalleryHelper","blueImpGalleryBootstrap","bootstrapConfirmation","bootstrapToggle","lazyload","easePack","tweenLite","datatables.net","datatables.net-buttons","datatables.net-buttons-html","datatables.net-responsive","datatables.net-select","pnotify","pnotify.buttons","pnotify.confirm","pnotify.nonblock","pnotify.desktop","pnotify.history","pnotify.callbacks","pnotify.reference","shim","deps","exports","require"],"mappings":"AACA,GAAIA,gBAAiBC,SAASC,KAAKC,aAAa,eAI5CC,UAAYH,SAASC,KAAKC,aAAa,eAG3CE,WAAUC,QACNC,QAAS,KAETC,OACIC,OAAQ,SACRH,OAAQ,aACRI,OAAQ,gBACRC,UAAW,kBACXC,IAAK,YAGLC,MAAO,cACPC,QAAS,gBACTC,MAAO,cAEPC,OAAQ,uBACRC,UAAW,oBACXC,KAAM,qBACNC,SAAU,mBACVC,YAAa,sBACbC,SAAU,mBACVC,WAAY,sBACZC,UAAW,gBACXC,QAAS,wBACTC,QAAS,kBACTC,gBAAiB,kCACjBC,WAAY,4BACZC,UAAW,6BACXC,OAAQ,iBACRC,QAAS,kBACTC,QAAS,kBACTC,aAAc,8BACdC,iBAAkB,uBAClBC,aAAc,0BACdC,YAAa,kCACbC,WAAY,4BACZC,QAAS,kBACTC,UAAW,oBACXC,gBAAiB,uCACjBC,eAAgB,sBAChBC,qBAAsB,qBACtBC,wBAAyB,8BACzBC,sBAAuB,6BACvBC,gBAAiB,4BACjBC,SAAU,0BAGVC,SAAU,mBACVC,UAAW,oBAGXC,iBAAkB,6DAClBC,yBAA0B,yDAC1BC,8BAA+B,oDAC/BC,4BAA6B,+DAC7BC,wBAAyB,uDAGzBC,QAAS,sBACTC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,mBAAoB,+BACpBC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,oBAAqB,gCACrBC,oBAAqB,iCAEzBC,MACI5C,WACI6C,MAAO,WAEXrC,SACIqC,MAAO,YAEXzC,UACIyC,MAAO,WAEXxC,YACIwC,MAAO,aAEXvC,WACIuC,MAAO,WAEXpC,iBACIoC,MAAO,SAAU,eAErBd,kBACIc,MAAO,WAEXb,0BACIa,MAAO,mBAEXZ,+BACIY,MAAO,2BAEXX,6BACIW,MAAO,mBAEXV,yBACIU,MAAO,mBAEXlC,WACIkC,MAAO,cAEX/B,SACI+B,MAAO,SAAU,aACjBC,QAAS,WAEblC,QACIiC,MAAO,SAAU,WACjBC,QAAS,UAEbV,SACIS,MAAQ,WAEZ9B,cACI8B,MAAQ,WAEZ7B,kBACI6B,MAAQ,WAEZ5B,cACI4B,MAAQ,WAEZ3B,aACI2B,MAAQ,WAEZ1B,YACI0B,MAAQ,WAEZzB,SACIyB,MAAQ,UACRC,QAAS,WAEbzB,WACIwB,MAAQ,SAAU,cAEtBvB,iBACIuB,MAAQ,SAAU,cAEtBtB,gBACIsB,MAAQ,WAEZnB,uBACImB,MAAQ,cAEZlB,iBACIkB,MAAQ,WAEZjB,UACIiB,MAAQ,aAQpBE,SAAQ1D,QACJC,QAASH,WAIbC,YAAYL","file":"app.js.map"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["bootstrap-image-gallery.js.src.js"],"names":["factory","define","amd","window","jQuery","blueimp","Gallery","$","extend","prototype","options","useBootstrapModal","close","imageFactory","videoFactory","textFactory","modalFactory","obj","callback","factoryInterface","this","call","that","modalTemplate","container","children","modal","clone","css","on","event","target","preventDefault","stopPropagation","element","type","addClass","find","text","title","String","fromCharCode","append","removeClass"],"mappings":"CAaE,SAAUA,GACR,YACsB,mBAAXC,SAAyBA,OAAOC,IACvCD,QACI,SACA,kBACDD,GAEHA,EACIG,OAAOC,OACPD,OAAOE,QAAQC,UAGzB,SAAUC,EAAGD,GACX,YAEAC,GAAEC,OAAOF,EAAQG,UAAUC,SACvBC,mBAAmB,GAGvB,IAAIC,GAAQN,EAAQG,UAAUG,MAC1BC,EAAeP,EAAQG,UAAUI,aACjCC,EAAeR,EAAQG,UAAUK,aACjCC,EAAcT,EAAQG,UAAUM,WAEpCR,GAAEC,OAAOF,EAAQG,WACbO,aAAc,SAAUC,EAAKC,EAAUC,EAAkBnB,GACrD,IAAKoB,KAAKV,QAAQC,mBAAqBQ,EACnC,MAAOnB,GAAQqB,KAAKD,KAAMH,EAAKC,EAAUC,EAE7C,IAAIG,GAAOF,KACPG,EAAgBhB,EAAEa,KAAKI,WAAWC,SAAS,UAC3CC,EAAQH,EAAcI,QAAQC,IAAI,UAAW,SAASC,GAAG,QAAS,SAAUC,GAG5E,GAAIA,EAAMC,SAAWL,EAAM,IACvBI,EAAMC,SAAWL,EAAMD,WAAW,GAAI,CACtCK,EAAME,gBACNF,GAAMG,iBACNX,GAAKV,WAGTsB,EAAUlC,EAAQqB,KAAKD,KAAMH,EAAK,SAAUa,GAC5CZ,GACIiB,KAAML,EAAMK,KACZJ,OAAQL,EAAM,IAElBA,GAAMU,SAAS,OAChBjB,EACHO,GAAMW,KAAK,gBAAgBC,KAAKJ,EAAQK,OAASC,OAAOC,aAAa,KACrEf,GAAMW,KAAK,eAAeK,OAAOR,EAEjC,OAAOR,GAAM,IAGjBb,aAAc,SAAUI,EAAKC,EAAUC,GACnC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBN,IAG9DC,aAAc,SAAUG,EAAKC,EAAUC,GACnC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBL,IAG9DC,YAAa,SAAUE,EAAKC,EAAUC,GAClC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBJ,IAG9DH,MAAO,WACHQ,KAAKI,UAAUa,KAAK,UAAUM,YAAY,KAC1C/B,GAAMS,KAAKD","file":"bootstrap-image-gallery.js.map"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/js/v1.1.6/lib/jquery.peity.min.js
vendored
2
public/js/v1.1.6/lib/jquery.peity.min.js
vendored
@@ -1,2 +0,0 @@
|
||||
!function(t,i,e,n){var r=t.fn.peity=function(i,e){l&&this.each(function(){var n=t(this),h=n.data("_peity");h?(i&&(h.type=i),t.extend(h.opts,e)):(h=new a(n,i,t.extend({},r.defaults[i],n.data("peity"),e)),n.change(function(){h.draw()}).data("_peity",h));h.draw()});return this},a=function(t,i,e){this.$el=t;this.type=i;this.opts=e},h=a.prototype,s=h.svgElement=function(e,n){return t(i.createElementNS("http://www.w3.org/2000/svg",e)).attr(n)},l="createElementNS"in i&&s("svg",{})[0].createSVGRect;h.draw=function(){var t=this.opts;r.graphers[this.type].call(this,t);t.after&&t.after.call(this,t)};h.fill=function(){var i=this.opts.fill;return t.isFunction(i)?i:function(t,e){return i[e%i.length]}};h.prepare=function(t,i){this.$svg||this.$el.hide().after(this.$svg=s("svg",{"class":"peity"}));return this.$svg.empty().data("peity",this).attr({height:i,width:t})};h.values=function(){return t.map(this.$el.text().split(this.opts.delimiter),function(t){return parseFloat(t)})};r.defaults={};r.graphers={};r.register=function(t,i,e){this.defaults[t]=i;this.graphers[t]=e};r.register("pie",{fill:["#ff9900","#fff4dd","#ffc66e"],radius:8},function(i){if(!i.delimiter){var n=this.$el.text().match(/[^0-9\.]/);i.delimiter=n?n[0]:","}n=t.map(this.values(),function(t){return t>0?t:0});if("/"==i.delimiter)var r=n[0],n=[r,e.max(0,n[1]-r)];for(var a=0,r=n.length,h=0;r>a;a++)h+=n[a];h||(r=2,h=1,n=[0,1]);var l=2*i.radius,l=this.prepare(i.width||l,i.height||l),a=l.width(),p=l.height(),o=a/2,f=p/2,p=e.min(o,f),i=i.innerRadius;"donut"==this.type&&!i&&(i=.5*p);for(var c=e.PI,u=this.fill(),d=this.scale=function(t,i){var n=t/h*c*2-c/2;return[i*e.cos(n)+o,i*e.sin(n)+f]},g=0,a=0;r>a;a++){var m=n[a],v=m/h;if(0!=v){if(1==v)if(i)var v=o-.01,y=f-p,w=f-i,v=s("path",{d:["M",o,y,"A",p,p,0,1,1,v,y,"L",v,w,"A",i,i,0,1,0,o,w].join(" ")});else v=s("circle",{cx:o,cy:f,r:p});else y=g+m,w=["M"].concat(d(g,p),"A",p,p,0,v>.5?1:0,1,d(y,p),"L"),i?w=w.concat(d(y,i),"A",i,i,0,v>.5?1:0,0,d(g,i)):w.push(o,f),g+=m,v=s("path",{d:w.join(" ")});v.attr("fill",u.call(this,m,a,n));l.append(v)}}});r.register("donut",t.extend(!0,{},r.defaults.pie),function(t){r.graphers.pie.call(this,t)});r.register("line",{delimiter:",",fill:"#c6d9fd",height:16,min:0,stroke:"#4d89f9",strokeWidth:1,width:32},function(t){var i=this.values();1==i.length&&i.push(i[0]);for(var r=e.max.apply(e,t.max==n?i:i.concat(t.max)),a=e.min.apply(e,t.min==n?i:i.concat(t.min)),h=this.prepare(t.width,t.height),l=t.strokeWidth,p=h.width(),o=h.height()-l,f=r-a,r=this.x=function(t){return t*(p/(i.length-1))},c=this.y=function(t){var i=o;f&&(i-=(t-a)/f*o);return i+l/2},u=c(e.max(a,0)),d=[0,u],g=0;g<i.length;g++)d.push(r(g),c(i[g]));d.push(p,u);t.fill&&h.append(s("polygon",{fill:t.fill,points:d.join(" ")}));l&&h.append(s("polyline",{fill:"none",points:d.slice(2,d.length-2).join(" "),stroke:t.stroke,"stroke-width":l,"stroke-linecap":"square"}))});r.register("bar",{delimiter:",",fill:["#4D89F9"],height:16,min:0,padding:.1,width:32},function(t){for(var i=this.values(),r=e.max.apply(e,t.max==n?i:i.concat(t.max)),a=e.min.apply(e,t.min==n?i:i.concat(t.min)),h=this.prepare(t.width,t.height),l=h.width(),p=h.height(),o=r-a,t=t.padding,f=this.fill(),c=this.x=function(t){return t*l/i.length},u=this.y=function(t){return p-(o?(t-a)/o*p:1)},d=0;d<i.length;d++){var g,m=c(d+t),v=c(d+1-t)-m,y=i[d],w=u(y),x=w;o?0>y?x=u(e.min(r,0)):w=u(e.max(a,0)):g=1;g=w-x;0==g&&(g=1,r>0&&o&&x--);h.append(s("rect",{fill:f.call(this,y,d,i),x:m,y:x,width:v,height:g}))}})}(jQuery,document,Math);
|
||||
//# sourceMappingURL=jquery.peity.min.js.map
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
||||
!function(o,i){"function"==typeof define&&define.amd?define("pnotify.buttons",["jquery","pnotify"],i):"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("jquery"),require("./pnotify")):i(o.jQuery,o.PNotify)}(this,function(o,i){i.prototype.options.buttons={closer:!0,closer_hover:!0,sticker:!0,sticker_hover:!0,show_on_nonblock:!1,labels:{close:"Close",stick:"Stick",unstick:"Unstick"},classes:{closer:null,pin_up:null,pin_down:null}};i.prototype.modules.buttons={closer:null,sticker:null,init:function(i,s){var n=this;i.elem.on({mouseenter:function(o){!n.options.sticker||i.options.nonblock&&i.options.nonblock.nonblock&&!n.options.show_on_nonblock||n.sticker.trigger("pnotify:buttons:toggleStick").css("visibility","visible");!n.options.closer||i.options.nonblock&&i.options.nonblock.nonblock&&!n.options.show_on_nonblock||n.closer.css("visibility","visible")},mouseleave:function(o){n.options.sticker_hover&&n.sticker.css("visibility","hidden");n.options.closer_hover&&n.closer.css("visibility","hidden")}});this.sticker=o("<div />",{"class":"ui-pnotify-sticker","aria-role":"button","aria-pressed":i.options.hide?"false":"true",tabindex:"0",title:i.options.hide?s.labels.stick:s.labels.unstick,css:{cursor:"pointer",visibility:s.sticker_hover?"hidden":"visible"},click:function(){i.options.hide=!i.options.hide;i.options.hide?i.queueRemove():i.cancelRemove();o(this).trigger("pnotify:buttons:toggleStick")}}).bind("pnotify:buttons:toggleStick",function(){var s=null===n.options.classes.pin_up?i.styles.pin_up:n.options.classes.pin_up,e=null===n.options.classes.pin_down?i.styles.pin_down:n.options.classes.pin_down;o(this).attr("title",i.options.hide?n.options.labels.stick:n.options.labels.unstick).children().attr("class","").addClass(i.options.hide?s:e).attr("aria-pressed",i.options.hide?"false":"true")}).append("<span />").trigger("pnotify:buttons:toggleStick").prependTo(i.container);(!s.sticker||i.options.nonblock&&i.options.nonblock.nonblock&&!s.show_on_nonblock)&&this.sticker.css("display","none");this.closer=o("<div />",{"class":"ui-pnotify-closer","aria-role":"button",tabindex:"0",title:s.labels.close,css:{cursor:"pointer",visibility:s.closer_hover?"hidden":"visible"},click:function(){i.remove(!1);n.sticker.css("visibility","hidden");n.closer.css("visibility","hidden")}}).append(o("<span />",{"class":null===s.classes.closer?i.styles.closer:s.classes.closer})).prependTo(i.container);(!s.closer||i.options.nonblock&&i.options.nonblock.nonblock&&!s.show_on_nonblock)&&this.closer.css("display","none")},update:function(o,i){!i.closer||o.options.nonblock&&o.options.nonblock.nonblock&&!i.show_on_nonblock?this.closer.css("display","none"):i.closer&&this.closer.css("display","block");!i.sticker||o.options.nonblock&&o.options.nonblock.nonblock&&!i.show_on_nonblock?this.sticker.css("display","none"):i.sticker&&this.sticker.css("display","block");this.sticker.trigger("pnotify:buttons:toggleStick");this.closer.find("span").attr("class","").addClass(null===i.classes.closer?o.styles.closer:i.classes.closer);i.sticker_hover?this.sticker.css("visibility","hidden"):o.options.nonblock&&o.options.nonblock.nonblock&&!i.show_on_nonblock||this.sticker.css("visibility","visible");i.closer_hover?this.closer.css("visibility","hidden"):o.options.nonblock&&o.options.nonblock.nonblock&&!i.show_on_nonblock||this.closer.css("visibility","visible")}};o.extend(i.styling.brighttheme,{closer:"brighttheme-icon-closer",pin_up:"brighttheme-icon-sticker",pin_down:"brighttheme-icon-sticker brighttheme-icon-stuck"});o.extend(i.styling.jqueryui,{closer:"ui-icon ui-icon-close",pin_up:"ui-icon ui-icon-pin-w",pin_down:"ui-icon ui-icon-pin-s"});o.extend(i.styling.bootstrap2,{closer:"icon-remove",pin_up:"icon-pause",pin_down:"icon-play"});o.extend(i.styling.bootstrap3,{closer:"glyphicon glyphicon-remove",pin_up:"glyphicon glyphicon-pause",pin_down:"glyphicon glyphicon-play"});o.extend(i.styling.fontawesome,{closer:"fa fa-times",pin_up:"fa fa-pause",pin_down:"fa fa-play"})});
|
||||
//# sourceMappingURL=pnotify.buttons.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["pnotify.buttons.js.src.js"],"names":["root","factory","define","amd","exports","module","require","jQuery","PNotify","this","$","prototype","options","buttons","closer","closer_hover","sticker","sticker_hover","show_on_nonblock","labels","close","stick","unstick","classes","pin_up","pin_down","modules","init","notice","that","elem","on","mouseenter","e","nonblock","trigger","css","mouseleave","class","aria-role","aria-pressed","hide","tabindex","title","cursor","visibility","click","queueRemove","cancelRemove","bind","styles","attr","children","addClass","append","prependTo","container","remove","update","find","extend","styling","brighttheme","jqueryui","bootstrap2","bootstrap3","fontawesome"],"mappings":"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","file":"pnotify.buttons.js.map"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/js/v1.1.7/app.js.map
Normal file
1
public/js/v1.1.7/app.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["?"],"names":["mainScriptPath","document","body","getAttribute","jsBaseUrl","requirejs","config","baseUrl","paths","layout","dialog","templates","img","login","mappage","setup","jquery","bootstrap","text","mustache","localForage","velocity","velocityUI","slidebars","jsPlumb","farahey","customScrollbar","mousewheel","xEditable","morris","raphael","bootbox","easyPieChart","peityInlineChart","dragToSelect","hoverIntent","fullScreen","select2","validator","lazylinepainter","blueImpGallery","blueImpGalleryHelper","blueImpGalleryBootstrap","bootstrapConfirmation","bootstrapToggle","lazyload","easePack","tweenLite","datatables.net","datatables.net-buttons","datatables.net-buttons-html","datatables.net-responsive","datatables.net-select","pnotify","pnotify.buttons","pnotify.confirm","pnotify.nonblock","pnotify.desktop","pnotify.history","pnotify.callbacks","pnotify.reference","shim","deps","exports","require"],"mappings":"AACA,GAAIA,gBAAiBC,SAASC,KAAKC,aAAa,eAI5CC,UAAYH,SAASC,KAAKC,aAAa,eAG3CE,WAAUC,QACNC,QAAS,KAETC,OACIC,OAAQ,SACRH,OAAQ,aACRI,OAAQ,gBACRC,UAAW,kBACXC,IAAK,YAGLC,MAAO,cACPC,QAAS,gBACTC,MAAO,cAEPC,OAAQ,uBACRC,UAAW,oBACXC,KAAM,qBACNC,SAAU,mBACVC,YAAa,sBACbC,SAAU,mBACVC,WAAY,sBACZC,UAAW,gBACXC,QAAS,wBACTC,QAAS,kBACTC,gBAAiB,kCACjBC,WAAY,4BACZC,UAAW,6BACXC,OAAQ,iBACRC,QAAS,kBACTC,QAAS,kBACTC,aAAc,8BACdC,iBAAkB,uBAClBC,aAAc,0BACdC,YAAa,kCACbC,WAAY,4BACZC,QAAS,kBACTC,UAAW,oBACXC,gBAAiB,uCACjBC,eAAgB,sBAChBC,qBAAsB,qBACtBC,wBAAyB,8BACzBC,sBAAuB,6BACvBC,gBAAiB,4BACjBC,SAAU,0BAGVC,SAAU,mBACVC,UAAW,oBAGXC,iBAAkB,6DAClBC,yBAA0B,yDAC1BC,8BAA+B,oDAC/BC,4BAA6B,+DAC7BC,wBAAyB,uDAGzBC,QAAS,sBACTC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,mBAAoB,+BACpBC,kBAAmB,8BACnBC,kBAAmB,8BACnBC,oBAAqB,gCACrBC,oBAAqB,iCAEzBC,MACI5C,WACI6C,MAAO,WAEXrC,SACIqC,MAAO,YAEXzC,UACIyC,MAAO,WAEXxC,YACIwC,MAAO,aAEXvC,WACIuC,MAAO,WAEXpC,iBACIoC,MAAO,SAAU,eAErBd,kBACIc,MAAO,WAEXb,0BACIa,MAAO,mBAEXZ,+BACIY,MAAO,2BAEXX,6BACIW,MAAO,mBAEXV,yBACIU,MAAO,mBAEXlC,WACIkC,MAAO,cAEX/B,SACI+B,MAAO,SAAU,aACjBC,QAAS,WAEblC,QACIiC,MAAO,SAAU,WACjBC,QAAS,UAEbV,SACIS,MAAQ,WAEZ9B,cACI8B,MAAQ,WAEZ7B,kBACI6B,MAAQ,WAEZ5B,cACI4B,MAAQ,WAEZ3B,aACI2B,MAAQ,WAEZ1B,YACI0B,MAAQ,WAEZzB,SACIyB,MAAQ,UACRC,QAAS,WAEbzB,WACIwB,MAAQ,SAAU,cAEtBvB,iBACIuB,MAAQ,SAAU,cAEtBtB,gBACIsB,MAAQ,WAEZnB,uBACImB,MAAQ,cAEZlB,iBACIkB,MAAQ,WAEZjB,UACIiB,MAAQ,aAQpBE,SAAQ1D,QACJC,QAASH,WAIbC,YAAYL","file":"app.js.map"}
|
||||
8005
public/js/v1.1.7/app/login.js
Normal file
8005
public/js/v1.1.7/app/login.js
Normal file
File diff suppressed because one or more lines are too long
82
public/js/v1.1.7/app/login.js.map
Normal file
82
public/js/v1.1.7/app/login.js.map
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
2
public/js/v1.1.7/app/notification.js
Normal file
2
public/js/v1.1.7/app/notification.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/v1.1.7/app/notification.js.map
Normal file
1
public/js/v1.1.7/app/notification.js.map
Normal file
File diff suppressed because one or more lines are too long
3902
public/js/v1.1.7/app/setup.js
Normal file
3902
public/js/v1.1.7/app/setup.js
Normal file
File diff suppressed because one or more lines are too long
48
public/js/v1.1.7/app/setup.js.map
Normal file
48
public/js/v1.1.7/app/setup.js.map
Normal file
File diff suppressed because one or more lines are too long
1
public/js/v1.1.7/lib/bootstrap-image-gallery.js.map
Normal file
1
public/js/v1.1.7/lib/bootstrap-image-gallery.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["?"],"names":["factory","define","amd","window","jQuery","blueimp","Gallery","$","extend","prototype","options","useBootstrapModal","close","imageFactory","videoFactory","textFactory","modalFactory","obj","callback","factoryInterface","this","call","that","modalTemplate","container","children","modal","clone","css","on","event","target","preventDefault","stopPropagation","element","type","addClass","find","text","title","String","fromCharCode","append","removeClass"],"mappings":"CAaE,SAAUA,GACR,YACsB,mBAAXC,SAAyBA,OAAOC,IACvCD,QACI,SACA,kBACDD,GAEHA,EACIG,OAAOC,OACPD,OAAOE,QAAQC,UAGzB,SAAUC,EAAGD,GACX,YAEAC,GAAEC,OAAOF,EAAQG,UAAUC,SACvBC,mBAAmB,GAGvB,IAAIC,GAAQN,EAAQG,UAAUG,MAC1BC,EAAeP,EAAQG,UAAUI,aACjCC,EAAeR,EAAQG,UAAUK,aACjCC,EAAcT,EAAQG,UAAUM,WAEpCR,GAAEC,OAAOF,EAAQG,WACbO,aAAc,SAAUC,EAAKC,EAAUC,EAAkBnB,GACrD,IAAKoB,KAAKV,QAAQC,mBAAqBQ,EACnC,MAAOnB,GAAQqB,KAAKD,KAAMH,EAAKC,EAAUC,EAE7C,IAAIG,GAAOF,KACPG,EAAgBhB,EAAEa,KAAKI,WAAWC,SAAS,UAC3CC,EAAQH,EAAcI,QAAQC,IAAI,UAAW,SAASC,GAAG,QAAS,SAAUC,GAG5E,GAAIA,EAAMC,SAAWL,EAAM,IACvBI,EAAMC,SAAWL,EAAMD,WAAW,GAAI,CACtCK,EAAME,gBACNF,GAAMG,iBACNX,GAAKV,WAGTsB,EAAUlC,EAAQqB,KAAKD,KAAMH,EAAK,SAAUa,GAC5CZ,GACIiB,KAAML,EAAMK,KACZJ,OAAQL,EAAM,IAElBA,GAAMU,SAAS,OAChBjB,EACHO,GAAMW,KAAK,gBAAgBC,KAAKJ,EAAQK,OAASC,OAAOC,aAAa,KACrEf,GAAMW,KAAK,eAAeK,OAAOR,EAEjC,OAAOR,GAAM,IAGjBb,aAAc,SAAUI,EAAKC,EAAUC,GACnC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBN,IAG9DC,aAAc,SAAUG,EAAKC,EAAUC,GACnC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBL,IAG9DC,YAAa,SAAUE,EAAKC,EAAUC,GAClC,MAAOC,MAAKJ,aAAaC,EAAKC,EAAUC,EAAkBJ,IAG9DH,MAAO,WACHQ,KAAKI,UAAUa,KAAK,UAAUM,YAAY,KAC1C/B,GAAMS,KAAKD","file":"bootstrap-image-gallery.js.map"}
|
||||
2
public/js/v1.1.7/lib/jquery.fullscreen.min.js
vendored
Normal file
2
public/js/v1.1.7/lib/jquery.fullscreen.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/js/v1.1.7/lib/jquery.fullscreen.min.js.map
Normal file
1
public/js/v1.1.7/lib/jquery.fullscreen.min.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/v1.1.7/lib/jquery.peity.min.js
vendored
Normal file
2
public/js/v1.1.7/lib/jquery.peity.min.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
!function(t,i,e,n){var r=t.fn.peity=function(i,e){l&&this.each(function(){var n=t(this),h=n.data("_peity");h?(i&&(h.type=i),t.extend(h.opts,e)):(h=new a(n,i,t.extend({},r.defaults[i],n.data("peity"),e)),n.change(function(){h.draw()}).data("_peity",h));h.draw()});return this},a=function(t,i,e){this.$el=t;this.type=i;this.opts=e},h=a.prototype,s=h.svgElement=function(e,n){return t(i.createElementNS("http://www.w3.org/2000/svg",e)).attr(n)},l="createElementNS"in i&&s("svg",{})[0].createSVGRect;h.draw=function(){var t=this.opts;r.graphers[this.type].call(this,t);t.after&&t.after.call(this,t)};h.fill=function(){var i=this.opts.fill;return t.isFunction(i)?i:function(t,e){return i[e%i.length]}};h.prepare=function(t,i){this.$svg||this.$el.hide().after(this.$svg=s("svg",{class:"peity"}));return this.$svg.empty().data("peity",this).attr({height:i,width:t})};h.values=function(){return t.map(this.$el.text().split(this.opts.delimiter),function(t){return parseFloat(t)})};r.defaults={};r.graphers={};r.register=function(t,i,e){this.defaults[t]=i;this.graphers[t]=e};r.register("pie",{fill:["#ff9900","#fff4dd","#ffc66e"],radius:8},function(i){if(!i.delimiter){var n=this.$el.text().match(/[^0-9\.]/);i.delimiter=n?n[0]:","}n=t.map(this.values(),function(t){return 0<t?t:0});if("/"==i.delimiter)var r=n[0],n=[r,e.max(0,n[1]-r)];for(var a=0,r=n.length,h=0;a<r;a++)h+=n[a];h||(r=2,h=1,n=[0,1]);var l=2*i.radius,l=this.prepare(i.width||l,i.height||l),a=l.width(),p=l.height(),o=a/2,f=p/2,p=e.min(o,f),i=i.innerRadius;"donut"==this.type&&!i&&(i=.5*p);for(var c=e.PI,u=this.fill(),d=this.scale=function(t,i){var n=t/h*c*2-c/2;return[i*e.cos(n)+o,i*e.sin(n)+f]},g=0,a=0;a<r;a++){var m=n[a],v=m/h;if(0!=v){if(1==v)if(i)var v=o-.01,y=f-p,w=f-i,v=s("path",{d:["M",o,y,"A",p,p,0,1,1,v,y,"L",v,w,"A",i,i,0,1,0,o,w].join(" ")});else v=s("circle",{cx:o,cy:f,r:p});else y=g+m,w=["M"].concat(d(g,p),"A",p,p,0,.5<v?1:0,1,d(y,p),"L"),i?w=w.concat(d(y,i),"A",i,i,0,.5<v?1:0,0,d(g,i)):w.push(o,f),g+=m,v=s("path",{d:w.join(" ")});v.attr("fill",u.call(this,m,a,n));l.append(v)}}});r.register("donut",t.extend(!0,{},r.defaults.pie),function(t){r.graphers.pie.call(this,t)});r.register("line",{delimiter:",",fill:"#c6d9fd",height:16,min:0,stroke:"#4d89f9",strokeWidth:1,width:32},function(t){var i=this.values();1==i.length&&i.push(i[0]);for(var r=e.max.apply(e,t.max==n?i:i.concat(t.max)),a=e.min.apply(e,t.min==n?i:i.concat(t.min)),h=this.prepare(t.width,t.height),l=t.strokeWidth,p=h.width(),o=h.height()-l,f=r-a,r=this.x=function(t){return t*(p/(i.length-1))},c=this.y=function(t){var i=o;f&&(i-=(t-a)/f*o);return i+l/2},u=c(e.max(a,0)),d=[0,u],g=0;g<i.length;g++)d.push(r(g),c(i[g]));d.push(p,u);t.fill&&h.append(s("polygon",{fill:t.fill,points:d.join(" ")}));l&&h.append(s("polyline",{fill:"none",points:d.slice(2,d.length-2).join(" "),stroke:t.stroke,"stroke-width":l,"stroke-linecap":"square"}))});r.register("bar",{delimiter:",",fill:["#4D89F9"],height:16,min:0,padding:.1,width:32},function(t){for(var i=this.values(),r=e.max.apply(e,t.max==n?i:i.concat(t.max)),a=e.min.apply(e,t.min==n?i:i.concat(t.min)),h=this.prepare(t.width,t.height),l=h.width(),p=h.height(),o=r-a,t=t.padding,f=this.fill(),c=this.x=function(t){return t*l/i.length},u=this.y=function(t){return p-(o?(t-a)/o*p:1)},d=0;d<i.length;d++){var g,m=c(d+t),v=c(d+1-t)-m,y=i[d],w=u(y),x=w;o?0>y?x=u(e.min(r,0)):w=u(e.max(a,0)):g=1;g=w-x;0==g&&(g=1,0<r&&o&&x--);h.append(s("rect",{fill:f.call(this,y,d,i),x:m,y:x,width:v,height:g}))}})}(jQuery,document,Math);
|
||||
//# sourceMappingURL=jquery.peity.min.js.map
|
||||
1
public/js/v1.1.7/lib/jquery.peity.min.js.map
Normal file
1
public/js/v1.1.7/lib/jquery.peity.min.js.map
Normal file
File diff suppressed because one or more lines are too long
7
public/js/v1.1.7/lib/jsPlumb-2.0.5.js
Normal file
7
public/js/v1.1.7/lib/jsPlumb-2.0.5.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/v1.1.7/lib/jsPlumb-2.0.5.js.map
Normal file
1
public/js/v1.1.7/lib/jsPlumb-2.0.5.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/v1.1.7/lib/pnotify/pnotify.buttons.js
Normal file
2
public/js/v1.1.7/lib/pnotify/pnotify.buttons.js
Normal file
@@ -0,0 +1,2 @@
|
||||
!function(o,i){"function"==typeof define&&define.amd?define("pnotify.buttons",["jquery","pnotify"],i):"object"==typeof exports&&"undefined"!=typeof module?module.exports=i(require("jquery"),require("./pnotify")):i(o.jQuery,o.PNotify)}(this,function(o,i){i.prototype.options.buttons={closer:!0,closer_hover:!0,sticker:!0,sticker_hover:!0,show_on_nonblock:!1,labels:{close:"Close",stick:"Stick",unstick:"Unstick"},classes:{closer:null,pin_up:null,pin_down:null}};i.prototype.modules.buttons={closer:null,sticker:null,init:function(i,s){var n=this;i.elem.on({mouseenter:function(o){!n.options.sticker||i.options.nonblock&&i.options.nonblock.nonblock&&!n.options.show_on_nonblock||n.sticker.trigger("pnotify:buttons:toggleStick").css("visibility","visible");!n.options.closer||i.options.nonblock&&i.options.nonblock.nonblock&&!n.options.show_on_nonblock||n.closer.css("visibility","visible")},mouseleave:function(o){n.options.sticker_hover&&n.sticker.css("visibility","hidden");n.options.closer_hover&&n.closer.css("visibility","hidden")}});this.sticker=o("<div />",{class:"ui-pnotify-sticker","aria-role":"button","aria-pressed":i.options.hide?"false":"true",tabindex:"0",title:i.options.hide?s.labels.stick:s.labels.unstick,css:{cursor:"pointer",visibility:s.sticker_hover?"hidden":"visible"},click:function(){i.options.hide=!i.options.hide;i.options.hide?i.queueRemove():i.cancelRemove();o(this).trigger("pnotify:buttons:toggleStick")}}).bind("pnotify:buttons:toggleStick",function(){var s=null===n.options.classes.pin_up?i.styles.pin_up:n.options.classes.pin_up,e=null===n.options.classes.pin_down?i.styles.pin_down:n.options.classes.pin_down;o(this).attr("title",i.options.hide?n.options.labels.stick:n.options.labels.unstick).children().attr("class","").addClass(i.options.hide?s:e).attr("aria-pressed",i.options.hide?"false":"true")}).append("<span />").trigger("pnotify:buttons:toggleStick").prependTo(i.container);(!s.sticker||i.options.nonblock&&i.options.nonblock.nonblock&&!s.show_on_nonblock)&&this.sticker.css("display","none");this.closer=o("<div />",{class:"ui-pnotify-closer","aria-role":"button",tabindex:"0",title:s.labels.close,css:{cursor:"pointer",visibility:s.closer_hover?"hidden":"visible"},click:function(){i.remove(!1);n.sticker.css("visibility","hidden");n.closer.css("visibility","hidden")}}).append(o("<span />",{class:null===s.classes.closer?i.styles.closer:s.classes.closer})).prependTo(i.container);(!s.closer||i.options.nonblock&&i.options.nonblock.nonblock&&!s.show_on_nonblock)&&this.closer.css("display","none")},update:function(o,i){!i.closer||o.options.nonblock&&o.options.nonblock.nonblock&&!i.show_on_nonblock?this.closer.css("display","none"):i.closer&&this.closer.css("display","block");!i.sticker||o.options.nonblock&&o.options.nonblock.nonblock&&!i.show_on_nonblock?this.sticker.css("display","none"):i.sticker&&this.sticker.css("display","block");this.sticker.trigger("pnotify:buttons:toggleStick");this.closer.find("span").attr("class","").addClass(null===i.classes.closer?o.styles.closer:i.classes.closer);i.sticker_hover?this.sticker.css("visibility","hidden"):o.options.nonblock&&o.options.nonblock.nonblock&&!i.show_on_nonblock||this.sticker.css("visibility","visible");i.closer_hover?this.closer.css("visibility","hidden"):o.options.nonblock&&o.options.nonblock.nonblock&&!i.show_on_nonblock||this.closer.css("visibility","visible")}};o.extend(i.styling.brighttheme,{closer:"brighttheme-icon-closer",pin_up:"brighttheme-icon-sticker",pin_down:"brighttheme-icon-sticker brighttheme-icon-stuck"});o.extend(i.styling.jqueryui,{closer:"ui-icon ui-icon-close",pin_up:"ui-icon ui-icon-pin-w",pin_down:"ui-icon ui-icon-pin-s"});o.extend(i.styling.bootstrap2,{closer:"icon-remove",pin_up:"icon-pause",pin_down:"icon-play"});o.extend(i.styling.bootstrap3,{closer:"glyphicon glyphicon-remove",pin_up:"glyphicon glyphicon-pause",pin_down:"glyphicon glyphicon-play"});o.extend(i.styling.fontawesome,{closer:"fa fa-times",pin_up:"fa fa-pause",pin_down:"fa fa-play"})});
|
||||
//# sourceMappingURL=pnotify.buttons.js.map
|
||||
1
public/js/v1.1.7/lib/pnotify/pnotify.buttons.js.map
Normal file
1
public/js/v1.1.7/lib/pnotify/pnotify.buttons.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["?"],"names":["root","factory","define","amd","exports","module","require","jQuery","PNotify","this","$","prototype","options","buttons","closer","closer_hover","sticker","sticker_hover","show_on_nonblock","labels","close","stick","unstick","classes","pin_up","pin_down","modules","init","notice","that","elem","on","mouseenter","e","nonblock","trigger","css","mouseleave","class","aria-role","aria-pressed","hide","tabindex","title","cursor","visibility","click","queueRemove","cancelRemove","bind","styles","attr","children","addClass","append","prependTo","container","remove","update","find","extend","styling","brighttheme","jqueryui","bootstrap2","bootstrap3","fontawesome"],"mappings":"CACC,SAAUA,EAAMC,GACS,kBAAXC,SAAyBA,OAAOC,IAEvCD,OAAO,mBAAoB,SAAU,WAAYD,GACvB,gBAAZG,UAA0C,mBAAXC,QAE7CA,OAAOD,QAAUH,EAAQK,QAAQ,UAAWA,QAAQ,cAGpDL,EAAQD,EAAKO,OAAQP,EAAKQ,UAEhCC,KAAM,SAASC,EAAGF,GAChBA,EAAQG,UAAUC,QAAQC,SAEtBC,QAAQ,EAERC,cAAc,EAEdC,SAAS,EAETC,eAAe,EAEfC,kBAAkB,EAElBC,QACIC,MAAO,QACPC,MAAO,QACPC,QAAS,WAGbC,SACIT,OAAQ,KACRU,OAAQ,KACRC,SAAU,MAGlBjB,GAAQG,UAAUe,QAAQb,SACtBC,OAAQ,KACRE,QAAS,KAETW,KAAM,SAASC,EAAQhB,GACnB,GAAIiB,GAAOpB,IACXmB,GAAOE,KAAKC,IACRC,WAAc,SAASC,IAEfJ,EAAKjB,QAAQI,SAAcY,EAAOhB,QAAQsB,UAAYN,EAAOhB,QAAQsB,SAASA,WAAaL,EAAKjB,QAAQM,kBACxGW,EAAKb,QAAQmB,QAAQ,+BAA+BC,IAAI,aAAc,YAEtEP,EAAKjB,QAAQE,QAAac,EAAOhB,QAAQsB,UAAYN,EAAOhB,QAAQsB,SAASA,WAAaL,EAAKjB,QAAQM,kBACvGW,EAAKf,OAAOsB,IAAI,aAAc,YAGtCC,WAAc,SAASJ,GAEfJ,EAAKjB,QAAQK,eACbY,EAAKb,QAAQoB,IAAI,aAAc,SAE/BP,GAAKjB,QAAQG,cACbc,EAAKf,OAAOsB,IAAI,aAAc,YAM1C3B,MAAKO,QAAUN,EAAE,WACb4B,MAAS,qBACTC,YAAa,SACbC,eAAgBZ,EAAOhB,QAAQ6B,KAAO,QAAU,OAChDC,SAAY,IACZC,MAASf,EAAOhB,QAAQ6B,KAAO7B,EAAQO,OAAOE,MAAQT,EAAQO,OAAOG,QACrEc,KACIQ,OAAU,UACVC,WAAcjC,EAAQK,cAAgB,SAAW,WAErD6B,MAAS,WACLlB,EAAOhB,QAAQ6B,MAAQb,EAAOhB,QAAQ6B,IAClCb,GAAOhB,QAAQ6B,KACfb,EAAOmB,cAEPnB,EAAOoB,cAEXtC,GAAED,MAAM0B,QAAQ,kCAGvBc,KAAK,8BAA+B,WACjC,GAAIzB,GAAyC,OAAhCK,EAAKjB,QAAQW,QAAQC,OAAkBI,EAAOsB,OAAO1B,OAASK,EAAKjB,QAAQW,QAAQC,OAC5FC,EAA6C,OAAlCI,EAAKjB,QAAQW,QAAQE,SAAoBG,EAAOsB,OAAOzB,SAAWI,EAAKjB,QAAQW,QAAQE,QACtGf,GAAED,MACD0C,KAAK,QAASvB,EAAOhB,QAAQ6B,KAAOZ,EAAKjB,QAAQO,OAAOE,MAAQQ,EAAKjB,QAAQO,OAAOG,SACpF8B,WACAD,KAAK,QAAS,IACdE,SAASzB,EAAOhB,QAAQ6B,KAAOjB,EAASC,GACxC0B,KAAK,eAAgBvB,EAAOhB,QAAQ6B,KAAO,QAAU,UAEzDa,OAAO,YACPnB,QAAQ,+BACRoB,UAAU3B,EAAO4B,aACb5C,EAAQI,SAAYY,EAAOhB,QAAQsB,UAAYN,EAAOhB,QAAQsB,SAASA,WAAatB,EAAQM,mBAC7FT,KAAKO,QAAQoB,IAAI,UAAW,OAIhC3B,MAAKK,OAASJ,EAAE,WACZ4B,MAAS,oBACTC,YAAa,SACbG,SAAY,IACZC,MAAS/B,EAAQO,OAAOC,MACxBgB,KAAQQ,OAAU,UAAWC,WAAcjC,EAAQG,aAAe,SAAW,WAC7E+B,MAAS,WACLlB,EAAO6B,QAAO,EACd5B,GAAKb,QAAQoB,IAAI,aAAc,SAC/BP,GAAKf,OAAOsB,IAAI,aAAc,aAGrCkB,OAAO5C,EAAE,YAAa4B,MAAoC,OAA3B1B,EAAQW,QAAQT,OAAkBc,EAAOsB,OAAOpC,OAASF,EAAQW,QAAQT,UACxGyC,UAAU3B,EAAO4B,aACb5C,EAAQE,QAAWc,EAAOhB,QAAQsB,UAAYN,EAAOhB,QAAQsB,SAASA,WAAatB,EAAQM,mBAC5FT,KAAKK,OAAOsB,IAAI,UAAW,SAGnCsB,OAAQ,SAAS9B,EAAQhB,IAEhBA,EAAQE,QAAWc,EAAOhB,QAAQsB,UAAYN,EAAOhB,QAAQsB,SAASA,WAAatB,EAAQM,iBAC5FT,KAAKK,OAAOsB,IAAI,UAAW,QACpBxB,EAAQE,QACfL,KAAKK,OAAOsB,IAAI,UAAW,UAE1BxB,EAAQI,SAAYY,EAAOhB,QAAQsB,UAAYN,EAAOhB,QAAQsB,SAASA,WAAatB,EAAQM,iBAC7FT,KAAKO,QAAQoB,IAAI,UAAW,QACrBxB,EAAQI,SACfP,KAAKO,QAAQoB,IAAI,UAAW,QAGhC3B,MAAKO,QAAQmB,QAAQ,8BAErB1B,MAAKK,OAAO6C,KAAK,QAAQR,KAAK,QAAS,IAAIE,SAAoC,OAA3BzC,EAAQW,QAAQT,OAAkBc,EAAOsB,OAAOpC,OAASF,EAAQW,QAAQT,OAEzHF,GAAQK,cACRR,KAAKO,QAAQoB,IAAI,aAAc,UACtBR,EAAOhB,QAAQsB,UAAYN,EAAOhB,QAAQsB,SAASA,WAAatB,EAAQM,kBACjFT,KAAKO,QAAQoB,IAAI,aAAc,UAE/BxB,GAAQG,aACRN,KAAKK,OAAOsB,IAAI,aAAc,UACrBR,EAAOhB,QAAQsB,UAAYN,EAAOhB,QAAQsB,SAASA,WAAatB,EAAQM,kBACjFT,KAAKK,OAAOsB,IAAI,aAAc,YAI1C1B,GAAEkD,OAAOpD,EAAQqD,QAAQC,aACrBhD,OAAQ,0BACRU,OAAQ,2BACRC,SAAU,mDAEdf,GAAEkD,OAAOpD,EAAQqD,QAAQE,UACrBjD,OAAQ,wBACRU,OAAQ,wBACRC,SAAU,yBAEdf,GAAEkD,OAAOpD,EAAQqD,QAAQG,YACrBlD,OAAQ,cACRU,OAAQ,aACRC,SAAU,aAEdf,GAAEkD,OAAOpD,EAAQqD,QAAQI,YACrBnD,OAAQ,6BACRU,OAAQ,4BACRC,SAAU,4BAEdf,GAAEkD,OAAOpD,EAAQqD,QAAQK,aACrBpD,OAAQ,cACRU,OAAQ,cACRC,SAAU","file":"pnotify.buttons.js.map"}
|
||||
2
public/js/v1.1.7/lib/require.js
Normal file
2
public/js/v1.1.7/lib/require.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/v1.1.7/lib/require.js.map
Normal file
1
public/js/v1.1.7/lib/require.js.map
Normal file
File diff suppressed because one or more lines are too long
@@ -40,7 +40,24 @@
|
||||
{{^hideSettingsTab}}
|
||||
<div role="tabpanel" class="tab-pane fade {{#openTabSettings}}in active{{/openTabSettings}}" id="{{dialogMapSettingsContainerId}}">
|
||||
<form role="form" class="form-horizontal">
|
||||
<h4><i class="fa fa-share-alt fa-fw"></i> Share settings</h4>
|
||||
|
||||
<h4 class="pf-dynamic-area">Configuration</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-1 col-sm-11">
|
||||
<div class="col-sm-12 col-xs-6 checkbox checkbox-primary" title="remove expired EOL connections">
|
||||
<input id="{{deleteExpiredConnectionsId}}" name="deleteExpiredConnections" value="1" type="checkbox" {{#deleteExpiredConnections}}checked{{/deleteExpiredConnections}}>
|
||||
<label for="{{deleteExpiredConnectionsId}}">Auto delete expired connections</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6"></div>
|
||||
</div>
|
||||
|
||||
<h4 class="pf-dynamic-area">Share settings</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-11">
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<ul class="nav navbar-nav {{dialogNavigationClass}}" role="tablist">
|
||||
<li class="active">
|
||||
<a role="tab" data-toggle="tab" data-name="infoSummary" href="#{{dialogSummaryContainerId}}">
|
||||
<i class="fa fa-info fa-fw"></i> Info
|
||||
<i class="fa fa-street-view fa-fw"></i> Information
|
||||
</a>
|
||||
</li>
|
||||
<li class="">
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<kbd>right click</kbd> somewhere on the map to open the context menu.
|
||||
</p>
|
||||
<ul class="list-unstyled well" style=" margin-left: 10px;">
|
||||
<li><i class="fa fa-info fa-fw"></i> Show some basic map information</li>
|
||||
<li><i class="fa fa-street-view fa-fw"></i> Show some basic map information</li>
|
||||
<li><i class="fa fa-plus fa-fw"></i> Add a new system at the position, you clicked at</li>
|
||||
<li><i class="fa fa-object-ungroup fa-fw"></i> Select all (unlocked) systems on the map</li>
|
||||
<li><i class="fa fa-filter fa-fw"></i> Filter map connections by a scope <small><a href="#" data-target="#pf-manual-scrollspy-anchor-connection-scope">more</a></small></li>
|
||||
@@ -407,7 +407,7 @@
|
||||
<h4 id="pf-manual-scrollspy-anchor-notification-desktop">Desktop push notifications</h4>
|
||||
<p>
|
||||
<em class="pf-brand">pathfinder</em> supports desktop push notifications. The first time this kind of notification is send to a client, a Browser security question must be confirmed.
|
||||
In order to test desktop push notifications <kbd>click</kbd> the "Notification test" <small>(<i class="fa fa-bullhorn fa-fw"></i>)</small> option in the main menu <small>(<i class="fa fa-bars fa-fw"></i>)</small>.<br>
|
||||
In order to test desktop push notifications <kbd>click</kbd> the "Notification test" <small>(<i class="fa fa-bullhorn fa-fw"></i>)</small> option in the main menu.<br>
|
||||
Events that trigger desktop notification.
|
||||
</p>
|
||||
<ul>
|
||||
|
||||
@@ -8,18 +8,25 @@
|
||||
<i class="fa fa-user fa-fw"></i> Account
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a role="tab" data-toggle="tab" data-name="share" href="#{{settingsShareContainerId}}">
|
||||
<i class="fa fa-share-alt fa-fw"></i> Share
|
||||
</a>
|
||||
</li>
|
||||
{{#userData.character}}
|
||||
<li>
|
||||
<a role="tab" data-toggle="tab" data-name="share" href="#{{settingsShareContainerId}}">
|
||||
<i class="fa fa-share-alt fa-fw"></i> Share
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a role="tab" data-toggle="tab" data-name="share" href="#{{settingsCharacterContainerId}}">
|
||||
<i class="fa fa-male fa-fw"></i> Character
|
||||
</a>
|
||||
</li>
|
||||
{{/userData.character}}
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane fade in active" id="{{settingsAccountContainerId}}">
|
||||
{{! account tab ================================================================================================ }}
|
||||
{{! account tab ================================================================================================== }}
|
||||
<form role="form" class="form-horizontal">
|
||||
|
||||
{{! Username }}
|
||||
@@ -147,7 +154,7 @@
|
||||
</form>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="{{settingsShareContainerId}}">
|
||||
{{! sharing tab ================================================================================================ }}
|
||||
{{! sharing tab ================================================================================================== }}
|
||||
|
||||
<form role="form" class="form-horizontal">
|
||||
|
||||
@@ -164,58 +171,44 @@
|
||||
</div>
|
||||
|
||||
{{#userData.character}}
|
||||
<h4 class="pf-dynamic-area"><img src="{{ccpImageServer}}Character/{{id}}_32.jpg"> Private maps "<em class="pf-map-type-private">{{name}}</em>"</h4>
|
||||
|
||||
<h4 class="pf-dynamic-area"><img src="{{ccpImageServer}}Character/{{id}}_64.jpg"> Private maps "<em class="pf-map-type-private">{{name}}</em>"</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-9">
|
||||
<div class="col-sm-10">
|
||||
<label for="privateSharing">
|
||||
<input id="privateSharing" type="checkbox" name="privateSharing" data-toggle="toggle" value="1" {{#shared}}checked{{/shared}}>
|
||||
map invite for private maps
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
|
||||
<label class="control-label" for="privateSharing">
|
||||
<input id="privateSharing" type="checkbox" name="privateSharing" data-toggle="toggle" value="1" {{#shared}}checked{{/shared}}>
|
||||
map invite for private maps
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-sm-3"></div>
|
||||
</div>
|
||||
|
||||
{{#corporation}}
|
||||
<h4 class="pf-dynamic-area"><img src="{{ccpImageServer}}Corporation/{{id}}_32.png"> Corporation maps "<em class="pf-map-type-corporation">{{name}}</em>"</h4>
|
||||
|
||||
<h4 class="pf-dynamic-area"><img src="{{ccpImageServer}}Corporation/{{id}}_64.png"> Corporation maps "<em class="pf-map-type-corporation">{{name}}</em>"</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-9">
|
||||
<div class="col-sm-10">
|
||||
<label for="corporationSharing">
|
||||
<input id="corporationSharing" type="checkbox" name="corporationSharing" data-toggle="toggle" value="1" {{#shared}}checked{{/shared}}>
|
||||
map invite for corporation maps
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
|
||||
<label class="control-label" for="corporationSharing">
|
||||
<input id="corporationSharing" type="checkbox" name="corporationSharing" data-toggle="toggle" value="1" {{#shared}}checked{{/shared}}>
|
||||
map invite for corporation maps
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-sm-3"></div>
|
||||
</div>
|
||||
|
||||
{{/corporation}}
|
||||
|
||||
{{#alliance}}
|
||||
<h4 class="pf-dynamic-area"><img src="{{ccpImageServer}}Alliance/{{id}}_32.png"> Alliance maps "<em class="pf-map-type-alliance">{{name}}</em>"</h4>
|
||||
<h4 class="pf-dynamic-area"><img src="{{ccpImageServer}}Alliance/{{id}}_64.png"> Alliance maps "<em class="pf-map-type-alliance">{{name}}</em>"</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-9">
|
||||
<div class="col-sm-10">
|
||||
<label for="allianceSharing">
|
||||
<input id="allianceSharing" type="checkbox" name="allianceSharing" data-toggle="toggle" value="1" {{#shared}}checked{{/shared}}>
|
||||
map invite for alliance maps
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
|
||||
<label class="control-label" for="allianceSharing">
|
||||
<input id="allianceSharing" type="checkbox" name="allianceSharing" data-toggle="toggle" value="1" {{#shared}}checked{{/shared}}>
|
||||
map invite for alliance maps
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-sm-3"></div>
|
||||
</div>
|
||||
{{/alliance}}
|
||||
|
||||
@@ -225,5 +218,33 @@
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="{{settingsCharacterContainerId}}">
|
||||
{{! character tab ================================================================================================ }}
|
||||
|
||||
<form role="form" class="form-horizontal">
|
||||
|
||||
{{#userData.character}}
|
||||
<h4 class="pf-dynamic-area"><img src="{{ccpImageServer}}Character/{{id}}_64.jpg"> {{name}}</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-8 col-sm-6">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-1 col-sm-11">
|
||||
<div class="checkbox checkbox-primary" title="show/share current location on map">
|
||||
<input id="logLocation" name="logLocation" value="1" type="checkbox" {{#logLocation}}checked{{/logLocation}}>
|
||||
<label for="logLocation">Auto update current location</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6"></div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="character">
|
||||
|
||||
{{/userData.character}}
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -63,9 +63,12 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="4" class="separator-right">character</th>
|
||||
<th colspan="4" class="separator-right hidden-xs hidden-sm">systems</th>
|
||||
<th colspan="4" class="separator-right hidden-xs hidden-sm">connection</th>
|
||||
<th colspan="4" class="separator-right hidden-xs hidden-sm">signatures</th>
|
||||
<th colspan="3" class="hidden-xs hidden-sm">systems</th>
|
||||
<th class="text-right separator-right"><span class="hidden-md hidden-lg">sys.</span></th>
|
||||
<th colspan="3" class="hidden-xs hidden-sm">connection</th>
|
||||
<th class="text-right separator-right"><span class="hidden-md hidden-lg">con.</span></th>
|
||||
<th colspan="3" class="hidden-xs hidden-sm">signatures</th>
|
||||
<th class="text-right separator-right"><span class="hidden-md hidden-lg">sig.</span></th>
|
||||
<th class="text-right">sum</th>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user