From 20c9721ba0406a5f04a6ebe2c2ec6a076025a9dd Mon Sep 17 00:00:00 2001 From: "Aliaksei Yaletski (Tiendil)" Date: Tue, 17 Dec 2024 14:07:02 +0100 Subject: [PATCH 01/73] fill-db command --- ffun/ffun/cli/application.py | 2 + ffun/ffun/cli/commands/fixtures.py | 122 +++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 ffun/ffun/cli/commands/fixtures.py diff --git a/ffun/ffun/cli/application.py b/ffun/ffun/cli/application.py index eb0091b8..7cf9573e 100644 --- a/ffun/ffun/cli/application.py +++ b/ffun/ffun/cli/application.py @@ -6,6 +6,7 @@ from ffun.cli.commands import processors_quality # noqa: F401 from ffun.cli.commands import profile # noqa: F401 from ffun.cli.commands import user_settings # noqa: F401 +from ffun.cli.commands import fixtures # noqa: F401 from ffun.core import logging app = typer.Typer() @@ -19,6 +20,7 @@ app.add_typer(metrics.cli_app, name="metrics") app.add_typer(profile.cli_app, name="profile") app.add_typer(experiments.cli_app, name="experiments") +app.add_typer(fixtures.cli_app, name="fixtures") if __name__ == "__main__": diff --git a/ffun/ffun/cli/commands/fixtures.py b/ffun/ffun/cli/commands/fixtures.py new file mode 100644 index 00000000..e7f575bb --- /dev/null +++ b/ffun/ffun/cli/commands/fixtures.py @@ -0,0 +1,122 @@ +""" +Development utilities for feeds. + +This code is intended to be used by developers to simplify our work, therefore: + +- It MUST NOT be used in production code. +- It MUST NOT be used in tests. +- no tests are required for this code. +""" + +import asyncio + +import typer +import uuid +from typing import Any +from ffun.application.application import with_app +from ffun.core import logging, utils +from ffun.core.postgresql import execute +from ffun.domain.entities import UserId, FeedId, EntryId, SourceId +from ffun.domain.domain import new_feed_id, new_entry_id +from ffun.domain.urls import normalize_classic_unknown_url, url_to_source_uid, url_to_uid, adjust_classic_relative_url +from ffun.library.operations import all_entries_iterator, count_total_entries +from ffun.auth.settings import settings as a_settings +from ffun.users import domain as u_domain +from ffun.users import entities as u_entities +from ffun.library.entities import Entry +from ffun.library.domain import catalog_entries, get_entries_by_ids +from ffun.feeds.entities import Feed, FeedState +from ffun.feeds.domain import get_feeds, get_source_ids, save_feed +from ffun.ontology.domain import apply_tags_to_entry +from ffun.ontology.entities import ProcessorTag +from ffun.feeds_links.domain import add_link + +logger = logging.get_module_logger() + +cli_app = typer.Typer() + + +async def fake_feed() -> Feed: + + _id = uuid.uuid4().hex + + url = f"https://{_id}.com" + + source_uid = url_to_source_uid(url) + + source_ids = await get_source_ids([source_uid]) + + timestamp = utils.now() + + feed = Feed( + id=new_feed_id(), + source_id=source_ids[source_uid], + url=url, + state=FeedState.loaded, + last_error=None, + load_attempted_at=timestamp, + loaded_at=timestamp, + title=f'Title {_id}', + description=f'Description {_id}', + ) + + feed_id = await save_feed(feed) + + feeds = await get_feeds([feed_id]) + + return feeds[0] + + +async def fake_entry(feed: Feed) -> Entry: + _id = uuid.uuid4().hex + + timestamp = utils.now() + + url = adjust_classic_relative_url(f'enrty-{_id}', feed.url) + + entry = Entry( + id=new_entry_id(), + source_id=feed.source_id, + title=f'Title {_id}', + body=f'Body {_id}', + external_id=uuid.uuid4().hex, + external_url=url, + external_tags=set(), + published_at=timestamp, + cataloged_at=timestamp, + ) + + await catalog_entries(feed.id, [entry]) + + entries = await get_entries_by_ids([entry.id]) + + return entries[entry.id] + + +async def run_fill_db(feeds_number: int, entries_per_feed: int, tags_per_entry: int) -> None: + async with with_app(): + external_user_id = a_settings.single_user.external_id + + internal_user_id = await u_domain.get_or_create_user_id(u_entities.Service.single, external_user_id) + + for _ in range(feeds_number): + feed = await fake_feed() + + await add_link(internal_user_id, feed.id) + + entries = [await fake_entry(feed) for _ in range(entries_per_feed)] + + for i, entry in enumerate(entries, start=1): + + tags = [] + + for j, _ in enumerate(range(tags_per_entry), start=1): + raw_uid = f'some-long-tag-name-{j}-{i % j}' + tags.append(ProcessorTag(raw_uid=raw_uid)) + + await apply_tags_to_entry(entry.id, 100500, tags) + + +@cli_app.command() +def fill_db(feeds_number: int = 10, entries_per_feed: int = 100, tags_per_entry: int = 25) -> None: + asyncio.run(run_fill_db(feeds_number, entries_per_feed, tags_per_entry)) From 83e8a338ab883b54cd34ca09e192d45915539a0f Mon Sep 17 00:00:00 2001 From: "Aliaksei Yaletski (Tiendil)" Date: Tue, 17 Dec 2024 14:14:06 +0100 Subject: [PATCH 02/73] todos --- todos.org | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 todos.org diff --git a/todos.org b/todos.org new file mode 100644 index 00000000..56421284 --- /dev/null +++ b/todos.org @@ -0,0 +1,14 @@ + +* TODO remove this file + +* TODO open/hide tags with a entries body + +* TODO clicks on tags in entries should behave like clicks on tags in the filter + +* TODO remove old create rule interface + +* TODO add new create rule interface + +** On the top of the main section? + +** as a button in filter? From 931fa12cec7e6b79e35309e82fd5136223df26d4 Mon Sep 17 00:00:00 2001 From: "Aliaksei Yaletski (Tiendil)" Date: Tue, 17 Dec 2024 14:18:36 +0100 Subject: [PATCH 03/73] removed show tags filter --- site/src/components/EntryForList.vue | 2 -- site/src/stores/globalSettings.ts | 2 -- site/src/views/NewsView.vue | 10 ---------- todos.org | 4 ++++ 4 files changed, 4 insertions(+), 14 deletions(-) diff --git a/site/src/components/EntryForList.vue b/site/src/components/EntryForList.vue index 7a01ae41..9e0f73ed 100644 --- a/site/src/components/EntryForList.vue +++ b/site/src/components/EntryForList.vue @@ -31,7 +31,6 @@ (); diff --git a/site/src/stores/globalSettings.ts b/site/src/stores/globalSettings.ts index b373151c..265e5b58 100644 --- a/site/src/stores/globalSettings.ts +++ b/site/src/stores/globalSettings.ts @@ -18,7 +18,6 @@ export const useGlobalSettingsStore = defineStore("globalSettings", () => { // Entries const lastEntriesPeriod = ref(e.LastEntriesPeriod.Day3); const entriesOrder = ref(e.EntriesOrder.Score); - const showEntriesTags = ref(true); const showRead = ref(true); // Feeds @@ -64,7 +63,6 @@ export const useGlobalSettingsStore = defineStore("globalSettings", () => { mainPanelMode, lastEntriesPeriod, entriesOrder, - showEntriesTags, showRead, dataVersion, updateDataVersion, diff --git a/site/src/views/NewsView.vue b/site/src/views/NewsView.vue index 27b54a65..05c75bbd 100644 --- a/site/src/views/NewsView.vue +++ b/site/src/views/NewsView.vue @@ -15,15 +15,6 @@ - - diff --git a/todos.org b/todos.org index 16c9bd4c..15a9ab0e 100644 --- a/todos.org +++ b/todos.org @@ -7,6 +7,9 @@ * TODO remove old create rule interface +** component: rule-constructor +** remove css class for "selected for rule" tags + * TODO add new create rule interface ** On the top of the main section? @@ -16,3 +19,5 @@ * DONE remove show tags filter (it's hides main feature of the app) * TODO refactor "show read" to something better / more convinient? + +* TODO check if hiden news in the news list processed correctly by vue.js (not affecting the performance) From be9950f491636832807f6c79b24c3c6ad14b5de6 Mon Sep 17 00:00:00 2001 From: "Aliaksei Yaletski (Tiendil)" Date: Tue, 17 Dec 2024 14:49:11 +0100 Subject: [PATCH 05/73] todos --- site/src/components/FfunTag.vue | 12 ++++++------ site/src/components/TagsFilter.vue | 2 ++ todos.org | 12 +++++++++--- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/site/src/components/FfunTag.vue b/site/src/components/FfunTag.vue index 3e99fd12..e97a3d71 100644 --- a/site/src/components/FfunTag.vue +++ b/site/src/components/FfunTag.vue @@ -62,9 +62,10 @@ emit("tag:clicked", properties.uid); } - const tooltip = computed(() => { +const tooltip = computed(() => { + // TODO: highligh the tag under the cursor if (properties.countMode == "tooltip" && properties.count) { - return `articles with the tag: ${properties.count} (${properties.uid})`; + return `articles with this tag: ${properties.count}`; } return ""; }); @@ -75,10 +76,9 @@ @apply inline-block cursor-pointer p-0 mr-2 whitespace-nowrap; } - .tag.selected { - @apply font-bold text-purple-700; - } - + /* TODO: what with required/positive and excluded/negative styles/states? + currently they use the same colors + */ .tag.required { @apply text-green-700; } diff --git a/site/src/components/TagsFilter.vue b/site/src/components/TagsFilter.vue index d9c1b334..bb582899 100644 --- a/site/src/components/TagsFilter.vue +++ b/site/src/components/TagsFilter.vue @@ -114,6 +114,8 @@ const totalTags = computed(() => { // TODO: this is not correct, because selected tags are treated differently // depending on their status: required or excluded. + // I.e. by excluding tag `x` you exclude concreate entries => you can exclude more tags, + // if they only belong to the excluded entries) // => value is not accurate, but it is ok for now return Object.keys(properties.tags).length + Object.keys(selectedTags.value).length; }); diff --git a/todos.org b/todos.org index 15a9ab0e..ebb87dc4 100644 --- a/todos.org +++ b/todos.org @@ -7,9 +7,9 @@ * TODO remove old create rule interface -** component: rule-constructor -** remove css class for "selected for rule" tags - +** TODO component: rule-constructor +** DONE remove css class for "selected for rule" tags +** TODO what with required/positive and excluded/negative tag styles/states? Currently they use the same visual scemas. * TODO add new create rule interface ** On the top of the main section? @@ -21,3 +21,9 @@ * TODO refactor "show read" to something better / more convinient? * TODO check if hiden news in the news list processed correctly by vue.js (not affecting the performance) + +* TODO show article body & tags by clicking on [x more] element? + +* TODO apply text filter in tags filter to the tags in entries too? + +** It may be too slow/compliated From c4056cd2e8b1b0f39015441e716f253e0219703b Mon Sep 17 00:00:00 2001 From: "Aliaksei Yaletski (Tiendil)" Date: Tue, 17 Dec 2024 14:50:18 +0100 Subject: [PATCH 06/73] reload -> refresh --- site/src/layouts/SidePanelLayout.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/layouts/SidePanelLayout.vue b/site/src/layouts/SidePanelLayout.vue index f1fb14e7..08b487c3 100644 --- a/site/src/layouts/SidePanelLayout.vue +++ b/site/src/layouts/SidePanelLayout.vue @@ -36,7 +36,7 @@ v-if="reloadButton" href="#" @click="globalSettings.updateDataVersion()" - >ReloadRefresh
From d0f328ff10de5fdcbee2c97acc3c9cd16e012e60 Mon Sep 17 00:00:00 2001 From: "Aliaksei Yaletski (Tiendil)" Date: Tue, 17 Dec 2024 20:11:46 +0100 Subject: [PATCH 07/73] something works, but bad --- site/src/components/FfunTag.vue | 33 +++++++++---- site/src/components/TagsFilter.vue | 75 +++++++++++++++--------------- site/src/components/TagsList.vue | 10 ++-- site/src/logic/tagsFilterState.ts | 17 +++++++ site/src/views/NewsView.vue | 13 ++---- todos.org | 2 + 6 files changed, 89 insertions(+), 61 deletions(-) diff --git a/site/src/components/FfunTag.vue b/site/src/components/FfunTag.vue index e97a3d71..6cd67762 100644 --- a/site/src/components/FfunTag.vue +++ b/site/src/components/FfunTag.vue @@ -20,16 +20,18 @@ diff --git a/site/src/components/TagsList.vue b/site/src/components/TagsList.vue index dd9ef731..c1b506cf 100644 --- a/site/src/components/TagsList.vue +++ b/site/src/components/TagsList.vue @@ -5,10 +5,8 @@ v-for="tag of displayedTags" :key="tag" :uid="tag" - :mode="tagMode(tag)" :count="tagsCount[tag]" - count-mode="tooltip" - @tag:clicked="onTagClicked" /> + count-mode="tooltip" /> { + console.log(a, b); const aContributions = Math.abs(properties.contributions[a] || 0); const bContributions = Math.abs(properties.contributions[b] || 0); + console.log('contr', aContributions, bContributions); if (aContributions > bContributions) { return -1; @@ -110,8 +110,4 @@ return values; }); -// TODO: remove? - function onTagClicked(tag: string) { - } - diff --git a/site/src/logic/tagsFilterState.ts b/site/src/logic/tagsFilterState.ts index 3c17da3c..e5d7ec8e 100644 --- a/site/src/logic/tagsFilterState.ts +++ b/site/src/logic/tagsFilterState.ts @@ -7,27 +7,44 @@ interface ReturnTagsForEntity { export class Storage { requiredTags: {[key: string]: boolean}; excludedTags: {[key: string]: boolean}; + selectedTags: {[key: string]: boolean}; // TODO: make calculated property? constructor() { this.requiredTags = {}; this.excludedTags = {}; + this.selectedTags = {}; } onTagStateChanged({tag, state}: {tag: string; state: State}) { if (state === "required") { this.requiredTags[tag] = true; this.excludedTags[tag] = false; + this.selectedTags[tag] = true; } else if (state === "excluded") { this.excludedTags[tag] = true; this.requiredTags[tag] = false; + this.selectedTags[tag] = true; } else if (state === "none") { this.excludedTags[tag] = false; this.requiredTags[tag] = false; + delete this.selectedTags[tag]; } else { throw new Error(`Unknown tag state: ${state}`); } } + onTagClicked({tag}: {tag: string}) { + if (!(tag in this.selectedTags)) { + this.onTagStateChanged({tag: tag, state: "required"}); + } else if (this.requiredTags[tag]) { + this.onTagStateChanged({tag: tag, state: "excluded"}); + } else if (this.excludedTags[tag]) { + this.onTagStateChanged({tag: tag, state: "required"}); + } else { + throw new Error(`Unknown tag state: ${tag}`); + } + } + filterByTags(entities: any[], getTags: ReturnTagsForEntity) { let report = entities.slice(); diff --git a/site/src/views/NewsView.vue b/site/src/views/NewsView.vue index 05c75bbd..cc0693b0 100644 --- a/site/src/views/NewsView.vue +++ b/site/src/views/NewsView.vue @@ -25,8 +25,7 @@ From 1b81611402b35832c299bb661b4abca147590150 Mon Sep 17 00:00:00 2001 From: "Aliaksei Yaletski (Tiendil)" Date: Tue, 17 Dec 2024 20:40:47 +0100 Subject: [PATCH 12/73] cleanup --- site/src/components/FfunTag.vue | 3 --- site/src/components/TagsFilter.vue | 6 ------ site/src/logic/tagsFilterState.ts | 1 + 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/site/src/components/FfunTag.vue b/site/src/components/FfunTag.vue index f90ac3f0..025d9017 100644 --- a/site/src/components/FfunTag.vue +++ b/site/src/components/FfunTag.vue @@ -42,7 +42,6 @@ const tagsStates = inject("tagsStates"); countMode?: string | null; secondaryMode?: string | null; showSwitch?: boolean | null; - // mode?: string | null; }>(); const tagInfo = computed(() => { @@ -57,8 +56,6 @@ const tagsStates = inject("tagsStates"); return t.noInfoTag(properties.uid); }); -// const emit = defineEmits(["tag:clicked"]); - // TODO: refactor somehow const mode = computed(() => { if (tagsStates.value.requiredTags[properties.uid]) { diff --git a/site/src/components/TagsFilter.vue b/site/src/components/TagsFilter.vue index 0e585898..96b487e9 100644 --- a/site/src/components/TagsFilter.vue +++ b/site/src/components/TagsFilter.vue @@ -53,12 +53,6 @@ import type * as tagsFilterState from "@/logic/tagsFilterState"; const tagsStore = useTagsStore(); - // const selectedTags = ref<{[key: string]: boolean}>({}); - - // const tagStates = ref<{[key: string]: tagsFilterState.State}>({}); - -// const emit = defineEmits(["tag:stateChanged"]); - const tagsStates = inject('tagsStates'); const properties = defineProps<{tags: {[key: string]: number}}>(); diff --git a/site/src/logic/tagsFilterState.ts b/site/src/logic/tagsFilterState.ts index 5dbb2336..20fa6b65 100644 --- a/site/src/logic/tagsFilterState.ts +++ b/site/src/logic/tagsFilterState.ts @@ -4,6 +4,7 @@ interface ReturnTagsForEntity { (entity: any): string[]; } +// TODO: refactor to something nicer export class Storage { requiredTags: {[key: string]: boolean}; excludedTags: {[key: string]: boolean}; From a3631e74da950501bac2518294ee58f5b72f130f Mon Sep 17 00:00:00 2001 From: "Aliaksei Yaletski (Tiendil)" Date: Tue, 17 Dec 2024 20:41:42 +0100 Subject: [PATCH 13/73] code formatting --- ffun/ffun/cli/application.py | 2 +- ffun/ffun/cli/commands/fixtures.py | 37 ++++++------- site/src/components/FfunTag.vue | 84 +++++++++++++++--------------- site/src/components/TagsFilter.vue | 7 ++- site/src/components/TagsList.vue | 2 - site/src/views/NewsView.vue | 7 ++- 6 files changed, 66 insertions(+), 73 deletions(-) diff --git a/ffun/ffun/cli/application.py b/ffun/ffun/cli/application.py index 7cf9573e..a6078b38 100644 --- a/ffun/ffun/cli/application.py +++ b/ffun/ffun/cli/application.py @@ -2,11 +2,11 @@ from ffun.cli.commands import cleaner # noqa: F401 from ffun.cli.commands import experiments # noqa: F401 +from ffun.cli.commands import fixtures # noqa: F401 from ffun.cli.commands import metrics # noqa: F401 from ffun.cli.commands import processors_quality # noqa: F401 from ffun.cli.commands import profile # noqa: F401 from ffun.cli.commands import user_settings # noqa: F401 -from ffun.cli.commands import fixtures # noqa: F401 from ffun.core import logging app = typer.Typer() diff --git a/ffun/ffun/cli/commands/fixtures.py b/ffun/ffun/cli/commands/fixtures.py index e7f575bb..10c99da4 100644 --- a/ffun/ffun/cli/commands/fixtures.py +++ b/ffun/ffun/cli/commands/fixtures.py @@ -9,27 +9,24 @@ """ import asyncio +import uuid import typer -import uuid -from typing import Any + from ffun.application.application import with_app -from ffun.core import logging, utils -from ffun.core.postgresql import execute -from ffun.domain.entities import UserId, FeedId, EntryId, SourceId -from ffun.domain.domain import new_feed_id, new_entry_id -from ffun.domain.urls import normalize_classic_unknown_url, url_to_source_uid, url_to_uid, adjust_classic_relative_url -from ffun.library.operations import all_entries_iterator, count_total_entries from ffun.auth.settings import settings as a_settings -from ffun.users import domain as u_domain -from ffun.users import entities as u_entities -from ffun.library.entities import Entry -from ffun.library.domain import catalog_entries, get_entries_by_ids -from ffun.feeds.entities import Feed, FeedState +from ffun.core import logging, utils +from ffun.domain.domain import new_entry_id, new_feed_id +from ffun.domain.urls import adjust_classic_relative_url, url_to_source_uid from ffun.feeds.domain import get_feeds, get_source_ids, save_feed +from ffun.feeds.entities import Feed, FeedState +from ffun.feeds_links.domain import add_link +from ffun.library.domain import catalog_entries, get_entries_by_ids +from ffun.library.entities import Entry from ffun.ontology.domain import apply_tags_to_entry from ffun.ontology.entities import ProcessorTag -from ffun.feeds_links.domain import add_link +from ffun.users import domain as u_domain +from ffun.users import entities as u_entities logger = logging.get_module_logger() @@ -56,8 +53,8 @@ async def fake_feed() -> Feed: last_error=None, load_attempted_at=timestamp, loaded_at=timestamp, - title=f'Title {_id}', - description=f'Description {_id}', + title=f"Title {_id}", + description=f"Description {_id}", ) feed_id = await save_feed(feed) @@ -72,13 +69,13 @@ async def fake_entry(feed: Feed) -> Entry: timestamp = utils.now() - url = adjust_classic_relative_url(f'enrty-{_id}', feed.url) + url = adjust_classic_relative_url(f"enrty-{_id}", feed.url) entry = Entry( id=new_entry_id(), source_id=feed.source_id, - title=f'Title {_id}', - body=f'Body {_id}', + title=f"Title {_id}", + body=f"Body {_id}", external_id=uuid.uuid4().hex, external_url=url, external_tags=set(), @@ -111,7 +108,7 @@ async def run_fill_db(feeds_number: int, entries_per_feed: int, tags_per_entry: tags = [] for j, _ in enumerate(range(tags_per_entry), start=1): - raw_uid = f'some-long-tag-name-{j}-{i % j}' + raw_uid = f"some-long-tag-name-{j}-{i % j}" tags.append(ProcessorTag(raw_uid=raw_uid)) await apply_tags_to_entry(entry.id, 100500, tags) diff --git a/site/src/components/FfunTag.vue b/site/src/components/FfunTag.vue index 025d9017..ee8ea727 100644 --- a/site/src/components/FfunTag.vue +++ b/site/src/components/FfunTag.vue @@ -1,29 +1,29 @@ @@ -32,9 +32,9 @@ import {computed, ref, inject} from "vue"; import {useTagsStore} from "@/stores/tags"; -const tagsStore = useTagsStore(); + const tagsStore = useTagsStore(); -const tagsStates = inject("tagsStates"); + const tagsStates = inject("tagsStates"); const properties = defineProps<{ uid: string; @@ -56,17 +56,17 @@ const tagsStates = inject("tagsStates"); return t.noInfoTag(properties.uid); }); -// TODO: refactor somehow -const mode = computed(() => { - if (tagsStates.value.requiredTags[properties.uid]) { - return "required"; - } + // TODO: refactor somehow + const mode = computed(() => { + if (tagsStates.value.requiredTags[properties.uid]) { + return "required"; + } - if (tagsStates.value.excludedTags[properties.uid]) { - return "excluded"; - } + if (tagsStates.value.excludedTags[properties.uid]) { + return "excluded"; + } - return "none"; + return "none"; }); const classes = computed(() => { @@ -85,16 +85,16 @@ const mode = computed(() => { return result; }); -function onClick() { - tagsStates.value.onTagClicked({tag: properties.uid}); -} + function onClick() { + tagsStates.value.onTagClicked({tag: properties.uid}); + } -function onRevers() { - tagsStates.value.onTagReversed({tag: properties.uid}); -} + function onRevers() { + tagsStates.value.onTagReversed({tag: properties.uid}); + } -const tooltip = computed(() => { - // TODO: highligh the tag under the cursor + const tooltip = computed(() => { + // TODO: highligh the tag under the cursor if (properties.countMode == "tooltip" && properties.count) { return `articles with this tag: ${properties.count}`; } diff --git a/site/src/components/TagsFilter.vue b/site/src/components/TagsFilter.vue index 96b487e9..d125de57 100644 --- a/site/src/components/TagsFilter.vue +++ b/site/src/components/TagsFilter.vue @@ -12,7 +12,7 @@ :uid="tag" :count="tags[tag] ?? 0" :showSwitch="true" - count-mode="no"/> + count-mode="no" /> @@ -32,7 +32,7 @@ + count-mode="prefix" /> @@ -53,7 +53,7 @@ import type * as tagsFilterState from "@/logic/tagsFilterState"; const tagsStore = useTagsStore(); -const tagsStates = inject('tagsStates'); + const tagsStates = inject("tagsStates"); const properties = defineProps<{tags: {[key: string]: number}}>(); @@ -134,5 +134,4 @@ const tagsStates = inject('tagsStates'); return values; }); - diff --git a/site/src/components/TagsList.vue b/site/src/components/TagsList.vue index 52fa5dad..3ea70286 100644 --- a/site/src/components/TagsList.vue +++ b/site/src/components/TagsList.vue @@ -16,7 +16,6 @@ v-if="!showAll" >{{ tagsNumber - showLimit }} more - @@ -108,5 +107,4 @@ return values; }); - diff --git a/site/src/views/NewsView.vue b/site/src/views/NewsView.vue index cc0693b0..4638b092 100644 --- a/site/src/views/NewsView.vue +++ b/site/src/views/NewsView.vue @@ -24,8 +24,7 @@ diff --git a/site/src/components/EntryForList.vue b/site/src/components/EntryForList.vue index 0e070c49..555017f9 100644 --- a/site/src/components/EntryForList.vue +++ b/site/src/components/EntryForList.vue @@ -1,5 +1,5 @@