{"id":15135125,"url":"https://github.com/jetbrains/youtrack-activities-widget","last_synced_at":"2025-10-19T15:30:47.394Z","repository":{"id":44737400,"uuid":"199824370","full_name":"JetBrains/youtrack-activities-widget","owner":"JetBrains","description":"YouTrack Dashboard widget that displays recent activities feed","archived":false,"fork":false,"pushed_at":"2024-02-04T13:51:57.000Z","size":2990,"stargazers_count":6,"open_issues_count":3,"forks_count":1,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-01-30T02:02:00.146Z","etag":null,"topics":["jetbrains-hub","jetbrains-youtrack","widget"],"latest_commit_sha":null,"homepage":"https://plugins.jetbrains.com/plugin/13412-issue-activity-feed","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JetBrains.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-31T09:30:09.000Z","updated_at":"2023-12-13T10:58:19.000Z","dependencies_parsed_at":"2024-01-18T01:10:46.606Z","dependency_job_id":"0f39b3fd-1e28-4c12-a497-3c7936679ef3","html_url":"https://github.com/JetBrains/youtrack-activities-widget","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Fyoutrack-activities-widget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Fyoutrack-activities-widget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Fyoutrack-activities-widget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Fyoutrack-activities-widget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JetBrains","download_url":"https://codeload.github.com/JetBrains/youtrack-activities-widget/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237152957,"owners_count":19263814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jetbrains-hub","jetbrains-youtrack","widget"],"created_at":"2024-09-26T05:43:29.602Z","updated_at":"2025-10-19T15:30:47.050Z","avatar_url":"https://github.com/JetBrains.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Issue Activity Feed\n\n[![JetBrains team project](http://jb.gg/badges/team.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)\n\n[YouTrack](https://www.jetbrains.com/youtrack/) dashboard widget, which shows activities in selected categories for issues that match the specified search criteria.\n\nWidget's [page](https://plugins.jetbrains.com/plugin/13412-issue-activity-feed) in JetBrains Marketplace\n\n[Code of Conduct](https://github.com/JetBrains?#code-of-conduct)\n\n## Developing a Hub widget\nThe following commands are available:\n\n  - `npm test` to launch karma tests\n  - `npm start` to run a local development server\n  - `npm run lint` to lint your code (JS and CSS)\n  - `npm run stylelint` to lint CSS only\n  - `npm run build` to generate a production bundle (will be available under `dist`)\n  - `npm run ci-test` to launch karma tests and report the results to TeamCity\n\nTo check your widget, go to the widget playground page located at `\u003cyour_hub_server\u003e/dashboard/widgets-playground`.\n\nYou may encounter the following problem when using a local development server together with Hub running over HTTPS: all major browsers block insecure scripts. \nIn Chrome you can add a security exception: click the security notification in the address bar (the one saying \"The page is trying to load scripts from unauthenticated sources\") and \npress the \"Load unsafe scripts\" button. Similar workarounds are available in other browsers as well.\n\n## Introduction into widget development\nThe `app` folder contains a demo widget that shows a welcome message. Its configuration screen allows selecting the font color.\n\nIn this guide we'll show you how to add a new parameter to the configuration screen and use its value in the rendered widget.\n\nOpen the `app.js` file, all the changes will be made there.\n\nFirst of all, import the `Input` component from Ring UI:\n\n```\nimport Input from '@jetbrains/ring-ui/components/input/input';\n```\n\nConfiguration screen is rendered by the `renderConfiguration` function. Let's put an input below the select:\n\n```\n\u003cInput\n  label=\"What is your name?\"\n/\u003e\n```\n\nTo set input's placeholder use the `label` property.\n\nIf you haven't launched the dev server yet, run `yarn start`, open the widget playground (`\u003cyour_hub_server\u003e/dashboard/widgets-playground`), \nspecify the URL of the dev server (e.g., `http://localhost:9010/`) and reload the widget by clicking the corresponding button.\n\nAn input we've just added should appear on the configuration screen of the widget.\n\nTo store the value of the input in the state of the widget, we add the `onChange` prop:\n\n```\n\u003cInput\n  label=\"What is your name?\"\n  onChange={this.changeName}\n/\u003e\n```\n\nand implement the `changeName` handler:\n\n```\nchangeName = e =\u003e this.setState({\n  username: e.target.value\n});\n```\n\nTo display the value we retrieve it from state in the very beginning of the `renderConfiguration` function together with `selectedColor`:\n\n```\nconst {selectedColor, username} = this.state;\n```\n\nand pass the value into the `Input` as `value` prop:\n\n```\nvalue={username}\n```\n\nOur `Input` now looks like this:\n\n```\n\u003cInput\n  label=\"What is your name?\"\n  value={username}\n  onChange={this.changeName}\n/\u003e\n```\n\nNow, we need to persist the value. To do so, Dashboard API comes in handy:\n\n```\nconst {selectedColor, username} = this.state;\nawait this.props.dashboardApi.storeConfig({selectedColor, username});\n```\n\nFinally, we use the stored value in the `render` method of our widget: \n\n```\nconst {username, selectedColor, isConfiguring} = this.state;\n\n...\n\n\u003ch1 style={{color: selectedColor.key}}\u003e{sayHello(username)}\u003c/h1\u003e\n```\n\nNow we can hit \"Reload widget\" and see if everything works!\n\n[1]: http://yeoman.io/\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjetbrains%2Fyoutrack-activities-widget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjetbrains%2Fyoutrack-activities-widget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjetbrains%2Fyoutrack-activities-widget/lists"}