From 1aabb3c96a44b127b5000f1912f877c7ab44cff6 Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Mon, 3 Jun 2024 22:17:38 +1200 Subject: [PATCH 1/9] Add new option to UI - highlight additional indis Added option to select more individuals that can be highlighted in the diagram simply by listing them. --- app/FormSubmission.php | 7 +++++++ config.php | 7 +++++-- resources/css/gvexport.css | 4 ++++ resources/javascript/gvexport.js | 1 + .../views/MainPage/Appearance/TileDesign.phtml | 13 ++++++++++++- 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/FormSubmission.php b/app/FormSubmission.php index aa861200..42b577dd 100644 --- a/app/FormSubmission.php +++ b/app/FormSubmission.php @@ -286,6 +286,13 @@ public function load($vars, $module): array if (isset($vars["no_highlight_xref_list"]) && $this->isXrefListValid($vars["no_highlight_xref_list"])) { $settings['no_highlight_xref_list'] = $vars["no_highlight_xref_list"]; } + $settings['highlight_custom_indis'] = isset($vars["highlight_custom_indis"]); + if (isset($vars["highlight_custom_col"]) && $this->isValidColourHex($vars["highlight_custom_col"])) { + $settings['highlight_custom_col'] = $vars["highlight_custom_col"]; + } + if (isset($vars["highlight_custom"]) && $this->isXrefListValid($vars["highlight_custom"])) { + $settings['highlight_custom'] = $vars["highlight_custom"]; + } if (isset($vars["border_col"]) && $this->isValidColourHex($vars["border_col"])) { $settings['border_col'] = $vars["border_col"]; } diff --git a/config.php b/config.php index ab311561..b5f40df6 100644 --- a/config.php +++ b/config.php @@ -117,8 +117,11 @@ 'indi_background_age_low' => 0, // For background colour option for age, this is the age for the low colour - this age and anything younger gets the low colour 'indi_background_age_high' => 100, // For background colour option for age, this is the age for the high colour - this age and anything older gets this colour 'highlight_start_indis' => false, // Whether to use a different colour for starting individuals - 'no_highlight_xref_list' => '', // XREFs in this list are not highlighted - 'highlight_col' => '#FFFDC3', // Background of starting individuals + 'no_highlight_xref_list' => '', // XREFs in this list are not highlighted when highlighting starting individuals + 'highlight_col' => '#FFFDC3', // Background of starting individuals + 'highlight_custom_indis' => '', // Whether to highlight a customer list of XREFs in addition to the about starting individuals + 'highlight_custom_col' => '#FFFDC3', // The colour to highlight the custom highlighted individuals + 'highlight_custom' => '', // List of XREFs of other individuals to highlight 'border_col' => '#606060', // Border colour (in UI this is Family border colour, but by default the individual border is the same as family) 'indi_border_col' => '#606060', // Border colour of individuals 'birth_prefix' => '*', // Text shown on chart before the birthdate diff --git a/resources/css/gvexport.css b/resources/css/gvexport.css index 4a599fdf..a7c9b7e8 100644 --- a/resources/css/gvexport.css +++ b/resources/css/gvexport.css @@ -464,6 +464,10 @@ span.NAME { margin-left: 10px; } +#highlight_custom { + width: calc(100% - 48px); +} + .align-middle-container { display:flex; align-items:center; diff --git a/resources/javascript/gvexport.js b/resources/javascript/gvexport.js index 1e1e1b61..71dbd25b 100644 --- a/resources/javascript/gvexport.js +++ b/resources/javascript/gvexport.js @@ -513,6 +513,7 @@ function loadSettings(data, isNamedSetting = false) { setSavedDiagramsPanel(); Form.showHide(document.getElementById('arrow_group'),document.getElementById('colour_arrow_related').checked) Form.showHide(document.getElementById('startcol_option'),document.getElementById('highlight_start_indis').checked) + Form.showHide(document.getElementById('highlight_custom_option'),document.getElementById('highlight_custom_indis').checked) toggleUpdateButton(); if (autoUpdatePrior) { if (firstRender) { diff --git a/resources/views/MainPage/Appearance/TileDesign.phtml b/resources/views/MainPage/Appearance/TileDesign.phtml index 6c7933f5..18a02267 100644 --- a/resources/views/MainPage/Appearance/TileDesign.phtml +++ b/resources/views/MainPage/Appearance/TileDesign.phtml @@ -161,7 +161,7 @@ use Fisharebest\Webtrees\Auth;
> -
> +
> " />
@@ -172,6 +172,17 @@ use Fisharebest\Webtrees\Auth;
+
+ > +
" > + " /> +
+ + + +
+
+
" />
From 645b825b4d12568a09613f1da38bda5463dfbe98 Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Mon, 3 Jun 2024 22:25:00 +1200 Subject: [PATCH 2/9] Highlight diagram with new highlight list Adds functionality to previous commit that added UI --- app/Person.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Person.php b/app/Person.php index 544d4e6f..4f5abf1c 100644 --- a/app/Person.php +++ b/app/Person.php @@ -187,7 +187,9 @@ function printPersonLabel(string $pid, SharedNoteList $sharednotes, bool $relate } // Get background colour - if ($this->isStartingIndividual($pid) && $this->dot->settings['highlight_start_indis'] == "true" && !$this->isValueInList($this->dot->settings['no_highlight_xref_list'], $pid)) { + if ($this->isValueInList($this->dot->settings['highlight_custom'], $pid)) { + $indi_bg_colour = $this->dot->settings["highlight_custom_col"]; + } else if ($this->isStartingIndividual($pid) && $this->dot->settings['highlight_start_indis'] == "true" && !$this->isValueInList($this->dot->settings['no_highlight_xref_list'], $pid)) { $indi_bg_colour = $this->dot->settings["highlight_col"]; } else if ($this->dot->settings["sharednote_col_enable"] && $sharednotes->indiHasSharedNote($pid)) { $indi_bg_colour = $sharednotes->getSharedNoteColour($pid); From 980933381edc672f4218a9c1900bcd365f761505 Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Mon, 3 Jun 2024 22:43:53 +1200 Subject: [PATCH 3/9] Update custom highlight option Small fix to make sure disabling option stops highlights in diagram Make diagram refresh when refresh button next to list is clicked - ignored if autoupdate is true as normal change event will fire. --- app/Person.php | 2 +- resources/views/page.phtml | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/Person.php b/app/Person.php index 4f5abf1c..40518f71 100644 --- a/app/Person.php +++ b/app/Person.php @@ -187,7 +187,7 @@ function printPersonLabel(string $pid, SharedNoteList $sharednotes, bool $relate } // Get background colour - if ($this->isValueInList($this->dot->settings['highlight_custom'], $pid)) { + if ($this->dot->settings['highlight_custom_indis'] && $this->isValueInList($this->dot->settings['highlight_custom'], $pid)) { $indi_bg_colour = $this->dot->settings["highlight_custom_col"]; } else if ($this->isStartingIndividual($pid) && $this->dot->settings['highlight_start_indis'] == "true" && !$this->isValueInList($this->dot->settings['no_highlight_xref_list'], $pid)) { $indi_bg_colour = $this->dot->settings["highlight_col"]; diff --git a/resources/views/page.phtml b/resources/views/page.phtml index c73dabc6..d1fe676b 100644 --- a/resources/views/page.phtml +++ b/resources/views/page.phtml @@ -167,7 +167,12 @@ $usegraphviz = $vars['graphviz_bin'] != ""; const form = document.getElementById('gvexport'); const rendering = document.getElementById('rendering'); - + // Trigger action when button pressed to refresh diagram after changing custom highlight list + document.querySelector('#refresh_highlight_custom').addEventListener('click', function(e) { + if (!autoUpdate) { + updateRender(); + } + }); // Trigger action when "Update" button clicked document.querySelector('.update-browser-rendering').addEventListener('click', function(e) { if (Form.isIndiBlank() === false) { From 726bddbc97ffe0894561751079edd4efa7f582de Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Mon, 3 Jun 2024 23:02:23 +1200 Subject: [PATCH 4/9] Added new highlight function to indi click options Updated the options for what happens when you click on an individual to include adding them to the list of highlighted users. --- app/Settings.php | 2 +- resources/javascript/MainPage/UI.js | 39 +++++++++++++++++++++ resources/views/MainPage/Translations.phtml | 1 + 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/app/Settings.php b/app/Settings.php index 1d5df2ad..1507e9b1 100644 --- a/app/Settings.php +++ b/app/Settings.php @@ -67,7 +67,7 @@ public function __construct(){ $this->defaultSettings['stripe_col_type_options'] = [self::OPTION_STRIPE_NONE => 'No stripe', self::OPTION_STRIPE_SEX_COLOUR => 'Based on individual's sex', self::OPTION_STRIPE_VITAL_COLOUR => 'Based on vital status', self::OPTION_STRIPE_AGE_COLOUR => 'Based on age']; $this->defaultSettings['border_col_type_options'] = [self::OPTION_BORDER_CUSTOM_COLOUR => 'Custom', self::OPTION_BORDER_SEX_COLOUR => 'Based on individual's sex', self::OPTION_BORDER_FAMILY => 'Same as family border', self::OPTION_BORDER_VITAL_COLOUR => 'Based on vital status', self::OPTION_BORDER_AGE_COLOUR => 'Based on age']; $this->defaultSettings['settings_sort_order_options'] = [0 => 'Oldest first', 10 => 'Newest first', 20 => 'Alphabetical order', 30 => 'Reverse alphabetical order']; - $this->defaultSettings['click_action_indi_options'] = [0 => 'Open individual\'s page', 10 => 'Add individual to list of starting individuals', 20 => 'Replace starting individuals with this individual', 30 => 'Add this individual to the list of stopping individuals', 40 => 'Replace stopping individuals with this individual', 50 => 'Show menu', 60 => 'Do nothing']; + $this->defaultSettings['click_action_indi_options'] = [0 => 'Open individual\'s page', 10 => 'Add individual to list of starting individuals', 20 => 'Replace starting individuals with this individual', 30 => 'Add this individual to the list of stopping individuals', 40 => 'Replace stopping individuals with this individual', 70 => 'Add to list of individuals to highlight', 50 => 'Show menu', 60 => 'Do nothing']; $this->defaultSettings['countries'] = $this->getCountryAbbreviations(); if (!$this->isGraphvizAvailable($this->defaultSettings['graphviz_bin'])) { $this->defaultSettings['graphviz_bin'] = ""; diff --git a/resources/javascript/MainPage/UI.js b/resources/javascript/MainPage/UI.js index a0fc30dc..5d94ea2b 100644 --- a/resources/javascript/MainPage/UI.js +++ b/resources/javascript/MainPage/UI.js @@ -231,6 +231,9 @@ const UI = { case '50': // Show a menu for user to choose UI.tile.showNodeContextMenu(e, url, xref); break; + case '70': // Add XREF to list of custom highlighted individuals + UI.tile.highlightIndividual(xref); + break; // Do nothing - default click action is fine case '0': // Allow link to trigger user page opening case '60': // Do nothing option @@ -260,6 +263,7 @@ const UI = { UI.contextMenu.addContextMenuOption('🔄', 'Replace starting individuals with this individual', UI.tile.replaceStartingIndividualsContextMenu); UI.contextMenu.addContextMenuOption('🛑', 'Add this individual to the list of stopping individuals', UI.tile.addIndividualToStoppingIndividualsContextMenu); UI.contextMenu.addContextMenuOption('🚫', 'Replace stopping individuals with this individual', UI.tile.replaceStoppingIndividualsContextMenu); + UI.contextMenu.addContextMenuOption('🖍️', 'Add to list of individuals to highlight', UI.tile.highlightIndividualContextMenu); }, /** @@ -307,6 +311,15 @@ const UI = { UI.tile.replaceStoppingIndividuals(e.currentTarget.parentElement.getAttribute('data-xref')); }, + /** + * Function for context menu item + * + * @param e Click event + */ + highlightIndividualContextMenu(e) { + UI.tile.highlightIndividual(e.currentTarget.parentElement.getAttribute('data-xref')); + }, + /** * Adds the individual to the starting individual list @@ -375,6 +388,32 @@ const UI = { } }, + /** + * Adds XREF to custom highlight list + * + * @param xref + */ + highlightIndividual(xref) { + if (xref) { + this.addIndiToCustomHighlightList(xref); + handleFormChange(); + UI.contextMenu.clearContextMenu(); + } + }, + + /** + * Adds the XREF to the list of indiviudals to highlight + * + * @param xref + */ + addIndiToCustomHighlightList(xref) { + let list = document.getElementById('highlight_custom'); + const regex = new RegExp(`(?<=,|^)(${xref})(?=,|$)`); + if (!regex.test(list.value.replaceAll(" ','"))) { + appendXrefToList(xref, 'highlight_custom'); + } + }, + /** * Run when setting is changed for what to do when individual is clicked in diagram */ diff --git a/resources/views/MainPage/Translations.phtml b/resources/views/MainPage/Translations.phtml index eb69b30b..dd408a61 100644 --- a/resources/views/MainPage/Translations.phtml +++ b/resources/views/MainPage/Translations.phtml @@ -39,5 +39,6 @@ use Fisharebest\Webtrees\I18N; "Replace starting individuals with this individual":"", "Add this individual to the list of stopping individuals":"", "Replace stopping individuals with this individual":"", + "Add to list of individuals to highlight":"", }; \ No newline at end of file From 5a6e9cb15661205521d9facbcc346a1c09aff400 Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Mon, 3 Jun 2024 23:25:11 +1200 Subject: [PATCH 5/9] For indi click, jump don't pan Updated scrolling when diagram is generated so that the diagram jumps straight to the relevant individual instead of panning. This also introduces a pattern for setting a relevant individual that isn't the last added starting individual --- resources/javascript/MainPage/UI.js | 18 +++++++++++------- resources/javascript/gvexport.js | 4 ++-- resources/views/page.phtml | 19 ++++++++++++------- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/resources/javascript/MainPage/UI.js b/resources/javascript/MainPage/UI.js index 5d94ea2b..a051fd90 100644 --- a/resources/javascript/MainPage/UI.js +++ b/resources/javascript/MainPage/UI.js @@ -54,7 +54,7 @@ const UI = { }, // If the browser render is available, scroll to the xref provided (if it exists) - scrollToRecord(xref) { + scrollToRecord(xref, smooth = true) { const rendering = document.getElementById('rendering'); const svg = rendering.getElementsByTagName('svg')[0].cloneNode(true); let titles = svg.getElementsByTagName('title'); @@ -107,7 +107,11 @@ const UI = { // Why do we multiply the scale by 1 and 1/3? let zoombase = panzoomInst.getTransform().scale * (1 + 1 / 3); let zoom = zoombase * parseFloat(document.getElementById("dpi").value)/72; - panzoomInst.smoothMoveTo((rendering.offsetWidth / 2) - x * zoom, (rendering.offsetHeight / 2) - parseFloat(svg.getAttribute('height')) * zoombase - y * zoom); + if (smooth) { + panzoomInst.smoothMoveTo((rendering.offsetWidth / 2) - x * zoom, (rendering.offsetHeight / 2) - parseFloat(svg.getAttribute('height')) * zoombase - y * zoom); + } else { + panzoomInst.moveTo((rendering.offsetWidth / 2) - x * zoom, (rendering.offsetHeight / 2) - parseFloat(svg.getAttribute('height')) * zoombase - y * zoom); + } return true; } } @@ -341,7 +345,7 @@ const UI = { addIndividualToStartingIndividualsList(xref) { if (xref) { Form.indiList.addIndiToList(xref); - handleFormChange(); + handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -356,7 +360,7 @@ const UI = { Form.indiList.clearIndiList(false); Form.indiList.addIndiToList(xref); mainPage.Url.changeURLXref(xref); - handleFormChange(); + handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -369,7 +373,7 @@ const UI = { addIndividualToStoppingIndividualsList(xref) { if (xref) { Form.stoppingIndiList.addIndiToStopList(xref); - handleFormChange(); + handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -383,7 +387,7 @@ const UI = { if (xref) { Form.stoppingIndiList.clearStopIndiList(false); Form.stoppingIndiList.addIndiToStopList(xref); - handleFormChange(); + handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -396,7 +400,7 @@ const UI = { highlightIndividual(xref) { if (xref) { this.addIndiToCustomHighlightList(xref); - handleFormChange(); + handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, diff --git a/resources/javascript/gvexport.js b/resources/javascript/gvexport.js index 71dbd25b..36ceab78 100644 --- a/resources/javascript/gvexport.js +++ b/resources/javascript/gvexport.js @@ -254,8 +254,8 @@ function getComputedProperty(element, property) { } -function handleFormChange() { - if (autoUpdate) updateRender(); +function handleFormChange(scrollXref = null) { + if (autoUpdate) updateRender(scrollXref); } function removeSettingsEllipsisMenu(menuElement) { diff --git a/resources/views/page.phtml b/resources/views/page.phtml index d1fe676b..8d059cf6 100644 --- a/resources/views/page.phtml +++ b/resources/views/page.phtml @@ -219,7 +219,7 @@ $usegraphviz = $vars['graphviz_bin'] != ""; } }); - function updateRender() { + function updateRender(scrollXref = null) { // Don't overwrite browser settings with default settings if (!firstRender) { // Update settings in browser storage if logged out @@ -349,12 +349,17 @@ $usegraphviz = $vars['graphviz_bin'] != ""; UI.showToast(messages[i]); } } - // Scroll render to last starting individual - let indiList = document.getElementById('xref_list').value.split(","); - for (let i = indiList.length-1; i>=0; i--) { - if (indiList[i].trim() !== "") { - UI.scrollToRecord(indiList[i].trim()); - break; + // Scroll render to scrollXref if it exists, otherwise to the last starting individual + if (scrollXref) { + // Jump don't scroll + UI.scrollToRecord(scrollXref, false); + } else { + let indiList = document.getElementById('xref_list').value.split(","); + for (let i = indiList.length - 1; i >= 0; i--) { + if (indiList[i].trim() !== "") { + UI.scrollToRecord(indiList[i].trim()); + break; + } } } From 0e159542a3397b13aacc3b8b4c62ba3173ab5d34 Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Thu, 6 Jun 2024 12:15:00 +1200 Subject: [PATCH 6/9] Refactor scroll to XREF Updated scroll to XREF to now take position information. Tile for the XREF will be placed at this position on the screen instead of in the middle. Updated diagram so if an individual is updated via clicking on them in diagram, then the update will not switch to loading screen and individual clicked on will be in same position on screen and at same zoom level after the update. --- resources/javascript/MainPage/Form.js | 32 ++++- resources/javascript/MainPage/UI.js | 174 +++++++++++++++----------- resources/javascript/gvexport.js | 9 +- resources/views/page.phtml | 17 +-- 4 files changed, 146 insertions(+), 86 deletions(-) diff --git a/resources/javascript/MainPage/Form.js b/resources/javascript/MainPage/Form.js index 73bdaf23..accc5f13 100644 --- a/resources/javascript/MainPage/Form.js +++ b/resources/javascript/MainPage/Form.js @@ -4,6 +4,36 @@ * @type {{}} */ const Form = { + + /** + * Triggers on form change, to update diagram if autoUpdate enabled + * + * @param xref xref of tile we want to keep in the same position + */ + handleFormChange(xref = null) { + if (autoUpdate) { + // If xref has been nominated, calculate the position on screen, so we can keep it in the same place + if (xref) { + let [found, x, y] = UI.tile.getElementPositionFromXref(xref); + if (found) { + let scale = panzoomInst.getTransform().scale; + // Why is this 1 1/3 number needed? + let zoomBase = scale * (1 + 1/3); + let zoom_value = zoomBase * parseFloat(document.getElementById("dpi").value) / 72; + const rendering = document.getElementById('rendering'); + const svg = rendering.getElementsByTagName('svg')[0]; + let transform = panzoomInst.getTransform(); + updateRender(x*zoom_value + transform.x, parseFloat(svg.getAttribute('height'))*zoomBase + y*zoom_value + transform.y, transform.scale, xref); + } else { + updateRender(); + } + // Nothing fany happening, just update + } else { + updateRender(); + } + } + }, + /** * Add or remove the % sign from the text input * @@ -484,7 +514,7 @@ const Form = { } listEl.value = indiList.join(','); setTimeout(()=>{refreshIndisFromXREFS(false)}, 100); - handleFormChange(); + Form.handleFormChange(); } } } diff --git a/resources/javascript/MainPage/UI.js b/resources/javascript/MainPage/UI.js index a051fd90..5b815f9d 100644 --- a/resources/javascript/MainPage/UI.js +++ b/resources/javascript/MainPage/UI.js @@ -53,70 +53,39 @@ const UI = { } }, - // If the browser render is available, scroll to the xref provided (if it exists) - scrollToRecord(xref, smooth = true) { - const rendering = document.getElementById('rendering'); - const svg = rendering.getElementsByTagName('svg')[0].cloneNode(true); - let titles = svg.getElementsByTagName('title'); - for (let i=0; i maxX) { - maxX = x; - } - if (maxY === null || y > maxY) { - maxY = y; - } - } - - // Get the average of the largest and smallest, so we can position the element in the middle - x = (minX + maxX) / 2; - y = (minY + maxY) / 2; - } else { - x = group.getElementsByTagName('text')[0].getAttribute('x'); - y = group.getElementsByTagName('text')[0].getAttribute('y') - } - - // Why do we multiply the scale by 1 and 1/3? - let zoombase = panzoomInst.getTransform().scale * (1 + 1 / 3); - let zoom = zoombase * parseFloat(document.getElementById("dpi").value)/72; - if (smooth) { - panzoomInst.smoothMoveTo((rendering.offsetWidth / 2) - x * zoom, (rendering.offsetHeight / 2) - parseFloat(svg.getAttribute('height')) * zoombase - y * zoom); - } else { - panzoomInst.moveTo((rendering.offsetWidth / 2) - x * zoom, (rendering.offsetHeight / 2) - parseFloat(svg.getAttribute('height')) * zoombase - y * zoom); - } - return true; - } + /** + * Scroll the diagram to put the provided XREF at the given position on the screen + * Placed in middle of screen if no position specified + * + * @param xref xref of individual whose tile we are positioning + * @param scrollX Position middle of tile this far from left edge of view + * @param scrollY Position middle of tile this far from top of view + * @param zoom Set zoom level to this number + * @returns {boolean} + */ + scrollToRecord(xref, scrollX = null, scrollY = null, zoom = null) { + // Why do we multiply the scale by 1 and 1/3? + let zoomBase = (zoom ? zoom : panzoomInst.getTransform().scale) * (1 + 1 / 3); + let zoom_value = zoomBase * parseFloat(document.getElementById("dpi").value) / 72; + let [found, x, y] = UI.tile.getElementPositionFromXref(xref); + if (!found) { + // The xref isn't in the diagram + return false; + } else { + const rendering = document.getElementById('rendering'); + const svg = rendering.getElementsByTagName('svg')[0]; + if (zoom) { + panzoomInst.zoomTo(0, 0, zoom); + } + if (scrollX && scrollY) { + // Jump xref tile to position. Note this does not scroll + panzoomInst.moveTo(scrollX - x * zoom_value, scrollY - parseFloat(svg.getAttribute('height')) * zoomBase - y * zoom_value); + } else { + // Put in middle of screen if no position specified + panzoomInst.smoothMoveTo((rendering.offsetWidth / 2) - x * zoom_value, (rendering.offsetHeight / 2) - parseFloat(svg.getAttribute('height')) * zoomBase - y * zoom_value); } + return true; } - return false; }, tile: { @@ -215,13 +184,13 @@ const UI = { Form.indiList.clearIndiList(false); Form.indiList.addIndiToList(xref); mainPage.Url.changeURLXref(xref); - handleFormChange(); + Form.handleFormChange(); } break; case '30':// Add to list of stopping individuals if (xref) { Form.stoppingIndiList.addIndiToStopList(xref); - handleFormChange(); + Form.handleFormChange(); } break; case '40':// Remove list of stopping individuals and have just this person @@ -229,7 +198,7 @@ const UI = { Form.stoppingIndiList.clearStopIndiList(false); Form.indiList.addIndiToList(xref); mainPage.Url.changeURLXref(xref); - handleFormChange(); + Form.handleFormChange(); } break; case '50': // Show a menu for user to choose @@ -345,7 +314,7 @@ const UI = { addIndividualToStartingIndividualsList(xref) { if (xref) { Form.indiList.addIndiToList(xref); - handleFormChange(xref); + Form.handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -360,7 +329,7 @@ const UI = { Form.indiList.clearIndiList(false); Form.indiList.addIndiToList(xref); mainPage.Url.changeURLXref(xref); - handleFormChange(xref); + Form.handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -373,7 +342,7 @@ const UI = { addIndividualToStoppingIndividualsList(xref) { if (xref) { Form.stoppingIndiList.addIndiToStopList(xref); - handleFormChange(xref); + Form.handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -387,7 +356,7 @@ const UI = { if (xref) { Form.stoppingIndiList.clearStopIndiList(false); Form.stoppingIndiList.addIndiToStopList(xref); - handleFormChange(xref); + Form.handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -400,7 +369,7 @@ const UI = { highlightIndividual(xref) { if (xref) { this.addIndiToCustomHighlightList(xref); - handleFormChange(xref); + Form.handleFormChange(xref); UI.contextMenu.clearContextMenu(); } }, @@ -430,7 +399,70 @@ const UI = { Data.storeSettings.saveSettingsClient(ID_MAIN_SETTINGS).then(); } }); - } + }, + + /** + * Finds the individual's tile from the provided XREF, and returns position information + * + * @param xref The XREF of the individual we are looking for + * @returns {boolean[]|(boolean|string|number)[]} An array [true if found, x position, y position] + */ + getElementPositionFromXref(xref) { + const rendering = document.getElementById('rendering'); + const svg = rendering.getElementsByTagName('svg')[0].cloneNode(true); + let titles = svg.getElementsByTagName('title'); + for (let i=0; i maxX) { + maxX = x; + } + if (maxY === null || y > maxY) { + maxY = y; + } + } + + // Get the average of the largest and smallest, so we can position the element in the middle + x = (minX + maxX) / 2; + y = (minY + maxY) / 2; + + } else { + x = group.getElementsByTagName('text')[0].getAttribute('x'); + y = group.getElementsByTagName('text')[0].getAttribute('y') + } + return [true, x, y]; + } + } + } + return [false, null, null]; + }, }, /** diff --git a/resources/javascript/gvexport.js b/resources/javascript/gvexport.js index 36ceab78..19024813 100644 --- a/resources/javascript/gvexport.js +++ b/resources/javascript/gvexport.js @@ -253,11 +253,6 @@ function getComputedProperty(element, property) { return (parseFloat(style.getPropertyValue(property))); } - -function handleFormChange(scrollXref = null) { - if (autoUpdate) updateRender(scrollXref); -} - function removeSettingsEllipsisMenu(menuElement) { document.querySelectorAll('.settings_ellipsis_menu').forEach(e => { if (e !== menuElement) e.remove(); @@ -319,7 +314,7 @@ function pageLoaded(Url) { const form = document.getElementById('gvexport'); let changeElems = form.querySelectorAll("input:not([type='file']):not(#save_settings_name):not(#stop_pid):not(.highlight_check):not(#sharednote_col_add), select:not(#simple_settings_list):not(#pid):not(#sharednote_col_add):not(#settings_sort_order):not(#click_action_indi)"); for (let i = 0; i < changeElems.length; i++) { - changeElems[i].addEventListener("change", handleFormChange); + changeElems[i].addEventListener("change", Form.handleFormChange); } let indiSelectEl = form.querySelector("#pid"); indiSelectEl.addEventListener('change', Form.indiList.indiSelectChanged); @@ -802,7 +797,7 @@ function toggleHighlightCheckbox(e) { } else { addToXrefList(xref, 'no_highlight_xref_list'); } - handleFormChange(); + Form.handleFormChange(); } function addToXrefList(value, listElName) { diff --git a/resources/views/page.phtml b/resources/views/page.phtml index 8d059cf6..0dea4abd 100644 --- a/resources/views/page.phtml +++ b/resources/views/page.phtml @@ -219,7 +219,7 @@ $usegraphviz = $vars['graphviz_bin'] != ""; } }); - function updateRender(scrollXref = null) { + function updateRender(scrollX = null, scrollY = null, zoom = null, xref = null) { // Don't overwrite browser settings with default settings if (!firstRender) { // Update settings in browser storage if logged out @@ -250,9 +250,12 @@ $usegraphviz = $vars['graphviz_bin'] != ""; } Form.showHideMatchCheckbox('mark_not_related', 'mark_related_subgroup'); document.getElementById("browser").value = "false"; - let lastDotStr, indiNum, famNum, messages; + let lastDotStr, messages; - rendering.innerHTML = '
Loading...
'; + // Show loading message unless we are doing some nice dynamic tree growing stuff + if (!scrollX || !scrollY) { + rendering.innerHTML = '
Loading...
'; + } rendering.hidden = false; const MARGIN = 50; @@ -349,11 +352,11 @@ $usegraphviz = $vars['graphviz_bin'] != ""; UI.showToast(messages[i]); } } - // Scroll render to scrollXref if it exists, otherwise to the last starting individual - if (scrollXref) { - // Jump don't scroll - UI.scrollToRecord(scrollXref, false); + // scroll to the nominated individual + if (xref) { + UI.scrollToRecord(xref, scrollX, scrollY, zoom); } else { + // Otherwise scroll to last individual on starting individuals list let indiList = document.getElementById('xref_list').value.split(","); for (let i = indiList.length - 1; i >= 0; i--) { if (indiList[i].trim() !== "") { From 9ee90abd3e6a1589a073a108cae7b5d8af76b74f Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Thu, 6 Jun 2024 12:45:04 +1200 Subject: [PATCH 7/9] Fix issue with event listener firing twice --- resources/javascript/MainPage/UI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/javascript/MainPage/UI.js b/resources/javascript/MainPage/UI.js index 5b815f9d..c8a18a5e 100644 --- a/resources/javascript/MainPage/UI.js +++ b/resources/javascript/MainPage/UI.js @@ -154,7 +154,7 @@ const UI = { let linkElements = document.querySelectorAll("svg a"); linkElements = Array.from(linkElements).filter(function (aTag) { - return aTag.hasAttribute('xlink:href'); + return aTag.hasAttribute('xlink:href') && aTag.hasAttribute('xmlns:xlink'); }); for (let i = 0; i < linkElements.length; i++) { From 1056fad4c11f656ad3910fd2152b964176cfe376 Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Thu, 6 Jun 2024 12:45:37 +1200 Subject: [PATCH 8/9] Update help text for highlight option Updated help text to cover the new option to highlight a custom list of individuals --- .../Appearance/Tile design.phtml | 14 +++++++++++++- .../General settings/Browser render.phtml | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/resources/views/MainPage/Help/Detailed information/Appearance/Tile design.phtml b/resources/views/MainPage/Help/Detailed information/Appearance/Tile design.phtml index 52a2c309..f5a3994d 100644 --- a/resources/views/MainPage/Help/Detailed information/Appearance/Tile design.phtml +++ b/resources/views/MainPage/Help/Detailed information/Appearance/Tile design.phtml @@ -11,6 +11,7 @@ use vendor\WebtreesModules\gvexport\GVExport; use vendor\WebtreesModules\gvexport\Help; $page_name = Help::TILE_DESIGN; +$help = new Help(); ?> name() . '::MainPage/Help/HelpHeader',['name' => $page_name]); ?> @@ -33,6 +34,7 @@ $page_name = Help::TILE_DESIGN;

