import React, { useContext, useMemo, useState } from "react" import Style from "./PageRepository.module.css" import classNames from "classnames" import BoxRepositoryTweets from "../components/interactive/BoxRepositoryTweets" import BoxHeader from "../components/base/BoxHeader" import PickerVisualization from "../components/interactive/PickerVisualization" import PickerFilter from "../components/interactive/PickerFilter" import useBackendViewset from "../hooks/useBackendViewset" import useBackendResource from "../hooks/useBackendResource" import { faFolder, faFolderOpen, faTrash } from "@fortawesome/free-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" import { useParams } from "react-router" import Loading from "../components/base/Loading" import BoxVisualizationStats from "../components/interactive/BoxVisualizationStats" import BoxVisualizationChart from "../components/interactive/BoxVisualizationChart" import BoxVisualizationMap from "../components/interactive/BoxVisualizationMap" import BoxVisualizationWordcloud from "../components/interactive/BoxVisualizationWordcloud" import BoxFull from "../components/base/BoxFull" import ContextLanguage from "../contexts/ContextLanguage" import countTweetWords from "../utils/countTweetWords" import objectToWordcloudFormat from "../utils/objectToWordcloudFormat" export default function PageRepository({ className, ...props }) { const { id } = useParams() const { strings } = useContext(ContextLanguage) const [visualizationTab, setVisualizationTab] = useState("stats") const [addFilterTab, setAddFilterTab] = useState("hashtag") const repositoryBr = useBackendResource( `/api/v1/repositories/${id}`, { retrieve: true, edit: true, destroy: true, action: false, }, ) const repository = repositoryBr.error ? null : repositoryBr.resource const tweetsBv = useBackendViewset( `/api/v1/repositories/${id}/tweets/`, "snowflake", { list: true, create: false, retrieve: false, edit: false, destroy: false, command: false, action: false, }, ) const tweets = tweetsBv.resources && tweetsBv.error ? [] : tweetsBv.resources const words = useMemo( () => objectToWordcloudFormat(countTweetWords(tweets)), [tweets], ) let contents if(!repositoryBr.firstLoad || !tweetsBv.firstLoad) { contents = <> } else if(repository === null) { contents = <> {strings.repoDeleted} } else { contents = <> {repository.name} {visualizationTab === "wordcloud" ? : null} {visualizationTab === "histogram" ? : null} {visualizationTab === "map" ? : null} {visualizationTab === "stats" ? : null} {strings.notImplemented} {strings.notImplemented} } return (
{contents}
) }