@drodil/backstage-plugin-qeta 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/api/QetaClient.esm.js +24 -0
  2. package/dist/api/QetaClient.esm.js.map +1 -1
  3. package/dist/components/AskForm/AskForm.esm.js +3 -1
  4. package/dist/components/AskForm/AskForm.esm.js.map +1 -1
  5. package/dist/components/Buttons/TagFollowButton.esm.js +26 -0
  6. package/dist/components/Buttons/TagFollowButton.esm.js.map +1 -0
  7. package/dist/components/CommentSection/CommentSection.esm.js +3 -1
  8. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  9. package/dist/components/HomePage/FollowedTagsList.esm.js +56 -0
  10. package/dist/components/HomePage/FollowedTagsList.esm.js.map +1 -0
  11. package/dist/components/HomePage/HomePage.esm.js +2 -1
  12. package/dist/components/HomePage/HomePage.esm.js.map +1 -1
  13. package/dist/components/QuestionHighlightList/QuestionHighlightList.esm.js +2 -2
  14. package/dist/components/QuestionHighlightList/QuestionHighlightList.esm.js.map +1 -1
  15. package/dist/components/QuestionPage/AnswerForm.esm.js +3 -1
  16. package/dist/components/QuestionPage/AnswerForm.esm.js.map +1 -1
  17. package/dist/components/QuestionsContainer/QuestionsContainer.esm.js +4 -0
  18. package/dist/components/QuestionsContainer/QuestionsContainer.esm.js.map +1 -1
  19. package/dist/components/TagPage/TagPage.esm.js +2 -0
  20. package/dist/components/TagPage/TagPage.esm.js.map +1 -1
  21. package/dist/index.d.ts +11 -1
  22. package/dist/locale/fi.esm.js +5 -1
  23. package/dist/locale/fi.esm.js.map +1 -1
  24. package/dist/translation.esm.js +6 -0
  25. package/dist/translation.esm.js.map +1 -1
  26. package/dist/utils/hooks.esm.js +45 -6
  27. package/dist/utils/hooks.esm.js.map +1 -1
  28. package/package.json +3 -3
@@ -46,6 +46,7 @@ const AnswerForm = (props) => {
46
46
  setError(true);
47
47
  return;
48
48
  }
49
+ setEdited(false);
49
50
  analytics.captureEvent("edit", "answer");
50
51
  reset();
51
52
  onPost(a);
@@ -62,6 +63,7 @@ const AnswerForm = (props) => {
62
63
  setError(true);
63
64
  return;
64
65
  }
66
+ setEdited(false);
65
67
  analytics.captureEvent("post", "answer");
66
68
  reset();
67
69
  onPost(a);
@@ -82,7 +84,7 @@ const AnswerForm = (props) => {
82
84
  reset(values);
83
85
  }, [values, reset]);
84
86
  useEffect(() => {
85
- confirmNavigationIfEdited(edited);
87
+ return confirmNavigationIfEdited(edited);
86
88
  }, [edited]);