+

    @@ -88,10 +90,13 @@ $page_name = Help::TILE_DESIGN;

    +
    +

    +

    @@ -102,4 +107,11 @@ $page_name = Help::TILE_DESIGN;

    -

    \ No newline at end of file +

    + +

    +: +

    +
      +
    • getHelpLinkHtml(HELP::BROWSER_RENDER);?>
    • +
    \ No newline at end of file diff --git a/resources/views/MainPage/Help/Detailed information/General settings/Browser render.phtml b/resources/views/MainPage/Help/Detailed information/General settings/Browser render.phtml index 6f72ec55..c3314a66 100644 --- a/resources/views/MainPage/Help/Detailed information/General settings/Browser render.phtml +++ b/resources/views/MainPage/Help/Detailed information/General settings/Browser render.phtml @@ -31,6 +31,7 @@ $help = new Help();
  • -
  • -
  • -
  • +
  • -
  • -
  • -
@@ -43,5 +44,6 @@ $help = new Help();
  • getHelpLinkHtml(HELP::XREFs_OF_INDIVIDUALS);?>
  • getHelpLinkHtml(HELP::STOP_PROCESSING_ON);?>
  • +
  • getHelpLinkHtml(HELP::TILE_DESIGN);?>
  • getHelpLinkHtml(HELP::TILE_CONTENTS);?>
