diff --git a/server/scripts/planning_edit.js b/server/scripts/planning_edit.js index 0b74b4d..0204450 100644 --- a/server/scripts/planning_edit.js +++ b/server/scripts/planning_edit.js @@ -69,6 +69,8 @@ async function planningSwitchChanged() { var sailorIsSteuermann; var sailors = []; +var knownIds = []; +var known = []; async function sailorSelected(sid) { $('#menu-sailor').hideMenu(); @@ -103,8 +105,12 @@ async function sailorSelected(sid) { }, success: async function (data, status, xhr) { await sync(); - planningEdit(rid); - hideLoader(); + if ((sid === null) || (sid in knownIds)) { + planningEdit(rid); + hideLoader(); + } else { + location.reload(); + } } }); } @@ -118,6 +124,11 @@ async function sailorsSearch() { item += ''; $('#menu-sailor').find('.content').find('.list-group').append(item); } + if ($('#input-edit-search').val().length == 0) { + known.forEach(function (entry) { + $('#menu-sailor').find('.content').find('.list-group').append(entry); + }); + } if ($('#input-edit-search').val().length >= 3) { sailors.forEach(function (entry) { if (search($('#input-edit-search').val(), entry.keywords)) { @@ -125,18 +136,30 @@ async function sailorsSearch() { } }); } else { - var item = ''; + var item = ''; $('#menu-sailor').find('.content').find('.list-group').append(item); } } async function initSailors() { sailors = []; + known = []; + var plannings = await dbGetDataIndex('plannings', 'user', USER_ID); + knownIds = {}; + for (var p in plannings) { + p = plannings[p]; + if (p.steuermann !== null) knownIds[p.steuermann] = true; + var crew = p.crew.split(','); + for (var c in crew) { + c = crew[c]; + if (c != '') knownIds[c] = true; + } + } var dbSailors = await dbGetData('sailors'); dbSailors.sort(function(a,b){ return a.name.localeCompare(b.name); }); - for (s in dbSailors) { + for (var s in dbSailors) { var item = ''; item += '' + dbSailors[s].name + ''; item += ''; @@ -145,6 +168,7 @@ async function initSailors() { keywords: [dbSailors[s].name], content: item }); + if (dbSailors[s].id in knownIds) known.push(item); } }