diff --git a/.github/workflows/copy-build-to-d2-ci.yml b/.github/workflows/copy-build-to-d2-ci.yml new file mode 100644 index 000000000..0681e7e91 --- /dev/null +++ b/.github/workflows/copy-build-to-d2-ci.yml @@ -0,0 +1,45 @@ +name: Copy build to d2-ci + +on: + push: + branches-ignore: + - master + - next + - next-major + - alpha + - beta + - '[0-9]+.x' + - '[0-9]+.x.x' + - '[0-9]+.[0-9]+.x' + +env: + GH_TOKEN: ${{secrets.DHIS2_BOT_GITHUB_TOKEN}} + +jobs: + copy-to-d2-ci: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + token: ${{env.GH_TOKEN}} + + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: '16.x' + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build package + run: yarn build + + - name: Pack and unpack the build to a directory named 'package' + run: yarn pack --filename output.tgz && tar -xzf output.tgz + + - name: Copy package to d2-ci + uses: dhis2/deploy-build@master + with: + build-dir: package + github-token: ${{env.GH_TOKEN}} diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html new file mode 100644 index 000000000..965f8201c --- /dev/null +++ b/.storybook/preview-head.html @@ -0,0 +1,6 @@ + + + diff --git a/.tx/config b/.tx/config index 5b3223f33..9cff8d175 100644 --- a/.tx/config +++ b/.tx/config @@ -1,6 +1,6 @@ [main] host = https://www.transifex.com -lang_map = fa_AF: prs, uz@Cyrl: uz, uz@Latn: uz_Latn +lang_map = fa_AF: prs, uz@Cyrl: uz_UZ_Cyrl, uz@Latn: uz_UZ_Latn [o:hisp-uio:p:app-analytics:r:en-pot] file_filter = i18n/.po diff --git a/CHANGELOG.md b/CHANGELOG.md index 69b7b35c7..12c72ef7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,420 @@ +## [26.9.1](https://github.com/dhis2/analytics/compare/v26.9.0...v26.9.1) (2024-10-27) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([9a507a2](https://github.com/dhis2/analytics/commit/9a507a2236567597f0cda20e4a0fff9fc1d082f3)) + +# [26.9.0](https://github.com/dhis2/analytics/compare/v26.8.8...v26.9.0) (2024-10-22) + + +### Features + +* implement Single Value as a Highcharts.Chart instance and add offline exporting module ([#1698](https://github.com/dhis2/analytics/issues/1698)) ([40fdfba](https://github.com/dhis2/analytics/commit/40fdfba1c3041cb7cf57845aa101c8a64f0cd919)) + +## [26.8.8](https://github.com/dhis2/analytics/compare/v26.8.7...v26.8.8) (2024-10-20) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([f187092](https://github.com/dhis2/analytics/commit/f1870928b37733395d7f911f48ea7268fed97be1)) + +## [26.8.7](https://github.com/dhis2/analytics/compare/v26.8.6...v26.8.7) (2024-10-18) + + +### Bug Fixes + +* compute totals and cumulative values for numeric/boolean types respecting totalAggregationType (DHIS2-9155) ([#1700](https://github.com/dhis2/analytics/issues/1700)) ([a2bfd20](https://github.com/dhis2/analytics/commit/a2bfd203cb53f174106d8b570cea52cbfc6136f7)) + +## [26.8.6](https://github.com/dhis2/analytics/compare/v26.8.5...v26.8.6) (2024-10-06) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([60f505e](https://github.com/dhis2/analytics/commit/60f505e792cceafba9ba8275031fad82641d9411)) + +## [26.8.5](https://github.com/dhis2/analytics/compare/v26.8.4...v26.8.5) (2024-09-22) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([6285f9a](https://github.com/dhis2/analytics/commit/6285f9a43d7adf2b61bbe8bfbaae865380fb8b8a)) + +## [26.8.4](https://github.com/dhis2/analytics/compare/v26.8.3...v26.8.4) (2024-09-12) + + +### Bug Fixes + +* add translucent prop to CachedDataQueryProvider (DHIS2-18029) ([#1699](https://github.com/dhis2/analytics/issues/1699)) ([ae4dbe6](https://github.com/dhis2/analytics/commit/ae4dbe63add659b4a2d0c8aab543721b0a85ab60)) + +## [26.8.3](https://github.com/dhis2/analytics/compare/v26.8.2...v26.8.3) (2024-08-27) + + +### Bug Fixes + +* compute subtotals/totals for boolean types (DHIS2-9155) ([#1696](https://github.com/dhis2/analytics/issues/1696)) ([3392d78](https://github.com/dhis2/analytics/commit/3392d783b51dd8715beb09b673e567580005a0a2)) + +## [26.8.2](https://github.com/dhis2/analytics/compare/v26.8.1...v26.8.2) (2024-08-27) + + +### Bug Fixes + +* add AO TYPE for event chart and event report ([#1697](https://github.com/dhis2/analytics/issues/1697)) ([efff1c8](https://github.com/dhis2/analytics/commit/efff1c81845a974fe8c60b593e6bbe42c19682d7)) + +## [26.8.1](https://github.com/dhis2/analytics/compare/v26.8.0...v26.8.1) (2024-08-08) + + +### Bug Fixes + +* sort analytics request params and items for cache hit optimization (DHIS2-17861) ([#1695](https://github.com/dhis2/analytics/issues/1695)) ([80c9306](https://github.com/dhis2/analytics/commit/80c93068991aee21556f12960567cca7b594a324)) + +# [26.8.0](https://github.com/dhis2/analytics/compare/v26.7.9...v26.8.0) (2024-08-01) + + +### Features + +* pivot table as default vis type in DV ([#1694](https://github.com/dhis2/analytics/issues/1694)) ([ef6f6ab](https://github.com/dhis2/analytics/commit/ef6f6ab9a94b427af71c36af9f004c95660d8221)) + +## [26.7.9](https://github.com/dhis2/analytics/compare/v26.7.8...v26.7.9) (2024-07-24) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([9bc81ab](https://github.com/dhis2/analytics/commit/9bc81ab1bec16886ad48540f3a3828a97f841ce3)) + +## [26.7.8](https://github.com/dhis2/analytics/compare/v26.7.7...v26.7.8) (2024-07-12) + + +### Bug Fixes + +* do not call period generator with non-4-digit year (DHIS2-17707) ([#1690](https://github.com/dhis2/analytics/issues/1690)) ([f2f516d](https://github.com/dhis2/analytics/commit/f2f516de181f6413061a1bfce5606d7575e5e1f5)) + +## [26.7.7](https://github.com/dhis2/analytics/compare/v26.7.6...v26.7.7) (2024-07-08) + + +### Bug Fixes + +* remove duplicate @dhis2/multi-calendar-dates dependency ([#1689](https://github.com/dhis2/analytics/issues/1689)) ([3e5ece9](https://github.com/dhis2/analytics/commit/3e5ece9b59f45c5902a882dedc40fd1c28322e8a)) + +## [26.7.6](https://github.com/dhis2/analytics/compare/v26.7.5...v26.7.6) (2024-06-26) + + +### Bug Fixes + +* apply legend to all numeric and boolean types (DHIS2-17611) ([#1683](https://github.com/dhis2/analytics/issues/1683)) ([e93b106](https://github.com/dhis2/analytics/commit/e93b106f7e0b3ab9ebae8a21a07d5cebee3d48d3)) + +## [26.7.5](https://github.com/dhis2/analytics/compare/v26.7.4...v26.7.5) (2024-06-25) + + +### Bug Fixes + +* update multicalendar dep for translations (DHIS2-16904) ([#1685](https://github.com/dhis2/analytics/issues/1685)) ([b3a48ba](https://github.com/dhis2/analytics/commit/b3a48ba8cff9956468a2670c0dda16549247bd18)) + +## [26.7.4](https://github.com/dhis2/analytics/compare/v26.7.3...v26.7.4) (2024-06-20) + + +### Bug Fixes + +* **pivot-table:** use a scoped base selector and global sub selectors ([#1681](https://github.com/dhis2/analytics/issues/1681)) ([44b753a](https://github.com/dhis2/analytics/commit/44b753a5dc618d20e92a056691819ea5cee351b3)) + +## [26.7.3](https://github.com/dhis2/analytics/compare/v26.7.2...v26.7.3) (2024-06-16) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([4160138](https://github.com/dhis2/analytics/commit/41601383b5b918914757841791cd62c1a87ec135)) + +## [26.7.2](https://github.com/dhis2/analytics/compare/v26.7.1...v26.7.2) (2024-06-12) + + +### Bug Fixes + +* separator for hundreds, thousands and millions is missing in the Pie charts (DHIS2-16172) ([#1677](https://github.com/dhis2/analytics/issues/1677)) ([ad8c799](https://github.com/dhis2/analytics/commit/ad8c799187a8f143eb16a3f554e5e02afa4a4256)) + +## [26.7.1](https://github.com/dhis2/analytics/compare/v26.7.0...v26.7.1) (2024-06-09) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([5afb945](https://github.com/dhis2/analytics/commit/5afb945ce6a9efa4e748475ef51710272cd0f417)) + +# [26.7.0](https://github.com/dhis2/analytics/compare/v26.6.14...v26.7.0) (2024-06-06) + + +### Features + +* rich text and user mention components (DHIS2-15522) ([#1525](https://github.com/dhis2/analytics/issues/1525)) ([5681126](https://github.com/dhis2/analytics/commit/5681126100d7a8ad06a81cf3c0cd2db4841a1ae4)) + +## [26.6.14](https://github.com/dhis2/analytics/compare/v26.6.13...v26.6.14) (2024-06-03) + + +### Bug Fixes + +* numbers are misaligned in pivot table (DHIS2-16900) ([#1668](https://github.com/dhis2/analytics/issues/1668)) ([454f9a1](https://github.com/dhis2/analytics/commit/454f9a13cbd2ccabce70ffa2dd5fef2a4d8ea686)) + +## [26.6.13](https://github.com/dhis2/analytics/compare/v26.6.12...v26.6.13) (2024-05-31) + + +### Bug Fixes + +* generate correct link for line listing app in FileMenu (DHIS2-16018) ([#1669](https://github.com/dhis2/analytics/issues/1669)) ([c5c9135](https://github.com/dhis2/analytics/commit/c5c9135857343ddecf3c741904bdb2b86e6b000b)) + +## [26.6.12](https://github.com/dhis2/analytics/compare/v26.6.11...v26.6.12) (2024-05-26) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([2e7d587](https://github.com/dhis2/analytics/commit/2e7d5878f21c637ce8f277a01f122147d3163337)) + +## [26.6.11](https://github.com/dhis2/analytics/compare/v26.6.10...v26.6.11) (2024-05-19) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([cb31357](https://github.com/dhis2/analytics/commit/cb313574c4ece7a38823910bfc2d5653c7375ae7)) + +## [26.6.10](https://github.com/dhis2/analytics/compare/v26.6.9...v26.6.10) (2024-05-14) + + +### Bug Fixes + +* dimension list design (DHIS2-16270) ([#1530](https://github.com/dhis2/analytics/issues/1530)) ([e3931e6](https://github.com/dhis2/analytics/commit/e3931e68a1694b81640d0584a585746132ee74de)) + +## [26.6.9](https://github.com/dhis2/analytics/compare/v26.6.8...v26.6.9) (2024-05-08) + + +### Bug Fixes + +* system / user setting for display name not respected in Org Unit tree (DHIS2-15000) ([#1664](https://github.com/dhis2/analytics/issues/1664)) ([899358d](https://github.com/dhis2/analytics/commit/899358d5ea5a486f299ab54ded7b3184608e4bf7)) + +## [26.6.8](https://github.com/dhis2/analytics/compare/v26.6.7...v26.6.8) (2024-05-06) + + +### Bug Fixes + +* fix a crash when row totals is enabled (DHIS2-17297) ([#1660](https://github.com/dhis2/analytics/issues/1660)) ([be6ea56](https://github.com/dhis2/analytics/commit/be6ea56d1c733aba497d669184668f96e8ae344b)) + +## [26.6.7](https://github.com/dhis2/analytics/compare/v26.6.6...v26.6.7) (2024-05-05) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([cfc3e55](https://github.com/dhis2/analytics/commit/cfc3e55231fd84d0bd5b4eff8c8b9e5bc3e05480)) + +## [26.6.6](https://github.com/dhis2/analytics/compare/v26.6.5...v26.6.6) (2024-04-28) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([746dbb9](https://github.com/dhis2/analytics/commit/746dbb97a1bd58b7a921d3a470b113d20b19d2ac)) + +## [26.6.5](https://github.com/dhis2/analytics/compare/v26.6.4...v26.6.5) (2024-04-22) + + +### Bug Fixes + +* **interpretations:** plugin flashes when interacting with Interpretations modal ([#1608](https://github.com/dhis2/analytics/issues/1608)) ([e65e917](https://github.com/dhis2/analytics/commit/e65e917e32fcb28759a913ddc55d98478f6c4d27)) + +## [26.6.4](https://github.com/dhis2/analytics/compare/v26.6.3...v26.6.4) (2024-04-21) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([4b35e69](https://github.com/dhis2/analytics/commit/4b35e6910db17ddbd96b4030ee528b82f045b7e4)) + +## [26.6.3](https://github.com/dhis2/analytics/compare/v26.6.2...v26.6.3) (2024-04-19) + + +### Bug Fixes + +* **aboutAOUnit:** newlines missing in AO description ([#1655](https://github.com/dhis2/analytics/issues/1655)) ([98580ae](https://github.com/dhis2/analytics/commit/98580ae8c9a7b0cb723a4712bf2da953b2e6b613)) + +## [26.6.2](https://github.com/dhis2/analytics/compare/v26.6.1...v26.6.2) (2024-04-14) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([e1eae74](https://github.com/dhis2/analytics/commit/e1eae74a18eabd228c58a91fa19413d4e338c4cc)) + +## [26.6.1](https://github.com/dhis2/analytics/compare/v26.6.0...v26.6.1) (2024-03-24) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([6362f7e](https://github.com/dhis2/analytics/commit/6362f7ec35219997971531345fdde81021493129)) + +# [26.6.0](https://github.com/dhis2/analytics/compare/v26.5.0...v26.6.0) (2024-03-13) + + +### Features + +* add support for trackedEntities analytics requests (DHIS2-16023) ([#1594](https://github.com/dhis2/analytics/issues/1594)) ([885af10](https://github.com/dhis2/analytics/commit/885af10022a022b1204fa9be0efa868c70b210a7)) + +# [26.5.0](https://github.com/dhis2/analytics/compare/v26.4.1...v26.5.0) (2024-03-13) + + +### Features + +* add support for Outliers table vis type in DV (DHIS2-13858) ([#1598](https://github.com/dhis2/analytics/issues/1598)) ([d9b1ccd](https://github.com/dhis2/analytics/commit/d9b1ccd7529adccb8dd1579e881721d685e7cb1d)) + +## [26.4.1](https://github.com/dhis2/analytics/compare/v26.4.0...v26.4.1) (2024-03-05) + + +### Bug Fixes + +* interpretations panel renders with flashing when liking or unliking an interpretation ([#1600](https://github.com/dhis2/analytics/issues/1600)) ([bb32565](https://github.com/dhis2/analytics/commit/bb32565960a5f813aaac594b61edc2f9e53d6a4d)) +* use translated title and subtitle when available (DHIS2-16216) ([#1597](https://github.com/dhis2/analytics/issues/1597)) ([5a91391](https://github.com/dhis2/analytics/commit/5a91391272022aab14081ba65e0b103693e01daa)) + +# [26.4.0](https://github.com/dhis2/analytics/compare/v26.3.1...v26.4.0) (2024-03-04) + + +### Features + +* update interpretations component so it can be used in dashboard items ([#1510](https://github.com/dhis2/analytics/issues/1510)) ([163abf6](https://github.com/dhis2/analytics/commit/163abf60326a97248daa019c65b4658c78701780)) + +## [26.3.1](https://github.com/dhis2/analytics/compare/v26.3.0...v26.3.1) (2024-02-28) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([1f30bb2](https://github.com/dhis2/analytics/commit/1f30bb2db5d16c1cff95437006db64e6060ae3d2)) + +# [26.3.0](https://github.com/dhis2/analytics/compare/v26.2.4...v26.3.0) (2024-01-25) + + +### Features + +* add classname prop to hover-menu-dropdown ([57eb703](https://github.com/dhis2/analytics/commit/57eb703a4227e6496d021fdb17d6d4fd0e935eb9)) + +## [26.2.4](https://github.com/dhis2/analytics/compare/v26.2.3...v26.2.4) (2024-01-21) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([41aa57f](https://github.com/dhis2/analytics/commit/41aa57ff24e790b8db2e21d916b22fb03d6878b2)) + +## [26.2.3](https://github.com/dhis2/analytics/compare/v26.2.2...v26.2.3) (2024-01-19) + + +### Bug Fixes + +* adjust width of interpretation reply input when in focus [DHIS2-16429] ([#1607](https://github.com/dhis2/analytics/issues/1607)) ([14fbfb5](https://github.com/dhis2/analytics/commit/14fbfb5bbfbbaa430631d39b8ca77c68817f10a4)) + +## [26.2.2](https://github.com/dhis2/analytics/compare/v26.2.1...v26.2.2) (2024-01-02) + + +### Bug Fixes + +* add white-space css to preserve paragraphs in interpretations ([#1599](https://github.com/dhis2/analytics/issues/1599)) ([52ae98d](https://github.com/dhis2/analytics/commit/52ae98d3cadd975c2079055b00adba58f0982ef4)) + +## [26.2.1](https://github.com/dhis2/analytics/compare/v26.2.0...v26.2.1) (2023-12-24) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([bac4cc9](https://github.com/dhis2/analytics/commit/bac4cc94572b2e8367fb3d1f061eb7ed122f372f)) + +# [26.2.0](https://github.com/dhis2/analytics/compare/v26.1.8...v26.2.0) (2023-12-14) + + +### Features + +* implement cumulative values in PT engine (DHIS2-5497) ([#1567](https://github.com/dhis2/analytics/issues/1567)) ([2b404b4](https://github.com/dhis2/analytics/commit/2b404b423cfb49347bdf57125870bb7b55338322)) + +## [26.1.8](https://github.com/dhis2/analytics/compare/v26.1.7...v26.1.8) (2023-11-26) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([43a607b](https://github.com/dhis2/analytics/commit/43a607ba0310b19edd07d866f15337e736567b2f)) + +## [26.1.7](https://github.com/dhis2/analytics/compare/v26.1.6...v26.1.7) (2023-11-19) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([cb4a052](https://github.com/dhis2/analytics/commit/cb4a052a19ebdced3ea7b6ffb7d1c40064abac38)) + +## [26.1.6](https://github.com/dhis2/analytics/compare/v26.1.5...v26.1.6) (2023-11-07) + + +### Bug Fixes + +* use json+patch for PATCH requests ([#1593](https://github.com/dhis2/analytics/issues/1593)) ([bdb0b9c](https://github.com/dhis2/analytics/commit/bdb0b9ceaa5ef102ef9768038c763b70a3d5e7d1)) + +## [26.1.5](https://github.com/dhis2/analytics/compare/v26.1.4...v26.1.5) (2023-11-03) + + +### Bug Fixes + +* use correct colors in "basic" color set ([#1592](https://github.com/dhis2/analytics/issues/1592)) ([6356250](https://github.com/dhis2/analytics/commit/63562501bd8b020742bb7ee8b17621975790c3c6)) + +## [26.1.4](https://github.com/dhis2/analytics/compare/v26.1.3...v26.1.4) (2023-10-29) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([435e077](https://github.com/dhis2/analytics/commit/435e07717c586365dfa67ad9ffb8acd5167e9ea2)) + +## [26.1.3](https://github.com/dhis2/analytics/compare/v26.1.2...v26.1.3) (2023-10-22) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([0a250af](https://github.com/dhis2/analytics/commit/0a250af64b9df6bfd7334f6cf2ecc5d150003e2d)) + +## [26.1.2](https://github.com/dhis2/analytics/compare/v26.1.1...v26.1.2) (2023-10-18) + + +### Bug Fixes + +* handle both Set and array for currentUser.authorities when checking interpretations access (DHIS2-15964) ([d3d45ab](https://github.com/dhis2/analytics/commit/d3d45abd352a6b9609d732c24a718fef83b076c7)) +* interpretation panel display date and timestamps according to client time zone (DHIS2-15825) ([8e60f26](https://github.com/dhis2/analytics/commit/8e60f266bd55f8dee9745ad1930f6525e3ca96f3)) +* interpretations modal height (DHIS2-15558) ([014d43e](https://github.com/dhis2/analytics/commit/014d43e241d59e841f72d203f8b8f657516aa147)) +* show warning text below RichTextEditor when unable to show snapshot (DHIS2-15781) ([f27bc38](https://github.com/dhis2/analytics/commit/f27bc38e5cf47840971eb685f0ee705f174eadc0)) + +## [26.1.1](https://github.com/dhis2/analytics/compare/v26.1.0...v26.1.1) (2023-10-05) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([dd9c23f](https://github.com/dhis2/analytics/commit/dd9c23f34a0489cae89f5f5c10ab1dc17e2c13ef)) + +# [26.1.0](https://github.com/dhis2/analytics/compare/v26.0.21...v26.1.0) (2023-10-03) + + +### Features + +* **pivot-table:** truncate title and show full in tooltip ([#1579](https://github.com/dhis2/analytics/issues/1579)) ([c37ba2d](https://github.com/dhis2/analytics/commit/c37ba2d1a187963b3b5aeee5b951bcf9c129dcd2)) + +## [26.0.21](https://github.com/dhis2/analytics/compare/v26.0.20...v26.0.21) (2023-09-28) + + +### Bug Fixes + +* avoid crash in DV with some chart types DHIS2-15882 ([#1582](https://github.com/dhis2/analytics/issues/1582)) ([f6c89e1](https://github.com/dhis2/analytics/commit/f6c89e1481dbbc2ea2cfe80a3c9ed7f81a63c83c)) + +## [26.0.20](https://github.com/dhis2/analytics/compare/v26.0.19...v26.0.20) (2023-09-25) + + +### Bug Fixes + +* export function for preparing payload for copy DHIS2-15722 ([#1573](https://github.com/dhis2/analytics/issues/1573)) ([a1f8d69](https://github.com/dhis2/analytics/commit/a1f8d694121d62d001f7b4567d84d49ecec377fd)) + +## [26.0.19](https://github.com/dhis2/analytics/compare/v26.0.18...v26.0.19) (2023-09-15) + + +### Bug Fixes + +* use translated dimension labels in PT DHIS2-15750 ([#1572](https://github.com/dhis2/analytics/issues/1572)) ([492975e](https://github.com/dhis2/analytics/commit/492975e46d1570e7856ef217a9a28c3ede5c7fa5)) + +## [26.0.18](https://github.com/dhis2/analytics/compare/v26.0.17...v26.0.18) (2023-09-13) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([e4f95e9](https://github.com/dhis2/analytics/commit/e4f95e9147a337f9a675ffebff641ea5bd9a0430)) + ## [26.0.17](https://github.com/dhis2/analytics/compare/v26.0.16...v26.0.17) (2023-08-28) diff --git a/README.md b/README.md index 765527a1a..e39d92a55 100644 --- a/README.md +++ b/README.md @@ -3,23 +3,8 @@ **master** [![Test](https://github.com/dhis2/analytics/actions/workflows/node-test.yml/badge.svg)](https://github.com/dhis2/analytics/actions/workflows/node-test.yml) [![DHIS2: Release](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml/badge.svg)](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml) -**21.x** -[![Test](https://github.com/dhis2/analytics/actions/workflows/node-test.yml/badge.svg?branch=21.x)](https://github.com/dhis2/analytics/actions/workflows/node-test.yml) [![DHIS2: Release](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml/badge.svg?branch=21.x)](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml) - -**20.x** -[![Test](https://github.com/dhis2/analytics/actions/workflows/node-test.yml/badge.svg?branch=20.x)](https://github.com/dhis2/analytics/actions/workflows/node-test.yml) [![DHIS2: Release](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml/badge.svg?branch=20.x)](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml) - -**16.x** -[![Test](https://github.com/dhis2/analytics/actions/workflows/node-test.yml/badge.svg?branch=16.x)](https://github.com/dhis2/analytics/actions/workflows/node-test.yml) [![DHIS2: Release](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml/badge.svg?branch=16.x)](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml) - -**11.0.x** -[![Test](https://github.com/dhis2/analytics/actions/workflows/node-test.yml/badge.svg?branch=11.0.x)](https://github.com/dhis2/analytics/actions/workflows/node-test.yml) [![DHIS2: Release](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml/badge.svg?branch=11.0.x)](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml) - -**4.x** -[![Test](https://github.com/dhis2/analytics/actions/workflows/node-test.yml/badge.svg?branch=4.x)](https://github.com/dhis2/analytics/actions/workflows/node-test.yml) [![DHIS2: Release](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml/badge.svg?branch=4.x)](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml) - -**2.4.x** -[![Test](https://github.com/dhis2/analytics/actions/workflows/node-test.yml/badge.svg?branch=2.4.x)](https://github.com/dhis2/analytics/actions/workflows/node-test.yml) [![DHIS2: Release](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml/badge.svg?branch=2.4.x)](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml) +**24.x** +[![Test](https://github.com/dhis2/analytics/actions/workflows/node-test.yml/badge.svg?branch=24.x)](https://github.com/dhis2/analytics/actions/workflows/node-test.yml) [![DHIS2: Release](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml/badge.svg?branch=24.x)](https://github.com/dhis2/analytics/actions/workflows/node-publish.yml) ## Overview @@ -28,6 +13,7 @@ The analytics library contains components and modules that are used in DHIS 2 an - [dhis2/dashboards-app](https://github.com/dhis2/dashboards-app) - [dhis2/data-visualizer-app](https://github.com/dhis2/data-visualizer-app) - [dhis2/maps-app](https://github.com/dhis2/maps-app) +- [dhis2/line-listing-app](https://github.com/dhis2/line-listing-app) [Module layout documentation](./docs/module-layout.md) @@ -35,7 +21,7 @@ The analytics library contains components and modules that are used in DHIS 2 an The analytics package is published to npm as @dhis2/analytics. -To publish, simply mark the commit using [semantic release terminology](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines) (see notes below for branch-specific restrictions). Once committed, github actions will take care of publishing the new version to npm. +To publish, mark the commit using [semantic release terminology](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines) (see notes below for branch-specific restrictions). Once committed, github actions will take care of publishing the new version to npm. ### master branch @@ -43,7 +29,31 @@ The master branch follows semantic versioning according to spec. ### .x branches -Commits to .x branches (e.g. 16.x) cannot trigger a major version bump, even if it is technically a breaking change. This is because the next version has already been published. Additionally, branches that use .x for the patch version (e.g. 11.0.x, 2.4.x), cannot trigger a minor version bump. In the unlikely case that you need to commit a change that would trigger a version bump that's not possible, you will have to mark it to only trigger a patch or minor bump respectively, then make sure to update the apps that are locked to the .x version of analytics +Commits to .x branches (e.g. 24.x) cannot trigger a major version bump, even if it is technically a breaking change. This is because the next version has already been published. Additionally, branches that use .x for the patch version (e.g. 11.0.x, 2.4.x), cannot trigger a minor version bump. In the unlikely case that you need to commit a change that would trigger a version bump that's not possible, you will have to mark it to only trigger a patch or minor bump respectively, then make sure to update the apps that are locked to the .x version of analytics + +## Publishing pre-release versions during app development + +Builds for all non-production branches are automatically copied to [d2-ci/analytics](https://github.com/d2-ci/analytics) for use during development and testing, prior to production release. + +To test changes in a development branch, change the analytics dependency of package.json of the app you are testing with. There are a few options: + +1. point to a specific commit: + +``` +"dependencies": { + "@dhis2/analytics": "git+https://github.com/d2-ci/analytics.git#70249ebe8be39051fa10142f850de449e1ec488c", + ... +} +``` + +2. point to a branch: + +``` +"dependencies": { + "@dhis2/analytics": "git+https://github.com/d2-ci/analytics.git#chore/some-chore", + ... +} +``` ## Report an issue diff --git a/i18n/cs.po b/i18n/cs.po index 5d74aade2..ac460b093 100644 --- a/i18n/cs.po +++ b/i18n/cs.po @@ -1,13 +1,14 @@ # # Translators: -# Jiří Podhorecký, 2023 +# Philip Larsen Donnelly, 2024 +# Jiří Podhorecký, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-01-25T12:05:03.360Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Jiří Podhorecký, 2023\n" +"Last-Translator: Jiří Podhorecký, 2024\n" "Language-Team: Czech (https://app.transifex.com/hisp-uio/teams/100509/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -159,6 +160,9 @@ msgstr "Matematické operátory" msgid "Data Type" msgstr "Typ dat" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "" + msgid "All types" msgstr "Všechny typy" @@ -189,6 +193,9 @@ msgstr "Nebyly nalezeny žádné datové položky události" msgid "No program indicators found" msgstr "Nebyly nalezeny žádné programové indikátory" +msgid "No calculations found" +msgstr "Nenalezeny žádné výpočty" + msgid "No indicators found for \"{{- searchTerm}}\"" msgstr "Nebyly nalezeny žádné indikátory pro „{{- searchTerm}}“" @@ -201,6 +208,9 @@ msgstr "Pro „{{- searchTerm}}“ nebyly nalezeny žádné datové položky ud msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "Nebyly nalezeny žádné programové indikátory pro „{{- searchTerm}}“" +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "" + msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "Pro dotaz „{{- searchTerm}}“ nebylo nic nalezeno" @@ -385,6 +395,10 @@ msgstr "Skrýt interpretaci" msgid "Write an interpretation" msgstr "Napsat interpretaci" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "Vložit interpretaci" @@ -410,12 +424,15 @@ msgstr "Na rozdíl od" msgid "Like" msgstr "Jako" -msgid "Share" -msgstr "Sdílet" - msgid "See interpretation" msgstr "Zobrazit interpretaci" +msgid "Open in app" +msgstr "" + +msgid "Share" +msgstr "Sdílet" + msgid "Manage sharing" msgstr "Spravovat sdílení" @@ -638,7 +655,7 @@ msgstr[2] "{{count}} skupin" msgstr[3] "{{count}} skupin" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "Vybráno: {{commaSeparatedListOfOfOrganisationUnits}}" +msgstr "Vybráno: {{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" msgstr "Není vybráno nic" @@ -673,15 +690,15 @@ msgstr "Vybrat rok" msgid "Period" msgstr "Období" +msgid "Selected Periods" +msgstr "Vybraná období" + msgid "Relative periods" msgstr "Relativní období" msgid "Fixed periods" msgstr "Pevné období" -msgid "Selected Periods" -msgstr "Vybraná období" - msgid "No periods selected" msgstr "Nejsou vybrána žádná období" @@ -1183,6 +1200,9 @@ msgstr "Rozptyl" msgid "Single value" msgstr "Jedna hodnota" +msgid "Outlier table" +msgstr "" + msgid "All charts" msgstr "Všechny grafy" diff --git a/i18n/en.pot b/i18n/en.pot index 52645c02d..8f0bb1884 100644 --- a/i18n/en.pot +++ b/i18n/en.pot @@ -5,8 +5,8 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" -"PO-Revision-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-10-11T12:49:26.846Z\n" +"PO-Revision-Date: 2024-10-11T12:49:26.847Z\n" msgid "view only" msgstr "view only" @@ -67,6 +67,12 @@ msgstr "About this line list" msgid "About this visualization" msgstr "About this visualization" +msgid "About this event chart" +msgstr "About this event chart" + +msgid "About this event report" +msgstr "About this event report" + msgid "This app could not retrieve required data." msgstr "This app could not retrieve required data." @@ -150,6 +156,9 @@ msgstr "Math operators" msgid "Data Type" msgstr "Data Type" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "Only {{dataType}} can be used in {{visType}}" + msgid "All types" msgstr "All types" @@ -180,6 +189,9 @@ msgstr "No event data items found" msgid "No program indicators found" msgstr "No program indicators found" +msgid "No calculations found" +msgstr "No calculations found" + msgid "No indicators found for \"{{- searchTerm}}\"" msgstr "No indicators found for \"{{- searchTerm}}\"" @@ -192,6 +204,9 @@ msgstr "No event data items found for \"{{- searchTerm}}\"" msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "No program indicators found for \"{{- searchTerm}}\"" +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "No calculations found for \"{{- searchTerm}}\"" + msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "Nothing found for \"{{- searchTerm}}\"" @@ -374,6 +389,9 @@ msgstr "Hide interpretation" msgid "Write an interpretation" msgstr "Write an interpretation" +msgid "Other people viewing this interpretation in the future may see more data." +msgstr "Other people viewing this interpretation in the future may see more data." + msgid "Post interpretation" msgstr "Post interpretation" @@ -397,12 +415,15 @@ msgstr "Unlike" msgid "Like" msgstr "Like" -msgid "Share" -msgstr "Share" - msgid "See interpretation" msgstr "See interpretation" +msgid "Open in app" +msgstr "Open in app" + +msgid "Share" +msgstr "Share" + msgid "Manage sharing" msgstr "Manage sharing" @@ -412,39 +433,6 @@ msgstr "Could not update interpretation" msgid "Enter interpretation text" msgstr "Enter interpretation text" -msgid "Bold text" -msgstr "Bold text" - -msgid "Italic text" -msgstr "Italic text" - -msgid "Link to a URL" -msgstr "Link to a URL" - -msgid "Mention a user" -msgstr "Mention a user" - -msgid "Add emoji" -msgstr "Add emoji" - -msgid "Preview" -msgstr "Preview" - -msgid "Back to write mode" -msgstr "Back to write mode" - -msgid "Too many results. Try refining the search." -msgstr "Too many results. Try refining the search." - -msgid "Search for a user" -msgstr "Search for a user" - -msgid "Searching for \"{{- searchText}}\"" -msgstr "Searching for \"{{- searchText}}\"" - -msgid "No results found" -msgstr "No results found" - msgid "Not available offline" msgstr "Not available offline" @@ -651,15 +639,15 @@ msgstr "Select year" msgid "Period" msgstr "Period" +msgid "Selected Periods" +msgstr "Selected Periods" + msgid "Relative periods" msgstr "Relative periods" msgid "Fixed periods" msgstr "Fixed periods" -msgid "Selected Periods" -msgstr "Selected Periods" - msgid "No periods selected" msgstr "No periods selected" @@ -867,6 +855,30 @@ msgstr "Financial Years" msgid "Years" msgstr "Years" +msgid "Value: {{value}}" +msgstr "Value: {{value}}" + +msgid "Bold text" +msgstr "Bold text" + +msgid "Italic text" +msgstr "Italic text" + +msgid "Link to a URL" +msgstr "Link to a URL" + +msgid "Mention a user" +msgstr "Mention a user" + +msgid "Add emoji" +msgstr "Add emoji" + +msgid "Preview" +msgstr "Preview" + +msgid "Back to write mode" +msgstr "Back to write mode" + msgid "Interpretations and details" msgstr "Interpretations and details" @@ -897,6 +909,18 @@ msgstr "Could not load translations" msgid "Retry" msgstr "Retry" +msgid "Too many results. Try refining the search." +msgstr "Too many results. Try refining the search." + +msgid "Search for a user" +msgstr "Search for a user" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "Searching for \"{{- searchText}}\"" + +msgid "No results found" +msgstr "No results found" + msgid "Series" msgstr "Series" @@ -1104,6 +1128,9 @@ msgstr "{{thresholdFactor}} × Z-score low" msgid "{{thresholdFactor}} × Z-score high" msgstr "{{thresholdFactor}} × Z-score high" +msgid "Not applicable" +msgstr "Not applicable" + msgid "Data" msgstr "Data" @@ -1161,6 +1188,9 @@ msgstr "Scatter" msgid "Single value" msgstr "Single value" +msgid "Outlier table" +msgstr "Outlier table" + msgid "All charts" msgstr "All charts" diff --git a/i18n/es.po b/i18n/es.po index 2983c3317..df5f2b426 100644 --- a/i18n/es.po +++ b/i18n/es.po @@ -6,17 +6,17 @@ # Gabriela Rodriguez , 2022 # Viktor Varland , 2022 # Marta Vila , 2023 -# phil_dhis2, 2023 # Janeth Cruz, 2023 # Sergio Valenzuela , 2023 -# Enzo Nicolas Rossi , 2023 +# Philip Larsen Donnelly, 2024 +# Enzo Nicolas Rossi , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-08-27T11:29:09.031Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Enzo Nicolas Rossi , 2023\n" +"Last-Translator: Enzo Nicolas Rossi , 2024\n" "Language-Team: Spanish (https://app.transifex.com/hisp-uio/teams/100509/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -86,6 +86,12 @@ msgstr "Acerca de este listado" msgid "About this visualization" msgstr "Acerca de esta visualización" +msgid "About this event chart" +msgstr "Acerca de este gráfico de eventos" + +msgid "About this event report" +msgstr "Acerca de este informe" + msgid "This app could not retrieve required data." msgstr "Esta aplicación no pudo recuperar los datos requeridos." @@ -171,6 +177,9 @@ msgstr "Operadores matemáticos" msgid "Data Type" msgstr "Tipo de datos" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "Sólo {{dataType}} se puede utilizar en {{visType}}" + msgid "All types" msgstr "Todos los tipos" @@ -201,6 +210,9 @@ msgstr "No se encontraron elementos para datos de eventos" msgid "No program indicators found" msgstr "No se han encontrado indicadores de programa" +msgid "No calculations found" +msgstr "No se encontraron cálculos" + msgid "No indicators found for \"{{- searchTerm}}\"" msgstr "No se han encontrado indicadores para \"{{- searchTerm}}\"" @@ -214,6 +226,9 @@ msgstr "" msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "No se han encontrado indicadores de programa para \"{{- searchTerm}}\"" +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "No se encontraron cálculos para \"{{- searchTerm}}\"" + msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "No se encontró nada para \"{{- searchTerm}}\"" @@ -227,10 +242,10 @@ msgid "All metrics" msgstr "Todas las métricas" msgid "Move to {{axisName}}" -msgstr "Mover a {{Nombredeleje}}" +msgstr "Mover a {{axisName}}" msgid "Add to {{axisName}}" -msgstr "Añadir a {{Nombredeleje}}" +msgstr "Añadir a {{axisName}}" msgid "Not available for {{visualizationType}}" msgstr "No disponible para {{visualizationType}}" @@ -399,8 +414,14 @@ msgstr "Ocultar interpretación" msgid "Write an interpretation" msgstr "Escribir una interpretación" -msgid "Post interpretation" +msgid "" +"Other people viewing this interpretation in the future may see more data." msgstr "" +"Otras personas que vean esta interpretación en el futuro podrían ver más " +"datos." + +msgid "Post interpretation" +msgstr "Interpretación posterior" msgid "Interpretations" msgstr "Interpretaciones" @@ -415,7 +436,7 @@ msgstr[1] "{{contar}} respuestas" msgstr[2] "{{count}} respuestas" msgid "View replies" -msgstr "" +msgstr "Ver respuestas" msgid "Unlike" msgstr "diferente a" @@ -423,12 +444,15 @@ msgstr "diferente a" msgid "Like" msgstr "como" -msgid "Share" -msgstr "Compartir" - msgid "See interpretation" msgstr "Ver interpretación" +msgid "Open in app" +msgstr "Abrir en la aplicación" + +msgid "Share" +msgstr "Compartir" + msgid "Manage sharing" msgstr "Administrar compartir" @@ -438,39 +462,6 @@ msgstr "No se pudo actualizar la interpretación" msgid "Enter interpretation text" msgstr "Introducir el texto de la interpretación" -msgid "Bold text" -msgstr "Texto en negrita" - -msgid "Italic text" -msgstr "Texto en cursiva" - -msgid "Link to a URL" -msgstr "Enlace a una URL" - -msgid "Mention a user" -msgstr "Mencionar a un usuario" - -msgid "Add emoji" -msgstr "Añadir emoji" - -msgid "Preview" -msgstr "Vista previa" - -msgid "Back to write mode" -msgstr "Volver al modo de escritura" - -msgid "Too many results. Try refining the search." -msgstr "Demasiados resultados. Intenta refinar la búsqueda." - -msgid "Search for a user" -msgstr "Buscar un usuario" - -msgid "Searching for \"{{- searchText}}\"" -msgstr "Buscando \"{{- searchText}}\"" - -msgid "No results found" -msgstr "No results found" - msgid "Not available offline" msgstr "No disponible sin conexión a internet" @@ -636,15 +627,15 @@ msgstr[2] "{{count}} unidades organizativas" msgid "{{count}} levels" msgid_plural "{{count}} levels" -msgstr[0] "{{contar}} nivel" -msgstr[1] "{{contar}} niveles" -msgstr[2] "{{contar}} niveles" +msgstr[0] "{{count}} nivel" +msgstr[1] "{{count}} niveles" +msgstr[2] "{{count}} niveles" msgid "{{count}} groups" msgid_plural "{{count}} groups" -msgstr[0] "{{contar}} grupo" -msgstr[1] "{{contar}} grupos" -msgstr[2] "{{contar}} grupos" +msgstr[0] "{{count}} grupo" +msgstr[1] "{{count}} grupos" +msgstr[2] "{{count}} grupos" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" msgstr "Seleccionado: {{commaSeparatedListOfOrganisationUnits}}" @@ -653,7 +644,7 @@ msgid "Nothing selected" msgstr "Nada seleccionado" msgid "User organisation unit" -msgstr "Usuario de unidad organizativa" +msgstr "Unidad organizativa del usuario" msgid "User sub-units" msgstr "Subunidades de usuario" @@ -682,15 +673,15 @@ msgstr "Seleccionar año" msgid "Period" msgstr "Periodo" +msgid "Selected Periods" +msgstr "Periodos seleccionados" + msgid "Relative periods" msgstr "Periodos relativos" msgid "Fixed periods" msgstr "Periodos fijos" -msgid "Selected Periods" -msgstr "Periodos seleccionados" - msgid "No periods selected" msgstr "No se ha seleccionado ningún periodo" @@ -898,6 +889,27 @@ msgstr "Años fiscales" msgid "Years" msgstr "Años" +msgid "Bold text" +msgstr "Texto en negrita" + +msgid "Italic text" +msgstr "Texto en cursiva" + +msgid "Link to a URL" +msgstr "Enlace a una URL" + +msgid "Mention a user" +msgstr "Mencionar a un usuario" + +msgid "Add emoji" +msgstr "Añadir emoji" + +msgid "Preview" +msgstr "Vista previa" + +msgid "Back to write mode" +msgstr "Volver al modo de escritura" + msgid "Interpretations and details" msgstr "Interpretaciones y detalles" @@ -928,6 +940,18 @@ msgstr "No se pudieron cargar las traducciones" msgid "Retry" msgstr "Reintentar" +msgid "Too many results. Try refining the search." +msgstr "Demasiados resultados. Intenta refinar la búsqueda." + +msgid "Search for a user" +msgstr "Buscar un usuario" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "Buscando \"{{- searchText}}\"" + +msgid "No results found" +msgstr "No results found" + msgid "Series" msgstr "Series" @@ -1194,6 +1218,9 @@ msgstr "Dispersión" msgid "Single value" msgstr "Valor único" +msgid "Outlier table" +msgstr "tabla de valores atípicos" + msgid "All charts" msgstr "Todos los gráficos" @@ -1223,9 +1250,9 @@ msgstr "Eje {{axisId}}" msgid "{{count}} items" msgid_plural "{{count}} items" -msgstr[0] "{{contar}} elemento" -msgstr[1] "{{contar}} artículos" -msgstr[2] "{{contar}} artículos" +msgstr[0] "{{count}} elemento" +msgstr[1] "{{count}} artículos" +msgstr[2] "{{count}} artículos" msgid "Reset zoom" msgstr "Restablecer zoom" diff --git a/i18n/es_419.po b/i18n/es_419.po index 397bfb887..9ea8454a5 100644 --- a/i18n/es_419.po +++ b/i18n/es_419.po @@ -1,14 +1,14 @@ # # Translators: # Jaime Bosque , 2022 -# Enzo Nicolas Rossi , 2023 +# Enzo Nicolas Rossi , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2024-06-26T14:09:30.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Enzo Nicolas Rossi , 2023\n" +"Last-Translator: Enzo Nicolas Rossi , 2024\n" "Language-Team: Spanish (Latin America) (https://app.transifex.com/hisp-uio/teams/100509/es_419/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,299 +17,321 @@ msgstr "" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" msgid "view only" -msgstr "" +msgstr "ver sólo" msgid "view and edit" -msgstr "" +msgstr "ver y editar" msgid "all users ({{accessLevel}})" -msgstr "" +msgstr "todos los usuarios ({{accessLevel}})" msgid "{{userOrGroup}} ({{accessLevel}})" -msgstr "" +msgstr "{{userOrGroup}} ({{accessLevel}})" msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" -msgstr "" +msgstr "Compartido con {{commaSeparatedListOfUsersAndGroups}}" msgid "Not shared with any users or groups" -msgstr "" +msgstr "No se comparte con ningún usuario o grupo" msgid "No description" -msgstr "" +msgstr "Sin descripción" msgid "Last updated {{time}}" -msgstr "" +msgstr "Última actualización {{time}}" msgid "Created {{time}} by {{author}}" -msgstr "" +msgstr "Creado {{time}} por {{author}}" msgid "Created {{time}}" -msgstr "" +msgstr "Creado {{time}}" msgid "Viewed {{count}} times" msgid_plural "Viewed {{count}} times" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Visto 1 vez" +msgstr[1] "Visto {{count}} veces" +msgstr[2] "Visto {{count}} veces" msgid "Notifications" -msgstr "" +msgstr "Notificaciones" msgid "You're subscribed and getting updates about new interpretations." msgstr "" +"Estás suscrito y recibes actualizaciones sobre nuevas interpretaciones." msgid "Unsubscribe" -msgstr "" +msgstr "Cancelar suscripción" msgid "Subscribe to get updates about new interpretations." msgstr "" +"Suscríbase para recibir información actualizada sobre nuevas " +"interpretaciones." msgid "Subscribe" -msgstr "" +msgstr "Suscríbase a" msgid "About this map" -msgstr "" +msgstr "Acerca de este mapa" msgid "About this line list" -msgstr "" +msgstr "Acerca de esta lista" msgid "About this visualization" -msgstr "" +msgstr "Acerca de esta visualización" msgid "This app could not retrieve required data." -msgstr "" +msgstr "Esta aplicación no pudo recuperar los datos requeridos." msgid "Network error" -msgstr "" +msgstr "Error de red" msgid "Data / Edit calculation" -msgstr "" +msgstr "Datos / Editar cálculo" msgid "Data / New calculation" -msgstr "" +msgstr "Datos / Nuevo cálculo" msgid "Remove item" -msgstr "" +msgstr "Quitar elemento" msgid "Check formula" -msgstr "" +msgstr "Verificar fórmula" msgid "Calculation name" -msgstr "" +msgstr "Nombre del cálculo" msgid "Shown in table headers and chart axes/legends" msgstr "" +"Se muestra en los encabezados de las tablas y en los ejes/leyendas de los " +"gráficos" msgid "Delete calculation" -msgstr "" +msgstr "Borrar cálculo" msgid "Cancel" msgstr "Cancelar" msgid "The calculation can only be saved with a valid formula" -msgstr "" +msgstr "El cálculo sólo puede guardarse con una fórmula válida" msgid "Add a name to save this calculation" -msgstr "" +msgstr "Añada un nombre para guardar este cálculo" msgid "Save calculation" -msgstr "" +msgstr "Guardar cálculo" msgid "" "Are you sure you want to delete this calculation? It may be used by other " "visualizations." msgstr "" +"¿Está seguro de que desea eliminar este cálculo? Puede ser utilizado por " +"otras visualizaciones." msgid "Yes, delete" -msgstr "" +msgstr "Sí, borrar" msgid "Totals only" -msgstr "" +msgstr "Sólo totales" msgid "Details only" -msgstr "" +msgstr "Sólo detalles" msgid "Loading" -msgstr "" +msgstr "Cargando" msgid "Data elements" -msgstr "" +msgstr "Elementos de datos" msgid "Search by data element name" -msgstr "" +msgstr "Búsqueda por nombre de elemento de datos" msgid "No data elements found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "No se han encontrado datos para \"{{- searchTerm}}\"" msgid "No data elements found" -msgstr "" +msgstr "No se han encontrado datos" msgid "" "Drag items here, or double click in the list, to start building a " "calculation formula" msgstr "" +"Arrastre los elementos aquí, o haga doble clic en la lista, para empezar a " +"construir una fórmula de cálculo" msgid "Math operators" -msgstr "" +msgstr "Operadores matemáticos" msgid "Data Type" -msgstr "" +msgstr "Tipo de datos" + +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "Sólo {{dataType}} puede utilizarse en {{visType}}" msgid "All types" -msgstr "" +msgstr "Todos los tipos" msgid "Disaggregation" -msgstr "" +msgstr "Desagregación" msgid "No data" msgstr "No hay datos" msgid "Search by data item name" -msgstr "" +msgstr "Búsqueda por nombre de elemento de datos" msgid "No items selected" -msgstr "" +msgstr "No hay elementos seleccionados" msgid "Selected Items" -msgstr "" +msgstr "Artículos seleccionados" msgid "No indicators found" -msgstr "" +msgstr "No se han encontrado indicadores" msgid "No data sets found" -msgstr "" +msgstr "No se han encontrado conjuntos de datos" msgid "No event data items found" -msgstr "" +msgstr "No se han encontrado datos de eventos" msgid "No program indicators found" -msgstr "" +msgstr "No se han encontrado indicadores de programa" + +msgid "No calculations found" +msgstr "No se han encontrado cálculos" msgid "No indicators found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "No se han encontrado indicadores para \"{{- searchTerm}}\"" msgid "No data sets found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "No se han encontrado conjuntos de datos para \"{{- searchTerm}}\"" msgid "No event data items found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "No se han encontrado datos de eventos para \"{{- searchTerm}}\"" msgid "No program indicators found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "No se han encontrado indicadores de programa para \"{{- searchTerm}}\"" + +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "No se han encontrado cálculos para \"{{- searchTerm}}\"" msgid "Nothing found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "No se ha encontrado nada para \"{{- searchTerm}}\"" msgid "Calculation" -msgstr "" +msgstr "Cálculo" msgid "Metric type" -msgstr "" +msgstr "Tipo de métrica" msgid "All metrics" -msgstr "" +msgstr "Todas las métricas" msgid "Move to {{axisName}}" -msgstr "" +msgstr "Mover a {{axisName}}" msgid "Add to {{axisName}}" -msgstr "" +msgstr "Añadir a {{axisName}}" msgid "Not available for {{visualizationType}}" -msgstr "" +msgstr "No disponible para {{visualizationType}}" msgid "Remove Assigned Categories" -msgstr "" +msgstr "Eliminar categorías asignadas" msgid "Add Assigned Categories" -msgstr "" +msgstr "Añadir categorías asignadas" msgid "Remove" -msgstr "" +msgstr "Eliminar" msgid "Filter dimensions" -msgstr "" +msgstr "Dimensiones del filtro" msgid "Main dimensions" -msgstr "" +msgstr "Dimensiones principales" msgid "Your dimensions" -msgstr "" +msgstr "Sus dimensiones" msgid "Dimension recommended with selected data" -msgstr "" +msgstr "Dimensión recomendada con datos seleccionados" msgid "All items" -msgstr "" +msgstr "Todos los artículos" msgid "Automatically include all items" -msgstr "" +msgstr "Incluir automáticamente todos los elementos" msgid "" "Select all {{- dimensionTitle}} items. With this option, new items added in " "the future will be automatically included." msgstr "" +"Seleccionar todos los elementos {{- dimensionTitle}}. Con esta opción, los " +"nuevos elementos que se añadan en el futuro se incluirán automáticamente." msgid "Manually select items..." -msgstr "" +msgstr "Seleccionar elementos manualmente..." msgid "Nothing found in {{- dimensionTitle}}" -msgstr "" +msgstr "No se ha encontrado nada en {{- dimensionTitle}}" msgid "Search" msgstr "Buscar" msgid "Nothing found for {{- searchTerm}}" -msgstr "" +msgstr "No se ha encontrado nada para {{- searchTerm}}" msgid "Delete {{fileType}}" -msgstr "" +msgstr "Borrar {{fileType}}" msgid "" "This {{fileType}} and related interpretations will be deleted. Continue?" msgstr "" +"Este {{fileType}} y las interpretaciones relacionadas serán eliminados. " +"¿Continuar?" msgid "Delete" msgstr "Borrar" msgid "File" -msgstr "" +msgstr "Archivo" msgid "New" msgstr "Nuevo" msgid "Open…" -msgstr "" +msgstr "Abrir..." msgid "Save" msgstr "Guardar" msgid "Save…" -msgstr "" +msgstr "Guardar..." msgid "Save as…" -msgstr "" +msgstr "Guardar como..." msgid "Rename…" -msgstr "" +msgstr "Renombrar..." msgid "Translate…" -msgstr "" +msgstr "Traducir..." msgid "Share…" -msgstr "" +msgstr "Compartir..." msgid "Get link…" -msgstr "" +msgstr "Obtener enlace..." msgid "Open in this app" -msgstr "" +msgstr "Abrir en esta aplicación" msgid "Close" msgstr "Cerrar" msgid "Rename {{fileType}}" -msgstr "" +msgstr "Cambie el nombre de {{fileType}}" msgid "Name" msgstr "Nombre" @@ -318,328 +340,338 @@ msgid "Description" msgstr "Descripción" msgid "Rename" -msgstr "" +msgstr "Cambie el nombre de" msgid "{{- objectName}} (copy)" -msgstr "" +msgstr "{{- objectName}} (copia)" msgid "Save {{fileType}} as" -msgstr "" +msgstr "Guardar {{fileType}} como" msgid "event report" -msgstr "" +msgstr "informe del evento" msgid "line list" -msgstr "" +msgstr "lista" msgid "map" -msgstr "" +msgstr "mapa" msgid "visualization" -msgstr "" +msgstr "visualización" msgid "Edit" -msgstr "" +msgstr "Editar" msgid "Write a reply" -msgstr "" +msgstr "Escribir una respuesta" msgid "Post reply" -msgstr "" +msgstr "Respuesta" + +msgid "Delete failed" +msgstr "Eliminación fallida" msgid "Could not update comment" -msgstr "" +msgstr "No se ha podido actualizar el comentario" msgid "Enter comment text" -msgstr "" +msgstr "Introduzca el texto del comentario" msgid "Update" msgstr "Actualizar" msgid "Viewing interpretation: {{- visualisationName}}" -msgstr "" +msgstr "Interpretación de la visualización: {{- visualisationName}}" msgid "Could not load interpretation" -msgstr "" +msgstr "No se ha podido cargar la interpretación" msgid "" "The interpretation couldn’t be displayed. Try again or contact your system " "administrator." msgstr "" +"No se ha podido mostrar la interpretación. Inténtelo de nuevo o póngase en " +"contacto con el administrador del sistema." msgid "Hide interpretation" -msgstr "" +msgstr "Ocultar interpretación" msgid "Write an interpretation" +msgstr "Escribir una interpretación" + +msgid "" +"Other people viewing this interpretation in the future may see more data." msgstr "" +"Otras personas que vean esta interpretación en el futuro podrían ver más " +"datos." msgid "Post interpretation" -msgstr "" +msgstr "Interpretación de puestos" msgid "Interpretations" -msgstr "" +msgstr "Interpretaciones" + +msgid "Reply" +msgstr "Respuesta" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} respuesta" +msgstr[1] "{{count}} responde" +msgstr[2] "{{count}} responde" + +msgid "View replies" +msgstr "Ver respuestas" msgid "Unlike" -msgstr "" +msgstr "A diferencia de" msgid "Like" -msgstr "" +msgstr "Como" -msgid "Reply" -msgstr "" +msgid "See interpretation" +msgstr "Ver interpretación" + +msgid "Open in app" +msgstr "Abrir en aplicación" msgid "Share" msgstr "Compartir" -msgid "See interpretation" -msgstr "" - msgid "Manage sharing" -msgstr "" +msgstr "Gestionar el uso compartido" msgid "Could not update interpretation" -msgstr "" +msgstr "No se ha podido actualizar la interpretación" msgid "Enter interpretation text" -msgstr "" - -msgid "Bold text" -msgstr "" - -msgid "Italic text" -msgstr "" - -msgid "Link to a URL" -msgstr "" - -msgid "Mention a user" -msgstr "" - -msgid "Add emoji" -msgstr "" - -msgid "Preview" -msgstr "" - -msgid "Back to write mode" -msgstr "" - -msgid "Too many results. Try refining the search." -msgstr "" - -msgid "Search for a user" -msgstr "" - -msgid "Searching for \"{{- searchText}}\"" -msgstr "" - -msgid "No results found" -msgstr "" +msgstr "Introducir texto de interpretación" msgid "Not available offline" -msgstr "" +msgstr "No disponible sin conexión" msgid "Created by" -msgstr "" +msgstr "Creado por" msgid "Anyone" msgstr "Quien sea" msgid "Only you" -msgstr "" +msgstr "Sólo tú" msgid "Others" -msgstr "" +msgstr "Otros" msgid "Not supported by this app yet" -msgstr "" +msgstr "Esta aplicación aún no es compatible" msgid "Filter by name" -msgstr "" +msgstr "Filtrar por nombre" msgid "Created" -msgstr "" +msgstr "Creado" msgid "Last updated" msgstr "Última actualización" msgid "Type" -msgstr "" +msgstr "Tipo" msgid "Clear filters" msgstr "Limpiar filtros" msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" -msgstr "" +msgstr "{{firstItemIndex}}-{{lastItemIndex}} de {{totalNumberOfItems}}" msgid "Open" msgstr "Abierto" msgid "Couldn't load items" -msgstr "" +msgstr "No se pueden cargar los artículos" msgid "" "There was a problem loading items. Try again or contact your system " "administrator." msgstr "" +"Se ha producido un problema al cargar los artículos. Inténtelo de nuevo o " +"póngase en contacto con el administrador del sistema." msgid "No items found. Create a new to get started." -msgstr "" +msgstr "No se han encontrado artículos. Crea uno nuevo para empezar." msgid "" "No items found. Try adjusting your search or filter options to find what " "you're looking for." msgstr "" +"No se han encontrado artículos. Prueba a ajustar las opciones de búsqueda o " +"filtro para encontrar lo que buscas." msgid "Create new" msgstr "Crear nuevo" msgid "Open a visualization" -msgstr "" +msgstr "Abrir una visualización" msgid "Loading visualizations" -msgstr "" +msgstr "Cargando visualizaciones" msgid "Couldn't load visualizations" -msgstr "" +msgstr "No se pueden cargar las visualizaciones" msgid "" "There was a problem loading visualizations. Try again or contact your system" " administrator." msgstr "" +"Se ha producido un problema al cargar las visualizaciones. Inténtelo de " +"nuevo o póngase en contacto con el administrador del sistema." msgid "No visualizations found. Click New visualization to get started." msgstr "" +"No se han encontrado visualizaciones. Haga clic en Nueva visualización para " +"empezar." msgid "" "No visualizations found. Try adjusting your search or filter options to find" " what you're looking for." msgstr "" +"No se han encontrado visualizaciones. Prueba a ajustar las opciones de " +"búsqueda o filtro para encontrar lo que buscas." msgid "New visualization" -msgstr "" +msgstr "Nueva visualización" msgid "Open a map" -msgstr "" +msgstr "Abrir un mapa" msgid "Loading maps" -msgstr "" +msgstr "Cargando mapas" msgid "Couldn't load maps" -msgstr "" +msgstr "No se pueden cargar los mapas" msgid "" "There was a problem loading maps. Try again or contact your system " "administrator." msgstr "" +"Se ha producido un problema al cargar los mapas. Inténtalo de nuevo o ponte " +"en contacto con el administrador del sistema." msgid "No maps found. Click New map to get started." -msgstr "" +msgstr "No se han encontrado mapas. Haga clic en Nuevo mapa para empezar." msgid "" "No maps found. Try adjusting your search or filter options to find what " "you're looking for." msgstr "" +"No se han encontrado mapas. Prueba a ajustar las opciones de búsqueda o " +"filtro para encontrar lo que buscas." msgid "New map" -msgstr "" +msgstr "Nuevo mapa" msgid "Open a line list" -msgstr "" +msgstr "Abrir una lista" msgid "Loading line lists" -msgstr "" +msgstr "Carga de listas de líneas" msgid "Couldn't load line lists" -msgstr "" +msgstr "No se pueden cargar las listas" msgid "" "There was a problem loading line lists. Try again or contact your system " "administrator." msgstr "" +"Se ha producido un problema al cargar las listas. Inténtelo de nuevo o " +"póngase en contacto con el administrador del sistema." msgid "No line lists found. Click New line list to get started." msgstr "" +"No se ha encontrado ninguna lista. Haga clic en Nueva lista de líneas para " +"empezar." msgid "" "No line lists found. Try adjusting your search or filter options to find " "what you're looking for." msgstr "" +"No se han encontrado listas. Prueba a ajustar las opciones de búsqueda o " +"filtro para encontrar lo que buscas." msgid "New line list" -msgstr "" +msgstr "Nueva lista" msgid "Options" -msgstr "" +msgstr "Opciones" msgid "Hide" -msgstr "" +msgstr "Ocultar" msgid "{{count}} org units" msgid_plural "{{count}} org units" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} unidad org" +msgstr[1] "{{count}} unidades org" +msgstr[2] "{{count}} unidades org" msgid "{{count}} levels" msgid_plural "{{count}} levels" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} nivel" +msgstr[1] "{{count}} niveles" +msgstr[2] "{{count}} niveles" msgid "{{count}} groups" msgid_plural "{{count}} groups" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} grupo" +msgstr[1] "{{count}} grupos" +msgstr[2] "{{count}} grupos" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "Seleccionado: {{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "Nada seleccionado" msgid "User organisation unit" -msgstr "" +msgstr "Unidad organizativa del usuario" msgid "User sub-units" -msgstr "" +msgstr "Subunidades de usuario" msgid "User sub-x2-units" -msgstr "" +msgstr "Subunidadesx2 de usuario" msgid "Select a level" -msgstr "" +msgstr "Seleccione un nivel" msgid "Select a group" -msgstr "" +msgstr "Seleccione un grupo" msgid "Deselect all" -msgstr "" +msgstr "Deseleccionar todo" msgid "Period type" -msgstr "" +msgstr "Tipo de período" msgid "Year" -msgstr "" +msgstr "Año" msgid "Select year" -msgstr "" +msgstr "Seleccione el año" msgid "Period" msgstr "Periodo" +msgid "Selected Periods" +msgstr "Períodos seleccionados" + msgid "Relative periods" -msgstr "" +msgstr "Periodos relativos" msgid "Fixed periods" -msgstr "" - -msgid "Selected Periods" -msgstr "" +msgstr "Periodos fijos" msgid "No periods selected" -msgstr "" +msgstr "No hay periodos seleccionados" msgid "Daily" msgstr "Diario" @@ -648,49 +680,49 @@ msgid "Weekly" msgstr "Semanal" msgid "Weekly (Start Wednesday)" -msgstr "" +msgstr "Semanal (Inicio miércoles)" msgid "Weekly (Start Thursday)" -msgstr "" +msgstr "Semanal (Inicio jueves)" msgid "Weekly (Start Saturday)" -msgstr "" +msgstr "Semanal (inicio el sábado)" msgid "Weekly (Start Sunday)" -msgstr "" +msgstr "Semanal (Inicio el domingo)" msgid "Bi-weekly" -msgstr "" +msgstr "Cada dos semanas" msgid "Monthly" msgstr "Mensual" msgid "Bi-monthly" -msgstr "" +msgstr "Bimensual" msgid "Quarterly" -msgstr "" +msgstr "Trimestral" msgid "Six-monthly" -msgstr "" +msgstr "Semestral" msgid "Six-monthly April" -msgstr "" +msgstr "Semestral Abril" msgid "Yearly" msgstr "Anual" msgid "Financial year (Start November)" -msgstr "" +msgstr "Ejercicio financiero (Inicio en noviembre)" msgid "Financial year (Start October)" -msgstr "" +msgstr "Ejercicio financiero (Inicio en octubre)" msgid "Financial year (Start July)" -msgstr "" +msgstr "Ejercicio financiero (inicio en julio)" msgid "Financial year (Start April)" -msgstr "" +msgstr "Ejercicio financiero (Inicio en abril)" msgid "Today" msgstr "Hoy" @@ -699,25 +731,25 @@ msgid "Yesterday" msgstr "Ayer" msgid "Last 3 days" -msgstr "" +msgstr "Últimos 3 días" msgid "Last 7 days" -msgstr "" +msgstr "Últimos 7 días" msgid "Last 14 days" -msgstr "" +msgstr "Últimos 14 días" msgid "Last 30 days" -msgstr "" +msgstr "Últimos 30 días" msgid "Last 60 days" -msgstr "" +msgstr "Últimos 60 días" msgid "Last 90 days" -msgstr "" +msgstr "Últimos 90 días" msgid "Last 180 days" -msgstr "" +msgstr "Últimos 180 días" msgid "This week" msgstr "Esta semana" @@ -726,25 +758,25 @@ msgid "Last week" msgstr "Última semana" msgid "Last 4 weeks" -msgstr "" +msgstr "Últimas 4 semanas" msgid "Last 12 weeks" -msgstr "" +msgstr "Últimas 12 semanas" msgid "Last 52 weeks" -msgstr "" +msgstr "Últimas 52 semanas" msgid "Weeks this year" msgstr "Semanas de este año" msgid "This bi-week" -msgstr "" +msgstr "Esta quincena" msgid "Last bi-week" -msgstr "" +msgstr "Última quincena" msgid "Last 4 bi-weeks" -msgstr "" +msgstr "Últimas 4 bisemanas" msgid "This month" msgstr "Este mes" @@ -756,25 +788,25 @@ msgid "Last 3 months" msgstr "Últimos 3 meses" msgid "Last 6 months" -msgstr "" +msgstr "Últimos 6 meses" msgid "Last 12 months" -msgstr "" +msgstr "Últimos 12 meses" msgid "Months this year" msgstr "Meses este año" msgid "This bi-month" -msgstr "" +msgstr "Este bimestre" msgid "Last bi-month" -msgstr "" +msgstr "Último bimestre" msgid "Last 6 bi-months" -msgstr "" +msgstr "Últimos 6 bimestres" msgid "Bi-months this year" -msgstr "" +msgstr "Bimensuales este año" msgid "This quarter" msgstr "Este trimestre" @@ -783,19 +815,19 @@ msgid "Last quarter" msgstr "El trimestre pasado" msgid "Last 4 quarters" -msgstr "" +msgstr "Últimos 4 trimestres" msgid "Quarters this year" msgstr "Trimestres de este año" msgid "This six-month" -msgstr "" +msgstr "Estos seis meses" msgid "Last six-month" -msgstr "" +msgstr "Últimos seis meses" msgid "Last 2 six-month" -msgstr "" +msgstr "Últimos 2 semestres" msgid "This financial year" msgstr "Este año fiscal" @@ -804,7 +836,7 @@ msgid "Last financial year" msgstr "Último ejercicio financiero" msgid "Last 5 financial years" -msgstr "" +msgstr "Últimos 5 ejercicios" msgid "This year" msgstr "Este año" @@ -813,10 +845,10 @@ msgid "Last year" msgstr "El año pasado" msgid "Last 5 years" -msgstr "" +msgstr "Últimos 5 años" msgid "Last 10 years" -msgstr "" +msgstr "Últimos 10 años" msgid "Days" msgstr "Días" @@ -825,259 +857,298 @@ msgid "Weeks" msgstr "Semanas" msgid "Bi-weeks" -msgstr "" +msgstr "Dos semanas" msgid "Months" msgstr "Meses" msgid "Bi-months" -msgstr "" +msgstr "Bimensual" msgid "Quarters" -msgstr "" +msgstr "Cuartos" msgid "Six-months" -msgstr "" +msgstr "Seis meses" msgid "Financial Years" -msgstr "" +msgstr "Ejercicios financieros" msgid "Years" msgstr "Años" +msgid "Bold text" +msgstr "Texto en negrita" + +msgid "Italic text" +msgstr "Texto en cursiva" + +msgid "Link to a URL" +msgstr "Enlace a una URL" + +msgid "Mention a user" +msgstr "Mencionar a un usuario" + +msgid "Add emoji" +msgstr "Añadir emoji" + +msgid "Preview" +msgstr "Vista previa" + +msgid "Back to write mode" +msgstr "Volver al modo de escritura" + +msgid "Interpretations and details" +msgstr "Interpretaciones y detalles" + msgid "Translating to" -msgstr "" +msgstr "Traducir a" msgid "Choose a locale" -msgstr "" +msgstr "Elija una localidad" msgid "Base locale reference" -msgstr "" +msgstr "Referencia de la configuración regional básica" msgid "Choose a locale to translate from the menu above" msgstr "" +"Elija la configuración regional que desee traducir en el menú superior" msgid "Translate: {{objectName}}" -msgstr "" +msgstr "Traduce: {{objectName}}" msgid "Save translations" -msgstr "" +msgstr "Guardar traducciones" msgid "Cannot save while offline" -msgstr "" +msgstr "No se puede guardar sin conexión" msgid "Could not load translations" -msgstr "" +msgstr "No se han podido cargar las traducciones" msgid "Retry" -msgstr "" +msgstr "Reintentar" + +msgid "Too many results. Try refining the search." +msgstr "Demasiados resultados. Intenta refinar la búsqueda." + +msgid "Search for a user" +msgstr "Buscar un usuario" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "Buscando \"{{- searchText}}\"" + +msgid "No results found" +msgstr "No se han encontrado resultados" msgid "Series" -msgstr "" +msgstr "Serie" msgid "Category" -msgstr "" +msgstr "Categoría" msgid "Filter" -msgstr "" +msgstr "Filtro" msgid "Columns" -msgstr "" +msgstr "Columnas" msgid "Rows" -msgstr "" +msgstr "Filas" msgid "Points" -msgstr "" +msgstr "Puntos" msgid "Reporting rate" -msgstr "" +msgstr "Índice de notificación" msgid "Reporting rate on time" -msgstr "" +msgstr "Tasa de notificación puntual" msgid "Actual reports" -msgstr "" +msgstr "Informes reales" msgid "Actual reports on time" -msgstr "" +msgstr "Informes reales a tiempo" msgid "Expected reports" -msgstr "" +msgstr "Informes previstos" msgid "Program" -msgstr "" +msgstr "Programa" msgid "Select a program" -msgstr "" +msgstr "Seleccione un programa" msgid "Indicators" msgstr "Indicadores" msgid "Indicator group" -msgstr "" +msgstr "Grupo de indicadores" msgid "All groups" -msgstr "" +msgstr "Todos los grupos" msgid "Indicator" -msgstr "" +msgstr "Indicador" msgid "No indicator groups found" -msgstr "" +msgstr "No se han encontrado grupos de indicadores" msgid "Loading indicator groups" -msgstr "" +msgstr "Grupos de indicadores de carga" msgid "Data element group" -msgstr "" +msgstr "Grupo de elementos de datos" msgid "Data element" -msgstr "" +msgstr "Elemento de datos" msgid "No data element groups found" -msgstr "" +msgstr "No se han encontrado grupos de elementos de datos" msgid "Loading data element groups" -msgstr "" +msgstr "Carga de grupos de elementos de datos" msgid "Data sets" msgstr "Sets de datos" msgid "Data set" -msgstr "" +msgstr "Conjunto de datos" msgid "All data sets" -msgstr "" +msgstr "Todos los conjuntos de datos" msgid "Loading data sets" -msgstr "" +msgstr "Carga de conjuntos de datos" msgid "Event data items" -msgstr "" +msgstr "Datos del evento" msgid "All programs" -msgstr "" +msgstr "Todos los programas" msgid "Event data item" -msgstr "" +msgstr "Datos del evento" msgid "No programs found" -msgstr "" +msgstr "No se han encontrado programas" msgid "Loading programs" -msgstr "" +msgstr "Carga de programas" msgid "Program indicators" -msgstr "" +msgstr "Indicadores del programa" msgid "Program indicator" -msgstr "" +msgstr "Indicador de programa" msgid "Calculations" -msgstr "" +msgstr "Cálculos" msgid "Number" -msgstr "" +msgstr "Número" msgid "Formula is empty. Add items to the formula from the lists on the left." msgstr "" +"La fórmula está vacía. Añada elementos a la fórmula desde las listas de la " +"izquierda." msgid "Consecutive math operators" -msgstr "" +msgstr "Operadores matemáticos consecutivos" msgid "Consecutive data elements" -msgstr "" +msgstr "Elementos de datos consecutivos" msgid "Starts or ends with a math operator" -msgstr "" +msgstr "Comienza o termina con un operador matemático" msgid "Empty parentheses" -msgstr "" +msgstr "Paréntesis vacíos" msgid "Missing right parenthesis )" -msgstr "" +msgstr "Falta el paréntesis derecho )" msgid "Missing left parenthesis (" -msgstr "" +msgstr "Falta el paréntesis izquierdo (" msgid "Extra Small" -msgstr "" +msgstr "Extra pequeña" msgid "Small" -msgstr "" +msgstr "Pequeña" msgid "Regular" -msgstr "" +msgstr "Regular" msgid "Large" -msgstr "" +msgstr "Grande" msgid "Extra Large" -msgstr "" +msgstr "Extra grande" msgid "Left" -msgstr "" +msgstr "Izquierda" msgid "Center" -msgstr "" +msgstr "Centro" msgid "Right" -msgstr "" +msgstr "Derecha" msgid "Start" -msgstr "" +msgstr "Inicio" msgid "Middle" -msgstr "" +msgstr "Medio" msgid "End" -msgstr "" +msgstr "Fin" msgid "Top" -msgstr "" +msgstr "Top" msgid "Bottom" -msgstr "" +msgstr "Fondo" msgid "{{dynamicOuNames}} and {{lastOuName}}" -msgstr "" +msgstr "{{dynamicOuNames}} y {{lastOuName}}" msgid "{{allDynamicOuNames}} levels" -msgstr "" +msgstr "{{allDynamicOuNames}} niveles" msgid "{{allDynamicOuNames}} groups" -msgstr "" +msgstr "{{allDynamicOuNames}} grupos" msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" -msgstr "" +msgstr "{{allDynamicOuNames}} niveles en {{staticOuNames}}" msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" -msgstr "" +msgstr "{{allDynamicOuNames}} grupos en {{staticOuNames}}" msgid "{{percentage}}% of total x values" -msgstr "" +msgstr "{{percentage}}% del total de valores x" msgid "{{percentage}}% of total y values" -msgstr "" +msgstr "{{percentage}}% del total de valores y" msgid "{{thresholdFactor}} × IQR Q1" -msgstr "" +msgstr "{{thresholdFactor}} × IQR Q1" msgid "{{thresholdFactor}} × IQR Q3" -msgstr "" +msgstr "{{thresholdFactor}} × IQR Q3" msgid "{{thresholdFactor}} × Modified Z-score low" -msgstr "" +msgstr "{{thresholdFactor}} × Puntuación Z modificada baja" msgid "{{thresholdFactor}} × Modified Z-score high" -msgstr "" +msgstr "{{thresholdFactor}} × Puntuación Z modificada alta" msgid "{{thresholdFactor}} × Z-score low" -msgstr "" +msgstr "{{thresholdFactor}} × Puntuación Z baja" msgid "{{thresholdFactor}} × Z-score high" -msgstr "" +msgstr "{{thresholdFactor}} × Puntuación Z alta" msgid "Data" msgstr "Datos" @@ -1086,88 +1157,91 @@ msgid "Organisation unit" msgstr "Unidad organizativa" msgid "Assigned Categories" -msgstr "" +msgstr "Categorías asignadas" msgid "Pivot table" -msgstr "" +msgstr "Tabla dinámica" msgid "Area" msgstr "Área" msgid "Stacked area" -msgstr "" +msgstr "Área apilada" msgid "Bar" -msgstr "" +msgstr "Bar" msgid "Stacked bar" -msgstr "" +msgstr "Barra apilada" msgid "Column" msgstr "Columna" msgid "Year over year (column)" -msgstr "" +msgstr "Año sobre año (columna)" msgid "Stacked column" -msgstr "" +msgstr "Columna apilada" msgid "Gauge" -msgstr "" +msgstr "Indicador" msgid "Line" -msgstr "" +msgstr "Línea" msgid "Line list" -msgstr "" +msgstr "Lista de líneas" msgid "Year over year (line)" -msgstr "" +msgstr "Año sobre año (línea)" msgid "Pie" -msgstr "" +msgstr "Pastel" msgid "Radar" -msgstr "" +msgstr "Radar" msgid "Scatter" -msgstr "" +msgstr "Dispersión" msgid "Single value" -msgstr "" +msgstr "Valor único" + +msgid "Outlier table" +msgstr "Tabla de valores atípicos" msgid "All charts" -msgstr "" +msgstr "Todos los gráficos" msgid "{{seriesName}} (trend)" -msgstr "" +msgstr "{{seriesName}} (tendencia)" msgid "Trend" -msgstr "" +msgstr "Tendencia" msgid "No legend for this series" -msgstr "" +msgstr "No hay leyenda para esta serie" msgid "and {{amount}} more..." -msgstr "" +msgstr "y {{amount}} más..." msgid "Linear Regression" -msgstr "" +msgstr "Regresión lineal" msgid "Target" -msgstr "" +msgstr "Objetivo" msgid "Base" -msgstr "" +msgstr "Base" msgid "Axis {{axisId}}" -msgstr "" +msgstr "Eje {{axisId}}" msgid "{{count}} items" msgid_plural "{{count}} items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} artículo" +msgstr[1] "{{count}} artículos" +msgstr[2] "{{count}} artículos" msgid "Reset zoom" -msgstr "" +msgstr "Restablecer zoom" diff --git a/i18n/fr.po b/i18n/fr.po index 7b8e71382..4cb619f4b 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -6,16 +6,17 @@ # tx_e2f_fr r25 , 2021 # Karoline Tufte Lien , 2022 # Edem Kossi , 2022 -# phil_dhis2, 2023 # Yao Selom SAKA (HISP WCA) , 2023 # Yayra Gomado , 2023 +# Philip Larsen Donnelly, 2024 +# Elise Desailly, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-01-25T12:05:03.360Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Yayra Gomado , 2023\n" +"Last-Translator: Elise Desailly, 2024\n" "Language-Team: French (https://app.transifex.com/hisp-uio/teams/100509/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -45,13 +46,13 @@ msgid "No description" msgstr "Aucune description" msgid "Last updated {{time}}" -msgstr "" +msgstr "Dernière mise à jour à {{time}}" msgid "Created {{time}} by {{author}}" -msgstr "" +msgstr "Créé à {{time}} par {{author}} " msgid "Created {{time}}" -msgstr "" +msgstr "Créé à {{time}}" msgid "Viewed {{count}} times" msgid_plural "Viewed {{count}} times" @@ -64,6 +65,8 @@ msgstr "Notifications" msgid "You're subscribed and getting updates about new interpretations." msgstr "" +"Vous êtes abonné et recevez les mises à jour pour les nouvelles " +"interprétations." msgid "Unsubscribe" msgstr "" @@ -75,16 +78,16 @@ msgid "Subscribe" msgstr "" msgid "About this map" -msgstr "" +msgstr "À propos de cette carte" msgid "About this line list" msgstr "" msgid "About this visualization" -msgstr "" +msgstr "À propos de cette visualisation" msgid "This app could not retrieve required data." -msgstr "" +msgstr "Cette application n'a pas pu récupérer les données nécessaires." msgid "Network error" msgstr "Erreur réseau" @@ -96,36 +99,38 @@ msgid "Data / New calculation" msgstr "" msgid "Remove item" -msgstr "" +msgstr "Supprimer l'élément" msgid "Check formula" msgstr "" msgid "Calculation name" -msgstr "" +msgstr "Nom du calcul" msgid "Shown in table headers and chart axes/legends" msgstr "" msgid "Delete calculation" -msgstr "" +msgstr "Supprimer le calcul" msgid "Cancel" msgstr "Annuler" msgid "The calculation can only be saved with a valid formula" -msgstr "" +msgstr "Le calcul ne peut être sauvegardé qu'avec une formule correcte" msgid "Add a name to save this calculation" -msgstr "" +msgstr "Ajouter un nom pour sauvegarder ce calcul" msgid "Save calculation" -msgstr "" +msgstr "Sauvegarder le calcul" msgid "" "Are you sure you want to delete this calculation? It may be used by other " "visualizations." msgstr "" +"Êtes-vous certain de vouloir supprimer ce calcul ? Il est peut être utilisé " +"par d'autres visualisations." msgid "Yes, delete" msgstr "Oui, supprimer" @@ -143,7 +148,7 @@ msgid "Data elements" msgstr "Eléments de données" msgid "Search by data element name" -msgstr "" +msgstr "Rechercher par le nom d'élément de donnée" msgid "No data elements found for \"{{- searchTerm}}\"" msgstr "Aucun élément de données trouvé pour \"{{- searchTerm}}\"" @@ -157,11 +162,14 @@ msgid "" msgstr "" msgid "Math operators" -msgstr "" +msgstr "Opérateurs mathématiques" msgid "Data Type" msgstr "Type de données" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "" + msgid "All types" msgstr "Tous les types" @@ -192,6 +200,9 @@ msgstr "Aucun éléments de données événement trouvé" msgid "No program indicators found" msgstr "Aucun Indicateurs de programme trouvé" +msgid "No calculations found" +msgstr "Aucun calcul trouvé" + msgid "No indicators found for \"{{- searchTerm}}\"" msgstr "Aucun indicateur trouvé pour \"{{- searchTerm}}\"" @@ -204,6 +215,9 @@ msgstr "Aucune donnée événement retrouvée pour \"{{- searchTerm}}\"" msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "Aucun Indicateur de programme trouvé pour \"{{- searchTerm}}\"" +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "" + msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "Rien retrouvé pour \"{{- searchTerm}}\"" @@ -217,13 +231,13 @@ msgid "All metrics" msgstr "Tous les éléments" msgid "Move to {{axisName}}" -msgstr "Déménager à {{nomdel'axe}}" +msgstr "Déménager à {{axisName}}" msgid "Add to {{axisName}}" -msgstr "Ajouter à {{nomdel'axe}} " +msgstr "Ajouter à {{axisName}} " msgid "Not available for {{visualizationType}}" -msgstr "Non disponible pour {{Typedevisualisation}}" +msgstr "Non disponible pour {{visualizationType}}" msgid "Remove Assigned Categories" msgstr "Supprimer les Catégories Attribuées" @@ -250,7 +264,7 @@ msgid "All items" msgstr "Tous les items" msgid "Automatically include all items" -msgstr "" +msgstr "Inclure tous les éléments automatiquement" msgid "" "Select all {{- dimensionTitle}} items. With this option, new items added in " @@ -358,7 +372,7 @@ msgid "Delete failed" msgstr "Échec de la suppression" msgid "Could not update comment" -msgstr "" +msgstr "Échec de l'actualisation du commentaire" msgid "Enter comment text" msgstr "" @@ -370,19 +384,25 @@ msgid "Viewing interpretation: {{- visualisationName}}" msgstr "" msgid "Could not load interpretation" -msgstr "" +msgstr "Échec du chargement de l'interprétation" msgid "" "The interpretation couldn’t be displayed. Try again or contact your system " "administrator." msgstr "" +"L'interprétation n'a pas pu être affichée. Veuillez réessayer ou contacter " +"votre administrateur système." msgid "Hide interpretation" -msgstr "" +msgstr "Masquer l'interprétation" msgid "Write an interpretation" msgstr "Ecrire une interprétation" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" @@ -399,7 +419,7 @@ msgstr[1] "{{count}} réponses" msgstr[2] "{{count}} réponses" msgid "View replies" -msgstr "" +msgstr "Voir les réponses" msgid "Unlike" msgstr "Je n'aime plus" @@ -407,54 +427,24 @@ msgstr "Je n'aime plus" msgid "Like" msgstr "J'aime" -msgid "Share" -msgstr "Partager" - msgid "See interpretation" msgstr "" +msgid "Open in app" +msgstr "Ouvrir dans l'application" + +msgid "Share" +msgstr "Partager" + msgid "Manage sharing" msgstr "Gérer le partage" msgid "Could not update interpretation" -msgstr "" +msgstr "Échec de l'actualisation de l'interprétation" msgid "Enter interpretation text" msgstr "" -msgid "Bold text" -msgstr "" - -msgid "Italic text" -msgstr "" - -msgid "Link to a URL" -msgstr "" - -msgid "Mention a user" -msgstr "" - -msgid "Add emoji" -msgstr "" - -msgid "Preview" -msgstr "Aperçu" - -msgid "Back to write mode" -msgstr "" - -msgid "Too many results. Try refining the search." -msgstr "" - -msgid "Search for a user" -msgstr "" - -msgid "Searching for \"{{- searchText}}\"" -msgstr "" - -msgid "No results found" -msgstr "Aucun résultat trouvé" - msgid "Not available offline" msgstr "Non disponible hors ligne" @@ -539,13 +529,13 @@ msgid "New visualization" msgstr "" msgid "Open a map" -msgstr "" +msgstr "Ouvrir une carte" msgid "Loading maps" -msgstr "" +msgstr "Chargement des cartes" msgid "Couldn't load maps" -msgstr "" +msgstr "Échec du chargement des cartes" msgid "" "There was a problem loading maps. Try again or contact your system " @@ -553,7 +543,7 @@ msgid "" msgstr "" msgid "No maps found. Click New map to get started." -msgstr "" +msgstr "Aucune carte trouvée. Cliquez sur Nouvelle carte pour commencer." msgid "" "No maps found. Try adjusting your search or filter options to find what " @@ -648,15 +638,15 @@ msgstr "Sélectionnez année" msgid "Period" msgstr "Période" +msgid "Selected Periods" +msgstr "Périodes sélectionnées" + msgid "Relative periods" msgstr "Périodes relatives" msgid "Fixed periods" msgstr "Périodes fixes" -msgid "Selected Periods" -msgstr "Périodes sélectionnées" - msgid "No periods selected" msgstr "Aucune périodes n'est sélectionnée" @@ -864,6 +854,27 @@ msgstr "Années fiscales" msgid "Years" msgstr "Années" +msgid "Bold text" +msgstr "Texte en gras" + +msgid "Italic text" +msgstr "" + +msgid "Link to a URL" +msgstr "" + +msgid "Mention a user" +msgstr "" + +msgid "Add emoji" +msgstr "" + +msgid "Preview" +msgstr "Aperçu" + +msgid "Back to write mode" +msgstr "" + msgid "Interpretations and details" msgstr "" @@ -894,6 +905,18 @@ msgstr "" msgid "Retry" msgstr "" +msgid "Too many results. Try refining the search." +msgstr "" + +msgid "Search for a user" +msgstr "" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "" + +msgid "No results found" +msgstr "Aucun résultat trouvé" + msgid "Series" msgstr "Séries" @@ -1063,19 +1086,19 @@ msgid "Bottom" msgstr "Bas" msgid "{{dynamicOuNames}} and {{lastOuName}}" -msgstr "{{NomsOudynamiques}} et {{dernièreOuNom}}" +msgstr "{{dynamicOuNames}} et {{lastOuName}}" msgid "{{allDynamicOuNames}} levels" -msgstr "{{touslesnomsOudynamiques}} niveaux" +msgstr "{{allDynamicOuNames}} niveaux" msgid "{{allDynamicOuNames}} groups" -msgstr "{{touslesnomsOudynamiques}} groupes" +msgstr "{{allDynamicOuNames}} groupes" msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" -msgstr "{{touslesnomsOudynamiques}} niveaux dans {{NomsOustatiques}} " +msgstr "{{allDynamicOuNames}} niveaux dans {{staticOuNames}} " msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" -msgstr "{{touslesnomsOudynamiques}} groupes dans {{NomsOustatiques}}" +msgstr "{{allDynamicOuNames}} groupes dans {{staticOuNames}}" msgid "{{percentage}}% of total x values" msgstr "{{percentage}}% de nombre total de X valeurs" @@ -1158,6 +1181,9 @@ msgstr "Dispersion" msgid "Single value" msgstr "Valeur unique" +msgid "Outlier table" +msgstr "" + msgid "All charts" msgstr "" @@ -1183,7 +1209,7 @@ msgid "Base" msgstr "Base" msgid "Axis {{axisId}}" -msgstr "Axe {{{axisId}}" +msgstr "Axe {{axisId}}" msgid "{{count}} items" msgid_plural "{{count}} items" diff --git a/i18n/id.po b/i18n/id.po index 592793bf1..fb1292fe5 100644 --- a/i18n/id.po +++ b/i18n/id.po @@ -1,19 +1,19 @@ # # Translators: -# phil_dhis2, 2021 # Carwoto Sa'an , 2022 # Guardian Sanjaya , 2022 # Aprisa Chrysantina , 2022 # Viktor Varland , 2023 # Yusuf Setiawan , 2023 # Untoro Dwi Raharjo , 2023 +# Philip Larsen Donnelly, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Untoro Dwi Raharjo , 2023\n" +"Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Indonesian (https://app.transifex.com/hisp-uio/teams/100509/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -379,6 +379,10 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" @@ -1085,10 +1089,10 @@ msgid "{{percentage}}% of total y values" msgstr "{{percentage}}% dari total nilai y" msgid "{{thresholdFactor}} × IQR Q1" -msgstr "{{faktor ambang}} × IQR Q1" +msgstr "{{thresholdFactor}} × IQR Q1" msgid "{{thresholdFactor}} × IQR Q3" -msgstr "{{Faktor ambang}} × IQR Q3" +msgstr "{{thresholdFactor}} × IQR Q3" msgid "{{thresholdFactor}} × Modified Z-score low" msgstr "{{thresholdFactor}} × Modifikasi Z-score rendah" @@ -1100,7 +1104,7 @@ msgid "{{thresholdFactor}} × Z-score low" msgstr "{{thresholdFactor}} × Z-skor rendah" msgid "{{thresholdFactor}} × Z-score high" -msgstr "{{ThresholdFactor}} × Z-skor tinggi" +msgstr "{{thresholdFactor}} × Z-skor tinggi" msgid "Data" msgstr "Data" @@ -1172,7 +1176,7 @@ msgid "No legend for this series" msgstr "Tidak ada legenda untuk seri ini" msgid "and {{amount}} more..." -msgstr "dan {{jumlah}} lainnya..." +msgstr "dan {{amount}} lainnya..." msgid "Linear Regression" msgstr "Regresi linier" diff --git a/i18n/lo.po b/i18n/lo.po index 31f689fc5..d77d79e5a 100644 --- a/i18n/lo.po +++ b/i18n/lo.po @@ -2,16 +2,17 @@ # Translators: # Viktor Varland , 2022 # Somkhit Bouavong , 2022 -# Saysamone Sibounma, 2022 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 # Phouthasinh PHEUAYSITHIPHONE, 2023 +# Namwan Chanthavisouk, 2024 +# Saysamone Sibounma, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2024-10-11T12:49:26.846Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Phouthasinh PHEUAYSITHIPHONE, 2023\n" +"Last-Translator: Saysamone Sibounma, 2024\n" "Language-Team: Lao (https://app.transifex.com/hisp-uio/teams/100509/lo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,115 +21,123 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" msgid "view only" -msgstr "" +msgstr "ເບິ່ງຢ່າງດຽວ" msgid "view and edit" -msgstr "" +msgstr "ເບິ່ງ ແລະ ແກ້ໄຂ" msgid "all users ({{accessLevel}})" -msgstr "" +msgstr "ຜູ້ໃຊ້ທັງໝົດ ( {{accessLevel}} )" msgid "{{userOrGroup}} ({{accessLevel}})" -msgstr "" +msgstr " {{userOrGroup}} ({{accessLevel}} )" msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" -msgstr "" +msgstr "ແບ່ງປັນໃຫ້ກັບ {{commaSeparatedListOfUsersAndGroups}}" msgid "Not shared with any users or groups" -msgstr "" +msgstr "ບໍ່ໃຫ້ແບ່ງປັນກັບຜູ້ໃຊ້ ແລະ ກຸ່ມອື່ນ" msgid "No description" msgstr "ບໍ່ມີລາຍລະອຽດ" msgid "Last updated {{time}}" -msgstr "" +msgstr "ແກ້ໄຂລ່າສຸດ {{time}}" msgid "Created {{time}} by {{author}}" -msgstr "" +msgstr "ສ້າງ {{time}} ໂດຍ {{author}}" msgid "Created {{time}}" -msgstr "" +msgstr "ສ້າງ {{time}}" msgid "Viewed {{count}} times" msgid_plural "Viewed {{count}} times" -msgstr[0] "" +msgstr[0] "ກວດເບິ່ງ {{count}} ຄັ້ງ" msgid "Notifications" -msgstr "" +msgstr "ການແຈ້ງເຕືອນ" msgid "You're subscribed and getting updates about new interpretations." -msgstr "" +msgstr "ທ່ານກົດປູ່ມສະໜັກ ເພື່ອຈະໄດ້ອັບເດດ ແລະ ຮັບຂໍ້ມູນໃໝ່" msgid "Unsubscribe" -msgstr "" +msgstr "ຍົກເລີກການສະໝັກ" msgid "Subscribe to get updates about new interpretations." -msgstr "" +msgstr "ສະໝັກເພື່ອທີ່ຈະຮັບຮູ້ຂໍ້ມູນໃໝ່" msgid "Subscribe" -msgstr "" +msgstr "ສະໝັກ" msgid "About this map" -msgstr "" +msgstr "ກ່ຽວກັບແຜນທີ່" msgid "About this line list" -msgstr "" +msgstr "ກ່ຽວກັບບັນຊີລາຍຊື່" msgid "About this visualization" -msgstr "" +msgstr "ກ່ຽວກັບການສ້າງພາບຂໍ້ມູນ" + +msgid "About this event chart" +msgstr "ກ່ຽວກັບເຫດການແຜນຜັງ" + +msgid "About this event report" +msgstr "ກ່ຽວກັບບົດລາຍງານເຫດການຕ່າງໆ" msgid "This app could not retrieve required data." -msgstr "" +msgstr "ແອັບນີ້ບໍ່ສາມາດດຶງຂໍ້ມູນທີ່ຕ້ອງການໄດ້" msgid "Network error" -msgstr "" +msgstr "ຂໍ້ຜິດພາດທາງເຄື່ອຂ່າຍ" msgid "Data / Edit calculation" -msgstr "" +msgstr "ຂໍ້ມູນ / ແກ້ໄຂການຄິດໄລ່" msgid "Data / New calculation" -msgstr "" +msgstr "ຂໍ້ມູນ / ຄິດໄລ່ໃໝ່" msgid "Remove item" -msgstr "" +msgstr "ເອົາລາຍການອອກ" msgid "Check formula" -msgstr "" +msgstr "ກວດເບິ່ງສູດ" msgid "Calculation name" -msgstr "" +msgstr "ຊື່ການຄິດໄລ່" msgid "Shown in table headers and chart axes/legends" -msgstr "" +msgstr "ສະ​ແດງ​​ຢູ່​ເທິງຕາ​ຕະ​ລາງ​ ແລະ​ ແກນ​ແຜນ​ວາດ" msgid "Delete calculation" -msgstr "" +msgstr "ລົບການຄິດໄລ່" msgid "Cancel" -msgstr "Cancel" +msgstr "ຍົກເລີກ" msgid "The calculation can only be saved with a valid formula" -msgstr "" +msgstr "ການຄິດໄລ່ແມ່ນຖືກບັນທຶກດ້ວຍສູດທີ່ຖືກຕ້ອງເທົ່ານັ້ນ" msgid "Add a name to save this calculation" -msgstr "" +msgstr "ເພີ່ມຊື່ເພື່ບັນທຶກການຄິດໄລ່" msgid "Save calculation" -msgstr "" +msgstr "ບັນທຶກການຄິດໄລ່" msgid "" "Are you sure you want to delete this calculation? It may be used by other " "visualizations." msgstr "" +"ເຈົ້າແນ່ໃຈບໍ່ສິລືບຂໍ້ມູນການຄິດໄລ່ນີ້? " +"ຂໍ້ມູນດັ້ງກ່າວອາດຈະຖືກນໍາໃຊ້ໃນການສ້າງພາບຂໍ້ມູນໃໝ່ກໍ່ເປັນໄດ້" msgid "Yes, delete" -msgstr "" +msgstr "ຢືນຢັນ, ລົບ" msgid "Totals only" -msgstr "" +msgstr "ທັງໝົດເທົ່ານັ້ນ" msgid "Details only" -msgstr "" +msgstr "ລາຍລະອຽດເທົ່ານັ້ນ" msgid "Loading" msgstr "ກໍາລັງໂຫຼດ" @@ -137,27 +146,30 @@ msgid "Data elements" msgstr "ອົງປະກອບຂໍ້ມູນ" msgid "Search by data element name" -msgstr "" +msgstr "ຄົ້ນຫາໂດຍຊື່ອົງປະກອບຂໍ້ມູນ" msgid "No data elements found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "ບໍ່ພົບອົງປະກອບຂໍ້ມູນຂອງ \"{{- searchTerm}}\"" msgid "No data elements found" -msgstr "" +msgstr "ບໍ່ພົບອົງປະກອບຂໍ໊ມູນ" msgid "" "Drag items here, or double click in the list, to start building a " "calculation formula" -msgstr "" +msgstr "ລາກລາຍການມາບ່ອນນີ້, ຫຼືຄລິກສອງເທື່ອໃນລາຍການເພື່ອສ້າງສູດການຄິດໄລ່" msgid "Math operators" -msgstr "" +msgstr "ຕົວປະຕິບັດການຄະນິດສາດ" msgid "Data Type" -msgstr "" +msgstr "ຊະນິດຂໍ້ມູນ" + +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "ມີພຽງ {{dataType}} ທີສາມາດໃຊ້ໃນ {{visType}}" msgid "All types" -msgstr "" +msgstr "ທຸກຊະນິດ" msgid "Disaggregation" msgstr "Disaggregation" @@ -166,109 +178,117 @@ msgid "No data" msgstr "ບໍ່ມີຂໍ້ມູນ" msgid "Search by data item name" -msgstr "" +msgstr "ຄົ້ນຫາໂດຍຊື່ລາຍການຂໍ້ມູນ" msgid "No items selected" -msgstr "" +msgstr "ບໍ່ມີລາຍການທີ່ຖືກເລືອກ" msgid "Selected Items" -msgstr "" +msgstr "ລາຍການທີ່ເລືອກ" msgid "No indicators found" -msgstr "" +msgstr "ບໍ່ພົບຕົວຊີ້ວັດ" msgid "No data sets found" -msgstr "" +msgstr "ບໍ່ພົບຊຸດຂໍ້ມູນ" msgid "No event data items found" -msgstr "" +msgstr "ບໍ່ພົບຂໍ້ມູນເຫດການ" msgid "No program indicators found" -msgstr "" +msgstr "ບໍ່ພົບໂປຼແກຼມຕົວຊີ້ວັດ" + +msgid "No calculations found" +msgstr "ບໍ່ພົບການຄິດໄລ່" msgid "No indicators found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "ບໍ່ພົບຕົວຊີ້ວັດສຳລັບ \"{{- searchTerm}}\"" msgid "No data sets found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "ບໍ່ພົບຊຸດຂໍ້ມູນສຳລັບ \"{{- searchTerm}}\"" msgid "No event data items found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "ບໍ່ພົບຂໍ້ມູນເຫດການສຳລັບ \"{{- searchTerm}}\"" msgid "No program indicators found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "ບໍ່ພົບໂປຼແກຼມຕົວຊີ້ວັດສຳລັບ \"{{- searchTerm}}\"" + +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "ບໍ່ພົບການຄິດໄລ່ສຳລັບ \"{{- serachTerm}}\"" msgid "Nothing found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "ບໍ່ພົບຫຍັງສຳລັບ \"{{- searchTerm}}\"" msgid "Calculation" -msgstr "" +msgstr "ການຄິດໄລ່" msgid "Metric type" -msgstr "" +msgstr "ຫົວໜ່ວຍວັດແທກ" msgid "All metrics" msgstr "ທຸກການປັບປຸງ" msgid "Move to {{axisName}}" -msgstr "" +msgstr "ຍ້າຍໄປ {{axisName}}" msgid "Add to {{axisName}}" -msgstr "" +msgstr "ເພີ່ມໃສ່ {{axisName}}" msgid "Not available for {{visualizationType}}" -msgstr "" +msgstr "ບໍ່ມີສໍາລັບ {{visualizationType}}" msgid "Remove Assigned Categories" -msgstr "" +msgstr "ລົບກຸ່ມທີ່ຖືກມອບໝາຍ" msgid "Add Assigned Categories" -msgstr "" +msgstr "ເພີ່ມກຸ່ມທີ່ຖືກມອບໝາຍ" msgid "Remove" msgstr "ລົບອອກ" msgid "Filter dimensions" -msgstr "" +msgstr "ຂະໜາດຕົວຕອງ" msgid "Main dimensions" -msgstr "" +msgstr "ຕົວຕອງທີ່ສຳຄັນ" msgid "Your dimensions" -msgstr "" +msgstr "ຂະໜາດຂອງທ່ານ" msgid "Dimension recommended with selected data" -msgstr "" +msgstr "ຂະໜາດທີ່ແນະນຳດ້ວຍຂໍ້ມູນທີ່ເລືອກ" msgid "All items" -msgstr "" +msgstr "ລາຍການທັງໝົດ" msgid "Automatically include all items" -msgstr "" +msgstr "ເພີ່ມລາຍການທັງໝົດໂດຍອັດຕະໂນມັດ" msgid "" "Select all {{- dimensionTitle}} items. With this option, new items added in " "the future will be automatically included." msgstr "" +"ເລືອກລາຍການທັງໝົດ {{- dimensionTitle}} ດ້ວຍຕົວເລືອກນີ້, " +"ລາຍການໃໝ່ທີ່ເພີ່ມເຂົ້າມາໃນຄັ້ງໜ້າຈະຖືກເພີ່ມຂົ້າໂດຍອັດຕະໂນມັດ." msgid "Manually select items..." -msgstr "" +msgstr "ເລືອກລາຍການດ້ວຍຕົນເອງ..." msgid "Nothing found in {{- dimensionTitle}}" -msgstr "" +msgstr "ບໍ່ຖືກຄົ້ນພົບໃນ {{- dimensionTitle}}" msgid "Search" msgstr "ຄົນຫາ" msgid "Nothing found for {{- searchTerm}}" -msgstr "" +msgstr "ບໍ່ຖືກຄົ້ນພົບສຳລັບ {{- searchTerm}}" msgid "Delete {{fileType}}" -msgstr "" +msgstr "ລົບ {{fileType}}" msgid "" "This {{fileType}} and related interpretations will be deleted. Continue?" -msgstr "" +msgstr "{{fileType}} ນີ້ ແລະ ການຮັບຂໍ້ມູນທີ່ກ່ຽວຂ້ອງຈະຖືກລົບ. ສືບຕໍ່ບໍ່?" msgid "Delete" msgstr "ລົບ" @@ -280,37 +300,37 @@ msgid "New" msgstr "ສ້າງໃຫມ່" msgid "Open…" -msgstr "" +msgstr "ເປີດ..." msgid "Save" msgstr "ບັນທຶກ" msgid "Save…" -msgstr "" +msgstr "ບັນທຶກ..." msgid "Save as…" -msgstr "" +msgstr "ບັນທຶກເປັນ..." msgid "Rename…" -msgstr "" +msgstr "ປ່ຽນຊື່..." msgid "Translate…" -msgstr "" +msgstr "ແປ..." msgid "Share…" -msgstr "" +msgstr "ແບ່ງປັນ..." msgid "Get link…" -msgstr "" +msgstr "ເອົາລິ້ງ..." msgid "Open in this app" -msgstr "" +msgstr "ເປີດແອ໋ບນີ້" msgid "Close" msgstr "ປິດ" msgid "Rename {{fileType}}" -msgstr "" +msgstr "ປ່ຽນຊື່ {{fileType}}" msgid "Name" msgstr "ຊື່" @@ -322,141 +342,125 @@ msgid "Rename" msgstr "ປ່ຽນຊື່" msgid "{{- objectName}} (copy)" -msgstr "" +msgstr "{{- ຊື່ອົງປະກອບ}} (copy)" msgid "Save {{fileType}} as" -msgstr "" +msgstr "ບັນທຶກ {{fileType}} ເປັນ" msgid "event report" -msgstr "" +msgstr "ລາຍງານເຫດການ" msgid "line list" -msgstr "" +msgstr "ບັນຊີລາຍຊື່" msgid "map" -msgstr "" +msgstr "ແຜນທີ່" msgid "visualization" -msgstr "" +msgstr "ການສ້າງພາບຂໍ້ມູນ" msgid "Edit" msgstr "ແກ້ໄຂ" msgid "Write a reply" -msgstr "" +msgstr "ຂຽນການຕອບກັບ" msgid "Post reply" -msgstr "" +msgstr "ຕອບກ່ອນໜ້າ" + +msgid "Delete failed" +msgstr "ການລົບລົ້ມເຫຼວ" msgid "Could not update comment" -msgstr "" +msgstr "ບໍ່ສາມາດອັບເດດຄຳເຫັນໄດ້" msgid "Enter comment text" -msgstr "" +msgstr "ປ້ອນຄຳເຫັນ" msgid "Update" msgstr "ປັບປຸງ" msgid "Viewing interpretation: {{- visualisationName}}" -msgstr "" +msgstr "ເບິ່ງຂໍ້ຄວາມ: {{- visualisationName}}" msgid "Could not load interpretation" -msgstr "" +msgstr "ບໍ່ສາມາດໂຫຼດຂໍ້ຄວາມ" msgid "" "The interpretation couldn’t be displayed. Try again or contact your system " "administrator." -msgstr "" +msgstr "ຂໍ້ຄວາມບໍ່ສາມາດສະແດງໄດ້, ລອງອີກຄັ້ງ ຫຼື ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ" msgid "Hide interpretation" -msgstr "" +msgstr "ເຊື່ອງຂໍ້ຄວາມ" msgid "Write an interpretation" -msgstr "" +msgstr "ຂຽນຂໍ້ຄວາມ" + +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "ຄົນອື່ນໆທີ່ເບິ່ງຂໍ້ຄວາມໃນຄັ້ງໜ້າອາດຈະເຫັນຂໍ້ມູນເພີ່ມ" msgid "Post interpretation" -msgstr "" +msgstr "ຮັບຂໍ້ມູນກ່ອນໜ້າ" msgid "Interpretations" msgstr "ການແປຂໍ້ມູນ" +msgid "Reply" +msgstr "ຕອບກັບ" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} ການຕອບກັບ" + +msgid "View replies" +msgstr "ເບິ່ງການຕອບກັບ" + msgid "Unlike" msgstr "ບໍ່ມັກ" msgid "Like" msgstr "ມັກ" -msgid "Reply" -msgstr "ຕອບກັບ" +msgid "See interpretation" +msgstr "ສະແດງຂໍ້ຄວາມ" + +msgid "Open in app" +msgstr "ເປີດໃນແອ໋ບ" msgid "Share" msgstr "ເຜີຍແຜ່" -msgid "See interpretation" -msgstr "" - msgid "Manage sharing" -msgstr "" +msgstr "ຈັດການການເຜີຍແຜ່" msgid "Could not update interpretation" -msgstr "" +msgstr "ບໍ່ສາມາດອັບເດດຂໍ້ຄວາມ" msgid "Enter interpretation text" -msgstr "" - -msgid "Bold text" -msgstr "" - -msgid "Italic text" -msgstr "" - -msgid "Link to a URL" -msgstr "" - -msgid "Mention a user" -msgstr "" - -msgid "Add emoji" -msgstr "" - -msgid "Preview" -msgstr "" - -msgid "Back to write mode" -msgstr "" - -msgid "Too many results. Try refining the search." -msgstr "" - -msgid "Search for a user" -msgstr "" - -msgid "Searching for \"{{- searchText}}\"" -msgstr "" - -msgid "No results found" -msgstr "" +msgstr "ປ້ອນຂໍ້ຄວາມ" msgid "Not available offline" -msgstr "" +msgstr "ບໍ່ສາມາດໃຊ້ໄດ້ອອບລາຍ" msgid "Created by" msgstr "ສ້າງໂດຍ" msgid "Anyone" -msgstr "" +msgstr "ທຸກຄົນ" msgid "Only you" -msgstr "" +msgstr "ທ່ານຄົນດຽວ" msgid "Others" -msgstr "Others" +msgstr "ອື່ນໆ" msgid "Not supported by this app yet" -msgstr "" +msgstr "ແອັບນີ້ຍັງບໍ່ສາມາດຮອງຮັບເທື່ອ" msgid "Filter by name" -msgstr "Filter by name" +msgstr "ກັ່ນຕອງຈາກຊື່" msgid "Created" msgstr "ສ້າງແລ້ວ" @@ -465,110 +469,119 @@ msgid "Last updated" msgstr "ປັບປຸງ​ຄັ້ງຫລ້າສຸດ" msgid "Type" -msgstr "Type" +msgstr "ຊະນິດ" msgid "Clear filters" msgstr "ປັບປຸງເຄື່ອງມືຄັດຈ້ອນ" msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" -msgstr "" +msgstr "{{firstItemIndex}} {{lastItemIndex}} ຂອງ {{totalNumberOfItems}}" msgid "Open" msgstr "ເປີດ" msgid "Couldn't load items" -msgstr "" +msgstr "ບໍ່ສາມາດໂຫຼດລາຍການໄດ້" msgid "" "There was a problem loading items. Try again or contact your system " "administrator." -msgstr "" +msgstr "ມີບັນຫາໃນການໂຫຼດລາຍການ. ລອງອີກຄັ້ງ ຫຼື ຕິດຕໍ່ຜູ້ດູແລລະບົບຂອງທ່ານ." msgid "No items found. Create a new to get started." -msgstr "" +msgstr "ບໍ່ພົບລາຍການທີ່ຄົ້ນຫາ. ສ້າງໃໝ່ເພື່ອເລີ່ມຕົ້ນ." msgid "" "No items found. Try adjusting your search or filter options to find what " "you're looking for." msgstr "" +"ບໍ່ພົບລາຍການ. ລອງປັບຕົວເລືອກການຄົ້ນຫາ ຫຼື " +"ຕົວກອງເພື່ອສິ່ງທີ່ທ່ານກໍາລັງຄົ້ນຫາ." msgid "Create new" msgstr "ສ້າງໃໝ່" msgid "Open a visualization" -msgstr "" +msgstr "ເປີດພາບຂໍ້ມູນ" msgid "Loading visualizations" -msgstr "" +msgstr "ໂຫຼດພາບຂໍ້ມູນ" msgid "Couldn't load visualizations" -msgstr "" +msgstr "ບໍ່ສາມາດໂຫຼດພາບຂໍ້ມູນ" msgid "" "There was a problem loading visualizations. Try again or contact your system" " administrator." -msgstr "" +msgstr "ມີບັນຫາໃນການໂຫຼດພາບຂໍ້ມູນ. ລອງອີກຄັ້ງ ຫຼື ຕິດຕໍ່ຜູ້ດູແລລະບົບຂອງທ່ານ." msgid "No visualizations found. Click New visualization to get started." -msgstr "" +msgstr "ບໍ່ພົບພາບຂໍ້ມູນ. ຄລິກ ເພີ່ມພາບຂໍ້ມູນໃໝ່ ເພື່ອເລີ່ມຕົ້ນ." msgid "" "No visualizations found. Try adjusting your search or filter options to find" " what you're looking for." msgstr "" +"ບໍ່ພົບພາບຂໍ້ມູນ. ລອງປັບຕົວເລືອກການຄົ້ນຫາ ຫຼື " +"ຕົວກອງເພື່ອສິ່ງທີ່ທ່ານກໍາລັງຄົ້ນຫາ." msgid "New visualization" -msgstr "" +msgstr "ພາບຂໍ້ມູນໃໝ່" msgid "Open a map" -msgstr "" +msgstr "ເປີດແຜນທີ່" msgid "Loading maps" -msgstr "" +msgstr "ໂຫຼດແຜນທີ່" msgid "Couldn't load maps" -msgstr "" +msgstr "ບໍ່ສາມາດໂຫຼດແຜນທີ່" msgid "" "There was a problem loading maps. Try again or contact your system " "administrator." -msgstr "" +msgstr "ພົບບັນຫາໃນການ3ຫຼດແຜນທີ່. ລອງໃໝ່ອີກຄັ້ງ ຫຼື ຕິດຕໍ່ຜູ້ດູແລລະບົບ" msgid "No maps found. Click New map to get started." -msgstr "" +msgstr "ບໍ່ພົບແຜນທີ່. ຄລິກສ້າງແຜນທີ່ໃໝ່ເພື່ອເລີ່ມຕົ້ນ" msgid "" "No maps found. Try adjusting your search or filter options to find what " "you're looking for." msgstr "" +"ບໍ່ພົບແຜນທີ່. ລອງປັບຕົວເລືອກການຄົ້ນຫາ ຫຼື " +"ຕົວກອງເພື່ອສິ່ງທີ່ທ່ານກໍາລັງຄົ້ນຫາ." msgid "New map" -msgstr "" +msgstr "ແຜນທີ່ໃໝ່" msgid "Open a line list" -msgstr "" +msgstr "ເປີດບັນຊີລາຍຊື່" msgid "Loading line lists" -msgstr "" +msgstr "ໂຫຼດບັນຊີລາຍຊື່" msgid "Couldn't load line lists" -msgstr "" +msgstr "ບໍ່ສາມາດໂຫຼດບັນຊີລາຍຊື່" msgid "" "There was a problem loading line lists. Try again or contact your system " "administrator." msgstr "" +"ພົບບັນຫາໃນການໂຫຼດບັນຊີລາຍຊື່. ລອງອີກຄັ້ງ ຫຼື ຕິດຕໍ່ຜູ້ດູແລລະບົບຂອງທ່ານ." msgid "No line lists found. Click New line list to get started." -msgstr "" +msgstr "ບໍ່ພົບບັນຊີລາຍຊື່. ຄລິກເພີ່ມບັນຊີລາຍຊື່ໃໝ່ເພື່ອເລີ່ມຕົ້ນ." msgid "" "No line lists found. Try adjusting your search or filter options to find " "what you're looking for." msgstr "" +"ບໍ່ພົບບັນຊີລາຍຊື່. ລອງປັບຕົວເລືອກການຄົ້ນຫາ ຫຼື " +"ຕົວກອງເພື່ອສິ່ງທີ່ທ່ານກໍາລັງຄົ້ນຫາ." msgid "New line list" -msgstr "" +msgstr "ເພີ່ມບັນຊີລາຍຊື່ໃໝ່" msgid "Options" msgstr "ຈັດການ" @@ -578,24 +591,24 @@ msgstr "ເຊື່ອງ" msgid "{{count}} org units" msgid_plural "{{count}} org units" -msgstr[0] "" +msgstr[0] "{{count}} ໜ່ວຍງານອົງການ" msgid "{{count}} levels" msgid_plural "{{count}} levels" -msgstr[0] "" +msgstr[0] "{{count}} ຂັ້ນ" msgid "{{count}} groups" msgid_plural "{{count}} groups" -msgstr[0] "" +msgstr[0] "{{count}} ກຸ່ມ" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "ເລືອກ {{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "ບໍ່ມີຫຍັງເລືອກ" msgid "User organisation unit" -msgstr "" +msgstr "ຫນ່ວຍງານການຈັດຕັ້ງຂອງຜູ້ໃຊ້" msgid "User sub-units" msgstr "ຫົວໜ່ວຍຍ່ອຍຂອງທ່ານ" @@ -604,10 +617,10 @@ msgid "User sub-x2-units" msgstr "ຫົວໜ່ວຍຍ່ອຍຂັ້ນສອງຂອງທ່ານ" msgid "Select a level" -msgstr "" +msgstr "ເລືອກຂັ້ນ" msgid "Select a group" -msgstr "" +msgstr "ເລືອກກຸ່ມ" msgid "Deselect all" msgstr "ຍົກເລີກການເລືອກທັງໝົດ" @@ -619,20 +632,20 @@ msgid "Year" msgstr "ປີ" msgid "Select year" -msgstr "" +msgstr "ເລືອກປີ" msgid "Period" msgstr "ຊ່ວງເວລາ" +msgid "Selected Periods" +msgstr "ເລືອກຊ່ວງເວລາ" + msgid "Relative periods" msgstr "​ໄລ​ຍະ​ເວ​ລາ​ໄກ້​ຄຽງ" msgid "Fixed periods" msgstr "ໄລຍະເວລາທີ່ໄດ້ກຳນົດ" -msgid "Selected Periods" -msgstr "" - msgid "No periods selected" msgstr "ບໍ່ທັນໄດ້ເລືອກໄລຍະເວລາ" @@ -643,16 +656,16 @@ msgid "Weekly" msgstr "ເປັນອາທິດ" msgid "Weekly (Start Wednesday)" -msgstr "" +msgstr "ເປັນອາທິດ (ເລີ່ມຈາກວັນພຸດ)" msgid "Weekly (Start Thursday)" -msgstr "" +msgstr "ເປັນອາທິດ (ເລີ່ມຈາກວັນພະຫັດ)" msgid "Weekly (Start Saturday)" -msgstr "" +msgstr "ເປັນອາທິດ (ເລີ່ມຈາກວັນເສົາ)" msgid "Weekly (Start Sunday)" -msgstr "" +msgstr "ເປັນອາທິດ (ເລີ່ມຈາກວັນອາທິດ)" msgid "Bi-weekly" msgstr "ສອງອາທິດຕໍ່ຄັ້ງ" @@ -676,7 +689,7 @@ msgid "Yearly" msgstr "ລາຍປີ" msgid "Financial year (Start November)" -msgstr "" +msgstr "ສົກປີງົບປະມານ (ເລີ່ມແຕ່ເດືອນພະຈິກ)" msgid "Financial year (Start October)" msgstr "ສົກປີງົບປະມານ (ເລີ່ມແຕ່ເດືອນຕຸລາ)" @@ -703,7 +716,7 @@ msgid "Last 14 days" msgstr "14 ມື້ກ່ອນ" msgid "Last 30 days" -msgstr "Last 30 days" +msgstr "30 ມື້ກ່ອນ" msgid "Last 60 days" msgstr "60 ມື້ກ່ອນ" @@ -772,7 +785,7 @@ msgid "Bi-months this year" msgstr "ສອງເດືອນ ຂອງປີນີ້" msgid "This quarter" -msgstr "ໄຕມານີ້" +msgstr "ໄຕມາດນີ້" msgid "Last quarter" msgstr "ໄຕມາດຜ່ານມາ" @@ -790,7 +803,7 @@ msgid "Last six-month" msgstr "6 ເດືອນຜ່ານມາ" msgid "Last 2 six-month" -msgstr "" +msgstr "ສອງ 6 ເດືອນຜ່ານມາ" msgid "This financial year" msgstr "ສົກປີງົບປະມານຂອງປິນີ້" @@ -811,7 +824,7 @@ msgid "Last 5 years" msgstr "5 ປີຍ້ອນຫຼັງ" msgid "Last 10 years" -msgstr "" +msgstr "10 ປີຍ້ອນຫຼັງ" msgid "Days" msgstr "ມື້" @@ -835,37 +848,76 @@ msgid "Six-months" msgstr "6 ເດືອນ" msgid "Financial Years" -msgstr "" +msgstr "ສົກປີງົບປະມານ" msgid "Years" msgstr "ປີ" -msgid "Translating to" +msgid "Value: {{value}}" msgstr "" +msgid "Bold text" +msgstr "ຕົວອັກສອນເຂັ້ມ" + +msgid "Italic text" +msgstr "ຕົວອັກສອນສະຫຼ່ຽງ" + +msgid "Link to a URL" +msgstr "ເຊື່ອມຕໍ່ກັບ URL" + +msgid "Mention a user" +msgstr "ກ່າວເຖິງຜູ້ໃຊ້" + +msgid "Add emoji" +msgstr "ເພີ່ມ emoji" + +msgid "Preview" +msgstr "ເບິ່ງຕົວຢ່າງ" + +msgid "Back to write mode" +msgstr "ກັບໄປທີ່ໂໝດຂຽນ" + +msgid "Interpretations and details" +msgstr "ຂໍ້ມູນ ແລະ ລາຍລະອຽດ" + +msgid "Translating to" +msgstr "ແປເປັນ" + msgid "Choose a locale" -msgstr "" +msgstr "ເລືອກສະຖານທີ່ເກີດເຫດ" msgid "Base locale reference" -msgstr "" +msgstr "ການອ້າງອີງຈາກສະຖານທີ່ເກີດເຫດ" msgid "Choose a locale to translate from the menu above" -msgstr "" +msgstr "ເລືອກສະຖານທີ່ເກີດເຫດເພື່ອແປຈາກລາຍການຂັ້ນເທິງ" msgid "Translate: {{objectName}}" -msgstr "" +msgstr "ແປ {{objectName}}" msgid "Save translations" -msgstr "" +msgstr "ບັນທຶກການແປ" msgid "Cannot save while offline" -msgstr "" +msgstr "ບໍ່ສາມາດບັນທຶກແບບອອບລາຍ" msgid "Could not load translations" -msgstr "" +msgstr "ບໍ່ສາມາດໂຫຼດການແປ" msgid "Retry" -msgstr "" +msgstr "ລອງໃໝ່" + +msgid "Too many results. Try refining the search." +msgstr "ຜົນໄດ້ຮັບຫຼາຍເກີນໄປ. ປັບປຸງການຄົ້ນຫາ." + +msgid "Search for a user" +msgstr "ຄົ້ນຫາຜູ້ໃຊ້" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "ຄົ້ນຫາ \"{{- searchText}}\"" + +msgid "No results found" +msgstr "ບໍ່ພົບຜົນການຊອກຫາ" msgid "Series" msgstr "ແທ່ງ" @@ -874,37 +926,37 @@ msgid "Category" msgstr "ລວງນອນ" msgid "Filter" -msgstr "Filter" +msgstr "ຕົວກອງ" msgid "Columns" -msgstr "" +msgstr "ຖັນ" msgid "Rows" -msgstr "" +msgstr "ແຖວ" msgid "Points" -msgstr "" +msgstr "ຄະແນນ" msgid "Reporting rate" -msgstr "" +msgstr "ອັດຕາການລາຍງານ" msgid "Reporting rate on time" -msgstr "" +msgstr "ອັດຕາການລາຍງານຕົງເວລາ" msgid "Actual reports" -msgstr "" +msgstr "ລາຍງານຕົວຈິງ" msgid "Actual reports on time" -msgstr "" +msgstr "ລາຍງານຕົວຈິງຕົງເວລາ" msgid "Expected reports" -msgstr "" +msgstr "ລາຍງານທີ່ຄາດໄວ້" msgid "Program" -msgstr "Program" +msgstr "ໂປແກຼມ" msgid "Select a program" -msgstr "" +msgstr "ເລືອກໂປແກຼມ" msgid "Indicators" msgstr "ຕົວຊີ້ວັດ" @@ -913,109 +965,109 @@ msgid "Indicator group" msgstr "ກຸ່ມຂອງຕົວຊີ້ວັດ" msgid "All groups" -msgstr "" +msgstr "ກຸ່ມທັງໝົດ" msgid "Indicator" msgstr "ຕົວຊີ້ວັດ" msgid "No indicator groups found" -msgstr "" +msgstr "ບໍ່ພົບກຸ່ມຕົວຊີ້ວັດ" msgid "Loading indicator groups" -msgstr "" +msgstr "ໂຫຼດກຸ່ມຕົວຊີ້ວັດ" msgid "Data element group" -msgstr "ກຸ່ມຂອລອົງປະກອບຂໍ້ມູນ" +msgstr "ກຸ່ມຂອງອົງປະກອບຂໍ້ມູນ" msgid "Data element" -msgstr "Data Element" +msgstr "ອົງປະກອບຂໍ້ມູນ" msgid "No data element groups found" -msgstr "" +msgstr "ບໍ່ພົບກຸ່ມອົງປະກອບຂໍ້ມູນ" msgid "Loading data element groups" -msgstr "" +msgstr "ໂຫຼດກຸ່ມອົງປະກອບຂໍ້ມູນ" msgid "Data sets" msgstr "ແບບຟອມ" msgid "Data set" -msgstr "Data set\\:" +msgstr "ແບບຟອມ" msgid "All data sets" -msgstr "" +msgstr "ແບບຟອມທັງໝົດ" msgid "Loading data sets" -msgstr "" +msgstr "ໂຫຼດແບບຟອມ" msgid "Event data items" msgstr "ຂໍ້ມູນລາຍບຸກຄົນ" msgid "All programs" -msgstr "" +msgstr "ໂປແກຼມທັງໝົດ" msgid "Event data item" -msgstr "" +msgstr "ຂໍ້ມູນລາຍບຸກຄົນ" msgid "No programs found" -msgstr "" +msgstr "ບໍ່ພົບໂປແກຼມ" msgid "Loading programs" -msgstr "" +msgstr "ໂຫຼດໂປແກຼມ" msgid "Program indicators" msgstr "ຕົວຊີ້ວັດສະເພາະວຽກຂອງຂະແໜງ" msgid "Program indicator" -msgstr "Program Indicator Management" +msgstr "ໂປແກຼມຕົວຊີ້ວັດ" msgid "Calculations" -msgstr "" +msgstr "ຄິດໄລ່" msgid "Number" msgstr "ຈຳນວນ" msgid "Formula is empty. Add items to the formula from the lists on the left." -msgstr "" +msgstr "ສູດຄຳນວນຫວ່າງເປົ່າ. ເພີ່ມລາຍການໃສ່ສູດຈາກລາຍການຂ້າງຊ້າຍ." msgid "Consecutive math operators" -msgstr "" +msgstr "ຕົວປະຕິບັດການຄະນິດສາດຕາມລຳດັບ" msgid "Consecutive data elements" -msgstr "" +msgstr "ອົງປະກອບຂໍ້ມູນຕາມລຳດັບ" msgid "Starts or ends with a math operator" -msgstr "" +msgstr "ເລີ່ມຕົ້ນ ຫຼື ສິ້ນສຸດດ້ວຍຕົວປະຕິບັດການຄະນິດສາດ" msgid "Empty parentheses" -msgstr "" +msgstr "ວົງເລັບວ່າງເປົ່າ" msgid "Missing right parenthesis )" -msgstr "" +msgstr "ຂາດວົງເລັບຂວາ )" msgid "Missing left parenthesis (" -msgstr "" +msgstr "ຂາດວົງເລັບຊ້າຍ (" msgid "Extra Small" -msgstr "" +msgstr "ນ້ອຍສຸດ" msgid "Small" msgstr "ນ້ອຍ" msgid "Regular" -msgstr "Regular" +msgstr "ທຳມະດາ" msgid "Large" msgstr "ໃຫຍ່" msgid "Extra Large" -msgstr "" +msgstr "ໃຫຍ່ສຸດ" msgid "Left" msgstr "ຊ້າຍ" msgid "Center" -msgstr "" +msgstr "ກາງ" msgid "Right" msgstr "ຂວາ" @@ -1024,10 +1076,10 @@ msgid "Start" msgstr "Start" msgid "Middle" -msgstr "" +msgstr "ກາງ" msgid "End" -msgstr "" +msgstr "ຈົບ" msgid "Top" msgstr "ເທິງສຸດ" @@ -1036,42 +1088,45 @@ msgid "Bottom" msgstr "ລຸ່ມສຸດ" msgid "{{dynamicOuNames}} and {{lastOuName}}" -msgstr "" +msgstr "{{dynamicOuNames}} ແລະ {{lastOuName}}" msgid "{{allDynamicOuNames}} levels" -msgstr "" +msgstr "{{allDynamicOuNames}} ຂັ້ນ" msgid "{{allDynamicOuNames}} groups" -msgstr "" +msgstr "{{allDynamicOuNames}} ກຸ່ມ" msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" -msgstr "" +msgstr "{{allDynamicOuNames}} ຂັ້ນໃນ {{staticOuNames}}" msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" -msgstr "" +msgstr "{{allDynamicOuNames}} ກຸ່ມໃນ {{staticOuNames}}" msgid "{{percentage}}% of total x values" -msgstr "" +msgstr "{{percentage}} % ລວມຂອງຄ່າ x" msgid "{{percentage}}% of total y values" -msgstr "" +msgstr "{{percentage}} % ລວມຂອງຄ່າ y" msgid "{{thresholdFactor}} × IQR Q1" -msgstr "" +msgstr "{{thresholdFactor}} x IQR Q1" msgid "{{thresholdFactor}} × IQR Q3" -msgstr "" +msgstr "{{thresholdFactor}} x IQR Q3" msgid "{{thresholdFactor}} × Modified Z-score low" -msgstr "" +msgstr "{{thresholdFactor}} x ແກ້ໄຂຄະແນນ z ຕ່ຳ" msgid "{{thresholdFactor}} × Modified Z-score high" -msgstr "" +msgstr "{{thresholdFactor}} x ແກ້ໄຂຄະແນນ z ສູງ" msgid "{{thresholdFactor}} × Z-score low" -msgstr "" +msgstr "{{thresholdFactor}} x ຄະແນນ z ຕ່ຳ" msgid "{{thresholdFactor}} × Z-score high" +msgstr "{{thresholdFactor}} x ຄະແນນ z ສູງ" + +msgid "Not applicable" msgstr "" msgid "Data" @@ -1081,73 +1136,76 @@ msgid "Organisation unit" msgstr "​ຫົວ​ໜ່ວຍ​ການ​ຈັດ​ຕັ້ງ" msgid "Assigned Categories" -msgstr "" +msgstr "ຈັດໝວດໝູ່" msgid "Pivot table" msgstr "ແບບຕາຕະລາງໄພວ໋ອດ" msgid "Area" -msgstr "" +msgstr "ພື້ນທີ່" msgid "Stacked area" -msgstr "" +msgstr "ພື້ນທີ່ຊ້ອນກັນ" msgid "Bar" -msgstr "" +msgstr "ແຖບ" msgid "Stacked bar" -msgstr "" +msgstr "ແຖບຊ້ອນກັນ" msgid "Column" msgstr "ຖັນ" msgid "Year over year (column)" -msgstr "" +msgstr "ປີຕໍ່ປີ (ຖັນ)" msgid "Stacked column" -msgstr "" +msgstr "ຖັນຊ້ອນກັນ" msgid "Gauge" -msgstr "" +msgstr "ເຄື່ອງວັດແທກ" msgid "Line" -msgstr "" +msgstr "ເສັ້ນ" msgid "Line list" msgstr "ລາຍການລາຍບຸກຄົນ" msgid "Year over year (line)" -msgstr "" +msgstr "ປີຕໍ່ປີ (ເສັ້ນ)" msgid "Pie" -msgstr "" +msgstr "ພາຍ" msgid "Radar" -msgstr "" +msgstr "ເຣດາ" msgid "Scatter" -msgstr "" +msgstr "ກະແຈກກະຈາຍ" msgid "Single value" -msgstr "" +msgstr "ຄ່າດຽວ" + +msgid "Outlier table" +msgstr "ຕາຕະລາງທີ່ເກີນກວ່າ" msgid "All charts" -msgstr "" +msgstr "ຕາຕະລາງທັງຫມົດ" msgid "{{seriesName}} (trend)" -msgstr "" +msgstr "{{seriesName}} (ແນວໂນ້ມ)" msgid "Trend" msgstr "ແນວໂນ້ມ" msgid "No legend for this series" -msgstr "" +msgstr "ບໍ່ມີນິຍາມສຳລັບຊຸດນີ້" msgid "and {{amount}} more..." -msgstr "" +msgstr "ແລະ {{amount}} ເພີ່ມ..." msgid "Linear Regression" -msgstr "" +msgstr "ການຖົດຖອຍແບບເສັ້ນ" msgid "Target" msgstr "ເປົ້າໝາຍ" @@ -1156,11 +1214,11 @@ msgid "Base" msgstr "ຖານ" msgid "Axis {{axisId}}" -msgstr "" +msgstr "ແກນ {{axisId}}" msgid "{{count}} items" msgid_plural "{{count}} items" -msgstr[0] "" +msgstr[0] "{{count}} ລາຍການ" msgid "Reset zoom" -msgstr "" +msgstr "ຣີເຊັດຊູມ" diff --git a/i18n/nb.po b/i18n/nb.po index 14644d70c..9031e2d2c 100644 --- a/i18n/nb.po +++ b/i18n/nb.po @@ -1,15 +1,16 @@ # # Translators: -# Karoline Tufte Lien , 2022 # Caroline Hesthagen Holen , 2023 # Jen Jones Arnesen , 2023 +# Karoline Tufte Lien , 2023 +# Martin , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-01-25T12:05:03.360Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Jen Jones Arnesen , 2023\n" +"Last-Translator: Martin , 2024\n" "Language-Team: Norwegian Bokmål (https://app.transifex.com/hisp-uio/teams/100509/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -155,6 +156,9 @@ msgstr "" msgid "Data Type" msgstr "Datatype" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "" + msgid "All types" msgstr "Alle typer" @@ -185,6 +189,9 @@ msgstr "Ingen hendelsesdataelementer funnet" msgid "No program indicators found" msgstr "Ingen programindikatorer funnet" +msgid "No calculations found" +msgstr "" + msgid "No indicators found for \"{{- searchTerm}}\"" msgstr "Ingen indikatorer funnet for \"{{- searchTerm}}\"" @@ -197,6 +204,9 @@ msgstr "Ingen hendelsesdataelementer funnet for \"{{- searchTerm}}\"" msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "Ingen programindikatorer funnet for \"{{- searchTerm}}\"" +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "" + msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "Ingenting funnet for \"{{- searchTerm}}\"" @@ -339,7 +349,7 @@ msgid "map" msgstr "kart" msgid "visualization" -msgstr "" +msgstr "visualisering" msgid "Edit" msgstr "Rediger" @@ -379,6 +389,10 @@ msgstr "" msgid "Write an interpretation" msgstr "Skriv en tolkning" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" @@ -402,12 +416,15 @@ msgstr "Fjern like" msgid "Like" msgstr "Like" -msgid "Share" -msgstr "Del" - msgid "See interpretation" msgstr "" +msgid "Open in app" +msgstr "" + +msgid "Share" +msgstr "Del" + msgid "Manage sharing" msgstr "Administrer deling" @@ -451,7 +468,7 @@ msgid "No results found" msgstr "Ingen resultater funnet" msgid "Not available offline" -msgstr "" +msgstr "Ikke tilgjengelig i frakoblet modus" msgid "Created by" msgstr "Opprettet av" @@ -642,15 +659,15 @@ msgstr "Velg år" msgid "Period" msgstr "Periode" +msgid "Selected Periods" +msgstr "Valgte perioder" + msgid "Relative periods" msgstr "Relative perioder" msgid "Fixed periods" msgstr "Faste perioder" -msgid "Selected Periods" -msgstr "Valgte perioder" - msgid "No periods selected" msgstr "Ingen perioder er valgt" @@ -979,7 +996,7 @@ msgid "Event data item" msgstr "Hendelsesdatapunkt" msgid "No programs found" -msgstr "" +msgstr "Ingen programmer funnet" msgid "Loading programs" msgstr "" @@ -1152,6 +1169,9 @@ msgstr " Spredning" msgid "Single value" msgstr "Enkeltverdi" +msgid "Outlier table" +msgstr "" + msgid "All charts" msgstr "Alle diagrammer" diff --git a/i18n/ne.po b/i18n/ne.po new file mode 100644 index 000000000..f3d1d4695 --- /dev/null +++ b/i18n/ne.po @@ -0,0 +1,1201 @@ +# +# Translators: +# Saroj Dhakal , 2024 +# Prabesh Guragain, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: i18next-conv\n" +"POT-Creation-Date: 2024-01-25T12:05:03.360Z\n" +"PO-Revision-Date: 2020-04-28 22:05+0000\n" +"Last-Translator: Prabesh Guragain, 2024\n" +"Language-Team: Nepali (https://app.transifex.com/hisp-uio/teams/100509/ne/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ne\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "view only" +msgstr "" + +msgid "view and edit" +msgstr "" + +msgid "all users ({{accessLevel}})" +msgstr "" + +msgid "{{userOrGroup}} ({{accessLevel}})" +msgstr "" + +msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" +msgstr "" + +msgid "Not shared with any users or groups" +msgstr "" + +msgid "No description" +msgstr "" + +msgid "Last updated {{time}}" +msgstr "" + +msgid "Created {{time}} by {{author}}" +msgstr "" + +msgid "Created {{time}}" +msgstr "" + +msgid "Viewed {{count}} times" +msgid_plural "Viewed {{count}} times" +msgstr[0] "" +msgstr[1] "" + +msgid "Notifications" +msgstr "" + +msgid "You're subscribed and getting updates about new interpretations." +msgstr "" + +msgid "Unsubscribe" +msgstr "" + +msgid "Subscribe to get updates about new interpretations." +msgstr "" + +msgid "Subscribe" +msgstr "" + +msgid "About this map" +msgstr "" + +msgid "About this line list" +msgstr "" + +msgid "About this visualization" +msgstr "" + +msgid "This app could not retrieve required data." +msgstr "" + +msgid "Network error" +msgstr "" + +msgid "Data / Edit calculation" +msgstr "" + +msgid "Data / New calculation" +msgstr "" + +msgid "Remove item" +msgstr "" + +msgid "Check formula" +msgstr "" + +msgid "Calculation name" +msgstr "" + +msgid "Shown in table headers and chart axes/legends" +msgstr "" + +msgid "Delete calculation" +msgstr "" + +msgid "Cancel" +msgstr "रद्द गर्नुहोस्" + +msgid "The calculation can only be saved with a valid formula" +msgstr "" + +msgid "Add a name to save this calculation" +msgstr "" + +msgid "Save calculation" +msgstr "" + +msgid "" +"Are you sure you want to delete this calculation? It may be used by other " +"visualizations." +msgstr "" + +msgid "Yes, delete" +msgstr "" + +msgid "Totals only" +msgstr "" + +msgid "Details only" +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Data elements" +msgstr "" + +msgid "Search by data element name" +msgstr "" + +msgid "No data elements found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data elements found" +msgstr "" + +msgid "" +"Drag items here, or double click in the list, to start building a " +"calculation formula" +msgstr "" + +msgid "Math operators" +msgstr "" + +msgid "Data Type" +msgstr "" + +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "" + +msgid "All types" +msgstr "" + +msgid "Disaggregation" +msgstr "" + +msgid "No data" +msgstr "" + +msgid "Search by data item name" +msgstr "" + +msgid "No items selected" +msgstr "" + +msgid "Selected Items" +msgstr "" + +msgid "No indicators found" +msgstr "" + +msgid "No data sets found" +msgstr "" + +msgid "No event data items found" +msgstr "" + +msgid "No program indicators found" +msgstr "" + +msgid "No calculations found" +msgstr "" + +msgid "No indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data sets found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No event data items found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No program indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Nothing found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Calculation" +msgstr "" + +msgid "Metric type" +msgstr "" + +msgid "All metrics" +msgstr "" + +msgid "Move to {{axisName}}" +msgstr "" + +msgid "Add to {{axisName}}" +msgstr "" + +msgid "Not available for {{visualizationType}}" +msgstr "" + +msgid "Remove Assigned Categories" +msgstr "" + +msgid "Add Assigned Categories" +msgstr "" + +msgid "Remove" +msgstr "" + +msgid "Filter dimensions" +msgstr "" + +msgid "Main dimensions" +msgstr "" + +msgid "Your dimensions" +msgstr "" + +msgid "Dimension recommended with selected data" +msgstr "" + +msgid "All items" +msgstr "" + +msgid "Automatically include all items" +msgstr "" + +msgid "" +"Select all {{- dimensionTitle}} items. With this option, new items added in " +"the future will be automatically included." +msgstr "" + +msgid "Manually select items..." +msgstr "" + +msgid "Nothing found in {{- dimensionTitle}}" +msgstr "" + +msgid "Search" +msgstr "खोज" + +msgid "Nothing found for {{- searchTerm}}" +msgstr "" + +msgid "Delete {{fileType}}" +msgstr "" + +msgid "" +"This {{fileType}} and related interpretations will be deleted. Continue?" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "File" +msgstr "" + +msgid "New" +msgstr "" + +msgid "Open…" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Save…" +msgstr "" + +msgid "Save as…" +msgstr "" + +msgid "Rename…" +msgstr "" + +msgid "Translate…" +msgstr "" + +msgid "Share…" +msgstr "" + +msgid "Get link…" +msgstr "" + +msgid "Open in this app" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Rename {{fileType}}" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "Rename" +msgstr "" + +msgid "{{- objectName}} (copy)" +msgstr "" + +msgid "Save {{fileType}} as" +msgstr "" + +msgid "event report" +msgstr "" + +msgid "line list" +msgstr "" + +msgid "map" +msgstr "" + +msgid "visualization" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Write a reply" +msgstr "" + +msgid "Post reply" +msgstr "" + +msgid "Delete failed" +msgstr "" + +msgid "Could not update comment" +msgstr "" + +msgid "Enter comment text" +msgstr "" + +msgid "Update" +msgstr "" + +msgid "Viewing interpretation: {{- visualisationName}}" +msgstr "" + +msgid "Could not load interpretation" +msgstr "" + +msgid "" +"The interpretation couldn’t be displayed. Try again or contact your system " +"administrator." +msgstr "" + +msgid "Hide interpretation" +msgstr "" + +msgid "Write an interpretation" +msgstr "" + +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + +msgid "Post interpretation" +msgstr "" + +msgid "Interpretations" +msgstr "" + +msgid "Reply" +msgstr "जवाफ" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" +msgstr[1] "" + +msgid "View replies" +msgstr "" + +msgid "Unlike" +msgstr "" + +msgid "Like" +msgstr "" + +msgid "See interpretation" +msgstr "" + +msgid "Open in app" +msgstr "" + +msgid "Share" +msgstr "" + +msgid "Manage sharing" +msgstr "" + +msgid "Could not update interpretation" +msgstr "" + +msgid "Enter interpretation text" +msgstr "" + +msgid "Not available offline" +msgstr "" + +msgid "Created by" +msgstr "" + +msgid "Anyone" +msgstr "" + +msgid "Only you" +msgstr "" + +msgid "Others" +msgstr "" + +msgid "Not supported by this app yet" +msgstr "" + +msgid "Filter by name" +msgstr "" + +msgid "Created" +msgstr "" + +msgid "Last updated" +msgstr "" + +msgid "Type" +msgstr "" + +msgid "Clear filters" +msgstr "" + +msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" +msgstr "" + +msgid "Open" +msgstr "खोल्नुहोस्" + +msgid "Couldn't load items" +msgstr "" + +msgid "" +"There was a problem loading items. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No items found. Create a new to get started." +msgstr "" + +msgid "" +"No items found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "Create new" +msgstr "" + +msgid "Open a visualization" +msgstr "" + +msgid "Loading visualizations" +msgstr "" + +msgid "Couldn't load visualizations" +msgstr "" + +msgid "" +"There was a problem loading visualizations. Try again or contact your system" +" administrator." +msgstr "" + +msgid "No visualizations found. Click New visualization to get started." +msgstr "" + +msgid "" +"No visualizations found. Try adjusting your search or filter options to find" +" what you're looking for." +msgstr "" + +msgid "New visualization" +msgstr "" + +msgid "Open a map" +msgstr "" + +msgid "Loading maps" +msgstr "" + +msgid "Couldn't load maps" +msgstr "" + +msgid "" +"There was a problem loading maps. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No maps found. Click New map to get started." +msgstr "" + +msgid "" +"No maps found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "New map" +msgstr "" + +msgid "Open a line list" +msgstr "" + +msgid "Loading line lists" +msgstr "" + +msgid "Couldn't load line lists" +msgstr "" + +msgid "" +"There was a problem loading line lists. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No line lists found. Click New line list to get started." +msgstr "" + +msgid "" +"No line lists found. Try adjusting your search or filter options to find " +"what you're looking for." +msgstr "" + +msgid "New line list" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Hide" +msgstr "" + +msgid "{{count}} org units" +msgid_plural "{{count}} org units" +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} levels" +msgid_plural "{{count}} levels" +msgstr[0] "" +msgstr[1] "" + +msgid "{{count}} groups" +msgid_plural "{{count}} groups" +msgstr[0] "" +msgstr[1] "" + +msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" +msgstr "" + +msgid "Nothing selected" +msgstr "" + +msgid "User organisation unit" +msgstr "" + +msgid "User sub-units" +msgstr "" + +msgid "User sub-x2-units" +msgstr "" + +msgid "Select a level" +msgstr "" + +msgid "Select a group" +msgstr "" + +msgid "Deselect all" +msgstr "सबै चयन उल्टाउनुहोस्" + +msgid "Period type" +msgstr "" + +msgid "Year" +msgstr "" + +msgid "Select year" +msgstr "" + +msgid "Period" +msgstr "अबधि" + +msgid "Selected Periods" +msgstr "" + +msgid "Relative periods" +msgstr "" + +msgid "Fixed periods" +msgstr "" + +msgid "No periods selected" +msgstr "" + +msgid "Daily" +msgstr "दैनिक" + +msgid "Weekly" +msgstr "" + +msgid "Weekly (Start Wednesday)" +msgstr "" + +msgid "Weekly (Start Thursday)" +msgstr "" + +msgid "Weekly (Start Saturday)" +msgstr "" + +msgid "Weekly (Start Sunday)" +msgstr "" + +msgid "Bi-weekly" +msgstr "" + +msgid "Monthly" +msgstr "" + +msgid "Bi-monthly" +msgstr "" + +msgid "Quarterly" +msgstr "" + +msgid "Six-monthly" +msgstr "" + +msgid "Six-monthly April" +msgstr "" + +msgid "Yearly" +msgstr "" + +msgid "Financial year (Start November)" +msgstr "" + +msgid "Financial year (Start October)" +msgstr "" + +msgid "Financial year (Start July)" +msgstr "" + +msgid "Financial year (Start April)" +msgstr "" + +msgid "Today" +msgstr "आज" + +msgid "Yesterday" +msgstr "हिजो" + +msgid "Last 3 days" +msgstr "" + +msgid "Last 7 days" +msgstr "" + +msgid "Last 14 days" +msgstr "" + +msgid "Last 30 days" +msgstr "" + +msgid "Last 60 days" +msgstr "" + +msgid "Last 90 days" +msgstr "" + +msgid "Last 180 days" +msgstr "" + +msgid "This week" +msgstr "" + +msgid "Last week" +msgstr "" + +msgid "Last 4 weeks" +msgstr "" + +msgid "Last 12 weeks" +msgstr "" + +msgid "Last 52 weeks" +msgstr "" + +msgid "Weeks this year" +msgstr "" + +msgid "This bi-week" +msgstr "" + +msgid "Last bi-week" +msgstr "" + +msgid "Last 4 bi-weeks" +msgstr "" + +msgid "This month" +msgstr "" + +msgid "Last month" +msgstr "" + +msgid "Last 3 months" +msgstr "" + +msgid "Last 6 months" +msgstr "" + +msgid "Last 12 months" +msgstr "" + +msgid "Months this year" +msgstr "" + +msgid "This bi-month" +msgstr "" + +msgid "Last bi-month" +msgstr "" + +msgid "Last 6 bi-months" +msgstr "" + +msgid "Bi-months this year" +msgstr "" + +msgid "This quarter" +msgstr "" + +msgid "Last quarter" +msgstr "" + +msgid "Last 4 quarters" +msgstr "" + +msgid "Quarters this year" +msgstr "" + +msgid "This six-month" +msgstr "" + +msgid "Last six-month" +msgstr "" + +msgid "Last 2 six-month" +msgstr "" + +msgid "This financial year" +msgstr "" + +msgid "Last financial year" +msgstr "" + +msgid "Last 5 financial years" +msgstr "" + +msgid "This year" +msgstr "" + +msgid "Last year" +msgstr "" + +msgid "Last 5 years" +msgstr "" + +msgid "Last 10 years" +msgstr "" + +msgid "Days" +msgstr "" + +msgid "Weeks" +msgstr "" + +msgid "Bi-weeks" +msgstr "" + +msgid "Months" +msgstr "" + +msgid "Bi-months" +msgstr "" + +msgid "Quarters" +msgstr "" + +msgid "Six-months" +msgstr "" + +msgid "Financial Years" +msgstr "" + +msgid "Years" +msgstr "" + +msgid "Bold text" +msgstr "" + +msgid "Italic text" +msgstr "" + +msgid "Link to a URL" +msgstr "" + +msgid "Mention a user" +msgstr "" + +msgid "Add emoji" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Back to write mode" +msgstr "" + +msgid "Interpretations and details" +msgstr "" + +msgid "Translating to" +msgstr "" + +msgid "Choose a locale" +msgstr "" + +msgid "Base locale reference" +msgstr "" + +msgid "Choose a locale to translate from the menu above" +msgstr "" + +msgid "Translate: {{objectName}}" +msgstr "" + +msgid "Save translations" +msgstr "" + +msgid "Cannot save while offline" +msgstr "" + +msgid "Could not load translations" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Too many results. Try refining the search." +msgstr "" + +msgid "Search for a user" +msgstr "" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "" + +msgid "No results found" +msgstr "कुनै पनि नतिजा भेटिएन" + +msgid "Series" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Filter" +msgstr "" + +msgid "Columns" +msgstr "" + +msgid "Rows" +msgstr "" + +msgid "Points" +msgstr "" + +msgid "Reporting rate" +msgstr "" + +msgid "Reporting rate on time" +msgstr "" + +msgid "Actual reports" +msgstr "" + +msgid "Actual reports on time" +msgstr "" + +msgid "Expected reports" +msgstr "" + +msgid "Program" +msgstr "" + +msgid "Select a program" +msgstr "" + +msgid "Indicators" +msgstr "" + +msgid "Indicator group" +msgstr "" + +msgid "All groups" +msgstr "" + +msgid "Indicator" +msgstr "" + +msgid "No indicator groups found" +msgstr "" + +msgid "Loading indicator groups" +msgstr "" + +msgid "Data element group" +msgstr "" + +msgid "Data element" +msgstr "" + +msgid "No data element groups found" +msgstr "" + +msgid "Loading data element groups" +msgstr "" + +msgid "Data sets" +msgstr "" + +msgid "Data set" +msgstr "" + +msgid "All data sets" +msgstr "" + +msgid "Loading data sets" +msgstr "" + +msgid "Event data items" +msgstr "" + +msgid "All programs" +msgstr "" + +msgid "Event data item" +msgstr "" + +msgid "No programs found" +msgstr "" + +msgid "Loading programs" +msgstr "" + +msgid "Program indicators" +msgstr "" + +msgid "Program indicator" +msgstr "" + +msgid "Calculations" +msgstr "" + +msgid "Number" +msgstr "" + +msgid "Formula is empty. Add items to the formula from the lists on the left." +msgstr "" + +msgid "Consecutive math operators" +msgstr "" + +msgid "Consecutive data elements" +msgstr "" + +msgid "Starts or ends with a math operator" +msgstr "" + +msgid "Empty parentheses" +msgstr "" + +msgid "Missing right parenthesis )" +msgstr "" + +msgid "Missing left parenthesis (" +msgstr "" + +msgid "Extra Small" +msgstr "" + +msgid "Small" +msgstr "" + +msgid "Regular" +msgstr "" + +msgid "Large" +msgstr "" + +msgid "Extra Large" +msgstr "" + +msgid "Left" +msgstr "" + +msgid "Center" +msgstr "" + +msgid "Right" +msgstr "" + +msgid "Start" +msgstr "" + +msgid "Middle" +msgstr "" + +msgid "End" +msgstr "" + +msgid "Top" +msgstr "" + +msgid "Bottom" +msgstr "" + +msgid "{{dynamicOuNames}} and {{lastOuName}}" +msgstr "" + +msgid "{{allDynamicOuNames}} levels" +msgstr "" + +msgid "{{allDynamicOuNames}} groups" +msgstr "" + +msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" +msgstr "" + +msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" +msgstr "" + +msgid "{{percentage}}% of total x values" +msgstr "" + +msgid "{{percentage}}% of total y values" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q1" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q3" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score high" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score high" +msgstr "" + +msgid "Data" +msgstr "" + +msgid "Organisation unit" +msgstr "" + +msgid "Assigned Categories" +msgstr "" + +msgid "Pivot table" +msgstr "" + +msgid "Area" +msgstr "" + +msgid "Stacked area" +msgstr "" + +msgid "Bar" +msgstr "" + +msgid "Stacked bar" +msgstr "" + +msgid "Column" +msgstr "" + +msgid "Year over year (column)" +msgstr "" + +msgid "Stacked column" +msgstr "" + +msgid "Gauge" +msgstr "" + +msgid "Line" +msgstr "" + +msgid "Line list" +msgstr "" + +msgid "Year over year (line)" +msgstr "" + +msgid "Pie" +msgstr "" + +msgid "Radar" +msgstr "" + +msgid "Scatter" +msgstr "" + +msgid "Single value" +msgstr "" + +msgid "Outlier table" +msgstr "" + +msgid "All charts" +msgstr "" + +msgid "{{seriesName}} (trend)" +msgstr "" + +msgid "Trend" +msgstr "" + +msgid "No legend for this series" +msgstr "" + +msgid "and {{amount}} more..." +msgstr "" + +msgid "Linear Regression" +msgstr "" + +msgid "Target" +msgstr "" + +msgid "Base" +msgstr "" + +msgid "Axis {{axisId}}" +msgstr "" + +msgid "{{count}} items" +msgid_plural "{{count}} items" +msgstr[0] "" +msgstr[1] "" + +msgid "Reset zoom" +msgstr "" diff --git a/i18n/nl.po b/i18n/nl.po index 1c9c354f1..52e67a6f6 100644 --- a/i18n/nl.po +++ b/i18n/nl.po @@ -5,13 +5,14 @@ # Rica Zamora Duchateau, 2022 # Charel van den Elsen, 2023 # Enzo Nicolas Rossi , 2023 +# Philip Larsen Donnelly, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Enzo Nicolas Rossi , 2023\n" +"Last-Translator: Philip Larsen Donnelly, 2024\n" "Language-Team: Dutch (https://app.transifex.com/hisp-uio/teams/100509/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -204,7 +205,7 @@ msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "Geen programma-indicatoren gevonden voor \"{{- searchTerm}}\"" msgid "Nothing found for \"{{- searchTerm}}\"" -msgstr "Niets gevonden voor \"{{- zoekTerm}}\"" +msgstr "Niets gevonden voor \"{{- searchTerm}}\"" msgid "Calculation" msgstr "Berekening" @@ -216,7 +217,7 @@ msgid "All metrics" msgstr "Alle statistieken" msgid "Move to {{axisName}}" -msgstr "Ga naar {{axisNaam}}" +msgstr "Ga naar {{axisName}}" msgid "Add to {{axisName}}" msgstr "Voeg toe aan {{axisName}}" @@ -388,6 +389,10 @@ msgstr "Interpretatie verbergen" msgid "Write an interpretation" msgstr "Schrijf een interpretatie" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "Interpretatie posten" diff --git a/i18n/pt.po b/i18n/pt.po index aee7e4b4d..974f1160e 100644 --- a/i18n/pt.po +++ b/i18n/pt.po @@ -1,19 +1,20 @@ # # Translators: # Sheila André , 2020 +# Viktor Varland , 2021 # Gabriela Rodriguez , 2022 -# Viktor Varland , 2022 +# Ge Joao , 2022 # Fernando Jorge Bade, 2022 -# phil_dhis2, 2023 # David Júnior , 2023 -# Ge Joao , 2023 +# Philip Larsen Donnelly, 2024 +# Shelsea Chumaio, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-10-11T12:49:26.846Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Ge Joao , 2023\n" +"Last-Translator: Shelsea Chumaio, 2024\n" "Language-Team: Portuguese (https://app.transifex.com/hisp-uio/teams/100509/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,144 +23,157 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" msgid "view only" -msgstr "" +msgstr " apenas para visualização" msgid "view and edit" -msgstr "" +msgstr "visualizar e editar" msgid "all users ({{accessLevel}})" -msgstr "" +msgstr "todos utilizadores ({{accessLevel}})" msgid "{{userOrGroup}} ({{accessLevel}})" -msgstr "" +msgstr "{{userOrGroup}}({{accessLevel}})" msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" -msgstr "" +msgstr " Partilhado com{{commaSeparatedListOfUsersAndGroups}}" msgid "Not shared with any users or groups" -msgstr "" +msgstr " Não partilhado com quaisquer utilizadores ou grupos" msgid "No description" msgstr "Sem descrição" msgid "Last updated {{time}}" -msgstr "" +msgstr " Última actualização{{time}}" msgid "Created {{time}} by {{author}}" -msgstr "" +msgstr "Criado{{time}} por {{author}}" msgid "Created {{time}}" -msgstr "" +msgstr "Criado {{time}}" msgid "Viewed {{count}} times" msgid_plural "Viewed {{count}} times" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Visualizado 1 vez" +msgstr[1] "Visualizado {{count}} vezes" +msgstr[2] "Visualizado {{count}} vezes" msgid "Notifications" msgstr "Notificação" msgid "You're subscribed and getting updates about new interpretations." -msgstr "" +msgstr " Está inscrito para receber actualizações sobre novas interpretações." msgid "Unsubscribe" -msgstr "" +msgstr " Cancelar a subscrição" msgid "Subscribe to get updates about new interpretations." -msgstr "" +msgstr " Subscreva para receber actualizações sobre novas interpretações." msgid "Subscribe" -msgstr "" +msgstr "Subcreva" msgid "About this map" -msgstr "" +msgstr " Sobre este mapa" msgid "About this line list" -msgstr "" +msgstr " Sobre esta lista de linhas" msgid "About this visualization" -msgstr "" +msgstr " Sobre esta visualização" + +msgid "About this event chart" +msgstr "Sobre esta tabela de eventos" + +msgid "About this event report" +msgstr "Sobre este relatório de evento" msgid "This app could not retrieve required data." -msgstr "" +msgstr " Esta aplicação não conseguiu obter os dados necessários." msgid "Network error" -msgstr "" +msgstr " Erro de rede" msgid "Data / Edit calculation" -msgstr "" +msgstr " Dados / Editar cálculo" msgid "Data / New calculation" -msgstr "" +msgstr " Dados / Novo cálculo" msgid "Remove item" -msgstr "" +msgstr " Remover item" msgid "Check formula" -msgstr "" +msgstr " Verificar a fórmula" msgid "Calculation name" -msgstr "" +msgstr "Designação do cálculo" msgid "Shown in table headers and chart axes/legends" -msgstr "" +msgstr " Apresentado em cabeçalhos de tabelas e eixos/legendas de gráficos" msgid "Delete calculation" -msgstr "" +msgstr "Eliminar cálculo" msgid "Cancel" msgstr "Cancelar" msgid "The calculation can only be saved with a valid formula" -msgstr "" +msgstr "O cálculo só pode ser guardado com uma fórmula válida" msgid "Add a name to save this calculation" -msgstr "" +msgstr " Adicionar um nome para guardar este cálculo" msgid "Save calculation" -msgstr "" +msgstr "Gravar cálculo" msgid "" "Are you sure you want to delete this calculation? It may be used by other " "visualizations." msgstr "" +"Tem a certeza de que pretende eliminar este cálculo? Ele pode ser usado por " +"outras visualizações." msgid "Yes, delete" -msgstr "" +msgstr "Sim, eliminar" msgid "Totals only" -msgstr "" +msgstr "Apenas os totais" msgid "Details only" -msgstr "" +msgstr "Apenas os detalhes" msgid "Loading" -msgstr "Carregando.." +msgstr "Carregando" msgid "Data elements" msgstr "Elementos de Dados" msgid "Search by data element name" -msgstr "" +msgstr " Pesquisa por nome de elemento de dados" msgid "No data elements found for \"{{- searchTerm}}\"" -msgstr "" +msgstr " Não foram encontrados elementos de dados para \"{{- searchTerm}}''" msgid "No data elements found" -msgstr "" +msgstr "Nenhum elemento de dados encontrado" msgid "" "Drag items here, or double click in the list, to start building a " "calculation formula" msgstr "" +"Arraste os itens para aqui, ou faça duplo clique na lista, para começar a " +"criar uma fórmula de cálculo" msgid "Math operators" -msgstr "" +msgstr " Operadores matemáticos" msgid "Data Type" msgstr "Tipo de dados" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "Apenas {{dataType}} pode ser usado em{{visType}}" + msgid "All types" msgstr "Todos os tipos" @@ -167,61 +181,67 @@ msgid "Disaggregation" msgstr "Desagregação" msgid "No data" -msgstr "Não ha dados" +msgstr "Não há dados" msgid "Search by data item name" -msgstr "" +msgstr " Pesquisa por nome de item de dados" msgid "No items selected" -msgstr "" +msgstr " Nenhum item seleccionado" msgid "Selected Items" -msgstr "" +msgstr " Itens seleccionados" msgid "No indicators found" -msgstr "" +msgstr "Nenhum indicador encontrado" msgid "No data sets found" -msgstr "" +msgstr "Nenhum conjunto de dados encontrado" msgid "No event data items found" -msgstr "" +msgstr " Nenhum dado de evento encontrado" msgid "No program indicators found" -msgstr "" +msgstr " Nenhum indicador de programa encontrado" + +msgid "No calculations found" +msgstr "Nenhum cálculo encontrado" msgid "No indicators found for \"{{- searchTerm}}\"" -msgstr "" +msgstr " Nenhum indicador foi encontrado para ''{{- searchTerm}}''" msgid "No data sets found for \"{{- searchTerm}}\"" -msgstr "" +msgstr " Nenhum conjunto de dados encontrado para ''{{- searchTerm}}''" msgid "No event data items found for \"{{- searchTerm}}\"" -msgstr "" +msgstr " Nenhum dado de evento encontrado para ''{{- searchTerm}}''" msgid "No program indicators found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "Nenhum indicador de programa encontrado para ''{{- searchTerm}}''" + +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "Nenhum cálculo encontrado para ''{{- searchTerm}}''" msgid "Nothing found for \"{{- searchTerm}}\"" -msgstr "" +msgstr " Nada encontrado para ''{{- searchTerm}}''" msgid "Calculation" -msgstr "" +msgstr " Cálculo" msgid "Metric type" -msgstr "" +msgstr " Tipo de métrica" msgid "All metrics" msgstr "Todas métricas" msgid "Move to {{axisName}}" -msgstr "Mover para {{Nomedoeixo}}" +msgstr "Mover para {{axisName}}" msgid "Add to {{axisName}}" -msgstr "Adicionar à {{Nomedoeixo}}" +msgstr "Adicionar à {{axisName}}" msgid "Not available for {{visualizationType}}" -msgstr "Não disponível para {{Tipodevisualização}}" +msgstr "Não disponível para {{visualizationType}}" msgid "Remove Assigned Categories" msgstr "Remover categorias atribuídas" @@ -248,34 +268,38 @@ msgid "All items" msgstr "Todos Itens" msgid "Automatically include all items" -msgstr "" +msgstr " Incluir automaticamente todos os itens" msgid "" "Select all {{- dimensionTitle}} items. With this option, new items added in " "the future will be automatically included." msgstr "" +" Seleccionar todos os itens {{- dimensionTitle}}. Com esta opção, os novos " +"itens adicionados no futuro serão automaticamente incluídos." msgid "Manually select items..." -msgstr "" +msgstr "Seleccionar manualmente os itens..." msgid "Nothing found in {{- dimensionTitle}}" -msgstr "" +msgstr " Nada encontrado em {{- dimensionTitle}}" msgid "Search" msgstr "Pesquisar" msgid "Nothing found for {{- searchTerm}}" -msgstr "" +msgstr " Nada encontrado para {{- searchTerm}}" msgid "Delete {{fileType}}" -msgstr "" +msgstr " Eliminar {{fileType}}" msgid "" "This {{fileType}} and related interpretations will be deleted. Continue?" msgstr "" +" Este {{fileType}} e as interpretações relacionadas serão eliminados. " +"Continuar?" msgid "Delete" -msgstr "Suprimir" +msgstr "Eliminar" msgid "File" msgstr "Arquivo" @@ -284,28 +308,28 @@ msgid "New" msgstr "Novo" msgid "Open…" -msgstr "" +msgstr " Abrir..." msgid "Save" msgstr "Salvar" msgid "Save…" -msgstr "" +msgstr "Gravar" msgid "Save as…" -msgstr "" +msgstr "Gravar como..." msgid "Rename…" -msgstr "" +msgstr "Renomear..." msgid "Translate…" -msgstr "" +msgstr "Traduzir..." msgid "Share…" -msgstr "" +msgstr "Partilhar..." msgid "Get link…" -msgstr "" +msgstr "Obter link..." msgid "Open in this app" msgstr "Abrir neste aplicativo" @@ -314,7 +338,7 @@ msgid "Close" msgstr "Fechar" msgid "Rename {{fileType}}" -msgstr "" +msgstr "Renomear {{fileType}}" msgid "Name" msgstr "Nome" @@ -326,22 +350,22 @@ msgid "Rename" msgstr "Renomear" msgid "{{- objectName}} (copy)" -msgstr "" +msgstr "{{- objectName}}(cópia)" msgid "Save {{fileType}} as" -msgstr "" +msgstr "Gravar {{fileType}} como" msgid "event report" msgstr "relatório de evento" msgid "line list" -msgstr "" +msgstr "lista de linha" msgid "map" msgstr "mapa" msgid "visualization" -msgstr "" +msgstr "visualização" msgid "Edit" msgstr "Editar" @@ -350,25 +374,25 @@ msgid "Write a reply" msgstr "Escreva uma resposta" msgid "Post reply" -msgstr "" +msgstr "Publicar resposta" msgid "Delete failed" -msgstr "Falha na exclusão" +msgstr "Falha na eliminação" msgid "Could not update comment" -msgstr "" +msgstr " Não foi possível actualizar o comentário" msgid "Enter comment text" -msgstr "" +msgstr "Introduzir o texto do comentário" msgid "Update" msgstr "Actualizar" msgid "Viewing interpretation: {{- visualisationName}}" -msgstr "" +msgstr "Ver interpretação: {{- visualisationName}}" msgid "Could not load interpretation" -msgstr "" +msgstr " Não foi possível carregar a interpretação" msgid "" "The interpretation couldn’t be displayed. Try again or contact your system " @@ -376,13 +400,19 @@ msgid "" msgstr "" msgid "Hide interpretation" -msgstr "" +msgstr " Ocultar interpretação" msgid "Write an interpretation" msgstr "Escreva uma interpretação" -msgid "Post interpretation" +msgid "" +"Other people viewing this interpretation in the future may see more data." msgstr "" +"Outras pessoas que vejam esta interpretação no futuro poderão ver mais " +"dados." + +msgid "Post interpretation" +msgstr "Publicar interpretação" msgid "Interpretations" msgstr "Interpretações" @@ -392,66 +422,36 @@ msgstr "Responder" msgid "{{count}} replies" msgid_plural "{{count}} replies" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} resposta" +msgstr[1] "{{count}} respostas" +msgstr[2] "{{count}} respostas" msgid "View replies" -msgstr "" +msgstr "Ver respostas" msgid "Unlike" -msgstr "Ao contrário" +msgstr "Diferente" msgid "Like" msgstr "como" -msgid "Share" -msgstr "Partilha" - msgid "See interpretation" -msgstr "" +msgstr " Ver interpretação" + +msgid "Open in app" +msgstr " Abrir na aplicação" + +msgid "Share" +msgstr " Partilhar" msgid "Manage sharing" -msgstr "Gerenciar compartilhamento" +msgstr "Gerir a partilha" msgid "Could not update interpretation" -msgstr "" +msgstr "Não foi possível actualizar a interpretação" msgid "Enter interpretation text" -msgstr "" - -msgid "Bold text" -msgstr "" - -msgid "Italic text" -msgstr "" - -msgid "Link to a URL" -msgstr "" - -msgid "Mention a user" -msgstr "" - -msgid "Add emoji" -msgstr "" - -msgid "Preview" -msgstr "Pré-visualização" - -msgid "Back to write mode" -msgstr "" - -msgid "Too many results. Try refining the search." -msgstr "" - -msgid "Search for a user" -msgstr "" - -msgid "Searching for \"{{- searchText}}\"" -msgstr "" - -msgid "No results found" -msgstr "Nenhum resultado encontrado" +msgstr "Introduzir texto de interpretação" msgid "Not available offline" msgstr "Não disponível offline" @@ -463,13 +463,13 @@ msgid "Anyone" msgstr "Qualquer um" msgid "Only you" -msgstr "" +msgstr "Apenas tu" msgid "Others" msgstr "Outros" msgid "Not supported by this app yet" -msgstr "" +msgstr "Ainda não suportado por esta aplicação" msgid "Filter by name" msgstr "Filtrar por nome" @@ -487,149 +487,169 @@ msgid "Clear filters" msgstr "Limpar filtros" msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" -msgstr "" +msgstr "{{firstItemIndex}}-{{lastItemIndex}} de {{totalNumberOfItems}}" msgid "Open" -msgstr "Abrir" +msgstr "Aberto" msgid "Couldn't load items" -msgstr "" +msgstr "Não foi possível carregar itens" msgid "" "There was a problem loading items. Try again or contact your system " "administrator." msgstr "" +"Houve um problema ao carregar itens. Tente novamente ou contacte o " +"administrador do sistema." msgid "No items found. Create a new to get started." -msgstr "" +msgstr "Nenhum item encontrado. Criar um novo para começar." msgid "" "No items found. Try adjusting your search or filter options to find what " "you're looking for." msgstr "" +"Nenhum item encontrado. Tente ajustar as suas opções de pesquisa ou de " +"filtro para encontrar o que procura." msgid "Create new" msgstr "Crie um novo" msgid "Open a visualization" -msgstr "" +msgstr "Abrir uma visualização" msgid "Loading visualizations" -msgstr "" +msgstr "Carregar visualizações" msgid "Couldn't load visualizations" -msgstr "" +msgstr " Não foi possível carregar visualizações" msgid "" "There was a problem loading visualizations. Try again or contact your system" " administrator." msgstr "" +"Houve um problema ao carregar as visualizações. Tente novamente ou contacte " +"o administrador do sistema." msgid "No visualizations found. Click New visualization to get started." msgstr "" +"Não foram encontradas visualizações. Clique em Nova visualização para " +"começar." msgid "" "No visualizations found. Try adjusting your search or filter options to find" " what you're looking for." msgstr "" +"Não foram encontradas visualizações. Tente ajustar as suas opções de " +"pesquisa ou de filtro para encontrar o que procura." msgid "New visualization" -msgstr "" +msgstr "Nova visualização" msgid "Open a map" -msgstr "" +msgstr "Abrir um mapa" msgid "Loading maps" -msgstr "" +msgstr "Carregar mapas" msgid "Couldn't load maps" -msgstr "" +msgstr "Não foi possível carregar mapas" msgid "" "There was a problem loading maps. Try again or contact your system " "administrator." msgstr "" +"Houve um problema ao carregar os mapas. Tente novamente ou contacte o " +"administrador do sistema." msgid "No maps found. Click New map to get started." -msgstr "" +msgstr "Não foram encontrados mapas. Clique em Novo mapa para começar." msgid "" "No maps found. Try adjusting your search or filter options to find what " "you're looking for." msgstr "" +"Não foram encontrados mapas. Tente ajustar as suas opções de pesquisa ou de " +"filtro para encontrar o que procura." msgid "New map" -msgstr "" +msgstr "Novo mapa" msgid "Open a line list" -msgstr "" +msgstr "Abrir uma lista de linhas" msgid "Loading line lists" -msgstr "" +msgstr "Carregar listas de linhas" msgid "Couldn't load line lists" -msgstr "" +msgstr "Não foi possível carregar as listas de linhas" msgid "" "There was a problem loading line lists. Try again or contact your system " "administrator." msgstr "" +"Houve um problema ao carregar as listas de linhas. Tente novamente ou " +"contacte o administrador do sistema." msgid "No line lists found. Click New line list to get started." msgstr "" +"Não foram encontradas listas de linhas. Clique em Nova lista de linhas para " +"começar." msgid "" "No line lists found. Try adjusting your search or filter options to find " "what you're looking for." msgstr "" +"Não foram encontradas listas de linhas. Tente ajustar as suas opções de " +"pesquisa ou de filtro para encontrar o que procura." msgid "New line list" -msgstr "" +msgstr "Nova lista de linhas" msgid "Options" msgstr "Opções" msgid "Hide" -msgstr "Esconder" +msgstr "Ocultar" msgid "{{count}} org units" msgid_plural "{{count}} org units" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} unidade orgânica" +msgstr[1] "{{count}} unidades orgânicas" +msgstr[2] "{{count}} unidades organizacionais" msgid "{{count}} levels" msgid_plural "{{count}} levels" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} nível" +msgstr[1] "{{count}} níveis" +msgstr[2] "{{count}} níveis" msgid "{{count}} groups" msgid_plural "{{count}} groups" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} grupo" +msgstr[1] "{{count}} grupos" +msgstr[2] "{{count}} grupos" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "Seleccionado: {{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "Nada seleccionado" msgid "User organisation unit" msgstr "Unidade organizacional do utilizador" msgid "User sub-units" -msgstr "Dois níveis abaixo" +msgstr "Sub-unidades do utilizador" msgid "User sub-x2-units" -msgstr "Dois níveis abaixo" +msgstr "Sub-unidades nível 2 do utilizador" msgid "Select a level" -msgstr "Selecione um nível" +msgstr "Seleccione um nível" msgid "Select a group" -msgstr "Selecione um grupo" +msgstr "Seleccione um grupo" msgid "Deselect all" msgstr "Desmarcar todos" @@ -641,20 +661,20 @@ msgid "Year" msgstr "Ano" msgid "Select year" -msgstr "Selecionar ano" +msgstr "Seleccionar ano" msgid "Period" msgstr "Período" +msgid "Selected Periods" +msgstr "Períodos seleccionados" + msgid "Relative periods" msgstr "Períodos relativos" msgid "Fixed periods" msgstr "Períodos fixos" -msgid "Selected Periods" -msgstr "" - msgid "No periods selected" msgstr "Não há períodos relativos seleccionados" @@ -665,16 +685,16 @@ msgid "Weekly" msgstr "Semanal" msgid "Weekly (Start Wednesday)" -msgstr "" +msgstr "Semanalmente (início na Quarta-feira)" msgid "Weekly (Start Thursday)" -msgstr "" +msgstr " Semanal (início na Quinta-feira)" msgid "Weekly (Start Saturday)" -msgstr "" +msgstr " Semanal (início no Sábado)" msgid "Weekly (Start Sunday)" -msgstr "" +msgstr " Semanal (início no Domingo)" msgid "Bi-weekly" msgstr "Quinzenal" @@ -683,7 +703,7 @@ msgid "Monthly" msgstr "Mensal" msgid "Bi-monthly" -msgstr "Bimensal" +msgstr "Bimestre" msgid "Quarterly" msgstr "Trimestral" @@ -698,16 +718,16 @@ msgid "Yearly" msgstr "Anualmente" msgid "Financial year (Start November)" -msgstr "" +msgstr " Ano financeiro (início em Novembro)" msgid "Financial year (Start October)" -msgstr "Ano Financeiro - Outubro" +msgstr "Ano financeiro (início em Outubro)" msgid "Financial year (Start July)" -msgstr "Ano Financeiro - Julho" +msgstr "Ano financeiro (início em Julho)" msgid "Financial year (Start April)" -msgstr "Ano Financeiro - Abril" +msgstr "Ano financeiro (início em Abril)" msgid "Today" msgstr "Hoje" @@ -728,13 +748,13 @@ msgid "Last 30 days" msgstr "Últimos 30 dias" msgid "Last 60 days" -msgstr "" +msgstr "Últimos 60 dias" msgid "Last 90 days" -msgstr "" +msgstr "Últimos 90 dias" msgid "Last 180 days" -msgstr "" +msgstr "Últimos 180 dias" msgid "This week" msgstr "Esta semana" @@ -743,10 +763,10 @@ msgid "Last week" msgstr "Última semana" msgid "Last 4 weeks" -msgstr "Últimas quatro semanas" +msgstr "Últimas 4 semanas" msgid "Last 12 weeks" -msgstr "Últimas doze semanas" +msgstr "Últimas 12 semanas" msgid "Last 52 weeks" msgstr "Últimas 52 semanas" @@ -755,13 +775,13 @@ msgid "Weeks this year" msgstr "Semanas deste ano " msgid "This bi-week" -msgstr "Nesta bisemanal" +msgstr "Esta quinzena" msgid "Last bi-week" -msgstr "Ultimo bimensal " +msgstr "Última quinzena" msgid "Last 4 bi-weeks" -msgstr "Nas últimas 4 semanas" +msgstr "Últimas 4 semanas" msgid "This month" msgstr "Este mês" @@ -770,28 +790,28 @@ msgid "Last month" msgstr "Último mês" msgid "Last 3 months" -msgstr "Últimos três meses" +msgstr "Últimos 3 meses" msgid "Last 6 months" -msgstr "Últimos seis meses" +msgstr "Últimos 6 meses" msgid "Last 12 months" -msgstr "Últimos doze meses" +msgstr "Últimos 12 meses" msgid "Months this year" msgstr "Meses deste ano" msgid "This bi-month" -msgstr "Este bi-mês" +msgstr "Este bimestre" msgid "Last bi-month" msgstr "Último bimestre" msgid "Last 6 bi-months" -msgstr "Últimos seis bi-meses" +msgstr "Últimos 6 bimestres" msgid "Bi-months this year" -msgstr "Bimensais este ano" +msgstr "Bimestres deste ano" msgid "This quarter" msgstr "Este Trimestre" @@ -800,7 +820,7 @@ msgid "Last quarter" msgstr "Último trimestre" msgid "Last 4 quarters" -msgstr "Últimos quatro trimestres" +msgstr "Últimos 4 trimestres" msgid "Quarters this year" msgstr "Trimestres deste ano" @@ -812,7 +832,7 @@ msgid "Last six-month" msgstr "Último semestre" msgid "Last 2 six-month" -msgstr "" +msgstr " Últimos 2 semestres" msgid "This financial year" msgstr "Ano financeiro" @@ -821,7 +841,7 @@ msgid "Last financial year" msgstr "Último ano fiscal" msgid "Last 5 financial years" -msgstr "Últimos cinco anos fiscais" +msgstr "Últimos 5 anos fiscais" msgid "This year" msgstr "Este ano" @@ -830,7 +850,7 @@ msgid "Last year" msgstr "Último ano" msgid "Last 5 years" -msgstr "Últimos cinco anos" +msgstr "Últimos 5 anos" msgid "Last 10 years" msgstr "Últimos 10 anos" @@ -842,13 +862,13 @@ msgid "Weeks" msgstr "Semanas" msgid "Bi-weeks" -msgstr "Bisemanal" +msgstr "Quinzena" msgid "Months" msgstr "Meses" msgid "Bi-months" -msgstr "Bi-mensal" +msgstr "Bimestre" msgid "Quarters" msgstr "Trimestres" @@ -862,38 +882,74 @@ msgstr "Ano financeiro " msgid "Years" msgstr "Anos" +msgid "Value: {{value}}" +msgstr "Valor: {{value}}" + +msgid "Bold text" +msgstr "Texto em negrito" + +msgid "Italic text" +msgstr "Texto em itálico" + +msgid "Link to a URL" +msgstr "Ligação a um URL" + +msgid "Mention a user" +msgstr "Mencionar um utilizador" + +msgid "Add emoji" +msgstr "Adicionar emoji" + +msgid "Preview" +msgstr "Pré-visualização" + +msgid "Back to write mode" +msgstr "Voltar ao modo de escrita" + msgid "Interpretations and details" -msgstr "" +msgstr "Interpretações e pormenores" msgid "Translating to" -msgstr "" +msgstr "Traduzir para" msgid "Choose a locale" -msgstr "" +msgstr "Escolher um local" msgid "Base locale reference" -msgstr "" +msgstr "Referência à localidade de base" msgid "Choose a locale to translate from the menu above" -msgstr "" +msgstr "Escolha uma localidade para traduzir no menu acima" msgid "Translate: {{objectName}}" -msgstr "" +msgstr "Traduzir: {{objectName}}" msgid "Save translations" -msgstr "" +msgstr "Gravar traduções" msgid "Cannot save while offline" -msgstr "" +msgstr "Não é possível gravar quando se está offline" msgid "Could not load translations" -msgstr "" +msgstr "Não foi possível carregar traduções" msgid "Retry" -msgstr "" +msgstr "Repetir" + +msgid "Too many results. Try refining the search." +msgstr "Demasiados resultados. Tente refinar a pesquisa." + +msgid "Search for a user" +msgstr "Procurar um utilizador" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "Procurar por \"{{- searchText}}\"" + +msgid "No results found" +msgstr "Nenhum resultado encontrado" msgid "Series" -msgstr "Série" +msgstr "Séries" msgid "Category" msgstr "Categoria" @@ -908,7 +964,7 @@ msgid "Rows" msgstr "Linhas" msgid "Points" -msgstr "" +msgstr "Pontos" msgid "Reporting rate" msgstr "Taxa de relatórios" @@ -917,10 +973,10 @@ msgid "Reporting rate on time" msgstr "Taxa de relatórios no prazo" msgid "Actual reports" -msgstr "Relatórios reais" +msgstr "Relatórios actuais" msgid "Actual reports on time" -msgstr "Relatórios reais dentro do prazo" +msgstr "Relatórios actuais dentro do prazo" msgid "Expected reports" msgstr "Relatórios esperados" @@ -929,7 +985,7 @@ msgid "Program" msgstr "Programa" msgid "Select a program" -msgstr "Selecione um programa" +msgstr "Seleccione um programa" msgid "Indicators" msgstr "Indicadores" @@ -938,16 +994,16 @@ msgid "Indicator group" msgstr "Grupo de Indicador" msgid "All groups" -msgstr "" +msgstr "Todos os grupos" msgid "Indicator" msgstr "Indicador" msgid "No indicator groups found" -msgstr "" +msgstr "Não foram encontrados grupos de indicadores" msgid "Loading indicator groups" -msgstr "" +msgstr "Carregando grupos de indicadores" msgid "Data element group" msgstr "Grupo de Elemento de Dados" @@ -956,19 +1012,19 @@ msgid "Data element" msgstr "Elemento de dado" msgid "No data element groups found" -msgstr "" +msgstr "Não foram encontrados grupos de elementos de dados" msgid "Loading data element groups" -msgstr "" +msgstr "Carregando de grupos de elementos de dados" msgid "Data sets" msgstr "Agregação de Dados" msgid "Data set" -msgstr "Ficha" +msgstr "Conjuntos de dados" msgid "All data sets" -msgstr "" +msgstr "Todos conjuntos de dados" msgid "Loading data sets" msgstr "Carregando conjuntos de dados" @@ -977,16 +1033,16 @@ msgid "Event data items" msgstr "Itens de dados do evento" msgid "All programs" -msgstr "" +msgstr "Todos os programas" msgid "Event data item" msgstr "Item de dados do evento" msgid "No programs found" -msgstr "" +msgstr "Nenhum programa encontrado" msgid "Loading programs" -msgstr "" +msgstr "Carregando programas" msgid "Program indicators" msgstr "Indicador do programa" @@ -995,28 +1051,30 @@ msgid "Program indicator" msgstr "Gestão do indicadores de programa" msgid "Calculations" -msgstr "" +msgstr "Cálculos" msgid "Number" msgstr "Número" msgid "Formula is empty. Add items to the formula from the lists on the left." msgstr "" +"A fórmula está vazia. Adicione itens à fórmula a partir das listas à " +"esquerda." msgid "Consecutive math operators" -msgstr "" +msgstr "Operadores matemáticos consecutivos" msgid "Consecutive data elements" -msgstr "" +msgstr "Elementos de dados consecutivos" msgid "Starts or ends with a math operator" -msgstr "" +msgstr "Começa ou termina com um operador matemático" msgid "Empty parentheses" -msgstr "" +msgstr "Parênteses vazios" msgid "Missing right parenthesis )" -msgstr "" +msgstr "Parênteses direito em falta )" msgid "Missing left parenthesis (" msgstr "" @@ -1061,19 +1119,19 @@ msgid "Bottom" msgstr "Inferior" msgid "{{dynamicOuNames}} and {{lastOuName}}" -msgstr "{{nomesdinâmicosOu}} e {{últimoNomeOu}}" +msgstr "{{dynamicOuNames}} e {{lastOuName}}" msgid "{{allDynamicOuNames}} levels" -msgstr "{{tudoDynamicOuNomes}} níveis" +msgstr "{{allDynamicOuNames}} níveis" msgid "{{allDynamicOuNames}} groups" -msgstr "{{tudoDynamicOuNomes}} grupos" +msgstr "{{allDynamicOuNames}} grupos" msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" -msgstr "{{tudoDynamicOuNomes}} níveis em {{NomesestáticosOu}}" +msgstr "{{allDynamicOuNames}} níveis em {{staticOuNames}}" msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" -msgstr "{{tudoDynamicOuNomes}} grupos em {{NomesestáticosOu}}" +msgstr "{{allDynamicOuNames}} grupos em {{staticOuNames}}" msgid "{{percentage}}% of total x values" msgstr "" @@ -1099,6 +1157,9 @@ msgstr "" msgid "{{thresholdFactor}} × Z-score high" msgstr "" +msgid "Not applicable" +msgstr "" + msgid "Data" msgstr "Dados" @@ -1156,6 +1217,9 @@ msgstr "" msgid "Single value" msgstr "Valor unico" +msgid "Outlier table" +msgstr "" + msgid "All charts" msgstr "" @@ -1181,7 +1245,7 @@ msgid "Base" msgstr "Base" msgid "Axis {{axisId}}" -msgstr "Eixo {{eixoId}}" +msgstr "Eixo {{axisId}}" msgid "{{count}} items" msgid_plural "{{count}} items" diff --git a/i18n/pt_BR.po b/i18n/pt_BR.po index 5d67e5a44..f61f34035 100644 --- a/i18n/pt_BR.po +++ b/i18n/pt_BR.po @@ -1,14 +1,15 @@ # # Translators: # Viktor Varland , 2021 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 +# Thiago Rocha, 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Thiago Rocha, 2024\n" "Language-Team: Portuguese (Brazil) (https://app.transifex.com/hisp-uio/teams/100509/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -80,7 +81,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "Erro de rede" msgid "Data / Edit calculation" msgstr "" @@ -121,7 +122,7 @@ msgid "" msgstr "" msgid "Yes, delete" -msgstr "" +msgstr "Sim, excluir" msgid "Totals only" msgstr "" @@ -159,7 +160,7 @@ msgid "All types" msgstr "" msgid "Disaggregation" -msgstr "" +msgstr "Desagregação" msgid "No data" msgstr "Não ha dados" @@ -347,6 +348,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Falha na exclusão" + msgid "Could not update comment" msgstr "" @@ -373,20 +377,33 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "Interpretações" -msgid "Unlike" +msgid "Reply" +msgstr "Responder" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "View replies" msgstr "" -msgid "Like" +msgid "Unlike" msgstr "" -msgid "Reply" -msgstr "Responder" +msgid "Like" +msgstr "como" msgid "Share" msgstr "Partilhar" @@ -419,7 +436,7 @@ msgid "Add emoji" msgstr "" msgid "Preview" -msgstr "" +msgstr "Pré-visualização" msgid "Back to write mode" msgstr "" @@ -434,13 +451,13 @@ msgid "Searching for \"{{- searchText}}\"" msgstr "" msgid "No results found" -msgstr "" +msgstr "Nenhum resultado encontrado" msgid "Not available offline" msgstr "" msgid "Created by" -msgstr "" +msgstr "Criado por" msgid "Anyone" msgstr "" @@ -458,7 +475,7 @@ msgid "Filter by name" msgstr "Filtrar por nome" msgid "Created" -msgstr "" +msgstr "Criado" msgid "Last updated" msgstr "Última actualização" @@ -467,13 +484,13 @@ msgid "Type" msgstr "Tipo" msgid "Clear filters" -msgstr "" +msgstr "Limpar filtros" msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" msgstr "" msgid "Open" -msgstr "" +msgstr "Abrir" msgid "Couldn't load items" msgstr "" @@ -615,7 +632,7 @@ msgid "Select a group" msgstr "" msgid "Deselect all" -msgstr "" +msgstr "Desmarcar todos" msgid "Period type" msgstr "Tipo de período" @@ -819,7 +836,7 @@ msgid "Last 10 years" msgstr "" msgid "Days" -msgstr "" +msgstr "Dias" msgid "Weeks" msgstr "" @@ -845,6 +862,9 @@ msgstr "" msgid "Years" msgstr "Anos" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/ru.po b/i18n/ru.po index 9e8428fc8..7bc8a734d 100644 --- a/i18n/ru.po +++ b/i18n/ru.po @@ -1,18 +1,18 @@ # # Translators: -# Yury Rogachev , 2020 # Valeriu Plesca , 2021 # Wanda , 2022 # Viktor Varland , 2022 # Ulanbek Abakirov , 2022 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 +# Yury Rogachev , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-01-25T12:05:03.360Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Yury Rogachev , 2024\n" "Language-Team: Russian (https://app.transifex.com/hisp-uio/teams/100509/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -160,6 +160,9 @@ msgstr "" msgid "Data Type" msgstr "Тип данных" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "" + msgid "All types" msgstr "Все типы" @@ -190,6 +193,9 @@ msgstr "" msgid "No program indicators found" msgstr "" +msgid "No calculations found" +msgstr "" + msgid "No indicators found for \"{{- searchTerm}}\"" msgstr "" @@ -202,6 +208,9 @@ msgstr "" msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "" +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "" + msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "" @@ -341,7 +350,7 @@ msgid "map" msgstr "Карта" msgid "visualization" -msgstr "" +msgstr "визуализация" msgid "Edit" msgstr "Редактировать" @@ -381,6 +390,10 @@ msgstr "" msgid "Write an interpretation" msgstr "Написать перевод" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" @@ -392,10 +405,10 @@ msgstr "Ответить" msgid "{{count}} replies" msgid_plural "{{count}} replies" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "{{count}} ответ" +msgstr[1] "{{count}} отвечает" +msgstr[2] "{{count}} отвечает" +msgstr[3] "{{count}} ответов" msgid "View replies" msgstr "" @@ -406,12 +419,15 @@ msgstr "Не нравится" msgid "Like" msgstr "Нравится" -msgid "Share" -msgstr "Поделиться" - msgid "See interpretation" msgstr "" +msgid "Open in app" +msgstr "" + +msgid "Share" +msgstr "Поделиться" + msgid "Manage sharing" msgstr "Управление совместным доступом" @@ -421,41 +437,8 @@ msgstr "" msgid "Enter interpretation text" msgstr "" -msgid "Bold text" -msgstr "" - -msgid "Italic text" -msgstr "" - -msgid "Link to a URL" -msgstr "" - -msgid "Mention a user" -msgstr "" - -msgid "Add emoji" -msgstr "" - -msgid "Preview" -msgstr "Предварительный просмотр" - -msgid "Back to write mode" -msgstr "" - -msgid "Too many results. Try refining the search." -msgstr "" - -msgid "Search for a user" -msgstr "" - -msgid "Searching for \"{{- searchText}}\"" -msgstr "" - -msgid "No results found" -msgstr "Результаты не найдены" - msgid "Not available offline" -msgstr "" +msgstr "Недоступно в автономном режиме" msgid "Created by" msgstr "Создано" @@ -650,15 +633,15 @@ msgstr "Выбрать год" msgid "Period" msgstr "Период" +msgid "Selected Periods" +msgstr "Выбранные периоды" + msgid "Relative periods" msgstr "Соответствующие периоды" msgid "Fixed periods" msgstr "Фиксированные периоды" -msgid "Selected Periods" -msgstr "Выбранные периоды" - msgid "No periods selected" msgstr "Периоды не выбраны" @@ -866,6 +849,27 @@ msgstr "Финансовые годы" msgid "Years" msgstr "Годы" +msgid "Bold text" +msgstr "" + +msgid "Italic text" +msgstr "" + +msgid "Link to a URL" +msgstr "" + +msgid "Mention a user" +msgstr "" + +msgid "Add emoji" +msgstr "" + +msgid "Preview" +msgstr "Предварительный просмотр" + +msgid "Back to write mode" +msgstr "" + msgid "Interpretations and details" msgstr "" @@ -896,6 +900,18 @@ msgstr "" msgid "Retry" msgstr "" +msgid "Too many results. Try refining the search." +msgstr "" + +msgid "Search for a user" +msgstr "" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "" + +msgid "No results found" +msgstr "Результаты не найдены" + msgid "Series" msgstr "Ряды" @@ -1155,11 +1171,14 @@ msgid "Radar" msgstr "Радиальная" msgid "Scatter" -msgstr "" +msgstr "Рассеивание" msgid "Single value" msgstr "Одиночное значение" +msgid "Outlier table" +msgstr "" + msgid "All charts" msgstr "" diff --git a/i18n/sv.po b/i18n/sv.po index afe88915f..9bdb02c5d 100644 --- a/i18n/sv.po +++ b/i18n/sv.po @@ -1,14 +1,16 @@ # # Translators: # Viktor Varland , 2022 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 +# Jason Pickering , 2024 +# Martin , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2024-01-25T12:05:03.360Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Martin , 2024\n" "Language-Team: Swedish (https://app.transifex.com/hisp-uio/teams/100509/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -154,6 +156,9 @@ msgstr "" msgid "Data Type" msgstr "" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "" + msgid "All types" msgstr "" @@ -184,6 +189,9 @@ msgstr "" msgid "No program indicators found" msgstr "" +msgid "No calculations found" +msgstr "" + msgid "No indicators found for \"{{- searchTerm}}\"" msgstr "" @@ -196,6 +204,9 @@ msgstr "" msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "" +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "" + msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "" @@ -209,10 +220,10 @@ msgid "All metrics" msgstr "" msgid "Move to {{axisName}}" -msgstr "" +msgstr "Flytta till {{axisName}}" msgid "Add to {{axisName}}" -msgstr "" +msgstr "Lägg till i {{axisName}}" msgid "Not available for {{visualizationType}}" msgstr "" @@ -346,6 +357,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "" + msgid "Could not update comment" msgstr "" @@ -372,27 +386,42 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "tolkningar" +msgid "Reply" +msgstr "Svar" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" +msgstr[1] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "" msgid "Like" msgstr "" -msgid "Reply" -msgstr "Svar" +msgid "See interpretation" +msgstr "" + +msgid "Open in app" +msgstr "" msgid "Share" msgstr "Dela med sig" -msgid "See interpretation" -msgstr "" - msgid "Manage sharing" msgstr "" @@ -572,7 +601,7 @@ msgid "Options" msgstr "Alternativ" msgid "Hide" -msgstr "" +msgstr "Göm" msgid "{{count}} org units" msgid_plural "{{count}} org units" @@ -611,7 +640,7 @@ msgid "Select a group" msgstr "" msgid "Deselect all" -msgstr "" +msgstr "Avmarkera alla" msgid "Period type" msgstr "Periodtyp" @@ -625,13 +654,13 @@ msgstr "Välj år" msgid "Period" msgstr "Period" -msgid "Relative periods" +msgid "Selected Periods" msgstr "" -msgid "Fixed periods" +msgid "Relative periods" msgstr "" -msgid "Selected Periods" +msgid "Fixed periods" msgstr "" msgid "No periods selected" @@ -841,6 +870,9 @@ msgstr "" msgid "Years" msgstr "År" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" @@ -1132,6 +1164,9 @@ msgstr "" msgid "Single value" msgstr "" +msgid "Outlier table" +msgstr "" + msgid "All charts" msgstr "" diff --git a/i18n/th.po b/i18n/th.po new file mode 100644 index 000000000..6b7b9b781 --- /dev/null +++ b/i18n/th.po @@ -0,0 +1,1194 @@ +# +# Translators: +# Namwan Chanthavisouk, 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: i18next-conv\n" +"POT-Creation-Date: 2024-01-25T12:05:03.360Z\n" +"PO-Revision-Date: 2020-04-28 22:05+0000\n" +"Last-Translator: Namwan Chanthavisouk, 2024\n" +"Language-Team: Thai (https://app.transifex.com/hisp-uio/teams/100509/th/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "view only" +msgstr "สำหรับดูเท่านั้น" + +msgid "view and edit" +msgstr "ดู และ แก้ไข" + +msgid "all users ({{accessLevel}})" +msgstr "ผู้ใช้ทั้งหมด ( {{accessLevel}} )" + +msgid "{{userOrGroup}} ({{accessLevel}})" +msgstr "{{userOrGroup}} ( {{accessLevel}} )" + +msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" +msgstr "แชร์กับ {{commaSeparatedListOfUsersAndGroups}} " + +msgid "Not shared with any users or groups" +msgstr "" + +msgid "No description" +msgstr "" + +msgid "Last updated {{time}}" +msgstr "" + +msgid "Created {{time}} by {{author}}" +msgstr "" + +msgid "Created {{time}}" +msgstr "" + +msgid "Viewed {{count}} times" +msgid_plural "Viewed {{count}} times" +msgstr[0] "" + +msgid "Notifications" +msgstr "" + +msgid "You're subscribed and getting updates about new interpretations." +msgstr "" + +msgid "Unsubscribe" +msgstr "" + +msgid "Subscribe to get updates about new interpretations." +msgstr "" + +msgid "Subscribe" +msgstr "" + +msgid "About this map" +msgstr "" + +msgid "About this line list" +msgstr "" + +msgid "About this visualization" +msgstr "" + +msgid "This app could not retrieve required data." +msgstr "" + +msgid "Network error" +msgstr "" + +msgid "Data / Edit calculation" +msgstr "" + +msgid "Data / New calculation" +msgstr "" + +msgid "Remove item" +msgstr "" + +msgid "Check formula" +msgstr "" + +msgid "Calculation name" +msgstr "" + +msgid "Shown in table headers and chart axes/legends" +msgstr "" + +msgid "Delete calculation" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "The calculation can only be saved with a valid formula" +msgstr "" + +msgid "Add a name to save this calculation" +msgstr "" + +msgid "Save calculation" +msgstr "" + +msgid "" +"Are you sure you want to delete this calculation? It may be used by other " +"visualizations." +msgstr "" + +msgid "Yes, delete" +msgstr "" + +msgid "Totals only" +msgstr "" + +msgid "Details only" +msgstr "" + +msgid "Loading" +msgstr "" + +msgid "Data elements" +msgstr "" + +msgid "Search by data element name" +msgstr "" + +msgid "No data elements found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data elements found" +msgstr "" + +msgid "" +"Drag items here, or double click in the list, to start building a " +"calculation formula" +msgstr "" + +msgid "Math operators" +msgstr "" + +msgid "Data Type" +msgstr "" + +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "" + +msgid "All types" +msgstr "" + +msgid "Disaggregation" +msgstr "" + +msgid "No data" +msgstr "" + +msgid "Search by data item name" +msgstr "" + +msgid "No items selected" +msgstr "" + +msgid "Selected Items" +msgstr "" + +msgid "No indicators found" +msgstr "" + +msgid "No data sets found" +msgstr "" + +msgid "No event data items found" +msgstr "" + +msgid "No program indicators found" +msgstr "" + +msgid "No calculations found" +msgstr "" + +msgid "No indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data sets found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No event data items found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No program indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Nothing found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Calculation" +msgstr "" + +msgid "Metric type" +msgstr "" + +msgid "All metrics" +msgstr "" + +msgid "Move to {{axisName}}" +msgstr "" + +msgid "Add to {{axisName}}" +msgstr "" + +msgid "Not available for {{visualizationType}}" +msgstr "" + +msgid "Remove Assigned Categories" +msgstr "" + +msgid "Add Assigned Categories" +msgstr "" + +msgid "Remove" +msgstr "" + +msgid "Filter dimensions" +msgstr "" + +msgid "Main dimensions" +msgstr "" + +msgid "Your dimensions" +msgstr "" + +msgid "Dimension recommended with selected data" +msgstr "" + +msgid "All items" +msgstr "" + +msgid "Automatically include all items" +msgstr "" + +msgid "" +"Select all {{- dimensionTitle}} items. With this option, new items added in " +"the future will be automatically included." +msgstr "" + +msgid "Manually select items..." +msgstr "" + +msgid "Nothing found in {{- dimensionTitle}}" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Nothing found for {{- searchTerm}}" +msgstr "" + +msgid "Delete {{fileType}}" +msgstr "" + +msgid "" +"This {{fileType}} and related interpretations will be deleted. Continue?" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "File" +msgstr "" + +msgid "New" +msgstr "" + +msgid "Open…" +msgstr "" + +msgid "Save" +msgstr "" + +msgid "Save…" +msgstr "" + +msgid "Save as…" +msgstr "" + +msgid "Rename…" +msgstr "" + +msgid "Translate…" +msgstr "" + +msgid "Share…" +msgstr "" + +msgid "Get link…" +msgstr "" + +msgid "Open in this app" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Rename {{fileType}}" +msgstr "" + +msgid "Name" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "Rename" +msgstr "" + +msgid "{{- objectName}} (copy)" +msgstr "" + +msgid "Save {{fileType}} as" +msgstr "" + +msgid "event report" +msgstr "" + +msgid "line list" +msgstr "" + +msgid "map" +msgstr "" + +msgid "visualization" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "Write a reply" +msgstr "" + +msgid "Post reply" +msgstr "" + +msgid "Delete failed" +msgstr "" + +msgid "Could not update comment" +msgstr "" + +msgid "Enter comment text" +msgstr "" + +msgid "Update" +msgstr "" + +msgid "Viewing interpretation: {{- visualisationName}}" +msgstr "" + +msgid "Could not load interpretation" +msgstr "" + +msgid "" +"The interpretation couldn’t be displayed. Try again or contact your system " +"administrator." +msgstr "" + +msgid "Hide interpretation" +msgstr "" + +msgid "Write an interpretation" +msgstr "" + +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + +msgid "Post interpretation" +msgstr "" + +msgid "Interpretations" +msgstr "" + +msgid "Reply" +msgstr "" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" + +msgid "View replies" +msgstr "" + +msgid "Unlike" +msgstr "" + +msgid "Like" +msgstr "" + +msgid "See interpretation" +msgstr "" + +msgid "Open in app" +msgstr "" + +msgid "Share" +msgstr "" + +msgid "Manage sharing" +msgstr "" + +msgid "Could not update interpretation" +msgstr "" + +msgid "Enter interpretation text" +msgstr "" + +msgid "Bold text" +msgstr "" + +msgid "Italic text" +msgstr "" + +msgid "Link to a URL" +msgstr "" + +msgid "Mention a user" +msgstr "" + +msgid "Add emoji" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Back to write mode" +msgstr "" + +msgid "Too many results. Try refining the search." +msgstr "" + +msgid "Search for a user" +msgstr "" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "" + +msgid "No results found" +msgstr "" + +msgid "Not available offline" +msgstr "" + +msgid "Created by" +msgstr "" + +msgid "Anyone" +msgstr "" + +msgid "Only you" +msgstr "" + +msgid "Others" +msgstr "" + +msgid "Not supported by this app yet" +msgstr "" + +msgid "Filter by name" +msgstr "" + +msgid "Created" +msgstr "" + +msgid "Last updated" +msgstr "" + +msgid "Type" +msgstr "" + +msgid "Clear filters" +msgstr "" + +msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" +msgstr "" + +msgid "Open" +msgstr "" + +msgid "Couldn't load items" +msgstr "" + +msgid "" +"There was a problem loading items. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No items found. Create a new to get started." +msgstr "" + +msgid "" +"No items found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "Create new" +msgstr "" + +msgid "Open a visualization" +msgstr "" + +msgid "Loading visualizations" +msgstr "" + +msgid "Couldn't load visualizations" +msgstr "" + +msgid "" +"There was a problem loading visualizations. Try again or contact your system" +" administrator." +msgstr "" + +msgid "No visualizations found. Click New visualization to get started." +msgstr "" + +msgid "" +"No visualizations found. Try adjusting your search or filter options to find" +" what you're looking for." +msgstr "" + +msgid "New visualization" +msgstr "" + +msgid "Open a map" +msgstr "" + +msgid "Loading maps" +msgstr "" + +msgid "Couldn't load maps" +msgstr "" + +msgid "" +"There was a problem loading maps. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No maps found. Click New map to get started." +msgstr "" + +msgid "" +"No maps found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "New map" +msgstr "" + +msgid "Open a line list" +msgstr "" + +msgid "Loading line lists" +msgstr "" + +msgid "Couldn't load line lists" +msgstr "" + +msgid "" +"There was a problem loading line lists. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No line lists found. Click New line list to get started." +msgstr "" + +msgid "" +"No line lists found. Try adjusting your search or filter options to find " +"what you're looking for." +msgstr "" + +msgid "New line list" +msgstr "" + +msgid "Options" +msgstr "" + +msgid "Hide" +msgstr "" + +msgid "{{count}} org units" +msgid_plural "{{count}} org units" +msgstr[0] "" + +msgid "{{count}} levels" +msgid_plural "{{count}} levels" +msgstr[0] "" + +msgid "{{count}} groups" +msgid_plural "{{count}} groups" +msgstr[0] "" + +msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" +msgstr "" + +msgid "Nothing selected" +msgstr "" + +msgid "User organisation unit" +msgstr "" + +msgid "User sub-units" +msgstr "" + +msgid "User sub-x2-units" +msgstr "" + +msgid "Select a level" +msgstr "" + +msgid "Select a group" +msgstr "" + +msgid "Deselect all" +msgstr "" + +msgid "Period type" +msgstr "" + +msgid "Year" +msgstr "" + +msgid "Select year" +msgstr "" + +msgid "Period" +msgstr "" + +msgid "Selected Periods" +msgstr "" + +msgid "Relative periods" +msgstr "" + +msgid "Fixed periods" +msgstr "" + +msgid "No periods selected" +msgstr "" + +msgid "Daily" +msgstr "" + +msgid "Weekly" +msgstr "" + +msgid "Weekly (Start Wednesday)" +msgstr "" + +msgid "Weekly (Start Thursday)" +msgstr "" + +msgid "Weekly (Start Saturday)" +msgstr "" + +msgid "Weekly (Start Sunday)" +msgstr "" + +msgid "Bi-weekly" +msgstr "" + +msgid "Monthly" +msgstr "" + +msgid "Bi-monthly" +msgstr "" + +msgid "Quarterly" +msgstr "" + +msgid "Six-monthly" +msgstr "" + +msgid "Six-monthly April" +msgstr "" + +msgid "Yearly" +msgstr "" + +msgid "Financial year (Start November)" +msgstr "" + +msgid "Financial year (Start October)" +msgstr "" + +msgid "Financial year (Start July)" +msgstr "" + +msgid "Financial year (Start April)" +msgstr "" + +msgid "Today" +msgstr "" + +msgid "Yesterday" +msgstr "" + +msgid "Last 3 days" +msgstr "" + +msgid "Last 7 days" +msgstr "" + +msgid "Last 14 days" +msgstr "" + +msgid "Last 30 days" +msgstr "" + +msgid "Last 60 days" +msgstr "" + +msgid "Last 90 days" +msgstr "" + +msgid "Last 180 days" +msgstr "" + +msgid "This week" +msgstr "" + +msgid "Last week" +msgstr "" + +msgid "Last 4 weeks" +msgstr "" + +msgid "Last 12 weeks" +msgstr "" + +msgid "Last 52 weeks" +msgstr "" + +msgid "Weeks this year" +msgstr "" + +msgid "This bi-week" +msgstr "" + +msgid "Last bi-week" +msgstr "" + +msgid "Last 4 bi-weeks" +msgstr "" + +msgid "This month" +msgstr "" + +msgid "Last month" +msgstr "" + +msgid "Last 3 months" +msgstr "" + +msgid "Last 6 months" +msgstr "" + +msgid "Last 12 months" +msgstr "" + +msgid "Months this year" +msgstr "" + +msgid "This bi-month" +msgstr "" + +msgid "Last bi-month" +msgstr "" + +msgid "Last 6 bi-months" +msgstr "" + +msgid "Bi-months this year" +msgstr "" + +msgid "This quarter" +msgstr "" + +msgid "Last quarter" +msgstr "" + +msgid "Last 4 quarters" +msgstr "" + +msgid "Quarters this year" +msgstr "" + +msgid "This six-month" +msgstr "" + +msgid "Last six-month" +msgstr "" + +msgid "Last 2 six-month" +msgstr "" + +msgid "This financial year" +msgstr "" + +msgid "Last financial year" +msgstr "" + +msgid "Last 5 financial years" +msgstr "" + +msgid "This year" +msgstr "" + +msgid "Last year" +msgstr "" + +msgid "Last 5 years" +msgstr "" + +msgid "Last 10 years" +msgstr "" + +msgid "Days" +msgstr "" + +msgid "Weeks" +msgstr "" + +msgid "Bi-weeks" +msgstr "" + +msgid "Months" +msgstr "" + +msgid "Bi-months" +msgstr "" + +msgid "Quarters" +msgstr "" + +msgid "Six-months" +msgstr "" + +msgid "Financial Years" +msgstr "" + +msgid "Years" +msgstr "" + +msgid "Interpretations and details" +msgstr "" + +msgid "Translating to" +msgstr "" + +msgid "Choose a locale" +msgstr "" + +msgid "Base locale reference" +msgstr "" + +msgid "Choose a locale to translate from the menu above" +msgstr "" + +msgid "Translate: {{objectName}}" +msgstr "" + +msgid "Save translations" +msgstr "" + +msgid "Cannot save while offline" +msgstr "" + +msgid "Could not load translations" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Series" +msgstr "" + +msgid "Category" +msgstr "" + +msgid "Filter" +msgstr "" + +msgid "Columns" +msgstr "" + +msgid "Rows" +msgstr "" + +msgid "Points" +msgstr "" + +msgid "Reporting rate" +msgstr "" + +msgid "Reporting rate on time" +msgstr "" + +msgid "Actual reports" +msgstr "" + +msgid "Actual reports on time" +msgstr "" + +msgid "Expected reports" +msgstr "" + +msgid "Program" +msgstr "" + +msgid "Select a program" +msgstr "" + +msgid "Indicators" +msgstr "" + +msgid "Indicator group" +msgstr "" + +msgid "All groups" +msgstr "" + +msgid "Indicator" +msgstr "" + +msgid "No indicator groups found" +msgstr "" + +msgid "Loading indicator groups" +msgstr "" + +msgid "Data element group" +msgstr "" + +msgid "Data element" +msgstr "" + +msgid "No data element groups found" +msgstr "" + +msgid "Loading data element groups" +msgstr "" + +msgid "Data sets" +msgstr "" + +msgid "Data set" +msgstr "" + +msgid "All data sets" +msgstr "" + +msgid "Loading data sets" +msgstr "" + +msgid "Event data items" +msgstr "" + +msgid "All programs" +msgstr "" + +msgid "Event data item" +msgstr "" + +msgid "No programs found" +msgstr "" + +msgid "Loading programs" +msgstr "" + +msgid "Program indicators" +msgstr "" + +msgid "Program indicator" +msgstr "" + +msgid "Calculations" +msgstr "" + +msgid "Number" +msgstr "" + +msgid "Formula is empty. Add items to the formula from the lists on the left." +msgstr "" + +msgid "Consecutive math operators" +msgstr "" + +msgid "Consecutive data elements" +msgstr "" + +msgid "Starts or ends with a math operator" +msgstr "" + +msgid "Empty parentheses" +msgstr "" + +msgid "Missing right parenthesis )" +msgstr "" + +msgid "Missing left parenthesis (" +msgstr "" + +msgid "Extra Small" +msgstr "" + +msgid "Small" +msgstr "" + +msgid "Regular" +msgstr "" + +msgid "Large" +msgstr "" + +msgid "Extra Large" +msgstr "" + +msgid "Left" +msgstr "" + +msgid "Center" +msgstr "" + +msgid "Right" +msgstr "" + +msgid "Start" +msgstr "" + +msgid "Middle" +msgstr "" + +msgid "End" +msgstr "" + +msgid "Top" +msgstr "" + +msgid "Bottom" +msgstr "" + +msgid "{{dynamicOuNames}} and {{lastOuName}}" +msgstr "" + +msgid "{{allDynamicOuNames}} levels" +msgstr "" + +msgid "{{allDynamicOuNames}} groups" +msgstr "" + +msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" +msgstr "" + +msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" +msgstr "" + +msgid "{{percentage}}% of total x values" +msgstr "" + +msgid "{{percentage}}% of total y values" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q1" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q3" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score high" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score high" +msgstr "" + +msgid "Data" +msgstr "" + +msgid "Organisation unit" +msgstr "" + +msgid "Assigned Categories" +msgstr "" + +msgid "Pivot table" +msgstr "" + +msgid "Area" +msgstr "" + +msgid "Stacked area" +msgstr "" + +msgid "Bar" +msgstr "" + +msgid "Stacked bar" +msgstr "" + +msgid "Column" +msgstr "" + +msgid "Year over year (column)" +msgstr "" + +msgid "Stacked column" +msgstr "" + +msgid "Gauge" +msgstr "" + +msgid "Line" +msgstr "" + +msgid "Line list" +msgstr "" + +msgid "Year over year (line)" +msgstr "" + +msgid "Pie" +msgstr "" + +msgid "Radar" +msgstr "" + +msgid "Scatter" +msgstr "" + +msgid "Single value" +msgstr "" + +msgid "Outlier table" +msgstr "" + +msgid "All charts" +msgstr "" + +msgid "{{seriesName}} (trend)" +msgstr "" + +msgid "Trend" +msgstr "" + +msgid "No legend for this series" +msgstr "" + +msgid "and {{amount}} more..." +msgstr "" + +msgid "Linear Regression" +msgstr "" + +msgid "Target" +msgstr "" + +msgid "Base" +msgstr "" + +msgid "Axis {{axisId}}" +msgstr "" + +msgid "{{count}} items" +msgid_plural "{{count}} items" +msgstr[0] "" + +msgid "Reset zoom" +msgstr "" diff --git a/i18n/uz.po b/i18n/uz_UZ_Cyrl.po similarity index 98% rename from i18n/uz.po rename to i18n/uz_UZ_Cyrl.po index 8a67b872d..9b9dc5769 100644 --- a/i18n/uz.po +++ b/i18n/uz_UZ_Cyrl.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" "Last-Translator: Ibatov , 2023\n" "Language-Team: Uzbek (Cyrillic) (https://app.transifex.com/hisp-uio/teams/100509/uz@Cyrl/)\n" @@ -77,7 +77,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "Тармоқда хатолик" msgid "Data / Edit calculation" msgstr "" @@ -237,7 +237,7 @@ msgid "Dimension recommended with selected data" msgstr "Танланган маълумотлар учун созламалар тавсия этилади" msgid "All items" -msgstr "" +msgstr "Барча элементлар" msgid "Automatically include all items" msgstr "" @@ -333,7 +333,7 @@ msgid "map" msgstr "харита" msgid "visualization" -msgstr "" +msgstr "Визуализация" msgid "Edit" msgstr "Таҳрирлаш" @@ -373,6 +373,10 @@ msgstr "" msgid "Write an interpretation" msgstr "Талқин ёзиш" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" @@ -595,10 +599,10 @@ msgid_plural "{{count}} groups" msgstr[0] "" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "Танланган: {{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "Ҳеч нима танланмаган" msgid "User organisation unit" msgstr "Ташкилий бўлим фойдаланувчиси" @@ -922,7 +926,7 @@ msgid "Indicator group" msgstr "Индикатор гуруҳи" msgid "All groups" -msgstr "" +msgstr "Барча гуруҳлар" msgid "Indicator" msgstr "Индикатор" diff --git a/i18n/uz_UZ_Latn.po b/i18n/uz_UZ_Latn.po new file mode 100644 index 000000000..d6871a81b --- /dev/null +++ b/i18n/uz_UZ_Latn.po @@ -0,0 +1,1175 @@ +# +# Translators: +# Yury Rogachev , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: i18next-conv\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"PO-Revision-Date: 2020-04-28 22:05+0000\n" +"Last-Translator: Yury Rogachev , 2023\n" +"Language-Team: Uzbek (Latin) (https://app.transifex.com/hisp-uio/teams/100509/uz@Latn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uz@Latn\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "view only" +msgstr "" + +msgid "view and edit" +msgstr "" + +msgid "all users ({{accessLevel}})" +msgstr "" + +msgid "{{userOrGroup}} ({{accessLevel}})" +msgstr "" + +msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" +msgstr "" + +msgid "Not shared with any users or groups" +msgstr "" + +msgid "No description" +msgstr "Tavsif yoʼq" + +msgid "Last updated {{time}}" +msgstr "" + +msgid "Created {{time}} by {{author}}" +msgstr "" + +msgid "Created {{time}}" +msgstr "" + +msgid "Viewed {{count}} times" +msgid_plural "Viewed {{count}} times" +msgstr[0] "" + +msgid "Notifications" +msgstr "" + +msgid "You're subscribed and getting updates about new interpretations." +msgstr "" + +msgid "Unsubscribe" +msgstr "" + +msgid "Subscribe to get updates about new interpretations." +msgstr "" + +msgid "Subscribe" +msgstr "" + +msgid "About this map" +msgstr "" + +msgid "About this line list" +msgstr "" + +msgid "About this visualization" +msgstr "" + +msgid "This app could not retrieve required data." +msgstr "" + +msgid "Network error" +msgstr "" + +msgid "Data / Edit calculation" +msgstr "" + +msgid "Data / New calculation" +msgstr "" + +msgid "Remove item" +msgstr "" + +msgid "Check formula" +msgstr "" + +msgid "Calculation name" +msgstr "" + +msgid "Shown in table headers and chart axes/legends" +msgstr "" + +msgid "Delete calculation" +msgstr "" + +msgid "Cancel" +msgstr "Бекор қилиш" + +msgid "The calculation can only be saved with a valid formula" +msgstr "" + +msgid "Add a name to save this calculation" +msgstr "" + +msgid "Save calculation" +msgstr "" + +msgid "" +"Are you sure you want to delete this calculation? It may be used by other " +"visualizations." +msgstr "" + +msgid "Yes, delete" +msgstr "" + +msgid "Totals only" +msgstr "" + +msgid "Details only" +msgstr "" + +msgid "Loading" +msgstr "Yuklanmoqda" + +msgid "Data elements" +msgstr "Maʼlumot elementlari" + +msgid "Search by data element name" +msgstr "" + +msgid "No data elements found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data elements found" +msgstr "" + +msgid "" +"Drag items here, or double click in the list, to start building a " +"calculation formula" +msgstr "" + +msgid "Math operators" +msgstr "" + +msgid "Data Type" +msgstr "Maʼlumot turi" + +msgid "All types" +msgstr "Barcha turlari" + +msgid "Disaggregation" +msgstr "" + +msgid "No data" +msgstr "Maʼlumot yoʼq" + +msgid "Search by data item name" +msgstr "" + +msgid "No items selected" +msgstr "Element tanlanmagan" + +msgid "Selected Items" +msgstr "Element tanlangan" + +msgid "No indicators found" +msgstr "" + +msgid "No data sets found" +msgstr "" + +msgid "No event data items found" +msgstr "" + +msgid "No program indicators found" +msgstr "" + +msgid "No indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data sets found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No event data items found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No program indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Nothing found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Calculation" +msgstr "" + +msgid "Metric type" +msgstr "" + +msgid "All metrics" +msgstr "Barcha koʼrsatgichlar" + +msgid "Move to {{axisName}}" +msgstr "Harakatlaning {{axisName}} ga qarab" + +msgid "Add to {{axisName}}" +msgstr "{{axisName}} ga qoʼshing" + +msgid "Not available for {{visualizationType}}" +msgstr "{{visualizationType}} uchun mavjud emas" + +msgid "Remove Assigned Categories" +msgstr "Belgilangan kategoriyalar oʼchirilsin" + +msgid "Add Assigned Categories" +msgstr "Belgilangan kategoriyalar qoʼshilsin" + +msgid "Remove" +msgstr "Olib tashlash" + +msgid "Filter dimensions" +msgstr "Filtr sozlamalari" + +msgid "Main dimensions" +msgstr "Umumiy oʼlchamlar" + +msgid "Your dimensions" +msgstr "Sizning sozlamalaringiz" + +msgid "Dimension recommended with selected data" +msgstr "Tanlangan maʼlumotlar uchun sozlamalar tavsiya etiladi" + +msgid "All items" +msgstr "" + +msgid "Automatically include all items" +msgstr "" + +msgid "" +"Select all {{- dimensionTitle}} items. With this option, new items added in " +"the future will be automatically included." +msgstr "" + +msgid "Manually select items..." +msgstr "" + +msgid "Nothing found in {{- dimensionTitle}}" +msgstr "" + +msgid "Search" +msgstr "Izlash" + +msgid "Nothing found for {{- searchTerm}}" +msgstr "" + +msgid "Delete {{fileType}}" +msgstr "" + +msgid "" +"This {{fileType}} and related interpretations will be deleted. Continue?" +msgstr "" + +msgid "Delete" +msgstr "Oʼchirib tashlash" + +msgid "File" +msgstr "Fayl" + +msgid "New" +msgstr "Yangi" + +msgid "Open…" +msgstr "" + +msgid "Save" +msgstr "Saqlash" + +msgid "Save…" +msgstr "" + +msgid "Save as…" +msgstr "" + +msgid "Rename…" +msgstr "" + +msgid "Translate…" +msgstr "" + +msgid "Share…" +msgstr "" + +msgid "Get link…" +msgstr "" + +msgid "Open in this app" +msgstr "Ushbu ilovada oching" + +msgid "Close" +msgstr "Yopmoq" + +msgid "Rename {{fileType}}" +msgstr "" + +msgid "Name" +msgstr "Исми" + +msgid "Description" +msgstr "Tavsif" + +msgid "Rename" +msgstr "Қайта номлаш" + +msgid "{{- objectName}} (copy)" +msgstr "" + +msgid "Save {{fileType}} as" +msgstr "" + +msgid "event report" +msgstr "hodisa/tadbir hisoboti" + +msgid "line list" +msgstr "" + +msgid "map" +msgstr "xarita" + +msgid "visualization" +msgstr "" + +msgid "Edit" +msgstr "Tahrirlash" + +msgid "Write a reply" +msgstr "Izoh yozing" + +msgid "Post reply" +msgstr "" + +msgid "Delete failed" +msgstr "Oʼchirish amalga oshmadi" + +msgid "Could not update comment" +msgstr "" + +msgid "Enter comment text" +msgstr "" + +msgid "Update" +msgstr "Янгилаш" + +msgid "Viewing interpretation: {{- visualisationName}}" +msgstr "" + +msgid "Could not load interpretation" +msgstr "" + +msgid "" +"The interpretation couldn’t be displayed. Try again or contact your system " +"administrator." +msgstr "" + +msgid "Hide interpretation" +msgstr "" + +msgid "Write an interpretation" +msgstr "Talqin yozish" + +msgid "Post interpretation" +msgstr "" + +msgid "Interpretations" +msgstr "Talqinlar" + +msgid "Reply" +msgstr "Javob" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" + +msgid "View replies" +msgstr "" + +msgid "Unlike" +msgstr "Аksincha" + +msgid "Like" +msgstr "Kabi, oʼxshash" + +msgid "Share" +msgstr "Улашиш" + +msgid "See interpretation" +msgstr "" + +msgid "Manage sharing" +msgstr "Ulashishni boshqarish" + +msgid "Could not update interpretation" +msgstr "" + +msgid "Enter interpretation text" +msgstr "" + +msgid "Bold text" +msgstr "" + +msgid "Italic text" +msgstr "" + +msgid "Link to a URL" +msgstr "" + +msgid "Mention a user" +msgstr "" + +msgid "Add emoji" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Back to write mode" +msgstr "" + +msgid "Too many results. Try refining the search." +msgstr "" + +msgid "Search for a user" +msgstr "" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "" + +msgid "No results found" +msgstr "Hech qanday natija topilmadi" + +msgid "Not available offline" +msgstr "" + +msgid "Created by" +msgstr "Томонидан яратилган" + +msgid "Anyone" +msgstr "Kimdir" + +msgid "Only you" +msgstr "" + +msgid "Others" +msgstr "" + +msgid "Not supported by this app yet" +msgstr "" + +msgid "Filter by name" +msgstr "Nomi boʼyicha filtrlash" + +msgid "Created" +msgstr "Yaratilgan" + +msgid "Last updated" +msgstr "Oxirgi yangilangan" + +msgid "Type" +msgstr "Turi" + +msgid "Clear filters" +msgstr "Filtrlarni tozalash" + +msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" +msgstr "" + +msgid "Open" +msgstr "Ochiq" + +msgid "Couldn't load items" +msgstr "" + +msgid "" +"There was a problem loading items. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No items found. Create a new to get started." +msgstr "" + +msgid "" +"No items found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "Create new" +msgstr "Yangisini yaratish" + +msgid "Open a visualization" +msgstr "" + +msgid "Loading visualizations" +msgstr "" + +msgid "Couldn't load visualizations" +msgstr "" + +msgid "" +"There was a problem loading visualizations. Try again or contact your system" +" administrator." +msgstr "" + +msgid "No visualizations found. Click New visualization to get started." +msgstr "" + +msgid "" +"No visualizations found. Try adjusting your search or filter options to find" +" what you're looking for." +msgstr "" + +msgid "New visualization" +msgstr "" + +msgid "Open a map" +msgstr "" + +msgid "Loading maps" +msgstr "" + +msgid "Couldn't load maps" +msgstr "" + +msgid "" +"There was a problem loading maps. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No maps found. Click New map to get started." +msgstr "" + +msgid "" +"No maps found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "New map" +msgstr "" + +msgid "Open a line list" +msgstr "" + +msgid "Loading line lists" +msgstr "" + +msgid "Couldn't load line lists" +msgstr "" + +msgid "" +"There was a problem loading line lists. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No line lists found. Click New line list to get started." +msgstr "" + +msgid "" +"No line lists found. Try adjusting your search or filter options to find " +"what you're looking for." +msgstr "" + +msgid "New line list" +msgstr "" + +msgid "Options" +msgstr "Вариант" + +msgid "Hide" +msgstr "Berkitish" + +msgid "{{count}} org units" +msgid_plural "{{count}} org units" +msgstr[0] "" + +msgid "{{count}} levels" +msgid_plural "{{count}} levels" +msgstr[0] "" + +msgid "{{count}} groups" +msgid_plural "{{count}} groups" +msgstr[0] "" + +msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" +msgstr "" + +msgid "Nothing selected" +msgstr "" + +msgid "User organisation unit" +msgstr "Ташкилий бўлим фойдаланувчиси" + +msgid "User sub-units" +msgstr "Фойдаланувчига бўйсунувчи бирликлар" + +msgid "User sub-x2-units" +msgstr "Фойдаланувчига бўйсунувчи 2 даражали бирликлар" + +msgid "Select a level" +msgstr "Pogʼonani tanlang" + +msgid "Select a group" +msgstr "Guruhni tanlang" + +msgid "Deselect all" +msgstr "Barcha tanlanganni bekor qilish" + +msgid "Period type" +msgstr "Davr turi" + +msgid "Year" +msgstr "Yil" + +msgid "Select year" +msgstr "Yilni tanlang" + +msgid "Period" +msgstr "Davr" + +msgid "Relative periods" +msgstr "Nisbiy davrlar" + +msgid "Fixed periods" +msgstr "Beligalangan davrlar" + +msgid "Selected Periods" +msgstr "Tanlangan Davrlar" + +msgid "No periods selected" +msgstr "Davr tanlanmagan" + +msgid "Daily" +msgstr "Kunlik" + +msgid "Weekly" +msgstr "Haftalik" + +msgid "Weekly (Start Wednesday)" +msgstr "Haftalik (Boshlanishi Chorshanba)" + +msgid "Weekly (Start Thursday)" +msgstr "Haftalik (Boshlanishi Payshanba)" + +msgid "Weekly (Start Saturday)" +msgstr "Haftalik (Boshlanishi Shanba)" + +msgid "Weekly (Start Sunday)" +msgstr "Haftalik (Boshlanishi Yakshanba)" + +msgid "Bi-weekly" +msgstr "Juft haftalik" + +msgid "Monthly" +msgstr "Oylik" + +msgid "Bi-monthly" +msgstr "Juft oylik" + +msgid "Quarterly" +msgstr "Har kvartal" + +msgid "Six-monthly" +msgstr "Yarim yillik" + +msgid "Six-monthly April" +msgstr "Yarim yillik Аprel" + +msgid "Yearly" +msgstr "Yillik" + +msgid "Financial year (Start November)" +msgstr "Moliyaviy yil (Boshlanishi Noyabr)" + +msgid "Financial year (Start October)" +msgstr "Moliyaviy yil (boshlanishi Oktyabr)" + +msgid "Financial year (Start July)" +msgstr "Moliyaviy yil (boshlanishi Iyul)" + +msgid "Financial year (Start April)" +msgstr "Moliyaviy yil (boshlanishi Аprel)" + +msgid "Today" +msgstr "Bugun" + +msgid "Yesterday" +msgstr "Kecha" + +msgid "Last 3 days" +msgstr "Oxirgi 3 kun" + +msgid "Last 7 days" +msgstr "Oxirgi 7 kun" + +msgid "Last 14 days" +msgstr "Oxirgi 14 kun" + +msgid "Last 30 days" +msgstr "Oxirgi 30 kun" + +msgid "Last 60 days" +msgstr "Oxirgi 60 kun" + +msgid "Last 90 days" +msgstr "Oxirgi 90 kun" + +msgid "Last 180 days" +msgstr "Oxirgi 180 kun" + +msgid "This week" +msgstr "Ushbu hafta" + +msgid "Last week" +msgstr "Oxirgi hafta" + +msgid "Last 4 weeks" +msgstr "Oxirgi 4 hafta" + +msgid "Last 12 weeks" +msgstr "Oxirgi 12 hafta" + +msgid "Last 52 weeks" +msgstr "Oxirgi 52 hafta" + +msgid "Weeks this year" +msgstr "Haftalar ayni yilda" + +msgid "This bi-week" +msgstr "Ushbu juft hafta" + +msgid "Last bi-week" +msgstr "Oxirgi juft hafta" + +msgid "Last 4 bi-weeks" +msgstr "Oxirgi 4 juft haftalar" + +msgid "This month" +msgstr "Ushbu oy" + +msgid "Last month" +msgstr "Oxirgi oy" + +msgid "Last 3 months" +msgstr "Oxirgi 3 oy" + +msgid "Last 6 months" +msgstr "Oxirgi 6 oy" + +msgid "Last 12 months" +msgstr "Oxirgi 12 oy" + +msgid "Months this year" +msgstr "Oylar ayni yilda" + +msgid "This bi-month" +msgstr "Ushbu juft oy" + +msgid "Last bi-month" +msgstr "Oxirgi 2 oy" + +msgid "Last 6 bi-months" +msgstr "Oxirgi 6 juft oylar" + +msgid "Bi-months this year" +msgstr "Аyni yildagi juft oylar" + +msgid "This quarter" +msgstr "Ushbu kvartal" + +msgid "Last quarter" +msgstr "Oxirgi kvartal" + +msgid "Last 4 quarters" +msgstr "Oxirgi 4 kvartal" + +msgid "Quarters this year" +msgstr "Ushbu yildagi kvartallar" + +msgid "This six-month" +msgstr "Ushbu yarim yillik" + +msgid "Last six-month" +msgstr "Oxirgi 6 oy" + +msgid "Last 2 six-month" +msgstr "Oxirgi juft yarim yillik" + +msgid "This financial year" +msgstr "Ushbu moliyaviy yil" + +msgid "Last financial year" +msgstr "Oxirgi moliyaviy yil" + +msgid "Last 5 financial years" +msgstr "Oxirgi 5 moliyaviy yillar" + +msgid "This year" +msgstr "Ushbu yil" + +msgid "Last year" +msgstr "Oxirgi yil" + +msgid "Last 5 years" +msgstr "Oxirgi 5 yil" + +msgid "Last 10 years" +msgstr "Oxirgi 10 yil" + +msgid "Days" +msgstr "Kunlar" + +msgid "Weeks" +msgstr "Haftalar" + +msgid "Bi-weeks" +msgstr "Juft haftalar" + +msgid "Months" +msgstr "Oylar" + +msgid "Bi-months" +msgstr "2 oy" + +msgid "Quarters" +msgstr "Kvartal" + +msgid "Six-months" +msgstr "Yarim yillik" + +msgid "Financial Years" +msgstr "Moliyaviy yillar" + +msgid "Years" +msgstr "Yillar" + +msgid "Interpretations and details" +msgstr "" + +msgid "Translating to" +msgstr "" + +msgid "Choose a locale" +msgstr "" + +msgid "Base locale reference" +msgstr "" + +msgid "Choose a locale to translate from the menu above" +msgstr "" + +msgid "Translate: {{objectName}}" +msgstr "" + +msgid "Save translations" +msgstr "" + +msgid "Cannot save while offline" +msgstr "" + +msgid "Could not load translations" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Series" +msgstr "Ketma-ketliklar" + +msgid "Category" +msgstr "Kategoriya" + +msgid "Filter" +msgstr "Filtr" + +msgid "Columns" +msgstr "Ustunlar" + +msgid "Rows" +msgstr "Qatorlar" + +msgid "Points" +msgstr "Nuqtalar" + +msgid "Reporting rate" +msgstr "Hisobotdagi stavka" + +msgid "Reporting rate on time" +msgstr "Hisobotdagi stavka oʼz vaqtida" + +msgid "Actual reports" +msgstr "Haqiqiy hisobotlar" + +msgid "Actual reports on time" +msgstr "Haqiqiy hisobotlar oʼz vaqtida" + +msgid "Expected reports" +msgstr "Kutilayotgan hisobotlar" + +msgid "Program" +msgstr "Programma" + +msgid "Select a program" +msgstr "Dasturni tanlang" + +msgid "Indicators" +msgstr "Indikatorlar" + +msgid "Indicator group" +msgstr "Koʼrsatgich guruhi" + +msgid "All groups" +msgstr "" + +msgid "Indicator" +msgstr "Indikator" + +msgid "No indicator groups found" +msgstr "" + +msgid "Loading indicator groups" +msgstr "" + +msgid "Data element group" +msgstr "Maʼlumotlar elementi guruhi" + +msgid "Data element" +msgstr "Maʼlumotlar elementi" + +msgid "No data element groups found" +msgstr "" + +msgid "Loading data element groups" +msgstr "" + +msgid "Data sets" +msgstr "Maʼlumotlar toʼplami" + +msgid "Data set" +msgstr "Maʼlumotlar toʼplami" + +msgid "All data sets" +msgstr "" + +msgid "Loading data sets" +msgstr "" + +msgid "Event data items" +msgstr "Hodisalar haqida maʼlumot elementlari" + +msgid "All programs" +msgstr "" + +msgid "Event data item" +msgstr "Hodisa/Tadbir maʼlumoti elementi" + +msgid "No programs found" +msgstr "" + +msgid "Loading programs" +msgstr "" + +msgid "Program indicators" +msgstr "Dastur indikatorlari" + +msgid "Program indicator" +msgstr "Dastur indikatori" + +msgid "Calculations" +msgstr "" + +msgid "Number" +msgstr "Tartib raqami" + +msgid "Formula is empty. Add items to the formula from the lists on the left." +msgstr "" + +msgid "Consecutive math operators" +msgstr "" + +msgid "Consecutive data elements" +msgstr "" + +msgid "Starts or ends with a math operator" +msgstr "" + +msgid "Empty parentheses" +msgstr "" + +msgid "Missing right parenthesis )" +msgstr "" + +msgid "Missing left parenthesis (" +msgstr "" + +msgid "Extra Small" +msgstr "Juda Kichik" + +msgid "Small" +msgstr "Kichik" + +msgid "Regular" +msgstr "Regulyar" + +msgid "Large" +msgstr "Katta" + +msgid "Extra Large" +msgstr "Juda Katta" + +msgid "Left" +msgstr "Chap" + +msgid "Center" +msgstr "Markaz" + +msgid "Right" +msgstr "Oʼng" + +msgid "Start" +msgstr "Boshlash" + +msgid "Middle" +msgstr "Oʼrtav" + +msgid "End" +msgstr "Oxiri" + +msgid "Top" +msgstr "Yuqoridagi" + +msgid "Bottom" +msgstr "Pastki" + +msgid "{{dynamicOuNames}} and {{lastOuName}}" +msgstr "{{dynamicOuNames}} va {{lastOuName}}" + +msgid "{{allDynamicOuNames}} levels" +msgstr "Barcha {{allDynamicOuNames}} pogʼonalar" + +msgid "{{allDynamicOuNames}} groups" +msgstr "{{allDynamicOuNames}} guruhlar" + +msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" +msgstr "{{allDynamicOuNames}} pogʼonalar {{staticOuNames}} ichida" + +msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" +msgstr "{{allDynamicOuNames}} guruhlar {{staticOuNames}} ichida" + +msgid "{{percentage}}% of total x values" +msgstr "" + +msgid "{{percentage}}% of total y values" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q1" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q3" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score high" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score high" +msgstr "" + +msgid "Data" +msgstr "Maʼlumot" + +msgid "Organisation unit" +msgstr "Ташкилий бирлик" + +msgid "Assigned Categories" +msgstr "Belgilangan Kategoriyalar" + +msgid "Pivot table" +msgstr "Solishtirma jadval" + +msgid "Area" +msgstr "Maydon" + +msgid "Stacked area" +msgstr "Yigʼilgan maydon" + +msgid "Bar" +msgstr "Tizimcha" + +msgid "Stacked bar" +msgstr "Yigʼilgan tizimcha" + +msgid "Column" +msgstr "Ustun" + +msgid "Year over year (column)" +msgstr "Yildan yilga (ustun)" + +msgid "Stacked column" +msgstr "Yigʼilgan ustun" + +msgid "Gauge" +msgstr "Hisoblagich" + +msgid "Line" +msgstr "Qator" + +msgid "Line list" +msgstr "Qatorlar roʼyxati" + +msgid "Year over year (line)" +msgstr "Yildan yilga (qator)" + +msgid "Pie" +msgstr "Butun aylana" + +msgid "Radar" +msgstr "Radar" + +msgid "Scatter" +msgstr "Tarqoqlik" + +msgid "Single value" +msgstr "Yagona qiymat" + +msgid "All charts" +msgstr "" + +msgid "{{seriesName}} (trend)" +msgstr "" + +msgid "Trend" +msgstr "Yoʼnalish" + +msgid "No legend for this series" +msgstr "Ushbu seriya uchun taʼrif mavjud emas" + +msgid "and {{amount}} more..." +msgstr "" + +msgid "Linear Regression" +msgstr "" + +msgid "Target" +msgstr "Nishon" + +msgid "Base" +msgstr "Аsos" + +msgid "Axis {{axisId}}" +msgstr "Oʼqlar {{axisId}}" + +msgid "{{count}} items" +msgid_plural "{{count}} items" +msgstr[0] "" + +msgid "Reset zoom" +msgstr "" diff --git a/i18n/vi.po b/i18n/vi.po index f8457df27..e7f86c0c6 100644 --- a/i18n/vi.po +++ b/i18n/vi.po @@ -1,15 +1,16 @@ # # Translators: -# phil_dhis2, 2023 +# Mai Nguyen , 2022 # Viktor Varland , 2023 -# Mai Nguyen , 2023 +# Philip Larsen Donnelly, 2024 +# Thuy Nguyen , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-01-25T12:05:03.360Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Mai Nguyen , 2023\n" +"Last-Translator: Thuy Nguyen , 2024\n" "Language-Team: Vietnamese (https://app.transifex.com/hisp-uio/teams/100509/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -79,7 +80,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "Lỗi mạng" msgid "Data / Edit calculation" msgstr "" @@ -88,7 +89,7 @@ msgid "Data / New calculation" msgstr "" msgid "Remove item" -msgstr "" +msgstr "Bỏ mặt hàng" msgid "Check formula" msgstr "" @@ -154,6 +155,9 @@ msgstr "" msgid "Data Type" msgstr "Loại dữ liệu" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "" + msgid "All types" msgstr "Các loại" @@ -184,6 +188,9 @@ msgstr "" msgid "No program indicators found" msgstr "" +msgid "No calculations found" +msgstr "" + msgid "No indicators found for \"{{- searchTerm}}\"" msgstr "" @@ -196,6 +203,9 @@ msgstr "" msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "" +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "" + msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "" @@ -375,6 +385,10 @@ msgstr "" msgid "Write an interpretation" msgstr "Viết diễn giải" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" @@ -386,7 +400,7 @@ msgstr "Trả lời" msgid "{{count}} replies" msgid_plural "{{count}} replies" -msgstr[0] "{{đếm}} câu trả lời" +msgstr[0] "{{count}} câu trả lời" msgid "View replies" msgstr "" @@ -397,12 +411,15 @@ msgstr "Không thích" msgid "Like" msgstr "Thích" -msgid "Share" -msgstr "Chia sẻ" - msgid "See interpretation" msgstr "" +msgid "Open in app" +msgstr "" + +msgid "Share" +msgstr "Chia sẻ" + msgid "Manage sharing" msgstr "Quản lý chia sẻ" @@ -632,15 +649,15 @@ msgstr "Chọn năm" msgid "Period" msgstr "Thời điểm" +msgid "Selected Periods" +msgstr "Thời điểm đã chọn" + msgid "Relative periods" msgstr "Thời điểm tương đối" msgid "Fixed periods" msgstr "Thời điểm tĩnh" -msgid "Selected Periods" -msgstr "Thời điểm đã chọn" - msgid "No periods selected" msgstr "Chưa chọn thời điểm" @@ -1142,6 +1159,9 @@ msgstr "phân tán" msgid "Single value" msgstr "Giá trị đơn" +msgid "Outlier table" +msgstr "" + msgid "All charts" msgstr "" diff --git a/i18n/zh.po b/i18n/zh.po index 2f8962ac4..684f61cec 100644 --- a/i18n/zh.po +++ b/i18n/zh.po @@ -1,16 +1,16 @@ # # Translators: # Viktor Varland , 2021 -# phil_dhis2, 2022 # 晓东 林 <13981924470@126.com>, 2023 -# easylin , 2023 +# Philip Larsen Donnelly, 2024 +# easylin , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2024-10-11T12:49:26.846Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: easylin , 2023\n" +"Last-Translator: easylin , 2024\n" "Language-Team: Chinese (https://app.transifex.com/hisp-uio/teams/100509/zh/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -50,7 +50,7 @@ msgstr "已创建 {{time}}" msgid "Viewed {{count}} times" msgid_plural "Viewed {{count}} times" -msgstr[0] "查看了 {{count}} 次" +msgstr[0] "查看了 {{count}} 条" msgid "Notifications" msgstr "通知" @@ -76,6 +76,12 @@ msgstr "关于此行列表" msgid "About this visualization" msgstr "关于此可视化" +msgid "About this event chart" +msgstr "关于该事件图表" + +msgid "About this event report" +msgstr "关于本事件报表" + msgid "This app could not retrieve required data." msgstr "此应用无法检索所需数据。" @@ -124,7 +130,7 @@ msgid "Yes, delete" msgstr "是的,删除" msgid "Totals only" -msgstr "总计" +msgstr "仅总数" msgid "Details only" msgstr "仅详细信息" @@ -139,7 +145,7 @@ msgid "Search by data element name" msgstr "按数据元素名称搜索" msgid "No data elements found for \"{{- searchTerm}}\"" -msgstr "找不到“ {{-searchTerm}}”的数据元素" +msgstr "找不到“ {{- searchTerm}}”的数据元素" msgid "No data elements found" msgstr "找不到数据元素" @@ -155,6 +161,9 @@ msgstr "数学运算符" msgid "Data Type" msgstr "数据类型" +msgid "Only {{dataType}} can be used in {{visType}}" +msgstr "{{dataType}} 只能在 {{visType}} 中使用" + msgid "All types" msgstr "所有类型" @@ -185,20 +194,26 @@ msgstr "找不到事件数据项" msgid "No program indicators found" msgstr "找不到项目指标" +msgid "No calculations found" +msgstr "没有找到计算结果" + msgid "No indicators found for \"{{- searchTerm}}\"" -msgstr "找不到“ {{-searchTerm}}”的指标" +msgstr "找不到“ {{- searchTerm}}”的指标" msgid "No data sets found for \"{{- searchTerm}}\"" -msgstr "找不到“ {{-searchTerm}}”的数据集" +msgstr "找不到“ {{- searchTerm}}”的数据集" msgid "No event data items found for \"{{- searchTerm}}\"" -msgstr "找不到“ {{-searchTerm}}”的事件数据项" +msgstr "找不到“ {{- searchTerm}}”的事件数据项" msgid "No program indicators found for \"{{- searchTerm}}\"" -msgstr "找不到“ {{-searchTerm}}”的计划指标" +msgstr "找不到“ {{- searchTerm}}”的计划指标" + +msgid "No calculations found for \"{{- searchTerm}}\"" +msgstr "找不到“{{- searchTerm}}”的计算" msgid "Nothing found for \"{{- searchTerm}}\"" -msgstr "找不到“ {{-searchTerm}}”" +msgstr "找不到“ {{- searchTerm}}”" msgid "Calculation" msgstr "计算" @@ -360,7 +375,7 @@ msgid "Update" msgstr "更新" msgid "Viewing interpretation: {{- visualisationName}}" -msgstr "查看注释:{{-visualisationName}}" +msgstr "查看注释:{{- visualisationName}}" msgid "Could not load interpretation" msgstr "无法加载解释" @@ -376,6 +391,10 @@ msgstr "隐藏解释" msgid "Write an interpretation" msgstr "书写注释" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "将来查看此解释的其他人可能会看到更多数据。" + msgid "Post interpretation" msgstr "后解释" @@ -398,12 +417,15 @@ msgstr "不喜欢" msgid "Like" msgstr "喜欢" -msgid "Share" -msgstr "分享" - msgid "See interpretation" msgstr "见解释" +msgid "Open in app" +msgstr "在应用程序中打开" + +msgid "Share" +msgstr "分享" + msgid "Manage sharing" msgstr "管理共享" @@ -413,39 +435,6 @@ msgstr "无法更新解释" msgid "Enter interpretation text" msgstr "输入解释文本" -msgid "Bold text" -msgstr "粗体文字" - -msgid "Italic text" -msgstr "斜体文字" - -msgid "Link to a URL" -msgstr "链接到 URL" - -msgid "Mention a user" -msgstr "提及用户" - -msgid "Add emoji" -msgstr "添加表情符号" - -msgid "Preview" -msgstr "预览" - -msgid "Back to write mode" -msgstr "返回写入模式" - -msgid "Too many results. Try refining the search." -msgstr "结果太多。尝试优化搜索。" - -msgid "Search for a user" -msgstr "搜索用户" - -msgid "Searching for \"{{- searchText}}\"" -msgstr "搜索“{{- searchText}}”" - -msgid "No results found" -msgstr "没有结果" - msgid "Not available offline" msgstr "离线不可用" @@ -633,15 +622,15 @@ msgstr "选择年份" msgid "Period" msgstr "期间" +msgid "Selected Periods" +msgstr "选择的期间" + msgid "Relative periods" msgstr "相对期间" msgid "Fixed periods" msgstr "固定期间" -msgid "Selected Periods" -msgstr "选择的期间" - msgid "No periods selected" msgstr "未选择期间" @@ -688,13 +677,13 @@ msgid "Financial year (Start November)" msgstr "财政年(11月始)" msgid "Financial year (Start October)" -msgstr "财务十月" +msgstr "财政年度(10 月开始)" msgid "Financial year (Start July)" -msgstr "财务七月" +msgstr "财政年度(7 月开始)" msgid "Financial year (Start April)" -msgstr "财务四月" +msgstr "财政年度(4 月开始)" msgid "Today" msgstr "今天" @@ -730,16 +719,16 @@ msgid "Last week" msgstr "上周" msgid "Last 4 weeks" -msgstr "最近四周" +msgstr "最近 4 周" msgid "Last 12 weeks" -msgstr "最近12周" +msgstr "最近 12 周" msgid "Last 52 weeks" -msgstr "Last 52 weeks" +msgstr "最近52 周" msgid "Weeks this year" -msgstr "Weeks this year" +msgstr "今年的周" msgid "This bi-week" msgstr "本双周" @@ -760,7 +749,7 @@ msgid "Last 3 months" msgstr "最近3个月" msgid "Last 6 months" -msgstr "Last 6 months" +msgstr "最近 6 个月" msgid "Last 12 months" msgstr "最近12月" @@ -772,13 +761,13 @@ msgid "This bi-month" msgstr "本双月" msgid "Last bi-month" -msgstr "Last bi-month" +msgstr "上两个月" msgid "Last 6 bi-months" -msgstr "Last 6 bi-months" +msgstr "最近 6 个双月" msgid "Bi-months this year" -msgstr "Bi-months this year" +msgstr "今年的双月" msgid "This quarter" msgstr "本季度" @@ -787,7 +776,7 @@ msgid "Last quarter" msgstr "最近一季" msgid "Last 4 quarters" -msgstr "最近四个季度" +msgstr "最近 4 个季度" msgid "Quarters this year" msgstr "今年的季度" @@ -808,7 +797,7 @@ msgid "Last financial year" msgstr "上一财政年" msgid "Last 5 financial years" -msgstr "最近五个财政年" +msgstr "最近 5 个财政年度" msgid "This year" msgstr "今年" @@ -835,20 +824,44 @@ msgid "Months" msgstr "月" msgid "Bi-months" -msgstr "Bi-months" +msgstr "双月" msgid "Quarters" msgstr "四分之一" msgid "Six-months" -msgstr "Six-months" +msgstr "六个月" msgid "Financial Years" -msgstr "Financial Years" +msgstr "财政年度" msgid "Years" msgstr "年" +msgid "Value: {{value}}" +msgstr "值{{value}}" + +msgid "Bold text" +msgstr "粗体文字" + +msgid "Italic text" +msgstr "斜体文字" + +msgid "Link to a URL" +msgstr "链接到 URL" + +msgid "Mention a user" +msgstr "提及用户" + +msgid "Add emoji" +msgstr "添加表情符号" + +msgid "Preview" +msgstr "预览" + +msgid "Back to write mode" +msgstr "返回写入模式" + msgid "Interpretations and details" msgstr "解释和细节" @@ -879,6 +892,18 @@ msgstr "无法加载翻译" msgid "Retry" msgstr "重试" +msgid "Too many results. Try refining the search." +msgstr "结果太多。尝试优化搜索。" + +msgid "Search for a user" +msgstr "搜索用户" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "搜索“{{- searchText}}”" + +msgid "No results found" +msgstr "没有结果" + msgid "Series" msgstr "系列" @@ -1086,6 +1111,9 @@ msgstr "{{thresholdFactor}}×Z分数低" msgid "{{thresholdFactor}} × Z-score high" msgstr "{{thresholdFactor}}×Z分数高" +msgid "Not applicable" +msgstr "不适用" + msgid "Data" msgstr "数据" @@ -1138,11 +1166,14 @@ msgid "Radar" msgstr "雷达图" msgid "Scatter" -msgstr "分散" +msgstr "散点图" msgid "Single value" msgstr "单个值" +msgid "Outlier table" +msgstr "异常值表" + msgid "All charts" msgstr "所有图表" diff --git a/i18n/zh_CN.po b/i18n/zh_CN.po index 1d45656ca..654ffecea 100644 --- a/i18n/zh_CN.po +++ b/i18n/zh_CN.po @@ -1,14 +1,14 @@ # # Translators: -# easylin , 2023 # 晓东 林 <13981924470@126.com>, 2023 +# easylin , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: 晓东 林 <13981924470@126.com>, 2023\n" +"Last-Translator: easylin , 2023\n" "Language-Team: Chinese (China) (https://app.transifex.com/hisp-uio/teams/100509/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -78,7 +78,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "网络错误" msgid "Data / Edit calculation" msgstr "" @@ -374,6 +374,10 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" @@ -596,10 +600,10 @@ msgid_plural "{{count}} groups" msgstr[0] "" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "已选择:{{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "未选择任何内容" msgid "User organisation unit" msgstr "用户所在机构" @@ -611,7 +615,7 @@ msgid "User sub-x2-units" msgstr "二级下属机构" msgid "Select a level" -msgstr "" +msgstr "选择一个等级" msgid "Select a group" msgstr "" diff --git a/package.json b/package.json index eef1e94f0..300a1122c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.0.17", + "version": "26.9.1", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { @@ -20,7 +20,6 @@ }, "scripts": { "build": "d2-app-scripts build", - "postbuild": "yarn build-storybook", "build-storybook": "build-storybook", "start-storybook": "start-storybook --port 5000", "start": "yarn start-storybook", @@ -35,7 +34,7 @@ "@dhis2/cli-app-scripts": "^9.0.1", "@dhis2/cli-style": "^10.4.1", "@dhis2/d2-i18n": "^1.1.0", - "@dhis2/ui": "^8.4.11", + "@dhis2/ui": "^9.4.4", "@sambego/storybook-state": "^2.0.1", "@storybook/addons": "^6.5.16", "@storybook/preset-create-react-app": "^3.1.7", @@ -52,29 +51,32 @@ "peerDependencies": { "@dhis2/app-runtime": "^3", "@dhis2/d2-i18n": "^1.1", - "@dhis2/ui": "^8.2.5", + "@dhis2/ui": "^9.2.0", "prop-types": "^15", "react": "^16.3", "react-dom": "^16.3", "styled-jsx": "^4.0.1" }, "dependencies": { - "@dhis2/d2-ui-rich-text": "^7.4.1", - "@dhis2/multi-calendar-dates": "1.0.0", + "@dhis2/multi-calendar-dates": "^1.2.2", "@dnd-kit/core": "^6.0.7", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", "@react-hook/debounce": "^4.0.0", "classnames": "^2.3.1", - "crypto-js": "^4.1.1", + "crypto-js": "^4.2.0", "d2-utilizr": "^0.2.16", "d3-color": "^1.2.3", "highcharts": "^10.3.3", "lodash": "^4.17.21", + "markdown-it": "^13.0.1", "mathjs": "^9.4.2", "react-beautiful-dnd": "^10.1.1", "resize-observer-polyfill": "^1.5.1" }, + "resolutions": { + "@dhis2/ui": "^9.2.0" + }, "files": [ "build" ] diff --git a/src/__demo__/DimensionsPanel.stories.js b/src/__demo__/DimensionsPanel.stories.js index 6a3fbc6de..71cc1abc6 100644 --- a/src/__demo__/DimensionsPanel.stories.js +++ b/src/__demo__/DimensionsPanel.stories.js @@ -94,6 +94,7 @@ storiesOf('DimensionsPanel', module).add('locked dimension', () => { dimension === DIMENSION_ID_DATA} /> ) diff --git a/src/__demo__/InterpretationsUnit.stories.js b/src/__demo__/InterpretationsUnit.stories.js new file mode 100644 index 000000000..f1c786f57 --- /dev/null +++ b/src/__demo__/InterpretationsUnit.stories.js @@ -0,0 +1,51 @@ +import { CustomDataProvider } from '@dhis2/app-runtime' +import { storiesOf } from '@storybook/react' +import React from 'react' +import { InterpretationsUnit } from '../components/Interpretations/InterpretationsUnit/index.js' + +storiesOf('IntepretationsUnit', module).add('Default', () => { + return ( + + + + ) +}) + +storiesOf('IntepretationsUnit', module).add( + 'With no time dimensions warning', + () => { + return ( + + + + ) + } +) diff --git a/src/__demo__/PivotTable.stories.js b/src/__demo__/PivotTable.stories.js index b4c46f346..93ca49ae9 100644 --- a/src/__demo__/PivotTable.stories.js +++ b/src/__demo__/PivotTable.stories.js @@ -784,6 +784,26 @@ storiesOf('PivotTable', module).add( } ) +storiesOf('PivotTable', module).add( + 'cumulative + empty columns (weekly) - shown', + (_, { pivotTableOptions }) => { + const visualization = { + ...weeklyColumnsVisualization, + ...pivotTableOptions, + hideEmptyColumns: false, + cumulativeValues: true, + } + return ( +
+ +
+ ) + } +) + storiesOf('PivotTable', module).add( 'empty columns (weekly) - hidden', (_, { pivotTableOptions }) => { @@ -803,6 +823,26 @@ storiesOf('PivotTable', module).add( } ) +storiesOf('PivotTable', module).add( + 'cumulative + empty columns (weekly) - hidden', + (_, { pivotTableOptions }) => { + const visualization = { + ...weeklyColumnsVisualization, + ...pivotTableOptions, + hideEmptyColumns: true, + cumulativeValues: true, + } + return ( +
+ +
+ ) + } +) + storiesOf('PivotTable', module).add( 'empty columns + assigned cats (shown)', (_, { pivotTableOptions }) => { @@ -1119,3 +1159,44 @@ storiesOf('PivotTable', module).add('DEGS', (_, { pivotTableOptions }) => { ) }) + +storiesOf('PivotTable', module).add( + 'Truncated header cell', + (_, { pivotTableOptions }) => { + const widths = [250, 200, 500] + const [width, setWidth] = useState(250) + const toggleWidth = () => + setWidth( + (currentWidth) => + widths[widths.indexOf(currentWidth) + 1] ?? widths[0] + ) + const visualization = { + ...narrativeVisualization, + ...visualizationReset, + ...pivotTableOptions, + columns: narrativeVisualization.filters, + filters: narrativeVisualization.columns, + rowTotals: true, + colTotals: true, + } + + const data = { + ...narrativeData, + rows: [narrativeData.rows[0]], + } + + return ( +
+ + +
+ ) + } +) diff --git a/src/__demo__/SingleValue.stories.js b/src/__demo__/SingleValue.stories.js new file mode 100644 index 000000000..c47b82cbd --- /dev/null +++ b/src/__demo__/SingleValue.stories.js @@ -0,0 +1,802 @@ +import { storiesOf } from '@storybook/react' +import React, { useState, useMemo, useRef, useEffect, useCallback } from 'react' +import { createVisualization } from '../index.js' +const constainerStyleBase = { + width: 800, + height: 800, + border: '1px solid magenta', + marginBottom: 14, +} +const innerContainerStyle = { + overflow: 'hidden', + display: 'flex', + justifyContent: 'center', + height: '100%', +} + +const baseDataObj = { + response: { + headers: [ + { + name: 'dx', + column: 'Data', + valueType: 'TEXT', + type: 'java.lang.String', + hidden: false, + meta: true, + }, + { + name: 'value', + column: 'Value', + valueType: 'NUMBER', + type: 'java.lang.Double', + hidden: false, + meta: false, + }, + ], + metaData: { + items: { + 202308: { + uid: '202308', + code: '202308', + name: 'August 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-08-01T00:00:00.000', + endDate: '2023-08-31T00:00:00.000', + }, + 202309: { + uid: '202309', + code: '202309', + name: 'September 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-09-01T00:00:00.000', + endDate: '2023-09-30T00:00:00.000', + }, + 202310: { + uid: '202310', + code: '202310', + name: 'October 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-10-01T00:00:00.000', + endDate: '2023-10-31T00:00:00.000', + }, + 202311: { + uid: '202311', + code: '202311', + name: 'November 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-11-01T00:00:00.000', + endDate: '2023-11-30T00:00:00.000', + }, + 202312: { + uid: '202312', + code: '202312', + name: 'December 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-12-01T00:00:00.000', + endDate: '2023-12-31T00:00:00.000', + }, + 202401: { + uid: '202401', + code: '202401', + name: 'January 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-01-01T00:00:00.000', + endDate: '2024-01-31T00:00:00.000', + }, + 202402: { + uid: '202402', + code: '202402', + name: 'February 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-02-01T00:00:00.000', + endDate: '2024-02-29T00:00:00.000', + }, + 202403: { + uid: '202403', + code: '202403', + name: 'March 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-03-01T00:00:00.000', + endDate: '2024-03-31T00:00:00.000', + }, + 202404: { + uid: '202404', + code: '202404', + name: 'April 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-04-01T00:00:00.000', + endDate: '2024-04-30T00:00:00.000', + }, + 202405: { + uid: '202405', + code: '202405', + name: 'May 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-05-01T00:00:00.000', + endDate: '2024-05-31T00:00:00.000', + }, + 202406: { + uid: '202406', + code: '202406', + name: 'June 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-06-01T00:00:00.000', + endDate: '2024-06-30T00:00:00.000', + }, + 202407: { + uid: '202407', + code: '202407', + name: 'July 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-07-01T00:00:00.000', + endDate: '2024-07-31T00:00:00.000', + }, + ou: { + uid: 'ou', + name: 'Organisation unit', + dimensionType: 'ORGANISATION_UNIT', + }, + O6uvpzGd5pu: { + uid: 'O6uvpzGd5pu', + code: 'OU_264', + name: 'Bo', + dimensionItemType: 'ORGANISATION_UNIT', + valueType: 'TEXT', + totalAggregationType: 'SUM', + }, + LAST_12_MONTHS: { + name: 'Last 12 months', + }, + dx: { + uid: 'dx', + name: 'Data', + dimensionType: 'DATA_X', + }, + pe: { + uid: 'pe', + name: 'Period', + dimensionType: 'PERIOD', + }, + FnYCr2EAzWS: { + uid: 'FnYCr2EAzWS', + code: 'IN_52493', + name: 'BCG Coverage <1y', + legendSet: 'BtxOoQuLyg1', + dimensionItemType: 'INDICATOR', + valueType: 'NUMBER', + totalAggregationType: 'AVERAGE', + indicatorType: { + name: 'Per cent', + displayName: 'Per cent', + factor: 100, + number: false, + }, + }, + }, + dimensions: { + dx: ['FnYCr2EAzWS'], + pe: [ + '202308', + '202309', + '202310', + '202311', + '202312', + '202401', + '202402', + '202403', + '202404', + '202405', + '202406', + '202407', + ], + ou: ['O6uvpzGd5pu'], + co: [], + }, + }, + rowContext: {}, + rows: [['FnYCr2EAzWS', '34.19']], + width: 2, + height: 1, + headerWidth: 2, + }, + headers: [ + { + name: 'dx', + column: 'Data', + valueType: 'TEXT', + type: 'java.lang.String', + hidden: false, + meta: true, + isPrefix: false, + isCollect: false, + index: 0, + }, + { + name: 'value', + column: 'Value', + valueType: 'NUMBER', + type: 'java.lang.Double', + hidden: false, + meta: false, + isPrefix: false, + isCollect: false, + index: 1, + }, + ], + rows: [['FnYCr2EAzWS', '34.19']], + metaData: { + items: { + 202308: { + uid: '202308', + code: '202308', + name: 'August 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-08-01T00:00:00.000', + endDate: '2023-08-31T00:00:00.000', + }, + 202309: { + uid: '202309', + code: '202309', + name: 'September 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-09-01T00:00:00.000', + endDate: '2023-09-30T00:00:00.000', + }, + 202310: { + uid: '202310', + code: '202310', + name: 'October 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-10-01T00:00:00.000', + endDate: '2023-10-31T00:00:00.000', + }, + 202311: { + uid: '202311', + code: '202311', + name: 'November 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-11-01T00:00:00.000', + endDate: '2023-11-30T00:00:00.000', + }, + 202312: { + uid: '202312', + code: '202312', + name: 'December 2023', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2023-12-01T00:00:00.000', + endDate: '2023-12-31T00:00:00.000', + }, + 202401: { + uid: '202401', + code: '202401', + name: 'January 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-01-01T00:00:00.000', + endDate: '2024-01-31T00:00:00.000', + }, + 202402: { + uid: '202402', + code: '202402', + name: 'February 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-02-01T00:00:00.000', + endDate: '2024-02-29T00:00:00.000', + }, + 202403: { + uid: '202403', + code: '202403', + name: 'March 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-03-01T00:00:00.000', + endDate: '2024-03-31T00:00:00.000', + }, + 202404: { + uid: '202404', + code: '202404', + name: 'April 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-04-01T00:00:00.000', + endDate: '2024-04-30T00:00:00.000', + }, + 202405: { + uid: '202405', + code: '202405', + name: 'May 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-05-01T00:00:00.000', + endDate: '2024-05-31T00:00:00.000', + }, + 202406: { + uid: '202406', + code: '202406', + name: 'June 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-06-01T00:00:00.000', + endDate: '2024-06-30T00:00:00.000', + }, + 202407: { + uid: '202407', + code: '202407', + name: 'July 2024', + dimensionItemType: 'PERIOD', + valueType: 'TEXT', + totalAggregationType: 'SUM', + startDate: '2024-07-01T00:00:00.000', + endDate: '2024-07-31T00:00:00.000', + }, + ou: { + uid: 'ou', + name: 'Organisation unit', + dimensionType: 'ORGANISATION_UNIT', + }, + O6uvpzGd5pu: { + uid: 'O6uvpzGd5pu', + code: 'OU_264', + name: 'Bo', + dimensionItemType: 'ORGANISATION_UNIT', + valueType: 'TEXT', + totalAggregationType: 'SUM', + }, + LAST_12_MONTHS: { + name: 'Last 12 months', + }, + dx: { + uid: 'dx', + name: 'Data', + dimensionType: 'DATA_X', + }, + pe: { + uid: 'pe', + name: 'Period', + dimensionType: 'PERIOD', + }, + FnYCr2EAzWS: { + uid: 'FnYCr2EAzWS', + code: 'IN_52493', + name: 'BCG Coverage <1y', + legendSet: 'BtxOoQuLyg1', + dimensionItemType: 'INDICATOR', + valueType: 'NUMBER', + totalAggregationType: 'AVERAGE', + }, + }, + dimensions: { + dx: ['FnYCr2EAzWS'], + pe: [ + '202308', + '202309', + '202310', + '202311', + '202312', + '202401', + '202402', + '202403', + '202404', + '202405', + '202406', + '202407', + ], + ou: ['O6uvpzGd5pu'], + co: [], + }, + }, +} +const numberIndicatorType = { + name: 'Plain', + number: true, +} +const subtextIndicatorType = { + name: 'Custom', + displayName: 'Custom subtext', + number: true, +} +const percentIndicatorType = { + name: 'Per cent', + displayName: 'Per cent', + factor: 100, + number: false, +} +const layout = { + name: 'BCG coverage last 12 months - Bo', + created: '2013-10-16T19:50:52.464', + lastUpdated: '2021-07-06T12:53:57.296', + translations: [], + favorites: [], + lastUpdatedBy: { + id: 'xE7jOejl9FI', + code: null, + name: 'John Traore', + displayName: 'John Traore', + username: 'admin', + }, + regressionType: 'NONE', + displayDensity: 'NORMAL', + fontSize: 'NORMAL', + sortOrder: 0, + topLimit: 0, + hideEmptyRows: false, + showHierarchy: false, + completedOnly: false, + skipRounding: false, + dataDimensionItems: [ + { + indicator: { + name: 'BCG Coverage <1y', + dimensionItemType: 'INDICATOR', + displayName: 'BCG Coverage <1y', + access: { + manage: true, + externalize: true, + write: true, + read: true, + update: true, + delete: true, + }, + displayShortName: 'BCG Coverage <1y', + id: 'FnYCr2EAzWS', + }, + dataDimensionItemType: 'INDICATOR', + }, + ], + subscribers: [], + aggregationType: 'DEFAULT', + digitGroupSeparator: 'SPACE', + hideEmptyRowItems: 'NONE', + noSpaceBetweenColumns: false, + cumulativeValues: false, + percentStackedValues: false, + showData: true, + colTotals: false, + rowTotals: false, + rowSubTotals: false, + colSubTotals: false, + hideTitle: false, + hideSubtitle: false, + showDimensionLabels: false, + interpretations: [], + type: 'SINGLE_VALUE', + reportingParams: { + grandParentOrganisationUnit: false, + parentOrganisationUnit: false, + organisationUnit: false, + reportingPeriod: false, + }, + numberType: 'VALUE', + fontStyle: {}, + colorSet: 'DEFAULT', + yearlySeries: [], + regression: false, + hideEmptyColumns: false, + fixColumnHeaders: false, + fixRowHeaders: false, + filters: [ + { + items: [ + { + name: 'Bo', + dimensionItemType: 'ORGANISATION_UNIT', + displayShortName: 'Bo', + displayName: 'Bo', + access: { + manage: true, + externalize: true, + write: true, + read: true, + update: true, + delete: true, + }, + id: 'O6uvpzGd5pu', + }, + ], + dimension: 'ou', + }, + { + items: [ + { + name: 'LAST_12_MONTHS', + dimensionItemType: 'PERIOD', + displayShortName: 'LAST_12_MONTHS', + displayName: 'LAST_12_MONTHS', + access: { + manage: true, + externalize: true, + write: true, + read: true, + update: true, + delete: true, + }, + id: 'LAST_12_MONTHS', + }, + ], + dimension: 'pe', + }, + ], + parentGraphMap: { + O6uvpzGd5pu: 'ImspTQPwCqd', + }, + columns: [ + { + items: [ + { + name: 'BCG Coverage <1y', + dimensionItemType: 'INDICATOR', + displayName: 'BCG Coverage <1y', + access: { + manage: true, + externalize: true, + write: true, + read: true, + update: true, + delete: true, + }, + displayShortName: 'BCG Coverage <1y', + id: 'FnYCr2EAzWS', + }, + ], + dimension: 'dx', + }, + ], + rows: [], + subscribed: false, + displayName: 'BCG coverage last 12 months - Bo', + access: { + manage: true, + externalize: true, + write: true, + read: true, + update: true, + delete: true, + }, + favorite: false, + user: { + id: 'xE7jOejl9FI', + code: null, + name: 'John Traore', + displayName: 'John Traore', + username: 'admin', + }, + href: 'http://localhost:8080/api/41/visualizations/mYMnDl5Z9oD', + id: 'mYMnDl5Z9oD', + legend: { + showKey: false, + }, + sorting: [], + series: [], + icons: [], + seriesKey: { + hidden: false, + }, + axes: [], +} +const icon = + '' + +const baseExtraOptions = { + dashboard: true, + animation: 200, + legendSets: [], + icon, +} + +const indicatorTypes = ['plain', 'percent', 'subtext'] + +storiesOf('SingleValue', module).add('default', () => { + const newChartRef = useRef(null) + const newContainerRef = useRef(null) + const [dashboard, setDashboard] = useState(false) + const [showIcon, setShowIcon] = useState(true) + const [indicatorType, setIndicatorType] = useState('plain') + const [exportAsPdf, setExportAsPdf] = useState(true) + const [width, setWidth] = useState(constainerStyleBase.width) + const [height, setHeight] = useState(constainerStyleBase.height) + const containerStyle = useMemo( + () => ({ + ...constainerStyleBase, + width, + height, + }), + [width, height] + ) + useEffect(() => { + if (newContainerRef.current) { + requestAnimationFrame(() => { + const extraOptions = { + ...baseExtraOptions, + dashboard, + icon: showIcon ? icon : undefined, + } + const dataObj = { ...baseDataObj } + + if (indicatorType === 'plain') { + dataObj.metaData.items.FnYCr2EAzWS.indicatorType = + numberIndicatorType + } + if (indicatorType === 'percent') { + dataObj.metaData.items.FnYCr2EAzWS.indicatorType = + percentIndicatorType + } + if (indicatorType === 'subtext') { + dataObj.metaData.items.FnYCr2EAzWS.indicatorType = + subtextIndicatorType + } + const newVisualization = createVisualization( + [dataObj], + layout, + newContainerRef.current, + extraOptions, + undefined, + undefined, + 'highcharts' + ) + newChartRef.current = newVisualization.visualization + }) + } + }, [containerStyle, dashboard, showIcon, indicatorType]) + const downloadOffline = useCallback(() => { + if (newChartRef.current) { + const currentBackgroundColor = + newChartRef.current.userOptions.chart.backgroundColor + + newChartRef.current.update({ + exporting: { + chartOptions: { + isPdfExport: exportAsPdf, + }, + }, + }) + newChartRef.current.exportChartLocal( + { + sourceHeight: 768, + sourceWidth: 1024, + scale: 1, + fallbackToExportServer: false, + filename: 'testOfflineDownload', + showExportInProgress: true, + type: exportAsPdf ? 'application/pdf' : 'image/png', + }, + { + chart: { + backgroundColor: + currentBackgroundColor === 'transparent' + ? '#ffffff' + : currentBackgroundColor, + }, + } + ) + } + }, [exportAsPdf]) + + return ( + <> +
+
+ + + setWidth(parseInt(event.target.value)) + } + value={width.toString()} + /> +
+
+ + + setHeight(parseInt(event.target.value)) + } + value={height.toString()} + /> +
+ + + + + +
+
+
+
+
+
+ + ) +}) diff --git a/src/__fixtures__/fixtures.js b/src/__fixtures__/fixtures.js index 4fab49688..b900ea724 100644 --- a/src/__fixtures__/fixtures.js +++ b/src/__fixtures__/fixtures.js @@ -114,6 +114,10 @@ export default (function x() { require('./json/api/analytics/enrollments.json') ) + addFixture( + '/api/analytics/outlierDetection', + require('./json/api/analytics/outlierDetection.json') + ) return { get: getFixture, add: addFixture, diff --git a/src/__fixtures__/json/api/analytics/outlierDetection.json b/src/__fixtures__/json/api/analytics/outlierDetection.json new file mode 100644 index 000000000..014ac1183 --- /dev/null +++ b/src/__fixtures__/json/api/analytics/outlierDetection.json @@ -0,0 +1,213 @@ +{ + "headers": [ + { + "name": "dxname", + "column": "Data name", + "valueType": "TEXT", + "type": "java.lang.String", + "hidden": false, + "meta": false + }, + { + "name": "ouname", + "column": "Organisation unit name", + "valueType": "TEXT", + "type": "java.lang.String", + "hidden": false, + "meta": false + }, + { + "name": "value", + "column": "Value", + "valueType": "NUMBER", + "type": "java.lang.Double", + "hidden": false, + "meta": false + }, + { + "name": "absdev", + "column": "Absolute deviation", + "valueType": "NUMBER", + "type": "java.lang.Double", + "hidden": false, + "meta": false + }, + { + "name": "modifiedzscore", + "column": "Modified zScore", + "valueType": "NUMBER", + "type": "java.lang.Double", + "hidden": false, + "meta": false + }, + { + "name": "median", + "column": "Median", + "valueType": "NUMBER", + "type": "java.lang.Double", + "hidden": false, + "meta": false + }, + { + "name": "lowerbound", + "column": "Lower boundary", + "valueType": "NUMBER", + "type": "java.lang.Double", + "hidden": false, + "meta": false + }, + { + "name": "upperbound", + "column": "Upper boundary", + "valueType": "NUMBER", + "type": "java.lang.Double", + "hidden": false, + "meta": false + } + ], + "metaData": { + "maxResults": 100, + "count": 13, + "orderBy": "mean_abs_dev", + "threshold": 3.0, + "algorithm": "MOD_Z_SCORE" + }, + "rowContext": { + + }, + "rows": [ + [ + "ANC 2nd visit", + "UMC (Urban Centre) Hospital", + "1669.0", + "920.0", + "3.902767295597484", + "749.0", + "-290.93013894085743", + "1788.9301389408574" + ], + [ + "ANC 1st visit", + "Charlotte CHP", + "49.0", + "39.0", + "7.515857142857143", + "10.0", + "-23.948490393535913", + "43.94849039353591" + ], + [ + "ANC 2nd visit", + "Charlotte CHP", + "40.0", + "33.0", + "22.258499999999998", + "7.0", + "-30.86489139031037", + "44.86489139031037" + ], + [ + "ANC 2nd visit", + "Wilberforce CHC", + "56.0", + "24.5", + "3.004590909090909", + "31.5", + "-1.3890179239210454", + "64.38901792392105" + ], + [ + "ANC 1st visit", + "Deep Eye water MCHP", + "40.0", + "16.0", + "3.5973333333333333", + "24.0", + "4.850913859925324", + "43.14908614007467" + ], + [ + "ANC 2nd visit", + "Lion for Lion Clinic", + "30.0", + "16.0", + "3.5973333333333333", + "14.0", + "-5.620896815302167", + "33.62089681530217" + ], + [ + "ANC 2nd visit", + "Deep Eye water MCHP", + "33.0", + "14.5", + "3.9121", + "18.5", + "-3.4245866551686603", + "40.42458665516866" + ], + [ + "ANC 2nd visit", + "Blessed Mokaka East Clinic", + "2.0", + "13.0", + "4.38425", + "15.0", + "-3.417043736713012", + "33.41704373671301" + ], + [ + "ANC 2nd visit", + "Malambay CHP", + "15.0", + "12.0", + "5.396", + "3.0", + "-13.770509831248425", + "19.770509831248425" + ], + [ + "ANC 2nd visit", + "Wellbody MCHP", + "20.0", + "10.0", + "3.3725", + "10.0", + "-10.999999999999996", + "30.999999999999996" + ], + [ + "ANC 1st visit", + "Blessed Mokaka East Clinic", + "26.0", + "10.0", + "4.496666666666667", + "16.0", + "1.6734512181055958", + "30.326548781894402" + ], + [ + "ANC 1st visit", + "Murray Town CHC", + "18.0", + "9.0", + "6.0705", + "9.0", + "-2.43571205496543", + "20.43571205496543" + ], + [ + "ANC 2nd visit", + "Thompson Bay MCHP", + "11.0", + "6.0", + "4.047", + "5.0", + "-2.038266127580332", + "12.038266127580332" + ] + ], + "headerWidth": 8, + "width": 8, + "height": 13 +} diff --git a/src/api/analytics/Analytics.js b/src/api/analytics/Analytics.js index d08872524..0e0ddba2f 100644 --- a/src/api/analytics/Analytics.js +++ b/src/api/analytics/Analytics.js @@ -6,12 +6,15 @@ import AnalyticsEnrollments from './AnalyticsEnrollments.js' import AnalyticsEvents from './AnalyticsEvents.js' import AnalyticsRequest from './AnalyticsRequest.js' import AnalyticsResponse from './AnalyticsResponse.js' +import AnalyticsTrackedEntities from './AnalyticsTrackedEntities.js' /** * @description * Analytics class used to request analytics data from Web API. * * @requires analytics.AnalyticsAggregate + * @requires analytics.AnalyticsTrackedEntities + * @requires analytics.AnalyticsEnrollments * @requires analytics.AnalyticsEvents * @requires analytics.AnalyticsRequest * @requires analytics.AnalyticsResponse @@ -31,13 +34,22 @@ import AnalyticsResponse from './AnalyticsResponse.js' class Analytics { /** * @param {!module:analytics.AnalyticsAggregate} analyticsAggregate The AnalyticsAggregate instance + * @param {!module:analytics.AnalyticsTrackedEntities} analyticsTrackedEntities The AnalyticsTrackedEntities instance * @param {!module:analytics.AnalyticsEnrollments} analyticsEnrollments The AnalyticsEnrollments instance * @param {!module:analytics.AnalyticsEvents} analyticsEvents The AnalyticsEvents instance * @param {!module:analytics.AnalyticsRequest} analyticsRequest The AnalyticsRequest class * @param {!module:analytics.AnalyticsResponse} analyticsResponse The AnalyticsResponse class */ - constructor({ aggregate, enrollments, events, request, response }) { + constructor({ + aggregate, + trackedEntities, + enrollments, + events, + request, + response, + }) { this.aggregate = aggregate + this.trackedEntities = trackedEntities this.enrollments = enrollments this.events = events this.request = request @@ -60,6 +72,7 @@ class Analytics { if (!Analytics.getAnalytics.analytics) { Analytics.getAnalytics.analytics = new Analytics({ aggregate: new AnalyticsAggregate(dataEngine), + trackedEntities: new AnalyticsTrackedEntities(dataEngine), enrollments: new AnalyticsEnrollments(dataEngine), events: new AnalyticsEvents(dataEngine), request: AnalyticsRequest, diff --git a/src/api/analytics/AnalyticsAggregate.js b/src/api/analytics/AnalyticsAggregate.js index 88adebc81..93de9f8b4 100644 --- a/src/api/analytics/AnalyticsAggregate.js +++ b/src/api/analytics/AnalyticsAggregate.js @@ -68,12 +68,38 @@ class AnalyticsAggregate extends AnalyticsBase { * .withStartDate('2017-10-01') * .withEndDate('2017-10-31'); * - * analytics.aggregate.getDebugSql(req); + * analytics.aggregate.getDebugSql(req) * .then(console.log); */ getDebugSql(req) { return this.fetch(req.withPath('debug/sql')) } + + /** + * @param {!AnalyticsRequest} req Request object + * + * @returns {Promise} Promise that resolves with the SQL statement used to query the database. + * + * @example + * const req = new analytics.request() + * .withParameters({ + * dx: 'fbfJHSPpUQD,cYeuwXTCPkU', + * pe: 'THIS_YEAR', + * ou: 'USER_ORGUNIT,USER_ORGUNIT_CHILDREN', + * headers: 'dxname,pename,ouname,value,absdev,modifiedzscore,median,lowerbound,upperbound', + * algorithm: 'MODIFIED_Z_SCORE', + * maxResults: 100, + * threshold: 3, + orderBy: 'value', + sortOrder: 'desc', + * }); + * + * analytics.aggregate.getOutliersData(req) + * .then(console.log); + */ + getOutliersData(req) { + return this.fetch(req.withPath('outlierDetection')) + } } export default AnalyticsAggregate diff --git a/src/api/analytics/AnalyticsBase.js b/src/api/analytics/AnalyticsBase.js index 41b2fcf62..3bd153818 100644 --- a/src/api/analytics/AnalyticsBase.js +++ b/src/api/analytics/AnalyticsBase.js @@ -1,27 +1,38 @@ import sortBy from 'lodash/sortBy' import AnalyticsRequest from './AnalyticsRequest.js' +import { formatRequestPath } from './utils.js' const analyticsQuery = { resource: 'analytics', - id: ({ path, program }) => { - return [path, program].filter(Boolean).join('/') - }, + id: ({ path, program, trackedEntityType }) => + formatRequestPath({ + path, + program, + trackedEntityType, + }), params: ({ dimensions, filters, parameters }) => ({ - dimension: dimensions, - filter: filters, + dimension: dimensions.length ? dimensions : undefined, + filter: filters.length ? filters : undefined, ...parameters, }), } const analyticsDataQuery = { resource: 'analytics', - id: ({ path, program }) => { - return [path, program].filter(Boolean).join('/') - }, + id: ({ path, program, trackedEntityType }) => + formatRequestPath({ + path, + program, + trackedEntityType, + }), params: ({ dimensions, filters, parameters }) => { return { - dimension: dimensions, - filter: filters, + dimension: dimensions.length + ? generateDimensionStrings(dimensions, { sorted: true }) + : undefined, + filter: filters.length + ? generateDimensionStrings(filters, { sorted: true }) + : undefined, ...parameters, skipMeta: true, skipData: false, @@ -31,12 +42,17 @@ const analyticsDataQuery = { const analyticsMetaDataQuery = { resource: 'analytics', - id: ({ path, program }) => { - return [path, program].filter(Boolean).join('/') - }, + id: ({ path, program, trackedEntityType }) => + formatRequestPath({ + path, + program, + trackedEntityType, + }), params: ({ dimensions, filters, parameters }) => ({ - dimension: dimensions, - filter: filters, + dimension: dimensions.length + ? generateDimensionStrings(dimensions) + : undefined, + filter: filters.length ? generateDimensionStrings(filters) : undefined, ...parameters, skipMeta: false, skipData: true, @@ -44,15 +60,12 @@ const analyticsMetaDataQuery = { }), } -const generateDimensionStrings = (dimensions = [], options) => { - if (options && options.sorted) { - dimensions = sortBy(dimensions, 'dimension') - } - - return dimensions.map(({ dimension, items }) => { +export const generateDimensionStrings = (dimensions = [], options) => { + const sortedDimensions = sortBy(dimensions, 'dimension') + return sortedDimensions.map(({ dimension, items }) => { if (Array.isArray(items) && items.length) { if (options && options.sorted) { - items.sort() + items = items.slice().sort() } return `${dimension}:${items.join(';')}` @@ -120,8 +133,9 @@ class AnalyticsBase { variables: { path: req.path, program: req.program, - dimensions: generateDimensionStrings(req.dimensions), - filters: generateDimensionStrings(req.filters), + trackedEntityType: req.trackedEntityType, + dimensions: req.dimensions, + filters: req.filters, parameters: req.parameters, dataParams: dataReq.parameters, metaDataParams: metaDataReq.parameters, @@ -164,6 +178,7 @@ class AnalyticsBase { variables: { path: req.path, program: req.program, + trackedEntityType: req.trackedEntityType, dimensions: generateDimensionStrings( req.dimensions, options diff --git a/src/api/analytics/AnalyticsRequest.js b/src/api/analytics/AnalyticsRequest.js index 5b7d4b70e..b3ff28ce4 100644 --- a/src/api/analytics/AnalyticsRequest.js +++ b/src/api/analytics/AnalyticsRequest.js @@ -4,6 +4,7 @@ import AnalyticsRequestBase from './AnalyticsRequestBase.js' import AnalyticsRequestDimensionsMixin from './AnalyticsRequestDimensionsMixin.js' import AnalyticsRequestFiltersMixin from './AnalyticsRequestFiltersMixin.js' import AnalyticsRequestPropertiesMixin from './AnalyticsRequestPropertiesMixin.js' +import { formatDimension } from './utils.js' /** * @description @@ -45,6 +46,8 @@ class AnalyticsRequest extends AnalyticsRequestDimensionsMixin( fromVisualization(visualization, passFilterAsDimension = false) { let request = this + const outputType = visualization.outputType + // extract dimensions from visualization const columns = visualization.columns || [] const rows = visualization.rows || [] @@ -56,23 +59,31 @@ class AnalyticsRequest extends AnalyticsRequestDimensionsMixin( dimension += `-${d.legendSet.id}` } - if (d.programStage?.id) { - dimension = `${d.programStage.id}.${dimension}` - } - if (d.filter) { dimension += `:${d.filter}` } + const programStageId = d.programStage?.id + if (d.repetition?.indexes?.length) { d.repetition.indexes.forEach((index) => { request = request.addDimension( - dimension.replace(/\./, `[${index}].`) + formatDimension({ + programId: d.program?.id, + programStageId: `${programStageId}[${index}]`, + dimension, + outputType, + }) ) }) } else { request = request.addDimension( - dimension, + formatDimension({ + programId: d.program?.id, + programStageId, + dimension, + outputType, + }), d.items?.map((item) => item.id) ) } @@ -91,23 +102,33 @@ class AnalyticsRequest extends AnalyticsRequestDimensionsMixin( f.items?.map((item) => item.id) ) } else { - let filterString = f.programStage?.id - ? `${f.programStage.id}.${f.dimension}` - : f.dimension + let filterString = f.dimension if (f.filter) { filterString += `:${f.filter}` } + const programStageId = f.programStage?.id + if (f.repetition?.indexes?.length) { f.repetition.indexes.forEach((index) => { request = request.addFilter( - filterString.replace(/\./, `[${index}].`) + formatDimension({ + programId: f.program?.id, + programStageId: `${programStageId}[${index}]`, + dimension: filterString, + outputType, + }) ) }) } else { request = request.addFilter( - filterString, + formatDimension({ + programId: f.program?.id, + programStageId, + dimension: filterString, + outputType, + }), f.items?.map((item) => item.id) ) } diff --git a/src/api/analytics/AnalyticsRequestBase.js b/src/api/analytics/AnalyticsRequestBase.js index 780d3e6cb..ba317ae38 100644 --- a/src/api/analytics/AnalyticsRequestBase.js +++ b/src/api/analytics/AnalyticsRequestBase.js @@ -17,6 +17,7 @@ class AnalyticsRequestBase { format = 'json', path, program, + trackedEntityType, dimensions = [], filters = [], parameters = {}, @@ -25,6 +26,7 @@ class AnalyticsRequestBase { this.format = format.toLowerCase() this.path = path this.program = program + this.trackedEntityType = trackedEntityType this.dimensions = dimensions this.filters = filters @@ -46,14 +48,14 @@ class AnalyticsRequestBase { // at least 1 dimension is required let dimensions = this.dimensions - if (options && options.sorted) { + if (dimensions.length && options?.sorted) { dimensions = sortBy(dimensions, 'dimension') } const encodedDimensions = dimensions.map(({ dimension, items }) => { if (Array.isArray(items) && items.length) { const encodedItems = items.map(customEncodeURIComponent) - if (options && options.sorted) { + if (options?.sorted) { encodedItems.sort() } @@ -63,13 +65,22 @@ class AnalyticsRequestBase { return dimension }) - const endPoint = [this.endPoint, this.path, this.program] - .filter((e) => !!e) + const endPoint = [ + this.endPoint, + this.path, + this.program, + this.trackedEntityType, + ] + .filter(Boolean) .join('/') - return `${endPoint}.${this.format}?dimension=${encodedDimensions.join( - '&dimension=' - )}` + let url = `${endPoint}.${this.format}` + + if (encodedDimensions.length) { + url += `?dimension=${encodedDimensions.join('&dimension=')}` + } + + return url } /** @@ -88,14 +99,14 @@ class AnalyticsRequestBase { buildQuery(options) { let filters = this.filters - if (options && options.sorted) { + if (filters.length && options?.sorted) { filters = sortBy(filters, 'dimension') } const encodedFilters = filters.map(({ dimension, items }) => { if (Array.isArray(items) && items.length) { const encodedItems = items.map(customEncodeURIComponent) - if (options && options.sorted) { + if (options?.sorted) { encodedItems.sort() } diff --git a/src/api/analytics/AnalyticsRequestPropertiesMixin.js b/src/api/analytics/AnalyticsRequestPropertiesMixin.js index 6dd0f8cec..7d5ff0531 100644 --- a/src/api/analytics/AnalyticsRequestPropertiesMixin.js +++ b/src/api/analytics/AnalyticsRequestPropertiesMixin.js @@ -514,6 +514,26 @@ const AnalyticsRequestPropertiesMixin = (base) => return new AnalyticsRequest(this) } + /** + * Sets the tracked entity type for the request. + * It appends the tracked entity type id to the request's path. + * + * @param {!String} trackedEntityType The tracked entity type id + * + * @returns {AnalyticsRequest} A new instance of the class for chaining purposes + * + * @example + * const req = new analytics.request() + * .withTrackedEntityType('nEenWmSyUEp'); + */ + withTrackedEntityType(trackedEntityType) { + if (trackedEntityType) { + this.trackedEntityType = trackedEntityType + } + + return new AnalyticsRequest(this) + } + /** * Sets the program for the request. * It appends the program id to the request's path. diff --git a/src/api/analytics/AnalyticsResponse.js b/src/api/analytics/AnalyticsResponse.js index a7bcd8014..525393de6 100644 --- a/src/api/analytics/AnalyticsResponse.js +++ b/src/api/analytics/AnalyticsResponse.js @@ -81,7 +81,8 @@ class AnalyticsResponse { } extractHeaders() { - const dimensions = this.response.metaData.dimensions + // some endpoints (ie. outlierDetection) don't return dimensions in metaData + const dimensions = this.response.metaData.dimensions || {} const headers = this.response.headers || [] return headers.map( @@ -125,59 +126,61 @@ class AnalyticsResponse { const { dimensions, items } = metaData - // populate metaData dimensions and items - this.headers - .filter( - (header) => - !DEFAULT_COLLECT_IGNORE_HEADERS.includes(header.name) - ) - .forEach((header) => { - let ids - - // collect row values - if (header.isCollect) { - ids = this.getSortedUniqueRowIdStringsByHeader(header) - dimensions[header.name] = ids - } else { - ids = dimensions[header.name] - } + // some endpoints (ie. outlierDetection) don't return dimensions or items + if (dimensions && items) { + this.headers + .filter( + (header) => + !DEFAULT_COLLECT_IGNORE_HEADERS.includes(header.name) + ) + .forEach((header) => { + let ids + + // collect row values + if (header.isCollect) { + ids = this.getSortedUniqueRowIdStringsByHeader(header) + dimensions[header.name] = ids + } else { + ids = dimensions[header.name] + } - if (header.isPrefix) { - // create prefixed dimensions array - dimensions[header.name] = ids.map((id) => - getPrefixedId(id, header.name) - ) + if (header.isPrefix) { + // create prefixed dimensions array + dimensions[header.name] = ids.map((id) => + getPrefixedId(id, header.name) + ) - // create items - dimensions[header.name].forEach((prefixedId, index) => { - const id = ids[index] - const valueType = header.valueType + // create items + dimensions[header.name].forEach((prefixedId, index) => { + const id = ids[index] + const valueType = header.valueType - const name = getNameByIdsByValueType(id, valueType) + const name = getNameByIdsByValueType(id, valueType) - items[prefixedId] = { name } - }) - } - }) + items[prefixedId] = { name } + }) + } + }) - // for events, add items from 'ouname' - if (this.hasHeader(OUNAME) && this.hasHeader(OU)) { - const ouNameHeaderIndex = this.getHeader(OUNAME).getIndex() - const ouHeaderIndex = this.getHeader(OU).getIndex() - let ouId - let ouName + // for events, add items from 'ouname' + if (this.hasHeader(OUNAME) && this.hasHeader(OU)) { + const ouNameHeaderIndex = this.getHeader(OUNAME).getIndex() + const ouHeaderIndex = this.getHeader(OU).getIndex() + let ouId + let ouName - this.rows.forEach((row) => { - ouId = row[ouHeaderIndex] + this.rows.forEach((row) => { + ouId = row[ouHeaderIndex] - if (items[ouId] === undefined) { - ouName = row[ouNameHeaderIndex] + if (items[ouId] === undefined) { + ouName = row[ouNameHeaderIndex] - items[ouId] = { - name: ouName, + items[ouId] = { + name: ouName, + } } - } - }) + }) + } } return metaData diff --git a/src/api/analytics/AnalyticsTrackedEntities.js b/src/api/analytics/AnalyticsTrackedEntities.js new file mode 100644 index 000000000..3756be0e8 --- /dev/null +++ b/src/api/analytics/AnalyticsTrackedEntities.js @@ -0,0 +1,25 @@ +import AnalyticsBase from './AnalyticsBase.js' + +/** + * @extends module:analytics.AnalyticsBase + * + * @description + * Analytics tracked entities class used to request analytics tracked entities data from Web API. + * + * @memberof module:analytics + */ +class AnalyticsTrackedEntities extends AnalyticsBase { + /** + * @param {!AnalyticsRequest} req Request object + * + * @returns {Promise} Promise that resolves with the analytics query data from the api. + * + * @example + // TODO: provide working example + */ + getQuery(req) { + return this.fetch(req.withPath('trackedEntities/query')) + } +} + +export default AnalyticsTrackedEntities diff --git a/src/api/analytics/__tests__/Analytics.spec.js b/src/api/analytics/__tests__/Analytics.spec.js index 4add9c1b1..17d88344c 100644 --- a/src/api/analytics/__tests__/Analytics.spec.js +++ b/src/api/analytics/__tests__/Analytics.spec.js @@ -1,5 +1,6 @@ import Analytics from '../Analytics.js' import AnalyticsAggregate from '../AnalyticsAggregate.js' +import AnalyticsEnrollments from '../AnalyticsEnrollments.js' import AnalyticsEvents from '../AnalyticsEvents.js' import AnalyticsRequest from '../AnalyticsRequest.js' @@ -9,6 +10,7 @@ describe('Analytics', () => { beforeEach(() => { analytics = new Analytics({ aggregate: new AnalyticsAggregate(), + enrollments: new AnalyticsEnrollments(), events: new AnalyticsEvents(), request: AnalyticsRequest, }) @@ -26,6 +28,10 @@ describe('Analytics', () => { expect(analytics.aggregate).toBeInstanceOf(AnalyticsAggregate) }) + it('should contain an instance of AnalyticsEnrollments', () => { + expect(analytics.enrollments).toBeInstanceOf(AnalyticsEnrollments) + }) + it('should contain an instance of AnalyticsEvents', () => { expect(analytics.events).toBeInstanceOf(AnalyticsEvents) }) diff --git a/src/api/analytics/__tests__/AnalyticsAggregate.spec.js b/src/api/analytics/__tests__/AnalyticsAggregate.spec.js index f7fecba11..4a5d40d54 100644 --- a/src/api/analytics/__tests__/AnalyticsAggregate.spec.js +++ b/src/api/analytics/__tests__/AnalyticsAggregate.spec.js @@ -133,4 +133,44 @@ describe('Analytics.aggregate', () => { expect(data.height).toEqual(0) })) }) + + describe('.getOutliersData', () => { + beforeEach(() => { + aggregate = new AnalyticsAggregate(new DataEngineMock()) + + request = new AnalyticsRequest() + + request.withParameters({ + dx: 'fbfJHSPpUQD,cYeuwXTCPkU', + pe: 'THIS_YEAR', + ou: 'at6UHUQatSo', + headers: + 'dxname,pename,ouname,value,absdev,modifiedzscore,median,lowerbound,upperbound', + algorithm: 'MOD_Z_SCORE', + maxResults: 100, + threshold: 3, + }) + + fixture = fixtures.get('/api/analytics/outlierDetection') + + dataEngineMock.query.mockReturnValue( + Promise.resolve({ data: fixture }) + ) + }) + + it('should be a function', () => { + expect(aggregate.getOutliersData).toBeInstanceOf(Function) + }) + + it('should resolve a promise with data', () => + aggregate.getOutliersData(request).then((data) => { + expect(data.metaData.items).toEqual(fixture.metaData.items) + expect(data.metaData.dimensions).toEqual( + fixture.metaData.dimensions + ) + expect(data.headers).toEqual(fixture.headers) + expect(data.width).toEqual(8) + expect(data.height).toEqual(13) + })) + }) }) diff --git a/src/api/analytics/__tests__/AnalyticsBase.spec.js b/src/api/analytics/__tests__/AnalyticsBase.spec.js index 729eebdb7..9bc51eae6 100644 --- a/src/api/analytics/__tests__/AnalyticsBase.spec.js +++ b/src/api/analytics/__tests__/AnalyticsBase.spec.js @@ -1,4 +1,4 @@ -import AnalyticsBase from '../AnalyticsBase.js' +import AnalyticsBase, { generateDimensionStrings } from '../AnalyticsBase.js' let base @@ -19,3 +19,36 @@ describe('constructor', () => { expect(base.dataEngine).toBe(dataEngineMock) }) }) + +describe('generateDimensionString', () => { + const tests = [ + { + input: [ + { + dimension: 'dim2', + items: ['item2', 'item1'], + }, + { + dimension: 'dim1', + items: ['item1'], + }, + ], + output: ['dim1:item1', 'dim2:item2;item1'], + outputSorted: ['dim1:item1', 'dim2:item1;item2'], + }, + ] + + it('should return dimension strings correctly formatted', () => { + tests.forEach(({ input, output }) => { + expect(generateDimensionStrings(input)).toEqual(output) + }) + }) + + it('should return dimension strings correctly formatted and sorted', () => { + tests.forEach(({ input, outputSorted }) => { + expect(generateDimensionStrings(input, { sorted: true })).toEqual( + outputSorted + ) + }) + }) +}) diff --git a/src/api/analytics/utils.js b/src/api/analytics/utils.js index bf766d69c..bb15681d2 100644 --- a/src/api/analytics/utils.js +++ b/src/api/analytics/utils.js @@ -7,3 +7,20 @@ const whitelistRegExp = new RegExp(`(?:${whitelistURICodes.join('|')})`, 'g') export const customEncodeURIComponent = (uri) => encodeURIComponent(uri).replace(whitelistRegExp, decodeURIComponent) + +export const formatRequestPath = ({ path, program, trackedEntityType }) => + [path, program, trackedEntityType].filter(Boolean).join('/') + +export const formatDimension = ({ + outputType, + programId, + programStageId, + dimension, +}) => + [ + outputType === 'TRACKED_ENTITY_INSTANCE' ? programId : undefined, + programStageId, + dimension, + ] + .filter(Boolean) + .join('.') diff --git a/src/api/expression.js b/src/api/expression.js index 2b7e85bb6..64bb61c30 100644 --- a/src/api/expression.js +++ b/src/api/expression.js @@ -11,11 +11,14 @@ export const createCalculationMutation = { } export const updateCalculationMutation = { - type: 'update', + type: 'json-patch', resource: 'expressionDimensionItems', - partial: true, id: ({ id }) => id, - data: ({ name, expression }) => ({ name, shortName: name, expression }), + data: ({ name, expression }) => [ + { op: 'add', path: '/name', value: name }, + { op: 'add', path: '/shortName', value: name }, + { op: 'add', path: '/expression', value: expression }, + ], } export const deleteCalculationMutation = { diff --git a/src/assets/DynamicDimensionIcon.js b/src/assets/DynamicDimensionIcon.js index 83d6c678d..8fbeb84ab 100644 --- a/src/assets/DynamicDimensionIcon.js +++ b/src/assets/DynamicDimensionIcon.js @@ -3,49 +3,24 @@ import React from 'react' const DynamicDimensionIcon = () => { return ( - - - - - - - - - - - - - + + ) } diff --git a/src/components/AboutAOUnit/AboutAOUnit.js b/src/components/AboutAOUnit/AboutAOUnit.js index 0fb7fb78e..1e2d77ab1 100644 --- a/src/components/AboutAOUnit/AboutAOUnit.js +++ b/src/components/AboutAOUnit/AboutAOUnit.js @@ -1,6 +1,9 @@ -import { useDataQuery, useDataMutation } from '@dhis2/app-runtime' +import { + useDataQuery, + useDataMutation, + useTimeZoneConversion, +} from '@dhis2/app-runtime' import i18n from '@dhis2/d2-i18n' -import { Parser as RichTextParser } from '@dhis2/d2-ui-rich-text' import { Button, CircularLoader, @@ -25,6 +28,7 @@ import React, { useImperativeHandle, } from 'react' import { formatList } from '../../modules/list.js' +import { RichTextParser } from '../RichText/index.js' import styles from './styles/AboutAOUnit.style.js' import { getTranslatedString, AOTypeMap } from './utils.js' @@ -57,6 +61,7 @@ const getUnsubscribeMutation = (type, id) => ({ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { const [isExpanded, setIsExpanded] = useState(true) + const { fromServerDate } = useTimeZoneConversion() const queries = useMemo(() => getQueries(type), [type]) @@ -186,8 +191,9 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { )} {data && (
-

@@ -196,9 +202,9 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { {data.ao.displayDescription} ) : ( - i18n.t('No description') +

{i18n.t('No description')}

)} -

+

@@ -208,7 +214,7 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { {i18n.t('Last updated {{time}}', { time: moment( - data.ao.lastUpdated + fromServerDate(data.ao.lastUpdated) ).fromNow(), })}

@@ -219,7 +225,9 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { 'Created {{time}} by {{author}}', { time: moment( - data.ao.created + fromServerDate( + data.ao.created + ) ).fromNow(), author: data.ao.createdBy .displayName, @@ -227,7 +235,9 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { ) : i18n.t('Created {{time}}', { time: moment( - data.ao.created + fromServerDate( + data.ao.created + ) ).fromNow(), })}

diff --git a/src/components/AboutAOUnit/styles/AboutAOUnit.style.js b/src/components/AboutAOUnit/styles/AboutAOUnit.style.js index fdabe3898..f95205a83 100644 --- a/src/components/AboutAOUnit/styles/AboutAOUnit.style.js +++ b/src/components/AboutAOUnit/styles/AboutAOUnit.style.js @@ -48,6 +48,10 @@ export default css` flex-shrink: 0; } + .description { + white-space: pre-line; + } + .noDescription { color: ${colors.grey600}; } diff --git a/src/components/AboutAOUnit/utils.js b/src/components/AboutAOUnit/utils.js index eb0295cf6..88bae014c 100644 --- a/src/components/AboutAOUnit/utils.js +++ b/src/components/AboutAOUnit/utils.js @@ -3,6 +3,8 @@ import i18n from '@dhis2/d2-i18n' export const AO_TYPE_VISUALIZATION = 'visualization' export const AO_TYPE_MAP = 'map' export const AO_TYPE_EVENT_VISUALIZATION = 'eventVisualization' +export const AO_TYPE_EVENT_CHART = 'eventChart' +export const AO_TYPE_EVENT_REPORT = 'eventReport' export const AOTypeMap = { [AO_TYPE_VISUALIZATION]: { @@ -14,6 +16,12 @@ export const AOTypeMap = { [AO_TYPE_EVENT_VISUALIZATION]: { apiEndpoint: 'eventVisualizations', }, + [AO_TYPE_EVENT_CHART]: { + apiEndpoint: 'eventCharts', + }, + [AO_TYPE_EVENT_REPORT]: { + apiEndpoint: 'eventReports', + }, } const NO_TYPE = 'NO_TYPE' @@ -28,6 +36,12 @@ const texts = { [AO_TYPE_VISUALIZATION]: { unitTitle: i18n.t('About this visualization'), }, + [AO_TYPE_EVENT_CHART]: { + unitTitle: i18n.t('About this event chart'), + }, + [AO_TYPE_EVENT_REPORT]: { + unitTitle: i18n.t('About this event report'), + }, [NO_TYPE]: { unitTitle: i18n.t('About this visualization'), }, diff --git a/src/components/CachedDataQueryProvider.js b/src/components/CachedDataQueryProvider.js index 47646a1f1..e4a3786d0 100644 --- a/src/components/CachedDataQueryProvider.js +++ b/src/components/CachedDataQueryProvider.js @@ -6,7 +6,12 @@ import React, { createContext, useContext } from 'react' const CachedDataQueryCtx = createContext({}) -const CachedDataQueryProvider = ({ query, dataTransformation, children }) => { +const CachedDataQueryProvider = ({ + query, + dataTransformation, + children, + translucent = true, +}) => { const { data: rawData, ...rest } = useDataQuery(query) const { error, loading } = rest const data = @@ -14,7 +19,7 @@ const CachedDataQueryProvider = ({ query, dataTransformation, children }) => { if (loading) { return ( - + @@ -43,6 +48,7 @@ CachedDataQueryProvider.propTypes = { children: PropTypes.node.isRequired, query: PropTypes.object.isRequired, dataTransformation: PropTypes.func, + translucent: PropTypes.bool, } const useCachedDataQuery = () => useContext(CachedDataQueryCtx) diff --git a/src/components/DataDimension/DataDimension.js b/src/components/DataDimension/DataDimension.js index 52f2c33ea..2ed618b35 100644 --- a/src/components/DataDimension/DataDimension.js +++ b/src/components/DataDimension/DataDimension.js @@ -1,21 +1,46 @@ import { useConfig } from '@dhis2/app-runtime' import PropTypes from 'prop-types' -import React from 'react' +import React, { + createContext, + useContext, + useCallback, + useEffect, + useState, +} from 'react' +import { + dataTypeMap, + DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, +} from '../../modules/dataTypes.js' import { DIMENSION_ID_DATA } from '../../modules/predefinedDimensions.js' import ItemSelector from './ItemSelector.js' +const DataDimensionCtx = createContext({}) + const DataDimension = ({ onSelect, selectedDimensions, displayNameProp, + enabledDataTypes, infoBoxMessage, onCalculationSave, + visType, }) => { const { serverVersion } = useConfig() - const supportsEDI = - `${serverVersion.major}.${serverVersion.minor}.${ - serverVersion.patch || 0 - }` >= '2.40.0' + + const filterDataTypesByVersion = useCallback( + (dataTypes) => + dataTypes.filter( + ({ id }) => + // Calculations only available from 2.40 + id !== DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM || + serverVersion.minor >= 40 + ), + [serverVersion.minor] + ) + + const [dataTypes, setDataTypes] = useState( + filterDataTypesByVersion(enabledDataTypes || Object.values(dataTypeMap)) + ) const onSelectItems = (selectedItem) => onSelect({ @@ -28,23 +53,32 @@ const DataDimension = ({ })), }) + useEffect( + () => + enabledDataTypes && + setDataTypes(filterDataTypesByVersion(enabledDataTypes)), + [enabledDataTypes, filterDataTypesByVersion] + ) + return ( - ({ - value: item.id, - label: item.name, - isActive: item.isActive, - type: item.type, - expression: item.expression, - access: item.access, - }))} - onSelect={onSelectItems} - displayNameProp={displayNameProp} - infoBoxMessage={infoBoxMessage} - dataTest={'data-dimension'} - supportsEDI={supportsEDI} - onEDISave={onCalculationSave} - /> + + ({ + value: item.id, + label: item.name, + isActive: item.isActive, + type: item.type, + expression: item.expression, + access: item.access, + }))} + onSelect={onSelectItems} + displayNameProp={displayNameProp} + infoBoxMessage={infoBoxMessage} + dataTest={'data-dimension'} + dataTypes={dataTypes} + onEDISave={onCalculationSave} + /> + ) } @@ -60,7 +94,9 @@ DataDimension.propTypes = { }) ).isRequired, onSelect: PropTypes.func.isRequired, + enabledDataTypes: PropTypes.array, infoBoxMessage: PropTypes.string, + visType: PropTypes.string, onCalculationSave: PropTypes.func, } @@ -69,4 +105,6 @@ DataDimension.defaultProps = { onSelect: Function.prototype, } +export const useDataDimensionContext = () => useContext(DataDimensionCtx) + export default DataDimension diff --git a/src/components/DataDimension/DataTypeSelector.js b/src/components/DataDimension/DataTypeSelector.js index b5485e9ed..62d273097 100644 --- a/src/components/DataDimension/DataTypeSelector.js +++ b/src/components/DataDimension/DataTypeSelector.js @@ -2,57 +2,88 @@ import { SingleSelectField, SingleSelectOption } from '@dhis2/ui' import PropTypes from 'prop-types' import React from 'react' import i18n from '../../locales/index.js' -import { - DIMENSION_TYPE_ALL, - dataTypeMap as dataTypes, - DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, -} from '../../modules/dataTypes.js' +import { DIMENSION_TYPE_ALL, dataTypeMap } from '../../modules/dataTypes.js' +import { getDisplayNameByVisType } from '../../modules/visTypes.js' +import { useDataDimensionContext } from './DataDimension.js' import styles from './styles/DataTypeSelector.style.js' const DataTypeSelector = ({ currentDataType, + dataTypes, onChange, dataTest, - includeCalculations, -}) => ( -
- onChange(ref.selected)} - dense - > - - {Object.values(dataTypes) - .filter( - (type) => - type.id !== DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM || - includeCalculations - ) - .map((type) => ( +}) => { + const { visType } = useDataDimensionContext() + const label = i18n.t('Data Type') + + return ( +
+ {dataTypes.length === 1 ? ( + onChange(ref.selected)} + dense + disabled={true} + helpText={ + visType + ? i18n.t( + 'Only {{dataType}} can be used in {{visType}}', + { + dataType: + dataTypeMap[ + dataTypes[0].id + ].getName(), + visType: getDisplayNameByVisType(visType), + } + ) + : '' + } + > + {dataTypes.map((type) => ( + + ))} + + ) : ( + onChange(ref.selected)} + dense + > - ))} - - -
-) + {dataTypes.map((type) => ( + + ))} +
+ )} + +
+ ) +} DataTypeSelector.propTypes = { currentDataType: PropTypes.string.isRequired, onChange: PropTypes.func.isRequired, dataTest: PropTypes.string, - includeCalculations: PropTypes.bool, + dataTypes: PropTypes.array, } export default DataTypeSelector diff --git a/src/components/DataDimension/GroupSelector.js b/src/components/DataDimension/GroupSelector.js index 7b6173b42..d20fd866c 100644 --- a/src/components/DataDimension/GroupSelector.js +++ b/src/components/DataDimension/GroupSelector.js @@ -28,20 +28,20 @@ const GroupSelector = ({ const defaultGroup = dataTypes[dataType]?.defaultGroup const subGroupType = dataTypes[dataType]?.subGroup - const fetchGroups = async () => { - setIsLoading(true) - const result = await apiFetchGroups( - dataEngine, - dataType, - displayNameProp - ) - setGroups(result) - setIsLoading(false) - } - useEffect(() => { + const fetchGroups = async () => { + setIsLoading(true) + const result = await apiFetchGroups( + dataEngine, + dataType, + displayNameProp + ) + setGroups(result) + setIsLoading(false) + } + fetchGroups() - }, [dataType]) + }, [dataEngine, dataType, displayNameProp]) return (
diff --git a/src/components/DataDimension/ItemSelector.js b/src/components/DataDimension/ItemSelector.js index 6256be9ba..5c36b478a 100644 --- a/src/components/DataDimension/ItemSelector.js +++ b/src/components/DataDimension/ItemSelector.js @@ -6,7 +6,6 @@ import { apiFetchOptions } from '../../api/dimensions.js' import i18n from '../../locales/index.js' import { DATA_SETS_CONSTANTS, REPORTING_RATE } from '../../modules/dataSets.js' import { - dataTypeMap as dataTypes, DIMENSION_TYPE_ALL, DIMENSION_TYPE_DATA_ELEMENT, DIMENSION_TYPE_DATA_SET, @@ -33,14 +32,15 @@ const LeftHeader = ({ searchTerm, setSearchTerm, dataType, + dataTypes, setDataType, group, setGroup, subGroup, setSubGroup, displayNameProp, + dataTest, - supportsEDI, }) => ( <>
@@ -57,20 +57,22 @@ const LeftHeader = ({ currentDataType={dataType} onChange={setDataType} dataTest={`${dataTest}-data-types-select-field`} - includeCalculations={supportsEDI} + dataTypes={dataTypes} /> - {dataTypes[dataType] && - dataType !== DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM && ( - - )} + {![ + DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM, + DIMENSION_TYPE_ALL, + ].includes(dataType) && ( + + )}
@@ -79,6 +81,7 @@ const LeftHeader = ({ LeftHeader.propTypes = { dataTest: PropTypes.string, dataType: PropTypes.string, + dataTypes: PropTypes.array, displayNameProp: PropTypes.string, group: PropTypes.string, searchTerm: PropTypes.string, @@ -87,7 +90,6 @@ LeftHeader.propTypes = { setSearchTerm: PropTypes.func, setSubGroup: PropTypes.func, subGroup: PropTypes.string, - supportsEDI: PropTypes.bool, } const EmptySelection = () => ( @@ -96,23 +98,26 @@ const EmptySelection = () => ( ) -const RightHeader = ({ infoText }) => ( + +const RightHeader = ({ infoBoxMessage }) => ( <>

{i18n.t('Selected Items')}

- {infoText && ( + {infoBoxMessage && (
- {infoText} + {infoBoxMessage}
)} ) + RightHeader.propTypes = { - infoText: PropTypes.string, + infoBoxMessage: PropTypes.string, } + const SourceEmptyPlaceholder = ({ loading, searchTerm, @@ -142,6 +147,9 @@ const SourceEmptyPlaceholder = ({ case DIMENSION_TYPE_PROGRAM_INDICATOR: message = i18n.t('No program indicators found') break + case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: + message = i18n.t('No calculations found') + break default: message = i18n.t('No data') break @@ -151,41 +159,43 @@ const SourceEmptyPlaceholder = ({ switch (dataType) { case DIMENSION_TYPE_INDICATOR: message = i18n.t('No indicators found for "{{- searchTerm}}"', { - searchTerm: searchTerm, + searchTerm, }) break case DIMENSION_TYPE_DATA_ELEMENT: message = i18n.t( 'No data elements found for "{{- searchTerm}}"', { - searchTerm: searchTerm, + searchTerm, } ) break case DIMENSION_TYPE_DATA_SET: message = i18n.t('No data sets found for "{{- searchTerm}}"', { - searchTerm: searchTerm, + searchTerm, }) break case DIMENSION_TYPE_EVENT_DATA_ITEM: message = i18n.t( 'No event data items found for "{{- searchTerm}}"', - { - searchTerm: searchTerm, - } + { searchTerm } ) break case DIMENSION_TYPE_PROGRAM_INDICATOR: message = i18n.t( 'No program indicators found for "{{- searchTerm}}"', - { - searchTerm: searchTerm, - } + { searchTerm } + ) + break + case DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM: + message = i18n.t( + 'No calculations found for "{{- searchTerm}}"', + { searchTerm } ) break default: message = i18n.t('Nothing found for "{{- searchTerm}}"', { - searchTerm: searchTerm, + searchTerm, }) break } @@ -218,27 +228,42 @@ const ItemSelector = ({ rightFooter, displayNameProp, infoBoxMessage, + dataTypes, dataTest, - supportsEDI, onEDISave, }) => { const [state, setState] = useState({ searchTerm: '', + dataTypes, filter: { - dataType: DIMENSION_TYPE_ALL, + dataType: + dataTypes.length === 1 ? dataTypes[0].id : DIMENSION_TYPE_ALL, + group: null, + subGroup: + dataTypes.length === 1 && + dataTypes[0].id === DIMENSION_TYPE_DATA_ELEMENT + ? TOTALS + : null, }, options: [], loading: true, nextPage: 1, + supportsEDI: dataTypes + .map(({ id }) => id) + .includes(DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM), }) const [currentCalculation, setCurrentCalculation] = useState() const dataEngine = useDataEngine() const setSearchTerm = (searchTerm) => setState((state) => ({ ...state, searchTerm })) - const setFilter = (filter) => setState((state) => ({ ...state, filter })) const debouncedSearchTerm = useDebounce(state.searchTerm, 500) + const fetchItems = async (page) => { - setState((state) => ({ ...state, loading: true })) + setState((state) => ({ + ...state, + nextPage: page === 1 ? 1 : state.nextPage, + loading: true, + })) const result = await apiFetchOptions({ dataEngine, nameProp: displayNameProp, @@ -314,13 +339,9 @@ const ItemSelector = ({ } useDidUpdateEffect(() => { - setState((state) => ({ - ...state, - loading: true, - nextPage: 1, - })) fetchItems(1) }, [debouncedSearchTerm, state.filter]) + const onChange = (newSelected) => { onSelect( newSelected.map((value) => { @@ -391,6 +412,39 @@ const ItemSelector = ({ onSelect([...selectedItems.filter((item) => item.value !== id)]) } + const onSetGroup = (group) => + setState((state) => ({ + ...state, + nextPage: 1, + filter: { + ...state.filter, + group, + }, + })) + + const onSetSubGroup = (subGroup) => + setState((state) => ({ + ...state, + nextPage: 1, + filter: { + ...state.filter, + subGroup, + }, + })) + + const onSetDataType = (dataType) => + setState((state) => ({ + ...state, + nextPage: 1, + filter: { + ...state.filter, + dataType, + group: null, + subGroup: + dataType === DIMENSION_TYPE_DATA_ELEMENT ? TOTALS : null, + }, + })) + return ( <> { - setFilter({ - ...state.filter, - dataType, - group: null, - subGroup: - dataType === DIMENSION_TYPE_DATA_ELEMENT - ? TOTALS - : null, - }) - }} + setDataType={onSetDataType} group={state.filter.group} - setGroup={(group) => { - setFilter({ ...state.filter, group }) - }} + setGroup={onSetGroup} subGroup={state.filter.subGroup} - setSubGroup={(subGroup) => { - setFilter({ ...state.filter, subGroup }) - }} + setSubGroup={onSetSubGroup} searchTerm={state.searchTerm} setSearchTerm={setSearchTerm} displayNameProp={displayNameProp} dataTest={`${dataTest}-left-header`} - supportsEDI={supportsEDI} /> } leftFooter={ - supportsEDI ? ( + state.supportsEDI ? (
- ) : null} - + {onOptionsClick && !isDeactivated && !isLocked ? ( +
+ {this.state.mouseOver ? ( + + ) : null} +
+ ) : null} + {isLocked && LockIcon} + + + ) } } @@ -140,12 +151,12 @@ DimensionItem.propTypes = { id: PropTypes.string.isRequired, isSelected: PropTypes.bool.isRequired, // XXX name: PropTypes.string.isRequired, + className: PropTypes.string, dataTest: PropTypes.string, innerRef: PropTypes.func, isDeactivated: PropTypes.bool, isLocked: PropTypes.bool, isRecommended: PropTypes.bool, - style: PropTypes.object, onClick: PropTypes.func, onOptionsClick: PropTypes.func, } diff --git a/src/components/DimensionsPanel/List/OptionsButton.js b/src/components/DimensionsPanel/List/OptionsButton.js index 0686000a2..b7200ddcf 100644 --- a/src/components/DimensionsPanel/List/OptionsButton.js +++ b/src/components/DimensionsPanel/List/OptionsButton.js @@ -2,14 +2,36 @@ import { IconMore16 } from '@dhis2/ui' import PropTypes from 'prop-types' import React from 'react' -const OptionsButton = ({ style, onClick }) => ( - +const OptionsButton = ({ onClick }) => ( + <> + + + ) OptionsButton.propTypes = { - style: PropTypes.object, onClick: PropTypes.func, } diff --git a/src/components/DimensionsPanel/List/RecommendedIcon.js b/src/components/DimensionsPanel/List/RecommendedIcon.js index 3a8b75dc9..12609d3a7 100644 --- a/src/components/DimensionsPanel/List/RecommendedIcon.js +++ b/src/components/DimensionsPanel/List/RecommendedIcon.js @@ -9,7 +9,6 @@ const RecommendedIcon = ({ isRecommended, dataTest }) =>
diff --git a/src/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap b/src/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap index 1c33a04bf..f58b07faa 100644 --- a/src/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +++ b/src/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap @@ -1,405 +1,283 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`DimensionItem matches the snapshot 1`] = ` -
  • -
    + +
  • - -
    -
    - - Period - - + +
    +
    + + + Period + + + +
  • -
    - + + {i18n.t('Rename {{fileType}}', { @@ -67,6 +80,7 @@ export const RenameDialog = ({ type, object, onClose, onRename, onError }) => { required value={name} onChange={({ value }) => setName(value)} + dataTest="file-menu-rename-modal-name" /> { value={description} rows={3} onChange={({ value }) => setDescription(value)} + dataTest="file-menu-rename-modal-description" />
    - - diff --git a/src/components/FileMenu/utils.js b/src/components/FileMenu/utils.js index 7cca04a9d..5f69b331e 100644 --- a/src/components/FileMenu/utils.js +++ b/src/components/FileMenu/utils.js @@ -35,7 +35,18 @@ export const appPathFor = (fileType, id) => { return `dhis-web-data-visualizer/#/${id}` case FILE_TYPE_MAP: return `dhis-web-maps/index.html?id=${id}` + case FILE_TYPE_EVENT_VISUALIZATION: + return `api/apps/line-listing/#/${id}` default: return `${window.location.search}${window.location.hash}` } } + +export const preparePayloadForSaveAs = ({ ...visualization }) => { + delete visualization.id + delete visualization.created + delete visualization.createdBy + delete visualization.user + + return visualization +} diff --git a/src/components/Interpretations/InterpretationModal/CommentAddForm.js b/src/components/Interpretations/InterpretationModal/CommentAddForm.js index 9cae2d4a7..0b8f98498 100644 --- a/src/components/Interpretations/InterpretationModal/CommentAddForm.js +++ b/src/components/Interpretations/InterpretationModal/CommentAddForm.js @@ -3,8 +3,8 @@ import i18n from '@dhis2/d2-i18n' import { Button } from '@dhis2/ui' import PropTypes from 'prop-types' import React, { useRef, useState } from 'react' +import { RichTextEditor } from '../../RichText/index.js' import { - RichTextEditor, MessageEditorContainer, MessageButtonStrip, MessageInput, diff --git a/src/components/Interpretations/InterpretationModal/CommentUpdateForm.js b/src/components/Interpretations/InterpretationModal/CommentUpdateForm.js index ea9d3812e..dc90d2175 100644 --- a/src/components/Interpretations/InterpretationModal/CommentUpdateForm.js +++ b/src/components/Interpretations/InterpretationModal/CommentUpdateForm.js @@ -3,11 +3,8 @@ import i18n from '@dhis2/d2-i18n' import { Button, spacers, colors } from '@dhis2/ui' import PropTypes from 'prop-types' import React, { useState, useRef } from 'react' -import { - MessageEditorContainer, - RichTextEditor, - MessageButtonStrip, -} from '../common/index.js' +import { RichTextEditor } from '../../RichText/index.js' +import { MessageEditorContainer, MessageButtonStrip } from '../common/index.js' export const CommentUpdateForm = ({ interpretationId, diff --git a/src/components/Interpretations/InterpretationModal/InterpretationModal.js b/src/components/Interpretations/InterpretationModal/InterpretationModal.js index 4f02eaefa..425eb053c 100644 --- a/src/components/Interpretations/InterpretationModal/InterpretationModal.js +++ b/src/components/Interpretations/InterpretationModal/InterpretationModal.js @@ -14,7 +14,7 @@ import { } from '@dhis2/ui' import cx from 'classnames' import PropTypes from 'prop-types' -import React, { useEffect, useState } from 'react' +import React, { useEffect, useState, useMemo } from 'react' import css from 'styled-jsx/css' import { InterpretationThread } from './InterpretationThread.js' import { useModalContentWidth } from './useModalContentWidth.js' @@ -24,14 +24,14 @@ const modalCSS = css.resolve` max-width: calc(100vw - 128px) !important; max-height: calc(100vh - 128px) !important; width: auto !important; - height: auto !important; + height: calc(100vh - 128px) !important; overflow-y: hidden; } aside.hidden { display: none; } aside > :global(div) > :global(div) { - max-height: none; + height: 100%; } ` @@ -39,6 +39,7 @@ function getModalContentCSS(width) { return css.resolve` div { width: ${width}px; + overflow-y: visible; } ` } @@ -82,7 +83,7 @@ const InterpretationModal = ({ }) const interpretation = data?.interpretation const shouldRenderModalContent = !error && interpretation - const shouldCssHideModal = loading || isVisualizationLoading + const loadingInProgress = loading || isVisualizationLoading const handleClose = () => { if (isDirty) { onInterpretationUpdate() @@ -96,6 +97,13 @@ const InterpretationModal = ({ } refetch({ id: interpretationId }) } + + const onLikeToggled = ({ likedBy }) => { + setIsDirty(true) + interpretation.likedBy = likedBy + interpretation.likes = likedBy.length + } + const onInterpretationDeleted = () => { setIsDirty(false) onInterpretationUpdate() @@ -108,9 +116,15 @@ const InterpretationModal = ({ } }, [interpretationId, refetch]) + const filters = useMemo(() => { + return { + relativePeriodDate: interpretation?.created, + } + }, [interpretation?.created]) + return ( <> - {shouldCssHideModal && ( + {loadingInProgress && ( @@ -121,7 +135,7 @@ const InterpretationModal = ({ fluid onClose={handleClose} className={cx(modalCSS.className, { - hidden: shouldCssHideModal, + hidden: loadingInProgress, })} dataTest="interpretation-modal" > @@ -155,10 +169,7 @@ const InterpretationModal = ({
    @@ -182,6 +194,7 @@ const InterpretationModal = ({ downloadMenuComponent={ downloadMenuComponent } + onLikeToggled={onLikeToggled} />
    @@ -216,12 +229,14 @@ const InterpretationModal = ({ .container { display: flex; flex-direction: column; + height: 100%; } .row { display: flex; flex-direction: row; gap: 16px; + height: 100%; } .visualisation-wrap { @@ -233,7 +248,6 @@ const InterpretationModal = ({ padding-right: ${spacers.dp4}; flex-basis: 300px; flex-shrink: 0; - overflow-y: auto; } `} diff --git a/src/components/Interpretations/InterpretationModal/InterpretationThread.js b/src/components/Interpretations/InterpretationModal/InterpretationThread.js index 03540290d..eb5a3a6d3 100644 --- a/src/components/Interpretations/InterpretationModal/InterpretationThread.js +++ b/src/components/Interpretations/InterpretationModal/InterpretationThread.js @@ -1,3 +1,4 @@ +import { useTimeZoneConversion } from '@dhis2/app-runtime' import { IconClock16, colors } from '@dhis2/ui' import cx from 'classnames' import moment from 'moment' @@ -12,10 +13,13 @@ const InterpretationThread = ({ fetching, interpretation, onInterpretationDeleted, + onLikeToggled, initialFocus, onThreadUpdated, downloadMenuComponent: DownloadMenu, + dashboardRedirectUrl, }) => { + const { fromServerDate } = useTimeZoneConversion() const focusRef = useRef() useEffect(() => { @@ -32,63 +36,78 @@ const InterpretationThread = ({ ) return ( -
    -
    -
    - - {moment(interpretation.created).format('LLL')} -
    - {DownloadMenu && ( - - )} -
    - focusRef.current?.focus() - : null - } - onUpdated={() => onThreadUpdated(true)} - onDeleted={onInterpretationDeleted} - isInThread={true} - /> -
    - {interpretation.comments.map((comment) => ( - - ))} -
    - {interpretationAccess.comment && ( - +
    + + {moment(fromServerDate(interpretation.created)).format('LLL')} +
    + {DownloadMenu && ( + + )} +
    + focusRef.current?.focus() + : null + } + onUpdated={() => onThreadUpdated(true)} + onDeleted={onInterpretationDeleted} + dashboardRedirectUrl={dashboardRedirectUrl} + isInThread={true} + /> +
    + {interpretation.comments.map((comment) => ( + onThreadUpdated(true)} - focusRef={focusRef} + onThreadUpdated={onThreadUpdated} + canComment={interpretationAccess.comment} /> - )} + ))}
    + {interpretationAccess.comment && ( + onThreadUpdated(true)} + focusRef={focusRef} + /> + )} - -) + .footer { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: ${spacers.dp8}; + } + `} + + ) +} Message.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/Interpretations/common/Message/MessageEditorContainer.js b/src/components/Interpretations/common/Message/MessageEditorContainer.js index b4c7ff338..4de5bec5d 100644 --- a/src/components/Interpretations/common/Message/MessageEditorContainer.js +++ b/src/components/Interpretations/common/Message/MessageEditorContainer.js @@ -19,6 +19,7 @@ const MessageEditorContainer = ({ children, currentUser, dataTest }) => ( } .editor { flex-grow: 1; + height: 100%; } `}
    diff --git a/src/components/Interpretations/common/RichTextEditor/index.js b/src/components/Interpretations/common/RichTextEditor/index.js deleted file mode 100644 index 31c0113ca..000000000 --- a/src/components/Interpretations/common/RichTextEditor/index.js +++ /dev/null @@ -1 +0,0 @@ -export { RichTextEditor } from './RichTextEditor.js' diff --git a/src/components/Interpretations/common/__tests__/getInterpretationAccess.spec.js b/src/components/Interpretations/common/__tests__/getInterpretationAccess.spec.js index 45f75feff..3dc62633f 100644 --- a/src/components/Interpretations/common/__tests__/getInterpretationAccess.spec.js +++ b/src/components/Interpretations/common/__tests__/getInterpretationAccess.spec.js @@ -3,21 +3,36 @@ import { getCommentAccess, } from '../getInterpretationAccess.js' -const superuser = { +const superuserD2CurrentUser = { id: 'iamsuper', authorities: new Set(['ALL']), } -const userJoe = { +const userJoeD2CurrentUser = { id: 'johndoe', authorities: new Set(['Some']), } -const userJane = { +const userJaneD2CurrentUser = { id: 'jane', authorities: new Set(['Some']), } +const superuser = { + id: 'iamsuper', + authorities: ['ALL'], +} + +const userJoe = { + id: 'johndoe', + authorities: ['Some'], +} + +const userJane = { + id: 'jane', + authorities: ['Some'], +} + describe('interpretation and comment access', () => { describe('getInterpretationAccess', () => { it('returns true for all accesses for superuser', () => { @@ -113,6 +128,228 @@ describe('interpretation and comment access', () => { delete: false, }) }) + + it('throws an error for all accesses when no currentUser provided', () => { + const interpretation = { + access: { + write: false, + manage: false, + }, + createdBy: userJane, + } + + expect(() => getInterpretationAccess(interpretation)).toThrow( + '"hasAuthority" requires "authorities" to be an array or set of authorities (strings)' + ) + }) + + it('throws an error when currentUser is missing authorities', () => { + const interpretation = { + access: { + write: false, + manage: false, + }, + createdBy: userJane, + } + + expect(() => + getInterpretationAccess(interpretation, { + id: 'usernoauthorties', + }) + ).toThrow( + '"hasAuthority" requires "authorities" to be an array or set of authorities (strings)' + ) + }) + }) + + describe('getInterpretationAccess using D2.currentUser', () => { + it('returns true for all accesses for superuser', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJoeD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, superuserD2CurrentUser) + ).toMatchObject({ + share: true, + comment: true, + edit: true, + delete: true, + }) + }) + it('returns true for all accesses for creator', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJoeD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, userJoeD2CurrentUser) + ).toMatchObject({ + share: true, + comment: true, + edit: true, + delete: true, + }) + }) + + it('returns false for edit/delete if user is not creator/superuser', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJaneD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, userJoeD2CurrentUser) + ).toMatchObject({ + share: true, + comment: true, + edit: false, + delete: false, + }) + }) + + it('returns false for comment/edit/delete if user is not creator/superuser and no write access', () => { + const interpretation = { + access: { + write: false, + manage: true, + }, + createdBy: userJaneD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, userJoeD2CurrentUser) + ).toMatchObject({ + share: true, + comment: false, + edit: false, + delete: false, + }) + }) + + it('returns false for share/comment/edit/delete if user is not creator/superuser and no write or manage access', () => { + const interpretation = { + access: { + write: false, + manage: false, + }, + createdBy: userJaneD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, userJoeD2CurrentUser) + ).toMatchObject({ + share: false, + comment: false, + edit: false, + delete: false, + }) + }) + }) + + describe('getCommentAccess using D2.currentUser', () => { + it('returns true for all accesses for superuser', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJoeD2CurrentUser, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + superuserD2CurrentUser + ) + ).toMatchObject({ + edit: true, + delete: true, + }) + }) + + it('returns true for all accesses for creator when interpretation has write access', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJoeD2CurrentUser, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + userJoeD2CurrentUser + ) + ).toMatchObject({ + edit: true, + delete: true, + }) + }) + + it('returns true for edit and false for delete for creator when interpretation does not have write access', () => { + const interpretation = { + access: { + write: false, + }, + } + + const comment = { + createdBy: userJoeD2CurrentUser, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + userJoeD2CurrentUser + ) + ).toMatchObject({ + edit: true, + delete: false, + }) + }) + + it('returns false for edit/delete for user who is not creator or superuser', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJaneD2CurrentUser, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + userJoeD2CurrentUser + ) + ).toMatchObject({ + edit: false, + delete: false, + }) + }) }) describe('getCommentAccess', () => { diff --git a/src/components/Interpretations/common/getInterpretationAccess.js b/src/components/Interpretations/common/getInterpretationAccess.js index d95e82af3..11123bc63 100644 --- a/src/components/Interpretations/common/getInterpretationAccess.js +++ b/src/components/Interpretations/common/getInterpretationAccess.js @@ -1,9 +1,33 @@ -const isCreatorOrSuperuser = (object, currentUser) => - object?.createdBy.id === currentUser?.id || - currentUser?.authorities.has('ALL') +// For backwards compatibility +// accept both Set (from the old d2.currentUser object) and array +const hasAuthority = (authorities, authority) => { + if (!authority || typeof authority !== 'string') { + throw new Error( + `"hasAuthority" requires "authority" to be a populated string but received ${authority}` + ) + } + if ( + !(Array.isArray(authorities) || typeof authorities?.has === 'function') + ) { + throw new Error( + `"hasAuthority" requires "authorities" to be an array or set of authorities (strings)` + ) + } + + return Array.isArray(authorities) + ? authorities.includes(authority) + : authorities.has(authority) +} + +const isSuperuser = (authorities) => hasAuthority(authorities, 'ALL') + +const isCreator = (object, currentUser) => + object?.createdBy.id === currentUser?.id export const getInterpretationAccess = (interpretation, currentUser) => { - const canEditDelete = isCreatorOrSuperuser(interpretation, currentUser) + const canEditDelete = + isCreator(interpretation, currentUser) || + isSuperuser(currentUser?.authorities) return { share: interpretation.access.manage, comment: interpretation.access.write, @@ -17,7 +41,8 @@ export const getCommentAccess = ( hasInterpretationReplyAccess, currentUser ) => { - const canEditDelete = isCreatorOrSuperuser(comment, currentUser) + const canEditDelete = + isCreator(comment, currentUser) || isSuperuser(currentUser?.authorities) return { edit: canEditDelete, delete: canEditDelete && hasInterpretationReplyAccess, diff --git a/src/components/Interpretations/common/index.js b/src/components/Interpretations/common/index.js index 562614fb1..d3473298f 100644 --- a/src/components/Interpretations/common/index.js +++ b/src/components/Interpretations/common/index.js @@ -1,4 +1,3 @@ export * from './Interpretation/index.js' export * from './Message/index.js' -export * from './RichTextEditor/index.js' export * from './getInterpretationAccess.js' diff --git a/src/components/Options/VisualizationOptions.js b/src/components/Options/VisualizationOptions.js index 3bb3e3174..c8eb10e72 100644 --- a/src/components/Options/VisualizationOptions.js +++ b/src/components/Options/VisualizationOptions.js @@ -18,6 +18,7 @@ import { modalContent, tabSection, tabSectionTitle, + tabSectionTitleDisabled, tabSectionTitleMargin, tabSectionOption, tabSectionOptionItem, @@ -95,6 +96,7 @@ const VisualizationOptions = ({ {tabContent.styles} {tabSection.styles} {tabSectionTitle.styles} + {tabSectionTitleDisabled.styles} {tabSectionTitleMargin.styles} {tabSectionOption.styles} {tabSectionOptionItem.styles} diff --git a/src/components/Options/styles/VisualizationOptions.style.js b/src/components/Options/styles/VisualizationOptions.style.js index bcd74f517..61c87803f 100644 --- a/src/components/Options/styles/VisualizationOptions.style.js +++ b/src/components/Options/styles/VisualizationOptions.style.js @@ -51,6 +51,12 @@ export const tabSectionTitle = css.resolve` } ` +export const tabSectionTitleDisabled = css.resolve` + span { + color: ${colors.grey600}; + } +` + export const tabSectionTitleMargin = css.resolve` span { margin-top: ${spacers.dp8}; diff --git a/src/components/OrgUnitDimension/OrgUnitDimension.js b/src/components/OrgUnitDimension/OrgUnitDimension.js index 3516daf46..5d2d7115a 100644 --- a/src/components/OrgUnitDimension/OrgUnitDimension.js +++ b/src/components/OrgUnitDimension/OrgUnitDimension.js @@ -40,6 +40,7 @@ const OrgUnitDimension = ({ hideLevelSelect, hideUserOrgUnits, warning, + displayNameProp, }) => { const [ouLevels, setOuLevels] = useState([]) const [ouGroups, setOuGroups] = useState([]) @@ -79,13 +80,16 @@ const OrgUnitDimension = ({ setOuLevels(result) } const doFetchOuGroups = async () => { - const result = await apiFetchOrganisationUnitGroups(dataEngine) + const result = await apiFetchOrganisationUnitGroups( + dataEngine, + displayNameProp + ) setOuGroups(result) } !hideLevelSelect && doFetchOuLevels() !hideGroupSelect && doFetchOuGroups() - }, [dataEngine, hideLevelSelect, hideGroupSelect]) + }, [dataEngine, hideLevelSelect, hideGroupSelect, displayNameProp]) const onLevelChange = (ids) => { const items = ids.map((id) => ({ @@ -369,6 +373,7 @@ OrgUnitDimension.defaultProps = { } OrgUnitDimension.propTypes = { + displayNameProp: PropTypes.string, hideGroupSelect: PropTypes.bool, hideLevelSelect: PropTypes.bool, hideUserOrgUnits: PropTypes.bool, diff --git a/src/components/PeriodDimension/PeriodDimension.js b/src/components/PeriodDimension/PeriodDimension.js index e60cdf029..7e20dbc6e 100644 --- a/src/components/PeriodDimension/PeriodDimension.js +++ b/src/components/PeriodDimension/PeriodDimension.js @@ -18,6 +18,7 @@ const PeriodDimension = ({ selectedPeriods, rightFooter, excludedPeriodTypes, + infoBoxMessage, }) => { const { systemInfo } = useConfig() const result = useDataQuery(userSettingsQuery) @@ -36,7 +37,8 @@ const PeriodDimension = ({ return ( ( + <> +

    {i18n.t('Selected Periods')}

    + {infoBoxMessage && ( +
    +
    + +
    + {infoBoxMessage} +
    + )} + + +) + +RightHeader.propTypes = { + infoBoxMessage: PropTypes.string, +} + const PeriodTransfer = ({ onSelect, dataTest, - initialSelectedPeriods, + selectedItems, rightFooter, excludedPeriodTypes, periodsSettings, + infoBoxMessage, }) => { const defaultRelativePeriodType = excludedPeriodTypes.includes(MONTHLY) ? getRelativePeriodsOptionsById(QUARTERLY) @@ -46,9 +66,6 @@ const PeriodTransfer = ({ const [allPeriods, setAllPeriods] = useState( defaultRelativePeriodType.getPeriods() ) - const [selectedPeriods, setSelectedPeriods] = useState( - initialSelectedPeriods - ) const [isRelative, setIsRelative] = useState(true) const [relativeFilter, setRelativeFilter] = useState({ periodType: defaultRelativePeriodType.id, @@ -58,6 +75,11 @@ const PeriodTransfer = ({ year: defaultFixedPeriodYear.toString(), }) + const isActive = (value) => { + const item = selectedItems.find((item) => item.id === value) + return !item || item.isActive + } + const onIsRelativeClick = (state) => { if (state !== isRelative) { setIsRelative(state) @@ -132,24 +154,20 @@ const PeriodTransfer = ({ ) - const renderRightHeader = () => ( - <> -

    {i18n.t('Selected Periods')}

    - - - ) - const onSelectFixedPeriods = (filter) => { setFixedFilter(filter) - setAllPeriods( - getFixedPeriodsOptionsById( - filter.periodType, - periodsSettings - ).getPeriods( - fixedPeriodConfig(Number(filter.year)), - periodsSettings + + if (filter.year.match(/[0-9]{4}/)) { + setAllPeriods( + getFixedPeriodsOptionsById( + filter.periodType, + periodsSettings + ).getPeriods( + fixedPeriodConfig(Number(filter.year)), + periodsSettings + ) ) - ) + } } const renderEmptySelection = () => ( @@ -162,33 +180,37 @@ const PeriodTransfer = ({ return ( { - const formattedItems = selected.map((id) => ({ - id, - name: [...allPeriods, ...selectedPeriods].find( + const formattedItems = selected.map((id) => { + const matchingItem = [...allPeriods, ...selectedItems].find( (item) => item.id === id - ).name, - })) - setSelectedPeriods(formattedItems) + ) + + return { + id, + name: matchingItem.name, + isActive: matchingItem.isActive, + } + }) onSelect(formattedItems) }} - selected={selectedPeriods.map((period) => period.id)} + selected={selectedItems.map((period) => period.id)} leftHeader={renderLeftHeader()} enableOrderChange height={TRANSFER_HEIGHT} optionsWidth={TRANSFER_OPTIONS_WIDTH} selectedWidth={TRANSFER_SELECTED_WIDTH} selectedEmptyComponent={renderEmptySelection()} - rightHeader={renderRightHeader()} + rightHeader={} rightFooter={rightFooter} - options={[...allPeriods, ...selectedPeriods].map( - ({ id, name }) => ({ - label: name, - value: id, - }) - )} - renderOption={(props) => ( + options={[...allPeriods, ...selectedItems].map(({ id, name }) => ({ + label: name, + value: id, + }))} + renderOption={({ value, ...props }) => ( @@ -199,7 +221,7 @@ const PeriodTransfer = ({ } PeriodTransfer.defaultProps = { - initialSelectedPeriods: [], + selectedItems: [], excludedPeriodTypes: [], periodsSettings: { calendar: 'gregory', @@ -211,17 +233,19 @@ PeriodTransfer.propTypes = { onSelect: PropTypes.func.isRequired, dataTest: PropTypes.string, excludedPeriodTypes: PropTypes.arrayOf(PropTypes.string), - initialSelectedPeriods: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.string, - name: PropTypes.string, - }) - ), + infoBoxMessage: PropTypes.string, periodsSettings: PropTypes.shape({ calendar: PropTypes.string, locale: PropTypes.string, }), rightFooter: PropTypes.node, + selectedItems: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.string, + isActive: PropTypes.bool, + name: PropTypes.string, + }) + ), } export default PeriodTransfer diff --git a/src/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap b/src/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap index 1bf93ba94..4ad9ab073 100644 --- a/src/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +++ b/src/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap @@ -4,7 +4,6 @@ exports[`The Period Dimension component matches the snapshot 1`] = ` } + selectedItems={Array []} /> `; diff --git a/src/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap b/src/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap index fa5dbe8d4..d13930874 100644 --- a/src/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +++ b/src/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap @@ -77,18 +77,7 @@ exports[`The Period Selector component matches the snapshot 1`] = ` optionsWidth="420px" renderOption={[Function]} rightFooter={} - rightHeader={ - -

    - Selected Periods -

    - -
    - } + rightHeader={} selected={Array []} selectedEmptyComponent={ diff --git a/src/components/PeriodDimension/__tests__/__snapshots__/fixedPeriods.spec.js.snap b/src/components/PeriodDimension/__tests__/__snapshots__/fixedPeriods.spec.js.snap index be670cf0c..69aaa2343 100644 --- a/src/components/PeriodDimension/__tests__/__snapshots__/fixedPeriods.spec.js.snap +++ b/src/components/PeriodDimension/__tests__/__snapshots__/fixedPeriods.spec.js.snap @@ -6,185 +6,237 @@ Object { "name": "Bi-weekly", "options": Array [ Object { + "displayName": "Bi-Week 1 - 2013-12-30 - 2014-01-12", "endDate": "2014-01-12", "id": "2014BiW1", "iso": "2014BiW1", "name": "Bi-Week 1 - 2013-12-30 - 2014-01-12", + "periodType": "BIWEEKLY", "startDate": "2013-12-30", }, Object { + "displayName": "Bi-Week 2 - 2014-01-13 - 2014-01-26", "endDate": "2014-01-26", "id": "2014BiW2", "iso": "2014BiW2", "name": "Bi-Week 2 - 2014-01-13 - 2014-01-26", + "periodType": "BIWEEKLY", "startDate": "2014-01-13", }, Object { + "displayName": "Bi-Week 3 - 2014-01-27 - 2014-02-09", "endDate": "2014-02-09", "id": "2014BiW3", "iso": "2014BiW3", "name": "Bi-Week 3 - 2014-01-27 - 2014-02-09", + "periodType": "BIWEEKLY", "startDate": "2014-01-27", }, Object { + "displayName": "Bi-Week 4 - 2014-02-10 - 2014-02-23", "endDate": "2014-02-23", "id": "2014BiW4", "iso": "2014BiW4", "name": "Bi-Week 4 - 2014-02-10 - 2014-02-23", + "periodType": "BIWEEKLY", "startDate": "2014-02-10", }, Object { + "displayName": "Bi-Week 5 - 2014-02-24 - 2014-03-09", "endDate": "2014-03-09", "id": "2014BiW5", "iso": "2014BiW5", "name": "Bi-Week 5 - 2014-02-24 - 2014-03-09", + "periodType": "BIWEEKLY", "startDate": "2014-02-24", }, Object { + "displayName": "Bi-Week 6 - 2014-03-10 - 2014-03-23", "endDate": "2014-03-23", "id": "2014BiW6", "iso": "2014BiW6", "name": "Bi-Week 6 - 2014-03-10 - 2014-03-23", + "periodType": "BIWEEKLY", "startDate": "2014-03-10", }, Object { + "displayName": "Bi-Week 7 - 2014-03-24 - 2014-04-06", "endDate": "2014-04-06", "id": "2014BiW7", "iso": "2014BiW7", "name": "Bi-Week 7 - 2014-03-24 - 2014-04-06", + "periodType": "BIWEEKLY", "startDate": "2014-03-24", }, Object { + "displayName": "Bi-Week 8 - 2014-04-07 - 2014-04-20", "endDate": "2014-04-20", "id": "2014BiW8", "iso": "2014BiW8", "name": "Bi-Week 8 - 2014-04-07 - 2014-04-20", + "periodType": "BIWEEKLY", "startDate": "2014-04-07", }, Object { + "displayName": "Bi-Week 9 - 2014-04-21 - 2014-05-04", "endDate": "2014-05-04", "id": "2014BiW9", "iso": "2014BiW9", "name": "Bi-Week 9 - 2014-04-21 - 2014-05-04", + "periodType": "BIWEEKLY", "startDate": "2014-04-21", }, Object { + "displayName": "Bi-Week 10 - 2014-05-05 - 2014-05-18", "endDate": "2014-05-18", "id": "2014BiW10", "iso": "2014BiW10", "name": "Bi-Week 10 - 2014-05-05 - 2014-05-18", + "periodType": "BIWEEKLY", "startDate": "2014-05-05", }, Object { + "displayName": "Bi-Week 11 - 2014-05-19 - 2014-06-01", "endDate": "2014-06-01", "id": "2014BiW11", "iso": "2014BiW11", "name": "Bi-Week 11 - 2014-05-19 - 2014-06-01", + "periodType": "BIWEEKLY", "startDate": "2014-05-19", }, Object { + "displayName": "Bi-Week 12 - 2014-06-02 - 2014-06-15", "endDate": "2014-06-15", "id": "2014BiW12", "iso": "2014BiW12", "name": "Bi-Week 12 - 2014-06-02 - 2014-06-15", + "periodType": "BIWEEKLY", "startDate": "2014-06-02", }, Object { + "displayName": "Bi-Week 13 - 2014-06-16 - 2014-06-29", "endDate": "2014-06-29", "id": "2014BiW13", "iso": "2014BiW13", "name": "Bi-Week 13 - 2014-06-16 - 2014-06-29", + "periodType": "BIWEEKLY", "startDate": "2014-06-16", }, Object { + "displayName": "Bi-Week 14 - 2014-06-30 - 2014-07-13", "endDate": "2014-07-13", "id": "2014BiW14", "iso": "2014BiW14", "name": "Bi-Week 14 - 2014-06-30 - 2014-07-13", + "periodType": "BIWEEKLY", "startDate": "2014-06-30", }, Object { + "displayName": "Bi-Week 15 - 2014-07-14 - 2014-07-27", "endDate": "2014-07-27", "id": "2014BiW15", "iso": "2014BiW15", "name": "Bi-Week 15 - 2014-07-14 - 2014-07-27", + "periodType": "BIWEEKLY", "startDate": "2014-07-14", }, Object { + "displayName": "Bi-Week 16 - 2014-07-28 - 2014-08-10", "endDate": "2014-08-10", "id": "2014BiW16", "iso": "2014BiW16", "name": "Bi-Week 16 - 2014-07-28 - 2014-08-10", + "periodType": "BIWEEKLY", "startDate": "2014-07-28", }, Object { + "displayName": "Bi-Week 17 - 2014-08-11 - 2014-08-24", "endDate": "2014-08-24", "id": "2014BiW17", "iso": "2014BiW17", "name": "Bi-Week 17 - 2014-08-11 - 2014-08-24", + "periodType": "BIWEEKLY", "startDate": "2014-08-11", }, Object { + "displayName": "Bi-Week 18 - 2014-08-25 - 2014-09-07", "endDate": "2014-09-07", "id": "2014BiW18", "iso": "2014BiW18", "name": "Bi-Week 18 - 2014-08-25 - 2014-09-07", + "periodType": "BIWEEKLY", "startDate": "2014-08-25", }, Object { + "displayName": "Bi-Week 19 - 2014-09-08 - 2014-09-21", "endDate": "2014-09-21", "id": "2014BiW19", "iso": "2014BiW19", "name": "Bi-Week 19 - 2014-09-08 - 2014-09-21", + "periodType": "BIWEEKLY", "startDate": "2014-09-08", }, Object { + "displayName": "Bi-Week 20 - 2014-09-22 - 2014-10-05", "endDate": "2014-10-05", "id": "2014BiW20", "iso": "2014BiW20", "name": "Bi-Week 20 - 2014-09-22 - 2014-10-05", + "periodType": "BIWEEKLY", "startDate": "2014-09-22", }, Object { + "displayName": "Bi-Week 21 - 2014-10-06 - 2014-10-19", "endDate": "2014-10-19", "id": "2014BiW21", "iso": "2014BiW21", "name": "Bi-Week 21 - 2014-10-06 - 2014-10-19", + "periodType": "BIWEEKLY", "startDate": "2014-10-06", }, Object { + "displayName": "Bi-Week 22 - 2014-10-20 - 2014-11-02", "endDate": "2014-11-02", "id": "2014BiW22", "iso": "2014BiW22", "name": "Bi-Week 22 - 2014-10-20 - 2014-11-02", + "periodType": "BIWEEKLY", "startDate": "2014-10-20", }, Object { + "displayName": "Bi-Week 23 - 2014-11-03 - 2014-11-16", "endDate": "2014-11-16", "id": "2014BiW23", "iso": "2014BiW23", "name": "Bi-Week 23 - 2014-11-03 - 2014-11-16", + "periodType": "BIWEEKLY", "startDate": "2014-11-03", }, Object { + "displayName": "Bi-Week 24 - 2014-11-17 - 2014-11-30", "endDate": "2014-11-30", "id": "2014BiW24", "iso": "2014BiW24", "name": "Bi-Week 24 - 2014-11-17 - 2014-11-30", + "periodType": "BIWEEKLY", "startDate": "2014-11-17", }, Object { + "displayName": "Bi-Week 25 - 2014-12-01 - 2014-12-14", "endDate": "2014-12-14", "id": "2014BiW25", "iso": "2014BiW25", "name": "Bi-Week 25 - 2014-12-01 - 2014-12-14", + "periodType": "BIWEEKLY", "startDate": "2014-12-01", }, Object { + "displayName": "Bi-Week 26 - 2014-12-15 - 2014-12-28", "endDate": "2014-12-28", "id": "2014BiW26", "iso": "2014BiW26", "name": "Bi-Week 26 - 2014-12-15 - 2014-12-28", + "periodType": "BIWEEKLY", "startDate": "2014-12-15", }, ], @@ -198,45 +250,57 @@ Object { "name": "Bi-monthly", "options": Array [ Object { + "displayName": "January - February 2014", "endDate": "2014-02-28", "id": "201401B", "iso": "201401B", "name": "January - February 2014", + "periodType": "BIMONTHLY", "startDate": "2014-01-01", }, Object { + "displayName": "March - April 2014", "endDate": "2014-04-30", "id": "201402B", "iso": "201402B", "name": "March - April 2014", + "periodType": "BIMONTHLY", "startDate": "2014-03-01", }, Object { + "displayName": "May - June 2014", "endDate": "2014-06-30", "id": "201403B", "iso": "201403B", "name": "May - June 2014", + "periodType": "BIMONTHLY", "startDate": "2014-05-01", }, Object { + "displayName": "July - August 2014", "endDate": "2014-08-31", "id": "201404B", "iso": "201404B", "name": "July - August 2014", + "periodType": "BIMONTHLY", "startDate": "2014-07-01", }, Object { + "displayName": "September - October 2014", "endDate": "2014-10-31", "id": "201405B", "iso": "201405B", "name": "September - October 2014", + "periodType": "BIMONTHLY", "startDate": "2014-09-01", }, Object { + "displayName": "November - December 2014", "endDate": "2014-12-31", "id": "201406B", "iso": "201406B", "name": "November - December 2014", + "periodType": "BIMONTHLY", "startDate": "2014-11-01", }, ], @@ -250,2558 +314,3288 @@ Object { "name": "Daily", "options": Array [ Object { + "displayName": "January 1, 2014", "endDate": "2014-01-01", "id": "20140101", "iso": "20140101", "name": "2014-01-01", + "periodType": "DAILY", "startDate": "2014-01-01", }, Object { + "displayName": "January 2, 2014", "endDate": "2014-01-02", "id": "20140102", "iso": "20140102", "name": "2014-01-02", + "periodType": "DAILY", "startDate": "2014-01-02", }, Object { + "displayName": "January 3, 2014", "endDate": "2014-01-03", "id": "20140103", "iso": "20140103", "name": "2014-01-03", + "periodType": "DAILY", "startDate": "2014-01-03", }, Object { + "displayName": "January 4, 2014", "endDate": "2014-01-04", "id": "20140104", "iso": "20140104", "name": "2014-01-04", + "periodType": "DAILY", "startDate": "2014-01-04", }, Object { + "displayName": "January 5, 2014", "endDate": "2014-01-05", "id": "20140105", "iso": "20140105", "name": "2014-01-05", + "periodType": "DAILY", "startDate": "2014-01-05", }, Object { + "displayName": "January 6, 2014", "endDate": "2014-01-06", "id": "20140106", "iso": "20140106", "name": "2014-01-06", + "periodType": "DAILY", "startDate": "2014-01-06", }, Object { + "displayName": "January 7, 2014", "endDate": "2014-01-07", "id": "20140107", "iso": "20140107", "name": "2014-01-07", + "periodType": "DAILY", "startDate": "2014-01-07", }, Object { + "displayName": "January 8, 2014", "endDate": "2014-01-08", "id": "20140108", "iso": "20140108", "name": "2014-01-08", + "periodType": "DAILY", "startDate": "2014-01-08", }, Object { + "displayName": "January 9, 2014", "endDate": "2014-01-09", "id": "20140109", "iso": "20140109", "name": "2014-01-09", + "periodType": "DAILY", "startDate": "2014-01-09", }, Object { + "displayName": "January 10, 2014", "endDate": "2014-01-10", "id": "20140110", "iso": "20140110", "name": "2014-01-10", + "periodType": "DAILY", "startDate": "2014-01-10", }, Object { + "displayName": "January 11, 2014", "endDate": "2014-01-11", "id": "20140111", "iso": "20140111", "name": "2014-01-11", + "periodType": "DAILY", "startDate": "2014-01-11", }, Object { + "displayName": "January 12, 2014", "endDate": "2014-01-12", "id": "20140112", "iso": "20140112", "name": "2014-01-12", + "periodType": "DAILY", "startDate": "2014-01-12", }, Object { + "displayName": "January 13, 2014", "endDate": "2014-01-13", "id": "20140113", "iso": "20140113", "name": "2014-01-13", + "periodType": "DAILY", "startDate": "2014-01-13", }, Object { + "displayName": "January 14, 2014", "endDate": "2014-01-14", "id": "20140114", "iso": "20140114", "name": "2014-01-14", + "periodType": "DAILY", "startDate": "2014-01-14", }, Object { + "displayName": "January 15, 2014", "endDate": "2014-01-15", "id": "20140115", "iso": "20140115", "name": "2014-01-15", + "periodType": "DAILY", "startDate": "2014-01-15", }, Object { + "displayName": "January 16, 2014", "endDate": "2014-01-16", "id": "20140116", "iso": "20140116", "name": "2014-01-16", + "periodType": "DAILY", "startDate": "2014-01-16", }, Object { + "displayName": "January 17, 2014", "endDate": "2014-01-17", "id": "20140117", "iso": "20140117", "name": "2014-01-17", + "periodType": "DAILY", "startDate": "2014-01-17", }, Object { + "displayName": "January 18, 2014", "endDate": "2014-01-18", "id": "20140118", "iso": "20140118", "name": "2014-01-18", + "periodType": "DAILY", "startDate": "2014-01-18", }, Object { + "displayName": "January 19, 2014", "endDate": "2014-01-19", "id": "20140119", "iso": "20140119", "name": "2014-01-19", + "periodType": "DAILY", "startDate": "2014-01-19", }, Object { + "displayName": "January 20, 2014", "endDate": "2014-01-20", "id": "20140120", "iso": "20140120", "name": "2014-01-20", + "periodType": "DAILY", "startDate": "2014-01-20", }, Object { + "displayName": "January 21, 2014", "endDate": "2014-01-21", "id": "20140121", "iso": "20140121", "name": "2014-01-21", + "periodType": "DAILY", "startDate": "2014-01-21", }, Object { + "displayName": "January 22, 2014", "endDate": "2014-01-22", "id": "20140122", "iso": "20140122", "name": "2014-01-22", + "periodType": "DAILY", "startDate": "2014-01-22", }, Object { + "displayName": "January 23, 2014", "endDate": "2014-01-23", "id": "20140123", "iso": "20140123", "name": "2014-01-23", + "periodType": "DAILY", "startDate": "2014-01-23", }, Object { + "displayName": "January 24, 2014", "endDate": "2014-01-24", "id": "20140124", "iso": "20140124", "name": "2014-01-24", + "periodType": "DAILY", "startDate": "2014-01-24", }, Object { + "displayName": "January 25, 2014", "endDate": "2014-01-25", "id": "20140125", "iso": "20140125", "name": "2014-01-25", + "periodType": "DAILY", "startDate": "2014-01-25", }, Object { + "displayName": "January 26, 2014", "endDate": "2014-01-26", "id": "20140126", "iso": "20140126", "name": "2014-01-26", + "periodType": "DAILY", "startDate": "2014-01-26", }, Object { + "displayName": "January 27, 2014", "endDate": "2014-01-27", "id": "20140127", "iso": "20140127", "name": "2014-01-27", + "periodType": "DAILY", "startDate": "2014-01-27", }, Object { + "displayName": "January 28, 2014", "endDate": "2014-01-28", "id": "20140128", "iso": "20140128", "name": "2014-01-28", + "periodType": "DAILY", "startDate": "2014-01-28", }, Object { + "displayName": "January 29, 2014", "endDate": "2014-01-29", "id": "20140129", "iso": "20140129", "name": "2014-01-29", + "periodType": "DAILY", "startDate": "2014-01-29", }, Object { + "displayName": "January 30, 2014", "endDate": "2014-01-30", "id": "20140130", "iso": "20140130", "name": "2014-01-30", + "periodType": "DAILY", "startDate": "2014-01-30", }, Object { + "displayName": "January 31, 2014", "endDate": "2014-01-31", "id": "20140131", "iso": "20140131", "name": "2014-01-31", + "periodType": "DAILY", "startDate": "2014-01-31", }, Object { + "displayName": "February 1, 2014", "endDate": "2014-02-01", "id": "20140201", "iso": "20140201", "name": "2014-02-01", + "periodType": "DAILY", "startDate": "2014-02-01", }, Object { + "displayName": "February 2, 2014", "endDate": "2014-02-02", "id": "20140202", "iso": "20140202", "name": "2014-02-02", + "periodType": "DAILY", "startDate": "2014-02-02", }, Object { + "displayName": "February 3, 2014", "endDate": "2014-02-03", "id": "20140203", "iso": "20140203", "name": "2014-02-03", + "periodType": "DAILY", "startDate": "2014-02-03", }, Object { + "displayName": "February 4, 2014", "endDate": "2014-02-04", "id": "20140204", "iso": "20140204", "name": "2014-02-04", + "periodType": "DAILY", "startDate": "2014-02-04", }, Object { + "displayName": "February 5, 2014", "endDate": "2014-02-05", "id": "20140205", "iso": "20140205", "name": "2014-02-05", + "periodType": "DAILY", "startDate": "2014-02-05", }, Object { + "displayName": "February 6, 2014", "endDate": "2014-02-06", "id": "20140206", "iso": "20140206", "name": "2014-02-06", + "periodType": "DAILY", "startDate": "2014-02-06", }, Object { + "displayName": "February 7, 2014", "endDate": "2014-02-07", "id": "20140207", "iso": "20140207", "name": "2014-02-07", + "periodType": "DAILY", "startDate": "2014-02-07", }, Object { + "displayName": "February 8, 2014", "endDate": "2014-02-08", "id": "20140208", "iso": "20140208", "name": "2014-02-08", + "periodType": "DAILY", "startDate": "2014-02-08", }, Object { + "displayName": "February 9, 2014", "endDate": "2014-02-09", "id": "20140209", "iso": "20140209", "name": "2014-02-09", + "periodType": "DAILY", "startDate": "2014-02-09", }, Object { + "displayName": "February 10, 2014", "endDate": "2014-02-10", "id": "20140210", "iso": "20140210", "name": "2014-02-10", + "periodType": "DAILY", "startDate": "2014-02-10", }, Object { + "displayName": "February 11, 2014", "endDate": "2014-02-11", "id": "20140211", "iso": "20140211", "name": "2014-02-11", + "periodType": "DAILY", "startDate": "2014-02-11", }, Object { + "displayName": "February 12, 2014", "endDate": "2014-02-12", "id": "20140212", "iso": "20140212", "name": "2014-02-12", + "periodType": "DAILY", "startDate": "2014-02-12", }, Object { + "displayName": "February 13, 2014", "endDate": "2014-02-13", "id": "20140213", "iso": "20140213", "name": "2014-02-13", + "periodType": "DAILY", "startDate": "2014-02-13", }, Object { + "displayName": "February 14, 2014", "endDate": "2014-02-14", "id": "20140214", "iso": "20140214", "name": "2014-02-14", + "periodType": "DAILY", "startDate": "2014-02-14", }, Object { + "displayName": "February 15, 2014", "endDate": "2014-02-15", "id": "20140215", "iso": "20140215", "name": "2014-02-15", + "periodType": "DAILY", "startDate": "2014-02-15", }, Object { + "displayName": "February 16, 2014", "endDate": "2014-02-16", "id": "20140216", "iso": "20140216", "name": "2014-02-16", + "periodType": "DAILY", "startDate": "2014-02-16", }, Object { + "displayName": "February 17, 2014", "endDate": "2014-02-17", "id": "20140217", "iso": "20140217", "name": "2014-02-17", + "periodType": "DAILY", "startDate": "2014-02-17", }, Object { + "displayName": "February 18, 2014", "endDate": "2014-02-18", "id": "20140218", "iso": "20140218", "name": "2014-02-18", + "periodType": "DAILY", "startDate": "2014-02-18", }, Object { + "displayName": "February 19, 2014", "endDate": "2014-02-19", "id": "20140219", "iso": "20140219", "name": "2014-02-19", + "periodType": "DAILY", "startDate": "2014-02-19", }, Object { + "displayName": "February 20, 2014", "endDate": "2014-02-20", "id": "20140220", "iso": "20140220", "name": "2014-02-20", + "periodType": "DAILY", "startDate": "2014-02-20", }, Object { + "displayName": "February 21, 2014", "endDate": "2014-02-21", "id": "20140221", "iso": "20140221", "name": "2014-02-21", + "periodType": "DAILY", "startDate": "2014-02-21", }, Object { + "displayName": "February 22, 2014", "endDate": "2014-02-22", "id": "20140222", "iso": "20140222", "name": "2014-02-22", + "periodType": "DAILY", "startDate": "2014-02-22", }, Object { + "displayName": "February 23, 2014", "endDate": "2014-02-23", "id": "20140223", "iso": "20140223", "name": "2014-02-23", + "periodType": "DAILY", "startDate": "2014-02-23", }, Object { + "displayName": "February 24, 2014", "endDate": "2014-02-24", "id": "20140224", "iso": "20140224", "name": "2014-02-24", + "periodType": "DAILY", "startDate": "2014-02-24", }, Object { + "displayName": "February 25, 2014", "endDate": "2014-02-25", "id": "20140225", "iso": "20140225", "name": "2014-02-25", + "periodType": "DAILY", "startDate": "2014-02-25", }, Object { + "displayName": "February 26, 2014", "endDate": "2014-02-26", "id": "20140226", "iso": "20140226", "name": "2014-02-26", + "periodType": "DAILY", "startDate": "2014-02-26", }, Object { + "displayName": "February 27, 2014", "endDate": "2014-02-27", "id": "20140227", "iso": "20140227", "name": "2014-02-27", + "periodType": "DAILY", "startDate": "2014-02-27", }, Object { + "displayName": "February 28, 2014", "endDate": "2014-02-28", "id": "20140228", "iso": "20140228", "name": "2014-02-28", + "periodType": "DAILY", "startDate": "2014-02-28", }, Object { + "displayName": "March 1, 2014", "endDate": "2014-03-01", "id": "20140301", "iso": "20140301", "name": "2014-03-01", + "periodType": "DAILY", "startDate": "2014-03-01", }, Object { + "displayName": "March 2, 2014", "endDate": "2014-03-02", "id": "20140302", "iso": "20140302", "name": "2014-03-02", + "periodType": "DAILY", "startDate": "2014-03-02", }, Object { + "displayName": "March 3, 2014", "endDate": "2014-03-03", "id": "20140303", "iso": "20140303", "name": "2014-03-03", + "periodType": "DAILY", "startDate": "2014-03-03", }, Object { + "displayName": "March 4, 2014", "endDate": "2014-03-04", "id": "20140304", "iso": "20140304", "name": "2014-03-04", + "periodType": "DAILY", "startDate": "2014-03-04", }, Object { + "displayName": "March 5, 2014", "endDate": "2014-03-05", "id": "20140305", "iso": "20140305", "name": "2014-03-05", + "periodType": "DAILY", "startDate": "2014-03-05", }, Object { + "displayName": "March 6, 2014", "endDate": "2014-03-06", "id": "20140306", "iso": "20140306", "name": "2014-03-06", + "periodType": "DAILY", "startDate": "2014-03-06", }, Object { + "displayName": "March 7, 2014", "endDate": "2014-03-07", "id": "20140307", "iso": "20140307", "name": "2014-03-07", + "periodType": "DAILY", "startDate": "2014-03-07", }, Object { + "displayName": "March 8, 2014", "endDate": "2014-03-08", "id": "20140308", "iso": "20140308", "name": "2014-03-08", + "periodType": "DAILY", "startDate": "2014-03-08", }, Object { + "displayName": "March 9, 2014", "endDate": "2014-03-09", "id": "20140309", "iso": "20140309", "name": "2014-03-09", + "periodType": "DAILY", "startDate": "2014-03-09", }, Object { + "displayName": "March 10, 2014", "endDate": "2014-03-10", "id": "20140310", "iso": "20140310", "name": "2014-03-10", + "periodType": "DAILY", "startDate": "2014-03-10", }, Object { + "displayName": "March 11, 2014", "endDate": "2014-03-11", "id": "20140311", "iso": "20140311", "name": "2014-03-11", + "periodType": "DAILY", "startDate": "2014-03-11", }, Object { + "displayName": "March 12, 2014", "endDate": "2014-03-12", "id": "20140312", "iso": "20140312", "name": "2014-03-12", + "periodType": "DAILY", "startDate": "2014-03-12", }, Object { + "displayName": "March 13, 2014", "endDate": "2014-03-13", "id": "20140313", "iso": "20140313", "name": "2014-03-13", + "periodType": "DAILY", "startDate": "2014-03-13", }, Object { + "displayName": "March 14, 2014", "endDate": "2014-03-14", "id": "20140314", "iso": "20140314", "name": "2014-03-14", + "periodType": "DAILY", "startDate": "2014-03-14", }, Object { + "displayName": "March 15, 2014", "endDate": "2014-03-15", "id": "20140315", "iso": "20140315", "name": "2014-03-15", + "periodType": "DAILY", "startDate": "2014-03-15", }, Object { + "displayName": "March 16, 2014", "endDate": "2014-03-16", "id": "20140316", "iso": "20140316", "name": "2014-03-16", + "periodType": "DAILY", "startDate": "2014-03-16", }, Object { + "displayName": "March 17, 2014", "endDate": "2014-03-17", "id": "20140317", "iso": "20140317", "name": "2014-03-17", + "periodType": "DAILY", "startDate": "2014-03-17", }, Object { + "displayName": "March 18, 2014", "endDate": "2014-03-18", "id": "20140318", "iso": "20140318", "name": "2014-03-18", + "periodType": "DAILY", "startDate": "2014-03-18", }, Object { + "displayName": "March 19, 2014", "endDate": "2014-03-19", "id": "20140319", "iso": "20140319", "name": "2014-03-19", + "periodType": "DAILY", "startDate": "2014-03-19", }, Object { + "displayName": "March 20, 2014", "endDate": "2014-03-20", "id": "20140320", "iso": "20140320", "name": "2014-03-20", + "periodType": "DAILY", "startDate": "2014-03-20", }, Object { + "displayName": "March 21, 2014", "endDate": "2014-03-21", "id": "20140321", "iso": "20140321", "name": "2014-03-21", + "periodType": "DAILY", "startDate": "2014-03-21", }, Object { + "displayName": "March 22, 2014", "endDate": "2014-03-22", "id": "20140322", "iso": "20140322", "name": "2014-03-22", + "periodType": "DAILY", "startDate": "2014-03-22", }, Object { + "displayName": "March 23, 2014", "endDate": "2014-03-23", "id": "20140323", "iso": "20140323", "name": "2014-03-23", + "periodType": "DAILY", "startDate": "2014-03-23", }, Object { + "displayName": "March 24, 2014", "endDate": "2014-03-24", "id": "20140324", "iso": "20140324", "name": "2014-03-24", + "periodType": "DAILY", "startDate": "2014-03-24", }, Object { + "displayName": "March 25, 2014", "endDate": "2014-03-25", "id": "20140325", "iso": "20140325", "name": "2014-03-25", + "periodType": "DAILY", "startDate": "2014-03-25", }, Object { + "displayName": "March 26, 2014", "endDate": "2014-03-26", "id": "20140326", "iso": "20140326", "name": "2014-03-26", + "periodType": "DAILY", "startDate": "2014-03-26", }, Object { + "displayName": "March 27, 2014", "endDate": "2014-03-27", "id": "20140327", "iso": "20140327", "name": "2014-03-27", + "periodType": "DAILY", "startDate": "2014-03-27", }, Object { + "displayName": "March 28, 2014", "endDate": "2014-03-28", "id": "20140328", "iso": "20140328", "name": "2014-03-28", + "periodType": "DAILY", "startDate": "2014-03-28", }, Object { + "displayName": "March 29, 2014", "endDate": "2014-03-29", "id": "20140329", "iso": "20140329", "name": "2014-03-29", + "periodType": "DAILY", "startDate": "2014-03-29", }, Object { + "displayName": "March 30, 2014", "endDate": "2014-03-30", "id": "20140330", "iso": "20140330", "name": "2014-03-30", + "periodType": "DAILY", "startDate": "2014-03-30", }, Object { + "displayName": "March 31, 2014", "endDate": "2014-03-31", "id": "20140331", "iso": "20140331", "name": "2014-03-31", + "periodType": "DAILY", "startDate": "2014-03-31", }, Object { + "displayName": "April 1, 2014", "endDate": "2014-04-01", "id": "20140401", "iso": "20140401", "name": "2014-04-01", + "periodType": "DAILY", "startDate": "2014-04-01", }, Object { + "displayName": "April 2, 2014", "endDate": "2014-04-02", "id": "20140402", "iso": "20140402", "name": "2014-04-02", + "periodType": "DAILY", "startDate": "2014-04-02", }, Object { + "displayName": "April 3, 2014", "endDate": "2014-04-03", "id": "20140403", "iso": "20140403", "name": "2014-04-03", + "periodType": "DAILY", "startDate": "2014-04-03", }, Object { + "displayName": "April 4, 2014", "endDate": "2014-04-04", "id": "20140404", "iso": "20140404", "name": "2014-04-04", + "periodType": "DAILY", "startDate": "2014-04-04", }, Object { + "displayName": "April 5, 2014", "endDate": "2014-04-05", "id": "20140405", "iso": "20140405", "name": "2014-04-05", + "periodType": "DAILY", "startDate": "2014-04-05", }, Object { + "displayName": "April 6, 2014", "endDate": "2014-04-06", "id": "20140406", "iso": "20140406", "name": "2014-04-06", + "periodType": "DAILY", "startDate": "2014-04-06", }, Object { + "displayName": "April 7, 2014", "endDate": "2014-04-07", "id": "20140407", "iso": "20140407", "name": "2014-04-07", + "periodType": "DAILY", "startDate": "2014-04-07", }, Object { + "displayName": "April 8, 2014", "endDate": "2014-04-08", "id": "20140408", "iso": "20140408", "name": "2014-04-08", + "periodType": "DAILY", "startDate": "2014-04-08", }, Object { + "displayName": "April 9, 2014", "endDate": "2014-04-09", "id": "20140409", "iso": "20140409", "name": "2014-04-09", + "periodType": "DAILY", "startDate": "2014-04-09", }, Object { + "displayName": "April 10, 2014", "endDate": "2014-04-10", "id": "20140410", "iso": "20140410", "name": "2014-04-10", + "periodType": "DAILY", "startDate": "2014-04-10", }, Object { + "displayName": "April 11, 2014", "endDate": "2014-04-11", "id": "20140411", "iso": "20140411", "name": "2014-04-11", + "periodType": "DAILY", "startDate": "2014-04-11", }, Object { + "displayName": "April 12, 2014", "endDate": "2014-04-12", "id": "20140412", "iso": "20140412", "name": "2014-04-12", + "periodType": "DAILY", "startDate": "2014-04-12", }, Object { + "displayName": "April 13, 2014", "endDate": "2014-04-13", "id": "20140413", "iso": "20140413", "name": "2014-04-13", + "periodType": "DAILY", "startDate": "2014-04-13", }, Object { + "displayName": "April 14, 2014", "endDate": "2014-04-14", "id": "20140414", "iso": "20140414", "name": "2014-04-14", + "periodType": "DAILY", "startDate": "2014-04-14", }, Object { + "displayName": "April 15, 2014", "endDate": "2014-04-15", "id": "20140415", "iso": "20140415", "name": "2014-04-15", + "periodType": "DAILY", "startDate": "2014-04-15", }, Object { + "displayName": "April 16, 2014", "endDate": "2014-04-16", "id": "20140416", "iso": "20140416", "name": "2014-04-16", + "periodType": "DAILY", "startDate": "2014-04-16", }, Object { + "displayName": "April 17, 2014", "endDate": "2014-04-17", "id": "20140417", "iso": "20140417", "name": "2014-04-17", + "periodType": "DAILY", "startDate": "2014-04-17", }, Object { + "displayName": "April 18, 2014", "endDate": "2014-04-18", "id": "20140418", "iso": "20140418", "name": "2014-04-18", + "periodType": "DAILY", "startDate": "2014-04-18", }, Object { + "displayName": "April 19, 2014", "endDate": "2014-04-19", "id": "20140419", "iso": "20140419", "name": "2014-04-19", + "periodType": "DAILY", "startDate": "2014-04-19", }, Object { + "displayName": "April 20, 2014", "endDate": "2014-04-20", "id": "20140420", "iso": "20140420", "name": "2014-04-20", + "periodType": "DAILY", "startDate": "2014-04-20", }, Object { + "displayName": "April 21, 2014", "endDate": "2014-04-21", "id": "20140421", "iso": "20140421", "name": "2014-04-21", + "periodType": "DAILY", "startDate": "2014-04-21", }, Object { + "displayName": "April 22, 2014", "endDate": "2014-04-22", "id": "20140422", "iso": "20140422", "name": "2014-04-22", + "periodType": "DAILY", "startDate": "2014-04-22", }, Object { + "displayName": "April 23, 2014", "endDate": "2014-04-23", "id": "20140423", "iso": "20140423", "name": "2014-04-23", + "periodType": "DAILY", "startDate": "2014-04-23", }, Object { + "displayName": "April 24, 2014", "endDate": "2014-04-24", "id": "20140424", "iso": "20140424", "name": "2014-04-24", + "periodType": "DAILY", "startDate": "2014-04-24", }, Object { + "displayName": "April 25, 2014", "endDate": "2014-04-25", "id": "20140425", "iso": "20140425", "name": "2014-04-25", + "periodType": "DAILY", "startDate": "2014-04-25", }, Object { + "displayName": "April 26, 2014", "endDate": "2014-04-26", "id": "20140426", "iso": "20140426", "name": "2014-04-26", + "periodType": "DAILY", "startDate": "2014-04-26", }, Object { + "displayName": "April 27, 2014", "endDate": "2014-04-27", "id": "20140427", "iso": "20140427", "name": "2014-04-27", + "periodType": "DAILY", "startDate": "2014-04-27", }, Object { + "displayName": "April 28, 2014", "endDate": "2014-04-28", "id": "20140428", "iso": "20140428", "name": "2014-04-28", + "periodType": "DAILY", "startDate": "2014-04-28", }, Object { + "displayName": "April 29, 2014", "endDate": "2014-04-29", "id": "20140429", "iso": "20140429", "name": "2014-04-29", + "periodType": "DAILY", "startDate": "2014-04-29", }, Object { + "displayName": "April 30, 2014", "endDate": "2014-04-30", "id": "20140430", "iso": "20140430", "name": "2014-04-30", + "periodType": "DAILY", "startDate": "2014-04-30", }, Object { + "displayName": "May 1, 2014", "endDate": "2014-05-01", "id": "20140501", "iso": "20140501", "name": "2014-05-01", + "periodType": "DAILY", "startDate": "2014-05-01", }, Object { + "displayName": "May 2, 2014", "endDate": "2014-05-02", "id": "20140502", "iso": "20140502", "name": "2014-05-02", + "periodType": "DAILY", "startDate": "2014-05-02", }, Object { + "displayName": "May 3, 2014", "endDate": "2014-05-03", "id": "20140503", "iso": "20140503", "name": "2014-05-03", + "periodType": "DAILY", "startDate": "2014-05-03", }, Object { + "displayName": "May 4, 2014", "endDate": "2014-05-04", "id": "20140504", "iso": "20140504", "name": "2014-05-04", + "periodType": "DAILY", "startDate": "2014-05-04", }, Object { + "displayName": "May 5, 2014", "endDate": "2014-05-05", "id": "20140505", "iso": "20140505", "name": "2014-05-05", + "periodType": "DAILY", "startDate": "2014-05-05", }, Object { + "displayName": "May 6, 2014", "endDate": "2014-05-06", "id": "20140506", "iso": "20140506", "name": "2014-05-06", + "periodType": "DAILY", "startDate": "2014-05-06", }, Object { + "displayName": "May 7, 2014", "endDate": "2014-05-07", "id": "20140507", "iso": "20140507", "name": "2014-05-07", + "periodType": "DAILY", "startDate": "2014-05-07", }, Object { + "displayName": "May 8, 2014", "endDate": "2014-05-08", "id": "20140508", "iso": "20140508", "name": "2014-05-08", + "periodType": "DAILY", "startDate": "2014-05-08", }, Object { + "displayName": "May 9, 2014", "endDate": "2014-05-09", "id": "20140509", "iso": "20140509", "name": "2014-05-09", + "periodType": "DAILY", "startDate": "2014-05-09", }, Object { + "displayName": "May 10, 2014", "endDate": "2014-05-10", "id": "20140510", "iso": "20140510", "name": "2014-05-10", + "periodType": "DAILY", "startDate": "2014-05-10", }, Object { + "displayName": "May 11, 2014", "endDate": "2014-05-11", "id": "20140511", "iso": "20140511", "name": "2014-05-11", + "periodType": "DAILY", "startDate": "2014-05-11", }, Object { + "displayName": "May 12, 2014", "endDate": "2014-05-12", "id": "20140512", "iso": "20140512", "name": "2014-05-12", + "periodType": "DAILY", "startDate": "2014-05-12", }, Object { + "displayName": "May 13, 2014", "endDate": "2014-05-13", "id": "20140513", "iso": "20140513", "name": "2014-05-13", + "periodType": "DAILY", "startDate": "2014-05-13", }, Object { + "displayName": "May 14, 2014", "endDate": "2014-05-14", "id": "20140514", "iso": "20140514", "name": "2014-05-14", + "periodType": "DAILY", "startDate": "2014-05-14", }, Object { + "displayName": "May 15, 2014", "endDate": "2014-05-15", "id": "20140515", "iso": "20140515", "name": "2014-05-15", + "periodType": "DAILY", "startDate": "2014-05-15", }, Object { + "displayName": "May 16, 2014", "endDate": "2014-05-16", "id": "20140516", "iso": "20140516", "name": "2014-05-16", + "periodType": "DAILY", "startDate": "2014-05-16", }, Object { + "displayName": "May 17, 2014", "endDate": "2014-05-17", "id": "20140517", "iso": "20140517", "name": "2014-05-17", + "periodType": "DAILY", "startDate": "2014-05-17", }, Object { + "displayName": "May 18, 2014", "endDate": "2014-05-18", "id": "20140518", "iso": "20140518", "name": "2014-05-18", + "periodType": "DAILY", "startDate": "2014-05-18", }, Object { + "displayName": "May 19, 2014", "endDate": "2014-05-19", "id": "20140519", "iso": "20140519", "name": "2014-05-19", + "periodType": "DAILY", "startDate": "2014-05-19", }, Object { + "displayName": "May 20, 2014", "endDate": "2014-05-20", "id": "20140520", "iso": "20140520", "name": "2014-05-20", + "periodType": "DAILY", "startDate": "2014-05-20", }, Object { + "displayName": "May 21, 2014", "endDate": "2014-05-21", "id": "20140521", "iso": "20140521", "name": "2014-05-21", + "periodType": "DAILY", "startDate": "2014-05-21", }, Object { + "displayName": "May 22, 2014", "endDate": "2014-05-22", "id": "20140522", "iso": "20140522", "name": "2014-05-22", + "periodType": "DAILY", "startDate": "2014-05-22", }, Object { + "displayName": "May 23, 2014", "endDate": "2014-05-23", "id": "20140523", "iso": "20140523", "name": "2014-05-23", + "periodType": "DAILY", "startDate": "2014-05-23", }, Object { + "displayName": "May 24, 2014", "endDate": "2014-05-24", "id": "20140524", "iso": "20140524", "name": "2014-05-24", + "periodType": "DAILY", "startDate": "2014-05-24", }, Object { + "displayName": "May 25, 2014", "endDate": "2014-05-25", "id": "20140525", "iso": "20140525", "name": "2014-05-25", + "periodType": "DAILY", "startDate": "2014-05-25", }, Object { + "displayName": "May 26, 2014", "endDate": "2014-05-26", "id": "20140526", "iso": "20140526", "name": "2014-05-26", + "periodType": "DAILY", "startDate": "2014-05-26", }, Object { + "displayName": "May 27, 2014", "endDate": "2014-05-27", "id": "20140527", "iso": "20140527", "name": "2014-05-27", + "periodType": "DAILY", "startDate": "2014-05-27", }, Object { + "displayName": "May 28, 2014", "endDate": "2014-05-28", "id": "20140528", "iso": "20140528", "name": "2014-05-28", + "periodType": "DAILY", "startDate": "2014-05-28", }, Object { + "displayName": "May 29, 2014", "endDate": "2014-05-29", "id": "20140529", "iso": "20140529", "name": "2014-05-29", + "periodType": "DAILY", "startDate": "2014-05-29", }, Object { + "displayName": "May 30, 2014", "endDate": "2014-05-30", "id": "20140530", "iso": "20140530", "name": "2014-05-30", + "periodType": "DAILY", "startDate": "2014-05-30", }, Object { + "displayName": "May 31, 2014", "endDate": "2014-05-31", "id": "20140531", "iso": "20140531", "name": "2014-05-31", + "periodType": "DAILY", "startDate": "2014-05-31", }, Object { + "displayName": "June 1, 2014", "endDate": "2014-06-01", "id": "20140601", "iso": "20140601", "name": "2014-06-01", + "periodType": "DAILY", "startDate": "2014-06-01", }, Object { + "displayName": "June 2, 2014", "endDate": "2014-06-02", "id": "20140602", "iso": "20140602", "name": "2014-06-02", + "periodType": "DAILY", "startDate": "2014-06-02", }, Object { + "displayName": "June 3, 2014", "endDate": "2014-06-03", "id": "20140603", "iso": "20140603", "name": "2014-06-03", + "periodType": "DAILY", "startDate": "2014-06-03", }, Object { + "displayName": "June 4, 2014", "endDate": "2014-06-04", "id": "20140604", "iso": "20140604", "name": "2014-06-04", + "periodType": "DAILY", "startDate": "2014-06-04", }, Object { + "displayName": "June 5, 2014", "endDate": "2014-06-05", "id": "20140605", "iso": "20140605", "name": "2014-06-05", + "periodType": "DAILY", "startDate": "2014-06-05", }, Object { + "displayName": "June 6, 2014", "endDate": "2014-06-06", "id": "20140606", "iso": "20140606", "name": "2014-06-06", + "periodType": "DAILY", "startDate": "2014-06-06", }, Object { + "displayName": "June 7, 2014", "endDate": "2014-06-07", "id": "20140607", "iso": "20140607", "name": "2014-06-07", + "periodType": "DAILY", "startDate": "2014-06-07", }, Object { + "displayName": "June 8, 2014", "endDate": "2014-06-08", "id": "20140608", "iso": "20140608", "name": "2014-06-08", + "periodType": "DAILY", "startDate": "2014-06-08", }, Object { + "displayName": "June 9, 2014", "endDate": "2014-06-09", "id": "20140609", "iso": "20140609", "name": "2014-06-09", + "periodType": "DAILY", "startDate": "2014-06-09", }, Object { + "displayName": "June 10, 2014", "endDate": "2014-06-10", "id": "20140610", "iso": "20140610", "name": "2014-06-10", + "periodType": "DAILY", "startDate": "2014-06-10", }, Object { + "displayName": "June 11, 2014", "endDate": "2014-06-11", "id": "20140611", "iso": "20140611", "name": "2014-06-11", + "periodType": "DAILY", "startDate": "2014-06-11", }, Object { + "displayName": "June 12, 2014", "endDate": "2014-06-12", "id": "20140612", "iso": "20140612", "name": "2014-06-12", + "periodType": "DAILY", "startDate": "2014-06-12", }, Object { + "displayName": "June 13, 2014", "endDate": "2014-06-13", "id": "20140613", "iso": "20140613", "name": "2014-06-13", + "periodType": "DAILY", "startDate": "2014-06-13", }, Object { + "displayName": "June 14, 2014", "endDate": "2014-06-14", "id": "20140614", "iso": "20140614", "name": "2014-06-14", + "periodType": "DAILY", "startDate": "2014-06-14", }, Object { + "displayName": "June 15, 2014", "endDate": "2014-06-15", "id": "20140615", "iso": "20140615", "name": "2014-06-15", + "periodType": "DAILY", "startDate": "2014-06-15", }, Object { + "displayName": "June 16, 2014", "endDate": "2014-06-16", "id": "20140616", "iso": "20140616", "name": "2014-06-16", + "periodType": "DAILY", "startDate": "2014-06-16", }, Object { + "displayName": "June 17, 2014", "endDate": "2014-06-17", "id": "20140617", "iso": "20140617", "name": "2014-06-17", + "periodType": "DAILY", "startDate": "2014-06-17", }, Object { + "displayName": "June 18, 2014", "endDate": "2014-06-18", "id": "20140618", "iso": "20140618", "name": "2014-06-18", + "periodType": "DAILY", "startDate": "2014-06-18", }, Object { + "displayName": "June 19, 2014", "endDate": "2014-06-19", "id": "20140619", "iso": "20140619", "name": "2014-06-19", + "periodType": "DAILY", "startDate": "2014-06-19", }, Object { + "displayName": "June 20, 2014", "endDate": "2014-06-20", "id": "20140620", "iso": "20140620", "name": "2014-06-20", + "periodType": "DAILY", "startDate": "2014-06-20", }, Object { + "displayName": "June 21, 2014", "endDate": "2014-06-21", "id": "20140621", "iso": "20140621", "name": "2014-06-21", + "periodType": "DAILY", "startDate": "2014-06-21", }, Object { + "displayName": "June 22, 2014", "endDate": "2014-06-22", "id": "20140622", "iso": "20140622", "name": "2014-06-22", + "periodType": "DAILY", "startDate": "2014-06-22", }, Object { + "displayName": "June 23, 2014", "endDate": "2014-06-23", "id": "20140623", "iso": "20140623", "name": "2014-06-23", + "periodType": "DAILY", "startDate": "2014-06-23", }, Object { + "displayName": "June 24, 2014", "endDate": "2014-06-24", "id": "20140624", "iso": "20140624", "name": "2014-06-24", + "periodType": "DAILY", "startDate": "2014-06-24", }, Object { + "displayName": "June 25, 2014", "endDate": "2014-06-25", "id": "20140625", "iso": "20140625", "name": "2014-06-25", + "periodType": "DAILY", "startDate": "2014-06-25", }, Object { + "displayName": "June 26, 2014", "endDate": "2014-06-26", "id": "20140626", "iso": "20140626", "name": "2014-06-26", + "periodType": "DAILY", "startDate": "2014-06-26", }, Object { + "displayName": "June 27, 2014", "endDate": "2014-06-27", "id": "20140627", "iso": "20140627", "name": "2014-06-27", + "periodType": "DAILY", "startDate": "2014-06-27", }, Object { + "displayName": "June 28, 2014", "endDate": "2014-06-28", "id": "20140628", "iso": "20140628", "name": "2014-06-28", + "periodType": "DAILY", "startDate": "2014-06-28", }, Object { + "displayName": "June 29, 2014", "endDate": "2014-06-29", "id": "20140629", "iso": "20140629", "name": "2014-06-29", + "periodType": "DAILY", "startDate": "2014-06-29", }, Object { + "displayName": "June 30, 2014", "endDate": "2014-06-30", "id": "20140630", "iso": "20140630", "name": "2014-06-30", + "periodType": "DAILY", "startDate": "2014-06-30", }, Object { + "displayName": "July 1, 2014", "endDate": "2014-07-01", "id": "20140701", "iso": "20140701", "name": "2014-07-01", + "periodType": "DAILY", "startDate": "2014-07-01", }, Object { + "displayName": "July 2, 2014", "endDate": "2014-07-02", "id": "20140702", "iso": "20140702", "name": "2014-07-02", + "periodType": "DAILY", "startDate": "2014-07-02", }, Object { + "displayName": "July 3, 2014", "endDate": "2014-07-03", "id": "20140703", "iso": "20140703", "name": "2014-07-03", + "periodType": "DAILY", "startDate": "2014-07-03", }, Object { + "displayName": "July 4, 2014", "endDate": "2014-07-04", "id": "20140704", "iso": "20140704", "name": "2014-07-04", + "periodType": "DAILY", "startDate": "2014-07-04", }, Object { + "displayName": "July 5, 2014", "endDate": "2014-07-05", "id": "20140705", "iso": "20140705", "name": "2014-07-05", + "periodType": "DAILY", "startDate": "2014-07-05", }, Object { + "displayName": "July 6, 2014", "endDate": "2014-07-06", "id": "20140706", "iso": "20140706", "name": "2014-07-06", + "periodType": "DAILY", "startDate": "2014-07-06", }, Object { + "displayName": "July 7, 2014", "endDate": "2014-07-07", "id": "20140707", "iso": "20140707", "name": "2014-07-07", + "periodType": "DAILY", "startDate": "2014-07-07", }, Object { + "displayName": "July 8, 2014", "endDate": "2014-07-08", "id": "20140708", "iso": "20140708", "name": "2014-07-08", + "periodType": "DAILY", "startDate": "2014-07-08", }, Object { + "displayName": "July 9, 2014", "endDate": "2014-07-09", "id": "20140709", "iso": "20140709", "name": "2014-07-09", + "periodType": "DAILY", "startDate": "2014-07-09", }, Object { + "displayName": "July 10, 2014", "endDate": "2014-07-10", "id": "20140710", "iso": "20140710", "name": "2014-07-10", + "periodType": "DAILY", "startDate": "2014-07-10", }, Object { + "displayName": "July 11, 2014", "endDate": "2014-07-11", "id": "20140711", "iso": "20140711", "name": "2014-07-11", + "periodType": "DAILY", "startDate": "2014-07-11", }, Object { + "displayName": "July 12, 2014", "endDate": "2014-07-12", "id": "20140712", "iso": "20140712", "name": "2014-07-12", + "periodType": "DAILY", "startDate": "2014-07-12", }, Object { + "displayName": "July 13, 2014", "endDate": "2014-07-13", "id": "20140713", "iso": "20140713", "name": "2014-07-13", + "periodType": "DAILY", "startDate": "2014-07-13", }, Object { + "displayName": "July 14, 2014", "endDate": "2014-07-14", "id": "20140714", "iso": "20140714", "name": "2014-07-14", + "periodType": "DAILY", "startDate": "2014-07-14", }, Object { + "displayName": "July 15, 2014", "endDate": "2014-07-15", "id": "20140715", "iso": "20140715", "name": "2014-07-15", + "periodType": "DAILY", "startDate": "2014-07-15", }, Object { + "displayName": "July 16, 2014", "endDate": "2014-07-16", "id": "20140716", "iso": "20140716", "name": "2014-07-16", + "periodType": "DAILY", "startDate": "2014-07-16", }, Object { + "displayName": "July 17, 2014", "endDate": "2014-07-17", "id": "20140717", "iso": "20140717", "name": "2014-07-17", + "periodType": "DAILY", "startDate": "2014-07-17", }, Object { + "displayName": "July 18, 2014", "endDate": "2014-07-18", "id": "20140718", "iso": "20140718", "name": "2014-07-18", + "periodType": "DAILY", "startDate": "2014-07-18", }, Object { + "displayName": "July 19, 2014", "endDate": "2014-07-19", "id": "20140719", "iso": "20140719", "name": "2014-07-19", + "periodType": "DAILY", "startDate": "2014-07-19", }, Object { + "displayName": "July 20, 2014", "endDate": "2014-07-20", "id": "20140720", "iso": "20140720", "name": "2014-07-20", + "periodType": "DAILY", "startDate": "2014-07-20", }, Object { + "displayName": "July 21, 2014", "endDate": "2014-07-21", "id": "20140721", "iso": "20140721", "name": "2014-07-21", + "periodType": "DAILY", "startDate": "2014-07-21", }, Object { + "displayName": "July 22, 2014", "endDate": "2014-07-22", "id": "20140722", "iso": "20140722", "name": "2014-07-22", + "periodType": "DAILY", "startDate": "2014-07-22", }, Object { + "displayName": "July 23, 2014", "endDate": "2014-07-23", "id": "20140723", "iso": "20140723", "name": "2014-07-23", + "periodType": "DAILY", "startDate": "2014-07-23", }, Object { + "displayName": "July 24, 2014", "endDate": "2014-07-24", "id": "20140724", "iso": "20140724", "name": "2014-07-24", + "periodType": "DAILY", "startDate": "2014-07-24", }, Object { + "displayName": "July 25, 2014", "endDate": "2014-07-25", "id": "20140725", "iso": "20140725", "name": "2014-07-25", + "periodType": "DAILY", "startDate": "2014-07-25", }, Object { + "displayName": "July 26, 2014", "endDate": "2014-07-26", "id": "20140726", "iso": "20140726", "name": "2014-07-26", + "periodType": "DAILY", "startDate": "2014-07-26", }, Object { + "displayName": "July 27, 2014", "endDate": "2014-07-27", "id": "20140727", "iso": "20140727", "name": "2014-07-27", + "periodType": "DAILY", "startDate": "2014-07-27", }, Object { + "displayName": "July 28, 2014", "endDate": "2014-07-28", "id": "20140728", "iso": "20140728", "name": "2014-07-28", + "periodType": "DAILY", "startDate": "2014-07-28", }, Object { + "displayName": "July 29, 2014", "endDate": "2014-07-29", "id": "20140729", "iso": "20140729", "name": "2014-07-29", + "periodType": "DAILY", "startDate": "2014-07-29", }, Object { + "displayName": "July 30, 2014", "endDate": "2014-07-30", "id": "20140730", "iso": "20140730", "name": "2014-07-30", + "periodType": "DAILY", "startDate": "2014-07-30", }, Object { + "displayName": "July 31, 2014", "endDate": "2014-07-31", "id": "20140731", "iso": "20140731", "name": "2014-07-31", + "periodType": "DAILY", "startDate": "2014-07-31", }, Object { + "displayName": "August 1, 2014", "endDate": "2014-08-01", "id": "20140801", "iso": "20140801", "name": "2014-08-01", + "periodType": "DAILY", "startDate": "2014-08-01", }, Object { + "displayName": "August 2, 2014", "endDate": "2014-08-02", "id": "20140802", "iso": "20140802", "name": "2014-08-02", + "periodType": "DAILY", "startDate": "2014-08-02", }, Object { + "displayName": "August 3, 2014", "endDate": "2014-08-03", "id": "20140803", "iso": "20140803", "name": "2014-08-03", + "periodType": "DAILY", "startDate": "2014-08-03", }, Object { + "displayName": "August 4, 2014", "endDate": "2014-08-04", "id": "20140804", "iso": "20140804", "name": "2014-08-04", + "periodType": "DAILY", "startDate": "2014-08-04", }, Object { + "displayName": "August 5, 2014", "endDate": "2014-08-05", "id": "20140805", "iso": "20140805", "name": "2014-08-05", + "periodType": "DAILY", "startDate": "2014-08-05", }, Object { + "displayName": "August 6, 2014", "endDate": "2014-08-06", "id": "20140806", "iso": "20140806", "name": "2014-08-06", + "periodType": "DAILY", "startDate": "2014-08-06", }, Object { + "displayName": "August 7, 2014", "endDate": "2014-08-07", "id": "20140807", "iso": "20140807", "name": "2014-08-07", + "periodType": "DAILY", "startDate": "2014-08-07", }, Object { + "displayName": "August 8, 2014", "endDate": "2014-08-08", "id": "20140808", "iso": "20140808", "name": "2014-08-08", + "periodType": "DAILY", "startDate": "2014-08-08", }, Object { + "displayName": "August 9, 2014", "endDate": "2014-08-09", "id": "20140809", "iso": "20140809", "name": "2014-08-09", + "periodType": "DAILY", "startDate": "2014-08-09", }, Object { + "displayName": "August 10, 2014", "endDate": "2014-08-10", "id": "20140810", "iso": "20140810", "name": "2014-08-10", + "periodType": "DAILY", "startDate": "2014-08-10", }, Object { + "displayName": "August 11, 2014", "endDate": "2014-08-11", "id": "20140811", "iso": "20140811", "name": "2014-08-11", + "periodType": "DAILY", "startDate": "2014-08-11", }, Object { + "displayName": "August 12, 2014", "endDate": "2014-08-12", "id": "20140812", "iso": "20140812", "name": "2014-08-12", + "periodType": "DAILY", "startDate": "2014-08-12", }, Object { + "displayName": "August 13, 2014", "endDate": "2014-08-13", "id": "20140813", "iso": "20140813", "name": "2014-08-13", + "periodType": "DAILY", "startDate": "2014-08-13", }, Object { + "displayName": "August 14, 2014", "endDate": "2014-08-14", "id": "20140814", "iso": "20140814", "name": "2014-08-14", + "periodType": "DAILY", "startDate": "2014-08-14", }, Object { + "displayName": "August 15, 2014", "endDate": "2014-08-15", "id": "20140815", "iso": "20140815", "name": "2014-08-15", + "periodType": "DAILY", "startDate": "2014-08-15", }, Object { + "displayName": "August 16, 2014", "endDate": "2014-08-16", "id": "20140816", "iso": "20140816", "name": "2014-08-16", + "periodType": "DAILY", "startDate": "2014-08-16", }, Object { + "displayName": "August 17, 2014", "endDate": "2014-08-17", "id": "20140817", "iso": "20140817", "name": "2014-08-17", + "periodType": "DAILY", "startDate": "2014-08-17", }, Object { + "displayName": "August 18, 2014", "endDate": "2014-08-18", "id": "20140818", "iso": "20140818", "name": "2014-08-18", + "periodType": "DAILY", "startDate": "2014-08-18", }, Object { + "displayName": "August 19, 2014", "endDate": "2014-08-19", "id": "20140819", "iso": "20140819", "name": "2014-08-19", + "periodType": "DAILY", "startDate": "2014-08-19", }, Object { + "displayName": "August 20, 2014", "endDate": "2014-08-20", "id": "20140820", "iso": "20140820", "name": "2014-08-20", + "periodType": "DAILY", "startDate": "2014-08-20", }, Object { + "displayName": "August 21, 2014", "endDate": "2014-08-21", "id": "20140821", "iso": "20140821", "name": "2014-08-21", + "periodType": "DAILY", "startDate": "2014-08-21", }, Object { + "displayName": "August 22, 2014", "endDate": "2014-08-22", "id": "20140822", "iso": "20140822", "name": "2014-08-22", + "periodType": "DAILY", "startDate": "2014-08-22", }, Object { + "displayName": "August 23, 2014", "endDate": "2014-08-23", "id": "20140823", "iso": "20140823", "name": "2014-08-23", + "periodType": "DAILY", "startDate": "2014-08-23", }, Object { + "displayName": "August 24, 2014", "endDate": "2014-08-24", "id": "20140824", "iso": "20140824", "name": "2014-08-24", + "periodType": "DAILY", "startDate": "2014-08-24", }, Object { + "displayName": "August 25, 2014", "endDate": "2014-08-25", "id": "20140825", "iso": "20140825", "name": "2014-08-25", + "periodType": "DAILY", "startDate": "2014-08-25", }, Object { + "displayName": "August 26, 2014", "endDate": "2014-08-26", "id": "20140826", "iso": "20140826", "name": "2014-08-26", + "periodType": "DAILY", "startDate": "2014-08-26", }, Object { + "displayName": "August 27, 2014", "endDate": "2014-08-27", "id": "20140827", "iso": "20140827", "name": "2014-08-27", + "periodType": "DAILY", "startDate": "2014-08-27", }, Object { + "displayName": "August 28, 2014", "endDate": "2014-08-28", "id": "20140828", "iso": "20140828", "name": "2014-08-28", + "periodType": "DAILY", "startDate": "2014-08-28", }, Object { + "displayName": "August 29, 2014", "endDate": "2014-08-29", "id": "20140829", "iso": "20140829", "name": "2014-08-29", + "periodType": "DAILY", "startDate": "2014-08-29", }, Object { + "displayName": "August 30, 2014", "endDate": "2014-08-30", "id": "20140830", "iso": "20140830", "name": "2014-08-30", + "periodType": "DAILY", "startDate": "2014-08-30", }, Object { + "displayName": "August 31, 2014", "endDate": "2014-08-31", "id": "20140831", "iso": "20140831", "name": "2014-08-31", + "periodType": "DAILY", "startDate": "2014-08-31", }, Object { + "displayName": "September 1, 2014", "endDate": "2014-09-01", "id": "20140901", "iso": "20140901", "name": "2014-09-01", + "periodType": "DAILY", "startDate": "2014-09-01", }, Object { + "displayName": "September 2, 2014", "endDate": "2014-09-02", "id": "20140902", "iso": "20140902", "name": "2014-09-02", + "periodType": "DAILY", "startDate": "2014-09-02", }, Object { + "displayName": "September 3, 2014", "endDate": "2014-09-03", "id": "20140903", "iso": "20140903", "name": "2014-09-03", + "periodType": "DAILY", "startDate": "2014-09-03", }, Object { + "displayName": "September 4, 2014", "endDate": "2014-09-04", "id": "20140904", "iso": "20140904", "name": "2014-09-04", + "periodType": "DAILY", "startDate": "2014-09-04", }, Object { + "displayName": "September 5, 2014", "endDate": "2014-09-05", "id": "20140905", "iso": "20140905", "name": "2014-09-05", + "periodType": "DAILY", "startDate": "2014-09-05", }, Object { + "displayName": "September 6, 2014", "endDate": "2014-09-06", "id": "20140906", "iso": "20140906", "name": "2014-09-06", + "periodType": "DAILY", "startDate": "2014-09-06", }, Object { + "displayName": "September 7, 2014", "endDate": "2014-09-07", "id": "20140907", "iso": "20140907", "name": "2014-09-07", + "periodType": "DAILY", "startDate": "2014-09-07", }, Object { + "displayName": "September 8, 2014", "endDate": "2014-09-08", "id": "20140908", "iso": "20140908", "name": "2014-09-08", + "periodType": "DAILY", "startDate": "2014-09-08", }, Object { + "displayName": "September 9, 2014", "endDate": "2014-09-09", "id": "20140909", "iso": "20140909", "name": "2014-09-09", + "periodType": "DAILY", "startDate": "2014-09-09", }, Object { + "displayName": "September 10, 2014", "endDate": "2014-09-10", "id": "20140910", "iso": "20140910", "name": "2014-09-10", + "periodType": "DAILY", "startDate": "2014-09-10", }, Object { + "displayName": "September 11, 2014", "endDate": "2014-09-11", "id": "20140911", "iso": "20140911", "name": "2014-09-11", + "periodType": "DAILY", "startDate": "2014-09-11", }, Object { + "displayName": "September 12, 2014", "endDate": "2014-09-12", "id": "20140912", "iso": "20140912", "name": "2014-09-12", + "periodType": "DAILY", "startDate": "2014-09-12", }, Object { + "displayName": "September 13, 2014", "endDate": "2014-09-13", "id": "20140913", "iso": "20140913", "name": "2014-09-13", + "periodType": "DAILY", "startDate": "2014-09-13", }, Object { + "displayName": "September 14, 2014", "endDate": "2014-09-14", "id": "20140914", "iso": "20140914", "name": "2014-09-14", + "periodType": "DAILY", "startDate": "2014-09-14", }, Object { + "displayName": "September 15, 2014", "endDate": "2014-09-15", "id": "20140915", "iso": "20140915", "name": "2014-09-15", + "periodType": "DAILY", "startDate": "2014-09-15", }, Object { + "displayName": "September 16, 2014", "endDate": "2014-09-16", "id": "20140916", "iso": "20140916", "name": "2014-09-16", + "periodType": "DAILY", "startDate": "2014-09-16", }, Object { + "displayName": "September 17, 2014", "endDate": "2014-09-17", "id": "20140917", "iso": "20140917", "name": "2014-09-17", + "periodType": "DAILY", "startDate": "2014-09-17", }, Object { + "displayName": "September 18, 2014", "endDate": "2014-09-18", "id": "20140918", "iso": "20140918", "name": "2014-09-18", + "periodType": "DAILY", "startDate": "2014-09-18", }, Object { + "displayName": "September 19, 2014", "endDate": "2014-09-19", "id": "20140919", "iso": "20140919", "name": "2014-09-19", + "periodType": "DAILY", "startDate": "2014-09-19", }, Object { + "displayName": "September 20, 2014", "endDate": "2014-09-20", "id": "20140920", "iso": "20140920", "name": "2014-09-20", + "periodType": "DAILY", "startDate": "2014-09-20", }, Object { + "displayName": "September 21, 2014", "endDate": "2014-09-21", "id": "20140921", "iso": "20140921", "name": "2014-09-21", + "periodType": "DAILY", "startDate": "2014-09-21", }, Object { + "displayName": "September 22, 2014", "endDate": "2014-09-22", "id": "20140922", "iso": "20140922", "name": "2014-09-22", + "periodType": "DAILY", "startDate": "2014-09-22", }, Object { + "displayName": "September 23, 2014", "endDate": "2014-09-23", "id": "20140923", "iso": "20140923", "name": "2014-09-23", + "periodType": "DAILY", "startDate": "2014-09-23", }, Object { + "displayName": "September 24, 2014", "endDate": "2014-09-24", "id": "20140924", "iso": "20140924", "name": "2014-09-24", + "periodType": "DAILY", "startDate": "2014-09-24", }, Object { + "displayName": "September 25, 2014", "endDate": "2014-09-25", "id": "20140925", "iso": "20140925", "name": "2014-09-25", + "periodType": "DAILY", "startDate": "2014-09-25", }, Object { + "displayName": "September 26, 2014", "endDate": "2014-09-26", "id": "20140926", "iso": "20140926", "name": "2014-09-26", + "periodType": "DAILY", "startDate": "2014-09-26", }, Object { + "displayName": "September 27, 2014", "endDate": "2014-09-27", "id": "20140927", "iso": "20140927", "name": "2014-09-27", + "periodType": "DAILY", "startDate": "2014-09-27", }, Object { + "displayName": "September 28, 2014", "endDate": "2014-09-28", "id": "20140928", "iso": "20140928", "name": "2014-09-28", + "periodType": "DAILY", "startDate": "2014-09-28", }, Object { + "displayName": "September 29, 2014", "endDate": "2014-09-29", "id": "20140929", "iso": "20140929", "name": "2014-09-29", + "periodType": "DAILY", "startDate": "2014-09-29", }, Object { + "displayName": "September 30, 2014", "endDate": "2014-09-30", "id": "20140930", "iso": "20140930", "name": "2014-09-30", + "periodType": "DAILY", "startDate": "2014-09-30", }, Object { + "displayName": "October 1, 2014", "endDate": "2014-10-01", "id": "20141001", "iso": "20141001", "name": "2014-10-01", + "periodType": "DAILY", "startDate": "2014-10-01", }, Object { + "displayName": "October 2, 2014", "endDate": "2014-10-02", "id": "20141002", "iso": "20141002", "name": "2014-10-02", + "periodType": "DAILY", "startDate": "2014-10-02", }, Object { + "displayName": "October 3, 2014", "endDate": "2014-10-03", "id": "20141003", "iso": "20141003", "name": "2014-10-03", + "periodType": "DAILY", "startDate": "2014-10-03", }, Object { + "displayName": "October 4, 2014", "endDate": "2014-10-04", "id": "20141004", "iso": "20141004", "name": "2014-10-04", + "periodType": "DAILY", "startDate": "2014-10-04", }, Object { + "displayName": "October 5, 2014", "endDate": "2014-10-05", "id": "20141005", "iso": "20141005", "name": "2014-10-05", + "periodType": "DAILY", "startDate": "2014-10-05", }, Object { + "displayName": "October 6, 2014", "endDate": "2014-10-06", "id": "20141006", "iso": "20141006", "name": "2014-10-06", + "periodType": "DAILY", "startDate": "2014-10-06", }, Object { + "displayName": "October 7, 2014", "endDate": "2014-10-07", "id": "20141007", "iso": "20141007", "name": "2014-10-07", + "periodType": "DAILY", "startDate": "2014-10-07", }, Object { + "displayName": "October 8, 2014", "endDate": "2014-10-08", "id": "20141008", "iso": "20141008", "name": "2014-10-08", + "periodType": "DAILY", "startDate": "2014-10-08", }, Object { + "displayName": "October 9, 2014", "endDate": "2014-10-09", "id": "20141009", "iso": "20141009", "name": "2014-10-09", + "periodType": "DAILY", "startDate": "2014-10-09", }, Object { + "displayName": "October 10, 2014", "endDate": "2014-10-10", "id": "20141010", "iso": "20141010", "name": "2014-10-10", + "periodType": "DAILY", "startDate": "2014-10-10", }, Object { + "displayName": "October 11, 2014", "endDate": "2014-10-11", "id": "20141011", "iso": "20141011", "name": "2014-10-11", + "periodType": "DAILY", "startDate": "2014-10-11", }, Object { + "displayName": "October 12, 2014", "endDate": "2014-10-12", "id": "20141012", "iso": "20141012", "name": "2014-10-12", + "periodType": "DAILY", "startDate": "2014-10-12", }, Object { + "displayName": "October 13, 2014", "endDate": "2014-10-13", "id": "20141013", "iso": "20141013", "name": "2014-10-13", + "periodType": "DAILY", "startDate": "2014-10-13", }, Object { + "displayName": "October 14, 2014", "endDate": "2014-10-14", "id": "20141014", "iso": "20141014", "name": "2014-10-14", + "periodType": "DAILY", "startDate": "2014-10-14", }, Object { + "displayName": "October 15, 2014", "endDate": "2014-10-15", "id": "20141015", "iso": "20141015", "name": "2014-10-15", + "periodType": "DAILY", "startDate": "2014-10-15", }, Object { + "displayName": "October 16, 2014", "endDate": "2014-10-16", "id": "20141016", "iso": "20141016", "name": "2014-10-16", + "periodType": "DAILY", "startDate": "2014-10-16", }, Object { + "displayName": "October 17, 2014", "endDate": "2014-10-17", "id": "20141017", "iso": "20141017", "name": "2014-10-17", + "periodType": "DAILY", "startDate": "2014-10-17", }, Object { + "displayName": "October 18, 2014", "endDate": "2014-10-18", "id": "20141018", "iso": "20141018", "name": "2014-10-18", + "periodType": "DAILY", "startDate": "2014-10-18", }, Object { + "displayName": "October 19, 2014", "endDate": "2014-10-19", "id": "20141019", "iso": "20141019", "name": "2014-10-19", + "periodType": "DAILY", "startDate": "2014-10-19", }, Object { + "displayName": "October 20, 2014", "endDate": "2014-10-20", "id": "20141020", "iso": "20141020", "name": "2014-10-20", + "periodType": "DAILY", "startDate": "2014-10-20", }, Object { + "displayName": "October 21, 2014", "endDate": "2014-10-21", "id": "20141021", "iso": "20141021", "name": "2014-10-21", + "periodType": "DAILY", "startDate": "2014-10-21", }, Object { + "displayName": "October 22, 2014", "endDate": "2014-10-22", "id": "20141022", "iso": "20141022", "name": "2014-10-22", + "periodType": "DAILY", "startDate": "2014-10-22", }, Object { + "displayName": "October 23, 2014", "endDate": "2014-10-23", "id": "20141023", "iso": "20141023", "name": "2014-10-23", + "periodType": "DAILY", "startDate": "2014-10-23", }, Object { + "displayName": "October 24, 2014", "endDate": "2014-10-24", "id": "20141024", "iso": "20141024", "name": "2014-10-24", + "periodType": "DAILY", "startDate": "2014-10-24", }, Object { + "displayName": "October 25, 2014", "endDate": "2014-10-25", "id": "20141025", "iso": "20141025", "name": "2014-10-25", + "periodType": "DAILY", "startDate": "2014-10-25", }, Object { + "displayName": "October 26, 2014", "endDate": "2014-10-26", "id": "20141026", "iso": "20141026", "name": "2014-10-26", + "periodType": "DAILY", "startDate": "2014-10-26", }, Object { + "displayName": "October 27, 2014", "endDate": "2014-10-27", "id": "20141027", "iso": "20141027", "name": "2014-10-27", + "periodType": "DAILY", "startDate": "2014-10-27", }, Object { + "displayName": "October 28, 2014", "endDate": "2014-10-28", "id": "20141028", "iso": "20141028", "name": "2014-10-28", + "periodType": "DAILY", "startDate": "2014-10-28", }, Object { + "displayName": "October 29, 2014", "endDate": "2014-10-29", "id": "20141029", "iso": "20141029", "name": "2014-10-29", + "periodType": "DAILY", "startDate": "2014-10-29", }, Object { + "displayName": "October 30, 2014", "endDate": "2014-10-30", "id": "20141030", "iso": "20141030", "name": "2014-10-30", + "periodType": "DAILY", "startDate": "2014-10-30", }, Object { + "displayName": "October 31, 2014", "endDate": "2014-10-31", "id": "20141031", "iso": "20141031", "name": "2014-10-31", + "periodType": "DAILY", "startDate": "2014-10-31", }, Object { + "displayName": "November 1, 2014", "endDate": "2014-11-01", "id": "20141101", "iso": "20141101", "name": "2014-11-01", + "periodType": "DAILY", "startDate": "2014-11-01", }, Object { + "displayName": "November 2, 2014", "endDate": "2014-11-02", "id": "20141102", "iso": "20141102", "name": "2014-11-02", + "periodType": "DAILY", "startDate": "2014-11-02", }, Object { + "displayName": "November 3, 2014", "endDate": "2014-11-03", "id": "20141103", "iso": "20141103", "name": "2014-11-03", + "periodType": "DAILY", "startDate": "2014-11-03", }, Object { + "displayName": "November 4, 2014", "endDate": "2014-11-04", "id": "20141104", "iso": "20141104", "name": "2014-11-04", + "periodType": "DAILY", "startDate": "2014-11-04", }, Object { + "displayName": "November 5, 2014", "endDate": "2014-11-05", "id": "20141105", "iso": "20141105", "name": "2014-11-05", + "periodType": "DAILY", "startDate": "2014-11-05", }, Object { + "displayName": "November 6, 2014", "endDate": "2014-11-06", "id": "20141106", "iso": "20141106", "name": "2014-11-06", + "periodType": "DAILY", "startDate": "2014-11-06", }, Object { + "displayName": "November 7, 2014", "endDate": "2014-11-07", "id": "20141107", "iso": "20141107", "name": "2014-11-07", + "periodType": "DAILY", "startDate": "2014-11-07", }, Object { + "displayName": "November 8, 2014", "endDate": "2014-11-08", "id": "20141108", "iso": "20141108", "name": "2014-11-08", + "periodType": "DAILY", "startDate": "2014-11-08", }, Object { + "displayName": "November 9, 2014", "endDate": "2014-11-09", "id": "20141109", "iso": "20141109", "name": "2014-11-09", + "periodType": "DAILY", "startDate": "2014-11-09", }, Object { + "displayName": "November 10, 2014", "endDate": "2014-11-10", "id": "20141110", "iso": "20141110", "name": "2014-11-10", + "periodType": "DAILY", "startDate": "2014-11-10", }, Object { + "displayName": "November 11, 2014", "endDate": "2014-11-11", "id": "20141111", "iso": "20141111", "name": "2014-11-11", + "periodType": "DAILY", "startDate": "2014-11-11", }, Object { + "displayName": "November 12, 2014", "endDate": "2014-11-12", "id": "20141112", "iso": "20141112", "name": "2014-11-12", + "periodType": "DAILY", "startDate": "2014-11-12", }, Object { + "displayName": "November 13, 2014", "endDate": "2014-11-13", "id": "20141113", "iso": "20141113", "name": "2014-11-13", + "periodType": "DAILY", "startDate": "2014-11-13", }, Object { + "displayName": "November 14, 2014", "endDate": "2014-11-14", "id": "20141114", "iso": "20141114", "name": "2014-11-14", + "periodType": "DAILY", "startDate": "2014-11-14", }, Object { + "displayName": "November 15, 2014", "endDate": "2014-11-15", "id": "20141115", "iso": "20141115", "name": "2014-11-15", + "periodType": "DAILY", "startDate": "2014-11-15", }, Object { + "displayName": "November 16, 2014", "endDate": "2014-11-16", "id": "20141116", "iso": "20141116", "name": "2014-11-16", + "periodType": "DAILY", "startDate": "2014-11-16", }, Object { + "displayName": "November 17, 2014", "endDate": "2014-11-17", "id": "20141117", "iso": "20141117", "name": "2014-11-17", + "periodType": "DAILY", "startDate": "2014-11-17", }, Object { + "displayName": "November 18, 2014", "endDate": "2014-11-18", "id": "20141118", "iso": "20141118", "name": "2014-11-18", + "periodType": "DAILY", "startDate": "2014-11-18", }, Object { + "displayName": "November 19, 2014", "endDate": "2014-11-19", "id": "20141119", "iso": "20141119", "name": "2014-11-19", + "periodType": "DAILY", "startDate": "2014-11-19", }, Object { + "displayName": "November 20, 2014", "endDate": "2014-11-20", "id": "20141120", "iso": "20141120", "name": "2014-11-20", + "periodType": "DAILY", "startDate": "2014-11-20", }, Object { + "displayName": "November 21, 2014", "endDate": "2014-11-21", "id": "20141121", "iso": "20141121", "name": "2014-11-21", + "periodType": "DAILY", "startDate": "2014-11-21", }, Object { + "displayName": "November 22, 2014", "endDate": "2014-11-22", "id": "20141122", "iso": "20141122", "name": "2014-11-22", + "periodType": "DAILY", "startDate": "2014-11-22", }, Object { + "displayName": "November 23, 2014", "endDate": "2014-11-23", "id": "20141123", "iso": "20141123", "name": "2014-11-23", + "periodType": "DAILY", "startDate": "2014-11-23", }, Object { + "displayName": "November 24, 2014", "endDate": "2014-11-24", "id": "20141124", "iso": "20141124", "name": "2014-11-24", + "periodType": "DAILY", "startDate": "2014-11-24", }, Object { + "displayName": "November 25, 2014", "endDate": "2014-11-25", "id": "20141125", "iso": "20141125", "name": "2014-11-25", + "periodType": "DAILY", "startDate": "2014-11-25", }, Object { + "displayName": "November 26, 2014", "endDate": "2014-11-26", "id": "20141126", "iso": "20141126", "name": "2014-11-26", + "periodType": "DAILY", "startDate": "2014-11-26", }, Object { + "displayName": "November 27, 2014", "endDate": "2014-11-27", "id": "20141127", "iso": "20141127", "name": "2014-11-27", + "periodType": "DAILY", "startDate": "2014-11-27", }, Object { + "displayName": "November 28, 2014", "endDate": "2014-11-28", "id": "20141128", "iso": "20141128", "name": "2014-11-28", + "periodType": "DAILY", "startDate": "2014-11-28", }, Object { + "displayName": "November 29, 2014", "endDate": "2014-11-29", "id": "20141129", "iso": "20141129", "name": "2014-11-29", + "periodType": "DAILY", "startDate": "2014-11-29", }, Object { + "displayName": "November 30, 2014", "endDate": "2014-11-30", "id": "20141130", "iso": "20141130", "name": "2014-11-30", + "periodType": "DAILY", "startDate": "2014-11-30", }, Object { + "displayName": "December 1, 2014", "endDate": "2014-12-01", "id": "20141201", "iso": "20141201", "name": "2014-12-01", + "periodType": "DAILY", "startDate": "2014-12-01", }, Object { + "displayName": "December 2, 2014", "endDate": "2014-12-02", "id": "20141202", "iso": "20141202", "name": "2014-12-02", + "periodType": "DAILY", "startDate": "2014-12-02", }, Object { + "displayName": "December 3, 2014", "endDate": "2014-12-03", "id": "20141203", "iso": "20141203", "name": "2014-12-03", + "periodType": "DAILY", "startDate": "2014-12-03", }, Object { + "displayName": "December 4, 2014", "endDate": "2014-12-04", "id": "20141204", "iso": "20141204", "name": "2014-12-04", + "periodType": "DAILY", "startDate": "2014-12-04", }, Object { + "displayName": "December 5, 2014", "endDate": "2014-12-05", "id": "20141205", "iso": "20141205", "name": "2014-12-05", + "periodType": "DAILY", "startDate": "2014-12-05", }, Object { + "displayName": "December 6, 2014", "endDate": "2014-12-06", "id": "20141206", "iso": "20141206", "name": "2014-12-06", + "periodType": "DAILY", "startDate": "2014-12-06", }, Object { + "displayName": "December 7, 2014", "endDate": "2014-12-07", "id": "20141207", "iso": "20141207", "name": "2014-12-07", + "periodType": "DAILY", "startDate": "2014-12-07", }, Object { + "displayName": "December 8, 2014", "endDate": "2014-12-08", "id": "20141208", "iso": "20141208", "name": "2014-12-08", + "periodType": "DAILY", "startDate": "2014-12-08", }, Object { + "displayName": "December 9, 2014", "endDate": "2014-12-09", "id": "20141209", "iso": "20141209", "name": "2014-12-09", + "periodType": "DAILY", "startDate": "2014-12-09", }, Object { + "displayName": "December 10, 2014", "endDate": "2014-12-10", "id": "20141210", "iso": "20141210", "name": "2014-12-10", + "periodType": "DAILY", "startDate": "2014-12-10", }, Object { + "displayName": "December 11, 2014", "endDate": "2014-12-11", "id": "20141211", "iso": "20141211", "name": "2014-12-11", + "periodType": "DAILY", "startDate": "2014-12-11", }, Object { + "displayName": "December 12, 2014", "endDate": "2014-12-12", "id": "20141212", "iso": "20141212", "name": "2014-12-12", + "periodType": "DAILY", "startDate": "2014-12-12", }, Object { + "displayName": "December 13, 2014", "endDate": "2014-12-13", "id": "20141213", "iso": "20141213", "name": "2014-12-13", + "periodType": "DAILY", "startDate": "2014-12-13", }, Object { + "displayName": "December 14, 2014", "endDate": "2014-12-14", "id": "20141214", "iso": "20141214", "name": "2014-12-14", + "periodType": "DAILY", "startDate": "2014-12-14", }, Object { + "displayName": "December 15, 2014", "endDate": "2014-12-15", "id": "20141215", "iso": "20141215", "name": "2014-12-15", + "periodType": "DAILY", "startDate": "2014-12-15", }, Object { + "displayName": "December 16, 2014", "endDate": "2014-12-16", "id": "20141216", "iso": "20141216", "name": "2014-12-16", + "periodType": "DAILY", "startDate": "2014-12-16", }, Object { + "displayName": "December 17, 2014", "endDate": "2014-12-17", "id": "20141217", "iso": "20141217", "name": "2014-12-17", + "periodType": "DAILY", "startDate": "2014-12-17", }, Object { + "displayName": "December 18, 2014", "endDate": "2014-12-18", "id": "20141218", "iso": "20141218", "name": "2014-12-18", + "periodType": "DAILY", "startDate": "2014-12-18", }, Object { + "displayName": "December 19, 2014", "endDate": "2014-12-19", "id": "20141219", "iso": "20141219", "name": "2014-12-19", + "periodType": "DAILY", "startDate": "2014-12-19", }, Object { + "displayName": "December 20, 2014", "endDate": "2014-12-20", "id": "20141220", "iso": "20141220", "name": "2014-12-20", + "periodType": "DAILY", "startDate": "2014-12-20", }, Object { + "displayName": "December 21, 2014", "endDate": "2014-12-21", "id": "20141221", "iso": "20141221", "name": "2014-12-21", + "periodType": "DAILY", "startDate": "2014-12-21", }, Object { + "displayName": "December 22, 2014", "endDate": "2014-12-22", "id": "20141222", "iso": "20141222", "name": "2014-12-22", + "periodType": "DAILY", "startDate": "2014-12-22", }, Object { + "displayName": "December 23, 2014", "endDate": "2014-12-23", "id": "20141223", "iso": "20141223", "name": "2014-12-23", + "periodType": "DAILY", "startDate": "2014-12-23", }, Object { + "displayName": "December 24, 2014", "endDate": "2014-12-24", "id": "20141224", "iso": "20141224", "name": "2014-12-24", + "periodType": "DAILY", "startDate": "2014-12-24", }, Object { + "displayName": "December 25, 2014", "endDate": "2014-12-25", "id": "20141225", "iso": "20141225", "name": "2014-12-25", + "periodType": "DAILY", "startDate": "2014-12-25", }, Object { + "displayName": "December 26, 2014", "endDate": "2014-12-26", "id": "20141226", "iso": "20141226", "name": "2014-12-26", + "periodType": "DAILY", "startDate": "2014-12-26", }, Object { + "displayName": "December 27, 2014", "endDate": "2014-12-27", "id": "20141227", "iso": "20141227", "name": "2014-12-27", + "periodType": "DAILY", "startDate": "2014-12-27", }, Object { + "displayName": "December 28, 2014", "endDate": "2014-12-28", "id": "20141228", "iso": "20141228", "name": "2014-12-28", + "periodType": "DAILY", "startDate": "2014-12-28", }, Object { + "displayName": "December 29, 2014", "endDate": "2014-12-29", "id": "20141229", "iso": "20141229", "name": "2014-12-29", + "periodType": "DAILY", "startDate": "2014-12-29", }, Object { + "displayName": "December 30, 2014", "endDate": "2014-12-30", "id": "20141230", "iso": "20141230", "name": "2014-12-30", + "periodType": "DAILY", "startDate": "2014-12-30", }, Object { + "displayName": "December 31, 2014", "endDate": "2014-12-31", "id": "20141231", "iso": "20141231", "name": "2014-12-31", + "periodType": "DAILY", "startDate": "2014-12-31", }, ], @@ -2815,63 +3609,93 @@ Object { "name": "Financial year (Start April)", "options": Array [ Object { + "displayName": "April 2005 - March 2006", "endDate": "2006-03-31", "id": "2005April", + "iso": "2005April", "name": "April 2005 - March 2006", + "periodType": "FYAPR", "startDate": "2005-04-01", }, Object { + "displayName": "April 2006 - March 2007", "endDate": "2007-03-31", "id": "2006April", + "iso": "2006April", "name": "April 2006 - March 2007", + "periodType": "FYAPR", "startDate": "2006-04-01", }, Object { + "displayName": "April 2007 - March 2008", "endDate": "2008-03-31", "id": "2007April", + "iso": "2007April", "name": "April 2007 - March 2008", + "periodType": "FYAPR", "startDate": "2007-04-01", }, Object { + "displayName": "April 2008 - March 2009", "endDate": "2009-03-31", "id": "2008April", + "iso": "2008April", "name": "April 2008 - March 2009", + "periodType": "FYAPR", "startDate": "2008-04-01", }, Object { + "displayName": "April 2009 - March 2010", "endDate": "2010-03-31", "id": "2009April", + "iso": "2009April", "name": "April 2009 - March 2010", + "periodType": "FYAPR", "startDate": "2009-04-01", }, Object { + "displayName": "April 2010 - March 2011", "endDate": "2011-03-31", "id": "2010April", + "iso": "2010April", "name": "April 2010 - March 2011", + "periodType": "FYAPR", "startDate": "2010-04-01", }, Object { + "displayName": "April 2011 - March 2012", "endDate": "2012-03-31", "id": "2011April", + "iso": "2011April", "name": "April 2011 - March 2012", + "periodType": "FYAPR", "startDate": "2011-04-01", }, Object { + "displayName": "April 2012 - March 2013", "endDate": "2013-03-31", "id": "2012April", + "iso": "2012April", "name": "April 2012 - March 2013", + "periodType": "FYAPR", "startDate": "2012-04-01", }, Object { + "displayName": "April 2013 - March 2014", "endDate": "2014-03-31", "id": "2013April", + "iso": "2013April", "name": "April 2013 - March 2014", + "periodType": "FYAPR", "startDate": "2013-04-01", }, Object { + "displayName": "April 2014 - March 2015", "endDate": "2015-03-31", "id": "2014April", + "iso": "2014April", "name": "April 2014 - March 2015", + "periodType": "FYAPR", "startDate": "2014-04-01", }, ], @@ -2885,63 +3709,93 @@ Object { "name": "Financial year (Start July)", "options": Array [ Object { + "displayName": "July 2005 - June 2006", "endDate": "2006-06-30", "id": "2005July", + "iso": "2005July", "name": "July 2005 - June 2006", + "periodType": "FYJUL", "startDate": "2005-07-01", }, Object { + "displayName": "July 2006 - June 2007", "endDate": "2007-06-30", "id": "2006July", + "iso": "2006July", "name": "July 2006 - June 2007", + "periodType": "FYJUL", "startDate": "2006-07-01", }, Object { + "displayName": "July 2007 - June 2008", "endDate": "2008-06-30", "id": "2007July", + "iso": "2007July", "name": "July 2007 - June 2008", + "periodType": "FYJUL", "startDate": "2007-07-01", }, Object { + "displayName": "July 2008 - June 2009", "endDate": "2009-06-30", "id": "2008July", + "iso": "2008July", "name": "July 2008 - June 2009", + "periodType": "FYJUL", "startDate": "2008-07-01", }, Object { + "displayName": "July 2009 - June 2010", "endDate": "2010-06-30", "id": "2009July", + "iso": "2009July", "name": "July 2009 - June 2010", + "periodType": "FYJUL", "startDate": "2009-07-01", }, Object { + "displayName": "July 2010 - June 2011", "endDate": "2011-06-30", "id": "2010July", + "iso": "2010July", "name": "July 2010 - June 2011", + "periodType": "FYJUL", "startDate": "2010-07-01", }, Object { + "displayName": "July 2011 - June 2012", "endDate": "2012-06-30", "id": "2011July", + "iso": "2011July", "name": "July 2011 - June 2012", + "periodType": "FYJUL", "startDate": "2011-07-01", }, Object { + "displayName": "July 2012 - June 2013", "endDate": "2013-06-30", "id": "2012July", + "iso": "2012July", "name": "July 2012 - June 2013", + "periodType": "FYJUL", "startDate": "2012-07-01", }, Object { + "displayName": "July 2013 - June 2014", "endDate": "2014-06-30", "id": "2013July", + "iso": "2013July", "name": "July 2013 - June 2014", + "periodType": "FYJUL", "startDate": "2013-07-01", }, Object { + "displayName": "July 2014 - June 2015", "endDate": "2015-06-30", "id": "2014July", + "iso": "2014July", "name": "July 2014 - June 2015", + "periodType": "FYJUL", "startDate": "2014-07-01", }, ], @@ -2955,63 +3809,93 @@ Object { "name": "Financial year (Start November)", "options": Array [ Object { + "displayName": "November 2005 - October 2006", "endDate": "2006-10-31", "id": "2005Nov", + "iso": "2005Nov", "name": "November 2005 - October 2006", + "periodType": "FYNOV", "startDate": "2005-11-01", }, Object { + "displayName": "November 2006 - October 2007", "endDate": "2007-10-31", "id": "2006Nov", + "iso": "2006Nov", "name": "November 2006 - October 2007", + "periodType": "FYNOV", "startDate": "2006-11-01", }, Object { + "displayName": "November 2007 - October 2008", "endDate": "2008-10-31", "id": "2007Nov", + "iso": "2007Nov", "name": "November 2007 - October 2008", + "periodType": "FYNOV", "startDate": "2007-11-01", }, Object { + "displayName": "November 2008 - October 2009", "endDate": "2009-10-31", "id": "2008Nov", + "iso": "2008Nov", "name": "November 2008 - October 2009", + "periodType": "FYNOV", "startDate": "2008-11-01", }, Object { + "displayName": "November 2009 - October 2010", "endDate": "2010-10-31", "id": "2009Nov", + "iso": "2009Nov", "name": "November 2009 - October 2010", + "periodType": "FYNOV", "startDate": "2009-11-01", }, Object { + "displayName": "November 2010 - October 2011", "endDate": "2011-10-31", "id": "2010Nov", + "iso": "2010Nov", "name": "November 2010 - October 2011", + "periodType": "FYNOV", "startDate": "2010-11-01", }, Object { + "displayName": "November 2011 - October 2012", "endDate": "2012-10-31", "id": "2011Nov", + "iso": "2011Nov", "name": "November 2011 - October 2012", + "periodType": "FYNOV", "startDate": "2011-11-01", }, Object { + "displayName": "November 2012 - October 2013", "endDate": "2013-10-31", "id": "2012Nov", + "iso": "2012Nov", "name": "November 2012 - October 2013", + "periodType": "FYNOV", "startDate": "2012-11-01", }, Object { + "displayName": "November 2013 - October 2014", "endDate": "2014-10-31", "id": "2013Nov", + "iso": "2013Nov", "name": "November 2013 - October 2014", + "periodType": "FYNOV", "startDate": "2013-11-01", }, Object { + "displayName": "November 2014 - October 2015", "endDate": "2015-10-31", "id": "2014Nov", + "iso": "2014Nov", "name": "November 2014 - October 2015", + "periodType": "FYNOV", "startDate": "2014-11-01", }, ], @@ -3025,63 +3909,93 @@ Object { "name": "Financial year (Start October)", "options": Array [ Object { + "displayName": "October 2005 - September 2006", "endDate": "2006-09-30", "id": "2005Oct", + "iso": "2005Oct", "name": "October 2005 - September 2006", + "periodType": "FYOCT", "startDate": "2005-10-01", }, Object { + "displayName": "October 2006 - September 2007", "endDate": "2007-09-30", "id": "2006Oct", + "iso": "2006Oct", "name": "October 2006 - September 2007", + "periodType": "FYOCT", "startDate": "2006-10-01", }, Object { + "displayName": "October 2007 - September 2008", "endDate": "2008-09-30", "id": "2007Oct", + "iso": "2007Oct", "name": "October 2007 - September 2008", + "periodType": "FYOCT", "startDate": "2007-10-01", }, Object { + "displayName": "October 2008 - September 2009", "endDate": "2009-09-30", "id": "2008Oct", + "iso": "2008Oct", "name": "October 2008 - September 2009", + "periodType": "FYOCT", "startDate": "2008-10-01", }, Object { + "displayName": "October 2009 - September 2010", "endDate": "2010-09-30", "id": "2009Oct", + "iso": "2009Oct", "name": "October 2009 - September 2010", + "periodType": "FYOCT", "startDate": "2009-10-01", }, Object { + "displayName": "October 2010 - September 2011", "endDate": "2011-09-30", "id": "2010Oct", + "iso": "2010Oct", "name": "October 2010 - September 2011", + "periodType": "FYOCT", "startDate": "2010-10-01", }, Object { + "displayName": "October 2011 - September 2012", "endDate": "2012-09-30", "id": "2011Oct", + "iso": "2011Oct", "name": "October 2011 - September 2012", + "periodType": "FYOCT", "startDate": "2011-10-01", }, Object { + "displayName": "October 2012 - September 2013", "endDate": "2013-09-30", "id": "2012Oct", + "iso": "2012Oct", "name": "October 2012 - September 2013", + "periodType": "FYOCT", "startDate": "2012-10-01", }, Object { + "displayName": "October 2013 - September 2014", "endDate": "2014-09-30", "id": "2013Oct", + "iso": "2013Oct", "name": "October 2013 - September 2014", + "periodType": "FYOCT", "startDate": "2013-10-01", }, Object { + "displayName": "October 2014 - September 2015", "endDate": "2015-09-30", "id": "2014Oct", + "iso": "2014Oct", "name": "October 2014 - September 2015", + "periodType": "FYOCT", "startDate": "2014-10-01", }, ], @@ -3095,87 +4009,111 @@ Object { "name": "Monthly", "options": Array [ Object { + "displayName": "January 2014", "endDate": "2014-01-31", "id": "201401", "iso": "201401", "name": "January 2014", + "periodType": "MONTHLY", "startDate": "2014-01-01", }, Object { + "displayName": "February 2014", "endDate": "2014-02-28", "id": "201402", "iso": "201402", "name": "February 2014", + "periodType": "MONTHLY", "startDate": "2014-02-01", }, Object { + "displayName": "March 2014", "endDate": "2014-03-31", "id": "201403", "iso": "201403", "name": "March 2014", + "periodType": "MONTHLY", "startDate": "2014-03-01", }, Object { + "displayName": "April 2014", "endDate": "2014-04-30", "id": "201404", "iso": "201404", "name": "April 2014", + "periodType": "MONTHLY", "startDate": "2014-04-01", }, Object { + "displayName": "May 2014", "endDate": "2014-05-31", "id": "201405", "iso": "201405", "name": "May 2014", + "periodType": "MONTHLY", "startDate": "2014-05-01", }, Object { + "displayName": "June 2014", "endDate": "2014-06-30", "id": "201406", "iso": "201406", "name": "June 2014", + "periodType": "MONTHLY", "startDate": "2014-06-01", }, Object { + "displayName": "July 2014", "endDate": "2014-07-31", "id": "201407", "iso": "201407", "name": "July 2014", + "periodType": "MONTHLY", "startDate": "2014-07-01", }, Object { + "displayName": "August 2014", "endDate": "2014-08-31", "id": "201408", "iso": "201408", "name": "August 2014", + "periodType": "MONTHLY", "startDate": "2014-08-01", }, Object { + "displayName": "September 2014", "endDate": "2014-09-30", "id": "201409", "iso": "201409", "name": "September 2014", + "periodType": "MONTHLY", "startDate": "2014-09-01", }, Object { + "displayName": "October 2014", "endDate": "2014-10-31", "id": "201410", "iso": "201410", "name": "October 2014", + "periodType": "MONTHLY", "startDate": "2014-10-01", }, Object { + "displayName": "November 2014", "endDate": "2014-11-30", "id": "201411", "iso": "201411", "name": "November 2014", + "periodType": "MONTHLY", "startDate": "2014-11-01", }, Object { + "displayName": "December 2014", "endDate": "2014-12-31", "id": "201412", "iso": "201412", "name": "December 2014", + "periodType": "MONTHLY", "startDate": "2014-12-01", }, ], @@ -3189,31 +4127,39 @@ Object { "name": "Quarterly", "options": Array [ Object { + "displayName": "January - March 2014", "endDate": "2014-03-31", "id": "2014Q1", "iso": "2014Q1", "name": "January - March 2014", + "periodType": "QUARTERLY", "startDate": "2014-01-01", }, Object { + "displayName": "April - June 2014", "endDate": "2014-06-30", "id": "2014Q2", "iso": "2014Q2", "name": "April - June 2014", + "periodType": "QUARTERLY", "startDate": "2014-04-01", }, Object { + "displayName": "July - September 2014", "endDate": "2014-09-30", "id": "2014Q3", "iso": "2014Q3", "name": "July - September 2014", + "periodType": "QUARTERLY", "startDate": "2014-07-01", }, Object { + "displayName": "October - December 2014", "endDate": "2014-12-31", "id": "2014Q4", "iso": "2014Q4", "name": "October - December 2014", + "periodType": "QUARTERLY", "startDate": "2014-10-01", }, ], @@ -3227,17 +4173,21 @@ Object { "name": "Six-monthly", "options": Array [ Object { + "displayName": "January - June 2014", "endDate": "2014-06-30", "id": "2014S1", "iso": "2014S1", "name": "January - June 2014", + "periodType": "SIXMONTHLY", "startDate": "2014-01-01", }, Object { + "displayName": "July - December 2014", "endDate": "2014-12-31", "id": "2014S2", "iso": "2014S2", "name": "July - December 2014", + "periodType": "SIXMONTHLY", "startDate": "2014-07-01", }, ], @@ -3251,17 +4201,21 @@ Object { "name": "Six-monthly April", "options": Array [ Object { + "displayName": "April - September 2014", "endDate": "2014-09-30", "id": "2014AprilS1", "iso": "2014AprilS1", "name": "April - September 2014", + "periodType": "SIXMONTHLYAPR", "startDate": "2014-04-01", }, Object { + "displayName": "October 2014 - March 2015", "endDate": "2015-03-31", "id": "2014AprilS2", "iso": "2014AprilS2", "name": "October 2014 - March 2015", + "periodType": "SIXMONTHLYAPR", "startDate": "2014-10-01", }, ], @@ -3275,367 +4229,471 @@ Object { "name": "Weekly", "options": Array [ Object { + "displayName": "Week 1 - 2013-12-30 - 2014-01-05", "endDate": "2014-01-05", "id": "2014W1", "iso": "2014W1", "name": "Week 1 - 2013-12-30 - 2014-01-05", + "periodType": "WEEKLY", "startDate": "2013-12-30", }, Object { + "displayName": "Week 2 - 2014-01-06 - 2014-01-12", "endDate": "2014-01-12", "id": "2014W2", "iso": "2014W2", "name": "Week 2 - 2014-01-06 - 2014-01-12", + "periodType": "WEEKLY", "startDate": "2014-01-06", }, Object { + "displayName": "Week 3 - 2014-01-13 - 2014-01-19", "endDate": "2014-01-19", "id": "2014W3", "iso": "2014W3", "name": "Week 3 - 2014-01-13 - 2014-01-19", + "periodType": "WEEKLY", "startDate": "2014-01-13", }, Object { + "displayName": "Week 4 - 2014-01-20 - 2014-01-26", "endDate": "2014-01-26", "id": "2014W4", "iso": "2014W4", "name": "Week 4 - 2014-01-20 - 2014-01-26", + "periodType": "WEEKLY", "startDate": "2014-01-20", }, Object { + "displayName": "Week 5 - 2014-01-27 - 2014-02-02", "endDate": "2014-02-02", "id": "2014W5", "iso": "2014W5", "name": "Week 5 - 2014-01-27 - 2014-02-02", + "periodType": "WEEKLY", "startDate": "2014-01-27", }, Object { + "displayName": "Week 6 - 2014-02-03 - 2014-02-09", "endDate": "2014-02-09", "id": "2014W6", "iso": "2014W6", "name": "Week 6 - 2014-02-03 - 2014-02-09", + "periodType": "WEEKLY", "startDate": "2014-02-03", }, Object { + "displayName": "Week 7 - 2014-02-10 - 2014-02-16", "endDate": "2014-02-16", "id": "2014W7", "iso": "2014W7", "name": "Week 7 - 2014-02-10 - 2014-02-16", + "periodType": "WEEKLY", "startDate": "2014-02-10", }, Object { + "displayName": "Week 8 - 2014-02-17 - 2014-02-23", "endDate": "2014-02-23", "id": "2014W8", "iso": "2014W8", "name": "Week 8 - 2014-02-17 - 2014-02-23", + "periodType": "WEEKLY", "startDate": "2014-02-17", }, Object { + "displayName": "Week 9 - 2014-02-24 - 2014-03-02", "endDate": "2014-03-02", "id": "2014W9", "iso": "2014W9", "name": "Week 9 - 2014-02-24 - 2014-03-02", + "periodType": "WEEKLY", "startDate": "2014-02-24", }, Object { + "displayName": "Week 10 - 2014-03-03 - 2014-03-09", "endDate": "2014-03-09", "id": "2014W10", "iso": "2014W10", "name": "Week 10 - 2014-03-03 - 2014-03-09", + "periodType": "WEEKLY", "startDate": "2014-03-03", }, Object { + "displayName": "Week 11 - 2014-03-10 - 2014-03-16", "endDate": "2014-03-16", "id": "2014W11", "iso": "2014W11", "name": "Week 11 - 2014-03-10 - 2014-03-16", + "periodType": "WEEKLY", "startDate": "2014-03-10", }, Object { + "displayName": "Week 12 - 2014-03-17 - 2014-03-23", "endDate": "2014-03-23", "id": "2014W12", "iso": "2014W12", "name": "Week 12 - 2014-03-17 - 2014-03-23", + "periodType": "WEEKLY", "startDate": "2014-03-17", }, Object { + "displayName": "Week 13 - 2014-03-24 - 2014-03-30", "endDate": "2014-03-30", "id": "2014W13", "iso": "2014W13", "name": "Week 13 - 2014-03-24 - 2014-03-30", + "periodType": "WEEKLY", "startDate": "2014-03-24", }, Object { + "displayName": "Week 14 - 2014-03-31 - 2014-04-06", "endDate": "2014-04-06", "id": "2014W14", "iso": "2014W14", "name": "Week 14 - 2014-03-31 - 2014-04-06", + "periodType": "WEEKLY", "startDate": "2014-03-31", }, Object { + "displayName": "Week 15 - 2014-04-07 - 2014-04-13", "endDate": "2014-04-13", "id": "2014W15", "iso": "2014W15", "name": "Week 15 - 2014-04-07 - 2014-04-13", + "periodType": "WEEKLY", "startDate": "2014-04-07", }, Object { + "displayName": "Week 16 - 2014-04-14 - 2014-04-20", "endDate": "2014-04-20", "id": "2014W16", "iso": "2014W16", "name": "Week 16 - 2014-04-14 - 2014-04-20", + "periodType": "WEEKLY", "startDate": "2014-04-14", }, Object { + "displayName": "Week 17 - 2014-04-21 - 2014-04-27", "endDate": "2014-04-27", "id": "2014W17", "iso": "2014W17", "name": "Week 17 - 2014-04-21 - 2014-04-27", + "periodType": "WEEKLY", "startDate": "2014-04-21", }, Object { + "displayName": "Week 18 - 2014-04-28 - 2014-05-04", "endDate": "2014-05-04", "id": "2014W18", "iso": "2014W18", "name": "Week 18 - 2014-04-28 - 2014-05-04", + "periodType": "WEEKLY", "startDate": "2014-04-28", }, Object { + "displayName": "Week 19 - 2014-05-05 - 2014-05-11", "endDate": "2014-05-11", "id": "2014W19", "iso": "2014W19", "name": "Week 19 - 2014-05-05 - 2014-05-11", + "periodType": "WEEKLY", "startDate": "2014-05-05", }, Object { + "displayName": "Week 20 - 2014-05-12 - 2014-05-18", "endDate": "2014-05-18", "id": "2014W20", "iso": "2014W20", "name": "Week 20 - 2014-05-12 - 2014-05-18", + "periodType": "WEEKLY", "startDate": "2014-05-12", }, Object { + "displayName": "Week 21 - 2014-05-19 - 2014-05-25", "endDate": "2014-05-25", "id": "2014W21", "iso": "2014W21", "name": "Week 21 - 2014-05-19 - 2014-05-25", + "periodType": "WEEKLY", "startDate": "2014-05-19", }, Object { + "displayName": "Week 22 - 2014-05-26 - 2014-06-01", "endDate": "2014-06-01", "id": "2014W22", "iso": "2014W22", "name": "Week 22 - 2014-05-26 - 2014-06-01", + "periodType": "WEEKLY", "startDate": "2014-05-26", }, Object { + "displayName": "Week 23 - 2014-06-02 - 2014-06-08", "endDate": "2014-06-08", "id": "2014W23", "iso": "2014W23", "name": "Week 23 - 2014-06-02 - 2014-06-08", + "periodType": "WEEKLY", "startDate": "2014-06-02", }, Object { + "displayName": "Week 24 - 2014-06-09 - 2014-06-15", "endDate": "2014-06-15", "id": "2014W24", "iso": "2014W24", "name": "Week 24 - 2014-06-09 - 2014-06-15", + "periodType": "WEEKLY", "startDate": "2014-06-09", }, Object { + "displayName": "Week 25 - 2014-06-16 - 2014-06-22", "endDate": "2014-06-22", "id": "2014W25", "iso": "2014W25", "name": "Week 25 - 2014-06-16 - 2014-06-22", + "periodType": "WEEKLY", "startDate": "2014-06-16", }, Object { + "displayName": "Week 26 - 2014-06-23 - 2014-06-29", "endDate": "2014-06-29", "id": "2014W26", "iso": "2014W26", "name": "Week 26 - 2014-06-23 - 2014-06-29", + "periodType": "WEEKLY", "startDate": "2014-06-23", }, Object { + "displayName": "Week 27 - 2014-06-30 - 2014-07-06", "endDate": "2014-07-06", "id": "2014W27", "iso": "2014W27", "name": "Week 27 - 2014-06-30 - 2014-07-06", + "periodType": "WEEKLY", "startDate": "2014-06-30", }, Object { + "displayName": "Week 28 - 2014-07-07 - 2014-07-13", "endDate": "2014-07-13", "id": "2014W28", "iso": "2014W28", "name": "Week 28 - 2014-07-07 - 2014-07-13", + "periodType": "WEEKLY", "startDate": "2014-07-07", }, Object { + "displayName": "Week 29 - 2014-07-14 - 2014-07-20", "endDate": "2014-07-20", "id": "2014W29", "iso": "2014W29", "name": "Week 29 - 2014-07-14 - 2014-07-20", + "periodType": "WEEKLY", "startDate": "2014-07-14", }, Object { + "displayName": "Week 30 - 2014-07-21 - 2014-07-27", "endDate": "2014-07-27", "id": "2014W30", "iso": "2014W30", "name": "Week 30 - 2014-07-21 - 2014-07-27", + "periodType": "WEEKLY", "startDate": "2014-07-21", }, Object { + "displayName": "Week 31 - 2014-07-28 - 2014-08-03", "endDate": "2014-08-03", "id": "2014W31", "iso": "2014W31", "name": "Week 31 - 2014-07-28 - 2014-08-03", + "periodType": "WEEKLY", "startDate": "2014-07-28", }, Object { + "displayName": "Week 32 - 2014-08-04 - 2014-08-10", "endDate": "2014-08-10", "id": "2014W32", "iso": "2014W32", "name": "Week 32 - 2014-08-04 - 2014-08-10", + "periodType": "WEEKLY", "startDate": "2014-08-04", }, Object { + "displayName": "Week 33 - 2014-08-11 - 2014-08-17", "endDate": "2014-08-17", "id": "2014W33", "iso": "2014W33", "name": "Week 33 - 2014-08-11 - 2014-08-17", + "periodType": "WEEKLY", "startDate": "2014-08-11", }, Object { + "displayName": "Week 34 - 2014-08-18 - 2014-08-24", "endDate": "2014-08-24", "id": "2014W34", "iso": "2014W34", "name": "Week 34 - 2014-08-18 - 2014-08-24", + "periodType": "WEEKLY", "startDate": "2014-08-18", }, Object { + "displayName": "Week 35 - 2014-08-25 - 2014-08-31", "endDate": "2014-08-31", "id": "2014W35", "iso": "2014W35", "name": "Week 35 - 2014-08-25 - 2014-08-31", + "periodType": "WEEKLY", "startDate": "2014-08-25", }, Object { + "displayName": "Week 36 - 2014-09-01 - 2014-09-07", "endDate": "2014-09-07", "id": "2014W36", "iso": "2014W36", "name": "Week 36 - 2014-09-01 - 2014-09-07", + "periodType": "WEEKLY", "startDate": "2014-09-01", }, Object { + "displayName": "Week 37 - 2014-09-08 - 2014-09-14", "endDate": "2014-09-14", "id": "2014W37", "iso": "2014W37", "name": "Week 37 - 2014-09-08 - 2014-09-14", + "periodType": "WEEKLY", "startDate": "2014-09-08", }, Object { + "displayName": "Week 38 - 2014-09-15 - 2014-09-21", "endDate": "2014-09-21", "id": "2014W38", "iso": "2014W38", "name": "Week 38 - 2014-09-15 - 2014-09-21", + "periodType": "WEEKLY", "startDate": "2014-09-15", }, Object { + "displayName": "Week 39 - 2014-09-22 - 2014-09-28", "endDate": "2014-09-28", "id": "2014W39", "iso": "2014W39", "name": "Week 39 - 2014-09-22 - 2014-09-28", + "periodType": "WEEKLY", "startDate": "2014-09-22", }, Object { + "displayName": "Week 40 - 2014-09-29 - 2014-10-05", "endDate": "2014-10-05", "id": "2014W40", "iso": "2014W40", "name": "Week 40 - 2014-09-29 - 2014-10-05", + "periodType": "WEEKLY", "startDate": "2014-09-29", }, Object { + "displayName": "Week 41 - 2014-10-06 - 2014-10-12", "endDate": "2014-10-12", "id": "2014W41", "iso": "2014W41", "name": "Week 41 - 2014-10-06 - 2014-10-12", + "periodType": "WEEKLY", "startDate": "2014-10-06", }, Object { + "displayName": "Week 42 - 2014-10-13 - 2014-10-19", "endDate": "2014-10-19", "id": "2014W42", "iso": "2014W42", "name": "Week 42 - 2014-10-13 - 2014-10-19", + "periodType": "WEEKLY", "startDate": "2014-10-13", }, Object { + "displayName": "Week 43 - 2014-10-20 - 2014-10-26", "endDate": "2014-10-26", "id": "2014W43", "iso": "2014W43", "name": "Week 43 - 2014-10-20 - 2014-10-26", + "periodType": "WEEKLY", "startDate": "2014-10-20", }, Object { + "displayName": "Week 44 - 2014-10-27 - 2014-11-02", "endDate": "2014-11-02", "id": "2014W44", "iso": "2014W44", "name": "Week 44 - 2014-10-27 - 2014-11-02", + "periodType": "WEEKLY", "startDate": "2014-10-27", }, Object { + "displayName": "Week 45 - 2014-11-03 - 2014-11-09", "endDate": "2014-11-09", "id": "2014W45", "iso": "2014W45", "name": "Week 45 - 2014-11-03 - 2014-11-09", + "periodType": "WEEKLY", "startDate": "2014-11-03", }, Object { + "displayName": "Week 46 - 2014-11-10 - 2014-11-16", "endDate": "2014-11-16", "id": "2014W46", "iso": "2014W46", "name": "Week 46 - 2014-11-10 - 2014-11-16", + "periodType": "WEEKLY", "startDate": "2014-11-10", }, Object { + "displayName": "Week 47 - 2014-11-17 - 2014-11-23", "endDate": "2014-11-23", "id": "2014W47", "iso": "2014W47", "name": "Week 47 - 2014-11-17 - 2014-11-23", + "periodType": "WEEKLY", "startDate": "2014-11-17", }, Object { + "displayName": "Week 48 - 2014-11-24 - 2014-11-30", "endDate": "2014-11-30", "id": "2014W48", "iso": "2014W48", "name": "Week 48 - 2014-11-24 - 2014-11-30", + "periodType": "WEEKLY", "startDate": "2014-11-24", }, Object { + "displayName": "Week 49 - 2014-12-01 - 2014-12-07", "endDate": "2014-12-07", "id": "2014W49", "iso": "2014W49", "name": "Week 49 - 2014-12-01 - 2014-12-07", + "periodType": "WEEKLY", "startDate": "2014-12-01", }, Object { + "displayName": "Week 50 - 2014-12-08 - 2014-12-14", "endDate": "2014-12-14", "id": "2014W50", "iso": "2014W50", "name": "Week 50 - 2014-12-08 - 2014-12-14", + "periodType": "WEEKLY", "startDate": "2014-12-08", }, Object { + "displayName": "Week 51 - 2014-12-15 - 2014-12-21", "endDate": "2014-12-21", "id": "2014W51", "iso": "2014W51", "name": "Week 51 - 2014-12-15 - 2014-12-21", + "periodType": "WEEKLY", "startDate": "2014-12-15", }, Object { + "displayName": "Week 52 - 2014-12-22 - 2014-12-28", "endDate": "2014-12-28", "id": "2014W52", "iso": "2014W52", "name": "Week 52 - 2014-12-22 - 2014-12-28", + "periodType": "WEEKLY", "startDate": "2014-12-22", }, ], @@ -3649,367 +4707,471 @@ Object { "name": "Weekly (Start Saturday)", "options": Array [ Object { + "displayName": "Week 1 - 2014-01-04 - 2014-01-10", "endDate": "2014-01-10", "id": "2014SatW1", "iso": "2014SatW1", "name": "Week 1 - 2014-01-04 - 2014-01-10", + "periodType": "WEEKLY", "startDate": "2014-01-04", }, Object { + "displayName": "Week 2 - 2014-01-11 - 2014-01-17", "endDate": "2014-01-17", "id": "2014SatW2", "iso": "2014SatW2", "name": "Week 2 - 2014-01-11 - 2014-01-17", + "periodType": "WEEKLY", "startDate": "2014-01-11", }, Object { + "displayName": "Week 3 - 2014-01-18 - 2014-01-24", "endDate": "2014-01-24", "id": "2014SatW3", "iso": "2014SatW3", "name": "Week 3 - 2014-01-18 - 2014-01-24", + "periodType": "WEEKLY", "startDate": "2014-01-18", }, Object { + "displayName": "Week 4 - 2014-01-25 - 2014-01-31", "endDate": "2014-01-31", "id": "2014SatW4", "iso": "2014SatW4", "name": "Week 4 - 2014-01-25 - 2014-01-31", + "periodType": "WEEKLY", "startDate": "2014-01-25", }, Object { + "displayName": "Week 5 - 2014-02-01 - 2014-02-07", "endDate": "2014-02-07", "id": "2014SatW5", "iso": "2014SatW5", "name": "Week 5 - 2014-02-01 - 2014-02-07", + "periodType": "WEEKLY", "startDate": "2014-02-01", }, Object { + "displayName": "Week 6 - 2014-02-08 - 2014-02-14", "endDate": "2014-02-14", "id": "2014SatW6", "iso": "2014SatW6", "name": "Week 6 - 2014-02-08 - 2014-02-14", + "periodType": "WEEKLY", "startDate": "2014-02-08", }, Object { + "displayName": "Week 7 - 2014-02-15 - 2014-02-21", "endDate": "2014-02-21", "id": "2014SatW7", "iso": "2014SatW7", "name": "Week 7 - 2014-02-15 - 2014-02-21", + "periodType": "WEEKLY", "startDate": "2014-02-15", }, Object { + "displayName": "Week 8 - 2014-02-22 - 2014-02-28", "endDate": "2014-02-28", "id": "2014SatW8", "iso": "2014SatW8", "name": "Week 8 - 2014-02-22 - 2014-02-28", + "periodType": "WEEKLY", "startDate": "2014-02-22", }, Object { + "displayName": "Week 9 - 2014-03-01 - 2014-03-07", "endDate": "2014-03-07", "id": "2014SatW9", "iso": "2014SatW9", "name": "Week 9 - 2014-03-01 - 2014-03-07", + "periodType": "WEEKLY", "startDate": "2014-03-01", }, Object { + "displayName": "Week 10 - 2014-03-08 - 2014-03-14", "endDate": "2014-03-14", "id": "2014SatW10", "iso": "2014SatW10", "name": "Week 10 - 2014-03-08 - 2014-03-14", + "periodType": "WEEKLY", "startDate": "2014-03-08", }, Object { + "displayName": "Week 11 - 2014-03-15 - 2014-03-21", "endDate": "2014-03-21", "id": "2014SatW11", "iso": "2014SatW11", "name": "Week 11 - 2014-03-15 - 2014-03-21", + "periodType": "WEEKLY", "startDate": "2014-03-15", }, Object { + "displayName": "Week 12 - 2014-03-22 - 2014-03-28", "endDate": "2014-03-28", "id": "2014SatW12", "iso": "2014SatW12", "name": "Week 12 - 2014-03-22 - 2014-03-28", + "periodType": "WEEKLY", "startDate": "2014-03-22", }, Object { + "displayName": "Week 13 - 2014-03-29 - 2014-04-04", "endDate": "2014-04-04", "id": "2014SatW13", "iso": "2014SatW13", "name": "Week 13 - 2014-03-29 - 2014-04-04", + "periodType": "WEEKLY", "startDate": "2014-03-29", }, Object { + "displayName": "Week 14 - 2014-04-05 - 2014-04-11", "endDate": "2014-04-11", "id": "2014SatW14", "iso": "2014SatW14", "name": "Week 14 - 2014-04-05 - 2014-04-11", + "periodType": "WEEKLY", "startDate": "2014-04-05", }, Object { + "displayName": "Week 15 - 2014-04-12 - 2014-04-18", "endDate": "2014-04-18", "id": "2014SatW15", "iso": "2014SatW15", "name": "Week 15 - 2014-04-12 - 2014-04-18", + "periodType": "WEEKLY", "startDate": "2014-04-12", }, Object { + "displayName": "Week 16 - 2014-04-19 - 2014-04-25", "endDate": "2014-04-25", "id": "2014SatW16", "iso": "2014SatW16", "name": "Week 16 - 2014-04-19 - 2014-04-25", + "periodType": "WEEKLY", "startDate": "2014-04-19", }, Object { + "displayName": "Week 17 - 2014-04-26 - 2014-05-02", "endDate": "2014-05-02", "id": "2014SatW17", "iso": "2014SatW17", "name": "Week 17 - 2014-04-26 - 2014-05-02", + "periodType": "WEEKLY", "startDate": "2014-04-26", }, Object { + "displayName": "Week 18 - 2014-05-03 - 2014-05-09", "endDate": "2014-05-09", "id": "2014SatW18", "iso": "2014SatW18", "name": "Week 18 - 2014-05-03 - 2014-05-09", + "periodType": "WEEKLY", "startDate": "2014-05-03", }, Object { + "displayName": "Week 19 - 2014-05-10 - 2014-05-16", "endDate": "2014-05-16", "id": "2014SatW19", "iso": "2014SatW19", "name": "Week 19 - 2014-05-10 - 2014-05-16", + "periodType": "WEEKLY", "startDate": "2014-05-10", }, Object { + "displayName": "Week 20 - 2014-05-17 - 2014-05-23", "endDate": "2014-05-23", "id": "2014SatW20", "iso": "2014SatW20", "name": "Week 20 - 2014-05-17 - 2014-05-23", + "periodType": "WEEKLY", "startDate": "2014-05-17", }, Object { + "displayName": "Week 21 - 2014-05-24 - 2014-05-30", "endDate": "2014-05-30", "id": "2014SatW21", "iso": "2014SatW21", "name": "Week 21 - 2014-05-24 - 2014-05-30", + "periodType": "WEEKLY", "startDate": "2014-05-24", }, Object { + "displayName": "Week 22 - 2014-05-31 - 2014-06-06", "endDate": "2014-06-06", "id": "2014SatW22", "iso": "2014SatW22", "name": "Week 22 - 2014-05-31 - 2014-06-06", + "periodType": "WEEKLY", "startDate": "2014-05-31", }, Object { + "displayName": "Week 23 - 2014-06-07 - 2014-06-13", "endDate": "2014-06-13", "id": "2014SatW23", "iso": "2014SatW23", "name": "Week 23 - 2014-06-07 - 2014-06-13", + "periodType": "WEEKLY", "startDate": "2014-06-07", }, Object { + "displayName": "Week 24 - 2014-06-14 - 2014-06-20", "endDate": "2014-06-20", "id": "2014SatW24", "iso": "2014SatW24", "name": "Week 24 - 2014-06-14 - 2014-06-20", + "periodType": "WEEKLY", "startDate": "2014-06-14", }, Object { + "displayName": "Week 25 - 2014-06-21 - 2014-06-27", "endDate": "2014-06-27", "id": "2014SatW25", "iso": "2014SatW25", "name": "Week 25 - 2014-06-21 - 2014-06-27", + "periodType": "WEEKLY", "startDate": "2014-06-21", }, Object { + "displayName": "Week 26 - 2014-06-28 - 2014-07-04", "endDate": "2014-07-04", "id": "2014SatW26", "iso": "2014SatW26", "name": "Week 26 - 2014-06-28 - 2014-07-04", + "periodType": "WEEKLY", "startDate": "2014-06-28", }, Object { + "displayName": "Week 27 - 2014-07-05 - 2014-07-11", "endDate": "2014-07-11", "id": "2014SatW27", "iso": "2014SatW27", "name": "Week 27 - 2014-07-05 - 2014-07-11", + "periodType": "WEEKLY", "startDate": "2014-07-05", }, Object { + "displayName": "Week 28 - 2014-07-12 - 2014-07-18", "endDate": "2014-07-18", "id": "2014SatW28", "iso": "2014SatW28", "name": "Week 28 - 2014-07-12 - 2014-07-18", + "periodType": "WEEKLY", "startDate": "2014-07-12", }, Object { + "displayName": "Week 29 - 2014-07-19 - 2014-07-25", "endDate": "2014-07-25", "id": "2014SatW29", "iso": "2014SatW29", "name": "Week 29 - 2014-07-19 - 2014-07-25", + "periodType": "WEEKLY", "startDate": "2014-07-19", }, Object { + "displayName": "Week 30 - 2014-07-26 - 2014-08-01", "endDate": "2014-08-01", "id": "2014SatW30", "iso": "2014SatW30", "name": "Week 30 - 2014-07-26 - 2014-08-01", + "periodType": "WEEKLY", "startDate": "2014-07-26", }, Object { + "displayName": "Week 31 - 2014-08-02 - 2014-08-08", "endDate": "2014-08-08", "id": "2014SatW31", "iso": "2014SatW31", "name": "Week 31 - 2014-08-02 - 2014-08-08", + "periodType": "WEEKLY", "startDate": "2014-08-02", }, Object { + "displayName": "Week 32 - 2014-08-09 - 2014-08-15", "endDate": "2014-08-15", "id": "2014SatW32", "iso": "2014SatW32", "name": "Week 32 - 2014-08-09 - 2014-08-15", + "periodType": "WEEKLY", "startDate": "2014-08-09", }, Object { + "displayName": "Week 33 - 2014-08-16 - 2014-08-22", "endDate": "2014-08-22", "id": "2014SatW33", "iso": "2014SatW33", "name": "Week 33 - 2014-08-16 - 2014-08-22", + "periodType": "WEEKLY", "startDate": "2014-08-16", }, Object { + "displayName": "Week 34 - 2014-08-23 - 2014-08-29", "endDate": "2014-08-29", "id": "2014SatW34", "iso": "2014SatW34", "name": "Week 34 - 2014-08-23 - 2014-08-29", + "periodType": "WEEKLY", "startDate": "2014-08-23", }, Object { + "displayName": "Week 35 - 2014-08-30 - 2014-09-05", "endDate": "2014-09-05", "id": "2014SatW35", "iso": "2014SatW35", "name": "Week 35 - 2014-08-30 - 2014-09-05", + "periodType": "WEEKLY", "startDate": "2014-08-30", }, Object { + "displayName": "Week 36 - 2014-09-06 - 2014-09-12", "endDate": "2014-09-12", "id": "2014SatW36", "iso": "2014SatW36", "name": "Week 36 - 2014-09-06 - 2014-09-12", + "periodType": "WEEKLY", "startDate": "2014-09-06", }, Object { + "displayName": "Week 37 - 2014-09-13 - 2014-09-19", "endDate": "2014-09-19", "id": "2014SatW37", "iso": "2014SatW37", "name": "Week 37 - 2014-09-13 - 2014-09-19", + "periodType": "WEEKLY", "startDate": "2014-09-13", }, Object { + "displayName": "Week 38 - 2014-09-20 - 2014-09-26", "endDate": "2014-09-26", "id": "2014SatW38", "iso": "2014SatW38", "name": "Week 38 - 2014-09-20 - 2014-09-26", + "periodType": "WEEKLY", "startDate": "2014-09-20", }, Object { + "displayName": "Week 39 - 2014-09-27 - 2014-10-03", "endDate": "2014-10-03", "id": "2014SatW39", "iso": "2014SatW39", "name": "Week 39 - 2014-09-27 - 2014-10-03", + "periodType": "WEEKLY", "startDate": "2014-09-27", }, Object { + "displayName": "Week 40 - 2014-10-04 - 2014-10-10", "endDate": "2014-10-10", "id": "2014SatW40", "iso": "2014SatW40", "name": "Week 40 - 2014-10-04 - 2014-10-10", + "periodType": "WEEKLY", "startDate": "2014-10-04", }, Object { + "displayName": "Week 41 - 2014-10-11 - 2014-10-17", "endDate": "2014-10-17", "id": "2014SatW41", "iso": "2014SatW41", "name": "Week 41 - 2014-10-11 - 2014-10-17", + "periodType": "WEEKLY", "startDate": "2014-10-11", }, Object { + "displayName": "Week 42 - 2014-10-18 - 2014-10-24", "endDate": "2014-10-24", "id": "2014SatW42", "iso": "2014SatW42", "name": "Week 42 - 2014-10-18 - 2014-10-24", + "periodType": "WEEKLY", "startDate": "2014-10-18", }, Object { + "displayName": "Week 43 - 2014-10-25 - 2014-10-31", "endDate": "2014-10-31", "id": "2014SatW43", "iso": "2014SatW43", "name": "Week 43 - 2014-10-25 - 2014-10-31", + "periodType": "WEEKLY", "startDate": "2014-10-25", }, Object { + "displayName": "Week 44 - 2014-11-01 - 2014-11-07", "endDate": "2014-11-07", "id": "2014SatW44", "iso": "2014SatW44", "name": "Week 44 - 2014-11-01 - 2014-11-07", + "periodType": "WEEKLY", "startDate": "2014-11-01", }, Object { + "displayName": "Week 45 - 2014-11-08 - 2014-11-14", "endDate": "2014-11-14", "id": "2014SatW45", "iso": "2014SatW45", "name": "Week 45 - 2014-11-08 - 2014-11-14", + "periodType": "WEEKLY", "startDate": "2014-11-08", }, Object { + "displayName": "Week 46 - 2014-11-15 - 2014-11-21", "endDate": "2014-11-21", "id": "2014SatW46", "iso": "2014SatW46", "name": "Week 46 - 2014-11-15 - 2014-11-21", + "periodType": "WEEKLY", "startDate": "2014-11-15", }, Object { + "displayName": "Week 47 - 2014-11-22 - 2014-11-28", "endDate": "2014-11-28", "id": "2014SatW47", "iso": "2014SatW47", "name": "Week 47 - 2014-11-22 - 2014-11-28", + "periodType": "WEEKLY", "startDate": "2014-11-22", }, Object { + "displayName": "Week 48 - 2014-11-29 - 2014-12-05", "endDate": "2014-12-05", "id": "2014SatW48", "iso": "2014SatW48", "name": "Week 48 - 2014-11-29 - 2014-12-05", + "periodType": "WEEKLY", "startDate": "2014-11-29", }, Object { + "displayName": "Week 49 - 2014-12-06 - 2014-12-12", "endDate": "2014-12-12", "id": "2014SatW49", "iso": "2014SatW49", "name": "Week 49 - 2014-12-06 - 2014-12-12", + "periodType": "WEEKLY", "startDate": "2014-12-06", }, Object { + "displayName": "Week 50 - 2014-12-13 - 2014-12-19", "endDate": "2014-12-19", "id": "2014SatW50", "iso": "2014SatW50", "name": "Week 50 - 2014-12-13 - 2014-12-19", + "periodType": "WEEKLY", "startDate": "2014-12-13", }, Object { + "displayName": "Week 51 - 2014-12-20 - 2014-12-26", "endDate": "2014-12-26", "id": "2014SatW51", "iso": "2014SatW51", "name": "Week 51 - 2014-12-20 - 2014-12-26", + "periodType": "WEEKLY", "startDate": "2014-12-20", }, Object { + "displayName": "Week 52 - 2014-12-27 - 2015-01-02", "endDate": "2015-01-02", "id": "2014SatW52", "iso": "2014SatW52", "name": "Week 52 - 2014-12-27 - 2015-01-02", + "periodType": "WEEKLY", "startDate": "2014-12-27", }, ], @@ -4023,374 +5185,480 @@ Object { "name": "Weekly (Start Sunday)", "options": Array [ Object { + "displayName": "Week 1 - 2013-12-29 - 2014-01-04", "endDate": "2014-01-04", "id": "2014SunW1", "iso": "2014SunW1", "name": "Week 1 - 2013-12-29 - 2014-01-04", + "periodType": "WEEKLY", "startDate": "2013-12-29", }, Object { + "displayName": "Week 2 - 2014-01-05 - 2014-01-11", "endDate": "2014-01-11", "id": "2014SunW2", "iso": "2014SunW2", "name": "Week 2 - 2014-01-05 - 2014-01-11", + "periodType": "WEEKLY", "startDate": "2014-01-05", }, Object { + "displayName": "Week 3 - 2014-01-12 - 2014-01-18", "endDate": "2014-01-18", "id": "2014SunW3", "iso": "2014SunW3", "name": "Week 3 - 2014-01-12 - 2014-01-18", + "periodType": "WEEKLY", "startDate": "2014-01-12", }, Object { + "displayName": "Week 4 - 2014-01-19 - 2014-01-25", "endDate": "2014-01-25", "id": "2014SunW4", "iso": "2014SunW4", "name": "Week 4 - 2014-01-19 - 2014-01-25", + "periodType": "WEEKLY", "startDate": "2014-01-19", }, Object { + "displayName": "Week 5 - 2014-01-26 - 2014-02-01", "endDate": "2014-02-01", "id": "2014SunW5", "iso": "2014SunW5", "name": "Week 5 - 2014-01-26 - 2014-02-01", + "periodType": "WEEKLY", "startDate": "2014-01-26", }, Object { + "displayName": "Week 6 - 2014-02-02 - 2014-02-08", "endDate": "2014-02-08", "id": "2014SunW6", "iso": "2014SunW6", "name": "Week 6 - 2014-02-02 - 2014-02-08", + "periodType": "WEEKLY", "startDate": "2014-02-02", }, Object { + "displayName": "Week 7 - 2014-02-09 - 2014-02-15", "endDate": "2014-02-15", "id": "2014SunW7", "iso": "2014SunW7", "name": "Week 7 - 2014-02-09 - 2014-02-15", + "periodType": "WEEKLY", "startDate": "2014-02-09", }, Object { + "displayName": "Week 8 - 2014-02-16 - 2014-02-22", "endDate": "2014-02-22", "id": "2014SunW8", "iso": "2014SunW8", "name": "Week 8 - 2014-02-16 - 2014-02-22", + "periodType": "WEEKLY", "startDate": "2014-02-16", }, Object { + "displayName": "Week 9 - 2014-02-23 - 2014-03-01", "endDate": "2014-03-01", "id": "2014SunW9", "iso": "2014SunW9", "name": "Week 9 - 2014-02-23 - 2014-03-01", + "periodType": "WEEKLY", "startDate": "2014-02-23", }, Object { + "displayName": "Week 10 - 2014-03-02 - 2014-03-08", "endDate": "2014-03-08", "id": "2014SunW10", "iso": "2014SunW10", "name": "Week 10 - 2014-03-02 - 2014-03-08", + "periodType": "WEEKLY", "startDate": "2014-03-02", }, Object { + "displayName": "Week 11 - 2014-03-09 - 2014-03-15", "endDate": "2014-03-15", "id": "2014SunW11", "iso": "2014SunW11", "name": "Week 11 - 2014-03-09 - 2014-03-15", + "periodType": "WEEKLY", "startDate": "2014-03-09", }, Object { + "displayName": "Week 12 - 2014-03-16 - 2014-03-22", "endDate": "2014-03-22", "id": "2014SunW12", "iso": "2014SunW12", "name": "Week 12 - 2014-03-16 - 2014-03-22", + "periodType": "WEEKLY", "startDate": "2014-03-16", }, Object { + "displayName": "Week 13 - 2014-03-23 - 2014-03-29", "endDate": "2014-03-29", "id": "2014SunW13", "iso": "2014SunW13", "name": "Week 13 - 2014-03-23 - 2014-03-29", + "periodType": "WEEKLY", "startDate": "2014-03-23", }, Object { + "displayName": "Week 14 - 2014-03-30 - 2014-04-05", "endDate": "2014-04-05", "id": "2014SunW14", "iso": "2014SunW14", "name": "Week 14 - 2014-03-30 - 2014-04-05", + "periodType": "WEEKLY", "startDate": "2014-03-30", }, Object { + "displayName": "Week 15 - 2014-04-06 - 2014-04-12", "endDate": "2014-04-12", "id": "2014SunW15", "iso": "2014SunW15", "name": "Week 15 - 2014-04-06 - 2014-04-12", + "periodType": "WEEKLY", "startDate": "2014-04-06", }, Object { + "displayName": "Week 16 - 2014-04-13 - 2014-04-19", "endDate": "2014-04-19", "id": "2014SunW16", "iso": "2014SunW16", "name": "Week 16 - 2014-04-13 - 2014-04-19", + "periodType": "WEEKLY", "startDate": "2014-04-13", }, Object { + "displayName": "Week 17 - 2014-04-20 - 2014-04-26", "endDate": "2014-04-26", "id": "2014SunW17", "iso": "2014SunW17", "name": "Week 17 - 2014-04-20 - 2014-04-26", + "periodType": "WEEKLY", "startDate": "2014-04-20", }, Object { + "displayName": "Week 18 - 2014-04-27 - 2014-05-03", "endDate": "2014-05-03", "id": "2014SunW18", "iso": "2014SunW18", "name": "Week 18 - 2014-04-27 - 2014-05-03", + "periodType": "WEEKLY", "startDate": "2014-04-27", }, Object { + "displayName": "Week 19 - 2014-05-04 - 2014-05-10", "endDate": "2014-05-10", "id": "2014SunW19", "iso": "2014SunW19", "name": "Week 19 - 2014-05-04 - 2014-05-10", + "periodType": "WEEKLY", "startDate": "2014-05-04", }, Object { + "displayName": "Week 20 - 2014-05-11 - 2014-05-17", "endDate": "2014-05-17", "id": "2014SunW20", "iso": "2014SunW20", "name": "Week 20 - 2014-05-11 - 2014-05-17", + "periodType": "WEEKLY", "startDate": "2014-05-11", }, Object { + "displayName": "Week 21 - 2014-05-18 - 2014-05-24", "endDate": "2014-05-24", "id": "2014SunW21", "iso": "2014SunW21", "name": "Week 21 - 2014-05-18 - 2014-05-24", + "periodType": "WEEKLY", "startDate": "2014-05-18", }, Object { + "displayName": "Week 22 - 2014-05-25 - 2014-05-31", "endDate": "2014-05-31", "id": "2014SunW22", "iso": "2014SunW22", "name": "Week 22 - 2014-05-25 - 2014-05-31", + "periodType": "WEEKLY", "startDate": "2014-05-25", }, Object { + "displayName": "Week 23 - 2014-06-01 - 2014-06-07", "endDate": "2014-06-07", "id": "2014SunW23", "iso": "2014SunW23", "name": "Week 23 - 2014-06-01 - 2014-06-07", + "periodType": "WEEKLY", "startDate": "2014-06-01", }, Object { + "displayName": "Week 24 - 2014-06-08 - 2014-06-14", "endDate": "2014-06-14", "id": "2014SunW24", "iso": "2014SunW24", "name": "Week 24 - 2014-06-08 - 2014-06-14", + "periodType": "WEEKLY", "startDate": "2014-06-08", }, Object { + "displayName": "Week 25 - 2014-06-15 - 2014-06-21", "endDate": "2014-06-21", "id": "2014SunW25", "iso": "2014SunW25", "name": "Week 25 - 2014-06-15 - 2014-06-21", + "periodType": "WEEKLY", "startDate": "2014-06-15", }, Object { + "displayName": "Week 26 - 2014-06-22 - 2014-06-28", "endDate": "2014-06-28", "id": "2014SunW26", "iso": "2014SunW26", "name": "Week 26 - 2014-06-22 - 2014-06-28", + "periodType": "WEEKLY", "startDate": "2014-06-22", }, Object { + "displayName": "Week 27 - 2014-06-29 - 2014-07-05", "endDate": "2014-07-05", "id": "2014SunW27", "iso": "2014SunW27", "name": "Week 27 - 2014-06-29 - 2014-07-05", + "periodType": "WEEKLY", "startDate": "2014-06-29", }, Object { + "displayName": "Week 28 - 2014-07-06 - 2014-07-12", "endDate": "2014-07-12", "id": "2014SunW28", "iso": "2014SunW28", "name": "Week 28 - 2014-07-06 - 2014-07-12", + "periodType": "WEEKLY", "startDate": "2014-07-06", }, Object { + "displayName": "Week 29 - 2014-07-13 - 2014-07-19", "endDate": "2014-07-19", "id": "2014SunW29", "iso": "2014SunW29", "name": "Week 29 - 2014-07-13 - 2014-07-19", + "periodType": "WEEKLY", "startDate": "2014-07-13", }, Object { + "displayName": "Week 30 - 2014-07-20 - 2014-07-26", "endDate": "2014-07-26", "id": "2014SunW30", "iso": "2014SunW30", "name": "Week 30 - 2014-07-20 - 2014-07-26", + "periodType": "WEEKLY", "startDate": "2014-07-20", }, Object { + "displayName": "Week 31 - 2014-07-27 - 2014-08-02", "endDate": "2014-08-02", "id": "2014SunW31", "iso": "2014SunW31", "name": "Week 31 - 2014-07-27 - 2014-08-02", + "periodType": "WEEKLY", "startDate": "2014-07-27", }, Object { + "displayName": "Week 32 - 2014-08-03 - 2014-08-09", "endDate": "2014-08-09", "id": "2014SunW32", "iso": "2014SunW32", "name": "Week 32 - 2014-08-03 - 2014-08-09", + "periodType": "WEEKLY", "startDate": "2014-08-03", }, Object { + "displayName": "Week 33 - 2014-08-10 - 2014-08-16", "endDate": "2014-08-16", "id": "2014SunW33", "iso": "2014SunW33", "name": "Week 33 - 2014-08-10 - 2014-08-16", + "periodType": "WEEKLY", "startDate": "2014-08-10", }, Object { + "displayName": "Week 34 - 2014-08-17 - 2014-08-23", "endDate": "2014-08-23", "id": "2014SunW34", "iso": "2014SunW34", "name": "Week 34 - 2014-08-17 - 2014-08-23", + "periodType": "WEEKLY", "startDate": "2014-08-17", }, Object { + "displayName": "Week 35 - 2014-08-24 - 2014-08-30", "endDate": "2014-08-30", "id": "2014SunW35", "iso": "2014SunW35", "name": "Week 35 - 2014-08-24 - 2014-08-30", + "periodType": "WEEKLY", "startDate": "2014-08-24", }, Object { + "displayName": "Week 36 - 2014-08-31 - 2014-09-06", "endDate": "2014-09-06", "id": "2014SunW36", "iso": "2014SunW36", "name": "Week 36 - 2014-08-31 - 2014-09-06", + "periodType": "WEEKLY", "startDate": "2014-08-31", }, Object { + "displayName": "Week 37 - 2014-09-07 - 2014-09-13", "endDate": "2014-09-13", "id": "2014SunW37", "iso": "2014SunW37", "name": "Week 37 - 2014-09-07 - 2014-09-13", + "periodType": "WEEKLY", "startDate": "2014-09-07", }, Object { + "displayName": "Week 38 - 2014-09-14 - 2014-09-20", "endDate": "2014-09-20", "id": "2014SunW38", "iso": "2014SunW38", "name": "Week 38 - 2014-09-14 - 2014-09-20", + "periodType": "WEEKLY", "startDate": "2014-09-14", }, Object { + "displayName": "Week 39 - 2014-09-21 - 2014-09-27", "endDate": "2014-09-27", "id": "2014SunW39", "iso": "2014SunW39", "name": "Week 39 - 2014-09-21 - 2014-09-27", + "periodType": "WEEKLY", "startDate": "2014-09-21", }, Object { + "displayName": "Week 40 - 2014-09-28 - 2014-10-04", "endDate": "2014-10-04", "id": "2014SunW40", "iso": "2014SunW40", "name": "Week 40 - 2014-09-28 - 2014-10-04", + "periodType": "WEEKLY", "startDate": "2014-09-28", }, Object { + "displayName": "Week 41 - 2014-10-05 - 2014-10-11", "endDate": "2014-10-11", "id": "2014SunW41", "iso": "2014SunW41", "name": "Week 41 - 2014-10-05 - 2014-10-11", + "periodType": "WEEKLY", "startDate": "2014-10-05", }, Object { + "displayName": "Week 42 - 2014-10-12 - 2014-10-18", "endDate": "2014-10-18", "id": "2014SunW42", "iso": "2014SunW42", "name": "Week 42 - 2014-10-12 - 2014-10-18", + "periodType": "WEEKLY", "startDate": "2014-10-12", }, Object { + "displayName": "Week 43 - 2014-10-19 - 2014-10-25", "endDate": "2014-10-25", "id": "2014SunW43", "iso": "2014SunW43", "name": "Week 43 - 2014-10-19 - 2014-10-25", + "periodType": "WEEKLY", "startDate": "2014-10-19", }, Object { + "displayName": "Week 44 - 2014-10-26 - 2014-11-01", "endDate": "2014-11-01", "id": "2014SunW44", "iso": "2014SunW44", "name": "Week 44 - 2014-10-26 - 2014-11-01", + "periodType": "WEEKLY", "startDate": "2014-10-26", }, Object { + "displayName": "Week 45 - 2014-11-02 - 2014-11-08", "endDate": "2014-11-08", "id": "2014SunW45", "iso": "2014SunW45", "name": "Week 45 - 2014-11-02 - 2014-11-08", + "periodType": "WEEKLY", "startDate": "2014-11-02", }, Object { + "displayName": "Week 46 - 2014-11-09 - 2014-11-15", "endDate": "2014-11-15", "id": "2014SunW46", "iso": "2014SunW46", "name": "Week 46 - 2014-11-09 - 2014-11-15", + "periodType": "WEEKLY", "startDate": "2014-11-09", }, Object { + "displayName": "Week 47 - 2014-11-16 - 2014-11-22", "endDate": "2014-11-22", "id": "2014SunW47", "iso": "2014SunW47", "name": "Week 47 - 2014-11-16 - 2014-11-22", + "periodType": "WEEKLY", "startDate": "2014-11-16", }, Object { + "displayName": "Week 48 - 2014-11-23 - 2014-11-29", "endDate": "2014-11-29", "id": "2014SunW48", "iso": "2014SunW48", "name": "Week 48 - 2014-11-23 - 2014-11-29", + "periodType": "WEEKLY", "startDate": "2014-11-23", }, Object { + "displayName": "Week 49 - 2014-11-30 - 2014-12-06", "endDate": "2014-12-06", "id": "2014SunW49", "iso": "2014SunW49", "name": "Week 49 - 2014-11-30 - 2014-12-06", + "periodType": "WEEKLY", "startDate": "2014-11-30", }, Object { + "displayName": "Week 50 - 2014-12-07 - 2014-12-13", "endDate": "2014-12-13", "id": "2014SunW50", "iso": "2014SunW50", "name": "Week 50 - 2014-12-07 - 2014-12-13", + "periodType": "WEEKLY", "startDate": "2014-12-07", }, Object { + "displayName": "Week 51 - 2014-12-14 - 2014-12-20", "endDate": "2014-12-20", "id": "2014SunW51", "iso": "2014SunW51", "name": "Week 51 - 2014-12-14 - 2014-12-20", + "periodType": "WEEKLY", "startDate": "2014-12-14", }, Object { + "displayName": "Week 52 - 2014-12-21 - 2014-12-27", "endDate": "2014-12-27", "id": "2014SunW52", "iso": "2014SunW52", "name": "Week 52 - 2014-12-21 - 2014-12-27", + "periodType": "WEEKLY", "startDate": "2014-12-21", }, Object { + "displayName": "Week 53 - 2014-12-28 - 2015-01-03", "endDate": "2015-01-03", "id": "2014SunW53", "iso": "2014SunW53", "name": "Week 53 - 2014-12-28 - 2015-01-03", + "periodType": "WEEKLY", "startDate": "2014-12-28", }, ], @@ -4404,374 +5672,480 @@ Object { "name": "Weekly (Start Sunday)", "options": Array [ Object { + "displayName": "Week 1 - 2013-12-29 - 2014-01-04", "endDate": "2014-01-04", "id": "2014SunW1", "iso": "2014SunW1", "name": "Week 1 - 2013-12-29 - 2014-01-04", + "periodType": "WEEKLY", "startDate": "2013-12-29", }, Object { + "displayName": "Week 2 - 2014-01-05 - 2014-01-11", "endDate": "2014-01-11", "id": "2014SunW2", "iso": "2014SunW2", "name": "Week 2 - 2014-01-05 - 2014-01-11", + "periodType": "WEEKLY", "startDate": "2014-01-05", }, Object { + "displayName": "Week 3 - 2014-01-12 - 2014-01-18", "endDate": "2014-01-18", "id": "2014SunW3", "iso": "2014SunW3", "name": "Week 3 - 2014-01-12 - 2014-01-18", + "periodType": "WEEKLY", "startDate": "2014-01-12", }, Object { + "displayName": "Week 4 - 2014-01-19 - 2014-01-25", "endDate": "2014-01-25", "id": "2014SunW4", "iso": "2014SunW4", "name": "Week 4 - 2014-01-19 - 2014-01-25", + "periodType": "WEEKLY", "startDate": "2014-01-19", }, Object { + "displayName": "Week 5 - 2014-01-26 - 2014-02-01", "endDate": "2014-02-01", "id": "2014SunW5", "iso": "2014SunW5", "name": "Week 5 - 2014-01-26 - 2014-02-01", + "periodType": "WEEKLY", "startDate": "2014-01-26", }, Object { + "displayName": "Week 6 - 2014-02-02 - 2014-02-08", "endDate": "2014-02-08", "id": "2014SunW6", "iso": "2014SunW6", "name": "Week 6 - 2014-02-02 - 2014-02-08", + "periodType": "WEEKLY", "startDate": "2014-02-02", }, Object { + "displayName": "Week 7 - 2014-02-09 - 2014-02-15", "endDate": "2014-02-15", "id": "2014SunW7", "iso": "2014SunW7", "name": "Week 7 - 2014-02-09 - 2014-02-15", + "periodType": "WEEKLY", "startDate": "2014-02-09", }, Object { + "displayName": "Week 8 - 2014-02-16 - 2014-02-22", "endDate": "2014-02-22", "id": "2014SunW8", "iso": "2014SunW8", "name": "Week 8 - 2014-02-16 - 2014-02-22", + "periodType": "WEEKLY", "startDate": "2014-02-16", }, Object { + "displayName": "Week 9 - 2014-02-23 - 2014-03-01", "endDate": "2014-03-01", "id": "2014SunW9", "iso": "2014SunW9", "name": "Week 9 - 2014-02-23 - 2014-03-01", + "periodType": "WEEKLY", "startDate": "2014-02-23", }, Object { + "displayName": "Week 10 - 2014-03-02 - 2014-03-08", "endDate": "2014-03-08", "id": "2014SunW10", "iso": "2014SunW10", "name": "Week 10 - 2014-03-02 - 2014-03-08", + "periodType": "WEEKLY", "startDate": "2014-03-02", }, Object { + "displayName": "Week 11 - 2014-03-09 - 2014-03-15", "endDate": "2014-03-15", "id": "2014SunW11", "iso": "2014SunW11", "name": "Week 11 - 2014-03-09 - 2014-03-15", + "periodType": "WEEKLY", "startDate": "2014-03-09", }, Object { + "displayName": "Week 12 - 2014-03-16 - 2014-03-22", "endDate": "2014-03-22", "id": "2014SunW12", "iso": "2014SunW12", "name": "Week 12 - 2014-03-16 - 2014-03-22", + "periodType": "WEEKLY", "startDate": "2014-03-16", }, Object { + "displayName": "Week 13 - 2014-03-23 - 2014-03-29", "endDate": "2014-03-29", "id": "2014SunW13", "iso": "2014SunW13", "name": "Week 13 - 2014-03-23 - 2014-03-29", + "periodType": "WEEKLY", "startDate": "2014-03-23", }, Object { + "displayName": "Week 14 - 2014-03-30 - 2014-04-05", "endDate": "2014-04-05", "id": "2014SunW14", "iso": "2014SunW14", "name": "Week 14 - 2014-03-30 - 2014-04-05", + "periodType": "WEEKLY", "startDate": "2014-03-30", }, Object { + "displayName": "Week 15 - 2014-04-06 - 2014-04-12", "endDate": "2014-04-12", "id": "2014SunW15", "iso": "2014SunW15", "name": "Week 15 - 2014-04-06 - 2014-04-12", + "periodType": "WEEKLY", "startDate": "2014-04-06", }, Object { + "displayName": "Week 16 - 2014-04-13 - 2014-04-19", "endDate": "2014-04-19", "id": "2014SunW16", "iso": "2014SunW16", "name": "Week 16 - 2014-04-13 - 2014-04-19", + "periodType": "WEEKLY", "startDate": "2014-04-13", }, Object { + "displayName": "Week 17 - 2014-04-20 - 2014-04-26", "endDate": "2014-04-26", "id": "2014SunW17", "iso": "2014SunW17", "name": "Week 17 - 2014-04-20 - 2014-04-26", + "periodType": "WEEKLY", "startDate": "2014-04-20", }, Object { + "displayName": "Week 18 - 2014-04-27 - 2014-05-03", "endDate": "2014-05-03", "id": "2014SunW18", "iso": "2014SunW18", "name": "Week 18 - 2014-04-27 - 2014-05-03", + "periodType": "WEEKLY", "startDate": "2014-04-27", }, Object { + "displayName": "Week 19 - 2014-05-04 - 2014-05-10", "endDate": "2014-05-10", "id": "2014SunW19", "iso": "2014SunW19", "name": "Week 19 - 2014-05-04 - 2014-05-10", + "periodType": "WEEKLY", "startDate": "2014-05-04", }, Object { + "displayName": "Week 20 - 2014-05-11 - 2014-05-17", "endDate": "2014-05-17", "id": "2014SunW20", "iso": "2014SunW20", "name": "Week 20 - 2014-05-11 - 2014-05-17", + "periodType": "WEEKLY", "startDate": "2014-05-11", }, Object { + "displayName": "Week 21 - 2014-05-18 - 2014-05-24", "endDate": "2014-05-24", "id": "2014SunW21", "iso": "2014SunW21", "name": "Week 21 - 2014-05-18 - 2014-05-24", + "periodType": "WEEKLY", "startDate": "2014-05-18", }, Object { + "displayName": "Week 22 - 2014-05-25 - 2014-05-31", "endDate": "2014-05-31", "id": "2014SunW22", "iso": "2014SunW22", "name": "Week 22 - 2014-05-25 - 2014-05-31", + "periodType": "WEEKLY", "startDate": "2014-05-25", }, Object { + "displayName": "Week 23 - 2014-06-01 - 2014-06-07", "endDate": "2014-06-07", "id": "2014SunW23", "iso": "2014SunW23", "name": "Week 23 - 2014-06-01 - 2014-06-07", + "periodType": "WEEKLY", "startDate": "2014-06-01", }, Object { + "displayName": "Week 24 - 2014-06-08 - 2014-06-14", "endDate": "2014-06-14", "id": "2014SunW24", "iso": "2014SunW24", "name": "Week 24 - 2014-06-08 - 2014-06-14", + "periodType": "WEEKLY", "startDate": "2014-06-08", }, Object { + "displayName": "Week 25 - 2014-06-15 - 2014-06-21", "endDate": "2014-06-21", "id": "2014SunW25", "iso": "2014SunW25", "name": "Week 25 - 2014-06-15 - 2014-06-21", + "periodType": "WEEKLY", "startDate": "2014-06-15", }, Object { + "displayName": "Week 26 - 2014-06-22 - 2014-06-28", "endDate": "2014-06-28", "id": "2014SunW26", "iso": "2014SunW26", "name": "Week 26 - 2014-06-22 - 2014-06-28", + "periodType": "WEEKLY", "startDate": "2014-06-22", }, Object { + "displayName": "Week 27 - 2014-06-29 - 2014-07-05", "endDate": "2014-07-05", "id": "2014SunW27", "iso": "2014SunW27", "name": "Week 27 - 2014-06-29 - 2014-07-05", + "periodType": "WEEKLY", "startDate": "2014-06-29", }, Object { + "displayName": "Week 28 - 2014-07-06 - 2014-07-12", "endDate": "2014-07-12", "id": "2014SunW28", "iso": "2014SunW28", "name": "Week 28 - 2014-07-06 - 2014-07-12", + "periodType": "WEEKLY", "startDate": "2014-07-06", }, Object { + "displayName": "Week 29 - 2014-07-13 - 2014-07-19", "endDate": "2014-07-19", "id": "2014SunW29", "iso": "2014SunW29", "name": "Week 29 - 2014-07-13 - 2014-07-19", + "periodType": "WEEKLY", "startDate": "2014-07-13", }, Object { + "displayName": "Week 30 - 2014-07-20 - 2014-07-26", "endDate": "2014-07-26", "id": "2014SunW30", "iso": "2014SunW30", "name": "Week 30 - 2014-07-20 - 2014-07-26", + "periodType": "WEEKLY", "startDate": "2014-07-20", }, Object { + "displayName": "Week 31 - 2014-07-27 - 2014-08-02", "endDate": "2014-08-02", "id": "2014SunW31", "iso": "2014SunW31", "name": "Week 31 - 2014-07-27 - 2014-08-02", + "periodType": "WEEKLY", "startDate": "2014-07-27", }, Object { + "displayName": "Week 32 - 2014-08-03 - 2014-08-09", "endDate": "2014-08-09", "id": "2014SunW32", "iso": "2014SunW32", "name": "Week 32 - 2014-08-03 - 2014-08-09", + "periodType": "WEEKLY", "startDate": "2014-08-03", }, Object { + "displayName": "Week 33 - 2014-08-10 - 2014-08-16", "endDate": "2014-08-16", "id": "2014SunW33", "iso": "2014SunW33", "name": "Week 33 - 2014-08-10 - 2014-08-16", + "periodType": "WEEKLY", "startDate": "2014-08-10", }, Object { + "displayName": "Week 34 - 2014-08-17 - 2014-08-23", "endDate": "2014-08-23", "id": "2014SunW34", "iso": "2014SunW34", "name": "Week 34 - 2014-08-17 - 2014-08-23", + "periodType": "WEEKLY", "startDate": "2014-08-17", }, Object { + "displayName": "Week 35 - 2014-08-24 - 2014-08-30", "endDate": "2014-08-30", "id": "2014SunW35", "iso": "2014SunW35", "name": "Week 35 - 2014-08-24 - 2014-08-30", + "periodType": "WEEKLY", "startDate": "2014-08-24", }, Object { + "displayName": "Week 36 - 2014-08-31 - 2014-09-06", "endDate": "2014-09-06", "id": "2014SunW36", "iso": "2014SunW36", "name": "Week 36 - 2014-08-31 - 2014-09-06", + "periodType": "WEEKLY", "startDate": "2014-08-31", }, Object { + "displayName": "Week 37 - 2014-09-07 - 2014-09-13", "endDate": "2014-09-13", "id": "2014SunW37", "iso": "2014SunW37", "name": "Week 37 - 2014-09-07 - 2014-09-13", + "periodType": "WEEKLY", "startDate": "2014-09-07", }, Object { + "displayName": "Week 38 - 2014-09-14 - 2014-09-20", "endDate": "2014-09-20", "id": "2014SunW38", "iso": "2014SunW38", "name": "Week 38 - 2014-09-14 - 2014-09-20", + "periodType": "WEEKLY", "startDate": "2014-09-14", }, Object { + "displayName": "Week 39 - 2014-09-21 - 2014-09-27", "endDate": "2014-09-27", "id": "2014SunW39", "iso": "2014SunW39", "name": "Week 39 - 2014-09-21 - 2014-09-27", + "periodType": "WEEKLY", "startDate": "2014-09-21", }, Object { + "displayName": "Week 40 - 2014-09-28 - 2014-10-04", "endDate": "2014-10-04", "id": "2014SunW40", "iso": "2014SunW40", "name": "Week 40 - 2014-09-28 - 2014-10-04", + "periodType": "WEEKLY", "startDate": "2014-09-28", }, Object { + "displayName": "Week 41 - 2014-10-05 - 2014-10-11", "endDate": "2014-10-11", "id": "2014SunW41", "iso": "2014SunW41", "name": "Week 41 - 2014-10-05 - 2014-10-11", + "periodType": "WEEKLY", "startDate": "2014-10-05", }, Object { + "displayName": "Week 42 - 2014-10-12 - 2014-10-18", "endDate": "2014-10-18", "id": "2014SunW42", "iso": "2014SunW42", "name": "Week 42 - 2014-10-12 - 2014-10-18", + "periodType": "WEEKLY", "startDate": "2014-10-12", }, Object { + "displayName": "Week 43 - 2014-10-19 - 2014-10-25", "endDate": "2014-10-25", "id": "2014SunW43", "iso": "2014SunW43", "name": "Week 43 - 2014-10-19 - 2014-10-25", + "periodType": "WEEKLY", "startDate": "2014-10-19", }, Object { + "displayName": "Week 44 - 2014-10-26 - 2014-11-01", "endDate": "2014-11-01", "id": "2014SunW44", "iso": "2014SunW44", "name": "Week 44 - 2014-10-26 - 2014-11-01", + "periodType": "WEEKLY", "startDate": "2014-10-26", }, Object { + "displayName": "Week 45 - 2014-11-02 - 2014-11-08", "endDate": "2014-11-08", "id": "2014SunW45", "iso": "2014SunW45", "name": "Week 45 - 2014-11-02 - 2014-11-08", + "periodType": "WEEKLY", "startDate": "2014-11-02", }, Object { + "displayName": "Week 46 - 2014-11-09 - 2014-11-15", "endDate": "2014-11-15", "id": "2014SunW46", "iso": "2014SunW46", "name": "Week 46 - 2014-11-09 - 2014-11-15", + "periodType": "WEEKLY", "startDate": "2014-11-09", }, Object { + "displayName": "Week 47 - 2014-11-16 - 2014-11-22", "endDate": "2014-11-22", "id": "2014SunW47", "iso": "2014SunW47", "name": "Week 47 - 2014-11-16 - 2014-11-22", + "periodType": "WEEKLY", "startDate": "2014-11-16", }, Object { + "displayName": "Week 48 - 2014-11-23 - 2014-11-29", "endDate": "2014-11-29", "id": "2014SunW48", "iso": "2014SunW48", "name": "Week 48 - 2014-11-23 - 2014-11-29", + "periodType": "WEEKLY", "startDate": "2014-11-23", }, Object { + "displayName": "Week 49 - 2014-11-30 - 2014-12-06", "endDate": "2014-12-06", "id": "2014SunW49", "iso": "2014SunW49", "name": "Week 49 - 2014-11-30 - 2014-12-06", + "periodType": "WEEKLY", "startDate": "2014-11-30", }, Object { + "displayName": "Week 50 - 2014-12-07 - 2014-12-13", "endDate": "2014-12-13", "id": "2014SunW50", "iso": "2014SunW50", "name": "Week 50 - 2014-12-07 - 2014-12-13", + "periodType": "WEEKLY", "startDate": "2014-12-07", }, Object { + "displayName": "Week 51 - 2014-12-14 - 2014-12-20", "endDate": "2014-12-20", "id": "2014SunW51", "iso": "2014SunW51", "name": "Week 51 - 2014-12-14 - 2014-12-20", + "periodType": "WEEKLY", "startDate": "2014-12-14", }, Object { + "displayName": "Week 52 - 2014-12-21 - 2014-12-27", "endDate": "2014-12-27", "id": "2014SunW52", "iso": "2014SunW52", "name": "Week 52 - 2014-12-21 - 2014-12-27", + "periodType": "WEEKLY", "startDate": "2014-12-21", }, Object { + "displayName": "Week 53 - 2014-12-28 - 2015-01-03", "endDate": "2015-01-03", "id": "2014SunW53", "iso": "2014SunW53", "name": "Week 53 - 2014-12-28 - 2015-01-03", + "periodType": "WEEKLY", "startDate": "2014-12-28", }, ], @@ -4785,367 +6159,471 @@ Object { "name": "Weekly (Start Thursday)", "options": Array [ Object { + "displayName": "Week 1 - 2014-01-02 - 2014-01-08", "endDate": "2014-01-08", "id": "2014ThuW1", "iso": "2014ThuW1", "name": "Week 1 - 2014-01-02 - 2014-01-08", + "periodType": "WEEKLY", "startDate": "2014-01-02", }, Object { + "displayName": "Week 2 - 2014-01-09 - 2014-01-15", "endDate": "2014-01-15", "id": "2014ThuW2", "iso": "2014ThuW2", "name": "Week 2 - 2014-01-09 - 2014-01-15", + "periodType": "WEEKLY", "startDate": "2014-01-09", }, Object { + "displayName": "Week 3 - 2014-01-16 - 2014-01-22", "endDate": "2014-01-22", "id": "2014ThuW3", "iso": "2014ThuW3", "name": "Week 3 - 2014-01-16 - 2014-01-22", + "periodType": "WEEKLY", "startDate": "2014-01-16", }, Object { + "displayName": "Week 4 - 2014-01-23 - 2014-01-29", "endDate": "2014-01-29", "id": "2014ThuW4", "iso": "2014ThuW4", "name": "Week 4 - 2014-01-23 - 2014-01-29", + "periodType": "WEEKLY", "startDate": "2014-01-23", }, Object { + "displayName": "Week 5 - 2014-01-30 - 2014-02-05", "endDate": "2014-02-05", "id": "2014ThuW5", "iso": "2014ThuW5", "name": "Week 5 - 2014-01-30 - 2014-02-05", + "periodType": "WEEKLY", "startDate": "2014-01-30", }, Object { + "displayName": "Week 6 - 2014-02-06 - 2014-02-12", "endDate": "2014-02-12", "id": "2014ThuW6", "iso": "2014ThuW6", "name": "Week 6 - 2014-02-06 - 2014-02-12", + "periodType": "WEEKLY", "startDate": "2014-02-06", }, Object { + "displayName": "Week 7 - 2014-02-13 - 2014-02-19", "endDate": "2014-02-19", "id": "2014ThuW7", "iso": "2014ThuW7", "name": "Week 7 - 2014-02-13 - 2014-02-19", + "periodType": "WEEKLY", "startDate": "2014-02-13", }, Object { + "displayName": "Week 8 - 2014-02-20 - 2014-02-26", "endDate": "2014-02-26", "id": "2014ThuW8", "iso": "2014ThuW8", "name": "Week 8 - 2014-02-20 - 2014-02-26", + "periodType": "WEEKLY", "startDate": "2014-02-20", }, Object { + "displayName": "Week 9 - 2014-02-27 - 2014-03-05", "endDate": "2014-03-05", "id": "2014ThuW9", "iso": "2014ThuW9", "name": "Week 9 - 2014-02-27 - 2014-03-05", + "periodType": "WEEKLY", "startDate": "2014-02-27", }, Object { + "displayName": "Week 10 - 2014-03-06 - 2014-03-12", "endDate": "2014-03-12", "id": "2014ThuW10", "iso": "2014ThuW10", "name": "Week 10 - 2014-03-06 - 2014-03-12", + "periodType": "WEEKLY", "startDate": "2014-03-06", }, Object { + "displayName": "Week 11 - 2014-03-13 - 2014-03-19", "endDate": "2014-03-19", "id": "2014ThuW11", "iso": "2014ThuW11", "name": "Week 11 - 2014-03-13 - 2014-03-19", + "periodType": "WEEKLY", "startDate": "2014-03-13", }, Object { + "displayName": "Week 12 - 2014-03-20 - 2014-03-26", "endDate": "2014-03-26", "id": "2014ThuW12", "iso": "2014ThuW12", "name": "Week 12 - 2014-03-20 - 2014-03-26", + "periodType": "WEEKLY", "startDate": "2014-03-20", }, Object { + "displayName": "Week 13 - 2014-03-27 - 2014-04-02", "endDate": "2014-04-02", "id": "2014ThuW13", "iso": "2014ThuW13", "name": "Week 13 - 2014-03-27 - 2014-04-02", + "periodType": "WEEKLY", "startDate": "2014-03-27", }, Object { + "displayName": "Week 14 - 2014-04-03 - 2014-04-09", "endDate": "2014-04-09", "id": "2014ThuW14", "iso": "2014ThuW14", "name": "Week 14 - 2014-04-03 - 2014-04-09", + "periodType": "WEEKLY", "startDate": "2014-04-03", }, Object { + "displayName": "Week 15 - 2014-04-10 - 2014-04-16", "endDate": "2014-04-16", "id": "2014ThuW15", "iso": "2014ThuW15", "name": "Week 15 - 2014-04-10 - 2014-04-16", + "periodType": "WEEKLY", "startDate": "2014-04-10", }, Object { + "displayName": "Week 16 - 2014-04-17 - 2014-04-23", "endDate": "2014-04-23", "id": "2014ThuW16", "iso": "2014ThuW16", "name": "Week 16 - 2014-04-17 - 2014-04-23", + "periodType": "WEEKLY", "startDate": "2014-04-17", }, Object { + "displayName": "Week 17 - 2014-04-24 - 2014-04-30", "endDate": "2014-04-30", "id": "2014ThuW17", "iso": "2014ThuW17", "name": "Week 17 - 2014-04-24 - 2014-04-30", + "periodType": "WEEKLY", "startDate": "2014-04-24", }, Object { + "displayName": "Week 18 - 2014-05-01 - 2014-05-07", "endDate": "2014-05-07", "id": "2014ThuW18", "iso": "2014ThuW18", "name": "Week 18 - 2014-05-01 - 2014-05-07", + "periodType": "WEEKLY", "startDate": "2014-05-01", }, Object { + "displayName": "Week 19 - 2014-05-08 - 2014-05-14", "endDate": "2014-05-14", "id": "2014ThuW19", "iso": "2014ThuW19", "name": "Week 19 - 2014-05-08 - 2014-05-14", + "periodType": "WEEKLY", "startDate": "2014-05-08", }, Object { + "displayName": "Week 20 - 2014-05-15 - 2014-05-21", "endDate": "2014-05-21", "id": "2014ThuW20", "iso": "2014ThuW20", "name": "Week 20 - 2014-05-15 - 2014-05-21", + "periodType": "WEEKLY", "startDate": "2014-05-15", }, Object { + "displayName": "Week 21 - 2014-05-22 - 2014-05-28", "endDate": "2014-05-28", "id": "2014ThuW21", "iso": "2014ThuW21", "name": "Week 21 - 2014-05-22 - 2014-05-28", + "periodType": "WEEKLY", "startDate": "2014-05-22", }, Object { + "displayName": "Week 22 - 2014-05-29 - 2014-06-04", "endDate": "2014-06-04", "id": "2014ThuW22", "iso": "2014ThuW22", "name": "Week 22 - 2014-05-29 - 2014-06-04", + "periodType": "WEEKLY", "startDate": "2014-05-29", }, Object { + "displayName": "Week 23 - 2014-06-05 - 2014-06-11", "endDate": "2014-06-11", "id": "2014ThuW23", "iso": "2014ThuW23", "name": "Week 23 - 2014-06-05 - 2014-06-11", + "periodType": "WEEKLY", "startDate": "2014-06-05", }, Object { + "displayName": "Week 24 - 2014-06-12 - 2014-06-18", "endDate": "2014-06-18", "id": "2014ThuW24", "iso": "2014ThuW24", "name": "Week 24 - 2014-06-12 - 2014-06-18", + "periodType": "WEEKLY", "startDate": "2014-06-12", }, Object { + "displayName": "Week 25 - 2014-06-19 - 2014-06-25", "endDate": "2014-06-25", "id": "2014ThuW25", "iso": "2014ThuW25", "name": "Week 25 - 2014-06-19 - 2014-06-25", + "periodType": "WEEKLY", "startDate": "2014-06-19", }, Object { + "displayName": "Week 26 - 2014-06-26 - 2014-07-02", "endDate": "2014-07-02", "id": "2014ThuW26", "iso": "2014ThuW26", "name": "Week 26 - 2014-06-26 - 2014-07-02", + "periodType": "WEEKLY", "startDate": "2014-06-26", }, Object { + "displayName": "Week 27 - 2014-07-03 - 2014-07-09", "endDate": "2014-07-09", "id": "2014ThuW27", "iso": "2014ThuW27", "name": "Week 27 - 2014-07-03 - 2014-07-09", + "periodType": "WEEKLY", "startDate": "2014-07-03", }, Object { + "displayName": "Week 28 - 2014-07-10 - 2014-07-16", "endDate": "2014-07-16", "id": "2014ThuW28", "iso": "2014ThuW28", "name": "Week 28 - 2014-07-10 - 2014-07-16", + "periodType": "WEEKLY", "startDate": "2014-07-10", }, Object { + "displayName": "Week 29 - 2014-07-17 - 2014-07-23", "endDate": "2014-07-23", "id": "2014ThuW29", "iso": "2014ThuW29", "name": "Week 29 - 2014-07-17 - 2014-07-23", + "periodType": "WEEKLY", "startDate": "2014-07-17", }, Object { + "displayName": "Week 30 - 2014-07-24 - 2014-07-30", "endDate": "2014-07-30", "id": "2014ThuW30", "iso": "2014ThuW30", "name": "Week 30 - 2014-07-24 - 2014-07-30", + "periodType": "WEEKLY", "startDate": "2014-07-24", }, Object { + "displayName": "Week 31 - 2014-07-31 - 2014-08-06", "endDate": "2014-08-06", "id": "2014ThuW31", "iso": "2014ThuW31", "name": "Week 31 - 2014-07-31 - 2014-08-06", + "periodType": "WEEKLY", "startDate": "2014-07-31", }, Object { + "displayName": "Week 32 - 2014-08-07 - 2014-08-13", "endDate": "2014-08-13", "id": "2014ThuW32", "iso": "2014ThuW32", "name": "Week 32 - 2014-08-07 - 2014-08-13", + "periodType": "WEEKLY", "startDate": "2014-08-07", }, Object { + "displayName": "Week 33 - 2014-08-14 - 2014-08-20", "endDate": "2014-08-20", "id": "2014ThuW33", "iso": "2014ThuW33", "name": "Week 33 - 2014-08-14 - 2014-08-20", + "periodType": "WEEKLY", "startDate": "2014-08-14", }, Object { + "displayName": "Week 34 - 2014-08-21 - 2014-08-27", "endDate": "2014-08-27", "id": "2014ThuW34", "iso": "2014ThuW34", "name": "Week 34 - 2014-08-21 - 2014-08-27", + "periodType": "WEEKLY", "startDate": "2014-08-21", }, Object { + "displayName": "Week 35 - 2014-08-28 - 2014-09-03", "endDate": "2014-09-03", "id": "2014ThuW35", "iso": "2014ThuW35", "name": "Week 35 - 2014-08-28 - 2014-09-03", + "periodType": "WEEKLY", "startDate": "2014-08-28", }, Object { + "displayName": "Week 36 - 2014-09-04 - 2014-09-10", "endDate": "2014-09-10", "id": "2014ThuW36", "iso": "2014ThuW36", "name": "Week 36 - 2014-09-04 - 2014-09-10", + "periodType": "WEEKLY", "startDate": "2014-09-04", }, Object { + "displayName": "Week 37 - 2014-09-11 - 2014-09-17", "endDate": "2014-09-17", "id": "2014ThuW37", "iso": "2014ThuW37", "name": "Week 37 - 2014-09-11 - 2014-09-17", + "periodType": "WEEKLY", "startDate": "2014-09-11", }, Object { + "displayName": "Week 38 - 2014-09-18 - 2014-09-24", "endDate": "2014-09-24", "id": "2014ThuW38", "iso": "2014ThuW38", "name": "Week 38 - 2014-09-18 - 2014-09-24", + "periodType": "WEEKLY", "startDate": "2014-09-18", }, Object { + "displayName": "Week 39 - 2014-09-25 - 2014-10-01", "endDate": "2014-10-01", "id": "2014ThuW39", "iso": "2014ThuW39", "name": "Week 39 - 2014-09-25 - 2014-10-01", + "periodType": "WEEKLY", "startDate": "2014-09-25", }, Object { + "displayName": "Week 40 - 2014-10-02 - 2014-10-08", "endDate": "2014-10-08", "id": "2014ThuW40", "iso": "2014ThuW40", "name": "Week 40 - 2014-10-02 - 2014-10-08", + "periodType": "WEEKLY", "startDate": "2014-10-02", }, Object { + "displayName": "Week 41 - 2014-10-09 - 2014-10-15", "endDate": "2014-10-15", "id": "2014ThuW41", "iso": "2014ThuW41", "name": "Week 41 - 2014-10-09 - 2014-10-15", + "periodType": "WEEKLY", "startDate": "2014-10-09", }, Object { + "displayName": "Week 42 - 2014-10-16 - 2014-10-22", "endDate": "2014-10-22", "id": "2014ThuW42", "iso": "2014ThuW42", "name": "Week 42 - 2014-10-16 - 2014-10-22", + "periodType": "WEEKLY", "startDate": "2014-10-16", }, Object { + "displayName": "Week 43 - 2014-10-23 - 2014-10-29", "endDate": "2014-10-29", "id": "2014ThuW43", "iso": "2014ThuW43", "name": "Week 43 - 2014-10-23 - 2014-10-29", + "periodType": "WEEKLY", "startDate": "2014-10-23", }, Object { + "displayName": "Week 44 - 2014-10-30 - 2014-11-05", "endDate": "2014-11-05", "id": "2014ThuW44", "iso": "2014ThuW44", "name": "Week 44 - 2014-10-30 - 2014-11-05", + "periodType": "WEEKLY", "startDate": "2014-10-30", }, Object { + "displayName": "Week 45 - 2014-11-06 - 2014-11-12", "endDate": "2014-11-12", "id": "2014ThuW45", "iso": "2014ThuW45", "name": "Week 45 - 2014-11-06 - 2014-11-12", + "periodType": "WEEKLY", "startDate": "2014-11-06", }, Object { + "displayName": "Week 46 - 2014-11-13 - 2014-11-19", "endDate": "2014-11-19", "id": "2014ThuW46", "iso": "2014ThuW46", "name": "Week 46 - 2014-11-13 - 2014-11-19", + "periodType": "WEEKLY", "startDate": "2014-11-13", }, Object { + "displayName": "Week 47 - 2014-11-20 - 2014-11-26", "endDate": "2014-11-26", "id": "2014ThuW47", "iso": "2014ThuW47", "name": "Week 47 - 2014-11-20 - 2014-11-26", + "periodType": "WEEKLY", "startDate": "2014-11-20", }, Object { + "displayName": "Week 48 - 2014-11-27 - 2014-12-03", "endDate": "2014-12-03", "id": "2014ThuW48", "iso": "2014ThuW48", "name": "Week 48 - 2014-11-27 - 2014-12-03", + "periodType": "WEEKLY", "startDate": "2014-11-27", }, Object { + "displayName": "Week 49 - 2014-12-04 - 2014-12-10", "endDate": "2014-12-10", "id": "2014ThuW49", "iso": "2014ThuW49", "name": "Week 49 - 2014-12-04 - 2014-12-10", + "periodType": "WEEKLY", "startDate": "2014-12-04", }, Object { + "displayName": "Week 50 - 2014-12-11 - 2014-12-17", "endDate": "2014-12-17", "id": "2014ThuW50", "iso": "2014ThuW50", "name": "Week 50 - 2014-12-11 - 2014-12-17", + "periodType": "WEEKLY", "startDate": "2014-12-11", }, Object { + "displayName": "Week 51 - 2014-12-18 - 2014-12-24", "endDate": "2014-12-24", "id": "2014ThuW51", "iso": "2014ThuW51", "name": "Week 51 - 2014-12-18 - 2014-12-24", + "periodType": "WEEKLY", "startDate": "2014-12-18", }, Object { + "displayName": "Week 52 - 2014-12-25 - 2014-12-31", "endDate": "2014-12-31", "id": "2014ThuW52", "iso": "2014ThuW52", "name": "Week 52 - 2014-12-25 - 2014-12-31", + "periodType": "WEEKLY", "startDate": "2014-12-25", }, ], @@ -5159,367 +6637,471 @@ Object { "name": "Weekly (Start Wednesday)", "options": Array [ Object { + "displayName": "Week 1 - 2014-01-01 - 2014-01-07", "endDate": "2014-01-07", "id": "2014WedW1", "iso": "2014WedW1", "name": "Week 1 - 2014-01-01 - 2014-01-07", + "periodType": "WEEKLY", "startDate": "2014-01-01", }, Object { + "displayName": "Week 2 - 2014-01-08 - 2014-01-14", "endDate": "2014-01-14", "id": "2014WedW2", "iso": "2014WedW2", "name": "Week 2 - 2014-01-08 - 2014-01-14", + "periodType": "WEEKLY", "startDate": "2014-01-08", }, Object { + "displayName": "Week 3 - 2014-01-15 - 2014-01-21", "endDate": "2014-01-21", "id": "2014WedW3", "iso": "2014WedW3", "name": "Week 3 - 2014-01-15 - 2014-01-21", + "periodType": "WEEKLY", "startDate": "2014-01-15", }, Object { + "displayName": "Week 4 - 2014-01-22 - 2014-01-28", "endDate": "2014-01-28", "id": "2014WedW4", "iso": "2014WedW4", "name": "Week 4 - 2014-01-22 - 2014-01-28", + "periodType": "WEEKLY", "startDate": "2014-01-22", }, Object { + "displayName": "Week 5 - 2014-01-29 - 2014-02-04", "endDate": "2014-02-04", "id": "2014WedW5", "iso": "2014WedW5", "name": "Week 5 - 2014-01-29 - 2014-02-04", + "periodType": "WEEKLY", "startDate": "2014-01-29", }, Object { + "displayName": "Week 6 - 2014-02-05 - 2014-02-11", "endDate": "2014-02-11", "id": "2014WedW6", "iso": "2014WedW6", "name": "Week 6 - 2014-02-05 - 2014-02-11", + "periodType": "WEEKLY", "startDate": "2014-02-05", }, Object { + "displayName": "Week 7 - 2014-02-12 - 2014-02-18", "endDate": "2014-02-18", "id": "2014WedW7", "iso": "2014WedW7", "name": "Week 7 - 2014-02-12 - 2014-02-18", + "periodType": "WEEKLY", "startDate": "2014-02-12", }, Object { + "displayName": "Week 8 - 2014-02-19 - 2014-02-25", "endDate": "2014-02-25", "id": "2014WedW8", "iso": "2014WedW8", "name": "Week 8 - 2014-02-19 - 2014-02-25", + "periodType": "WEEKLY", "startDate": "2014-02-19", }, Object { + "displayName": "Week 9 - 2014-02-26 - 2014-03-04", "endDate": "2014-03-04", "id": "2014WedW9", "iso": "2014WedW9", "name": "Week 9 - 2014-02-26 - 2014-03-04", + "periodType": "WEEKLY", "startDate": "2014-02-26", }, Object { + "displayName": "Week 10 - 2014-03-05 - 2014-03-11", "endDate": "2014-03-11", "id": "2014WedW10", "iso": "2014WedW10", "name": "Week 10 - 2014-03-05 - 2014-03-11", + "periodType": "WEEKLY", "startDate": "2014-03-05", }, Object { + "displayName": "Week 11 - 2014-03-12 - 2014-03-18", "endDate": "2014-03-18", "id": "2014WedW11", "iso": "2014WedW11", "name": "Week 11 - 2014-03-12 - 2014-03-18", + "periodType": "WEEKLY", "startDate": "2014-03-12", }, Object { + "displayName": "Week 12 - 2014-03-19 - 2014-03-25", "endDate": "2014-03-25", "id": "2014WedW12", "iso": "2014WedW12", "name": "Week 12 - 2014-03-19 - 2014-03-25", + "periodType": "WEEKLY", "startDate": "2014-03-19", }, Object { + "displayName": "Week 13 - 2014-03-26 - 2014-04-01", "endDate": "2014-04-01", "id": "2014WedW13", "iso": "2014WedW13", "name": "Week 13 - 2014-03-26 - 2014-04-01", + "periodType": "WEEKLY", "startDate": "2014-03-26", }, Object { + "displayName": "Week 14 - 2014-04-02 - 2014-04-08", "endDate": "2014-04-08", "id": "2014WedW14", "iso": "2014WedW14", "name": "Week 14 - 2014-04-02 - 2014-04-08", + "periodType": "WEEKLY", "startDate": "2014-04-02", }, Object { + "displayName": "Week 15 - 2014-04-09 - 2014-04-15", "endDate": "2014-04-15", "id": "2014WedW15", "iso": "2014WedW15", "name": "Week 15 - 2014-04-09 - 2014-04-15", + "periodType": "WEEKLY", "startDate": "2014-04-09", }, Object { + "displayName": "Week 16 - 2014-04-16 - 2014-04-22", "endDate": "2014-04-22", "id": "2014WedW16", "iso": "2014WedW16", "name": "Week 16 - 2014-04-16 - 2014-04-22", + "periodType": "WEEKLY", "startDate": "2014-04-16", }, Object { + "displayName": "Week 17 - 2014-04-23 - 2014-04-29", "endDate": "2014-04-29", "id": "2014WedW17", "iso": "2014WedW17", "name": "Week 17 - 2014-04-23 - 2014-04-29", + "periodType": "WEEKLY", "startDate": "2014-04-23", }, Object { + "displayName": "Week 18 - 2014-04-30 - 2014-05-06", "endDate": "2014-05-06", "id": "2014WedW18", "iso": "2014WedW18", "name": "Week 18 - 2014-04-30 - 2014-05-06", + "periodType": "WEEKLY", "startDate": "2014-04-30", }, Object { + "displayName": "Week 19 - 2014-05-07 - 2014-05-13", "endDate": "2014-05-13", "id": "2014WedW19", "iso": "2014WedW19", "name": "Week 19 - 2014-05-07 - 2014-05-13", + "periodType": "WEEKLY", "startDate": "2014-05-07", }, Object { + "displayName": "Week 20 - 2014-05-14 - 2014-05-20", "endDate": "2014-05-20", "id": "2014WedW20", "iso": "2014WedW20", "name": "Week 20 - 2014-05-14 - 2014-05-20", + "periodType": "WEEKLY", "startDate": "2014-05-14", }, Object { + "displayName": "Week 21 - 2014-05-21 - 2014-05-27", "endDate": "2014-05-27", "id": "2014WedW21", "iso": "2014WedW21", "name": "Week 21 - 2014-05-21 - 2014-05-27", + "periodType": "WEEKLY", "startDate": "2014-05-21", }, Object { + "displayName": "Week 22 - 2014-05-28 - 2014-06-03", "endDate": "2014-06-03", "id": "2014WedW22", "iso": "2014WedW22", "name": "Week 22 - 2014-05-28 - 2014-06-03", + "periodType": "WEEKLY", "startDate": "2014-05-28", }, Object { + "displayName": "Week 23 - 2014-06-04 - 2014-06-10", "endDate": "2014-06-10", "id": "2014WedW23", "iso": "2014WedW23", "name": "Week 23 - 2014-06-04 - 2014-06-10", + "periodType": "WEEKLY", "startDate": "2014-06-04", }, Object { + "displayName": "Week 24 - 2014-06-11 - 2014-06-17", "endDate": "2014-06-17", "id": "2014WedW24", "iso": "2014WedW24", "name": "Week 24 - 2014-06-11 - 2014-06-17", + "periodType": "WEEKLY", "startDate": "2014-06-11", }, Object { + "displayName": "Week 25 - 2014-06-18 - 2014-06-24", "endDate": "2014-06-24", "id": "2014WedW25", "iso": "2014WedW25", "name": "Week 25 - 2014-06-18 - 2014-06-24", + "periodType": "WEEKLY", "startDate": "2014-06-18", }, Object { + "displayName": "Week 26 - 2014-06-25 - 2014-07-01", "endDate": "2014-07-01", "id": "2014WedW26", "iso": "2014WedW26", "name": "Week 26 - 2014-06-25 - 2014-07-01", + "periodType": "WEEKLY", "startDate": "2014-06-25", }, Object { + "displayName": "Week 27 - 2014-07-02 - 2014-07-08", "endDate": "2014-07-08", "id": "2014WedW27", "iso": "2014WedW27", "name": "Week 27 - 2014-07-02 - 2014-07-08", + "periodType": "WEEKLY", "startDate": "2014-07-02", }, Object { + "displayName": "Week 28 - 2014-07-09 - 2014-07-15", "endDate": "2014-07-15", "id": "2014WedW28", "iso": "2014WedW28", "name": "Week 28 - 2014-07-09 - 2014-07-15", + "periodType": "WEEKLY", "startDate": "2014-07-09", }, Object { + "displayName": "Week 29 - 2014-07-16 - 2014-07-22", "endDate": "2014-07-22", "id": "2014WedW29", "iso": "2014WedW29", "name": "Week 29 - 2014-07-16 - 2014-07-22", + "periodType": "WEEKLY", "startDate": "2014-07-16", }, Object { + "displayName": "Week 30 - 2014-07-23 - 2014-07-29", "endDate": "2014-07-29", "id": "2014WedW30", "iso": "2014WedW30", "name": "Week 30 - 2014-07-23 - 2014-07-29", + "periodType": "WEEKLY", "startDate": "2014-07-23", }, Object { + "displayName": "Week 31 - 2014-07-30 - 2014-08-05", "endDate": "2014-08-05", "id": "2014WedW31", "iso": "2014WedW31", "name": "Week 31 - 2014-07-30 - 2014-08-05", + "periodType": "WEEKLY", "startDate": "2014-07-30", }, Object { + "displayName": "Week 32 - 2014-08-06 - 2014-08-12", "endDate": "2014-08-12", "id": "2014WedW32", "iso": "2014WedW32", "name": "Week 32 - 2014-08-06 - 2014-08-12", + "periodType": "WEEKLY", "startDate": "2014-08-06", }, Object { + "displayName": "Week 33 - 2014-08-13 - 2014-08-19", "endDate": "2014-08-19", "id": "2014WedW33", "iso": "2014WedW33", "name": "Week 33 - 2014-08-13 - 2014-08-19", + "periodType": "WEEKLY", "startDate": "2014-08-13", }, Object { + "displayName": "Week 34 - 2014-08-20 - 2014-08-26", "endDate": "2014-08-26", "id": "2014WedW34", "iso": "2014WedW34", "name": "Week 34 - 2014-08-20 - 2014-08-26", + "periodType": "WEEKLY", "startDate": "2014-08-20", }, Object { + "displayName": "Week 35 - 2014-08-27 - 2014-09-02", "endDate": "2014-09-02", "id": "2014WedW35", "iso": "2014WedW35", "name": "Week 35 - 2014-08-27 - 2014-09-02", + "periodType": "WEEKLY", "startDate": "2014-08-27", }, Object { + "displayName": "Week 36 - 2014-09-03 - 2014-09-09", "endDate": "2014-09-09", "id": "2014WedW36", "iso": "2014WedW36", "name": "Week 36 - 2014-09-03 - 2014-09-09", + "periodType": "WEEKLY", "startDate": "2014-09-03", }, Object { + "displayName": "Week 37 - 2014-09-10 - 2014-09-16", "endDate": "2014-09-16", "id": "2014WedW37", "iso": "2014WedW37", "name": "Week 37 - 2014-09-10 - 2014-09-16", + "periodType": "WEEKLY", "startDate": "2014-09-10", }, Object { + "displayName": "Week 38 - 2014-09-17 - 2014-09-23", "endDate": "2014-09-23", "id": "2014WedW38", "iso": "2014WedW38", "name": "Week 38 - 2014-09-17 - 2014-09-23", + "periodType": "WEEKLY", "startDate": "2014-09-17", }, Object { + "displayName": "Week 39 - 2014-09-24 - 2014-09-30", "endDate": "2014-09-30", "id": "2014WedW39", "iso": "2014WedW39", "name": "Week 39 - 2014-09-24 - 2014-09-30", + "periodType": "WEEKLY", "startDate": "2014-09-24", }, Object { + "displayName": "Week 40 - 2014-10-01 - 2014-10-07", "endDate": "2014-10-07", "id": "2014WedW40", "iso": "2014WedW40", "name": "Week 40 - 2014-10-01 - 2014-10-07", + "periodType": "WEEKLY", "startDate": "2014-10-01", }, Object { + "displayName": "Week 41 - 2014-10-08 - 2014-10-14", "endDate": "2014-10-14", "id": "2014WedW41", "iso": "2014WedW41", "name": "Week 41 - 2014-10-08 - 2014-10-14", + "periodType": "WEEKLY", "startDate": "2014-10-08", }, Object { + "displayName": "Week 42 - 2014-10-15 - 2014-10-21", "endDate": "2014-10-21", "id": "2014WedW42", "iso": "2014WedW42", "name": "Week 42 - 2014-10-15 - 2014-10-21", + "periodType": "WEEKLY", "startDate": "2014-10-15", }, Object { + "displayName": "Week 43 - 2014-10-22 - 2014-10-28", "endDate": "2014-10-28", "id": "2014WedW43", "iso": "2014WedW43", "name": "Week 43 - 2014-10-22 - 2014-10-28", + "periodType": "WEEKLY", "startDate": "2014-10-22", }, Object { + "displayName": "Week 44 - 2014-10-29 - 2014-11-04", "endDate": "2014-11-04", "id": "2014WedW44", "iso": "2014WedW44", "name": "Week 44 - 2014-10-29 - 2014-11-04", + "periodType": "WEEKLY", "startDate": "2014-10-29", }, Object { + "displayName": "Week 45 - 2014-11-05 - 2014-11-11", "endDate": "2014-11-11", "id": "2014WedW45", "iso": "2014WedW45", "name": "Week 45 - 2014-11-05 - 2014-11-11", + "periodType": "WEEKLY", "startDate": "2014-11-05", }, Object { + "displayName": "Week 46 - 2014-11-12 - 2014-11-18", "endDate": "2014-11-18", "id": "2014WedW46", "iso": "2014WedW46", "name": "Week 46 - 2014-11-12 - 2014-11-18", + "periodType": "WEEKLY", "startDate": "2014-11-12", }, Object { + "displayName": "Week 47 - 2014-11-19 - 2014-11-25", "endDate": "2014-11-25", "id": "2014WedW47", "iso": "2014WedW47", "name": "Week 47 - 2014-11-19 - 2014-11-25", + "periodType": "WEEKLY", "startDate": "2014-11-19", }, Object { + "displayName": "Week 48 - 2014-11-26 - 2014-12-02", "endDate": "2014-12-02", "id": "2014WedW48", "iso": "2014WedW48", "name": "Week 48 - 2014-11-26 - 2014-12-02", + "periodType": "WEEKLY", "startDate": "2014-11-26", }, Object { + "displayName": "Week 49 - 2014-12-03 - 2014-12-09", "endDate": "2014-12-09", "id": "2014WedW49", "iso": "2014WedW49", "name": "Week 49 - 2014-12-03 - 2014-12-09", + "periodType": "WEEKLY", "startDate": "2014-12-03", }, Object { + "displayName": "Week 50 - 2014-12-10 - 2014-12-16", "endDate": "2014-12-16", "id": "2014WedW50", "iso": "2014WedW50", "name": "Week 50 - 2014-12-10 - 2014-12-16", + "periodType": "WEEKLY", "startDate": "2014-12-10", }, Object { + "displayName": "Week 51 - 2014-12-17 - 2014-12-23", "endDate": "2014-12-23", "id": "2014WedW51", "iso": "2014WedW51", "name": "Week 51 - 2014-12-17 - 2014-12-23", + "periodType": "WEEKLY", "startDate": "2014-12-17", }, Object { + "displayName": "Week 52 - 2014-12-24 - 2014-12-30", "endDate": "2014-12-30", "id": "2014WedW52", "iso": "2014WedW52", "name": "Week 52 - 2014-12-24 - 2014-12-30", + "periodType": "WEEKLY", "startDate": "2014-12-24", }, ], @@ -5533,73 +7115,93 @@ Object { "name": "Yearly", "options": Array [ Object { + "displayName": "2005", "endDate": "2005-12-31", "id": "2005", "iso": "2005", "name": "2005", + "periodType": "YEARLY", "startDate": "2005-01-01", }, Object { + "displayName": "2006", "endDate": "2006-12-31", "id": "2006", "iso": "2006", "name": "2006", + "periodType": "YEARLY", "startDate": "2006-01-01", }, Object { + "displayName": "2007", "endDate": "2007-12-31", "id": "2007", "iso": "2007", "name": "2007", + "periodType": "YEARLY", "startDate": "2007-01-01", }, Object { + "displayName": "2008", "endDate": "2008-12-31", "id": "2008", "iso": "2008", "name": "2008", + "periodType": "YEARLY", "startDate": "2008-01-01", }, Object { + "displayName": "2009", "endDate": "2009-12-31", "id": "2009", "iso": "2009", "name": "2009", + "periodType": "YEARLY", "startDate": "2009-01-01", }, Object { + "displayName": "2010", "endDate": "2010-12-31", "id": "2010", "iso": "2010", "name": "2010", + "periodType": "YEARLY", "startDate": "2010-01-01", }, Object { + "displayName": "2011", "endDate": "2011-12-31", "id": "2011", "iso": "2011", "name": "2011", + "periodType": "YEARLY", "startDate": "2011-01-01", }, Object { + "displayName": "2012", "endDate": "2012-12-31", "id": "2012", "iso": "2012", "name": "2012", + "periodType": "YEARLY", "startDate": "2012-01-01", }, Object { + "displayName": "2013", "endDate": "2013-12-31", "id": "2013", "iso": "2013", "name": "2013", + "periodType": "YEARLY", "startDate": "2013-01-01", }, Object { + "displayName": "2014", "endDate": "2014-12-31", "id": "2014", "iso": "2014", "name": "2014", + "periodType": "YEARLY", "startDate": "2014-01-01", }, ], diff --git a/src/components/PivotTable/PivotTableTitleRow.js b/src/components/PivotTable/PivotTableTitleRow.js index 681eaf1ab..ae9bfb576 100644 --- a/src/components/PivotTable/PivotTableTitleRow.js +++ b/src/components/PivotTable/PivotTableTitleRow.js @@ -1,5 +1,6 @@ +import { Tooltip } from '@dhis2/ui' import PropTypes from 'prop-types' -import React, { useState, useEffect } from 'react' +import React, { useRef, useState, useEffect } from 'react' import { PivotTableCell } from './PivotTableCell.js' import { usePivotTableEngine } from './PivotTableEngineContext.js' import { cell as cellStyle } from './styles/PivotTable.style.js' @@ -8,34 +9,66 @@ export const PivotTableTitleRow = ({ title, scrollPosition, containerWidth, - totalWidth, }) => { + const containerRef = useRef(null) + const [scrollWidth, setScrollWidth] = useState(0) + const [isTitleTruncated, setIsTitleTruncated] = useState(false) const engine = usePivotTableEngine() const columnCount = engine.width + engine.rowDepth + const maxWidth = containerWidth - (engine.cellPadding * 2 + 2) + const marginLeft = Math.max(0, scrollPosition?.x ?? 0) - const [position, setPosition] = useState(scrollPosition.x) useEffect(() => { - setPosition( - Math.max(0, Math.min(scrollPosition.x, totalWidth - containerWidth)) - ) - }, [containerWidth, scrollPosition.x, totalWidth]) + if (containerRef.current) { + /* Only set `scrollWidth` once, because during a CSS transition + * the reported value can sometimes be equal to `clientWidth` + * even though the text doesn't fit. Due to `white-space: nowrap` + * and `overflow: hidden` the `scrollWidth` should remain constant, + * so we can assume this initial value is correct. */ + if (!scrollWidth) { + setScrollWidth(containerRef.current.scrollWidth) + } + const currentScrollWidth = + scrollWidth ?? containerRef.current.scrollWidth + const newIsTitleTruncated = + currentScrollWidth > containerRef.current.clientWidth + if (newIsTitleTruncated !== isTitleTruncated) { + setIsTitleTruncated(newIsTitleTruncated) + } + } + }, [containerWidth, scrollWidth, isTitleTruncated]) + return (
    - {title} + {isTitleTruncated ? ( + + {({ ref: tooltipRef, onMouseOver, onMouseOut }) => ( +
    + {title} +
    + )} +
    + ) : ( + title + )}
    @@ -47,5 +80,4 @@ PivotTableTitleRow.propTypes = { scrollPosition: PropTypes.shape({ x: PropTypes.number.isRequired }) .isRequired, title: PropTypes.string.isRequired, - totalWidth: PropTypes.number.isRequired, } diff --git a/src/components/PivotTable/PivotTableTitleRows.js b/src/components/PivotTable/PivotTableTitleRows.js index 34ad04e33..8a3439c9d 100644 --- a/src/components/PivotTable/PivotTableTitleRows.js +++ b/src/components/PivotTable/PivotTableTitleRows.js @@ -13,10 +13,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { title={engine.options.title} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} {engine.options.subtitle ? ( @@ -24,10 +20,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { title={engine.options.subtitle} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} {engine.visualization.filters?.length ? ( @@ -38,10 +30,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { )} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} diff --git a/src/components/PivotTable/PivotTableValueCell.js b/src/components/PivotTable/PivotTableValueCell.js index 9013a0a83..f20fe554d 100644 --- a/src/components/PivotTable/PivotTableValueCell.js +++ b/src/components/PivotTable/PivotTableValueCell.js @@ -1,8 +1,12 @@ +import i18n from '@dhis2/d2-i18n' import PropTypes from 'prop-types' import React, { useRef } from 'react' import { applyLegendSet } from '../../modules/pivotTable/applyLegendSet.js' import { CELL_TYPE_VALUE } from '../../modules/pivotTable/pivotTableConstants.js' -import { VALUE_TYPE_NUMBER } from '../../modules/valueTypes.js' +import { + isNumericValueType, + isBooleanValueType, +} from '../../modules/valueTypes.js' import { PivotTableCell } from './PivotTableCell.js' import { PivotTableEmptyCell } from './PivotTableEmptyCell.js' import { usePivotTableEngine } from './PivotTableEngineContext.js' @@ -43,10 +47,10 @@ export const PivotTableValueCell = ({ ) } - // TODO: Add support for 'INTEGER' type (requires server changes) const legendStyle = cellContent.cellType === CELL_TYPE_VALUE && - cellContent.valueType === VALUE_TYPE_NUMBER + (isNumericValueType(cellContent.valueType) || + isBooleanValueType(cellContent.valueType)) ? applyLegendSet( cellContent.rawValue, cellContent.dxDimension, @@ -71,7 +75,13 @@ export const PivotTableValueCell = ({ .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_COMPACT}px; + } + .title-cell.displaydensity-NORMAL > .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_NORMAL}px; + } + .title-cell.displaydensity-COMFORTABLE > .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_COMFORTABLE}px; } .row-header { background-color: #dae6f8; @@ -127,13 +145,24 @@ export const cell = css` } .value { background-color: #ffffff; - } - .TEXT { text-align: left; } - .NUMBER { + .NUMBER, + .INTEGER, + .INTEGER_POSITIVE, + .INTEGER_NEGATIVE, + .INTEGER_ZERO_OR_POSITIVE, + .UNIT_INTERVAL, + .PERCENTAGE, + .BOOLEAN, + .TRUE_ONLY { text-align: right; } + .N_A { + text-align: center; + color: ${colors.grey600}; + } + .clickable { cursor: pointer; } diff --git a/src/components/Interpretations/common/RichTextEditor/RichTextEditor.js b/src/components/RichText/Editor/Editor.js similarity index 77% rename from src/components/Interpretations/common/RichTextEditor/RichTextEditor.js rename to src/components/RichText/Editor/Editor.js index ba2eba9fe..6fdbf558e 100644 --- a/src/components/Interpretations/common/RichTextEditor/RichTextEditor.js +++ b/src/components/RichText/Editor/Editor.js @@ -1,10 +1,9 @@ import i18n from '@dhis2/d2-i18n' -import { Parser as RichTextParser } from '@dhis2/d2-ui-rich-text' import { Button, Popover, Tooltip, - Field, + Help, IconAt24, IconFaceAdd24, IconLink24, @@ -12,9 +11,11 @@ import { IconTextItalic24, colors, } from '@dhis2/ui' +import cx from 'classnames' import PropTypes from 'prop-types' import React, { forwardRef, useRef, useEffect, useState } from 'react' -import { UserMentionWrapper } from '../UserMention/UserMentionWrapper.js' +import { UserMentionWrapper } from '../../UserMention/UserMentionWrapper.js' +import { Parser } from '../Parser/Parser.js' import { convertCtrlKey, insertMarkdown, @@ -33,22 +34,22 @@ import { toolbarClasses, tooltipAnchorClasses, emojisPopoverClasses, -} from './styles/RichTextEditor.style.js' +} from './styles/Editor.style.js' const EmojisPopover = ({ onInsertMarkdown, onClose, reference }) => (
    • onInsertMarkdown(EMOJI_SMILEY_FACE)}> - {emojis[EMOJI_SMILEY_FACE]} + {emojis[EMOJI_SMILEY_FACE]}
    • onInsertMarkdown(EMOJI_SAD_FACE)}> - {emojis[EMOJI_SAD_FACE]} + {emojis[EMOJI_SAD_FACE]}
    • onInsertMarkdown(EMOJI_THUMBS_UP)}> - {emojis[EMOJI_THUMBS_UP]} + {emojis[EMOJI_THUMBS_UP]}
    • onInsertMarkdown(EMOJI_THUMBS_DOWN)}> - {emojis[EMOJI_THUMBS_DOWN]} + {emojis[EMOJI_THUMBS_DOWN]}
    @@ -190,29 +191,59 @@ Toolbar.propTypes = { disabled: PropTypes.bool, } -export const RichTextEditor = forwardRef( +export const Editor = forwardRef( ( - { value, disabled, inputPlaceholder, onChange, errorText }, + { + value, + disabled, + inputPlaceholder, + onChange, + errorText, + helpText, + initialFocus, + resizable, + }, externalRef ) => { const [previewMode, setPreviewMode] = useState(false) const internalRef = useRef() const textareaRef = externalRef || internalRef + const caretPosRef = useRef(undefined) - useEffect(() => textareaRef.current?.focus(), [textareaRef]) + const insertMarkdownCallback = (text, caretPos) => { + caretPosRef.current = caretPos + onChange(text) + textareaRef.current.focus() + } + + useEffect(() => { + if (initialFocus) { + textareaRef.current?.focus() + } + }, [initialFocus, textareaRef]) + + useEffect(() => { + if (caretPosRef.current) { + textareaRef.current?.setSelectionRange( + caretPosRef.current, + caretPosRef.current + ) + + caretPosRef.current = undefined + } + }, [value, textareaRef]) return ( -
    +
    { insertMarkdown( markdown, textareaRef.current, - (text, caretPos) => { - onChange(text) - textareaRef.current.focus() - textareaRef.current.selectionEnd = caretPos - } + insertMarkdownCallback ) if (markdown === MENTION) { @@ -231,16 +262,18 @@ export const RichTextEditor = forwardRef( /> {previewMode ? (
    - {value} + {value}
    ) : ( - +