seekia/gui/helpGui.go

1120 lines
61 KiB
Go

package gui
// helpGui.go implements pages to explain Seekia's features and functionality to users
import "fyne.io/fyne/v2"
import "fyne.io/fyne/v2/container"
import "fyne.io/fyne/v2/theme"
import "fyne.io/fyne/v2/widget"
import "seekia/resources/geneticReferences/monogenicDiseases"
//TODO: Improve many of these descriptions
func setHelpPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Help")
description1 := getLabelCentered("Select your desires on the Desires page.")
description2 := getLabelCentered("View matches on the Matches page.")
description3 := getLabelCentered("Build and broadcast your profile on the Profile page.")
description4 := getLabelCentered("You can view matches without broadcasting a profile.")
description5 := getBoldLabelCentered("More help pages are coming soon.")
//TODO: Add buttons and navigation to view more help pages.
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)
setPageContent(page, window)
}
func setMateProfileExpirationExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Mate Profile Expiration")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Mate Profile Expiration")
//TODO: Retrieve the expiration time from the parameters
description1 := getLabelCentered("All mate profiles expire after 3 months.")
description2 := getLabelCentered("You must broadcast a new profile at least this often.")
description3 := getLabelCentered("Your new profile does not need to have any changes.")
description4 := getLabelCentered("The Broadcast page will tell you when your profile will expire.")
description5 := getLabelCentered("This is seperate from your identity balance, which also expires.")
description6 := getLabelCentered("Your identity balance must also be funded to broadcast any profiles.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, widget.NewSeparator(), description5, description6, widget.NewSeparator())
setPageContent(page, window)
}
func setGreetAndRejectExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Greet And Reject")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Greet And Reject")
description1 := getLabelCentered("Seekia users can send Greet and Reject messages.")
description2 := getLabelCentered("Greet messages are sent to indicate interest in a user.")
description3 := getLabelCentered("Reject messages are sent to tell a user they are not interested.")
description4 := getLabelCentered("You can filter your matches to only show users who have greeted or contacted you.")
description5 := getLabelCentered("You can also hide users who have rejected you.")
description6 := getLabelCentered("You can undo a rejection by sending a greeting.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, widget.NewSeparator())
setPageContent(page, window)
}
func setSexExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Sex")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Sex")
description1 := getLabelCentered("Sex refers to a person's physical sex.")
description2 := getLabelCentered("Male: XY chromosomes, born with male anatomy.")
description3 := getLabelCentered("Female: XX chromosomes, born with female anatomy.")
description4 := getLabelCentered("Intersex Male: Not either of the above categories, but closer to Male.")
description5 := getLabelCentered("Intersex Female: Not any of the above categories, but closer to Female.")
description6 := getLabelCentered("Intersex: Not any of the above categories.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setMateProfileAttributeVisibilityExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Profile Attribute Visibility")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Profile Attribute Visibility")
description1 := getLabelCentered("Some Mate profile attributes can have their visibility turned on or off.")
description2 := getLabelCentered("If you turn an attribute's visibility off, it will not show up in your profile.")
description3 := getLabelCentered("This feature is needed to be able to calculate desires privately.")
description4 := getLabelCentered("For example, if you want to calculate distance, you must provide your location.")
description5 := getLabelCentered("If you don't want your profile to contain your location, you can turn off its visibility.")
description6 := getLabelCentered("This way, you can still calculate distance without sharing your location publicly.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setProfileGenomeInfoExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Profile Genome Info")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Profile Genome Information")
description1 := getLabelCentered("Seekia allows users to share their genome information.")
description2 := getLabelCentered("Users can learn about the monogenic disease, polygenic disease, and trait information for offspring with each user.")
description3 := getLabelCentered("Users can learn the probability of their offspring having a specific disease.")
description4 := getLabelCentered("Users can use this information to reduce the probability of their offspring having diseases.")
description5 := getLabelCentered("Users can choose their mate to influence their offspring's trait and disease risk.")
description6 := getLabelCentered("Only specific locations of a user's genome are shared.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setDesireFilterOptionsExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Desire Filter Options")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Desire Filter Options")
description1 := getLabelCentered("Each desire has 1 or 2 filter options to configure.")
description2 := getBoldLabelCentered("Filter All")
description3 := getLabelCentered("When enabled, only users who fulfill the desire will be shown in your matches.")
description4 := getLabelCentered("This does not filter users who have not responded.")
description5 := getBoldLabelCentered("Require Response")
description6 := getLabelCentered("When enabled, only users who have responded to the attribute will be shown.")
description7 := getLabelCentered("This does not filter users who responded, but do not fulfill the desire.")
description8 := getLabelCentered("If you disable both options, the desire will only effect match score calculations.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, widget.NewSeparator(), description2, description3, description4, widget.NewSeparator(), description5, description6, description7, widget.NewSeparator(), description8)
setPageContent(page, window)
}
func setAncestryCompositionDesireRestrictiveModeExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Restrictive Mode")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Ancestry Composition Desire - Restrictive Mode")
description1 := getLabelCentered("The ancestry composition desire has 2 modes: Restrictive and Non-Restrictive.")
description2 := getLabelCentered("In restrictive mode, all ancestral groups which you desire must be described.")
description3 := getLabelCentered("For example, let's say you add 80-100% Melanesian as your only location desire.")
description4 := getLabelCentered("In non-restrictive mode, anyone who is 80-100% Melanesian will fulfill the desire.")
description5 := getLabelCentered("In restrictive mode, only users whom are 100% Melanesian will fulfill the desire.")
description6 := getLabelCentered("This is because in restrictive mode, you must define all racial amounts you will tolerate.")
description7 := getLabelCentered("In restrictive mode, if you will tolerate 0-2% for all locations, you must add 0-2% for all locations.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)
setPageContent(page, window)
}
func setOffspringAncestryCompositionExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Offspring Ancestry Composition")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Ancestry Composition")
description1 := getLabelCentered("Seekia is able to calculate the ancestry composition of an offspring between two users.")
description2 := getLabelCentered("Any conceived offspring's ancestry composition may vary slightly from the prediction.")
description3 := getLabelCentered("Offspring from the same parents will not always inherit the same genetic sections from each parent.")
description4 := getLabelCentered("Consequently, siblings range between being ~40%-60% genetically identical.")
description5 := getLabelCentered("However, sometimes the offspring ancestry composition prediction is ~100% accurate.")
description6 := getLabelCentered("For example, if both parents are 100% Melanesian, their offspring will always be ~100% Melanesian.")
description7 := getLabelCentered("This rule applies for all ancestral locations, not just Melanesian.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)
setPageContent(page, window)
}
func setGenomePhasingExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Genome Phasing")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Genome Phasing")
description1 := getLabelCentered("A raw genome file is either Phased or Unphased")
description2 := getLabelCentered("A phased genome file describes which parent each gene was inherited from.")
description3 := getLabelCentered("This allows Seekia to more accurately diagnose genetic diseases.")
description4 := getLabelCentered("Only some companies provide phased genome sequencing.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setGenomeSNPCountExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Genome SNP Count")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Genome SNP Count")
description1 := getLabelCentered("Each raw genome file has an SNP count.")
description2 := getLabelCentered("This is the number of SNPs, or locations, sequenced.")
description3 := getLabelCentered("The higher this number, the more information your genome file contains.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3)
setPageContent(page, window)
}
func setCombinedGenomesExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Combined Genomes")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Combined Genomes")
description1 := getLabelCentered("Seekia combines multiple genome files into two different genomes.")
description2 := getLabelCentered("Genome sequencing can be inaccurate, so multiple imported genome files will sometimes disagree.")
description3 := getLabelCentered("Each genome file also contains different recorded locations.")
description4 := getLabelCentered("The Only Exclude Conflicts genome will include genome locations that only 1 genome has reported.")
description5 := getLabelCentered("The Only Include Shared genome only includes genome locations where at least 2 genomes agree.")
description6 := getLabelCentered("The Only Include Shared genome is the most accurate, but may contain less information.")
description7 := getLabelCentered("You should study all imported genomes to see what they report.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)
setPageContent(page, window)
}
func setGenomeHasMonogenicDiseaseVariantMutationExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Genome Has Mutation")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Genome Has Mutation")
description1 := getLabelCentered("A monogenic disease variant is a specific defect in a gene that causes the disease.")
description2 := getLabelCentered("Each genome can either have 0, 1, or 2 mutations for each variant.")
description3 := getLabelCentered("If a genome has a variant mutation, then either 1 or 2 mutations exist.")
description4 := getLabelCentered("For a recessive monogenic disease, you need 2 mutations, one on each chromosome, to have the disease.")
description5 := getLabelCentered("For a dominant monogenic disease, you only need at least 1 mutation to have the disease.")
description6 := getLabelCentered("Unless your genome is phased, Seekia does not know which chromosome contains each mutation.")
description7 := getLabelCentered("Seekia calculates your probabilities of having and passing the disease automatically.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)
setPageContent(page, window)
}
func setMonogenicDiseaseVariantsExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Monogenic Disease Variants")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Monogenic Disease Variants")
description1 := getLabelCentered("A monogenic disease variant is a specific defect in a gene that causes the disease.")
description2 := getLabelCentered("Each genome can either have 0, 1, or 2 mutations for each variant.")
description3 := getLabelCentered("For a recessive monogenic disease, you at least 2 mutations, one on each chromosome, to have the disease.")
description4 := getLabelCentered("For a dominant monogenic disease, you only need 1 mutation to have the disease.")
description5 := getLabelCentered("Unless your genome is phased, Seekia does not know which chromosome contains each mutation.")
description6 := getLabelCentered("Seekia calculates your probabilities of having and passing the disease automatically.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setVariantEffectIsMildExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Effect Is Mild")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Variant Effect Is Mild")
description1 := getLabelCentered("Some monogenic disease variants are known to be mild.")
description2 := getLabelCentered("They are known to only cause mild disease symptoms for the affected person.")
description3 := getLabelCentered("This may not be true for all cases.")
description4 := getLabelCentered("A defective gene is affected by all of its variants.")
description5 := getLabelCentered("If you have multiple variants, you will usually have a more severe disease.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)
setPageContent(page, window)
}
func setNumberOfTestedVariantsExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Tested Variants")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Number of Tested Variants")
description1 := getLabelCentered("Each monogenic disease has a set of variants Seekia tests for.")
description2 := getLabelCentered("These variants are specific mutations that cause the monogenic disease.")
description3 := getLabelCentered("The greater the number of tested variants is, the more accurate the results will be.")
description4 := getLabelCentered("Seekia cannot test for variants whose location your genome file does not contain.")
description5 := getLabelCentered("Seekia also does not test for many very rare disease variants.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)
setPageContent(page, window)
}
func setNumberOfPhasedLociExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Phased Loci")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Number of Phased Loci")
description1 := getLabelCentered("Each monogenic disease has a set of variants Seekia tests for.")
description2 := getLabelCentered("These variants are specific mutations that cause each monogenic disease.")
description3 := getLabelCentered("Each variant effects a specific locus of the genome.")
description4 := getLabelCentered("Each genome file reports the values of loci.")
description5 := getLabelCentered("A reported value can either be phased or unphased.")
description6 := getLabelCentered("Phased values provide more information than unphased values.")
description7 := getLabelCentered("The greater the number of phased loci is, the more accurate a genetic analysis will be.")
description8 := getLabelCentered("Import a phased genome for the most accurate genetic analysis results.")
description9 := getLabelCentered("Use a genome sequencing provider which produces phased genome files.")
//TODO: Explain that phased genomes don't always increase accuracy, and the results may still be fully accurate
// For example, if you have no mutations or if you only have 1 mutation on 1 locus,
// a phased sequence has no impact on your disease analysis results.
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9)
setPageContent(page, window)
}
func setCoupleGenomePairExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Couple Genome Pair")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Couple Genome Pair")
description1 := getLabelCentered("A couple analysis analyzes either 1 or 2 genome pairs.")
description2 := getLabelCentered("Each genome pair contains 1 genome from each person.")
description3 := getLabelCentered("The results from each genome pair may differ.")
description4 := getLabelCentered("You should view which genomes were analyzed for each genome pair.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setPersonProbabilityOfPassingVariantExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Probability Of Passing Variant")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Probability Of Passing A Variant")
description1 := getLabelCentered("This is the probability that a person will pass a monogenic disease variant to their offspring.")
description2 := getLabelCentered("If the disease is recessive, both parents need to pass a variant for the offspring to have the disease.")
description3 := getLabelCentered("If the disease is dominant, only one parent needs to pass a variant for the offspring to have the disease.")
description4 := getLabelCentered("This probability becomes more accurate if more variants are tested.")
description5 := getLabelCentered("The person's imported genome may not contain the locations for some variants.")
description6 := getLabelCentered("Seekia also does not test for many rare monogenic disease variants.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setPersonHasMonogenicDiseaseExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Person Has Monogenic Disease")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Person Has Monogenic Disease")
description1 := getLabelCentered("This describes if the analyzed person has this monogenic disease.")
description2 := getLabelCentered("This result becomes more accurate if more variants are tested.")
description3 := getLabelCentered("It also become more accurate in certain circumstances if the tested loci are phased.")
description4 := getLabelCentered("The person's imported genomes may not contain locations for some variants.")
description5 := getLabelCentered("Seekia also does not test for many rare disease variants.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)
setPageContent(page, window)
}
func setOffspringProbabilityOfHavingMonogenicDiseaseExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Offspring Monogenic Disease Probability")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Probability Of Having Monogenic Disease")
description1 := getLabelCentered("This is the probability that an offspring from this couple will have the disease.")
description2 := getLabelCentered("This probability is more accurate if more variants are tested.")
description3 := getLabelCentered("The couple's imported genomes may not contain locations for some variants.")
description4 := getLabelCentered("Seekia also does not test for many rare disease variants.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setOffspringProbabilityOfHavingVariantExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Offspring Variant Probability")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Probability Of Having Variant")
description1 := getLabelCentered("This is the probability that an offspring from this couple will have a variant for a monogenic disease.")
description2 := getLabelCentered("If the disease is dominant, an offspring with any variants will have the disease.")
description3 := getLabelCentered("If the disease is recessive, an offspring having a variant will not necessarily have the disease.")
description4 := getLabelCentered("They could be a disease carrier who does not experience any symptoms of the disease.")
description5 := getLabelCentered("Couples only need to try to avoid the offspring having the disease.")
description6 := getBoldLabelCentered("This probability is only shown to satisfy curiosity.")
description7 := getLabelCentered("This probability is more accurate if more variants are tested.")
description8 := getLabelCentered("The couple's imported genomes may not contain locations for some variants.")
description9 := getLabelCentered("Seekia also does not test for many rare disease variants.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9)
setPageContent(page, window)
}
func setPersonGeneticAnalysisConflictExistsExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Conflict Exists")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Genome Conflict Exists")
description1 := getLabelCentered("If a person has multiple genome files, the contents from each file may differ.")
description2 := getLabelCentered("This is because the sequencing process recorded different values.")
description3 := getLabelCentered("All genomes should contain the same sequence, so one of the genomes must have an error.")
description4 := getLabelCentered("These genomes may have conflicting analysis results.")
description5 := getLabelCentered("If they have conflicting results, you should view the results for each genome.")
description6 := getLabelCentered("Import more genomes to get more accurate results.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setCoupleGeneticAnalysisConflictExistsExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Conflict Exists")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Conflict Exists")
description1 := getLabelCentered("If either person has multiple genomes, multiple genome pairs will be created.")
description2 := getLabelCentered("These genome pairs may have conflicting analysis results.")
description3 := getLabelCentered("These conflicts are caused by errors in the genome sequencing process.")
description4 := getLabelCentered("If they have conflicting results, you should view both genome pair results.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setPolygenicDiseaseAverageLifetimeRiskExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Lifetime Polygenic Disease Risk")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Lifetime Polygenic Disease Risk")
description1 := getLabelCentered("Each polygenic disease has a chart describing its lifetime risk.")
description2 := getLabelCentered("This represents the probability that any person will have the disease.")
description3 := getLabelCentered("For example, lets say the lifetime risk for a disease is 10%, if you are a Male between 50-60.")
description4 := getLabelCentered("This means that Males between the ages of 50-60 have a 10% probability of suffering from the disease.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setPolygenicDiseaseRiskScoreExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Polygenic Disease Risk Score")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Polygenic Disease Risk Score")
description1 := getLabelCentered("Person genetic analyses contain a person's risk score for each polygenic disease.")
description2 := getLabelCentered("This score describes their overall risk for the disease.")
description3 := getLabelCentered("0/10 = Lowest risk, 10/10 = Highest risk.")
description4 := getLabelCentered("The more locations that are tested, the more accurate the score is.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setOffspringPolygenicDiseaseRiskScoreExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Offspring Polygenic Disease Risk Score")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Polygenic Disease Risk Score")
description1 := getLabelCentered("Couple genetic analyses contain an offspring's risk score for each polygenic disease.")
description2 := getLabelCentered("This score describes the average risk score for offspring produced by the couple.")
description3 := getLabelCentered("0/10 = Lowest risk, 10/10 = Highest risk.")
description4 := getLabelCentered("The more locations that are tested, the more accurate the score is.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setPolygenicDiseaseLociExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Polygenic Disease Loci")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Polygenic Disease Loci")
description1 := getLabelCentered("Each polygenic disease has a set of associated genome loci.")
description2 := getLabelCentered("These are locations on the genome that can be tested to determine disease risk.")
description3 := getLabelCentered("The more loci that your genome sequence contains, the more accurate your disease risk score will be.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3)
setPageContent(page, window)
}
func setPolygenicDiseaseNumberOfLociTestedExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Number Of Loci Tested")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Polygenic Disease - Number Of Loci Tested")
description1 := getLabelCentered("A person's polygenic disease risk score is calculated by testing locations on their genome.")
description2 := getLabelCentered("Each location will represent either an increased risk, decreased risk, or no impact on risk.")
description3 := getLabelCentered("The more locations that are tested, the more accurate the risk score will be.")
description4 := getLabelCentered("Import a full genome sequence to test all locations.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setOffspringPolygenicDiseaseNumberOfLociTestedExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Number Of Loci Tested")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Polygenic Disease - Number Of Loci Tested")
description1 := getLabelCentered("An offspring's polygenic disease risk score is calculated by testing locations on their genome.")
description2 := getLabelCentered("Each location will represent either an increased risk, decreased risk, or no impact on risk.")
description3 := getLabelCentered("The more locations that are tested, the more accurate the risk score will be.")
description4 := getLabelCentered("A location will only be considered tested if it exists in both parent's genomes.")
description5 := getLabelCentered("Seekia will test all 4 possible outcomes for each location.")
description6 := getLabelCentered("Import a full genome sequence for both parents to test all locations.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setDiscreteTraitNeuralNetworkPredictionExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Neural Network Prediction")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Discrete Trait Neural Network Prediction")
description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
description2 := getLabelCentered("There are 2 discrete trait analysis methods: Neural Networks and Rules.")
description3 := getLabelCentered("Each trait can be analyzed by either rules or a neural network.")
description4 := getLabelCentered("Neural network prediction is calculated by inputing a genome's loci into a neural network.")
description5 := getLabelCentered("Each trait has multiple outcomes, and the neural network predicts a single outcome.")
description6 := getLabelCentered("The higher the quantity of tested loci, the more accurate the result is.")
description7 := getLabelCentered("The probability that a neural network's prediction is accurate is called its Confidence.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)
setPageContent(page, window)
}
func setOffspringDiscreteTraitNeuralNetworkPredictionExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Neural Network Prediction")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Discrete Trait Neural Network Prediction")
description1 := getLabelCentered("Couple genetic analyses contain discrete trait analyses.")
description2 := getLabelCentered("There are 2 discrete trait analysis methods: Neural Networks and Rules.")
description3 := getLabelCentered("Each trait can be analyzed by either rules or a neural network.")
description4 := getLabelCentered("Neural network prediction is calculated by inputing a genome's loci into a neural network.")
description5 := getLabelCentered("Each trait has multiple outcomes, and the neural network predicts the probability of each outcome.")
description6 := getLabelCentered("The higher the quantity of known loci, the more accurate the result is.")
description7 := getLabelCentered("The probability that a neural network's prediction is accurate is called its Confidence.")
description8 := getLabelCentered("For couples, the Confidence is the average of the confidence of 100 prospective offspring predictions.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8)
setPageContent(page, window)
}
func setDiscreteTraitRulesPredictionExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Rules Prediction")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Discrete Trait Rules Prediction")
description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
description2 := getLabelCentered("There are 2 discrete trait analysis methods: Neural Networks and Rules.")
description3 := getLabelCentered("Each trait can be analyzed by either rules or a neural network.")
description4 := getLabelCentered("Rule prediction is calculated by testing many predictive rules.")
description5 := getLabelCentered("Each trait has multiple outcomes, and each outcome has an associated score.")
description6 := getLabelCentered("Points are added to an outcome to represent a higher probability.")
description7 := getLabelCentered("Points are subtracted from an outcome to represent a lower probability.")
description8 := getLabelCentered("The more rules that are tested, the higher the accuracy of the result will be.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8)
setPageContent(page, window)
}
func setOffspringDiscreteTraitRulesPredictionExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Rules Prediction")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Discrete Trait Rules Prediction")
description1 := getLabelCentered("Couple genetic analyses contain discrete trait analyses for the offspring.")
description2 := getLabelCentered("There are 2 discrete trait analysis methods: Neural Networks and Rules.")
description3 := getLabelCentered("Each trait can be analyzed by either rules or a neural network.")
description4 := getLabelCentered("Rule prediction is calculated by testing many predictive rules.")
description5 := getLabelCentered("Each trait has multiple outcomes, and each outcome has an associated score.")
description6 := getLabelCentered("Points are added to an outcome to represent a higher probability.")
description7 := getLabelCentered("Points are subtracted from an outcome to represent a lower probability.")
description8 := getLabelCentered("The more rules that are tested, the higher the accuracy of the result will be.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8)
setPageContent(page, window)
}
func setDiscreteTraitRulesExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Trait Rules")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Discrete Trait Rules")
description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
description2 := getLabelCentered("Discrete traits has multiple outcomes, and each outcome has an associated score.")
description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
description6 := getLabelCentered("If your genome passes a rule, its effects will be applied to the outcome(s).")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setOffspringDiscreteTraitRulesExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Trait Rules")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Discrete Trait Rules")
description1 := getLabelCentered("Offspring genetic analyses contain discrete trait analyses for a couple's offspring.")
description2 := getLabelCentered("Each discrete trait has multiple outcomes, and each outcome has an associated score.")
description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
description6 := getLabelCentered("The probability that an offspring will pass a rule is multiplied by the rule's effects.")
description7 := getLabelCentered("This effect is then applied to the outcome(s).")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)
setPageContent(page, window)
}
func setDiscreteTraitQuantityOfRulesTestedExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Quantity Of Rules Tested")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Quantity Of Trait Rules Tested")
description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
description2 := getLabelCentered("Each trait has multiple outcomes, and each outcome has an associated score.")
description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represent the opposite.")
description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
description6 := getLabelCentered("If your genome passes a rule, its effects will be applied to the outcome(s).")
description7 := getLabelCentered("The more trait rules which are tested, the more accurate the result will be.")
description8 := getLabelCentered("Import a full genome sequence to test all rules.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8)
setPageContent(page, window)
}
func setOffspringDiscreteTraitQuantityOfRulesTestedExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Quantity Of Rules Tested")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Trait Quantity Of Rules Tested")
description1 := getLabelCentered("Offspring genetic analyses contain trait analyses for a couple's offspring.")
description2 := getLabelCentered("Each trait has multiple outcomes, and each outcome has an associated score.")
description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
description6 := getLabelCentered("The probability that an offspring will pass a rule is multiplied by the rule's effects.")
description7 := getLabelCentered("This effect is then applied to the outcome(s).")
description8 := getLabelCentered("Both parents must have a location in their genome for the rule to be tested.")
description9 := getLabelCentered("Import a full genome sequence from both parents to test all offspring rules.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9)
setPageContent(page, window)
}
func setOffspringProbabilityOfPassingTraitRuleExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Probability Of Passing Rule")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Probability Of Passing Trait Rule")
description1 := getLabelCentered("Offspring genetic analyses contain discrete trait analyses for a couple's offspring.")
description2 := getLabelCentered("Each discrete trait has multiple outcomes, and each outcome has an associated score.")
description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
description6 := getLabelCentered("There are 4 offspring outcomes for each location.")
description7 := getLabelCentered("The probability that an offspring will pass a rule is multiplied by the rule's effects.")
description8 := getLabelCentered("This effect is then applied to the outcome(s).")
description9 := getLabelCentered("Both parents must have a location in their genome for the rule to be tested.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9)
setPageContent(page, window)
}
func setPersonPassesDiscreteTraitRuleExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Trait Rules")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Person Passes Trait Rule")
description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
description2 := getLabelCentered("Each discrete trait has multiple outcomes, and each outcome has an associated score.")
description3 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
description4 := getLabelCentered("Each outcome's score is determined by trait rules.")
description5 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
description6 := getLabelCentered("If a person passes a rule, its effects will be applied to their outcome(s).")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6)
setPageContent(page, window)
}
func setGenomePassesDiscreteTraitRuleExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Genome Passes Rule")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Genome Passes Trait Rule")
description1 := getLabelCentered("Person genetic analyses contain discrete trait analyses.")
description2 := getLabelCentered("There are 2 discrete trait analysis methods: Rules and Neural Networks.")
description3 := getLabelCentered("For rule-based analyses, each trait's outcome has an associated score.")
description4 := getLabelCentered("A higher score represents a higher probability, and a lower score represents the opposite.")
description5 := getLabelCentered("Each outcome's score is determined by trait rules.")
description6 := getLabelCentered("A trait rule will add/subtract values to outcome(s).")
description7 := getLabelCentered("If a person passes a rule, its effects will be applied to their outcome(s).")
description8 := getLabelCentered("If a person has imported multiple genomes, each genome may or may not pass the rule.")
description9 := getLabelCentered("If one genome passes and another does not, it means that one genome has an invalid value.")
description10 := getLabelCentered("This happens because genome sequencing technology is not perfectly accurate.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7, description8, description9, description10)
setPageContent(page, window)
}
func setDiscreteTraitRuleOutcomeEffectsExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Outcome Effects")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Trait Rule Outcome Effects")
description1 := getLabelCentered("Each trait rule has an outcome effect.")
description2 := getLabelCentered("The outcome effect describes points that are added or subtracted from outcomes.")
description3 := getLabelCentered("If the rule is passed, the outcome effect will be applied.")
description4 := getLabelCentered("For example, let's suppose a rule has the outcome effect of Blue +2")
description5 := getLabelCentered("This means that 2 points are added to the Blue outcome if the rule is passed.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)
setPageContent(page, window)
}
func setWealthIsLowerBoundExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Is Lower Bound")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Is Lower Bound")
description1 := getLabelCentered("If a wealth value is a lower bound, its true value may be higher.")
description2 := getLabelCentered("Select this if you wish to represent a monetary value that is lower that your true value.")
description3 := getLabelCentered("For example, if $5000 is a lower bound, then the user has at least $5000, and may have more.")
description4 := getLabelCentered("This is recommended to protect your privacy.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setMemoExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Memo")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Memo")
description1 := getLabelCentered("A Memo is a message signed with a Seekia identity key.")
description2 := getLabelCentered("You can share a memo anywhere, and others can use Seekia to verify it.")
description3 := getLabelCentered("You can timestamp a memo on the blockchain to verify it existed before a certain time.")
description5 := getLabelCentered("You can include a cryptocurrency block hash in the memo to prove it was created after that block.")
description6 := getLabelCentered("You must verify all Seekia memos using the Seekia app to verify their author's signature.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description5, description6)
setPageContent(page, window)
}
func setAllowOtherExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Allow Other")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Allow Other")
description1 := getLabelCentered("When choosing your desires, you can select the Other category.")
description2 := getLabelCentered("Some attributes allow users to provide a custom value.")
description3 := getLabelCentered("Examples of these are Gender Identity and Language.")
description4 := getLabelCentered("If you select Other, you will be allowing users who provide a custom value.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4)
setPageContent(page, window)
}
func setOffspringMonogenicDiseaseProbabilityDesireExplainerPage(window fyne.Window, previousPage func()){
currentPage := func(){setOffspringMonogenicDiseaseProbabilityDesireExplainerPage(window, previousPage)}
title := getPageTitleCentered("Help - Monogenic Disease Probability Desire")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Monogenic Disease Probability Desire")
description1 := getLabelCentered("This desire allows you to filter users based on your offspring's probability of monogenic disease.")
description2 := getLabelCentered("This probability is based on the monogenic diseases that you or the user have been tested for.")
description3 := getLabelCentered("The more diseases and variants that have been tested for, the more accurate the result will be.")
description4 := getLabelCentered("If you sequence your entire genome, Seekia will be able to test for all variants.")
description5 := getLabelCentered("You can sort your matches by how many variants they have tested.")
viewListOfMonogenicDiseasesButton := getWidgetCentered(widget.NewButtonWithIcon("View List Of Monogenic Diseases", theme.VisibilityIcon(), func(){
setViewMonogenicDiseasesList(window, currentPage)
}))
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, viewListOfMonogenicDiseasesButton)
setPageContent(page, window)
}
func setViewMonogenicDiseasesList(window fyne.Window, previousPage func()){
title := getPageTitleCentered("View All Monogenic Diseases")
backButton := getBackButtonCentered(previousPage)
description := getLabelCentered("Below are all the monogenic diseases that Seekia can test for.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), description, widget.NewSeparator())
monogenicDiseaseNamesList, err := monogenicDiseases.GetMonogenicDiseaseNamesList()
if (err != nil){
setErrorEncounteredPage(window, err, previousPage)
return
}
for _, diseaseName := range monogenicDiseaseNamesList{
diseaseLabel := getBoldLabelCentered(translate(diseaseName))
page.Add(diseaseLabel)
}
setPageContent(page, window)
}
func setGeneticTestingExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Genetic Testing")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Offspring Embryo Genetic Testing")
description1 := getLabelCentered("Using embryo genetic testing, you can ensure your offspring will not have any monogenic disease.")
description2 := getLabelCentered("You can always have healthy children with someone for whom your offspring has a <100% probability of monogenic disease.")
description3 := getLabelCentered("You must find a company offering embryo testing.")
description4 := getLabelCentered("The technology is sometimes called Preimplantation Genetic Testing, or PGT.")
description5 := getLabelCentered("This technology requires the use of in-vitro fertilization.")
description6 := getLabelCentered("Choosing someone for whom your offspring has a 0% probability of monogenic diseases is still valuable.")
description7 := getLabelCentered("You could accidentally have children through natural conception, even if you were planning on using PGT.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, description6, description7)
setPageContent(page, window)
}
func setHostingHelpPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Hosting")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Hosting")
description1 := getLabelCentered("Be a Seekia host.")
description2 := getLabelCentered("Your computer will seed content to the network.")
description3 := getLabelCentered("You can choose to host as much or as little as you desire.")
//TODO: Add buttons to show more help
//TODO: Describe how hosting works and associated risks
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3)
setPageContent(page, window)
}
func setMateDesireStatisticsWarningPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Desire Statistics Warning")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Mate Desire Statistics Warning")
description1 := getBoldLabelCentered("Your mate desire statistics may not describe the statistics of the network accurately.")
description2 := getLabelCentered("In Mate mode, you will only download profiles which fulfill your download desires.")
description3 := getLabelCentered("Your download desires are the desires you share with hosts.")
description4 := getLabelCentered("These desires prevent you from having to download all profiles from the network.")
description5 := getLabelCentered("If you are only in Mate mode, you are viewing the statistics of users who fulfill your download desires.")
description6 := getLabelCentered("To view statistics of the entire network, you should disable Mate/Moderator mode and enable Host mode.")
description7 := getLabelCentered("In Host mode, you will download a random portion of the network, allowing you to see accurate statistics.")
description8 := getLabelCentered("Moderator mode will also skew your statistics.")
description9 := getLabelCentered("In moderator mode, you will only download profiles which are written in your understood language(s).")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5, widget.NewSeparator(), description6, description7, widget.NewSeparator(), description8, description9)
setPageContent(page, window)
}
func setNetworkStatisticsInaccuracyWarningPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Network Statistics Warning")
backButton := getBackButtonCentered(previousPage)
//TODO: Improve this page
// We need to make it clear that the statistics may still be accurate, but the numberOfUsers will not reflect the total number of network users
// This will become more obvious when we eventually start to only sample a portion of stored profiles, so results are generated faster
subtitle := getPageSubtitleCentered("Network Statistics Warning")
description1 := getBoldLabelCentered("Viewed statistics about users may not describe the statistics of the network accurately.")
description2 := getLabelCentered("To view statistics of the entire network, you should disable Mate/Moderator mode and enable Host mode.")
description3 := getLabelCentered("In Host mode, you will download a random portion of the network, allowing you to see accurate statistics.")
description4 := getLabelCentered("In Mate mode, you will only download profiles which fulfill your download desires.")
description5 := getLabelCentered("Your download desires are the desires you share with hosts.")
description6 := getLabelCentered("These desires prevent you from having to download all profiles from the network.")
description7 := getLabelCentered("If you are only in Mate mode, you are viewing the statistics of users who fulfill your download desires.")
description8 := getLabelCentered("Moderator mode will also skew your statistics.")
description9 := getLabelCentered("In moderator mode, you will only download profiles which are written in your understood language(s).")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, widget.NewSeparator(), description4, description5, description6, description7, widget.NewSeparator(), description8, description9)
setPageContent(page, window)
}
func setAttributeIsCanonicalExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Attribute Is Canonical")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Attribute Is Canonical")
description1 := getLabelCentered("Profile attributes are either canonical or not.")
description2 := getLabelCentered("Canonical attributes are attributes that do not allow a custom value.")
description3 := getLabelCentered("They only allow predefined values or numerical values.")
description4 := getLabelCentered("An example is Age, which must be a number.")
description5 := getLabelCentered("Canonical Mate attributes only have to be approved if they are banned by at least 1 moderator.")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, description5)
setPageContent(page, window)
}
func setAnyUnreviewedAttributesExistExplainerPage(window fyne.Window, previousPage func()){
title := getPageTitleCentered("Help - Unreviewed Attributes")
backButton := getBackButtonCentered(previousPage)
subtitle := getPageSubtitleCentered("Unreviewed Attributes Exist")
description1 := getLabelCentered("Seekia will serve moderators attributes to review.")
description2 := getLabelCentered("These attributes are served in order of least to most reviewed by other moderators.")
description3 := getLabelCentered("Once you approve/ban/skip an attribute, it is removed from your moderator queue.")
description4 := getLabelCentered("If you have banned a profile or any of its attributes, the rest of the profile's attributes do not need review.")
description5 := getLabelCentered("If you have banned a user, profiles authored by them do not need review.")
description6 := getLabelCentered("You can change this behavior on the Settings page (under construction).")
page := container.NewVBox(title, backButton, widget.NewSeparator(), subtitle, widget.NewSeparator(), description1, description2, description3, description4, widget.NewSeparator(), description5, description6)
setPageContent(page, window)
}