GithubHelp home page GithubHelp logo

icpc / live-v3 Goto Github PK

View Code? Open in Web Editor NEW
43.0 13.0 12.0 185.52 MB

Overlay for competitive programming competitions broadcasts

License: MIT License

HTML 7.77% JavaScript 18.34% Kotlin 57.09% SCSS 0.10% CSS 0.11% Batchfile 0.07% TypeScript 16.02% Python 0.29% Shell 0.06% Dockerfile 0.05% Ruby 0.10%
live icpc overlay obs

live-v3's People

Contributors

azat-ismagilov avatar brianvar avatar cubercsl avatar irdkwmnsb avatar kbats183 avatar klimarissa17 avatar kokx avatar kunyavskiy avatar ldvsoft avatar lperovskaya avatar maleksware avatar masha237 avatar masha238 avatar megaverkruzo avatar mond1c avatar nakinamo avatar nsychev avatar pandadtdyy avatar perveevm avatar pmavrin avatar temikfart avatar vvolochay avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

live-v3's Issues

feat: Support commentary endpoint

Support reading in commentary from the contest API:
https://ccs-specs.icpc.io/master/contest_api#commentary

It would be great to be able to show these in the ticker. Either by automatically including all new items for some time, or by being able to manually pick messages to add to the ticker.

It would also be nice to have single commentary message overlay. Similar to how social media comment overlays look like in similar tools.

bug: Build results in StackOverflowError

Context (Environment)

Trying to build the application using ./gradlew build or running using ./gradlew run.

Expected Behavior

The build succeeds without an error, and its possible to run ./gradlew release afterwards and use the resulting jar, or run the application.

Current Behavior

When running ./gradlew run or ./gradlew build, the build results in a java.lang.StackOverflowError, failing the build. Full logs: https://gist.github.com/kokx/ca709aebf3f8274235d78bfa81f43019

Possible Solution

Removing sniper-tools from from the include in /settings.gradle.kts allows the build to succeed.

Steps to Reproduce

  1. Run ./gradlew build
  2. For more information, see the logs in https://gist.github.com/kokx/ca709aebf3f8274235d78bfa81f43019

Overlay. Scoreboard Row doesn't expect undefined in scoreboardData

export const ScoreboardRow = ({ teamId, hideTasks, rankWidth, nameWidth, sumPenWidth, nameGrows, optimismLevel }) => {
const scoreboardData = useSelector((state) => state.scoreboard[optimismLevel].ids[teamId]);
const teamData = useSelector((state) => state.contestInfo.info?.teamsId[teamId]);
return <ScoreboardRowContainer>
<RankCell rank={scoreboardData.rank} medal={scoreboardData.medalType} width={rankWidth ?? SCOREBOARD_RANK_WIDTH}/>
<TeamNameCell teamName={teamData.shortName} width={nameGrows ? undefined : (nameWidth ?? SCOREBOARD_NAME_WIDTH)} canGrow={nameGrows ?? false} canShrink={nameGrows?? false}/>
<ScoreboardStatCell width={sumPenWidth ?? SCOREBOARD_SUM_PEN_WIDTH}>
{scoreboardData.totalScore}
</ScoreboardStatCell>
<ScoreboardStatCell width={sumPenWidth ?? SCOREBOARD_SUM_PEN_WIDTH}>
{scoreboardData.penalty}
</ScoreboardStatCell>
{!hideTasks && scoreboardData.problemResults.map(({ wrongAttempts, pendingAttempts, isSolved, isFirstToSolve }, i) =>
<ScoreboardTaskCell key={i} status={getStatus(isFirstToSolve, isSolved, pendingAttempts, wrongAttempts)}
attempts={wrongAttempts + pendingAttempts}/>
)}
</ScoreboardRowContainer>;
};

We can't expect that scoreboardData in ScoreboardRow isn't undefined also as in QueueRow

export const QueueRow = ({ entryData, isEven }) => {
const scoreboardData = useSelector((state) => state.scoreboard[SCOREBOARD_TYPES.normal].ids[entryData.teamId]);
const teamData = useSelector((state) => state.contestInfo.info?.teamsId[entryData.teamId]);
const probData = useSelector((state) => state.contestInfo.info?.problems[entryData.problemId]);
return <QueueRowWrap>
<RankCell width={CELL_QUEUE_RANK_WIDTH} isEven={isEven} rank={scoreboardData?.rank} medal={scoreboardData?.medalType}/>
<TeamNameCell teamName={teamData?.shortName ?? "??"} isEven={isEven}/>
<Cell width={CELL_QUEUE_TOTAL_SCORE_WIDTH} isEven={isEven}>
{scoreboardData?.totalScore ?? "??"}
</Cell>
<ProblemCell probData={probData} width={CELL_QUEUE_TASK_WIDTH} isEven={isEven}/>
<VerdictCell verdict={entryData} width={CELL_QUEUE_VERDICT_WIDTH} isEven={isEven}/>
</QueueRowWrap>;
};

Rework advanced properties and hot reloading

Add mapping from hot reloading structure to partisipant xml.

List with team ids (may be in contest.xml) (it's immutable).

Mutable list with special data (team video urls, team and cute full names, special start time).

feat: Show submission language

Show submission language in queue

Feature description

We could show the programming language for runs in queue.

Motivation and possible use case

I think some viewers are wondering — what languages the contestants are using.

Correct events loading in clics contest emulation

Merge may give not all events here

override suspend fun loadOnce() = coroutineScope {
val (_, contestInfoFlow, analyticsEventFlow) = launchLoader()
val analyticsEvents = merge(contestInfoFlow, analyticsEventFlow)
.takeWhile { it !is ContestInfo || it.status != ContestStatus.OVER }
.fold(mutableListOf<AnalyticsEvent>()) { ac, it ->
when (it) {
is AnalyticsEvent -> {
ac += it
ac
}
else -> ac
}
}
val contestInfo = contestInfoFlow.first { it.status == ContestStatus.OVER }
coroutineContext.cancelChildren()
val runs = model.submissions.values.map { it.toApi() }
ContestParseResult(contestInfo, runs, analyticsEvents)
}

bug: fix statistics widget location

Статистика в кривом месте. Также кажется что она не согласована с таблицей результатов, особенно после заморозки

feat: Add keyboard shortcuts to admin

  1. В целом мышкой пользоваться довольно неудобно - много маленьких кнопок. В будущем хочется вообще задавать админке system-wide сочетания клавиш, чтобы можно было на микро-стимдек мапить.

@azat-ismagilov

feat: allow usage of locally hosted of images from Titles view

Feature description

Right now, images are required to be hosted via some external URL. Make it possible to use self-hosted images.

Motivation and possible use case

Two scenarios - one is that you are running a contest locally and cannot connect externally for some reason. Another is that you don't want assets to be publicly accessible at all.

feat: Allow to have noop cds

Feature description

It should be possible to run overlayer with noop CDs, which will produce empty contest

Motivation and possible use case

Sysops were unhappy we were querying CDs after the closing ceremony because they were not sure if they can disable it.

feat: scroll last scoreboard page partially

To make scoreboards with little remainder nicer, we can just scroll the last scoreboard page for the remaining number of lines. Will look super nice for two-page scoreboards

feat: filtering for teamView

  1. В инфо хочется несколько режимов - показать все решенные, показать все задачи которые трогали. Я бы ещё подумал над тем, чтобы показывать последние несколько попыток. (?)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.