├── .nvmrc ├── .env.production ├── .ruby-version ├── .node-version ├── .stylelintignore ├── .env.dev-no-axe ├── .env.development ├── .yarnrc ├── .gitattributes ├── ogp_invalidator ├── .gitignore ├── .env.sample ├── install_dependencies.sh ├── docker-compose.yml ├── README.md └── Dockerfile ├── static ├── robots.txt ├── google1ce98b9bcf81e6d4.html ├── icon.png ├── line.png ├── ogp.png ├── favicon.ico ├── github.png ├── github.webp ├── line.webp ├── logo-en.png ├── logo-ko.png ├── twitter.png ├── youtube.png ├── facebook.png ├── facebook.webp ├── twitter.webp ├── youtube.webp ├── .well-known │ └── pki-validation │ │ └── 907bb44cd8bdd2ecbdc7aa9b10c03e74.txt ├── line-square.png ├── line-square.webp ├── logo-zh-cn.png ├── ogp │ ├── agency.png │ ├── en │ │ ├── agency.png │ │ ├── ogp-image.png │ │ ├── positive-rate.png │ │ ├── untracked-rate.png │ │ ├── chiyoda-visitors.png │ │ ├── number-of-tested.png │ │ ├── shinjuku-visitors.png │ │ ├── tokyo-st-heatmap.png │ │ ├── shinjuku-st-heatmap.png │ │ ├── number-of-hospitalized.png │ │ ├── details-of-tested-cases.png │ │ ├── details-of-tested-cases_.png │ │ ├── number-of-confirmed-cases.png │ │ ├── details-of-confirmed-cases.png │ │ ├── monitoring-status-overview.png │ │ ├── positive-status-severe-case.png │ │ ├── attributes-of-confirmed-cases.png │ │ ├── number-of-inspection-persons.png │ │ ├── number-of-inspection-persons_.png │ │ ├── positive-number-by-diagnosed-date.png │ │ ├── monitoring-number-of-confirmed-cases.png │ │ ├── increase-ratio-of-confirmed-cases-by-daily.png │ │ ├── predicted-number-of-toei-subway-passengers.png │ │ ├── number-of-reports-to-covid19-consultation-desk.png │ │ ├── number-of-reports-to-covid19-telephone-advisory-center.png │ │ └── monitoring-number-of-reports-to-covid19-consultation-desk.png │ ├── ko │ │ ├── agency.png │ │ ├── ogp-image.png │ │ ├── positive-rate.png │ │ ├── untracked-rate.png │ │ ├── chiyoda-visitors.png │ │ ├── number-of-tested.png │ │ ├── shinjuku-visitors.png │ │ ├── tokyo-st-heatmap.png │ │ ├── shinjuku-st-heatmap.png │ │ ├── number-of-hospitalized.png │ │ ├── details-of-tested-cases.png │ │ ├── details-of-tested-cases_.png │ │ ├── number-of-confirmed-cases.png │ │ ├── details-of-confirmed-cases.png │ │ ├── monitoring-status-overview.png │ │ ├── positive-status-severe-case.png │ │ ├── attributes-of-confirmed-cases.png │ │ ├── number-of-inspection-persons.png │ │ ├── number-of-inspection-persons_.png │ │ ├── positive-number-by-diagnosed-date.png │ │ ├── monitoring-number-of-confirmed-cases.png │ │ ├── increase-ratio-of-confirmed-cases-by-daily.png │ │ ├── predicted-number-of-toei-subway-passengers.png │ │ ├── number-of-reports-to-covid19-consultation-desk.png │ │ ├── number-of-reports-to-covid19-telephone-advisory-center.png │ │ └── monitoring-number-of-reports-to-covid19-consultation-desk.png │ ├── positive-rate.png │ ├── zh-cn │ │ ├── agency.png │ │ ├── ogp-image.png │ │ ├── positive-rate.png │ │ ├── untracked-rate.png │ │ ├── chiyoda-visitors.png │ │ ├── number-of-tested.png │ │ ├── shinjuku-visitors.png │ │ ├── tokyo-st-heatmap.png │ │ ├── shinjuku-st-heatmap.png │ │ ├── number-of-hospitalized.png │ │ ├── details-of-tested-cases.png │ │ ├── details-of-tested-cases_.png │ │ ├── details-of-confirmed-cases.png │ │ ├── monitoring-status-overview.png │ │ ├── number-of-confirmed-cases.png │ │ ├── positive-status-severe-case.png │ │ ├── attributes-of-confirmed-cases.png │ │ ├── number-of-inspection-persons.png │ │ ├── number-of-inspection-persons_.png │ │ ├── positive-number-by-diagnosed-date.png │ │ ├── monitoring-number-of-confirmed-cases.png │ │ ├── increase-ratio-of-confirmed-cases-by-daily.png │ │ ├── predicted-number-of-toei-subway-passengers.png │ │ ├── number-of-reports-to-covid19-consultation-desk.png │ │ ├── number-of-reports-to-covid19-telephone-advisory-center.png │ │ └── monitoring-number-of-reports-to-covid19-consultation-desk.png │ ├── zh-tw │ │ ├── agency.png │ │ ├── ogp-image.png │ │ ├── positive-rate.png │ │ ├── untracked-rate.png │ │ ├── chiyoda-visitors.png │ │ ├── number-of-tested.png │ │ ├── shinjuku-visitors.png │ │ ├── tokyo-st-heatmap.png │ │ ├── shinjuku-st-heatmap.png │ │ ├── number-of-hospitalized.png │ │ ├── details-of-tested-cases.png │ │ ├── details-of-tested-cases_.png │ │ ├── details-of-confirmed-cases.png │ │ ├── monitoring-status-overview.png │ │ ├── number-of-confirmed-cases.png │ │ ├── positive-status-severe-case.png │ │ ├── attributes-of-confirmed-cases.png │ │ ├── number-of-inspection-persons.png │ │ ├── number-of-inspection-persons_.png │ │ ├── positive-number-by-diagnosed-date.png │ │ ├── monitoring-number-of-confirmed-cases.png │ │ ├── increase-ratio-of-confirmed-cases-by-daily.png │ │ ├── predicted-number-of-toei-subway-passengers.png │ │ ├── number-of-reports-to-covid19-consultation-desk.png │ │ ├── number-of-reports-to-covid19-telephone-advisory-center.png │ │ └── monitoring-number-of-reports-to-covid19-consultation-desk.png │ ├── ja-basic │ │ ├── agency.png │ │ ├── positive-rate.png │ │ ├── untracked-rate.png │ │ ├── chiyoda-visitors.png │ │ ├── number-of-tested.png │ │ ├── tokyo-st-heatmap.png │ │ ├── shinjuku-st-heatmap.png │ │ ├── shinjuku-visitors.png │ │ ├── details-of-tested-cases.png │ │ ├── details-of-tested-cases_.png │ │ ├── number-of-hospitalized.png │ │ ├── details-of-confirmed-cases.png │ │ ├── monitoring-status-overview.png │ │ ├── number-of-confirmed-cases.png │ │ ├── attributes-of-confirmed-cases.png │ │ ├── number-of-inspection-persons.png │ │ ├── number-of-inspection-persons_.png │ │ ├── positive-status-severe-case.png │ │ ├── positive-number-by-diagnosed-date.png │ │ ├── monitoring-number-of-confirmed-cases.png │ │ ├── increase-ratio-of-confirmed-cases-by-daily.png │ │ ├── predicted-number-of-toei-subway-passengers.png │ │ ├── number-of-reports-to-covid19-consultation-desk.png │ │ ├── number-of-reports-to-covid19-telephone-advisory-center.png │ │ └── monitoring-number-of-reports-to-covid19-consultation-desk.png │ ├── untracked-rate.png │ ├── chiyoda-visitors.png │ ├── number-of-tested.png │ ├── shinjuku-visitors.png │ ├── tokyo-st-heatmap.png │ ├── shinjuku-st-heatmap.png │ ├── details-of-tested-cases.png │ ├── number-of-hospitalized.png │ ├── details-of-tested-cases_.png │ ├── number-of-confirmed-cases.png │ ├── details-of-confirmed-cases.png │ ├── monitoring-status-overview.png │ ├── number-of-inspection-persons.png │ ├── positive-status-severe-case.png │ ├── attributes-of-confirmed-cases.png │ ├── number-of-inspection-persons_.png │ ├── positive-number-by-diagnosed-date.png │ ├── monitoring-number-of-confirmed-cases.png │ ├── increase-ratio-of-confirmed-cases-by-daily.png │ ├── predicted-number-of-toei-subway-passengers.png │ ├── number-of-reports-to-covid19-consultation-desk.png │ ├── number-of-reports-to-covid19-telephone-advisory-center.png │ └── monitoring-number-of-reports-to-covid19-consultation-desk.png ├── twitter-square.png ├── twitter-square.webp ├── apple-touch-icon-precomposed.png ├── flow │ ├── bed.svg │ └── phone.svg ├── selectmenu.svg ├── parent.svg ├── support.svg ├── vaccine.svg ├── masktrash.svg ├── antenna.svg ├── covid.svg ├── earth.svg └── logo.svg ├── .dockerignore ├── .github ├── labeler.yml ├── img │ ├── 2020-03-16-16-05-37.png │ ├── 2020-03-16-16-09-47.png │ └── 2020-03-16-16-11-14.png ├── auto-merge-bot.config.yml ├── renovate.json ├── workflows │ ├── pr-labeler.yml │ ├── danger.yml │ ├── build.yml │ ├── staging.yml │ ├── check-statuses-of-forked-sites.yml │ ├── i18n_generator.yml │ ├── screenshot.yml │ ├── reviewdog.yml │ └── deploy.yml ├── PULL_REQUEST_TEMPLATE.md └── ISSUE_TEMPLATE │ ├── IMPROVE_SUGGESTIONS.md │ └── BUG_REPORT.md ├── .prettierrc ├── types ├── shims-sfc.d.ts ├── svg-shim.d.ts ├── shims-vue.d.ts └── chart.d.ts ├── .eslintignore ├── utils ├── urls.ts ├── tab-event-bus.ts ├── card-event-bus.ts ├── vueScrollTo.ts ├── formatTestedCases.ts ├── formatGraph.ts ├── monitoringStatusValueFormatters.ts ├── i18nUtils.ts ├── colors.ts ├── calcDayBeforeRatio.ts ├── formatConfirmedCasesAttributesTable.ts └── formatDate.ts ├── netlify.toml ├── Gemfile ├── .gitpod.yml ├── pages ├── flow.vue ├── print │ └── flow.vue ├── README.md └── index.vue ├── components ├── README.md ├── index │ ├── _shared │ │ ├── OpenDataLink.vue │ │ ├── DataView │ │ │ └── ExpantionPanel.vue │ │ ├── DataSelector.vue │ │ └── CardsLazyRow.vue │ ├── CardsReference │ │ ├── PositiveNumberByDevelopedDate │ │ │ └── DataViewCustomInfoPanel.vue │ │ ├── TelephoneAdvisoryReportsNumber │ │ │ └── Card.vue │ │ └── Agency │ │ │ └── Card.vue │ ├── SiteTopUpper │ │ ├── Consultation.vue │ │ ├── MonitoringComment │ │ │ ├── ImageSwipe.vue │ │ │ └── Frame.vue │ │ └── Consultation │ │ │ └── StaticInfo.vue │ ├── CardsMonitoring │ │ ├── MonitoringItemsOverview │ │ │ └── Table │ │ │ │ └── ValueWithTranslatableUnit.vue │ │ └── HospitalizedNumber │ │ │ └── Card.vue │ └── SiteTopUpper.vue └── _shared │ ├── DevelopmentModeMark.vue │ └── NoScript.vue ├── libraries └── repositories │ ├── BaseRepository.ts │ ├── NewsRepository.ts │ ├── MetroRepository.ts │ ├── AgencyRepository.ts │ ├── VariantsRepository.ts │ ├── PatientRepository.ts │ ├── TokyoRuleRepository.ts │ ├── PositiveRateRepository.ts │ ├── VaccinationAllRepository.ts │ ├── StayingPopulationRepository.ts │ ├── PositiveByDevelopedRepository.ts │ ├── PositiveByDiagnosedRepository.ts │ ├── MonitoringItemsRepository.ts │ ├── PositiveStatusRepository.ts │ ├── ConsultationAboutFeverRepository.ts │ ├── FeverConsultationCenterRepository.ts │ ├── MonitoringCommentImageRepository.ts │ ├── DailyPositiveDetailRepository.ts │ ├── InfectionMedicalCareProvisionStatusRepository.ts │ └── DataRepository.ts ├── .editorconfig ├── docker-compose.yml ├── layouts ├── README.md └── error.vue ├── Dockerfile ├── assets ├── README.md ├── locales │ └── pt_BR.json └── global.scss ├── middleware └── redirect.ts ├── .devcontainer └── devcontainer.json ├── plugins ├── vuetify.options.ts ├── axe.ts └── chartjs-adapter-dayjs.ts ├── Vagrantfile ├── .vscode ├── settings.json └── cspell.json ├── data ├── infection_medicalcareprovision_status.json ├── staying_population.json ├── news.json ├── monitoring_comment_image.json └── monitoring_items.json ├── stylelint.config.js ├── dangerfile.ts ├── auto-i18n └── csv │ └── occupation.csv ├── spec ├── lib │ └── locales_setting.rb ├── feature │ ├── index_h1_spec.rb │ ├── index_SiteTopUpper_h3_spec.rb │ ├── index_h2_spec.rb │ ├── index_SideNavigation_HamburgerMenu_spec.rb │ ├── index_CardsMonitoring_h3_spec.rb │ └── index_CardsMonitoring_DataViewExpantionPanel_spec.rb └── spec_helper.rb ├── ui-test ├── screenshot.py ├── list_fbcashe.sh └── delete_fbcache.sh ├── docs ├── zh_TW │ ├── CODE_OF_CONDUCT.md │ ├── TRANSLATION.md │ └── README.md ├── zh_CN │ ├── CODE_OF_CONDUCT.md │ └── TRANSLATION.md ├── ko │ ├── CODE_OF_CONDUCT.md │ └── README.md ├── th │ ├── CODE_OF_CONDUCT.md │ └── README.md ├── en │ ├── CODE_OF_CONDUCT.md │ └── README.md ├── pt_BR │ ├── CODE_OF_CONDUCT.md │ └── README.md ├── vi │ ├── CODE_OF_CONDUCT.md │ └── README.md ├── es │ ├── CODE_OF_CONDUCT.md │ └── README.md └── fr │ ├── README.md │ └── CODE_OF_CONDUCT.md ├── CODE_OF_CONDUCT.md ├── tsconfig.json ├── .eslintrc.js ├── .husky └── pre-commit ├── LICENSE.txt ├── vagrant_provision.sh ├── tool └── generateDataConverters.ts ├── Gemfile.lock ├── README.md └── .gitignore /.nvmrc: -------------------------------------------------------------------------------- 1 | 14.16.0 2 | -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.0.2 2 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 14.16.0 2 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | -------------------------------------------------------------------------------- /.env.dev-no-axe: -------------------------------------------------------------------------------- 1 | VUE_AXE=false 2 | -------------------------------------------------------------------------------- /.env.development: -------------------------------------------------------------------------------- 1 | VUE_AXE=true 2 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | network-timeout 1200000 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /ogp_invalidator/.gitignore: -------------------------------------------------------------------------------- 1 | out/* 2 | -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- 1 | User-Agent:* 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | node_modules 3 | .nuxt 4 | -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | auto_merge: 2 | - assets/locales/*.json 3 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /static/google1ce98b9bcf81e6d4.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google1ce98b9bcf81e6d4.html -------------------------------------------------------------------------------- /static/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/icon.png -------------------------------------------------------------------------------- /static/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/line.png -------------------------------------------------------------------------------- /static/ogp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp.png -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/favicon.ico -------------------------------------------------------------------------------- /static/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/github.png -------------------------------------------------------------------------------- /static/github.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/github.webp -------------------------------------------------------------------------------- /static/line.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/line.webp -------------------------------------------------------------------------------- /static/logo-en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/logo-en.png -------------------------------------------------------------------------------- /static/logo-ko.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/logo-ko.png -------------------------------------------------------------------------------- /static/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/twitter.png -------------------------------------------------------------------------------- /static/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/youtube.png -------------------------------------------------------------------------------- /static/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/facebook.png -------------------------------------------------------------------------------- /static/facebook.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/facebook.webp -------------------------------------------------------------------------------- /static/twitter.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/twitter.webp -------------------------------------------------------------------------------- /static/youtube.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/youtube.webp -------------------------------------------------------------------------------- /static/.well-known/pki-validation/907bb44cd8bdd2ecbdc7aa9b10c03e74.txt: -------------------------------------------------------------------------------- 1 | 396190f2d55d83f3fc1fc4a154ff11bf -------------------------------------------------------------------------------- /static/line-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/line-square.png -------------------------------------------------------------------------------- /static/line-square.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/line-square.webp -------------------------------------------------------------------------------- /static/logo-zh-cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/logo-zh-cn.png -------------------------------------------------------------------------------- /static/ogp/agency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/agency.png -------------------------------------------------------------------------------- /static/ogp/en/agency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/agency.png -------------------------------------------------------------------------------- /static/ogp/ko/agency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/agency.png -------------------------------------------------------------------------------- /static/twitter-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/twitter-square.png -------------------------------------------------------------------------------- /types/shims-sfc.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue' 3 | export default Vue 4 | } 5 | -------------------------------------------------------------------------------- /types/svg-shim.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const content: any 3 | export default content 4 | } 5 | -------------------------------------------------------------------------------- /static/ogp/en/ogp-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/ogp-image.png -------------------------------------------------------------------------------- /static/ogp/ko/ogp-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/ogp-image.png -------------------------------------------------------------------------------- /static/ogp/positive-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/positive-rate.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/agency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/agency.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/agency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/agency.png -------------------------------------------------------------------------------- /static/twitter-square.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/twitter-square.webp -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .nuxt/ 2 | dist/ 3 | node_modules/ 4 | static/ 5 | assets/ 6 | libraries/auto_generated 7 | vendor/ 8 | -------------------------------------------------------------------------------- /static/ogp/ja-basic/agency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/agency.png -------------------------------------------------------------------------------- /static/ogp/untracked-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/untracked-rate.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/ogp-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/ogp-image.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/ogp-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/ogp-image.png -------------------------------------------------------------------------------- /utils/urls.ts: -------------------------------------------------------------------------------- 1 | export function isExternal(path: string): boolean { 2 | return /^https?:\/\//.test(path) 3 | } 4 | -------------------------------------------------------------------------------- /static/ogp/chiyoda-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/chiyoda-visitors.png -------------------------------------------------------------------------------- /static/ogp/en/positive-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/positive-rate.png -------------------------------------------------------------------------------- /static/ogp/en/untracked-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/untracked-rate.png -------------------------------------------------------------------------------- /static/ogp/ko/positive-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/positive-rate.png -------------------------------------------------------------------------------- /static/ogp/ko/untracked-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/untracked-rate.png -------------------------------------------------------------------------------- /static/ogp/number-of-tested.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/number-of-tested.png -------------------------------------------------------------------------------- /static/ogp/shinjuku-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/shinjuku-visitors.png -------------------------------------------------------------------------------- /static/ogp/tokyo-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/tokyo-st-heatmap.png -------------------------------------------------------------------------------- /.github/img/2020-03-16-16-05-37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/.github/img/2020-03-16-16-05-37.png -------------------------------------------------------------------------------- /.github/img/2020-03-16-16-09-47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/.github/img/2020-03-16-16-09-47.png -------------------------------------------------------------------------------- /.github/img/2020-03-16-16-11-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/.github/img/2020-03-16-16-11-14.png -------------------------------------------------------------------------------- /ogp_invalidator/.env.sample: -------------------------------------------------------------------------------- 1 | TWITTER_USERNAME= 2 | TWITTER_PASSWORD= 3 | -------------------------------------------------------------------------------- /static/ogp/en/chiyoda-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/chiyoda-visitors.png -------------------------------------------------------------------------------- /static/ogp/en/number-of-tested.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/number-of-tested.png -------------------------------------------------------------------------------- /static/ogp/en/shinjuku-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/shinjuku-visitors.png -------------------------------------------------------------------------------- /static/ogp/en/tokyo-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/tokyo-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/ko/chiyoda-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/chiyoda-visitors.png -------------------------------------------------------------------------------- /static/ogp/ko/number-of-tested.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/number-of-tested.png -------------------------------------------------------------------------------- /static/ogp/ko/shinjuku-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/shinjuku-visitors.png -------------------------------------------------------------------------------- /static/ogp/ko/tokyo-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/tokyo-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/shinjuku-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/shinjuku-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/positive-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/positive-rate.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/untracked-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/untracked-rate.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/positive-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/positive-rate.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/untracked-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/untracked-rate.png -------------------------------------------------------------------------------- /static/ogp/details-of-tested-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/details-of-tested-cases.png -------------------------------------------------------------------------------- /static/ogp/en/shinjuku-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/shinjuku-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/positive-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/positive-rate.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/untracked-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/untracked-rate.png -------------------------------------------------------------------------------- /static/ogp/ko/shinjuku-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/shinjuku-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/number-of-hospitalized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/number-of-hospitalized.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/chiyoda-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/chiyoda-visitors.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/number-of-tested.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/number-of-tested.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/shinjuku-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/shinjuku-visitors.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/tokyo-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/tokyo-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/chiyoda-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/chiyoda-visitors.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/number-of-tested.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/number-of-tested.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/shinjuku-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/shinjuku-visitors.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/tokyo-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/tokyo-st-heatmap.png -------------------------------------------------------------------------------- /utils/tab-event-bus.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | export const EventBus = new Vue() 3 | export const TOGGLE_EVENT = 'TOGGLE_TAB' 4 | -------------------------------------------------------------------------------- /static/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /static/ogp/details-of-tested-cases_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/details-of-tested-cases_.png -------------------------------------------------------------------------------- /static/ogp/en/number-of-hospitalized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/number-of-hospitalized.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/chiyoda-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/chiyoda-visitors.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/number-of-tested.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/number-of-tested.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/tokyo-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/tokyo-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/ko/number-of-hospitalized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/number-of-hospitalized.png -------------------------------------------------------------------------------- /static/ogp/number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/shinjuku-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/shinjuku-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/shinjuku-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/shinjuku-st-heatmap.png -------------------------------------------------------------------------------- /utils/card-event-bus.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | export const EventBus = new Vue() 3 | export const TOGGLE_EVENT = 'TOGGLE_DETAILS' 4 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [[redirects]] 2 | from = "/*" 3 | to = "/404.html" 4 | status = 404 5 | 6 | [build] 7 | functions = "dist/functions" 8 | -------------------------------------------------------------------------------- /static/ogp/details-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/details-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/en/details-of-tested-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/details-of-tested-cases.png -------------------------------------------------------------------------------- /static/ogp/en/details-of-tested-cases_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/details-of-tested-cases_.png -------------------------------------------------------------------------------- /static/ogp/en/number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/shinjuku-st-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/shinjuku-st-heatmap.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/shinjuku-visitors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/shinjuku-visitors.png -------------------------------------------------------------------------------- /static/ogp/ko/details-of-tested-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/details-of-tested-cases.png -------------------------------------------------------------------------------- /static/ogp/ko/details-of-tested-cases_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/details-of-tested-cases_.png -------------------------------------------------------------------------------- /static/ogp/ko/number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/monitoring-status-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/monitoring-status-overview.png -------------------------------------------------------------------------------- /static/ogp/number-of-inspection-persons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/number-of-inspection-persons.png -------------------------------------------------------------------------------- /static/ogp/positive-status-severe-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/positive-status-severe-case.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/number-of-hospitalized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/number-of-hospitalized.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/number-of-hospitalized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/number-of-hospitalized.png -------------------------------------------------------------------------------- /static/ogp/attributes-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/attributes-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/en/details-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/details-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/en/monitoring-status-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/monitoring-status-overview.png -------------------------------------------------------------------------------- /static/ogp/en/positive-status-severe-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/positive-status-severe-case.png -------------------------------------------------------------------------------- /static/ogp/ko/details-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/details-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/ko/monitoring-status-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/monitoring-status-overview.png -------------------------------------------------------------------------------- /static/ogp/ko/positive-status-severe-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/positive-status-severe-case.png -------------------------------------------------------------------------------- /static/ogp/number-of-inspection-persons_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/number-of-inspection-persons_.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/details-of-tested-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/details-of-tested-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/details-of-tested-cases_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/details-of-tested-cases_.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/details-of-tested-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/details-of-tested-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/details-of-tested-cases_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/details-of-tested-cases_.png -------------------------------------------------------------------------------- /static/ogp/en/attributes-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/attributes-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/en/number-of-inspection-persons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/number-of-inspection-persons.png -------------------------------------------------------------------------------- /static/ogp/en/number-of-inspection-persons_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/number-of-inspection-persons_.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/details-of-tested-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/details-of-tested-cases.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/details-of-tested-cases_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/details-of-tested-cases_.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/number-of-hospitalized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/number-of-hospitalized.png -------------------------------------------------------------------------------- /static/ogp/ko/attributes-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/attributes-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/ko/number-of-inspection-persons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/number-of-inspection-persons.png -------------------------------------------------------------------------------- /static/ogp/ko/number-of-inspection-persons_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/number-of-inspection-persons_.png -------------------------------------------------------------------------------- /static/ogp/positive-number-by-diagnosed-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/positive-number-by-diagnosed-date.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/details-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/details-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/monitoring-status-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/monitoring-status-overview.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/positive-status-severe-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/positive-status-severe-case.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/details-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/details-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/monitoring-status-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/monitoring-status-overview.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/positive-status-severe-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/positive-status-severe-case.png -------------------------------------------------------------------------------- /ogp_invalidator/install_dependencies.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | apt-get -y update && apt-get -y upgrade && apt-get install -y chromium-chromedriver python3-selenium -------------------------------------------------------------------------------- /static/ogp/ja-basic/details-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/details-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/monitoring-status-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/monitoring-status-overview.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/attributes-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/attributes-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/number-of-inspection-persons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/number-of-inspection-persons.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/number-of-inspection-persons_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/number-of-inspection-persons_.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/attributes-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/attributes-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/number-of-inspection-persons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/number-of-inspection-persons.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/number-of-inspection-persons_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/number-of-inspection-persons_.png -------------------------------------------------------------------------------- /static/ogp/en/positive-number-by-diagnosed-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/positive-number-by-diagnosed-date.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/attributes-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/attributes-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/number-of-inspection-persons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/number-of-inspection-persons.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/number-of-inspection-persons_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/number-of-inspection-persons_.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/positive-status-severe-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/positive-status-severe-case.png -------------------------------------------------------------------------------- /static/ogp/ko/positive-number-by-diagnosed-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/positive-number-by-diagnosed-date.png -------------------------------------------------------------------------------- /static/ogp/monitoring-number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/monitoring-number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/en/monitoring-number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/monitoring-number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/ko/monitoring-number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/monitoring-number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/positive-number-by-diagnosed-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/positive-number-by-diagnosed-date.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/positive-number-by-diagnosed-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/positive-number-by-diagnosed-date.png -------------------------------------------------------------------------------- /static/ogp/increase-ratio-of-confirmed-cases-by-daily.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/increase-ratio-of-confirmed-cases-by-daily.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/positive-number-by-diagnosed-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/positive-number-by-diagnosed-date.png -------------------------------------------------------------------------------- /static/ogp/predicted-number-of-toei-subway-passengers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/predicted-number-of-toei-subway-passengers.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/monitoring-number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/monitoring-number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/monitoring-number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/monitoring-number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/en/increase-ratio-of-confirmed-cases-by-daily.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/increase-ratio-of-confirmed-cases-by-daily.png -------------------------------------------------------------------------------- /static/ogp/en/predicted-number-of-toei-subway-passengers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/predicted-number-of-toei-subway-passengers.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/monitoring-number-of-confirmed-cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/monitoring-number-of-confirmed-cases.png -------------------------------------------------------------------------------- /static/ogp/ko/increase-ratio-of-confirmed-cases-by-daily.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/increase-ratio-of-confirmed-cases-by-daily.png -------------------------------------------------------------------------------- /static/ogp/ko/predicted-number-of-toei-subway-passengers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/predicted-number-of-toei-subway-passengers.png -------------------------------------------------------------------------------- /static/ogp/number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/increase-ratio-of-confirmed-cases-by-daily.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/increase-ratio-of-confirmed-cases-by-daily.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/predicted-number-of-toei-subway-passengers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/predicted-number-of-toei-subway-passengers.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/increase-ratio-of-confirmed-cases-by-daily.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/increase-ratio-of-confirmed-cases-by-daily.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/predicted-number-of-toei-subway-passengers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/predicted-number-of-toei-subway-passengers.png -------------------------------------------------------------------------------- /static/ogp/en/number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/ko/number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/increase-ratio-of-confirmed-cases-by-daily.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/increase-ratio-of-confirmed-cases-by-daily.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/predicted-number-of-toei-subway-passengers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/predicted-number-of-toei-subway-passengers.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/ja-basic/number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/number-of-reports-to-covid19-telephone-advisory-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/number-of-reports-to-covid19-telephone-advisory-center.png -------------------------------------------------------------------------------- /static/ogp/en/number-of-reports-to-covid19-telephone-advisory-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/number-of-reports-to-covid19-telephone-advisory-center.png -------------------------------------------------------------------------------- /static/ogp/ko/number-of-reports-to-covid19-telephone-advisory-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/number-of-reports-to-covid19-telephone-advisory-center.png -------------------------------------------------------------------------------- /static/ogp/monitoring-number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/monitoring-number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source 'https://rubygems.org' 4 | 5 | ruby '3.0.2' 6 | 7 | gem 'capybara' 8 | gem 'parallel_tests' 9 | gem 'rspec' 10 | gem 'selenium-webdriver' 11 | -------------------------------------------------------------------------------- /static/ogp/en/monitoring-number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/en/monitoring-number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/ko/monitoring-number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ko/monitoring-number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/number-of-reports-to-covid19-telephone-advisory-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/number-of-reports-to-covid19-telephone-advisory-center.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/number-of-reports-to-covid19-telephone-advisory-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/number-of-reports-to-covid19-telephone-advisory-center.png -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: node:14.16.0-buster 2 | 3 | tasks: 4 | - init: yarn install 5 | command: export NUXT_TELEMETRY_DISABLED=1 && yarn dev-no-axe 6 | ports: 7 | - port: 3000 8 | onOpen: open-preview 9 | -------------------------------------------------------------------------------- /pages/flow.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 12 | -------------------------------------------------------------------------------- /static/ogp/ja-basic/number-of-reports-to-covid19-telephone-advisory-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/number-of-reports-to-covid19-telephone-advisory-center.png -------------------------------------------------------------------------------- /static/ogp/zh-cn/monitoring-number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-cn/monitoring-number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /static/ogp/zh-tw/monitoring-number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/zh-tw/monitoring-number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /pages/print/flow.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 12 | -------------------------------------------------------------------------------- /static/ogp/ja-basic/monitoring-number-of-reports-to-covid19-consultation-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vmfunc/covid19/development/static/ogp/ja-basic/monitoring-number-of-reports-to-covid19-consultation-desk.png -------------------------------------------------------------------------------- /types/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | import { NuxtI18nSeo } from 'nuxt-i18n/types/nuxt-i18n' 2 | 3 | declare module 'vue/types/vue' { 4 | interface Vue { 5 | $nuxtI18nSeo(): NuxtI18nSeo 6 | $style: { [key: string]: string } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /components/README.md: -------------------------------------------------------------------------------- 1 | # COMPONENTS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | The components directory contains your Vue.js Components. 6 | 7 | _Nuxt.js doesn't supercharge these components._ 8 | -------------------------------------------------------------------------------- /static/flow/bed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /libraries/repositories/BaseRepository.ts: -------------------------------------------------------------------------------- 1 | export interface IBaseRepository { 2 | data: T 3 | } 4 | 5 | export abstract class BaseRepository { 6 | public readonly data: T 7 | 8 | protected constructor(data: T) { 9 | this.data = data 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | app: 4 | container_name: covid19 5 | build: . 6 | tty: true 7 | ports: 8 | - 3000:3000 9 | volumes: 10 | - .:/app 11 | - node_modules:/app/node_modules 12 | volumes: 13 | node_modules: {} 14 | -------------------------------------------------------------------------------- /layouts/README.md: -------------------------------------------------------------------------------- 1 | # LAYOUTS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your Application Layouts. 6 | 7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts). 8 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:14.16.0-alpine 2 | 3 | ENV PROJECT_ROOTDIR /app/ 4 | 5 | WORKDIR $PROJECT_ROOTDIR 6 | 7 | COPY package.json yarn.lock $PROJECT_ROOTDIR 8 | 9 | RUN yarn install 10 | 11 | COPY . $PROJECT_ROOTDIR 12 | 13 | EXPOSE 3000 14 | ENV HOST 0.0.0.0 15 | 16 | CMD ["yarn", "dev"] 17 | -------------------------------------------------------------------------------- /ogp_invalidator/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | twitter: 4 | build: 5 | context: . 6 | dockerfile: Dockerfile 7 | tty: true 8 | env_file: .env 9 | volumes: 10 | - ./twitter_card_invalidator.py:/app/twitter_card_invalidator.p 11 | - ./out:/app/out 12 | -------------------------------------------------------------------------------- /ogp_invalidator/README.md: -------------------------------------------------------------------------------- 1 | # Need 2 | 3 | - python 3.x 4 | - pip 5 | - Twitter Account not to set up Two Factor Authentication 6 | 7 | # Usage 8 | 9 | - pip install selenium 10 | - set following environment valiables 11 | - TWITTER_USERNAME 12 | - TWITTER_PASSWORD 13 | - python twitter_card_invalidator.py 14 | -------------------------------------------------------------------------------- /pages/README.md: -------------------------------------------------------------------------------- 1 | # PAGES 2 | 3 | This directory contains your Application Views and Routes. 4 | The framework reads all the `*.vue` files inside this directory and creates the router of your application. 5 | 6 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing). 7 | -------------------------------------------------------------------------------- /utils/vueScrollTo.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * v-scroll-to完了時のcallback 3 | * ページ内リンクであることを前提に、URLにハッシュを付与する 4 | */ 5 | export const onDoneScroll = (element: Element) => { 6 | const elementHasId = typeof element.id !== 'undefined' 7 | if (elementHasId) { 8 | history.pushState(null, '', `#${element.id}`) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.github/auto-merge-bot.config.yml: -------------------------------------------------------------------------------- 1 | labels: 2 | - auto_merge 3 | 4 | # マージするPRにつけるラベルの条件 5 | # 上記の例では、 auto_merge_force OR ( auto_merge AND minor ) の条件に一致したらマージを行います。 6 | 7 | merge_type: squash # マージモード (optional): merge, squash, rebase デフォルト: merge 8 | delete_branch: delete # マージ後にブランチを削除するかどうか (optional): delete または 空欄 9 | -------------------------------------------------------------------------------- /assets/README.md: -------------------------------------------------------------------------------- 1 | # ASSETS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript. 6 | 7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked). 8 | -------------------------------------------------------------------------------- /middleware/redirect.ts: -------------------------------------------------------------------------------- 1 | import { Middleware } from '@nuxt/types' 2 | 3 | const redirect: Middleware = ({ route, redirect }) => { 4 | if (route.path.includes('flow')) { 5 | redirect( 6 | 'https://www.fukushihoken.metro.tokyo.lg.jp/iryo/kansen/coronasodan.html' 7 | ) 8 | } 9 | } 10 | 11 | export default redirect 12 | -------------------------------------------------------------------------------- /ogp_invalidator/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | ENV PROJECT_ROOTDIR /app/ 4 | 5 | WORKDIR $PROJECT_ROOTDIR 6 | 7 | COPY install_dependencies.sh $PROJECT_ROOTDIR 8 | 9 | RUN ./install_dependencies.sh 10 | 11 | COPY twitter_card_invalidator.py $PROJECT_ROOTDIR 12 | 13 | CMD ["python3", "twitter_card_invalidator.py", "--out"] 14 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["config:base"], 3 | "timezone": "Asia/Tokyo", 4 | "labels": ["renovate"], 5 | "lockFileMaintenance": { 6 | "enabled": true, 7 | "schedule": ["before 5pm on wednesday"] 8 | }, 9 | "patch": { 10 | "automerge": true 11 | }, 12 | "ignoreDeps": ["node"] 13 | } 14 | -------------------------------------------------------------------------------- /static/selectmenu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "covid19", 3 | "dockerComposeFile": [ 4 | "../docker-compose.yml" 5 | ], 6 | "service": "app", 7 | "extensions": [ 8 | "dbaeumer.vscode-eslint" 9 | ], 10 | "postCreateCommand": "yarn install", 11 | "workspaceFolder": "/app", 12 | "shutdownAction": "stopCompose" 13 | } 14 | -------------------------------------------------------------------------------- /plugins/vuetify.options.ts: -------------------------------------------------------------------------------- 1 | import { mdiChevronLeft, mdiChevronRight, mdiMenuDown } from '@mdi/js' 2 | 3 | // Vueitfy options 4 | // https://github.com/nuxt-community/vuetify-module#optionspath 5 | export default { 6 | icons: { 7 | values: { 8 | prev: mdiChevronLeft, 9 | next: mdiChevronRight, 10 | dropdown: mdiMenuDown, 11 | }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure("2") do |config| 2 | config.vm.box = "ubuntu/bionic64" 3 | config.vm.network "forwarded_port", guest: 3000, host: 3000, host_ip: "127.0.0.1" 4 | config.vm.provider "virtualbox" do |vb| 5 | # Customize the amount of memory on the VM: 6 | vb.memory = "2048" 7 | end 8 | config.vm.provision "shell", path: "vagrant_provision.sh", privileged: false 9 | end 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.renderControlCharacters": true, 3 | "editor.formatOnSave": false, 4 | "editor.codeActionsOnSave": { 5 | "source.fixAll.eslint": true 6 | }, 7 | "eslint.format.enable": true, 8 | "eslint.packageManager": "yarn", 9 | "eslint.workingDirectories": ["./"], 10 | "eslint.validate": [ 11 | "javascript", 12 | "vue" 13 | ] 14 | } -------------------------------------------------------------------------------- /data/infection_medicalcareprovision_status.json: -------------------------------------------------------------------------------- 1 | { 2 | "date": "2021\/8\/13 20:40", 3 | "data": { 4 | "新規陽性者": 5773, 5 | "検査数": 16746, 6 | "検査統計日時": "2021-08-12", 7 | "うち65歳以上の高齢者数": 203, 8 | "死亡者数": 7, 9 | "都外からの持込検体による陽性数": 103, 10 | "入院数": 3727, 11 | "確保病床数": 5967, 12 | "うち重症者数": 227, 13 | "うち重症病床数": 392 14 | } 15 | } -------------------------------------------------------------------------------- /stylelint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['stylelint-config-standard', 'stylelint-config-prettier'], 3 | plugins: ['stylelint-scss'], 4 | rules: { 5 | 'at-rule-no-unknown': null, 6 | 'scss/at-rule-no-unknown': true, 7 | 'selector-pseudo-element-no-unknown': [ 8 | true, 9 | { 10 | ignorePseudoElements: ['v-deep'], 11 | }, 12 | ], 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /.vscode/cspell.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1", 3 | "language": "en", 4 | "words": [ 5 | "asynciterable", 6 | "chartjs", 7 | "covid", 8 | "datasets", 9 | "esnext", 10 | "fullhuman", 11 | "interop", 12 | "mixins", 13 | "nullish", 14 | "nuxt", 15 | "nuxtjs", 16 | "precomposed", 17 | "purgecss", 18 | "querents", 19 | "tightenco", 20 | "vuetify" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /static/flow/phone.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dangerfile.ts: -------------------------------------------------------------------------------- 1 | import { danger, warn } from 'danger' 2 | 3 | const modifiedConverterFilePaths = danger.git.modified_files.filter( 4 | (filePath) => { 5 | return /^libraries\/auto_generated\/data_converter\/.*\.ts$/.test(filePath) 6 | } 7 | ) 8 | 9 | modifiedConverterFilePaths.forEach((modifiedConverterFilePath) => { 10 | warn( 11 | `\`${modifiedConverterFilePath}\` が変更されています。追加したコメントなどが削除されないよう注意してください。` 12 | ) 13 | }) 14 | -------------------------------------------------------------------------------- /.github/workflows/pr-labeler.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request Labeler 2 | 3 | on: 4 | - pull_request 5 | jobs: 6 | triage: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Label for Transifex 10 | if: github.actor == 'transifex-integration[bot]' && !endsWith(github.event.pull_request.title, '[manual sync]') 11 | uses: actions/labeler@v2 12 | with: 13 | repo-token: "${{ secrets.GITHUB_TOKEN }}" 14 | -------------------------------------------------------------------------------- /data/staying_population.json: -------------------------------------------------------------------------------- 1 | { 2 | "date": "2021\/8\/9 12:30", 3 | "data": { 4 | "place": { 5 | "display": { 6 | "@ja": "品川", 7 | "@en": "Shinagawa" 8 | } 9 | }, 10 | "date": "2021-08-02", 11 | "data": [ 12 | { 13 | "reference_date": "2020-01-01", 14 | "increase_rate": -62 15 | } 16 | ] 17 | } 18 | } -------------------------------------------------------------------------------- /static/parent.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /auto-i18n/csv/occupation.csv: -------------------------------------------------------------------------------- 1 | アルバイト 2 | 建築業 3 | サービス 4 | サービス業 5 | その他 6 | その他ドライバー 7 | その他運転手 8 | タクシー運転 9 | タクシー運転業 10 | タクシー運転手 11 | パートタイム 12 | パート職員 13 | ホテルマン 14 | マスコミ 15 | 医師 16 | 医療従事者 17 | 飲食業 18 | 飲食業店員 19 | 音楽系 20 | 歌手 21 | 会社員 22 | 会社員(営業) 23 | 会社員(営業職) 24 | 会社職員 25 | 学生 26 | 居酒屋店員 27 | 教員 28 | 建設業 29 | 建築士 30 | 公務員 31 | 施設 32 | 施設職員 33 | 自営業 34 | 自動販売機 35 | 主婦 36 | 小学生 37 | 精肉店 38 | 接客業 39 | 電気工事 40 | 病院職員 41 | 舞台関係 42 | 保育園 43 | 保育所事務 44 | 無職 45 | 幼児 -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ## 👏 解決する issue / Resolved Issues 5 | - close #0 6 | - close #0 7 | 8 | ## 📝 関連する issue / Related Issues 9 | - #0 10 | - #0 11 | 12 | ## ⛏ 変更内容 / Details of Changes 13 | 14 | 15 | - xxxxxx 16 | - xxx 17 | 18 | ## 📸 スクリーンショット / Screenshots 19 | 20 | 21 | -------------------------------------------------------------------------------- /spec/lib/locales_setting.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'json' 4 | 5 | LOCALES = { 6 | ja: { 7 | path: '/', 8 | locale: JSON.parse(File.read(File.join(__dir__, '../../assets/locales/ja.json'))), 9 | logo: 'logo.svg' 10 | }, 11 | en: { 12 | path: '/en/', 13 | locale: JSON.parse(File.read(File.join(__dir__, '../../assets/locales/en.json'))), 14 | logo: 'logo-en.png' 15 | } 16 | }.freeze 17 | 18 | def t(key, string) 19 | LOCALES[key][:locale][string] ? LOCALES[key][:locale][string] : LOCALES[:ja][:locale][string] 20 | end 21 | -------------------------------------------------------------------------------- /ui-test/screenshot.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import os 3 | 4 | os.mkdir('screenshots') 5 | 6 | SIZES = [[320,480],[375,812],[768,1024],[1024,768],[1920,1080]] 7 | PATHS = ['/', '/about'] 8 | BROWSERS = ['Chrome', 'Firefox'] 9 | 10 | for browser in BROWSERS: 11 | driver = getattr(webdriver, browser)() 12 | for size in SIZES: 13 | driver.set_window_size(size[0], size[1]) 14 | for path in PATHS: 15 | driver.get("http://localhost:8000"+path) 16 | driver.save_screenshot('screenshots/'+browser+'_'+str(size[0])+'x'+str(size[1])+'_'+path.replace('/', '_')+'.png') 17 | -------------------------------------------------------------------------------- /assets/locales/pt_BR.json: -------------------------------------------------------------------------------- 1 | { 2 | "日別": "diário", 3 | "累計": "total", 4 | "都営地下鉄4路線の自動改札出場数": "Total de usuarios das 4 linhas de metro Toei", 5 | "実績値": "Valor real", 6 | "累計値": "Valor acumulado", 7 | "前日比": "anterior", 8 | "https://marketingplatform.google.com/about/analytics/terms/jp/": "https://marketingplatform.google.com/about/analytics/terms/pt/", 9 | "https://policies.google.com/privacy?hl=ja": "https://policies.google.com/privacy?hl=pt-BR", 10 | "https://support.google.com/analytics/answer/6004245?hl=ja": "https://support.google.com/analytics/answer/6004245?hl=pt-BR" 11 | } 12 | -------------------------------------------------------------------------------- /components/index/_shared/OpenDataLink.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | 23 | 31 | -------------------------------------------------------------------------------- /plugins/axe.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | const VueAxe = () => import('vue-axe') 3 | const AXE_LOCALE_JA = () => import('axe-core/locales/ja.json') 4 | 5 | const NODE_ENV = process.env.NODE_ENV 6 | const VUE_AXE = process.env.VUE_AXE 7 | 8 | if (NODE_ENV === 'development' && VUE_AXE === 'true') { 9 | Vue.use(VueAxe, { 10 | config: { 11 | locale: AXE_LOCALE_JA, 12 | rules: [ 13 | { 14 | // 色コントラストの検査を無効化する。 15 | // Node数の多い環境で検査コストが高いため。 16 | id: 'color-contrast', 17 | enabled: false, 18 | }, 19 | ], 20 | }, 21 | clearConsoleOnUpdate: false, 22 | }) 23 | } 24 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/IMPROVE_SUGGESTIONS.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: '改善提案 / Improvement Suggestions' 3 | about: '「こうするともっとよくなる」といったWebサイトへの提案はこちら' 4 | labels: improvement 5 | --- 6 | 7 | ## 改善詳細 / Details of Improvement 8 | - xxxx(できるだけ簡潔に/as concise as possible) 9 | 10 | ## スクリーンショット / Screenshot 11 | 12 | 13 | 14 | ## 期待する見せ方・挙動 / Expected behavior 15 | - xxxx(できるだけ簡潔に/as concise as possible) 16 | 17 | ## 動作環境・ブラウザ / Environment 18 | - macOS / Windows / Linux / iOS / Android 19 | - Chrome / Safari / Firefox / Edge / Internet Explorer 20 | -------------------------------------------------------------------------------- /ui-test/list_fbcashe.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ../.env # you have to set FB_ACCESS_TOKEN='{your access token}' in the .env file 4 | 5 | LANGS="en zh-cn zh-tw ko ja-basic" 6 | 7 | PAGES=$(cat < 12 | 13 | 14 | ## 期待する見せ方・挙動 / Expected Behavior 15 | - xxxx(できるだけ簡潔に/as concise as possible) 16 | 17 | 18 | ## 起こっている問題の再現手段 / Steps to Reproduce 19 | 1. xxx 20 | 2. xxx 21 | 3. xxx 22 | 23 | ## 動作環境・ブラウザ / Environment 24 | - macOS / Windows / Linux / iOS / Android 25 | - Chrome / Safari / Firefox / Edge / Internet Explorer 26 | -------------------------------------------------------------------------------- /static/support.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/news.json: -------------------------------------------------------------------------------- 1 | { 2 | "newsItems": [ 3 | { 4 | "date": "2021\/08\/13", 5 | "url": "https:\/\/www.fukushihoken.metro.tokyo.lg.jp\/english\/health-crisis\/monitoring.html", 6 | "text": "“About COVID-19 Monitoring” has been posted.\/英語でモニタリングに関する情報を掲載しました。" 7 | }, 8 | { 9 | "date": "2021\/08\/13", 10 | "url": "https:\/\/www.fukushihoken.metro.tokyo.lg.jp\/iryo\/kansen\/kunishihyou.html", 11 | "text": "国のステージ判断のための指標" 12 | }, 13 | { 14 | "date": "2021\/08\/13", 15 | "url": "https:\/\/www.fukushihoken.metro.tokyo.lg.jp\/iryo\/kansen\/ryoyosha.html", 16 | "text": "療養者の状況について" 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /docs/zh_TW/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | 3 | # 我們的使命 4 | 5 | * 我們為了保護東京都都民的生命以及健康。 6 | * 我們為了向海內外人士提供正確的數據。 7 | * 我們將會展示我們的品德以及視覺化我們的工作成果。 8 | 9 | 10 | # 建立網站的行動原則(CoC) 11 | 12 | ## 從用戶角度出發(User perspective) 13 | 14 | * 資訊只有在對人們傳達後才有意義。我們十分重視 UX(使用者體驗)。 15 | * 我們使用基於統計出來的證據來做出決策、例如存取分析、關鍵字數據以及社群媒體數據。 16 | 17 | ## 沒有人會被留下(No one left behind) 18 | 19 | * 目標是成為一個無論國籍、年齡或是有障礙的人士,任何人都可以愉快地使用的網站。 20 | * 符合通用設計準則。 21 | 22 | ## 國際化(International) 23 | 24 | * 使用外國人直覺的表達方式。 25 | * 提供多種語言。 26 | 27 | ## 保持開放(Be open) 28 | 29 | * 開放原始碼:我們盡可能地開放網站相關的原始碼以及技術,並提供給其他的地方政府使用。 30 | * 公開資料:以容易理解、任何人都可以輕易上手的資料格式公開資料。 31 | 32 | ## 與人們共築(Build with people) 33 | 34 | * 與形形色色的人們一起創造,而非僅僅是東京都政府的人們。 35 | * 歡迎民間工程師們提交貢獻。 36 | * 與需要資訊的人們共同發展網站。 37 | -------------------------------------------------------------------------------- /libraries/repositories/NewsRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/news.json' 3 | import { 4 | Convert, 5 | News, 6 | } from '@/libraries/auto_generated/data_converter/convertNews' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface INewsRepository extends IBaseRepository {} 13 | export class NewsRepository 14 | extends BaseRepository 15 | implements INewsRepository 16 | { 17 | /** 18 | * 使用箇所 19 | * 20 | * トップページ上部 (components/index/SiteTopUpper.vue) 21 | */ 22 | constructor() { 23 | super(Convert.toNews(JSON.stringify(rawData))) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | 3 | # 我々はなぜここにいるのか 4 | 5 | * 都民の生命と健康を守るため 6 | * 正しいデータをオープンに国内/海外の人に伝える 7 | * 正しいものを正しく、ともに作るプロセスの効果を具体的に示す 8 | 9 | # サイト構築にあたっての行動原則 10 | 11 | ## User perspective 12 | 13 | * 情報は人に届けてこそ意味がある。UX(ユーザエクスペリエンス)を大切にする。 14 | * アクセス解析や検索語の分析、SNS分析などの数値分析を行い、数字で対応を判断する 15 | 16 | ## No one left behind 17 | 18 | * 国籍や年齢、障害の有無にかかわらず、誰もが快適に利用できるサイトを目指す 19 | * ユニバーサルデザインに関するガイドラインに準拠する 20 | 21 | ## International 22 | 23 | * 海外の人にも直感的にわかるような表現をする。 24 | * 多言語で展開する 25 | 26 | ## Be open 27 | 28 | * オープンソース:ソースコードやサイト構築に関するノウハウは可能な限り公開し、他の自治体でも利用できるようにする 29 | * オープンデータ:わかりやすいデータ形式で、誰でも使えるような形でデータを公開する。 30 | 31 | ## Build with people 32 | 33 | * 都庁の人だけではなく、様々な人々とともに作る 34 | * 市民エンジニアの貢献を歓迎する 35 | * 情報を求める人達とともに、サイトを育てていく 36 | -------------------------------------------------------------------------------- /libraries/repositories/MetroRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/metro.json' 3 | import { 4 | Convert, 5 | Metro, 6 | } from '@/libraries/auto_generated/data_converter/convertMetro' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IMetroRepository extends IBaseRepository {} 13 | 14 | export class MetroRepository 15 | extends BaseRepository 16 | implements IMetroRepository 17 | { 18 | /** 19 | * 使用箇所 20 | * 21 | * 都営地下鉄の利用者数の推移 (components/index/CardsReference/Metro/Card.vue) 22 | */ 23 | constructor() { 24 | super(Convert.toMetro(JSON.stringify(rawData))) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /libraries/repositories/AgencyRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/agency.json' 3 | import { 4 | Agency, 5 | Convert, 6 | } from '@/libraries/auto_generated/data_converter/convertAgency' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IAgencyRepository extends IBaseRepository {} 13 | 14 | export class AgencyRepository 15 | extends BaseRepository 16 | implements IAgencyRepository 17 | { 18 | /** 19 | * 使用箇所 20 | * 21 | * 都庁来庁者数の推移 (components/index/CardsReference/Agency/Card.vue) 22 | */ 23 | constructor() { 24 | super(Convert.toAgency(JSON.stringify(rawData))) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /docs/zh_CN/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | 3 | # 我们的使命 4 | 5 | * 我们为了保护东京都都民的生命以及健康。 6 | * 我们为了向海内外人士提供正确的数据。 7 | * 我们会展现我们的诚信,并且将我们的工作成果视觉化。 8 | 9 | 10 | # 建立网站的行动原则 (CoC) 11 | 12 | ## User perspective 从用户角度出发 13 | 14 | * 资讯的意义在于能够传达给人们,对此我们会十分重视 UX(使用者体验)。 15 | * 我们会基于统计数据来做出决策,例如访问分析、关键字数据分析以及社交媒体数据分析。 16 | 17 | ## No one left behind 没有人被丢下 18 | 19 | * 我们的目标是成为跨越年龄与国界,包括残障人士也能够无障碍地使用的网站。 20 | * 符合通用设计准则。 21 | 22 | ## International 国际化 23 | 24 | * 使用让所有人能够一目了然的数据视觉化设计。 25 | * 提供多语种的服务。 26 | 27 | ## Be open 坚持开源 28 | 29 | * 开源代码:我们会尽可能地开放网站的相关源代码以及技术应用知识,并将其提供给其他地方政府使用。 30 | * 数据开放:我们会以更加平易近人的方式,让任何人都可以轻松地使用到我们的开放数据。 31 | 32 | ## Build with people 与民共筑 33 | 34 | * 我们渴望能够网罗各方英才于一堂,而非仅靠东京都政府的孤军奋战。 35 | * 我们欢迎各位民众工程师们都能够贡献出你们的一份力,众人拾柴火焰高。 36 | * 我们希望与前来寻求资讯的人们携手,共同发展我们的网站。 37 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2018", 4 | "module": "esnext", 5 | "moduleResolution": "node", 6 | "lib": [ 7 | "esnext", 8 | "esnext.asynciterable", 9 | "dom" 10 | ], 11 | "esModuleInterop": true, 12 | "resolveJsonModule": true, 13 | "allowJs": true, 14 | "sourceMap": true, 15 | "strict": true, 16 | "noEmit": true, 17 | "noImplicitThis": true, 18 | "experimentalDecorators": true, 19 | "baseUrl": ".", 20 | "paths": { 21 | "~/*": [ 22 | "./*" 23 | ], 24 | "@/*": [ 25 | "./*" 26 | ] 27 | }, 28 | "types": [ 29 | "@types/node", 30 | "@nuxt/types", 31 | "nuxt-i18n" 32 | ] 33 | }, 34 | "exclude": [ 35 | "node_modules" 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /libraries/repositories/VariantsRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/variants.json' 3 | import { 4 | Convert, 5 | Variants, 6 | } from '@/libraries/auto_generated/data_converter/convertVariants' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IVariantsRepository extends IBaseRepository {} 13 | export class VariantsRepository 14 | extends BaseRepository 15 | implements IVariantsRepository 16 | { 17 | /** 18 | * 使用箇所 19 | * 20 | * L452R変異株スクリーニングの実施状況 (components/index/CardsReference/Variant/Card.vue) 21 | */ 22 | constructor() { 23 | super(Convert.toVariants(JSON.stringify(rawData))) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: ['eslint-plugin-tsdoc', 'simple-import-sort'], 3 | extends: [ 4 | '@nuxtjs/eslint-config-typescript', 5 | 'prettier', 6 | 'plugin:prettier/recommended', 7 | ], 8 | rules: { 9 | 'vue/max-attributes-per-line': 'off', 10 | 'vue/html-self-closing': [ 11 | 'error', 12 | { 13 | html: { 14 | void: 'always', 15 | }, 16 | }, 17 | ], 18 | 'prettier/prettier': [ 19 | 'error', 20 | { 21 | semi: false, 22 | singleQuote: true, 23 | }, 24 | ], 25 | 'tsdoc/syntax': 'error', 26 | 'simple-import-sort/imports': 'error', 27 | 'no-restricted-imports': [ 28 | 'error', 29 | { 30 | patterns: ['./', '../'], 31 | }, 32 | ], 33 | }, 34 | } 35 | -------------------------------------------------------------------------------- /libraries/repositories/PatientRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/patient.json' 3 | import { 4 | Convert, 5 | Patient, 6 | } from '@/libraries/auto_generated/data_converter/convertPatient' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IPatientRepository extends IBaseRepository {} 13 | 14 | export class PatientRepository 15 | extends BaseRepository 16 | implements IPatientRepository 17 | { 18 | /** 19 | * 使用箇所 20 | * 21 | * 陽性者数(区市町村別) (components/index/CardsReference/ConfirmedCasesByMunicipalities/Card.vue) 22 | */ 23 | constructor() { 24 | super(Convert.toPatient(JSON.stringify(rawData))) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /spec/feature/index_h1_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'page [/]', type: :feature do 6 | LOCALES.each do |lang, data| 7 | context "#{lang}" do 8 | describe 'h1' do 9 | before do 10 | visit data[:path] 11 | end 12 | 13 | it 'has HeaderLogo image with lang' do 14 | expect(find('h1.SideNavigation-HeaderTitle > a.SideNavigation-HeaderLink > img.SideNavigation-HeaderLogo')[:src]).to match /\/#{data[:logo]}$/ 15 | end 16 | 17 | it 'has HeaderText' do 18 | expect(find('h1.SideNavigation-HeaderTitle > a.SideNavigation-HeaderLink > div.SideNavigation-HeaderText').text).to eq "#{t(lang, 'menu/新型コロナウイルス感染症')}\n#{t(lang, 'menu/対策サイト')}" 19 | end 20 | end 21 | end 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /assets/global.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | box-sizing: border-box; 3 | font-size: 62.5%; 4 | } 5 | 6 | body { 7 | background-color: $gray-5; 8 | } 9 | 10 | img { 11 | max-width: 100%; 12 | height: auto; 13 | vertical-align: bottom; 14 | } 15 | 16 | .clearfix { 17 | &::after { 18 | content: ""; 19 | display: block; 20 | clear: both; 21 | } 22 | } 23 | 24 | *:focus { 25 | outline: dotted $gray-3 1px; 26 | } 27 | 28 | .visually-hidden { 29 | position: fixed !important; 30 | top: 0 !important; 31 | left: 0 !important; 32 | width: 4px !important; 33 | height: 4px !important; 34 | opacity: 0 !important; 35 | overflow: hidden !important; 36 | border: none !important; 37 | margin: 0 !important; 38 | padding: 0 !important; 39 | display: block !important; 40 | visibility: visible !important; 41 | } 42 | -------------------------------------------------------------------------------- /components/index/CardsReference/PositiveNumberByDevelopedDate/DataViewCustomInfoPanel.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 29 | -------------------------------------------------------------------------------- /libraries/repositories/TokyoRuleRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/tokyo_rule.json' 3 | import { 4 | Convert, 5 | TokyoRule, 6 | } from '@/libraries/auto_generated/data_converter/convertTokyoRule' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface ITokyoRuleRepository extends IBaseRepository {} 13 | 14 | export class TokyoRuleRepository 15 | extends BaseRepository 16 | implements ITokyoRuleRepository 17 | { 18 | /** 19 | * 使用箇所 20 | * 21 | * モニタリング項目(5) 救急医療の東京ルールの適用件数 (components/index/CardsMonitoring/TokyoRulesApplicationNumber/Card.vue) 22 | */ 23 | constructor() { 24 | super(Convert.toTokyoRule(JSON.stringify(rawData))) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /spec/feature/index_SiteTopUpper_h3_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'page [/]', type: :feature do 6 | LOCALES.each do |lang, data| 7 | context "#{lang}" do 8 | describe 'h3' do 9 | before do 10 | visit data[:path] 11 | render_lazy_contents 12 | end 13 | 14 | context 'SiteTopUpper' do 15 | it 'has h3' do 16 | expect(find('.WhatsNew h3.WhatsNew-title').text).to eq t(lang, '最新のお知らせ') 17 | expect(find('.InfectionMedicalCareProvisionStatus h3.InfectionMedicalCareProvisionStatus-title').text).to match /^#{t(lang, '感染状況・医療提供体制(サマリ)')}/ 18 | expect(find('.MonitoringComment h3.MonitoringComment-title').text).to eq t(lang, '感染状況・医療提供体制の分析') 19 | end 20 | end 21 | end 22 | end 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /libraries/repositories/PositiveRateRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/positive_rate.json' 3 | import { 4 | Convert, 5 | PositiveRate, 6 | } from '@/libraries/auto_generated/data_converter/convertPositiveRate' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IPositiveRateRepository 13 | extends IBaseRepository {} 14 | 15 | export class PositiveRateRepository 16 | extends BaseRepository 17 | implements IPositiveRateRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * モニタリング項目(4) 検査の陽性率/検査人数 (components/index/CardsMonitoring/PositiveRate/Card.vue) 23 | */ 24 | constructor() { 25 | super(Convert.toPositiveRate(JSON.stringify(rawData))) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /libraries/repositories/VaccinationAllRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/vaccination_all.json' 3 | import { 4 | Convert, 5 | VaccinationAll, 6 | } from '@/libraries/auto_generated/data_converter/convertVaccinationAll' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IVaccinationAllRepository 13 | extends IBaseRepository {} 14 | export class VaccinationAllRepository 15 | extends BaseRepository 16 | implements IVaccinationAllRepository 17 | { 18 | /** 19 | * 使用箇所 20 | * 21 | * ワクチン接種数(累計) (components/index/CardsReference/Vaccination/Card.vue) 22 | */ 23 | constructor() { 24 | super(Convert.toVaccinationAll(JSON.stringify(rawData))) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /static/vaccine.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /libraries/repositories/StayingPopulationRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/staying_population.json' 3 | import { 4 | Convert, 5 | StayingPopulation, 6 | } from '@/libraries/auto_generated/data_converter/convertStayingPopulation' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IStayingPopulationRepository 13 | extends IBaseRepository {} 14 | 15 | export class StayingPopulationRepository 16 | extends BaseRepository 17 | implements IStayingPopulationRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * 緊急事態宣言中の都内の滞在人口の増減状況 (components/StayingPopulation.vue) 23 | */ 24 | constructor() { 25 | super(Convert.toStayingPopulation(JSON.stringify(rawData))) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /docs/ko/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | 3 | # 왜 우리는 여기에 있는가 (우리의 미션) 4 | 5 | * 도쿄도민의 생명과 건강을 지키기 위해 6 | * 정확한 데이터를 오픈하여 국내/해외의 모든 사람들에게 알리기 위해 7 | * 올바른 상태를 보여주고, 함께 만드는 프로세스의 효과를 구체적으로 나타내기 위해 8 | 9 | # 사이트 구축 행동강령 10 | 11 | ## User perspective 12 | 13 | * 정보는 전달되어야만 의미가 있다. UX (사용자경험)을 중요시 할것. 14 | * 사이트 유입 분석, 검색어 분석, SNS 분석등의 수치를 분석하여 수치를 기반으로 대응 여부를 판단할 것. 15 | 16 | ## No one left behind 17 | 18 | * 국적, 연령, 장애등의 유무에 상관없이, 누구나 쾌적하게 이용할 수 있는 사이트를 목표로 한다. 19 | * 유니버설 디자인 관련 가이드라인을 준수한다. 20 | 21 | ## International 22 | 23 | * 해외 사용자에게 직감적으로 알 수 있는 표현을 사용한다. 24 | * 여러 나라의 언어를 지원한다. 25 | 26 | ## Be open 27 | 28 | * 오픈소스: 소스 코드나 사이트 구축에 관한 노하우는 가능한 공개하고, 다른 지방자치단체에서도 이용가능하도록 한다. 29 | * 오픈데이터: 알기 쉬운 데이터 형식으로 누구나 사용 가능한 형태의 데이터를 공개한다. 30 | 31 | ## Build with people 32 | 33 | * 도쿄도청 관계자뿐만 아니라, 다양한 사람들과 함께 만들겠습니다. 34 | * 시민 엔지니어의 기여를 환영합니다. 35 | * 정보를 원하는 분들과 함께, 사이트를 발전시켜 나가겠습니다. 36 | -------------------------------------------------------------------------------- /utils/formatTestedCases.ts: -------------------------------------------------------------------------------- 1 | type DataType = { 2 | attr: '累計人数' 3 | value: number 4 | children: [ 5 | { 6 | attr: '合計件数' 7 | value: number 8 | children: [ 9 | { 10 | attr: '健康安全研究センター実施分' 11 | value: number 12 | }, 13 | { 14 | attr: '医療機関等実施分' 15 | value: number 16 | } 17 | ] 18 | } 19 | ] 20 | } 21 | 22 | type TestedCasesType = { 23 | 累計人数: number 24 | 合計件数: number 25 | 健康安全研究センター実施分: number 26 | 医療機関等実施分: number 27 | } 28 | 29 | /** 30 | * Format for *Chart component 31 | * 32 | * @param data - Raw data 33 | */ 34 | export default (data: DataType) => { 35 | return { 36 | 累計人数: data.value, 37 | 合計件数: data.children[0].value, 38 | 健康安全研究センター実施分: data.children[0].children[0].value, 39 | 医療機関等実施分: data.children[0].children[1].value, 40 | } as TestedCasesType 41 | } 42 | -------------------------------------------------------------------------------- /static/masktrash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /utils/formatGraph.ts: -------------------------------------------------------------------------------- 1 | import { convertDateToISO8601Format } from '@/utils/formatDate' 2 | 3 | type DataType = { 4 | 日付: string 5 | 小計: number 6 | } 7 | 8 | export type GraphDataType = { 9 | label: string 10 | transition: number 11 | cumulative: number 12 | } 13 | 14 | /** 15 | * Format for *Chart component 16 | * 17 | * @param data - Raw data 18 | */ 19 | export default (data: DataType[]) => { 20 | const graphData: GraphDataType[] = [] 21 | const today = new Date() 22 | let patSum = 0 23 | data 24 | .filter((d) => new Date(d['日付']) < today) 25 | .forEach((d) => { 26 | const subTotal = d['小計'] 27 | if (!isNaN(subTotal)) { 28 | patSum += subTotal 29 | graphData.push({ 30 | label: convertDateToISO8601Format(d['日付']), 31 | transition: subTotal, 32 | cumulative: patSum, 33 | }) 34 | } 35 | }) 36 | return graphData 37 | } 38 | -------------------------------------------------------------------------------- /.github/workflows/danger.yml: -------------------------------------------------------------------------------- 1 | name: danger 2 | on: 3 | - pull_request 4 | jobs: 5 | danger: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v2 9 | - name: Setup Node 10 | uses: actions/setup-node@v1 11 | with: 12 | node-version: '14.16.0' 13 | - name: Get yarn cache directory path 14 | id: yarn-cache-dir-path 15 | run: echo "::set-output name=dir::$(yarn cache dir)" 16 | - name: Cache dependencies 17 | uses: actions/cache@v2 18 | with: 19 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 20 | key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} 21 | restore-keys: | 22 | ${{ runner.os }}-yarn- 23 | - run: yarn install --frozen-lockfile 24 | - name: Run Danger 25 | run: yarn danger:ci 26 | env: 27 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 28 | -------------------------------------------------------------------------------- /libraries/repositories/PositiveByDevelopedRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/positive_by_developed.json' 3 | import { 4 | Convert, 5 | PositiveByDeveloped, 6 | } from '@/libraries/auto_generated/data_converter/convertPositiveByDeveloped' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IPositiveByDevelopedRepository 13 | extends IBaseRepository {} 14 | 15 | export class PositiveByDevelopedRepository 16 | extends BaseRepository 17 | implements IPositiveByDevelopedRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * 発症日別による陽性者数の推移 (components/index/CardsReference/PositiveNumberByDevelopedDate/Card.vue) 23 | */ 24 | constructor() { 25 | super(Convert.toPositiveByDeveloped(JSON.stringify(rawData))) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /libraries/repositories/PositiveByDiagnosedRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/positive_by_diagnosed.json' 3 | import { 4 | Convert, 5 | PositiveByDiagnosed, 6 | } from '@/libraries/auto_generated/data_converter/convertPositiveByDiagnosed' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IPositiveByDiagnosedRepository 13 | extends IBaseRepository {} 14 | 15 | export class PositiveByDiagnosedRepository 16 | extends BaseRepository 17 | implements IPositiveByDiagnosedRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * 確定日別による陽性者数の推移 (components/index/CardsReference/PositiveNumberByDiagnosedDate/Card.vue) 23 | */ 24 | constructor() { 25 | super(Convert.toPositiveByDiagnosed(JSON.stringify(rawData))) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /components/index/SiteTopUpper/Consultation.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 32 | 33 | 39 | -------------------------------------------------------------------------------- /libraries/repositories/MonitoringItemsRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/monitoring_items.json' 3 | import { 4 | Convert, 5 | MonitoringItems, 6 | } from '@/libraries/auto_generated/data_converter/convertMonitoringItems' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IMonitoringItemsRepository 13 | extends IBaseRepository {} 14 | 15 | export class MonitoringItemsRepository 16 | extends BaseRepository 17 | implements IMonitoringItemsRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * 感染状況・医療提供体制の分析 (components/MonitoringCommentCard.vue) 23 | * 24 | * モニタリング項目 (components/index/CardsMonitoring/MonitoringItemsOverview/Card.vue) 25 | */ 26 | constructor() { 27 | super(Convert.toMonitoringItems(JSON.stringify(rawData))) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /libraries/repositories/PositiveStatusRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/positive_status.json' 3 | import { 4 | Convert, 5 | PositiveStatus, 6 | } from '@/libraries/auto_generated/data_converter/convertPositiveStatus' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IPositiveStatusRepository 13 | extends IBaseRepository {} 14 | 15 | export class PositiveStatusRepository 16 | extends BaseRepository 17 | implements IPositiveStatusRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * モニタリング項目(6) 入院患者数 (components/index/CardsMonitoring/HospitalizedNumber/Card.vue) 23 | * 24 | * モニタリング項目(7) 重症患者数 (components/index/CardsMonitoring/SevereCase/Card.vue) 25 | */ 26 | constructor() { 27 | super(Convert.toPositiveStatus(JSON.stringify(rawData))) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /libraries/repositories/ConsultationAboutFeverRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/consultation_about_fever.json' 3 | import { 4 | ConsultationAboutFever, 5 | Convert, 6 | } from '@/libraries/auto_generated/data_converter/convertConsultationAboutFever' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IConsultationAboutFeverRepository 13 | extends IBaseRepository {} 14 | 15 | export class ConsultationAboutFeverRepository 16 | extends BaseRepository 17 | implements IConsultationAboutFeverRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * モニタリング項目(2) #7119における発熱等相談件数 (components/index/CardsMonitoring/ConsultationAboutFeverNumber/Card.vue) 23 | */ 24 | constructor() { 25 | super(Convert.toConsultationAboutFever(JSON.stringify(rawData))) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /libraries/repositories/FeverConsultationCenterRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/fever_consultation_center.json' 3 | import { 4 | Convert, 5 | FeverConsultationCenter, 6 | } from '@/libraries/auto_generated/data_converter/convertFeverConsultationCenter' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IFeverConsultationCenterRepository 13 | extends IBaseRepository {} 14 | 15 | export class FeverConsultationCenterRepository 16 | extends BaseRepository 17 | implements IFeverConsultationCenterRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * 東京都発熱相談センターにおける相談件数 (components/index/CardsReference/TokyoFeverConsultationCenterReportsNumber/Card.vue) 23 | */ 24 | constructor() { 25 | super(Convert.toFeverConsultationCenter(JSON.stringify(rawData))) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /libraries/repositories/MonitoringCommentImageRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/monitoring_comment_image.json' 3 | import { 4 | Convert, 5 | MonitoringCommentImage, 6 | } from '@/libraries/auto_generated/data_converter/convertMonitoringCommentImage' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IMonitoringCommentImageRepository 13 | extends IBaseRepository {} 14 | 15 | export class MonitoringCommentImageRepository 16 | extends BaseRepository 17 | implements IMonitoringCommentImageRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * 感染状況・医療提供体制の分析 (components/index/SiteTopUpper/MonitoringComment/Card.vue -\> components/index/SiteTopUpper/MonitoringComment/ImageSwipe.vue) 23 | */ 24 | constructor() { 25 | super(Convert.toMonitoringCommentImage(JSON.stringify(rawData))) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | # ref: https://qiita.com/ryounagaoka/items/3e7a1b44d43ad0547d4f 5 | 6 | unchangeable_files=( 7 | ^assets/locales/en.json 8 | ^assets/locales/ja-Hira.json 9 | ^assets/locales/ko.json 10 | ^assets/locales/pt_BR.json 11 | ^assets/locales/th.json 12 | ^assets/locales/vi.json 13 | ^assets/locales/zh_CN.json 14 | ^assets/locales/zh_TW.json 15 | ) 16 | 17 | containsElement () { 18 | local e 19 | for e in "${@:2}"; do [[ "$1" =~ $e ]] && return 0; done 20 | return 1 21 | } 22 | 23 | for FILE in `git diff --cached --name-status $against -- | cut -c3-`; do 24 | if containsElement $FILE "${unchangeable_files[@]}"; then 25 | echo "$FILE" 26 | CHANGE_DETECTED=1 27 | fi 28 | done 29 | 30 | if [ "$CHANGE_DETECTED" ]; then 31 | echo "Failed to commit because of the modification of the files above. {lang}.json files are only allowed to edit from Transifex. See issue #1985 for the details. " 32 | exit 1 33 | fi 34 | 35 | yarn lint-staged 36 | -------------------------------------------------------------------------------- /libraries/repositories/DailyPositiveDetailRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/daily_positive_detail.json' 3 | import { 4 | Convert, 5 | DailyPositiveDetail, 6 | } from '@/libraries/auto_generated/data_converter/convertDailyPositiveDetail' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IDailyPositiveDetailRepository 13 | extends IBaseRepository {} 14 | 15 | export class DailyPositiveDetailRepository 16 | extends BaseRepository 17 | implements IDailyPositiveDetailRepository 18 | { 19 | /** 20 | * 使用箇所 21 | * 22 | * モニタリング項目(1) 新規陽性者数 (components/index/CardsMonitoring/MonitoringConfirmedCasesNumber/Card.vue) 23 | * 24 | * モニタリング項目(3) 新規陽性者における接触歴等不明者数/増加比 (components/index/CardsMonitoring/UntrackedRate/Card.vue) 25 | */ 26 | constructor() { 27 | super(Convert.toDailyPositiveDetail(JSON.stringify(rawData))) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /static/antenna.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /spec/feature/index_h2_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'page [/]', type: :feature do 6 | LOCALES.each do |lang, data| 7 | context "#{lang}" do 8 | describe 'h2' do 9 | before do 10 | visit data[:path] 11 | end 12 | 13 | it 'has mdiChartTimelineVariant v-icon' do 14 | expect(find('h2.pageTitle > span.v-icon > svg > path')[:d]).to eq 'M3,14L3.5,14.07L8.07,9.5C7.89,8.85 8.06,8.11 8.59,7.59C9.37,6.8 10.63,6.8 11.41,7.59C11.94,8.11 12.11,8.85 11.93,9.5L14.5,12.07L15,12C15.18,12 15.35,12 15.5,12.07L19.07,8.5C19,8.35 19,8.18 19,8A2,2 0 0,1 21,6A2,2 0 0,1 23,8A2,2 0 0,1 21,10C20.82,10 20.65,10 20.5,9.93L16.93,13.5C17,13.65 17,13.82 17,14A2,2 0 0,1 15,16A2,2 0 0,1 13,14L13.07,13.5L10.5,10.93C10.18,11 9.82,11 9.5,10.93L4.93,15.5L5,16A2,2 0 0,1 3,18A2,2 0 0,1 1,16A2,2 0 0,1 3,14Z' 15 | end 16 | 17 | it 'has pageTitle' do 18 | expect(find('h2.pageTitle').text).to eq t(lang, '都内の最新感染動向') 19 | end 20 | end 21 | end 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build check 2 | 3 | on: 4 | push: 5 | branches: 6 | - staging 7 | jobs: 8 | build: 9 | runs-on: ubuntu-18.04 10 | steps: 11 | - uses: actions/checkout@v2 12 | 13 | - name: Setup Node 14 | uses: actions/setup-node@v1 15 | with: 16 | node-version: '14.16.0' 17 | 18 | - name: Get yarn cache directory path 19 | id: yarn-cache-dir-path 20 | run: echo "::set-output name=dir::$(yarn cache dir)" 21 | 22 | - name: Cache dependencies 23 | uses: actions/cache@v2 24 | with: 25 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 26 | key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} 27 | restore-keys: | 28 | ${{ runner.os }}-yarn- 29 | 30 | - run: yarn install --frozen-lockfile 31 | - run: yarn run test 32 | - run: yarn run generate:deploy 33 | 34 | - name: archive dist 35 | uses: actions/upload-artifact@v1 36 | with: 37 | name: dist 38 | path: dist 39 | -------------------------------------------------------------------------------- /static/covid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Tokyo Metropolitan Government and other contributors. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/staging.yml: -------------------------------------------------------------------------------- 1 | name: staging deploy 2 | 3 | on: 4 | push: 5 | branches: 6 | - staging 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-18.04 11 | steps: 12 | - uses: actions/checkout@v2 13 | 14 | - name: Setup Node 15 | uses: actions/setup-node@v1 16 | with: 17 | node-version: '14.16.0' 18 | 19 | - name: Get yarn cache directory path 20 | id: yarn-cache-dir-path 21 | run: echo "::set-output name=dir::$(yarn cache dir)" 22 | 23 | - name: Cache dependencies 24 | uses: actions/cache@v2 25 | with: 26 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 27 | key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} 28 | restore-keys: | 29 | ${{ runner.os }}-yarn- 30 | 31 | - run: yarn install --frozen-lockfile 32 | - run: yarn run test 33 | - run: yarn run generate:dev 34 | - run: "echo \"User-agent: *\nDisallow: /\" > ./dist/robots.txt" 35 | 36 | - name: deploy 37 | uses: peaceiris/actions-gh-pages@v3 38 | with: 39 | github_token: ${{ secrets.GITHUB_TOKEN }} 40 | publish_dir: ./dist 41 | -------------------------------------------------------------------------------- /.github/workflows/check-statuses-of-forked-sites.yml: -------------------------------------------------------------------------------- 1 | name: Check Statuses of Forked Sites 2 | 3 | on: 4 | schedule: 5 | - cron: '0 0 1 * *' 6 | 7 | workflow_dispatch: 8 | 9 | jobs: 10 | audit: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Switch to the development branch 15 | uses: actions/checkout@v2 16 | with: 17 | ref: development 18 | 19 | - name: Set up Python 3.8 20 | uses: actions/setup-python@v2 21 | with: 22 | python-version: 3.8 23 | 24 | - name: Install dependencies 25 | run: | 26 | python -m pip install --upgrade pip 27 | pip install Markdown 28 | pip install pandas 29 | pip install lxml 30 | 31 | - name: Run scripts 32 | run: | 33 | python ./audit-forked-sites/check_status.py 34 | 35 | - name: Create a pull request 36 | uses: peter-evans/create-pull-request@v3 37 | with: 38 | token: ${{ secrets.GITHUB_TOKEN }} 39 | commit-message: Update FORKED_SITES.md 40 | title: Update FORKED_SITES.md 41 | labels: auto_merge 42 | branch-suffix: 'short-commit-hash' 43 | -------------------------------------------------------------------------------- /.github/workflows/i18n_generator.yml: -------------------------------------------------------------------------------- 1 | name: Auto-i18n Generator 2 | 3 | on: 4 | push: 5 | branches: 6 | - development 7 | 8 | jobs: 9 | i18n-builder: 10 | if: false == contains(github.event.commits[0].message, 'Update assets/locales/ja.json') 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout development branch 14 | uses: actions/checkout@v2 15 | with: 16 | ref: development 17 | - name: Set up Python 3.8 18 | uses: actions/setup-python@v1 19 | with: 20 | python-version: 3.8 21 | - name: Install dependencies 22 | run: | 23 | python -m pip install --upgrade pip 24 | pip install BeautifulSoup4 25 | - name: Run script 26 | run: | 27 | cd auto-i18n 28 | python i18n_generator.py 29 | cd .. 30 | - name: Create Pull Request 31 | uses: peter-evans/create-pull-request@v3 32 | with: 33 | token: ${{ secrets.GITHUB_TOKEN }} 34 | commit-message: Update assets/locales/ja.json 35 | title: Update translation files 36 | labels: auto_merge 37 | branch-suffix: 'short-commit-hash' 38 | -------------------------------------------------------------------------------- /components/index/CardsReference/TelephoneAdvisoryReportsNumber/Card.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 40 | -------------------------------------------------------------------------------- /ui-test/delete_fbcache.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ../.env # you have to set FB_ACCESS_TOKEN='{your access token}' in the .env file 4 | 5 | LANGS="en zh-cn zh-tw ko ja-basic" 6 | 7 | PAGES=$(cat < DateAdapterFormats 20 | parse: (time: ConfigType, format: string | undefined) => number | null 21 | format: (time: ConfigType, format: string) => string 22 | add: (time: ConfigType, amount: number, unit: OpUnitType) => Dayjs 23 | diff: ( 24 | max: ConfigType, 25 | min: ConfigType, 26 | unit: QUnitType | OpUnitType 27 | ) => number 28 | startOf: ( 29 | time: ConfigType, 30 | unit: OpUnitType, 31 | weekday: null | undefined 32 | ) => Dayjs 33 | endOf: (time: ConfigType, unit: OpUnitType) => Dayjs 34 | } 35 | 36 | interface DayjsDateAdapter { 37 | override: (options: Options) => void 38 | } 39 | 40 | export class _adapters { 41 | static _date: DayjsDateAdapter 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /vagrant_provision.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo apt-get update -y 3 | 4 | # g++ build-essentialのインストール 5 | sudo apt-get install -y g++ build-essential 6 | 7 | # nodejsのインストール 8 | # https://github.com/nodesource/distributions/blob/master/README.md 9 | curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash - 10 | sudo apt-get install -y nodejs 11 | 12 | # yarnのインストール 13 | sudo npm install -g yarn 14 | 15 | # ソースのコピー 16 | cp -pr /vagrant/ ./covid19 17 | # /vagrantがホストと共有できない場合は、githubからクローンする 18 | #git clone https://github.com/tokyo-metropolitan-gov/covid19.git 19 | cd covid19 20 | 21 | # インストール 22 | sudo chown vagrant:vagrant ../.config 23 | yarn install 24 | 25 | # 起動スクリプト 26 | cat << EOF > /home/vagrant/covid19.sh 27 | #!/bin/bash 28 | cd /home/vagrant/covid19 29 | HOST=0.0.0.0 /usr/bin/yarn dev 30 | EOF 31 | 32 | # systemd定義 33 | sudo tee /etc/systemd/system/covid19.service << EOF 34 | [Unit] 35 | Description = covid19 daemon 36 | 37 | [Service] 38 | ExecStart = /bin/bash /home/vagrant/covid19.sh 39 | Restart = always 40 | Type = simple 41 | User = vagrant 42 | Group = vagrant 43 | 44 | [Install] 45 | WantedBy = multi-user.target 46 | EOF 47 | 48 | # サービス設定 49 | sudo systemctl enable covid19 50 | sudo systemctl start covid19 51 | -------------------------------------------------------------------------------- /libraries/repositories/InfectionMedicalCareProvisionStatusRepository.ts: -------------------------------------------------------------------------------- 1 | // このファイル名は 2 | // InfectionMedicalcareprovisionStatusRepository.ts ではなく 3 | // InfectionMedicalCareProvisionStatusRepository.ts とする 4 | 5 | // eslint-disable-next-line import/no-named-default 6 | import { default as rawData } from '@/data/infection_medicalcareprovision_status.json' 7 | import { 8 | Convert, 9 | InfectionMedicalcareprovisionStatus, 10 | } from '@/libraries/auto_generated/data_converter/convertInfectionMedicalcareprovisionStatus' 11 | import { 12 | BaseRepository, 13 | IBaseRepository, 14 | } from '@/libraries/repositories/BaseRepository' 15 | 16 | export interface IInfectionMedicalcareprovisionStatusRepository 17 | extends IBaseRepository {} 18 | 19 | export class InfectionMedicalcareprovisionStatusRepository 20 | extends BaseRepository 21 | implements IInfectionMedicalcareprovisionStatusRepository 22 | { 23 | /** 24 | * 使用箇所 25 | * 26 | * 感染状況・医療提供体制(サマリ) (components/InfectionMedicalcareprovisionStatus.vue) 27 | */ 28 | constructor() { 29 | super( 30 | Convert.toInfectionMedicalcareprovisionStatus(JSON.stringify(rawData)) 31 | ) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /docs/th/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | รุ่น 1.0, 2020/3/3 2 | 3 | # เป้าหมาย 4 | 5 | * เพื่อปกป้องชีวิตและคุณภาพชีวิตของประชาชนในกรุงโตเกียว 6 | * เพื่อนำเสนอความจริงด้านข้อมูลต่อสาธารณะ ทั้งในประเทศและต่างประเทศ 7 | * เพื่อแสดงออกถึงความตั้งใจที่จะนำเสนอผลที่จับต้องและมองเห็นได้ชัดเจน 8 | 9 | # จริยธรรมสำหรับนักพัฒนา 10 | 11 | ## มุมมองผู้ใช้ 12 | 13 | * ยึดถือประสบการณ์ของผู้ใช้ (user experience/UX) เป็นสำคัญ เพื่อนำเสนอข้อมูลได้อย่างชัดเจน 14 | * การตัดสินใจต่างๆ จะใช้หลักฐานจากแหล่งเชิงสถิติ เช่น การวิเคราะห์ข้อมูลการเข้าถึง การวิเคราะห์คำค้น และการวิเคราะห์สื่อสังคมออนไลน์ 15 | 16 | ## ไม่ทิ้งใครไว้ข้างหลัง 17 | 18 | * เราจะพัฒนาเว็บไซต์นี้เพื่อทุกคน โดยไม่ยึดถือเรื่องสัญชาติ อายุ เพศ ศาสนา และอื่นๆ 19 | * เราจะยึดถือแบบแผน อารยสถาปัตย์ ในการพัฒนาเว็บไซต์ 20 | 21 | ## นานาชาติ 22 | 23 | * ออกแบบและพัฒนาให้ง่ายต่อการเข้าใจ 24 | * นำเสนอข้อมูลในภาษาต่างๆ 25 | 26 | ## เปิดกว้าง 27 | 28 | * open source: เปิดเผยโค้ดและความรู้ต่างๆ ที่ใช้ในการพัฒนา โดยสามารถนำไปใช้ได้โดยไม่มีค่าใช้จ่ายและไม่มีข้อจำกัด 29 | * open data: เปิดเผยข้อมูลที่สามารถนำไปใช้ได้อย่างอิสระ ซึ่งทุกคนสามารถเข้าถึงได้ 30 | 31 | ## ร่วมกันสร้าง 32 | 33 | * เราจะไม่เพียงทำงานร่วมกับรัฐบาลกรุงโตเกียวเท่านั้น แต่จะทำงานร่วมกับทุกๆ คนที่เกี่ยวข้องอีกด้วย 34 | * เรายินดีต้อนรับการช่วยเหลือจากทุกๆคน 35 | * เราจะพัฒนาเว็บไซต์นี้อย่างต่อเนื่อง 36 | -------------------------------------------------------------------------------- /.github/workflows/screenshot.yml: -------------------------------------------------------------------------------- 1 | name: screenshot 2 | 3 | # on: pull_request 4 | on: 5 | push: 6 | branches: 7 | - dummy 8 | 9 | jobs: 10 | screenshot: 11 | runs-on: windows-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - run: cp ui-test\dummy.json dist\data/\data.json 15 | - name: Setup Node 16 | uses: actions/setup-node@v1 17 | with: 18 | node-version: '14.16.0' 19 | 20 | - name: Get yarn cache directory path 21 | id: yarn-cache-dir-path 22 | run: echo "::set-output name=dir::$(yarn cache dir)" 23 | 24 | - name: Cache dependencies 25 | uses: actions/cache@v2 26 | with: 27 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 28 | key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} 29 | restore-keys: | 30 | ${{ runner.os }}-yarn- 31 | 32 | - run: yarn install --frozen-lockfile 33 | - run: yarn run test 34 | - run: yarn run generate:deploy 35 | - run: pip install selenium 36 | - run: (python -m http.server --directory ./dist 8000 &) ; python ./ui-test/screenshot.py 37 | - name: Upload screenshot 38 | uses: actions/upload-artifact@v1 39 | with: 40 | name: screenshots 41 | path: screenshots 42 | -------------------------------------------------------------------------------- /utils/monitoringStatusValueFormatters.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 引数で受け取った桁数で小数部を桁揃えする関数を返却します。 3 | * 引数のデフォルト値は0です。 4 | * Number.prototype.toFixed() は引数に 0-20 の値しかとれないため、 5 | * 0を下回る場合は0に、20を超える場合は20にfixします。 6 | * https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed 7 | * 8 | * @param digit - 桁揃えする桁数 9 | */ 10 | export function getNumberToFixedFunction(digit = 0) { 11 | if (digit < 0) { 12 | return (d: number): string | undefined => d?.toFixed(0) 13 | } 14 | if (digit > 20) { 15 | return (d: number): string | undefined => d?.toFixed(20) 16 | } 17 | return (d: number): string | undefined => d?.toFixed(digit) 18 | } 19 | 20 | export function getNumberToLocaleStringFunction() { 21 | return (d: number): string | undefined => d?.toLocaleString() 22 | } 23 | 24 | /** 25 | * 引数で受け取った桁数で小数部を桁揃えし、整数部を3桁ごとにカンマ区切りにする関数を返します。 26 | * 小数部桁揃えには getNumberToFixedFunction を使用しているため、 27 | * 詳しい仕様は getNumberToFixedFunction の JSDoc を参照してください 28 | * @param digit - 桁揃えする桁数 29 | * @see getNumberToFixedFunction 30 | * @see {@link https://stackoverflow.com/a/38462832} 31 | */ 32 | export function getCommaSeparatedNumberToFixedFunction(digit = 0) { 33 | return (d: number): string => 34 | Number(getNumberToFixedFunction(digit)(d)).toLocaleString('en', { 35 | minimumFractionDigits: digit, 36 | }) 37 | } 38 | -------------------------------------------------------------------------------- /components/_shared/DevelopmentModeMark.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 35 | 36 | 61 | -------------------------------------------------------------------------------- /components/index/SiteTopUpper/MonitoringComment/ImageSwipe.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 44 | -------------------------------------------------------------------------------- /libraries/repositories/DataRepository.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-named-default 2 | import { default as rawData } from '@/data/data.json' 3 | import { 4 | Convert, 5 | Data, 6 | } from '@/libraries/auto_generated/data_converter/convertData' 7 | import { 8 | BaseRepository, 9 | IBaseRepository, 10 | } from '@/libraries/repositories/BaseRepository' 11 | 12 | export interface IDataRepository extends IBaseRepository {} 13 | 14 | export class DataRepository 15 | extends BaseRepository 16 | implements IDataRepository 17 | { 18 | /** 19 | * 使用箇所 20 | * 21 | * レイアウト (layouts/default.vue) 22 | * 23 | * トップページ上部 (components/index/SiteTopUpper.vue) 24 | * 25 | * 検査陽性者の状況 (components/index/CardsMonitoring/ConfirmedCasesDetails/Card.vue) 26 | * 27 | * 報告日別による陽性者数の推移 (components/index/CardsMonitoring/ConfirmedCasesNumber/Card.vue) 28 | * 29 | * 陽性者の属性 (components/index/CardsReference/ConfirmedCasesAttributes/Card.vue) 30 | * 31 | * 検査実施件数 (components/index/CardsReference/TestedNumber/Card.vue) 32 | * 33 | * 新型コロナコールセンター相談件数 (components/index/CardsReference/TelephoneAdvisoryReportsNumber/Card.vue) 34 | * 35 | * 受診相談窓口における相談件数 (components/index/CardsReference/MonitoringConsultationDeskReportsNumber/Card.vue) 36 | */ 37 | constructor() { 38 | super(Convert.toData(JSON.stringify(rawData))) 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /docs/zh_CN/TRANSLATION.md: -------------------------------------------------------------------------------- 1 | # 如何贡献翻译 2 | 3 | 我们正在使用Transifex来管理多国语言的内容。 4 | 5 | ## 给翻译的贡献者们 6 | 7 | 请到我们在Transifex的项目页面。 8 | https://www.transifex.com/stopcovid19-tokyo/stopcovid19tokyo 9 | 10 | 请加入我们的小组,点击`协助翻译“StopCovid19Tokyo”`按钮。在加入小组之前会需要建立或是登入帐号。 11 | 12 | ![](../../.github/img/2020-03-16-16-05-37.png) 13 | 14 | 加入后,前往dashboard页面。 15 | 16 | https://www.transifex.com/stopcovid19-tokyo/stopcovid19tokyo/dashboard/ 17 | 18 | 在想要帮忙翻译的语言上面按下`翻译`按钮。 19 | 20 | ![](../../.github/img/2020-03-16-16-09-47.png) 21 | 22 | 您会看到翻译编辑器。在左边的内存块搜寻想要翻译的文字,然后在右边的内存块输入翻译过后的文字。 23 | 24 | ![](../../.github/img/2020-03-16-16-11-14.png) 25 | 26 | 编辑过后,记得按下`储存变更`按钮。 27 | 28 | 完成翻译后,开发小组会把最新的翻译更新。 29 | 30 | Transifex有很多有用的功能,像是字典功能,如果您觉得好用请自由使用。如果有任何其他提案也欢迎提出。 31 | 32 | ## 新增语言 33 | 34 | 如果想要新增语言。请透过Transifex系统提交申请。然而,在考察审核翻译的工作量下,我们可能不会接受。 35 | 36 | ## 给开发者 37 | 38 | 如果你有新增文字需要翻译,请把字串加到`../assets/locales/ja.json`并推送Pull Request到`development`分支。您可以用相同字串作为key和value。 39 | 40 | 我们正在使用[nuxt-i18n](https://github.com/nuxt-community/nuxt-i18n)作为翻译引擎。请参考[他们的文件](https://nuxtjs.org/examples/i18n/)来了解如何使用这个函式库(Library)。 41 | 42 | 如果你急需这个文字的翻译的话,请在Code for Japan Slack(查看[教学](https://github.com/tokyo-metropolitan-gov/covid19/blob/development/docs/zh_TW/CONTRIBUTING.md#%E5%A6%82%E4%BD%95%E5%8F%83%E8%88%87%E4%BA%A4%E6%B5%81))的# covid19频道中,要求从Transifex推送最新的更新。 43 | 44 | 文字翻译过后,组织者会把新的资源档套用到`development`分支上。 45 | -------------------------------------------------------------------------------- /docs/zh_TW/TRANSLATION.md: -------------------------------------------------------------------------------- 1 | # 如何貢獻翻譯 2 | 3 | 我們正在使用 Transifex 來管理多國語言的內容。 4 | 5 | ## 給翻譯的貢獻者們 6 | 7 | 請到我們在 Transifex 的專案頁面。 8 | https://www.transifex.com/stopcovid19-tokyo/stopcovid19tokyo 9 | 10 | 請加入我們的小組,點擊 `協助翻譯 "StopCovid19Tokyo"` 按鈕。在加入小組之前會需要建立或是登入帳號。 11 | 12 | ![](../../.github/img/2020-03-16-16-05-37.png) 13 | 14 | 加入後,前往儀表板頁面。 15 | 16 | https://www.transifex.com/stopcovid19-tokyo/stopcovid19tokyo/dashboard/ 17 | 18 | 在想要幫忙翻譯的語言上面按下 `翻譯` 按鈕。 19 | 20 | ![](../../.github/img/2020-03-16-16-09-47.png) 21 | 22 | 您會看到翻譯編輯器。在左邊的區塊搜尋想要翻譯的文字,然後在右邊的區塊輸入翻譯過後的文字。 23 | 24 | ![](../../.github/img/2020-03-16-16-11-14.png) 25 | 26 | 編輯過後,記得按下 `儲存變更` 按鈕。 27 | 28 | 完成翻譯後,開發小組會把最新的翻譯更新。 29 | 30 | Transifex 有很多有用的功能,像是字典功能,如果您覺得好用請自由使用。如果有任何其他提案也歡迎提出。 31 | 32 | ## 新增語言 33 | 34 | 如果想要新增語言。請透過 Transifex 系統提交申請。然而,在考量審核翻譯的工作量下,我們可能不會接受。 35 | 36 | ## 給開發者 37 | 38 | 如果你有新增文字需要翻譯,請把字串加到 `../assets/locales/ja.json` 並推送 Pull Request 到 `development` 分支。 您可以用相同字串作為 key 和 value 。 39 | 40 | 我們正在使用 [nuxt-i18n](https://github.com/nuxt-community/nuxt-i18n) 作為翻譯引擎。請參考 [他們的文件](https://nuxtjs.org/examples/i18n/) 來了解如何使用這個函式庫(Library)。 41 | 42 | 如果你急需這個文字的翻譯的話,請在 Code for Japan Slack (查看 [教學](https://github.com/tokyo-metropolitan-gov/covid19/blob/development/docs/zh_TW/CONTRIBUTING.md#%E5%A6%82%E4%BD%95%E5%8F%83%E8%88%87%E4%BA%A4%E6%B5%81)) 的 #covid19 頻道中,要求從 Transifex 推送最新的更新。 43 | 44 | 文字翻譯過後,組織者會把新的資源檔套用到 `development` 分支上。 45 | -------------------------------------------------------------------------------- /data/monitoring_comment_image.json: -------------------------------------------------------------------------------- 1 | { 2 | "date": "2021\/4\/1 20:00", 3 | "data": { 4 | "images": [ 5 | { 6 | "src": "https:\/\/www.seisakukikaku.metro.tokyo.lg.jp\/cross-efforts\/2021\/08\/images\/0812bunseki.jpg", 7 | "alt": "感染状況・医療提供体制の分析(8月12日時点)", 8 | "href": "https:\/\/www.fukushihoken.metro.tokyo.lg.jp\/iryo\/kansen\/monitoring.html" 9 | }, 10 | { 11 | "src": "https:\/\/www.seisakukikaku.metro.tokyo.lg.jp\/cross-efforts\/2021\/08\/images\/0812graph1-2.jpg", 12 | "alt": "【感染状況】①-2 新規陽性者数(年代別)", 13 | "href": "https:\/\/www.fukushihoken.metro.tokyo.lg.jp\/iryo\/kansen\/monitoring.html" 14 | }, 15 | { 16 | "src": "https:\/\/www.seisakukikaku.metro.tokyo.lg.jp\/cross-efforts\/2021\/08\/images\/0812graph1-5-1.jpg", 17 | "alt": "【感染状況】①-5 新規陽性者数(濃厚接触者における感染経路)", 18 | "href": "https:\/\/www.fukushihoken.metro.tokyo.lg.jp\/iryo\/kansen\/monitoring.html" 19 | }, 20 | { 21 | "src": "https:\/\/www.seisakukikaku.metro.tokyo.lg.jp\/cross-efforts\/2021\/08\/images\/0812graph6-3.jpg", 22 | "alt": "【医療提供体制】⑥-3 検査陽性者の療養状況(公表日の状況)", 23 | "href": "https:\/\/www.fukushihoken.metro.tokyo.lg.jp\/iryo\/kansen\/monitoring.html" 24 | } 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /.github/workflows/reviewdog.yml: -------------------------------------------------------------------------------- 1 | name: reviewdog 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - development 7 | 8 | jobs: 9 | eslint: 10 | name: check_eslint_error 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | 15 | - name: Get yarn cache directory path 16 | id: yarn-cache-dir-path 17 | run: echo "::set-output name=dir::$(yarn cache dir)" 18 | 19 | - uses: actions/cache@v2 20 | id: yarn-cache 21 | with: 22 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 23 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 24 | restore-keys: | 25 | ${{ runner.os }}-yarn- 26 | 27 | - name: Yarn install 28 | run: yarn install --frozen-lockfile 29 | 30 | - name: eslint review 31 | uses: reviewdog/action-eslint@v1 32 | with: 33 | github_token: ${{ secrets.GITHUB_TOKEN }} 34 | reporter: github-pr-check 35 | eslint_flags: './**/*.{vue,ts,js}' 36 | 37 | stylelint: 38 | name: check_stylelint_error 39 | runs-on: ubuntu-18.04 40 | steps: 41 | - uses: actions/checkout@v2 42 | - name: stylelint review 43 | uses: reviewdog/action-stylelint@v1 44 | with: 45 | github_token: ${{ secrets.github_token }} 46 | reporter: github-pr-check 47 | stylelint_input: '**/*.{css,scss,vue}' 48 | -------------------------------------------------------------------------------- /utils/i18nUtils.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable simple-import-sort/imports */ 2 | import { LinkPropertyHref } from 'vue-meta' 3 | import type { Locale, LocaleObject } from 'nuxt-i18n' 4 | /* eslint-enable simple-import-sort/imports */ 5 | 6 | export const getLinksLanguageAlternative = ( 7 | routeBaseName: string, 8 | locales?: Array, 9 | defaultLocale?: string 10 | ) => { 11 | const links: LinkPropertyHref[] = [] 12 | const getFullPathWihLocale = (locale: string) => { 13 | const pathLocale = locale === 'ja' ? '' : `/${locale}` 14 | if (routeBaseName === 'index') { 15 | return `https://stopcovid19.metro.tokyo.lg.jp${pathLocale}` 16 | } else { 17 | return `https://stopcovid19.metro.tokyo.lg.jp${pathLocale}/${routeBaseName}` 18 | } 19 | } 20 | 21 | if (locales) { 22 | for (const locale of locales) { 23 | if (typeof locale === 'string') continue 24 | if (locale.code === 'ja-basic') continue 25 | 26 | links.push({ 27 | hid: `alternate-hreflang-${locale.iso}`, 28 | rel: 'alternate', 29 | href: getFullPathWihLocale(locale.code), 30 | hreflang: locale.iso, 31 | }) 32 | } 33 | } 34 | if (defaultLocale) { 35 | links.push({ 36 | hid: 'alternate-hreflang-x-default', 37 | rel: 'alternate', 38 | href: getFullPathWihLocale(defaultLocale), 39 | hreflang: 'x-default', 40 | }) 41 | } 42 | 43 | return links 44 | } 45 | -------------------------------------------------------------------------------- /components/index/SiteTopUpper/MonitoringComment/Frame.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 42 | 43 | 68 | -------------------------------------------------------------------------------- /components/index/CardsMonitoring/MonitoringItemsOverview/Table/ValueWithTranslatableUnit.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 53 | 54 | 62 | -------------------------------------------------------------------------------- /components/index/SiteTopUpper.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 52 | -------------------------------------------------------------------------------- /tool/generateDataConverters.ts: -------------------------------------------------------------------------------- 1 | import { mkdir, readdir, rmdir } from 'fs/promises' 2 | import { camelCase, upperFirst } from 'lodash' 3 | // eslint-disable-next-line import/order 4 | import * as path from 'path' 5 | import * as quicktype from 'quicktype' 6 | 7 | const basePath = path.dirname(__dirname) 8 | 9 | const inputPath = path.resolve(basePath, 'data') 10 | const outputPath = path.resolve( 11 | basePath, 12 | 'libraries', 13 | 'auto_generated', 14 | 'data_converter' 15 | ) 16 | 17 | // ディレクトリ libraries/auto_generated/data_converter を削除する 18 | rmdir(outputPath, { recursive: true }) 19 | ;(async () => { 20 | // ディレクトリ libraries/auto_generated/data_converter を作成する 21 | await mkdir(outputPath, { recursive: true }) 22 | // ディレクトリ data 内のファイル名の配列 23 | const dataFileNames = await readdir(inputPath) 24 | 25 | for (let index = 0; index < dataFileNames.length; index++) { 26 | const dataFileName = dataFileNames[index] 27 | const dataFileBaseName = path.parse(dataFileName).name 28 | const pascalFileName = upperFirst(camelCase(dataFileBaseName)) 29 | 30 | const converterFilePath = path.resolve( 31 | outputPath, 32 | `convert${pascalFileName}.ts` 33 | ) 34 | const dataFilePath = path.resolve(inputPath, dataFileName) 35 | 36 | await quicktype.main({ 37 | lang: 'ts', 38 | topLevel: pascalFileName, 39 | out: converterFilePath, 40 | src: [dataFilePath], 41 | rendererOptions: { 42 | 'nice-property-names': 'true', 43 | 'explicit-unions': 'true', 44 | }, 45 | }) 46 | } 47 | })() 48 | -------------------------------------------------------------------------------- /docs/en/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | # Our mission 3 | 4 | * We will work to protect the life and well-being of the citizens of Tokyo. 5 | * We will work to provide the facts to everyone, both domestic and abroad. 6 | * We will demonstrate our integrity and visualise the outcomes of our work. 7 | 8 | # Code of conduct for developers 9 | 10 | ## User perspective 11 | 12 | * We will treat UX (User Experience) as a vital component, in order to make information easy to understand. 13 | * We will make decisions using evidence based on statistical sources such as access analytics, search keyword analytics, and analytics of social media. 14 | 15 | ## No one left behind 16 | 17 | * We will develop this site for everyone, regardless of nationality, age, gender, etc. 18 | * We will follow universal design guidelines to build this website. 19 | 20 | ## International 21 | 22 | * We will design this website be intuitive to use and understand. 23 | * We will provide the information in multiple languages. 24 | 25 | ## Be open 26 | 27 | * Open source: We will release most of our source codes and knowledge used to develop this website for free, to encourage other local authorities to utilise them. 28 | * Open data: We will release the data for free in reusable data form, which is available for everyone. 29 | 30 | ## Build with people 31 | 32 | * We will work together not only with Tokyo Metropolitan Government, but also with anyone who wants to contribute. 33 | * We will welcome any citizens' contributions. 34 | * We will continue improving this website with someone who needs information. 35 | -------------------------------------------------------------------------------- /components/index/SiteTopUpper/Consultation/StaticInfo.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 35 | 36 | 75 | -------------------------------------------------------------------------------- /docs/zh_TW/README.md: -------------------------------------------------------------------------------- 1 | # 東京都 新型冠狀病毒疫情中心 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![東京都 新型冠狀病毒疫情中心](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | ### [日本語](./../../README.md) | [English](./../en/README.md) | [Español](./../es/README.md) | [한국어](./../ko/README.md) | 繁體中文 | [简体中文](./../zh_CN/README.md) | [Tiếng Việt](./../vi/README.md) | [ภาษาไทย](./../th/README.md) | [Français](./../fr/README.md) | [Português](./../pt_BR/README.md) 10 | 11 | 12 | ## 如何貢獻 13 | 如果您能對 Issues 中做出各式各樣的修正協助,我們將不勝感激。 14 | 15 | 詳情請洽[如何貢獻](./CONTRIBUTING.md)。 16 | 17 | 18 | ## 行動原則 19 | 詳情請洽[建立網站的行動原則](./CODE_OF_CONDUCT.md)。 20 | 21 | ## 授權 22 | 本軟體採 [MIT 授權條款](./../../LICENSE.txt)釋出。 23 | 24 | ## 從這個網站衍生出來的東西 25 | 26 | 請參考[此連結](./../../FORKED_SITES.md) 27 | 28 | ## 給翻譯者的資訊 29 | 30 | 有要幫忙翻譯的話,請參考 [這個文件](./TRANSLATION.md) 。 31 | 32 | ## 給開發者的資訊 33 | 34 | 請參考[給開發者的資訊](./FOR_DEVELOPERS.md)。 35 | -------------------------------------------------------------------------------- /spec/feature/index_SideNavigation_HamburgerMenu_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'page [/]', type: :feature do 6 | LOCALES.each do |lang, data| 7 | context "#{lang}" do 8 | describe 'SideNavigation' do 9 | before do 10 | visit data[:path] 11 | end 12 | 13 | example 'Hamburger Menu default' do 14 | expect(page).to have_selector 'div.naviContainer > div.SideNavigation > header.SideNavigation-Header > button.SideNavigation-OpenIcon' 15 | expect(page).not_to have_selector 'div.naviContainer > div.SideNavigation.open' 16 | expect(page).not_to have_selector 'div.naviContainer > div.SideNavigation.open > div.SideNavigation-Body.-opened' 17 | end 18 | 19 | example 'Hamburger Menu Open' do 20 | find('div.naviContainer > div.SideNavigation > header.SideNavigation-Header > button.SideNavigation-OpenIcon').click 21 | expect(page).to have_selector 'div.naviContainer > div.SideNavigation.open > div.SideNavigation-Body.-opened > button.SideNavigation-CloseIcon' 22 | end 23 | 24 | example 'Hamburger Menu Open -> Close' do 25 | find('header.SideNavigation-Header > button.SideNavigation-OpenIcon').click 26 | find('div.SideNavigation.open > div.SideNavigation-Body.-opened > button.SideNavigation-CloseIcon').click 27 | expect(page).not_to have_selector 'div.naviContainer > div.SideNavigation.open' 28 | expect(page).not_to have_selector 'div.naviContainer > div.SideNavigation.open > div.SideNavigation-Body.-opened' 29 | end 30 | end 31 | end 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.0) 5 | public_suffix (>= 2.0.2, < 5.0) 6 | capybara (3.35.3) 7 | addressable 8 | mini_mime (>= 0.1.3) 9 | nokogiri (~> 1.8) 10 | rack (>= 1.6.0) 11 | rack-test (>= 0.6.3) 12 | regexp_parser (>= 1.5, < 3.0) 13 | xpath (~> 3.2) 14 | childprocess (3.0.0) 15 | diff-lcs (1.4.4) 16 | mini_mime (1.1.0) 17 | nokogiri (1.12.3-x86_64-darwin) 18 | racc (~> 1.4) 19 | nokogiri (1.12.3-x86_64-linux) 20 | racc (~> 1.4) 21 | parallel (1.20.1) 22 | parallel_tests (3.7.0) 23 | parallel 24 | public_suffix (4.0.6) 25 | racc (1.5.2) 26 | rack (2.2.3) 27 | rack-test (1.1.0) 28 | rack (>= 1.0, < 3) 29 | regexp_parser (2.1.1) 30 | rspec (3.10.0) 31 | rspec-core (~> 3.10.0) 32 | rspec-expectations (~> 3.10.0) 33 | rspec-mocks (~> 3.10.0) 34 | rspec-core (3.10.1) 35 | rspec-support (~> 3.10.0) 36 | rspec-expectations (3.10.1) 37 | diff-lcs (>= 1.2.0, < 2.0) 38 | rspec-support (~> 3.10.0) 39 | rspec-mocks (3.10.2) 40 | diff-lcs (>= 1.2.0, < 2.0) 41 | rspec-support (~> 3.10.0) 42 | rspec-support (3.10.2) 43 | rubyzip (2.3.2) 44 | selenium-webdriver (3.142.7) 45 | childprocess (>= 0.5, < 4.0) 46 | rubyzip (>= 1.2.2) 47 | xpath (3.2.0) 48 | nokogiri (~> 1.8) 49 | 50 | PLATFORMS 51 | x86_64-darwin-20 52 | x86_64-linux 53 | 54 | DEPENDENCIES 55 | capybara 56 | parallel_tests 57 | rspec 58 | selenium-webdriver 59 | 60 | RUBY VERSION 61 | ruby 3.0.2p107 62 | 63 | BUNDLED WITH 64 | 2.2.15 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 東京都 新型コロナウイルス感染症対策サイト 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![東京都 新型コロナウイルス感染症対策サイト](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | ### 日本語 | [English](./docs/en/README.md) | [Español](./docs/es/README.md) | [한국어](./docs/ko/README.md) | [繁體中文](./docs/zh_TW/README.md) | [简体中文](./docs/zh_CN/README.md) | [Tiếng Việt](./docs/vi/README.md) | [ภาษาไทย](./docs/th/README.md) | [Français](./docs/fr/README.md) 10 | 11 | ## 貢献の仕方 12 | Issues にあるいろいろな修正にご協力いただけると嬉しいです。 13 | 14 | 詳しくは[貢献の仕方](./CONTRIBUTING.md)を御覧ください。 15 | 16 | 17 | ## 行動原則 18 | 詳しくは[サイト構築にあたっての行動原則](./CODE_OF_CONDUCT.md)を御覧ください。 19 | 20 | ## ライセンス 21 | 本ソフトウェアは、[MITライセンス](./LICENSE.txt)の元提供されています。 22 | 23 | ## このサイトから派生したサイト 24 | 25 | [このサイトから派生したサイト](./FORKED_SITES.md)を御覧ください。 26 | 27 | ## 翻訳者向け情報 28 | 29 | 翻訳をお手伝いいただける方は、[How to contribute translations](./TRANSLATION.md)を御覧ください。 30 | 31 | ## 開発者向け情報 32 | 33 | 開発をお手伝いいただける方は、[開発者向け情報](./FOR_DEVELOPERS.md)を御覧ください。 34 | -------------------------------------------------------------------------------- /utils/colors.ts: -------------------------------------------------------------------------------- 1 | export type SurfaceStyle = { 2 | strokeColor: string 3 | fillColor: string 4 | } 5 | 6 | type Series = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' 7 | 8 | const surfaceStyleA: SurfaceStyle = { 9 | strokeColor: '#5a8055', 10 | fillColor: '#1b4d30', 11 | } 12 | 13 | const surfaceStyleB: SurfaceStyle = { 14 | strokeColor: '#5a8055', 15 | fillColor: '#00a040', 16 | } 17 | 18 | const surfaceStyleC: SurfaceStyle = { 19 | strokeColor: '#5a8055', 20 | fillColor: '#c5e2c6', 21 | } 22 | 23 | const surfaceStyleD: SurfaceStyle = { 24 | strokeColor: '#1b4d30', 25 | fillColor: '#cbe1c8', 26 | } 27 | 28 | const surfaceStyleE: SurfaceStyle = { 29 | strokeColor: '#cc7004', 30 | fillColor: '#cc7004', 31 | } 32 | 33 | const surfaceStyleF: SurfaceStyle = { 34 | strokeColor: '#1b4d30', 35 | fillColor: '#1b4d30', 36 | } 37 | 38 | const surfaceStyleG: SurfaceStyle = { 39 | strokeColor: '#5a8055', 40 | fillColor: '#e2eee2', 41 | } 42 | 43 | export function getGraphSeriesStyle(seriesLength: number) { 44 | switch (seriesLength) { 45 | case 1: 46 | return [surfaceStyleB] 47 | case 2: 48 | return [surfaceStyleA, surfaceStyleC] 49 | case 4: 50 | return [surfaceStyleA, surfaceStyleB, surfaceStyleC, surfaceStyleG] 51 | default: 52 | return [surfaceStyleA, surfaceStyleB, surfaceStyleC] 53 | } 54 | } 55 | 56 | export function getGraphSeriesColor(series: Series) { 57 | const styles: { [key in Series]: SurfaceStyle } = { 58 | A: surfaceStyleA, 59 | B: surfaceStyleB, 60 | C: surfaceStyleC, 61 | D: surfaceStyleD, 62 | E: surfaceStyleE, 63 | F: surfaceStyleF, 64 | G: surfaceStyleG, 65 | } 66 | return styles[series] 67 | } 68 | -------------------------------------------------------------------------------- /static/earth.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/pt_BR/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | # Nossa missão 3 | 4 | * Nós trabalharemos para proteger a vida e bem-estar dos cidadãos de Tokyo. 5 | * Nós trabalharemos para prover fatos para todos, nacionalmente e internacionalmente. 6 | * Nós demonstraremos nossa integridade e veremos os frutos de nosso trabalho. 7 | 8 | # Código de conduta para desenvolvedores 9 | 10 | ## Perspectiva do usuário 11 | 12 | * Nós trataremos UX (Experiência do Usuário) como componente vital para manter as informações fáceis de se entender. 13 | * Nós utilizaremos de evidências baseadas em fontes estatísticas como análises de acesso, análises de buscas por palavra-chave e análises de mídias sociais para tomar decisões. 14 | 15 | ## Ninguém deixado para trás 16 | 17 | * Nós famos desenvolver este site para todos, independente de nacionalidade, idade, gênero, etc. 18 | * Nós seguiremos orientações de design universais para construir este website. 19 | 20 | ## Internacional 21 | 22 | * Nós vamos desenvolver este website para ser intuitivo e fácil de usar e entender. 23 | * Nós iremos prover informações em múltiplos idiomas. 24 | 25 | ## Seja franco 26 | 27 | * Código aberto: Nós vamos distribuir a maior parte dos nossos códigos fonte e conhecimento utilizados para construir este website de graça, para encorajar outras autoridades locais a utilizá-lo. 28 | * Dados abertos: Nós vamos distribuir os dados de graça, de forma reutilizável, disponível para todos. 29 | 30 | ## Construído com as pessoas 31 | 32 | * Nós trabalharemos juntos não apenas com o Governo Metropolitano de Tokyo, mas com qualquer pessoa que deseje contribuir. 33 | * Nós recebemos contribuições de qualquer cidadão. 34 | * Nós continuaremos melhorando este site para as pessoas que precisam de informação. 35 | -------------------------------------------------------------------------------- /docs/vi/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | # Nhiệm vụ của chúng tôi 3 | 4 | * Chúng tôi sẽ làm việc để bảo vệ cuộc sống và hạnh phúc của công dân Tokyo. 5 | * Chúng tôi sẽ làm việc để cung cấp sự thật cho tất cả mọi người, cả trong và ngoài nước. 6 | * Chúng tôi sẽ chứng minh tính toàn vẹn của chúng tôi và hình dung kết quả công việc của chúng tôi. 7 | 8 | # Quy tắc ứng xử dành cho nhà phát triển 9 | 10 | ## Quan điểm người dùng 11 | 12 | * Chúng tôi sẽ coi UX (Trải nghiệm người dùng) là một thành phần quan trọng, để làm cho thông tin dễ hiểu. 13 | * Chúng tôi sẽ đưa ra quyết định sử dụng bằng chứng dựa trên các nguồn thống kê như phân tích truy cập, phân tích từ khóa tìm kiếm và phân tích phương tiện truyền thông xã hội. 14 | 15 | ## Không ai bị bỏ lại phía sau 16 | 17 | * Chúng tôi sẽ phát triển trang web này cho tất cả mọi người, bất kể quốc tịch, tuổi tác, giới tính, v.v. 18 | * Chúng tôi sẽ làm theo hướng dẫn thiết kế phổ quát để xây dựng trang web này. 19 | 20 | ## Tính quốc tế 21 | 22 | * Chúng tôi sẽ thiết kế trang web này trực quan để sử dụng và hiểu. 23 | * Chúng tôi sẽ cung cấp thông tin bằng nhiều ngôn ngữ. 24 | 25 | ## Hãy cởi mở 26 | 27 | * Nguồn mở: Chúng tôi sẽ phát hành hầu hết các mã nguồn và kiến ​​thức được sử dụng để phát triển trang web này miễn phí, để khuyến khích các chính quyền địa phương khác sử dụng chúng. 28 | * Mở dữ liệu: Chúng tôi sẽ phát hành dữ liệu miễn phí dưới dạng dữ liệu có thể sử dụng lại, có sẵn cho tất cả mọi người. 29 | 30 | ## Xây dựng với mọi người 31 | 32 | * Chúng tôi sẽ làm việc cùng nhau không chỉ với Chính quyền thành phố Tokyo, mà còn với bất kỳ ai muốn đóng góp. 33 | * Chúng tôi sẽ hoan nghênh mọi đóng góp của công dân. 34 | * Chúng tôi sẽ tiếp tục cải thiện trang web này với người cần thông tin. 35 | -------------------------------------------------------------------------------- /docs/en/README.md: -------------------------------------------------------------------------------- 1 | # Tokyo COVID-19 Task Force website 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![Tokyo COVID-19 Task Force website](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | 10 | ### [日本語](./../../README.md) | English | [Español](./../es/README.md) | [한국어](./../ko/README.md) | [繁體中文](./../zh_TW/README.md) | [简体中文](./../zh_CN/README.md) | [Tiếng Việt](./../vi/README.md) | [ภาษาไทย](./../th/README.md) | [Français](./../fr/README.md) | [Português](./../pt_BR/README.md) 11 | 12 | 13 | ## How to Contribute 14 | 15 | All contributions are welcome! 16 | Please check [How to contribute](./CONTRIBUTING.md) for details. 17 | 18 | ## Code of Conduct 19 | 20 | Please check [Code of conduct for developers](./CODE_OF_CONDUCT.md) for details. 21 | 22 | ## License 23 | This software is released under [the MIT License](./../../LICENSE.txt). 24 | 25 | ## For Translators 26 | 27 | Please check [How to translate](./../../TRANSLATION.md) doc. 28 | 29 | ## For Developers 30 | 31 | Please check [For Developers](./FOR_DEVELOPERS.md) doc. 32 | -------------------------------------------------------------------------------- /docs/th/README.md: -------------------------------------------------------------------------------- 1 | # Tokyo COVID-19 Task Force website 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![Tokyo COVID-19 Task Force website](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | 10 | ### [日本語](./../../README.md) | [English](./../en/README.md) | [Español](./../es/README.md) | [한국어](./../ko/README.md) | [繁體中文](./../zh_TW/README.md) | [简体中文](./../zh_CN/README.md) | [Tiếng Việt](./../vi/README.md) | ภาษาไทย | [Français](./../fr/README.md) | [Português](./../pt_BR/README.md) 11 | 12 | 13 | ## การร่วมพัฒนา 14 | 15 | เปิดรับการพัฒนาและการปรับปรุงต่างๆ! 16 | โปรดอ่าน [คู่มือการพัฒนา](./CONTRIBUTING.md) 17 | 18 | ## ข้อปฏิบัติ 19 | 20 | โปรดอ่าน [Code of conduct for developers](./CODE_OF_CONDUCT.md) 21 | 22 | ## สัญญาอนุญาต 23 | 24 | ซอฟต์แวร์นี้เผยแพร่ภายใต้สัญญาอนุญาต [MIT License](./../../LICENSE.txt) 25 | 26 | ## สำหรับนักแปล 27 | 28 | โปรดดูเอกสารแนะนำการเข้าร่วมแปลที่ [How to translate](./../../TRANSLATION.md) 29 | 30 | ## สำหรับนักพัฒนา 31 | 32 | โปรดดูเอกสารแนะนำการเข้าร่วมแปลที่ [สำหรับนักพัฒนา](./FOR_DEVELOPERS.md) 33 | -------------------------------------------------------------------------------- /components/index/_shared/DataView/ExpantionPanel.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 49 | 50 | 68 | -------------------------------------------------------------------------------- /docs/ko/README.md: -------------------------------------------------------------------------------- 1 | # 도쿄도 코로나19 대책 사이트 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![도쿄도 코로나19 대책 사이트](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | ### [日本語](./../../README.md) | [English](./../en/README.md) | [Español](./../es/README.md) | 한국어 | [繁體中文](./../zh_TW/README.md) | [简体中文](./../zh_CN/README.md) | [Tiếng Việt](./../vi/README.md) | [ภาษาไทย](./../th/README.md) | [Français](./../fr/README.md) | [Português](./../pt_BR/README.md) 10 | 11 | 12 | ## 기여방법 13 | 오픈상태의 Issue에 여러 가지 내용 추가 및 수정등으로 기여해주시면, 매우 감사하겠습니다. 14 | 15 | 자세한 내용은 다음의 [기여방법](./CONTRIBUTING.md) 링크를 참고해주세요. 16 | 17 | 18 | ## 행동강령 19 | 자세한 내용은 [사이트 구축 행동강령](./CODE_OF_CONDUCT.md)를 참고해주세요. 20 | 21 | 22 | ## 라이선스 23 | 이 소프트웨어는 [MIT 라이선스](./../../LICENSE.txt)를 따르고 있습니다. 24 | 25 | ## 이 사이트에서 파생된 사이트 26 | 27 | 해당 [링크(일본어)](./../../FORKED_SITES.md)를 클릭하여 보세요. 28 | 29 | ## 번역에 대한 정보 30 | 31 | 번역을 하려면, 맨 먼저 다음의 [번역 방법(영어)](./../../TRANSLATION.md) 문서를 확인하시기 바랍니다. 32 | 33 | ## 개발자를 위한 개발 정보 34 | 35 | 번역을 하려면, 맨 먼저 다음의 [개발자를 위한 개발 정보(영어)](./FOR_DEVELOPERS.md) 문서를 확인하시기 바랍니다. 36 | -------------------------------------------------------------------------------- /docs/es/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | # Nuestra misión 3 | 4 | * Trabajaremos para proteger la vida y la salud de los ciudadanos. 5 | * Trabajaremos para comunicar abiertamente los datos correctos a personas nacionales y extranjeras.. 6 | * Demostraremos nuestra integridad y visualizaremos los resultados de nuestro trabajo. 7 | 8 | # Código de conducta para desarrolladores 9 | 10 | ## Perspectiva del usuario 11 | 12 | * Le daremos importancia al UX (Experiencia del usuario) para que la información sea fácil de entender. 13 | * Tomaremos decisiones basadas en la evidencia usando análisis numéricos tales como análisis de acceso, análisis de búsqueda de palabras clave y análisis SNS. 14 | 15 | ## Nadie se queda atrás 16 | 17 | * Desarrollaremos este sitio para todos, independientemente de su nacionalidad, edad, género y otros atributos. 18 | * Seguiremos las pautas de diseño universal para construir este sitio web. 19 | 20 | ## Internacional 21 | 22 | * Diseñaremos este sitio web para que sea intuitivo de usar y comprender. 23 | * Proporcionaremos la información en varios idiomas. 24 | 25 | ## Estar abierto 26 | 27 | * Código abierto: publicaremos la mayoría de nuestros códigos fuente y conocimientos utilizados para desarrollar este sitio web de forma gratuita, para alentar a otras autoridades locales a utilizarlos. 28 | * Datos abiertos: publicaremos los datos de forma gratuita en forma de datos reutilizables, que está disponible para todos. 29 | 30 | ## Construir con personas 31 | 32 | * Trabajaremos juntos no solo con el Gobierno Metropolitano de Tokio sino también con cualquier otra persona que quiera contribuir. 33 | * Daremos la bienvenida a las contribuciones de cualquier ciudadano. 34 | * Continuaremos mejorando este sitio web con alguien que necesite información. 35 | -------------------------------------------------------------------------------- /docs/fr/README.md: -------------------------------------------------------------------------------- 1 | # Site web du group de travail Tokyo COVID-19 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![Tokyo COVID-19 Task Force website](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | 10 | ### [日本語](./../../README.md) | [English](./../en/README.md) | [Español](./../es/README.md) | [한국어](./../ko/README.md) | [繁體中文](./../zh_TW/README.md) | [简体中文](./../zh_CN/README.md) | [Tiếng Việt](./../vi/README.md) | [ภาษาไทย](./../th/README.md) | Français | [Português](./../pt_BR/README.md) 11 | 12 | 13 | ## Comment Contribuer 14 | 15 | Toute contribution est bienvenue ! 16 | Veuillez checker [Comment contribuer](./CONTRIBUTING.md) pour plus d'informations. 17 | 18 | ## Code of Conduct 19 | 20 | Veuillew checker [Code de conduite des développeurs](./CODE_OF_CONDUCT.md) pour plus d'informations. 21 | 22 | ## License 23 | Ce logiciel est sous [license MIT](./../../LICENSE.txt). 24 | 25 | ## Pour les développeurs 26 | 27 | [PLEASE TRANSLATE ME] 28 | 29 | Please check [Pour les développeurs](./FOR_DEVELOPERS.md) doc. 30 | 31 | [/PLEASE TRANSLATE ME] 32 | -------------------------------------------------------------------------------- /docs/fr/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | version 1.0, 2020/3/3 2 | # Notre Mission 3 | 4 | * Nous travaillerons pour proteger la vie et le bien-etre des citoyens de Tokyo. 5 | * Nous travaillerons pour fournir les faits a tout le monde au Japon comme a l'etranger. 6 | * Nous demontrerons notre integrite et verrons les resultats de notre travail. 7 | 8 | # Code de conduite des developpeurs 9 | 10 | ## Point de vue de l'utilisateur 11 | 12 | * Nous traiterons l'UX (Experience Utilisateur) comme un composant vital, pour rendre l'information facile d'acces. 13 | * Nous prendrons nos decisions basees sur des donnees statistiques telles que des sources telles que l'analyse d'accès, l'analyse de mots clés de recherche et l'analyse des médias sociaux. 14 | 15 | ## Ne laisser personne derriere soi 16 | 17 | * Nous developperons ce site pour tous, sans distinction de nationalite, age, genre, etc. 18 | * Nous suivrons des lignes directrices de design unniverselles pour construire ce site web. 19 | 20 | ## International 21 | 22 | * Nous creerons ce site web pour etre intuitif et facile a comprendre. 23 | * Nous fournirons les informations dans multiples langues. 24 | 25 | ## Etre ouverts 26 | 27 | * Open source: Nous paratgerons gratuitement la majorite de notre code source et des connaissances utilisees pour developper ce site web, afin d'encourager d'autres autoritees locales a les utiliser. 28 | * Open data: Nous partagerons gratuitement les donnees recueillies dans une forme reutilisable et accessible par tous. 29 | 30 | ## Construit par tous 31 | 32 | * Nous travaillerons avec le Gouvernement Metropolitain de Tokyo, mais aussi n'importe qui voulant contribuer. 33 | * Nous acceuillerons les contributions de n'importe quel citoyen. 34 | * Nous continuerons d'ameliorer ce site web avec ceux necessitant information. 35 | -------------------------------------------------------------------------------- /docs/pt_BR/README.md: -------------------------------------------------------------------------------- 1 | # Site da Força Tarefa de Tóquio para o COVID-19 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![Tokyo COVID-19 Task Force website](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | 10 | ### [日本語](./../../README.md) | [English](./../en/README.md) | [Español](./../es/README.md) | [한국어](./../ko/README.md) | [繁體中文](./../zh_TW/README.md) | [简体中文](./../zh_CN/README.md) | [Tiếng Việt](./../vi/README.md) | [ภาษาไทย](./../th/README.md) | [Français](./../fr/README.md) | Português 11 | 12 | 13 | ## Como contribuir 14 | 15 | Todas as contribuições são bem-vindas! 16 | Por favor, confira [Como contribuir](./CONTRIBUTING.md) para maiores informações. 17 | 18 | ## Código de conduta 19 | 20 | Por favor, confira o nosso [Código de conduta](./CODE_OF_CONDUCT.md) para maiores informações. 21 | 22 | ## Licença 23 | Este software é distribuído com a [licença MIT](./../../LICENSE.txt). 24 | 25 | ## Aos Tradutores 26 | 27 | Por favor, confira [Como traduzir](./../../TRANSLATION.md). 28 | 29 | ## Aos Desenvolvedores 30 | 31 | Por favor, confira [Aos Desenvolvedores](./FOR_DEVELOPERS.md). 32 | -------------------------------------------------------------------------------- /components/index/_shared/DataSelector.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 47 | 48 | 78 | -------------------------------------------------------------------------------- /docs/es/README.md: -------------------------------------------------------------------------------- 1 | # Sitio web del Grupo de trabajo COVID-19 de Tokio 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![Sitio web del grupo de trabajo COVID-19 de Tokio](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | ### [日本語](./../../README.md) | [English](./../en/README.md) | Español | [한국어](./../ko/README.md) | [繁體中文](./../zh_TW/README.md) | [简体中文](./../zh_CN/README.md) | [Tiếng Việt](./../vi/README.md) | [ภาษาไทย](./../th/README.md) | [Français](./../fr/README.md) | [Português](./../pt_BR/README.md) 10 | 11 | 12 | ## Cómo Contribuir 13 | 14 | ¡Todas las contribuciones son bienvenidas! 15 | 16 | Por favor, consulte [Cómo contribuir](./CONTRIBUTING.md) para obtener más detalles. 17 | 18 | ## Código de Conducta 19 | 20 | Por favor, consulte el [Código de conducta para desarrolladores](./CODE_OF_CONDUCT.md) para más detalles. 21 | 22 | ## Licencia 23 | Este software se publica bajo la [licencia MIT](./../../LICENSE.txt). 24 | 25 | Por favor consulte [Cómo traducir](./../../TRANSLATION.md) doc. 26 | 27 | 28 | ## Para Desarrolladores 29 | 30 | Por favor revisa [Para Desarrolladores](./FOR_DEVELOPERS.md) doc. 31 | -------------------------------------------------------------------------------- /docs/vi/README.md: -------------------------------------------------------------------------------- 1 | # Cổng thông tin chống dịch CoVid-19 của TP Tokyo 2 | 3 | [![production deploy](https://github.com/tokyo-metropolitan-gov/covid19/workflows/production%20deploy/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22production+deploy%22) 4 | [![OGP Builder](https://github.com/tokyo-metropolitan-gov/covid19/workflows/OGP%20Builder/badge.svg?branch=master)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22OGP+Builder%22) 5 | [![Auto-i18n Generator](https://github.com/tokyo-metropolitan-gov/covid19/workflows/Auto-i18n%20Generator/badge.svg?branch=development)](https://github.com/tokyo-metropolitan-gov/covid19/actions?query=workflow%3A%22Auto-i18n+Generator%22) 6 | 7 | [![Cổng thông tin chống dịch CoVid-19 của TP Tokyo](https://user-images.githubusercontent.com/1301149/75629392-1d19d900-5c25-11ea-843d-2d4376e3a560.png)](https://stopcovid19.metro.tokyo.lg.jp/) 8 | 9 | ### [日本語](./../../README.md) | [English](./../en/README.md) | [Español](./../es/README.md) | [한국어](./../ko/README.md) | [繁體中文](./../zh_TW/README.md) | [简体中文](./../zh_CN/README.md) | Tiếng Việt | [ภาษาไทย](./../th/README.md) | [Français](./../fr/README.md) | [Português](./../pt_BR/README.md) 10 | 11 | ## Làm thế nào để đóng góp 12 | Mọi đóng góp của các bạn đều được chào đón. 13 | Xin vui lòng đọc [tại đây](./CONTRIBUTING.md) để biết thêm chi tiết. 14 | 15 | 16 | ## Quy tắc ứng xử 17 | Chi tiết vui lòng xem [tại đây](./CODE_OF_CONDUCT.md) 18 | 19 | ## Giấy phép 20 | Phần mềm này được phân phối dưới giấy phép [MIT](./../../LICENSE.txt) 21 | 22 | [PLEASE TRANSLATE ME] 23 | 24 | ## For Translators 25 | 26 | Please check [How to translate](./../../TRANSLATION.md) doc. 27 | 28 | ## Thông tin cho nhà phát triển 29 | 30 | Please check [Thông tin cho nhà phát triển](./FOR_DEVELOPERS.md) doc. 31 | 32 | [/PLEASE TRANSLATE ME] 33 | -------------------------------------------------------------------------------- /utils/calcDayBeforeRatio.ts: -------------------------------------------------------------------------------- 1 | import dayjs from 'dayjs' 2 | 3 | import { DisplayData } from '@/plugins/vue-chart' 4 | import { getComplementedDate } from '@/utils/formatDate' 5 | import { getCommaSeparatedNumberToFixedFunction } from '@/utils/monitoringStatusValueFormatters' 6 | 7 | interface DayBeforeRatioParameters { 8 | displayData: DisplayData 9 | dataIndex?: number 10 | digit?: number 11 | } 12 | interface DayBeforeRatioData { 13 | lastDay: Date 14 | lastDayData: string 15 | dayBeforeRatio: string 16 | } 17 | /** 18 | * Get day before ratio values 19 | * 20 | * @param displayData - Chart displayData 21 | * @param dataIndex - Target data index in `displayData.datasets` 22 | * @param digit - The number of digits to appear after the decimal point 23 | */ 24 | export default function ({ 25 | displayData, 26 | dataIndex = 0, 27 | digit = 0, 28 | }: DayBeforeRatioParameters): DayBeforeRatioData { 29 | const lastDay = displayData.labels!.slice(-1)[0] 30 | const data = displayData.datasets[dataIndex].data 31 | const lastDayData = data.slice(-1)[0] 32 | const lastBeforeData = data.slice(-2)[0] 33 | const dayBeforeRatio = lastDayData - lastBeforeData 34 | const formatter = getCommaSeparatedNumberToFixedFunction(digit) 35 | 36 | return { 37 | lastDay: dayjs(getComplementedDate(lastDay)).toDate(), 38 | lastDayData: formatter(lastDayData), 39 | dayBeforeRatio: formatDayBeforeRatio(dayBeforeRatio, formatter), 40 | } 41 | } 42 | 43 | function formatDayBeforeRatio( 44 | dayBeforeRatio: number, 45 | formatter: Function 46 | ): string { 47 | const formattedDayBeforeRatio = formatter(dayBeforeRatio) 48 | switch (Math.sign(dayBeforeRatio)) { 49 | case 1: 50 | return `+${formattedDayBeforeRatio}` 51 | case -1: 52 | return `${formattedDayBeforeRatio}` 53 | default: 54 | return `${formattedDayBeforeRatio}` 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'capybara/rspec' 4 | require 'capybara/dsl' 5 | require 'selenium-webdriver' 6 | 7 | require 'lib/locales_setting' 8 | 9 | APP_HOST = 'http://localhost:3000' 10 | 11 | Capybara.register_driver :emulated_chrome_ios do |app| 12 | # Run tests with Headless Chrome(iPhone6/7/8 Emulation Mode) 13 | options = Selenium::WebDriver::Chrome::Options.new 14 | options.add_argument('--headless') 15 | options.add_argument('--disable-gpu') 16 | options.add_emulation(device_name: 'iPhone 6/7/8') 17 | Capybara::Selenium::Driver.new(app, 18 | browser: :chrome, 19 | options: options) 20 | end 21 | 22 | Capybara.default_driver = :emulated_chrome_ios 23 | Capybara.app_host = APP_HOST 24 | 25 | RSpec.configure do |config| 26 | config.color = true 27 | config.tty = true 28 | # Save Screenshot for failed test cases 29 | config.after do |example| 30 | if example.exception 31 | meta = example.metadata 32 | spec_file_name = File.basename(meta[:file_path]) 33 | line_number = meta[:line_number] 34 | screenshot_file_name = "#{Time.now.strftime('%Y%m%d%H%M%S%3N').to_i}-#{spec_file_name}-#{line_number}.png" 35 | screenshot_path = "spec/screenshot/#{screenshot_file_name}" 36 | page.save_screenshot screenshot_path 37 | end 38 | end 39 | end 40 | 41 | def render_lazy_contents 42 | # Scroll to Bottom for building all lazy-loading DOM 43 | scroll_to = 1600 44 | scroll_step = 600 45 | loop do 46 | page.evaluate_script "window.scroll(0,#{scroll_to})" 47 | lazy_row = page.all('div.v-lazy').count * 2 48 | scroll_to = scroll_to > scroll_step * lazy_row ? 0 : scroll_to + scroll_step 49 | card_count = page.all('div.v-lazy > div.row > div.DataCard').count 50 | break if [lazy_row - 1, lazy_row].include?(card_count) 51 | end 52 | end 53 | -------------------------------------------------------------------------------- /data/monitoring_items.json: -------------------------------------------------------------------------------- 1 | { 2 | "date": "2021\/8\/13 20:40", 3 | "data": { 4 | "専門家3行コメント": [ 5 | { 6 | "@ja": "かつてないほどの速度で感染拡大が進み、新規陽性者数が急増しており、制御不能な状況である。", 7 | "@en": "The situation is becoming uncontrollable with the virus spreading at an unprecedented speed and a spike in new positive cases." 8 | }, 9 | { 10 | "@ja": "災害レベルで感染が猛威を振るう非常事態である。", 11 | "@en": "This is an emergency situation with the infection running rampant on the level of a disaster. " 12 | }, 13 | { 14 | "@ja": "重症患者が急激に増加しており、救急医療や予定手術等の通常医療も含めて医療提供体制が深刻な機能不全に陥っている。", 15 | "@en": "The number of severe patients is drastically increasing, and the system for health care provision, including non-COVID health care such as emergency medical services and scheduled operations, is seriously overwhelmed." 16 | } 17 | ], 18 | "(1)新規陽性者数": 4155.7, 19 | "(2)#7119(東京消防庁救急相談センター)における発熱等相談件数 ": 191.7, 20 | "(3)新規陽性者における接触歴等不明者(人数)": 2609.9, 21 | "(3)新規陽性者における接触歴等不明者(増加比)": 106.3, 22 | "(4)PCR・抗原検査(陽性率)": 23.2, 23 | "(4)PCR・抗原検査(検査人数)": 11961.6, 24 | "(5)救急医療の東京ルールの適用件数": 143.3, 25 | "(6)入院患者数": 3727, 26 | "(6)入院患者確保病床数": 5967, 27 | "(7)重症患者数": 227, 28 | "(7)重症患者確保病床数": 392, 29 | "総括コメント-感染状況": { 30 | "date": "2021-03-04", 31 | "level": 4, 32 | "display": { 33 | "@ja": "感染が拡大している", 34 | "@en": "The infection is spreading." 35 | } 36 | }, 37 | "総括コメント-医療提供体制": { 38 | "date": "2021-03-04", 39 | "level": 4, 40 | "display": { 41 | "@ja": "体制が逼迫している", 42 | "@en": "The system is under strain." 43 | } 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /components/index/_shared/CardsLazyRow.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 71 | 72 | 81 | -------------------------------------------------------------------------------- /layouts/error.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 47 | 48 | 89 | -------------------------------------------------------------------------------- /components/_shared/NoScript.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 48 | 49 | 85 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | /logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # Nuxt generate 72 | dist/* 73 | # data 74 | !dist/data 75 | 76 | # vuepress build output 77 | .vuepress/dist 78 | 79 | # Serverless directories 80 | .serverless 81 | 82 | # IDE / Editor 83 | .idea 84 | 85 | # Service worker 86 | sw.* 87 | 88 | # macOS 89 | .DS_Store 90 | 91 | # Vim swap files 92 | *.swp 93 | 94 | # Netlify 95 | .netlify 96 | 97 | # OGP images 98 | ogp/* 99 | 100 | # Vagrant 101 | .vagrant 102 | 103 | # RSpec screenshots 104 | spec/screenshot 105 | 106 | # Gem Libralies 107 | vendor/bundle 108 | -------------------------------------------------------------------------------- /static/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /utils/formatConfirmedCasesAttributesTable.ts: -------------------------------------------------------------------------------- 1 | type Header = { 2 | text: string 3 | value: string 4 | align?: string 5 | type?: 'date' | 'age' 6 | } 7 | 8 | const headers: Header[] = [ 9 | { text: '公表日', value: '公表日', type: 'date' }, 10 | { text: '居住地', value: '居住地' }, 11 | { text: '年代', value: '年代', type: 'age' }, 12 | { text: '性別', value: '性別' }, 13 | { text: '職業', value: '職業', align: 'center' }, 14 | { text: '接触歴', value: '接触歴', align: 'center' }, 15 | { text: '発症日', value: '発症日', type: 'date' }, 16 | { text: '確定日', value: '確定日', type: 'date' }, 17 | { text: '退院', value: '退院', align: 'center' }, 18 | ] 19 | 20 | export type DataType = { 21 | 公表_年月日: string 22 | 患者_居住地: string | undefined 23 | 患者_年代: string | undefined 24 | 患者_性別: '男性' | '女性' | string 25 | 患者_職業: string | undefined 26 | 患者_接触歴の有無フラグ: number | undefined 27 | 発症_年月日: string | undefined 28 | 確定_年月日: string | undefined 29 | 退院済フラグ: number | undefined 30 | [key: string]: any 31 | } 32 | 33 | type TableDataType = { 34 | 公表日: string 35 | 居住地: DataType['患者_居住地'] 36 | 年代: DataType['患者_年代'] 37 | 性別: DataType['患者_性別'] | '不明' 38 | 職業: DataType['患者_職業'] 39 | 接触歴: string | undefined 40 | 発症日: DataType['発症_年月日'] 41 | 確定日: DataType['確定_年月日'] 42 | 退院: string | undefined 43 | } 44 | 45 | export type TableDateType = { 46 | headers: Header[] 47 | datasets: TableDataType[] 48 | } 49 | 50 | /** 51 | * Format for DataTable component 52 | * 53 | * @param data - Raw data 54 | */ 55 | export function formatConfirmedCasesAttributesTable( 56 | data: DataType[] 57 | ): TableDateType { 58 | const datasets = data.map((d) => ({ 59 | 公表日: d['公表_年月日'] ?? '不明', 60 | 居住地: d['患者_居住地'] ?? '調査中', 61 | 年代: d['患者_年代'] ?? '不明', 62 | 性別: d['患者_性別'] ?? '不明', 63 | 職業: d['患者_職業'] ?? '-', 64 | 接触歴: d['患者_接触歴の有無フラグ'] ? '〇' : '', 65 | 発症日: d['発症_年月日'] ?? '', 66 | 確定日: d['確定_年月日'] ?? '', 67 | 退院: d['退院済フラグ'] ? '〇' : '', 68 | })) 69 | return { 70 | headers, 71 | datasets, 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /pages/index.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 83 | -------------------------------------------------------------------------------- /plugins/chartjs-adapter-dayjs.ts: -------------------------------------------------------------------------------- 1 | import 'dayjs/locale/en' 2 | import 'dayjs/locale/ja' 3 | import 'dayjs/locale/ko' 4 | import 'dayjs/locale/pt-br' 5 | import 'dayjs/locale/th' 6 | import 'dayjs/locale/vi' 7 | import 'dayjs/locale/zh-cn' 8 | import 'dayjs/locale/zh-tw' 9 | 10 | import { NuxtAppOptions } from '@nuxt/types/app' 11 | import { _adapters } from 'chart.js' 12 | import dayjs from 'dayjs' 13 | import customParseFormat from 'dayjs/plugin/customParseFormat' 14 | 15 | const DEFAULT_FORMATS = { 16 | datetime: 'MMM D, YYYY, h:mm:ss a', 17 | millisecond: 'h:mm:ss.SSS a', 18 | second: 'h:mm:ss a', 19 | minute: 'h:mm a', 20 | hour: 'hA', 21 | day: 'MMM D', 22 | week: 'll', 23 | month: 'MMM YYYY', 24 | quarter: '[Q]Q - YYYY', 25 | year: 'YYYY', 26 | } 27 | 28 | export function useDayjsAdapter(nuxtI18n: NuxtAppOptions['i18n']) { 29 | dayjs.extend(customParseFormat) 30 | 31 | // set locale when page onload 32 | setLocale(nuxtI18n.locale) 33 | nuxtI18n.onLanguageSwitched = (_: string, newLocale: string) => { 34 | setLocale(newLocale) 35 | } 36 | 37 | _adapters._date.override({ 38 | _id: 'dayjs', // for debug 39 | 40 | formats() { 41 | return DEFAULT_FORMATS 42 | }, 43 | 44 | parse(time, format) { 45 | const value = format ? dayjs(time, format) : dayjs(time) 46 | 47 | return value.isValid() ? value.valueOf() : null 48 | }, 49 | 50 | format(time, format) { 51 | return dayjs(time).format(format) 52 | }, 53 | 54 | add(time, amount, unit) { 55 | return dayjs(time).add(amount, unit) 56 | }, 57 | 58 | diff(max, min, unit) { 59 | return dayjs(max).diff(dayjs(min), unit) 60 | }, 61 | 62 | startOf(time, unit, _) { 63 | return dayjs(time).startOf(unit) 64 | }, 65 | 66 | endOf(time, unit) { 67 | return dayjs(time).endOf(unit) 68 | }, 69 | }) 70 | } 71 | 72 | function setLocale(newLocale: string) { 73 | let locale = newLocale 74 | 75 | if (locale.includes('ja')) { 76 | locale = 'ja' 77 | } 78 | 79 | dayjs.locale(locale) 80 | } 81 | -------------------------------------------------------------------------------- /spec/feature/index_CardsMonitoring_h3_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'page [/]', type: :feature do 6 | LOCALES.each do |lang, data| 7 | context "#{lang}" do 8 | describe 'h3' do 9 | before do 10 | visit data[:path] 11 | render_lazy_contents 12 | end 13 | 14 | context 'CardsMonitoring' do 15 | it 'has h3' do 16 | expect(find('#tab-0 .DataCard.ConfirmedCasesDetailsCard > div > div > div.DataView-Header > h3').text).to eq t(lang, '検査陽性者の状況') 17 | expect(find('#tab-0 .DataCard.ConfirmedCasesNumberCard > div > div > div.DataView-Header > h3').text).to eq t(lang, '報告日別による陽性者数の推移') 18 | expect(find('#tab-0 .DataCard.MonitoringItemsOverviewCard > div > div > div.DataView-Header > h3').text).to eq t(lang, 'モニタリング項目') 19 | expect(find('#tab-0 .DataCard.MonitoringConfirmedCasesNumberCard > div > div > div.DataView-Header.with-dataSetPanel > h3').text).to eq t(lang, 'モニタリング項目(1)') 20 | expect(find('#tab-0 .DataCard.ConsultationAboutFeverNumberCard > div > div > div.DataView-Header.with-dataSetPanel > h3').text).to eq t(lang, 'モニタリング項目(2)') 21 | expect(find('#tab-0 .DataCard.UntrackedRateCard > div > div > div.DataView-Header.with-dataSetPanel > h3').text).to eq t(lang, 'モニタリング項目(3)') 22 | expect(find('#tab-0 .DataCard.PositiveRateCard > div > div > div.DataView-Header.with-dataSetPanel > h3').text).to eq t(lang, 'モニタリング項目(4)') 23 | expect(find('#tab-0 .DataCard.TokyoRulesApplicationNumberCard > div > div > div.DataView-Header.with-dataSetPanel > h3').text).to eq t(lang, 'モニタリング項目(5)') 24 | expect(find('#tab-0 .DataCard.HospitalizedNumberCard > div > div > div.DataView-Header.with-dataSetPanel > h3').text).to eq t(lang, 'モニタリング項目(6)') 25 | expect(find('#tab-0 .DataCard.SevereCaseCard > div > div > div.DataView-Header.with-dataSetPanel > h3').text).to eq t(lang, 'モニタリング項目(7)') 26 | end 27 | end 28 | end 29 | end 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /components/index/CardsReference/Agency/Card.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 78 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: production deploy 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-18.04 11 | env: 12 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 13 | steps: 14 | - uses: actions/checkout@v2 15 | with: 16 | ref: master 17 | 18 | - name: Setup Node 19 | uses: actions/setup-node@v1 20 | with: 21 | node-version: '14.16.0' 22 | 23 | - name: Get yarn cache directory path 24 | id: yarn-cache-dir-path 25 | run: echo "::set-output name=dir::$(yarn cache dir)" 26 | 27 | - name: Cache dependencies 28 | uses: actions/cache@v2 29 | with: 30 | path: ${{ steps.yarn-cache-dir-path.outputs.dir }} 31 | key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} 32 | restore-keys: | 33 | ${{ runner.os }}-yarn- 34 | 35 | - run: yarn install --frozen-lockfile 36 | - run: yarn run test 37 | - name: generate 38 | run: | 39 | echo "GOOGLE_ANALYTICS_ID=${GOOGLE_ANALYTICS_ID}" >> .env.production 40 | echo "GTM_CONTAINER_ID=${GTM_CONTAINER_ID}" >> .env.production 41 | cat .env.production 42 | yarn run generate:deploy 43 | env: 44 | GOOGLE_ANALYTICS_ID: ${{ secrets.GOOGLE_ANALYTICS_ID }} 45 | GTM_CONTAINER_ID: ${{ secrets.GTM_CONTAINER_ID }} 46 | 47 | - name: Deploy 48 | uses: peaceiris/actions-gh-pages@v3 49 | with: 50 | github_token: ${{ secrets.GITHUB_TOKEN }} 51 | publish_dir: ./dist 52 | publish_branch: production 53 | 54 | - name: Create GitHub release 55 | uses: rymndhng/release-on-push-action@master 56 | with: 57 | bump_version_scheme: patch 58 | 59 | - name: run delete_fbcache.sh 60 | run: | 61 | echo "FB_ACCESS_TOKEN=${FACEBOOK_ACCESS_TOKEN}" > .env 62 | cd ui-test 63 | ./delete_fbcache.sh 64 | env: 65 | FACEBOOK_ACCESS_TOKEN: ${{ secrets.FACEBOOK_ACCESS_TOKEN }} 66 | -------------------------------------------------------------------------------- /components/index/CardsMonitoring/HospitalizedNumber/Card.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 69 | -------------------------------------------------------------------------------- /spec/feature/index_CardsMonitoring_DataViewExpantionPanel_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | card_classes = [ 6 | '.DataCard.ConfirmedCasesNumberCard', 7 | '.DataCard.MonitoringConfirmedCasesNumberCard', 8 | '.DataCard.UntrackedRateCard', 9 | '.DataCard.PositiveRateCard', 10 | '.DataCard.TokyoRulesApplicationNumberCard', 11 | '.DataCard.HospitalizedNumberCard', 12 | '.DataCard.SevereCaseCard' 13 | ] 14 | 15 | describe 'page [/]', type: :feature do 16 | context 'ja' do 17 | describe 'CardsMonitoring' do 18 | before do 19 | visit '/' 20 | render_lazy_contents 21 | end 22 | 23 | shared_examples 'DataViewExpansionPanel' do 24 | example 'Open Panel -> Close Panel' do 25 | # Open Panel 26 | expect(page).not_to have_selector("#{card_class} .DataView-ExpantionPanel .v-expansion-panel--active") 27 | expect(page).not_to have_selector("#{card_class} .DataView-ExpantionPanel button.v-expansion-panel-header.v-expansion-panel-header--active") 28 | find("#{card_class} .DataView-ExpantionPanel button.v-expansion-panel-header").click 29 | expect(page).to have_selector("#{card_class} .DataView-ExpantionPanel .v-expansion-panel--active") 30 | expect(page).to have_selector("#{card_class} .DataView-ExpantionPanel button.v-expansion-panel-header.v-expansion-panel-header--active") 31 | 32 | # Close Panel 33 | find("#{card_class} .DataView-ExpantionPanel button.v-expansion-panel-header.v-expansion-panel-header--active").click 34 | expect(page).not_to have_selector("#{card_class} .DataView-ExpantionPanel .v-expansion-panel--active") 35 | expect(page).not_to have_selector("#{card_class} .DataView-ExpantionPanel button.v-expansion-panel-header.v-expansion-panel-header--active") 36 | end 37 | end 38 | 39 | card_classes.each do |card_class| 40 | context card_class do 41 | let(:card_class) { card_class } 42 | it_behaves_like 'DataViewExpansionPanel' 43 | end 44 | end 45 | end 46 | end 47 | end 48 | 49 | -------------------------------------------------------------------------------- /utils/formatDate.ts: -------------------------------------------------------------------------------- 1 | import dayjs from 'dayjs' 2 | 3 | /** 4 | * Get datetime string formatted ISO8601(YYYY-MM-DDTHH:mm:ss) 5 | * 6 | * @param dateString - Parsable string by dayjs 7 | */ 8 | export const convertDatetimeToISO8601Format = (dateString: string): string => { 9 | return dayjs(dateString).format('YYYY-MM-DDTHH:mm:ss[+09:00]') 10 | } 11 | 12 | /** 13 | * Get date string formatted ISO8601(YYYY-MM-DD) 14 | * 15 | * @param date- Parsable string or date by dayjs 16 | */ 17 | export const convertDateToISO8601Format = (date: string | Date): string => { 18 | return dayjs(date).format('YYYY-MM-DD') 19 | } 20 | 21 | /** 22 | * Get date string formatted follow each country's format(YYYY-MM-DD) 23 | * China, Japan, Korea, Taiwan - YYYY-MM-DD 24 | * US - MM/DD/YYYY 25 | * 26 | * @param dateString- Parsable string by dayjs 27 | * @param locale- User's language 28 | */ 29 | export const convertDateByCountryPreferTimeFormat = ( 30 | dateString: string, 31 | locale: string 32 | ): string => { 33 | if (locale === 'en') { 34 | return dayjs(dateString).format('MMM DD, YYYY') 35 | } 36 | return dayjs(dateString).format('YYYY-MM-DD') 37 | } 38 | 39 | /** 40 | * Get date string formatted Simple(YYYY/MM/DD) 41 | * 42 | * @param dateString- Parsable string by dayjs 43 | */ 44 | export const convertDateToSimpleFormat = (dateString: string): string => { 45 | return dayjs(dateString).format('YYYY/MM/DD') 46 | } 47 | 48 | /** 49 | * Get date string complemented year 50 | * 51 | * @param dateString- Parsable string by dayjs 52 | */ 53 | export const getComplementedDate = (dateString: string): Date => { 54 | const dates = dateString.split('/') 55 | if (dates.length !== 2) { 56 | return new Date(dateString) 57 | } 58 | const month = Number(dates[0]) 59 | const date = Number(dates[1]) 60 | const today = new Date() 61 | const currentMonth = today.getMonth() + 1 62 | const currentDate = today.getDate() 63 | let targetYear = today.getFullYear() 64 | 65 | if (currentMonth < month || (currentMonth === month && currentDate < date)) { 66 | targetYear -= 1 67 | } 68 | 69 | return new Date(targetYear, month - 1, date) 70 | } 71 | --------------------------------------------------------------------------------