\ No newline at end of file From d557504890c9c2ca8f6127520e3b3497e4003515 Mon Sep 17 00:00:00 2001 From: Neriderc <89974636+Neriderc@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:58:05 +1200 Subject: [PATCH 9/9] Update translations --- resources/lang/ca.mo | Bin 70857 -> 75482 bytes resources/lang/ca.po | 141 +++++++++++++++++++++++++- resources/lang/cs.mo | Bin 69308 -> 74430 bytes resources/lang/cs.po | 201 ++++++++++++++++++++++++++++++++++++ resources/lang/de.mo | Bin 74410 -> 80574 bytes resources/lang/de.po | 219 ++++++++++++++++++++++++++++++++++++++-- resources/lang/en-GB.mo | Bin 72275 -> 73945 bytes resources/lang/en-GB.po | 35 +++++++ resources/lang/en-US.mo | Bin 72474 -> 74138 bytes resources/lang/en-US.po | 35 +++++++ resources/lang/nl.po | 35 +++++++ 11 files changed, 655 insertions(+), 11 deletions(-) diff --git a/resources/lang/ca.mo b/resources/lang/ca.mo index 0dff68e924bc087b3b55733bc36a35fa5aecb738..9e77c422df67cb913e2714f9543579837f0204a4 100644 GIT binary patch delta 9889 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 Yg!=Qk!48%0o^Dj~T0T0Be%{sYUq~~$y#N3J delta 6253 zcmYM&3w+P@9>?+T->%GUGaH-D2xA)=3&S!)6KyQDT#{y(OGk3Qbo>b;cb40RQz*G5 z{ZZ~3nM+KrjpNdB>4KzON}Zh7d*9#Vae9>J_w)V#e&5UId-?x$;kfsab>8mFLEeiD z|BP`NQv=TgC^BYt=>Jvy9AZ_i=Z`=vbmB8uf%rC7#K-s)maS$?RcwgC*bYOmJF1H} zZR|D^DDbaYXe-PHtU_FfL3j?;!H-V-2z`mmRp&npL^W6gHL&_v9$R80rlJNi0M+i> zSQqDGW#cwxI|Yrr2-Wa8%*0EWjtODLyn<8kWxR-bEoh-Gme=HfD> zDHBB+D`88=PUuJfrY8k|?2EK*hM-cFi*;}XGHFwYYWN~*CO4e=KTs(SiZI3tqfwcN zMITH;WvU(eVLC=*Cb}7%nMgr1%11Ty0qVi+sMPL7&EP0%2G>z3zK@;IMV|Hf3#g6< zIPq8~UWm%f8q`F$p_X=UB>C41-#8Cm!|ucnP#H+CX-qxrkLq|fM&WYDJ*f9DqXzy9 zs$rifyXMuk^42Z zDQ$*Y(~hXk))(1lW;AN#c~1RCC*F^0rv#PiyQm5ICD`Lz8_N?nMr9xgt7r^q6x47Q zY7bd6@BM;${t?o*@qfndiPos4%0NB$D!zf)n5G<@ zq@WQ+HnSOMgc@mY)S3@=9EptBOvF045IF$mbJT#(I`!93_kw?OW7q~J7Fi{ei6dE> zDaigdzbDd<)*!Scmjc$|4~@JJmZlgr!;Kh#yHGPMLJjy^)L!@jHPAb#_a32UT)CBf zJ{)!I;;9=<9^&nT#Opvyd+}=;WErY zuV?v!!6En-UPM;eq_we`n1c0*XSX5$>S!Ak8o&Wm3QJJ+zoKSflI?l+MGd4nY6rv`_roDK1*NP6wdwAlQu-J}F}N*Xp%{l+!=9+;vXK*O zhM@+y8ui{f)PN44?u)yqC4Jtqoc%&+gJvq~y@NOiL(`1eij%PhHcL0=2zJ9k zI{y(}xaFvrjQ*q7f{D%#)m^Gfj9vIix z?(STiMf?!+@SSX%>X3e9gbt@7$uS@H=jeK~7jUzmF*66-?}C=Y$^RN3W<)_9#g4VR z{v_(0Ud9sq39I43arW~|Sd;h``eVR&`*j_RLBz2bhR>oe_CTHY*D(Z#qn>+rJoz6( zVL25#7QyT|251^!3yjB99E`P?(Py}U%m2*VTsqWGnq*U*IoaNzbCBej!;baevGEKf zN#+M^P=?u0u~+w~X>PmQ^QQ6Zg$I^8-axj2X_CuX#dokjCQPS{`KSR$%&;?Ug0+d$ zP$?gVBXB2bk2HFheSsTsG^Wh7r)P(o!c$cIhEW*Gg2rGAWDF)7bus;jO5qbcfq}E_ z50$G}#zn)NQMq}p9mr?%YzJqNq?tpGy>tW0S+parGA=<4 z@MF{rzs4}Ui`oO_7TUFpLDeT=BzDIr9OJkYYZ33jAiRjQ?>0YE&?b3;Wzm{uK3GF$Ummd0K4KQu7{d^!QQ)5u=%s_vfhZ@*YC*Fzi#0OBBdw`Yb-&9>Ny4YS%a#^;{BaX`e&&(+%BKD7;BQ zshomsaS)zPcK&NKpb+!`YnndyMql$|gfhoS~N6E%RfSd9DeZ=AoJd&0$% ztgw6P&`LY-Gb_oz*6u15%D_F0Ay;1ivNu(uwe}}j2h?U9hhaD!wKS_x1O5oL*1ORM zFJmNL$9?Gav3>pkDx*c{hgaMb^uqUe5%1^&MtWqOy@0-1&xKNk#y1#qoX>}BVy9!` zC-yI+hp{7ZlqS;(6E}_hWVR*=hG!P1K%? z#}N8ADJozOR3?U@Hrptyi&HQd*P&kAi`qQJs0^J)Ex|3+dtSS2h5}JDu7w&vBUENP zqB8v=x~ozcLLnL_qh_)WwR?+D9o)on_!zb3KD%v)!Kl3uhkC9xD%D+4naf5EG#Ay+ zTvR64peAy7H~9~wP(sD8cnkHyo= z$wOEJFJTjWjH++=rQI{_Q4{R^CHYrs22&A^Q&Ham@1yFEIo?3M@B}rJ$U>Xi1XSwV zqEgxe!*Dn%Gjp&Gu0XX{h#Kg>Q4_7`K451Mg3YL?gSroTp&HIYEzLO83m-VHbKHUr zsNaE_z%@+7C(h@I2kphv7N=3)0TQHf=?f@o3j8L5`T$$?k*-{^iliVKvYK0U^+fQWgz_+-xoUnlPJ8P2e1kQsr9wp zJkK1rzX7|WI$nT7^&FnZb|-9V!;AUJPMnORFpwY(r(-7VoyAtfai>T>4n*c?Vo!7I zU9A6a6gE*&|Ew{8;yLu;#Z%{u8OvIHOK%;i&$wjFe=#4^`F!bR?tS9#ukcrM;<;BT z6L!0$_BVyr752f;3~Z!s+M<^p5HiZss>OEOu)%_0`swJ z1((^3w@_-ny)pN}VgU=x>T_n_@zo-d}h4Drbs-ajWR zFTN-uZ%9D{&#?k8KTpZ3m=Mp#U5VxL${)`0%s$+{j3?>XJa12>lddwJ$Wv!3<-PvU v$K!h~F2Fw}Yed$_sQyEj6obN=$BKd_iK1Zl;zK~ef>(W4Ig@AC zq;IZIkAKiM{WitF#V(~foCtG5LUc9Ch?k?x@m(m_ zA9bw5Ih41fM513erF!Bxln#_5m((K1J5ip04rKsuq13w%B^iI{7FQ~rgX5X7Y&-$w zLV@ELl#tHB2QYwJu|28X)= z1EQqTPSzpKN2$P#GPfg8Iyf682j<~DSm~V4Wo^m*T~Vf{AIklw;u|;|_hHL^N=?IW za6lTXtiMuEQI1y*RB9;){ZCP9BEEoEVb&m}R^zQ$iSEI=d_PKg%n+r<;zlHh>Nk|g z#ZT2EybUGvbtrSa9VL=qqwFW?L+t^^RW}ag!fE=1nu1c%e9Xp0C?mfOv+xm=B-@NK z@~tS(??kD1KT6WJ9H#GYhZ6d3DD@3Q1JA}L()BV9T5-ZcdGHS?4_u7|LoG*1o>x)k z^h1>UzQ6z;z{z;wX}Uw}kf^I?Q9Al1N^X4bn0C7Ea7*kVp))vO3s7gFjL<6=Z~>BU zYB~1Br;&6~pJ0SJY%`qBQod#c^Gq@}9jSM=F{5)xFa_noIVh1>fO7w(D9d&U%G51)&aXq+CpMwn{|ZXv-bJ}@ z=V;=QUOyVyioXiPnc)D}pV&}$~jZb1wCpG8#gZXAql z$LYvSK=M*e!`^rUN_)vT2hx)lP(u5jbKz^0k^G9XQKXO8J5L~+9)uZKgmPaQvUR9SP&)b` z%5xh~I<^&?;UPQ@e{;&m73wX!71EKo8tj~yfEnCqp-jmoxDXfN68r&|;G{MrgPyS`fgzf~smJholnrXcOjZJ(kAB)$ zC(=!#qi)8N7})D(tw z75)+L#e!0$XiL3?^iB0E)2rcnypi$`n82$8dMY|H9|j$`ww(AEa^Zm>^OVlF8a_*ci>-9R?o{<=<9p1E9I{+16y6Gcff3HOWBRG zKa9ST_)B)qXXJCp}ZS5-=tT?E}TSpucP~B zrN~dU5I5jfWERyT=9R&#k5M{ae2X6OLd>VU93}Gcr#T?ns>!W7i7N3n$_FuqH!^X< zFm0Lso*#||<%_W|UXEAeI&6;vdAJQuz}N9S+=_jcQwNbb==eREOGo1Brxm(^E-UqV zpM!Vuz`NK7!>jbWU=2#ePh&Q2MVX3^o%3H}F6Cd)z?{|k`C%w!FAl`3uoFIsd9wcB z;h-%i4qz8dXRY=*eW%=;FkL`-A*SOF?1mpWs=M?%Bj0fV z-pln-CYa%Le)#}e2c*WDA>4ZO$+>Bx4JIp2eM_!CM)9sf)3<^9nfIS%Fg zMwE)bK^Z_M@s)@TLFw4VD9>9?`5KhuyA9KEL!1Mt;0cr)Uq|V{rzj&(_vz)6i|;c{rge)6nieGzJe<|%jnftbn=$BEv7Y7pRu_#$N z(YY`iTTqUmbSRE>xC*IPU9>@;pO5m~71$JS!Vhp69>VaW`khdgQQ7bQ3IdSA%7WHP#*BKetEo#<0uc^s9!E|l*na1qtEAKYs!9< z^VLrI7PNB-B~nk=(uHjtNJu_%JcOMow|rL5RUed)o`o`}Gg0pMp-f#BN`!7f$?A2E z8&Nv41tphupc@aNM6l;3o}+!`=0HMNh;{>bGG!mi2yS(*uSH4H$8ixphv(xNn{@|Q z;!w(KQRe(3lqo!jvTEcDRyv%8L-0h5cj90k2QtD-us2@kxB>f9ejf*6=JQIeWDZ9m zd8pohk!MN9%W8G9?j}KG#D{PcX4LEDR*2&%7oiO3PbeLFp`Q6~!@=v$jeAh$=m%_y zSug1gqaDg>=!`P5At)m$M2Uz8WdLO;^({mh`4W^VS%FgD{m%7u&h^bN#dXE6a6;zv zW9)(7qx3ZIW!<4cC{r^5rRTHpMD(Go_Zv_;@)+jfW|W3^p>+5Q$6uW5t+(hLaK|~Y zM}+cVp;MlZGLmY18yBOD=%QEjACF2M58&;bzvNY>23v2{>-f<> zX)H6$r+mW>JtgaL2Ibv27YDwtx8lWk3gxn${4oOW!ZN&Z7x5p#g$K(qkJcQl3zVHg{PX1b{8oU>!L*ouG zZFmU1IQMV*V|EihNO{0FdJ1==+~@mN|MGbW&!ha^LE`^CJ)ZU*^G!CL{gYDXaA6al zs*}i~R!v;$3Cia;ci9_E+ZHZ+hs#I#&OZeWuFuSL**O$LnUX7<@_i_)X9IS^S1}j& zVM}zyTe|GGQ7i1si5^aQG~P^kHcADbp{xRxr!Xn2wW-a|56TCbD{&EHMiiSxERNFcG)kT zx3D|qJ6Xs0An?&FsRIU{BnK6R-~Zb#*DyLw$=Kh|oTMc^Z^|Vg3fm zBy`DlsZvgyo1bWreOaD2;cd&^8;;=1fUS&dFdtb}J# zUSeH#=fNfZaN`FemJum2jetKKF|1-E9I+}Y{K5H+ZV9W=zQk|Y9TGdU*R%;#lz58F zh~G)_DlChkNnr0Y5D^kK^$+z=fZ5QV-Y*-a`2RZVVSYb0*p!@1MqPucc_t;=C z{-E6#pWib-g8;pWhXvQcG zSxw8`s<1fmrkR^zS5ChYzs=0fH4Ud`U8Be6lX}W|IB~(Ep4~%cxm4((F$QCX!crGk zo#^}O`CG3z=TB-hT90Y3nv7Se0hX49P&u zRIOB&Aqh8g`lN7TX?EwhGr&ODGMrJ`P54b&o%WMOA*(XXFrB1z8#CcoWaXJCsnHy)J3HVc${HO}T-kdz5YESWl1#JVyXo z&7R-yHfFY8d+Z0@iDe_) z$J=|M+~n+VPmOT7(q$(~CPzjyM)}NQPc*n#aZF?L2EBd%s+(DC_?Tgxl> zSNj`p+~0pRRsRn|X)1|iNABc*r6=y>v~{8MiBqgtZ4J{US;aK2H%i0oF;4us#6`EE6%a zS*Uy|@P!pJ!&OEZH&8N=uA1z5kz|J_)6?n1k!!@>W+lxnU%+ItO8sod#J4&oLF5$srCoR3YCc5& z`G@&%v7$x1;lhX0ob{~|{hrC`RKJ3)UDihGb&y&Jwd<4Po|*1SGlR*+&t8==e%9eY zr4|U^EdSI}FSCNCH&uVKRsG&(-ARZt7O9w@or7~x|Nko}G?0DD`q%GhSyYDVIlojJ)fx6f)ijxLrPQE6QVxtc{s&L7_XQrjg< zpwS2$HWI(RcP9?)?3sLI=OEXFqt|EeS%i~h4)W2gcdg$IvC-7JsWCUXf7i{O2Oc9H Wjc(@S$1mB#80`j`t;8(Q( delta 6169 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 delta 6410 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 diff --git a/resources/lang/de.po b/resources/lang/de.po index 4e7dd769..65d948f1 100644 --- a/resources/lang/de.po +++ b/resources/lang/de.po @@ -418,12 +418,12 @@ msgstr "Nicht-blutsverwandte Personen mit unbekanntem Geschlecht" #. Option allowing user to change the background colour of individual tiles (decorated and combined modes) #: msgid "Individual background colour" -msgstr "Hintergrundfarbe einer Personenbox" +msgstr "Hintergrundfarbe eines Personenkästchens" #. Option where user can change the background colour of the family record (ovals in simple/decorated mode, attached rectangle in combined mode). Default is a light yellow. #: msgid "Family background" -msgstr "Hintergrundfarbe einer Familienbox" +msgstr "Hintergrundfarbe eines Familienkästchens" #. Option where user can change the colour of the borders of the tiles and family records. #: @@ -505,7 +505,7 @@ msgstr "Suchen Sie nach einer Person im Auswahlfeld, um die herum das Diagramm e #: #, fuzzy msgid "This section includes options that let you decide how to build the tree from your starting individual(s).

Include ancestors

Tick this option to include ancestors of your starting individual(s) and anyone in the tree.

Max levels

The number of generations of ancestors to include. For example, if you chose yourself as your starting person, you may want the diagram to include relatives back to your great-grandparents. In this case, you would type "3" in the Max levels box under Include ancestors, to include your parents' generation, your grandparents' generation, and your great-grandparents' generation.

Include descendants

Whether to include children, grandchildren, etc. of people listed in the tree.

Max levels

Similar to the same option for "Include ancestors", this option indicates how many descendant generations should be included.

Relation types to include

The type of relatives to include when generating the diagram.

Siblings

Include brothers and sisters of anyone in the tree.

All relations

Include cousins, nieces, nephews, and their descendants when generating the tree. Requires "Siblings" to be selected.

Partners

Include the husbands, wives, and partners of those in the tree even if they aren't blood-relatives. There is another option "Mark not blood-related people with different color" that allows these people to be marked in a different colour.

Anyone

Follow all links regardless of whether the person is related. In practice, this generally means that the family of non-relatives (i.e. spouses) are included in the tree.

Use this option to include all records of the selected generations. Note that only records with a link are included, so you may need to include more ancestor or descendant generations (or more starting individuals) to get all your records to show." -msgstr "In diesem Abschnitt können Sie entscheiden, welche Personen ausgehend von den Startpersonen bei der Erstellung des Diagramms berücksichtigt werden sollen.

Vorfahren einbeziehen

Wählen Sie hier aus, ob die Vorfahren der Startpersonen und aller anderen Personen im angezeigten Stammbaum einbezogen werden sollen.

Nachkommen einbeziehen

Ob die Kinder, Enkel, etc. der Personen im angezeigten Baum einbezogen werden sollen.

Maximale Generationen

Hier wählen Sie die Anzahl der Vorfahren- und Nachkommengenerationen aus. Wenn Sie beispielsweise sich selbst als Startperson ausgewählt haben und möchten, dass das Diagramm Vorfahren bis zu ihren Urgroßeltern enthält, wählen Sie die "3" im Feld für die maximalen Generationen für die Vorfahren. Somit werden ihre Eltern, die Generation ihrer Großeltern und die Generation ihrer Urgroßeltern einbezogen. Entsprechendes gilt für die maximalen Generationen der Nachkommen.

Einzubeziehende Verbindungsarten

Hier wählen Sie die Art von Verwandten aus, die bei der Erzeugung des Diagramms einbezogen werden sollen.

Geschwister

Brüder und Schwestern aller Personen im Baum werden einbezogen.

Alle Verwandten

Dies bezieht Cousins, Cousinen, Nichten, Neffen und ggf. deren Nachkommen in die Erstellung des Baums ein. Diese Option erfordert auch die Auswahl der "Geschwister".

Partner

Schließen Sie die Ehemänner, Ehefrauen und Partner der Personen im Baum ein, auch wenn diese keine Blutsverwandten sind. Es gibt eine weitere Option "Nicht blutsverwandte Personen in einer anderen Farbe markieren", mit der diese Personen in einer anderen Farbe dargestellt werden können.

Jeder

Diese Option folgt allen Verbindungen, unabhängig davon, ob die Person verwandt ist. Dies bedeutet im Allgemeinen, dass auch die Familien von über die Partner verschwägerten Personen in den Baum aufgenommen werden.

Verwenden Sie diese Option, um alle Datensätze der ausgewählten Generationen einzuschließen. Beachten Sie, dass nur Personen mit einer Verbindung zum Personenkreis im Diagramm enthalten sind, sodass Sie möglicherweise mehr Vorfahrengenerationen (oder mehr Startpersonen) hinzufügen müssen, wenn Sie alle ihre Datensätze anzeigen wollen." +msgstr "In diesem Abschnitt können Sie entscheiden, welche Personen ausgehend von den Startpersonen bei der Erstellung des Diagramms berücksichtigt werden sollen.

Vorfahren einbeziehen

Wählen Sie hier aus, ob die Vorfahren der Startpersonen und aller anderen Personen im angezeigten Stammbaum einbezogen werden sollen.

Maximale Generationen

Hier wählen Sie die Anzahl der Vorfahrengenerationen aus. Wenn Sie beispielsweise sich selbst als Startperson ausgewählt haben und möchten, dass das Diagramm Vorfahren bis zu ihren Urgroßeltern enthält, wählen Sie die "3" im Feld für die maximalen Generationen für die Vorfahren. Somit werden ihre Eltern, die Generation ihrer Großeltern und die Generation ihrer Urgroßeltern einbezogen.

Nachkommen einbeziehen

Ob die Kinder, Enkel, etc. der Personen im angezeigten Baum einbezogen werden sollen.

Maximale Generationen

Ähnlich wie bei der gleichen Option für "Vorfahren einbeziehen" gibt diese Option an, wie viele Nachkommengenerationen einbezogen werden sollen.

Einzubeziehende Verbindungsarten

Hier wählen Sie die Art von Verwandten aus, die bei der Erzeugung des Diagramms einbezogen werden sollen.

Geschwister

Brüder und Schwestern aller Personen im Baum werden einbezogen.

Alle Verwandten

Dies bezieht Cousins, Cousinen, Nichten, Neffen und ggf. deren Nachkommen in die Erstellung des Baums ein. Diese Option erfordert auch die Auswahl der "Geschwister".

Partner

Schließen Sie die Ehemänner, Ehefrauen und Partner der Personen im Baum ein, auch wenn diese keine Blutsverwandten sind. Es gibt eine weitere Option "Nicht blutsverwandte Personen in einer anderen Farbe markieren", mit der diese Personen in einer anderen Farbe dargestellt werden können.

Jeder

Diese Option folgt allen Verbindungen, unabhängig davon, ob die Person verwandt ist. Dies bedeutet im Allgemeinen, dass auch die Familien von über die Partner verschwägerten Personen in den Baum aufgenommen werden.

Verwenden Sie diese Option, um alle Datensätze der ausgewählten Generationen einzuschließen. Beachten Sie, dass nur Personen mit einer Verbindung zum Personenkreis im Diagramm enthalten sind, sodass Sie möglicherweise mehr Vorfahrengenerationen (oder mehr Startpersonen) hinzufügen müssen, wenn Sie alle ihre Datensätze anzeigen wollen." #. This help message is displayed when the user clicks the help icon next to "Graph direction". https://s3.eu-west-1.amazonaws.com/po-pub/i/MpbVhXyRxeLgMO8FZVXHZhHG.png #: @@ -988,17 +988,17 @@ msgstr "Ausgewählte Hintergrundfarbe" #. New option for setting the colour of the stripe on individual tiles: https://s3.eu-west-1.amazonaws.com/po-pub/i/foB5NxsPsztrvQxIxo0R7HvG.png #: msgid "Individual stripe colour" -msgstr "Balkenfarbe einer Personenbox" +msgstr "Balkenfarbe eines Personenkästchens" #. Option to set the border colour of individuals: https://s3.eu-west-1.amazonaws.com/po-pub/i/U91BOGzE90DmKPN8uGvur5k9.png #: msgid "Individual border colour" -msgstr "Randfarbe einer Personenbox" +msgstr "Randfarbe eines Personenkästchens" #. New name for existing option to set the border colour of tiles: https://s3.eu-west-1.amazonaws.com/po-pub/i/JBcfI43E8P0ZCxLo51Bhpa8U.png #: msgid "Family border colour" -msgstr "Randfarbe der Familienbox" +msgstr "Randfarbe der Familienkästchen" #. Option in dropdown box for stripe, border, and background colour option: https://s3.eu-west-1.amazonaws.com/po-pub/i/foB5NxsPsztrvQxIxo0R7HvG.png #: @@ -1013,7 +1013,7 @@ msgstr "Kein Balken" #. Option to set individuals border colour to the same as families (this is the default): https://s3.eu-west-1.amazonaws.com/po-pub/i/U91BOGzE90DmKPN8uGvur5k9.png #: msgid "Same as family border" -msgstr "Genau wie die Randfarbe einer Familienbox" +msgstr "Genau wie die Randfarbe der Familienkästchen" #. New grouping of settings within new Tile contents section: https://s3.eu-west-1.amazonaws.com/po-pub/i/vjxGtnJth5ODT2NSpQ8tm7WB.png #: @@ -1698,7 +1698,7 @@ msgstr "Symbol für Heirat" #. https://s3.eu-west-1.amazonaws.com/po-pub/i/F5T8grIN2Crn5G9tGzAVeCBL.png #: msgid "Abbreviated month names" -msgstr "" +msgstr "Abgekürzte Monatsnamen" #. Part of help page: https://s3.eu-west-1.amazonaws.com/po-pub/i/08Z4pSSmjQhf0V1ym9AEETTC.png #: @@ -1788,7 +1788,7 @@ msgstr "Hinweis: Der CLDR-Anzeigename wird für den Abgleich verwendet. Die Date #. Part of help page for abbreviations: https://s3.eu-west-1.amazonaws.com/po-pub/i/yVRNezroLkh7Cky5dWr4YYyp.png #: msgid "Selecting this box will shorten the month names. This uses the webtrees built in date shortening; in most cases, the month name will be shortened to three characters, e.g. \\\"Jan\\\" for January" -msgstr "" +msgstr "Wenn Sie dieses Kästchen auswählen, werden die Monatsnamen abgekürzt. Dies nutzt die in webtrees eingebaute Datumsverkürzung; In den meisten Fällen wird der Monatsname auf drei Zeichen gekürzt, z. B. \\\"Jan\\“ für Januar" #. Part of help page for choosing what goes on individual's tiles: https://s3.eu-west-1.amazonaws.com/po-pub/i/u1x88hjQ3UFSTpqwJGuCdDSz.png #: @@ -1857,3 +1857,204 @@ msgstr "Sie können auch wählen, ob das vollständige Heiratsdatum oder nur das msgid "Whether to show the place of marriage in the output. Also see option for abbreviating place names." msgstr "Ob der Ort der Eheschließung im Diagramm angezeigt werden soll. Siehe auch Option zum Abkürzen von Ortsnamen." +#. An option in new setting to sort the saved settings list: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/fSaYMVDGQqSSVdo1qxXE1pqY.png +#: +msgid "Oldest first" +msgstr "Älteste zuerst" + +#. An option in new setting to sort the saved settings list: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/fSaYMVDGQqSSVdo1qxXE1pqY.png +#: +msgid "Newest first" +msgstr "Neueste zuerst" + +#. An option in new setting to sort the saved settings list: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/fSaYMVDGQqSSVdo1qxXE1pqY.png +#: +msgid "Alphabetical order" +msgstr "Alphabetische Reihenfolge" + +#. An option in new setting to sort the saved settings list: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/fSaYMVDGQqSSVdo1qxXE1pqY.png +#: +msgid "Reverse alphabetical order" +msgstr "Umgekehrte alphabetische Reihenfolge" + +#. New setting to sort the saved settings list: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/fSaYMVDGQqSSVdo1qxXE1pqY.png +#: +msgid "Settings list sort order" +msgstr "Sortierung der Liste der Einstellungen" + +#. Part of the help text for the Settings list sort order option: https://s3.eu-west-1.amazonaws.com/po-pub/i/yZYMz48ukCKc7zl43L5QhV0a.png +#: +msgid "The default option. New settings are added to the bottom of the list." +msgstr "Standardauswahl. Neue Einstellungen werden am Ende der Liste eingefügt." + +#. Part of the help text for the Settings list sort order option: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/yZYMz48ukCKc7zl43L5QhV0a.png +#: +msgid "New settings are added to the top of the list." +msgstr "Neue Einstellungen werden zu Beginn der Liste eingefügt." + +#. Part of the help text for the Settings list sort order option: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/yZYMz48ukCKc7zl43L5QhV0a.png +#: +msgid "Settings are sorted based on their name." +msgstr "Einstellungen werden nach ihrem Namen sortiert." + +#. Part of the help text for the Settings list sort order option: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/yZYMz48ukCKc7zl43L5QhV0a.png +#: +msgid "Settings are sorted based on their name, but in reverse." +msgstr "Einstellungen werden nach ihrem Namen sortiert, aber in umgekehrter Reihenfolge." + +#. Part of the help text for the Settings list sort order option: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/yZYMz48ukCKc7zl43L5QhV0a.png +#: +msgid "Note that if you update a saved setting, this will affect how it is sorted under the 'Oldest first' or 'Newest first' options." +msgstr "Beachten Sie beim Aktualisieren einer gespeicherten Einstellung, dass dies einen Einfluss darauf hat, wie es unter Beachtung der Option 'Älteste zuerst' bzw. 'Neueste zuerst' sortiert wird." + +#. Part of the help text for the Settings list sort order option: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/yZYMz48ukCKc7zl43L5QhV0a.png +#: +msgid "This option lets you choose the order of saved settings. The options are" +msgstr "Diese Option erlaubt es die Reihenfolge der gespeicherten Einstellungen auszuwählen. Die Möglichkeiten sind" + +#. One option in the list of things that can happen when you click an individual in the diagram. https://s3.eu-west-1.amazonaws.com/po-pub/i/KpMTncLFJrS21Y0UPolZeCDD.png +#: +msgid "Add individual to list of starting individuals" +msgstr "Person zur Liste der Startpersonen hinzufügen" + +#. One option in the list of things that can happen when you click an individual in the diagram. https://s3.eu-west-1.amazonaws.com/po-pub/i/KpMTncLFJrS21Y0UPolZeCDD.png +#: +msgid "Open individual's page" +msgstr "Seite der Person öffnen" + +#. One option in the list of things that can happen when you click an individual in the diagram. https://s3.eu-west-1.amazonaws.com/po-pub/i/KpMTncLFJrS21Y0UPolZeCDD.png +#: +msgid "Replace starting individuals with this individual" +msgstr "Startpersonen durch diese Person ersetzen" + +#. One option in the list of things that can happen when you click an individual in the diagram. https://s3.eu-west-1.amazonaws.com/po-pub/i/KpMTncLFJrS21Y0UPolZeCDD.png +#: +msgid "Add this individual to the list of stopping individuals" +msgstr "Person zur Liste der Stopp-Personen hinzufügen" + +#. One option in the list of things that can happen when you click an individual in the diagram. https://s3.eu-west-1.amazonaws.com/po-pub/i/KpMTncLFJrS21Y0UPolZeCDD.png +#: +msgid "Replace stopping individuals with this individual" +msgstr "Liste der Stopp-Personen durch diese Person ersetzen" + +#. New option to set what happens when you click an individual in the diagram. https://s3.eu-west-1.amazonaws.com/po-pub/i/KpMTncLFJrS21Y0UPolZeCDD.png +#: +msgid "Action when individual clicked" +msgstr "Aktion beim Anklicken eines Personenkästchens" + +#. One option in the list of things that can happen when you click an individual in the diagram. +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/KpMTncLFJrS21Y0UPolZeCDD.png +#: +msgid "Show menu" +msgstr "Menü anzeigen" + +#. One option in the list of things that can happen when you click an individual in the diagram. +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/KpMTncLFJrS21Y0UPolZeCDD.png +#: +msgid "Do nothing" +msgstr "Nichts tun" + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "This option lets you choose what happens when you click on an individual in the diagram." +msgstr "Mit dieser Option können Sie auswählen, was passiert, wenn Sie auf ein Personenkästchen im Diagramm klicken." + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "This is the default option. When you click on an individual, the webtrees page for that individual will open in a new tab or window." +msgstr "Dies ist die Standardoption. Wenn Sie auf ein Personenkästchen klicken, wird die webtrees-Seite für diese Person in einem neuen Tab oder Fenster geöffnet." + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "If this option is selected, clicking on an individual in the diagram will add them to the list of starting individuals." +msgstr "Wenn diese Option ausgewählt ist, wird durch Klicken auf eine Person im Diagramm diese zur Liste der Startpersonen hinzugefügt." + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "If this option is selected, clicking on an individual in the diagram will add them to the list of starting individuals and remove all others from the list." +msgstr "Wenn diese Option ausgewählt ist, wird durch Klicken auf eine Personenbox im Diagramm diese Person zur Liste der Startpersonen hinzugefügt und alle anderen aus der Liste entfernt." + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "If this option is selected, clicking on an individual in the diagram will add them to the list of stopping individuals." +msgstr "Wenn diese Option ausgewählt ist, wird durch Klicken auf eine Personenbox im Diagramm diese zur Liste der Stopp-Personen hinzugefügt." + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "If this option is selected, clicking on an individual in the diagram will add them to the list of stopping individuals and remove all others from the list." +msgstr "Wenn diese Option ausgewählt ist, wird durch Klicken auf eine Personenbox im Diagramm diese zur Liste der Stopp-Personen hinzugefügt und alle anderen aus der Liste entfernt." + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "If this option is chosen, when an individual is clicked on in the diagram, a menu will be shown with the above items to choose from." +msgstr "Wenn diese Option ausgewählt ist und auf ein Personenkästchen im Diagramm geklickt wird, wird ein Menü mit den oben genannten Elementen zur Auswahl angezeigt." + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "When an individual is clicked on in the diagram, nothing will happen." +msgstr "Wenn im Diagramm auf ein Personenkästchen geklickt wird, passiert nichts." + +#. Part of the help text for the option "Action when individual clicked". +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/oh4Yjz8fjz3l2aFFkAV608mv.png +#: +msgid "Note that there is currently no option for what to do when a family record is clicked on in the diagram. However, the option to add URLs to individuals and families will also affect families in the browser diagram. That is, if you click a family then if this option is enabled, the family page will open in webtrees." +msgstr "Beachten Sie, dass es derzeit keine Option gibt, die festlegt was geschehen soll, wenn im Diagramm auf ein Familienelement geklickt wird. Die Option zum Hinzufügen von URLs zu Einzelpersonen und Familien wirkt sich jedoch auch auf Familien im Browserdiagramm aus. Das heißt, wenn Sie auf eine Familie klicken und diese Option aktiviert ist, wird die Familienseite in webtrees geöffnet." + +#. An extra paragraph for the section on URL links in the help page: https://s3.eu-west-1.amazonaws.com/po-pub/i/4Vxx95kI54pojXyfcC4CvyYc.png +#: +msgid "This also affects families in the diagram. If this option is enabled, you can click on family records to open the family webtrees page. Also see \\'Action when individual clicked\\' in the Browser render settings." +msgstr "Dies betrifft auch Familien im Diagramm. Wenn diese Option aktiviert ist, können Sie auf Familienelemente klicken, um die webtrees-Seite mit der Familie zu öffnen. Siehe auch \\'Aktion beim Anklicken eines Personenkästchens\\' in den Browser-Einstellungen." + +#. Option for what to do when individual clicked on in diagram +#: +msgid "Add to list of individuals to highlight" +msgstr "" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Show additional individuals in different colour" +msgstr "" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Highlighted individuals background colour" +msgstr "" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Highlighted individuals XREFs" +msgstr "" + +#. Update to help text to add this new option +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/hepcgMX8Ou17qX7kH5upaW16.png +#: +msgid "If this option is selected, clicking on an individual in the diagram will add them to the list of individuals with a coloured background for identification in the diagram. See the option \"Show additional individuals in different colour\", in the Colours section of the Tile design options." +msgstr "" + +#. Update to help text to add this new option: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/taeaB9TOXPYyAr6SzuyMVLDJ.png +#: +msgid "Similar to the above option for starting individuals, but this option lets you choose a background colour to highlight a custom selection if individuals based on a list of XREFs. Also see option in Browser Render settings to choose what happens when an individual is clicked, as this may be an easier way to add individuals to this list." +msgstr "" + diff --git a/resources/lang/en-GB.mo b/resources/lang/en-GB.mo index 19c2bac3d4590e1a18598a608ef1881156508347..46f4580c630bcc1476de9f9d039226007548cf6d 100644 GIT binary patch delta 7568 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 delta 6520 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 diff --git a/resources/lang/en-US.po b/resources/lang/en-US.po index c58a32a4..2ec3afcc 100644 --- a/resources/lang/en-US.po +++ b/resources/lang/en-US.po @@ -2022,3 +2022,38 @@ msgstr "Note that there is currently no option for what to do when a family reco msgid "This also affects families in the diagram. If this option is enabled, you can click on family records to open the family webtrees page. Also see \\'Action when individual clicked\\' in the Browser render settings." msgstr "This also affects families in the diagram. If this option is enabled, you can click on family records to open the family webtrees page. Also see \\'Action when individual clicked\\' in the Browser render settings." +#. Option for what to do when individual clicked on in diagram +#: +msgid "Add to list of individuals to highlight" +msgstr "Add to list of individuals to highlight" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Show additional individuals in different colour" +msgstr "Show additional individuals in different color" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Highlighted individuals background colour" +msgstr "Highlighted individuals background color" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Highlighted individuals XREFs" +msgstr "Highlighted individuals XREFs" + +#. Update to help text to add this new option +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/hepcgMX8Ou17qX7kH5upaW16.png +#: +msgid "If this option is selected, clicking on an individual in the diagram will add them to the list of individuals with a coloured background for identification in the diagram. See the option \"Show additional individuals in different colour\", in the Colours section of the Tile design options." +msgstr "If this option is selected, clicking on an individual in the diagram will add them to the list of individuals with a colored background for identification in the diagram. See the option \"Show additional individuals in different color\", in the Colors section of the Tile design options." + +#. Update to help text to add this new option: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/taeaB9TOXPYyAr6SzuyMVLDJ.png +#: +msgid "Similar to the above option for starting individuals, but this option lets you choose a background colour to highlight a custom selection if individuals based on a list of XREFs. Also see option in Browser Render settings to choose what happens when an individual is clicked, as this may be an easier way to add individuals to this list." +msgstr "Similar to the above option for starting individuals, but this option lets you choose a background color to highlight a custom selection if individuals based on a list of XREFs. Also see option in Browser Render settings to choose what happens when an individual is clicked, as this may be an easier way to add individuals to this list." + diff --git a/resources/lang/nl.po b/resources/lang/nl.po index a7cdde43..564f324a 100644 --- a/resources/lang/nl.po +++ b/resources/lang/nl.po @@ -2022,3 +2022,38 @@ msgstr "Merk op dat er momenteel geen optie is voor wat er moet gebeuren als er msgid "This also affects families in the diagram. If this option is enabled, you can click on family records to open the family webtrees page. Also see \\'Action when individual clicked\\' in the Browser render settings." msgstr "Dit heeft ook invloed op gezinnen in het diagram. Als deze optie is ingeschakeld, kunt u op gezinsrecords klikken om de webtreespagina van het gezin te openen. Zie ook 'Actie bij klikken op persoon' in de weergave-instellingen van de browser." +#. Option for what to do when individual clicked on in diagram +#: +msgid "Add to list of individuals to highlight" +msgstr "" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Show additional individuals in different colour" +msgstr "" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Highlighted individuals background colour" +msgstr "" + +#. Part of new option to highlight a custom list of individuals +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/iMke2fkhJ5QFsxPD8JHlabfu.png +#: +msgid "Highlighted individuals XREFs" +msgstr "" + +#. Update to help text to add this new option +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/hepcgMX8Ou17qX7kH5upaW16.png +#: +msgid "If this option is selected, clicking on an individual in the diagram will add them to the list of individuals with a coloured background for identification in the diagram. See the option \"Show additional individuals in different colour\", in the Colours section of the Tile design options." +msgstr "" + +#. Update to help text to add this new option: +#. https://s3.eu-west-1.amazonaws.com/po-pub/i/taeaB9TOXPYyAr6SzuyMVLDJ.png +#: +msgid "Similar to the above option for starting individuals, but this option lets you choose a background colour to highlight a custom selection if individuals based on a list of XREFs. Also see option in Browser Render settings to choose what happens when an individual is clicked, as this may be an easier way to add individuals to this list." +msgstr "" +