diff --git a/src/components/HomeBanners.vue b/src/components/HomeBanners.vue new file mode 100644 index 0000000..1da077f --- /dev/null +++ b/src/components/HomeBanners.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/components/SpeechRecognitionTextarea.vue b/src/components/SpeechRecognitionTextarea.vue index 5b4fb7b..8bba118 100644 --- a/src/components/SpeechRecognitionTextarea.vue +++ b/src/components/SpeechRecognitionTextarea.vue @@ -53,6 +53,9 @@ export default { } }, methods: { + reset: function () { + this.value = null + }, focus: function () { this.$refs.textarea.focus() }, diff --git a/src/components/TraitDefinitionComponent.vue b/src/components/TraitDefinitionComponent.vue index bb32476..d7bd784 100644 --- a/src/components/TraitDefinitionComponent.vue +++ b/src/components/TraitDefinitionComponent.vue @@ -137,7 +137,7 @@

{{ $t('pageTrialTraitListText') }}

- +
{{ trait.name }}
diff --git a/src/components/modals/PlotCommentModal.vue b/src/components/modals/PlotCommentModal.vue index cf3ef8a..16d7b14 100644 --- a/src/components/modals/PlotCommentModal.vue +++ b/src/components/modals/PlotCommentModal.vue @@ -117,6 +117,7 @@ export default { createComment: function () { addPlotComment(this.cell.trialId, this.cell.row, this.cell.column, this.newCommentContent) .then(() => { + this.$refs.input.reset() this.newCommentContent = null this.commentFormVisible = false emitter.emit('plot-comments-changed', this.cell.row, this.cell.column, this.cell.trialId) diff --git a/src/components/modals/SettingsShareModal.vue b/src/components/modals/SettingsShareModal.vue index ce26aeb..c4a358f 100644 --- a/src/components/modals/SettingsShareModal.vue +++ b/src/components/modals/SettingsShareModal.vue @@ -67,6 +67,7 @@ export default { 'storeCanvasShape', 'storeCanvasSize', 'storeDisplayMinCellWidth', + 'storeHomeWidgetOrder', 'storeGpsEnabled', 'storeVoiceFeedbackEnabled', 'storeRestrictInputToMarked', @@ -88,6 +89,9 @@ export default { this.$store.commit('ON_LOCALE_CHANGED', parsed.lc) loadLanguageAsync(parsed.lc) } + if (parsed.hw) { + this.$store.commit('ON_HOME_WIDGET_ORDER_CHANGED', parsed.hw) + } if (parsed.dm === 1) { this.$store.commit('ON_DARK_MODE_CHANGED', true) } else if (parsed.dm === 0) { @@ -99,7 +103,7 @@ export default { this.$store.commit('ON_DISPLAY_MARKER_INDICATORS_CHANGED', false) } if (parsed.cw !== undefined && parsed.cw !== null) { - this.$store.commit('ON_DISPLAY_MIN_CELL_WIDTH_CHANGED', parsed.cw) + this.$store.commit('ON_DISPLAY_MIN_CELL_WIDTH_CHANGED', parsed.cw.split(',')) } if (parsed.ge === 1) { this.$store.commit('ON_GPS_ENABLED_CHANGED', true) @@ -173,6 +177,7 @@ export default { hc: this.storeHideCitationMessage ? 1 : 0, dm: this.storeDarkMode ? 1 : 0, mi: this.storeDisplayMarkerIndicators ? 1 : 0, + hw: this.storeHomeWidgetOrder.join(','), cw: this.storeDisplayMinCellWidth, ge: this.storeGpsEnabled ? 1 : 0, vf: this.storeVoiceFeedbackEnabled ? 1 : 0, diff --git a/src/components/modals/TrialCommentModal.vue b/src/components/modals/TrialCommentModal.vue index 145cd4c..4e0192c 100644 --- a/src/components/modals/TrialCommentModal.vue +++ b/src/components/modals/TrialCommentModal.vue @@ -121,6 +121,7 @@ export default { createComment: function () { addTrialComment(this.trial.localId, this.newCommentContent) .then(() => { + this.$refs.input.reset() this.newCommentContent = null this.commentFormVisible = false emitter.emit('trial-properties-changed', this.trial.localId) diff --git a/src/plugins/api.js b/src/plugins/api.js index fd72a30..8c74bdb 100644 --- a/src/plugins/api.js +++ b/src/plugins/api.js @@ -139,8 +139,8 @@ const synchronizeTrial = (shareCode, transactions) => { return axiosCall({ url: `trial/${shareCode}/transaction`, params: transactions, method: 'post' }) } -const exportToGerminate = (shareCode) => { - return axiosCall({ url: `trial/${shareCode}/export/g8`, method: 'get' }) +const exportToGerminate = (shareCode, aggregate = true) => { + return axiosCall({ url: `trial/${shareCode}/export/g8?aggregate=${aggregate}`, method: 'get' }) } const exportToShapefile = (shareCode) => { diff --git a/src/plugins/changelog/de_DE.json b/src/plugins/changelog/de_DE.json index 73bbc61..5d0825e 100644 --- a/src/plugins/changelog/de_DE.json +++ b/src/plugins/changelog/de_DE.json @@ -237,6 +237,14 @@ "type": "new", "title": "Versuchsmerkmalimport", "text": "Beim Erstellen eines neuen Versuches können jetzt Merkmale aus einem anderen Versuch importiert werden der auf dem aktuellen Gerät verfügbar ist." + }, { + "type": "new", + "title": "Germinate Excel Export", + "text": "Beim Exportieren in die Germinate Excel Datenvorlagen kann jetzt das Mitteln über Wertsätze und den gleichen Tag deaktiviert werden." + }, { + "type": "new", + "title": "Homepage-Ordnung", + "text": "Es kann jetzt die Anordnung der Elemente auf der Homepage geändert werden." }, { "type": "update", "title": "Gelenkter Ablaub Änderung", diff --git a/src/plugins/changelog/en_GB.json b/src/plugins/changelog/en_GB.json index 6c1086e..09ad189 100644 --- a/src/plugins/changelog/en_GB.json +++ b/src/plugins/changelog/en_GB.json @@ -237,6 +237,14 @@ "type": "new", "title": "Trial trait import", "text": "When setting up a new trial you can now import trials from another trial that's available on your current device." + }, { + "type": "new", + "title": "Germinate Excel export", + "text": "When exporting to the Germinate Excel data templates you can now disable averaging of values across sets and on the same day." + }, { + "type": "new", + "title": "Home page order", + "text": "You can now change the order of the home page widgets from the settings page." }, { "type": "update", "title": "Guided walk change", diff --git a/src/plugins/i18n/de_DE.json b/src/plugins/i18n/de_DE.json index ca40a18..d937e10 100644 --- a/src/plugins/i18n/de_DE.json +++ b/src/plugins/i18n/de_DE.json @@ -129,6 +129,8 @@ "formDescriptionSettingsTraitColorAdd": "Eine neue Merkmalsfarbe der Liste hinzufügen.", "formLabelSettingsRestrictInputToMarked": "Eingabe beschränken auf markierte Zeilen/Spalten", "formDescriptionSettingsRestrictInputToMarked": "Falls aktiviert, ist die Auswahl von Beeten in der Dateneingabe nur in markierten Zeilen oder Spalten möglich.", + "formLabelSettingsWidgetOrder": "Home-Widget-Ordnung", + "formDescriptionSettingsWidgetOrder": "Nutze die Griff in der oberen rechten Ecke um die Widgets auf der Homepage anzuordnen.", "formPlaceholderTimelinePlotSearch": "Keimplasma suchen", "formLabelStatisticsTrait": "Merkmal", "formDescriptionStatisticsTrait": "Die Merkmale für welche die Statistiken dargestellt werden sollen.", @@ -234,6 +236,8 @@ "formLabelExportBrapiTrial": "Versuch", "formLabelExportBrapiStudy": "Studie", "formLabelExportBrapiStudyType": "Studientyp", + "formLabelExportTrialFormatGerminateAggregate": "Durchschnittswerte", + "formDescriptionExportTrialFormatGerminateAggregate": "Entscheide ob Werte über Sätze und am gleichen Tag gemittelt werden sollen.", "formDescriptionBrapiUrl": "Die URL des BrAPI-Endpunktes. Normalerweise in der Form {URL}/brapi/v2/", "formDescriptionBrapiToken": "Ein Token kann benötigt werden für Schreiboperationen oder Zugriffsbeschränkungen", "formLabelImageTagTraitSelector": "Merkmale zum taggen auswählen (optional)", @@ -411,6 +415,10 @@ "pageSettingsCardDataCollectionSubtitle": "Einstellungen in diesem Bereich beziehen sich auf Vorlieben bei der Datensammlung.", "pageSettingsCardVisualTitle": "Visuelle Einstellungen", "pageSettingsCardVisualSubtitle": "Hier können die visuellen Repräsentationen innerhalb von GridScore angepasst werden.", + "pageSettingsHomeWidgetOrderBannersName": "Banner", + "pageSettingsHomeWidgetOrderBannersDescription": "Die Einstiegsbanner inklusive des Erstellen eines neuen Versuches.", + "pageSettingsHomeWidgetOrderTrialsName": "Versuche", + "pageSettingsHomeWidgetOrderTrialsDescription": "Die Liste der Versuche die lokal auf diesem Gerät verfügbar sind.", "pageSetupGermplasmGridSidebarTitle": "Versuchsaufbau-Spezifikation", "pageSetupGermplasmGridTableCellRowColumn": "Zeile: {row}, Spalte: {column}", "pageSetupTraitSidebarTitle": "Merkmalsdefinitionen", @@ -422,7 +430,7 @@ "pageTrialSetupText": "Dies ist wo ein neuer Versuch erstellt werden kann. Die Abschnitte unten werden genutzt um generelle Informationen über den Versuch angzugeben, das Layout inklusive des genutzten Keimplasmas und der Spalten- und Reihenanzahl zu definieren, und schließlich die Merkmale die aufgezeichnet werden sollen anzugeben.", "pageTrialLayoutDimensionsTitle": "Aufbaudimensionen", "pageTrialLayoutDimensionsText": "Nutze die Eingabefelder unten um die Anzahl an Spalten und Zeilen im Versuchsaufbau anzugeben.", - "pageTrialLayoutDimensionsFielDHubNotice": "Falls ein Versuchsaufbau von FielDHub importiert wird, bitte 'Unten nach oben' auswählen bei der Zeilenordnung.", + "pageTrialLayoutDimensionsFielDHubNotice": "Falls ein Versuchsaufbau von FielDHub importiert wird, bitte 'Unten nach oben' auswählen bei der Zeilenordnung und 'Links nach rechts' für die Spaltenordnung.", "pageTrialLayoutGermplasmTitle": "Keimplasma-/Rep-Informationen", "pageTrialLayoutGermplasmText": "Nutze die Tabelle unten um Keimplasmaidentifikatore und optionale Rep-Informationen pro Beet anzugeben. Das Dropdown-Menü kann genutzt werden um Daten aus anderen Tools wie FielDHub oder Excel zu importieren.", "pageTrialLayoutCornersTitle": "Geographische Versuchseckpunkte", diff --git a/src/plugins/i18n/en_GB.json b/src/plugins/i18n/en_GB.json index d6ed611..9b39307 100644 --- a/src/plugins/i18n/en_GB.json +++ b/src/plugins/i18n/en_GB.json @@ -131,6 +131,8 @@ "formDescriptionSettingsTraitColorAdd": "Add a new trait color to the existing list.", "formLabelSettingsRestrictInputToMarked": "Restrict input to marked rows/columns", "formDescriptionSettingsRestrictInputToMarked": "If enabled, selecting plots on the data entry view is only possible within the marked row/column.", + "formLabelSettingsWidgetOrder": "Home widget order", + "formDescriptionSettingsWidgetOrder": "Use the handle in the top right to drag and reorder the widgets on the home page.", "formPlaceholderTimelinePlotSearch": "Search germplasm", "formLabelStatisticsTrait": "Trait", "formDescriptionStatisticsTrait": "The traits for which to plot the statistics.", @@ -242,6 +244,8 @@ "formLabelExportBrapiTrial": "Trial", "formLabelExportBrapiStudy": "Study", "formLabelExportBrapiStudyType": "Study type", + "formLabelExportTrialFormatGerminateAggregate": "Average values", + "formDescriptionExportTrialFormatGerminateAggregate": "Decide whether values should be averaged across sets and measurements on the same day.", "formDescriptionBrapiUrl": "The URL of the BrAPI endpoint. Usually of the form {URL}/brapi/v2/", "formDescriptionBrapiToken": "A token may be required for write operations or access limitations", "formLabelMeasurementSet": "Measurement for set position {position}", @@ -419,6 +423,10 @@ "pageSettingsCardDataCollectionSubtitle": "Settings in this area relate to preferences while collecting data.", "pageSettingsCardVisualTitle": "Visual settings", "pageSettingsCardVisualSubtitle": "This is where the visual representation within GridScore can be adjusted.", + "pageSettingsHomeWidgetOrderBannersName": "Banners", + "pageSettingsHomeWidgetOrderBannersDescription": "The 'getting started' banners including setting up a new trial.", + "pageSettingsHomeWidgetOrderTrialsName": "Trials", + "pageSettingsHomeWidgetOrderTrialsDescription": "The list of trials available locally on this device.", "pageSetupGermplasmGridSidebarTitle": "Trial layout specification", "pageSetupGermplasmGridTableCellRowColumn": "Row: {row}, Column: {column}", "pageSetupTraitSidebarTitle": "Trait definition", @@ -430,7 +438,7 @@ "pageTrialSetupText": "This is where you create a new trial. The sections below are used to provide general information about the trial, specify the layout including used germplasm, row and column count, and finally the traits you want to score need to be specified.", "pageTrialLayoutDimensionsTitle": "Layout dimensions", "pageTrialLayoutDimensionsText": "Use the input fields to specify the row and column count of your trial layout.", - "pageTrialLayoutDimensionsFielDHubNotice": "If you're importing a trial design from FielDHub, please make sure to select 'bottom to top' for the row order.", + "pageTrialLayoutDimensionsFielDHubNotice": "If you're importing a trial design from FielDHub, please make sure to select 'bottom to top' for the row order and 'left to right' for the column order.", "pageTrialLayoutGermplasmTitle": "Germplasm/rep information", "pageTrialLayoutGermplasmText": "Use the table below to enter the germplasm identifier and optional rep information for each plot. You can use the dropdown menu above the table to import data from other tools like FielDHub or Excel.", "pageTrialLayoutCornersTitle": "Geographic trial corner points", diff --git a/src/store/index.js b/src/store/index.js index cd5ef9b..c05aa72 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -30,6 +30,7 @@ export default new Vuex.Store({ restrictInputToMarked: false, navigationMode: NAVIGATION_MODE_DRAG, traitColors: ['#910080', '#ff7c00', '#5ec418', '#00a0f1', '#c5e000', '#ff007a', '#222183', '#c83831', '#fff600'], + homeWidgetOrder: ['banners', 'trials'], canvasDensity: CANVAS_DENSITY_LOW, canvasShape: CANVAS_SHAPE_CIRCLE, canvasSize: CANVAS_SIZE_SMALL, @@ -65,6 +66,7 @@ export default new Vuex.Store({ storeRestrictInputToMarked: (state) => state.restrictInputToMarked, storeNavigationMode: (state) => state.navigationMode, storeTraitColors: (state) => state.traitColors, + storeHomeWidgetOrder: (state) => state.homeWidgetOrder, storeCanvasDensity: (state) => state.canvasDensity, storeCanvasShape: (state) => state.canvasShape, storeCanvasSize: (state) => state.canvasSize, @@ -190,6 +192,13 @@ export default new Vuex.Store({ ON_TRAIT_COLORS_CHANGED: function (state, newTraitColors) { state.traitColors = newTraitColors }, + ON_HOME_WIDGET_ORDER_CHANGED: function (state, newHomeWidgetOrder) { + if (Object.prototype.hasOwnProperty.call(state, 'homeWidgetOrder')) { + state.homeWidgetOrder = newHomeWidgetOrder + } else { + Vue.set(state, 'homeWidgetOrder', newHomeWidgetOrder) + } + }, ON_PLAUSIBLE_CHANGED: function (state, newPlausible) { state.plausible = newPlausible }, @@ -285,6 +294,9 @@ export default new Vuex.Store({ setTraitColors: function ({ commit }, traitColors) { commit('ON_TRAIT_COLORS_CHANGED', traitColors) }, + setHomeWidgetOrder: function ({ commit }, homeWidgetOrder) { + commit('ON_HOME_WIDGET_ORDER_CHANGED', homeWidgetOrder) + }, setPlausible: function ({ commit }, plausible) { commit('ON_PLAUSIBLE_CHANGED', plausible) }, diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue index 942bf76..e392474 100644 --- a/src/views/AboutView.vue +++ b/src/views/AboutView.vue @@ -10,7 +10,7 @@

{{ $t('appTitle') }}

{{ $t('pageAboutVersion', { version: gridScoreVersion }) }}

{{ storeDeviceConfigString }}

-

{{ $t('pageAboutChangelog') }}

+

{{ $t('pageAboutChangelog') }}

diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index e58fde7..8dec85c 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -13,20 +13,7 @@ - - - - - - {{ banner.title }} - {{ banner.subtitle }} - - {{ $t('buttonSelect') }} - - - - - + @@ -46,49 +33,42 @@