87
89
  return /* @__PURE__ */ React.createElement(
88
90
  RequirePermission,
@@ -1 +1 @@
1
- {"version":3,"file":"AnswerForm.esm.js","sources":["../../../src/components/QuestionPage/AnswerForm.tsx"],"sourcesContent":["import { WarningPanel } from '@backstage/core-components';\nimport { Button, Typography } from '@material-ui/core';\nimport React, { useEffect } from 'react';\nimport { configApiRef, useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport {\n AnswerRequest,\n AnswerResponse,\n qetaCreateAnswerPermission,\n QuestionResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useStyles, useTranslation } from '../../utils/hooks';\nimport { Controller, useForm } from 'react-hook-form';\nimport { MarkdownEditor } from '../MarkdownEditor/MarkdownEditor';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { AskAnonymouslyCheckbox } from '../AskAnonymouslyCheckbox/AskAnonymouslyCheckbox';\nimport { qetaApiRef } from '../../api';\nimport { confirmNavigationIfEdited } from '../../utils/utils';\n\nconst getDefaultValues = (questionId: number) => {\n return { questionId, answer: '' };\n};\n\nexport const AnswerForm = (props: {\n question: QuestionResponse;\n onPost: (answer: AnswerResponse) => void;\n id?: number;\n}) => {\n const { question, onPost, id } = props;\n const [values, setValues] = React.useState(getDefaultValues(question.id));\n const analytics = useAnalytics();\n const [error, setError] = React.useState(false);\n const [images, setImages] = React.useState<number[]>([]);\n const [edited, setEdited] = React.useState(false);\n const qetaApi = useApi(qetaApiRef);\n const styles = useStyles();\n const configApi = useApi(configApiRef);\n const allowAnonymouns = configApi.getOptionalBoolean('qeta.allowAnonymous');\n const { t } = useTranslation();\n\n const {\n handleSubmit,\n control,\n formState: { errors },\n reset,\n } = useForm<AnswerRequest>({\n values,\n defaultValues: getDefaultValues(question.id),\n });\n\n const postAnswer = (data: AnswerRequest) => {\n if (id) {\n qetaApi\n .updateAnswer(id, {\n questionId: question.id,\n answer: data.answer,\n images,\n })\n .then(a => {\n if (!a || !('id' in a)) {\n setError(true);\n return;\n }\n analytics.captureEvent('edit', 'answer');\n reset();\n onPost(a);\n })\n .catch(_e => setError(true));\n return;\n }\n // http://localhost:7007/api/qeta/attachments/36e551b1-3be7-479a-8942-b7018434e710\n qetaApi\n .postAnswer({\n questionId: question.id,\n answer: data.answer,\n images,\n anonymous: data.anonymous,\n })\n .then(a => {\n if (!a || !('id' in a)) {\n setError(true);\n return;\n }\n analytics.captureEvent('post', 'answer');\n reset();\n onPost(a);\n })\n .catch(_e => setError(true));\n };\n\n useEffect(() => {\n if (id) {\n qetaApi.getAnswer(question.id, id).then(a => {\n if ('content' in a) {\n setValues({ questionId: question.id, answer: a.content });\n } else {\n setError(true);\n }\n });\n }\n }, [id, question, qetaApi]);\n\n useEffect(() => {\n reset(values);\n }, [values, reset]);\n\n useEffect(() => {\n confirmNavigationIfEdited(edited);\n }, [edited]);\n\n return (\n <RequirePermission\n permission={qetaCreateAnswerPermission}\n errorPage={<></>}\n >\n <form\n onSubmit={handleSubmit(postAnswer)}\n onChange={() => {\n setEdited(true);\n }}\n className=\"qetaAnswerForm\"\n >\n <Typography variant=\"h6\">Your answer</Typography>\n {error && (\n <WarningPanel severity=\"error\" title={t('answerForm.errorPosting')} />\n )}\n <Controller\n control={control}\n defaultValue=\"\"\n rules={{\n required: true,\n }}\n render={({ field: { onChange, value } }) => (\n <MarkdownEditor\n value={value}\n onChange={onChange}\n height={200}\n error={'answer' in errors}\n config={configApi}\n placeholder={t('answerForm.contentInput.placeholder')}\n onImageUpload={(imageId: number) => {\n setImages(prevImages => [...prevImages, imageId]);\n }}\n />\n )}\n name=\"answer\"\n />\n {allowAnonymouns && !id && (\n <AskAnonymouslyCheckbox\n control={control}\n label={t('anonymousCheckbox.answerAnonymously')}\n />\n )}\n <Button\n variant=\"outlined\"\n type=\"submit\"\n color=\"primary\"\n className={`qetaAnswerFormPostBtn ${styles.postButton}`}\n >\n {id\n ? t('answerForm.submit.existingAnswer')\n : t('answerForm.submit.newAnswer')}\n </Button>\n </form>\n </RequirePermission>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AnswerForm.esm.js","sources":["../../../src/components/QuestionPage/AnswerForm.tsx"],"sourcesContent":["import { WarningPanel } from '@backstage/core-components';\nimport { Button, Typography } from '@material-ui/core';\nimport React, { useEffect } from 'react';\nimport { configApiRef, useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport {\n AnswerRequest,\n AnswerResponse,\n qetaCreateAnswerPermission,\n QuestionResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useStyles, useTranslation } from '../../utils/hooks';\nimport { Controller, useForm } from 'react-hook-form';\nimport { MarkdownEditor } from '../MarkdownEditor/MarkdownEditor';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { AskAnonymouslyCheckbox } from '../AskAnonymouslyCheckbox/AskAnonymouslyCheckbox';\nimport { qetaApiRef } from '../../api';\nimport { confirmNavigationIfEdited } from '../../utils/utils';\n\nconst getDefaultValues = (questionId: number) => {\n return { questionId, answer: '' };\n};\n\nexport const AnswerForm = (props: {\n question: QuestionResponse;\n onPost: (answer: AnswerResponse) => void;\n id?: number;\n}) => {\n const { question, onPost, id } = props;\n const [values, setValues] = React.useState(getDefaultValues(question.id));\n const analytics = useAnalytics();\n const [error, setError] = React.useState(false);\n const [images, setImages] = React.useState<number[]>([]);\n const [edited, setEdited] = React.useState(false);\n const qetaApi = useApi(qetaApiRef);\n const styles = useStyles();\n const configApi = useApi(configApiRef);\n const allowAnonymouns = configApi.getOptionalBoolean('qeta.allowAnonymous');\n const { t } = useTranslation();\n\n const {\n handleSubmit,\n control,\n formState: { errors },\n reset,\n } = useForm<AnswerRequest>({\n values,\n defaultValues: getDefaultValues(question.id),\n });\n\n const postAnswer = (data: AnswerRequest) => {\n if (id) {\n qetaApi\n .updateAnswer(id, {\n questionId: question.id,\n answer: data.answer,\n images,\n })\n .then(a => {\n if (!a || !('id' in a)) {\n setError(true);\n return;\n }\n setEdited(false);\n analytics.captureEvent('edit', 'answer');\n reset();\n onPost(a);\n })\n .catch(_e => setError(true));\n return;\n }\n // http://localhost:7007/api/qeta/attachments/36e551b1-3be7-479a-8942-b7018434e710\n qetaApi\n .postAnswer({\n questionId: question.id,\n answer: data.answer,\n images,\n anonymous: data.anonymous,\n })\n .then(a => {\n if (!a || !('id' in a)) {\n setError(true);\n return;\n }\n setEdited(false);\n analytics.captureEvent('post', 'answer');\n reset();\n onPost(a);\n })\n .catch(_e => setError(true));\n };\n\n useEffect(() => {\n if (id) {\n qetaApi.getAnswer(question.id, id).then(a => {\n if ('content' in a) {\n setValues({ questionId: question.id, answer: a.content });\n } else {\n setError(true);\n }\n });\n }\n }, [id, question, qetaApi]);\n\n useEffect(() => {\n reset(values);\n }, [values, reset]);\n\n useEffect(() => {\n return confirmNavigationIfEdited(edited);\n }, [edited]);\n\n return (\n <RequirePermission\n permission={qetaCreateAnswerPermission}\n errorPage={<></>}\n >\n <form\n onSubmit={handleSubmit(postAnswer)}\n onChange={() => {\n setEdited(true);\n }}\n className=\"qetaAnswerForm\"\n >\n <Typography variant=\"h6\">Your answer</Typography>\n {error && (\n <WarningPanel severity=\"error\" title={t('answerForm.errorPosting')} />\n )}\n <Controller\n control={control}\n defaultValue=\"\"\n rules={{\n required: true,\n }}\n render={({ field: { onChange, value } }) => (\n <MarkdownEditor\n value={value}\n onChange={onChange}\n height={200}\n error={'answer' in errors}\n config={configApi}\n placeholder={t('answerForm.contentInput.placeholder')}\n onImageUpload={(imageId: number) => {\n setImages(prevImages => [...prevImages, imageId]);\n }}\n />\n )}\n name=\"answer\"\n />\n {allowAnonymouns && !id && (\n <AskAnonymouslyCheckbox\n control={control}\n label={t('anonymousCheckbox.answerAnonymously')}\n />\n )}\n <Button\n variant=\"outlined\"\n type=\"submit\"\n color=\"primary\"\n className={`qetaAnswerFormPostBtn ${styles.postButton}`}\n >\n {id\n ? t('answerForm.submit.existingAnswer')\n : t('answerForm.submit.newAnswer')}\n </Button>\n </form>\n </RequirePermission>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import { EntityRefLink } from '@backstage/plugin-catalog-react';
11
11
  import { useAnalytics } from '@backstage/core-plugin-api';
12
12
  import { filterTags } from '@drodil/backstage-plugin-qeta-common';
13
13
  import { getFiltersWithDateRange } from '../../utils/utils.esm.js';
14
+ import { TagFollowButton } from '../Buttons/TagFollowButton.esm.js';
14
15
 
15
16
  const QuestionsContainer = (props) => {
16
17
  const {
@@ -164,6 +165,9 @@ const QuestionsContainer = (props) => {
164
165
  shownTitle = t("questionsContainer.title.questionsTagged", {
165
166
  tags: tags.join(", ")
166
167
  });
168
+ if (tags.length === 1) {
169
+ link = /* @__PURE__ */ React.createElement(TagFollowButton, { tag: tags[0] });
170
+ }
167
171
  } else if (favorite) {
168
172
  shownTitle = t("questionsContainer.title.favorite");
169
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QuestionsContainer.esm.js","sources":["../../../src/components/QuestionsContainer/QuestionsContainer.tsx"],"sourcesContent":["import { useQetaApi, useTranslation } from '../../utils/hooks';\nimport {\n Box,\n Button,\n Collapse,\n Grid,\n TextField,\n Typography,\n} from '@material-ui/core';\n\nimport React, { useEffect } from 'react';\nimport useDebounce from 'react-use/lib/useDebounce';\nimport { FilterKey, filterKeys, FilterPanel, Filters } from './FilterPanel';\nimport { QuestionList } from './QuestionList';\nimport FilterList from '@material-ui/icons/FilterList';\nimport { useSearchParams } from 'react-router-dom';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { useAnalytics } from '@backstage/core-plugin-api';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport { getFiltersWithDateRange } from '../../utils/utils';\n\nexport interface QuestionsContainerProps {\n tags?: string[];\n author?: string;\n entity?: string;\n showFilters?: boolean;\n showTitle?: boolean;\n title?: string;\n favorite?: boolean;\n showAskButton?: boolean;\n showNoQuestionsBtn?: boolean;\n}\n\nexport const QuestionsContainer = (props: QuestionsContainerProps) => {\n const {\n tags,\n author,\n entity,\n showFilters,\n showTitle,\n title,\n favorite,\n showAskButton,\n showNoQuestionsBtn,\n } = props;\n const analytics = useAnalytics();\n const [page, setPage] = React.useState(1);\n const [questionsPerPage, setQuestionsPerPage] = React.useState(10);\n const [showFilterPanel, setShowFilterPanel] = React.useState(false);\n const [searchParams, setSearchParams] = useSearchParams();\n const [searchQuery, setSearchQuery] = React.useState('');\n const { t } = useTranslation();\n const [filters, setFilters] = React.useState<Filters>({\n order: 'desc',\n orderBy: 'created',\n noAnswers: 'false',\n noCorrectAnswer: 'false',\n noVotes: 'false',\n searchQuery: '',\n entity: entity ?? '',\n tags: tags ?? [],\n dateRange: '',\n });\n\n const onPageChange = (value: number) => {\n setPage(value);\n setSearchParams(prev => {\n const newValue = prev;\n newValue.set('page', String(value));\n return newValue;\n });\n };\n\n const onFilterChange = (key: FilterKey, value: string | string[]) => {\n if (filters[key] === value) {\n return;\n }\n\n setPage(1);\n setFilters({ ...filters, ...{ [key]: value } });\n setSearchParams(prev => {\n const newValue = prev;\n if (!value || value === 'false') {\n newValue.delete(key);\n } else if (Array.isArray(value)) {\n if (value.length === 0) {\n newValue.delete(key);\n } else {\n newValue.set(key, value.join(','));\n }\n } else if (value.length > 0) {\n newValue.set(key, value);\n } else {\n newValue.delete(key);\n }\n return newValue;\n });\n };\n\n const onSearchQueryChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onPageChange(1);\n if (event.target.value) {\n analytics.captureEvent('qeta_search', event.target.value);\n }\n setSearchQuery(event.target.value);\n };\n\n useDebounce(\n () => {\n if (filters.searchQuery !== searchQuery) {\n setFilters({ ...filters, searchQuery: searchQuery });\n }\n },\n 400,\n [searchQuery],\n );\n\n useEffect(() => {\n let filtersApplied = false;\n searchParams.forEach((value, key) => {\n try {\n if (key === 'page') {\n const pv = Number.parseInt(value, 10);\n if (pv > 0) {\n setPage(pv);\n } else {\n setPage(1);\n }\n } else if (key === 'questionsPerPage') {\n const qpp = Number.parseInt(value, 10);\n if (qpp > 0) setQuestionsPerPage(qpp);\n } else if (filterKeys.includes(key as FilterKey)) {\n filtersApplied = true;\n if (key === 'tags') {\n filters.tags = filterTags(value) ?? [];\n } else {\n (filters as any)[key] = value;\n }\n }\n } catch (_e) {\n // NOOP\n }\n });\n setFilters(filters);\n if (filtersApplied) {\n setShowFilterPanel(true);\n }\n }, [searchParams, filters]);\n\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(\n api => {\n return api.getQuestions({\n limit: questionsPerPage,\n offset: (page - 1) * questionsPerPage,\n includeEntities: true,\n author,\n favorite,\n ...getFiltersWithDateRange(filters),\n });\n },\n [page, filters, questionsPerPage],\n );\n\n const onPageSizeChange = (value: number) => {\n if (response) {\n let newPage = page;\n while (newPage * value > response.total) {\n newPage -= 1;\n }\n onPageChange(Math.max(1, newPage));\n }\n setQuestionsPerPage(value);\n setSearchParams(prev => {\n const newValue = prev;\n newValue.set('questionsPerPage', String(value));\n return newValue;\n });\n };\n\n let shownTitle = title;\n let link = undefined;\n if (author) {\n shownTitle = t('questionsContainer.title.questionsBy');\n link = <EntityRefLink entityRef={author} hideIcon defaultKind=\"user\" />;\n } else if (entity) {\n shownTitle = t('questionsContainer.title.questionsAbout');\n link = <EntityRefLink entityRef={entity} />;\n } else if (tags) {\n shownTitle = t('questionsContainer.title.questionsTagged', {\n tags: tags.join(', '),\n });\n } else if (favorite) {\n shownTitle = t('questionsContainer.title.favorite');\n }\n\n return (\n <Box className=\"qetaQuestionsContainer\">\n {showTitle && (\n <Typography\n variant=\"h5\"\n className=\"qetaQuestionsContainerTitle\"\n style={{ marginBottom: '1.5rem' }}\n >\n {shownTitle} {link}\n </Typography>\n )}\n <Grid container justifyContent=\"space-between\">\n <Grid item xs={12} md={4}>\n <TextField\n id=\"search-bar\"\n fullWidth\n onChange={onSearchQueryChange}\n label={t('questionsContainer.search.label')}\n className=\"qetaQuestionsContainerSearchInput\"\n variant=\"outlined\"\n placeholder={t('questionsContainer.search.placeholder')}\n size=\"small\"\n style={{ marginBottom: '5px' }}\n />\n </Grid>\n {showAskButton && (\n <Grid item>\n <AskQuestionButton\n entity={entity ?? filters.entity}\n entityPage={entity !== undefined}\n tags={tags}\n />\n </Grid>\n )}\n </Grid>\n <Grid container justifyContent=\"space-between\">\n <Grid item>\n <Typography\n variant=\"h6\"\n className=\"qetaQuestionsContainerQuestionCount\"\n >\n {t('common.questions', { count: response?.total ?? 0 })}\n </Typography>\n </Grid>\n {(showFilters ?? true) && (\n <Grid item>\n <Button\n onClick={() => setShowFilterPanel(!showFilterPanel)}\n className=\"qetaQuestionsContainerFilterPanelBtn\"\n startIcon={<FilterList />}\n >\n {t('filterPanel.filterButton')}\n </Button>\n </Grid>\n )}\n </Grid>\n {(showFilters ?? true) && (\n <Collapse in={showFilterPanel}>\n <FilterPanel onChange={onFilterChange} filters={filters} />\n </Collapse>\n )}\n\n <QuestionList\n loading={loading}\n error={error}\n response={response}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n entity={entity}\n page={page}\n pageSize={questionsPerPage}\n showNoQuestionsBtn={showNoQuestionsBtn}\n entityPage={entity !== undefined}\n tags={tags}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QuestionsContainer.esm.js","sources":["../../../src/components/QuestionsContainer/QuestionsContainer.tsx"],"sourcesContent":["import { useQetaApi, useTranslation } from '../../utils/hooks';\nimport {\n Box,\n Button,\n Collapse,\n Grid,\n TextField,\n Typography,\n} from '@material-ui/core';\n\nimport React, { useEffect } from 'react';\nimport useDebounce from 'react-use/lib/useDebounce';\nimport { FilterKey, filterKeys, FilterPanel, Filters } from './FilterPanel';\nimport { QuestionList } from './QuestionList';\nimport FilterList from '@material-ui/icons/FilterList';\nimport { useSearchParams } from 'react-router-dom';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { useAnalytics } from '@backstage/core-plugin-api';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport { getFiltersWithDateRange } from '../../utils/utils';\nimport { TagFollowButton } from '../Buttons/TagFollowButton';\n\nexport interface QuestionsContainerProps {\n tags?: string[];\n author?: string;\n entity?: string;\n showFilters?: boolean;\n showTitle?: boolean;\n title?: string;\n favorite?: boolean;\n showAskButton?: boolean;\n showNoQuestionsBtn?: boolean;\n}\n\nexport const QuestionsContainer = (props: QuestionsContainerProps) => {\n const {\n tags,\n author,\n entity,\n showFilters,\n showTitle,\n title,\n favorite,\n showAskButton,\n showNoQuestionsBtn,\n } = props;\n const analytics = useAnalytics();\n const [page, setPage] = React.useState(1);\n const [questionsPerPage, setQuestionsPerPage] = React.useState(10);\n const [showFilterPanel, setShowFilterPanel] = React.useState(false);\n const [searchParams, setSearchParams] = useSearchParams();\n const [searchQuery, setSearchQuery] = React.useState('');\n const { t } = useTranslation();\n const [filters, setFilters] = React.useState<Filters>({\n order: 'desc',\n orderBy: 'created',\n noAnswers: 'false',\n noCorrectAnswer: 'false',\n noVotes: 'false',\n searchQuery: '',\n entity: entity ?? '',\n tags: tags ?? [],\n dateRange: '',\n });\n\n const onPageChange = (value: number) => {\n setPage(value);\n setSearchParams(prev => {\n const newValue = prev;\n newValue.set('page', String(value));\n return newValue;\n });\n };\n\n const onFilterChange = (key: FilterKey, value: string | string[]) => {\n if (filters[key] === value) {\n return;\n }\n\n setPage(1);\n setFilters({ ...filters, ...{ [key]: value } });\n setSearchParams(prev => {\n const newValue = prev;\n if (!value || value === 'false') {\n newValue.delete(key);\n } else if (Array.isArray(value)) {\n if (value.length === 0) {\n newValue.delete(key);\n } else {\n newValue.set(key, value.join(','));\n }\n } else if (value.length > 0) {\n newValue.set(key, value);\n } else {\n newValue.delete(key);\n }\n return newValue;\n });\n };\n\n const onSearchQueryChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onPageChange(1);\n if (event.target.value) {\n analytics.captureEvent('qeta_search', event.target.value);\n }\n setSearchQuery(event.target.value);\n };\n\n useDebounce(\n () => {\n if (filters.searchQuery !== searchQuery) {\n setFilters({ ...filters, searchQuery: searchQuery });\n }\n },\n 400,\n [searchQuery],\n );\n\n useEffect(() => {\n let filtersApplied = false;\n searchParams.forEach((value, key) => {\n try {\n if (key === 'page') {\n const pv = Number.parseInt(value, 10);\n if (pv > 0) {\n setPage(pv);\n } else {\n setPage(1);\n }\n } else if (key === 'questionsPerPage') {\n const qpp = Number.parseInt(value, 10);\n if (qpp > 0) setQuestionsPerPage(qpp);\n } else if (filterKeys.includes(key as FilterKey)) {\n filtersApplied = true;\n if (key === 'tags') {\n filters.tags = filterTags(value) ?? [];\n } else {\n (filters as any)[key] = value;\n }\n }\n } catch (_e) {\n // NOOP\n }\n });\n setFilters(filters);\n if (filtersApplied) {\n setShowFilterPanel(true);\n }\n }, [searchParams, filters]);\n\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(\n api => {\n return api.getQuestions({\n limit: questionsPerPage,\n offset: (page - 1) * questionsPerPage,\n includeEntities: true,\n author,\n favorite,\n ...getFiltersWithDateRange(filters),\n });\n },\n [page, filters, questionsPerPage],\n );\n\n const onPageSizeChange = (value: number) => {\n if (response) {\n let newPage = page;\n while (newPage * value > response.total) {\n newPage -= 1;\n }\n onPageChange(Math.max(1, newPage));\n }\n setQuestionsPerPage(value);\n setSearchParams(prev => {\n const newValue = prev;\n newValue.set('questionsPerPage', String(value));\n return newValue;\n });\n };\n\n let shownTitle = title;\n let link = undefined;\n if (author) {\n shownTitle = t('questionsContainer.title.questionsBy');\n link = <EntityRefLink entityRef={author} hideIcon defaultKind=\"user\" />;\n } else if (entity) {\n shownTitle = t('questionsContainer.title.questionsAbout');\n link = <EntityRefLink entityRef={entity} />;\n } else if (tags) {\n shownTitle = t('questionsContainer.title.questionsTagged', {\n tags: tags.join(', '),\n });\n if (tags.length === 1) {\n link = <TagFollowButton tag={tags[0]} />;\n }\n } else if (favorite) {\n shownTitle = t('questionsContainer.title.favorite');\n }\n\n return (\n <Box className=\"qetaQuestionsContainer\">\n {showTitle && (\n <Typography\n variant=\"h5\"\n className=\"qetaQuestionsContainerTitle\"\n style={{ marginBottom: '1.5rem' }}\n >\n {shownTitle} {link}\n </Typography>\n )}\n <Grid container justifyContent=\"space-between\">\n <Grid item xs={12} md={4}>\n <TextField\n id=\"search-bar\"\n fullWidth\n onChange={onSearchQueryChange}\n label={t('questionsContainer.search.label')}\n className=\"qetaQuestionsContainerSearchInput\"\n variant=\"outlined\"\n placeholder={t('questionsContainer.search.placeholder')}\n size=\"small\"\n style={{ marginBottom: '5px' }}\n />\n </Grid>\n {showAskButton && (\n <Grid item>\n <AskQuestionButton\n entity={entity ?? filters.entity}\n entityPage={entity !== undefined}\n tags={tags}\n />\n </Grid>\n )}\n </Grid>\n <Grid container justifyContent=\"space-between\">\n <Grid item>\n <Typography\n variant=\"h6\"\n className=\"qetaQuestionsContainerQuestionCount\"\n >\n {t('common.questions', { count: response?.total ?? 0 })}\n </Typography>\n </Grid>\n {(showFilters ?? true) && (\n <Grid item>\n <Button\n onClick={() => setShowFilterPanel(!showFilterPanel)}\n className=\"qetaQuestionsContainerFilterPanelBtn\"\n startIcon={<FilterList />}\n >\n {t('filterPanel.filterButton')}\n </Button>\n </Grid>\n )}\n </Grid>\n {(showFilters ?? true) && (\n <Collapse in={showFilterPanel}>\n <FilterPanel onChange={onFilterChange} filters={filters} />\n </Collapse>\n )}\n <QuestionList\n loading={loading}\n error={error}\n response={response}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n entity={entity}\n page={page}\n pageSize={questionsPerPage}\n showNoQuestionsBtn={showNoQuestionsBtn}\n entityPage={entity !== undefined}\n tags={tags}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { AskQuestionButton } from '../Buttons/AskQuestionButton.esm.js';
7
7
  import { Container } from '@material-ui/core';
8
8
  import { BackToQuestionsButton } from '../Buttons/BackToQuestionsButton.esm.js';
9
9
  import { useTranslation } from '../../utils/hooks.esm.js';
10
+ import { TagFollowButton } from '../Buttons/TagFollowButton.esm.js';
10
11
 
11
12
  const TagPage = () => {
12
13
  const { tag } = useParams();
@@ -16,6 +17,7 @@ const TagPage = () => {
16
17
  {
17
18
  title: tag ? t("tagPage.taggedWithTitle", { tag }) : t("tagPage.defaultTitle")
18
19
  },
20
+ tag && /* @__PURE__ */ React.createElement(TagFollowButton, { tag }),
19
21
  /* @__PURE__ */ React.createElement(BackToQuestionsButton, null),
20
22
  /* @__PURE__ */ React.createElement(AskQuestionButton, { tags: tag ? [tag] : void 0 })
21
23
  ), tag ? /* @__PURE__ */ React.createElement(QuestionsContainer, { tags: [tag ?? ""] }) : /* @__PURE__ */ React.createElement(TagsContainer, null)));
@@ -1 +1 @@
1
- {"version":3,"file":"TagPage.esm.js","sources":["../../../src/components/TagPage/TagPage.tsx"],"sourcesContent":["import React from 'react';\nimport { Content, ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\nimport { QuestionsContainer } from '../QuestionsContainer/QuestionsContainer';\nimport { TagsContainer } from './TagsContainer';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { Container } from '@material-ui/core';\nimport { BackToQuestionsButton } from '../Buttons/BackToQuestionsButton';\nimport { useTranslation } from '../../utils/hooks';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n const { t } = useTranslation();\n return (\n <Content>\n <Container maxWidth=\"lg\">\n <ContentHeader\n title={\n tag\n ? t('tagPage.taggedWithTitle', { tag })\n : t('tagPage.defaultTitle')\n }\n >\n <BackToQuestionsButton />\n <AskQuestionButton tags={tag ? [tag] : undefined} />\n </ContentHeader>\n {tag ? <QuestionsContainer tags={[tag ?? '']} /> : <TagsContainer />}\n </Container>\n </Content>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAUO,MAAM,UAAU,MAAM;AAC3B,EAAM,MAAA,EAAE,GAAI,EAAA,GAAI,SAAU,EAAA,CAAA;AAC1B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,UAAS,IAClB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,KAAA,EACE,MACI,CAAE,CAAA,yBAAA,EAA2B,EAAE,GAAI,EAAC,CACpC,GAAA,CAAA,CAAE,sBAAsB,CAAA;AAAA,KAAA;AAAA,wCAG7B,qBAAsB,EAAA,IAAA,CAAA;AAAA,wCACtB,iBAAkB,EAAA,EAAA,IAAA,EAAM,MAAM,CAAC,GAAG,IAAI,KAAW,CAAA,EAAA,CAAA;AAAA,GAEnD,EAAA,GAAA,mBAAO,KAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EAAmB,IAAM,EAAA,CAAC,GAAO,IAAA,EAAE,CAAG,EAAA,CAAA,mBAAM,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAc,CACpE,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"TagPage.esm.js","sources":["../../../src/components/TagPage/TagPage.tsx"],"sourcesContent":["import React from 'react';\nimport { Content, ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\nimport { QuestionsContainer } from '../QuestionsContainer/QuestionsContainer';\nimport { TagsContainer } from './TagsContainer';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { Container } from '@material-ui/core';\nimport { BackToQuestionsButton } from '../Buttons/BackToQuestionsButton';\nimport { useTranslation } from '../../utils/hooks';\nimport { TagFollowButton } from '../Buttons/TagFollowButton';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n const { t } = useTranslation();\n return (\n <Content>\n <Container maxWidth=\"lg\">\n <ContentHeader\n title={\n tag\n ? t('tagPage.taggedWithTitle', { tag })\n : t('tagPage.defaultTitle')\n }\n >\n {tag && <TagFollowButton tag={tag} />}\n <BackToQuestionsButton />\n <AskQuestionButton tags={tag ? [tag] : undefined} />\n </ContentHeader>\n {tag ? <QuestionsContainer tags={[tag ?? '']} /> : <TagsContainer />}\n </Container>\n </Content>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAWO,MAAM,UAAU,MAAM;AAC3B,EAAM,MAAA,EAAE,GAAI,EAAA,GAAI,SAAU,EAAA,CAAA;AAC1B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,UAAS,IAClB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,KAAA,EACE,MACI,CAAE,CAAA,yBAAA,EAA2B,EAAE,GAAI,EAAC,CACpC,GAAA,CAAA,CAAE,sBAAsB,CAAA;AAAA,KAAA;AAAA,IAG7B,GAAA,oBAAQ,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,GAAU,EAAA,CAAA;AAAA,wCAClC,qBAAsB,EAAA,IAAA,CAAA;AAAA,wCACtB,iBAAkB,EAAA,EAAA,IAAA,EAAM,MAAM,CAAC,GAAG,IAAI,KAAW,CAAA,EAAA,CAAA;AAAA,GAEnD,EAAA,GAAA,mBAAO,KAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EAAmB,IAAM,EAAA,CAAC,GAAO,IAAA,EAAE,CAAG,EAAA,CAAA,mBAAM,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAc,CACpE,CACF,CAAA,CAAA;AAEJ;;;;"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import React__default, { ReactNode } from 'react';
4
4
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
5
5
  import { FetchApi, DiscoveryApi } from '@backstage/core-plugin-api';
6
- import { AnswersResponse, AnswerResponse, QuestionResponse, StatisticResponse, QuestionsResponse, QuestionRequest, TagResponse, EntityResponse, StatisticsRequestParameters, AnswerRequest, AnswerResponseBody, AttachmentResponseBody, Question, Answer } from '@drodil/backstage-plugin-qeta-common';
6
+ import { AnswersResponse, AnswerResponse, QuestionResponse, StatisticResponse, QuestionsResponse, QuestionRequest, TagResponse, EntityResponse, StatisticsRequestParameters, AnswerRequest, AnswerResponseBody, AttachmentResponseBody, UserTagsResponse, Question, Answer } from '@drodil/backstage-plugin-qeta-common';
7
7
  import { SvgIconProps } from '@material-ui/core';
8
8
  import * as _backstage_core_plugin_api_alpha from '@backstage/core-plugin-api/alpha';
9
9
 
@@ -176,6 +176,9 @@ interface QetaApi {
176
176
  updateAnswer(id: number, answer: AnswerRequest): Promise<AnswerResponseBody>;
177
177
  getAnswers(options: GetAnswersOptions): Promise<AnswersResponse>;
178
178
  getAnswer(questionId: string | number | undefined, id: string | number | undefined): Promise<AnswerResponseBody>;
179
+ getFollowedTags(): Promise<UserTagsResponse>;
180
+ followTag(tag: string): Promise<boolean>;
181
+ unfollowTag(tag: string): Promise<boolean>;
179
182
  }
180
183
 
181
184
  declare const qetaApiRef: _backstage_core_plugin_api.ApiRef<QetaApi>;
@@ -212,6 +215,9 @@ declare class QetaClient implements QetaApi {
212
215
  updateAnswer(id: number, answer: AnswerRequest): Promise<AnswerResponseBody>;
213
216
  getAnswers(options: GetAnswersOptions): Promise<AnswersResponse>;
214
217
  getAnswer(questionId: string | number | undefined, id: string | number | undefined): Promise<AnswerResponseBody>;
218
+ getFollowedTags(): Promise<UserTagsResponse>;
219
+ followTag(tag: string): Promise<boolean>;
220
+ unfollowTag(tag: string): Promise<boolean>;
215
221
  postAttachment(file: Blob): Promise<AttachmentResponseBody>;
216
222
  getMostUpvotedAnswers(options: StatisticsRequestParameters): Promise<StatisticResponse>;
217
223
  getMostUpvotedCorrectAnswers(options: StatisticsRequestParameters): Promise<StatisticResponse>;
@@ -302,6 +308,7 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
302
308
  readonly "deleteModal.cancelButton": "Cancel";
303
309
  readonly "favoritePage.title": "Your favorite questions";
304
310
  readonly "homePage.title": "All questions";
311
+ readonly "homePage.followedTags": "Followed tags";
305
312
  readonly "homePage.moreMenu.statistics": "Statistics";
306
313
  readonly "homePage.moreMenu.tags": "Tags";
307
314
  readonly "homePage.moreMenu.title": "More";
@@ -397,6 +404,9 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
397
404
  readonly "userPage.questions": "Questions";
398
405
  readonly "userPage.answers": "Answers";
399
406
  readonly "userPage.profileTab": "Profile";
407
+ readonly "tagButton.tooltip": "By following a tag, you will get notified when ever a new question with that tag is posted";
408
+ readonly "tagButton.follow": "Follow tag";
409
+ readonly "tagButton.unfollow": "Unfollow tag";
400
410
  }>;
401
411
  declare const qetaTranslations: _backstage_core_plugin_api_alpha.TranslationResource<"qeta">;
402
412
 
@@ -70,6 +70,7 @@ const fi = createTranslationMessages({
70
70
  "homePage.moreMenu.favoriteQuestions": "Suosikkikysymykset",
71
71
  "homePage.moreMenu.statistics": "Statistiikka",
72
72
  "homePage.title": "Kaikki kysymykset",
73
+ "homePage.followedTags": "Seuratut t\xE4git",
73
74
  "homePage.highlights.loadError": "Kysymyksi\xE4 ei voitu ladata",
74
75
  "homePage.highlights.hot.title": "Kuumat kysymykset",
75
76
  "homePage.highlights.hot.noQuestionsLabel": "Ei kysymyksi\xE4",
@@ -177,7 +178,10 @@ const fi = createTranslationMessages({
177
178
  "tagPage.tags_other": "{{count}} t\xE4gi\xE4",
178
179
  "userPage.profileTab": "Profiili",
179
180
  "userPage.questions": "Kysymykset",
180
- "userPage.answers": "Vastaukset"
181
+ "userPage.answers": "Vastaukset",
182
+ "tagButton.follow": "Seuraa t\xE4gi\xE4",
183
+ "tagButton.unfollow": "Lopeta t\xE4gin seuraaminen",
184
+ "tagButton.tooltip": "Seuraamalla t\xE4gi\xE4 saat ilmoituksia uusista kysymyksist\xE4"
181
185
  }
182
186
  });
183
187
 
@@ -1 +1 @@
1
- {"version":3,"file":"fi.esm.js","sources":["../../src/locale/fi.ts"],"sourcesContent":["import { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../translation';\n\nconst fi = createTranslationMessages({\n ref: qetaTranslationRef,\n full: false,\n messages: {\n pluginName: 'Q&A',\n 'answerList.errorLoading': 'Vastauksia ei voitu ladata',\n 'answerList.noAnswers': 'Ei vastauksia',\n 'answerList.limitSelect': 'Vastauksia per sivu',\n 'common.score': '{{score}} pistettä',\n 'common.anonymousAuthor': 'Anonyymi',\n 'common.answers_zero': 'Ei vastauksia',\n 'common.answers_one': '{{count}} vastaus',\n 'common.answers_other': '{{count}} vastausta',\n 'common.views_zero': 'Katsottu {{count}} kertaa',\n 'common.views_one': 'Katsottu {{count}} kerran',\n 'common.views_other': 'Katsottu {{count}} kertaa',\n 'common.viewsShort_zero': '0 katselua',\n 'common.viewsShort_one': '1 katselu',\n 'common.viewsShort_other': '{{count}} katselua',\n 'common.questions_zero': 'Ei kysymyksiä',\n 'common.questions_one': '{{count}} kysymys',\n 'common.questions_other': '{{count}} kysymystä',\n 'answer.questionTitle': 'K: {{question}}',\n 'answer.answeredTime': 'vastasi',\n 'answerContainer.title.answersBy': 'Vastannut',\n 'answerContainer.title.answersAbout': 'Vastaukset entiteetistä',\n 'answerContainer.title.answersTagged': 'Vastaukset tageilla {{tags}}',\n 'answerContainer.search.label': 'Hae vastauksia',\n 'answerContainer.search.placeholder': 'Hae...',\n 'anonymousCheckbox.tooltip':\n 'Valitsemalla tämän muut käyttäjät eivät näe nimeäsi',\n 'anonymousCheckbox.answerAnonymously': 'Vastaa anonyymisti',\n 'anonymousCheckbox.askAnonymously': 'Kysy anonyymisti',\n 'askForm.errorPosting': 'Kysymystä ei voitu luoda',\n 'askForm.titleInput.label': 'Otsikko',\n 'askForm.titleInput.helperText':\n 'Kirjoita kysymyksellesi hyvä otsikko, jonka ihmiset ymmärtävät',\n 'askForm.contentInput.placeholder': 'Kysymyksesi',\n 'askForm.submit.existingQuestion': 'Tallenna',\n 'askForm.submit.newQuestion': 'Kysy',\n 'answerForm.errorPosting': 'Vastausta ei voitu luoda',\n 'answerForm.contentInput.placeholder': 'Vastauksesi',\n 'answerForm.submit.existingAnswer': 'Tallenna',\n 'answerForm.submit.newAnswer': 'Vastaa',\n 'entitiesInput.label': 'Entiteetit',\n 'entitiesInput.placeholder': 'Kirjoita tai valitse entiteetit',\n 'entitiesInput.helperText':\n 'Valitse maksimissaan {{max}} entiteettiä joita tämä kysymys koskee',\n 'tagsInput.label': 'Tägit',\n 'tagsInput.placeholder': 'Kirjoita tai valitse tägit',\n 'tagsInput.helperText':\n 'Valitse maksimissaan {{max}} tägiä jotka kategorisoivat kysymyksen',\n 'askPage.title.existingQuestion': 'Muokkaa kysymystä',\n 'askPage.title.entityQuestion': 'Kysy kysmys entiteetistä {{entity}}',\n 'askPage.title.newQuestion': 'Kysy kysymys',\n 'askQuestionButton.title': 'Kysy kysymys',\n 'backToQuestionsButton.title': 'Takaisin kysymyksiin',\n 'commentList.deleteLink': 'poista',\n 'commentSection.input.placeholder': 'Kommenttisi',\n 'commentSection.addComment': 'Kommentoi',\n 'commentSection.post': 'Tallenna',\n 'deleteModal.title.question':\n 'Oletko varma että haluat poistaa tämän kysymyksen?',\n 'deleteModal.title.answer':\n 'Oletko varma että haluat poistaa tämän vastauksen?',\n 'deleteModal.errorDeleting': 'Virhe poistettaessa',\n 'deleteModal.deleteButton': 'Poista',\n 'deleteModal.cancelButton': 'Peruuta',\n 'favoritePage.title': 'Suosikkikysymyksesi',\n 'homePage.moreMenu.title': 'Lisää',\n 'homePage.moreMenu.profile': 'Profiili',\n 'homePage.moreMenu.tags': 'Tägit',\n 'homePage.moreMenu.favoriteQuestions': 'Suosikkikysymykset',\n 'homePage.moreMenu.statistics': 'Statistiikka',\n 'homePage.title': 'Kaikki kysymykset',\n 'homePage.highlights.loadError': 'Kysymyksiä ei voitu ladata',\n 'homePage.highlights.hot.title': 'Kuumat kysymykset',\n 'homePage.highlights.hot.noQuestionsLabel': 'Ei kysymyksiä',\n 'homePage.highlights.unanswered.title': 'Vastaamattomat kysymykset',\n 'homePage.highlights.unanswered.noQuestionsLabel': 'Ei kysymyksiä',\n 'homePage.highlights.incorrect.title': 'Kysymykset ilman oikeaa vastausta',\n 'homePage.highlights.incorrect.noQuestionsLabel': 'Ei kysymyksiä',\n 'userLink.anonymous': 'Anonyymi',\n 'questionPage.errorLoading': 'Kysymyksiä ei voitu ladata',\n 'questionPage.editButton': 'Muokkaa',\n 'questionPage.sortAnswers.label': 'Järjestä vastaukset',\n 'questionPage.sortAnswers.default': 'Oletus',\n 'questionPage.sortAnswers.createdDesc': 'Luotu (laskeva)',\n 'questionPage.sortAnswers.createdAsc': 'Luotu (nouseva)',\n 'questionPage.sortAnswers.scoreDesc': 'Pisteet (laskeva)',\n 'questionPage.sortAnswers.scoreAsc': 'Pisteet (nouseva)',\n 'questionPage.sortAnswers.commentsDesc': 'Kommentit (laskeva)',\n 'questionPage.sortAnswers.commentsAsc': 'Kommentit (nouseva)',\n 'questionPage.sortAnswers.authorDesc': 'Laatija (laskeva)',\n 'questionPage.sortAnswers.authorAsc': 'Laatija (nouseva)',\n 'questionPage.sortAnswers.updatedDesc': 'Päivitetty (laskeva)',\n 'questionPage.sortAnswers.updatedAsc': 'Päivitetty (nouseva)',\n 'authorBox.askedAtTime': 'kysytty',\n 'authorBox.postedAtTime': 'Lisätty',\n 'authorBox.updatedAtTime': 'Päivitetty',\n 'authorBox.updatedBy': '',\n 'favorite.remove': 'Poista tämä kysymys suosikeista',\n 'favorite.add': 'Lisää tämä kysymys suosikkeihin',\n 'link.question': 'Kopioi linkki tähän kysymykseen leikepöydälle',\n 'link.answer': 'Kopioi linkki tähän vastaukseen leikepöydälle',\n 'link.aria': 'Kopioi linkki leikepöydälle',\n 'voteButtons.answer.markCorrect': 'Merkitse vastaus oikeaksi',\n 'voteButtons.answer.markIncorrect': 'Vastaus ei ole oikein',\n 'voteButtons.answer.marked': 'Tämä vastaus on merkitty oikeaksi',\n 'voteButtons.answer.good': 'Tämä vastaus on hyvä',\n 'voteButtons.answer.bad': 'Tämä vastaus on huono',\n 'voteButtons.answer.own': 'Et voi äänestää omaa vastaustasi',\n 'voteButtons.question.good': 'Tämä kysymys on hyvä',\n 'voteButtons.question.bad': 'Tämä kysymys on huono',\n 'voteButtons.question.own': 'Et voi äänestää omaa kysymystäsi',\n 'datePicker.from': 'Alku',\n 'datePicker.to': 'Loppu',\n 'datePicker.invalidRange':\n 'Päivien väli on väärin, loppuajan pitää olla suurempi kuin alkuajan',\n 'datePicker.range.label': 'Aikaväli',\n 'datePicker.range.default': 'Valitse',\n 'datePicker.range.last7days': 'Viimeiset 7 päivää',\n 'datePicker.range.last30days': 'Viimeiset 30 päivää',\n 'datePicker.range.custom': 'Vapaa valinta',\n 'filterPanel.filterButton': 'Suodata',\n 'filterPanel.noAnswers.label': 'Ei vastauksia',\n 'filterPanel.noCorrectAnswers.label': 'Ei oikeita vastauksia',\n 'filterPanel.noVotes.label': 'Ei ääniä',\n 'filterPanel.orderBy.label': 'Järjestä',\n 'filterPanel.orderBy.created': 'Luotu',\n 'filterPanel.orderBy.views': 'Katsomiskerrat',\n 'filterPanel.orderBy.score': 'Pisteet',\n 'filterPanel.orderBy.answers': 'Vastaukset',\n 'filterPanel.orderBy.updated': 'Päivitetty',\n 'filterPanel.order.label': 'Suunta',\n 'filterPanel.order.asc': 'Nouseva',\n 'filterPanel.order.desc': 'Laskeva',\n 'filterPanel.filters.label': 'Suodattimet',\n 'filterPanel.filters.entity.label': 'Entiteetti',\n 'filterPanel.filters.entity.placeholder': 'Kirjoita tai valitse entiteetti',\n 'filterPanel.filters.tag.label': 'Tägi',\n 'filterPanel.filters.tag.placeholder': 'Kirjoita tai valitse tägi',\n 'questionList.errorLoading': 'Kysymyksiä ei voitu ladata',\n 'questionList.questionsPerPage': 'Kysymyksiä per sivu',\n 'questionsContainer.title.questionsBy': 'Kysynyt',\n 'questionsContainer.title.questionsAbout': 'Kysymykset entiteestistä',\n 'questionsContainer.title.questionsTagged': 'Kysymykset tägeillä {{tags}}',\n 'questionsContainer.title.favorite': 'Suosikkikysymyksesi',\n 'questionsContainer.search.label': 'Hae kysymyksiä',\n 'questionsContainer.search.placeholder': 'Hae...',\n 'questionsContainer.noQuestions': 'Ei kysymyksiä',\n 'questionsContainer.askOneButton': 'Anna mennä ja kysy yksi!',\n 'questionsTable.errorLoading': 'Kysymyksiä ei voitu ladata',\n 'questionsTable.latest': 'Viimeisimmät',\n 'questionsTable.mostViewed': 'Eniten katsotut',\n 'questionsTable.favorites': 'Suosikit',\n 'questionsTable.cells.title': 'Otsikko',\n 'questionsTable.cells.author': 'Kysyjä',\n 'questionsTable.cells.asked': 'Kysytty',\n 'questionsTable.cells.updated': 'Päivitetty',\n 'statistics.errorLoading': 'Statistiikkaa ei voitu ladata',\n 'statistics.notAvailable': 'Statistiikka ei ole saatavissa',\n 'statistics.ranking': 'Sijoitukset 🏆',\n 'statistics.mostQuestions.title': 'Eniten kysymyksiä',\n 'statistics.mostQuestions.description': 'Eniten kysymyksiä kysyneet',\n 'statistics.mostAnswers.title': 'Entiten vastauksia',\n 'statistics.mostAnswers.description': 'Eniten vastauksia lisänneet',\n 'statistics.topVotedQuestions.title': 'Eniten äänestetyt kysymykset',\n 'statistics.topVotedQuestions.description':\n 'Eniten ääniä keränneet kysyjät',\n 'statistics.topVotedAnswers.title': 'Eniten äänestetyt vastaukset',\n 'statistics.topVotedAnswers.description':\n 'Eniten ääniä keränneet vastaajat',\n 'statistics.topVotedCorrectAnswers.title':\n 'Eniten äänestetyt oikeat vastaukset',\n 'statistics.topVotedCorrectAnswers.description':\n 'Eniten ääniä keränneet oikein vastanneet',\n 'tagPage.errorLoading': 'Tägejä ei voitu ladata',\n 'tagPage.taggedWithTitle': 'Kysymykset tägillä {{tag}}',\n 'tagPage.defaultTitle': 'Tägit',\n 'tagPage.search.label': 'Hae tägiä',\n 'tagPage.search.placeholder': 'Hae...',\n 'tagPage.tags_zero': 'Ei tägejä',\n 'tagPage.tags_one': '{{count}} tägi',\n 'tagPage.tags_other': '{{count}} tägiä',\n 'userPage.profileTab': 'Profiili',\n 'userPage.questions': 'Kysymykset',\n 'userPage.answers': 'Vastaukset',\n },\n});\n\nexport default fi;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fi.esm.js","sources":["../../src/locale/fi.ts"],"sourcesContent":["import { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../translation';\n\nconst fi = createTranslationMessages({\n ref: qetaTranslationRef,\n full: false,\n messages: {\n pluginName: 'Q&A',\n 'answerList.errorLoading': 'Vastauksia ei voitu ladata',\n 'answerList.noAnswers': 'Ei vastauksia',\n 'answerList.limitSelect': 'Vastauksia per sivu',\n 'common.score': '{{score}} pistettä',\n 'common.anonymousAuthor': 'Anonyymi',\n 'common.answers_zero': 'Ei vastauksia',\n 'common.answers_one': '{{count}} vastaus',\n 'common.answers_other': '{{count}} vastausta',\n 'common.views_zero': 'Katsottu {{count}} kertaa',\n 'common.views_one': 'Katsottu {{count}} kerran',\n 'common.views_other': 'Katsottu {{count}} kertaa',\n 'common.viewsShort_zero': '0 katselua',\n 'common.viewsShort_one': '1 katselu',\n 'common.viewsShort_other': '{{count}} katselua',\n 'common.questions_zero': 'Ei kysymyksiä',\n 'common.questions_one': '{{count}} kysymys',\n 'common.questions_other': '{{count}} kysymystä',\n 'answer.questionTitle': 'K: {{question}}',\n 'answer.answeredTime': 'vastasi',\n 'answerContainer.title.answersBy': 'Vastannut',\n 'answerContainer.title.answersAbout': 'Vastaukset entiteetistä',\n 'answerContainer.title.answersTagged': 'Vastaukset tageilla {{tags}}',\n 'answerContainer.search.label': 'Hae vastauksia',\n 'answerContainer.search.placeholder': 'Hae...',\n 'anonymousCheckbox.tooltip':\n 'Valitsemalla tämän muut käyttäjät eivät näe nimeäsi',\n 'anonymousCheckbox.answerAnonymously': 'Vastaa anonyymisti',\n 'anonymousCheckbox.askAnonymously': 'Kysy anonyymisti',\n 'askForm.errorPosting': 'Kysymystä ei voitu luoda',\n 'askForm.titleInput.label': 'Otsikko',\n 'askForm.titleInput.helperText':\n 'Kirjoita kysymyksellesi hyvä otsikko, jonka ihmiset ymmärtävät',\n 'askForm.contentInput.placeholder': 'Kysymyksesi',\n 'askForm.submit.existingQuestion': 'Tallenna',\n 'askForm.submit.newQuestion': 'Kysy',\n 'answerForm.errorPosting': 'Vastausta ei voitu luoda',\n 'answerForm.contentInput.placeholder': 'Vastauksesi',\n 'answerForm.submit.existingAnswer': 'Tallenna',\n 'answerForm.submit.newAnswer': 'Vastaa',\n 'entitiesInput.label': 'Entiteetit',\n 'entitiesInput.placeholder': 'Kirjoita tai valitse entiteetit',\n 'entitiesInput.helperText':\n 'Valitse maksimissaan {{max}} entiteettiä joita tämä kysymys koskee',\n 'tagsInput.label': 'Tägit',\n 'tagsInput.placeholder': 'Kirjoita tai valitse tägit',\n 'tagsInput.helperText':\n 'Valitse maksimissaan {{max}} tägiä jotka kategorisoivat kysymyksen',\n 'askPage.title.existingQuestion': 'Muokkaa kysymystä',\n 'askPage.title.entityQuestion': 'Kysy kysmys entiteetistä {{entity}}',\n 'askPage.title.newQuestion': 'Kysy kysymys',\n 'askQuestionButton.title': 'Kysy kysymys',\n 'backToQuestionsButton.title': 'Takaisin kysymyksiin',\n 'commentList.deleteLink': 'poista',\n 'commentSection.input.placeholder': 'Kommenttisi',\n 'commentSection.addComment': 'Kommentoi',\n 'commentSection.post': 'Tallenna',\n 'deleteModal.title.question':\n 'Oletko varma että haluat poistaa tämän kysymyksen?',\n 'deleteModal.title.answer':\n 'Oletko varma että haluat poistaa tämän vastauksen?',\n 'deleteModal.errorDeleting': 'Virhe poistettaessa',\n 'deleteModal.deleteButton': 'Poista',\n 'deleteModal.cancelButton': 'Peruuta',\n 'favoritePage.title': 'Suosikkikysymyksesi',\n 'homePage.moreMenu.title': 'Lisää',\n 'homePage.moreMenu.profile': 'Profiili',\n 'homePage.moreMenu.tags': 'Tägit',\n 'homePage.moreMenu.favoriteQuestions': 'Suosikkikysymykset',\n 'homePage.moreMenu.statistics': 'Statistiikka',\n 'homePage.title': 'Kaikki kysymykset',\n 'homePage.followedTags': 'Seuratut tägit',\n 'homePage.highlights.loadError': 'Kysymyksiä ei voitu ladata',\n 'homePage.highlights.hot.title': 'Kuumat kysymykset',\n 'homePage.highlights.hot.noQuestionsLabel': 'Ei kysymyksiä',\n 'homePage.highlights.unanswered.title': 'Vastaamattomat kysymykset',\n 'homePage.highlights.unanswered.noQuestionsLabel': 'Ei kysymyksiä',\n 'homePage.highlights.incorrect.title': 'Kysymykset ilman oikeaa vastausta',\n 'homePage.highlights.incorrect.noQuestionsLabel': 'Ei kysymyksiä',\n 'userLink.anonymous': 'Anonyymi',\n 'questionPage.errorLoading': 'Kysymyksiä ei voitu ladata',\n 'questionPage.editButton': 'Muokkaa',\n 'questionPage.sortAnswers.label': 'Järjestä vastaukset',\n 'questionPage.sortAnswers.default': 'Oletus',\n 'questionPage.sortAnswers.createdDesc': 'Luotu (laskeva)',\n 'questionPage.sortAnswers.createdAsc': 'Luotu (nouseva)',\n 'questionPage.sortAnswers.scoreDesc': 'Pisteet (laskeva)',\n 'questionPage.sortAnswers.scoreAsc': 'Pisteet (nouseva)',\n 'questionPage.sortAnswers.commentsDesc': 'Kommentit (laskeva)',\n 'questionPage.sortAnswers.commentsAsc': 'Kommentit (nouseva)',\n 'questionPage.sortAnswers.authorDesc': 'Laatija (laskeva)',\n 'questionPage.sortAnswers.authorAsc': 'Laatija (nouseva)',\n 'questionPage.sortAnswers.updatedDesc': 'Päivitetty (laskeva)',\n 'questionPage.sortAnswers.updatedAsc': 'Päivitetty (nouseva)',\n 'authorBox.askedAtTime': 'kysytty',\n 'authorBox.postedAtTime': 'Lisätty',\n 'authorBox.updatedAtTime': 'Päivitetty',\n 'authorBox.updatedBy': '',\n 'favorite.remove': 'Poista tämä kysymys suosikeista',\n 'favorite.add': 'Lisää tämä kysymys suosikkeihin',\n 'link.question': 'Kopioi linkki tähän kysymykseen leikepöydälle',\n 'link.answer': 'Kopioi linkki tähän vastaukseen leikepöydälle',\n 'link.aria': 'Kopioi linkki leikepöydälle',\n 'voteButtons.answer.markCorrect': 'Merkitse vastaus oikeaksi',\n 'voteButtons.answer.markIncorrect': 'Vastaus ei ole oikein',\n 'voteButtons.answer.marked': 'Tämä vastaus on merkitty oikeaksi',\n 'voteButtons.answer.good': 'Tämä vastaus on hyvä',\n 'voteButtons.answer.bad': 'Tämä vastaus on huono',\n 'voteButtons.answer.own': 'Et voi äänestää omaa vastaustasi',\n 'voteButtons.question.good': 'Tämä kysymys on hyvä',\n 'voteButtons.question.bad': 'Tämä kysymys on huono',\n 'voteButtons.question.own': 'Et voi äänestää omaa kysymystäsi',\n 'datePicker.from': 'Alku',\n 'datePicker.to': 'Loppu',\n 'datePicker.invalidRange':\n 'Päivien väli on väärin, loppuajan pitää olla suurempi kuin alkuajan',\n 'datePicker.range.label': 'Aikaväli',\n 'datePicker.range.default': 'Valitse',\n 'datePicker.range.last7days': 'Viimeiset 7 päivää',\n 'datePicker.range.last30days': 'Viimeiset 30 päivää',\n 'datePicker.range.custom': 'Vapaa valinta',\n 'filterPanel.filterButton': 'Suodata',\n 'filterPanel.noAnswers.label': 'Ei vastauksia',\n 'filterPanel.noCorrectAnswers.label': 'Ei oikeita vastauksia',\n 'filterPanel.noVotes.label': 'Ei ääniä',\n 'filterPanel.orderBy.label': 'Järjestä',\n 'filterPanel.orderBy.created': 'Luotu',\n 'filterPanel.orderBy.views': 'Katsomiskerrat',\n 'filterPanel.orderBy.score': 'Pisteet',\n 'filterPanel.orderBy.answers': 'Vastaukset',\n 'filterPanel.orderBy.updated': 'Päivitetty',\n 'filterPanel.order.label': 'Suunta',\n 'filterPanel.order.asc': 'Nouseva',\n 'filterPanel.order.desc': 'Laskeva',\n 'filterPanel.filters.label': 'Suodattimet',\n 'filterPanel.filters.entity.label': 'Entiteetti',\n 'filterPanel.filters.entity.placeholder': 'Kirjoita tai valitse entiteetti',\n 'filterPanel.filters.tag.label': 'Tägi',\n 'filterPanel.filters.tag.placeholder': 'Kirjoita tai valitse tägi',\n 'questionList.errorLoading': 'Kysymyksiä ei voitu ladata',\n 'questionList.questionsPerPage': 'Kysymyksiä per sivu',\n 'questionsContainer.title.questionsBy': 'Kysynyt',\n 'questionsContainer.title.questionsAbout': 'Kysymykset entiteestistä',\n 'questionsContainer.title.questionsTagged': 'Kysymykset tägeillä {{tags}}',\n 'questionsContainer.title.favorite': 'Suosikkikysymyksesi',\n 'questionsContainer.search.label': 'Hae kysymyksiä',\n 'questionsContainer.search.placeholder': 'Hae...',\n 'questionsContainer.noQuestions': 'Ei kysymyksiä',\n 'questionsContainer.askOneButton': 'Anna mennä ja kysy yksi!',\n 'questionsTable.errorLoading': 'Kysymyksiä ei voitu ladata',\n 'questionsTable.latest': 'Viimeisimmät',\n 'questionsTable.mostViewed': 'Eniten katsotut',\n 'questionsTable.favorites': 'Suosikit',\n 'questionsTable.cells.title': 'Otsikko',\n 'questionsTable.cells.author': 'Kysyjä',\n 'questionsTable.cells.asked': 'Kysytty',\n 'questionsTable.cells.updated': 'Päivitetty',\n 'statistics.errorLoading': 'Statistiikkaa ei voitu ladata',\n 'statistics.notAvailable': 'Statistiikka ei ole saatavissa',\n 'statistics.ranking': 'Sijoitukset 🏆',\n 'statistics.mostQuestions.title': 'Eniten kysymyksiä',\n 'statistics.mostQuestions.description': 'Eniten kysymyksiä kysyneet',\n 'statistics.mostAnswers.title': 'Entiten vastauksia',\n 'statistics.mostAnswers.description': 'Eniten vastauksia lisänneet',\n 'statistics.topVotedQuestions.title': 'Eniten äänestetyt kysymykset',\n 'statistics.topVotedQuestions.description':\n 'Eniten ääniä keränneet kysyjät',\n 'statistics.topVotedAnswers.title': 'Eniten äänestetyt vastaukset',\n 'statistics.topVotedAnswers.description':\n 'Eniten ääniä keränneet vastaajat',\n 'statistics.topVotedCorrectAnswers.title':\n 'Eniten äänestetyt oikeat vastaukset',\n 'statistics.topVotedCorrectAnswers.description':\n 'Eniten ääniä keränneet oikein vastanneet',\n 'tagPage.errorLoading': 'Tägejä ei voitu ladata',\n 'tagPage.taggedWithTitle': 'Kysymykset tägillä {{tag}}',\n 'tagPage.defaultTitle': 'Tägit',\n 'tagPage.search.label': 'Hae tägiä',\n 'tagPage.search.placeholder': 'Hae...',\n 'tagPage.tags_zero': 'Ei tägejä',\n 'tagPage.tags_one': '{{count}} tägi',\n 'tagPage.tags_other': '{{count}} tägiä',\n 'userPage.profileTab': 'Profiili',\n 'userPage.questions': 'Kysymykset',\n 'userPage.answers': 'Vastaukset',\n 'tagButton.follow': 'Seuraa tägiä',\n 'tagButton.unfollow': 'Lopeta tägin seuraaminen',\n 'tagButton.tooltip':\n 'Seuraamalla tägiä saat ilmoituksia uusista kysymyksistä',\n },\n});\n\nexport default fi;\n"],"names":[],"mappings":";;;AAGA,MAAM,KAAK,yBAA0B,CAAA;AAAA,EACnC,GAAK,EAAA,kBAAA;AAAA,EACL,IAAM,EAAA,KAAA;AAAA,EACN,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,KAAA;AAAA,IACZ,yBAA2B,EAAA,4BAAA;AAAA,IAC3B,sBAAwB,EAAA,eAAA;AAAA,IACxB,wBAA0B,EAAA,qBAAA;AAAA,IAC1B,cAAgB,EAAA,uBAAA;AAAA,IAChB,wBAA0B,EAAA,UAAA;AAAA,IAC1B,qBAAuB,EAAA,eAAA;AAAA,IACvB,oBAAsB,EAAA,mBAAA;AAAA,IACtB,sBAAwB,EAAA,qBAAA;AAAA,IACxB,mBAAqB,EAAA,2BAAA;AAAA,IACrB,kBAAoB,EAAA,2BAAA;AAAA,IACpB,oBAAsB,EAAA,2BAAA;AAAA,IACtB,wBAA0B,EAAA,YAAA;AAAA,IAC1B,uBAAyB,EAAA,WAAA;AAAA,IACzB,yBAA2B,EAAA,oBAAA;AAAA,IAC3B,uBAAyB,EAAA,kBAAA;AAAA,IACzB,sBAAwB,EAAA,mBAAA;AAAA,IACxB,wBAA0B,EAAA,wBAAA;AAAA,IAC1B,sBAAwB,EAAA,iBAAA;AAAA,IACxB,qBAAuB,EAAA,SAAA;AAAA,IACvB,iCAAmC,EAAA,WAAA;AAAA,IACnC,oCAAsC,EAAA,4BAAA;AAAA,IACtC,qCAAuC,EAAA,8BAAA;AAAA,IACvC,8BAAgC,EAAA,gBAAA;AAAA,IAChC,oCAAsC,EAAA,QAAA;AAAA,IACtC,2BACE,EAAA,6EAAA;AAAA,IACF,qCAAuC,EAAA,oBAAA;AAAA,IACvC,kCAAoC,EAAA,kBAAA;AAAA,IACpC,sBAAwB,EAAA,6BAAA;AAAA,IACxB,0BAA4B,EAAA,SAAA;AAAA,IAC5B,+BACE,EAAA,4EAAA;AAAA,IACF,kCAAoC,EAAA,aAAA;AAAA,IACpC,iCAAmC,EAAA,UAAA;AAAA,IACnC,4BAA8B,EAAA,MAAA;AAAA,IAC9B,yBAA2B,EAAA,0BAAA;AAAA,IAC3B,qCAAuC,EAAA,aAAA;AAAA,IACvC,kCAAoC,EAAA,UAAA;AAAA,IACpC,6BAA+B,EAAA,QAAA;AAAA,IAC/B,qBAAuB,EAAA,YAAA;AAAA,IACvB,2BAA6B,EAAA,iCAAA;AAAA,IAC7B,0BACE,EAAA,6EAAA;AAAA,IACF,iBAAmB,EAAA,UAAA;AAAA,IACnB,uBAAyB,EAAA,+BAAA;AAAA,IACzB,sBACE,EAAA,0EAAA;AAAA,IACF,gCAAkC,EAAA,sBAAA;AAAA,IAClC,8BAAgC,EAAA,wCAAA;AAAA,IAChC,2BAA6B,EAAA,cAAA;AAAA,IAC7B,yBAA2B,EAAA,cAAA;AAAA,IAC3B,6BAA+B,EAAA,sBAAA;AAAA,IAC/B,wBAA0B,EAAA,QAAA;AAAA,IAC1B,kCAAoC,EAAA,aAAA;AAAA,IACpC,2BAA6B,EAAA,WAAA;AAAA,IAC7B,qBAAuB,EAAA,UAAA;AAAA,IACvB,4BACE,EAAA,6DAAA;AAAA,IACF,0BACE,EAAA,6DAAA;AAAA,IACF,2BAA6B,EAAA,qBAAA;AAAA,IAC7B,0BAA4B,EAAA,QAAA;AAAA,IAC5B,0BAA4B,EAAA,SAAA;AAAA,IAC5B,oBAAsB,EAAA,qBAAA;AAAA,IACtB,yBAA2B,EAAA,aAAA;AAAA,IAC3B,2BAA6B,EAAA,UAAA;AAAA,IAC7B,wBAA0B,EAAA,UAAA;AAAA,IAC1B,qCAAuC,EAAA,oBAAA;AAAA,IACvC,8BAAgC,EAAA,cAAA;AAAA,IAChC,gBAAkB,EAAA,mBAAA;AAAA,IAClB,uBAAyB,EAAA,mBAAA;AAAA,IACzB,+BAAiC,EAAA,+BAAA;AAAA,IACjC,+BAAiC,EAAA,mBAAA;AAAA,IACjC,0CAA4C,EAAA,kBAAA;AAAA,IAC5C,sCAAwC,EAAA,2BAAA;AAAA,IACxC,iDAAmD,EAAA,kBAAA;AAAA,IACnD,qCAAuC,EAAA,mCAAA;AAAA,IACvC,gDAAkD,EAAA,kBAAA;AAAA,IAClD,oBAAsB,EAAA,UAAA;AAAA,IACtB,2BAA6B,EAAA,+BAAA;AAAA,IAC7B,yBAA2B,EAAA,SAAA;AAAA,IAC3B,gCAAkC,EAAA,2BAAA;AAAA,IAClC,kCAAoC,EAAA,QAAA;AAAA,IACpC,sCAAwC,EAAA,iBAAA;AAAA,IACxC,qCAAuC,EAAA,iBAAA;AAAA,IACvC,oCAAsC,EAAA,mBAAA;AAAA,IACtC,mCAAqC,EAAA,mBAAA;AAAA,IACrC,uCAAyC,EAAA,qBAAA;AAAA,IACzC,sCAAwC,EAAA,qBAAA;AAAA,IACxC,qCAAuC,EAAA,mBAAA;AAAA,IACvC,oCAAsC,EAAA,mBAAA;AAAA,IACtC,sCAAwC,EAAA,yBAAA;AAAA,IACxC,qCAAuC,EAAA,yBAAA;AAAA,IACvC,uBAAyB,EAAA,SAAA;AAAA,IACzB,wBAA0B,EAAA,YAAA;AAAA,IAC1B,yBAA2B,EAAA,eAAA;AAAA,IAC3B,qBAAuB,EAAA,EAAA;AAAA,IACvB,iBAAmB,EAAA,uCAAA;AAAA,IACnB,cAAgB,EAAA,6CAAA;AAAA,IAChB,eAAiB,EAAA,2DAAA;AAAA,IACjB,aAAe,EAAA,2DAAA;AAAA,IACf,WAAa,EAAA,mCAAA;AAAA,IACb,gCAAkC,EAAA,2BAAA;AAAA,IAClC,kCAAoC,EAAA,uBAAA;AAAA,IACpC,2BAA6B,EAAA,yCAAA;AAAA,IAC7B,yBAA2B,EAAA,+BAAA;AAAA,IAC3B,wBAA0B,EAAA,6BAAA;AAAA,IAC1B,wBAA0B,EAAA,8CAAA;AAAA,IAC1B,2BAA6B,EAAA,+BAAA;AAAA,IAC7B,0BAA4B,EAAA,6BAAA;AAAA,IAC5B,0BAA4B,EAAA,iDAAA;AAAA,IAC5B,iBAAmB,EAAA,MAAA;AAAA,IACnB,eAAiB,EAAA,OAAA;AAAA,IACjB,yBACE,EAAA,uFAAA;AAAA,IACF,wBAA0B,EAAA,aAAA;AAAA,IAC1B,0BAA4B,EAAA,SAAA;AAAA,IAC5B,4BAA8B,EAAA,6BAAA;AAAA,IAC9B,6BAA+B,EAAA,8BAAA;AAAA,IAC/B,yBAA2B,EAAA,eAAA;AAAA,IAC3B,0BAA4B,EAAA,SAAA;AAAA,IAC5B,6BAA+B,EAAA,eAAA;AAAA,IAC/B,oCAAsC,EAAA,uBAAA;AAAA,IACtC,2BAA6B,EAAA,mBAAA;AAAA,IAC7B,2BAA6B,EAAA,gBAAA;AAAA,IAC7B,6BAA+B,EAAA,OAAA;AAAA,IAC/B,2BAA6B,EAAA,gBAAA;AAAA,IAC7B,2BAA6B,EAAA,SAAA;AAAA,IAC7B,6BAA+B,EAAA,YAAA;AAAA,IAC/B,6BAA+B,EAAA,eAAA;AAAA,IAC/B,yBAA2B,EAAA,QAAA;AAAA,IAC3B,uBAAyB,EAAA,SAAA;AAAA,IACzB,wBAA0B,EAAA,SAAA;AAAA,IAC1B,2BAA6B,EAAA,aAAA;AAAA,IAC7B,kCAAoC,EAAA,YAAA;AAAA,IACpC,wCAA0C,EAAA,iCAAA;AAAA,IAC1C,+BAAiC,EAAA,SAAA;AAAA,IACjC,qCAAuC,EAAA,8BAAA;AAAA,IACvC,2BAA6B,EAAA,+BAAA;AAAA,IAC7B,+BAAiC,EAAA,wBAAA;AAAA,IACjC,sCAAwC,EAAA,SAAA;AAAA,IACxC,yCAA2C,EAAA,6BAAA;AAAA,IAC3C,0CAA4C,EAAA,oCAAA;AAAA,IAC5C,mCAAqC,EAAA,qBAAA;AAAA,IACrC,iCAAmC,EAAA,mBAAA;AAAA,IACnC,uCAAyC,EAAA,QAAA;AAAA,IACzC,gCAAkC,EAAA,kBAAA;AAAA,IAClC,iCAAmC,EAAA,6BAAA;AAAA,IACnC,6BAA+B,EAAA,+BAAA;AAAA,IAC/B,uBAAyB,EAAA,iBAAA;AAAA,IACzB,2BAA6B,EAAA,iBAAA;AAAA,IAC7B,0BAA4B,EAAA,UAAA;AAAA,IAC5B,4BAA8B,EAAA,SAAA;AAAA,IAC9B,6BAA+B,EAAA,WAAA;AAAA,IAC/B,4BAA8B,EAAA,SAAA;AAAA,IAC9B,8BAAgC,EAAA,eAAA;AAAA,IAChC,yBAA2B,EAAA,+BAAA;AAAA,IAC3B,yBAA2B,EAAA,gCAAA;AAAA,IAC3B,oBAAsB,EAAA,uBAAA;AAAA,IACtB,gCAAkC,EAAA,sBAAA;AAAA,IAClC,sCAAwC,EAAA,+BAAA;AAAA,IACxC,8BAAgC,EAAA,oBAAA;AAAA,IAChC,oCAAsC,EAAA,gCAAA;AAAA,IACtC,oCAAsC,EAAA,oCAAA;AAAA,IACtC,0CACE,EAAA,+CAAA;AAAA,IACF,kCAAoC,EAAA,oCAAA;AAAA,IACpC,wCACE,EAAA,8CAAA;AAAA,IACF,yCACE,EAAA,2CAAA;AAAA,IACF,+CACE,EAAA,sDAAA;AAAA,IACF,sBAAwB,EAAA,8BAAA;AAAA,IACxB,yBAA2B,EAAA,kCAAA;AAAA,IAC3B,sBAAwB,EAAA,UAAA;AAAA,IACxB,sBAAwB,EAAA,iBAAA;AAAA,IACxB,4BAA8B,EAAA,QAAA;AAAA,IAC9B,mBAAqB,EAAA,iBAAA;AAAA,IACrB,kBAAoB,EAAA,mBAAA;AAAA,IACpB,oBAAsB,EAAA,uBAAA;AAAA,IACtB,qBAAuB,EAAA,UAAA;AAAA,IACvB,oBAAsB,EAAA,YAAA;AAAA,IACtB,kBAAoB,EAAA,YAAA;AAAA,IACpB,kBAAoB,EAAA,oBAAA;AAAA,IACpB,oBAAsB,EAAA,6BAAA;AAAA,IACtB,mBACE,EAAA,kEAAA;AAAA,GACJ;AACF,CAAC;;;;"}
@@ -123,6 +123,7 @@ const qetaTranslationRef = createTranslationRef({
123
123
  statistics: "Statistics"
124
124
  },
125
125
  title: "All questions",
126
+ followedTags: "Followed tags",
126
127
  highlights: {
127
128
  loadError: "Failed to load questions",
128
129
  hot: {
@@ -309,6 +310,11 @@ const qetaTranslationRef = createTranslationRef({
309
310
  profileTab: "Profile",
310
311
  questions: "Questions",
311
312
  answers: "Answers"
313
+ },
314
+ tagButton: {
315
+ follow: "Follow tag",
316
+ unfollow: "Unfollow tag",
317
+ tooltip: "By following a tag, you will get notified when ever a new question with that tag is posted"
312
318
  }
313
319
  }
314
320
  });
@@ -1 +1 @@
1
- {"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["import {\n createTranslationRef,\n createTranslationResource,\n} from '@backstage/core-plugin-api/alpha';\n\n/** @alpha */\nexport const qetaTranslationRef = createTranslationRef({\n id: 'qeta',\n messages: {\n pluginName: 'Q&A',\n answerList: {\n errorLoading: 'Could not load answers',\n noAnswers: 'No answers',\n limitSelect: 'Answers per page',\n },\n common: {\n score: '{{score}} score',\n anonymousAuthor: 'Anonymous',\n answers_zero: 'No answers',\n answers_one: '{{count}} answer',\n answers_other: '{{count}} answers',\n views_zero: 'Viewed {{count}} times',\n views_one: 'Viewed {{count}} time',\n views_other: 'Viewed {{count}} times',\n viewsShort_zero: '0 views',\n viewsShort_one: '{{count}} view',\n viewsShort_other: '{{count}} views',\n questions_zero: 'No questions',\n questions_one: '{{count}} question',\n questions_other: '{{count}} questions',\n },\n answer: {\n questionTitle: 'Q: {{question}}',\n answeredTime: 'answered',\n },\n answerContainer: {\n title: {\n answersBy: 'Answers by',\n answersAbout: 'Answers about',\n answersTagged: `Answers tagged with {{tags}}`,\n },\n search: {\n label: 'Search for answers',\n placeholder: 'Search...',\n },\n },\n anonymousCheckbox: {\n tooltip:\n \"By enabling this, other users won't be able to see you as an author\",\n answerAnonymously: 'Answer anonymously',\n askAnonymously: 'Ask anonymously',\n },\n askForm: {\n errorPosting: 'Could not post question',\n titleInput: {\n label: 'Title',\n helperText:\n 'Write good title for your question that people can understand',\n },\n contentInput: {\n placeholder: 'Your question',\n },\n submit: {\n existingQuestion: 'Save',\n newQuestion: 'Post',\n },\n },\n answerForm: {\n errorPosting: 'Could not post answer',\n contentInput: {\n placeholder: 'Your answer',\n },\n submit: {\n existingAnswer: 'Save',\n newAnswer: 'Post',\n },\n },\n entitiesInput: {\n label: 'Entities',\n placeholder: 'Type or select entities',\n helperText: 'Add up to {{max}} entities this question relates to',\n },\n tagsInput: {\n label: 'Tags',\n placeholder: 'Type or select tags',\n helperText: 'Add up to {{max}} tags to categorize your question',\n },\n askPage: {\n title: {\n existingQuestion: 'Edit question',\n entityQuestion: 'Ask a question about {{entity}}',\n newQuestion: 'Ask question',\n },\n },\n askQuestionButton: {\n title: 'Ask question',\n },\n backToQuestionsButton: {\n title: 'Back to questions',\n },\n commentList: {\n deleteLink: 'delete',\n },\n commentSection: {\n input: {\n placeholder: 'Your comment',\n },\n addComment: 'Add comment',\n post: 'Post',\n },\n deleteModal: {\n title: {\n question: 'Are you sure you want to delete this question?',\n answer: 'Are you sure you want to delete this answer?',\n },\n errorDeleting: 'Failed to delete',\n deleteButton: 'Delete',\n cancelButton: 'Cancel',\n },\n favoritePage: {\n title: 'Your favorite questions',\n },\n homePage: {\n moreMenu: {\n title: 'More',\n profile: 'Profile',\n tags: 'Tags',\n favoriteQuestions: 'Favorite questions',\n statistics: 'Statistics',\n },\n title: 'All questions',\n highlights: {\n loadError: 'Failed to load questions',\n hot: {\n title: 'Hot questions',\n noQuestionsLabel: 'No questions',\n },\n unanswered: {\n title: 'Unanswered questions',\n noQuestionsLabel: 'No unanswered questions',\n },\n incorrect: {\n title: 'Questions without correct answer',\n noQuestionsLabel: 'No questions without correct answers',\n },\n },\n },\n userLink: {\n anonymous: 'Anonymous',\n },\n questionPage: {\n errorLoading: 'Could not load question',\n editButton: 'Edit',\n sortAnswers: {\n label: 'Sort answers',\n default: 'Default',\n createdDesc: 'Created (desc)',\n createdAsc: 'Created (asc)',\n scoreDesc: 'Score (desc)',\n scoreAsc: 'Score (asc)',\n commentsDesc: 'Comments (desc)',\n commentsAsc: 'Comments (asc)',\n authorDesc: 'Author (desc)',\n authorAsc: 'Author (asc)',\n updatedDesc: 'Updated (desc)',\n updatedAsc: 'Updated (asc)',\n },\n },\n authorBox: {\n askedAtTime: 'asked',\n postedAtTime: 'Posted',\n updatedAtTime: 'Updated',\n updatedBy: 'by',\n },\n favorite: {\n remove: 'Remove this question from favorites',\n add: 'Mark this question as favorite',\n },\n link: {\n question: 'Copy link to this question to clipboard',\n answer: 'Copy link to this answer to clipboard',\n aria: 'Copy link to clipboard',\n },\n voteButtons: {\n answer: {\n markCorrect: 'Mark this answer correct',\n markIncorrect: 'Mark this answer incorrect',\n marked: 'This answer has been marked as correct',\n good: 'This answer is good',\n bad: 'This answer is not good',\n own: 'You cannot vote your own answer',\n },\n question: {\n good: 'This question is good',\n bad: 'This question is not good',\n own: 'You cannot vote your own question',\n },\n },\n datePicker: {\n from: 'From date',\n to: 'To date',\n invalidRange:\n \"Date range invalid, 'To date' should be greater than 'From date'\",\n range: {\n label: 'Date range',\n default: 'Select',\n last7days: 'Last 7 days',\n last30days: 'Last 30 days',\n custom: 'Custom',\n },\n },\n filterPanel: {\n filterButton: 'Filter',\n noAnswers: {\n label: 'No answers',\n },\n noCorrectAnswers: {\n label: 'No correct answers',\n },\n noVotes: {\n label: 'No votes',\n },\n orderBy: {\n label: 'Order by',\n created: 'Created',\n views: 'Views',\n score: 'Score',\n answers: 'Answers',\n updated: 'Updated',\n },\n order: {\n label: 'Order',\n asc: 'Ascending',\n desc: 'Descending',\n },\n filters: {\n label: 'Filters',\n entity: {\n label: 'Entity',\n placeholder: 'Type or select entity',\n },\n tag: {\n label: 'Tag',\n placeholder: 'Type or select tag',\n },\n },\n },\n questionList: {\n errorLoading: 'Could not load questions',\n questionsPerPage: 'Questions per page',\n },\n questionsContainer: {\n title: {\n questionsBy: 'Questions by',\n questionsAbout: 'Questions about',\n questionsTagged: `Questions tagged with {{tags}}`,\n favorite: 'Your favorite questions',\n },\n search: {\n label: 'Search for questions',\n placeholder: 'Search...',\n },\n noQuestions: 'No questions found',\n askOneButton: 'Go ahead and ask one!',\n },\n questionsTable: {\n errorLoading: 'Could not load questions',\n latest: 'Latest',\n mostViewed: 'Most viewed',\n favorites: 'Favorites',\n cells: {\n title: 'Title',\n author: 'Author',\n asked: 'Asked',\n updated: 'Last updated',\n },\n },\n statistics: {\n errorLoading: 'Could not load statistics',\n notAvailable: 'Statistics are unavailable',\n ranking: 'Ranking Q&A 🏆',\n mostQuestions: {\n title: 'Most questions',\n description: 'People who have posted most questions',\n },\n mostAnswers: {\n title: 'Most answers',\n description: 'People who have posted most answers',\n },\n topVotedQuestions: {\n title: 'Top voted questions',\n description: 'People who have the highest rated questions',\n },\n topVotedAnswers: {\n title: 'Top voted answers',\n description: 'People who have the highest rated answers',\n },\n topVotedCorrectAnswers: {\n title: 'Top voted correct answers',\n description: 'People who have the highest rated correct answers',\n },\n },\n tagPage: {\n errorLoading: 'Could not load tags',\n taggedWithTitle: 'Questions tagged with {{tag}}',\n defaultTitle: 'Tags',\n search: {\n label: 'Search tag',\n placeholder: 'Search...',\n },\n tags_zero: 'No tags',\n tags_one: 'Showing {{count}} tag',\n tags_other: 'Showing {{count}} tags',\n },\n userPage: {\n profileTab: 'Profile',\n questions: 'Questions',\n answers: 'Answers',\n },\n },\n});\n\nexport const qetaTranslations = createTranslationResource({\n ref: qetaTranslationRef,\n translations: {\n fi: () => import('./locale/fi'),\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["import {\n createTranslationRef,\n createTranslationResource,\n} from '@backstage/core-plugin-api/alpha';\n\n/** @alpha */\nexport const qetaTranslationRef = createTranslationRef({\n id: 'qeta',\n messages: {\n pluginName: 'Q&A',\n answerList: {\n errorLoading: 'Could not load answers',\n noAnswers: 'No answers',\n limitSelect: 'Answers per page',\n },\n common: {\n score: '{{score}} score',\n anonymousAuthor: 'Anonymous',\n answers_zero: 'No answers',\n answers_one: '{{count}} answer',\n answers_other: '{{count}} answers',\n views_zero: 'Viewed {{count}} times',\n views_one: 'Viewed {{count}} time',\n views_other: 'Viewed {{count}} times',\n viewsShort_zero: '0 views',\n viewsShort_one: '{{count}} view',\n viewsShort_other: '{{count}} views',\n questions_zero: 'No questions',\n questions_one: '{{count}} question',\n questions_other: '{{count}} questions',\n },\n answer: {\n questionTitle: 'Q: {{question}}',\n answeredTime: 'answered',\n },\n answerContainer: {\n title: {\n answersBy: 'Answers by',\n answersAbout: 'Answers about',\n answersTagged: `Answers tagged with {{tags}}`,\n },\n search: {\n label: 'Search for answers',\n placeholder: 'Search...',\n },\n },\n anonymousCheckbox: {\n tooltip:\n \"By enabling this, other users won't be able to see you as an author\",\n answerAnonymously: 'Answer anonymously',\n askAnonymously: 'Ask anonymously',\n },\n askForm: {\n errorPosting: 'Could not post question',\n titleInput: {\n label: 'Title',\n helperText:\n 'Write good title for your question that people can understand',\n },\n contentInput: {\n placeholder: 'Your question',\n },\n submit: {\n existingQuestion: 'Save',\n newQuestion: 'Post',\n },\n },\n answerForm: {\n errorPosting: 'Could not post answer',\n contentInput: {\n placeholder: 'Your answer',\n },\n submit: {\n existingAnswer: 'Save',\n newAnswer: 'Post',\n },\n },\n entitiesInput: {\n label: 'Entities',\n placeholder: 'Type or select entities',\n helperText: 'Add up to {{max}} entities this question relates to',\n },\n tagsInput: {\n label: 'Tags',\n placeholder: 'Type or select tags',\n helperText: 'Add up to {{max}} tags to categorize your question',\n },\n askPage: {\n title: {\n existingQuestion: 'Edit question',\n entityQuestion: 'Ask a question about {{entity}}',\n newQuestion: 'Ask question',\n },\n },\n askQuestionButton: {\n title: 'Ask question',\n },\n backToQuestionsButton: {\n title: 'Back to questions',\n },\n commentList: {\n deleteLink: 'delete',\n },\n commentSection: {\n input: {\n placeholder: 'Your comment',\n },\n addComment: 'Add comment',\n post: 'Post',\n },\n deleteModal: {\n title: {\n question: 'Are you sure you want to delete this question?',\n answer: 'Are you sure you want to delete this answer?',\n },\n errorDeleting: 'Failed to delete',\n deleteButton: 'Delete',\n cancelButton: 'Cancel',\n },\n favoritePage: {\n title: 'Your favorite questions',\n },\n homePage: {\n moreMenu: {\n title: 'More',\n profile: 'Profile',\n tags: 'Tags',\n favoriteQuestions: 'Favorite questions',\n statistics: 'Statistics',\n },\n title: 'All questions',\n followedTags: 'Followed tags',\n highlights: {\n loadError: 'Failed to load questions',\n hot: {\n title: 'Hot questions',\n noQuestionsLabel: 'No questions',\n },\n unanswered: {\n title: 'Unanswered questions',\n noQuestionsLabel: 'No unanswered questions',\n },\n incorrect: {\n title: 'Questions without correct answer',\n noQuestionsLabel: 'No questions without correct answers',\n },\n },\n },\n userLink: {\n anonymous: 'Anonymous',\n },\n questionPage: {\n errorLoading: 'Could not load question',\n editButton: 'Edit',\n sortAnswers: {\n label: 'Sort answers',\n default: 'Default',\n createdDesc: 'Created (desc)',\n createdAsc: 'Created (asc)',\n scoreDesc: 'Score (desc)',\n scoreAsc: 'Score (asc)',\n commentsDesc: 'Comments (desc)',\n commentsAsc: 'Comments (asc)',\n authorDesc: 'Author (desc)',\n authorAsc: 'Author (asc)',\n updatedDesc: 'Updated (desc)',\n updatedAsc: 'Updated (asc)',\n },\n },\n authorBox: {\n askedAtTime: 'asked',\n postedAtTime: 'Posted',\n updatedAtTime: 'Updated',\n updatedBy: 'by',\n },\n favorite: {\n remove: 'Remove this question from favorites',\n add: 'Mark this question as favorite',\n },\n link: {\n question: 'Copy link to this question to clipboard',\n answer: 'Copy link to this answer to clipboard',\n aria: 'Copy link to clipboard',\n },\n voteButtons: {\n answer: {\n markCorrect: 'Mark this answer correct',\n markIncorrect: 'Mark this answer incorrect',\n marked: 'This answer has been marked as correct',\n good: 'This answer is good',\n bad: 'This answer is not good',\n own: 'You cannot vote your own answer',\n },\n question: {\n good: 'This question is good',\n bad: 'This question is not good',\n own: 'You cannot vote your own question',\n },\n },\n datePicker: {\n from: 'From date',\n to: 'To date',\n invalidRange:\n \"Date range invalid, 'To date' should be greater than 'From date'\",\n range: {\n label: 'Date range',\n default: 'Select',\n last7days: 'Last 7 days',\n last30days: 'Last 30 days',\n custom: 'Custom',\n },\n },\n filterPanel: {\n filterButton: 'Filter',\n noAnswers: {\n label: 'No answers',\n },\n noCorrectAnswers: {\n label: 'No correct answers',\n },\n noVotes: {\n label: 'No votes',\n },\n orderBy: {\n label: 'Order by',\n created: 'Created',\n views: 'Views',\n score: 'Score',\n answers: 'Answers',\n updated: 'Updated',\n },\n order: {\n label: 'Order',\n asc: 'Ascending',\n desc: 'Descending',\n },\n filters: {\n label: 'Filters',\n entity: {\n label: 'Entity',\n placeholder: 'Type or select entity',\n },\n tag: {\n label: 'Tag',\n placeholder: 'Type or select tag',\n },\n },\n },\n questionList: {\n errorLoading: 'Could not load questions',\n questionsPerPage: 'Questions per page',\n },\n questionsContainer: {\n title: {\n questionsBy: 'Questions by',\n questionsAbout: 'Questions about',\n questionsTagged: `Questions tagged with {{tags}}`,\n favorite: 'Your favorite questions',\n },\n search: {\n label: 'Search for questions',\n placeholder: 'Search...',\n },\n noQuestions: 'No questions found',\n askOneButton: 'Go ahead and ask one!',\n },\n questionsTable: {\n errorLoading: 'Could not load questions',\n latest: 'Latest',\n mostViewed: 'Most viewed',\n favorites: 'Favorites',\n cells: {\n title: 'Title',\n author: 'Author',\n asked: 'Asked',\n updated: 'Last updated',\n },\n },\n statistics: {\n errorLoading: 'Could not load statistics',\n notAvailable: 'Statistics are unavailable',\n ranking: 'Ranking Q&A 🏆',\n mostQuestions: {\n title: 'Most questions',\n description: 'People who have posted most questions',\n },\n mostAnswers: {\n title: 'Most answers',\n description: 'People who have posted most answers',\n },\n topVotedQuestions: {\n title: 'Top voted questions',\n description: 'People who have the highest rated questions',\n },\n topVotedAnswers: {\n title: 'Top voted answers',\n description: 'People who have the highest rated answers',\n },\n topVotedCorrectAnswers: {\n title: 'Top voted correct answers',\n description: 'People who have the highest rated correct answers',\n },\n },\n tagPage: {\n errorLoading: 'Could not load tags',\n taggedWithTitle: 'Questions tagged with {{tag}}',\n defaultTitle: 'Tags',\n search: {\n label: 'Search tag',\n placeholder: 'Search...',\n },\n tags_zero: 'No tags',\n tags_one: 'Showing {{count}} tag',\n tags_other: 'Showing {{count}} tags',\n },\n userPage: {\n profileTab: 'Profile',\n questions: 'Questions',\n answers: 'Answers',\n },\n tagButton: {\n follow: 'Follow tag',\n unfollow: 'Unfollow tag',\n tooltip:\n 'By following a tag, you will get notified when ever a new question with that tag is posted',\n },\n },\n});\n\nexport const qetaTranslations = createTranslationResource({\n ref: qetaTranslationRef,\n translations: {\n fi: () => import('./locale/fi'),\n },\n});\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { makeStyles } from '@material-ui/core';
5
5
  import { catalogApiRef, useEntityPresentation } from '@backstage/plugin-catalog-react';
6
6
  import { trimEnd } from 'lodash';
7
7
  import { useSearchParams } from 'react-router-dom';
8
- import React, { useEffect } from 'react';
8
+ import React, { useEffect, useCallback } from 'react';
9
9
  import DataLoader from 'dataloader';
10
10
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
11
11
  import { qetaTranslationRef } from '../translation.esm.js';
@@ -160,7 +160,7 @@ const useStyles = makeStyles((theme) => {
160
160
  questionsPerPage: {
161
161
  marginRight: theme.spacing(3)
162
162
  },
163
- questionHighlightList: {
163
+ questionHighlightListContainer: {
164
164
  width: "100%",
165
165
  border: `1px solid ${theme.palette.action.selected}`,
166
166
  borderRadius: theme.shape.borderRadius,
@@ -168,6 +168,9 @@ const useStyles = makeStyles((theme) => {
168
168
  marginTop: theme.spacing(2)
169
169
  }
170
170
  },
171
+ questionHighlightList: {
172
+ paddingBottom: "0px"
173
+ },
171
174
  filterPanel: {
172
175
  border: `1px solid ${theme.palette.action.selected}`,
173
176
  borderRadius: theme.shape.borderRadius,
@@ -244,10 +247,16 @@ const useBasePath = () => {
244
247
  return trimEnd(pathname, "/");
245
248
  };
246
249
  const userCache = /* @__PURE__ */ new Map();
247
- const dataLoader = new DataLoader(
250
+ const dataLoaderFactory = (catalogApi) => new DataLoader(
248
251
  async (entityRefs) => {
249
- const catalogApi = useApi(catalogApiRef);
250
252
  const { items } = await catalogApi.getEntitiesByRefs({
253
+ fields: [
254
+ "kind",
255
+ "metadata.name",
256
+ "metadata.namespace",
257
+ "spec.profile.displayName",
258
+ "spec.profile.picture"
259
+ ],
251
260
  entityRefs
252
261
  });
253
262
  entityRefs.forEach((entityRef, index) => {
@@ -285,7 +294,7 @@ const useEntityAuthor = (entity) => {
285
294
  setUser(userCache.get(author));
286
295
  return;
287
296
  }
288
- dataLoader.load(author).then((data) => {
297
+ dataLoaderFactory(catalogApi).load(author).then((data) => {
289
298
  if (data) {
290
299
  setUser(data);
291
300
  } else {
@@ -316,9 +325,39 @@ const useEntityAuthor = (entity) => {
316
325
  }, [name]);
317
326
  return { name, initials, user };
318
327
  };
328
+ const useTagsFollow = () => {
329
+ const [tags, setTags] = React.useState([]);
330
+ const qetaApi = useApi(qetaApiRef);
331
+ useEffect(() => {
332
+ qetaApi.getFollowedTags().then((res) => {
333
+ setTags(res.tags);
334
+ });
335
+ }, [qetaApi]);
336
+ const followTag = useCallback(
337
+ (tag) => {
338
+ qetaApi.followTag(tag).then(() => {
339
+ setTags((prev) => [...prev, tag]);
340
+ });
341
+ },
342
+ [qetaApi]
343
+ );
344
+ const unfollowTag = useCallback(
345
+ (tag) => {
346
+ qetaApi.unfollowTag(tag).then(() => {
347
+ setTags((prev) => prev.filter((t) => t !== tag));
348
+ });
349
+ },
350
+ [qetaApi]
351
+ );
352
+ const isFollowingTag = useCallback(
353
+ (tag) => tags.includes(tag),
354
+ [tags]
355
+ );
356
+ return { tags, followTag, unfollowTag, isFollowingTag };
357
+ };
319
358
  const useTranslation = () => {
320
359
  return useTranslationRef(qetaTranslationRef);
321
360
  };
322
361
 
323
- export { useBasePath, useBaseUrl, useEntityAuthor, useEntityQueryParameter, useIdentityApi, useQetaApi, useStyles, useTranslation };
362
+ export { useBasePath, useBaseUrl, useEntityAuthor, useEntityQueryParameter, useIdentityApi, useQetaApi, useStyles, useTagsFollow, useTranslation };
324
363
  //# sourceMappingURL=hooks.esm.js.map