From 72f01b153d96a672e67dfef7242da8d28f3b4ca4 Mon Sep 17 00:00:00 2001 From: Exodus4D Date: Sun, 8 May 2016 03:24:22 +0200 Subject: [PATCH] #142 added NullSec Data/Relic sites to C1/2/3 wormholes as signature option --- app/main/controller/api/signature.php | 3 + js/app/config/signature_type.js | 111 ++++++++++++++---- js/app/ui/system_signature.js | 83 ++++++++----- .../js/v1.0.0RC3/app/config/signature_type.js | 111 ++++++++++++++---- .../js/v1.0.0RC3/app/ui/system_signature.js | 83 ++++++++----- 5 files changed, 277 insertions(+), 114 deletions(-) diff --git a/app/main/controller/api/signature.php b/app/main/controller/api/signature.php index 471695b1b..d7de9dd43 100644 --- a/app/main/controller/api/signature.php +++ b/app/main/controller/api/signature.php @@ -91,6 +91,9 @@ public function save($f3){ if(!$system->dry()){ // update/save signature + /** + * @var $signature Model\SystemSignatureModel + */ $signature = null; if( isset($data['pk']) ){ // try to get system by "primary key" diff --git a/js/app/config/signature_type.js b/js/app/config/signature_type.js index 2fdb09b52..7b0150b3f 100644 --- a/js/app/config/signature_type.js +++ b/js/app/config/signature_type.js @@ -6,11 +6,70 @@ * proofed, signature names (copy & paste from scanning window) */ -define([], function() { +define(['jquery'], function($) { 'use strict'; - // system effects + // signature sources + // http://de.sistersprobe.wikia.com/wiki/EVE_Sister_Core_Scanner_Probe_Wiki + + + // NullSec Relic sites, which can also spawn in C1, C2, C3 wormholes + var nullSecRelicSites = { + 10: 'Ruined Angel Crystal Quarry', + 11: 'Ruined Angel Monument Site', + 12: 'Ruined Angel Science Outpost', + 13: 'Ruined Angel Temple Site', + 14: 'Ruined Blood Raider Crystal Quarry', + 15: 'Ruined Blood Raider Monument Site', + 16: 'Ruined Blood Raider Science Outpost', + 17: 'Ruined Blood Raider Temple Site', + 18: 'Ruined Guristas Crystal Quarry', + 19: 'Ruined Guristas Monument Site', + 20: 'Ruined Guristas Science Outpost', + 21: 'Ruined Guristas Temple Site', + 22: 'Ruined Sansha Crystal Quarry', + 23: 'Ruined Sansha Monument Site', + 24: 'Ruined Sansha Science Outpost', + 25: 'Ruined Sansha Temple Site', + 26: 'Ruined Serpentis Crystal Quarry', + 27: 'Ruined Serpentis Monument Site', + 28: 'Ruined Serpentis Science Outpost', + 29: 'Ruined Serpentis Temple Site' + }; + + // NulSec Data sites, which can also spawn in C1, C2, C3 wormholes + var nullSecDataSites = { + 10: 'Abandoned Research Complex DA005', + 11: 'Abandoned Research Complex DA015', + 12: 'Abandoned Research Complex DC007', + 13: 'Abandoned Research Complex DC021', + 14: 'Abandoned Research Complex DC035', + 15: 'Abandoned Research Complex DG003', + 16: 'Central Angel Command Center', + 17: 'Central Angel Data Mining Site', + 18: 'Central Angel Sparking Transmitter', + 19: 'Central Angel Survey Site', + 20: 'Central Blood Raider Command Center', + 21: 'Central Blood Raider Data Mining Site', + 22: 'Central Blood Raider Sparking Transmitter', + 23: 'Central Blood Raider Survey Site', + 24: 'Central Guristas Command Center', + 25: 'Central Guristas Data Mining Center', + 26: 'Central Guristas Sparking Transmitter', + 27: 'Central Guristas Survey Site', + 28: 'Central Sansha Command Center', + 29: 'Central Sansha Data Mining Site', + 30: 'Central Sansha Sparking Transmitter', + 31: 'Central Sansha Survey Site', + 32: 'Central Serpentis Command Center', + 33: 'Central Serpentis Data Mining Site', + 34: 'Central Serpentis Sparking Transmitter', + 35: 'Central Serpentis Survey Site' + }; + + + // signature types var signatureTypes = { 1: { // system type (wh) 1: { // C1 (area id) @@ -20,14 +79,14 @@ define([], function() { 3: 'Phase Catalyst Node', 4: 'The Line' }, - 2: { // Relic - 1: 'Forgotten Perimeter Coronation Platform', - 2: 'Forgotten Perimeter Power Array' - }, - 3: { // Data - 1: 'Unsecured Perimeter Amplifier', - 2: 'Unsecured Perimeter Information Center ' - }, + 2: $.extend({}, nullSecRelicSites, { // Relic + 1: 'Forgotten Perimeter Coronation Platform', //* + 2: 'Forgotten Perimeter Power Array' //* + }), + 3: $.extend({}, nullSecDataSites, { // Data + 1: 'Unsecured Perimeter Amplifier', //* + 2: 'Unsecured Perimeter Information Center' //* + }), 4: { // Gas 1: 'Barren Perimeter Reservoir', //* 2: 'Token Perimeter Reservoir', //* @@ -62,14 +121,14 @@ define([], function() { 3: 'The Ruins of Enclave Cohort 27', 4: 'Sleeper Data Sanctuary' }, - 2: { // Relic - 1: 'Forgotten Perimeter Gateway', - 2: 'Forgotten Perimeter Habitation Coils' - }, - 3: { // Data - 1: 'Unsecured Perimeter Comms Relay', - 2: 'Unsecured Perimeter Transponder Farm ' - }, + 2: $.extend({}, nullSecRelicSites, { // Relic + 1: 'Forgotten Perimeter Gateway', //* + 2: 'Forgotten Perimeter Habitation Coils' //* + }), + 3: $.extend({}, nullSecDataSites, { // Data + 1: 'Unsecured Perimeter Comms Relay', //* + 2: 'Unsecured Perimeter Transponder Farm' //* + }), 4: { // Gas 1: 'Barren Perimeter Reservoir', //* 2: 'Token Perimeter Reservoir', //* @@ -100,14 +159,14 @@ define([], function() { 3: 'Solar Cell', 4: 'The Oruze Construct' }, - 2: { // Relic - 1: 'Forgotten Frontier Quarantine Outpost', - 2: 'Forgotten Frontier Recursive Depot' - }, - 3: { // Data - 1: 'Unsecured Frontier Database', - 2: 'Unsecured Frontier Receiver' - }, + 2: $.extend({}, nullSecRelicSites, { // Relic + 1: 'Forgotten Frontier Quarantine Outpost', //* + 2: 'Forgotten Frontier Recursive Depot' //* + }), + 3: $.extend({}, nullSecDataSites, { // Data + 1: 'Unsecured Frontier Database', //* + 2: 'Unsecured Frontier Receiver' //* + }), 4: { // Gas 1: 'Barren Perimeter Reservoir', //* 2: 'Token Perimeter Reservoir', //* diff --git a/js/app/ui/system_signature.js b/js/app/ui/system_signature.js index 2447ccad1..9a868c44b 100644 --- a/js/app/ui/system_signature.js +++ b/js/app/ui/system_signature.js @@ -235,7 +235,7 @@ define([ } } - // delete signatures ==================================================== + // delete signatures ------------------------------------------------------------------------------------------ if(deleteOutdatedSignatures === true){ // callback function after row deleted @@ -254,7 +254,7 @@ define([ } } - // add new signatures =================================================== + // add new signatures ----------------------------------------------------------------------------------------- for(var k = 0; k < signatureData.length; k++){ // and add "new" row var newRowElement = addSignatureRow(currentSystemData.systemData, signatureData[k], false); @@ -266,7 +266,7 @@ define([ } - // show notification ==================================================== + // show notification ------------------------------------------------------------------------------------------ if( notificationCounter.added > 0 || notificationCounter.changed > 0 || @@ -612,7 +612,7 @@ define([ var moduleElement = $(this); - // add toolbar buttons for table ------------------------------------- + // add toolbar buttons for table ------------------------------------------------------------------------------ var tableToolbar = $('
', { class: config.tableToolsClass }).append( @@ -693,7 +693,7 @@ define([ moduleElement.append(tableToolbar); - // add toolbar action for table ================================================================================ + // add toolbar action for table ------------------------------------------------------------------------------- var tableToolbarAction = $('
', { class: config.tableToolsActionClass }); @@ -718,7 +718,7 @@ define([ table.makeEditable(systemData); - // scanned signatures progress bar ============================================================================= + // scanned signatures progress bar ---------------------------------------------------------------------------- var moduleConfig = { name: 'form/progress', position: tableToolbar, @@ -736,7 +736,7 @@ define([ Render.showModule(moduleConfig, moduleData); - // event listener for global "paste" signatures into the page ================================================== + // 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 @@ -829,7 +829,7 @@ define([ }); - // Input sig name ------------------------------------------------------------------------ + // Input sig name --------------------------------------------------------------------------------------------- sigNameFields.editable({ type: 'text', title: 'signature id', @@ -856,7 +856,7 @@ define([ }); - // Select sig group (master) ------------------------------------------------------------- + // Select sig group (master) ---------------------------------------------------------------------------------- sigGroupFields.editable({ type: 'select', title: 'group', @@ -913,7 +913,7 @@ define([ }); - // Select sig type (slave: depends on sig type) ----------------------------------------- + // Select sig type (slave: depends on sig type) --------------------------------------------------------------- sigTypeFields.on('init', function(e, editable) { // check if there are initial options available var options = editable.input.options.source.bind(e.target)(); @@ -952,7 +952,7 @@ define([ } }); - // Textarea sig description ------------------------------------------------------------- + // Textarea sig description ----------------------------------------------------------------------------------- sigDescriptionFields.editable({ type: 'textarea', title: 'description', @@ -987,7 +987,7 @@ define([ tableElement.parents('.' + config.tableToolsActionClass).css( 'height', '-=35px' ); }); - // open next field dialog --------------------------------------------------------------- + // open next field dialog ------------------------------------------------------------------------------------- openNextEditDialogOnSave(sigNameFields); openNextEditDialogOnSave(sigGroupFields); }; @@ -1073,6 +1073,10 @@ define([ if(incomingWHData.length > 0){ newSelectOptions.push({ text: 'Incoming WHs', children: incomingWHData}); } + }else{ + // groups without "children" (optgroup) should be sorted by "value" + // this is completely optional and not necessary! + newSelectOptions = newSelectOptions.sortBy('text'); } // update cache (clone array) -> further manipulation to this array, should not be cached @@ -1099,7 +1103,7 @@ define([ // if selectOptions available -> add "empty" option as well if(newSelectOptionsCount > 0){ - newSelectOptions.unshift({ value: 0, text: ''}); + newSelectOptions.unshift({ value: '0', text: ''}); } return newSelectOptions; @@ -1360,7 +1364,7 @@ define([ var moduleElement = $(this); - // create new signature table ------------------------------------------- + // create new signature table --------------------------------------------------------------------------------- var table = $('', { class: ['display', 'compact', 'nowrap', config.sigTableClass, config.sigTablePrimaryClass].join(' ') }); @@ -1408,14 +1412,14 @@ define([ var tempData = {}; - // set id ------------------------------------------------------------------------------------------ + // set id --------------------------------------------------------------------------------------------- var sigId = 0; if(data.id > 0){ sigId = data.id; } tempData.id = sigId; - // set status -------------------------------------------------------------------------------------- + // set status ----------------------------------------------------------------------------------------- var statusClass = ''; if(data.updated.character !== undefined){ statusClass = Util.getStatusInfoForCharacter(data.updated.character, 'class'); @@ -1427,7 +1431,7 @@ define([ status_sort: statusClass }; - // set name ---------------------------------------------------------------------------------------- + // set name ------------------------------------------------------------------------------------------- var sigName = ' 0){ sigName += 'data-pk="' + data.id + '" '; @@ -1436,7 +1440,7 @@ define([ tempData.name = sigName; - // set group id ------------------------------------------------------------------------------------ + // set group id --------------------------------------------------------------------------------------- var sigGroup = ' 0){ sigGroup += 'data-pk="' + data.id + '" '; @@ -1451,7 +1455,7 @@ define([ group_sort: data.groupId }; - // set type id ------------------------------------------------------------------------------------- + // set type id ---------------------------------------------------------------------------------------- var sigType = ' 0){ sigType += 'data-pk="' + data.id + '" '; @@ -1470,7 +1474,7 @@ define([ tempData.type = sigType; - // set description --------------------------------------------------------------------------------- + // set description ------------------------------------------------------------------------------------ var sigDescription = ' 0){ sigDescription += 'data-pk="' + data.id + '" '; @@ -1479,20 +1483,20 @@ define([ tempData.description = sigDescription; - // set created ------------------------------------------------------------------------------------- + // set created ---------------------------------------------------------------------------------------- tempData.created = data.created; - // set updated ------------------------------------------------------------------------------------- + // set updated ---------------------------------------------------------------------------------------- tempData.updated = data.updated; - // info icon --------------------------------------------------------------------------------------- + // info icon ------------------------------------------------------------------------------------------ var infoButton = ''; if(data.id > 0){ infoButton = ''; } tempData.info = infoButton; - // action icon ------------------------------------------------------------------------------------- + // action icon ---------------------------------------------------------------------------------------- var actionButton = ''; tempData.action = { @@ -1653,7 +1657,7 @@ define([ switch(cellData.action){ case 'add': - // add new signature --------------------------------------------------------------- + // add new signature ------------------------------------------------------------------ $(cell).on('click', function(e) { // submit all fields within a table row var formFields = rowElement.find('.editable'); @@ -1684,7 +1688,7 @@ define([ // highlight newRowElement.pulseTableRow('added'); - // prepare "add signature" table for new entry -> reset -------------------------------------------- + // prepare "add signature" table for new entry -> reset ------------------- var signatureData = formatSignatureData(systemData, [emptySignatureData], emptySignatureOptions); var dataSecondaryElement = $('.' + config.sigTableSecondaryClass); @@ -1703,7 +1707,7 @@ define([ }); break; case 'delete': - // delete signature ---------------------------------------------------------------- + // delete signature ------------------------------------------------------------------- var confirmationSettings = { container: 'body', placement: 'left', @@ -1757,7 +1761,7 @@ define([ }); - // set multi row select ----------------------------------------------------------------- + // set multi row select --------------------------------------------------------------------------------------- tablePrimaryElement.on('click', 'tr', function(e){ if(e.ctrlKey) { $(this).toggleClass('selected'); @@ -1767,7 +1771,7 @@ define([ } }); - // draw event for signature table ------------------------------------------------------- + // draw event for signature table ----------------------------------------------------------------------------- signatureTableApi.on('draw.dt', function(){ // check delete button checkDeleteSignaturesButton(); @@ -1866,11 +1870,11 @@ define([ // init dataTables initSignatureDataTable(systemData); - // draw "new signature" add table -------------------------------------------- + // draw "new signature" add table ----------------------------------------------------------------------------- moduleElement.drawSignatureTableToolbar(systemData); - // request signature data for system ----------------------------------------- + // request signature data for system -------------------------------------------------------------------------- var requestData = { systemIds: [systemData.id] @@ -1921,6 +1925,20 @@ define([ } }; + // some custom array functions + var initArrayFunctions = function(){ + /** + * sort array of objects by property name + * @param p + * @returns {Array.} + */ + Array.prototype.sortBy = function(p) { + return this.slice(0).sort(function(a,b) { + return (a[p] > b[p]) ? 1 : (a[p] < b[p]) ? -1 : 0; + }); + }; + }; + // check if module already exists var moduleElement = parentElement.find('.' + config.systemSigModuleClass); @@ -1944,6 +1962,9 @@ define([ } }); }else{ + // init array prototype functions + initArrayFunctions(); + moduleElement = getModule(parentElement, systemData); showModule(moduleElement); } diff --git a/public/js/v1.0.0RC3/app/config/signature_type.js b/public/js/v1.0.0RC3/app/config/signature_type.js index 2fdb09b52..7b0150b3f 100644 --- a/public/js/v1.0.0RC3/app/config/signature_type.js +++ b/public/js/v1.0.0RC3/app/config/signature_type.js @@ -6,11 +6,70 @@ * proofed, signature names (copy & paste from scanning window) */ -define([], function() { +define(['jquery'], function($) { 'use strict'; - // system effects + // signature sources + // http://de.sistersprobe.wikia.com/wiki/EVE_Sister_Core_Scanner_Probe_Wiki + + + // NullSec Relic sites, which can also spawn in C1, C2, C3 wormholes + var nullSecRelicSites = { + 10: 'Ruined Angel Crystal Quarry', + 11: 'Ruined Angel Monument Site', + 12: 'Ruined Angel Science Outpost', + 13: 'Ruined Angel Temple Site', + 14: 'Ruined Blood Raider Crystal Quarry', + 15: 'Ruined Blood Raider Monument Site', + 16: 'Ruined Blood Raider Science Outpost', + 17: 'Ruined Blood Raider Temple Site', + 18: 'Ruined Guristas Crystal Quarry', + 19: 'Ruined Guristas Monument Site', + 20: 'Ruined Guristas Science Outpost', + 21: 'Ruined Guristas Temple Site', + 22: 'Ruined Sansha Crystal Quarry', + 23: 'Ruined Sansha Monument Site', + 24: 'Ruined Sansha Science Outpost', + 25: 'Ruined Sansha Temple Site', + 26: 'Ruined Serpentis Crystal Quarry', + 27: 'Ruined Serpentis Monument Site', + 28: 'Ruined Serpentis Science Outpost', + 29: 'Ruined Serpentis Temple Site' + }; + + // NulSec Data sites, which can also spawn in C1, C2, C3 wormholes + var nullSecDataSites = { + 10: 'Abandoned Research Complex DA005', + 11: 'Abandoned Research Complex DA015', + 12: 'Abandoned Research Complex DC007', + 13: 'Abandoned Research Complex DC021', + 14: 'Abandoned Research Complex DC035', + 15: 'Abandoned Research Complex DG003', + 16: 'Central Angel Command Center', + 17: 'Central Angel Data Mining Site', + 18: 'Central Angel Sparking Transmitter', + 19: 'Central Angel Survey Site', + 20: 'Central Blood Raider Command Center', + 21: 'Central Blood Raider Data Mining Site', + 22: 'Central Blood Raider Sparking Transmitter', + 23: 'Central Blood Raider Survey Site', + 24: 'Central Guristas Command Center', + 25: 'Central Guristas Data Mining Center', + 26: 'Central Guristas Sparking Transmitter', + 27: 'Central Guristas Survey Site', + 28: 'Central Sansha Command Center', + 29: 'Central Sansha Data Mining Site', + 30: 'Central Sansha Sparking Transmitter', + 31: 'Central Sansha Survey Site', + 32: 'Central Serpentis Command Center', + 33: 'Central Serpentis Data Mining Site', + 34: 'Central Serpentis Sparking Transmitter', + 35: 'Central Serpentis Survey Site' + }; + + + // signature types var signatureTypes = { 1: { // system type (wh) 1: { // C1 (area id) @@ -20,14 +79,14 @@ define([], function() { 3: 'Phase Catalyst Node', 4: 'The Line' }, - 2: { // Relic - 1: 'Forgotten Perimeter Coronation Platform', - 2: 'Forgotten Perimeter Power Array' - }, - 3: { // Data - 1: 'Unsecured Perimeter Amplifier', - 2: 'Unsecured Perimeter Information Center ' - }, + 2: $.extend({}, nullSecRelicSites, { // Relic + 1: 'Forgotten Perimeter Coronation Platform', //* + 2: 'Forgotten Perimeter Power Array' //* + }), + 3: $.extend({}, nullSecDataSites, { // Data + 1: 'Unsecured Perimeter Amplifier', //* + 2: 'Unsecured Perimeter Information Center' //* + }), 4: { // Gas 1: 'Barren Perimeter Reservoir', //* 2: 'Token Perimeter Reservoir', //* @@ -62,14 +121,14 @@ define([], function() { 3: 'The Ruins of Enclave Cohort 27', 4: 'Sleeper Data Sanctuary' }, - 2: { // Relic - 1: 'Forgotten Perimeter Gateway', - 2: 'Forgotten Perimeter Habitation Coils' - }, - 3: { // Data - 1: 'Unsecured Perimeter Comms Relay', - 2: 'Unsecured Perimeter Transponder Farm ' - }, + 2: $.extend({}, nullSecRelicSites, { // Relic + 1: 'Forgotten Perimeter Gateway', //* + 2: 'Forgotten Perimeter Habitation Coils' //* + }), + 3: $.extend({}, nullSecDataSites, { // Data + 1: 'Unsecured Perimeter Comms Relay', //* + 2: 'Unsecured Perimeter Transponder Farm' //* + }), 4: { // Gas 1: 'Barren Perimeter Reservoir', //* 2: 'Token Perimeter Reservoir', //* @@ -100,14 +159,14 @@ define([], function() { 3: 'Solar Cell', 4: 'The Oruze Construct' }, - 2: { // Relic - 1: 'Forgotten Frontier Quarantine Outpost', - 2: 'Forgotten Frontier Recursive Depot' - }, - 3: { // Data - 1: 'Unsecured Frontier Database', - 2: 'Unsecured Frontier Receiver' - }, + 2: $.extend({}, nullSecRelicSites, { // Relic + 1: 'Forgotten Frontier Quarantine Outpost', //* + 2: 'Forgotten Frontier Recursive Depot' //* + }), + 3: $.extend({}, nullSecDataSites, { // Data + 1: 'Unsecured Frontier Database', //* + 2: 'Unsecured Frontier Receiver' //* + }), 4: { // Gas 1: 'Barren Perimeter Reservoir', //* 2: 'Token Perimeter Reservoir', //* diff --git a/public/js/v1.0.0RC3/app/ui/system_signature.js b/public/js/v1.0.0RC3/app/ui/system_signature.js index 2447ccad1..9a868c44b 100644 --- a/public/js/v1.0.0RC3/app/ui/system_signature.js +++ b/public/js/v1.0.0RC3/app/ui/system_signature.js @@ -235,7 +235,7 @@ define([ } } - // delete signatures ==================================================== + // delete signatures ------------------------------------------------------------------------------------------ if(deleteOutdatedSignatures === true){ // callback function after row deleted @@ -254,7 +254,7 @@ define([ } } - // add new signatures =================================================== + // add new signatures ----------------------------------------------------------------------------------------- for(var k = 0; k < signatureData.length; k++){ // and add "new" row var newRowElement = addSignatureRow(currentSystemData.systemData, signatureData[k], false); @@ -266,7 +266,7 @@ define([ } - // show notification ==================================================== + // show notification ------------------------------------------------------------------------------------------ if( notificationCounter.added > 0 || notificationCounter.changed > 0 || @@ -612,7 +612,7 @@ define([ var moduleElement = $(this); - // add toolbar buttons for table ------------------------------------- + // add toolbar buttons for table ------------------------------------------------------------------------------ var tableToolbar = $('
', { class: config.tableToolsClass }).append( @@ -693,7 +693,7 @@ define([ moduleElement.append(tableToolbar); - // add toolbar action for table ================================================================================ + // add toolbar action for table ------------------------------------------------------------------------------- var tableToolbarAction = $('
', { class: config.tableToolsActionClass }); @@ -718,7 +718,7 @@ define([ table.makeEditable(systemData); - // scanned signatures progress bar ============================================================================= + // scanned signatures progress bar ---------------------------------------------------------------------------- var moduleConfig = { name: 'form/progress', position: tableToolbar, @@ -736,7 +736,7 @@ define([ Render.showModule(moduleConfig, moduleData); - // event listener for global "paste" signatures into the page ================================================== + // 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 @@ -829,7 +829,7 @@ define([ }); - // Input sig name ------------------------------------------------------------------------ + // Input sig name --------------------------------------------------------------------------------------------- sigNameFields.editable({ type: 'text', title: 'signature id', @@ -856,7 +856,7 @@ define([ }); - // Select sig group (master) ------------------------------------------------------------- + // Select sig group (master) ---------------------------------------------------------------------------------- sigGroupFields.editable({ type: 'select', title: 'group', @@ -913,7 +913,7 @@ define([ }); - // Select sig type (slave: depends on sig type) ----------------------------------------- + // Select sig type (slave: depends on sig type) --------------------------------------------------------------- sigTypeFields.on('init', function(e, editable) { // check if there are initial options available var options = editable.input.options.source.bind(e.target)(); @@ -952,7 +952,7 @@ define([ } }); - // Textarea sig description ------------------------------------------------------------- + // Textarea sig description ----------------------------------------------------------------------------------- sigDescriptionFields.editable({ type: 'textarea', title: 'description', @@ -987,7 +987,7 @@ define([ tableElement.parents('.' + config.tableToolsActionClass).css( 'height', '-=35px' ); }); - // open next field dialog --------------------------------------------------------------- + // open next field dialog ------------------------------------------------------------------------------------- openNextEditDialogOnSave(sigNameFields); openNextEditDialogOnSave(sigGroupFields); }; @@ -1073,6 +1073,10 @@ define([ if(incomingWHData.length > 0){ newSelectOptions.push({ text: 'Incoming WHs', children: incomingWHData}); } + }else{ + // groups without "children" (optgroup) should be sorted by "value" + // this is completely optional and not necessary! + newSelectOptions = newSelectOptions.sortBy('text'); } // update cache (clone array) -> further manipulation to this array, should not be cached @@ -1099,7 +1103,7 @@ define([ // if selectOptions available -> add "empty" option as well if(newSelectOptionsCount > 0){ - newSelectOptions.unshift({ value: 0, text: ''}); + newSelectOptions.unshift({ value: '0', text: ''}); } return newSelectOptions; @@ -1360,7 +1364,7 @@ define([ var moduleElement = $(this); - // create new signature table ------------------------------------------- + // create new signature table --------------------------------------------------------------------------------- var table = $('
', { class: ['display', 'compact', 'nowrap', config.sigTableClass, config.sigTablePrimaryClass].join(' ') }); @@ -1408,14 +1412,14 @@ define([ var tempData = {}; - // set id ------------------------------------------------------------------------------------------ + // set id --------------------------------------------------------------------------------------------- var sigId = 0; if(data.id > 0){ sigId = data.id; } tempData.id = sigId; - // set status -------------------------------------------------------------------------------------- + // set status ----------------------------------------------------------------------------------------- var statusClass = ''; if(data.updated.character !== undefined){ statusClass = Util.getStatusInfoForCharacter(data.updated.character, 'class'); @@ -1427,7 +1431,7 @@ define([ status_sort: statusClass }; - // set name ---------------------------------------------------------------------------------------- + // set name ------------------------------------------------------------------------------------------- var sigName = ' 0){ sigName += 'data-pk="' + data.id + '" '; @@ -1436,7 +1440,7 @@ define([ tempData.name = sigName; - // set group id ------------------------------------------------------------------------------------ + // set group id --------------------------------------------------------------------------------------- var sigGroup = ' 0){ sigGroup += 'data-pk="' + data.id + '" '; @@ -1451,7 +1455,7 @@ define([ group_sort: data.groupId }; - // set type id ------------------------------------------------------------------------------------- + // set type id ---------------------------------------------------------------------------------------- var sigType = ' 0){ sigType += 'data-pk="' + data.id + '" '; @@ -1470,7 +1474,7 @@ define([ tempData.type = sigType; - // set description --------------------------------------------------------------------------------- + // set description ------------------------------------------------------------------------------------ var sigDescription = ' 0){ sigDescription += 'data-pk="' + data.id + '" '; @@ -1479,20 +1483,20 @@ define([ tempData.description = sigDescription; - // set created ------------------------------------------------------------------------------------- + // set created ---------------------------------------------------------------------------------------- tempData.created = data.created; - // set updated ------------------------------------------------------------------------------------- + // set updated ---------------------------------------------------------------------------------------- tempData.updated = data.updated; - // info icon --------------------------------------------------------------------------------------- + // info icon ------------------------------------------------------------------------------------------ var infoButton = ''; if(data.id > 0){ infoButton = ''; } tempData.info = infoButton; - // action icon ------------------------------------------------------------------------------------- + // action icon ---------------------------------------------------------------------------------------- var actionButton = ''; tempData.action = { @@ -1653,7 +1657,7 @@ define([ switch(cellData.action){ case 'add': - // add new signature --------------------------------------------------------------- + // add new signature ------------------------------------------------------------------ $(cell).on('click', function(e) { // submit all fields within a table row var formFields = rowElement.find('.editable'); @@ -1684,7 +1688,7 @@ define([ // highlight newRowElement.pulseTableRow('added'); - // prepare "add signature" table for new entry -> reset -------------------------------------------- + // prepare "add signature" table for new entry -> reset ------------------- var signatureData = formatSignatureData(systemData, [emptySignatureData], emptySignatureOptions); var dataSecondaryElement = $('.' + config.sigTableSecondaryClass); @@ -1703,7 +1707,7 @@ define([ }); break; case 'delete': - // delete signature ---------------------------------------------------------------- + // delete signature ------------------------------------------------------------------- var confirmationSettings = { container: 'body', placement: 'left', @@ -1757,7 +1761,7 @@ define([ }); - // set multi row select ----------------------------------------------------------------- + // set multi row select --------------------------------------------------------------------------------------- tablePrimaryElement.on('click', 'tr', function(e){ if(e.ctrlKey) { $(this).toggleClass('selected'); @@ -1767,7 +1771,7 @@ define([ } }); - // draw event for signature table ------------------------------------------------------- + // draw event for signature table ----------------------------------------------------------------------------- signatureTableApi.on('draw.dt', function(){ // check delete button checkDeleteSignaturesButton(); @@ -1866,11 +1870,11 @@ define([ // init dataTables initSignatureDataTable(systemData); - // draw "new signature" add table -------------------------------------------- + // draw "new signature" add table ----------------------------------------------------------------------------- moduleElement.drawSignatureTableToolbar(systemData); - // request signature data for system ----------------------------------------- + // request signature data for system -------------------------------------------------------------------------- var requestData = { systemIds: [systemData.id] @@ -1921,6 +1925,20 @@ define([ } }; + // some custom array functions + var initArrayFunctions = function(){ + /** + * sort array of objects by property name + * @param p + * @returns {Array.} + */ + Array.prototype.sortBy = function(p) { + return this.slice(0).sort(function(a,b) { + return (a[p] > b[p]) ? 1 : (a[p] < b[p]) ? -1 : 0; + }); + }; + }; + // check if module already exists var moduleElement = parentElement.find('.' + config.systemSigModuleClass); @@ -1944,6 +1962,9 @@ define([ } }); }else{ + // init array prototype functions + initArrayFunctions(); + moduleElement = getModule(parentElement, systemData); showModule(moduleElement); }