commit b7d0fcf68b8f31dac22a63f040c2186bf2f77971 Author: Yaser Date: Thu Aug 13 20:00:11 2026 +0330 Initial commit diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..0e50a22 --- /dev/null +++ b/.babelrc @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-es2015-modules-commonjs" + ] +} + diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..db838fa --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +*Dockerfile* +*docker-compose* +node_modules diff --git a/.domains.example b/.domains.example new file mode 100644 index 0000000..41a6186 --- /dev/null +++ b/.domains.example @@ -0,0 +1 @@ +localhost,.app.local,.openfinex.io,.devkube.com,.openware.work,.opendax.app diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..78f3cc4 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,204 @@ +--- +kind: pipeline +name: "Push" + +concurrency: + limit: 2 + +steps: + - name: "Test & Build" + image: node:12.13.1 + commands: + - export REACT_APP_GIT_SHA=$(git rev-parse --short HEAD) + - echo $REACT_APP_GIT_SHA > .tags + - export BUILD_DOMAIN=$(test -e .domains && cat .domains) + - export BUILD_EXPIRE=$(date -d "+1 month" +%s000) + - npm -g install yarn + - yarn install + - yarn lint + - yarn test:ci --collectCoverage=true + - yarn build + + # - name: "Stage with mock server" + # image: instrumentisto/rsync-ssh + # environment: + # PRIVATE_KEY: + # from_secret: deploy_key + # commands: + # - echo "$PRIVATE_KEY" | base64 -d > id_rsa + # - chmod 0600 id_rsa + # - cd build/config/ + # - echo "window.env={api:{authUrl:'http://api-v2.mock.openware.work/api/v2/barong',tradeUrl:'http://api-v2.mock.openware.work/api/v2/peatio',applogicUrl:'http://api-v2.mock.openware.work/api/v2/applogic',rangerUrl:'ws://ranger.mock.openware.work/api/v2/ranger'}};" > env.js + # - cat env.js + # - cd /drone/src + # - rsync -avzhre "ssh -i id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" build/ mock@mock.openware.work:/home/mock/builds/${DRONE_COMMIT_SHA:0:7} + # - rsync -avzhre "ssh -i id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" coverage/ mock@mock.openware.work:/home/mock/builds/${DRONE_COMMIT_SHA:0:7}-coverage + # - echo "http://${DRONE_COMMIT_SHA:0:7}.mock.openware.work" + # - echo "http://${DRONE_COMMIT_SHA:0:7}-coverage.mock.openware.work" + + # - name: "Notify staging" + # image: plugins/slack + # settings: + # webhook: + # from_secret: baseapp_slack_webhook + # channel: + # from_secret: baseapp_slack_channel + # template: > + # {{#success build.status}} + # [SUCCESS] (Base Application) Branch {{ build.branch }} by {{ build.author }} staging has succeeded! + # + # Visit http://{{ truncate build.commit 7 }}.mock.openware.work to check it out! + # Coverage report: http://{{ truncate build.commit 7 }}-coverage.mock.openware.work + # {{else}} + # [FAILURE] Branch {{ build.branch }} by {{ build.author }} staging has failed! + # {{/success}} + # Check the build info here: {{ build.link }} + # when: + # status: [success, failure] + +trigger: + event: + - push + branch: + exclude: + - master + - "2-*-stable" + +--- +kind: pipeline +name: "New version" + +concurrency: + limit: 2 + +steps: + - name: "Test" + image: node:12.13.1 + commands: + - npm -g install yarn + - yarn install + - yarn lint + - yarn test:ci --collectCoverage=true + + - name: "Bump & Tag" + image: quay.io/openware/sdk-citools:2.6.7 + environment: + BRANCH_NAME: ${DRONE_BRANCH} + REPO_NAME: ${DRONE_REPO} + GITHUB_API_KEY: + from_secret: kite_bot_key + commands: + - BUNDLE_GEMFILE=/sdk/Gemfile bundle exec rake --rakefile=/sdk/Rakefile ci:prebuild + + - name: "Build Docker image" + image: plugins/docker + settings: + username: + from_secret: quay_username + password: + from_secret: quay_password + repo: + from_secret: quay_repo + registry: quay.io + environment: + REACT_APP_SENTRY_KEY: + from_secret: master_sentry_key + REACT_APP_SENTRY_ORGANIZATION: + from_secret: master_sentry_organization + REACT_APP_SENTRY_PROJECT: + from_secret: master_sentry_project + + - name: "Redeploy on master.devkube.com" + image: rubykube/microkube:0.2.0 + environment: + WEBHOOK_JWT_SECRET: + from_secret: devkube_webhook_secret + DOCKER_REPO: + from_secret: quay_repo + commands: + - export latest_image=$DOCKER_REPO:$(cat .tags) + - cd /home/app + - bundle exec rake payload:send[frontend,$latest_image,http://$DRONE_BRANCH.devkube.com:1337] + when: + branch: + - master + + - name: "Push and Notify" + image: quay.io/openware/sdk-citools:2.6.7 + environment: + BOT_USERNAME: kite-bot + BOT_NAME: Kite Bot + BOT_EMAIL: kite-bot@heliostech.fr + BRANCH_NAME: ${DRONE_BRANCH} + SDK_BRANCH: ${DRONE_BRANCH} + REPO_NAME: ${DRONE_REPO} + TELEGRAM_BOT_TOKEN: + from_secret: baseapp_telegram_bot_token + TELEGRAM_CHAT_ID: + from_secret: baseapp_telegram_chat_id + SLACK_TOKEN: + from_secret: baseapp_slack_token + SLACK_CHANNEL: + from_secret: baseapp_slack_channel + GITHUB_API_KEY: + from_secret: kite_bot_key + commands: + - BUNDLE_GEMFILE=/sdk/Gemfile bundle exec rake --rakefile=/sdk/Rakefile ci:postbuild[/drone/src] + when: + branch: + - master + - "2-*-stable" + + # http://plugins.drone.io/drone-plugins/drone-slack/ + - name: Slack Notify + image: plugins/slack + settings: + webhook: + from_secret: slack_webhook + channel: + from_secret: slack_webhook_channel + template: > + *{{uppercasefirst repo.name}}* + {{#success build.status}} + [SUCCESS] Branch {{ build.branch }} by {{ build.author }}. Good job. + {{else}} + [FAILURE] Branch {{ build.branch }} by {{ build.author }}. Fix me please. + {{/success}} + when: + branch: + - master + - "2-*-stable" + + - name: "Update global OpenDAX version" + image: quay.io/openware/goci:0.0.11 + environment: + GIT_TOKEN: + from_secret: kite_bot_key + commands: + - /app/goci -component=frontend versions + when: + branch: + - "*-stable" + + - name: "Build custom baseapp with assembly line" + image: curlimages/curl + environment: + SERVER: https://ci.openware.work + REPO: openware/assembly-line + BRANCH: master + COMPONENT: baseapp + DRONE_TOKEN: + from_secret: drone_token + commands: + - COMPONENT_VERSION=$(cat .tags) + - "curl -s -XPOST -H \"Authorization: Bearer $DRONE_TOKEN\" -i \"$SERVER/api/repos/$REPO/builds?branch=$BRANCH&ASSEMBLY_COMPONENT_VERSION=$COMPONENT_VERSION&ASSEMBLY_COMPONENT=$COMPONENT\"" + +trigger: + branch: + - master + - "2-*-stable" + event: + - push + +image_pull_secrets: + - dockerconfigjson diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfdb8b7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.sh text eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..af12903 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +/.npmrc + +# dependencies +/node_modules + +# testing +/coverage + +# production +/build +/.idea +/android +/ios +.gradle/ + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local +.env +env.js + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +index.css + +# environment config +public/config/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..65466b8 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v10.15.0 diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..d32fbc1 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,21 @@ +{ + "jsxBracketSameLine": true, + "singleQuote": true, + "overrides": [ + { + "files": ["**/*.css", "**/*.scss", "**/*.pcss", "**/*.html"], + "options": { + "singleQuote": false, + "tabWidth": 4 + } + } + ], + "jsxSingleQuote": false, + "printWidth": 120, + "tabWidth": 4, + "endOfLine": "auto", + "semi": true, + "tslintIntegration": true, + "stylelintIntegration": true, + "ignorePath": ".gitignore" +} diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000..4351083 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,15 @@ +{ + "extends": "stylelint-config-standard", + "plugins": [ + "stylelint-order" + ], + "rules": { + "at-rule-no-unknown": null, + "order/order": [ + "custom-properties", + "declarations" + ], + "order/properties-alphabetical-order": true, + "no-descending-specificity": null + } +} diff --git a/.yarnclean b/.yarnclean new file mode 100644 index 0000000..b591611 --- /dev/null +++ b/.yarnclean @@ -0,0 +1,45 @@ +# test directories +__tests__ +test +tests +powered-test + +# asset directories +docs +doc +website +images +assets + +# examples +example +examples + +# code coverage directories +coverage +.nyc_output + +# build scripts +Makefile +Gulpfile.js +Gruntfile.js + +# configs +appveyor.yml +circle.yml +codeship-services.yml +codeship-steps.yml +wercker.yml +.tern-project +.gitattributes +.editorconfig +.*ignore +.eslintrc +.jshintrc +.flowconfig +.documentup.json +.yarn-metadata.json +.travis.yml + +# misc +*.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..903767d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +# syntax=docker/dockerfile:1.4 +# Fast app image — node_modules from deps base (custom/gereh-deps:1). +# Rebuild deps when yarn.lock changes: docker build -f Dockerfile.deps -t custom/gereh-deps:1 . +ARG DEPS_IMAGE=custom/gereh-deps:1 +FROM ${DEPS_IMAGE} AS builder + +WORKDIR /home/node + +COPY --chown=node:node . . + +ARG BUILD_EXPIRE +ARG BUILD_DOMAIN +ARG REACT_APP_SKIP_API_KEY_2FA= +ARG REACT_APP_SENTRY_KEY=${REACT_APP_SENTRY_KEY:-"68c679b9cde2452db4d7ceb99b96e20d"} +ARG REACT_APP_SENTRY_ORGANIZATION=${REACT_APP_SENTRY_ORGANIZATION:-"o4504055431430144"} +ARG REACT_APP_SENTRY_PROJECT=${REACT_APP_SENTRY_PROJECT:-"4504055438311424"} + +ENV REACT_APP_SENTRY_KEY=${REACT_APP_SENTRY_KEY} +ENV REACT_APP_SENTRY_ORGANIZATION=${REACT_APP_SENTRY_ORGANIZATION} +ENV REACT_APP_SENTRY_PROJECT=${REACT_APP_SENTRY_PROJECT} +ENV REACT_APP_SKIP_API_KEY_2FA=${REACT_APP_SKIP_API_KEY_2FA} +ENV BUILD_DOMAIN=${BUILD_DOMAIN} + +USER node + +RUN sed -i 's/\r$//' scripts/build.sh && bash scripts/build.sh + +FROM nginx:mainline-alpine + +COPY --from=builder /home/node/build /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 3000 + +HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \ + CMD wget -q -O /dev/null http://127.0.0.1:3000/health || exit 1 diff --git a/Dockerfile.deps b/Dockerfile.deps new file mode 100644 index 0000000..70b03dd --- /dev/null +++ b/Dockerfile.deps @@ -0,0 +1,20 @@ +# syntax=docker/dockerfile:1.4 +# Heavy layer: yarn install. Rebuild only when yarn.lock changes. +# docker build -f Dockerfile.deps -t custom/gereh-deps:1 . +FROM node:12.13.1 + +WORKDIR /home/node + +RUN npm config set strict-ssl false \ + && yarn config set strict-ssl false \ + && yarn config set network-timeout 600000 + +RUN npm i -g yarn + +COPY package.json yarn.lock ./ + +ENV CYPRESS_INSTALL_BINARY=0 + +USER node + +RUN mkdir -p /home/node/.cache/yarn && yarn install --frozen-lockfile --network-timeout 600000 --non-interactive --verbose diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..68057e3 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,141 @@ +# Creative Commons CC-BY-NC-ND-4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +## Section 1 – Definitions. + +a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + +b. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + +e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + +f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + +h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + +i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + +h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. + +i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. + +j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + +k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + +l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +## Section 2 – Scope. + +a. ___License grant.___ + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and + + B. produce and reproduce, but not Share, Adapted Material for NonCommercial purposes only. + + 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. __Term.__ The term of this Public License is specified in Section 6(a). + + 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. __Downstream recipients.__ + + A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + +b. ___Other rights.___ + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. + +## Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + +a. ___Attribution.___ + + 1. If You Share the Licensed Material, You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + For the avoidance of doubt, You do not have permission under this Public License to Share Adapted Material. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + +## Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only and provided You do not Share Adapted Material; + +b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +## Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ + +b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ + +c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +## Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + +c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + +d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +## Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +## Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + +b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + +c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. diff --git a/README.md b/README.md new file mode 100644 index 0000000..434abaa --- /dev/null +++ b/README.md @@ -0,0 +1,248 @@ +
+ +# Gereh — فرانت Fibitex (BaseApp) + +**Gereh** فورک BaseApp — UI فعلی staging (`beta.fibitex.com`). + +## راه‌اندازی + +
+ +```bash +yarn install && yarn start-mock +``` + +
+ +مستندات: [`Docs/04-gereh-frontend.md`](../Docs/04-gereh-frontend.md) · [`Docs/Fibitex-staging-deploy.md`](../Docs/Fibitex-staging-deploy.md) + +
+ +--- + +![Cryptocurrency Exchange Platform - Baseapp](https://github.com/openware/meta/raw/main/images/github_baseapp.png) + +

+Guide | +API Docs | +Consulting | +Community +

+
Component part of OpenDAX Trading Platform
+ +--- + +# OpenDAX BaseApp UI +## User Interface for Trading and Wallets Management + +React application to build a trading platform interface for use with OpenDAX: https://github.com/openware/opendax + +You can see an example of a live application running at: https://www.openfinex.io/ +If you need customization from the experts contact us: https://www.openware.com/ + +## License + +Please note, that BaseApp license only allows Non-Commercial use of this component. To purchase the Commercial license, please contact us at hello@openware.com. + +## Install dependencies + +```bash +$ yarn install +``` + +## Run in developement mode + +```bash +$ yarn start-mock +``` +This command will also start a fake api backend for helping development. +Once you happy with the result, save, build an image and run it with OpenDAX docker compose system. + +## Execute tests + +In `` + +```bash +$ yarn test +``` + +Check test coverage: +```bash +$ yarn test -- --coverage --watchAll +``` + +For more options for `jest` run `yarn test --help`. + +## Configuration documentation + +Configuration file is located in `public/config/env.js` + + +| Argument                 | Description                                                 | +| --------------------- | ------------------------------------------------------------ | +| `api`    | URLs of `barong`, `peatio`, `applogic` and `ranger` API endpoints. You can use mockserver () with default `env.js` values | +| `minutesUntilAutoLogout`               | Autologout time in minutes | +| `withCredentials`               | `false` or `true` if you want to include cookies as part of the request(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials) | +| `gaTrackerKey` | Google Analytics tracker key | +| `ga4TrackerKey` | Google Analytics tracker key V4 | +| `rangerReconnectPeriod` | Reconnection time for the Ranger WS service in minutes | +| `msAlertDisplayTime` |  Alert message display duration in milliseconds | +| `kycSteps` |  List of label names for KYC process | + +## Available Docker build args + +While building a Docker image you can pass build-dependant arguments using `--build-arg`: +`docker build -t baseapp:latest + --build-arg BUILD_DOMAIN="example.com" .` + +| Argument | Description | +| -------------- | ------------------------------------------------------ | +| `BUILD_EXPIRE` | Unix Timestamp of the build expiration date in seconds | +| `BUILD_DOMAIN` | Domain which you'd like to use during the deployment | + +## Build mobile app +Install dependencies using npm. Important for mobile app development. +```bash +npm install +``` +Build frontend +```bash +yarn build +``` +Generate a native project (ios, android) +```bash +ionic capacitor add +``` +To build a native app you should have Xcode or Android studio on your local machine. + +## Build IOS app +**1. Install Xcode** + +Xcode is the IDE for creating native iOS apps. It includes the iOS SDK and Xcode command-line tools. Xcode can be downloaded for free with an Apple account or it can be installed through the App Store. +Once Xcode is installed, make sure the command-line tools are selected for use: +```bash +xcode-select --install +``` +**2. Set up a development team** + +All iOS apps must be code signed, even for development. Luckily, Xcode makes this easy with automatic code signing. The only prerequisite is an Apple ID. + +Open Xcode and navigate to **Xcode » Preferences » Accounts**. Add an Apple ID if none are listed. Once logged in, a Personal Team will appear in the team list of the Apple ID. + +**3. Create an iOS Simulator** + +You can test your mobile application with a connected Iphone device to the Mac or using IOS Simulator. +Open Xcode and navigate to **Window » Devices and Simulators**. Create an **iPhone 11** simulator if one does not already exist. + +**4. Set configs** + +Open the `capacitor.config.json` file and modify the `appId` property. + +Put the name of BE server: +```json + "server": { + "hostname": "example.openware.work" + } +``` + +**5. Open the project in Xcode.** + +Launch Xcode with a prepared app: +```bash +ionic capacitor run ios +``` + +**6. Check Xcode configuration** +In Project navigator, select the project root to open the project editor. Under the **Identity section**, verify that the **Package ID** that was set matches the Bundle Identifier. + +In the same project editor, under the **Signing section**, ensure Automatically manage signing is enabled. Then, select a Development Team. Given a Development Team, Xcode will attempt to automatically prepare provisioning and signing. + +**7. Update native app with the changes** + +With each meaningful change, Ionic apps must be built into web assets before the change can appear on iOS simulators and devices. The web assets then must be copied into the native project: +```bash +ionic capacitor copy ios +``` + +**8. Build IOS app** + +To receive an executable app file run 'build' command on Xcode. You need to have an Apple Developer account to be able to extract an executable file from Xcode. + +## Build Android app +**1. Install Android studio** + +Android Studio is IDE, that provides the fastest tools for building apps on every type of Android device. + +**2. Open the `capacitor.config.json` file and modify the `linuxAndroidStudioPath` property.** + +Run next command +```bash +whereis android-studio +``` + +**3. Build your android application** + +```bash +ionic capacitor add android +``` + +**4. Launch android application with Android Studio** +```bash +ionic capacitor run android +``` + +**5. Android Studio configuration** + +Select connected android device or configure device simulator, which required + +**6. Update app with the changes** +```bash +ionic capacitor copy android [options] +``` + +**7. Set ANDROID_SDK_ROOT variale** + +Set android ask path to ANDROID_SDK_ROOT or write sdk.dir variable in android/local.properties file (it doesn't exist as a default) + +**8. Build android app** + +Build android app using Android Studio Build tab + +or you can build apk file with command line + +Debug build: + +```bash + ionic capacitor copy android && cd android && ./gradlew assembleDebug && cd .. +``` + +Release build: + +For release build you have to create keystore path and keystore alias and run next command: + +```bash + cd android && + ./gradlew assembleRelease && + cd app/build/outputs/apk/release && + jarsigner -keystore YOUR_KEYSTORE_PATH -storepass YOUR_KEYSTORE_PASS app-release-unsigned.apk YOUR_KEYSTORE_ALIAS && + zipalign 4 app-release-unsigned.apk app-release.apk +``` + +## Happy trading with OpenDAX BaseApp UI + +If you have designed something beautiful with it, we would love to see it! + +And if you have any comments, feedback and suggestions - we are happy to hear from you here at GitHub or at https://openware.com + +## Licensing + +This code is open for helping private modification and performing customer demonstration, you can use it for raising capital. +You cannot use it for a live platform without getting a commercial license from us. + +Contact us if you'd like to purchase a commercial license. + +## Partners + +If you would like to fork, and modify this UI to create a BaseApp theme, we would be happy to setup a partnership program and sell your work provided a revenue sharing. + +Made with love from Paris and Kiev. diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..e70b452 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +2.6.0 diff --git a/__mocks__/fileMock.js b/__mocks__/fileMock.js new file mode 100644 index 0000000..86059f3 --- /dev/null +++ b/__mocks__/fileMock.js @@ -0,0 +1 @@ +module.exports = 'test-file-stub'; diff --git a/__mocks__/styleMock.js b/__mocks__/styleMock.js new file mode 100644 index 0000000..f053ebf --- /dev/null +++ b/__mocks__/styleMock.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/capacitor.config.json b/capacitor.config.json new file mode 100644 index 0000000..099d2a0 --- /dev/null +++ b/capacitor.config.json @@ -0,0 +1,20 @@ +{ + "appId": "odax.openware.work", + "appName": "Fibitex", + "bundledWebRuntime": false, + "npmClient": "yarn", + "webDir": "build", + "plugins": { + "SplashScreen": { + "launchShowDuration": 0 + } + }, + "ios": { + "contentInset": "always" + }, + "linuxAndroidStudioPath": "/snap/bin/android-studio", + "cordova": {}, + "server": { + "hostname": "odax.openware.work" + } +} diff --git a/config-overrides.js b/config-overrides.js new file mode 100644 index 0000000..289bae9 --- /dev/null +++ b/config-overrides.js @@ -0,0 +1,55 @@ +const JavaScriptObfuscator = require('webpack-obfuscator'); +const webpack = require('webpack'); +const CompressionPlugin = require('compression-webpack-plugin'); + +module.exports = function override(config, env) { + if (!config.plugins) { + config.plugins = []; + } + + // CRA 3 babel/TS 3.8 cannot type-check axios 0.32 bundled .d.ts (needs TS 4.1+). + // Runtime bundle is fine; skip fork-ts-checker during production build. + config.plugins = config.plugins.filter( + plugin => !(plugin && plugin.constructor && plugin.constructor.name === 'ForkTsCheckerWebpackPlugin'), + ); + + config.plugins.push(new webpack.DefinePlugin({ 'process.env.BUILD_EXPIRE': JSON.stringify(process.env.BUILD_EXPIRE) })); + + const version = process.env.REACT_APP_GIT_SHA || 'snapshot'; + const commonJSFilename = `commons.${version}.js`; + + if (process.env.NODE_ENV === 'production') { + config.optimization = { + splitChunks: { + cacheGroups: { + commons: { + chunks: "initial", + minChunks: 1, + name: "commons", + filename: commonJSFilename, + enforce: true + } + } + } + } + + if (`${process.env.BUILD_DOMAIN}` != "") { + const domains = process.env.BUILD_DOMAIN.split(','); + config.plugins.push( + new JavaScriptObfuscator({ rotateUnicodeArray: true, domainLock: domains }, [commonJSFilename]) + ); + } + + config.plugins.push( + new CompressionPlugin({ + filename: "[path].gz[query]", + algorithm: "gzip", + test: /\.js$|\.css$|\.html$/, + threshold: 10240, + minRatio: 0.8 + }) + ); + } + + return config; +}; \ No newline at end of file diff --git a/cypress.json b/cypress.json new file mode 100644 index 0000000..894731b --- /dev/null +++ b/cypress.json @@ -0,0 +1,9 @@ +{ + "baseUrl": "http://www.app.local", + "fixturesFolder": "spec/fixtures", + "integrationFolder": "spec/integration", + "pluginsFile": "spec/plugins/index.js", + "supportFile": "spec/support/index.js", + "screenshotsFolder": "cypress/screenshots", + "videosFolder": "cypress/videos" +} diff --git a/docs/basic_customization.html.md b/docs/basic_customization.html.md new file mode 100644 index 0000000..fd74252 --- /dev/null +++ b/docs/basic_customization.html.md @@ -0,0 +1,112 @@ +## How to change logo + favicon and title + +From this tutorial you will learn how to customize [frontend application](https://github.com/openware/baseapp) for [OpenDAX](https://github.com/openware/opendax), just if you want to make it more personalized. + +**Reminder:** + +* Here is [previous customization tutorial](https://medium.com/openware/change-baseapp-logo-and-deploy-in-opendax-8506c865ee99) where you can find how to update logo for Baseapp version 2.4. + +In newer 2.5 and 2.6 versions exchange logo is represented as SVG element inside React Function Component instead of simple png image from 2.4 version. + +The roadmap is pretty short: + +* clone [Baseapp](https://github.com/openware/baseapp) +* change the logo and favicon +* edit page title + +Should be easy as always. Let’s start. + +### 1. Clone Baseapp +```bash +cd /home/app +git clone https://github.com/openware/baseapp.git +``` + +### 2. Change the logo and favicon + +So to start with, you can download some [random SVG image](https://www.flaticon.com/svg/static/icons/svg/2933/2933116.svg) and [favicon in ICO format](https://icon-icons.com/downloadimage.php\?id\=51091\&root\=516/ICO/512/\&file\=coin_money_icon-icons.com_51091.ico). + +To change the logo follow next steps: + +```bash + #this is the folder where all the default logos and images are + cd /home/app/baseapp/src/assets/images + + # backup the default one, just in case we do something wrong + cp LogoIcon.tsx LogoIcon.tsx.bak + + # download the new SVG logo + curl https://www.flaticon.com/svg/static/icons/svg/2933/2933116.svg -o logo.svg + + # open new logo.svg via vim first and copy whole + vim logo.svg + + # open LogoIcon.tsx, delete everything inside LogoIcon const and paste from logo.svg + vim LogoIcon.tsx +``` + +```javascript + export const LogoIcon: React.FC = (props: LogoIconProps) => ( + // replace + // replace + // replace + // replace + // replace + // replace + // replace + ); +``` + +Last step - add className={props.className} to the opening tag. It should look like this + +```html + +``` + +**Pay attention** that most of the `` images have `width` and `height` attributes which are already preseted so, probably, you will have to change them. +Keep the ratio between width and height for downloaded image, but don’t use height bigger than 60px (it will overflow the Header). + +So in the end my opening SVG tag inside the **LogoIcon.tsx** looks like that: + +```html + +``` + +Now let’s replace favicon.ico: + +```bash + # this is the folder where React stores favicon.ico, index.htm and manifest.json + cd /home/app/baseapp/public + + # backup the default favicon + cp favicon.ico favicon.ico.bak + + # download the new one + curl https://icon-icons.com/downloadimage.php\?id\=51091\&root\=516/ICO/512/\&file\=coin_money_icon-icons.com_51091.ico -o favicon.ico +``` +### 3. Edit the page title + +To edit title of the webpage we have to change it in two files: + +```bash +# open index.html and edit 'Cryptobase' name between tag +cd /home/app/baseapp/public +vim index.html + + + + + ... + Cryptobase // change name here + + +# this is the folder where React application constants stored +cd /home/app/baseapp/src/constants + +# open index.ts file and edit PG_TITLE_PREFIX constant +vim index.ts + +export const PG_TITLE_PREFIX = 'Cryptobase'; // change name here +``` + +And that’s it, now you have your frontend with your own logo, favicon and title. diff --git a/docs/releases/2.1.0.md b/docs/releases/2.1.0.md new file mode 100644 index 0000000..d1fc4fe --- /dev/null +++ b/docs/releases/2.1.0.md @@ -0,0 +1,18 @@ +# BaseApp frontend v2.1.0 (May 6, 2019) + +#### Overview + +BaseApp frontend fully compatible with Barong v2.1.0 and Peatio v2.1.0. + +## New features comparing with v2.0: + + - Improved trading page: + - New resizable order book component; + - New market selector with ability to filter by quote currency and sort by different parameters (volume, percent change, name); + - New create order form (estimated market order price and spent balance, ability to select percentage of your balance); + - improved components layout. + - Added estimated balance in one currency to wallet page; + - Mobile responsiveness; + - Ability to display users with pending documents for admin; + - General UI fixes, platform stabilization and small improvments. + diff --git a/docs/releases/2.2.0.md b/docs/releases/2.2.0.md new file mode 100644 index 0000000..0f14f43 --- /dev/null +++ b/docs/releases/2.2.0.md @@ -0,0 +1,12 @@ +#### Overview + +BaseApp frontend v2.2.0 fully compatible with Barong v2.2.20 and Peatio v2.2.19. + +## New features comparing with v2.1.0: + + - Ability to switch between dark and light themes; + - Added user's trade on recent trades component; + - Improved sorting on market selector component; + - List API keys immediately without providing 2FA code; + - Cancelling orders by event from WS; + - General UI fixes, platform stabilization and small improvements. diff --git a/docs/roadmap.md b/docs/roadmap.md new file mode 100644 index 0000000..5350afc --- /dev/null +++ b/docs/roadmap.md @@ -0,0 +1,23 @@ +# Baseapp + +## v2.4 + + * Integration of bootstrap and refactoring minor style with it + * Remove depedancy to openware/components and merge them + * Support for CSRF (breaking change) + * Password strength indicator + * Integration of a Base Landing page + * Integration of an API documentation for traders and bots + * Finex integration + +## v2.5 + + * New wallet page mobile responsive + * React upgrade + * Unify configuration management from barong/peatio config api + * Stop Loss order form + * Rework login redux flow + +## v3.0 + +Not defined diff --git a/images.d.ts b/images.d.ts new file mode 100644 index 0000000..ada0bb9 --- /dev/null +++ b/images.d.ts @@ -0,0 +1,3 @@ +declare module '*.svg'; +declare module '*.png'; +declare module '*.jpg'; diff --git a/ionic.config.json b/ionic.config.json new file mode 100644 index 0000000..feb1e04 --- /dev/null +++ b/ionic.config.json @@ -0,0 +1,7 @@ +{ + "name": "Fibitex", + "integrations": { + "capacitor": {} + }, + "type": "react" +} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..2c10950 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,38 @@ +module.exports = { + 'roots': [ + '' + ], + 'transform': { + '^.+\\.(tsx|ts)$': 'ts-jest', + '^.+\\.(jsx|js)$': 'babel-jest', + '^.+\\.svg$': '/svgTransform.js', + }, + 'testRegex': '(/__tests__/.*|(\\.|/)(test|spec))\\.(tsx|jsx)?$', + 'moduleFileExtensions': [ + 'ts', + 'tsx', + 'js', + 'jsx', + 'json', + 'node', + 'css', + 'scss', + ], + 'snapshotSerializers': ['enzyme-to-json/serializer'], + 'transformIgnorePatterns': [ + "/node_modules/(?!lodash-es)" + ], + 'moduleNameMapper': { + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': + '/__mocks__/fileMock.js', + '\\.(css|scss|pcss)$': '/__mocks__/styleMock.js', + }, + 'testURL': "http://localhost", + 'collectCoverageFrom': [ + "/src/**/*.{ts,tsx,js,jsx}", + ], + "coveragePathIgnorePatterns": [ + "/node_modules/", + "/src/charting_library/**", + ] +}; diff --git a/mocks/api/v2/applogic/customization/GET.mock b/mocks/api/v2/applogic/customization/GET.mock new file mode 100644 index 0000000..69f29b6 --- /dev/null +++ b/mocks/api/v2/applogic/customization/GET.mock @@ -0,0 +1,10 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "settings": "{\"theme_id\": \"1\",\"theme_colors\":[{\"key\":\"--rgb-main-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-body-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-header-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-subheader-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-dropdown-background-color\",\"value\":\"125, 19, 23\"},{\"key\":\"--rgb-icons\",\"value\":\"115, 127, 146\"},{\"key\":\"--rgb-primary-cta-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-contrast-cta-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-secondary-contrast-cta-color\",\"value\":\"115, 127, 146\"},{\"key\":\"--rgb-cta-layer-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-system-green\",\"value\":\"84, 180, 137\"},{\"key\":\"--rgb-system-red\",\"value\":\"232, 94, 89\"},{\"key\":\"--rgb-system-yellow\",\"value\":\"232, 175, 89\"},{\"key\":\"--rgb-asks\",\"value\":\"232, 94, 89\"},{\"key\":\"--rgb-bids\",\"value\":\"84, 180, 137\"},{\"key\":\"--rgb-primary-text-color\",\"value\":\"255, 255, 255\"},{\"key\":\"--rgb-text-contrast-color\",\"value\":\"23, 28, 41\"},{\"key\":\"--rgb-input-background-color\",\"value\":\"30, 40, 65\"},{\"key\":\"--rgb-divider-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-shadow-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-landing-background-color\",\"value\":\"251, 251, 251\"},{\"key\":\"--rgb-strength-meter-very-strong\",\"value\":\"108, 239, 239\"}]}" +} diff --git a/mocks/api/v2/applogic/customization/OPTIONS.mock b/mocks/api/v2/applogic/customization/OPTIONS.mock new file mode 100644 index 0000000..7ee5583 --- /dev/null +++ b/mocks/api/v2/applogic/customization/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/applogic/customization/POST.mock b/mocks/api/v2/applogic/customization/POST.mock new file mode 100644 index 0000000..60e76d1 --- /dev/null +++ b/mocks/api/v2/applogic/customization/POST.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "settings": "{\"theme_id\": \"1\",\"theme_colors\":[{\"key\":\"--rgb-main-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-body-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-header-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-subheader-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-dropdown-background-color\",\"value\":\"125, 19, 23\"},{\"key\":\"--rgb-icons\",\"value\":\"115, 127, 146\"},{\"key\":\"--rgb-primary-cta-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-contrast-cta-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-secondary-contrast-cta-color\",\"value\":\"115, 127, 146\"},{\"key\":\"--rgb-cta-layer-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-system-green\",\"value\":\"84, 180, 137\"},{\"key\":\"--rgb-system-red\",\"value\":\"232, 94, 89\"},{\"key\":\"--rgb-system-yellow\",\"value\":\"232, 175, 89\"},{\"key\":\"--rgb-asks\",\"value\":\"232, 94, 89\"},{\"key\":\"--rgb-bids\",\"value\":\"84, 180, 137\"},{\"key\":\"--rgb-primary-text-color\",\"value\":\"255, 255, 255\"},{\"key\":\"--rgb-text-contrast-color\",\"value\":\"23, 28, 41\"},{\"key\":\"--rgb-input-background-color\",\"value\":\"30, 40, 65\"},{\"key\":\"--rgb-divider-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-shadow-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-landing-background-color\",\"value\":\"251, 251, 251\"},{\"key\":\"--rgb-strength-meter-very-strong\",\"value\":\"108, 239, 239\"}]}" +} diff --git a/mocks/api/v2/dalan/identity/configs/GET.mock b/mocks/api/v2/dalan/identity/configs/GET.mock new file mode 100644 index 0000000..015d218 --- /dev/null +++ b/mocks/api/v2/dalan/identity/configs/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "session_expire_time": 5000, + "captcha_type": "none", + "captcha_id": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI", + "password_min_entropy": 14 +} diff --git a/mocks/api/v2/dalan/identity/ping/GET.mock b/mocks/api/v2/dalan/identity/ping/GET.mock new file mode 100644 index 0000000..17fe023 --- /dev/null +++ b/mocks/api/v2/dalan/identity/ping/GET.mock @@ -0,0 +1,9 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "ping": "pong" +} diff --git a/mocks/api/v2/dalan/identity/sessions/DELETE.mock b/mocks/api/v2/dalan/identity/sessions/DELETE.mock new file mode 100644 index 0000000..d5caec3 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/DELETE.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/identity/sessions/OPTIONS.mock b/mocks/api/v2/dalan/identity/sessions/OPTIONS.mock new file mode 100644 index 0000000..b604284 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=&password=&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=&password=&otp_code=.mock new file mode 100644 index 0000000..48c55cf --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=&password=&otp_code=.mock @@ -0,0 +1,8 @@ +HTTP/2 400 +content-type: application/json +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + +{"error":"Email is missing, Password is missing, otp_code is missing, recaptcha response is missing"} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=accountant@barong.io&password=123123.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=accountant@barong.io&password=123123.mock new file mode 100644 index 0000000..13797ee --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=accountant@barong.io&password=123123.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "accountant@peatio.tech", + "level": 3, + "otp": false, + "role": "accountant", + "state": "active", + "uid": "ID787E387912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=admin@barong.io&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=admin@barong.io&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..2f172ea --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=admin@barong.io&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "admin@barong.io", + "level": 3, + "otp": false, + "role": "admin", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=compliance@barong.io&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=compliance@barong.io&password=123123&otp_code=.mock new file mode 100644 index 0000000..8af00fd --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=compliance@barong.io&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "compliance@peatio.tech", + "level": 3, + "otp": false, + "role": "compliance", + "state": "active", + "uid": "ID787E383912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..7d79d7f --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,7 @@ +HTTP/2 403 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{"error":"The account has enabled 2FA but OTP code is missing"} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=123456&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=123456&recaptcha_response=.mock new file mode 100644 index 0000000..9d6de8b --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=123456&recaptcha_response=.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "john@barong.io", + "level": 3, + "otp": true, + "role": "member", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=superadmin@barong.io&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=superadmin@barong.io&password=123123&otp_code=.mock new file mode 100644 index 0000000..07930ab --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=superadmin@barong.io&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "superadmin@peatio.tech", + "level": 3, + "otp": false, + "role": "superadmin", + "state": "active", + "uid": "ID787E383012" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=support@barong.io&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=support@barong.io&password=123123&otp_code=.mock new file mode 100644 index 0000000..7382a6f --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=support@barong.io&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "support@peatio.tech", + "level": 3, + "otp": false, + "role": "support", + "state": "active", + "uid": "ID787E383912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=technical@peatio.tech&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=technical@peatio.tech&password=123123&otp_code=.mock new file mode 100644 index 0000000..b1ed3ab --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=technical@peatio.tech&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "technical@peatio.tech", + "level": 3, + "otp": false, + "role": "technical", + "state": "active", + "uid": "ID787E383912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=toweradmin@barong.io&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=toweradmin@barong.io&password=123123&otp_code=.mock new file mode 100644 index 0000000..fb54d05 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=toweradmin@barong.io&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "toweradmin@peatio.tech", + "level": 3, + "otp": false, + "role": "admin", + "state": "active", + "uid": "ID787E383912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=user1@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=user1@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..d6be294 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=user1@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "user1@peatio.tech", + "level": 1, + "otp": false, + "role": "member", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=user2@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=user2@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..4f8fb20 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=user2@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "user2@peatio.tech", + "level": 2, + "otp": false, + "role": "member", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..695c2e0 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,8 @@ +HTTP/2 401 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + +{"error":"Invalid Email or Password"} diff --git a/mocks/api/v2/dalan/identity/sessions/POST.mock b/mocks/api/v2/dalan/identity/sessions/POST.mock new file mode 100644 index 0000000..3d17ef5 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST.mock @@ -0,0 +1,82 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email":"admin@barong.io", + "uid":"ID489F525B1D", + "role":"admin", + "level": 1, + "otp":true, + "state":"active", + "referral_uid":null, + "data":"{\"language\":\"en\"}", + "created_at":"2019-10-30T11:15:07Z", + "updated_at":"2020-01-13T11:59:31Z", + "labels":[ + {"key":"email","value":"verified","scope":"private","created_at":"2019-10-30T11:15:07Z","updated_at":"2019-10-30T11:15:07Z"}, + {"key":"phone","value":"","scope":"private","created_at":"2019-12-24T12:05:26Z","updated_at":"2019-12-24T12:05:26Z"}, + {"key":"profile","value":"","scope":"private","created_at":"2020-01-15T19:33:17Z","updated_at":"2020-01-15T19:33:17Z"}, + {"key":"document","value":"pending","scope":"private","created_at":"2020-01-15T19:34:04Z","updated_at":"2020-01-15T19:34:04Z"} + ], + "phones":[ + {"country":"UA","number":"380504403893","validated_at":"2019-12-24T12:05:26.000Z"} + ], + "data_storages":[], + "csrf_token": "wddwew33r", + "profiles": [ + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Louisa", + "last_name": "Break", + "postcode": null, + "state": "verified", + "updated_at":"2019-01-10T17:06:37Z", + "created_at":"2019-01-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Marianna", + "last_name": "The Best", + "postcode": null, + "state": "verified", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Rejected", + "last_name": "The Best", + "postcode": null, + "state": "rejected", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Antoinette", + "last_name": "Ferguson", + "postcode": null, + "state": "verified", + "updated_at":"2019-03-10T17:06:37Z", + "created_at":"2019-03-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + } + ] +} diff --git a/mocks/api/v2/dalan/identity/users/OPTIONS.mock b/mocks/api/v2/dalan/identity/users/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dalan/identity/users/POST.mock b/mocks/api/v2/dalan/identity/users/POST.mock new file mode 100644 index 0000000..8a29b6f --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/POST.mock @@ -0,0 +1,25 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "email":"admin@barong.io", + "uid":"ID489F525B1D", + "role": "member", + "level": 0, + "otp": false, + "state": "pending", + "referral_uid": null, + "csrf_token": "8b281b3032013f1fcf3c", + "data": "{\"language\":\"en\"}", + "created_at": "2021-01-18T15:28:54Z", + "updated_at": "2021-01-18T15:28:54Z", + "labels": [], + "phones": [], + "profiles": [], + "data_storages": [] +} diff --git a/mocks/api/v2/dalan/identity/users/email/generate_code/OPTIONS.mock b/mocks/api/v2/dalan/identity/users/email/generate_code/OPTIONS.mock new file mode 100644 index 0000000..b604284 --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/email/generate_code/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + diff --git a/mocks/api/v2/dalan/identity/users/email/generate_code/POST--email=wrong@email.com.mock b/mocks/api/v2/dalan/identity/users/email/generate_code/POST--email=wrong@email.com.mock new file mode 100644 index 0000000..c07fb2c --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/email/generate_code/POST--email=wrong@email.com.mock @@ -0,0 +1,8 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "error": "User doesn't exist or has already been activated" +} diff --git a/mocks/api/v2/dalan/identity/users/email/generate_code/POST.mock b/mocks/api/v2/dalan/identity/users/email/generate_code/POST.mock new file mode 100644 index 0000000..a45a95b --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/email/generate_code/POST.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +201 diff --git a/mocks/api/v2/dalan/identity/users/password/confirm_code/OPTIONS.mock b/mocks/api/v2/dalan/identity/users/password/confirm_code/OPTIONS.mock new file mode 100644 index 0000000..b604284 --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/password/confirm_code/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + diff --git a/mocks/api/v2/dalan/identity/users/password/confirm_code/POST.mock b/mocks/api/v2/dalan/identity/users/password/confirm_code/POST.mock new file mode 100644 index 0000000..a45a95b --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/password/confirm_code/POST.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +201 diff --git a/mocks/api/v2/dalan/identity/users/password/generate_code/OPTIONS.mock b/mocks/api/v2/dalan/identity/users/password/generate_code/OPTIONS.mock new file mode 100644 index 0000000..b604284 --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/password/generate_code/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + diff --git a/mocks/api/v2/dalan/identity/users/password/generate_code/POST.mock b/mocks/api/v2/dalan/identity/users/password/generate_code/POST.mock new file mode 100644 index 0000000..a45a95b --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/password/generate_code/POST.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +201 diff --git a/mocks/api/v2/dalan/identity/users/register_geetest/GET.mock b/mocks/api/v2/dalan/identity/users/register_geetest/GET.mock new file mode 100644 index 0000000..637f00d --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/register_geetest/GET.mock @@ -0,0 +1,10 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "gt": "0c4ab8ac2ed12c1c3f4a023dff99cd87", + "challenge": "25e8fe07feed0b02eb88634a7b052be4" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/GET--page=1&limit=4.mock b/mocks/api/v2/dalan/resource/api_keys/GET--page=1&limit=4.mock new file mode 100644 index 0000000..509c6d6 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET--page=1&limit=4.mock @@ -0,0 +1,39 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:56:57Z", + "kid": "5c3933e8c8f97071", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:56:57Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "16da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "26da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "36da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + } +] diff --git a/mocks/api/v2/dalan/resource/api_keys/GET--page=2&limit=4.mock b/mocks/api/v2/dalan/resource/api_keys/GET--page=2&limit=4.mock new file mode 100644 index 0000000..c750f44 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET--page=2&limit=4.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "46da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + } +] diff --git a/mocks/api/v2/dalan/resource/api_keys/GET--page=5&limit=1.mock b/mocks/api/v2/dalan/resource/api_keys/GET--page=5&limit=1.mock new file mode 100644 index 0000000..c750f44 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET--page=5&limit=1.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "46da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + } +] diff --git a/mocks/api/v2/dalan/resource/api_keys/GET--totp_code=.mock b/mocks/api/v2/dalan/resource/api_keys/GET--totp_code=.mock new file mode 100644 index 0000000..7aa0fe0 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET--totp_code=.mock @@ -0,0 +1,8 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "error": "This code was already used. Wait until the next time period" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/GET.mock b/mocks/api/v2/dalan/resource/api_keys/GET.mock new file mode 100644 index 0000000..1841bc0 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET.mock @@ -0,0 +1,47 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:56:57Z", + "kid": "5c3933e8c8f97071", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:56:57Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "16da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "26da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "36da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "46da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + } +] diff --git a/mocks/api/v2/dalan/resource/api_keys/OPTIONS.mock b/mocks/api/v2/dalan/resource/api_keys/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/api_keys/POST--totp_code=&algorithm=HS256.mock b/mocks/api/v2/dalan/resource/api_keys/POST--totp_code=&algorithm=HS256.mock new file mode 100644 index 0000000..fbc26da --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/POST--totp_code=&algorithm=HS256.mock @@ -0,0 +1,9 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "error": "This code was already used. Wait until the next time period" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/POST.mock b/mocks/api/v2/dalan/resource/api_keys/POST.mock new file mode 100644 index 0000000..c178d05 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/POST.mock @@ -0,0 +1,15 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "algorithm": "HS256", + "created_at": "2019-02-14T15:56:57Z", + "kid": "5c3933e8c8f97071", + "scope": [], + "secret": "27757139646497bf91389d9e70cf973c", + "state": "active", + "updated_at": "2019-02-14T15:56:57Z" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/__/DELETE--totp_code=.mock b/mocks/api/v2/dalan/resource/api_keys/__/DELETE--totp_code=.mock new file mode 100644 index 0000000..fbc26da --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/DELETE--totp_code=.mock @@ -0,0 +1,9 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "error": "This code was already used. Wait until the next time period" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/__/DELETE.mock b/mocks/api/v2/dalan/resource/api_keys/__/DELETE.mock new file mode 100644 index 0000000..052e006 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/DELETE.mock @@ -0,0 +1,5 @@ +HTTP/2 204 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/resource/api_keys/__/OPTIONS.mock b/mocks/api/v2/dalan/resource/api_keys/__/OPTIONS.mock new file mode 100644 index 0000000..b4a3c40 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/resource/api_keys/__/PATCH--totp_code=000000&state=disabled.mock b/mocks/api/v2/dalan/resource/api_keys/__/PATCH--totp_code=000000&state=disabled.mock new file mode 100644 index 0000000..fbc26da --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/PATCH--totp_code=000000&state=disabled.mock @@ -0,0 +1,9 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "error": "This code was already used. Wait until the next time period" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/__/PATCH.mock b/mocks/api/v2/dalan/resource/api_keys/__/PATCH.mock new file mode 100644 index 0000000..4d0b3d7 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/PATCH.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "algorithm": "HS256", + "created_at": "2019-02-14T15:56:57Z", + "kid": "5c3933e8c8f97071", + "scope": [], + "state": "disabled", + "updated_at": "2019-02-14T15:56:57Z" +} diff --git a/mocks/api/v2/dalan/resource/documents/POST.mock b/mocks/api/v2/dalan/resource/documents/POST.mock new file mode 100644 index 0000000..21418ea --- /dev/null +++ b/mocks/api/v2/dalan/resource/documents/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +201 diff --git a/mocks/api/v2/dalan/resource/labels/GET.mock b/mocks/api/v2/dalan/resource/labels/GET.mock new file mode 100644 index 0000000..7dae1a6 --- /dev/null +++ b/mocks/api/v2/dalan/resource/labels/GET.mock @@ -0,0 +1,28 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "key":"email", + "value":"verified", + "scope":"private", + "created_at":"2019-02-12T15:00:40Z", + "updated_at":"2019-02-12T15:00:40Z" + }, + { + "key":"profile", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:41:14Z", + "updated_at":"2019-02-25T12:41:14Z" + }, + { + "key":"access_phone", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + } +] diff --git a/mocks/api/v2/dalan/resource/labels/GET03.mock b/mocks/api/v2/dalan/resource/labels/GET03.mock new file mode 100644 index 0000000..c457aa1 --- /dev/null +++ b/mocks/api/v2/dalan/resource/labels/GET03.mock @@ -0,0 +1,57 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "key":"email", + "value":"verified", + "scope":"private", + "created_at":"2019-02-12T15:00:40Z", + "updated_at":"2019-02-12T15:00:40Z" + }, + { + "key":"profile", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:41:14Z", + "updated_at":"2019-02-25T12:41:14Z" + }, + { + "key":"access_phone", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"card", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"iban", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"poa", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"telephone", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + } + +] diff --git a/mocks/api/v2/dalan/resource/labels/GET1.mock b/mocks/api/v2/dalan/resource/labels/GET1.mock new file mode 100644 index 0000000..6a2c721 --- /dev/null +++ b/mocks/api/v2/dalan/resource/labels/GET1.mock @@ -0,0 +1,49 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "key":"email", + "value":"verified", + "scope":"private", + "created_at":"2019-02-12T15:00:40Z", + "updated_at":"2019-02-12T15:00:40Z" + }, + { + "key":"profile", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:41:14Z", + "updated_at":"2019-02-25T12:41:14Z" + }, + { + "key":"access_phone", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"card", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"iban", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"poa", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + } +] diff --git a/mocks/api/v2/dalan/resource/otp/enable/OPTIONS.mock b/mocks/api/v2/dalan/resource/otp/enable/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/enable/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/otp/enable/POST--code=0000000.mock b/mocks/api/v2/dalan/resource/otp/enable/POST--code=0000000.mock new file mode 100644 index 0000000..f9aa6e7 --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/enable/POST--code=0000000.mock @@ -0,0 +1,9 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "error": "OTP code is invalid" +} diff --git a/mocks/api/v2/dalan/resource/otp/enable/POST.mock b/mocks/api/v2/dalan/resource/otp/enable/POST.mock new file mode 100644 index 0000000..ae0da69 --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/enable/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +200 diff --git a/mocks/api/v2/dalan/resource/otp/generate_qrcode/OPTIONS.mock b/mocks/api/v2/dalan/resource/otp/generate_qrcode/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/generate_qrcode/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/otp/generate_qrcode/POST.mock b/mocks/api/v2/dalan/resource/otp/generate_qrcode/POST.mock new file mode 100644 index 0000000..346af5c --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/generate_qrcode/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{"auth":null,"data":{"barcode":"iVBORw0KGgoAAAANSUhEUgAAASwAAAEsEAAAAAAMhg3qAAAH7UlEQVR4nOzdy27jOhaG0U6j3v+VqwepgQCbMRnyk5PGWpMDBLKkOD94aoOX/efv3//Acf999wvw/0mwSPz5/M/Hx/lbn/qf7PXdrvcc/fyU0Xey86yZe878XqvvNvMdnvJ5fyMWCcEiIVgkBIuEYJH48/ijouo5dZ+dCnHnmuvPV9/hVHU5893ufP9n/+5GLBKCRUKwSAgWCcEi8aQqvJqpMmaqidVKaqfaWp1D3KnmdubgVu8/umb1/jP2/+5GLBKCRUKwSAgWCcEi8aIqfJedamtnheSdFeJMZTczXzlzz/u3zBixSAgWCcEiIVgkBIvEm6vCnYrv6s49gMVevBl3/u77jFgkBIuEYJEQLBKCReJFVVhXFqf2A56qLlevKfY5nlr5ufO32/+7G7FICBYJwSIhWCQEi8STqvBdc2Gjd1hdpXnq5zPvs+onv//Zv7sRi4RgkRAsEoJFQrBI/KsKf2Orpp0Vnqu/750rUe/sxNH93Y1YJASLhGCRECwSgkXi47MuKFYzFp0XZu5/alXnqp1zQXe+q1OdOFY5g5Q3ECwSgkVCsEgIFomPr/9tv1OpnaryZt6n2Ff4rvucOn91Rvd9GrFICBYJwSIhWCQEi8S/FaQ7nReuTlUZO3ZWXZ7axzfzbqPnFu9z52c/f27EIiFYJASLhGCRECwST06bqef7Vq8vqtHVs0xPnX16Vc9F7nx29LvPfz9GLBKCRUKwSAgWCcEi8WQFaTHfNLrPjlN761afNbKzd++ec0Efn7VaUc5fb8QiIVgkBIuEYJEQLBIvTpsZfizunH6qWplx54rQU/c8tUp29Nz9uVcjFgnBIiFYJASLhGCReFIVjty/N23enVXkSNFncOZZV6e+w/13M2KRECwSgkVCsEgIFokn/Qrrk09m7rlz/c6K1lN79Hb2J47uufPcke/tGZy5xohFQrBICBYJwSIhWCSenEG6c2JM0StwpnLZMfPOOxXxqfnK1cp91dk5XCMWCcEiIVgkBIuEYJF4cdrMqfm71et3VoTWKyfrU2XOztl97z2vzBXygwgWCcEiIVgkBIvEQlW4U6EUFdOMYs5upN4/eGfvxf2/uxGLhGCRECwSgkVCsEgsdKaYUZ+NObr+1Ek4M97VaaKumnee+3i9EYuEYJEQLBKCRUKwSBzoYl/3Maw76d85f1ecuXpqFe7MNfPflRGLhGCRECwSgkVCsEg8OW3maqY6ONWlYsadHStOnQtaK85lnfH138KIRUKwSAgWCcEiIVgknswV7tipmO5cQVpXdjsrZle/h2I/4/5cpBGLhGCRECwSgkVCsEi8WEF6VffyW73nzLvdeZ7qT+vgP3Jqj6czSHkDwSIhWCQEi4RgkXhSFe6s/Lyz7+GOYu6sPhVnxs85o9WIRUKwSAgWCcEiIVgkXqwgPXVizCmn7l/Ph44++645zZGdk2e+ZsQiIVgkBIuEYJEQLBLf7GL/ru4VI3f2JRx5VweNn/B7PV5vxCIhWCQEi4RgkRAsEgudKVZXTl7N7L871dXiVDeNmXcbXTN61s47zDhVXe7PyRqxSAgWCcEiIVgkBIvEk84UO3NeI8U82k/Yi3fqPu/67NXZVbVGLBKCRUKwSAgWCcEi8c19hfWZmXfurTtV1e5Upmfn6R7t9J38XvVtxCIhWCQEi4RgkRAsEv+qwpn5uJ0TV652egjOONX94dSc6WpVVe8rPHW9fYW8gWCRECwSgkVCsEi8WEG60wtvpzr7yas0d/ZXjhTV69WplbrzjFgkBIuEYJEQLBKCReLFXOHVzlzhTkeGe05HebzP6orZU2eK7swJnnrWqsff3YhFQrBICBYJwSIhWCT+daZYXf1YryYtTpKpO+MXPQ1PVesz73O22jVikRAsEoJFQrBICBaJhc4UV3eeGLNTMZ3aA1icj7o6f3dqP6bOFPxigkVCsEgIFgnBIvHNM0jvrJ5G77P6njP3qavOkXoOcWY17Nm5SCMWCcEiIVgkBIuEYJH4+N6/+U91c9i5fvWzxUk4dbX7G1fVWkFKSLBICBYJwSIhWCSe7Cs8VSWNrhmpq57iWTPvcPWuarQ4p/RrRiwSgkVCsEgIFgnBIvFkrrA4VWbkVAV3ag/juzpxjNTzjzPXz7zb432MWCQEi4RgkRAsEoJF4kVVOHKqgrjTqZ6JM/ecuX70rOJ81xn2FfILCBYJwSIhWCQEi8STLvYjpzovzHx2Z57r1NzczvWr54UW+xNPVeLfe2cjFgnBIiFYJASLhGCReNLFfke9J2616rlzVero56fmE0fXnOpMcbXfTcOIRUKwSAgWCcEiIVgkFuYKV42qudE1xb68ugPFzrNG14wU84bdylUjFgnBIiFYJASLhGCReNHFftWp6mP1fXbm5urVs6NrduYE6472q9c8MmKRECwSgkVCsEgIFokXXeyLU01mFHsDVyu7emXmzhziTs/HU3snv36uEYuEYJEQLBKCRUKwSLyoCms7Kzln1PvvroquFqfOLC16QX79PkYsEoJFQrBICBYJwSLx5qqw7sE386xT99yx8w5nO0o8fnZmftNcITcRLBKCRUKwSAgWiRdVYVH1rM6Lrd5/pJjLKz67es87nztirpCbCBYJwSIhWCQEi8STqrA4j3Rnf1zR1WLHateMnXnAnetnPlucLPTJiEVCsEgIFgnBIiFYJD6Ks2LAiEVCsEj8LwAA//+S1YC0dw+XhgAAAABJRU5ErkJggg==","url":"otpauth://totp/Microkube:john@barong.io?algorithm=SHA1\u0026digits=6\u0026issuer=Microkube\u0026period=30\u0026secret=JDP7L27SU7SUBL4UU2NRYE4HQDGB5AN4"},"lease_duration":0,"lease_id":"","renewable":false,"warnings":null,"wrap_info":null} \ No newline at end of file diff --git a/mocks/api/v2/dalan/resource/phones/OPTIONS.mock b/mocks/api/v2/dalan/resource/phones/OPTIONS.mock new file mode 100644 index 0000000..a87e233 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1111.mock b/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1111.mock new file mode 100644 index 0000000..abfbf49 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1111.mock @@ -0,0 +1,7 @@ +HTTP/2 400 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{"errors":["resource.phone.number_exist"]} diff --git a/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1234.mock b/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1234.mock new file mode 100644 index 0000000..62f97eb --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1234.mock @@ -0,0 +1,7 @@ +HTTP/2 400 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{"errors":["resource.phone.exists"]} diff --git a/mocks/api/v2/dalan/resource/phones/send_code/OPTIONS.mock b/mocks/api/v2/dalan/resource/phones/send_code/OPTIONS.mock new file mode 100644 index 0000000..a87e233 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/send_code/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/resource/phones/send_code/POST.mock b/mocks/api/v2/dalan/resource/phones/send_code/POST.mock new file mode 100644 index 0000000..1572c13 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/send_code/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{"message":"Code was sent successfully via sms"} diff --git a/mocks/api/v2/dalan/resource/phones/verify/OPTIONS.mock b/mocks/api/v2/dalan/resource/phones/verify/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/verify/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/phones/verify/POST.mock b/mocks/api/v2/dalan/resource/phones/verify/POST.mock new file mode 100644 index 0000000..21418ea --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/verify/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +201 diff --git a/mocks/api/v2/dalan/resource/profiles/OPTIONS.mock b/mocks/api/v2/dalan/resource/profiles/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/profiles/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/profiles/POST.mock b/mocks/api/v2/dalan/resource/profiles/POST.mock new file mode 100644 index 0000000..21418ea --- /dev/null +++ b/mocks/api/v2/dalan/resource/profiles/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +201 diff --git a/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=1.mock b/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=1.mock new file mode 100644 index 0000000..302305a --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=1.mock @@ -0,0 +1,260 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 22, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:14.000Z" +}, { + "id": 23, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:12:16.000Z" +}, { + "id": 24, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:15:20.000Z" +}, { + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 26, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}, { + "id": 30, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:41:55.000Z" +}, { + "id": 31, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:43:56.000Z" +}, { + "id": 33, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:53:01.000Z" +}, { + "id": 35, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "otp", + "action": "request QR code for 2FA", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:54:46.000Z" +}, +{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 26, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=2.mock b/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=2.mock new file mode 100644 index 0000000..3de51d1 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=2.mock @@ -0,0 +1,38 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + +[{ + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=1.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=1.mock new file mode 100644 index 0000000..29ac713 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=1.mock @@ -0,0 +1,109 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 22, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:14.000Z" +}, { + "id": 23, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:12:16.000Z" +}, { + "id": 24, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:15:20.000Z" +}, { + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 26, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=2.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=2.mock new file mode 100644 index 0000000..e5b9dc5 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=2.mock @@ -0,0 +1,110 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}, { + "id": 30, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:41:55.000Z" +}, { + "id": 31, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:43:56.000Z" +}, { + "id": 33, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:53:01.000Z" +}, { + "id": 35, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "otp", + "action": "request QR code for 2FA", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:54:46.000Z" +}, +{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 26, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=3.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=3.mock new file mode 100644 index 0000000..d38752b --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=3.mock @@ -0,0 +1,90 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}, +{ + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=1.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=1.mock new file mode 100644 index 0000000..627e743 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=1.mock @@ -0,0 +1,261 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 24, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 23, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 22, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:14.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:15:20.000Z" +}, { + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 1, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 2, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 3, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 4, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "failed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}, { + "id": 5, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:41:55.000Z" +}, { + "id": 6, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:43:56.000Z" +}, { + "id": 7, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:53:01.000Z" +}, { + "id": 8, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "otp", + "action": "request QR code for 2FA", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:54:46.000Z" +}, +{ + "id": 9, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 10, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 11, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 12, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 13, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 14, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 15, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 16, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 17, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, +{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 18, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=2.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=2.mock new file mode 100644 index 0000000..3de51d1 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=2.mock @@ -0,0 +1,38 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + +[{ + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET.mock new file mode 100644 index 0000000..dcaa133 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET.mock @@ -0,0 +1,4 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/users/activity/all/OPTIONS.mock b/mocks/api/v2/dalan/resource/users/activity/all/OPTIONS.mock new file mode 100644 index 0000000..7ee5583 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/users/me/GET.mock b/mocks/api/v2/dalan/resource/users/me/GET.mock new file mode 100644 index 0000000..00562cb --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/me/GET.mock @@ -0,0 +1,65 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + + + +{ + "email":"yaser.rezaei@gmail.com", + "uid":"ID9B35B4A318", + "role":"member", + "level":0, + "otp":false, + "state":"active", + "referral_uid":null, + "data":"{\"language\":\"en\"}", + "labels":[ + { + "key":"email", + "value":"verified", + "scope":"private", + "created_at":"2021-08-08T04:38:20Z", + "updated_at":"2021-08-08T04:38:20Z" + }, + { + "key":"profile", + "value":"verified", + "scope":"private", + "created_at":"2021-08-08T07:00:11Z", + "updated_at":"2021-08-08T07:00:46Z" + }, + { + "key":"access_phone", + "value":"verified", + "scope":"private", + "created_at":"2021-08-08T07:01:30Z", + "updated_at":"2021-08-08T07:01:44Z" + }], + "phones":[ + { + "country":"IR", + "number":"98******9700", + "validated_at":"2021-08-08T07:01:44.000Z" + }], + "profiles":[ + { + "first_name":"یاسر", + "last_name":"ر****", + "national_code":"07937*****", + "dob":"1363-06-**", + "address":null, + "postcode":null, + "city":null, + "country":null, + "state":"verified", + "metadata":null, + "upload":null, + "created_at":"2021-08-08T07:00:10Z", + "updated_at":"2021-08-08T07:00:46Z" + }], + "data_storages":[], + "created_at":"2021-08-08T04:37:58Z", + "updated_at":"2021-08-08T04:38:20Z" +} \ No newline at end of file diff --git a/mocks/api/v2/dalan/resource/users/me/GET1.mock b/mocks/api/v2/dalan/resource/users/me/GET1.mock new file mode 100644 index 0000000..23eed7e --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/me/GET1.mock @@ -0,0 +1,81 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "john@barong.io", + "level": 2, + "otp": true, + "role": "superadmin", + "state": "active", + "uid": "ID787E383938", + "csrf_token": "31415926535897932384626433832795028841971", + "data":"{\"language\":\"en\"}", + "profiles": [ + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Louisa", + "last_name": "Break", + "postcode": null, + "state": "verified", + "updated_at":"2019-01-10T17:06:37Z", + "created_at":"2019-01-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Marianna", + "last_name": "The Best", + "postcode": null, + "state": "verified", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Rejected", + "last_name": "The Best", + "postcode": null, + "state": "rejected", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Antoinette", + "last_name": "Ferguson", + "postcode": null, + "state": "verified", + "updated_at":"2019-03-10T17:06:37Z", + "created_at":"2019-03-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + } + ], + "labels": [ + { + "key": "phone", + "value": "verify", + "scope": "private", + "created_at": "2019-05-16T14:01:49Z", + "updated_at": "2019-05-16T14:01:49Z" + } + ], + "phones": "+380501823918" +} + diff --git a/mocks/api/v2/dalan/resource/users/me/OPTIONS.mock b/mocks/api/v2/dalan/resource/users/me/OPTIONS.mock new file mode 100644 index 0000000..7ee5583 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/me/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/users/me/PUT.mock b/mocks/api/v2/dalan/resource/users/me/PUT.mock new file mode 100644 index 0000000..a82c5a3 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/me/PUT.mock @@ -0,0 +1,83 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email":"admin@barong.io", + "uid":"ID489F525B1D", + "role":"admin", + "level": 1, + "otp":true, + "state":"active", + "referral_uid":null, + "created_at":"2019-10-30T11:15:07Z", + "updated_at":"2020-01-13T11:59:31Z", + "data":"{\"language\":\"en\"}", + "labels":[ + {"key":"email","value":"verified","scope":"private","created_at":"2019-10-30T11:15:07Z","updated_at":"2019-10-30T11:15:07Z"}, + {"key":"phone","value":"","scope":"private","created_at":"2019-12-24T12:05:26Z","updated_at":"2019-12-24T12:05:26Z"}, + {"key":"profile","value":"","scope":"private","created_at":"2020-01-15T19:33:17Z","updated_at":"2020-01-15T19:33:17Z"}, + {"key":"document","value":"pending","scope":"private","created_at":"2020-01-15T19:34:04Z","updated_at":"2020-01-15T19:34:04Z"} + ], + "phones":[ + {"country":"UA","number":"380504403893","validated_at":"2019-12-24T12:05:26.000Z"} + ], + "data_storages":[], + "data":"{\"language\":\"en\"}", + "csrf_token": "wddwew33r", + "profiles": [ + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Louisa", + "last_name": "Break", + "postcode": null, + "state": "verified", + "updated_at":"2019-01-10T17:06:37Z", + "created_at":"2019-01-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Marianna", + "last_name": "The Best", + "postcode": null, + "state": "verified", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Rejected", + "last_name": "The Best", + "postcode": null, + "state": "rejected", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Antoinette", + "last_name": "Ferguson", + "postcode": null, + "state": "verified", + "updated_at":"2019-03-10T17:06:37Z", + "created_at":"2019-03-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + } + ] +} diff --git a/mocks/api/v2/dalan/resource/users/password/OPTIONS.mock b/mocks/api/v2/dalan/resource/users/password/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/password/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/users/password/PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock b/mocks/api/v2/dalan/resource/users/password/PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock new file mode 100644 index 0000000..43df1e4 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/password/PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock @@ -0,0 +1,6 @@ +HTTP/2 422 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Allow-Headers: * + +{"errors":["password.requirements","password.password.password_strength"]} diff --git a/mocks/api/v2/dalan/resource/users/password/PUT.mock b/mocks/api/v2/dalan/resource/users/password/PUT.mock new file mode 100644 index 0000000..c0475af --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/password/PUT.mock @@ -0,0 +1,8 @@ +HTTP/2 201 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + +201 diff --git a/mocks/api/v2/dena/account/balances/GET.mock b/mocks/api/v2/dena/account/balances/GET.mock new file mode 100644 index 0000000..651352a --- /dev/null +++ b/mocks/api/v2/dena/account/balances/GET.mock @@ -0,0 +1,84 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "currency":"bch", + "balance":"0", + "locked":"0", + "deposit_address": { + "currencies": ["bch"], + "address": null, + "state": "pending" + } + }, + { + "currency": "btc", + "balance": "0.21026373", + "locked": "0.0", + "deposit_address": { + "currencies": ["btc"], + "address": "2NCimTNGnbm92drX7ARcwBKw6rvr456VWym", + "state": "active" + } + }, + { + "currency": "eth", + "balance": "1.5", + "locked": "0.05", + "deposit_address": { + "currencies": ["eth", "trst"], + "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", + "state": "active" + } + }, + { + "currency":"ltc", + "balance":"0.0", + "locked":"0.0", + "deposit_address": { + "currencies": ["eth", "ltc"], + "address":"0x00eec1e95026faf0412d7a29b94d514d31446141", + "state":"active" + } + }, + { + "currency":"dash", + "balance":"0", + "locked":"0", + "deposit_address": { + "currencies": ["dash"], + "address": "XpESxaUmonkq8RaLLp46Brx2K39ggQe226", + "state": "active" + } + }, + { + "currency":"xrp", + "balance":"0", + "locked":"0" + }, + { + "currency":"krw", + "balance":"548000", + "locked":"2000" + }, + { + "currency":"usd", + "balance":"1000.0", + "locked":"0.0" + }, + { + "currency":"eur", + "balance":"1000.0", + "locked":"0.0" + }, + { + "currency":"irt", + "balance":"1000000000", + "locked":"100000" + } +] diff --git a/mocks/api/v2/dena/account/balances/OPTIONS.mock b/mocks/api/v2/dena/account/balances/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/bch/GET.mock b/mocks/api/v2/dena/account/balances/bch/GET.mock new file mode 100644 index 0000000..1ef1cdd --- /dev/null +++ b/mocks/api/v2/dena/account/balances/bch/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"bch", + "balance":"10.12", + "locked":"0.1", + "deposit_address": { + "currencies": ["bch"], + "address": null, + "state": "pending" + } +} diff --git a/mocks/api/v2/dena/account/balances/bch/OPTIONS.mock b/mocks/api/v2/dena/account/balances/bch/OPTIONS.mock new file mode 100644 index 0000000..53f6e03 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/bch/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/account/balances/btc/GET.mock b/mocks/api/v2/dena/account/balances/btc/GET.mock new file mode 100644 index 0000000..9751b45 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/btc/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency": "btc", + "balance": "0.21026373", + "locked": "0.0", + "deposit_address": { + "currencies": ["btc"], + "address": "2NCimTNGnbm92drX7ARcwBKw6rvr456VWym", + "state": "active" + } +} diff --git a/mocks/api/v2/dena/account/balances/btc/OPTIONS.mock b/mocks/api/v2/dena/account/balances/btc/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/btc/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/dash/GET.mock b/mocks/api/v2/dena/account/balances/dash/GET.mock new file mode 100644 index 0000000..991418b --- /dev/null +++ b/mocks/api/v2/dena/account/balances/dash/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"dash", + "balance":"0", + "locked":"0", + "deposit_address": { + "currencies": ["dash"], + "address": "XpESxaUmonkq8RaLLp46Brx2K39ggQe226", + "state": "active" + } +} diff --git a/mocks/api/v2/dena/account/balances/dash/OPTIONS.mock b/mocks/api/v2/dena/account/balances/dash/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/dash/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/eth/GET.mock b/mocks/api/v2/dena/account/balances/eth/GET.mock new file mode 100644 index 0000000..36110a1 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/eth/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency": "eth", + "balance": "1.5", + "locked": "0.05", + "deposit_address": { + "currencies": ["eth", "ltc"], + "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", + "state": "active" + } +} diff --git a/mocks/api/v2/dena/account/balances/eth/OPTIONS.mock b/mocks/api/v2/dena/account/balances/eth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/eth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/eur/GET.mock b/mocks/api/v2/dena/account/balances/eur/GET.mock new file mode 100644 index 0000000..9f69156 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/eur/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"eur", + "balance":"1000.0", + "locked":"0.0" +} diff --git a/mocks/api/v2/dena/account/balances/eur/OPTIONS.mock b/mocks/api/v2/dena/account/balances/eur/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/eur/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/irt/GET.mock b/mocks/api/v2/dena/account/balances/irt/GET.mock new file mode 100644 index 0000000..f911196 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/irt/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"irt", + "balance":"1000000000", + "locked":"100000" +} diff --git a/mocks/api/v2/dena/account/balances/irt/OPTIONS.mock b/mocks/api/v2/dena/account/balances/irt/OPTIONS.mock new file mode 100644 index 0000000..53f6e03 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/irt/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/account/balances/ltc/GET.mock b/mocks/api/v2/dena/account/balances/ltc/GET.mock new file mode 100644 index 0000000..ebc4b96 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/ltc/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"ltc", + "balance":"0.0", + "locked":"0.0", + "deposit_address": { + "currencies": ["eth", "ltc"], + "address":"0x00eec1e95026faf0412d7a29b94d514d31446141", + "state":"active" + } +} diff --git a/mocks/api/v2/dena/account/balances/ltc/OPTIONS.mock b/mocks/api/v2/dena/account/balances/ltc/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/ltc/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/usd/GET.mock b/mocks/api/v2/dena/account/balances/usd/GET.mock new file mode 100644 index 0000000..889954e --- /dev/null +++ b/mocks/api/v2/dena/account/balances/usd/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"usd", + "balance":"1000.0", + "locked":"0.0" +} diff --git a/mocks/api/v2/dena/account/balances/usd/OPTIONS.mock b/mocks/api/v2/dena/account/balances/usd/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/usd/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/xrp/GET.mock b/mocks/api/v2/dena/account/balances/xrp/GET.mock new file mode 100644 index 0000000..1680bbc --- /dev/null +++ b/mocks/api/v2/dena/account/balances/xrp/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"xrp", + "balance":"0", + "locked":"0" +} diff --git a/mocks/api/v2/dena/account/balances/xrp/OPTIONS.mock b/mocks/api/v2/dena/account/balances/xrp/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/xrp/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/zar/GET.mock b/mocks/api/v2/dena/account/balances/zar/GET.mock new file mode 100644 index 0000000..09207b4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/zar/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"zar", + "balance":"1000.0", + "locked":"0.0" +} diff --git a/mocks/api/v2/dena/account/balances/zar/OPTIONS.mock b/mocks/api/v2/dena/account/balances/zar/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/zar/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/beneficiaries/10/DELETE.mock b/mocks/api/v2/dena/account/beneficiaries/10/DELETE.mock new file mode 100644 index 0000000..d4cbae5 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/DELETE.mock @@ -0,0 +1,7 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + diff --git a/mocks/api/v2/dena/account/beneficiaries/10/OPTIONS.mock b/mocks/api/v2/dena/account/beneficiaries/10/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dena/account/beneficiaries/10/activate/OPTIONS.mock b/mocks/api/v2/dena/account/beneficiaries/10/activate/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/activate/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH--pin=111111&id=10.mock b/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH--pin=111111&id=10.mock new file mode 100644 index 0000000..f04c21d --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH--pin=111111&id=10.mock @@ -0,0 +1,19 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "currency": "btc", + "data": null, + "address": "111", + "description": null, + "id": 140, + "name": "Hello", + "sent_at": "2020-09-10T12:56:05Z", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH.mock b/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH.mock new file mode 100644 index 0000000..794a7b3 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH.mock @@ -0,0 +1,20 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "id": 10, + "currency": "btc", + "uid": "IDE7FE1E3BE3", + "name": "Test New", + "description": null, + "data": { + "address": "wueieuiwue" + }, + "state": "active", + "sent_at": "2020-12-17T09:55:42Z" +} diff --git a/mocks/api/v2/dena/account/beneficiaries/10/activate/POST.mock b/mocks/api/v2/dena/account/beneficiaries/10/activate/POST.mock new file mode 100644 index 0000000..df23422 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/activate/POST.mock @@ -0,0 +1,20 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "id": 10, + "currency": "btc", + "uid": "IDE7FE1E3BE3", + "name": "Test", + "description": null, + "data": { + "address": "wueieuiwue" + }, + "state": "active", + "sent_at": "2020-12-17T09:55:42Z" +} diff --git a/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/OPTIONS.mock b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH--id=10.mock b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH--id=10.mock new file mode 100644 index 0000000..959819d --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH--id=10.mock @@ -0,0 +1,9 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +204 diff --git a/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH.mock b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH.mock new file mode 100644 index 0000000..959819d --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH.mock @@ -0,0 +1,9 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +204 diff --git a/mocks/api/v2/dena/account/beneficiaries/GET.mock b/mocks/api/v2/dena/account/beneficiaries/GET.mock new file mode 100644 index 0000000..248619e --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/GET.mock @@ -0,0 +1,18 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":9,"currency":"btc","name":"Mom","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"active"}, + {"id":10,"currency":"btc","name":"Pentagon","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"pending"}, + {"id":8,"currency":"usd","name":"My local bank","description":null,"data":{"bank_name":"ABC Bank","full_name":"John Smith","account_number":"123456789"},"state":"active"}, + {"id":9,"currency":"btc","name":"Mom2","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"active"}, + {"id":10,"currency":"btc","name":"Pentagon2","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"pending"}, + {"id":8,"currency":"usd","name":"My local bank2","description":null,"data":{"bank_name":"ABC Bank","full_name":"John Smith","account_number":"123456789"},"state":"active"}, + {"id":9,"currency":"btc","name":"Mom3","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"active"}, + {"id":10,"currency":"btc","name":"Pentagon3","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"pending"}, + {"id":8,"currency":"usd","name":"My local bank3","description":null,"data":{"bank_name":"ABC Bank","full_name":"John Smith","account_number":"123456789"},"state":"active"} +] diff --git a/mocks/api/v2/dena/account/beneficiaries/OPTIONS.mock b/mocks/api/v2/dena/account/beneficiaries/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dena/account/beneficiaries/POST--currency=btc&name=111&data.address=111.mock b/mocks/api/v2/dena/account/beneficiaries/POST--currency=btc&name=111&data.address=111.mock new file mode 100644 index 0000000..78a1c97 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/POST--currency=btc&name=111&data.address=111.mock @@ -0,0 +1,19 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "currency": "btc", + "data": null, + "address": "111", + "description": null, + "id": 140, + "name": "Hello", + "sent_at": "2020-09-10T12:56:05Z", + "state": "pending", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dena/account/beneficiaries/POST.mock b/mocks/api/v2/dena/account/beneficiaries/POST.mock new file mode 100644 index 0000000..38db0b2 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/POST.mock @@ -0,0 +1,20 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "id": 10, + "currency": "btc", + "uid": "IDE7FE1E3BE3", + "name": "Test new", + "description": null, + "data": { + "address": "wueieuiwue" + }, + "state": "active", + "sent_at": "2020-12-17T09:55:42Z" +} diff --git a/mocks/api/v2/dena/account/deposit_address/bch/GET.mock b/mocks/api/v2/dena/account/deposit_address/bch/GET.mock new file mode 100644 index 0000000..d0b91ac --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/bch/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["bch"], + "address": null, + "state": "pending" +} diff --git a/mocks/api/v2/dena/account/deposit_address/bch/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/bch/OPTIONS.mock new file mode 100644 index 0000000..430bd07 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/bch/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/btc/GET.mock b/mocks/api/v2/dena/account/deposit_address/btc/GET.mock new file mode 100644 index 0000000..6559854 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/btc/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["btc"], + "address": "2NCimTNGnbm92drX7ARcwBKw6rvr456VWym", + "state": "active" +} diff --git a/mocks/api/v2/dena/account/deposit_address/btc/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/btc/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/btc/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/dash/GET.mock b/mocks/api/v2/dena/account/deposit_address/dash/GET.mock new file mode 100644 index 0000000..2b0c4b1 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/dash/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["dash"], + "address": "XpESxaUmonkq8RaLLp46Brx2K39ggQe226", + "state": "active" +} diff --git a/mocks/api/v2/dena/account/deposit_address/dash/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/dash/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/dash/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/eth/GET.mock b/mocks/api/v2/dena/account/deposit_address/eth/GET.mock new file mode 100644 index 0000000..6243433 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/eth/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["eth", "ltc"], + "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", + "state": "active" +} diff --git a/mocks/api/v2/dena/account/deposit_address/eth/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/eth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/eth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/ltc/GET.mock b/mocks/api/v2/dena/account/deposit_address/ltc/GET.mock new file mode 100644 index 0000000..6243433 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/ltc/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["eth", "ltc"], + "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", + "state": "active" +} diff --git a/mocks/api/v2/dena/account/deposit_address/ltc/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/ltc/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/ltc/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/xrp/GET.mock b/mocks/api/v2/dena/account/deposit_address/xrp/GET.mock new file mode 100644 index 0000000..9a2f8a5 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/xrp/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["xrp"], + "address": null, + "state": "pending" +} diff --git a/mocks/api/v2/dena/account/deposit_address/xrp/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/xrp/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/xrp/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposits/GET--limit=1¤cy=btc&page=7.mock b/mocks/api/v2/dena/account/deposits/GET--limit=1¤cy=btc&page=7.mock new file mode 100644 index 0000000..128d1ea --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--limit=1¤cy=btc&page=7.mock @@ -0,0 +1,21 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 1 + +[ + {"id":366, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET--limit=100.mock b/mocks/api/v2/dena/account/deposits/GET--limit=100.mock new file mode 100644 index 0000000..5aabf41 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--limit=100.mock @@ -0,0 +1,319 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":566, + "currency":"ltc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + {"id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"accepted" + }, + {"id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"accepted" + }, + {"id":312, + "currency":"bch", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"accepted" + }, + {"id":307, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":302, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"accepted" + }, + {"id":301, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "created_at":"2018-11-06T19:01:36+01:00", + "confirmations":25, + "completed_at":"2018-11-06T19:01:36+01:00", + "state":"accepted" + }, + {"id":300, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "created_at":"2018-11-06T18:42:56+01:00", + "confirmations":30, + "completed_at":"2018-11-06T18:42:56+01:00", + "state":"accepted" + }, + {"id":298, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "created_at":"2018-11-06T13:44:29+01:00", + "confirmations":9, + "completed_at":"2018-11-06T13:44:29+01:00", + "state":"accepted" + }, + {"id":296, + "currency":"btc", + "amount":"0.1999", + "fee":"0.0", + "txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "created_at":"2018-11-06T13:36:36+01:00", + "confirmations":4, + "completed_at":"2018-11-06T13:36:36+01:00", + "state":"accepted" + }, + {"id":295, + "currency":"xrp", + "amount":"10.0", + "fee":"0.0", + "txid":"C1048CA66A1DC0E9CA98C2D7E67367DD9A522AB9F9A51D3D3013797387E8662A", + "created_at":"2018-11-06T12:32:24+01:00", + "confirmations":29876, + "completed_at":"2018-11-06T12:32:24+01:00", + "state":"accepted" + }, + {"id":294, + "currency":"ltc", + "amount":"0.01", + "fee":"0.0", + "txid":"4c717b1063b3b8fe5606a5ae9976e45bb56edc63105608d4e5bc9e3896668d7d", + "created_at":"2018-11-06T12:31:00+01:00", + "confirmations":1953, + "completed_at":"2018-11-06T12:31:00+01:00", + "state":"accepted" + }, + {"id":293, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"d7b5dbf9411069acb27710c9c1b9003f31a458d7164c33f6b48ac596e2775164", + "created_at":"2018-11-06T12:30:21+01:00", + "confirmations":164, + "completed_at":"2018-11-06T12:30:21+01:00", + "state":"accepted" + }, + {"id":292, + "currency":"bch", + "amount":"0.01", + "fee":"0.0", + "txid":"74dc8c8c081655076fa065a944af3bb83b9f5c857f39733eafb090120f8ce96f", + "created_at":"2018-11-06T12:29:53+01:00", + "confirmations":190, + "completed_at":"2018-11-06T12:29:53+01:00", + "state":"accepted" + }, + {"id":291, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"cb24ca2d7467962f2ca757f7bf2a10145f9422b2102838d0a7c10fca440b843d", + "created_at":"2018-11-06T12:16:43+01:00", + "confirmations":169, + "completed_at":"2018-11-06T12:16:43+01:00", + "state":"accepted" + }, + {"id":290, + "currency":"xrp", + "amount":"10.0", + "fee":"0.0", + "txid":"FD951D1670F6BBD9A80001DB0C11220303C4F597F92348B485949C7E2CB887DD", + "created_at":"2018-11-06T12:16:26+01:00", + "confirmations":30858, + "completed_at":"2018-11-06T12:16:26+01:00", + "state":"accepted" + }, + {"id":289, + "currency":"ltc", + "amount":"1.0", + "fee":"0.0", + "txid":"68e0f849e74f68585963a41b46ca046773561924def4191bbde9c478dba5aaaf", + "created_at":"2018-11-06T12:15:45+01:00", + "confirmations":1959, + "completed_at":"2018-11-06T12:15:45+01:00", + "state":"accepted" + }, + {"id":288, + "currency":"bch", + "amount":"0.01", + "fee":"0.0", + "txid":"e7251dbd4f7471dae8d1225896c182749f26e224aa546b65c3ea26debfe10fab", + "created_at":"2018-11-06T12:15:31+01:00", + "confirmations":194, + "completed_at":"2018-11-06T12:15:32+01:00", + "state":"accepted" + }, + {"id":286, + "currency":"eth", + "amount":"0.5", + "fee":"0.0", + "txid":"0x27fb4b9376e59d72de5babb89e17515193c1bf50344b6cde48b5dbe1b554c608", + "created_at":"2018-11-01T09:58:49+01:00", + "confirmations":1, + "completed_at":"2018-11-01T09:58:49+01:00", + "state":"accepted" + }, + {"id":280, + "currency":"btc", + "amount":"0.18423", + "fee":"0.0", + "txid":"2a4b2fb2e9731601f7b66997b768cafc60fe863cb042334025eaa882ac002e65", + "created_at":"2018-10-26T15:00:12+02:00", + "confirmations":1, + "completed_at":"2018-10-26T15:08:11+02:00", + "state":"accepted" + }, + {"id":223, + "currency":"eth", + "amount":"1.0", + "fee":"0.0", + "txid":"0xdbc99c7be09ae1ea6252c19d4adff825c2d6b101e286316a67823967374cc1d4", + "created_at":"2018-10-19T14:27:02+02:00", + "confirmations":2, + "completed_at":"2018-10-19T14:27:02+02:00", + "state":"accepted" + }, + {"id":196, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "created_at":"2018-10-08T14:22:29+02:00", + "confirmations":1, + "completed_at":"2018-10-08T14:24:02+02:00", + "state":"accepted" + }, + {"id":195, + "currency":"btc", + "amount":"0.4999", + "fee":"0.0", + "txid":"347d340c3647acd3b6d7e85ac0db774b14572bd0718a3750f629419fce1dd8ee", + "created_at":"2018-10-08T14:19:18+02:00", + "confirmations":1, + "completed_at":"2018-10-08T14:24:02+02:00", + "state":"accepted" + }, + {"id":194, + "currency":"btc", + "amount":"0.2999", + "fee":"0.0", + "txid":"1955959aec4fd4cf785616645c67cfeaa29e7bb613c8f456b2ffb245aa665875", + "created_at":"2018-10-08T13:47:46+02:00", + "confirmations":1, + "completed_at":"2018-10-08T13:58:00+02:00", + "state":"accepted" + }, + {"id":184, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"44005356668028e95333db79638b1c98fad165f897179d5f8a3acae0c91a12dc", + "created_at":"2018-09-17T11:48:47+02:00", + "confirmations":1, + "completed_at":"2018-09-17T12:08:09+02:00", + "state":"accepted" + }, + {"id":183, + "currency":"btc", + "amount":"0.06", + "fee":"0.0", + "txid":"dea0aa02cc0f574422123f1afbb9033c813ae9383f62a2cfe2f09c49b8df6ac0", + "created_at":"2018-09-17T11:16:47+02:00", + "confirmations":1, + "completed_at":"2018-09-17T11:27:53+02:00", + "state":"accepted" + }, + {"id":161, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"85d34da5a2a518aa2df78d3d6ae209159f19fe3abc38c93959609892bf7057c7", + "created_at":"2018-08-29T21:39:54+02:00", + "confirmations":2, + "completed_at":"2018-08-29T21:39:59+02:00", + "state":"accepted" + }, + {"id":160, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"bb667038bd91123385a54283a32b3312092b5547e54bbd54ecdb104e54a1d672", + "created_at":"2018-08-29T21:38:27+02:00", + "confirmations":3, + "completed_at":"2018-08-29T21:38:27+02:00", + "state":"accepted" + }, + {"id":159, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"3e54842b0309d24b4624cf801bf4a1f5d68a74e6b322cc0eaef3379e7b70b99d", + "created_at":"2018-08-29T21:37:40+02:00", + "confirmations":2, + "completed_at":"2018-08-29T21:37:40+02:00", + "state":"accepted" + }, + {"id":155, + "currency":"btc", + "amount":"0.65", + "fee":"0.0", + "txid":"97166b99cf62c69a07d3b60c708dd04356723a6708bd571a36ba5759b09ded62", + "created_at":"2018-08-29T21:29:38+02:00", + "confirmations":3, + "completed_at":"2018-08-29T21:29:38+02:00", + "state":"accepted" + }, + {"id":154, + "currency":"btc", + "amount":"1.3", + "fee":"0.0", + "txid":"10b2818546e1e4c54ca1d38b60e10a2c170d3e2c1d98425e38d902c092ecebbc", + "created_at":"2018-08-29T21:29:19+02:00", + "confirmations":5, + "completed_at":"2018-08-29T21:29:19+02:00", + "state":"accepted" + } +] diff --git a/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=1.mock b/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=1.mock new file mode 100644 index 0000000..e40db04 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=1.mock @@ -0,0 +1,71 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + {"id":566, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"skipped" + }, + {"id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":312, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":307, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":302, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + } + ] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=2.mock b/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=2.mock new file mode 100644 index 0000000..58d7657 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=2.mock @@ -0,0 +1,41 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + {"id":366, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + {"id":394, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":322, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET--page=1&limit=25.mock b/mocks/api/v2/dena/account/deposits/GET--page=1&limit=25.mock new file mode 100644 index 0000000..28abf74 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--page=1&limit=25.mock @@ -0,0 +1,266 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 28 + +[ + { + "id":566, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + { + "id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + { + "id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":312, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":307, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":302, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + }, + {"id":383, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"processing" + }, + {"id":325, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":332, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":327, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":322, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + }, + {"id":693, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":620, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":612, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":607, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":602, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + }, + {"id":593, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":520, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":512, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":507, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":502, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + }, + { + "id":493, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":420, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":412, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":407, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + } + +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET--page=2&limit=25.mock b/mocks/api/v2/dena/account/deposits/GET--page=2&limit=25.mock new file mode 100644 index 0000000..640da8b --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--page=2&limit=25.mock @@ -0,0 +1,41 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 28 + +[ + {"id":566, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + {"id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET.mock b/mocks/api/v2/dena/account/deposits/GET.mock new file mode 100644 index 0000000..5aabf41 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET.mock @@ -0,0 +1,319 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":566, + "currency":"ltc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + {"id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"accepted" + }, + {"id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"accepted" + }, + {"id":312, + "currency":"bch", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"accepted" + }, + {"id":307, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":302, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"accepted" + }, + {"id":301, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "created_at":"2018-11-06T19:01:36+01:00", + "confirmations":25, + "completed_at":"2018-11-06T19:01:36+01:00", + "state":"accepted" + }, + {"id":300, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "created_at":"2018-11-06T18:42:56+01:00", + "confirmations":30, + "completed_at":"2018-11-06T18:42:56+01:00", + "state":"accepted" + }, + {"id":298, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "created_at":"2018-11-06T13:44:29+01:00", + "confirmations":9, + "completed_at":"2018-11-06T13:44:29+01:00", + "state":"accepted" + }, + {"id":296, + "currency":"btc", + "amount":"0.1999", + "fee":"0.0", + "txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "created_at":"2018-11-06T13:36:36+01:00", + "confirmations":4, + "completed_at":"2018-11-06T13:36:36+01:00", + "state":"accepted" + }, + {"id":295, + "currency":"xrp", + "amount":"10.0", + "fee":"0.0", + "txid":"C1048CA66A1DC0E9CA98C2D7E67367DD9A522AB9F9A51D3D3013797387E8662A", + "created_at":"2018-11-06T12:32:24+01:00", + "confirmations":29876, + "completed_at":"2018-11-06T12:32:24+01:00", + "state":"accepted" + }, + {"id":294, + "currency":"ltc", + "amount":"0.01", + "fee":"0.0", + "txid":"4c717b1063b3b8fe5606a5ae9976e45bb56edc63105608d4e5bc9e3896668d7d", + "created_at":"2018-11-06T12:31:00+01:00", + "confirmations":1953, + "completed_at":"2018-11-06T12:31:00+01:00", + "state":"accepted" + }, + {"id":293, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"d7b5dbf9411069acb27710c9c1b9003f31a458d7164c33f6b48ac596e2775164", + "created_at":"2018-11-06T12:30:21+01:00", + "confirmations":164, + "completed_at":"2018-11-06T12:30:21+01:00", + "state":"accepted" + }, + {"id":292, + "currency":"bch", + "amount":"0.01", + "fee":"0.0", + "txid":"74dc8c8c081655076fa065a944af3bb83b9f5c857f39733eafb090120f8ce96f", + "created_at":"2018-11-06T12:29:53+01:00", + "confirmations":190, + "completed_at":"2018-11-06T12:29:53+01:00", + "state":"accepted" + }, + {"id":291, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"cb24ca2d7467962f2ca757f7bf2a10145f9422b2102838d0a7c10fca440b843d", + "created_at":"2018-11-06T12:16:43+01:00", + "confirmations":169, + "completed_at":"2018-11-06T12:16:43+01:00", + "state":"accepted" + }, + {"id":290, + "currency":"xrp", + "amount":"10.0", + "fee":"0.0", + "txid":"FD951D1670F6BBD9A80001DB0C11220303C4F597F92348B485949C7E2CB887DD", + "created_at":"2018-11-06T12:16:26+01:00", + "confirmations":30858, + "completed_at":"2018-11-06T12:16:26+01:00", + "state":"accepted" + }, + {"id":289, + "currency":"ltc", + "amount":"1.0", + "fee":"0.0", + "txid":"68e0f849e74f68585963a41b46ca046773561924def4191bbde9c478dba5aaaf", + "created_at":"2018-11-06T12:15:45+01:00", + "confirmations":1959, + "completed_at":"2018-11-06T12:15:45+01:00", + "state":"accepted" + }, + {"id":288, + "currency":"bch", + "amount":"0.01", + "fee":"0.0", + "txid":"e7251dbd4f7471dae8d1225896c182749f26e224aa546b65c3ea26debfe10fab", + "created_at":"2018-11-06T12:15:31+01:00", + "confirmations":194, + "completed_at":"2018-11-06T12:15:32+01:00", + "state":"accepted" + }, + {"id":286, + "currency":"eth", + "amount":"0.5", + "fee":"0.0", + "txid":"0x27fb4b9376e59d72de5babb89e17515193c1bf50344b6cde48b5dbe1b554c608", + "created_at":"2018-11-01T09:58:49+01:00", + "confirmations":1, + "completed_at":"2018-11-01T09:58:49+01:00", + "state":"accepted" + }, + {"id":280, + "currency":"btc", + "amount":"0.18423", + "fee":"0.0", + "txid":"2a4b2fb2e9731601f7b66997b768cafc60fe863cb042334025eaa882ac002e65", + "created_at":"2018-10-26T15:00:12+02:00", + "confirmations":1, + "completed_at":"2018-10-26T15:08:11+02:00", + "state":"accepted" + }, + {"id":223, + "currency":"eth", + "amount":"1.0", + "fee":"0.0", + "txid":"0xdbc99c7be09ae1ea6252c19d4adff825c2d6b101e286316a67823967374cc1d4", + "created_at":"2018-10-19T14:27:02+02:00", + "confirmations":2, + "completed_at":"2018-10-19T14:27:02+02:00", + "state":"accepted" + }, + {"id":196, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "created_at":"2018-10-08T14:22:29+02:00", + "confirmations":1, + "completed_at":"2018-10-08T14:24:02+02:00", + "state":"accepted" + }, + {"id":195, + "currency":"btc", + "amount":"0.4999", + "fee":"0.0", + "txid":"347d340c3647acd3b6d7e85ac0db774b14572bd0718a3750f629419fce1dd8ee", + "created_at":"2018-10-08T14:19:18+02:00", + "confirmations":1, + "completed_at":"2018-10-08T14:24:02+02:00", + "state":"accepted" + }, + {"id":194, + "currency":"btc", + "amount":"0.2999", + "fee":"0.0", + "txid":"1955959aec4fd4cf785616645c67cfeaa29e7bb613c8f456b2ffb245aa665875", + "created_at":"2018-10-08T13:47:46+02:00", + "confirmations":1, + "completed_at":"2018-10-08T13:58:00+02:00", + "state":"accepted" + }, + {"id":184, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"44005356668028e95333db79638b1c98fad165f897179d5f8a3acae0c91a12dc", + "created_at":"2018-09-17T11:48:47+02:00", + "confirmations":1, + "completed_at":"2018-09-17T12:08:09+02:00", + "state":"accepted" + }, + {"id":183, + "currency":"btc", + "amount":"0.06", + "fee":"0.0", + "txid":"dea0aa02cc0f574422123f1afbb9033c813ae9383f62a2cfe2f09c49b8df6ac0", + "created_at":"2018-09-17T11:16:47+02:00", + "confirmations":1, + "completed_at":"2018-09-17T11:27:53+02:00", + "state":"accepted" + }, + {"id":161, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"85d34da5a2a518aa2df78d3d6ae209159f19fe3abc38c93959609892bf7057c7", + "created_at":"2018-08-29T21:39:54+02:00", + "confirmations":2, + "completed_at":"2018-08-29T21:39:59+02:00", + "state":"accepted" + }, + {"id":160, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"bb667038bd91123385a54283a32b3312092b5547e54bbd54ecdb104e54a1d672", + "created_at":"2018-08-29T21:38:27+02:00", + "confirmations":3, + "completed_at":"2018-08-29T21:38:27+02:00", + "state":"accepted" + }, + {"id":159, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"3e54842b0309d24b4624cf801bf4a1f5d68a74e6b322cc0eaef3379e7b70b99d", + "created_at":"2018-08-29T21:37:40+02:00", + "confirmations":2, + "completed_at":"2018-08-29T21:37:40+02:00", + "state":"accepted" + }, + {"id":155, + "currency":"btc", + "amount":"0.65", + "fee":"0.0", + "txid":"97166b99cf62c69a07d3b60c708dd04356723a6708bd571a36ba5759b09ded62", + "created_at":"2018-08-29T21:29:38+02:00", + "confirmations":3, + "completed_at":"2018-08-29T21:29:38+02:00", + "state":"accepted" + }, + {"id":154, + "currency":"btc", + "amount":"1.3", + "fee":"0.0", + "txid":"10b2818546e1e4c54ca1d38b60e10a2c170d3e2c1d98425e38d902c092ecebbc", + "created_at":"2018-08-29T21:29:19+02:00", + "confirmations":5, + "completed_at":"2018-08-29T21:29:19+02:00", + "state":"accepted" + } +] diff --git a/mocks/api/v2/dena/account/deposits/OPTIONS.mock b/mocks/api/v2/dena/account/deposits/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..98efbb2 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,165 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc.mock b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc.mock new file mode 100644 index 0000000..e8d63dd --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..ab4e226 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc.mock b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc.mock new file mode 100644 index 0000000..2faf21e --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..da3ead1 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc.mock b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc.mock new file mode 100644 index 0000000..8c4a1ab --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..ab4e226 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc.mock b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc.mock new file mode 100644 index 0000000..c3ef911 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":10, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..98efbb2 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,165 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc.mock b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc.mock new file mode 100644 index 0000000..0dbfac9 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..e6b428d --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,165 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc.mock b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc.mock new file mode 100644 index 0000000..20db35f --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":10, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=asc.mock b/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=asc.mock new file mode 100644 index 0000000..2fcaf91 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=asc.mock @@ -0,0 +1,81 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=desc.mock b/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=desc.mock new file mode 100644 index 0000000..38e5d82 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=desc.mock @@ -0,0 +1,81 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET.mock b/mocks/api/v2/dena/account/history/GET.mock new file mode 100644 index 0000000..99da4e8 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET.mock @@ -0,0 +1,275 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":"0.001", + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":"1.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"bid", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"bid", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"bid", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + } +] diff --git a/mocks/api/v2/dena/account/history/OPTIONS.mock b/mocks/api/v2/dena/account/history/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/history/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/levels/GET.mock b/mocks/api/v2/dena/account/levels/GET.mock new file mode 100644 index 0000000..0d10808 --- /dev/null +++ b/mocks/api/v2/dena/account/levels/GET.mock @@ -0,0 +1,11 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "current":{"name":"vip-0","max":100000,"min":0,"maker_fee":"0.003","taker_fee":"0.0035"}, + "next":{"name":"vip-1","max":500000,"min":100000,"maker_fee":"0.0025","taker_fee":"0.003"} +} diff --git a/mocks/api/v2/dena/account/levels/OPTIONS.mock b/mocks/api/v2/dena/account/levels/OPTIONS.mock new file mode 100644 index 0000000..4d251ae --- /dev/null +++ b/mocks/api/v2/dena/account/levels/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true \ No newline at end of file diff --git a/mocks/api/v2/dena/account/withdraws/GET--limit=100.mock b/mocks/api/v2/dena/account/withdraws/GET--limit=100.mock new file mode 100644 index 0000000..756c114 --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/GET--limit=100.mock @@ -0,0 +1,640 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":339, + "currency":"ltc", + "type":"coin", + "amount":"1.0", + "fee":"0.001", + "blockchain_txid":"9206d219a8ccfb4fd777e3823283a28e43d5b2d5b3682bcb9b17364299540c03", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-12-03T18:03:15+01:00", + "updated_at":"2018-12-03T18:03:28+01:00", + "completed_at":"2018-12-03T18:03:28+01:00", + "done_at":"2018-12-03T18:03:28+01:00" + }, + { + "id":299, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"3a2779e1b924f61a64d6227f5e9151ff18e601a819dd54717adfe271daff171d", + "rid":"2NEkoAbJuSBHDjiGqEtTbcVDyY884hZMTad", + "state":"succeed", + "created_at":"2018-11-13T12:51:35+01:00", + "updated_at":"2018-11-13T12:51:44+01:00", + "completed_at":"2018-11-13T12:51:44+01:00", + "done_at":"2018-11-13T12:51:44+01:00" + }, + { + "id":290, + "currency":"xrp", + "type":"coin", + "amount":"2.0", + "fee":"0.25", + "blockchain_txid":"2894EBF2DA3AC90E590987895C048B3F938CAAF74B03B8629179F6AE55705DB4", + "rid":"rfKz2QueDwnTaZ1wLM553Luavq5rpkxR44", + "state":"succeed", + "created_at":"2018-11-12T14:22:35+01:00", + "updated_at":"2018-11-12T14:22:43+01:00", + "completed_at":"2018-11-12T14:22:43+01:00", + "done_at":"2018-11-12T14:22:43+01:00" + }, + { + "id":276, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T16:36:52+01:00", + "updated_at":"2018-11-09T16:36:55+01:00", + "completed_at":"2018-11-09T16:36:55+01:00", + "done_at":"2018-11-09T16:36:55+01:00" + }, + { + "id":275, + "currency":"bch", + "type":"coin", + "amount":"0.01", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T11:08:45+01:00", + "updated_at":"2018-11-09T11:08:51+01:00", + "completed_at":"2018-11-09T11:08:51+01:00", + "done_at":"2018-11-09T11:08:51+01:00" + }, + { + "id":274, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"46d04cac11b3cc8da8a42f09e0dfa5088fa5271ae77b282f3c55ebe0c28aa95a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:58:26+01:00", + "updated_at":"2018-11-08T15:58:37+01:00", + "completed_at":"2018-11-08T15:58:37+01:00", + "done_at":"2018-11-08T15:58:37+01:00" + }, + { + "id":273, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"94c7a03827f75f383cbda802f583c96e2f2714e3252540276cb4e345bf3ce18a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:57:27+01:00", + "updated_at":"2018-11-08T15:57:37+01:00", + "completed_at":"2018-11-08T15:57:37+01:00", + "done_at":"2018-11-08T15:57:37+01:00" + }, + { + "id":269, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"asdasdasasdasdasdasd", + "state":"failed", + "created_at":"2018-11-07T10:36:47+01:00", + "updated_at":"2018-11-07T10:36:52+01:00", + "completed_at":"2018-11-07T10:36:52+01:00", + "done_at":"2018-11-07T10:36:52+01:00" + }, + { + "id":267, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:08:34+01:00", + "updated_at":"2018-11-07T10:08:40+01:00", + "completed_at":"2018-11-07T10:08:40+01:00", + "done_at":"2018-11-07T10:08:40+01:00" + }, + { + "id":266, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:06:36+01:00", + "updated_at":"2018-11-07T10:06:40+01:00", + "completed_at":"2018-11-07T10:06:40+01:00", + "done_at":"2018-11-07T10:06:40+01:00" + }, + { + "id":265, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"50001059c12f12062c5f56a575100e68973dc3ee533358cca2b9fcea22a6b919", + "rid":"2N5bSLuVtYssgJA1bf2nN2ZWB7zpa7aYhQD", + "state":"succeed", + "created_at":"2018-11-07T10:02:57+01:00", + "updated_at":"2018-11-07T10:03:04+01:00", + "completed_at":"2018-11-07T10:03:04+01:00", + "done_at":"2018-11-07T10:03:04+01:00" + }, + { + "id":264, + "currency":"ltc", + "type":"coin", + "amount":"4.0", + "fee":"0.01", + "blockchain_txid":"8b1c13efad7d5debd264ba455246ef60ada309bbeded1ab2a47cae8c8c90da99", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-11-07T09:50:19+01:00", + "updated_at":"2018-11-07T09:50:28+01:00", + "completed_at":"2018-11-07T09:50:28+01:00", + "done_at":"2018-11-07T09:50:28+01:00" + }, + { + "id":263, + "currency":"btc", + "type":"coin", + "amount":"0.1001", + "fee":"0.0001", + "blockchain_txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-07T09:39:21+01:00", + "updated_at":"2018-11-07T09:39:33+01:00", + "completed_at":"2018-11-07T09:39:33+01:00", + "done_at":"2018-11-07T09:39:33+01:00" + }, + { + "id":262, + "currency":"btc", + "type":"coin", + "amount":"0.11", + "fee":"0.0001", + "blockchain_txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T14:27:14+01:00", + "updated_at":"2018-11-06T14:27:25+01:00", + "completed_at":"2018-11-06T14:27:25+01:00", + "done_at":"2018-11-06T14:27:25+01:00" + }, + { + "id":261, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:58:47+01:00", + "updated_at":"2018-11-06T12:58:58+01:00", + "completed_at":"2018-11-06T12:58:58+01:00", + "done_at":"2018-11-06T12:58:58+01:00" + }, + { + "id":260, + "currency":"btc", + "type":"coin", + "amount":"0.2", + "fee":"0.0001", + "blockchain_txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:50:18+01:00", + "updated_at":"2018-11-06T12:50:28+01:00", + "completed_at":"2018-11-06T12:50:28+01:00", + "done_at":"2018-11-06T12:50:28+01:00" + }, + { + "id":259, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:59:16+01:00", + "updated_at":"2018-11-06T11:59:28+01:00", + "completed_at":"2018-11-06T11:59:28+01:00", + "done_at":"2018-11-06T11:59:28+01:00" + }, + { + "id":258, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:55:33+01:00", + "updated_at":"2018-11-06T11:55:50+01:00", + "completed_at":"2018-11-06T11:55:50+01:00", + "done_at":"2018-11-06T11:55:50+01:00" + }, + { + "id":195, + "currency":"xrp", + "type":"coin", + "amount":"1.0", + "fee":"0.25", + "blockchain_txid":"E1C156C99C2A67EA322B936970EB668050865BCE9F5FB3F2DCE520DC05036810", + "rid":"rpuvFi7irTinqu71V8ZvfrBQVYhoPn3cPB?dt=0", + "state":"succeed", + "created_at":"2018-10-16T16:18:47+02:00", + "updated_at":"2018-10-16T16:18:53+02:00", + "completed_at":"2018-10-16T16:18:52+02:00", + "done_at":"2018-10-16T16:18:52+02:00" + }, + { + "id":177, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T17:37:04+02:00", + "updated_at":"2018-10-09T17:37:09+02:00", + "completed_at":"2018-10-09T17:37:09+02:00", + "done_at":"2018-10-09T17:37:09+02:00" + }, + { + "id":176, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12346", + "state":"failed", + "created_at":"2018-10-09T13:47:17+02:00", + "updated_at":"2018-10-09T13:48:19+02:00", + "completed_at":"2018-10-09T13:48:19+02:00", + "done_at":"2018-10-09T13:48:19+02:00" + }, + { + "id":175, + "currency":"btc", + "type":"coin", + "amount":"1.0", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"failed", + "created_at":"2018-10-09T12:38:19+02:00", + "updated_at":"2018-10-09T12:39:23+02:00", + "completed_at":"2018-10-09T12:39:23+02:00", + "done_at":"2018-10-09T12:39:23+02:00" + }, + { + "id":174, + "currency":"xrp", + "type":"coin", + "amount":"0.5", + "fee":"0.25", + "blockchain_txid":null, + "rid":"1234567498", + "state":"failed", + "created_at":"2018-10-09T10:53:05+02:00", + "updated_at":"2018-10-09T10:53:10+02:00", + "completed_at":"2018-10-09T10:53:10+02:00", + "done_at":"2018-10-09T10:53:10+02:00" + }, + { + "id":173, + "currency":"ltc", + "type":"coin", + "amount":"0.5", + "fee":"0.01", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T10:52:09+02:00", + "updated_at":"2018-10-09T10:52:15+02:00", + "completed_at":"2018-10-09T10:52:15+02:00", + "done_at":"2018-10-09T10:52:15+02:00" + }, + { + "id":172, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:22:13+02:00", + "updated_at":"2018-10-08T14:22:23+02:00", + "completed_at":"2018-10-08T14:22:23+02:00", + "done_at":"2018-10-08T14:22:23+02:00" + }, + { + "id":171, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"347d340c3647acd3b6d7e85ac0db774b14572bd0718a3750f629419fce1dd8ee", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:18:50+02:00", + "updated_at":"2018-10-08T14:19:05+02:00", + "completed_at":"2018-10-08T14:19:05+02:00", + "done_at":"2018-10-08T14:19:05+02:00" + }, + { + "id":170, + "currency":"btc", + "type":"coin", + "amount":"0.3", + "fee":"0.0001", + "blockchain_txid":"1955959aec4fd4cf785616645c67cfeaa29e7bb613c8f456b2ffb245aa665875", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T13:47:29+02:00", + "updated_at":"2018-10-08T13:47:39+02:00", + "completed_at":"2018-10-08T13:47:39+02:00", + "done_at":"2018-10-08T13:47:39+02:00" + }, + { + "id":169, + "currency":"btc", + "type":"coin", + "amount":"1.1", + "fee":"0.0001", + "blockchain_txid":"fc7c4e5d99d5c48b8b74ec6f91a30c080b7c6924ff6d5db7075af5cc1e22bf2b", + "rid":"2N8LCtvKxyLwvvRRfbooRnnJGggjKzoyv6r", + "state":"succeed", + "created_at":"2018-10-01T11:39:18+02:00", + "updated_at":"2018-10-01T11:39:28+02:00", + "completed_at":"2018-10-01T11:39:28+02:00", + "done_at":"2018-10-01T11:39:28+02:00" + }, + { + "id":163, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"7941a9a9d3899c04303e5a1e734cf6acbf25303a6132baea551227766cb8d887", + "rid":"2N2GLhgV6UYb3VrU6Xc2ZHNCZec82Bbtynr", + "state":"succeed", + "created_at":"2018-09-14T15:39:11+02:00", + "updated_at":"2018-09-14T15:39:21+02:00", + "completed_at":"2018-09-14T15:39:21+02:00", + "done_at":"2018-09-14T15:39:21+02:00" + }, + { + "id":154, + "currency":"bch", + "type":"coin", + "amount":"0.013", + "fee":"0.001", + "blockchain_txid":"a12bda96a588c2fbc163f9b774168a07c405ff8227c730f005cc5ef0cb6c77ea", + "rid":"2MshcjxA43U478UVDF4QyTeydKt7wenqn4q", + "state":"succeed", + "created_at":"2018-09-11T17:16:41+02:00", + "updated_at":"2018-09-11T17:16:53+02:00", + "completed_at":"2018-09-11T17:16:53+02:00", + "done_at":"2018-09-11T17:16:53+02:00" + }, + { + "id":153, + "currency":"bch", + "type":"coin", + "amount":"0.012", + "fee":"0.001", + "blockchain_txid":"84a4e961c51605391031386538e64708ade25f2318b46466feceaf0c48a4729f", + "rid":"2MshcjxA43U478UVDF4QyTeydKt7wenqn4q", + "state":"succeed", + "created_at":"2018-09-11T11:39:40+02:00", + "updated_at":"2018-09-11T11:39:47+02:00", + "completed_at":"2018-09-11T11:39:47+02:00", + "done_at":"2018-09-11T11:39:47+02:00" + }, + { + "id":136, + "currency":"bch", + "type":"coin", + "amount":"0.02", + "fee":"0.001", + "blockchain_txid":"48b80e357770cc926d5f60a622d830ed024832aa9b7ba3d0e31248abfeac3073", + "rid":"2N7c4eD6xjvRtn9H4jBfvynxBvEz3QfoiTk", + "state":"succeed", + "created_at":"2018-08-29T10:56:36+02:00", + "updated_at":"2018-08-29T10:56:49+02:00", + "completed_at":"2018-08-29T10:56:49+02:00", + "done_at":"2018-08-29T10:56:49+02:00" + }, + { + "id":135, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":"ef5b877d0133e1a72ba144935822181a0d62e2299285c1c05351352ad75ed928", + "rid":"2N7c4eD6xjvRtn9H4jBfvynxBvEz3QfoiTk", + "state":"succeed", + "created_at":"2018-08-28T20:14:44+02:00", + "updated_at":"2018-08-28T20:14:51+02:00", + "completed_at":"2018-08-28T20:14:51+02:00", + "done_at":"2018-08-28T20:14:51+02:00" + }, + { + "id":134, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":"e6db5c564758b94b1da1913205e00e94a247a283380a811cefc5ba65113b7e95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-08-28T20:03:46+02:00", + "updated_at":"2018-08-28T20:03:56+02:00", + "completed_at":"2018-08-28T20:03:56+02:00", + "done_at":"2018-08-28T20:03:56+02:00" + }, + { + "id":133, + "currency":"bch", + "type":"coin", + "amount":"0.02", + "fee":"0.001", + "blockchain_txid":"459650e495350f9081f9b7c78090cb1856ac9548abee11d23f8d89925233fbde", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-08-28T18:27:32+02:00", + "updated_at":"2018-08-28T18:27:45+02:00", + "completed_at":"2018-08-28T18:27:45+02:00", + "done_at":"2018-08-28T18:27:45+02:00" + }, + { + "id":132, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"processing", + "created_at":"2018-08-28T18:26:32+02:00", + "updated_at":"2018-08-28T18:26:36+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":131, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T18:16:52+02:00", + "updated_at":"2018-08-28T18:16:52+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":130, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T18:02:07+02:00", + "updated_at":"2018-08-28T18:02:07+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":129, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T17:51:21+02:00", + "updated_at":"2018-08-28T17:51:21+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":128, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:48+02:00", + "updated_at":"2018-08-28T16:50:48+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":127, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:09+02:00", + "updated_at":"2018-08-28T16:50:09+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":126, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:08+02:00", + "updated_at":"2018-08-28T16:50:08+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":125, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:04+02:00", + "updated_at":"2018-08-28T16:50:04+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":124, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:49:56+02:00", + "updated_at":"2018-08-28T16:49:56+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":123, + "currency":"btc", + "type":"coin", + "amount":"0.75", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2N8hwP1WmJrFF5QWABn38y63uYLhnJYJYTF", + "state":"processing", + "created_at":"2018-08-27T09:26:21+02:00", + "updated_at":"2018-08-27T09:26:24+02:00", + "completed_at":null, + "done_at":null + + } +] diff --git a/mocks/api/v2/dena/account/withdraws/GET--page=1&limit=25.mock b/mocks/api/v2/dena/account/withdraws/GET--page=1&limit=25.mock new file mode 100644 index 0000000..42747f2 --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/GET--page=1&limit=25.mock @@ -0,0 +1,361 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 28 + +[ + { + "id":339, + "currency":"ltc", + "type":"coin", + "amount":"1.0", + "fee":"0.001", + "blockchain_txid":"9206d219a8ccfb4fd777e3823283a28e43d5b2d5b3682bcb9b17364299540c03", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-12-03T18:03:15+01:00", + "updated_at":"2018-12-03T18:03:28+01:00", + "completed_at":"2018-12-03T18:03:28+01:00", + "done_at":"2018-12-03T18:03:28+01:00" + }, + { + "id":299, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"3a2779e1b924f61a64d6227f5e9151ff18e601a819dd54717adfe271daff171d", + "rid":"2NEkoAbJuSBHDjiGqEtTbcVDyY884hZMTad", + "state":"succeed", + "created_at":"2018-11-13T12:51:35+01:00", + "updated_at":"2018-11-13T12:51:44+01:00", + "completed_at":"2018-11-13T12:51:44+01:00", + "done_at":"2018-11-13T12:51:44+01:00" + }, + { + "id":290, + "currency":"xrp", + "type":"coin", + "amount":"2.0", + "fee":"0.25", + "blockchain_txid":"2894EBF2DA3AC90E590987895C048B3F938CAAF74B03B8629179F6AE55705DB4", + "rid":"rfKz2QueDwnTaZ1wLM553Luavq5rpkxR44", + "state":"succeed", + "created_at":"2018-11-12T14:22:35+01:00", + "updated_at":"2018-11-12T14:22:43+01:00", + "completed_at":"2018-11-12T14:22:43+01:00", + "done_at":"2018-11-12T14:22:43+01:00" + }, + { + "id":276, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T16:36:52+01:00", + "updated_at":"2018-11-09T16:36:55+01:00", + "completed_at":"2018-11-09T16:36:55+01:00", + "done_at":"2018-11-09T16:36:55+01:00" + }, + { + "id":275, + "currency":"bch", + "type":"coin", + "amount":"0.01", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T11:08:45+01:00", + "updated_at":"2018-11-09T11:08:51+01:00", + "completed_at":"2018-11-09T11:08:51+01:00", + "done_at":"2018-11-09T11:08:51+01:00" + }, + { + "id":274, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"46d04cac11b3cc8da8a42f09e0dfa5088fa5271ae77b282f3c55ebe0c28aa95a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:58:26+01:00", + "updated_at":"2018-11-08T15:58:37+01:00", + "completed_at":"2018-11-08T15:58:37+01:00", + "done_at":"2018-11-08T15:58:37+01:00" + }, + { + "id":273, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"94c7a03827f75f383cbda802f583c96e2f2714e3252540276cb4e345bf3ce18a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:57:27+01:00", + "updated_at":"2018-11-08T15:57:37+01:00", + "completed_at":"2018-11-08T15:57:37+01:00", + "done_at":"2018-11-08T15:57:37+01:00" + }, + { + "id":269, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"asdasdasasdasdasdasd", + "state":"failed", + "created_at":"2018-11-07T10:36:47+01:00", + "updated_at":"2018-11-07T10:36:52+01:00", + "completed_at":"2018-11-07T10:36:52+01:00", + "done_at":"2018-11-07T10:36:52+01:00" + }, + { + "id":267, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:08:34+01:00", + "updated_at":"2018-11-07T10:08:40+01:00", + "completed_at":"2018-11-07T10:08:40+01:00", + "done_at":"2018-11-07T10:08:40+01:00" + }, + { + "id":266, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:06:36+01:00", + "updated_at":"2018-11-07T10:06:40+01:00", + "completed_at":"2018-11-07T10:06:40+01:00", + "done_at":"2018-11-07T10:06:40+01:00" + }, + { + "id":265, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"50001059c12f12062c5f56a575100e68973dc3ee533358cca2b9fcea22a6b919", + "rid":"2N5bSLuVtYssgJA1bf2nN2ZWB7zpa7aYhQD", + "state":"succeed", + "created_at":"2018-11-07T10:02:57+01:00", + "updated_at":"2018-11-07T10:03:04+01:00", + "completed_at":"2018-11-07T10:03:04+01:00", + "done_at":"2018-11-07T10:03:04+01:00" + }, + { + "id":264, + "currency":"ltc", + "type":"coin", + "amount":"4.0", + "fee":"0.01", + "blockchain_txid":"8b1c13efad7d5debd264ba455246ef60ada309bbeded1ab2a47cae8c8c90da99", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-11-07T09:50:19+01:00", + "updated_at":"2018-11-07T09:50:28+01:00", + "completed_at":"2018-11-07T09:50:28+01:00", + "done_at":"2018-11-07T09:50:28+01:00" + }, + { + "id":263, + "currency":"btc", + "type":"coin", + "amount":"0.1001", + "fee":"0.0001", + "blockchain_txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-07T09:39:21+01:00", + "updated_at":"2018-11-07T09:39:33+01:00", + "completed_at":"2018-11-07T09:39:33+01:00", + "done_at":"2018-11-07T09:39:33+01:00" + }, + { + "id":262, + "currency":"btc", + "type":"coin", + "amount":"0.11", + "fee":"0.0001", + "blockchain_txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T14:27:14+01:00", + "updated_at":"2018-11-06T14:27:25+01:00", + "completed_at":"2018-11-06T14:27:25+01:00", + "done_at":"2018-11-06T14:27:25+01:00" + }, + { + "id":261, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:58:47+01:00", + "updated_at":"2018-11-06T12:58:58+01:00", + "completed_at":"2018-11-06T12:58:58+01:00", + "done_at":"2018-11-06T12:58:58+01:00" + }, + { + "id":260, + "currency":"btc", + "type":"coin", + "amount":"0.2", + "fee":"0.0001", + "blockchain_txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:50:18+01:00", + "updated_at":"2018-11-06T12:50:28+01:00", + "completed_at":"2018-11-06T12:50:28+01:00", + "done_at":"2018-11-06T12:50:28+01:00" + }, + { + "id":259, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:59:16+01:00", + "updated_at":"2018-11-06T11:59:28+01:00", + "completed_at":"2018-11-06T11:59:28+01:00", + "done_at":"2018-11-06T11:59:28+01:00" + }, + { + "id":258, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:55:33+01:00", + "updated_at":"2018-11-06T11:55:50+01:00", + "completed_at":"2018-11-06T11:55:50+01:00", + "done_at":"2018-11-06T11:55:50+01:00" + }, + { + "id":195, + "currency":"xrp", + "type":"coin", + "amount":"1.0", + "fee":"0.25", + "blockchain_txid":"E1C156C99C2A67EA322B936970EB668050865BCE9F5FB3F2DCE520DC05036810", + "rid":"rpuvFi7irTinqu71V8ZvfrBQVYhoPn3cPB?dt=0", + "state":"succeed", + "created_at":"2018-10-16T16:18:47+02:00", + "updated_at":"2018-10-16T16:18:53+02:00", + "completed_at":"2018-10-16T16:18:52+02:00", + "done_at":"2018-10-16T16:18:52+02:00" + }, + { + "id":177, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T17:37:04+02:00", + "updated_at":"2018-10-09T17:37:09+02:00", + "completed_at":"2018-10-09T17:37:09+02:00", + "done_at":"2018-10-09T17:37:09+02:00" + }, + { + "id":176, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12346", + "state":"failed", + "created_at":"2018-10-09T13:47:17+02:00", + "updated_at":"2018-10-09T13:48:19+02:00", + "completed_at":"2018-10-09T13:48:19+02:00", + "done_at":"2018-10-09T13:48:19+02:00" + }, + { + "id":175, + "currency":"btc", + "type":"coin", + "amount":"1.0", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"failed", + "created_at":"2018-10-09T12:38:19+02:00", + "updated_at":"2018-10-09T12:39:23+02:00", + "completed_at":"2018-10-09T12:39:23+02:00", + "done_at":"2018-10-09T12:39:23+02:00" + }, + { + "id":174, + "currency":"xrp", + "type":"coin", + "amount":"0.5", + "fee":"0.25", + "blockchain_txid":null, + "rid":"1234567498", + "state":"failed", + "created_at":"2018-10-09T10:53:05+02:00", + "updated_at":"2018-10-09T10:53:10+02:00", + "completed_at":"2018-10-09T10:53:10+02:00", + "done_at":"2018-10-09T10:53:10+02:00" + }, + { + "id":173, + "currency":"ltc", + "type":"coin", + "amount":"0.5", + "fee":"0.01", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T10:52:09+02:00", + "updated_at":"2018-10-09T10:52:15+02:00", + "completed_at":"2018-10-09T10:52:15+02:00", + "done_at":"2018-10-09T10:52:15+02:00" + }, + { + "id":172, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:22:13+02:00", + "updated_at":"2018-10-08T14:22:23+02:00", + "completed_at":"2018-10-08T14:22:23+02:00", + "done_at":"2018-10-08T14:22:23+02:00" + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/withdraws/GET--page=2&limit=25.mock b/mocks/api/v2/dena/account/withdraws/GET--page=2&limit=25.mock new file mode 100644 index 0000000..a2576dc --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/GET--page=2&limit=25.mock @@ -0,0 +1,54 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 28 + +[ + { + "id":125, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:04+02:00", + "updated_at":"2018-08-28T16:50:04+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":124, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:49:56+02:00", + "updated_at":"2018-08-28T16:49:56+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":123, + "currency":"btc", + "type":"coin", + "amount":"0.75", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2N8hwP1WmJrFF5QWABn38y63uYLhnJYJYTF", + "state":"processing", + "created_at":"2018-08-27T09:26:21+02:00", + "updated_at":"2018-08-27T09:26:24+02:00", + "completed_at":null, + "done_at":null + + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/withdraws/GET.mock b/mocks/api/v2/dena/account/withdraws/GET.mock new file mode 100644 index 0000000..756c114 --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/GET.mock @@ -0,0 +1,640 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":339, + "currency":"ltc", + "type":"coin", + "amount":"1.0", + "fee":"0.001", + "blockchain_txid":"9206d219a8ccfb4fd777e3823283a28e43d5b2d5b3682bcb9b17364299540c03", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-12-03T18:03:15+01:00", + "updated_at":"2018-12-03T18:03:28+01:00", + "completed_at":"2018-12-03T18:03:28+01:00", + "done_at":"2018-12-03T18:03:28+01:00" + }, + { + "id":299, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"3a2779e1b924f61a64d6227f5e9151ff18e601a819dd54717adfe271daff171d", + "rid":"2NEkoAbJuSBHDjiGqEtTbcVDyY884hZMTad", + "state":"succeed", + "created_at":"2018-11-13T12:51:35+01:00", + "updated_at":"2018-11-13T12:51:44+01:00", + "completed_at":"2018-11-13T12:51:44+01:00", + "done_at":"2018-11-13T12:51:44+01:00" + }, + { + "id":290, + "currency":"xrp", + "type":"coin", + "amount":"2.0", + "fee":"0.25", + "blockchain_txid":"2894EBF2DA3AC90E590987895C048B3F938CAAF74B03B8629179F6AE55705DB4", + "rid":"rfKz2QueDwnTaZ1wLM553Luavq5rpkxR44", + "state":"succeed", + "created_at":"2018-11-12T14:22:35+01:00", + "updated_at":"2018-11-12T14:22:43+01:00", + "completed_at":"2018-11-12T14:22:43+01:00", + "done_at":"2018-11-12T14:22:43+01:00" + }, + { + "id":276, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T16:36:52+01:00", + "updated_at":"2018-11-09T16:36:55+01:00", + "completed_at":"2018-11-09T16:36:55+01:00", + "done_at":"2018-11-09T16:36:55+01:00" + }, + { + "id":275, + "currency":"bch", + "type":"coin", + "amount":"0.01", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T11:08:45+01:00", + "updated_at":"2018-11-09T11:08:51+01:00", + "completed_at":"2018-11-09T11:08:51+01:00", + "done_at":"2018-11-09T11:08:51+01:00" + }, + { + "id":274, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"46d04cac11b3cc8da8a42f09e0dfa5088fa5271ae77b282f3c55ebe0c28aa95a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:58:26+01:00", + "updated_at":"2018-11-08T15:58:37+01:00", + "completed_at":"2018-11-08T15:58:37+01:00", + "done_at":"2018-11-08T15:58:37+01:00" + }, + { + "id":273, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"94c7a03827f75f383cbda802f583c96e2f2714e3252540276cb4e345bf3ce18a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:57:27+01:00", + "updated_at":"2018-11-08T15:57:37+01:00", + "completed_at":"2018-11-08T15:57:37+01:00", + "done_at":"2018-11-08T15:57:37+01:00" + }, + { + "id":269, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"asdasdasasdasdasdasd", + "state":"failed", + "created_at":"2018-11-07T10:36:47+01:00", + "updated_at":"2018-11-07T10:36:52+01:00", + "completed_at":"2018-11-07T10:36:52+01:00", + "done_at":"2018-11-07T10:36:52+01:00" + }, + { + "id":267, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:08:34+01:00", + "updated_at":"2018-11-07T10:08:40+01:00", + "completed_at":"2018-11-07T10:08:40+01:00", + "done_at":"2018-11-07T10:08:40+01:00" + }, + { + "id":266, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:06:36+01:00", + "updated_at":"2018-11-07T10:06:40+01:00", + "completed_at":"2018-11-07T10:06:40+01:00", + "done_at":"2018-11-07T10:06:40+01:00" + }, + { + "id":265, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"50001059c12f12062c5f56a575100e68973dc3ee533358cca2b9fcea22a6b919", + "rid":"2N5bSLuVtYssgJA1bf2nN2ZWB7zpa7aYhQD", + "state":"succeed", + "created_at":"2018-11-07T10:02:57+01:00", + "updated_at":"2018-11-07T10:03:04+01:00", + "completed_at":"2018-11-07T10:03:04+01:00", + "done_at":"2018-11-07T10:03:04+01:00" + }, + { + "id":264, + "currency":"ltc", + "type":"coin", + "amount":"4.0", + "fee":"0.01", + "blockchain_txid":"8b1c13efad7d5debd264ba455246ef60ada309bbeded1ab2a47cae8c8c90da99", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-11-07T09:50:19+01:00", + "updated_at":"2018-11-07T09:50:28+01:00", + "completed_at":"2018-11-07T09:50:28+01:00", + "done_at":"2018-11-07T09:50:28+01:00" + }, + { + "id":263, + "currency":"btc", + "type":"coin", + "amount":"0.1001", + "fee":"0.0001", + "blockchain_txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-07T09:39:21+01:00", + "updated_at":"2018-11-07T09:39:33+01:00", + "completed_at":"2018-11-07T09:39:33+01:00", + "done_at":"2018-11-07T09:39:33+01:00" + }, + { + "id":262, + "currency":"btc", + "type":"coin", + "amount":"0.11", + "fee":"0.0001", + "blockchain_txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T14:27:14+01:00", + "updated_at":"2018-11-06T14:27:25+01:00", + "completed_at":"2018-11-06T14:27:25+01:00", + "done_at":"2018-11-06T14:27:25+01:00" + }, + { + "id":261, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:58:47+01:00", + "updated_at":"2018-11-06T12:58:58+01:00", + "completed_at":"2018-11-06T12:58:58+01:00", + "done_at":"2018-11-06T12:58:58+01:00" + }, + { + "id":260, + "currency":"btc", + "type":"coin", + "amount":"0.2", + "fee":"0.0001", + "blockchain_txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:50:18+01:00", + "updated_at":"2018-11-06T12:50:28+01:00", + "completed_at":"2018-11-06T12:50:28+01:00", + "done_at":"2018-11-06T12:50:28+01:00" + }, + { + "id":259, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:59:16+01:00", + "updated_at":"2018-11-06T11:59:28+01:00", + "completed_at":"2018-11-06T11:59:28+01:00", + "done_at":"2018-11-06T11:59:28+01:00" + }, + { + "id":258, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:55:33+01:00", + "updated_at":"2018-11-06T11:55:50+01:00", + "completed_at":"2018-11-06T11:55:50+01:00", + "done_at":"2018-11-06T11:55:50+01:00" + }, + { + "id":195, + "currency":"xrp", + "type":"coin", + "amount":"1.0", + "fee":"0.25", + "blockchain_txid":"E1C156C99C2A67EA322B936970EB668050865BCE9F5FB3F2DCE520DC05036810", + "rid":"rpuvFi7irTinqu71V8ZvfrBQVYhoPn3cPB?dt=0", + "state":"succeed", + "created_at":"2018-10-16T16:18:47+02:00", + "updated_at":"2018-10-16T16:18:53+02:00", + "completed_at":"2018-10-16T16:18:52+02:00", + "done_at":"2018-10-16T16:18:52+02:00" + }, + { + "id":177, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T17:37:04+02:00", + "updated_at":"2018-10-09T17:37:09+02:00", + "completed_at":"2018-10-09T17:37:09+02:00", + "done_at":"2018-10-09T17:37:09+02:00" + }, + { + "id":176, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12346", + "state":"failed", + "created_at":"2018-10-09T13:47:17+02:00", + "updated_at":"2018-10-09T13:48:19+02:00", + "completed_at":"2018-10-09T13:48:19+02:00", + "done_at":"2018-10-09T13:48:19+02:00" + }, + { + "id":175, + "currency":"btc", + "type":"coin", + "amount":"1.0", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"failed", + "created_at":"2018-10-09T12:38:19+02:00", + "updated_at":"2018-10-09T12:39:23+02:00", + "completed_at":"2018-10-09T12:39:23+02:00", + "done_at":"2018-10-09T12:39:23+02:00" + }, + { + "id":174, + "currency":"xrp", + "type":"coin", + "amount":"0.5", + "fee":"0.25", + "blockchain_txid":null, + "rid":"1234567498", + "state":"failed", + "created_at":"2018-10-09T10:53:05+02:00", + "updated_at":"2018-10-09T10:53:10+02:00", + "completed_at":"2018-10-09T10:53:10+02:00", + "done_at":"2018-10-09T10:53:10+02:00" + }, + { + "id":173, + "currency":"ltc", + "type":"coin", + "amount":"0.5", + "fee":"0.01", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T10:52:09+02:00", + "updated_at":"2018-10-09T10:52:15+02:00", + "completed_at":"2018-10-09T10:52:15+02:00", + "done_at":"2018-10-09T10:52:15+02:00" + }, + { + "id":172, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:22:13+02:00", + "updated_at":"2018-10-08T14:22:23+02:00", + "completed_at":"2018-10-08T14:22:23+02:00", + "done_at":"2018-10-08T14:22:23+02:00" + }, + { + "id":171, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"347d340c3647acd3b6d7e85ac0db774b14572bd0718a3750f629419fce1dd8ee", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:18:50+02:00", + "updated_at":"2018-10-08T14:19:05+02:00", + "completed_at":"2018-10-08T14:19:05+02:00", + "done_at":"2018-10-08T14:19:05+02:00" + }, + { + "id":170, + "currency":"btc", + "type":"coin", + "amount":"0.3", + "fee":"0.0001", + "blockchain_txid":"1955959aec4fd4cf785616645c67cfeaa29e7bb613c8f456b2ffb245aa665875", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T13:47:29+02:00", + "updated_at":"2018-10-08T13:47:39+02:00", + "completed_at":"2018-10-08T13:47:39+02:00", + "done_at":"2018-10-08T13:47:39+02:00" + }, + { + "id":169, + "currency":"btc", + "type":"coin", + "amount":"1.1", + "fee":"0.0001", + "blockchain_txid":"fc7c4e5d99d5c48b8b74ec6f91a30c080b7c6924ff6d5db7075af5cc1e22bf2b", + "rid":"2N8LCtvKxyLwvvRRfbooRnnJGggjKzoyv6r", + "state":"succeed", + "created_at":"2018-10-01T11:39:18+02:00", + "updated_at":"2018-10-01T11:39:28+02:00", + "completed_at":"2018-10-01T11:39:28+02:00", + "done_at":"2018-10-01T11:39:28+02:00" + }, + { + "id":163, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"7941a9a9d3899c04303e5a1e734cf6acbf25303a6132baea551227766cb8d887", + "rid":"2N2GLhgV6UYb3VrU6Xc2ZHNCZec82Bbtynr", + "state":"succeed", + "created_at":"2018-09-14T15:39:11+02:00", + "updated_at":"2018-09-14T15:39:21+02:00", + "completed_at":"2018-09-14T15:39:21+02:00", + "done_at":"2018-09-14T15:39:21+02:00" + }, + { + "id":154, + "currency":"bch", + "type":"coin", + "amount":"0.013", + "fee":"0.001", + "blockchain_txid":"a12bda96a588c2fbc163f9b774168a07c405ff8227c730f005cc5ef0cb6c77ea", + "rid":"2MshcjxA43U478UVDF4QyTeydKt7wenqn4q", + "state":"succeed", + "created_at":"2018-09-11T17:16:41+02:00", + "updated_at":"2018-09-11T17:16:53+02:00", + "completed_at":"2018-09-11T17:16:53+02:00", + "done_at":"2018-09-11T17:16:53+02:00" + }, + { + "id":153, + "currency":"bch", + "type":"coin", + "amount":"0.012", + "fee":"0.001", + "blockchain_txid":"84a4e961c51605391031386538e64708ade25f2318b46466feceaf0c48a4729f", + "rid":"2MshcjxA43U478UVDF4QyTeydKt7wenqn4q", + "state":"succeed", + "created_at":"2018-09-11T11:39:40+02:00", + "updated_at":"2018-09-11T11:39:47+02:00", + "completed_at":"2018-09-11T11:39:47+02:00", + "done_at":"2018-09-11T11:39:47+02:00" + }, + { + "id":136, + "currency":"bch", + "type":"coin", + "amount":"0.02", + "fee":"0.001", + "blockchain_txid":"48b80e357770cc926d5f60a622d830ed024832aa9b7ba3d0e31248abfeac3073", + "rid":"2N7c4eD6xjvRtn9H4jBfvynxBvEz3QfoiTk", + "state":"succeed", + "created_at":"2018-08-29T10:56:36+02:00", + "updated_at":"2018-08-29T10:56:49+02:00", + "completed_at":"2018-08-29T10:56:49+02:00", + "done_at":"2018-08-29T10:56:49+02:00" + }, + { + "id":135, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":"ef5b877d0133e1a72ba144935822181a0d62e2299285c1c05351352ad75ed928", + "rid":"2N7c4eD6xjvRtn9H4jBfvynxBvEz3QfoiTk", + "state":"succeed", + "created_at":"2018-08-28T20:14:44+02:00", + "updated_at":"2018-08-28T20:14:51+02:00", + "completed_at":"2018-08-28T20:14:51+02:00", + "done_at":"2018-08-28T20:14:51+02:00" + }, + { + "id":134, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":"e6db5c564758b94b1da1913205e00e94a247a283380a811cefc5ba65113b7e95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-08-28T20:03:46+02:00", + "updated_at":"2018-08-28T20:03:56+02:00", + "completed_at":"2018-08-28T20:03:56+02:00", + "done_at":"2018-08-28T20:03:56+02:00" + }, + { + "id":133, + "currency":"bch", + "type":"coin", + "amount":"0.02", + "fee":"0.001", + "blockchain_txid":"459650e495350f9081f9b7c78090cb1856ac9548abee11d23f8d89925233fbde", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-08-28T18:27:32+02:00", + "updated_at":"2018-08-28T18:27:45+02:00", + "completed_at":"2018-08-28T18:27:45+02:00", + "done_at":"2018-08-28T18:27:45+02:00" + }, + { + "id":132, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"processing", + "created_at":"2018-08-28T18:26:32+02:00", + "updated_at":"2018-08-28T18:26:36+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":131, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T18:16:52+02:00", + "updated_at":"2018-08-28T18:16:52+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":130, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T18:02:07+02:00", + "updated_at":"2018-08-28T18:02:07+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":129, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T17:51:21+02:00", + "updated_at":"2018-08-28T17:51:21+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":128, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:48+02:00", + "updated_at":"2018-08-28T16:50:48+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":127, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:09+02:00", + "updated_at":"2018-08-28T16:50:09+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":126, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:08+02:00", + "updated_at":"2018-08-28T16:50:08+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":125, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:04+02:00", + "updated_at":"2018-08-28T16:50:04+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":124, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:49:56+02:00", + "updated_at":"2018-08-28T16:49:56+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":123, + "currency":"btc", + "type":"coin", + "amount":"0.75", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2N8hwP1WmJrFF5QWABn38y63uYLhnJYJYTF", + "state":"processing", + "created_at":"2018-08-27T09:26:21+02:00", + "updated_at":"2018-08-27T09:26:24+02:00", + "completed_at":null, + "done_at":null + + } +] diff --git a/mocks/api/v2/dena/account/withdraws/OPTIONS.mock b/mocks/api/v2/dena/account/withdraws/OPTIONS.mock new file mode 100644 index 0000000..a5c7d7e --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/withdraws/POST.mock b/mocks/api/v2/dena/account/withdraws/POST.mock new file mode 100644 index 0000000..c3a5ade --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/POST.mock @@ -0,0 +1,21 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "id": 1, + "currency": "btc", + "type": "coin", + "amount": "0.1", + "fee": "0.025", + "blockchain_txid": null, + "rid": "1mceeebhtgeyxyy2aenhre4vaakvq8cmtw", + "state": "submitted", + "confirmations": 0, + "created_at": "2019-02-11T12:43:32+01:00", + "updated_at": "2019-02-11T12:43:32+01:00", + "done_at": null +} diff --git a/mocks/api/v2/dena/market/orders/GET--limit=25&page=2&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--limit=25&page=2&state=wait.mock new file mode 100644 index 0000000..ff5642a --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--limit=25&page=2&state=wait.mock @@ -0,0 +1,36 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":675, + "side":"buy", + "ord_type":"limit", + "price":"0.5", + "avg_price":"0.5", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":599, + "side":"sell", + "ord_type":"limit", + "price":"0.5", + "avg_price":"0.5", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=cancel.mock new file mode 100644 index 0000000..be2e645 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=done.mock new file mode 100644 index 0000000..be2e645 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=wait.mock new file mode 100644 index 0000000..be2e645 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=bchbtc.mock new file mode 100644 index 0000000..be2e645 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=cancel.mock new file mode 100644 index 0000000..f65d4a8 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"bchzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"bchzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"bchzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=done.mock new file mode 100644 index 0000000..f0b2fd2 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"bchzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"bchzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"bchzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=wait.mock new file mode 100644 index 0000000..0452534 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchzar.mock b/mocks/api/v2/dena/market/orders/GET--market=bchzar.mock new file mode 100644 index 0000000..0452534 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchzar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=btczar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=cancel.mock new file mode 100644 index 0000000..c157bab --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"btczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"btczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"sell", + "ord_type":"limit", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=btczar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=done.mock new file mode 100644 index 0000000..5015be6 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"btczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"btczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"sell", + "ord_type":"limit", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=btczar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=wait.mock new file mode 100644 index 0000000..1e235a2 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":161, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":171, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":181, + "side":"sell", + "ord_type":"limit", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=btczar.mock b/mocks/api/v2/dena/market/orders/GET--market=btczar.mock new file mode 100644 index 0000000..f92e997 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=btczar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"sell", + "ord_type":"limit", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=cancel.mock new file mode 100644 index 0000000..c1cf768 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"dashbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"dashbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"dashbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=done.mock new file mode 100644 index 0000000..6e0ac9d --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"dashbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"dashbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"dashbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=wait.mock new file mode 100644 index 0000000..c3274cd --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=dashbtc.mock new file mode 100644 index 0000000..c3274cd --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=cancel.mock new file mode 100644 index 0000000..f86e1cd --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"dashzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"dashzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"dashzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=done.mock new file mode 100644 index 0000000..a431f63 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"dashzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"dashzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"dashzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=wait.mock new file mode 100644 index 0000000..e1906aa --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashzar.mock b/mocks/api/v2/dena/market/orders/GET--market=dashzar.mock new file mode 100644 index 0000000..e1906aa --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashzar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=cancel.mock new file mode 100644 index 0000000..a896d46 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=done.mock new file mode 100644 index 0000000..cf13a28 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"ethbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=wait.mock new file mode 100644 index 0000000..60e62cb --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=ethbtc.mock new file mode 100644 index 0000000..60e62cb --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=cancel.mock new file mode 100644 index 0000000..8994268 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=cancel.mock @@ -0,0 +1,37 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "cancel", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 + }, + { + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "cancel", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=done.mock new file mode 100644 index 0000000..02dd01b --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=done.mock @@ -0,0 +1,37 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "done", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 + }, + { + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "done", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=wait.mock new file mode 100644 index 0000000..c8ece02 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=wait.mock @@ -0,0 +1,37 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 + }, + { + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethusd.mock b/mocks/api/v2/dena/market/orders/GET--market=ethusd.mock new file mode 100644 index 0000000..c8ece02 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethusd.mock @@ -0,0 +1,37 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 + }, + { + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=cancel.mock new file mode 100644 index 0000000..ae700ee --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"ethzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=done.mock new file mode 100644 index 0000000..170f8ef --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ethzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ethzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"ethzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=wait.mock new file mode 100644 index 0000000..cbd19b4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethzar.mock b/mocks/api/v2/dena/market/orders/GET--market=ethzar.mock new file mode 100644 index 0000000..cbd19b4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethzar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=cancel.mock new file mode 100644 index 0000000..c437b9f --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"eurusd", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"eurusd", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"eurusd", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=done.mock new file mode 100644 index 0000000..24c2e48 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"eurusd", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"eurusd", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"eurusd", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=wait.mock new file mode 100644 index 0000000..dc97d56 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=eurusd.mock b/mocks/api/v2/dena/market/orders/GET--market=eurusd.mock new file mode 100644 index 0000000..dc97d56 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=eurusd.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=cancel.mock new file mode 100644 index 0000000..4267724 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ltcbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ltcbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"ltcbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=done.mock new file mode 100644 index 0000000..6e11dc6 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ltcbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ltcbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"ltcbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=wait.mock new file mode 100644 index 0000000..bb972c5 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltcbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc.mock new file mode 100644 index 0000000..bb972c5 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=cancel.mock new file mode 100644 index 0000000..7aacc37 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ltczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ltczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"ltczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=done.mock new file mode 100644 index 0000000..3ed1f16 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ltczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ltczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"ltczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=wait.mock new file mode 100644 index 0000000..0078496 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltczar.mock b/mocks/api/v2/dena/market/orders/GET--market=ltczar.mock new file mode 100644 index 0000000..0078496 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltczar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=cancel.mock new file mode 100644 index 0000000..dd22168 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=done.mock new file mode 100644 index 0000000..1a8efe4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"xrpbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"xrpbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"xrpbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=wait.mock new file mode 100644 index 0000000..a2e7960 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc.mock new file mode 100644 index 0000000..a2e7960 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=cancel.mock new file mode 100644 index 0000000..5f7712d --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=done.mock new file mode 100644 index 0000000..2c8f8ea --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"xrpzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"xrpzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"xrpzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=wait.mock new file mode 100644 index 0000000..7dbcddf --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpzar.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpzar.mock new file mode 100644 index 0000000..48f0a64 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpzar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--page=1&limit=25&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--page=1&limit=25&state=wait.mock new file mode 100644 index 0000000..5cc14fa --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--page=1&limit=25&state=wait.mock @@ -0,0 +1,34 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { "id":16, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { "id":162, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--page=1&limit=25.mock b/mocks/api/v2/dena/market/orders/GET--page=1&limit=25.mock new file mode 100644 index 0000000..e457e70 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--page=1&limit=25.mock @@ -0,0 +1,358 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":999, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":534, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":166452, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":645, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":16456, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":17662, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":16972, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1676, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":169782, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":160002, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1006, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":162342, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":16552, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1665447, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":168672, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1687872, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":178786, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":168792, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":16642, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":13456, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1656892, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":156952, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":15668, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":162742, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1625472, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/orders/GET--page=2&limit=25.mock b/mocks/api/v2/dena/market/orders/GET--page=2&limit=25.mock new file mode 100644 index 0000000..2cdac0e --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--page=2&limit=25.mock @@ -0,0 +1,50 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":675, + "side":"buy", + "ord_type":"limit", + "price":"0.5", + "avg_price":"0.5", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":101, + "side":"sell", + "ord_type":"limit", + "price":"0.5", + "avg_price":"0.5", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":102, + "side":"buy", + "ord_type":"market", + "price":"0.5", + "avg_price":"0.5", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/orders/GET.mock b/mocks/api/v2/dena/market/orders/GET.mock new file mode 100644 index 0000000..99d601d --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET.mock @@ -0,0 +1,22 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { "id":1, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"50", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/OPTIONS.mock b/mocks/api/v2/dena/market/orders/OPTIONS.mock new file mode 100644 index 0000000..53f6e03 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=0.5&ord_type=market.mock b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=0.5&ord_type=market.mock new file mode 100644 index 0000000..abf544a --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=0.5&ord_type=market.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + + +{ + "id": 7070, + "side": "buy", + "ord_type": "market", + "price": null, + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:34:44+01:00", + "origin_volume": "0.5", + "remaining_volume": "0.5", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=1.5&ord_type=market.mock b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=1.5&ord_type=market.mock new file mode 100644 index 0000000..abf544a --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=1.5&ord_type=market.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + + +{ + "id": 7070, + "side": "buy", + "ord_type": "market", + "price": null, + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:34:44+01:00", + "origin_volume": "0.5", + "remaining_volume": "0.5", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=sell&volume=2&ord_type=limit&price=20.mock b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=sell&volume=2&ord_type=limit&price=20.mock new file mode 100644 index 0000000..4e2b2d4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=sell&volume=2&ord_type=limit&price=20.mock @@ -0,0 +1,23 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + +{ + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=0.5&ord_type=market.mock b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=0.5&ord_type=market.mock new file mode 100644 index 0000000..abf544a --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=0.5&ord_type=market.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + + +{ + "id": 7070, + "side": "buy", + "ord_type": "market", + "price": null, + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:34:44+01:00", + "origin_volume": "0.5", + "remaining_volume": "0.5", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=1&ord_type=limit&price=10.mock b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=1&ord_type=limit&price=10.mock new file mode 100644 index 0000000..6547c82 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=1&ord_type=limit&price=10.mock @@ -0,0 +1,23 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + +{ + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=1&ord_type=market.mock b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=1&ord_type=market.mock new file mode 100644 index 0000000..8915c27 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=1&ord_type=market.mock @@ -0,0 +1,23 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + +{ + "id": 7071, + "side": "sell", + "ord_type": "market", + "price": null, + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:36:21+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=2&ord_type=limit&price=20.mock b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=2&ord_type=limit&price=20.mock new file mode 100644 index 0000000..6cefb20 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=2&ord_type=limit&price=20.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + + +{ + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST.mock b/mocks/api/v2/dena/market/orders/POST.mock new file mode 100644 index 0000000..7aa913c --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + + + +{ + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/__/cancel/OPTIONS.mock b/mocks/api/v2/dena/market/orders/__/cancel/OPTIONS.mock new file mode 100644 index 0000000..21a4e6e --- /dev/null +++ b/mocks/api/v2/dena/market/orders/__/cancel/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/market/orders/__/cancel/POST.mock b/mocks/api/v2/dena/market/orders/__/cancel/POST.mock new file mode 100644 index 0000000..21a4e6e --- /dev/null +++ b/mocks/api/v2/dena/market/orders/__/cancel/POST.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/market/orders/cancel/OPTIONS.mock b/mocks/api/v2/dena/market/orders/cancel/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/cancel/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/market/orders/cancel/POST.mock b/mocks/api/v2/dena/market/orders/cancel/POST.mock new file mode 100644 index 0000000..084025d --- /dev/null +++ b/mocks/api/v2/dena/market/orders/cancel/POST.mock @@ -0,0 +1,49 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + +[ + { "id":162, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { "id":16, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { "id":162, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/trades/--GET--page=1&limit=25.mock b/mocks/api/v2/dena/market/trades/--GET--page=1&limit=25.mock new file mode 100644 index 0000000..e34cbc3 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/--GET--page=1&limit=25.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":35,"price":10894000,"amount":0.1164,"total":1268061.6,"market":"btczar","created_at":1594951964,"taker_type":"buy"}, + {"id":34,"price":10894000,"amount":0.2414,"total":2629811.6,"market":"btczar","created_at":1594951957,"taker_type":"sell"} +] + + +[ + {"id":254044,"price":"129496907.0","amount":"0.02","total":"2589938.14","fee_currency":"irt","fee":"0.001","fee_amount":"2589.93814","market":"ethgoerliirt","created_at":"2021-11-03T21:44:31+03:30","taker_type":"buy","side":"sell","order_id":264156}, + {"id":214027,"price":"127523269.0","amount":"0.05049","total":"6438649.85181","fee_currency":"irt","fee":"0.0035","fee_amount":"22535.274481335","market":"ethgoerliirt","created_at":"2021-11-03T11:29:47+03:30","taker_type":"sell","side":"sell","order_id":242244}, + {"id":214026,"price":"127675126.0","amount":"0.19951","total":"25472464.38826","fee_currency":"irt","fee":"0.0035","fee_amount":"89153.62535891","market":"ethgoerliirt","created_at":"2021-11-03T11:29:47+03:30","taker_type":"sell","side":"sell","order_id":242244} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--market=bchzar.mock b/mocks/api/v2/dena/market/trades/GET--market=bchzar.mock new file mode 100644 index 0000000..d34fa00 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=bchzar.mock @@ -0,0 +1,159 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id": 162325, + "price": "0.09", + "volume": "0.031", + "funds": "0.00279", + "market": "bchzar", + "created_at": "2018-12-12T11:40:55+01:00", + "side": "bid" + }, + {"id": 162324, + "price": "0.09", + "volume": "0.069", + "funds": "0.00621", + "market": "bchzar", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + {"id": 162323, + "price": "0.1", + "volume": "0.031", + "funds": "0.0031", + "market": "bchzar", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + {"id":162167, + "price":"0.3", + "volume":"0.001", + "funds":"0.0003", + "market":"bchzar", + "created_at":"2018-11-29T16:54:43+01:00", + "side":"bid", + "order_id":202857 + }, + {"id":162119, + "price":"0.3", + "volume":"0.02", + "funds":"0.006", + "market":"bchzar", + "created_at":"2018-11-20T10:44:48+01:00", + "side":"ask", + "order_id":202400 + }, + {"id":162003, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"bchzar", + "created_at":"2018-11-09T14:21:51+01:00", + "side":"ask", + "order_id":202130 + }, + {"id":162002, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"bchzar", + "created_at":"2018-11-09T14:20:14+01:00", + "side":"ask", + "order_id":202129 + }, + {"id":161953, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"bchzar", + "created_at":"2018-10-31T10:29:43+01:00", + "side":"ask", + "order_id":201953 + }, + {"id":161952, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"bchzar", + "created_at":"2018-10-31T10:29:32+01:00", + "side":"ask", + "order_id":201952 + }, + {"id":161951, + "price":"0.15", + "volume":"0.1", + "funds":"0.015", + "market":"bchzar", + "created_at":"2018-10-31T10:29:10+01:00", + "side":"ask", + "order_id":201951 + }, + {"id":161886, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"bchzar", + "created_at":"2018-10-29T17:30:41+01:00", + "side":"ask", + "order_id":201835 + }, + {"id":161878, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"bchzar", + "created_at":"2018-10-29T09:17:29+01:00", + "side":"ask", + "order_id":201798 + }, + {"id":161829, + "price":"0.4", + "volume":"0.5", + "funds":"0.2", + "market":"bchzar", + "created_at":"2018-10-24T09:18:26+02:00", + "side":"ask", + "order_id":201654 + }, + {"id":161821, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"bchzar", + "created_at":"2018-10-23T17:13:35+02:00", + "side":"bid", + "order_id":201631 + }, + {"id":161820, + "price":"0.01", + "volume":"0.2", + "funds":"0.002", + "market":"bchzar", + "created_at":"2018-10-23T16:59:03+02:00", + "side":"bid", + "order_id":201629 + }, + {"id":161819, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"bchzar", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201628 + }, + {"id":161818, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"bchzar", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201627 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--market=btczar.mock b/mocks/api/v2/dena/market/trades/GET--market=btczar.mock new file mode 100644 index 0000000..141f3ba --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=btczar.mock @@ -0,0 +1,159 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id": 162325, + "price": "0.09", + "volume": "0.031", + "funds": "0.00279", + "market": "btczar", + "created_at": "2018-12-12T11:40:55+01:00", + "side": "bid" + }, + {"id": 162324, + "price": "0.09", + "volume": "0.069", + "funds": "0.00621", + "market": "btczar", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + {"id": 162323, + "price": "0.1", + "volume": "0.031", + "funds": "0.0031", + "market": "btczar", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + {"id":162167, + "price":"0.3", + "volume":"0.001", + "funds":"0.0003", + "market":"btczar", + "created_at":"2018-11-29T16:54:43+01:00", + "side":"bid", + "order_id":202857 + }, + {"id":162119, + "price":"0.3", + "volume":"0.02", + "funds":"0.006", + "market":"btczar", + "created_at":"2018-11-20T10:44:48+01:00", + "side":"ask", + "order_id":202400 + }, + {"id":162003, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"btczar", + "created_at":"2018-11-09T14:21:51+01:00", + "side":"ask", + "order_id":202130 + }, + {"id":162002, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"btczar", + "created_at":"2018-11-09T14:20:14+01:00", + "side":"ask", + "order_id":202129 + }, + {"id":161953, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"btczar", + "created_at":"2018-10-31T10:29:43+01:00", + "side":"ask", + "order_id":201953 + }, + {"id":161952, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"btczar", + "created_at":"2018-10-31T10:29:32+01:00", + "side":"ask", + "order_id":201952 + }, + {"id":161951, + "price":"0.15", + "volume":"0.1", + "funds":"0.015", + "market":"btczar", + "created_at":"2018-10-31T10:29:10+01:00", + "side":"ask", + "order_id":201951 + }, + {"id":161886, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"btczar", + "created_at":"2018-10-29T17:30:41+01:00", + "side":"ask", + "order_id":201835 + }, + {"id":161878, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"btczar", + "created_at":"2018-10-29T09:17:29+01:00", + "side":"ask", + "order_id":201798 + }, + {"id":161829, + "price":"0.4", + "volume":"0.5", + "funds":"0.2", + "market":"btczar", + "created_at":"2018-10-24T09:18:26+02:00", + "side":"ask", + "order_id":201654 + }, + {"id":161821, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"btczar", + "created_at":"2018-10-23T17:13:35+02:00", + "side":"bid", + "order_id":201631 + }, + {"id":161820, + "price":"0.01", + "volume":"0.2", + "funds":"0.002", + "market":"btczar", + "created_at":"2018-10-23T16:59:03+02:00", + "side":"bid", + "order_id":201629 + }, + {"id":161819, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"btczar", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201628 + }, + {"id":161818, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"btczar", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201627 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--market=dashbtc.mock b/mocks/api/v2/dena/market/trades/GET--market=dashbtc.mock new file mode 100644 index 0000000..86f98ea --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=dashbtc.mock @@ -0,0 +1,196 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 162325, + "price": "0.09", + "volume": "0.031", + "funds": "0.00279", + "market": "dashbtc", + "created_at": "2018-12-12T11:40:55+01:00", + "side": "bid" + }, + { + "id": 162324, + "price": "0.09", + "volume": "0.069", + "funds": "0.00621", + "market": "dashbtc", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + { + "id": 162323, + "price": "0.1", + "volume": "0.031", + "funds": "0.0031", + "market": "dashbtc", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + { + "id":161682, + "price":"0.0006", + "volume":"0.045", + "funds":"0.000027", + "market":"dashbtc", + "created_at":"2018-10-19T10:02:29+02:00", + "side":"ask", + "order_id":201357 + }, + { + "id":161829, + "price":"0.4", + "volume":"0.5", + "funds":"0.2", + "market":"dashbtc", + "created_at":"2018-10-24T09:18:26+02:00", + "side":"ask", + "order_id":201654 + }, + { + "id":161821, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"dashbtc", + "created_at":"2018-10-23T17:13:35+02:00", + "side":"bid", + "order_id":201631 + }, + { + "id":161820, + "price":"0.01", + "volume":"0.2", + "funds":"0.002", + "market":"dashbtc", + "created_at":"2018-10-23T16:59:03+02:00", + "side":"bid", + "order_id":201629 + }, + { + "id":161819, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"dashbtc", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201628 + }, + { + "id":161818, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"dashbtc", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201627 + }, + { + "id":161790, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"dashbtc", + "created_at":"2018-10-22T16:40:34+02:00", + "side":"bid", + "order_id":201564 + }, + { + "id":161789, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"dashbtc", + "created_at":"2018-10-22T16:29:22+02:00", + "side":"bid", + "order_id":201563 + }, + { + "id":161786, + "price":"0.0356", + "volume":"0.02", + "funds":"0.000712", + "market":"dashbtc", + "created_at":"2018-10-22T16:25:22+02:00", + "side":"bid", + "order_id":201558 + }, + { + "id":161782, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"dashbtc", + "created_at":"2018-10-22T16:20:25+02:00", + "side":"bid", + "order_id":201552 + }, + { + "id":161719, + "price":"1.0", + "volume":"0.0089", + "funds":"0.0089", + "market":"dashbtc", + "created_at":"2018-10-22T09:14:25+02:00", + "side":"bid", + "order_id":201441 + }, + { + "id":161718, + "price":"0.08", + "volume":"0.005", + "funds":"0.0004", + "market":"dashbtc", + "created_at":"2018-10-22T09:14:25+02:00", + "side":"ask", + "order_id":201436 + }, + { + "id":161715, + "price":"0.08", + "volume":"0.045", + "funds":"0.0036", + "market":"dashbtc", + "created_at":"2018-10-19T14:30:07+02:00", + "side":"ask", + "order_id":201436 + }, + { + "id":161686, + "price":"0.0006", + "volume":"0.005", + "funds":"0.000003", + "market":"dashbtc", + "created_at":"2018-10-19T10:47:20+02:00", + "side":"ask", + "order_id":201357 + }, + { + "id":161683, + "price":"0.0006", + "volume":"0.04", + "funds":"0.000024", + "market":"dashbtc", + "created_at":"2018-10-19T10:05:46+02:00", + "side":"ask", + "order_id":201357 + }, + { + "id":161682, + "price":"0.0006", + "volume":"0.045", + "funds":"0.000027", + "market":"dashbtc", + "created_at":"2018-10-19T10:02:29+02:00", + "side":"ask", + "order_id":201357 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--market=ethbtc.mock b/mocks/api/v2/dena/market/trades/GET--market=ethbtc.mock new file mode 100644 index 0000000..2cba278 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=ethbtc.mock @@ -0,0 +1,459 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "price":"0.3", + "volume":"0.001", + "funds":"0.0003", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:43+01:00", + "side":"bid", + "order_id":202857 + }, + {"id":162119, + "price":"0.3", + "volume":"0.02", + "funds":"0.006", + "market":"ethbtc", + "created_at":"2018-11-20T10:44:48+01:00", + "side":"ask", + "order_id":202400 + }, + {"id":162003, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"ethbtc", + "created_at":"2018-11-09T14:21:51+01:00", + "side":"ask", + "order_id":202130 + }, + {"id":162002, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"ethbtc", + "created_at":"2018-11-09T14:20:14+01:00", + "side":"ask", + "order_id":202129 + }, + {"id":161953, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"ethbtc", + "created_at":"2018-10-31T10:29:43+01:00", + "side":"ask", + "order_id":201953 + }, + {"id":161952, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"ethbtc", + "created_at":"2018-10-31T10:29:32+01:00", + "side":"ask", + "order_id":201952 + }, + {"id":161951, + "price":"0.15", + "volume":"0.1", + "funds":"0.015", + "market":"ethbtc", + "created_at":"2018-10-31T10:29:10+01:00", + "side":"ask", + "order_id":201951 + }, + {"id":161886, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"ethbtc", + "created_at":"2018-10-29T17:30:41+01:00", + "side":"ask", + "order_id":201835 + }, + {"id":161878, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"ethbtc", + "created_at":"2018-10-29T09:17:29+01:00", + "side":"ask", + "order_id":201798 + }, + {"id":161829, + "price":"0.4", + "volume":"0.5", + "funds":"0.2", + "market":"ethbtc", + "created_at":"2018-10-24T09:18:26+02:00", + "side":"ask", + "order_id":201654 + }, + {"id":161821, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"ethbtc", + "created_at":"2018-10-23T17:13:35+02:00", + "side":"bid", + "order_id":201631 + }, + {"id":161820, + "price":"0.01", + "volume":"0.2", + "funds":"0.002", + "market":"ethbtc", + "created_at":"2018-10-23T16:59:03+02:00", + "side":"bid", + "order_id":201629 + }, + {"id":161819, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"ethbtc", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201628 + }, + {"id":161818, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"ethbtc", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201627 + }, + {"id":161790, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"ethbtc", + "created_at":"2018-10-22T16:40:34+02:00", + "side":"bid", + "order_id":201564 + }, + {"id":161789, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"ethbtc", + "created_at":"2018-10-22T16:29:22+02:00", + "side":"bid", + "order_id":201563 + }, + {"id":161786, + "price":"0.0356", + "volume":"0.02", + "funds":"0.000712", + "market":"ethbtc", + "created_at":"2018-10-22T16:25:22+02:00", + "side":"bid", + "order_id":201558 + }, + {"id":161782, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"ethbtc", + "created_at":"2018-10-22T16:20:25+02:00", + "side":"bid", + "order_id":201552 + }, + {"id":161719, + "price":"1.0", + "volume":"0.0089", + "funds":"0.0089", + "market":"ethbtc", + "created_at":"2018-10-22T09:14:25+02:00", + "side":"bid", + "order_id":201441 + }, + {"id":161718, + "price":"0.08", + "volume":"0.005", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-22T09:14:25+02:00", + "side":"ask", + "order_id":201436 + }, + {"id":161715, + "price":"0.08", + "volume":"0.045", + "funds":"0.0036", + "market":"ethbtc", + "created_at":"2018-10-19T14:30:07+02:00", + "side":"ask", + "order_id":201436 + }, + {"id":161686, + "price":"0.0006", + "volume":"0.005", + "funds":"0.000003", + "market":"ethbtc", + "created_at":"2018-10-19T10:47:20+02:00", + "side":"ask", + "order_id":201357 + }, + {"id":161683, + "price":"0.0006", + "volume":"0.04", + "funds":"0.000024", + "market":"ethbtc", + "created_at":"2018-10-19T10:05:46+02:00", + "side":"ask", + "order_id":201357 + }, + {"id":161682, + "price":"0.0006", + "volume":"0.045", + "funds":"0.000027", + "market":"ethbtc", + "created_at":"2018-10-19T10:02:29+02:00", + "side":"ask", + "order_id":201357 + }, + {"id":161681, + "price":"0.0006", + "volume":"0.005", + "funds":"0.000003", + "market":"ethbtc", + "created_at":"2018-10-19T10:01:20+02:00", + "side":"ask", + "order_id":201356 + }, + {"id":161680, + "price":"0.0006", + "volume":"0.05", + "funds":"0.00003", + "market":"ethbtc", + "created_at":"2018-10-19T09:59:41+02:00", + "side":"ask", + "order_id":201355 + }, + {"id":161679, + "price":"0.001", + "volume":"0.4", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-19T09:59:02+02:00", + "side":"ask", + "order_id":201354 + }, + {"id":161678, + "price":"0.1", + "volume":"0.4", + "funds":"0.04", + "market":"ethbtc", + "created_at":"2018-10-19T09:46:02+02:00", + "side":"ask", + "order_id":201334 + }, + {"id":161671, + "price":"0.01", + "volume":"0.02", + "funds":"0.0002", + "market":"ethbtc", + "created_at":"2018-10-18T18:25:41+02:00", + "side":"ask", + "order_id":201320 + }, + {"id":161670, + "price":"0.01", + "volume":"1.0", + "funds":"0.01", + "market":"ethbtc", + "created_at":"2018-10-18T18:25:15+02:00", + "side":"ask", + "order_id":201318 + }, + {"id":161669, + "price":"0.02", + "volume":"0.028", + "funds":"0.00056", + "market":"ethbtc", + "created_at":"2018-10-18T12:25:47+02:00", + "side":"ask", + "order_id":201317 + }, + {"id":161663, + "price":"0.02", + "volume":"0.007", + "funds":"0.00014", + "market":"ethbtc", + "created_at":"2018-10-18T10:42:38+02:00", + "side":"ask", + "order_id":201306 + }, + {"id":161662, + "price":"0.02", + "volume":"0.005", + "funds":"0.0001", + "market":"ethbtc", + "created_at":"2018-10-18T10:37:15+02:00", + "side":"ask", + "order_id":201304 + }, + {"id":161661, + "price":"0.02", + "volume":"0.002", + "funds":"0.00004", + "market":"ethbtc", + "created_at":"2018-10-18T10:35:00+02:00", + "side":"ask", + "order_id":201300 + }, + {"id":161660, + "price":"0.02", + "volume":"0.002", + "funds":"0.00004", + "market":"ethbtc", + "created_at":"2018-10-18T10:25:41+02:00", + "side":"ask", + "order_id":201299 + }, + {"id":161659, + "price":"0.02", + "volume":"0.002", + "funds":"0.00004", + "market":"ethbtc", + "created_at":"2018-10-18T10:24:54+02:00", + "side":"ask", + "order_id":201298 + }, + {"id":161658, + "price":"0.02", + "volume":"0.002", + "funds":"0.00004", + "market":"ethbtc", + "created_at":"2018-10-18T10:24:19+02:00", + "side":"ask", + "order_id":201297 + }, + {"id":161647, + "price":"0.5", + "volume":"0.898", + "funds":"0.449", + "market":"ethbtc", + "created_at":"2018-10-16T12:22:35+02:00", + "side":"bid", + "order_id":201221 + }, + {"id":161641, + "price":"0.5", + "volume":"0.001", + "funds":"0.0005", + "market":"ethbtc", + "created_at":"2018-10-16T10:28:56+02:00", + "side":"bid", + "order_id":201221 + }, + {"id":161640, + "price":"0.5", + "volume":"0.001", + "funds":"0.0005", + "market":"ethbtc", + "created_at":"2018-10-16T10:28:47+02:00", + "side":"bid", + "order_id":201221 + }, + {"id":161639, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"ethbtc", + "created_at":"2018-10-15T16:54:41+02:00", + "side":"bid", + "order_id":201221 + }, + {"id":161598, + "price":"0.004", + "volume":"0.02", + "funds":"0.00008", + "market":"ethbtc", + "created_at":"2018-10-11T10:33:03+02:00", + "side":"ask", + "order_id":201093 + }, + {"id":161595, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:57:25+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161594, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:53:02+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161593, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:45:27+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161592, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:43:02+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161591, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:41:01+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161590, + "price":"0.004", + "volume":"0.03", + "funds":"0.00012", + "market":"ethbtc", + "created_at":"2018-10-09T16:58:01+02:00", + "side":"ask", + "order_id":201079 + }, + {"id":161589, + "price":"0.004", + "volume":"0.04", + "funds":"0.00016", + "market":"ethbtc", + "created_at":"2018-10-09T16:57:46+02:00", + "side":"ask", + "order_id":201079 + }, + {"id":161588, + "price":"0.2", + "volume":"0.09", + "funds":"0.018", + "market":"ethbtc", + "created_at":"2018-10-09T16:57:02+02:00", + "side":"ask", + "order_id":201078 + } +] diff --git a/mocks/api/v2/dena/market/trades/GET--market=eurusd.mock b/mocks/api/v2/dena/market/trades/GET--market=eurusd.mock new file mode 100644 index 0000000..ee26dc4 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=eurusd.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--page=1&limit=25.mock b/mocks/api/v2/dena/market/trades/GET--page=1&limit=25.mock new file mode 100644 index 0000000..c35f8cc --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--page=1&limit=25.mock @@ -0,0 +1,24 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":254044, + "price":"129496907.0", + "amount":"0.02", + "total":"2589938.14", + "fee_currency":"irt", + "fee":"0.001", + "fee_amount":"2589.93814", + "market":"DASH/BTC", + "created_at":"2021-11-03T21:44:31+03:30", + "taker_type":"buy", + "side":"sell", + "order_id":264156 + }, + {"id":214027,"price":"127523269.0","amount":"0.05049","total":"6438649.85181","fee_currency":"irt","fee":"0.0035","fee_amount":"22535.274481335","market":"ethgoerliirt","created_at":"2021-11-03T11:29:47+03:30","taker_type":"sell","side":"sell","order_id":242244}, + {"id":214026,"price":"127675126.0","amount":"0.19951","total":"25472464.38826","fee_currency":"irt","fee":"0.0035","fee_amount":"89153.62535891","market":"ETH/BTC","created_at":"2021-11-03T11:29:47+03:30","taker_type":"sell","side":"sell","order_id":242244} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET.mock b/mocks/api/v2/dena/market/trades/GET.mock new file mode 100644 index 0000000..b52bf85 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET.mock @@ -0,0 +1,10 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":35,"price":10894000,"amount":0.1164,"total":1268061.6,"market":"btczar","created_at":1594951964,"taker_type":"buy"}, + {"id":34,"price":10894000,"amount":0.2414,"total":2629811.6,"market":"btczar","created_at":1594951957,"taker_type":"sell"} +] diff --git a/mocks/api/v2/dena/market/trades/OPTIONS.mock b/mocks/api/v2/dena/market/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/currencies/GET.mock b/mocks/api/v2/dena/public/currencies/GET.mock new file mode 100644 index 0000000..e27bb62 --- /dev/null +++ b/mocks/api/v2/dena/public/currencies/GET.mock @@ -0,0 +1,190 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": "irt", + "name": "Iranian Toman", + "symbol": "irt", + "type": "fiat", + "min_confirmations": 6, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "200000000.0", + "withdraw_limit_72h": "200000000000000.0", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 100, + "precision": 0, + "position": 1 + }, + { + "id": "bch", + "name": "Bitcoin Cash", + "symbol": "฿", + "explorer_transaction": "https://www.blocktrail.com/tBCC/tx/#{txid}", + "explorer_address": "https://www.blocktrail.com/tBCC/address/#{address}", + "type": "coin", + "min_confirmations": 7, + "deposit_fee": "0.0", + "withdraw_fee": "0.01", + "withdraw_limit_24h": "0.1", + "withdraw_limit_72h": "0.2", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 100000000, + "precision": 8 + }, + { + "id": "btc", + "name": "Bitcoin", + "symbol": "฿", + "explorer_transaction": "https://testnet.blockchain.info/tx/#{txid}", + "explorer_address": "https://testnet.blockchain.info/address/#{address}", + "type": "coin", + "min_confirmations": 6, + "deposit_fee": "0.0", + "withdraw_fee": "0.005", + "withdraw_limit_24h": "0.1", + "withdraw_limit_72h": "0.2", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 100000000, + "precision": 8 + }, + { + "id": "dash", + "name": "Dash", + "symbol": "Đ", + "explorer_transaction": "https://test.insight.dash.siampm.com/dash/tx/#{txid}", + "explorer_address": "https://test.insight.dash.siampm.com/dash/address/#{address}", + "type": "coin", + "min_confirmations": 6, + "deposit_fee": "0.0", + "withdraw_fee": "0.01", + "withdraw_limit_24h": "0.2", + "withdraw_limit_72h": "0.5000000000000001", + "deposit_enabled": false, + "withdrawal_enabled": false, + "base_factor": 100000000, + "precision": 8 + }, + { + "id": "eth", + "icon_url": "https://assets.coingecko.com/coins/images/279/small/ethereum.png?1595348880", + "name": "Ethereum", + "symbol": "Ξ", + "explorer_transaction": "https://rinkeby.etherscan.io/tx/#{txid}", + "explorer_address": "https://rinkeby.etherscan.io/address/#{address}", + "type": "coin", + "min_confirmations": 7, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "0.2", + "withdraw_limit_72h": "0.5000000000000001", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 1e+18, + "precision": 8 + }, + { + "id": "ltc", + "name": "Litecoin", + "symbol": "Ł", + "explorer_transaction": "https://chain.so/tx/LTCTEST/#{txid}", + "explorer_address": "https://chain.so/address/LTCTEST/#{address}", + "type": "coin", + "min_confirmations": 5, + "deposit_fee": "0.0", + "withdraw_fee": "0.01", + "withdraw_limit_24h": "0.5000000000000001", + "withdraw_limit_72h": "1.2", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 100000000, + "precision": 8 + }, + { + "id": "trst", + "name": "WeTrust", + "symbol": "Ξ", + "explorer_transaction": "https://rinkeby.etherscan.io/tx/#{txid}", + "explorer_address": "https://rinkeby.etherscan.io/address/#{address}", + "type": "coin", + "min_confirmations": 5, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "300.0", + "withdraw_limit_72h": "600.0", + "deposit_enabled": false, + "withdrawal_enabled": true, + "base_factor": 1000000, + "precision": 8 + }, + { + "id": "usd", + "name": "US Dollar", + "symbol": "$", + "type": "fiat", + "min_confirmations": 4, + "deposit_fee": "0.0", + "withdraw_fee": "0.01", + "withdraw_limit_24h": "100.0", + "withdraw_limit_72h": "200.0", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 1, + "precision": 2 + }, + { + "id": "xrp", + "name": "Ripple", + "symbol": "ꭆ", + "explorer_transaction": "https://bithomp.com/explorer/#{txid}", + "explorer_address": "https://bithomp.com/explorer/#{address}", + "type": "coin", + "min_confirmations": 5, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "100.0", + "withdraw_limit_72h": "200.0", + "deposit_enabled": true, + "withdrawal_enabled": false, + "base_factor": 1000000, + "precision": 8 + }, + { + "id": "zar", + "name": "ZAR", + "symbol": "$", + "type": "fiat", + "min_confirmations": 7, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "100.0", + "withdraw_limit_72h": "200.0", + "deposit_enabled": true, + "withdrawal_enabled": false, + "base_factor": 1, + "precision": 2 + }, + { + "id": "eur", + "name": "Euro", + "symbol": "€", + "type": "fiat", + "min_confirmations": 6, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "2000.0", + "withdraw_limit_72h": "1000000.0", + "deposit_enabled": false, + "withdrawal_enabled": false, + "base_factor": 1, + "precision": 2 + } +] diff --git a/mocks/api/v2/dena/public/markets/GET.mock b/mocks/api/v2/dena/public/markets/GET.mock new file mode 100644 index 0000000..cb24648 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/GET.mock @@ -0,0 +1,80 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + + +[ + { + "id": "btczar", + "name": "BTC/ZAR", + "base_unit": "btc", + "quote_unit": "zar", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 6, + "price_precision": 2, + "state": "enabled" + }, + { + "id": "bchzar", + "name": "BCH/ZAR", + "base_unit": "bch", + "quote_unit": "zar", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 4, + "price_precision": 4, + "state": "enabled" + }, + { + "id": "ethbtc", + "name": "ETH/BTC", + "base_unit": "eth", + "quote_unit": "btc", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 4, + "price_precision": 4, + "state": "enabled" + }, + { + "id": "dashbtc", + "name": "DASH/BTC", + "base_unit": "dash", + "quote_unit": "btc", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 4, + "price_precision": 4, + "state": "enabled" + }, + { + "id": "eurusd", + "name": "EUR/USD", + "base_unit": "eur", + "quote_unit": "usd", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 4, + "price_precision": 4, + "state": "enabled" + } +] diff --git a/mocks/api/v2/dena/public/markets/OPTIONS.mock b/mocks/api/v2/dena/public/markets/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/bchzar/depth/GET.mock b/mocks/api/v2/dena/public/markets/bchzar/depth/GET.mock new file mode 100644 index 0000000..d814885 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/depth/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/bchzar/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/bchzar/depth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/depth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/bchzar/depth/script.js b/mocks/api/v2/dena/public/markets/bchzar/depth/script.js new file mode 100644 index 0000000..68905d6 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/depth/script.js @@ -0,0 +1,26 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "timestamp": ts, + "asks": + [ + ["0.99","1"], + ["0.98","20"], + ["0.96","1"], + ["0.80","1"], + ["0.75","1"], + ["0.70","1"], + ["0.60","0.1"] + ], + "bids": + [ + ["0.50","0.041"], + ["0.49","0.5"], + ["0.48","0.2"], + ["0.47","0.1"], + ["0.30","10"], + ["0.28","2"], + ["0.27","5"], + ["0.26","25"] + ] +} diff --git a/mocks/api/v2/dena/public/markets/bchzar/k-line/GET.mock b/mocks/api/v2/dena/public/markets/bchzar/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/bchzar/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/bchzar/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/bchzar/trades/GET.mock b/mocks/api/v2/dena/public/markets/bchzar/trades/GET.mock new file mode 100644 index 0000000..be9d003 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/trades/GET.mock @@ -0,0 +1,19 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":53,"price":3000,"amount":1,"total":3000,"market":"bchzar","created_at":1595235146,"taker_type":"buy"}, + {"id":52,"price":2935,"amount":105.7314,"total":310321.659,"market":"bchzar","created_at":1595022413,"taker_type":"buy"}, + {"id":51,"price":2935,"amount":128.7715,"total":377944.3525,"market":"bchzar","created_at":1595022412,"taker_type":"sell"}, + {"id":50,"price":3015,"amount":4,"total":12060,"market":"bchzar","created_at":1595022372,"taker_type":"buy"}, + {"id":49,"price":2935,"amount":4,"total":11740,"market":"bchzar","created_at":1595021816,"taker_type":"sell"}, + {"id":48,"price":3010,"amount":4,"total":12040,"market":"bchzar","created_at":1595021692,"taker_type":"buy"}, + {"id":47,"price":3015,"amount":5,"total":15075,"market":"bchzar","created_at":1595017688,"taker_type":"buy"}, + {"id":46,"price":3015,"amount":12.1883,"total":36747.7245,"market":"bchzar","created_at":1595012890,"taker_type":"buy"}, + {"id":45,"price":3015,"amount":7.1883,"total":21672.7245,"market":"bchzar","created_at":1595008724,"taker_type":"buy"}, + {"id":44,"price":3015,"amount":5,"total":15075,"market":"bchzar","created_at":1595008632,"taker_type":"sell"} +] diff --git a/mocks/api/v2/dena/public/markets/bchzar/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/bchzar/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/btczar/depth/GET.mock b/mocks/api/v2/dena/public/markets/btczar/depth/GET.mock new file mode 100644 index 0000000..d814885 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/depth/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/btczar/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/btczar/depth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/depth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/btczar/depth/script.js b/mocks/api/v2/dena/public/markets/btczar/depth/script.js new file mode 100644 index 0000000..68905d6 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/depth/script.js @@ -0,0 +1,26 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "timestamp": ts, + "asks": + [ + ["0.99","1"], + ["0.98","20"], + ["0.96","1"], + ["0.80","1"], + ["0.75","1"], + ["0.70","1"], + ["0.60","0.1"] + ], + "bids": + [ + ["0.50","0.041"], + ["0.49","0.5"], + ["0.48","0.2"], + ["0.47","0.1"], + ["0.30","10"], + ["0.28","2"], + ["0.27","5"], + ["0.26","25"] + ] +} diff --git a/mocks/api/v2/dena/public/markets/btczar/k-line/GET.mock b/mocks/api/v2/dena/public/markets/btczar/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/btczar/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/btczar/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/btczar/trades/GET.mock b/mocks/api/v2/dena/public/markets/btczar/trades/GET.mock new file mode 100644 index 0000000..e4c8332 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/trades/GET.mock @@ -0,0 +1,39 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":35,"price":10894000,"amount":0.1164,"total":1268061.6,"market":"btczar","created_at":1594951964,"taker_type":"buy"}, + {"id":34,"price":10894000,"amount":0.2414,"total":2629811.6,"market":"btczar","created_at":1594951957,"taker_type":"sell"}, + {"id":33,"price":10894000,"amount":0.1417,"total":1543679.8,"market":"btczar","created_at":1594951952,"taker_type":"buy"}, + {"id":32,"price":10894000,"amount":0.2125,"total":2314975,"market":"btczar","created_at":1594951947,"taker_type":"buy"}, + {"id":31,"price":10890000,"amount":0.3481,"total":3790809,"market":"btczar","created_at":1594951940,"taker_type":"buy"}, + {"id":30,"price":10890000,"amount":0.2203,"total":2399067,"market":"btczar","created_at":1594951933,"taker_type":"sell"}, + {"id":29,"price":10895000,"amount":0.3205,"total":3491847.5,"market":"btczar","created_at":1594951929,"taker_type":"sell"}, + {"id":28,"price":10895000,"amount":0.2362,"total":2573399,"market":"btczar","created_at":1594951921,"taker_type":"sell"}, + {"id":27,"price":10895000,"amount":0.2171,"total":2365304.5,"market":"btczar","created_at":1594951911,"taker_type":"sell"}, + {"id":26,"price":10895000,"amount":0.1993,"total":2171373.5,"market":"btczar","created_at":1594951906,"taker_type":"buy"}, + {"id":25,"price":10895000,"amount":0.2417,"total":2633321.5,"market":"btczar","created_at":1594951903,"taker_type":"sell"}, + {"id":24,"price":10895000,"amount":0.2666,"total":2904607,"market":"btczar","created_at":1594951898,"taker_type":"sell"}, + {"id":23,"price":10895000,"amount":0.2976,"total":3242352,"market":"btczar","created_at":1594951893,"taker_type":"buy"}, + {"id":22,"price":10895000,"amount":0.2432,"total":2649664,"market":"btczar","created_at":1594951891,"taker_type":"sell"}, + {"id":21,"price":10895000,"amount":0.328,"total":3573560,"market":"btczar","created_at":1594951888,"taker_type":"sell"}, + {"id":20,"price":10895000,"amount":0.2686,"total":2926397,"market":"btczar","created_at":1594951881,"taker_type":"buy"}, + {"id":19,"price":10895000,"amount":0.261,"total":2843595,"market":"btczar","created_at":1594951874,"taker_type":"buy"}, + {"id":18,"price":10895000,"amount":0.2948,"total":3211846,"market":"btczar","created_at":1594951864,"taker_type":"buy"}, + {"id":17,"price":10895000,"amount":0.3808,"total":4148816,"market":"btczar","created_at":1594951856,"taker_type":"buy"}, + {"id":16,"price":10895000,"amount":0.1169,"total":1273625.5,"market":"btczar","created_at":1594951845,"taker_type":"buy"}, + {"id":15,"price":10895000,"amount":0.2269,"total":2472075.5,"market":"btczar","created_at":1594951836,"taker_type":"buy"}, + {"id":1925296,"price":2500000,"amount":2.5,"total":6250000,"market":"btczar","created_at":1594619651,"taker_type":"sell"}, + {"id":1925230,"price":10031000,"amount":0.0039,"total":39120.9,"market":"btczar","created_at":1594572438,"taker_type":"buy"}, + {"id":1925229,"price":10031000,"amount":0.0019,"total":19058.9,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925228,"price":10029000,"amount":0.0042,"total":42121.8,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925227,"price":10028000,"amount":0.0052,"total":52145.6,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925226,"price":10025000,"amount":0.0051,"total":51127.5,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925225,"price":10023000,"amount":0.006,"total":60138,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925224,"price":10021000,"amount":0.0044,"total":44092.4,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925223,"price":10020000,"amount":0.0055,"total":55110,"market":"btczar","created_at":1594571253,"taker_type":"buy"} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/public/markets/btczar/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/btczar/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/dashbtc/depth/GET.mock b/mocks/api/v2/dena/public/markets/dashbtc/depth/GET.mock new file mode 100644 index 0000000..1f9374a --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/depth/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +cContent-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/dashbtc/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/dashbtc/depth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/depth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/dashbtc/depth/script.js b/mocks/api/v2/dena/public/markets/dashbtc/depth/script.js new file mode 100644 index 0000000..68905d6 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/depth/script.js @@ -0,0 +1,26 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "timestamp": ts, + "asks": + [ + ["0.99","1"], + ["0.98","20"], + ["0.96","1"], + ["0.80","1"], + ["0.75","1"], + ["0.70","1"], + ["0.60","0.1"] + ], + "bids": + [ + ["0.50","0.041"], + ["0.49","0.5"], + ["0.48","0.2"], + ["0.47","0.1"], + ["0.30","10"], + ["0.28","2"], + ["0.27","5"], + ["0.26","25"] + ] +} diff --git a/mocks/api/v2/dena/public/markets/dashbtc/k-line/GET.mock b/mocks/api/v2/dena/public/markets/dashbtc/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/dashbtc/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/dashbtc/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/dashbtc/trades/GET.mock b/mocks/api/v2/dena/public/markets/dashbtc/trades/GET.mock new file mode 100644 index 0000000..2aec7f4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/trades/GET.mock @@ -0,0 +1,109 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":492221222,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321400,"taker_type":"buy"}, + {"id":492221221,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321399,"taker_type":"buy"}, + {"id":492221220,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321398,"taker_type":"buy"}, + {"id":492221219,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321397,"taker_type":"buy"}, + {"id":492221213,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221212,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221214,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221210,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221215,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221194,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221205,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221206,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221217,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221211,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221208,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221216,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221202,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221207,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221201,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221204,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221200,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221209,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221193,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221218,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221195,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221187,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221198,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221197,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221203,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221190,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221199,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221192,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221196,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221191,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221186,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221188,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221183,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221184,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221189,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221185,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221181,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221180,"price":2.418e-05,"amount":10.894185,"total":0.0002634213933,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221182,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221179,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221178,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221177,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221176,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221173,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221175,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221174,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221171,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221172,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205170,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205169,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205164,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205168,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205162,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205167,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205166,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205163,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205165,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205161,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205160,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205156,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205159,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205152,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205149,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205158,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205157,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205155,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205151,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205150,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205154,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205153,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205143,"price":2.423e-05,"amount":516.66323965,"total":0.0125187502967195,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205136,"price":2.423e-05,"amount":27.92569329,"total":0.0006766395484167,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205097,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205140,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205133,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205112,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205109,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205131,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205122,"price":2.423e-05,"amount":27.96070701,"total":0.0006774879308523,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205120,"price":2.423e-05,"amount":27.96070701,"total":0.0006774879308523,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205124,"price":2.423e-05,"amount":27.96070701,"total":0.0006774879308523,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205139,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205114,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205106,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205115,"price":2.422e-05,"amount":27.94890792,"total":0.0006769225498224,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205104,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205098,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205142,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205107,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205135,"price":2.423e-05,"amount":27.92569329,"total":0.0006766395484167,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205138,"price":2.423e-05,"amount":27.92569329,"total":0.0006766395484167,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205103,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205099,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205137,"price":2.423e-05,"amount":27.92569329,"total":0.0006766395484167,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205100,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205128,"price":2.423e-05,"amount":27.94405457,"total":0.0006770844422311,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/public/markets/dashbtc/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/dashbtc/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/ethbtc/depth/GET.mock b/mocks/api/v2/dena/public/markets/ethbtc/depth/GET.mock new file mode 100644 index 0000000..d814885 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/depth/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/ethbtc/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/ethbtc/depth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/depth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/ethbtc/depth/script.js b/mocks/api/v2/dena/public/markets/ethbtc/depth/script.js new file mode 100644 index 0000000..68905d6 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/depth/script.js @@ -0,0 +1,26 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "timestamp": ts, + "asks": + [ + ["0.99","1"], + ["0.98","20"], + ["0.96","1"], + ["0.80","1"], + ["0.75","1"], + ["0.70","1"], + ["0.60","0.1"] + ], + "bids": + [ + ["0.50","0.041"], + ["0.49","0.5"], + ["0.48","0.2"], + ["0.47","0.1"], + ["0.30","10"], + ["0.28","2"], + ["0.27","5"], + ["0.26","25"] + ] +} diff --git a/mocks/api/v2/dena/public/markets/ethbtc/k-line/GET.mock b/mocks/api/v2/dena/public/markets/ethbtc/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/ethbtc/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/ethbtc/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/ethbtc/trades/GET.mock b/mocks/api/v2/dena/public/markets/ethbtc/trades/GET.mock new file mode 100644 index 0000000..6576361 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/trades/GET.mock @@ -0,0 +1,109 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":492199108,"price":0.033987,"amount":2.07,"total":0.07035309,"market":"ethbtc","created_at":1597320544,"taker_type":"sell"}, + {"id":492199107,"price":0.033978,"amount":0.1145387,"total":0.0038917959486,"market":"ethbtc","created_at":1597320543,"taker_type":"sell"}, + {"id":492199106,"price":0.03398,"amount":0.029,"total":0.00098542,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199104,"price":0.03398,"amount":0.029,"total":0.00098542,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199105,"price":0.03398,"amount":0.029,"total":0.00098542,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199103,"price":0.03398,"amount":0.029,"total":0.00098542,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199102,"price":0.03398,"amount":0.0291,"total":0.000988818,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199101,"price":0.033987,"amount":0.13247508,"total":0.00450243054396,"market":"ethbtc","created_at":1597320540,"taker_type":"sell"}, + {"id":492199100,"price":0.033995,"amount":0.17065299,"total":0.00580134839505,"market":"ethbtc","created_at":1597320539,"taker_type":"sell"}, + {"id":492199097,"price":0.034005,"amount":0.1145387,"total":0.0038948884935,"market":"ethbtc","created_at":1597320437,"taker_type":"sell"}, + {"id":492199096,"price":0.034014,"amount":0.13247508,"total":0.00450600737112,"market":"ethbtc","created_at":1597320425,"taker_type":"sell"}, + {"id":492199093,"price":0.034025,"amount":0.029,"total":0.000986725,"market":"ethbtc","created_at":1597320417,"taker_type":"sell"}, + {"id":492199095,"price":0.034025,"amount":0.029,"total":0.000986725,"market":"ethbtc","created_at":1597320417,"taker_type":"sell"}, + {"id":492199094,"price":0.034025,"amount":0.029,"total":0.000986725,"market":"ethbtc","created_at":1597320417,"taker_type":"sell"}, + {"id":492199092,"price":0.034032,"amount":0.1145387,"total":0.0038979810384,"market":"ethbtc","created_at":1597320416,"taker_type":"sell"}, + {"id":492199088,"price":0.034036,"amount":0.029,"total":0.000987044,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199091,"price":0.034036,"amount":0.029,"total":0.000987044,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199090,"price":0.034036,"amount":0.029,"total":0.000987044,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199089,"price":0.034036,"amount":0.029,"total":0.000987044,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199087,"price":0.034036,"amount":0.0291,"total":0.0009904476,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199086,"price":0.034041,"amount":0.17042238,"total":0.00580134823758,"market":"ethbtc","created_at":1597320414,"taker_type":"sell"}, + {"id":492199085,"price":0.034041,"amount":0.13247508,"total":0.00450958419828,"market":"ethbtc","created_at":1597320414,"taker_type":"sell"}, + {"id":492199078,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199079,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199083,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199075,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199070,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199065,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199072,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199067,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199062,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199061,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199082,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199076,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199074,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199084,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199080,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199081,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199068,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199077,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199069,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199073,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199071,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199066,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199064,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199063,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199059,"price":0.03407,"amount":0.029,"total":0.00098803,"market":"ethbtc","created_at":1597320368,"taker_type":"buy"}, + {"id":492199057,"price":0.034066,"amount":0.15,"total":0.0051099,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199055,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199050,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199043,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199052,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199047,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199039,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199040,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199044,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199030,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199056,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199036,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199049,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199054,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199038,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199042,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199029,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199041,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199048,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199045,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199024,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199053,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199033,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199051,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199025,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199022,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199034,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199018,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199046,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199035,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199020,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199037,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199031,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199028,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199032,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199021,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199026,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199015,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199027,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199023,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199019,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199017,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199013,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199012,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199009,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199016,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492198986,"price":0.034067,"amount":0.029,"total":0.000987943,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199008,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199005,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199010,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199006,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492198997,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199014,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/public/markets/ethbtc/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/ethbtc/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/eurusd/depth/GET.mock b/mocks/api/v2/dena/public/markets/eurusd/depth/GET.mock new file mode 100644 index 0000000..9e92013 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/depth/GET.mock @@ -0,0 +1,31 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + + +{ + "timestamp": 1544783545, + "asks": [ + [ + "25.0", + "0.5" + ], + [ + "20.0", + "4.0" + ] + ], + "bids": [ + [ + "15.0", + "2.0" + ], + [ + "10.0", + "1.0" + ] + ] +} diff --git a/mocks/api/v2/dena/public/markets/eurusd/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/eurusd/depth/OPTIONS.mock new file mode 100644 index 0000000..430bd07 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/depth/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/eurusd/k-line/GET.mock b/mocks/api/v2/dena/public/markets/eurusd/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/eurusd/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/eurusd/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/eurusd/trades/GET.mock b/mocks/api/v2/dena/public/markets/eurusd/trades/GET.mock new file mode 100644 index 0000000..a557865 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/trades/GET.mock @@ -0,0 +1,108 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[{"id":492040459,"price":1.31,"amount":394.61490657,"total":516.9455276067,"market":"eurusd","created_at":1597320614,"taker_type":"buy"}, +{"id":492040458,"price":1.3046,"amount":45.56013984,"total":59.437758435264,"market":"eurusd","created_at":1597320281,"taker_type":"sell"}, +{"id":492040456,"price":1.3046,"amount":1590.04462822,"total":2074.372221975812,"market":"eurusd","created_at":1597320281,"taker_type":"sell"}, +{"id":492040457,"price":1.3046,"amount":397.26727176,"total":518.274882738096,"market":"eurusd","created_at":1597320281,"taker_type":"sell"}, +{"id":492040454,"price":1.3218,"amount":393.9111523,"total":520.67176111014,"market":"eurusd","created_at":1597319868,"taker_type":"buy"}, +{"id":492040453,"price":1.3218,"amount":393.67620492,"total":520.361207663256,"market":"eurusd","created_at":1597319836,"taker_type":"buy"}, +{"id":492040451,"price":1.319,"amount":394.26696561,"total":520.03812763959,"market":"eurusd","created_at":1597319500,"taker_type":"buy"}, +{"id":492040450,"price":1.3189,"amount":392.47238776,"total":517.631832216664,"market":"eurusd","created_at":1597319407,"taker_type":"buy"}, +{"id":492040449,"price":1.3159,"amount":392.08566349,"total":515.945524586491,"market":"eurusd","created_at":1597319390,"taker_type":"buy"}, +{"id":492040448,"price":1.3159,"amount":392.86477063,"total":516.970751672017,"market":"eurusd","created_at":1597319214,"taker_type":"buy"}, +{"id":492040444,"price":1.3159,"amount":394.60232578,"total":519.257200493902,"market":"eurusd","created_at":1597317665,"taker_type":"buy"}, +{"id":492040443,"price":1.3159,"amount":393.66269374,"total":518.020738692466,"market":"eurusd","created_at":1597317662,"taker_type":"buy"}, +{"id":492040442,"price":1.3159,"amount":393.65057078,"total":518.004786089402,"market":"eurusd","created_at":1597317659,"taker_type":"buy"}, +{"id":492040441,"price":1.3159,"amount":393.61640645,"total":517.959829247555,"market":"eurusd","created_at":1597317656,"taker_type":"buy"}, +{"id":492040439,"price":1.3073,"amount":1000,"total":1307.3,"market":"eurusd","created_at":1597317513,"taker_type":"sell"}, +{"id":492040438,"price":1.315,"amount":394.67635325,"total":518.99940452375,"market":"eurusd","created_at":1597317224,"taker_type":"buy"}, +{"id":492040436,"price":1.2992,"amount":888,"total":1153.6896,"market":"eurusd","created_at":1597316844,"taker_type":"sell"}, +{"id":492040435,"price":1.2986,"amount":888,"total":1153.1568,"market":"eurusd","created_at":1597316766,"taker_type":"sell"}, +{"id":492040423,"price":1.3331,"amount":45.5845895,"total":60.76881626245,"market":"eurusd","created_at":1597312774,"taker_type":"buy"}, +{"id":492040424,"price":1.3348,"amount":1265.38331556,"total":1689.033649609488,"market":"eurusd","created_at":1597312774,"taker_type":"buy"}, +{"id":492040422,"price":1.333,"amount":1587.70656213,"total":2116.41284731929,"market":"eurusd","created_at":1597312774,"taker_type":"buy"}, +{"id":492040421,"price":1.333,"amount":396.92664053,"total":529.10321182649,"market":"eurusd","created_at":1597312774,"taker_type":"buy"}, +{"id":492040416,"price":1.2705,"amount":131.78210778,"total":167.42916793449,"market":"eurusd","created_at":1597310588,"taker_type":"sell"}, +{"id":492040415,"price":1.2706,"amount":64.66011722,"total":82.157144939732,"market":"eurusd","created_at":1597310588,"taker_type":"sell"}, +{"id":492040414,"price":1.2761,"amount":9.299e-05,"total":0.000118664539,"market":"eurusd","created_at":1597310377,"taker_type":"sell"}, +{"id":492040413,"price":1.2761,"amount":64.31238919,"total":82.069039845359,"market":"eurusd","created_at":1597310377,"taker_type":"sell"}, +{"id":492040412,"price":1.2816,"amount":63.96484714,"total":81.977348094624,"market":"eurusd","created_at":1597310159,"taker_type":"sell"}, +{"id":492040410,"price":1.2871,"amount":63.61721211,"total":81.881713706781,"market":"eurusd","created_at":1597310048,"taker_type":"sell"}, +{"id":492040409,"price":1.2926,"amount":15.26957707,"total":19.737455320682,"market":"eurusd","created_at":1597310048,"taker_type":"sell"}, +{"id":492040407,"price":1.3,"amount":94.33,"total":122.629,"market":"eurusd","created_at":1597310007,"taker_type":"sell"}, +{"id":492040408,"price":1.3,"amount":45.63021972,"total":59.319285636,"market":"eurusd","created_at":1597310007,"taker_type":"sell"}, +{"id":492040404,"price":1.2926,"amount":48,"total":62.0448,"market":"eurusd","created_at":1597308179,"taker_type":"sell"}, +{"id":492040402,"price":1.2981,"amount":62.92194203,"total":81.678972949143,"market":"eurusd","created_at":1597308162,"taker_type":"sell"}, +{"id":492040401,"price":1.3037,"amount":62.57430699,"total":81.578124022863,"market":"eurusd","created_at":1597308120,"taker_type":"sell"}, +{"id":492040400,"price":1.3092,"amount":62.22667195,"total":81.46715891694,"market":"eurusd","created_at":1597308109,"taker_type":"sell"}, +{"id":492040399,"price":1.3147,"amount":61.87903691,"total":81.352369825577,"market":"eurusd","created_at":1597307995,"taker_type":"sell"}, +{"id":492040398,"price":1.3202,"amount":61.53140187,"total":81.233756748774,"market":"eurusd","created_at":1597307994,"taker_type":"sell"}, +{"id":492040396,"price":1.3257,"amount":61.18376683,"total":81.111319686531,"market":"eurusd","created_at":1597307260,"taker_type":"sell"}, +{"id":492040395,"price":1.3312,"amount":60.8361318,"total":80.98505865216,"market":"eurusd","created_at":1597307260,"taker_type":"sell"}, +{"id":492040397,"price":1.3245,"amount":376.98010137,"total":499.310144264565,"market":"eurusd","created_at":1597307260,"taker_type":"sell"}, +{"id":492040392,"price":1.3367,"amount":60.48849676,"total":80.854973619092,"market":"eurusd","created_at":1597306106,"taker_type":"sell"}, +{"id":492040389,"price":1.349,"amount":293.7363074,"total":396.2502786826,"market":"eurusd","created_at":1597306102,"taker_type":"sell"}, +{"id":492040390,"price":1.3478,"amount":59.79322668,"total":80.589310919304,"market":"eurusd","created_at":1597306102,"taker_type":"sell"}, +{"id":492040391,"price":1.3422,"amount":60.14086172,"total":80.721064600584,"market":"eurusd","created_at":1597306102,"taker_type":"sell"}, +{"id":492040388,"price":1.349,"amount":212.77469259,"total":287.03306030391,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040387,"price":1.3533,"amount":59.44559164,"total":80.447719166412,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040386,"price":1.3541,"amount":0.08562665,"total":0.115947046765,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040385,"price":1.3588,"amount":59.0979566,"total":80.30230342808,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040384,"price":1.3643,"amount":58.75032156,"total":80.153063704308,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040383,"price":1.3698,"amount":5.42648252,"total":7.433195755896,"market":"eurusd","created_at":1597306052,"taker_type":"sell"}, +{"id":492040381,"price":1.3698,"amount":48.80115,"total":66.84781527,"market":"eurusd","created_at":1597305097,"taker_type":"sell"}, +{"id":492040379,"price":1.3698,"amount":50.769946,"total":69.5446720308,"market":"eurusd","created_at":1597305072,"taker_type":"sell"}, +{"id":492040380,"price":1.3698,"amount":4.175054,"total":5.7189889692,"market":"eurusd","created_at":1597305072,"taker_type":"sell"}, +{"id":492040376,"price":1.3735,"amount":369.89048027,"total":508.044574650845,"market":"eurusd","created_at":1597304425,"taker_type":"sell"}, +{"id":492040377,"price":1.3735,"amount":29.50951973,"total":40.531325349155,"market":"eurusd","created_at":1597304425,"taker_type":"sell"}, +{"id":492040373,"price":1.39,"amount":40,"total":55.6,"market":"eurusd","created_at":1597304276,"taker_type":"buy"}, +{"id":492040374,"price":1.3733,"amount":998,"total":1370.5534,"market":"eurusd","created_at":1597304276,"taker_type":"sell"}, +{"id":492040372,"price":1.39,"amount":373.01198274,"total":518.4866560086,"market":"eurusd","created_at":1597304117,"taker_type":"buy"}, +{"id":492040371,"price":1.39,"amount":374.14040366,"total":520.0551610874,"market":"eurusd","created_at":1597304114,"taker_type":"buy"}, +{"id":492040370,"price":1.39,"amount":374.27485967,"total":520.2420549413,"market":"eurusd","created_at":1597304110,"taker_type":"buy"}, +{"id":492040369,"price":1.39,"amount":374.16821212,"total":520.0938148468,"market":"eurusd","created_at":1597304107,"taker_type":"buy"}, +{"id":492040368,"price":1.39,"amount":375.11608549,"total":521.4113588311,"market":"eurusd","created_at":1597304076,"taker_type":"buy"}, +{"id":492040367,"price":1.39,"amount":375.39863172,"total":521.8040980908,"market":"eurusd","created_at":1597304071,"taker_type":"buy"}, +{"id":492040365,"price":1.39,"amount":40,"total":55.6,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040364,"price":1.3873,"amount":92.81332885,"total":128.759931113605,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040366,"price":1.39,"amount":1049.49093232,"total":1458.7923959248,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040363,"price":1.3864,"amount":49.901219,"total":69.1830500216,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040362,"price":1.385,"amount":264.331167,"total":366.098666295,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040361,"price":1.3843,"amount":7.46335283,"total":10.331519322569,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040360,"price":1.3842,"amount":196.832013,"total":272.4548723946,"market":"eurusd","created_at":1597303823,"taker_type":"buy"}, +{"id":492040357,"price":1.3843,"amount":50,"total":69.215,"market":"eurusd","created_at":1597302338,"taker_type":"buy"}, +{"id":492040355,"price":1.3843,"amount":35.34997602,"total":48.934971804486,"market":"eurusd","created_at":1597302321,"taker_type":"buy"}, +{"id":492040354,"price":1.3812,"amount":14.65002398,"total":20.234613121176,"market":"eurusd","created_at":1597302321,"taker_type":"buy"}, +{"id":492040353,"price":1.3812,"amount":50,"total":69.06,"market":"eurusd","created_at":1597302306,"taker_type":"buy"}, +{"id":492040352,"price":1.3812,"amount":28.16330487,"total":38.899156686444,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040350,"price":1.3782,"amount":92.81332885,"total":127.91532982107,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040351,"price":1.38,"amount":200,"total":276,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040349,"price":1.3752,"amount":56.89057568,"total":78.235919675136,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040348,"price":1.3752,"amount":35.92275317,"total":49.400970159384,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040347,"price":1.3722,"amount":14.07724683,"total":19.316798100126,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040346,"price":1.3722,"amount":78.73608202,"total":108.041651747844,"market":"eurusd","created_at":1597302215,"taker_type":"buy"}, +{"id":492040345,"price":1.37,"amount":299.61828748,"total":410.4770538476,"market":"eurusd","created_at":1597302215,"taker_type":"buy"}, +{"id":492040342,"price":1.37,"amount":379.74245203,"total":520.2471592811,"market":"eurusd","created_at":1597300997,"taker_type":"buy"}, +{"id":492040341,"price":1.37,"amount":379.42143271,"total":519.8073628127,"market":"eurusd","created_at":1597300990,"taker_type":"buy"}, +{"id":492040340,"price":1.37,"amount":374.51850572,"total":513.0903528364,"market":"eurusd","created_at":1597300987,"taker_type":"buy"}, +{"id":492040339,"price":1.37,"amount":379.45621859,"total":519.8550194683,"market":"eurusd","created_at":1597300982,"taker_type":"buy"}, +{"id":492040338,"price":1.37,"amount":379.50128177,"total":519.9167560249,"market":"eurusd","created_at":1597300965,"taker_type":"buy"}, +{"id":492040337,"price":1.37,"amount":379.41986245,"total":519.8052115565,"market":"eurusd","created_at":1597300962,"taker_type":"buy"}, +{"id":492040336,"price":1.37,"amount":375.37418405,"total":514.2626321485,"market":"eurusd","created_at":1597300898,"taker_type":"buy"}, +{"id":492040335,"price":1.37,"amount":52.9477752,"total":72.538452024,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040333,"price":1.3662,"amount":92.81332885,"total":126.80156987487,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040331,"price":1.3602,"amount":49.26042042,"total":67.004023855284,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040334,"price":1.3692,"amount":92.81332885,"total":127.08000986142,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040332,"price":1.3632,"amount":92.81332885,"total":126.52312988832,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040329,"price":1.3571,"amount":4.54309157,"total":6.165429569647,"market":"eurusd","created_at":1597300610,"taker_type":"buy"}, +{"id":492040330,"price":1.3602,"amount":43.55290843,"total":59.240666046486,"market":"eurusd","created_at":1597300610,"taker_type":"buy"}, +{"id":492040328,"price":1.3571,"amount":41.6960092,"total":56.58565408532,"market":"eurusd","created_at":1597300581,"taker_type":"buy"}, +{"id":492040327,"price":1.3571,"amount":46.42432809,"total":63.002455650939,"market":"eurusd","created_at":1597300573,"taker_type":"buy"}, +{"id":492040326,"price":1.3571,"amount":0.14989999,"total":0.203429276429,"market":"eurusd","created_at":1597300535,"taker_type":"buy"}, +{"id":492040325,"price":1.3562,"amount":49.85010001,"total":67.606705633562,"market":"eurusd","created_at":1597300535,"taker_type":"buy"} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/public/markets/eurusd/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/eurusd/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/k-line.js b/mocks/api/v2/dena/public/markets/k-line.js new file mode 100644 index 0000000..3e6daf0 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/k-line.js @@ -0,0 +1,50 @@ +const queryIndex = request.url.indexOf('?') +let k = []; + +const parseQuery = (url) => { + let vars = {}; + url.substring(queryIndex + 1).split("&").forEach((chunk) => { + const arr = chunk.split("="); + vars[arr[0]] = arr[1]; + }); + return vars; +} + +// Those functions are the same used in k-line mocked ranger event +const minDay = 6; +const maxDay = 10; +const fakePeriod = 86400; + +const timeToPrice = (time) => { + return minDay + (maxDay - minDay) / 2 * (1 + Math.cos((time / fakePeriod) * 2 * Math.PI)); +} +const timeToVolume = (time, periodInSeconds) => { + return maxDay * 10 / 2 * (1 + Math.cos((time / fakePeriod) * 2 * Math.PI)); +}; + +const kLine = (time, period) => { + const periodInSeconds = parseInt(period * 60); + time = parseInt(time / periodInSeconds) * periodInSeconds; + const open = timeToPrice(time); + const close = timeToPrice(time + periodInSeconds); + const delta = (maxDay - minDay) / fakePeriod * periodInSeconds * 2; + const high = Math.max(open, close) + delta; + const low = Math.min(open, close) - delta; + const volume = timeToVolume(time, periodInSeconds); + return [time, open, high, low, close, volume] +} + +if (queryIndex != -1) { + const vars = parseQuery(request.url); + const period = parseInt(vars.period); + const time_to = parseInt(vars.time_to); + const time_from = parseInt(vars.time_from); + let time = time_from; + + while (time < time_to) { + k.push(kLine(time, period)); + time += period * 60; + } +} + +module.exports = k; diff --git a/mocks/api/v2/dena/public/markets/tickers/GET.mock b/mocks/api/v2/dena/public/markets/tickers/GET.mock new file mode 100644 index 0000000..d814885 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/tickers/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/tickers/OPTIONS.mock b/mocks/api/v2/dena/public/markets/tickers/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/tickers/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/tickers/script.js b/mocks/api/v2/dena/public/markets/tickers/script.js new file mode 100644 index 0000000..07d3781 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/tickers/script.js @@ -0,0 +1,172 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "btczar": { + "at": ts, + "ticker": { + "amount": "60.0", + "buy": "1200.0", + "sell": "1300.0", + "low": "1150.0", + "high": "1350.0", + "last": "1250.0", + "volume": "120.0", + "open": 1251.0, + "price_change_percent": "+0.08%" + } + }, + "bchbtc": { + "at": ts, + "ticker": { + "amount": "8.0", + "buy": "120.0", + "sell": "130.0", + "low": "115.0", + "high": "135.0", + "last": "125.0", + "volume": "12.0", + "open": 123.2, + "price_change_percent": "-1.44%" + } + }, + "ethbtc": { + "at": ts, + "ticker": { + "amount": "124.021", + "buy": "0.240", + "sell": "0.250", + "low": "0.238", + "high": "0.253", + "last": "0.245", + "volume": "200.0", + "open": 0.247, + "price_change_percent": "+0.81%" + } + }, + "dashbtc": { + "at": ts, + "ticker": { + "amount": "23.0", + "buy": "1.20", + "sell": "1.30", + "low": "1.15", + "high": "1.35", + "last": "1.250", + "volume": "50.0", + "open": 1.250, + "price_change_percent": "+0.00%" + } + }, + "ltcbtc": { + "at": ts, + "ticker": { + "amount": "5.0", + "buy": "100.0", + "sell": "110.0", + "low": "99.0", + "high": "150.0", + "last": "105.0", + "volume": "10.0", + "open": 106.0, + "price_change_percent": "+0.95%" + } + }, + "xrpbtc": { + "at": ts, + "ticker": { + "amount": "12.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 250.3, + "price_change_percent": "+0.12%" + } + }, + "xrpzar": { + "at": ts, + "ticker": { + "amount": "11.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 251.2, + "price_change_percent": "+0.48%" + } + }, + "ltczar": { + "at": ts, + "ticker": { + "amount": "13.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 248.0, + "price_change_percent": "-0.80%" + } + }, + "eurusd": { + "at": ts, + "ticker": { + "amount": "9.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 250.1, + "price_change_percent": "+0.04%" + } + }, + "ethzar": { + "at": ts, + "ticker": { + "amount": "8.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 235.4, + "price_change_percent": "-5.84%" + } + }, + "dashzar": { + "at": ts, + "ticker": { + "amount": "9.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 252.0, + "price_change_percent": "+0.80%" + } + }, + "btczar": { + "at": ts, + "ticker": { + "amount": "5.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 266.1, + "price_change_percent": "+6.44%" + } + } +} diff --git a/mocks/api/v2/dena/public/member-levels/GET.mock b/mocks/api/v2/dena/public/member-levels/GET.mock new file mode 100644 index 0000000..862b1ff --- /dev/null +++ b/mocks/api/v2/dena/public/member-levels/GET.mock @@ -0,0 +1,18 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "deposit": { + "minimum_level": 3 + }, + "withdraw": { + "minimum_level": 3 + }, + "trading": { + "minimum_level": 3 + } +} diff --git a/mocks/api/v2/dena/public/member-levels/OPTIONS.mock b/mocks/api/v2/dena/public/member-levels/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/member-levels/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/swagger/GET.mock b/mocks/api/v2/dena/swagger/GET.mock new file mode 100644 index 0000000..685d1fd --- /dev/null +++ b/mocks/api/v2/dena/swagger/GET.mock @@ -0,0 +1,3303 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "info": { + "title": "dena User API v2", + "description": "API for Dena application.", + "contact": { + "name": "Fibitex", + "email": "info@Fibitex.com", + "url": "https://www.Fibitex.com" + }, + "version": "2.6.0" + }, + "swagger": "2.0", + "produces": [ + "application/json" + ], + "securityDefinitions": { + "Bearer": { + "type": "apiKey", + "name": "JWT", + "in": "header" + } + }, + "host": "localhost", + "basePath": "/api/v2/dena", + "tags": [ + { + "name": "api", + "description": "Operations about apis" + } + ], + "paths": { + "/api/v2/dena/public/withdraw_limits": { + "get": { + "description": "Returns withdraw limits table as paginated collection", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "group", + "description": "Member group for define withdraw limits.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "kyc_level", + "description": "KYC level for define withdraw limits.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "ordering", + "description": "If set, returned values will be sorted in specific order, defaults to 'asc'.", + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "Name of the field, which result will be ordered by.", + "type": "string", + "default": "id", + "required": false + } + ], + "responses": { + "200": { + "description": "Returns withdraw limits table as paginated collection", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/WithdrawLimit" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicWithdrawLimits" + } + }, + "/api/v2/dena/public/webhooks/{event}": { + "post": { + "description": "Bitgo Webhook", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "event", + "description": "Name of event can be deposit or withdraw", + "type": "string", + "enum": [ + "deposit", + "withdraw" + ], + "required": true + }, + { + "in": "formData", + "name": "type", + "description": "Type of event.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "hash", + "description": "Address txid.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "transfer", + "description": "Transfer id.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "coin", + "description": "Currency code.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "wallet", + "description": "Wallet id.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "address", + "description": "User Address.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "walletId", + "description": "Wallet id.", + "type": "string", + "required": true + } + ], + "responses": { + "201": { + "description": "Bitgo Webhook" + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaPublicWebhooksEvent" + } + }, + "/api/v2/dena/public/trading_fees": { + "get": { + "description": "Returns trading_fees table as paginated collection", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "group", + "description": "Member group for define maker/taker fee.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "market_id", + "description": "Market id for define maker/taker fee.", + "type": "string", + "enum": [ + "ttkkrw", + "hsskrw", + "btcusd", + "wmskrw", + "dashkrw", + "usdkrw", + "algobtc", + "algousd", + "algokrw", + "xxxxusd", + "xxxxbtc", + "yunakrw", + "teekrw", + "teqkrw", + "apibtc", + "opsbtc", + "terkrw", + "btgbtc", + "apikrw", + "apiusd", + "btgkrw", + "opsusd", + "dashbtc", + "opskrw", + "btgdash", + "btckrw", + "ethkrw", + "ethbtc", + "ethusd", + "xrpkrw", + "xrpbtc", + "usdtkrw", + "xrpusd", + "usdtusd", + "ringxkrw", + "ringxusd", + "bchkrw", + "bchbtc", + "bchusd", + "eoskrw", + "eosbtc", + "eosusd", + "niaxkrw", + "linkkrw", + "ltckrw", + "ltcbtc", + "ltcusd", + "xlmkrw", + "xlmbtc", + "xlmusd", + "mkrkrw", + "daikrw", + "lendkrw", + "balkrw", + "pntkrw", + "volkrw", + "tetkrw", + "unikrw", + "t0krw", + "mtskrw", + "t1krw", + "t2krw", + "t3krw", + "t4krw", + "t5krw", + "t6krw", + "t7krw", + "t8krw", + "t9krw", + "any" + ], + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "ordering", + "description": "If set, returned values will be sorted in specific order, defaults to 'asc'.", + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "Name of the field, which result will be ordered by.", + "type": "string", + "default": "id", + "required": false + } + ], + "responses": { + "200": { + "description": "Returns trading_fees table as paginated collection", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/TradingFee" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicTradingFees" + } + }, + "/api/v2/dena/public/health/ready": { + "get": { + "description": "Get application readiness status", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get application readiness status" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicHealthReady" + } + }, + "/api/v2/dena/public/health/alive": { + "get": { + "description": "Get application liveness status", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get application liveness status" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicHealthAlive" + } + }, + "/api/v2/dena/public/version": { + "get": { + "description": "Get running Dena version and build details.", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get running Dena version and build details." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicVersion" + } + }, + "/api/v2/dena/public/timestamp": { + "get": { + "description": "Get server current time, in seconds since Unix epoch.", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get server current time, in seconds since Unix epoch." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicTimestamp" + } + }, + "/api/v2/dena/public/member-levels": { + "get": { + "description": "Returns hash of minimum levels and the privileges they provide.", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Returns hash of minimum levels and the privileges they provide." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMemberLevels" + } + }, + "/api/v2/dena/public/markets/{market}/tickers": { + "get": { + "description": "Get ticker of specific market.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + } + ], + "responses": { + "200": { + "description": "Get ticker of specific market.", + "schema": { + "$ref": "#/definitions/Ticker" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketTickers" + } + }, + "/api/v2/dena/public/markets/tickers": { + "get": { + "description": "Get ticker of all markets (For response doc see /:market/tickers/ response).", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get ticker of all markets (For response doc see /:market/tickers/ response).", + "schema": { + "$ref": "#/definitions/Ticker" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsTickers" + } + }, + "/api/v2/dena/public/markets/{market}/k-line": { + "get": { + "description": "Get OHLC(k line) of specific market.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "query", + "name": "period", + "description": "Time period of K line, default to 1. You can choose between 1, 5, 15, 30, 60, 120, 240, 360, 720, 1440, 4320, 10080", + "type": "integer", + "format": "int32", + "default": 1, + "enum": [ + 1, + 5, + 15, + 30, + 60, + 120, + 240, + 360, + 720, + 1440, + 4320, + 10080 + ], + "required": false + }, + { + "in": "query", + "name": "time_from", + "description": "An integer represents the seconds elapsed since Unix epoch. If set, only k-line data after that time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "time_to", + "description": "An integer represents the seconds elapsed since Unix epoch. If set, only k-line data till that time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned data points default to 30. Ignored if time_from and time_to are given.", + "type": "integer", + "format": "int32", + "default": 30, + "minimum": 1, + "maximum": 10000, + "required": false + } + ], + "responses": { + "200": { + "description": "Get OHLC(k line) of specific market." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketKLine" + } + }, + "/api/v2/dena/public/markets/{market}/depth": { + "get": { + "description": "Get depth or specified market. Both asks and bids are sorted from highest price to lowest.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned price levels. Default to 300.", + "type": "integer", + "format": "int32", + "default": 300, + "minimum": 1, + "maximum": 1000, + "required": false + } + ], + "responses": { + "200": { + "description": "Get depth or specified market. Both asks and bids are sorted from highest price to lowest." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketDepth" + } + }, + "/api/v2/dena/public/markets/{market}/trades": { + "get": { + "description": "Get recent trades on market, each trade is included only once. Trades are sorted in reverse creation order.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned trades. Default to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "timestamp", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only trades executed before the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "If set, returned trades will be sorted in specific order, default to 'desc'.", + "type": "string", + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Get recent trades on market, each trade is included only once. Trades are sorted in reverse creation order.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Trade" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketTrades" + } + }, + "/api/v2/dena/public/markets/{market}/order-book": { + "get": { + "description": "Get the order book of specified market.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "query", + "name": "asks_limit", + "description": "Limit the number of returned sell orders. Default to 20.", + "type": "integer", + "format": "int32", + "default": 20, + "minimum": 1, + "maximum": 200, + "required": false + }, + { + "in": "query", + "name": "bids_limit", + "description": "Limit the number of returned buy orders. Default to 20.", + "type": "integer", + "format": "int32", + "default": 20, + "minimum": 1, + "maximum": 200, + "required": false + } + ], + "responses": { + "200": { + "description": "Get the order book of specified market.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/OrderBook" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketOrderBook" + } + }, + "/api/v2/dena/public/markets": { + "get": { + "description": "Get all available markets.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "ordering", + "description": "If set, returned values will be sorted in specific order, defaults to 'asc'.", + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "Name of the field, which result will be ordered by.", + "type": "string", + "default": "position", + "enum": [ + "id", + "position" + ], + "required": false + }, + { + "in": "query", + "name": "base_unit", + "description": "Strict filter for base unit", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "quote_unit", + "description": "Strict filter for quote unit", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search", + "description": "", + "type": "json", + "required": false + }, + { + "in": "query", + "name": "search[base_code]", + "description": "Search base currency code using LIKE", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[quote_code]", + "description": "Search qoute currency code using LIKE", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[base_name]", + "description": "Search base currency name using LIKE", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[quote_name]", + "description": "Search quote currency name using LIKE", + "type": "string", + "required": false + } + ], + "responses": { + "200": { + "description": "Get all available markets.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Market" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarkets" + } + }, + "/api/v2/dena/public/currencies": { + "get": { + "description": "Get list of currencies", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "type", + "description": "Currency type", + "type": "string", + "enum": [ + "fiat", + "coin" + ], + "required": false + }, + { + "in": "query", + "name": "search", + "description": "", + "type": "json", + "required": false + }, + { + "in": "query", + "name": "search[code]", + "description": "Search by currency code using SQL LIKE", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[name]", + "description": "Search by currency name using SQL LIKE", + "type": "string", + "required": false + } + ], + "responses": { + "200": { + "description": "Get list of currencies", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Currency" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicCurrencies" + } + }, + "/api/v2/dena/public/currencies/{id}": { + "get": { + "description": "Get a currency", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": true + } + ], + "responses": { + "200": { + "description": "Get a currency", + "schema": { + "$ref": "#/definitions/Currency" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicCurrenciesId" + } + }, + "/api/v2/dena/account/stats/pnl": { + "get": { + "description": "Get assets pnl calculated into one currency", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "pnl_currency", + "description": "Currency code in which the PnL is calculated", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Get assets pnl calculated into one currency" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountStatsPnl" + } + }, + "/api/v2/dena/account/transactions": { + "get": { + "description": "Get your transactions history.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "currency", + "description": "Currency code", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "Sorting order", + "type": "string", + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "time_from", + "description": "An integer represents the seconds elapsed since Unix epoch.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "time_to", + "description": "An integer represents the seconds elapsed since Unix epoch.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "deposit_state", + "description": "Filter deposits by states.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "withdraw_state", + "description": "Filter withdraws by states.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "txid", + "description": "Transaction id.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned transactions. Default to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + } + ], + "responses": { + "200": { + "description": "Get your transactions history." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountTransactions" + } + }, + "/api/v2/dena/account/withdraws": { + "post": { + "description": "Creates new withdrawal to active beneficiary.", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "formData", + "name": "otp", + "description": "OTP to perform action", + "type": "integer", + "format": "int32", + "required": true + }, + { + "in": "formData", + "name": "beneficiary_id", + "description": "ID of Active Beneficiary belonging to user.", + "type": "integer", + "format": "int32", + "required": true + }, + { + "in": "formData", + "name": "currency", + "description": "The currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": true + }, + { + "in": "formData", + "name": "amount", + "description": "The amount to withdraw.", + "type": "number", + "format": "double", + "required": true + }, + { + "in": "formData", + "name": "note", + "description": "Optional user metadata to be applied to the transaction. Used to tag transactions with memorable comments.", + "type": "string", + "required": false + } + ], + "responses": { + "201": { + "description": "Creates new withdrawal to active beneficiary." + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaAccountWithdraws" + }, + "get": { + "description": "List your withdraws as paginated collection.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "currency", + "description": "Currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Number of withdraws per page (defaults to 100, maximum is 100).", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 100, + "required": false + }, + { + "in": "query", + "name": "state", + "description": "Filter withdrawals by states.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "rid", + "description": "Wallet address on the Blockchain.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Page number (defaults to 1).", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + } + ], + "responses": { + "200": { + "description": "List your withdraws as paginated collection.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Withdraw" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountWithdraws" + } + }, + "/api/v2/dena/account/withdraws/sums": { + "get": { + "description": "Returns withdrawal sums for last 4 hours and 1 month", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Returns withdrawal sums for last 4 hours and 1 month" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountWithdrawsSums" + } + }, + "/api/v2/dena/account/beneficiaries/{id}": { + "delete": { + "description": "Delete beneficiary", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Beneficiary Identifier in Database", + "type": "integer", + "format": "int32", + "required": true + } + ], + "responses": { + "204": { + "description": "Delete beneficiary" + } + }, + "tags": [ + "api" + ], + "operationId": "deleteApiV2DenaAccountBeneficiariesId" + }, + "get": { + "description": "Get beneficiary by ID", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Beneficiary Identifier in Database", + "type": "integer", + "format": "int32", + "required": true + } + ], + "responses": { + "200": { + "description": "Get beneficiary by ID", + "schema": { + "$ref": "#/definitions/Beneficiary" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountBeneficiariesId" + } + }, + "/api/v2/dena/account/beneficiaries/{id}/activate": { + "patch": { + "description": "Activates beneficiary with pin", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Beneficiary Identifier in Database", + "type": "integer", + "format": "int32", + "required": true + }, + { + "in": "formData", + "name": "pin", + "description": "Pin code for beneficiary activation", + "type": "integer", + "format": "int32", + "required": true + } + ], + "responses": { + "200": { + "description": "Activates beneficiary with pin", + "schema": { + "$ref": "#/definitions/Beneficiary" + } + } + }, + "tags": [ + "api" + ], + "operationId": "patchApiV2DenaAccountBeneficiariesIdActivate" + } + }, + "/api/v2/dena/account/beneficiaries/{id}/resend_pin": { + "patch": { + "description": "Resend beneficiary pin", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Beneficiary Identifier in Database", + "type": "integer", + "format": "int32", + "required": true + } + ], + "responses": { + "200": { + "description": "Resend beneficiary pin" + } + }, + "tags": [ + "api" + ], + "operationId": "patchApiV2DenaAccountBeneficiariesIdResendPin" + } + }, + "/api/v2/dena/account/beneficiaries": { + "post": { + "description": "Create new beneficiary", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "formData", + "name": "currency", + "description": "Beneficiary currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": true + }, + { + "in": "formData", + "name": "name", + "description": "Human rememberable name which refer beneficiary.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "description", + "description": "Human rememberable name which refer beneficiary.", + "type": "string", + "required": false + }, + { + "in": "formData", + "name": "data", + "description": "Beneficiary data in JSON format", + "type": "json", + "required": true + } + ], + "responses": { + "201": { + "description": "Create new beneficiary", + "schema": { + "$ref": "#/definitions/Beneficiary" + } + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaAccountBeneficiaries" + }, + "get": { + "description": "Get list of user beneficiaries", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "currency", + "description": "Beneficiary currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + }, + { + "in": "query", + "name": "state", + "description": "Defines either beneficiary active - user can use it to withdraw moneyor pending - requires beneficiary activation with pin.", + "type": "string", + "enum": [ + "pending", + "active" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Get list of user beneficiaries", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Beneficiary" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountBeneficiaries" + } + }, + "/api/v2/dena/account/deposit_address/{currency}": { + "get": { + "description": "Returns deposit address for account you want to deposit to by currency. The address may be blank because address generation process is still in progress. If this case you should try again later.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "currency", + "description": "The account you want to deposit to.", + "type": "string", + "enum": [ + "btc", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": true + }, + { + "in": "query", + "name": "address_format", + "description": "Address format legacy/cash", + "type": "string", + "enum": [ + "legacy", + "cash" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Returns deposit address for account you want to deposit to by currency. The address may be blank because address generation process is still in progress. If this case you should try again later.", + "schema": { + "$ref": "#/definitions/Deposit" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountDepositAddressCurrency" + } + }, + "/api/v2/dena/account/deposits/{txid}": { + "get": { + "description": "Get details of specific deposit.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "txid", + "description": "Deposit transaction id", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Get details of specific deposit.", + "schema": { + "$ref": "#/definitions/Deposit" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountDepositsTxid" + } + }, + "/api/v2/dena/account/deposits": { + "get": { + "description": "Get your deposits history.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "currency", + "description": "Currency code", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + }, + { + "in": "query", + "name": "state", + "description": "Filter deposits by states.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "txid", + "description": "Deposit transaction id.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Number of deposits per page (defaults to 100, maximum is 100).", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 100, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Page number (defaults to 1).", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + } + ], + "responses": { + "200": { + "description": "Get your deposits history.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Deposit" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountDeposits" + } + }, + "/api/v2/dena/account/balances/{currency}": { + "get": { + "description": "Get user account by currency", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "currency", + "description": "The currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp" + ], + "required": true + } + ], + "responses": { + "200": { + "description": "Get user account by currency", + "schema": { + "$ref": "#/definitions/Account" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountBalancesCurrency" + } + }, + "/api/v2/dena/account/balances": { + "get": { + "description": "Get list of user accounts", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "nonzero", + "description": "Filter non zero balances.", + "type": "Boolean", + "required": false + }, + { + "in": "query", + "name": "search", + "description": "", + "type": "json", + "required": false + }, + { + "in": "query", + "name": "search[currency_code]", + "description": "", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[currency_name]", + "description": "", + "type": "string", + "required": false + } + ], + "responses": { + "200": { + "description": "Get list of user accounts", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Account" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountBalances" + } + }, + "/api/v2/dena/market/trades": { + "get": { + "description": "Get your executed trades. Trades are sorted in reverse creation order.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "market", + "description": "", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned trades. Default to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "time_from", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only trades executed after the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "time_to", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only trades executed before the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "If set, returned trades will be sorted in specific order, default to 'desc'.", + "type": "string", + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Get your executed trades. Trades are sorted in reverse creation order.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Trade" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaMarketTrades" + } + }, + "/api/v2/dena/market/orders/cancel": { + "post": { + "description": "Cancel all my orders.", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "formData", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": false + }, + { + "in": "formData", + "name": "side", + "description": "If present, only sell orders (asks) or buy orders (bids) will be canncelled.", + "type": "string", + "enum": [ + "sell", + "buy" + ], + "required": false + } + ], + "responses": { + "201": { + "description": "Cancel all my orders.", + "schema": { + "$ref": "#/definitions/Order" + } + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaMarketOrdersCancel" + } + }, + "/api/v2/dena/market/orders/{id}/cancel": { + "post": { + "description": "Cancel an order.", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "", + "type": "string", + "required": true + } + ], + "responses": { + "201": { + "description": "Cancel an order." + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaMarketOrdersIdCancel" + } + }, + "/api/v2/dena/market/orders": { + "post": { + "description": "Create a Sell/Buy order.", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "formData", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "formData", + "name": "side", + "description": "", + "type": "string", + "enum": [ + "sell", + "buy" + ], + "required": true + }, + { + "in": "formData", + "name": "volume", + "description": "", + "type": "number", + "format": "double", + "required": true + }, + { + "in": "formData", + "name": "ord_type", + "description": "", + "type": "string", + "default": "limit", + "enum": [ + "market", + "limit" + ], + "required": false + }, + { + "in": "formData", + "name": "price", + "description": "", + "type": "number", + "format": "double", + "required": true + } + ], + "responses": { + "201": { + "description": "Create a Sell/Buy order.", + "schema": { + "$ref": "#/definitions/Order" + } + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaMarketOrders" + }, + "get": { + "description": "Get your orders, result is paginated.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "market", + "description": "", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "base_unit", + "description": "", + "type": "string", + "enum": [ + "btc", + "mts", + "ttk", + "usdt", + "wms", + "xrp" + ], + "required": false + }, + { + "in": "query", + "name": "quote_unit", + "description": "", + "type": "string", + "enum": [ + "krw", + "krw", + "krw", + "krw", + "krw", + "krw" + ], + "required": false + }, + { + "in": "query", + "name": "state", + "description": "Filter order by state.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned orders, default to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 0, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "If set, returned orders will be sorted in specific order, default to \"desc\".", + "type": "string", + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "ord_type", + "description": "Filter order by ord_type.", + "type": "string", + "enum": [ + "market", + "limit" + ], + "required": false + }, + { + "in": "query", + "name": "type", + "description": "Filter order by type.", + "type": "string", + "enum": [ + "buy", + "sell" + ], + "required": false + }, + { + "in": "query", + "name": "time_from", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only orders created after the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "time_to", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only orders created before the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + } + ], + "responses": { + "200": { + "description": "Get your orders, result is paginated.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Order" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaMarketOrders" + } + }, + "/api/v2/dena/market/orders/{id}": { + "get": { + "description": "Get information of specified order.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Get information of specified order.", + "schema": { + "$ref": "#/definitions/Order" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaMarketOrdersId" + } + }, + "/api/v2/dena/coinmarketcap/orderbook/{market_pair}": { + "get": { + "description": "Get depth or specified market", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market_pair", + "description": "A pair such as \"LTC_BTC\"", + "type": "string", + "required": true + }, + { + "in": "query", + "name": "depth", + "description": "Orders depth quantity: [0,5,10,20,50,100,500]", + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 500, + "required": false + } + ], + "responses": { + "200": { + "description": "Get depth or specified market" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapOrderbookMarketPair" + } + }, + "/api/v2/dena/coinmarketcap/trades/{market_pair}": { + "get": { + "description": "Get recent trades on market", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market_pair", + "description": "A pair such as \"LTC_BTC\"", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Get recent trades on market", + "schema": { + "$ref": "#/definitions/Trade" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapTradesMarketPair" + } + }, + "/api/v2/dena/coinmarketcap/ticker": { + "get": { + "description": "Get 24-hour pricing and volume summary for each market pair", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get 24-hour pricing and volume summary for each market pair", + "schema": { + "$ref": "#/definitions/Ticker" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapTicker" + } + }, + "/api/v2/dena/coinmarketcap/assets": { + "get": { + "description": "Details on crypto currencies available on the exchange", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Details on crypto currencies available on the exchange" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapAssets" + } + }, + "/api/v2/dena/coinmarketcap/summary": { + "get": { + "description": "Overview of market data for all tickers and all market pairs on the exchange", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Overview of market data for all tickers and all market pairs on the exchange" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapSummary" + } + }, + "/api/v2/dena/coingecko/historical_trades": { + "get": { + "description": "Get recent trades on market", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "ticker_id", + "description": "A pair such as \"LTC_BTC\"", + "type": "string", + "required": true + }, + { + "in": "query", + "name": "type", + "description": "To indicate nature of trade - buy/sell", + "type": "string", + "enum": [ + "buy", + "sell" + ], + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Number of historical trades to retrieve from time of query. [0, 200, 500...]. 0 returns full history", + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "start_time", + "description": "", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "end_time", + "description": "", + "type": "integer", + "format": "int32", + "required": false + } + ], + "responses": { + "200": { + "description": "Get recent trades on market" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoingeckoHistoricalTrades" + } + }, + "/api/v2/dena/coingecko/orderbook": { + "get": { + "description": "Get depth or specified market", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "ticker_id", + "description": "A pair such as \"LTC_BTC\"", + "type": "string", + "required": true + }, + { + "in": "query", + "name": "depth", + "description": "Orders depth quantity: [0, 100, 200, 500...]", + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1000, + "required": false + } + ], + "responses": { + "200": { + "description": "Get depth or specified market" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoingeckoOrderbook" + } + }, + "/api/v2/dena/coingecko/tickers": { + "get": { + "description": "Get list of all available trading pairs", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get list of all available trading pairs", + "schema": { + "$ref": "#/definitions/Ticker" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoingeckoTickers" + } + }, + "/api/v2/dena/coingecko/pairs": { + "get": { + "description": "Get list of all available trading pairs", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get list of all available trading pairs" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoingeckoPairs" + } + } + }, + "definitions": { + "WithdrawLimit": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique withdraw limit table identifier in database." + }, + "group": { + "type": "string", + "description": "Member group for define withdraw limits." + }, + "kyc_level": { + "type": "string", + "description": "KYC level for define withdraw limits." + }, + "limit_24_hour": { + "type": "number", + "format": "double", + "description": "24 hours withdraw limit." + }, + "limit_1_month": { + "type": "number", + "format": "double", + "description": "1 month withdraw limit." + }, + "created_at": { + "type": "string", + "description": "Withdraw limit table created time in iso8601 format." + }, + "updated_at": { + "type": "string", + "description": "Withdraw limit table updated time in iso8601 format." + } + }, + "description": "Returns withdraw limits table as paginated collection" + }, + "TradingFee": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique trading fee table identifier in database." + }, + "group": { + "type": "string", + "description": "Member group for define maker/taker fee." + }, + "market_id": { + "type": "string", + "description": "Market id for define maker/taker fee." + }, + "maker": { + "type": "number", + "format": "double", + "description": "Market maker fee." + }, + "taker": { + "type": "number", + "format": "double", + "description": "Market taker fee." + }, + "created_at": { + "type": "string", + "description": "Trading fee table created time in iso8601 format." + }, + "updated_at": { + "type": "string", + "description": "Trading fee table updated time in iso8601 format." + } + }, + "description": "Returns trading_fees table as paginated collection" + }, + "Ticker": { + "type": "object", + "properties": { + "at": { + "type": "integer", + "format": "int32", + "description": "Timestamp of ticker" + }, + "ticker": { + "$ref": "#/definitions/TickerEntry", + "description": "Ticker entry for specified time" + } + }, + "description": "Get list of all available trading pairs" + }, + "TickerEntry": { + "type": "object", + "properties": { + "low": { + "type": "number", + "format": "double", + "description": "The lowest trade price during last 24 hours (0.0 if no trades executed during last 24 hours)" + }, + "high": { + "type": "number", + "format": "double", + "description": "The highest trade price during last 24 hours (0.0 if no trades executed during last 24 hours)" + }, + "open": { + "type": "number", + "format": "double", + "description": "Price of the first trade executed 24 hours ago or less" + }, + "last": { + "type": "number", + "format": "double", + "description": "The last executed trade price" + }, + "volume": { + "type": "number", + "format": "double", + "description": "Total volume of trades executed during last 24 hours" + }, + "amount": { + "type": "number", + "format": "double", + "description": "Total amount of trades executed during last 24 hours" + }, + "vol": { + "type": "number", + "format": "double", + "description": "Alias to volume" + }, + "avg_price": { + "type": "number", + "format": "double", + "description": "Average price more precisely VWAP is calculated by adding up the total traded for every transaction(price multiplied by the number of shares traded) and then dividing by the total shares traded" + }, + "price_change_percent": { + "type": "string", + "description": "Price change in the next format +3.19%.Price change is calculated using next formula (last - open) / open * 100%" + }, + "at": { + "type": "integer", + "format": "int32", + "description": "Timestamp of ticker" + } + } + }, + "Trade": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Trade ID." + }, + "price": { + "type": "number", + "format": "double", + "description": "Trade price." + }, + "amount": { + "type": "number", + "format": "double", + "description": "Trade amount." + }, + "total": { + "type": "number", + "format": "double", + "description": "Trade total (Amount * Price)." + }, + "fee_currency": { + "type": "number", + "format": "double", + "description": "Currency user's fees were charged in." + }, + "fee": { + "type": "number", + "format": "double", + "description": "Percentage of fee user was charged for performed trade." + }, + "fee_amount": { + "type": "number", + "format": "double", + "description": "Amount of fee user was charged for performed trade." + }, + "market": { + "type": "string", + "description": "Trade market id." + }, + "created_at": { + "type": "string", + "description": "Trade create time in iso8601 format." + }, + "taker_type": { + "type": "string", + "description": "Trade taker order type (sell or buy)." + }, + "side": { + "type": "string", + "description": "Trade side." + }, + "order_id": { + "type": "integer", + "format": "int32", + "description": "Order id." + } + }, + "description": "Get recent trades on market" + }, + "OrderBook": { + "type": "object", + "properties": { + "asks": { + "type": "array", + "items": { + "$ref": "#/definitions/Order" + }, + "description": "Asks in orderbook" + }, + "bids": { + "type": "array", + "items": { + "$ref": "#/definitions/Order" + }, + "description": "Bids in orderbook" + } + }, + "description": "Get the order book of specified market." + }, + "Order": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique order id." + }, + "uuid": { + "type": "string", + "description": "Unique order UUID." + }, + "side": { + "type": "string", + "description": "Either 'sell' or 'buy'." + }, + "ord_type": { + "type": "string", + "description": "Type of order, either 'limit' or 'market'." + }, + "price": { + "type": "number", + "format": "double", + "description": "Price for each unit. e.g.If you want to sell/buy 1 btc at 3000 usd, the price is '3000.0'" + }, + "avg_price": { + "type": "number", + "format": "double", + "description": "Average execution price, average of price in trades." + }, + "state": { + "type": "string", + "description": "One of 'wait', 'done', or 'cancel'.An order in 'wait' is an active order, waiting fulfillment;a 'done' order is an order fulfilled;'cancel' means the order has been canceled." + }, + "market": { + "type": "string", + "description": "The market in which the order is placed, e.g. 'btcusd'.All available markets can be found at /api/v2/markets." + }, + "created_at": { + "type": "string", + "description": "Order create time in iso8601 format." + }, + "updated_at": { + "type": "string", + "description": "Order updated time in iso8601 format." + }, + "origin_volume": { + "type": "number", + "format": "double", + "description": "The amount user want to sell/buy.An order could be partially executed,e.g. an order sell 5 btc can be matched with a buy 3 btc order,left 2 btc to be sold; in this case the order's volume would be '5.0',its remaining_volume would be '2.0', its executed volume is '3.0'." + }, + "remaining_volume": { + "type": "number", + "format": "double", + "description": "The remaining volume, see 'volume'." + }, + "executed_volume": { + "type": "number", + "format": "double", + "description": "The executed volume, see 'volume'." + }, + "maker_fee": { + "type": "number", + "format": "double", + "description": "Fee for maker." + }, + "taker_fee": { + "type": "number", + "format": "double", + "description": "Fee for taker." + }, + "trades_count": { + "type": "integer", + "format": "int32", + "description": "Count of trades." + }, + "trades": { + "type": "array", + "items": { + "$ref": "#/definitions/Trade" + }, + "description": "Trades wiht this order." + } + }, + "description": "Get your orders, result is paginated." + }, + "Market": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique market id. It's always in the form of xxxyyy,where xxx is the base currency code, yyy is the quotecurrency code, e.g. 'btcusd'. All available markets canbe found at /api/v2/markets." + }, + "name": { + "type": "string", + "description": "Market name." + }, + "base_unit": { + "type": "string", + "description": "Market Base unit." + }, + "quote_unit": { + "type": "string", + "description": "Market Quote unit." + }, + "min_price": { + "type": "number", + "format": "double", + "description": "Minimum order price." + }, + "max_price": { + "type": "number", + "format": "double", + "description": "Maximum order price." + }, + "min_amount": { + "type": "number", + "format": "double", + "description": "Minimum order amount." + }, + "amount_precision": { + "type": "number", + "format": "double", + "description": "Precision for order amount." + }, + "price_precision": { + "type": "number", + "format": "double", + "description": "Precision for order price." + }, + "state": { + "type": "string", + "description": "Market state defines if user can see/trade on current market." + } + }, + "description": "Get all available markets." + }, + "Currency": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "btc", + "description": "Currency code." + }, + "name": { + "type": "string", + "example": "Bitcoin", + "description": "Currency name" + }, + "description": { + "type": "string", + "example": "btc", + "description": "Currency description" + }, + "homepage": { + "type": "string", + "example": "btc", + "description": "Currency homepage" + }, + "price": { + "type": "string", + "description": "Currency current price" + }, + "explorer_transaction": { + "type": "string", + "example": "https://testnet.blockchain.info/tx/", + "description": "Currency transaction exprorer url template" + }, + "explorer_address": { + "type": "string", + "example": "https://testnet.blockchain.info/address/", + "description": "Currency address exprorer url template" + }, + "type": { + "type": "string", + "example": "coin", + "description": "Currency type" + }, + "deposit_enabled": { + "type": "string", + "description": "Currency deposit possibility status (true/false)." + }, + "withdrawal_enabled": { + "type": "string", + "description": "Currency withdrawal possibility status (true/false)." + }, + "deposit_fee": { + "type": "string", + "example": "0.0", + "description": "Currency deposit fee" + }, + "min_deposit_amount": { + "type": "string", + "example": "0.0", + "description": "Minimal deposit amount" + }, + "withdraw_fee": { + "type": "string", + "example": "0.0009", + "description": "Currency withdraw fee" + }, + "min_withdraw_amount": { + "type": "string", + "example": "0.0005", + "description": "Minimal withdraw amount" + }, + "withdraw_limit_24h": { + "type": "string", + "example": "0.0", + "description": "Currency 24h withdraw limit" + }, + "withdraw_limit_72h": { + "type": "string", + "example": "0.0", + "description": "Currency 72h withdraw limit" + }, + "base_factor": { + "type": "string", + "example": 100000000, + "description": "Currency base factor" + }, + "precision": { + "type": "string", + "example": 8, + "description": "Currency precision" + }, + "position": { + "type": "string", + "example": 8, + "description": "Position used for defining currencies order" + }, + "icon_url": { + "type": "string", + "example": "https://upload.wikimedia.org/wikipedia/commons/0/05/Ethereum_logo_2014.svg", + "description": "Currency icon" + }, + "min_confirmations": { + "type": "string", + "description": "Number of confirmations required for confirming deposit or withdrawal" + } + }, + "description": "Get a currency" + }, + "Withdraw": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "The withdrawal id." + }, + "currency": { + "type": "string", + "description": "The currency code." + }, + "type": { + "type": "string", + "description": "The withdrawal type" + }, + "amount": { + "type": "string", + "description": "The withdrawal amount" + }, + "fee": { + "type": "number", + "format": "double", + "description": "The exchange fee." + }, + "blockchain_txid": { + "type": "string", + "description": "The withdrawal transaction id." + }, + "rid": { + "type": "string", + "description": "The beneficiary ID or wallet address on the Blockchain." + }, + "state": { + "type": "string", + "description": "The withdrawal state." + }, + "confirmations": { + "type": "integer", + "format": "int32", + "description": "Number of confirmations." + }, + "note": { + "type": "string", + "description": "Withdraw note." + }, + "transfer_type": { + "type": "string", + "description": "Withdraw transfer type" + }, + "created_at": { + "type": "string", + "description": "The datetimes for the withdrawal." + }, + "updated_at": { + "type": "string", + "description": "The datetimes for the withdrawal." + }, + "done_at": { + "type": "string", + "description": "The datetime when withdraw was completed" + } + }, + "description": "List your withdraws as paginated collection." + }, + "Beneficiary": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Beneficiary Identifier in Database" + }, + "currency": { + "type": "string", + "description": "Beneficiary currency code." + }, + "uid": { + "type": "string", + "description": "Beneficiary owner" + }, + "name": { + "type": "string", + "description": "Human rememberable name which refer beneficiary." + }, + "description": { + "type": "string", + "description": "Human rememberable description of beneficiary." + }, + "data": { + "type": "json", + "description": "Bank Account details for fiat Beneficiary in JSON format.For crypto it's blockchain address." + }, + "state": { + "type": "string", + "description": "Defines either beneficiary active - user can use it to withdraw moneyor pending - requires beneficiary activation with pin." + }, + "sent_at": { + "type": "string", + "description": "Time when last pin was sent" + } + }, + "description": "Get list of user beneficiaries" + }, + "Deposit": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique deposit id." + }, + "currency": { + "type": "string", + "description": "Deposit currency id." + }, + "amount": { + "type": "number", + "format": "double", + "description": "Deposit amount." + }, + "fee": { + "type": "number", + "format": "double", + "description": "Deposit fee." + }, + "txid": { + "type": "string", + "description": "Deposit transaction id." + }, + "confirmations": { + "type": "integer", + "format": "int32", + "description": "Number of deposit confirmations." + }, + "state": { + "type": "string", + "description": "Deposit state." + }, + "transfer_type": { + "type": "string", + "description": "Deposit transfer type" + }, + "created_at": { + "type": "string", + "description": "The datetime when deposit was created." + }, + "completed_at": { + "type": "string", + "description": "The datetime when deposit was completed.." + }, + "tid": { + "type": "string", + "description": "The shared transaction ID" + } + }, + "description": "Get your deposits history." + }, + "Account": { + "type": "object", + "properties": { + "currency": { + "type": "string", + "description": "Currency code." + }, + "balance": { + "type": "number", + "format": "double", + "description": "Account balance." + }, + "locked": { + "type": "number", + "format": "double", + "description": "Account locked funds." + }, + "deposit_address": { + "$ref": "#/definitions/PaymentAddress", + "description": "User deposit address" + } + }, + "description": "Get list of user accounts" + }, + "PaymentAddress": { + "type": "object", + "properties": { + "currencies": { + "type": "array", + "items": { + "type": "string", + "example": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp" + ] + }, + "description": "Currencies codes." + }, + "address": { + "type": "string", + "description": "Payment address." + }, + "state": { + "type": "string", + "description": "Payment address state." + } + } + }, + "Transactions": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Recipient address of transaction." + }, + "currency": { + "type": "string", + "description": "Transaction currency id." + }, + "amount": { + "type": "number", + "format": "double", + "description": "Transaction amount." + }, + "fee": { + "type": "number", + "format": "double", + "description": "Transaction fee." + }, + "txid": { + "type": "string", + "description": "Transaction id." + }, + "state": { + "type": "string", + "description": "Transaction state." + }, + "note": { + "type": "string", + "description": "Withdraw note." + }, + "confirmations": { + "type": "integer", + "format": "int32", + "description": "Number of confirmations." + }, + "created_at": { + "type": "string", + "description": "Transaction created time in iso8601 format." + }, + "updated_at": { + "type": "string", + "description": "Transaction updated time in iso8601 format." + }, + "type": { + "type": "string", + "description": "Type of transaction" + } + } + }, + "Member": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "description": "Member UID." + }, + "email": { + "type": "string", + "description": "Member email." + }, + "accounts": { + "type": "array", + "items": { + "$ref": "#/definitions/Account" + }, + "description": "Member accounts." + } + } + } + } +} \ No newline at end of file diff --git a/mocks/api/v2/finex/public/markets/GET.mock b/mocks/api/v2/finex/public/markets/GET.mock new file mode 100644 index 0000000..b236a3f --- /dev/null +++ b/mocks/api/v2/finex/public/markets/GET.mock @@ -0,0 +1,113 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":"dashbtc", + "name":"DASH/BTC", + "base_unit":"dash", + "quote_unit":"btc", + "state":"enabled", + "amount_precision":3, + "price_precision":6, + "min_price":"0.000001", + "max_price":"0", + "min_amount":"0.001", + "filters": [ + { + "digits":5, + "type":"significant_digits" + } + ] + }, + { + "id":"ethbtc", + "name":"ETH/BTC", + "base_unit":"eth", + "quote_unit":"btc", + "state":"enabled", + "amount_precision":5, + "price_precision":7, + "min_price":"0.0000001", + "max_price":"0", + "min_amount":"0.00001", + "filters": [ + { + "type":"significant_digits", + "digits":5 + }, + { + "type":"custom_price_steps", + "rules": [ + { + "limit":"10", + "step":"0.01" + }, + { + "limit":"100", + "step":"0.1" + }, + { + "limit":"1000", + "step":"1" + }, + { + "limit":"10000", + "step":"5" + }, + { + "limit":"100000", + "step":"10" + }, + { + "limit":"0", + "step":"1000" + } + ] + } + ] + }, + { + "id":"btcusd", + "name":"BTC/USD", + "base_unit":"btc", + "quote_unit":"usd", + "state":"enabled", + "amount_precision":7, + "price_precision":2, + "min_price":"0.01", + "max_price":"0", + "min_amount":"0.0000001", + "filters": [ + { + "rules": [ + { + "limit":"1", + "step":"0.01" + }, + { + "limit":"10", + "step":"0.1" + }, + { + "limit":"100", + "step":"1" + }, + { + "limit":"1000", + "step":"10" + }, + { + "limit":"0", + "step":"100" + } + ], + "type":"custom_price_steps" + } + ] + } +] diff --git a/mocks/api/v2/finex/public/markets/OPTIONS.mock b/mocks/api/v2/finex/public/markets/OPTIONS.mock new file mode 100644 index 0000000..53f6e03 --- /dev/null +++ b/mocks/api/v2/finex/public/markets/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * diff --git a/mocks/helpers.js b/mocks/helpers.js new file mode 100644 index 0000000..1cfc0f2 --- /dev/null +++ b/mocks/helpers.js @@ -0,0 +1,127 @@ +const getRandomArbitrary = (min, max, precision) => { + const randomValue = Math.random() * (max - min) + min; + + return precision ? randomValue.toFixed(precision) : randomValue; +} + +const getRandomInt = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + + return Math.floor(Math.random() * (max - min + 1)) + min; +} + + +const Helpers = { + getMarketInfos: (marketName) => { + let pairs = marketName.split("/"); + let baseUnit = pairs[0].toLowerCase(); + let quoteUnit = pairs[1].toLowerCase(); + let marketId = `${baseUnit}${quoteUnit}`; + + return { + baseUnit, + quoteUnit, + marketId, + } + }, + getTickers: (markets) => { + let tickers = {} + markets.forEach(name => { + let { marketId } = Helpers.getMarketInfos(name); + const change = (10 + Math.random() * 10) * (Math.random() > 0.5 ? 1 : -1); + const coeffChange = 1 + parseFloat(change / 1000); + const open = 0.134 * coeffChange; + const last = 0.134 / coeffChange; + const price_change_percent = (last - open) / last * 100; + const signPrefix = price_change_percent >= 0 ? '+' : '-'; + + tickers[marketId] = { + "amount": `${15 * coeffChange}`, + "low": `${0.001 * coeffChange}`, + "high": `${0.145 * coeffChange}`, + "last": `${last}`, + "open": open, + "volume": `${3500 * coeffChange}`, + "avg_price": "0.0", + "price_change_percent": `${signPrefix}${Math.abs(price_change_percent.toFixed(2))}%`, + "at": Date.now() / 1000, + } + }); + + return tickers; + }, + getBalances: () => { + const getBalanceValue = (value, precision) => ((Math.random() > 0.5 ? 1 : -1) * Math.random() / 10 + +value).toFixed(precision); + const getLockedValue = (value, precision) => (Math.random() / 10 + +value).toFixed(precision); + + return { + "bch": [getBalanceValue("10.12", 8), getLockedValue("0.001", 8)], + "btc": [getBalanceValue("0.21026373", 8), getLockedValue("0.0001", 8)], + "dash": [getBalanceValue("5", 6), getLockedValue("0.0005", 6)], + "eth": [getBalanceValue("5", 6), getLockedValue("0.0002", 6)], + "usd": [getBalanceValue("1000", 2), getLockedValue("100", 2)] + } + }, + getDepth: (sequence) => { + const delta = 2 * (1 + Math.cos(2 * Math.PI * Date.now() / 1000 / 3600)) + const fV = (volume) => String(parseFloat(volume) + delta * 10); + + return { + "asks": [ + ["15.0", fV("1.5")], + ["20.0", fV("80")], + ["20.5", fV("10.0")], + ["30.0", fV("1.0")] + ], + "bids": [ + ["10.95", fV("1.5")], + ["10.90", fV("45")], + ["10.85", fV("35")], + ["10.70", fV("10")], + ], + "sequence": sequence, + } + }, + getDepthIncrement: (sequence) => { + const delta = getRandomArbitrary(1, 100, 2) * (1 + Math.cos(2 * Math.PI * Date.now() / 1000 / 3600)) + const fV = (volume) => String(parseFloat(volume) + delta); + const countOfAsks = getRandomInt(1, 5); + const countOfBids = getRandomInt(1, 5); + const sideProbability = Math.random(); + const asks = []; + const bids = []; + + for (var i = 0; i < countOfAsks; i++) { + asks.push([getRandomArbitrary(15, 20, 1), fV("1.5")]); + } + + for (var i = 0; i < countOfBids; i++) { + bids.push([getRandomArbitrary(10, 12, 2), fV("1.5")]); + } + + if (sideProbability < 0.25) { + return { + "asks": asks, + "sequence": sequence, + } + } + + if (sideProbability < 0.5) { + return { + "bids": bids, + "sequence": sequence, + } + } + + return { + "bids": asks, + "asks": bids, + "sequence": sequence, + } + }, + getStreamsFromUrl: (url) => url.replace("/", "").split(/[&?]stream=/).filter(stream => stream.length > 0), + unique: (list) => list.filter((value, index, self) => self.indexOf(value) === index) +} + +module.exports = Helpers; diff --git a/mocks/markets.js b/mocks/markets.js new file mode 100644 index 0000000..3b744b1 --- /dev/null +++ b/mocks/markets.js @@ -0,0 +1,7 @@ +module.exports = [ + 'BTC/ZAR', + 'BCH/ZAR', + 'ETH/BTC', + 'DASH/BTC', + 'EUR/USD', +] diff --git a/mocks/mockAPI.js b/mocks/mockAPI.js new file mode 100644 index 0000000..6ccb71d --- /dev/null +++ b/mocks/mockAPI.js @@ -0,0 +1,27 @@ +#!/usr/bin/env node +const http = require('http'); +const mockserver = require('./mockserver'); + +const argv = require('yargs').argv; +const portAPI = argv.portAPI || 9002; +const directory = argv.dir || 'mocks'; + +process.on('SIGINT', () => { console.log("Bye bye!"); process.exit(); }); + +class Mock { + constructor(directory, port, verbose = true) { + http.createServer(mockserver(directory, verbose)).listen(port, (error) => { + if (error) { + console.log(`Mock server ${version} unhandled exception`, error); + return; + } + + if (verbose) { + const url = `http://0.0.0.0:${port}`.green + console.log(`Mockserver serving ${directory} on: ${url}`); + } + }) + } +} + +new Mock(directory, portAPI, true) diff --git a/mocks/mockWS.js b/mocks/mockWS.js new file mode 100644 index 0000000..1806391 --- /dev/null +++ b/mocks/mockWS.js @@ -0,0 +1,22 @@ +#!/usr/bin/env node +const http = require('http'); +const mockserver = require('./mockserver'); +var markets = require('./markets.js'); +var RangerMock = require('./ranger.js'); +const argv = require('yargs').argv; +const fs = require('fs'); +const portWS = argv.portWS || 9003; + +process.on('SIGINT', () => { console.log("Bye bye!"); process.exit(); }); + +var server = new RangerMock(portWS, markets); + +fs.watch('./mocks', (curr, prev) => { + console.log(`reloading mock websocket`); + server.close(); + delete require.cache[require.resolve('./ranger.js')] + delete require.cache[require.resolve('./markets.js')] + RangerMock = require('./ranger.js') + markets = require('./markets.js'); + server = new RangerMock(portWS, markets); +}); diff --git a/mocks/mockserver.js b/mocks/mockserver.js new file mode 100644 index 0000000..a138fd6 --- /dev/null +++ b/mocks/mockserver.js @@ -0,0 +1,357 @@ +const fs = require('fs'); +const path = require('path'); +const colors = require('colors'); +const join = path.join; +const Combinatorics = require('js-combinatorics'); +const normalizeHeader = require('header-case-normalizer'); + +/** + * Returns the status code out of the + * first line of an HTTP response + * (ie. HTTP/1.1 200 Ok) + */ +function parseStatus(header) { + return header.split(' ')[1]; +}; + +/** + * Parses an HTTP header, splitting + * by colon. + */ +const parseHeader = function (header) { + header = header.split(': '); + + return {key: normalizeHeader(header[0]), value: parseValue(header[1])}; +}; + +const parseValue = function(value) { + if (/^#header/m.test(value)) { + return value.replace(/^#header (.*);/m, function (statement, val) { + const expression = val.replace(/[${}]/g, ''); + return eval(expression); + }).replace(/\r\n?/g, '\n'); + } + return value; +}; + +/** + * Prepares headers to watch, no duplicates, non-blanks. + * Priority exports over ENV definition. + */ +const prepareWatchedHeaders = function () { + const exportHeaders = module.exports.headers && module.exports.headers.toString(); + const headers = (exportHeaders || process.env.MOCK_HEADERS || '').split(','); + + return headers.filter(function(item, pos, self) { + return item && self.indexOf(item) == pos; + }); +} + +/** + * Parser the content of a mockfile + * returning an HTTP-ish object with + * status code, headers and body. + */ +const parse = function (content, file, request) { + const headers = {}; + let body; + const bodyContent = []; + content = content.split(/\r?\n/); + const status = parseStatus(content[0]); + let headerEnd = false; + delete content[0]; + + content.forEach(function (line) { + switch (true) { + case headerEnd: + bodyContent.push(line); + break; + case (line === '' || line === '\r'): + headerEnd = true; + break; + default: + const header = parseHeader(line); + headers[header.key] = header.value; + break; + } + }); + + body = bodyContent.join('\n'); + + if (/^#import/m.test(body)) { + const context = path.parse(file).dir + '/'; + + body = body.replace(/^#import (.*);/m, function (includeStatement, file) { + const importThisFile = file.replace(/['"]/g, ''); + const content = fs.readFileSync(path.join(context, importThisFile)); + if (importThisFile.endsWith(".js")) { + return JSON.stringify(eval(content.toString())); + } else { + return content; + } + }) + .replace(/\r\n?/g, '\n'); + } + + return {status: status, headers: headers, body: body}; +}; + +function removeBlanks(array) { + return array.filter(function (i) { return i; }); +} + +function getWildcardPath(dir) { + let steps = removeBlanks(dir.split('/')); + let testPath; + let newPath; + let exists = false; + + while(steps.length) { + steps.pop(); + testPath = join(steps.join('/'), '/__'); + exists = fs.existsSync(join(mockserver.directory, testPath)); + if(exists) { newPath = testPath; } + } + + const res = getDirectoriesRecursive(mockserver.directory).filter(dir => { + const directories = dir.split(path.sep); + return directories.includes('__'); + }).sort((a, b) => { + const aLength = a.split(path.sep) + const bLength = b.split(path.sep) + + if (aLength == bLength) + return 0 + + // Order from longest file path to shortest. + return aLength > bLength ? -1 : 1 + }).map(dir => { + const steps = dir.split(path.sep) + const baseDir = mockserver.directory.split(path.sep) + steps.splice(0, baseDir.length) + return steps.join(path.sep) + }) + + steps = removeBlanks(dir.split('/')) + + newPath = matchWildcardPaths(res, steps) || newPath; + + return newPath; +} + +function matchWildcardPaths(res, steps) { + for (let resIndex = 0; resIndex < res.length; resIndex++) { + const dirSteps = res[resIndex].split(/\/|\\/); + if (dirSteps.length !== steps.length) { continue; } + const result = matchWildcardPath(steps, dirSteps); + if (result) { return result; } + } + return null; +} + +function matchWildcardPath(steps, dirSteps) { + for (let stepIndex = 1; stepIndex <= steps.length; stepIndex++) { + const step = steps[steps.length - stepIndex]; + const dirStep = dirSteps[dirSteps.length - stepIndex]; + if (step !== dirStep && dirStep != '__') { + return null; + } + } + return '/' + dirSteps.join('/'); +} + +function flattenDeep(directories){ + return directories.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []); + } + +function getDirectories(srcpath) { + return fs.readdirSync(srcpath) + .map(file => path.join(srcpath, file)) + .filter(path => fs.statSync(path).isDirectory()); +} + +function getDirectoriesRecursive(srcpath) { + const nestedDirectories = getDirectories(srcpath).map(getDirectoriesRecursive); + const directories = flattenDeep(nestedDirectories); + directories.push(srcpath) + return directories; +} + +/** + * Returns the body or query string to be used in + * the mock name. + * + * In any case we will prepend the value with a double + * dash so that the mock files will look like: + * + * POST--My-Body=123.mock + * + * or + * + * GET--query=string&hello=hella.mock + */ +// POST--email=accountant@barong.io&password=123123&data.address=111 +function getObjectPath(instance, parentName) { + let result = ''; + + Object.keys(instance).forEach(key=>{ + const value = instance[key]; + const formatKey = parentName? `${parentName}.${key}`: key; + + if(typeof value === 'object') { + result += getObjectPath(value, formatKey); + } + else { + result += `&${formatKey}=${value}`; + } + }); + + return result; +} + + +function getBodyOrQueryString(body, query) { + if (query) { + return '--' + query; + } + + if (body && body !== '') { + try{ + let obj = eval('(' + body + ')'); + const path = getObjectPath(obj); + return '--' + path.replace(/^&/gi, ''); + } + catch (error) { + console.log('[Body parse error]', error); + } + + return '--' + body; + } + + return body; +} + +/** + * Ghetto way to get the body + * out of the request. + * + * There are definitely better + * ways to do this (ie. npm/body + * or npm/body-parser) but for + * the time being this does it's work + * (ie. we don't need to support + * fancy body parsing in mockserver + * for now). + */ +function getBody(req, callback) { + let body = ''; + + req.on('data', function(b){ + body = body + b.toString(); + }); + + req.on('end', function() { + callback(body); + }); +} + +function getMockedContent(path, prefix, body, query) { + const mockName = prefix + (getBodyOrQueryString(body, query) || '') + '.mock'; + const mockFile = join(mockserver.directory, path, mockName); + let content; + + try { + content = fs.readFileSync(mockFile, {encoding: 'utf8'}); + if (mockserver.verbose) { + console.log('Reading from '+ mockFile.yellow +' file: ' + 'Matched'.green); + } + } catch(err) { + if (mockserver.verbose) { + console.log('Reading from '+ mockFile.yellow +' file: ' + 'Not matched'.red); + } + content = (body || query) && getMockedContent(path, prefix); + } + + return content; +} + +function getContentFromPermutations(path, method, body, query, permutations) { + let content, prefix; + + while(permutations.length) { + prefix = method + permutations.pop().join(''); + content = getMockedContent(path, prefix, body, query) || content; + } + + return { content: content, prefix: prefix }; +} + +const mockserver = { + directory: '.', + verbose: false, + headers: [], + init: function(directory, verbose) { + this.directory = directory; + this.verbose = !!verbose; + this.headers = prepareWatchedHeaders(); + }, + handle: function(req, res) { + getBody(req, function(body) { + req.body = body; + const url = req.url; + let path = url; + + const queryIndex = url.indexOf('?'), + query = queryIndex >= 0 ? url.substring(queryIndex).replace(/\?/g, '') : '', + method = req.method.toUpperCase(), + headers = []; + + if (queryIndex > 0) { + path = url.substring(0, queryIndex); + } + + if(req.headers && mockserver.headers.length) { + mockserver.headers.forEach(function(header) { + header = header.toLowerCase(); + if(req.headers[header]) { + headers.push('_' + normalizeHeader(header) + '=' + req.headers[header]); + } + }); + } + + // Now, permute the possible headers, and look for any matching files, prioritizing on + // both # of headers and the original header order + let matched, + permutations = [[]]; + + if(headers.length) { + permutations = Combinatorics.permutationCombination(headers).toArray().sort(function(a, b) { return b.length - a.length; }); + permutations.push([]); + } + + matched = getContentFromPermutations(path, method, body, query, permutations.slice(0)); + + if(!matched.content && (path = getWildcardPath(path))) { + matched = getContentFromPermutations(path, method, body, query, permutations.slice(0)); + } + + if(matched.content) { + const mock = parse(matched.content, join(mockserver.directory, path, matched.prefix), req); + res.writeHead(mock.status, mock.headers); + + return res.end(mock.body); + } else { + res.writeHead(404); + res.end('Not Mocked'); + } + }); + } +}; + +module.exports = function(directory, silent) { + mockserver.init(directory, silent); + + return mockserver.handle; +}; + +module.exports.headers = null; diff --git a/mocks/ranger.js b/mocks/ranger.js new file mode 100644 index 0000000..d7f6b93 --- /dev/null +++ b/mocks/ranger.js @@ -0,0 +1,281 @@ +const WebSocket = require('ws'); +const Helpers = require('./helpers') + +const isSubscribed = (streams, routingKey) => { + for (const i in streams) { + const stream = streams[i]; + if (routingKey.startsWith(stream) || routingKey.endsWith(stream)) { + return true; + } + } + return false; +} + +const sendEvent = (ws, routingKey, event) => { + try { + if (isSubscribed(ws.streams, routingKey)) { + const payload = {}; + payload[routingKey] = event; + ws.send(JSON.stringify(payload)); + } + } catch (error) { + console.log(`failed to send ranger message: ${error}`); + } +} + +const tickersMock = (ws, markets) => () => { + sendEvent(ws, "global.tickers", Helpers.getTickers(markets)); +}; + +const balancesMock = (ws) => () => { + sendEvent(ws, "balances", Helpers.getBalances()); +}; + +/* + Example: ["btcusd.update",{"asks":[["1000.0","0.1"]],"bids":[]}] +*/ +const orderBookUpdateMock = (ws, marketId) => () => { + sendEvent(ws, `${marketId}.update`, Helpers.getDepth(0)); +}; + +// Inremental orderbook support +const orderBookSnapshotMock = (ws, marketId) => () => { + ws.sequences[marketId] = 1; + console.log(`orderBookSnapshotMock called: ${marketId}`); + try { + if (isSubscribed(ws.streams, `${marketId}.ob-inc`)) { + console.log(`orderBookSnapshotMock sending: ${marketId}`); + const payload = {}; + payload[`${marketId}.ob-snap`] = Helpers.getDepth(ws.sequences[marketId]); + ws.send(JSON.stringify(payload)); + } + } catch (error) { + console.log(`failed to send ranger message: ${error}`); + } +}; + +const orderBookIncrementMock = (ws, marketId) => () => { + var event = Helpers.getDepthIncrement(); + event.sequence = ++ws.sequences[marketId]; + sendEvent(ws, `${marketId}.ob-inc`, event); +}; + +/* + Success order scenario: + * Private messages: + ["order",{"id":758,"at":1546605232,"market":"macarstc","kind":"bid","price":"1.17","state":"wait","remaining_volume":"0.1","origin_volume":"0.1"}] + ["order",{"id":758,"at":1546605232,"market":"macarstc","kind":"bid","price":"1.17","state":"done","remaining_volume":"0.0","origin_volume":"0.1"}] + ["trade",{"id":312,"kind":"bid","at":1546605232,"price":"1.17","remaining_volume":"0.1","ask_id":651,"bid_id":758,"market":"macarstc"}] + + * Public messages: + ["macarstc.trades",{"trades":[{"tid":312,"type":"buy","date":1546605232,"price":"1.17","amount":"0.1"}]}] +*/ + +// Those functions are the same used in k-line mocked API +const minDay = 6; +const maxDay = 10; +const fakePeriod = 86400; + +const timeToPrice = (time) => { + return minDay + (maxDay - minDay) / 2 * (1 + Math.cos((time / fakePeriod) * 2 * Math.PI)); +}; + +const timeToVolume = (time, periodInSeconds) => { + return maxDay * 10 / 2 * (1 + Math.cos((time / fakePeriod) * 2 * Math.PI)); +}; + +const kLine = (time, period) => { + const periodInSeconds = parseInt(period * 60); + const roundedTime = parseInt(time / periodInSeconds) * periodInSeconds; + const open = timeToPrice(time); + const close = timeToPrice(time + periodInSeconds); + const delta = (maxDay - minDay) / fakePeriod * periodInSeconds * 2; + const high = Math.max(open, close) + delta; + const low = Math.min(open, close) - delta; + const volume = timeToVolume(time, periodInSeconds); + + return [roundedTime, open, high, low, close, volume].map(String); +} + +let tradeIndex = 100000; +let orderIndex = 100; + +const matchedTradesMock = (ws, marketId) => { + let kind = "bid"; + let price = 0.1; + let volume = 1000; + + return function () { + const shouldPushOrder = Math.random() < 0.1; + const orderId = orderIndex++; + const tradeId = tradeIndex++; + kind = kind == "bid" ? "ask" : "bid"; + const takerType = Math.random() < 0.5 ? "buy" : "sell"; + const orderType = Math.random() < 0.5 ? "limit" : "market"; + price += price > 0.01 ? Math.random() < 0.5 ? +0.01 : -0.01 : 0.01; + volume += 50; + let bidId = kind == "bid" ? orderId : orderId - 10; + let askId = kind == "ask" ? orderId : orderId - 10; + let at = parseInt(Date.now() / 1000); + let remainingVolume = volume; + const executedVolume = volume - remainingVolume; + + const order = { + "uuid": orderId + 1000000, + "id": orderId, + "at": at + 1, + "market": marketId, + "kind": kind, + "price": price, + "avg_price": price, + "state": "wait", + "remaining_volume": volume, + "origin_volume": volume, + "executed_volume": executedVolume, + "side": takerType, + "created_at": at, + "updated_at": at + 1, + "order_type": orderType, + "trades_count": 0 + }; + + const privateTrade = { + "uuid": orderId + 1000000, + "id": tradeId, + "price": price, + "total": (volume * price).toFixed(4), + "amount": volume, + "market": marketId, + "at": at + 1, + "created_at": at, + "taker_type": takerType + }; + + const publicTrade = { + "tid": tradeId, + "date": at, + "taker_type": takerType, + "price": price, + "amount": volume + }; + + if (ws.authenticated && shouldPushOrder) { + sendEvent(ws, "order", order); + + setTimeout(() => { + remainingVolume = volume / (Math.random() + 2); + sendEvent(ws, "order", { ...order, "remaining_volume": String(remainingVolume) }); + + setTimeout(() => { + sendEvent(ws, "order", { ...order, "state": "done", "remaining_volume": "0.0" }); + sendEvent(ws, "trade", privateTrade); + }, 10000); + }, 5000); + } + sendEvent(ws, `${marketId}.trades`, { "trades": [publicTrade] }); + } +}; + +const klinesMock = (ws, marketId) => () => { + let at = parseInt(Date.now() / 1000); + + sendEvent(ws, `${marketId}.kline-1m`, kLine(at, 1)); + sendEvent(ws, `${marketId}.kline-5m`, kLine(at, 5)); + sendEvent(ws, `${marketId}.kline-15m`, kLine(at, 15)); + sendEvent(ws, `${marketId}.kline-30m`, kLine(at, 30)); + sendEvent(ws, `${marketId}.kline-1h`, kLine(at, 60)); + sendEvent(ws, `${marketId}.kline-2h`, kLine(at, 120)); + sendEvent(ws, `${marketId}.kline-4h`, kLine(at, 240)); + sendEvent(ws, `${marketId}.kline-6h`, kLine(at, 360)); + sendEvent(ws, `${marketId}.kline-12h`, kLine(at, 720)); + sendEvent(ws, `${marketId}.kline-1d`, kLine(at, 1440)); + sendEvent(ws, `${marketId}.kline-3d`, kLine(at, 4320)); + sendEvent(ws, `${marketId}.kline-1w`, kLine(at, 10080)); +}; +class RangerMock { + constructor(port, markets) { + this.markets = markets; + this.port = port; + this.start(); + } + start() { + this.wss = new WebSocket.Server({ port: this.port }); + const url = `ws://0.0.0.0:${this.port}`.green + console.log(`Ranger: listening on ${url}`); + const ranger = this; + this.wss.on('connection', function connection(ws, request) { + ranger.initConnection(ws, request); + ws.on('message', (message) => ranger.onMessage(ws, message)); + ws.on('close', () => ranger.closeConnection(ws)); + }); + } + close() { + this.wss.close(); + } + initConnection(ws, request) { + ws.authenticated = true; + ws.timers = []; + ws.streams = []; + ws.sequences = {}; + + console.log(`Ranger: connection accepted, url: ${request.url}`); + this.subscribe(ws, Helpers.getStreamsFromUrl(request.url)); + ws.timers.push(setInterval(tickersMock(ws, this.markets), 3000)); + ws.timers.push(setInterval(balancesMock(ws), 3000)); + this.markets.forEach((name) => { + let { baseUnit, quoteUnit, marketId } = Helpers.getMarketInfos(name); + ws.timers.push(setInterval(orderBookIncrementMock(ws, marketId), 200)); + ws.timers.push(setInterval(orderBookUpdateMock(ws, marketId), 2000)); + ws.timers.push(setInterval(matchedTradesMock(ws, marketId), 10000)); + ws.timers.push(setInterval(klinesMock(ws, marketId), 2500)); + }); + ws.timers.push(setTimeout(() => {sendEvent(ws, "deposit_address", { address: "a4E49HU6CTHyYMmsYt3F1ar1q5W89t3hfQ?dt=1", currencies:["xrp"], type:"create" })}, 15000)); + } + closeConnection() { + console.log('Ranger: connection closed'); + } + onMessage(ws, message) { + if (message.length === 0) + return; + try { + console.log('Ranger: received message: %s', message); + var payload = JSON.parse(message); + + if ("jwt" in payload) { + if (payload["jwt"] === "Bearer null") { + ws.send(JSON.stringify({ "error": { "message": "Authentication failed." } })); + } else { + ws.send(JSON.stringify({ "success": { "message": "Authenticated." } })); + ws.authenticated = true; + } + } + switch (payload["event"]) { + case "subscribe": + this.subscribe(ws, payload["streams"]); + break; + + case "unsubscribe": + this.unsubscribe(ws, payload["streams"]); + break; + } + } catch (err) { + console.log(`Ranger: Something went wrong: ${err} (message: ${message})`); + } + + } + subscribe(ws, streams) { + ws.streams = Helpers.unique(ws.streams.concat(streams)); + console.log(`subcribed to : ${ws.streams}`) + this.markets.forEach((name) => { + let { marketId } = Helpers.getMarketInfos(name); + orderBookSnapshotMock(ws, marketId)(); + }); + ws.send(JSON.stringify({ "success": { "message": "subscribed", "streams": ws.streams } })) + } + unsubscribe(ws, streams) { + ws.streams = ws.streams.filter((value) => streams.indexOf(value) === -1); + ws.send(JSON.stringify({ "success": { "message": "unsubscribed", "streams": ws.streams } })) + } +} + +module.exports = RangerMock; diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..c8ce33c --- /dev/null +++ b/nginx.conf @@ -0,0 +1,58 @@ +map $sent_http_content_type $expires { + default off; + text/html 1h; + text/css max; + application/javascript 10m; + ~image/ max; +} + +server { + listen 3000; + server_name localhost; + absolute_redirect off; + expires $expires; + gzip on; + gzip_comp_level 5; + gzip_min_length 256; + gzip_types + application/atom+xml + application/javascript + application/json + application/ld+json + application/manifest+json + application/rss+xml + application/vnd.geo+json + application/vnd.ms-fontobject + application/x-font-ttf + application/x-web-app-manifest+json + application/xhtml+xml + application/xml + font/opentype + image/bmp + image/svg+xml + image/x-icon + text/cache-manifest + text/css + text/plain + text/vcard + text/vnd.rim.location.xloc + text/vtt + text/x-component + text/x-cross-domain-policy; + + location = /health { + access_log off; + default_type text/plain; + return 200 "ok\n"; + } + + location / { + root /usr/share/nginx/html; + index index.html; + try_files $uri $uri/ /index.html?/$request_uri; + sendfile on; + sendfile_max_chunk 1m; + tcp_nopush on; + gzip_static on; + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..670bba3 --- /dev/null +++ b/package.json @@ -0,0 +1,163 @@ +{ + "name": "@fibitex/gereh", + "version": "2.6.0", + "private": true, + "dependencies": { + "@capacitor/android": "2.4.1", + "@capacitor/cli": "^2.4.2", + "@capacitor/core": "^2.4.1", + "@capacitor/ios": "2.4.1", + "@ethersproject/providers": "^5.0.13", + "@formatjs/intl-pluralrules": "^3.2.5", + "@formatjs/intl-relativetimeformat": "^7.0.0", + "@ionic/cli": "^6.11.11", + "@openware/cryptofont": "2.3.0", + "@sentry/browser": "^7.17.2", + "@sentry/react": "^7.17.2", + "@sentry/tracing": "^7.17.2", + "@types/compression-webpack-plugin": "^2.0.1", + "@types/react-select": "^3.1.2", + "@types/ws": "^6.0.4", + "@web3-react/core": "^6.1.1", + "@web3-react/injected-connector": "^6.0.7", + "axios": "^0.32.0", + "bitcoincashjs": "0.1.10", + "bootstrap": "^4.3.1", + "compression-webpack-plugin": "^3.0.1", + "history": "^4.7.2", + "http-signature": "^1.3.5", + "i18n-iso-countries": "^3.7.8", + "immutability-helper": "^3.0.0", + "javascript-obfuscator": "^2.6.1", + "js-yaml": "^3.12.0", + "moment": "^2.23.0", + "moment-timezone": "^0.5.23", + "postcss": "^7.0.23", + "postcss-cli": "^6.1.3", + "postcss-loader": "^3.0.0", + "qrcode.react": "^1.0.0", + "react": "16.10", + "react-accessible-accordion": "^3.3.4", + "react-bootstrap": "^1.0.0-beta.16", + "react-color": "^2.18.0", + "react-countdown": "^2.3.2", + "react-date-picker": "^7.0.0", + "react-dom": "^16.6.3", + "react-dropzone": "^11.3.2", + "react-fade-in": "^0.1.6", + "react-ga": "^3.3.1", + "react-ga4": "^1.4.1", + "react-google-recaptcha": "^1.0.4", + "react-grid-layout": "^0.18.3", + "react-intl": "^3.12.1", + "react-maskinput": "^1.0.1", + "react-perfect-scrollbar": "^1.5.8", + "react-redux": "7.1.0", + "react-router": "^5.1.2", + "react-router-dom": "^5.1.2", + "react-scripts": "3.4.3", + "react-scroll": "^1.8.1", + "react-select": "^3.2.0", + "react-tooltip": "^4.2.21", + "recharts": "^1.8.5", + "redux": "^4.0.1", + "redux-saga": "^1.1.3", + "redux-sentry-middleware": "^0.1.8", + "sinon": "^7.2.3", + "stylelint": "^13.2.1", + "stylelint-config-standard": "^20.0.0", + "stylelint-order": "^4.0.0", + "tslint": "^5.13.1", + "ua-parser-js": "^0.7.19", + "ws": "^7.5.10" + }, + "scripts": { + "build:css": "postcss src/index.pcss -o src/index.css", + "watch:css": "postcss src/index.pcss -o src/index.css -w", + "lint": "yarn style:lint && tsc --noEmit && tslint --project .", + "lint:fix": "tslint --project . --fix", + "style:lint": "npx stylelint \"**/*.pcss\"", + "mockAPI": "node mocks/mockAPI.js", + "mockWS": "node mocks/mockWS.js", + "start": "npm-run-all -p watch:css start-js", + "start-mock": "npm-run-all -p watch:css start-js mockAPI mockWS", + "start-js": "react-scripts start", + "build-js": "react-app-rewired build --scripts-version react-scripts build", + "build": "npm-run-all build:css build-js clean:mapfiles", + "clean:mapfiles": "find build -name '*.map' -exec rm {} ';'", + "test": "react-scripts test", + "test:coverage": "react-scripts test --collectCoverage=true", + "test:ci": "react-scripts test --ci", + "spec:integration": "cypress open", + "eject": "react-scripts eject", + "clean": "rimraf build", + "analyze": "source-map-explorer build/static/js/main.*" + }, + "devDependencies": { + "@openware/coding-standards": "2.3.0", + "@types/axios": "^0.14.0", + "@types/classnames": "^2.2.6", + "@types/enzyme": "^3.1.13", + "@types/enzyme-adapter-react-16": "^1.0.3", + "@types/history": "^4.7.0", + "@types/jest": "^23.3.1", + "@types/jquery": "^3.3.6", + "@types/node": "^10.9.4", + "@types/react": "^16.9.14", + "@types/react-dom": "^16.9.4", + "@types/react-hot-loader": "^4.1.0", + "@types/react-redux": "7.1.9", + "@types/react-router": "^5.1.3", + "@types/react-router-dom": "^5.1.3", + "@types/react-test-renderer": "^16.0.2", + "@types/webpack-env": "^1.13.6", + "autoprefixer": "^9.1.1", + "axios-mock-adapter": "^1.16.0", + "babel-jest": "24.9.0", + "chalk": "^2.4.1", + "classnames": "^2.2.6", + "colors": "1.3.2", + "cryptocurrency-icons": "^0.16.1", + "cssnano": "^4.0.5", + "cypress": "^3.1.5", + "enzyme": "^3.10.0", + "enzyme-adapter-react-16": "^1.10.0", + "enzyme-to-json": "^3.3.4", + "file-loader": "^1.1.11", + "header-case-normalizer": "1.0.3", + "husky": "^1.0.0-rc.13", + "isomorphic-ws": "^4.0.1", + "jest": "24.9.0", + "js-combinatorics": "0.5.0", + "npm-run-all": "^4.1.5", + "postcss-autoreset": "^2.0.2", + "postcss-hexrgba": "^1.0.1", + "postcss-import": "^12.0.0", + "postcss-nested": "^3.0.0", + "prettier": "1.9.0", + "ramda": "^0.26.1", + "react-app-rewired": "^2.1.5", + "react-hot-loader": "^4.3.4", + "react-test-renderer": "^16.4.2", + "redux-mock-store": "^1.5.3", + "rimraf": "^2.6.2", + "source-map-explorer": "^1.7.0", + "ts-jest": "^23.1.3", + "ts-node": "^7.0.1", + "tslint-plugin-prettier": "^2.3.0", + "typescript": "3.8.2", + "webpack": "4.42.0", + "webpack-obfuscator": "^2.3.0" + }, + "husky": { + "hooks": { + "commit-msg": "node ./scripts/validate_commit.js", + "pre-push": "yarn lint && CI=true yarn test --no-watch" + } + }, + "browserslist": [ + ">0.2%", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..9f49d15 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,11 @@ +module.exports = { + include: [ + 'node_modules', + ], + plugins: [ + require('postcss-import'), + require('postcss-nested'), + require('postcss-hexrgba'), + require('autoprefixer'), + ], +}; diff --git a/public/charting_library/charting_library.min.d.ts b/public/charting_library/charting_library.min.d.ts new file mode 100644 index 0000000..a0c3bd7 --- /dev/null +++ b/public/charting_library/charting_library.min.d.ts @@ -0,0 +1,1520 @@ +/// + +/** + * This is the generic type useful for declaring a nominal type, + * which does not structurally matches with the base type and + * the other types declared over the same base type + * + * Usage: + * @example + * type Index = Nominal; + * // let i: Index = 42; // this fails to compile + * let i: Index = 42 as Index; // OK + * @example + * type TagName = Nominal; + */ +export declare type Nominal = T & { + [Symbol.species]: Name; +}; +export declare const enum ConnectionStatus { + Connected = 1, + Connecting = 2, + Disconnected = 3, + Error = 4 +} +export declare const enum NotificationType { + Error = 0, + Success = 1 +} +export declare const enum OrderStatus { + Canceled = 1, + Filled = 2, + Inactive = 3, + Placing = 4, + Rejected = 5, + Working = 6 +} +export declare const enum OrderStatusFilter { + All = 0, + Canceled = 1, + Filled = 2, + Inactive = 3, + Rejected = 5, + Working = 6 +} +export declare const enum OrderTicketFocusControl { + StopLoss = 1, + StopPrice = 2, + TakeProfit = 3 +} +export declare const enum OrderType { + Limit = 1, + Market = 2, + Stop = 3, + StopLimit = 4 +} +export declare const enum ParentType { + Order = 1, + Position = 2, + Trade = 3 +} +export declare const enum PriceScaleMode { + Normal = 0, + Log = 1, + Percentage = 2, + IndexedTo100 = 3 +} +export declare const enum SeriesStyle { + Bars = 0, + Candles = 1, + Line = 2, + Area = 3, + HeikenAshi = 8, + HollowCandles = 9, + Renko = 4, + Kagi = 5, + PointAndFigure = 6, + LineBreak = 7 +} +export declare const enum Side { + Buy = 1, + Sell = -1 +} +export declare const widget: ChartingLibraryWidgetConstructor; +export declare function version(): string; +export declare type ActionMetaInfo = ActionDescriptionWithCallback | MenuSeparator; +export declare type AvailableSaveloadVersions = '1.0' | '1.1'; +export declare type ChartActionId = 'chartProperties' | 'compareOrAdd' | 'scalesProperties' | 'tmzProperties' | 'paneObjectTree' | 'insertIndicator' | 'symbolSearch' | 'changeInterval' | 'timeScaleReset' | 'chartReset' | 'seriesHide' | 'studyHide' | 'lineToggleLock' | 'lineHide' | 'showLeftAxis' | 'showRightAxis' | 'scaleSeriesOnly' | 'drawingToolbarAction' | 'stayInDrawingModeAction' | 'hideAllMarks' | 'showCountdown' | 'showSeriesLastValue' | 'showSymbolLabelsAction' | 'showStudyLastValue' | 'showStudyPlotNamesAction' | 'undo' | 'redo' | 'paneRemoveAllStudiesDrawingTools'; +export declare type Direction = 'buy' | 'sell'; +export declare type DomeCallback = (data: DOMData) => void; +export declare type DrawingEventType = 'click' | 'move' | 'remove' | 'hide' | 'show'; +export declare type EditObjectDialogObjectType = 'mainSeries' | 'drawing' | 'study' | 'other'; +export declare type EmptyCallback = () => void; +export declare type EntityId = Nominal; +export declare type ErrorCallback = (reason: string) => void; +export declare type FieldDescriptor = TimeFieldDescriptor | SeriesFieldDescriptor | StudyFieldDescriptor; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type IBasicDataFeed = IDatafeedChartApi & IExternalDatafeed; +export declare type InputFieldValidator = (value: any) => InputFieldValidatorResult; +export declare type InputFieldValidatorResult = PositiveBaseInputFieldValidatorResult | NegativeBaseInputFieldValidatorResult; +export declare type LanguageCode = 'ar' | 'zh' | 'cs' | 'da_DK' | 'nl_NL' | 'en' | 'et_EE' | 'fr' | 'de' | 'el' | 'he_IL' | 'hu_HU' | 'id_ID' | 'it' | 'ja' | 'ko' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sk_SK' | 'es' | 'sv' | 'th' | 'tr' | 'vi'; +export declare type LayoutType = SingleChartLayoutType | MultipleChartsLayoutType; +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export declare type MultipleChartsLayoutType = '2h' | '2v' | '2-1' | '3s' | '3h' | '3v' | '4' | '6' | '8' | '1-2' | '3r' | '4h' | '4v' | '4s' | '1-3' | '2-2' | '1-4' | '5s' | '6c' | '8c'; +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export declare type Order = OrderWithParent | PlacedOrder; +export declare type OrderDialogCustomField = TextWithCheckboxFieldMetaInfo | CustomComboBoxMetaInfo; +export declare type PineJS = any; +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export declare type ResolutionBackValues = 'D' | 'M'; +export declare type ResolutionString = string; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type RssNewsFeedItem = RssNewsFeedInfo | RssNewsFeedInfo[]; +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type SeriesFormat = 'price' | 'volume'; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type ShapePoint = StickedPoint | PricedPoint | TimePoint; +export declare type SingleChartLayoutType = 's'; +export declare type StandardFormatterName = 'date' | 'default' | 'fixed' | 'formatQuantity' | 'formatPrice' | 'formatPriceForexSup' | 'integerSeparated' | 'localDate' | 'percentage' | 'pips' | 'profit' | 'side' | 'status' | 'symbol' | 'type' | 'unixTimeAgo'; +export declare type StudyInputId = Nominal; +export declare type StudyInputValue = string | number | boolean; +export declare type StudyOverrideValueType = string | number | boolean; +export declare type StudyPriceScale = 'left' | 'right' | 'no-scale' | 'as-series'; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type SupportedLineTools = 'text' | 'anchored_text' | 'note' | 'anchored_note' | 'double_curve' | 'arc' | 'icon' | 'arrow_up' | 'arrow_down' | 'arrow_left' | 'arrow_right' | 'price_label' | 'flag' | 'vertical_line' | 'horizontal_line' | 'cross_line' | 'horizontal_ray' | 'trend_line' | 'info_line' | 'trend_angle' | 'arrow' | 'ray' | 'extended' | 'parallel_channel' | 'disjoint_angle' | 'flat_bottom' | 'pitchfork' | 'schiff_pitchfork_modified' | 'schiff_pitchfork' | 'balloon' | 'inside_pitchfork' | 'pitchfan' | 'gannbox' | 'gannbox_square' | 'gannbox_fixed' | 'gannbox_fan' | 'fib_retracement' | 'fib_trend_ext' | 'fib_speed_resist_fan' | 'fib_timezone' | 'fib_trend_time' | 'fib_circles' | 'fib_spiral' | 'fib_speed_resist_arcs' | 'fib_channel' | 'xabcd_pattern' | 'cypher_pattern' | 'abcd_pattern' | 'callout' | 'triangle_pattern' | '3divers_pattern' | 'head_and_shoulders' | 'fib_wedge' | 'elliott_impulse_wave' | 'elliott_triangle_wave' | 'elliott_triple_combo' | 'elliott_correction' | 'elliott_double_combo' | 'cyclic_lines' | 'time_cycles' | 'sine_line' | 'long_position' | 'short_position' | 'forecast' | 'date_range' | 'price_range' | 'date_and_price_range' | 'bars_pattern' | 'ghost_feed' | 'projection' | 'rectangle' | 'rotated_rectangle' | 'ellipse' | 'triangle' | 'polyline' | 'curve' | 'cursor' | 'dot' | 'arrow_cursor' | 'eraser' | 'measure' | 'zoom' | 'brush'; +export declare type SymbolType = 'stock' | 'index' | 'forex' | 'futures' | 'bitcoin' | 'crypto' | 'undefined' | 'expression' | 'spread' | 'cfd'; +export declare type TableElementFormatFunction = (inputs: TableFormatterInputs) => string | JQuery; +export declare type TextInputFieldValidator = (value: string) => InputFieldValidatorResult; +export declare type ThemeName = 'Light' | 'Dark'; +export declare type Timezone = 'Etc/UTC' | CustomTimezones; +export declare type WatchListSymbolListAddedCallback = (listId: string, symbols: string[]) => void; +export declare type WatchListSymbolListRemovedCallback = (listId: string) => void; +export declare type WatchListSymbolListRenamedCallback = (listId: string, oldName: string, newName: string) => void; +export declare type WatchedValueCallback = (value: T) => void; +export interface AccessList { + type: 'black' | 'white'; + tools: AccessListItem[]; +} +export interface AccessListItem { + name: string; + grayed?: boolean; +} +export interface AccountInfo { + id: string; + name: string; + currency?: string; + currencySign?: string; +} +export interface AccountManagerColumn { + id?: string; + label: string; + className?: string; + formatter?: StandardFormatterName | 'orderSettings' | 'posSettings' | string; + property?: string; + sortProp?: string; + modificationProperty?: string; + notSortable?: boolean; + help?: string; + highlightDiff?: boolean; + fixedWidth?: boolean; + notHideable?: boolean; + hideByDefault?: boolean; +} +export interface AccountManagerInfo { + accountTitle: string; + accountsList?: AccountInfo[]; + account?: IWatchedValue; + summary: AccountManagerSummaryField[]; + customFormatters?: TableElementFormatter[]; + orderColumns: OrderTableColumn[]; + orderColumnsSorting?: SortingParameters; + historyColumns?: AccountManagerColumn[]; + historyColumnsSorting?: SortingParameters; + positionColumns?: AccountManagerColumn[]; + tradeColumns?: AccountManagerColumn[]; + pages: AccountManagerPage[]; + possibleOrderStatuses?: OrderStatus[]; + marginUsed?: IWatchedValue; + contextMenuActions?(contextMenuEvent: JQueryEventObject, activePageActions: ActionMetaInfo[]): Promise; +} +export interface AccountManagerPage { + id: string; + title: string; + tables: AccountManagerTable[]; +} +export interface AccountManagerSummaryField { + text: string; + wValue: IWatchedValueReadonly; + formatter?: string; +} +export interface AccountManagerTable { + id: string; + title?: string; + columns: AccountManagerColumn[]; + initialSorting?: SortingParameters; + changeDelegate: ISubscription<(data: {}) => void>; + flags?: AccountManagerTableFlags; + getData(paginationLastId?: string | number): Promise<{}[]>; +} +export interface AccountManagerTableFlags { + supportPagination?: boolean; +} +export interface ActionDescription { + text?: '-' | string; + separator?: boolean; + shortcut?: string; + tooltip?: string; + checked?: boolean; + checkable?: boolean; + enabled?: boolean; + externalLink?: boolean; + icon?: string; +} +export interface ActionDescriptionWithCallback extends ActionDescription { + action: (a: ActionDescription) => void; +} +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface BaseInputFieldValidatorResult { + valid: boolean; +} +export interface Brackets { + stopLoss?: number; + takeProfit?: number; +} +export interface BrokerConfigFlags { + showQuantityInsteadOfAmount?: boolean; + supportOrderBrackets?: boolean; + supportPositions?: boolean; + supportPositionBrackets?: boolean; + supportTradeBrackets?: boolean; + supportTrades?: boolean; + supportClosePosition?: boolean; + supportCloseTrade?: boolean; + supportEditAmount?: boolean; + supportLevel2Data?: boolean; + supportDOM?: boolean; + supportMultiposition?: boolean; + supportPLUpdate?: boolean; + supportReducePosition?: boolean; + supportReversePosition?: boolean; + supportMarketOrders?: boolean; + supportLimitOrders?: boolean; + supportStopOrders?: boolean; + supportStopLimitOrders?: boolean; + supportDemoLiveSwitcher?: boolean; + supportMarketBrackets?: boolean; + supportSymbolSearch?: boolean; + supportModifyDuration?: boolean; + supportModifyOrder?: boolean; + supportMargin?: boolean; + calculatePLUsingLast?: boolean; + cancellingBracketCancelsParentOrder?: boolean; + cancellingOnePositionBracketsCancelsOther?: boolean; + requiresFIFOCloseTrades?: boolean; + supportBottomWidget?: boolean; + /** + * @deprecated + */ + supportBrackets?: boolean; +} +export interface BrokerCustomUI { + showOrderDialog?: (order: PreOrder | Order, focus?: OrderTicketFocusControl) => Promise; + showPositionDialog?: (position: Position | Trade, brackets: Brackets, focus?: OrderTicketFocusControl) => Promise; +} +export interface ChartData { + id: string; + name: string; + symbol: string; + resolution: ResolutionString; + content: string; +} +export interface ChartMetaInfo { + id: string; + name: string; + symbol: string; + resolution: ResolutionString; + timestamp: number; +} +export interface ChartingLibraryWidgetConstructor { + new (options: ChartingLibraryWidgetOptions | TradingTerminalWidgetOptions): IChartingLibraryWidget; +} +export interface ChartingLibraryWidgetOptions { + container_id: string; + datafeed: IBasicDataFeed | (IBasicDataFeed & IDatafeedQuotesApi); + interval: ResolutionString; + symbol?: string; + auto_save_delay?: number; + autosize?: boolean; + debug?: boolean; + disabled_features?: string[]; + drawings_access?: AccessList; + enabled_features?: string[]; + fullscreen?: boolean; + height?: number; + library_path?: string; + locale: LanguageCode; + numeric_formatting?: NumericFormattingParams; + saved_data?: object; + studies_access?: AccessList; + study_count_limit?: number; + symbol_search_request_delay?: number; + timeframe?: string; + timezone?: 'exchange' | Timezone; + toolbar_bg?: string; + width?: number; + charts_storage_url?: string; + charts_storage_api_version?: AvailableSaveloadVersions; + client_id?: string; + user_id?: string; + load_last_chart?: boolean; + studies_overrides?: StudyOverrides; + customFormatters?: CustomFormatters; + overrides?: Overrides; + snapshot_url?: string; + preset?: 'mobile'; + time_frames?: TimeFrameItem[]; + custom_css_url?: string; + favorites?: Favorites; + save_load_adapter?: IExternalSaveLoadAdapter; + loading_screen?: LoadingScreenOptions; + settings_adapter?: ISettingsAdapter; + theme?: ThemeName; + custom_indicators_getter?: (PineJS: PineJS) => Promise>; +} +export interface ContextMenuItem { + position: 'top' | 'bottom'; + text: string; + click: EmptyCallback; +} +export interface CreateButtonOptions { + align: 'right' | 'left'; +} +export interface CreateShapeOptions { + shape?: 'arrow_up' | 'arrow_down' | 'flag' | 'vertical_line' | 'horizontal_line'; + text?: string; + lock?: boolean; + disableSelection?: boolean; + disableSave?: boolean; + disableUndo?: boolean; + overrides?: TOverrides; + zOrder?: 'top' | 'bottom'; + showInObjectsTree?: boolean; +} +export interface CreateStudyOptions { + checkLimit?: boolean; + priceScale?: StudyPriceScale; +} +export interface CreateStudyTemplateOptions { + saveInterval?: boolean; +} +export interface CreateTradingPrimitiveOptions { + disableUndo?: boolean; +} +export interface CrossHairMovedEventParams { + time: number; + price: number; +} +export interface CustomComboBoxItem { + text: string; + value: string; +} +export interface CustomComboBoxMetaInfo extends CustomInputFieldMetaInfo { + inputType: 'ComboBox'; + items: CustomComboBoxItem[]; +} +export interface CustomFields { + [key: string]: any; +} +export interface CustomFormatter { + format(date: Date): string; + formatLocal(date: Date): string; +} +export interface CustomFormatters { + timeFormatter: CustomFormatter; + dateFormatter: CustomFormatter; +} +export interface CustomIndicator { + readonly name: string; + readonly metainfo: any; + readonly constructor: any; +} +export interface CustomInputFieldMetaInfo { + inputType: string; + id: string; + title: string; + placeHolder?: string; + value?: any; + validator?: InputFieldValidator; + customInfo?: any; +} +export interface CustomInputFieldsValues { + [fieldId: string]: TextWithCheckboxValue | string | any; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface DOMLevel { + price: number; + volume: number; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface DefaultContextMenuActionsParams { +} +export interface DefaultDropdownActionsParams { + showFloatingToolbar?: boolean; + showDOM?: boolean; + showOrderPanel?: boolean; + tradingProperties?: boolean; + selectAnotherBroker?: boolean; + disconnect?: boolean; + showHowToUse?: boolean; +} +export interface DialogParams { + title: string; + body: string; + callback: CallbackType; +} +export interface EditObjectDialogEventParams { + objectType: EditObjectDialogObjectType; + scriptTitle: string; +} +export interface EntityInfo { + id: EntityId; + name: string; +} +export interface ErrorFormatterParseResult extends FormatterParseResult { + error?: string; + res: false; +} +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface Execution extends CustomFields { + symbol: string; + brokerSymbol?: string; + price: number; + qty: number; + side: Side; + time: number; +} +export interface ExportDataOptions { + from?: number; + to?: number; + includeTime?: boolean; + includeSeries?: boolean; + includedStudies: ReadonlyArray | 'all'; +} +export interface ExportedData { + schema: FieldDescriptor[]; + data: Float64Array[]; +} +export interface Favorites { + intervals: ResolutionString[]; + chartTypes: string[]; +} +export interface FormatterParseResult { + res: boolean; +} +export interface GrayedObject { + type: 'drawing' | 'study'; + name: string; +} +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface IBrokerCommon { + chartContextMenuActions(context: ITradeContext, options?: DefaultContextMenuActionsParams): Promise; + isTradable(symbol: string): Promise; + connectionStatus(): ConnectionStatus; + orders(): Promise; + positions?(): Promise; + trades?(): Promise; + executions(symbol: string): Promise; + symbolInfo(symbol: string): Promise; + accountInfo(): Promise; + accountManagerInfo(): AccountManagerInfo; + formatter?(symbol: string, alignToMinMove: boolean): Promise; + spreadFormatter?(symbol: string): Promise; + quantityFormatter?(symbol: string): Promise; +} +export interface IBrokerConnectionAdapterFactory { + createDelegate(): IDelegate; + createWatchedValue(value?: T): IWatchedValue; + createPriceFormatter(priceScale: number, minMove: number, fractional: boolean, minMove2: number): IFormatter; +} +export interface IBrokerConnectionAdapterHost { + factory: IBrokerConnectionAdapterFactory; + connectionStatusUpdate(status: ConnectionStatus, message?: string): void; + defaultFormatter(symbol: string, alignToMinMove: boolean): Promise; + numericFormatter(decimalPlaces: number): Promise; + quantityFormatter(decimalPlaces?: number): Promise; + defaultContextMenuActions(context: ITradeContext, params?: DefaultContextMenuActionsParams): Promise; + defaultDropdownMenuActions(options?: Partial): ActionMetaInfo[]; + floatingTradingPanelVisibility(): IWatchedValue; + domPanelVisibility(): IWatchedValue; + orderPanelVisibility(): IWatchedValue; + silentOrdersPlacement(): IWatchedValue; + patchConfig(config: Partial): void; + patchOrderDialogOptions(options: OrderDialogOptions): void; + setDurations(durations: OrderDurationMetaInfo[]): void; + orderUpdate(order: Order, isHistoryUpdate?: boolean): void; + orderPartialUpdate(id: string, orderChanges: Partial): void; + positionUpdate(position: Position, isHistoryUpdate?: boolean): void; + positionPartialUpdate(id: string, positionChanges: Partial): void; + tradeUpdate(trade: Trade, isHistoryUpdate?: boolean): void; + tradePartialUpdate(id: string, tradeChanges: Partial): void; + executionUpdate(execution: Execution, isHistoryUpdate?: boolean): void; + fullUpdate(): void; + realtimeUpdate(symbol: string, data: TradingQuotes): void; + plUpdate(positionId: string, pl: number): void; + pipValueUpdate(symbol: string, pipValues: PipValues): void; + tradePLUpdate(tradeId: string, pl: number): void; + equityUpdate(equity: number): void; + marginAvailableUpdate(marginAvailable: number): void; + domeUpdate(symbol: string, equity: DOMData): void; + showOrderDialog(order: T, handler: (order: T) => Promise, focus?: OrderTicketFocusControl, options?: OrderDialogOptions): Promise; + showCancelOrderDialog(orderId: string, handler: () => Promise): Promise; + showCancelMultipleOrdersDialog(symbol: string, side: Side | undefined, qty: number, handler: () => Promise): Promise; + showCancelBracketsDialog(orderId: string, handler: () => Promise): Promise; + showCancelMultipleBracketsDialog(orderId: string, handler: () => Promise): Promise; + showClosePositionDialog(positionId: string, handler: () => Promise): Promise; + showReversePositionDialog(position: Position, handler: () => Promise): Promise; + showPositionBracketsDialog(position: Position | Trade, brackets: Brackets, focus: OrderTicketFocusControl | null, handler: (brackets: Brackets) => Promise): Promise; + showNotification(title: string, text: string, notificationType?: NotificationType): void; + setButtonDropdownActions(descriptions: ActionMetaInfo[]): void; + activateBottomWidget(): Promise; + showTradingProperties(): void; + suggestedQty(): SuggestedQuantity; + symbolSnapshot(symbol: string): Promise; + showMessageDialog(caption: string, message: string): void; +} +export interface IBrokerTerminal extends IBrokerWithoutRealtime { + subscribeRealtime(symbol: string): void; + unsubscribeRealtime(symbol: string): void; +} +export interface IBrokerWithoutRealtime extends IBrokerCommon { + subscribeDOME?(symbol: string): void; + unsubscribeDOME?(symbol: string): void; + placeOrder(order: PreOrder): Promise; + modifyOrder(order: Order): Promise; + cancelOrder(orderId: string): Promise; + cancelOrders(symbol: string, side: Side | undefined, ordersIds: string[]): Promise; + reversePosition?(positionId: string): Promise; + closePosition?(positionId: string): Promise; + closeTrade?(tradeId: string): Promise; + editPositionBrackets?(positionId: string, brackets?: Brackets): Promise; + editTradeBrackets?(tradeId: string, brackets?: Brackets): Promise; + /** + * @deprecated Brokers should always send PL and equity updates + */ + subscribePL?(positionId: string): void; + subscribeEquity?(): void; + subscribeMarginAvailable?(symbol: string): void; + subscribePipValue?(symbol: string): void; + unsubscribePipValue?(symbol: string): void; + unsubscribeMarginAvailable?(symbol: string): void; + /** + * @deprecated + */ + unsubscribePL?(positionId: string): void; + unsubscribeEquity?(): void; +} +export interface IChartWidgetApi { + onDataLoaded(): ISubscription<() => void>; + onSymbolChanged(): ISubscription<() => void>; + onIntervalChanged(): ISubscription<(interval: ResolutionString, timeFrameParameters: { + timeframe?: string; + }) => void>; + onVisibleRangeChanged(): ISubscription<() => void>; + dataReady(callback: () => void): boolean; + crossHairMoved(callback: (params: CrossHairMovedEventParams) => void): void; + setVisibleRange(range: VisibleTimeRange, options?: SetVisibleRangeOptions): Promise; + setSymbol(symbol: string, callback: () => void): void; + setResolution(resolution: ResolutionString, callback: () => void): void; + resetData(): void; + executeActionById(actionId: ChartActionId): void; + getCheckableActionState(actionId: ChartActionId): boolean; + refreshMarks(): void; + clearMarks(): void; + setChartType(type: SeriesStyle): void; + getAllShapes(): EntityInfo[]; + getAllStudies(): EntityInfo[]; + /** + * @deprecated Use shape/study API instead ([getStudyById] / [getShapeById]) + */ + setEntityVisibility(entityId: EntityId, isVisible: boolean): void; + createStudy(name: string, forceOverlay: boolean, lock?: boolean, inputs?: TStudyInputValue[], overrides?: TOverrides, options?: CreateStudyOptions): Promise; + getStudyById(entityId: EntityId): IStudyApi; + getSeries(): ISeriesApi; + createShape(point: ShapePoint, options: CreateShapeOptions): EntityId | null; + createMultipointShape(points: ShapePoint[], options: CreateShapeOptions): EntityId | null; + getShapeById(entityId: EntityId): ILineDataSourceApi; + removeEntity(entityId: EntityId): void; + removeAllShapes(): void; + removeAllStudies(): void; + selection(): ISelectionApi; + showPropertiesDialog(studyId: EntityId): void; + createStudyTemplate(options: CreateStudyTemplateOptions): object; + applyStudyTemplate(template: object): void; + createOrderLine(options: CreateTradingPrimitiveOptions): IOrderLineAdapter; + createPositionLine(options: CreateTradingPrimitiveOptions): IPositionLineAdapter; + createExecutionShape(options: CreateTradingPrimitiveOptions): IExecutionLineAdapter; + symbol(): string; + symbolExt(): SymbolExt; + resolution(): ResolutionString; + getVisibleRange(): VisibleTimeRange; + /** + * @deprecated Use Price Scale API instead + */ + getVisiblePriceRange(): VisiblePriceRange; + scrollPosition(): number; + defaultScrollPosition(): number; + priceFormatter(): IFormatter; + chartType(): SeriesStyle; + setTimezone(timezone: 'exchange' | Timezone): void; + getTimezone(): 'exchange' | Timezone; + getPanes(): IPaneApi[]; + exportData(options?: ExportDataOptions): Promise; + canZoomOut(): boolean; + zoomOut(): void; + setZoomEnabled(enabled: boolean): void; + setScrollEnabled(enabled: boolean): void; +} +export interface IChartingLibraryWidget { + headerReady(): Promise; + onChartReady(callback: EmptyCallback): void; + onGrayedObjectClicked(callback: (obj: GrayedObject) => void): void; + onShortcut(shortCut: string, callback: EmptyCallback): void; + subscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; + unsubscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; + chart(index?: number): IChartWidgetApi; + setLanguage(lang: LanguageCode): void; + setSymbol(symbol: string, interval: ResolutionString, callback: EmptyCallback): void; + remove(): void; + closePopupsAndDialogs(): void; + selectLineTool(linetool: SupportedLineTools): void; + selectedLineTool(): SupportedLineTools; + save(callback: (state: object) => void): void; + load(state: object): void; + getSavedCharts(callback: (chartRecords: SaveLoadChartRecord[]) => void): void; + loadChartFromServer(chartRecord: SaveLoadChartRecord): void; + saveChartToServer(onComplete?: EmptyCallback, onFail?: EmptyCallback, options?: SaveChartToServerOptions): void; + removeChartFromServer(chartId: string, onCompleteCallback: EmptyCallback): void; + onContextMenu(callback: (unixTime: number, price: number) => ContextMenuItem[]): void; + createButton(options?: CreateButtonOptions): HTMLElement; + showNoticeDialog(params: DialogParams<() => void>): void; + showConfirmDialog(params: DialogParams<(confirmed: boolean) => void>): void; + showLoadChartDialog(): void; + showSaveAsChartDialog(): void; + symbolInterval(): SymbolIntervalResult; + mainSeriesPriceFormatter(): IFormatter; + getIntervals(): string[]; + getStudiesList(): string[]; + addCustomCSSFile(url: string): void; + applyOverrides(overrides: TOverrides): void; + applyStudiesOverrides(overrides: object): void; + watchList(): WatchListApi; + activeChart(): IChartWidgetApi; + chartsCount(): number; + layout(): LayoutType; + setLayout(layout: LayoutType): void; + layoutName(): string; + changeTheme(themeName: ThemeName): void; + takeScreenshot(): void; + lockAllDrawingTools(): IWatchedValue; + hideAllDrawingTools(): IWatchedValue; + magnetEnabled(): IWatchedValue; + magnetMode(): IWatchedValue; + undoRedoState(): UndoRedoState; +} +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbol: string, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export interface IDelegate extends ISubscription { + fire: TFunc; +} +export interface IExecutionLineAdapter { + remove(): void; + getPrice(): number; + setPrice(value: number): this; + getTime(): number; + setTime(value: number): this; + getDirection(): Direction; + setDirection(value: Direction): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getArrowHeight(): number; + setArrowHeight(value: number): this; + getArrowSpacing(): number; + setArrowSpacing(value: number): this; + getFont(): string; + setFont(value: string): this; + getTextColor(): string; + setTextColor(value: string): this; + getArrowColor(): string; + setArrowColor(value: string): this; +} +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface IExternalSaveLoadAdapter { + getAllCharts(): Promise; + removeChart(chartId: string): Promise; + saveChart(chartData: ChartData): Promise; + getChartContent(chartId: string): Promise; + getAllStudyTemplates(): Promise; + removeStudyTemplate(studyTemplateInfo: StudyTemplateMetaInfo): Promise; + saveStudyTemplate(studyTemplateData: StudyTemplateData): Promise; + getStudyTemplateContent(studyTemplateInfo: StudyTemplateMetaInfo): Promise; +} +export interface IFormatter { + format(value: any): string; + parse?(value: string): ErrorFormatterParseResult | SuccessFormatterParseResult; +} +export interface ILineDataSourceApi { + isSelectionEnabled(): boolean; + setSelectionEnabled(enable: boolean): void; + isSavingEnabled(): boolean; + setSavingEnabled(enable: boolean): void; + isShowInObjectsTreeEnabled(): boolean; + setShowInObjectsTreeEnabled(enabled: boolean): void; + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + bringToFront(): void; + sendToBack(): void; + getProperties(): object; + setProperties(newProperties: object): void; + getPoints(): PricedPoint[]; + setPoints(points: ShapePoint[]): void; +} +export interface IOrderLineAdapter { + remove(): void; + onModify(callback: () => void): this; + onModify(data: T, callback: (data: T) => void): this; + onMove(callback: () => void): this; + onMove(data: T, callback: (data: T) => void): this; + onCancel(callback: () => void): this; + onCancel(data: T, callback: (data: T) => void): this; + getPrice(): number; + setPrice(value: number): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getModifyTooltip(): string; + setModifyTooltip(value: string): this; + getCancelTooltip(): string; + setCancelTooltip(value: string): this; + getQuantity(): string; + setQuantity(value: string): this; + getEditable(): boolean; + setEditable(value: boolean): this; + getExtendLeft(): boolean; + setExtendLeft(value: boolean): this; + getLineLength(): number; + setLineLength(value: number): this; + getLineStyle(): number; + setLineStyle(value: number): this; + getLineWidth(): number; + setLineWidth(value: number): this; + getBodyFont(): string; + setBodyFont(value: string): this; + getQuantityFont(): string; + setQuantityFont(value: string): this; + getLineColor(): string; + setLineColor(value: string): this; + getBodyBorderColor(): string; + setBodyBorderColor(value: string): this; + getBodyBackgroundColor(): string; + setBodyBackgroundColor(value: string): this; + getBodyTextColor(): string; + setBodyTextColor(value: string): this; + getQuantityBorderColor(): string; + setQuantityBorderColor(value: string): this; + getQuantityBackgroundColor(): string; + setQuantityBackgroundColor(value: string): this; + getQuantityTextColor(): string; + setQuantityTextColor(value: string): this; + getCancelButtonBorderColor(): string; + setCancelButtonBorderColor(value: string): this; + getCancelButtonBackgroundColor(): string; + setCancelButtonBackgroundColor(value: string): this; + getCancelButtonIconColor(): string; + setCancelButtonIconColor(value: string): this; +} +export interface IPaneApi { + hasMainSeries(): boolean; + getLeftPriceScales(): ReadonlyArray; + getRightPriceScales(): ReadonlyArray; + getMainSourcePriceScale(): IPriceScaleApi | null; + getHeight(): number; + setHeight(height: number): void; + moveTo(paneIndex: number): void; + paneIndex(): number; +} +export interface IPositionLineAdapter { + remove(): void; + onClose(callback: () => void): this; + onClose(data: T, callback: (data: T) => void): this; + onModify(callback: () => void): this; + onModify(data: T, callback: (data: T) => void): this; + onReverse(callback: () => void): this; + onReverse(data: T, callback: (data: T) => void): this; + getPrice(): number; + setPrice(value: number): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getProtectTooltip(): string; + setProtectTooltip(value: string): this; + getCloseTooltip(): string; + setCloseTooltip(value: string): this; + getReverseTooltip(): string; + setReverseTooltip(value: string): this; + getQuantity(): string; + setQuantity(value: string): this; + getExtendLeft(): boolean; + setExtendLeft(value: boolean): this; + getLineLength(): number; + setLineLength(value: number): this; + getLineStyle(): number; + setLineStyle(value: number): this; + getLineWidth(): number; + setLineWidth(value: number): this; + getBodyFont(): string; + setBodyFont(value: string): this; + getQuantityFont(): string; + setQuantityFont(value: string): this; + getLineColor(): string; + setLineColor(value: string): this; + getBodyBorderColor(): string; + setBodyBorderColor(value: string): this; + getBodyBackgroundColor(): string; + setBodyBackgroundColor(value: string): this; + getBodyTextColor(): string; + setBodyTextColor(value: string): this; + getQuantityBorderColor(): string; + setQuantityBorderColor(value: string): this; + getQuantityBackgroundColor(): string; + setQuantityBackgroundColor(value: string): this; + getQuantityTextColor(): string; + setQuantityTextColor(value: string): this; + getReverseButtonBorderColor(): string; + setReverseButtonBorderColor(value: string): this; + getReverseButtonBackgroundColor(): string; + setReverseButtonBackgroundColor(value: string): this; + getReverseButtonIconColor(): string; + setReverseButtonIconColor(value: string): this; + getCloseButtonBorderColor(): string; + setCloseButtonBorderColor(value: string): this; + getCloseButtonBackgroundColor(): string; + setCloseButtonBackgroundColor(value: string): this; + getCloseButtonIconColor(): string; + setCloseButtonIconColor(value: string): this; +} +export interface IPriceScaleApi { + getMode(): PriceScaleMode; + setMode(newMode: PriceScaleMode): void; + isInverted(): boolean; + setInverted(isInverted: boolean): void; + getVisiblePriceRange(): VisiblePriceRange | null; + setVisiblePriceRange(range: VisiblePriceRange): void; +} +export interface ISelectionApi { + add(entities: EntityId[]): void; + set(entities: EntityId[]): void; + remove(entities: EntityId[]): void; + contains(entity: EntityId): boolean; + allSources(): EntityId[]; + isEmpty(): boolean; + clear(): void; + onChanged(): ISubscription<() => void>; +} +export interface ISeriesApi { + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + mergeUp(): void; + mergeDown(): void; + unmergeUp(): void; + unmergeDown(): void; + detachToRight(): void; + detachToLeft(): void; + detachNoScale(): void; + moveToOtherSourceScale(entityId: EntityId): void; + isVisible(): boolean; + setVisible(visible: boolean): void; + bringToFront(): void; + sendToBack(): void; + entityId(): EntityId; +} +export interface ISettingsAdapter { + initialSettings?: InitialSettingsMap; + setValue(key: string, value: string): void; + removeValue(key: string): void; +} +export interface IStudyApi { + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + getInputsInfo(): StudyInputInfo[]; + getInputValues(): StudyInputValueItem[]; + setInputValues(values: StudyInputValueItem[]): void; + mergeUp(): void; + mergeDown(): void; + unmergeUp(): void; + unmergeDown(): void; + changePriceScale(newPriceScale: StudyPriceScale): void; + isVisible(): boolean; + setVisible(visible: boolean): void; + bringToFront(): void; + sendToBack(): void; + applyOverrides(overrides: TOverrides): void; +} +export interface ISubscription { + subscribe(obj: object | null, member: TFunc, singleshot?: boolean): void; + unsubscribe(obj: object | null, member: TFunc): void; + unsubscribeAll(obj: object | null): void; +} +export interface ITradeContext { + symbol: string; + displaySymbol: string; + value: number | null; + formattedValue: string; + last: number; +} +export interface IWatchedValue extends IWatchedValueReadonly { + value(): T; + setValue(value: T, forceUpdate?: boolean): void; + subscribe(callback: WatchedValueCallback, options?: WatchedValueSubscribeOptions): void; + unsubscribe(callback?: WatchedValueCallback | null): void; +} +export interface IWatchedValueReadonly { + value(): T; + subscribe(callback: (value: T) => void, options?: WatchedValueSubscribeOptions): void; + unsubscribe(callback?: ((value: T) => void) | null): void; +} +export interface InitialSettingsMap { + [key: string]: string; +} +export interface InstrumentInfo { + qty: QuantityMetainfo; + pipValue: number; + pipSize: number; + minTick: number; + lotSize?: number; + type?: SymbolType; + brokerSymbol?: string; + description: string; + domVolumePrecision?: number; + leverage?: string; + marginRate?: number; +} +export interface IsTradableResult { + tradable: boolean; + reason?: string; +} +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Prices format: "price" or "volume" + */ + format: SeriesFormat; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface LoadingScreenOptions { + foregroundColor?: string; + backgroundColor?: string; +} +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export interface MenuSeparator extends ActionDescription { + separator: boolean; +} +export interface MouseEventParams { + clientX: number; + clientY: number; + pageX: number; + pageY: number; + screenX: number; + screenY: number; +} +export interface NegativeBaseInputFieldValidatorResult extends BaseInputFieldValidatorResult { + valid: false; + errorMessage: string; +} +export interface NewsItem { + fullDescription: string; + link?: string; + published: number; + shortDescription?: string; + source: string; + title: string; +} +export interface NewsProvider { + is_news_generic?: boolean; + get_news(symbol: string, callback: (items: NewsItem[]) => void): void; +} +export interface NumericFormattingParams { + decimal_sign: string; +} +export interface OrderDialogOptions { + customFields?: OrderDialogCustomField[]; +} +export interface OrderDuration { + /** + * type is OrderDurationMetaInfo.value + */ + type: string; + datetime?: number; +} +export interface OrderDurationMetaInfo { + hasDatePicker?: boolean; + hasTimePicker?: boolean; + default?: boolean; + name: string; + value: string; +} +export interface OrderTableColumn extends AccountManagerColumn { + supportedStatusFilters?: OrderStatusFilter[]; +} +export interface OrderWithParent extends PlacedOrder { + parentId: string; + parentType: ParentType; +} +export interface Overrides { + [key: string]: string | number | boolean; +} +export interface PipValues { + buyPipValue: number; + sellPipValue: number; +} +export interface PlacedOrder extends PreOrder, CustomFields { + id: string; + filledQty?: number; + avgPrice?: number; + updateTime?: number; /** unix timestamp in milliseconds */ + takeProfit?: number; + stopLoss?: number; + type: OrderType; + side: Side; + status: OrderStatus; +} +export interface Position { + id: string; + symbol: string; + brokerSymbol?: string; + qty: number; + side: Side; + avgPrice: number; + [key: string]: any; +} +export interface PositiveBaseInputFieldValidatorResult extends BaseInputFieldValidatorResult { + valid: true; +} +export interface PreOrder { + symbol: string; + brokerSymbol?: string; + type?: OrderType; + side?: Side; + qty: number; + status?: OrderStatus; + stopPrice?: number; + limitPrice?: number; + stopLoss?: number; + takeProfit?: number; + duration?: OrderDuration; + customFields?: CustomInputFieldsValues; +} +export interface PricedPoint extends TimePoint { + price: number; +} +export interface QuantityMetainfo { + min: number; + max: number; + step: number; + default?: number; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface QuotesBase { + change: number; + change_percent: number; + last_price: number; + fractional: boolean; + minmov: number; + minmove2: number; + pricescale: number; + description: string; +} +export interface RestBrokerMetaInfo { + url: string; + access_token: string; +} +export interface RssNewsFeedInfo { + url: string; + name: string; +} +export interface RssNewsFeedParams { + default: RssNewsFeedItem; + [symbolType: string]: RssNewsFeedItem; +} +export interface SaveChartToServerOptions { + chartName?: string; + defaultChartName?: string; +} +export interface SaveLoadChartRecord { + id: string; + name: string; + image_url: string; + modified_iso: number; + short_symbol: string; + interval: ResolutionString; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface SeriesFieldDescriptor { + type: 'value'; + sourceType: 'series'; + plotTitle: string; +} +export interface SetVisibleRangeOptions { + applyDefaultRightMargin?: boolean; + percentRightMargin?: number; +} +export interface SingleBrokerMetaInfo { + configFlags: BrokerConfigFlags; + customNotificationFields?: string[]; + durations?: OrderDurationMetaInfo[]; + orderDialogOptions?: OrderDialogOptions; + customUI?: BrokerCustomUI; +} +export interface SortingParameters { + columnId: string; + asc?: boolean; +} +export interface StickedPoint extends TimePoint { + channel: 'open' | 'high' | 'low' | 'close'; +} +export interface StudyFieldDescriptor { + type: 'value'; + sourceType: 'study'; + sourceId: string; + sourceTitle: string; + plotTitle: string; +} +export interface StudyInputInfo { + id: StudyInputId; + name: string; + type: string; + localizedName: string; +} +export interface StudyInputValueItem { + id: StudyInputId; + value: StudyInputValue; +} +export interface StudyOrDrawingAddedToChartEventParams { + value: string; +} +export interface StudyOverrides { + [key: string]: StudyOverrideValueType; +} +export interface StudyTemplateData { + name: string; + content: string; +} +export interface StudyTemplateMetaInfo { + name: string; +} +export interface SubscribeEventsMap { + toggle_sidebar: (isHidden: boolean) => void; + indicators_dialog: EmptyCallback; + toggle_header: (isHidden: boolean) => void; + edit_object_dialog: (params: EditObjectDialogEventParams) => void; + chart_load_requested: (savedData: object) => void; + chart_loaded: EmptyCallback; + mouse_down: (params: MouseEventParams) => void; + mouse_up: (params: MouseEventParams) => void; + drawing: (params: StudyOrDrawingAddedToChartEventParams) => void; + study: (params: StudyOrDrawingAddedToChartEventParams) => void; + undo: EmptyCallback; + redo: EmptyCallback; + undoRedoStackChanged: (state: UndoRedoState) => void; + reset_scales: EmptyCallback; + compare_add: EmptyCallback; + add_compare: EmptyCallback; + 'load_study template': EmptyCallback; + onTick: (tick: Bar) => void; + onAutoSaveNeeded: EmptyCallback; + onScreenshotReady: (url: string) => void; + onMarkClick: (markId: Mark['id']) => void; + onTimescaleMarkClick: (markId: TimescaleMark['id']) => void; + onSelectedLineToolChanged: EmptyCallback; + layout_about_to_be_changed: (newLayoutType: LayoutType) => void; + layout_changed: EmptyCallback; + activeChartChanged: (chartIndex: number) => void; + drawing_event: (soursceId: string, drawingEventType: DrawingEventType) => void; +} +export interface SuccessFormatterParseResult extends FormatterParseResult { + res: true; + suggest?: string; +} +export interface SuggestedQuantity { + changed: IDelegate<(symbol: string) => void>; + value(symbol: string): Promise; + setValue(symbol: string, value: number): void; +} +export interface SymbolExt { + symbol: string; + full_name: string; + exchange: string; + description: string; + type: string; +} +export interface SymbolIntervalResult { + symbol: string; + interval: ResolutionString; +} +export interface TableElementFormatter { + name: string; + format: TableElementFormatFunction; +} +export interface TableFormatterInputs { + value: number | string | Side | OrderType | OrderStatus; + prevValue?: number | undefined; + row: TableRow; + $container: JQuery; + priceFormatter?: IFormatter; +} +export interface TableRow { + priceFormatter?: IFormatter; + [name: string]: any; +} +export interface TextWithCheckboxFieldCustomInfo { + checkboxTitle: string; + asterix?: boolean; +} +export interface TextWithCheckboxFieldMetaInfo extends CustomInputFieldMetaInfo { + inputType: 'TextWithCheckBox'; + value: TextWithCheckboxValue; + customInfo: TextWithCheckboxFieldCustomInfo; + validator?: TextInputFieldValidator; +} +export interface TextWithCheckboxValue { + text: string; + checked: boolean; +} +export interface TimeFieldDescriptor { + type: 'time'; +} +export interface TimeFrameItem { + text: string; + resolution: ResolutionString; + description?: string; + title?: string; +} +export interface TimePoint { + time: number; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export interface Trade extends CustomFields { + id: string; + date: number; + symbol: string; + brokerSymbol?: string; + qty: number; + side: Side; + price: number; +} +export interface TradingCustomization { + position: Overrides; + order: Overrides; +} +export interface TradingQuotes { + trade?: number; + size?: number; + bid?: number; + bid_size?: number; + ask?: number; + ask_size?: number; + spread?: number; +} +export interface TradingTerminalWidgetOptions extends ChartingLibraryWidgetOptions { + brokerConfig?: SingleBrokerMetaInfo; + restConfig?: RestBrokerMetaInfo; + widgetbar?: WidgetBarParams; + rss_news_feed?: RssNewsFeedParams; + news_provider?: NewsProvider; + trading_customization?: TradingCustomization; + brokerFactory?(host: IBrokerConnectionAdapterHost): IBrokerWithoutRealtime | IBrokerTerminal; +} +export interface UndoRedoState { + enableUndo: boolean; + undoText: string | undefined; + enableRedo: boolean; + redoText: string | undefined; +} +export interface VisiblePriceRange { + from: number; + to: number; +} +export interface VisibleTimeRange { + from: number; + to: number; +} +export interface WatchListApi { + defaultList(): string[]; + getList(id?: string): string[] | null; + getAllLists(): WatchListSymbolListMap | null; + getActiveListId(): string | null; + setList(symbols: string[]): void; + updateList(listId: string, symbols: string[]): void; + renameList(listId: string, newName: string): void; + createList(listName?: string, symbols?: string[]): WatchListSymbolList | null; + saveList(list: WatchListSymbolList): boolean; + deleteList(listId: string): void; + onListChanged(): ISubscription; + onActiveListChanged(): ISubscription; + onListAdded(): ISubscription; + onListRemoved(): ISubscription; + onListRenamed(): ISubscription; +} +export interface WatchListSymbolList extends WatchListSymbolListData { + id: string; +} +export interface WatchListSymbolListData { + symbols: string[]; + title: string; +} +export interface WatchListSymbolListMap { + [listId: string]: WatchListSymbolList; +} +export interface WatchedValueSubscribeOptions { + once?: boolean; + callWithLast?: boolean; +} +export interface WidgetBarParams { + details?: boolean; + watchlist?: boolean; + news?: boolean; + watchlist_settings?: { + default_symbols: string[]; + readonly?: boolean; + }; +} +export type CustomTimezones = 'Africa/Cairo' | 'Africa/Johannesburg' | 'Africa/Lagos' | 'America/Argentina/Buenos_Aires' | 'America/Bogota' | 'America/Caracas' | 'America/Chicago' | 'America/El_Salvador' | 'America/Juneau' | 'America/Lima' | 'America/Los_Angeles' | 'America/Mexico_City' | 'America/New_York' | 'America/Phoenix' | 'America/Santiago' | 'America/Sao_Paulo' | 'America/Toronto' | 'America/Vancouver' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Bahrain' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Dubai' | 'Asia/Ho_Chi_Minh' | 'Asia/Hong_Kong' | 'Asia/Jakarta' | 'Asia/Jerusalem' | 'Asia/Kathmandu' | 'Asia/Kolkata' | 'Asia/Kuwait' | 'Asia/Muscat' | 'Asia/Qatar' | 'Asia/Riyadh' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Taipei' | 'Asia/Tehran' | 'Asia/Tokyo' | 'Atlantic/Reykjavik' | 'Australia/ACT' | 'Australia/Adelaide' | 'Australia/Brisbane' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Copenhagen' | 'Europe/Helsinki' | 'Europe/Istanbul' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Moscow' | 'Europe/Oslo' | 'Europe/Paris' | 'Europe/Riga' | 'Europe/Rome' | 'Europe/Stockholm' | 'Europe/Tallinn' | 'Europe/Vilnius' | 'Europe/Warsaw' | 'Europe/Zurich' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'Pacific/Norfolk' | 'US/Mountain'; + +export as namespace TradingView; diff --git a/public/charting_library/charting_library.min.js b/public/charting_library/charting_library.min.js new file mode 100644 index 0000000..00b993f --- /dev/null +++ b/public/charting_library/charting_library.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.TradingView={})}(this,function(t){"use strict";var e=Object.assign||function(t){for(var e,o=1,i=arguments.length;o'},t}();window.TradingView=window.TradingView||{},window.TradingView.version=s,t.version=s,t.widget=r,Object.defineProperty(t,"__esModule",{value:!0})}); diff --git a/public/charting_library/datafeed-api.d.ts b/public/charting_library/datafeed-api.d.ts new file mode 100644 index 0000000..1f243cf --- /dev/null +++ b/public/charting_library/datafeed-api.d.ts @@ -0,0 +1,225 @@ +export declare type DomeCallback = (data: DOMData) => void; +export declare type ErrorCallback = (reason: string) => void; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export declare type ResolutionBackValues = 'D' | 'M'; +export declare type ResolutionString = string; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type SeriesFormat = 'price' | 'volume'; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type Timezone = 'Etc/UTC' | CustomTimezones; +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface DOMLevel { + price: number; + volume: number; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbol: string, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Prices format: "price" or "volume" + */ + format: SeriesFormat; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export type CustomTimezones = 'Africa/Cairo' | 'Africa/Johannesburg' | 'Africa/Lagos' | 'America/Argentina/Buenos_Aires' | 'America/Bogota' | 'America/Caracas' | 'America/Chicago' | 'America/El_Salvador' | 'America/Juneau' | 'America/Lima' | 'America/Los_Angeles' | 'America/Mexico_City' | 'America/New_York' | 'America/Phoenix' | 'America/Santiago' | 'America/Sao_Paulo' | 'America/Toronto' | 'America/Vancouver' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Bahrain' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Dubai' | 'Asia/Ho_Chi_Minh' | 'Asia/Hong_Kong' | 'Asia/Jakarta' | 'Asia/Jerusalem' | 'Asia/Kathmandu' | 'Asia/Kolkata' | 'Asia/Kuwait' | 'Asia/Muscat' | 'Asia/Qatar' | 'Asia/Riyadh' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Taipei' | 'Asia/Tehran' | 'Asia/Tokyo' | 'Atlantic/Reykjavik' | 'Australia/ACT' | 'Australia/Adelaide' | 'Australia/Brisbane' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Copenhagen' | 'Europe/Helsinki' | 'Europe/Istanbul' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Moscow' | 'Europe/Oslo' | 'Europe/Paris' | 'Europe/Riga' | 'Europe/Rome' | 'Europe/Stockholm' | 'Europe/Tallinn' | 'Europe/Vilnius' | 'Europe/Warsaw' | 'Europe/Zurich' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'Pacific/Norfolk' | 'US/Mountain'; + +export as namespace TradingView; diff --git a/public/charting_library/static/ar-tv-chart.8562c7b8f7bdb50c1f5d.html b/public/charting_library/static/ar-tv-chart.8562c7b8f7bdb50c1f5d.html new file mode 100644 index 0000000..ac34e97 --- /dev/null +++ b/public/charting_library/static/ar-tv-chart.8562c7b8f7bdb50c1f5d.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/public/charting_library/static/bundles/0.1d4cbcaddbec7d8c5363.js b/public/charting_library/static/bundles/0.1d4cbcaddbec7d8c5363.js new file mode 100644 index 0000000..0e01f42 --- /dev/null +++ b/public/charting_library/static/bundles/0.1d4cbcaddbec7d8c5363.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{"29gu":function(e,t,o){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=o("uOxu").getLogger("CommonUI.CreateTVBlockPlugin");e.exports.createTvBlockPlugin=function(e){if(e)return function(t,o,n){function s(t,o){return o?e[t](l,o):e[t](l)}var a,l=$(this);return"get"===t?"function"==typeof e[a=o]?s(a,n):e[a]:e[t]?l.each(function(){return s(t,void 0)}):l}},e.exports.createTvBlockWithInstance=function(e,t){function o(e,t,o){return void 0===o?e[t]():e[t](o)}if(e&&t)return e=e.toString(),function(a,l,i){var c,r,d;return"get"===a?c=l:(r=l,"object"===(void 0===a?"undefined":n(a))&&void 0===l?(r=a,a="init"):"string"!=typeof a&&(a="init")),"getInstance"===a?$(this).eq(0).data(e):"destroy"===a?(d=$(this).eq(0).data(e))?void("function"==typeof d.destroy?(o(d,"destroy",r),$(this).eq(0).removeData(e)):s.logError("[Block Plugin] "+e+" does not support destroy command")):void console.warn("[Block Plugin] Trying to execute destroy method of "+e+" but it has not been inited"):"get"===a?(d=$(this).eq(0).data(e))?"function"==typeof d[c]?o(d,c,i):d[c]:void console.warn("[Block Plugin] Trying to get prop or execute method of "+e+" but it has not been inited"):$(this).each(function(){var n=$(this),l=n.data(e);void 0===l&&(l=void 0===r?t(n):t(n,r),n.data(e,l)),"init"!==a&&("function"==typeof l[a]?o(l,a,r):s.logError("[Block Plugin] "+e+" does not support command "+a))})}}},QwKQ:function(e,t,o){"use strict";(function(n){var s,a,l,i,c,r;Object.defineProperty(t,"__esModule",{value:!0}),s=function(){function e(e,t){var o,n;for(o=0;o{{#labelLeft}}{{labelLeft}}{{/labelLeft}}{{> inputWrapper }}{{#labelRight}}{{labelRight}}{{/labelRight}}{{/hasLabel}}{{^hasLabel}}{{> inputWrapper }}{{/hasLabel}}',inputWrapper:'<{{ tag }} class="{{ customClass }}{{#disabled}} i-disabled{{/disabled}}">{{^hasCheckbox}}{{> checkbox }}{{/hasCheckbox}}{{> box }}{{> ripple }}',checkbox:'',checkboxClass:"{{ customClass }}__input",box:''+o("aLUT")+"",ripple:''},c="i-inited",r=function(){function e(t){ +var o,n=t.customClass,s=void 0===n?"tv-control-checkbox":n,a=t.$checkbox,i=t.tag,r=t.id,d=t.name,u=t.checked,b=t.disabled,h=t.labelLeft,p=t.labelRight,f=t.labelAddClass,k=t.boxAddClass;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.$el=null,void 0===i&&(i=h||p?"span":"label"),o=a instanceof $&&!!a.length){if(!a.is("input[type=checkbox]"))return void l.logError("`$checkbox` need to be input[type=checkbox]");if(a.hasClass(c))return;this._setInputId(a,r),this._setInputClass(a,s),this._setInputName(a,d),this._setInputChecked(a,u),this._setInputDisabled(a,b),u=!!a.prop("checked"),b=!!a.attr("disabled")}this.$el=this.render({$checkbox:a,hasCheckbox:o,customClass:s,tag:i,id:r,name:d,checked:u,disabled:b,labelLeft:h,labelRight:p,hasLabel:h||p,labelAddClass:f,boxAddClass:k}),this.$checkbox=o?a:this.$el.find("input[type=checkbox]")}return s(e,[{key:"_setInputId",value:function(e,t){void 0!==t&&e.attr("id",t)}},{key:"_setInputClass",value:function(e,t){var o=n.render(i.checkboxClass,{customClass:t});e.addClass(o)}},{key:"_setInputName",value:function(e,t){void 0!==t&&e.attr("name",t)}},{key:"_setInputChecked",value:function(e,t){void 0!==t&&e.prop("checked",!!t)}},{key:"_setInputDisabled",value:function(e,t){void 0!==t&&(t?e.setAttribute("disabled","disabled"):e.removeAttr("disabled"))}},{key:"render",value:function(e){var t=e.$checkbox,o=$(n.render(i.labelWrapper,e,i));return e.hasCheckbox&&(o.insertBefore(t),o.find("."+e.customClass).andSelf().filter("."+e.customClass).eq(0).prepend(t.detach()),t.addClass(c)),o}},{key:"checked",set:function(e){this._setInputChecked(this.$checkbox,!!e)},get:function(){return!!this.$checkbox.prop("checked")}}]),e}(),$.fn.tvControlCheckbox=(0,a.createTvBlockWithInstance)("tv-control-checkbox",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new r(TradingView.mergeObj(t,{$checkbox:e}))}),t.default=r,e.exports=t.default}).call(this,o("OiQe"))},aLUT:function(e,t){e.exports=''},"b6p+":function(e,t,o){}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.css b/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.css new file mode 100644 index 0000000..53ae2e3 --- /dev/null +++ b/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.css @@ -0,0 +1 @@ +.tv-control-checkbox{cursor:pointer;-webkit-tap-highlight-color:transparent}.tv-control-checkbox--in-actions{max-width:50%}@media screen and (max-width:479px){.tv-control-checkbox--in-actions{max-width:none}}.tv-control-checkbox,.tv-control-checkbox__label{position:relative;display:inline-block;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tv-control-checkbox--nowrap,.tv-control-checkbox__label--nowrap{white-space:nowrap}.tv-control-checkbox__input{position:absolute;top:0;left:0;width:18px;height:18px;opacity:0}.tv-control-checkbox__box{display:block;width:18px;height:18px;line-height:1;border-radius:2px;box-sizing:border-box;pointer-events:none;transition:background-color .35s ease}.tv-control-checkbox__box:before{top:50%;left:50%;margin-top:-9px;margin-left:-9px;border-radius:2px;background-color:transparent;transform:scale(1);transition:transform .35s ease,background-color .35s ease,border-radius .35s ease}.tv-control-checkbox__box:after,.tv-control-checkbox__box:before{content:"";display:block;position:absolute;width:18px;height:18px}.tv-control-checkbox__box:after{top:0;left:0;border:2px solid #758696;border-radius:2px;box-sizing:border-box;transition:border-color .35s ease}.tv-control-checkbox__box svg{display:block;position:absolute;top:50%;left:50%;margin-top:-6px;margin-left:-6px;width:12px;height:12px;stroke:transparent;transform:scale(0);transition:stroke .35s ease 1ms,transform .35s ease 1ms}.tv-control-checkbox__label{white-space:normal;margin-right:10px}.tv-control-checkbox__label--two-lines{width:155px}.tv-control-checkbox__label--nowrap{white-space:nowrap}.tv-control-checkbox__label--lil-line-height{line-height:16px;min-width:50%;max-width:80%}.tv-control-checkbox__label+.tv-control-checkbox{margin-left:0}.tv-control-checkbox+.tv-control-checkbox__label{margin-right:0;margin-left:10px;max-width:calc(100% - 1ex - 28px)}.tv-control-checkbox:active .tv-control-checkbox__box,.tv-control-checkbox__input:focus+.tv-control-checkbox__box{will-change:background-color}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box{will-change:background-color}}.tv-control-checkbox:active .tv-control-checkbox__box:before,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:before{will-change:transform,border-radius}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box:before{will-change:transform,border-radius}}.tv-control-checkbox:active .tv-control-checkbox__box:after,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:after{will-change:border-color}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box:after{will-change:border-color;border-color:#627384}}.tv-control-checkbox:active .tv-control-checkbox__box:after,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:after{border-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box{background-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box,.tv-control-checkbox__input:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input:checked+.tv-control-checkbox__box:before{transition-timing-function:cubic-bezier(.215,.61,.355,1)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box:before{border-radius:50%;transform:scale(0)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box:after{border-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box svg{stroke:#fff;transform:scale(1);transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-delay:.0875s;will-change:stroke,transform}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input:checked+.tv-control-checkbox__box{background-color:#1e88e5}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input:checked+.tv-control-checkbox__box:after{border-color:#1e88e5}}.tv-control-checkbox:active .tv-control-checkbox__input:checked+.tv-control-checkbox__box,.tv-control-checkbox__input:focus:checked+.tv-control-checkbox__box{background-color:#049ddc}.tv-control-checkbox:active .tv-control-checkbox__input:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input:focus:checked+.tv-control-checkbox__box:after{border-color:#049ddc}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#dadde0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#dadde0}}html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-control-checkbox:hover .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#363c4e}}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:before,.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:before{background-color:#f1f3f6;transition:background-color .35s ease}html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:before,html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:before{background-color:#2f3241}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box{background-color:#dadde0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box{background-color:#dadde0}}.tv-control-checkbox__ripple{display:block;position:absolute;top:0;right:0;width:100%;height:100%;margin:-10px;padding:10px;overflow:hidden;border-radius:50%;-webkit-mask-image:radial-gradient(circle,#fff 100%,#000 0);mask-image:radial-gradient(circle,#fff 100%,#000 0)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple{background-color:rgba(33,150,243,.25)}.tv-control-checkbox__input[disabled]+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple{background-color:transparent}.tv-control-checkbox.i-error .tv-control-checkbox__box:after{border-color:#ff4a68}.tv-control-checkbox.i-disabled{cursor:default} \ No newline at end of file diff --git a/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css b/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css new file mode 100644 index 0000000..d6cab17 --- /dev/null +++ b/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css @@ -0,0 +1 @@ +.tv-control-checkbox{cursor:pointer;-webkit-tap-highlight-color:transparent}.tv-control-checkbox--in-actions{max-width:50%}@media screen and (max-width:479px){.tv-control-checkbox--in-actions{max-width:none}}.tv-control-checkbox,.tv-control-checkbox__label{position:relative;display:inline-block;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tv-control-checkbox--nowrap,.tv-control-checkbox__label--nowrap{white-space:nowrap}.tv-control-checkbox__input{position:absolute;top:0;right:0;width:18px;height:18px;opacity:0}.tv-control-checkbox__box{display:block;width:18px;height:18px;line-height:1;border-radius:2px;box-sizing:border-box;pointer-events:none;transition:background-color .35s ease}.tv-control-checkbox__box:before{top:50%;right:50%;margin-top:-9px;margin-right:-9px;border-radius:2px;background-color:transparent;transform:scale(1);transition:transform .35s ease,background-color .35s ease,border-radius .35s ease}.tv-control-checkbox__box:after,.tv-control-checkbox__box:before{content:"";display:block;position:absolute;width:18px;height:18px}.tv-control-checkbox__box:after{top:0;right:0;border:2px solid #758696;border-radius:2px;box-sizing:border-box;transition:border-color .35s ease}.tv-control-checkbox__box svg{display:block;position:absolute;top:50%;right:50%;margin-top:-6px;margin-right:-6px;width:12px;height:12px;stroke:transparent;transform:scale(0);transition:stroke .35s ease 1ms,transform .35s ease 1ms}.tv-control-checkbox__label{white-space:normal;margin-left:10px}.tv-control-checkbox__label--two-lines{width:155px}.tv-control-checkbox__label--nowrap{white-space:nowrap}.tv-control-checkbox__label--lil-line-height{line-height:16px;min-width:50%;max-width:80%}.tv-control-checkbox__label+.tv-control-checkbox{margin-right:0}.tv-control-checkbox+.tv-control-checkbox__label{margin-left:0;margin-right:10px;max-width:calc(100% - 1ex - 28px)}.tv-control-checkbox:active .tv-control-checkbox__box,.tv-control-checkbox__input:focus+.tv-control-checkbox__box{will-change:background-color}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box{will-change:background-color}}.tv-control-checkbox:active .tv-control-checkbox__box:before,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:before{will-change:transform,border-radius}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box:before{will-change:transform,border-radius}}.tv-control-checkbox:active .tv-control-checkbox__box:after,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:after{will-change:border-color}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box:after{will-change:border-color;border-color:#627384}}.tv-control-checkbox:active .tv-control-checkbox__box:after,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:after{border-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box{background-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box,.tv-control-checkbox__input:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input:checked+.tv-control-checkbox__box:before{transition-timing-function:cubic-bezier(.215,.61,.355,1)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box:before{border-radius:50%;transform:scale(0)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box:after{border-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box svg{stroke:#fff;transform:scale(1);transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-delay:.0875s;will-change:stroke,transform}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input:checked+.tv-control-checkbox__box{background-color:#1e88e5}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input:checked+.tv-control-checkbox__box:after{border-color:#1e88e5}}.tv-control-checkbox:active .tv-control-checkbox__input:checked+.tv-control-checkbox__box,.tv-control-checkbox__input:focus:checked+.tv-control-checkbox__box{background-color:#049ddc}.tv-control-checkbox:active .tv-control-checkbox__input:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input:focus:checked+.tv-control-checkbox__box:after{border-color:#049ddc}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#dadde0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#dadde0}}html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-control-checkbox:hover .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#363c4e}}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:before,.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:before{background-color:#f1f3f6;transition:background-color .35s ease}html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:before,html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:before{background-color:#2f3241}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box{background-color:#dadde0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box{background-color:#dadde0}}.tv-control-checkbox__ripple{display:block;position:absolute;top:0;left:0;width:100%;height:100%;margin:-10px;padding:10px;overflow:hidden;border-radius:50%;-webkit-mask-image:radial-gradient(circle,#fff 100%,#000 0);mask-image:radial-gradient(circle,#fff 100%,#000 0)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple{background-color:rgba(33,150,243,.25)}.tv-control-checkbox__input[disabled]+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple{background-color:transparent}.tv-control-checkbox.i-error .tv-control-checkbox__box:after{border-color:#ff4a68}.tv-control-checkbox.i-disabled{cursor:default} \ No newline at end of file diff --git a/public/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js b/public/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js new file mode 100644 index 0000000..5cb2eb0 --- /dev/null +++ b/public/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js b/public/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js new file mode 100644 index 0000000..d57c266 --- /dev/null +++ b/public/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.css b/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.css new file mode 100644 index 0000000..e30c608 --- /dev/null +++ b/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.css @@ -0,0 +1 @@ +.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.colorpicker.main{border:1px solid #c9cbcd;box-shadow:0 1px 3px rgba(0,0,0,.4)}.tvcolorpicker-widget{vertical-align:middle;background-image:url(../images/tvcolorpicker-bg.png);background-position:0 0;background-repeat:no-repeat;border:1px solid #cacaca;overflow:hidden;padding:0;width:25px;height:25px;cursor:pointer;font-size:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tvcolorpicker-gradient-widget{background-image:url(../images/tvcolorpicker-bg.png),url(../images/tvcolorpicker-bg-gradient.png);background-size:cover}.tvcolorpicker-popup{position:absolute;z-index:1000;padding:4px;background:#fff;border:1px solid;border-color:#b5b7b9;box-shadow:0 1px 2px rgba(0,0,0,.3)}html.theme-dark .tvcolorpicker-popup{border-color:#363c4e;background:#131722}.tvcolorpicker-table{border-collapse:collapse;table-layout:fixed;margin:0 0 6px}.tvcolorpicker-popup .tvcolorpicker-table:last-of-type{margin-bottom:0}.tvcolorpicker-table td{padding:0;width:18px;height:18px}.tvcolorpicker-swatch{width:16px;height:16px;border:0 none;margin:1px;cursor:pointer;overflow:hidden}.tvcolorpicker-swatch.low-contrast{margin:0;border:1px solid #ccc}.tvcolorpicker-swatch.tvcolorpicker-user{border:1px solid #eee;margin:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tvcolorpicker-cell:hover .tvcolorpicker-swatch{border:1px solid #000;margin:0}}.tvcolorpicker-swatch.active{background:url(../images/tvcolorpicker-check.png) 50% 50% no-repeat;border:1px solid #fff;outline:1px solid #000;margin:0}.tvcolorpicker-custom-button{display:block}.tvcolorpicker-hsv{position:relative;top:4px;height:130px;width:160px;margin:0 auto}.tvcolorpicker-hs{position:absolute;top:0;left:-7px;width:147px;height:148px;background:url(../images/tvcolorpicker-sprite.png) 0 0 no-repeat;border:1px solid #eee}.tvcolorpicker-hs-area,.tvcolorpicker-v-area{position:absolute;top:0;left:0;width:100%;height:100%}.tvcolorpicker-v{position:absolute;background:url(../images/tvcolorpicker-sprite.png) -165px 1px no-repeat;border:1px solid #eee;height:149px;width:9px;margin:auto;left:0;right:0}.tvcolorpicker-vv{position:relative;top:0;left:145px;width:25px;height:128px;cursor:default}.tvcolorpicker-hs-handle{width:11px;height:11px;position:absolute;left:0;top:0;margin:-5px 0 0 -5px;background:url(../images/tvcolorpicker-sprite.png) -37px -148px no-repeat}.tvcolorpicker-v-handle{position:absolute;left:0;top:0;width:25px;height:11px;margin:-5px 0 0 -8px;background:url(../images/tvcolorpicker-sprite.png) -48px -148px no-repeat}.tvcolorpicker-custom-button,.tvcolorpicker-user-swatches{margin:6px 0 0}.tvcolorpicker-user-swatches .tvcolorpicker-transparency{background:url(../images/dialogs/opacity-slider.png)!important}.some-colorpicker .tvcolorpicker-container{display:inline-block;margin-right:8px}.tvcolorpicker-container{display:inline-block;position:relative;width:27px;height:27px}div .tvcolorpicker-container:last-of-type{border-right-width:0}.tvcolorpicker-container .tvcolorpicker-transparency{background:url(../images/dialogs/opacity-slider.png)!important;position:absolute;width:25px;height:25px;z-index:1}.tvcolorpicker-container .tvcolorpicker-widget{z-index:2;position:absolute}.widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected){position:relative}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected):not(.disabled):hover{border:1px solid;border-color:#d6d8e0;z-index:1}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected):not(.disabled):hover{border-color:#131722}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.rtl.css b/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.rtl.css new file mode 100644 index 0000000..82d01d8 --- /dev/null +++ b/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.rtl.css @@ -0,0 +1 @@ +.ui-slider{position:relative;text-align:right}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:100% 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-right:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{right:0}.ui-slider-horizontal .ui-slider-range-max{left:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{right:-.3em;margin-right:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{right:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.colorpicker.main{border:1px solid #c9cbcd;box-shadow:0 1px 3px rgba(0,0,0,.4)}.tvcolorpicker-widget{vertical-align:middle;background-image:url(../images/tvcolorpicker-bg.png);background-position:100% 0;background-repeat:no-repeat;border:1px solid #cacaca;overflow:hidden;padding:0;width:25px;height:25px;cursor:pointer;font-size:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tvcolorpicker-gradient-widget{background-image:url(../images/tvcolorpicker-bg.png),url(../images/tvcolorpicker-bg-gradient.png);background-size:cover}.tvcolorpicker-popup{position:absolute;z-index:1000;padding:4px;background:#fff;border:1px solid;border-color:#b5b7b9;box-shadow:0 1px 2px rgba(0,0,0,.3)}html.theme-dark .tvcolorpicker-popup{border-color:#363c4e;background:#131722}.tvcolorpicker-table{border-collapse:collapse;table-layout:fixed;margin:0 0 6px}.tvcolorpicker-popup .tvcolorpicker-table:last-of-type{margin-bottom:0}.tvcolorpicker-table td{padding:0;width:18px;height:18px}.tvcolorpicker-swatch{width:16px;height:16px;border:0 none;margin:1px;cursor:pointer;overflow:hidden}.tvcolorpicker-swatch.low-contrast{margin:0;border:1px solid #ccc}.tvcolorpicker-swatch.tvcolorpicker-user{border:1px solid #eee;margin:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tvcolorpicker-cell:hover .tvcolorpicker-swatch{border:1px solid #000;margin:0}}.tvcolorpicker-swatch.active{background:url(../images/tvcolorpicker-check.png) 50% 50% no-repeat;border:1px solid #fff;outline:1px solid #000;margin:0}.tvcolorpicker-custom-button{display:block}.tvcolorpicker-hsv{position:relative;top:4px;height:130px;width:160px;margin:0 auto}.tvcolorpicker-hs{position:absolute;top:0;right:-7px;width:147px;height:148px;background:url(../images/tvcolorpicker-sprite.png) 0 0 no-repeat;border:1px solid #eee}.tvcolorpicker-hs-area,.tvcolorpicker-v-area{position:absolute;top:0;right:0;width:100%;height:100%}.tvcolorpicker-v{position:absolute;background:url(../images/tvcolorpicker-sprite.png) -165px 1px no-repeat;border:1px solid #eee;height:149px;width:9px;margin:auto;right:0;left:0}.tvcolorpicker-vv{position:relative;top:0;right:145px;width:25px;height:128px;cursor:default}.tvcolorpicker-hs-handle{width:11px;height:11px;position:absolute;right:0;top:0;margin:-5px -5px 0 0;background:url(../images/tvcolorpicker-sprite.png) -37px -148px no-repeat}.tvcolorpicker-v-handle{position:absolute;right:0;top:0;width:25px;height:11px;margin:-5px -8px 0 0;background:url(../images/tvcolorpicker-sprite.png) -48px -148px no-repeat}.tvcolorpicker-custom-button,.tvcolorpicker-user-swatches{margin:6px 0 0}.tvcolorpicker-user-swatches .tvcolorpicker-transparency{background:url(../images/dialogs/opacity-slider.png)!important}.some-colorpicker .tvcolorpicker-container{display:inline-block;margin-left:8px}.tvcolorpicker-container{display:inline-block;position:relative;width:27px;height:27px}div .tvcolorpicker-container:last-of-type{border-left-width:0}.tvcolorpicker-container .tvcolorpicker-transparency{background:url(../images/dialogs/opacity-slider.png)!important;position:absolute;width:25px;height:25px;z-index:1}.tvcolorpicker-container .tvcolorpicker-widget{z-index:2;position:absolute}.widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected){position:relative}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected):not(.disabled):hover{border:1px solid;border-color:#d6d8e0;z-index:1}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected):not(.disabled):hover{border-color:#131722}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.css b/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.css new file mode 100644 index 0000000..e8c737a --- /dev/null +++ b/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.css @@ -0,0 +1 @@ +.item-2xPVYue0-{display:flex;flex-flow:row nowrap;align-items:center;white-space:nowrap;padding:2px 10px 2px 8px;font-size:14px;background-color:#fff;cursor:default;transition-property:none;color:#131722}html.theme-dark .item-2xPVYue0-{color:#b2b5be;background-color:#1e222d}.item-2xPVYue0-.hovered-1uf45E05-,.item-2xPVYue0-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-:hover{color:#000}}html.theme-dark .item-2xPVYue0-.hovered-1uf45E05-,html.theme-dark .item-2xPVYue0-:active{color:#c1c4cd}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-:hover{color:#c1c4cd}}.item-2xPVYue0-.hovered-1uf45E05-,.item-2xPVYue0-:active{background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-:hover{background-color:#f0f3fa}}html.theme-dark .item-2xPVYue0-.hovered-1uf45E05-,html.theme-dark .item-2xPVYue0-:active{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-:hover{background-color:#2a2e39}}.item-2xPVYue0-.isDisabled-1wLqKupj-{opacity:.3;cursor:default}.item-2xPVYue0-.isDisabled-1wLqKupj-,.item-2xPVYue0-.isDisabled-1wLqKupj-:active{color:#131722;background-color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isDisabled-1wLqKupj-:hover{color:#131722;background-color:#fff}}html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-,html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:active{background-color:#1e222d}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:hover{background-color:#1e222d}}html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-,html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:active{color:#b2b5be}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:hover{color:#b2b5be}}.item-2xPVYue0-.isActive-2j-GhQs_-,.item-2xPVYue0-.isActive-2j-GhQs_-:active{color:#fff;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover{color:#fff;background-color:#2196f3}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active{background-color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover{background-color:#1976d2}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active{color:#131722}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover{color:#131722}}.item-2xPVYue0-.isActive-2j-GhQs_- .icon-2Qm7YIcz- svg,.item-2xPVYue0-.isActive-2j-GhQs_-:active .icon-2Qm7YIcz- svg{fill:currentColor}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .icon-2Qm7YIcz- svg{fill:currentColor}}.item-2xPVYue0-.isActive-2j-GhQs_- .shortcut-30pveiCO-,.item-2xPVYue0-.isActive-2j-GhQs_-:active .shortcut-30pveiCO-{color:hsla(0,0%,100%,.7)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .shortcut-30pveiCO-{color:hsla(0,0%,100%,.7)}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_- .shortcut-30pveiCO-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active .shortcut-30pveiCO-{color:rgba(19,23,34,.7)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover .shortcut-30pveiCO-{color:rgba(19,23,34,.7)}}.item-2xPVYue0-.isActive-2j-GhQs_- .toolbox-3ulPxfe--,.item-2xPVYue0-.isActive-2j-GhQs_-:active .toolbox-3ulPxfe--{color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .toolbox-3ulPxfe--{color:#fff}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_- .toolbox-3ulPxfe--,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active .toolbox-3ulPxfe--{color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover .toolbox-3ulPxfe--{color:#fff}}.item-2xPVYue0-.withIcon-1xBjf-oB-{padding-top:6px;padding-bottom:6px}.item-2xPVYue0-:before{content:" ";display:block;height:28px}.icon-2Qm7YIcz-{display:flex;margin-right:7px;align-items:center;justify-content:center;width:28px;height:28px}.icon-2Qm7YIcz- svg{display:block;fill:currentColor}.labelRow-3Q0rdE8--{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;flex:1 0 auto;margin-right:14px}.labelRow-3Q0rdE8--:first-child{margin-left:4px}.labelRow-3Q0rdE8--:last-child{margin-right:4px}.label-3Xqxy756-{display:flex;flex:0 0 auto}.shortcut-30pveiCO-{font-size:11px;margin-right:14px;min-width:27px;color:#b2b5be}html.theme-dark .shortcut-30pveiCO-{color:#787b86}.toolbox-3ulPxfe--{display:flex;position:relative;align-items:center;color:#9db2bd}html.theme-dark .toolbox-3ulPxfe--{color:#9db2bd}.feature-no-mobiletouch .toolbox-3ulPxfe--.showOnHover-1q6ySzZc-{opacity:0}.toolbox-3ulPxfe-->:not(:last-child){margin-right:10px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.feature-no-mobiletouch .item-2xPVYue0-:hover .toolbox-3ulPxfe--.showOnHover-1q6ySzZc-{opacity:1}}.separator-25lkUpN--{margin:6px 0;height:1px;background-color:#e1ecf2}html.theme-dark .separator-25lkUpN--{background-color:#363c4e} \ No newline at end of file diff --git a/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.rtl.css b/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.rtl.css new file mode 100644 index 0000000..8c5ea95 --- /dev/null +++ b/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.rtl.css @@ -0,0 +1 @@ +.item-2xPVYue0-{display:flex;flex-flow:row nowrap;align-items:center;white-space:nowrap;padding:2px 8px 2px 10px;font-size:14px;background-color:#fff;cursor:default;transition-property:none;color:#131722}html.theme-dark .item-2xPVYue0-{color:#b2b5be;background-color:#1e222d}.item-2xPVYue0-.hovered-1uf45E05-,.item-2xPVYue0-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-:hover{color:#000}}html.theme-dark .item-2xPVYue0-.hovered-1uf45E05-,html.theme-dark .item-2xPVYue0-:active{color:#c1c4cd}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-:hover{color:#c1c4cd}}.item-2xPVYue0-.hovered-1uf45E05-,.item-2xPVYue0-:active{background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-:hover{background-color:#f0f3fa}}html.theme-dark .item-2xPVYue0-.hovered-1uf45E05-,html.theme-dark .item-2xPVYue0-:active{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-:hover{background-color:#2a2e39}}.item-2xPVYue0-.isDisabled-1wLqKupj-{opacity:.3;cursor:default}.item-2xPVYue0-.isDisabled-1wLqKupj-,.item-2xPVYue0-.isDisabled-1wLqKupj-:active{color:#131722;background-color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isDisabled-1wLqKupj-:hover{color:#131722;background-color:#fff}}html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-,html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:active{background-color:#1e222d}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:hover{background-color:#1e222d}}html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-,html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:active{color:#b2b5be}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:hover{color:#b2b5be}}.item-2xPVYue0-.isActive-2j-GhQs_-,.item-2xPVYue0-.isActive-2j-GhQs_-:active{color:#fff;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover{color:#fff;background-color:#2196f3}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active{background-color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover{background-color:#1976d2}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active{color:#131722}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover{color:#131722}}.item-2xPVYue0-.isActive-2j-GhQs_- .icon-2Qm7YIcz- svg,.item-2xPVYue0-.isActive-2j-GhQs_-:active .icon-2Qm7YIcz- svg{fill:currentColor}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .icon-2Qm7YIcz- svg{fill:currentColor}}.item-2xPVYue0-.isActive-2j-GhQs_- .shortcut-30pveiCO-,.item-2xPVYue0-.isActive-2j-GhQs_-:active .shortcut-30pveiCO-{color:hsla(0,0%,100%,.7)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .shortcut-30pveiCO-{color:hsla(0,0%,100%,.7)}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_- .shortcut-30pveiCO-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active .shortcut-30pveiCO-{color:rgba(19,23,34,.7)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover .shortcut-30pveiCO-{color:rgba(19,23,34,.7)}}.item-2xPVYue0-.isActive-2j-GhQs_- .toolbox-3ulPxfe--,.item-2xPVYue0-.isActive-2j-GhQs_-:active .toolbox-3ulPxfe--{color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .toolbox-3ulPxfe--{color:#fff}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_- .toolbox-3ulPxfe--,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active .toolbox-3ulPxfe--{color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover .toolbox-3ulPxfe--{color:#fff}}.item-2xPVYue0-.withIcon-1xBjf-oB-{padding-top:6px;padding-bottom:6px}.item-2xPVYue0-:before{content:" ";display:block;height:28px}.icon-2Qm7YIcz-{display:flex;margin-left:7px;align-items:center;justify-content:center;width:28px;height:28px}.icon-2Qm7YIcz- svg{display:block;fill:currentColor}.labelRow-3Q0rdE8--{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;flex:1 0 auto;margin-left:14px}.labelRow-3Q0rdE8--:first-child{margin-right:4px}.labelRow-3Q0rdE8--:last-child{margin-left:4px}.label-3Xqxy756-{display:flex;flex:0 0 auto}.shortcut-30pveiCO-{font-size:11px;margin-left:14px;min-width:27px;color:#b2b5be}html.theme-dark .shortcut-30pveiCO-{color:#787b86}.toolbox-3ulPxfe--{display:flex;position:relative;align-items:center;color:#9db2bd}html.theme-dark .toolbox-3ulPxfe--{color:#9db2bd}.feature-no-mobiletouch .toolbox-3ulPxfe--.showOnHover-1q6ySzZc-{opacity:0}.toolbox-3ulPxfe-->:not(:last-child){margin-left:10px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.feature-no-mobiletouch .item-2xPVYue0-:hover .toolbox-3ulPxfe--.showOnHover-1q6ySzZc-{opacity:1}}.separator-25lkUpN--{margin:6px 0;height:1px;background-color:#e1ecf2}html.theme-dark .separator-25lkUpN--{background-color:#363c4e} \ No newline at end of file diff --git a/public/charting_library/static/bundles/11.dd520838f92e45cd91e3.js b/public/charting_library/static/bundles/11.dd520838f92e45cd91e3.js new file mode 100644 index 0000000..7a62800 --- /dev/null +++ b/public/charting_library/static/bundles/11.dd520838f92e45cd91e3.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js b/public/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js new file mode 100644 index 0000000..068e5bb --- /dev/null +++ b/public/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.css b/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.css new file mode 100644 index 0000000..4954f55 --- /dev/null +++ b/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.css @@ -0,0 +1 @@ +.dialog-2APwxL3O-{display:flex;min-width:280px;text-align:left;box-sizing:border-box;background-color:#fff;flex-direction:column}html.theme-dark .dialog-2APwxL3O-{background-color:#1e222d}.dialog-2APwxL3O-.rounded-tXI9mwGE-{border-radius:4px}.dialog-2APwxL3O-.shadowed-2M13-xZa-{box-shadow:0 1px 2px 1px rgba(0,0,0,.275)}.dialog-2APwxL3O-.fullscreen-2RqU2pqU-{position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;min-height:100%} \ No newline at end of file diff --git a/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css b/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css new file mode 100644 index 0000000..0a73eff --- /dev/null +++ b/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css @@ -0,0 +1 @@ +.dialog-2APwxL3O-{display:flex;min-width:280px;text-align:right;box-sizing:border-box;background-color:#fff;flex-direction:column}html.theme-dark .dialog-2APwxL3O-{background-color:#1e222d}.dialog-2APwxL3O-.rounded-tXI9mwGE-{border-radius:4px}.dialog-2APwxL3O-.shadowed-2M13-xZa-{box-shadow:0 1px 2px 1px rgba(0,0,0,.275)}.dialog-2APwxL3O-.fullscreen-2RqU2pqU-{position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;min-height:100%} \ No newline at end of file diff --git a/public/charting_library/static/bundles/13.46f312828e93b6546d0c.js b/public/charting_library/static/bundles/13.46f312828e93b6546d0c.js new file mode 100644 index 0000000..ab82e13 --- /dev/null +++ b/public/charting_library/static/bundles/13.46f312828e93b6546d0c.js @@ -0,0 +1,3 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{"+EG+":function(e,t,n){"use strict";var o,r,i,s;n.d(t,"a",function(){return i}),n.d(t,"b",function(){return s}),o=n("mrSG"),r=n("q1tI"),i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.shouldComponentUpdate=function(){return!1},t.prototype.render=function(){return r.createElement("div",{style:{position:"fixed",zIndex:150,left:0,top:0},ref:this.props.reference})},t}(r.Component),s=r.createContext(null)},AVTG:function(e,t,n){"use strict";function o(e){var t=e.hideIcon?null:s.createElement(a.a,{className:u.close,icon:c,onClick:e.onClose});return s.createElement("div",{className:u.header,"data-dragg-area":!0,ref:e.reference},e.children,t)}function r(e){return s.createElement("div",{className:l(d.body,e.className),ref:e.reference},e.children)}function i(e){var t,n;return e.text?t=s.createElement("span",null,e.text):e.html&&(t=s.createElement("span",{dangerouslySetInnerHTML:{__html:e.html}})),n=p.message,e.isError&&(n+=" "+p.error),t?s.createElement("div",{className:n,key:"0"},s.createElement(h.a,{mouseDown:!0,touchStart:!0,handler:e.onClickOutside},t)):s.createElement("div",null)}var s=n("q1tI"),u=n("kgsH"),c=n("uo4K"),a=n("jjrI"),d=(n("kQXJ"),n("XYXm")),l=n("TSYQ"),p=n("cJj4"),h=n("RgaO");n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r}),n.d(t,"c",function(){return i})},RgaO:function(e,t,n){"use strict";var o,r,i;n.d(t,"a",function(){return i}),o=n("mrSG"),r=n("q1tI"),i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._scope=null,t._handleScopeRef=function(e){return t._scope=e},t._handleOutsideEvent=function(e){void 0!==t.props.handler&&null!==t._scope&&e.target instanceof Node&&(t._scope.contains(e.target)||t.props.handler(e))},t}return o.__extends(t,e),t.prototype.componentDidMount=function(){this.props.click&&document.addEventListener("click",this._handleOutsideEvent,!1),this.props.mouseDown&&document.addEventListener("mousedown",this._handleOutsideEvent,!1),this.props.touchEnd&&document.addEventListener("touchend",this._handleOutsideEvent,!1),this.props.touchStart&&document.addEventListener("touchstart",this._handleOutsideEvent,!1)},t.prototype.componentWillUnmount=function(){document.removeEventListener("click",this._handleOutsideEvent,!1),document.removeEventListener("mousedown",this._handleOutsideEvent,!1),document.removeEventListener("touchend",this._handleOutsideEvent,!1),document.removeEventListener("touchstart",this._handleOutsideEvent,!1)},t.prototype.render=function(){var e=this.props,t=(e.click,e.handler,e.mouseDown,e.touchEnd,e.touchStart,e.ctor),n=void 0===t?"span":t,i=o.__rest(e,["click","handler","mouseDown","touchEnd","touchStart","ctor"]);return r.createElement(n,o.__assign({},i,{ref:this._handleScopeRef}))},t}(r.PureComponent)},XYXm:function(e,t,n){e.exports={body:"body-2N-vuwQW-"}},cJj4:function(e,t,n){e.exports={message:"message-2o-rtQm0-",error:"error-2EW0C6z--"}},jAh7:function(e,t,n){"use strict";function o(e){var t,n,o +;return void 0===e&&(e=document),null!==(t=e.getElementById("overlap-manager-root"))?Object(r.ensureDefined)(u.get(t)):(n=new s(e),o=function(e){var t=e.createElement("div");return t.style.position="absolute",t.style.zIndex=150..toString(),t.style.top="0px",t.style.left="0px",t.id="overlap-manager-root",t}(e),u.set(o,n),n.setContainer(o),e.body.appendChild(o),n)}var r,i,s,u;n.r(t),n.d(t,"OverlapManager",function(){return s}),n.d(t,"getRootOverlapManager",function(){return o}),r=n("Eyy1"),i=function(){function e(){this._storage=[]}return e.prototype.add=function(e){this._storage.push(e)},e.prototype.remove=function(e){this._storage=this._storage.filter(function(t){return e!==t})},e.prototype.has=function(e){return this._storage.includes(e)},e.prototype.getItems=function(){return this._storage},e}(),s=function(){function e(e){void 0===e&&(e=document),this._storage=new i,this._windows=new Map,this._index=0,this._document=e,this._container=e.createDocumentFragment()}return e.prototype.setContainer=function(e){var t=this._container,n=null===e?this._document.createDocumentFragment():e;!function(e,t){Array.from(e.childNodes).forEach(function(e){e.nodeType===Node.ELEMENT_NODE&&t.appendChild(e)})}(t,n),this._container=n},e.prototype.registerWindow=function(e){this._storage.has(e)||this._storage.add(e)},e.prototype.ensureWindow=function(e,t){var n,o;return void 0===t&&(t={position:"fixed"}),void 0!==(n=this._windows.get(e))?n:(this.registerWindow(e),(o=this._document.createElement("div")).style.position=t.position,o.style.zIndex=this._index.toString(),o.dataset.id=e,this._container.appendChild(o),this._windows.set(e,o),++this._index,o)},e.prototype.unregisterWindow=function(e){this._storage.remove(e);var t=this._windows.get(e);void 0!==t&&(null!==t.parentElement&&t.parentElement.removeChild(t),this._windows.delete(e))},e.prototype.getZindex=function(e){var t=this.ensureWindow(e);return parseInt(t.style.zIndex||"0")},e.prototype.moveToTop=function(e){this.getZindex(e)!==this._index&&(this.ensureWindow(e).style.zIndex=(++this._index).toString())},e.prototype.removeWindow=function(e){this.unregisterWindow(e)},e}(),u=new WeakMap},jjrI:function(e,t,n){"use strict";function o(e){var t=e.className,n=e.icon,o=void 0===n?"":n,s=e.title,u=e.onClick,c=e.onMouseDown,a=e.onMouseUp,d=e.onMouseLeave,l=e.reference,p=r.__rest(e,["className","icon","title","onClick","onMouseDown","onMouseUp","onMouseLeave","reference"]);return i.createElement("span",r.__assign({},p,{title:s,className:t,dangerouslySetInnerHTML:{__html:o},onClick:u,onMouseDown:c,onMouseUp:a,onMouseLeave:d,ref:l}))}var r,i;n.d(t,"a",function(){return o}),r=n("mrSG"),i=n("q1tI")},kQXJ:function(e,t,n){e.exports={footer:"footer-2Zoji8zg-"}},kgsH:function(e,t,n){e.exports={header:"header-dpl-vtN_-",close:"close-3kPn4OTV-"}},uo4K:function(e,t){ +e.exports=''},"ycI/":function(e,t,n){"use strict";var o,r,i;n.d(t,"a",function(){return i}),o=n("mrSG"),r=n("q1tI"),i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleKeyDown=function(e){e.keyCode===t.props.keyCode&&t.props.handler(e)},t}return o.__extends(t,e),t.prototype.componentDidMount=function(){document.addEventListener(this.props.eventType||"keydown",this._handleKeyDown,!1)},t.prototype.componentWillUnmount=function(){document.removeEventListener(this.props.eventType||"keydown",this._handleKeyDown,!1)},t.prototype.render=function(){return null},t}(r.PureComponent)}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/14.579d7892443d1a90180c.js b/public/charting_library/static/bundles/14.579d7892443d1a90180c.js new file mode 100644 index 0000000..21068f1 --- /dev/null +++ b/public/charting_library/static/bundles/14.579d7892443d1a90180c.js @@ -0,0 +1,4 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{"1O6C":function(t,e,n){"use strict";var o,i,r,s,a,u,h,l;n.d(e,"a",function(){return l}),o=n("mrSG"),i=n("q1tI"),r=n("TSYQ"),s=n("+EG+"),a=n("jAh7"),u=n("QpNh"),h=n("aYmi"),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._manager=new a.OverlapManager,e._handleSlot=function(t){e._manager.setContainer(t)},e}return o.__extends(e,t),e.prototype.render=function(){var t=this.props,e=t.rounded,n=void 0===e||e,a=t.shadowed,l=void 0===a||a,c=t.fullscreen,d=void 0!==c&&c,p=t.className,_=r(p,h.dialog,n&&h.rounded,l&&h.shadowed,d&&h.fullscreen),g=Object(u.a)(this.props);return i.createElement(i.Fragment,null,i.createElement(s.b.Provider,{value:this._manager},i.createElement("div",o.__assign({},g,{className:_,style:this._createStyles(),ref:this.props.reference,onFocus:this.props.onFocus,onMouseDown:this.props.onMouseDown,onMouseUp:this.props.onMouseUp,onClick:this.props.onClick,onKeyDown:this.props.onKeyDown,tabIndex:-1}),this.props.children)),i.createElement(s.a,{reference:this._handleSlot}))},e.prototype._createStyles=function(){var t=this.props,e=t.bottom,n=t.left,o=t.width;return{bottom:e,left:n,right:t.right,top:t.top,zIndex:t.zIndex,maxWidth:o,height:t.height}},e}(i.PureComponent)},AiMB:function(t,e,n){"use strict";var o,i,r,s,a,u,h,l;n.d(e,"a",function(){return h}),n.d(e,"b",function(){return l}),o=n("mrSG"),i=n("q1tI"),r=n("i8i4"),s=n("0waE"),a=n("jAh7"),u=n("+EG+"),h=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._uuid=Object(s.guid)(),e}return o.__extends(e,t),e.prototype.componentWillUnmount=function(){this._manager().removeWindow(this._uuid)},e.prototype.render=function(){return r.createPortal(i.createElement(l.Provider,{value:this},this.props.children),this._manager().ensureWindow(this._uuid))},e.prototype.moveToTop=function(){this._manager().moveToTop(this._uuid)},e.prototype._manager=function(){return null===this.context?Object(a.getRootOverlapManager)():this.context},e.contextType=u.b,e}(i.PureComponent),l=i.createContext(null)},QpNh:function(t,e,n){"use strict";function o(t){var e,n,o,r,s,a=Object.entries(t).filter(i),u={};for(e=0,n=a;eo&&(t=o-e),t
{{text}}'+s+'
{{^removeOkButton}}
{{/removeOkButton}}',{captionClassName:r,classSuffix:e.classSuffix||"",text:o,removeOkButton:e&&e.removeOkButton})),n.modalDialog.find("._tv-button.ok").on("click",function(){n.destroy(),e.onOkButtonClick&&e.onOkButtonClick()}),n.positionDialog(),n.applyHandlers(!1,{doNotCloseOnBgClickIfShadowbox:a,beforeDestroy:e.onClose}),n.modalDialog},showCustomDialog:function(t){function o(t){n.destroy(),t.preventDefault()}return n.createModalDialog(t.title||$.t("Dialog"),{addClass:""}),n.modalDialog.find("._tv-dialog").css("width",t.width||"400px"),n.modalDialog.find("._tv-dialog-content").html('
'+(t.html||$.t("Content"))+"
"),n.modalDialog.find(".ok").click(o),n.modalDialog.find("form").submit(o),n.modalDialog.find(".cancel").click(o),n.modalDialog.find("._tv-dialog-title-close").click(o),n.positionDialog(),n.applyHandlers(), +n.modalDialog},createModalDialog:function(t,o){var e,i;return o=o||{},null!==n.modalDialog&&n.destroy(),n.modalDialog=$('
'+(o.noHeader?"":'
'+(o.noClose?"":'')+''+t+"
")+'
').appendTo($("body")).data("title",t),n._addMessageCloseButton(n.modalDialog.find("._tv-dialog-error")),n._addMessageCloseButton(n.modalDialog.find("._tv-dialog-message")),o.noShadowBox&&n.modalDialog.addClass("transparent"),o.addClass&&n.modalDialog.addClass(o.addClass),o.width&&n.modalDialog.find("._tv-dialog").css({width:o.width}),o.content&&n.modalDialog.find("._tv-dialog-content").html(o.content),(e=$(".fancybox-overlay")).length&&(i=e.css("z-index"),$("._tv-dialog-shadowbox").css("z-index",i+1)),o.draggable&&s(n.modalDialog).draggable(n._constrainDraggableOptionsIfNeeded({handle:n.modalDialog.find("._tv-dialog-title")})),o.zIndex&&n.modalDialog.css("z-index",o.zIndex),n.modalDialog},_addMessageCloseButton:function(t){var o=$(e("BhuR")).attr({class:"close",title:$.t("Close message")});t.append(o),$(o).on("click",function(){t.animate({marginTop:n.NOTIFICATION_ANIMATION_START_OFFSET,opacity:0},"fast",function(){t.hide()})})},createDialog:function(t,o){var e,d,r,c,u,g;return n.isOpen(t)?((e=n.get(t)).find("._tv-dialog-content").html(""),e.data("new",!1),e):(d=(o=o||{}).ownerDocument||document,c=(r=l(d)).ensureWindow(t,{position:"relative"}),e=$(i.render('
{{^hideTitle}} {{&title}}{{/hideTitle}}{{^hideCloseCross}}{{/hideCloseCross}}
',{addClass:o.addClass||"",hideTitle:o.hideTitle,hideCloseCross:o.hideCloseCross,title:t}),d).appendTo(c),n._addMessageCloseButton(e.find("._tv-dialog-error")),n._addMessageCloseButton(e.find("._tv-dialog-message")),o.width&&e.css({width:o.width}),o.content&&e.find("._tv-dialog-content").html(o.content),u=0,u=o.zIndex?o.zIndex:n.dialogs&&n.dialogs.length?a($.map(n.dialogs,function(t){return parseInt((t.dialog||t).css("z-index"),10)}))+1:110,e.css("z-index",u),e.data("new",!0),e.data("title",t),e.data("id",n.dialogs.length+1),n.dialogs.push({title:t,dialog:e,id:n.dialogs.length+1}),e.on("mousedown touchstart",function(){r.moveToTop(t)}),g={start:function(t,o){var e,i,a=o.helper.css("z-index"),s=0,l=null;for(e=0;es&&(s=i,l=n.dialogs[e].dialog) +;o.helper.css("z-index",s),l.css("z-index",a)}},o.dragHandle?g.handle=o.dragHandle:o.hideTitle||(g.handle="._tv-dialog-title"),o.dragOptions&&$.extend(g,o.dragOptions),s(e).draggable(n._constrainDraggableOptionsIfNeeded(g)),e)},positionDialog:function(t,o,e){function i(){a.css("margin-left",-Math.round(a.outerWidth()/2)+"px"),a.css("margin-top",-Math.round(a.outerHeight()/2)+"px")}var a,s,l,d,r,c,u,g,p,f;e=e||{},o=o||e.position,t?(l=(s=t.prop("ownerDocument")).defaultView,d=t.width(),r=t.height(),c=$(l).width(),u=$(l).height(),o&&o.top&&o.left?(p=e.forcePosition?o.left:Math.max(2,Math.min(c-d-4,o.left))+"px",g=e.forcePosition?o.top:Math.max(2,Math.min(u-r-4,o.top))+"px"):o&&o.considerScroll?(f=$(s),p=Math.round((c-d)/2+f.scrollLeft())+"px",g=Math.round((u-r)/2+f.scrollTop())+"px"):(p=Math.round((c-d)/2)+"px",g=Math.round((u-r)/2)+"px"),e.fadeIn?t.css({left:p,top:g}).hide().fadeIn("fast"):e.smooth?t.animate({left:p,top:g}):t.css({left:p,top:g})):(t=n.modalDialog,a=t.find("._tv-dialog"),i(),a.resize(i))},applyHandlers:function(t,o){var e,i,a,s=!t||t===this.modalDialog;o=o||{},e=s?function(){n.destroy()}:function(){n.destroy(t.data("title"))},t=t||n.modalDialog.find("._tv-dialog"),i=t.prop("ownerDocument"),o.beforeDestroy&&t.on("destroy",o.beforeDestroy),t.find("._tv-dialog-title ._tv-dialog-title-close, .js-dialog-close").on("click",function(t){o.closeHandler&&"function"==typeof o.closeHandler?o.closeHandler(t):e()}),o.doNotCloseOnBgClick||setTimeout(function(){$(i).on("mousedown.closeDialog",function(n){var a=$(n.target).parents().andSelf();a.is(t)||o.doNotCloseOnBgClickIfShadowbox&&a.is("._tv-dialog-shadowbox, .tv-dialog__modal-wrap")||a.is(".colorpicker, .charts-popup-list, ._tv-dialog, .tvcolorpicker-popup, .symbol-edit-popup, .ui-datepicker, .clockpicker-popover, .pac-container, .context-menu-wrapper")||($(i).off("mousedown.closeDialog"),e())})},0),t.find('input[type="checkbox"]').change(function(){var t=$(this),o=t.next("._tv-dialog-checkbox-mask");o.toggleClass("disabled",t.prop("disabled")).toggleClass("_tv-dialog-checkbox-mask-active",t.is(":checked"))}),a=t.find('input[type="text"]').focus(function(){$(this).addClass("_tv-dialog-content-textactive")}).blur(function(){$(this).removeClass("_tv-dialog-content-textactive")}).first(),Modernizr.mobiletouch||o.notFocusFirst||a.focus(),t.find('input[type="password"]').focus(function(){$(this).addClass("_tv-dialog-content-textactive")}).blur(function(){$(this).removeClass("_tv-dialog-content-textactive")}),t.find("textarea").focus(function(){$(this).addClass("_tv-dialog-content-textareaactive")}).blur(function(){$(this).removeClass("_tv-dialog-content-textareaactive")}),t.find("._tv-dialog-checkbox-mask").click(function(){var t=$(this).prev();t.prop("disabled")||(t.prop("checked",!t[0].checked),t.change())}),o.doNotCloseOnEsc||$(i).bind("keyup.hideDialog",function(o){if(27===o.keyCode)return t?n.destroy(t.data("title")):n.destroy(),!1}),o.processEnterButton&&$(i).bind("keyup.confirmAndCloseDialog",function(t){ +13===t.keyCode&&"textarea"!==t.target.tagName.toLowerCase()&&(o.processEnterButton.click(),$(i).unbind("keyup.confirmAndCloseDialog"))})},showError:function(t,o,e){n.showMessage(t,o,$.extend(e||{},{isError:!0}))},showMessage:function(t,o,e){var i,a,s;o||(o=$("._tv-dialog")),i=(e=e||{}).isError?"_tv-dialog-error":"_tv-dialog-message",s=(a=o.find("."+i)).find(".message"),e.html?s.html("string"==typeof e.html?e.html:t):s.text(t),s.css("width",o.width()).toggleClass("selectable",Boolean(e.selectable)),a.toggleClass("with-close",Boolean(e.withClose)).css({marginTop:n.NOTIFICATION_ANIMATION_START_OFFSET,opacity:"0"}).show().animate({marginTop:0,opacity:1},"fast"),e.withClose||(e.hideWithoutAnimation?a.on("touchstartoutside mousedownoutside keydownoutside",function t(){a.hide(),a.off("touchstartoutside mousedownoutside keydownoutside",t)}):a.on("touchstartoutside mousedownoutside keydownoutside",function t(){a.animate({marginTop:n.NOTIFICATION_ANIMATION_START_OFFSET,opacity:0},"fast",function(){a.hide()}),a.off("touchstartoutside mousedownoutside keydownoutside",t)}))},isOpen:function(t){for(var o=0;oi&&(n-=t-i,n=Math.max(0,n),o.height(n))}},t.exports.TVOldDialogs=n}).call(this,e("Kxc7"),e("OiQe"))},PVgW:function(t,o,e){"use strict";function i(t){return t=Math.abs(t),!Object(r.isInteger)(t)&&t>1&&(t=parseFloat(t.toString().replace(/^.+\./,"0."))),0').appendTo(l.parent()),e=$('
').html(c).appendTo(o),i=$('
').html(c).appendTo(o),o.on("mousedown",function(t){t.preventDefault(),l.focus()}),e.click(function(){l.is(":disabled")||a(l)}),i.click(function(){l.is(":disabled")||s(l)}),l.keydown(function(t){l.is(":disabled")||(38===t.keyCode?e.addClass("i-active"):40===t.keyCode&&i.addClass("i-active"))}),l.keyup(function(t){l.is(":disabled")||(38===t.keyCode?(a(l),e.removeClass("i-active")):40===t.keyCode&&(s(l),i.removeClass("i-active")))}),l.mousewheel(function(t){t.deltaY*(t.deltaFactor/100)>0?e.click():i.click()}))})}},"R4+T":function(t,o){t.exports=''},jAh7:function(t,o,e){"use strict";function i(t){var o,e,i;return void 0===t&&(t=document),null!==(o=t.getElementById("overlap-manager-root"))?Object(n.ensureDefined)(l.get(o)):(e=new s(t),i=function(t){var o=t.createElement("div");return o.style.position="absolute",o.style.zIndex=150..toString(),o.style.top="0px",o.style.left="0px",o.id="overlap-manager-root",o}(t),l.set(i,e),e.setContainer(i),t.body.appendChild(i),e)}var n,a,s,l;e.r(o),e.d(o,"OverlapManager",function(){return s}),e.d(o,"getRootOverlapManager",function(){return i}),n=e("Eyy1"),a=function(){function t(){this._storage=[]}return t.prototype.add=function(t){this._storage.push(t)},t.prototype.remove=function(t){this._storage=this._storage.filter(function(o){return t!==o})},t.prototype.has=function(t){return this._storage.includes(t)},t.prototype.getItems=function(){return this._storage},t}(),s=function(){function t(t){void 0===t&&(t=document),this._storage=new a,this._windows=new Map,this._index=0,this._document=t,this._container=t.createDocumentFragment()}return t.prototype.setContainer=function(t){var o=this._container,e=null===t?this._document.createDocumentFragment():t;!function(t,o){Array.from(t.childNodes).forEach(function(t){t.nodeType===Node.ELEMENT_NODE&&o.appendChild(t)})}(o,e),this._container=e},t.prototype.registerWindow=function(t){this._storage.has(t)||this._storage.add(t)},t.prototype.ensureWindow=function(t,o){var e,i;return void 0===o&&(o={position:"fixed"}),void 0!==(e=this._windows.get(t))?e:(this.registerWindow(t),(i=this._document.createElement("div")).style.position=o.position,i.style.zIndex=this._index.toString(), +i.dataset.id=t,this._container.appendChild(i),this._windows.set(t,i),++this._index,i)},t.prototype.unregisterWindow=function(t){this._storage.remove(t);var o=this._windows.get(t);void 0!==o&&(null!==o.parentElement&&o.parentElement.removeChild(o),this._windows.delete(t))},t.prototype.getZindex=function(t){var o=this.ensureWindow(t);return parseInt(o.style.zIndex||"0")},t.prototype.moveToTop=function(t){this.getZindex(t)!==this._index&&(this.ensureWindow(t).style.zIndex=(++this._index).toString())},t.prototype.removeWindow=function(t){this.unregisterWindow(t)},t}(),l=new WeakMap},"y1L/":function(t,o,e){},zjLg:function(t,o,e){}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/16.cc58f582c191485d9392.css b/public/charting_library/static/bundles/16.cc58f582c191485d9392.css new file mode 100644 index 0000000..c714af6 --- /dev/null +++ b/public/charting_library/static/bundles/16.cc58f582c191485d9392.css @@ -0,0 +1 @@ +.header-dpl-vtN_-{position:relative;font-size:14px;font-weight:700;color:#212121;padding:30px 60px 30px 30px;border-bottom:1px solid;border-bottom-color:#dadde0}html.theme-dark .header-dpl-vtN_-{border-bottom-color:#363c4e;color:#c5cbce}@media screen and (max-width:767px){.header-dpl-vtN_-{padding:20px 60px 20px 20px}}.header-dpl-vtN_- .close-3kPn4OTV-{position:absolute;padding:15px;top:17px;right:15px;cursor:pointer;opacity:.5;transition:opacity .35s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width:767px){.header-dpl-vtN_- .close-3kPn4OTV-{top:7px;right:7px}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.header-dpl-vtN_- .close-3kPn4OTV-:hover{opacity:1;transition-duration:.06s}}.header-dpl-vtN_- .close-3kPn4OTV- svg{display:block;width:13px;height:13px;fill:#4a4a4a}html.theme-dark .header-dpl-vtN_- .close-3kPn4OTV- svg{fill:#c5cbce}.footer-2Zoji8zg-{padding:0 30px 30px}@media screen and (max-width:767px){.footer-2Zoji8zg-{padding:0 20px 20px}}.body-2N-vuwQW-{flex-grow:1;padding:30px;overflow:auto;-webkit-overflow-scrolling:touch}.body-2N-vuwQW-::-webkit-scrollbar{width:5px;height:5px}.body-2N-vuwQW-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .body-2N-vuwQW-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.body-2N-vuwQW-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px}@media screen and (max-width:767px){.body-2N-vuwQW-{padding:20px}}.message-2o-rtQm0-{position:absolute;left:0;top:0;right:0;font-size:14px;padding:30px;text-align:center;color:#37bc9b;background:#ebf9f5;transition:opacity .2625s ease,transform .2625s ease}html.theme-dark .message-2o-rtQm0-{background:#21384d}.message-2o-rtQm0-.error-2EW0C6z--{color:#ff4a68;background:#ffedf0}html.theme-dark .message-2o-rtQm0-.error-2EW0C6z--{background:#6f2626} \ No newline at end of file diff --git a/public/charting_library/static/bundles/16.cc58f582c191485d9392.rtl.css b/public/charting_library/static/bundles/16.cc58f582c191485d9392.rtl.css new file mode 100644 index 0000000..2ae2f1e --- /dev/null +++ b/public/charting_library/static/bundles/16.cc58f582c191485d9392.rtl.css @@ -0,0 +1 @@ +.header-dpl-vtN_-{position:relative;font-size:14px;font-weight:700;color:#212121;padding:30px 30px 30px 60px;border-bottom:1px solid;border-bottom-color:#dadde0}html.theme-dark .header-dpl-vtN_-{border-bottom-color:#363c4e;color:#c5cbce}@media screen and (max-width:767px){.header-dpl-vtN_-{padding:20px 20px 20px 60px}}.header-dpl-vtN_- .close-3kPn4OTV-{position:absolute;padding:15px;top:17px;left:15px;cursor:pointer;opacity:.5;transition:opacity .35s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width:767px){.header-dpl-vtN_- .close-3kPn4OTV-{top:7px;left:7px}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.header-dpl-vtN_- .close-3kPn4OTV-:hover{opacity:1;transition-duration:.06s}}.header-dpl-vtN_- .close-3kPn4OTV- svg{display:block;width:13px;height:13px;fill:#4a4a4a}html.theme-dark .header-dpl-vtN_- .close-3kPn4OTV- svg{fill:#c5cbce}.footer-2Zoji8zg-{padding:0 30px 30px}@media screen and (max-width:767px){.footer-2Zoji8zg-{padding:0 20px 20px}}.body-2N-vuwQW-{flex-grow:1;padding:30px;overflow:auto;-webkit-overflow-scrolling:touch}.body-2N-vuwQW-::-webkit-scrollbar{width:5px;height:5px}.body-2N-vuwQW-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .body-2N-vuwQW-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.body-2N-vuwQW-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px}@media screen and (max-width:767px){.body-2N-vuwQW-{padding:20px}}.message-2o-rtQm0-{position:absolute;right:0;top:0;left:0;font-size:14px;padding:30px;text-align:center;color:#37bc9b;background:#ebf9f5;transition:opacity .2625s ease,transform .2625s ease}html.theme-dark .message-2o-rtQm0-{background:#21384d}.message-2o-rtQm0-.error-2EW0C6z--{color:#ff4a68;background:#ffedf0}html.theme-dark .message-2o-rtQm0-.error-2EW0C6z--{background:#6f2626} \ No newline at end of file diff --git a/public/charting_library/static/bundles/16.e0d00f8a564954896734.js b/public/charting_library/static/bundles/16.e0d00f8a564954896734.js new file mode 100644 index 0000000..1be04ea --- /dev/null +++ b/public/charting_library/static/bundles/16.e0d00f8a564954896734.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/17.00b04a06a8cd9c6f5f6c.js b/public/charting_library/static/bundles/17.00b04a06a8cd9c6f5f6c.js new file mode 100644 index 0000000..d0e5e33 --- /dev/null +++ b/public/charting_library/static/bundles/17.00b04a06a8cd9c6f5f6c.js @@ -0,0 +1,5 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{bR4N:function(t,e,a){"use strict";var n,o=a("wmOI").ESC,s=a("0waE").guid,i=a("jAh7").getRootOverlapManager,p=function(t,e,n){var l,c,r,u,d,h,f=".popup-menu";t=$(t),(n=n||{}).activeClass=n.activeClass||"",l=(n.event||"click")+f,n.hideEvent&&(c=n.hideEvent+f),u=r=function(){},d={},h=function(l,h,v){function m(e){var a=$(e.target).parents().andSelf();a.is(w)||a.is(t)||a.is(".charts-popup-tab-headers, .charts-popup-itemheader")||u()}function g(t){if(d.preventFirstProcessClick)d.preventFirstProcessClick=!1;else{var e=$(t.target).parents().andSelf();e.is(".charts-popup-tab-headers, .charts-popup-itemheader")||n.notCloseOnButtons&&e.is(".icon-delete")||u()}}function b(t){t.keyCode===o&&u()}var C,w,y,T,x,D,_,k,S,M,A,I,N,L,E,O,W,P,R,z,B,F,G,H=s(),J=l.target.ownerDocument,U=J.defaultView,V=i(J),K=h||e;if("function"==typeof K&&(K=K()),$(this).hasClass("open")||$(this).hasClass("active"))return l.preventDefault(),u(),void(C=d.scrollTop);switch(u=function(){d.scrollTop=w.scrollTop(),w.remove(),V.removeWindow(H),t.removeClass("active open "+n.activeClass),t.data("popup-menu",null),$(J).off("click",g),$(J).off("mousedown",m),Modernizr.mobiletouch&&$(J).off("touchstart.chartgui",m),$(J).off("selectstart."+f),J.removeEventListener("keydown",b,!1),u=r,n.onRemove&&n.onRemove()},t.addClass("active open "+n.activeClass),w=$('
'),n.addClass&&w.addClass(n.addClass),n.zIndex&&w.css("z-index",n.zIndex),y=w,n.listInner&&(y=$('
').appendTo(y)),n.listTable&&(y=$('').text(o.title));else{if(o.separator)return h=$(''),void i.append(h);h=$(''),o.url&&h.attr("href",o.url),o.target&&h.attr("target",o.target),s||h.addClass("first"),"function"==typeof o.active?o.active(o)&&h.addClass("active"):o.active&&h.addClass("active"),o.addClass&&h.addClass(o.addClass),o.addData&&h.data(o.addData),o.disabled&&h.addClass("disabled"),"function"==typeof o.action&&(f=o.action,v=function(t){$(t.target).parents().andSelf().is(T)||(f.apply(h,arguments),!o.url&&t&&"function"==typeof t.preventDefault&&t.preventDefault())},n.upAction?h.bind("mouseup",v):h.bind("click",v)),o.date?(m=$('').appendTo(h),$('').text(o.date||"").appendTo(h)):o.icon&&!n.svg?((g=$('').appendTo(h)).css("background-image",o.icon.image||""),o.icon.offset&&g.css("background-position","string"==typeof o.icon.offset?o.icon.offset:o.icon.offset.x+"px "+o.icon.offset.y+"px"),m=$('').appendTo(h)):!0===n.svg&&o.svg?(n.wrapIcon?h.append($('').addClass(o.iconClass).append(o.svg)):h.append(o.svg),m=$('').appendTo(h)):o.iconClass?(h.append($('').addClass(o.iconClass)),m=$('').appendTo(h)):m=$('').appendTo(h),o.html?m.html(o.html):m.text(TradingView.clean(o.title,!0)||""),b=$('').appendTo(h),o.shortcut&&b.text(o.shortcut.keys),"function"==typeof o.deleteAction&&(C=o.deleteAction,y=o.deleteAction.title||$.t("Delete"),(T=$('')).html(a("uo4K")),T.attr("title",y),T.on("click",function(t){C.apply(h,arguments),t.preventDefault()}),h.append(T)),o.buttons instanceof Array&&o.buttons.length&&o.buttons.forEach(function(t){t.el instanceof $||(t.el=$(t.el)),t.el.appendTo(h),t.handler&&t.el.on("click",function(e){t.handler.apply(h,arguments)})}),void 0!==o.counter&&("function"==typeof o.counter?$('').html(o.counter()).appendTo(h):(x=o.counterBlue?"blue":"",$('').text(o.counter+"").addClass(x).appendTo(h))),i.append(h),t.data("popup-menu",i)}}(this,e,y)}),c||(d.preventFirstProcessClick=!0),$(J).on("click",g),$(J).on("mousedown",m),J.addEventListener("keydown",b,!1),Modernizr.mobiletouch&&$(J).on("touchstart.chartgui",m),n.upAction&&$(J).on("selectstart.popup-menu",function(){return!1}),w.appendTo(V.ensureWindow(H)),T=J.documentElement.clientWidth,x=J.documentElement.clientHeight,D=t.outerWidth(),_=t.outerHeight(),k=t.offset(),C=$(U).scrollTop()||0,k.top-=C, +k.top=Math.round(k.top),k.left=Math.round(k.left),S=w.outerWidth(),M=w.outerHeight(),A=void 0!==n.viewportSpacing?n.viewportSpacing:10,I=n.popupSpacing?~~n.popupSpacing:1,N=n.popupDrift?~~n.popupDrift:0,L=M-w.height(),E="down",n.direction&&(E="function"==typeof n.direction?n.direction():n.direction),O=!!n.reverse,"down"===E?(W=x-k.top-_-I-A-L,P=k.top-I-A-L,WW&&(E="up")):"right"===E&&(R=T-k.left-D-I-A-L,z=k.left-I-A-L,RR&&(E="left")),E){case"down":case"up":"down"===E?w.css("top",k.top+_+I+"px"):w.css("bottom",x-k.top+I+"px").css("top","auto"),O?w.css("left",Math.max(k.left+N+D-S,A)+"px").css("right","auto"):w.css("left",k.left+N+"px").css("right","auto");break;case"right":case"left":I=Math.max(I,4),"right"===E?w.css("left",Math.floor(k.left+D+I)+"px").css("right","auto"):w.css("left",Math.floor(Math.max(k.left-S-I,A))+"px").css("right","auto"),O?w.css("top",Math.floor(Math.max(k.top+N+_-M,A))+"px"):w.css("top",Math.floor(k.top+N)+"px")}w.show(),B=k.top,"up"===E||{left:1,right:1}[E]&&O?"up"!==E?B+=_:B-=_+I+L+A:B=x-B-_-2*I-L,w.height()>B&&w.addClass("popup-menu-scroll-y"),w.css("max-height",B+"px"),n.careRightBorder&&(F=T+$(U).scrollLeft(),parseInt(w.css("left"))+w.width()+A>F&&w.css("left",F-w.width()-A+"px").css("right","auto")),n.careBottomBorder&&parseInt(w.css("top"))+w.height()+A>x+C&&w.css("top",x-w.height()-A+C+"px"),G=w.offset(),w.css({position:"fixed",left:G.left-$(J).scrollLeft(),right:"auto"}),w[0].scrollHeight>w.height()&&w.addClass("popup-with-scroll"),l&&l.preventDefault()},l&&t.bind(l,h),c&&t.bind(c,function(){u()}),n.runOpened&&h()};p.TabGroup=function t(e){if(!(this instanceof t))return new t(e);e=e||{},this.tabs=[],"function"==typeof e.onChange&&(this.onChange=e.onChange)},p.TabGroup.prototype.appendTab=function(t,e,a){if(null==t?t="":t+="",e||(e=[]),a||(a={}),!Array.isArray(e))throw new TypeError("items must be an array");return this.tabs.push({name:t,items:e,active:!!a.active}),e},p.Header=function t(e){if(!(this instanceof t))return new t(e);this.title=e},p.Group=function t(e){if(!(this instanceof t))return new t(e);e=e||{},this.items=[],this.title=null==e.title?"":e.title+"",this.collapsible=!!e.collapsible,this.collapsed=!!e.collapsed,"function"==typeof e.onChange&&(this.onChange=e.onChange)},p.Group.prototype.push=function(){this.items.push.apply(this.items,arguments)},e.bindPopupMenu=p,n=function(t){(t=$(t)).unbind(".popup-menu"),t.removeData("popup-menu")},e.unbindPopupMenu=n},guTw:function(t,e,a){"use strict";(function(e){function n(t,a,n){var o={saveAsText:$.t("Save As..."),applyDefaultText:$.t("Apply Defaults")};this._toolName=t,this._applyTemplate=a,this._options=$.extend(o,n||{}),this._list=[],e.enabled("charting_library_base")||(this.templatesDeferred=this.loadData())}var o=a("bR4N").bindPopupMenu,s=a("UJLt").SaveRenameDialog,i=a("hkLy").InputField,p=a("oNDq").createConfirmDialog,l=a("uOxu").getLogger("Chart.LineToolTemplatesList");n._cache={},n.prototype.getData=function(){return this._list},n.prototype.loadData=function(){var t=this +;return this._toolName in n._cache?(this._list=n._cache[this._toolName],$.Deferred().resolve()):$.get("/drawing-templates/"+this._toolName+"/",function(e){t._list=e,n._cache[t._toolName]=e}).error(function(){l.logWarn("Failed to load drawing template: "+t._toolName)})},n.prototype.templatesLoaded=function(){return this.templatesDeferred},n.prototype.invalidateToolCache=function(){delete n._cache[this._toolName]},n.prototype.createButton=function(t){var e,a=this;return t=$.extend({},t,a._options),e=$("").addClass(t.buttonClass?t.buttonClass:"_tv-button").html(t.buttonInner?t.buttonInner:$.t("Template")+''),o(e,null,{event:"button-popup",hideEvent:"hide-popup",zIndex:t.popupZIndex,activeClass:t.popupActiveClass,direction:t.popupDirection}),e.bind("click",function(e){var n,o,s;e.stopPropagation(),$(this).is("active")||(n=[],"function"==typeof t.getDataForSaveAs&&(o=function(e){var n=JSON.stringify(t.getDataForSaveAs());a.saveTemplate(e,n)},n.push({title:t.saveAsText,action:a.showSaveDialog.bind(a,o),addClass:"special"})),"function"==typeof t.defaultsCallback&&n.push({title:t.applyDefaultText,action:t.defaultsCallback,addClass:"special"}),s=[],$.each(a._list,function(e,n){s.push({title:n,action:function(){a.loadTemplate.call(a,n,t.loadTemplateCallback)},deleteAction:function(){runOrSignIn(function(){var t=$.t("Do you really want to delete Drawing Template '{0}' ?").format(n);p({type:"modal",content:t}).then(function(t){t.on("action:yes",function(t){a.removeTemplate.call(a,n),t.close()}),t.open()})},{source:"Delete line tool template"})}})}),s.length&&(s.sort(function(t,e){return(t=t.title.toUpperCase())===(e=e.title.toUpperCase())?0:t>e?1:-1}),n.push({separator:!0}),n=n.concat(s)),$(this).trigger("button-popup",[n]))}),e},n.prototype.loadTemplate=function(t,e){var a=this;return $.get("/drawing-template/"+this._toolName+"/?templateName="+encodeURIComponent(t),function(t){a._applyTemplate(JSON.parse(t.content)),e&&e()}).error(function(t){l.logWarn(t.responseText)})},n.prototype.removeTemplate=function(t){if(t){$.post("/remove-drawing-template/",{name:t,tool:this._toolName}).error(function(t){l.logWarn(t.responseText)}),this.invalidateToolCache(),this._list=$.grep(this._list,function(e){return e!==t})}},n.prototype.saveTemplate=function(t,e){var a,n=this;t&&e&&(t=TradingView.clean(t),a=-1!==$.inArray(t,n._list),function(){var o={name:t,tool:n._toolName,content:e},s=function(){a||n._list.push(t)};$.post("/save-drawing-template/",o,s).error(function(t){l.logWarn(t.responseText)}),n.invalidateToolCache()}())},n.prototype.deleteAction=function(t){var e=t,a=this;runOrSignIn(function(){var t=$.t(" Do you really want to delete Drawing Template '{0}' ?").format(e);p({type:"modal",content:t}).then(function(t){t.on("action:yes",function(t){a.removeTemplate.call(a,e),t.close()}),t.open()})},{source:"Delete line tool template"})},n.prototype.showSaveDialog=function(t){var e=this,a="text",n=function(t){return TradingView.clean(t[a])},o=new s({fields:[new i({name:a,label:$.t("Template name")+":", +maxLength:64,error:$.t("Please enter template name")})],title:$.t("Save Drawing Template As"),confirm:{shouldShowDialog:function(t){return-1!==e._list.indexOf(n(t))},getMessage:function(t){return $.t("Drawing Template '{0}' already exists. Do you really want to replace it?").format(n(t))}}});runOrSignIn(function(){o.show().then(function(e){t(e[a])})},{source:"Save line tool template",sourceMeta:"Chart"})},t.exports=n}).call(this,a("Kxc7"))},uo4K:function(t,e){t.exports=''}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/18.183d41ade16dae257526.css b/public/charting_library/static/bundles/18.183d41ade16dae257526.css new file mode 100644 index 0000000..71a8e58 --- /dev/null +++ b/public/charting_library/static/bundles/18.183d41ade16dae257526.css @@ -0,0 +1 @@ +.inputWrapper-6bNZbTW4-{display:flex;flex-grow:1;position:relative;border-radius:2px 2px 2px 2px}.textInput-3WRWEmm7-{background-color:#fff;border:1px solid;box-sizing:border-box;color:#535353;display:flex;font-size:13px;height:34px;padding:0 12px;transition:border-color .35s ease 0s,background-color .35s ease 0s;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:inherit;border-color:#dadde0;flex:1}html.theme-dark .textInput-3WRWEmm7-{border-color:#363c4e;color:#f2f3f5;background-color:#131722}.textInput-3WRWEmm7-:-ms-input-placeholder,.textInput-3WRWEmm7-::-ms-input-placeholder{color:#adaeb0;opacity:1}.textInput-3WRWEmm7-::placeholder{color:#adaeb0;opacity:1}html.theme-dark .textInput-3WRWEmm7-:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-::-ms-input-placeholder{color:#4f5966}html.theme-dark .textInput-3WRWEmm7-::placeholder{color:#4f5966}.textInput-3WRWEmm7-[readonly],.textInput-3WRWEmm7-[readonly]:focus{border-color:#dadde0;color:#8a8a8a}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[readonly]:hover{border-color:#dadde0;color:#8a8a8a}}html.theme-dark .textInput-3WRWEmm7-[readonly],html.theme-dark .textInput-3WRWEmm7-[readonly]:focus{color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[readonly]:hover{color:#758696}}html.theme-dark .textInput-3WRWEmm7-[readonly],html.theme-dark .textInput-3WRWEmm7-[readonly]:focus{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[readonly]:hover{border-color:#363c4e}}.textInput-3WRWEmm7-[disabled]{color:#ececec;border-color:#ececec;background-color:#fff;cursor:auto}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[disabled]:hover{color:#ececec;border-color:#ececec;background-color:#fff;cursor:auto}}html.theme-dark .textInput-3WRWEmm7-[disabled]{background-color:#131722}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{background-color:#131722}}html.theme-dark .textInput-3WRWEmm7-[disabled]{border-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{border-color:#262b3e}}html.theme-dark .textInput-3WRWEmm7-[disabled]{color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{color:#262b3e}}.textInput-3WRWEmm7-[disabled]:-ms-input-placeholder,.textInput-3WRWEmm7-[disabled]::-ms-input-placeholder{color:#ececec}.textInput-3WRWEmm7-[disabled]::placeholder{color:#ececec}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[disabled]:hover:-ms-input-placeholder,.textInput-3WRWEmm7-[disabled]:hover::-ms-input-placeholder{color:#ececec}.textInput-3WRWEmm7-[disabled]:hover::placeholder{color:#ececec}}html.theme-dark .textInput-3WRWEmm7-[disabled]:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-[disabled]::-ms-input-placeholder{color:#262b3e}html.theme-dark .textInput-3WRWEmm7-[disabled]::placeholder{color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-[disabled]:hover::-ms-input-placeholder{color:#262b3e}html.theme-dark .textInput-3WRWEmm7-[disabled]:hover::placeholder{color:#262b3e}}.textInput-3WRWEmm7-.error-v0663AtN-,.textInput-3WRWEmm7-.error-v0663AtN-[disabled],.textInput-3WRWEmm7-.error-v0663AtN-[readonly]{border-color:#f24965!important}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-.error-v0663AtN-:hover{border-color:#f24965!important}}.textInput-3WRWEmm7-.success-7iP8kTY5-,.textInput-3WRWEmm7-.success-7iP8kTY5-[disabled],.textInput-3WRWEmm7-.success-7iP8kTY5-[readonly]{border-color:#38b395!important}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-.success-7iP8kTY5-:hover{border-color:#38b395!important}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-:hover{border-color:#c8c8c8;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-:hover{border-color:#4c525e}}.textInput-3WRWEmm7-:focus{border-color:#2196f3!important;transition-duration:.06s}.textInput-3WRWEmm7-.textInputLeftDirection-mlAXPh8V-{text-align:left;direction:ltr}.xsmall-3Ah_Or2--{height:19px}.small-2bmxiJCE-{height:27px}.large-1JDowW2I-{height:48px}.iconed-3ZQvxTot- .textInput-3WRWEmm7-{padding-left:30px}.iconed-3ZQvxTot- .inputIcon-W_Bse-a1-{opacity:.4}.iconed-3ZQvxTot- .inputIcon-W_Bse-a1- svg{display:inline-block;position:absolute;width:14px;height:14px;margin:10px 0 0 10px;fill:#4a4a4a;stroke:#4a4a4a}.clearable-2tabt_rj- .textInput-3WRWEmm7-{display:inline-block;width:100%}.clearable-2tabt_rj- .clearIcon-389FR5J4-{display:inline-flex;position:absolute;right:12px;top:10px;cursor:pointer;opacity:.4}.clearable-2tabt_rj- .clearIcon-389FR5J4- svg{max-width:16px;height:16px;fill:#4a4a4a;stroke:#4a4a4a} \ No newline at end of file diff --git a/public/charting_library/static/bundles/18.183d41ade16dae257526.rtl.css b/public/charting_library/static/bundles/18.183d41ade16dae257526.rtl.css new file mode 100644 index 0000000..cc585cf --- /dev/null +++ b/public/charting_library/static/bundles/18.183d41ade16dae257526.rtl.css @@ -0,0 +1 @@ +.inputWrapper-6bNZbTW4-{display:flex;flex-grow:1;position:relative;border-radius:2px 2px 2px 2px}.textInput-3WRWEmm7-{background-color:#fff;border:1px solid;box-sizing:border-box;color:#535353;display:flex;font-size:13px;height:34px;padding:0 12px;transition:border-color .35s ease 0s,background-color .35s ease 0s;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:inherit;border-color:#dadde0;flex:1}html.theme-dark .textInput-3WRWEmm7-{border-color:#363c4e;color:#f2f3f5;background-color:#131722}.textInput-3WRWEmm7-:-ms-input-placeholder,.textInput-3WRWEmm7-::-ms-input-placeholder{color:#adaeb0;opacity:1}.textInput-3WRWEmm7-::placeholder{color:#adaeb0;opacity:1}html.theme-dark .textInput-3WRWEmm7-:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-::-ms-input-placeholder{color:#4f5966}html.theme-dark .textInput-3WRWEmm7-::placeholder{color:#4f5966}.textInput-3WRWEmm7-[readonly],.textInput-3WRWEmm7-[readonly]:focus{border-color:#dadde0;color:#8a8a8a}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[readonly]:hover{border-color:#dadde0;color:#8a8a8a}}html.theme-dark .textInput-3WRWEmm7-[readonly],html.theme-dark .textInput-3WRWEmm7-[readonly]:focus{color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[readonly]:hover{color:#758696}}html.theme-dark .textInput-3WRWEmm7-[readonly],html.theme-dark .textInput-3WRWEmm7-[readonly]:focus{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[readonly]:hover{border-color:#363c4e}}.textInput-3WRWEmm7-[disabled]{color:#ececec;border-color:#ececec;background-color:#fff;cursor:auto}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[disabled]:hover{color:#ececec;border-color:#ececec;background-color:#fff;cursor:auto}}html.theme-dark .textInput-3WRWEmm7-[disabled]{background-color:#131722}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{background-color:#131722}}html.theme-dark .textInput-3WRWEmm7-[disabled]{border-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{border-color:#262b3e}}html.theme-dark .textInput-3WRWEmm7-[disabled]{color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{color:#262b3e}}.textInput-3WRWEmm7-[disabled]:-ms-input-placeholder,.textInput-3WRWEmm7-[disabled]::-ms-input-placeholder{color:#ececec}.textInput-3WRWEmm7-[disabled]::placeholder{color:#ececec}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[disabled]:hover:-ms-input-placeholder,.textInput-3WRWEmm7-[disabled]:hover::-ms-input-placeholder{color:#ececec}.textInput-3WRWEmm7-[disabled]:hover::placeholder{color:#ececec}}html.theme-dark .textInput-3WRWEmm7-[disabled]:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-[disabled]::-ms-input-placeholder{color:#262b3e}html.theme-dark .textInput-3WRWEmm7-[disabled]::placeholder{color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-[disabled]:hover::-ms-input-placeholder{color:#262b3e}html.theme-dark .textInput-3WRWEmm7-[disabled]:hover::placeholder{color:#262b3e}}.textInput-3WRWEmm7-.error-v0663AtN-,.textInput-3WRWEmm7-.error-v0663AtN-[disabled],.textInput-3WRWEmm7-.error-v0663AtN-[readonly]{border-color:#f24965!important}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-.error-v0663AtN-:hover{border-color:#f24965!important}}.textInput-3WRWEmm7-.success-7iP8kTY5-,.textInput-3WRWEmm7-.success-7iP8kTY5-[disabled],.textInput-3WRWEmm7-.success-7iP8kTY5-[readonly]{border-color:#38b395!important}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-.success-7iP8kTY5-:hover{border-color:#38b395!important}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-:hover{border-color:#c8c8c8;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-:hover{border-color:#4c525e}}.textInput-3WRWEmm7-:focus{border-color:#2196f3!important;transition-duration:.06s}.textInput-3WRWEmm7-.textInputLeftDirection-mlAXPh8V-{text-align:left;direction:ltr}.xsmall-3Ah_Or2--{height:19px}.small-2bmxiJCE-{height:27px}.large-1JDowW2I-{height:48px}.iconed-3ZQvxTot- .textInput-3WRWEmm7-{padding-right:30px}.iconed-3ZQvxTot- .inputIcon-W_Bse-a1-{opacity:.4}.iconed-3ZQvxTot- .inputIcon-W_Bse-a1- svg{display:inline-block;position:absolute;width:14px;height:14px;margin:10px 10px 0 0;fill:#4a4a4a;stroke:#4a4a4a}.clearable-2tabt_rj- .textInput-3WRWEmm7-{display:inline-block;width:100%}.clearable-2tabt_rj- .clearIcon-389FR5J4-{display:inline-flex;position:absolute;left:12px;top:10px;cursor:pointer;opacity:.4}.clearable-2tabt_rj- .clearIcon-389FR5J4- svg{max-width:16px;height:16px;fill:#4a4a4a;stroke:#4a4a4a} \ No newline at end of file diff --git a/public/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js b/public/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js new file mode 100644 index 0000000..85ee7de --- /dev/null +++ b/public/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/19.aba848e28ec755548668.css b/public/charting_library/static/bundles/19.aba848e28ec755548668.css new file mode 100644 index 0000000..a5b87a7 --- /dev/null +++ b/public/charting_library/static/bundles/19.aba848e28ec755548668.css @@ -0,0 +1 @@ +.loader-3Pj8ExOX-{position:absolute;top:0;left:0;right:0;bottom:0;height:100%;margin:0 auto;text-align:center;font-size:0;opacity:1;transition:opacity .35s ease}.loader-3Pj8ExOX-:after{content:" ";display:inline-block;height:100%;vertical-align:middle}.loader-3Pj8ExOX- .item-2n55_7om-{margin-right:2px;margin-left:2px;display:inline-block;vertical-align:middle;width:10px;height:10px;opacity:1;border-radius:100%;transform:translateY(0) scale(.6);transition:transform .35s cubic-bezier(.68,-.55,.265,1.55);animation:tv-button-loader-SKpJjjYw- .96s infinite ease-in-out both}.loader-3Pj8ExOX- .item-2n55_7om-:nth-child(2){transition-delay:.11666667s;animation-delay:.151s}.loader-3Pj8ExOX- .item-2n55_7om-:nth-child(3){transition-delay:.23333333s;animation-delay:.32s}.loader-3Pj8ExOX- .item-2n55_7om-.black-eFIQWyf4-{background-color:#757575}.loader-3Pj8ExOX- .item-2n55_7om-.white-2Ma0ajvT-{background-color:#fff}.loader-3Pj8ExOX- .item-2n55_7om-.gray-24fvVR0S-{background-color:#8797a5}.loader-3Pj8ExOX-.loader-initial{opacity:.1}.loader-3Pj8ExOX-.loader-initial .item-2n55_7om-{animation:none;transform:translateY(12px) scale(.6)}.loader-3Pj8ExOX-.loader-appear{opacity:1;transition:opacity .7s ease}.loader-3Pj8ExOX-.loader-appear .item-2n55_7om-{animation:none;transform:translateY(0) scale(.6)}@keyframes tv-button-loader-SKpJjjYw-{0%,to{transform:scale(.6)}50%{transform:scale(.9)}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/19.aba848e28ec755548668.rtl.css b/public/charting_library/static/bundles/19.aba848e28ec755548668.rtl.css new file mode 100644 index 0000000..069a2e6 --- /dev/null +++ b/public/charting_library/static/bundles/19.aba848e28ec755548668.rtl.css @@ -0,0 +1 @@ +.loader-3Pj8ExOX-{position:absolute;top:0;right:0;left:0;bottom:0;height:100%;margin:0 auto;text-align:center;font-size:0;opacity:1;transition:opacity .35s ease}.loader-3Pj8ExOX-:after{content:" ";display:inline-block;height:100%;vertical-align:middle}.loader-3Pj8ExOX- .item-2n55_7om-{margin-left:2px;margin-right:2px;display:inline-block;vertical-align:middle;width:10px;height:10px;opacity:1;border-radius:100%;transform:translateY(0) scale(.6);transition:transform .35s cubic-bezier(.68,-.55,.265,1.55);animation:tv-button-loader-SKpJjjYw- .96s infinite ease-in-out both}.loader-3Pj8ExOX- .item-2n55_7om-:nth-child(2){transition-delay:.11666667s;animation-delay:.151s}.loader-3Pj8ExOX- .item-2n55_7om-:nth-child(3){transition-delay:.23333333s;animation-delay:.32s}.loader-3Pj8ExOX- .item-2n55_7om-.black-eFIQWyf4-{background-color:#757575}.loader-3Pj8ExOX- .item-2n55_7om-.white-2Ma0ajvT-{background-color:#fff}.loader-3Pj8ExOX- .item-2n55_7om-.gray-24fvVR0S-{background-color:#8797a5}.loader-3Pj8ExOX-.loader-initial{opacity:.1}.loader-3Pj8ExOX-.loader-initial .item-2n55_7om-{animation:none;transform:translateY(12px) scale(.6)}.loader-3Pj8ExOX-.loader-appear{opacity:1;transition:opacity .7s ease}.loader-3Pj8ExOX-.loader-appear .item-2n55_7om-{animation:none;transform:translateY(0) scale(.6)}@keyframes tv-button-loader-SKpJjjYw-{0%,to{transform:scale(.6)}50%{transform:scale(.9)}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/19.c5542d290eefbb001433.js b/public/charting_library/static/bundles/19.c5542d290eefbb001433.js new file mode 100644 index 0000000..eded22f --- /dev/null +++ b/public/charting_library/static/bundles/19.c5542d290eefbb001433.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/2.195070ea59b3395625da.js b/public/charting_library/static/bundles/2.195070ea59b3395625da.js new file mode 100644 index 0000000..8d153e3 --- /dev/null +++ b/public/charting_library/static/bundles/2.195070ea59b3395625da.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.css b/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.css new file mode 100644 index 0000000..854e846 --- /dev/null +++ b/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.css @@ -0,0 +1 @@ +.tv-button{position:relative;display:inline-block;vertical-align:middle;min-width:40px;margin:0;padding:1px 22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:32px;text-align:center;white-space:nowrap;text-decoration:none;font-size:14px;color:#757575;fill:currentColor;border:none;border-radius:4px;outline:0;background-color:transparent;cursor:pointer;overflow:hidden;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transition:background-color .35s ease,border-color .35s ease,color .35s ease}.tv-button.tv-button--danger_ghost,.tv-button.tv-button--default,.tv-button.tv-button--default_ghost,.tv-button.tv-button--primary_ghost,.tv-button.tv-button--secondary_ghost,.tv-button.tv-button--state,.tv-button.tv-button--success_ghost,.tv-button.tv-button--warning_ghost{padding:0 21px}.tv-button.i-active,.tv-button.i-hover,.tv-button:active{transition-duration:.06s}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button:hover{transition-duration:.06s}}.tv-button svg{vertical-align:middle}.tv-button--block{display:block;width:100%;text-align:center}.tv-button+.tv-button{margin-left:15px}.tv-button.tv-button--no-left-margin{margin-left:0}.tv-button__text{position:relative;display:inline-block}.tv-button__text--full-height{display:flex;align-items:center;justify-content:center;height:100%;width:100%;white-space:normal;word-wrap:break-word;line-height:1.2em;margin:11px 5px}.tv-button--default,.tv-button--default_ghost{color:#fff;border-color:#fff;background-color:#fff}html.theme-dark .tv-button--default,html.theme-dark .tv-button--default_ghost{background-color:#171b29;border-color:#171b29}.tv-button--default_ghost{color:#fff}html.theme-dark .tv-button--default_ghost{color:#171b29}.tv-button--default_ghost.i-checked{color:#fff;border-color:#fff;background-color:#fff}html.theme-dark .tv-button--default_ghost.i-checked{background-color:#171b29;border-color:#171b29}.tv-button--default.i-hover,.tv-button--default_ghost.i-hover{color:#fff;border-color:#f2f2f2;background-color:#f2f2f2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--default:hover,.tv-button--default_ghost:hover{color:#fff;border-color:#f2f2f2;background-color:#f2f2f2}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{background-color:#1c2030}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{background-color:#1c2030}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{border-color:#1c2030}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{border-color:#1c2030}}.tv-button--default.i-active,.tv-button--default:active,.tv-button--default_ghost.i-active,.tv-button--default_ghost:active{color:#fff;border-color:#ececec;background-color:#ececec;transform:translateY(1px)}html.theme-dark .tv-button--default.i-active,html.theme-dark .tv-button--default:active,html.theme-dark .tv-button--default_ghost.i-active,html.theme-dark .tv-button--default_ghost:active{background-color:#1c2030;border-color:#1c2030}.tv-button--default,.tv-button--default.i-checked,.tv-button--default_ghost,.tv-button--default_ghost.i-checked{color:#757575;border:1px solid;border-color:#b5b7b9}html.theme-dark .tv-button--default,html.theme-dark .tv-button--default.i-checked,html.theme-dark .tv-button--default_ghost,html.theme-dark .tv-button--default_ghost.i-checked{border-color:#363c4e;color:#758696}.tv-button--default.i-hover,.tv-button--default_ghost.i-hover{color:#757575;border-color:#b5b7b9}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--default:hover,.tv-button--default_ghost:hover{color:#757575;border-color:#b5b7b9}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{border-color:#363c4e}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{color:#758696}}.tv-button--default.i-active,.tv-button--default:active,.tv-button--default_ghost.i-active,.tv-button--default_ghost:active{color:#757575;border-color:#b5b7b9}html.theme-dark .tv-button--default.i-active,html.theme-dark .tv-button--default:active,html.theme-dark .tv-button--default_ghost.i-active,html.theme-dark .tv-button--default_ghost:active{border-color:#363c4e;color:#758696}.tv-button--primary,.tv-button--primary_ghost{color:#fff;border-color:#2196f3;background-color:#2196f3}.tv-button--primary_ghost{color:#2196f3}.tv-button--primary_ghost.i-checked{color:#fff;border-color:#2196f3;background-color:#2196f3}.tv-button--primary.i-hover,.tv-button--primary_ghost.i-hover{color:#fff;border-color:#1e88e5;background-color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--primary:hover,.tv-button--primary_ghost:hover{color:#fff;border-color:#1e88e5;background-color:#1e88e5}}.tv-button--primary.i-active,.tv-button--primary:active,.tv-button--primary_ghost.i-active,.tv-button--primary_ghost:active{color:#fff;border-color:#049ddc;background-color:#049ddc;transform:translateY(1px)}.tv-button--secondary,.tv-button--secondary_ghost{color:#757575;border-color:#e9eff2;background-color:#e9eff2}.tv-button--secondary_ghost{color:#757575}.tv-button--secondary_ghost.i-checked{color:#757575;border-color:#e9eff2;background-color:#e9eff2}.tv-button--secondary.i-hover,.tv-button--secondary_ghost.i-hover{color:#757575;border-color:#dce6ea;background-color:#dce6ea}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--secondary:hover,.tv-button--secondary_ghost:hover{color:#757575;border-color:#dce6ea;background-color:#dce6ea}}.tv-button--secondary.i-active,.tv-button--secondary:active,.tv-button--secondary_ghost.i-active,.tv-button--secondary_ghost:active{color:#757575;border-color:#cfdce3;background-color:#cfdce3;transform:translateY(1px)}.tv-button--success,.tv-button--success_ghost{color:#fff;border-color:#3cbc98;background-color:#3cbc98}.tv-button--success_ghost{color:#3cbc98}.tv-button--success_ghost.i-checked{color:#fff;border-color:#3cbc98;background-color:#3cbc98}.tv-button--success.i-hover,.tv-button--success_ghost.i-hover{color:#fff;border-color:#38b395;background-color:#38b395}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--success:hover,.tv-button--success_ghost:hover{color:#fff;border-color:#38b395;background-color:#38b395}}.tv-button--success.i-active,.tv-button--success:active,.tv-button--success_ghost.i-active,.tv-button--success_ghost:active{color:#fff;border-color:#00a97f;background-color:#00a97f;transform:translateY(1px)}.tv-button--danger,.tv-button--danger_ghost{color:#fff;border-color:#ff4a68;background-color:#ff4a68}.tv-button--danger_ghost{color:#ff4a68}.tv-button--danger_ghost.i-checked{color:#fff;border-color:#ff4a68;background-color:#ff4a68}.tv-button--danger.i-hover,.tv-button--danger_ghost.i-hover{color:#fff;border-color:#f24965;background-color:#f24965}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--danger:hover,.tv-button--danger_ghost:hover{color:#fff;border-color:#f24965;background-color:#f24965}}.tv-button--danger.i-active,.tv-button--danger:active,.tv-button--danger_ghost.i-active,.tv-button--danger_ghost:active{color:#fff;border-color:#ff173e;background-color:#ff173e;transform:translateY(1px)}.tv-button--warning,.tv-button--warning_ghost{color:#fff;border-color:#f89e30;background-color:#f89e30}.tv-button--warning_ghost{color:#f89e30}.tv-button--warning_ghost.i-checked{color:#fff;border-color:#f89e30;background-color:#f89e30}.tv-button--warning.i-hover,.tv-button--warning_ghost.i-hover{color:#fff;border-color:#f79217;background-color:#f79217}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--warning:hover,.tv-button--warning_ghost:hover{color:#fff;border-color:#f79217;background-color:#f79217}}.tv-button--warning.i-active,.tv-button--warning:active,.tv-button--warning_ghost.i-active,.tv-button--warning_ghost:active{color:#fff;border-color:#d47807;background-color:#d47807;transform:translateY(1px)}.tv-button--link{color:#2196f3;transition:color .35s ease}html.theme-dark .tv-button--link{color:#1976d2}.tv-button--link:visited{color:#2196f3;fill:#2196f3}html.theme-dark .tv-button--link:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--link:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}.tv-button--link:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}.tv-button--danger_ghost,.tv-button--default_ghost,.tv-button--primary_ghost,.tv-button--secondary_ghost,.tv-button--success_ghost,.tv-button--warning_ghost{border-width:1px;border-style:solid;background-color:transparent}.tv-button--danger_ghost.tv-button--size_large,.tv-button--default_ghost.tv-button--size_large,.tv-button--primary_ghost.tv-button--size_large,.tv-button--secondary_ghost.tv-button--size_large,.tv-button--success_ghost.tv-button--size_large,.tv-button--warning_ghost.tv-button--size_large{border-width:2px}.tv-button .tv-ripple{background-color:hsla(0,0%,100%,.25)}.tv-button--default .tv-ripple,.tv-button--default_ghost .tv-ripple{background-color:rgba(117,134,150,.25)}.tv-button.i-disabled .tv-ripple{background-color:transparent}.tv-button.i-disabled,.tv-button.i-disabled:active,.tv-button:disabled,.tv-button:disabled:active{cursor:default;color:#9db2bd;border-color:#f1f3f6;background-color:#f1f3f6}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button.i-disabled:hover,.tv-button:disabled:hover{cursor:default;color:#9db2bd;border-color:#f1f3f6;background-color:#f1f3f6}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{background-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{background-color:#262b3e}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{border-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{border-color:#262b3e}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{color:#363c4e}}.tv-button.i-disabled:active,.tv-button:disabled:active{transform:translateY(0)}.tv-button--size_xsmall{padding:2px 7px;line-height:15px;border-radius:1px;font-size:11px;font-weight:400}.tv-button--size_xsmall.tv-button--danger_ghost,.tv-button--size_xsmall.tv-button--default,.tv-button--size_xsmall.tv-button--default_ghost,.tv-button--size_xsmall.tv-button--primary_ghost,.tv-button--size_xsmall.tv-button--secondary_ghost,.tv-button--size_xsmall.tv-button--state,.tv-button--size_xsmall.tv-button--success_ghost,.tv-button--size_xsmall.tv-button--warning_ghost{padding:1px 6px}.tv-button--size_xsmall+.tv-button--size_xsmall{margin-left:10px}.tv-button--size_small{padding:1px 12px;line-height:25px;font-size:13px}.tv-button--size_small.tv-button--danger_ghost,.tv-button--size_small.tv-button--default,.tv-button--size_small.tv-button--default_ghost,.tv-button--size_small.tv-button--primary_ghost,.tv-button--size_small.tv-button--secondary_ghost,.tv-button--size_small.tv-button--state,.tv-button--size_small.tv-button--success_ghost,.tv-button--size_small.tv-button--warning_ghost{padding:0 11px}.tv-button--size_small+.tv-button--size_small{margin-left:10px}.tv-button--size_large{padding:1px 30px;font-size:17px;letter-spacing:1px;line-height:44px}.tv-button--size_large.tv-button--danger_ghost,.tv-button--size_large.tv-button--default,.tv-button--size_large.tv-button--default_ghost,.tv-button--size_large.tv-button--primary_ghost,.tv-button--size_large.tv-button--secondary_ghost,.tv-button--size_large.tv-button--state,.tv-button--size_large.tv-button--success_ghost,.tv-button--size_large.tv-button--warning_ghost{padding:0 29px}.tv-button--max-width{max-width:300px}.tv-button--no-padding{padding:1px}.tv-button--no-padding.tv-button--danger_ghost,.tv-button--no-padding.tv-button--default,.tv-button--no-padding.tv-button--default_ghost,.tv-button--no-padding.tv-button--primary_ghost,.tv-button--no-padding.tv-button--secondary_ghost,.tv-button--no-padding.tv-button--state,.tv-button--no-padding.tv-button--success_ghost,.tv-button--no-padding.tv-button--warning_ghost{padding:0}.tv-button--content-center{display:flex;align-items:center;justify-content:center;height:100%;margin:0 auto;max-width:220px}.tv-button--state{text-align:center;background:transparent;border-width:1px;border-style:solid}.tv-button--state:after{content:"";display:inline-block}.tv-button--state__checked,.tv-button--state__uncheck-hint,.tv-button--state__unchecked{display:block;height:0;transition:opacity .2625s ease,transform .2625s ease}.tv-button--state__ellipsis-text{display:block;white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked,.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint,.tv-button--state.i-checked:hover .tv-button--state__unchecked{will-change:opacity,transform}}.tv-button--state.i-checked .tv-button--state__unchecked,.tv-button--state__checked,.tv-button--state__uncheck-hint{opacity:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked{opacity:0}}.tv-button--state.i-checked .tv-button--state__checked,.tv-button--state__unchecked{opacity:1}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint{opacity:1}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked{transform:translateY(-5px)}}.tv-button--state.i-checked .tv-button--state__unchecked,.tv-button--state__checked,.tv-button--state__uncheck-hint{transform:translateY(5px)}.tv-button--state.i-checked .tv-button--state__checked{transform:translateY(0)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint{transform:translateY(0)}}.tv-button--state.tv-button--success{color:#3cbc98;background-color:transparent}.tv-button--state.tv-button--success.i-checked{color:#fff;background-color:#3cbc98}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--success:hover{color:#fff;background-color:#38b395}}.tv-button--state.tv-button--success:active{color:#fff;background-color:#00a97f}.tv-button--state.tv-button--danger{color:#ff4a68;background-color:transparent}.tv-button--state.tv-button--danger.i-checked{color:#fff;background-color:#ff4a68}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--danger:hover{color:#fff;background-color:#f24965}}.tv-button--state.tv-button--danger:active{color:#fff;background-color:#ff173e}.tv-button--state.tv-button--primary{color:#2196f3;background-color:transparent}.tv-button--state.tv-button--primary.i-checked{color:#fff;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--primary:hover{color:#fff;background-color:#1e88e5}}.tv-button--state.tv-button--primary:active{color:#fff;background-color:#049ddc}.tv-button--state.tv-button--secondary{color:#757575;background-color:transparent}.tv-button--state.tv-button--secondary.i-checked{color:#757575;background-color:#e9eff2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--secondary:hover{color:#757575;background-color:#dce6ea}}.tv-button--state.tv-button--secondary:active{color:#757575;background-color:#cfdce3}.tv-button--state.tv-button--warning{color:#f89e30;background-color:transparent}.tv-button--state.tv-button--warning.i-checked{color:#fff;background-color:#f89e30}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--warning:hover{color:#fff;background-color:#f79217}}.tv-button--state.tv-button--warning:active{color:#fff;background-color:#d47807}.tv-button--loader .tv-button__text{transition:opacity .175s ease,transform .175s ease}.tv-button--loader.i-start-load .tv-button__text{opacity:0;transform:translateY(-5px)}.tv-button--loader.i-loading .tv-button__text{opacity:0;transform:translateY(5px)}.tv-button--loader.i-stop-load .tv-button__text{opacity:1;transform:translateY(0);transition-delay:.175s}.tv-button__loader{position:absolute;top:0;left:0;right:0;bottom:0;height:100%;margin:0 auto;text-align:center;font-size:0;opacity:0;transition:opacity .35s ease}.tv-button__loader:after{content:"";display:inline-block;height:100%;vertical-align:middle}.tv-button--loader.i-loading .tv-button__loader,.tv-button--loader.i-start-load .tv-button__loader{opacity:1}.tv-button--loader.i-stop-load .tv-button__loader{opacity:0}.tv-button__loader-item{margin-right:2px;margin-left:2px;display:inline-block;vertical-align:middle;width:10px;height:10px;opacity:0;border-radius:100%;background-color:#fff;transform:translateY(12px) scale(.6);transition:transform .35s cubic-bezier(.68,-.55,.265,1.55),opacity .35s ease}.tv-button__loader-item:nth-child(2){transition-delay:.11666667s}.tv-button__loader-item:nth-child(3){transition-delay:.23333333s}.tv-button--default .tv-button__loader-item{background-color:#757575}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-start-load .tv-button__loader-item{opacity:1}.tv-button--loader.i-stop-load .tv-button__loader-item{opacity:0}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-start-load .tv-button__loader-item,.tv-button--loader.i-stop-load .tv-button__loader-item{transform:translateY(0) scale(.6)}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-stop-load .tv-button__loader-item{animation:tv-button-loader .96s infinite ease-in-out both}.tv-button--loader.i-loading .tv-button__loader-item:nth-child(2),.tv-button--loader.i-stop-load .tv-button__loader-item:nth-child(2){animation-delay:.151s}.tv-button--loader.i-loading .tv-button__loader-item:nth-child(3),.tv-button--loader.i-stop-load .tv-button__loader-item:nth-child(3){animation-delay:.32s}.tv-button--no-border-radius{border-radius:0}.tv-button--no-border{border:none}.tv-button--connect{border-radius:0}.tv-button--connect_left{border-top-left-radius:0;border-bottom-left-radius:0}.tv-button--connect_right{border-top-right-radius:0;border-bottom-right-radius:0}@keyframes tv-button-loader{0%,to{transform:scale(.6)}50%{transform:scale(.9)}}@media screen and (max-width:767px){.tv-button.tv-button--phone-compact{padding-left:4px;padding-right:4px}}.sb-inner-shadow{box-shadow:0 0 5px rgba(0,0,0,.15);position:absolute;bottom:-10px;width:100%;height:10px;background:#fff;z-index:5;pointer-events:none;transform:translateY(0);transition:opacity .11666667s ease,transform .11666667s ease}html.theme-dark .sb-inner-shadow{background:#171b29}.sb-inner-shadow.top{box-shadow:0 0 5px rgba(0,0,0,.15);top:-10px}.sb-inner-shadow.i-invisible{transform:translateY(5px)}.sb-inner-shadow.i-invisible.top{transform:translateY(-5px)}.sb-inner-shadow.i-invisible{opacity:0}.sb-scrollbar{position:absolute!important;opacity:0;width:7px;height:100px;top:73px;right:1px;z-index:1;transition:opacity .3s}.sb-scrollbar.active,.sb-scrollbar.active-always{opacity:1}.sb-scrollbar__content-wrapper--scroll-inited{position:relative}.sb-scrollbar__content--scroll-inited{position:absolute}.sb-scrollbar-wrap{position:absolute;top:0;right:1px;width:6px;height:100%;z-index:1}.sb-scrollbar-wrap .sb-scrollbar{right:0}.sb-scrollbar-body{width:6px;border:0;background:#d8d8d8}html.theme-dark .sb-scrollbar-body{background:#4f5966}.gray .sb-scrollbar-body{background:#75757a;border-color:#75757a;border-radius:3px}.sb-scrollbar-bottom,.sb-scrollbar-top{display:none}.active-always.gray,.gray{opacity:.5}.i-hidden{display:none!important}.i-invisible{visibility:hidden!important}.i-clearfix:after{clear:both;display:table;content:""}.i-align_left{text-align:left!important}.i-align_right{text-align:right!important}.i-align_center{text-align:center!important}.i-float_left{float:left!important}.i-float_right{float:right!important}.i-float_none{float:none!important}@media screen and (min-width:1020px){.i-device-only{display:none!important}}@media screen and (max-width:1019px){.i-desktop-only{display:none!important}}@media screen and (min-width:479px){.i-phones-only{display:none!important}}@media screen and (max-width:479px){.i-except-phones-only{display:none!important}}.i-no-break{white-space:nowrap}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:scrollbar}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar{width:5px;height:5px}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.rtl.css b/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.rtl.css new file mode 100644 index 0000000..dbdf793 --- /dev/null +++ b/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.rtl.css @@ -0,0 +1 @@ +.tv-button{position:relative;display:inline-block;vertical-align:middle;min-width:40px;margin:0;padding:1px 22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:32px;text-align:center;white-space:nowrap;text-decoration:none;font-size:14px;color:#757575;fill:currentColor;border:none;border-radius:4px;outline:0;background-color:transparent;cursor:pointer;overflow:hidden;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transition:background-color .35s ease,border-color .35s ease,color .35s ease}.tv-button.tv-button--danger_ghost,.tv-button.tv-button--default,.tv-button.tv-button--default_ghost,.tv-button.tv-button--primary_ghost,.tv-button.tv-button--secondary_ghost,.tv-button.tv-button--state,.tv-button.tv-button--success_ghost,.tv-button.tv-button--warning_ghost{padding:0 21px}.tv-button.i-active,.tv-button.i-hover,.tv-button:active{transition-duration:.06s}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button:hover{transition-duration:.06s}}.tv-button svg{vertical-align:middle}.tv-button--block{display:block;width:100%;text-align:center}.tv-button+.tv-button{margin-right:15px}.tv-button.tv-button--no-left-margin{margin-right:0}.tv-button__text{position:relative;display:inline-block}.tv-button__text--full-height{display:flex;align-items:center;justify-content:center;height:100%;width:100%;white-space:normal;word-wrap:break-word;line-height:1.2em;margin:11px 5px}.tv-button--default,.tv-button--default_ghost{color:#fff;border-color:#fff;background-color:#fff}html.theme-dark .tv-button--default,html.theme-dark .tv-button--default_ghost{background-color:#171b29;border-color:#171b29}.tv-button--default_ghost{color:#fff}html.theme-dark .tv-button--default_ghost{color:#171b29}.tv-button--default_ghost.i-checked{color:#fff;border-color:#fff;background-color:#fff}html.theme-dark .tv-button--default_ghost.i-checked{background-color:#171b29;border-color:#171b29}.tv-button--default.i-hover,.tv-button--default_ghost.i-hover{color:#fff;border-color:#f2f2f2;background-color:#f2f2f2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--default:hover,.tv-button--default_ghost:hover{color:#fff;border-color:#f2f2f2;background-color:#f2f2f2}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{background-color:#1c2030}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{background-color:#1c2030}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{border-color:#1c2030}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{border-color:#1c2030}}.tv-button--default.i-active,.tv-button--default:active,.tv-button--default_ghost.i-active,.tv-button--default_ghost:active{color:#fff;border-color:#ececec;background-color:#ececec;transform:translateY(1px)}html.theme-dark .tv-button--default.i-active,html.theme-dark .tv-button--default:active,html.theme-dark .tv-button--default_ghost.i-active,html.theme-dark .tv-button--default_ghost:active{background-color:#1c2030;border-color:#1c2030}.tv-button--default,.tv-button--default.i-checked,.tv-button--default_ghost,.tv-button--default_ghost.i-checked{color:#757575;border:1px solid;border-color:#b5b7b9}html.theme-dark .tv-button--default,html.theme-dark .tv-button--default.i-checked,html.theme-dark .tv-button--default_ghost,html.theme-dark .tv-button--default_ghost.i-checked{border-color:#363c4e;color:#758696}.tv-button--default.i-hover,.tv-button--default_ghost.i-hover{color:#757575;border-color:#b5b7b9}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--default:hover,.tv-button--default_ghost:hover{color:#757575;border-color:#b5b7b9}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{border-color:#363c4e}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{color:#758696}}.tv-button--default.i-active,.tv-button--default:active,.tv-button--default_ghost.i-active,.tv-button--default_ghost:active{color:#757575;border-color:#b5b7b9}html.theme-dark .tv-button--default.i-active,html.theme-dark .tv-button--default:active,html.theme-dark .tv-button--default_ghost.i-active,html.theme-dark .tv-button--default_ghost:active{border-color:#363c4e;color:#758696}.tv-button--primary,.tv-button--primary_ghost{color:#fff;border-color:#2196f3;background-color:#2196f3}.tv-button--primary_ghost{color:#2196f3}.tv-button--primary_ghost.i-checked{color:#fff;border-color:#2196f3;background-color:#2196f3}.tv-button--primary.i-hover,.tv-button--primary_ghost.i-hover{color:#fff;border-color:#1e88e5;background-color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--primary:hover,.tv-button--primary_ghost:hover{color:#fff;border-color:#1e88e5;background-color:#1e88e5}}.tv-button--primary.i-active,.tv-button--primary:active,.tv-button--primary_ghost.i-active,.tv-button--primary_ghost:active{color:#fff;border-color:#049ddc;background-color:#049ddc;transform:translateY(1px)}.tv-button--secondary,.tv-button--secondary_ghost{color:#757575;border-color:#e9eff2;background-color:#e9eff2}.tv-button--secondary_ghost{color:#757575}.tv-button--secondary_ghost.i-checked{color:#757575;border-color:#e9eff2;background-color:#e9eff2}.tv-button--secondary.i-hover,.tv-button--secondary_ghost.i-hover{color:#757575;border-color:#dce6ea;background-color:#dce6ea}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--secondary:hover,.tv-button--secondary_ghost:hover{color:#757575;border-color:#dce6ea;background-color:#dce6ea}}.tv-button--secondary.i-active,.tv-button--secondary:active,.tv-button--secondary_ghost.i-active,.tv-button--secondary_ghost:active{color:#757575;border-color:#cfdce3;background-color:#cfdce3;transform:translateY(1px)}.tv-button--success,.tv-button--success_ghost{color:#fff;border-color:#3cbc98;background-color:#3cbc98}.tv-button--success_ghost{color:#3cbc98}.tv-button--success_ghost.i-checked{color:#fff;border-color:#3cbc98;background-color:#3cbc98}.tv-button--success.i-hover,.tv-button--success_ghost.i-hover{color:#fff;border-color:#38b395;background-color:#38b395}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--success:hover,.tv-button--success_ghost:hover{color:#fff;border-color:#38b395;background-color:#38b395}}.tv-button--success.i-active,.tv-button--success:active,.tv-button--success_ghost.i-active,.tv-button--success_ghost:active{color:#fff;border-color:#00a97f;background-color:#00a97f;transform:translateY(1px)}.tv-button--danger,.tv-button--danger_ghost{color:#fff;border-color:#ff4a68;background-color:#ff4a68}.tv-button--danger_ghost{color:#ff4a68}.tv-button--danger_ghost.i-checked{color:#fff;border-color:#ff4a68;background-color:#ff4a68}.tv-button--danger.i-hover,.tv-button--danger_ghost.i-hover{color:#fff;border-color:#f24965;background-color:#f24965}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--danger:hover,.tv-button--danger_ghost:hover{color:#fff;border-color:#f24965;background-color:#f24965}}.tv-button--danger.i-active,.tv-button--danger:active,.tv-button--danger_ghost.i-active,.tv-button--danger_ghost:active{color:#fff;border-color:#ff173e;background-color:#ff173e;transform:translateY(1px)}.tv-button--warning,.tv-button--warning_ghost{color:#fff;border-color:#f89e30;background-color:#f89e30}.tv-button--warning_ghost{color:#f89e30}.tv-button--warning_ghost.i-checked{color:#fff;border-color:#f89e30;background-color:#f89e30}.tv-button--warning.i-hover,.tv-button--warning_ghost.i-hover{color:#fff;border-color:#f79217;background-color:#f79217}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--warning:hover,.tv-button--warning_ghost:hover{color:#fff;border-color:#f79217;background-color:#f79217}}.tv-button--warning.i-active,.tv-button--warning:active,.tv-button--warning_ghost.i-active,.tv-button--warning_ghost:active{color:#fff;border-color:#d47807;background-color:#d47807;transform:translateY(1px)}.tv-button--link{color:#2196f3;transition:color .35s ease}html.theme-dark .tv-button--link{color:#1976d2}.tv-button--link:visited{color:#2196f3;fill:#2196f3}html.theme-dark .tv-button--link:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--link:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}.tv-button--link:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}.tv-button--danger_ghost,.tv-button--default_ghost,.tv-button--primary_ghost,.tv-button--secondary_ghost,.tv-button--success_ghost,.tv-button--warning_ghost{border-width:1px;border-style:solid;background-color:transparent}.tv-button--danger_ghost.tv-button--size_large,.tv-button--default_ghost.tv-button--size_large,.tv-button--primary_ghost.tv-button--size_large,.tv-button--secondary_ghost.tv-button--size_large,.tv-button--success_ghost.tv-button--size_large,.tv-button--warning_ghost.tv-button--size_large{border-width:2px}.tv-button .tv-ripple{background-color:hsla(0,0%,100%,.25)}.tv-button--default .tv-ripple,.tv-button--default_ghost .tv-ripple{background-color:rgba(117,134,150,.25)}.tv-button.i-disabled .tv-ripple{background-color:transparent}.tv-button.i-disabled,.tv-button.i-disabled:active,.tv-button:disabled,.tv-button:disabled:active{cursor:default;color:#9db2bd;border-color:#f1f3f6;background-color:#f1f3f6}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button.i-disabled:hover,.tv-button:disabled:hover{cursor:default;color:#9db2bd;border-color:#f1f3f6;background-color:#f1f3f6}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{background-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{background-color:#262b3e}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{border-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{border-color:#262b3e}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{color:#363c4e}}.tv-button.i-disabled:active,.tv-button:disabled:active{transform:translateY(0)}.tv-button--size_xsmall{padding:2px 7px;line-height:15px;border-radius:1px;font-size:11px;font-weight:400}.tv-button--size_xsmall.tv-button--danger_ghost,.tv-button--size_xsmall.tv-button--default,.tv-button--size_xsmall.tv-button--default_ghost,.tv-button--size_xsmall.tv-button--primary_ghost,.tv-button--size_xsmall.tv-button--secondary_ghost,.tv-button--size_xsmall.tv-button--state,.tv-button--size_xsmall.tv-button--success_ghost,.tv-button--size_xsmall.tv-button--warning_ghost{padding:1px 6px}.tv-button--size_xsmall+.tv-button--size_xsmall{margin-right:10px}.tv-button--size_small{padding:1px 12px;line-height:25px;font-size:13px}.tv-button--size_small.tv-button--danger_ghost,.tv-button--size_small.tv-button--default,.tv-button--size_small.tv-button--default_ghost,.tv-button--size_small.tv-button--primary_ghost,.tv-button--size_small.tv-button--secondary_ghost,.tv-button--size_small.tv-button--state,.tv-button--size_small.tv-button--success_ghost,.tv-button--size_small.tv-button--warning_ghost{padding:0 11px}.tv-button--size_small+.tv-button--size_small{margin-right:10px}.tv-button--size_large{padding:1px 30px;font-size:17px;letter-spacing:1px;line-height:44px}.tv-button--size_large.tv-button--danger_ghost,.tv-button--size_large.tv-button--default,.tv-button--size_large.tv-button--default_ghost,.tv-button--size_large.tv-button--primary_ghost,.tv-button--size_large.tv-button--secondary_ghost,.tv-button--size_large.tv-button--state,.tv-button--size_large.tv-button--success_ghost,.tv-button--size_large.tv-button--warning_ghost{padding:0 29px}.tv-button--max-width{max-width:300px}.tv-button--no-padding{padding:1px}.tv-button--no-padding.tv-button--danger_ghost,.tv-button--no-padding.tv-button--default,.tv-button--no-padding.tv-button--default_ghost,.tv-button--no-padding.tv-button--primary_ghost,.tv-button--no-padding.tv-button--secondary_ghost,.tv-button--no-padding.tv-button--state,.tv-button--no-padding.tv-button--success_ghost,.tv-button--no-padding.tv-button--warning_ghost{padding:0}.tv-button--content-center{display:flex;align-items:center;justify-content:center;height:100%;margin:0 auto;max-width:220px}.tv-button--state{text-align:center;background:transparent;border-width:1px;border-style:solid}.tv-button--state:after{content:"";display:inline-block}.tv-button--state__checked,.tv-button--state__uncheck-hint,.tv-button--state__unchecked{display:block;height:0;transition:opacity .2625s ease,transform .2625s ease}.tv-button--state__ellipsis-text{display:block;white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked,.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint,.tv-button--state.i-checked:hover .tv-button--state__unchecked{will-change:opacity,transform}}.tv-button--state.i-checked .tv-button--state__unchecked,.tv-button--state__checked,.tv-button--state__uncheck-hint{opacity:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked{opacity:0}}.tv-button--state.i-checked .tv-button--state__checked,.tv-button--state__unchecked{opacity:1}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint{opacity:1}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked{transform:translateY(-5px)}}.tv-button--state.i-checked .tv-button--state__unchecked,.tv-button--state__checked,.tv-button--state__uncheck-hint{transform:translateY(5px)}.tv-button--state.i-checked .tv-button--state__checked{transform:translateY(0)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint{transform:translateY(0)}}.tv-button--state.tv-button--success{color:#3cbc98;background-color:transparent}.tv-button--state.tv-button--success.i-checked{color:#fff;background-color:#3cbc98}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--success:hover{color:#fff;background-color:#38b395}}.tv-button--state.tv-button--success:active{color:#fff;background-color:#00a97f}.tv-button--state.tv-button--danger{color:#ff4a68;background-color:transparent}.tv-button--state.tv-button--danger.i-checked{color:#fff;background-color:#ff4a68}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--danger:hover{color:#fff;background-color:#f24965}}.tv-button--state.tv-button--danger:active{color:#fff;background-color:#ff173e}.tv-button--state.tv-button--primary{color:#2196f3;background-color:transparent}.tv-button--state.tv-button--primary.i-checked{color:#fff;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--primary:hover{color:#fff;background-color:#1e88e5}}.tv-button--state.tv-button--primary:active{color:#fff;background-color:#049ddc}.tv-button--state.tv-button--secondary{color:#757575;background-color:transparent}.tv-button--state.tv-button--secondary.i-checked{color:#757575;background-color:#e9eff2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--secondary:hover{color:#757575;background-color:#dce6ea}}.tv-button--state.tv-button--secondary:active{color:#757575;background-color:#cfdce3}.tv-button--state.tv-button--warning{color:#f89e30;background-color:transparent}.tv-button--state.tv-button--warning.i-checked{color:#fff;background-color:#f89e30}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--warning:hover{color:#fff;background-color:#f79217}}.tv-button--state.tv-button--warning:active{color:#fff;background-color:#d47807}.tv-button--loader .tv-button__text{transition:opacity .175s ease,transform .175s ease}.tv-button--loader.i-start-load .tv-button__text{opacity:0;transform:translateY(-5px)}.tv-button--loader.i-loading .tv-button__text{opacity:0;transform:translateY(5px)}.tv-button--loader.i-stop-load .tv-button__text{opacity:1;transform:translateY(0);transition-delay:.175s}.tv-button__loader{position:absolute;top:0;right:0;left:0;bottom:0;height:100%;margin:0 auto;text-align:center;font-size:0;opacity:0;transition:opacity .35s ease}.tv-button__loader:after{content:"";display:inline-block;height:100%;vertical-align:middle}.tv-button--loader.i-loading .tv-button__loader,.tv-button--loader.i-start-load .tv-button__loader{opacity:1}.tv-button--loader.i-stop-load .tv-button__loader{opacity:0}.tv-button__loader-item{margin-left:2px;margin-right:2px;display:inline-block;vertical-align:middle;width:10px;height:10px;opacity:0;border-radius:100%;background-color:#fff;transform:translateY(12px) scale(.6);transition:transform .35s cubic-bezier(.68,-.55,.265,1.55),opacity .35s ease}.tv-button__loader-item:nth-child(2){transition-delay:.11666667s}.tv-button__loader-item:nth-child(3){transition-delay:.23333333s}.tv-button--default .tv-button__loader-item{background-color:#757575}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-start-load .tv-button__loader-item{opacity:1}.tv-button--loader.i-stop-load .tv-button__loader-item{opacity:0}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-start-load .tv-button__loader-item,.tv-button--loader.i-stop-load .tv-button__loader-item{transform:translateY(0) scale(.6)}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-stop-load .tv-button__loader-item{animation:tv-button-loader .96s infinite ease-in-out both}.tv-button--loader.i-loading .tv-button__loader-item:nth-child(2),.tv-button--loader.i-stop-load .tv-button__loader-item:nth-child(2){animation-delay:.151s}.tv-button--loader.i-loading .tv-button__loader-item:nth-child(3),.tv-button--loader.i-stop-load .tv-button__loader-item:nth-child(3){animation-delay:.32s}.tv-button--no-border-radius{border-radius:0}.tv-button--no-border{border:none}.tv-button--connect{border-radius:0}.tv-button--connect_left{border-top-right-radius:0;border-bottom-right-radius:0}.tv-button--connect_right{border-top-left-radius:0;border-bottom-left-radius:0}@keyframes tv-button-loader{0%,to{transform:scale(.6)}50%{transform:scale(.9)}}@media screen and (max-width:767px){.tv-button.tv-button--phone-compact{padding-right:4px;padding-left:4px}}.sb-inner-shadow{box-shadow:0 0 5px rgba(0,0,0,.15);position:absolute;bottom:-10px;width:100%;height:10px;background:#fff;z-index:5;pointer-events:none;transform:translateY(0);transition:opacity .11666667s ease,transform .11666667s ease}html.theme-dark .sb-inner-shadow{background:#171b29}.sb-inner-shadow.top{box-shadow:0 0 5px rgba(0,0,0,.15);top:-10px}.sb-inner-shadow.i-invisible{transform:translateY(5px)}.sb-inner-shadow.i-invisible.top{transform:translateY(-5px)}.sb-inner-shadow.i-invisible{opacity:0}.sb-scrollbar{position:absolute!important;opacity:0;width:7px;height:100px;top:73px;left:1px;z-index:1;transition:opacity .3s}.sb-scrollbar.active,.sb-scrollbar.active-always{opacity:1}.sb-scrollbar__content-wrapper--scroll-inited{position:relative}.sb-scrollbar__content--scroll-inited{position:absolute}.sb-scrollbar-wrap{position:absolute;top:0;left:1px;width:6px;height:100%;z-index:1}.sb-scrollbar-wrap .sb-scrollbar{left:0}.sb-scrollbar-body{width:6px;border:0;background:#d8d8d8}html.theme-dark .sb-scrollbar-body{background:#4f5966}.gray .sb-scrollbar-body{background:#75757a;border-color:#75757a;border-radius:3px}.sb-scrollbar-bottom,.sb-scrollbar-top{display:none}.active-always.gray,.gray{opacity:.5}.i-hidden{display:none!important}.i-invisible{visibility:hidden!important}.i-clearfix:after{clear:both;display:table;content:""}.i-align_left{text-align:right!important}.i-align_right{text-align:left!important}.i-align_center{text-align:center!important}.i-float_left{float:right!important}.i-float_right{float:left!important}.i-float_none{float:none!important}@media screen and (min-width:1020px){.i-device-only{display:none!important}}@media screen and (max-width:1019px){.i-desktop-only{display:none!important}}@media screen and (min-width:479px){.i-phones-only{display:none!important}}@media screen and (max-width:479px){.i-except-phones-only{display:none!important}}.i-no-break{white-space:nowrap}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:scrollbar}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar{width:5px;height:5px}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/20.2416da4fc4c075b56691.js b/public/charting_library/static/bundles/20.2416da4fc4c075b56691.js new file mode 100644 index 0000000..d1d1baa --- /dev/null +++ b/public/charting_library/static/bundles/20.2416da4fc4c075b56691.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/20.f75162343321d7d9178c.css b/public/charting_library/static/bundles/20.f75162343321d7d9178c.css new file mode 100644 index 0000000..f5f1079 --- /dev/null +++ b/public/charting_library/static/bundles/20.f75162343321d7d9178c.css @@ -0,0 +1 @@ +.tv-caret{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:4px 4px 0;border-color:currentColor transparent transparent;margin-left:5px;vertical-align:middle;transition:transform .35s ease}.active .tv-caret,.i-dropped .tv-caret:not(.tv-caret--strict),.tv-caret--strict.i-dropped{transform:rotate(-180deg);will-change:transform;transition-duration:.33}.tv-caret--small{margin-left:3px;margin-right:-1px;border-top-width:3px;border-right-width:3px;border-left-width:3px}.tv-caret--colored{transition:transform .35s ease,color .35s ease}.tv-caret--no-margin{margin-left:0} \ No newline at end of file diff --git a/public/charting_library/static/bundles/20.f75162343321d7d9178c.rtl.css b/public/charting_library/static/bundles/20.f75162343321d7d9178c.rtl.css new file mode 100644 index 0000000..14180c7 --- /dev/null +++ b/public/charting_library/static/bundles/20.f75162343321d7d9178c.rtl.css @@ -0,0 +1 @@ +.tv-caret{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:4px 4px 0;border-color:currentColor transparent transparent;margin-right:5px;vertical-align:middle;transition:transform .35s ease}.active .tv-caret,.i-dropped .tv-caret:not(.tv-caret--strict),.tv-caret--strict.i-dropped{transform:rotate(180deg);will-change:transform;transition-duration:.33}.tv-caret--small{margin-right:3px;margin-left:-1px;border-top-width:3px;border-left-width:3px;border-right-width:3px}.tv-caret--colored{transition:transform .35s ease,color .35s ease}.tv-caret--no-margin{margin-right:0} \ No newline at end of file diff --git a/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.css b/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.css new file mode 100644 index 0000000..f87b608 --- /dev/null +++ b/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.css @@ -0,0 +1 @@ +._tv-dialog-shadowbox{position:fixed;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:110;-webkit-transform:translateZ(0)}._tv-dialog-shadowbox.transparent{background:none}._tv-dialog{position:absolute;min-height:18px;left:50%;top:50%;background:#fff;border:1px solid;border-color:#b5b7b9;box-shadow:0 0 10px 0 rgba(0,0,0,.15)}html.theme-dark ._tv-dialog{border-color:#363c4e;background:#1e222d}._tv-dialog__link{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog__link{color:#1976d2}._tv-dialog__link:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog__link:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog__link:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog__link:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog__indented-list{padding-left:20px}._tv-dialog__highlightedText{box-shadow:0 0 0 .37em #fff2cf;background:#fff2cf}html.theme-dark ._tv-dialog__highlightedText{background:#194453;box-shadow:0 0 0 .37em #194453}._tv-dialog__highlightedText:empty{background:transparent;box-shadow:none}._tv-dialog__subTitle{margin-top:20px;font-weight:700;display:block}._tv-dialog._tv-dialog-min-width{min-width:400px}._tv-dialog--alert-email a,._tv-dialog--open-a-chart a{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog--alert-email a,html.theme-dark ._tv-dialog--open-a-chart a{color:#1976d2}._tv-dialog--alert-email a:visited,._tv-dialog--open-a-chart a:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog--alert-email a:visited,html.theme-dark ._tv-dialog--open-a-chart a:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog--alert-email a:hover,._tv-dialog--open-a-chart a:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog--alert-email a:active,._tv-dialog--open-a-chart a:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog.ui-resizable{position:absolute}._tv-dialog-title{color:#4c525e;font-weight:700;font-size:15px;padding:17px 35px 17px 20px;cursor:default;word-wrap:break-word}html.theme-dark ._tv-dialog-title{color:#d6d8e0}._tv-dialog-title._tv-dialog-title-no-close{padding-right:20px}._tv-dialog-title._tv-dialog-title-hidden{padding:0;font-size:0;color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._tv-dialog-title ._tv-dialog-title-close{width:21px;height:21px;display:block;position:absolute;right:15px;top:13px;cursor:pointer;z-index:1}._tv-dialog-title ._tv-dialog-title-close:after{width:9px;height:9px;content:" ";position:absolute;top:6px;left:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAASCAYAAACJgPRIAAAAUElEQVR42pWQMQoAIAwD++d+x8HJbyoOWXJDSSBgwpVS62vtc8ulXg/ZAZkFMycNoBJgXoUcX1cm9N1NSL0esgMyC2ZOGkAlwLwKObhu/qcHp/zWImEdH8EAAAAASUVORK5CYII=);display:block}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-title ._tv-dialog-title-close:hover:after{background-position:bottom}}._tv-dialog-content{color:#131722;max-width:100%}html.theme-dark ._tv-dialog-content{color:#d6d8e0}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]){color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]){color:#1976d2}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog-content .main{padding:0 20px 20px}._tv-dialog-content .main p:first-child{margin-top:0}._tv-dialog-content .main p:last-child{margin-bottom:0}._tv-dialog-content .main .buttons{margin-top:25px;text-align:right}._tv-dialog-content .main .buttons.center{text-align:center}._tv-dialog-content .main .buttons ._tv-button{min-width:60px;text-transform:uppercase}._tv-dialog-content .main-properties{padding:25px}._tv-dialog-content .main-properties.alert-aftertabs,._tv-dialog-content .main-properties.main-properties-aftertabs{padding-top:5px}._tv-dialog-content .main-properties.main-properties-tabless{padding-top:40px}._tv-dialog-content .main-properties td{padding:3px 4px;height:27px}._tv-dialog-content .main-properties td:empty{padding:0}._tv-dialog-content .main-properties td.no-left-indent,._tv-dialog-content .main-properties td:first-child{padding-left:0}._tv-dialog-content .main-properties td:last-child{padding-right:0}._tv-dialog-content .main-properties .percents-label{position:relative;top:5px;left:5px}._tv-dialog-content .main-browser-extension{padding:40px 70px 40px 52px;padding:0}._tv-dialog-content .main-browser-extension .extension-poster{width:328px;height:377px;background:url(../images/dialogs/browser-extension/demo.png) 0 0}._tv-dialog-content .main-browser-extension .left,._tv-dialog-content .main-browser-extension .right{width:50%;box-sizing:border-box}._tv-dialog-content .main-browser-extension .left{float:left;padding:32px 0 0 46px}._tv-dialog-content .main-browser-extension .right{float:right;padding:51px 70px 0 44px}._tv-dialog-content .main-browser-extension .logo{float:left;width:36px;height:36px;background-size:36px 36px;margin-right:10px}._tv-dialog-content .main-browser-extension .logo.chrome{background:url(../images/svg/google-chrome-logo.svg) 0 0}._tv-dialog-content .main-browser-extension .info,._tv-dialog-content .main-browser-extension .name{float:left;clear:right;color:#a9a9a9;width:200px}._tv-dialog-content .main-browser-extension .name{font-size:20px;height:20px;line-height:20px}._tv-dialog-content .main-browser-extension .info{font-size:12px;height:14px;line-height:20px}._tv-dialog-content .main-browser-extension h1{margin-top:48px;margin-bottom:0;font-size:20px;line-height:20px}._tv-dialog-content .main-browser-extension p{color:#c2c5cb;margin:14px 0 28px}._tv-dialog-content .main-browser-extension .install-extension button{height:42px;padding:0 25px;line-height:42px;text-align:center;border:none;font-size:12px;text-transform:uppercase;background:#52c3e7;color:#fff;cursor:pointer}._tv-dialog-content .properties-separator{border-bottom:1px solid #b5b7b9}html.theme-dark ._tv-dialog-content .properties-separator{border-bottom:1px solid #363c4e}._tv-dialog-content ._tv-dialog-checkbox-mask{width:18px;height:16px;position:absolute;top:2px;left:2px;background:url(../images/dialogs/checkbox.png) 0 0}._tv-dialog-content ._tv-dialog-checkbox-mask.radio{background:#fff url(../images/icons.png);background-position:-100px -140px;width:16px}._tv-dialog-content ._tv-dialog-checkbox-mask.disabled{background-position:0 -32px}._tv-dialog-content ._tv-dialog-checkbox-mask-active{background:url(../images/dialogs/checkbox.png) 0 -16px}._tv-dialog-content ._tv-dialog-checkbox-mask-active.radio{background-position:-120px -140px}._tv-dialog-content--with-padding-top{padding-top:40px}._tv-dialog-content form input:not(.tv-control-input)[type=text],._tv-dialog-content form input[type=password],._tv-dialog-text-input{width:100%;box-sizing:border-box;height:33px;border:1px solid #b5b7b9;margin:1px;padding:0 5px;background-color:#fff;color:#4a4a4a}html.theme-dark ._tv-dialog-content form input:not(.tv-control-input)[type=text],html.theme-dark ._tv-dialog-content form input[type=password],html.theme-dark ._tv-dialog-text-input{color:#c5cbce;background-color:#1e222d;border:1px solid #363c4e}._tv-dialog-content form input:not(.tv-control-input)[type=text]:disabled,._tv-dialog-content form input[type=password]:disabled,._tv-dialog-text-input:disabled{color:#5a5a5a;opacity:.5}._tv-dialog-content ._tv-dialog-text-input{height:27px}._tv-dialog-text-input.disabled{color:#909292!important}._tv-dialog-content form input[type=password].error,._tv-dialog-content form input[type=text].error{margin:0;border:2px solid #de5764;background:#f7e4e6;color:#e06571}._tv-dialog-content textarea{color:#4a4a4a;font-size:12px;line-height:18px;border:1px solid;border-color:#b5b7b9;padding:8px 5px;box-sizing:border-box}html.theme-dark ._tv-dialog-content textarea{background:#1e222d;border-color:#363c4e;color:#c5cbce}._tv-dialog-content textarea:disabled{color:#5a5a5a;opacity:.5}._tv-dialog-content form input:not(.tv-control-input)._tv-dialog-content-textactive,._tv-dialog-text-input:focus{background:#fff;border-color:#2196f3!important;color:#595959}html.theme-dark ._tv-dialog-content form input:not(.tv-control-input)._tv-dialog-content-textactive,html.theme-dark ._tv-dialog-text-input:focus{color:#9db2bd;border-color:#1976d2!important;background:#1e222d}._tv-dialog-content textarea{border:1px solid #b5b7b9;background:#fff}html.theme-dark ._tv-dialog-content textarea{border:1px solid #363c4e}._tv-dialog-content textarea._tv-dialog-content-textareaactive{color:#595959;border-color:#2196f3!important}html.theme-dark ._tv-dialog-content textarea._tv-dialog-content-textareaactive{border-color:#1976d2!important}._tv-dialog-content .caption{font-size:11px;color:#4f5966;margin-bottom:3px;margin-top:7px;font-weight:700}html.theme-dark ._tv-dialog-content .caption{color:#f7f8fa}._tv-dialog-content .caption.half{float:left;width:50%}._tv-dialog-content .caption-big{font-size:12px;color:#4f5966;margin:15px 0}html.theme-dark ._tv-dialog-content .caption-big{color:#f7f8fa}._tv-dialog-content .caption-big-center{font-size:12px;color:#4f5966;margin:15px 0;text-align:center}html.theme-dark ._tv-dialog-content .caption-big-center{color:#f7f8fa}._tv-dialog-content .caption-big-center.slim{margin:0;text-align:left}._tv-dialog-content .caption-big-center.slim ul{padding-left:20px}._tv-dialog-content .caption-big.slim{margin:0;text-align:left}._tv-dialog-content .caption.first{margin-top:0}._tv-dialog-content .critical,._tv-dialog-content .disconnect{padding-bottom:15px}._tv-dialog-content .disconnect ol,._tv-dialog-content .disconnect ul{padding-left:1.5em;margin-bottom:0}._tv-dialog-content .disconnect ul{list-style:square}._tv-dialog-content .input input{width:298px!important}._tv-dialog-content .input{margin-bottom:7px}._tv-dialog-content .big-button ._tv-button{padding:10px 50px;background:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content .big-button ._tv-button:hover{background:#fcfcfc}}._tv-dialog-content label{color:#4a4a4a}html.theme-dark ._tv-dialog-content label{color:#c5cbce}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content .flat:hover:before{border-width:0!important}}._tv-dialog-error,._tv-dialog-message{display:none;position:absolute;top:0;width:100%;font-size:12px;z-index:100;text-align:center}._tv-dialog-error .message,._tv-dialog-message .message{display:table-cell;vertical-align:middle;padding:10px;height:32px}._tv-dialog-error .close,._tv-dialog-message .close{display:none;position:absolute;top:4px;right:4px;width:9px;height:9px;border:4px solid transparent;cursor:pointer;opacity:.7}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-error .close:hover,._tv-dialog-message .close:hover{opacity:1}}._tv-dialog-error.with-close .message,._tv-dialog-message.with-close .message{padding:10px 30px}._tv-dialog-error.with-close .close,._tv-dialog-message.with-close .close{display:block}._tv-dialog-error a,._tv-dialog-message a{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog-error a,html.theme-dark ._tv-dialog-message a{color:#1976d2}._tv-dialog-error a:visited,._tv-dialog-message a:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog-error a:visited,html.theme-dark ._tv-dialog-message a:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-error a:hover,._tv-dialog-message a:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog-error a:active,._tv-dialog-message a:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog-error{color:#c34c36;background:#f9e3e6}html.theme-dark ._tv-dialog-error{background:#6f2626;color:#ffedf0}._tv-dialog-error .close{fill:#9b0202}html.theme-dark ._tv-dialog-error .close{fill:#ffa4b3}._tv-dialog-message{color:#0a8415;background:#e2fde1}html.theme-dark ._tv-dialog-message{background:#21384d;color:#9addcc}._tv-dialog-message .close{fill:#096201}html.theme-dark ._tv-dialog-message .close{fill:#3bc2a1}._tv-dialog-content .dialog-buttons{text-align:right;margin-top:10px}._tv-dialog-content .dialog-comment{float:left;margin-top:15px}._tv-dialog-content .dialog-buttons a{margin:0 0 0 5px;min-width:50px;text-align:center;position:relative}._tv-dialog-content .dialog-buttons a.tv-left{margin:0 5px 0 0}._tv-dialog .ui-resizable-handle{width:11px;height:11px;background:url(../images/dialogs/resize-handle.png) 0 0 no-repeat}._tv-dialog.change-interval-dialog ._tv-dialog-title{text-align:center;font-size:13px;padding:28px 0 23px}._tv-dialog.change-interval-dialog ._tv-dialog-content{padding:0 50px 13px;text-align:center}._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input{box-sizing:border-box;display:block;width:150px;height:76px;border:1px solid #2196f3;text-align:inherit;font-size:43px;color:#4a4a4a;background-color:#fff;text-transform:uppercase}html.theme-dark ._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input{background-color:#2f3241;color:#c5cbce;border:1px solid #1976d2}._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input.error{border-color:#d75442;background-color:#ffefef}._tv-dialog.change-interval-dialog ._tv-dialog-content i{display:block;font-style:normal}._tv-dialog.change-interval-dialog ._tv-dialog-content i.interval-caption{margin:8px 0 15px;color:#a8a8a8;font-size:12px;font-weight:600;cursor:default}._tv-dialog.change-interval-dialog ._tv-dialog-content i.interval-caption.error{color:#d75442}._tv-dialog.change-interval-dialog ._tv-dialog-content i.help-tooltip-trigger{margin:0 auto;width:12px;height:12px;font-size:11px;font-weight:700;line-height:12px;border:1px solid;border-color:rgba(0,0,0,.5);border-radius:50%;cursor:default}html.theme-dark ._tv-dialog.change-interval-dialog ._tv-dialog-content i.help-tooltip-trigger{border-color:rgba(157,178,189,.5)}._tv-dialog-charting-library._tv-dialog{font-size:14px;font-weight:400;background:#f2f5f8}._tv-dialog-charting-library .main{padding:0 20px 20px}._tv-dialog-charting-library .line{height:1px;background:#ced5db;overflow:hidden}._tv-dialog-charting-library .lead-in{margin-bottom:5px}._tv-dialog-charting-library h3{font-size:26px;font-weight:400;text-transform:uppercase;color:#26282f;margin:0}._tv-dialog-charting-library li,._tv-dialog-charting-library p{line-height:28px;margin:0}._tv-dialog-charting-library p,._tv-dialog-charting-library ul{margin:12px 1px}._tv-dialog-charting-library form .dropzone{margin:1px;border:1px dashed rgba(0,0,0,.3);background:#fff;display:inline-block;padding:20px 0;width:140px;height:110px;float:left;box-sizing:border-box}._tv-dialog-charting-library form .dropzone *{box-sizing:border-box}._tv-dialog-charting-library form .dropzone.dz-clickable{cursor:pointer}._tv-dialog-charting-library form .dropzone.dz-started .dz-message{display:none}._tv-dialog-charting-library form .dropzone.dz-drag-hover{border-style:solid}._tv-dialog-charting-library form .dropzone.dz-drag-hover .dz-message{opacity:.5}._tv-dialog-charting-library form .dropzone .dz-message{text-align:center}._tv-dialog-charting-library form .dropzone .dz-message .link{color:#0099d4}._tv-dialog-charting-library form .dropzone .dz-filename{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:lowercase}._tv-dialog-charting-library form .dropzone .dz-filename span{padding:0 .4em}._tv-dialog-charting-library form .dropzone .dz-icon{padding:1px 42px}._tv-dialog-charting-library form .dropzone .dz-remove{fill:#ff6565;position:relative;top:-80px;left:110px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-charting-library form .dropzone .dz-remove:hover{fill:red}}._tv-dialog-charting-library form>div{margin-bottom:12px}._tv-dialog-charting-library form .description{margin:6px 0}._tv-dialog-charting-library form .agreement{margin-bottom:10px}._tv-dialog-charting-library form .agreement .description{display:inline-block;padding:27px 5px;width:388px}._tv-dialog-charting-library form textarea{width:100%;height:90px;margin:1px}._tv-dialog-charting-library form .attach{cursor:pointer;font-size:14px;font-weight:400}._tv-dialog-charting-library form input[type=text].error{margin:1px}._tv-dialog-charting-library form .two-columns .column-wrap{box-sizing:border-box;display:inline-block;width:50%}._tv-dialog-charting-library form .two-columns .column-wrap:first-child{padding-right:10px}._tv-dialog-charting-library .big-buttons{text-align:right;padding:10px 0}._tv-dialog-charting-library .big-buttons .cancel-button{cursor:pointer;border:1px solid transparent;font-size:15px;margin:0 15px;color:#686868;background:#f2f5f8}._tv-dialog-charting-library .big-buttons .big-button{cursor:pointer;border:1px solid transparent;background-color:#06b2ce;color:#fff;font-size:15px;text-transform:uppercase;padding:10px 45px;background-image:url(../images/button-base-process.gif);background-position:-9999px -9999px;background-repeat:no-repeat}._tv-dialog-charting-library .big-buttons .big-button.process{background-position:0 0;background-repeat:repeat}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-charting-library .big-buttons .big-button:hover{background-color:#06bbd8}}._tv-dialog-charting-library .big-buttons .big-button:active{background-color:#07c3e2}._tv-dialog-charting-library .big-buttons .big-button.disabled{cursor:default;background-color:#c3c8cf}._tv-dialog.dialog-highlight .main .message textarea{width:350px;height:130px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.rtl.css b/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.rtl.css new file mode 100644 index 0000000..ddd64e5 --- /dev/null +++ b/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.rtl.css @@ -0,0 +1 @@ +._tv-dialog-shadowbox{position:fixed;right:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:110;-webkit-transform:translateZ(0)}._tv-dialog-shadowbox.transparent{background:none}._tv-dialog{position:absolute;min-height:18px;left:50%;top:50%;background:#fff;border:1px solid;border-color:#b5b7b9;box-shadow:0 0 10px 0 rgba(0,0,0,.15)}html.theme-dark ._tv-dialog{border-color:#363c4e;background:#1e222d}._tv-dialog__link{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog__link{color:#1976d2}._tv-dialog__link:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog__link:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog__link:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog__link:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog__indented-list{padding-right:20px}._tv-dialog__highlightedText{box-shadow:0 0 0 .37em #fff2cf;background:#fff2cf}html.theme-dark ._tv-dialog__highlightedText{background:#194453;box-shadow:0 0 0 .37em #194453}._tv-dialog__highlightedText:empty{background:transparent;box-shadow:none}._tv-dialog__subTitle{margin-top:20px;font-weight:700;display:block}._tv-dialog._tv-dialog-min-width{min-width:400px}._tv-dialog--alert-email a,._tv-dialog--open-a-chart a{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog--alert-email a,html.theme-dark ._tv-dialog--open-a-chart a{color:#1976d2}._tv-dialog--alert-email a:visited,._tv-dialog--open-a-chart a:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog--alert-email a:visited,html.theme-dark ._tv-dialog--open-a-chart a:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog--alert-email a:hover,._tv-dialog--open-a-chart a:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog--alert-email a:active,._tv-dialog--open-a-chart a:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog.ui-resizable{position:absolute}._tv-dialog-title{color:#4c525e;font-weight:700;font-size:15px;padding:17px 20px 17px 35px;cursor:default;word-wrap:break-word}html.theme-dark ._tv-dialog-title{color:#d6d8e0}._tv-dialog-title._tv-dialog-title-no-close{padding-left:20px}._tv-dialog-title._tv-dialog-title-hidden{padding:0;font-size:0;color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._tv-dialog-title ._tv-dialog-title-close{width:21px;height:21px;display:block;position:absolute;left:15px;top:13px;cursor:pointer;z-index:1}._tv-dialog-title ._tv-dialog-title-close:after{width:9px;height:9px;content:" ";position:absolute;top:6px;right:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAASCAYAAACJgPRIAAAAUElEQVR42pWQMQoAIAwD++d+x8HJbyoOWXJDSSBgwpVS62vtc8ulXg/ZAZkFMycNoBJgXoUcX1cm9N1NSL0esgMyC2ZOGkAlwLwKObhu/qcHp/zWImEdH8EAAAAASUVORK5CYII=);display:block}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-title ._tv-dialog-title-close:hover:after{background-position:bottom}}._tv-dialog-content{color:#131722;max-width:100%}html.theme-dark ._tv-dialog-content{color:#d6d8e0}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]){color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]){color:#1976d2}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog-content .main{padding:0 20px 20px}._tv-dialog-content .main p:first-child{margin-top:0}._tv-dialog-content .main p:last-child{margin-bottom:0}._tv-dialog-content .main .buttons{margin-top:25px;text-align:left}._tv-dialog-content .main .buttons.center{text-align:center}._tv-dialog-content .main .buttons ._tv-button{min-width:60px;text-transform:uppercase}._tv-dialog-content .main-properties{padding:25px}._tv-dialog-content .main-properties.alert-aftertabs,._tv-dialog-content .main-properties.main-properties-aftertabs{padding-top:5px}._tv-dialog-content .main-properties.main-properties-tabless{padding-top:40px}._tv-dialog-content .main-properties td{padding:3px 4px;height:27px}._tv-dialog-content .main-properties td:empty{padding:0}._tv-dialog-content .main-properties td.no-left-indent,._tv-dialog-content .main-properties td:first-child{padding-right:0}._tv-dialog-content .main-properties td:last-child{padding-left:0}._tv-dialog-content .main-properties .percents-label{position:relative;top:5px;right:5px}._tv-dialog-content .main-browser-extension{padding:40px 52px 40px 70px;padding:0}._tv-dialog-content .main-browser-extension .extension-poster{width:328px;height:377px;background:url(../images/dialogs/browser-extension/demo.png) 100% 0}._tv-dialog-content .main-browser-extension .left,._tv-dialog-content .main-browser-extension .right{width:50%;box-sizing:border-box}._tv-dialog-content .main-browser-extension .left{float:right;padding:32px 46px 0 0}._tv-dialog-content .main-browser-extension .right{float:left;padding:51px 44px 0 70px}._tv-dialog-content .main-browser-extension .logo{float:right;width:36px;height:36px;background-size:36px 36px;margin-left:10px}._tv-dialog-content .main-browser-extension .logo.chrome{background:url(../images/svg/google-chrome-logo.svg) 100% 0}._tv-dialog-content .main-browser-extension .info,._tv-dialog-content .main-browser-extension .name{float:right;clear:left;color:#a9a9a9;width:200px}._tv-dialog-content .main-browser-extension .name{font-size:20px;height:20px;line-height:20px}._tv-dialog-content .main-browser-extension .info{font-size:12px;height:14px;line-height:20px}._tv-dialog-content .main-browser-extension h1{margin-top:48px;margin-bottom:0;font-size:20px;line-height:20px}._tv-dialog-content .main-browser-extension p{color:#c2c5cb;margin:14px 0 28px}._tv-dialog-content .main-browser-extension .install-extension button{height:42px;padding:0 25px;line-height:42px;text-align:center;border:none;font-size:12px;text-transform:uppercase;background:#52c3e7;color:#fff;cursor:pointer}._tv-dialog-content .properties-separator{border-bottom:1px solid #b5b7b9}html.theme-dark ._tv-dialog-content .properties-separator{border-bottom:1px solid #363c4e}._tv-dialog-content ._tv-dialog-checkbox-mask{width:18px;height:16px;position:absolute;top:2px;right:2px;background:url(../images/dialogs/checkbox.png) 100% 0}._tv-dialog-content ._tv-dialog-checkbox-mask.radio{background:#fff url(../images/icons.png);background-position:-100px -140px;width:16px}._tv-dialog-content ._tv-dialog-checkbox-mask.disabled{background-position:100% -32px}._tv-dialog-content ._tv-dialog-checkbox-mask-active{background:url(../images/dialogs/checkbox.png) 100% -16px}._tv-dialog-content ._tv-dialog-checkbox-mask-active.radio{background-position:-120px -140px}._tv-dialog-content--with-padding-top{padding-top:40px}._tv-dialog-content form input:not(.tv-control-input)[type=text],._tv-dialog-content form input[type=password],._tv-dialog-text-input{width:100%;box-sizing:border-box;height:33px;border:1px solid #b5b7b9;margin:1px;padding:0 5px;background-color:#fff;color:#4a4a4a}html.theme-dark ._tv-dialog-content form input:not(.tv-control-input)[type=text],html.theme-dark ._tv-dialog-content form input[type=password],html.theme-dark ._tv-dialog-text-input{color:#c5cbce;background-color:#1e222d;border:1px solid #363c4e}._tv-dialog-content form input:not(.tv-control-input)[type=text]:disabled,._tv-dialog-content form input[type=password]:disabled,._tv-dialog-text-input:disabled{color:#5a5a5a;opacity:.5}._tv-dialog-content ._tv-dialog-text-input{height:27px}._tv-dialog-text-input.disabled{color:#909292!important}._tv-dialog-content form input[type=password].error,._tv-dialog-content form input[type=text].error{margin:0;border:2px solid #de5764;background:#f7e4e6;color:#e06571}._tv-dialog-content textarea{color:#4a4a4a;font-size:12px;line-height:18px;border:1px solid;border-color:#b5b7b9;padding:8px 5px;box-sizing:border-box}html.theme-dark ._tv-dialog-content textarea{background:#1e222d;border-color:#363c4e;color:#c5cbce}._tv-dialog-content textarea:disabled{color:#5a5a5a;opacity:.5}._tv-dialog-content form input:not(.tv-control-input)._tv-dialog-content-textactive,._tv-dialog-text-input:focus{background:#fff;border-color:#2196f3!important;color:#595959}html.theme-dark ._tv-dialog-content form input:not(.tv-control-input)._tv-dialog-content-textactive,html.theme-dark ._tv-dialog-text-input:focus{color:#9db2bd;border-color:#1976d2!important;background:#1e222d}._tv-dialog-content textarea{border:1px solid #b5b7b9;background:#fff}html.theme-dark ._tv-dialog-content textarea{border:1px solid #363c4e}._tv-dialog-content textarea._tv-dialog-content-textareaactive{color:#595959;border-color:#2196f3!important}html.theme-dark ._tv-dialog-content textarea._tv-dialog-content-textareaactive{border-color:#1976d2!important}._tv-dialog-content .caption{font-size:11px;color:#4f5966;margin-bottom:3px;margin-top:7px;font-weight:700}html.theme-dark ._tv-dialog-content .caption{color:#f7f8fa}._tv-dialog-content .caption.half{float:right;width:50%}._tv-dialog-content .caption-big{font-size:12px;color:#4f5966;margin:15px 0}html.theme-dark ._tv-dialog-content .caption-big{color:#f7f8fa}._tv-dialog-content .caption-big-center{font-size:12px;color:#4f5966;margin:15px 0;text-align:center}html.theme-dark ._tv-dialog-content .caption-big-center{color:#f7f8fa}._tv-dialog-content .caption-big-center.slim{margin:0;text-align:right}._tv-dialog-content .caption-big-center.slim ul{padding-right:20px}._tv-dialog-content .caption-big.slim{margin:0;text-align:right}._tv-dialog-content .caption.first{margin-top:0}._tv-dialog-content .critical,._tv-dialog-content .disconnect{padding-bottom:15px}._tv-dialog-content .disconnect ol,._tv-dialog-content .disconnect ul{padding-right:1.5em;margin-bottom:0}._tv-dialog-content .disconnect ul{list-style:square}._tv-dialog-content .input input{width:298px!important}._tv-dialog-content .input{margin-bottom:7px}._tv-dialog-content .big-button ._tv-button{padding:10px 50px;background:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content .big-button ._tv-button:hover{background:#fcfcfc}}._tv-dialog-content label{color:#4a4a4a}html.theme-dark ._tv-dialog-content label{color:#c5cbce}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content .flat:hover:before{border-width:0!important}}._tv-dialog-error,._tv-dialog-message{display:none;position:absolute;top:0;width:100%;font-size:12px;z-index:100;text-align:center}._tv-dialog-error .message,._tv-dialog-message .message{display:table-cell;vertical-align:middle;padding:10px;height:32px}._tv-dialog-error .close,._tv-dialog-message .close{display:none;position:absolute;top:4px;left:4px;width:9px;height:9px;border:4px solid transparent;cursor:pointer;opacity:.7}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-error .close:hover,._tv-dialog-message .close:hover{opacity:1}}._tv-dialog-error.with-close .message,._tv-dialog-message.with-close .message{padding:10px 30px}._tv-dialog-error.with-close .close,._tv-dialog-message.with-close .close{display:block}._tv-dialog-error a,._tv-dialog-message a{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog-error a,html.theme-dark ._tv-dialog-message a{color:#1976d2}._tv-dialog-error a:visited,._tv-dialog-message a:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog-error a:visited,html.theme-dark ._tv-dialog-message a:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-error a:hover,._tv-dialog-message a:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog-error a:active,._tv-dialog-message a:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog-error{color:#c34c36;background:#f9e3e6}html.theme-dark ._tv-dialog-error{background:#6f2626;color:#ffedf0}._tv-dialog-error .close{fill:#9b0202}html.theme-dark ._tv-dialog-error .close{fill:#ffa4b3}._tv-dialog-message{color:#0a8415;background:#e2fde1}html.theme-dark ._tv-dialog-message{background:#21384d;color:#9addcc}._tv-dialog-message .close{fill:#096201}html.theme-dark ._tv-dialog-message .close{fill:#3bc2a1}._tv-dialog-content .dialog-buttons{text-align:left;margin-top:10px}._tv-dialog-content .dialog-comment{float:right;margin-top:15px}._tv-dialog-content .dialog-buttons a{margin:0 5px 0 0;min-width:50px;text-align:center;position:relative}._tv-dialog-content .dialog-buttons a.tv-left{margin:0 0 0 5px}._tv-dialog .ui-resizable-handle{width:11px;height:11px;background:url(../images/dialogs/resize-handle.png) 100% 0 no-repeat}._tv-dialog.change-interval-dialog ._tv-dialog-title{text-align:center;font-size:13px;padding:28px 0 23px}._tv-dialog.change-interval-dialog ._tv-dialog-content{padding:0 50px 13px;text-align:center}._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input{box-sizing:border-box;display:block;width:150px;height:76px;border:1px solid #2196f3;text-align:inherit;font-size:43px;color:#4a4a4a;background-color:#fff;text-transform:uppercase}html.theme-dark ._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input{background-color:#2f3241;color:#c5cbce;border:1px solid #1976d2}._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input.error{border-color:#d75442;background-color:#ffefef}._tv-dialog.change-interval-dialog ._tv-dialog-content i{display:block;font-style:normal}._tv-dialog.change-interval-dialog ._tv-dialog-content i.interval-caption{margin:8px 0 15px;color:#a8a8a8;font-size:12px;font-weight:600;cursor:default}._tv-dialog.change-interval-dialog ._tv-dialog-content i.interval-caption.error{color:#d75442}._tv-dialog.change-interval-dialog ._tv-dialog-content i.help-tooltip-trigger{margin:0 auto;width:12px;height:12px;font-size:11px;font-weight:700;line-height:12px;border:1px solid;border-color:rgba(0,0,0,.5);border-radius:50%;cursor:default}html.theme-dark ._tv-dialog.change-interval-dialog ._tv-dialog-content i.help-tooltip-trigger{border-color:rgba(157,178,189,.5)}._tv-dialog-charting-library._tv-dialog{font-size:14px;font-weight:400;background:#f2f5f8}._tv-dialog-charting-library .main{padding:0 20px 20px}._tv-dialog-charting-library .line{height:1px;background:#ced5db;overflow:hidden}._tv-dialog-charting-library .lead-in{margin-bottom:5px}._tv-dialog-charting-library h3{font-size:26px;font-weight:400;text-transform:uppercase;color:#26282f;margin:0}._tv-dialog-charting-library li,._tv-dialog-charting-library p{line-height:28px;margin:0}._tv-dialog-charting-library p,._tv-dialog-charting-library ul{margin:12px 1px}._tv-dialog-charting-library form .dropzone{margin:1px;border:1px dashed rgba(0,0,0,.3);background:#fff;display:inline-block;padding:20px 0;width:140px;height:110px;float:right;box-sizing:border-box}._tv-dialog-charting-library form .dropzone *{box-sizing:border-box}._tv-dialog-charting-library form .dropzone.dz-clickable{cursor:pointer}._tv-dialog-charting-library form .dropzone.dz-started .dz-message{display:none}._tv-dialog-charting-library form .dropzone.dz-drag-hover{border-style:solid}._tv-dialog-charting-library form .dropzone.dz-drag-hover .dz-message{opacity:.5}._tv-dialog-charting-library form .dropzone .dz-message{text-align:center}._tv-dialog-charting-library form .dropzone .dz-message .link{color:#0099d4}._tv-dialog-charting-library form .dropzone .dz-filename{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:lowercase}._tv-dialog-charting-library form .dropzone .dz-filename span{padding:0 .4em}._tv-dialog-charting-library form .dropzone .dz-icon{padding:1px 42px}._tv-dialog-charting-library form .dropzone .dz-remove{fill:#ff6565;position:relative;top:-80px;right:110px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-charting-library form .dropzone .dz-remove:hover{fill:red}}._tv-dialog-charting-library form>div{margin-bottom:12px}._tv-dialog-charting-library form .description{margin:6px 0}._tv-dialog-charting-library form .agreement{margin-bottom:10px}._tv-dialog-charting-library form .agreement .description{display:inline-block;padding:27px 5px;width:388px}._tv-dialog-charting-library form textarea{width:100%;height:90px;margin:1px}._tv-dialog-charting-library form .attach{cursor:pointer;font-size:14px;font-weight:400}._tv-dialog-charting-library form input[type=text].error{margin:1px}._tv-dialog-charting-library form .two-columns .column-wrap{box-sizing:border-box;display:inline-block;width:50%}._tv-dialog-charting-library form .two-columns .column-wrap:first-child{padding-left:10px}._tv-dialog-charting-library .big-buttons{text-align:left;padding:10px 0}._tv-dialog-charting-library .big-buttons .cancel-button{cursor:pointer;border:1px solid transparent;font-size:15px;margin:0 15px;color:#686868;background:#f2f5f8}._tv-dialog-charting-library .big-buttons .big-button{cursor:pointer;border:1px solid transparent;background-color:#06b2ce;color:#fff;font-size:15px;text-transform:uppercase;padding:10px 45px;background-image:url(../images/button-base-process.gif);background-position:-9999px -9999px;background-repeat:no-repeat}._tv-dialog-charting-library .big-buttons .big-button.process{background-position:100% 0;background-repeat:repeat}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-charting-library .big-buttons .big-button:hover{background-color:#06bbd8}}._tv-dialog-charting-library .big-buttons .big-button:active{background-color:#07c3e2}._tv-dialog-charting-library .big-buttons .big-button.disabled{cursor:default;background-color:#c3c8cf}._tv-dialog.dialog-highlight .main .message textarea{width:350px;height:130px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/21.fc856808959a5b8734f7.js b/public/charting_library/static/bundles/21.fc856808959a5b8734f7.js new file mode 100644 index 0000000..c2fd308 --- /dev/null +++ b/public/charting_library/static/bundles/21.fc856808959a5b8734f7.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/22.c118eafc7686081984c8.js b/public/charting_library/static/bundles/22.c118eafc7686081984c8.js new file mode 100644 index 0000000..cf9d765 --- /dev/null +++ b/public/charting_library/static/bundles/22.c118eafc7686081984c8.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.css b/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.css new file mode 100644 index 0000000..849acdb --- /dev/null +++ b/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.css @@ -0,0 +1 @@ +.button-2ioYhFEY-{display:flex;align-items:center;height:100%;box-sizing:border-box;cursor:default;transition:background-color 60ms ease,opacity 60ms ease,color 60ms ease;color:#131722}html.theme-dark .button-2ioYhFEY-{color:#787b86}.button-2ioYhFEY-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-:hover{color:#000}}html.theme-dark .button-2ioYhFEY-:active{color:#868993}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-:hover{color:#868993}}.button-2ioYhFEY- svg{display:block;fill:currentColor;-moz-transform:translateX(0)}.button-2ioYhFEY-.isInteractive-20uLObIc-{position:relative;z-index:0}.button-2ioYhFEY-.isInteractive-20uLObIc-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-{position:relative;z-index:0}.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px;right:0;left:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px;right:0;left:0}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#2196f3}html.theme-sa .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#ff7200}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#1976d2}.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:active{color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:hover{color:#1e88e5}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:active{color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:hover{color:#1e88e5}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:active:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:before{content:"";display:block;position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:0;background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:0;background-color:#f0f3fa}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:active:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isDisabled-1_tmrLfP-{opacity:.3}.button-2ioYhFEY-.isDisabled-1_tmrLfP-,.button-2ioYhFEY-.isDisabled-1_tmrLfP-:active{background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isDisabled-1_tmrLfP-:hover{background-color:transparent}}.button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{opacity:1;color:#2196f3}html.theme-sa .button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{color:#ff7200}html.theme-dark .button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{color:#1976d2}.icon-beK_KS0k-+.text-1sK7vbvh-,.text-1sK7vbvh-+.icon-beK_KS0k-{margin-left:2px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.rtl.css b/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.rtl.css new file mode 100644 index 0000000..60fdd2d --- /dev/null +++ b/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.rtl.css @@ -0,0 +1 @@ +.button-2ioYhFEY-{display:flex;align-items:center;height:100%;box-sizing:border-box;cursor:default;transition:background-color 60ms ease,opacity 60ms ease,color 60ms ease;color:#131722}html.theme-dark .button-2ioYhFEY-{color:#787b86}.button-2ioYhFEY-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-:hover{color:#000}}html.theme-dark .button-2ioYhFEY-:active{color:#868993}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-:hover{color:#868993}}.button-2ioYhFEY- svg{display:block;fill:currentColor;-moz-transform:translateX(0)}.button-2ioYhFEY-.isInteractive-20uLObIc-{position:relative;z-index:0}.button-2ioYhFEY-.isInteractive-20uLObIc-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-{position:relative;z-index:0}.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px;left:0;right:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px;left:0;right:0}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#2196f3}html.theme-sa .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#ff7200}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#1976d2}.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:active{color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:hover{color:#1e88e5}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:active{color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:hover{color:#1e88e5}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:active:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:before{content:"";display:block;position:absolute;z-index:-1;top:0;left:0;bottom:0;right:0;border-radius:0;background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:0;left:0;bottom:0;right:0;border-radius:0;background-color:#f0f3fa}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:active:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isDisabled-1_tmrLfP-{opacity:.3}.button-2ioYhFEY-.isDisabled-1_tmrLfP-,.button-2ioYhFEY-.isDisabled-1_tmrLfP-:active{background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isDisabled-1_tmrLfP-:hover{background-color:transparent}}.button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{opacity:1;color:#2196f3}html.theme-sa .button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{color:#ff7200}html.theme-dark .button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{color:#1976d2}.icon-beK_KS0k-+.text-1sK7vbvh-,.text-1sK7vbvh-+.icon-beK_KS0k-{margin-right:2px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/23.7c4be219df640cb3880c.css b/public/charting_library/static/bundles/23.7c4be219df640cb3880c.css new file mode 100644 index 0000000..2d72481 --- /dev/null +++ b/public/charting_library/static/bundles/23.7c4be219df640cb3880c.css @@ -0,0 +1 @@ +.dialog-34XTwGTT-{position:fixed;min-width:280px;width:100%;max-width:380px}.dialog-34XTwGTT- [data-dragg-area]{cursor:url(grab.bc156522a6b55a60be9fae15c14b66c5.cur),move;cursor:grab}.dialog-34XTwGTT- [data-dragg-area].dragging-33JfMDO6-{cursor:url(grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur),move;cursor:grabbing} \ No newline at end of file diff --git a/public/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css b/public/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css new file mode 100644 index 0000000..2d72481 --- /dev/null +++ b/public/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css @@ -0,0 +1 @@ +.dialog-34XTwGTT-{position:fixed;min-width:280px;width:100%;max-width:380px}.dialog-34XTwGTT- [data-dragg-area]{cursor:url(grab.bc156522a6b55a60be9fae15c14b66c5.cur),move;cursor:grab}.dialog-34XTwGTT- [data-dragg-area].dragging-33JfMDO6-{cursor:url(grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur),move;cursor:grabbing} \ No newline at end of file diff --git a/public/charting_library/static/bundles/23.e89d09694523563b8f86.js b/public/charting_library/static/bundles/23.e89d09694523563b8f86.js new file mode 100644 index 0000000..0c17a67 --- /dev/null +++ b/public/charting_library/static/bundles/23.e89d09694523563b8f86.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/24.319f9ed9725f3cea260a.js b/public/charting_library/static/bundles/24.319f9ed9725f3cea260a.js new file mode 100644 index 0000000..ea6bb24 --- /dev/null +++ b/public/charting_library/static/bundles/24.319f9ed9725f3cea260a.js @@ -0,0 +1,8 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{"2dtg":function(o,e){o.exports=''},"2lje":function(o,e){o.exports=''},"3s8f":function(o,e){o.exports=''},"43BO":function(o,e){o.exports=''},"6oLA":function(o,e){o.exports=''},Csdk:function(o,e){o.exports=''},FVBd:function(o,e){ +o.exports=''},G1jy:function(o,e){o.exports=''},Ijvb:function(o,e,i){"use strict";i.d(e,"a",function(){return n});var n={SyncDrawing:i("G1jy"),arrow:i("tceb"),cursor:i("WHEt"),dot:i("Csdk"),drawginmode:i("2dtg"),drawginmodeActive:i("FVBd"),eraser:i("2lje"),group:i("lZXH"),hideAllDrawings:i("6oLA"),hideAllDrawingsActive:i("dmHa"),lockAllDrawings:i("Uh5y"),lockAllDrawingsActive:i("43BO"),magnet:i("3s8f"),strongMagnet:i("xjKU"),measure:i("oCKS"),removeAllDrawingTools:i("aVjL"),showObjectTree:i("qQ3E"),zoom:i("kmdM"),"zoom-out":i("mbEK")}},"MP+M":function(o,e,i){"use strict";var n,l,t,a,c,s,r;i.d(e,"a",function(){return r}),i("YFKU"),n=i("ei7k"),l=i("zxD0"),t=i("Ijvb"),a={keys:["Shift"],text:window.t("{0} — drawing a straight line at angles of 45")},c={keys:["Shift"],text:window.t("{0} — circle")},s={keys:["Shift"],text:window.t("{0} — square")},r={LineTool5PointsPattern:{icon:l.lineToolsIcons.LineTool5PointsPattern,localizedName:window.t("XABCD Pattern")},LineToolABCD:{icon:l.lineToolsIcons.LineToolABCD,localizedName:window.t("ABCD Pattern")},LineToolArc:{icon:l.lineToolsIcons.LineToolArc,localizedName:window.t("Arc")},LineToolArrow:{icon:l.lineToolsIcons.LineToolArrow,localizedName:window.t("Arrow")},LineToolArrowMarkDown:{icon:l.lineToolsIcons.LineToolArrowMarkDown,localizedName:window.t("Arrow Mark Down")},LineToolArrowMarkLeft:{icon:l.lineToolsIcons.LineToolArrowMarkLeft,localizedName:window.t("Arrow Mark Left")},LineToolArrowMarkRight:{icon:l.lineToolsIcons.LineToolArrowMarkRight,localizedName:window.t("Arrow Mark Right")},LineToolArrowMarkUp:{ +icon:l.lineToolsIcons.LineToolArrowMarkUp,localizedName:window.t("Arrow Mark Up")},LineToolBalloon:{icon:l.lineToolsIcons.LineToolBalloon,localizedName:window.t("Balloon")},LineToolBarsPattern:{icon:l.lineToolsIcons.LineToolBarsPattern,localizedName:window.t("Bars Pattern")},LineToolBezierCubic:{icon:l.lineToolsIcons.LineToolBezierCubic,localizedName:window.t("Double Curve")},LineToolBezierQuadro:{icon:l.lineToolsIcons.LineToolBezierQuadro,localizedName:window.t("Curve")},LineToolBrush:{icon:l.lineToolsIcons.LineToolBrush,localizedName:window.t("Brush")},LineToolCallout:{icon:l.lineToolsIcons.LineToolCallout,localizedName:window.t("Callout")},LineToolCircleLines:{icon:l.lineToolsIcons.LineToolCircleLines,localizedName:window.t("Cyclic Lines")},LineToolCypherPattern:{icon:l.lineToolsIcons.LineToolCypherPattern,localizedName:window.t("Cypher Pattern")},LineToolDateAndPriceRange:{icon:l.lineToolsIcons.LineToolDateAndPriceRange,localizedName:window.t("Date and Price Range")},LineToolDateRange:{icon:l.lineToolsIcons.LineToolDateRange,localizedName:window.t("Date Range")},LineToolDisjointAngle:{icon:l.lineToolsIcons.LineToolDisjointAngle,localizedName:window.t("Disjoint Angle"),hotKey:Object(n.b)(a)},LineToolElliottCorrection:{icon:l.lineToolsIcons.LineToolElliottCorrection,localizedName:window.t("Elliott Correction Wave (ABC)")},LineToolElliottDoubleCombo:{icon:l.lineToolsIcons.LineToolElliottDoubleCombo,localizedName:window.t("Elliott Double Combo Wave (WXY)")},LineToolElliottImpulse:{icon:l.lineToolsIcons.LineToolElliottImpulse,localizedName:window.t("Elliott Impulse Wave (12345)")},LineToolElliottTriangle:{icon:l.lineToolsIcons.LineToolElliottTriangle,localizedName:window.t("Elliott Triangle Wave (ABCDE)")},LineToolElliottTripleCombo:{icon:l.lineToolsIcons.LineToolElliottTripleCombo,localizedName:window.t("Elliott Triple Combo Wave (WXYXZ)")},LineToolEllipse:{icon:l.lineToolsIcons.LineToolEllipse,localizedName:window.t("Ellipse"),hotKey:Object(n.b)(c)},LineToolExtended:{icon:l.lineToolsIcons.LineToolExtended,localizedName:window.t("Extended")},LineToolFibChannel:{icon:l.lineToolsIcons.LineToolFibChannel,localizedName:window.t("Fib Channel")},LineToolFibCircles:{icon:l.lineToolsIcons.LineToolFibCircles,localizedName:window.t("Fib Circles"),hotKey:Object(n.b)(c)},LineToolFibRetracement:{icon:l.lineToolsIcons.LineToolFibRetracement,localizedName:window.t("Fib Retracement")},LineToolFibSpeedResistanceArcs:{icon:l.lineToolsIcons.LineToolFibSpeedResistanceArcs,localizedName:window.t("Fib Speed Resistance Arcs")},LineToolFibSpeedResistanceFan:{icon:l.lineToolsIcons.LineToolFibSpeedResistanceFan,localizedName:window.t("Fib Speed Resistance Fan"),hotKey:Object(n.b)(s)},LineToolFibSpiral:{icon:l.lineToolsIcons.LineToolFibSpiral,localizedName:window.t("Fib Spiral")},LineToolFibTimeZone:{icon:l.lineToolsIcons.LineToolFibTimeZone,localizedName:window.t("Fib Time Zone")},LineToolFibWedge:{icon:l.lineToolsIcons.LineToolFibWedge,localizedName:window.t("Fib Wedge")},LineToolFlagMark:{icon:l.lineToolsIcons.LineToolFlagMark, +localizedName:window.t("Flag Mark")},LineToolFlatBottom:{icon:l.lineToolsIcons.LineToolFlatBottom,localizedName:window.t("Flat Top/Bottom"),hotKey:Object(n.b)(a)},LineToolGannComplex:{icon:l.lineToolsIcons.LineToolGannComplex,localizedName:window.t("Gann Square")},LineToolGannFixed:{icon:l.lineToolsIcons.LineToolGannFixed,localizedName:window.t("Gann Square Fixed")},LineToolGannFan:{icon:l.lineToolsIcons.LineToolGannFan,localizedName:window.t("Gann Fan")},LineToolGannSquare:{icon:l.lineToolsIcons.LineToolGannSquare,localizedName:window.t("Gann Box"),hotKey:Object(n.b)({keys:["Shift"],text:window.t("{0} — fixed increments")})},LineToolGhostFeed:{icon:l.lineToolsIcons.LineToolGhostFeed,localizedName:window.t("Ghost Feed")},LineToolHeadAndShoulders:{icon:l.lineToolsIcons.LineToolHeadAndShoulders,localizedName:window.t("Head and Shoulders")},LineToolHorzLine:{icon:l.lineToolsIcons.LineToolHorzLine,localizedName:window.t("Horizontal Line"),hotKey:Object(n.b)({keys:["Alt","H"],text:"{0} + {1}"})},LineToolHorzRay:{icon:l.lineToolsIcons.LineToolHorzRay,localizedName:window.t("Horizontal Ray")},LineToolIcon:{icon:l.lineToolsIcons.LineToolIcon,localizedName:window.t("Font Icons")},LineToolInsidePitchfork:{icon:l.lineToolsIcons.LineToolInsidePitchfork,localizedName:window.t("Inside Pitchfork")},LineToolNote:{icon:l.lineToolsIcons.LineToolNote,localizedName:window.t("Note")},LineToolNoteAbsolute:{icon:l.lineToolsIcons.LineToolNoteAbsolute,localizedName:window.t("Anchored Note")},LineToolParallelChannel:{icon:l.lineToolsIcons.LineToolParallelChannel,localizedName:window.t("Parallel Channel"),hotKey:Object(n.b)(a)},LineToolPitchfan:{icon:l.lineToolsIcons.LineToolPitchfan,localizedName:window.t("Pitchfan")},LineToolPitchfork:{icon:l.lineToolsIcons.LineToolPitchfork,localizedName:window.t("Pitchfork")},LineToolPolyline:{icon:l.lineToolsIcons.LineToolPolyline,localizedName:window.t("Polyline")},LineToolPrediction:{icon:l.lineToolsIcons.LineToolPrediction,localizedName:window.t("Forecast")},LineToolPriceLabel:{icon:l.lineToolsIcons.LineToolPriceLabel,localizedName:window.t("Price Label")},LineToolPriceRange:{icon:l.lineToolsIcons.LineToolPriceRange,localizedName:window.t("Price Range")},LineToolProjection:{icon:l.lineToolsIcons.LineToolProjection,localizedName:window.t("Projection")},LineToolRay:{icon:l.lineToolsIcons.LineToolRay,localizedName:window.t("Ray")},LineToolRectangle:{icon:l.lineToolsIcons.LineToolRectangle,localizedName:window.t("Rectangle"),hotKey:Object(n.b)({keys:["Shift"],text:window.t("{0} — square")})},LineToolRegressionTrend:{icon:l.lineToolsIcons.LineToolRegressionTrend,localizedName:window.t("Regression Trend")},LineToolRiskRewardLong:{icon:l.lineToolsIcons.LineToolRiskRewardLong,localizedName:window.t("Long Position")},LineToolRiskRewardShort:{icon:l.lineToolsIcons.LineToolRiskRewardShort,localizedName:window.t("Short Position")},LineToolRotatedRectangle:{icon:l.lineToolsIcons.LineToolRotatedRectangle,localizedName:window.t("Rotated Rectangle"),hotKey:Object(n.b)(a)},LineToolSchiffPitchfork:{ +icon:l.lineToolsIcons.LineToolSchiffPitchfork,localizedName:window.t("Modified Schiff Pitchfork")},LineToolSchiffPitchfork2:{icon:l.lineToolsIcons.LineToolSchiffPitchfork2,localizedName:window.t("Schiff Pitchfork")},LineToolSineLine:{icon:l.lineToolsIcons.LineToolSineLine,localizedName:window.t("Sine Line")},LineToolText:{icon:l.lineToolsIcons.LineToolText,localizedName:window.t("Text",{context:"tool"})},LineToolTextAbsolute:{icon:l.lineToolsIcons.LineToolTextAbsolute,localizedName:window.t("Anchored Text")},LineToolThreeDrivers:{icon:l.lineToolsIcons.LineToolThreeDrivers,localizedName:window.t("Three Drives Pattern")},LineToolTimeCycles:{icon:l.lineToolsIcons.LineToolTimeCycles,localizedName:window.t("Time Cycles")},LineToolTrendAngle:{icon:l.lineToolsIcons.LineToolTrendAngle,localizedName:window.t("Trend Angle"),hotKey:Object(n.b)(a)},LineToolTrendBasedFibExtension:{icon:l.lineToolsIcons.LineToolTrendBasedFibExtension,localizedName:window.t("Trend-Based Fib Extension")},LineToolTrendBasedFibTime:{icon:l.lineToolsIcons.LineToolTrendBasedFibTime,localizedName:window.t("Trend-Based Fib Time")},LineToolTrendLine:{icon:l.lineToolsIcons.LineToolTrendLine,localizedName:window.t("Trend Line"),hotKey:Object(n.b)(a)},LineToolInfoLine:{icon:l.lineToolsIcons.LineToolInfoLine,localizedName:window.t("Info Line")},LineToolTriangle:{icon:l.lineToolsIcons.LineToolTriangle,localizedName:window.t("Triangle")},LineToolTrianglePattern:{icon:l.lineToolsIcons.LineToolTrianglePattern,localizedName:window.t("Triangle Pattern")},LineToolVertLine:{icon:l.lineToolsIcons.LineToolVertLine,localizedName:window.t("Vertical Line"),hotKey:Object(n.b)({keys:["Alt","V"],text:"{0} + {1}"})},LineToolCrossLine:{icon:l.lineToolsIcons.LineToolCrossLine,localizedName:$.t("Cross Line")},SyncDrawing:{icon:t.a.SyncDrawing,iconActive:t.a.SyncDrawingActive,localizedName:window.t("New drawings are replicated to all charts in the layout and shown when the same ticker is selected")},arrow:{icon:t.a.arrow,localizedName:window.t("Arrow")},cursor:{icon:t.a.cursor,localizedName:window.t("Cross")},dot:{icon:t.a.dot,localizedName:window.t("Dot")},drawginmode:{icon:t.a.drawginmode,iconActive:t.a.drawginmodeActive,localizedName:window.t("Stay in Drawing Mode")},eraser:{icon:t.a.eraser,localizedName:window.t("Eraser")},group:{icon:t.a.group,localizedName:window.t("Show Hidden Tools")},hideAllDrawings:{icon:t.a.hideAllDrawings,iconActive:t.a.hideAllDrawingsActive,localizedName:window.t("Hide All Drawing Tools")},lockAllDrawings:{icon:t.a.lockAllDrawings,iconActive:t.a.lockAllDrawingsActive,localizedName:window.t("Lock All Drawing Tools")},magnet:{icon:t.a.magnet,localizedName:window.t("Magnet Mode snaps drawings placed near price bars to the closest OHLC value")},measure:{icon:t.a.measure,localizedName:window.t("Measure"),hotKey:Object(n.b)({keys:["Shift"],text:window.t("{0} + Click on the chart")})},removeAllDrawingTools:{icon:t.a.removeAllDrawingTools,localizedName:window.t("Remove All Drawing Tools")},showObjectsTree:{icon:t.a.showObjectTree, +localizedName:window.t("Show Object Tree")},zoom:{icon:t.a.zoom,localizedName:window.t("Zoom In")},"zoom-out":{icon:t.a["zoom-out"],localizedName:window.t("Zoom Out")}}},Uh5y:function(o,e){o.exports=''},WHEt:function(o,e){o.exports=''},aVjL:function(o,e){o.exports=''},b2d7:function(o,e,i){"use strict";var n,l,t,a,c;i.d(e,"a",function(){return c}),n=i("aIyQ"),l=i.n(n),t=i("Vdly"),function(o){function e(){o.favorites=[],Object(t.getJSON)("chart.favoriteDrawings",[]).forEach(function(e){o.favorites.push(e.tool||e)}),o.favoritesSynced.fire()}o.favorites=[],o.favoritesSynced=new l.a,o.favoriteIndex=function(e){return o.favorites.indexOf(e)},o.saveFavorites=function(){Object(t.setJSON)("chart.favoriteDrawings",o.favorites)},e(),t.onSync.subscribe(null,e)}(a||(a={})),function(o){function e(){return a.favorites.length}function i(o){return-1!==a.favoriteIndex(o)}o.favoriteAdded=new l.a,o.favoriteRemoved=new l.a,o.favoriteMoved=new l.a,o.favoritesSynced=a.favoritesSynced,o.favorites=function(){return a.favorites.slice()},o.favoritesCount=e,o.favorite=function(o){return o<0||o>=e()?"":a.favorites[o]},o.addFavorite=function(e){return!i(e)&&(a.favorites.push(e),a.saveFavorites(),o.favoriteAdded.fire(e),!0)},o.removeFavorite=function(e){var i=a.favoriteIndex(e);return-1!==i&&(a.favorites.splice(i,1),a.saveFavorites(),o.favoriteRemoved.fire(e),!0)},o.isFavorite=i,o.moveFavorite=function(i,n){if(n<0||n>=e())return!1;var l=a.favoriteIndex(i);return-1!==l&&n!==l&&(a.favorites.splice(l,1),a.favorites.splice(n,0,i),a.saveFavorites(),o.favoriteMoved.fire(i,l,n),!0)}}(c||(c={}))},dmHa:function(o,e){ +o.exports=''},kmdM:function(o,e){o.exports=''},lZXH:function(o,e){o.exports=''},mbEK:function(o,e){o.exports=''},oCKS:function(o,e){o.exports=''},qQ3E:function(o,e){o.exports=''},tceb:function(o,e){ +o.exports=''},xjKU:function(o,e){o.exports=''}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/25.15d449d35706e01821dd.js b/public/charting_library/static/bundles/25.15d449d35706e01821dd.js new file mode 100644 index 0000000..0c2e56d --- /dev/null +++ b/public/charting_library/static/bundles/25.15d449d35706e01821dd.js @@ -0,0 +1,4 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{"5YsI":function(t,e,o){t.exports={button:"button-13wlLwhJ-",hover:"hover-3L87f6Kw-",arrow:"arrow-2pXEy7ej-",arrowWrap:"arrowWrap-r5l5nQXU-",isOpened:"isOpened-1939ai3F-"}},"82wv":function(t,e,o){"use strict";var n,i,r,a,s,c,l,u;o.d(e,"a",function(){return u}),n=o("mrSG"),i=o("q1tI"),r=o("TSYQ"),a=o("9dlw"),s=o("ML8+"),c=o("5YsI"),l=o("Iksw"),u=function(t){function e(e){var o=t.call(this,e)||this;return o._wrapperRef=null,o._handleWrapperRef=function(t){return o._wrapperRef=t},o._handleClick=function(t){t.target instanceof Node&&t.currentTarget.contains(t.target)&&o._handleToggleDropdown()},o._handleToggleDropdown=function(t){var e=o.state.isOpened,n="boolean"==typeof t?t:!e;o.setState({isOpened:n})},o._handleClose=function(){o._handleToggleDropdown(!1)},o.state={isOpened:!1},o}return n.__extends(e,t),e.prototype.render=function(){var t,e=this.props,o=e.id,n=e.arrow,u=e.children,p=e.content,d=e.isDisabled,h=e.minWidth,v=e.title,f=e.className,m=e.hotKey,g=this.state.isOpened,b=r(f,c.button,"apply-common-tooltip",((t={})[c.isDisabled]=d,t[c.isOpened]=g,t)),O={horizontalMargin:this.props.horizontalMargin||0,verticalMargin:this.props.verticalMargin||2,verticalAttachEdge:this.props.verticalAttachEdge,horizontalAttachEdge:this.props.horizontalAttachEdge,verticalDropDirection:this.props.verticalDropDirection,horizontalDropDirection:this.props.horizontalDropDirection};return i.createElement("div",{id:o,className:b,onClick:d?void 0:this._handleClick,title:v,"data-tooltip-hotkey":m,ref:this._handleWrapperRef},p,n&&i.createElement("div",{className:c.arrow},i.createElement("div",{className:c.arrowWrap},i.createElement(s.a,{dropped:g}))),i.createElement(a.a,{closeOnClickOutside:this.props.closeOnClickOutside,doNotCloseOn:this,isOpened:g,minWidth:h,onClose:this._handleClose,position:Object(l.c)(this._wrapperRef,O)},u))},e.defaultProps={arrow:!0,closeOnClickOutside:!0},e}(i.PureComponent)},"9dlw":function(t,e,o){"use strict";var n,i,r,a,s,c,l,u,p;o.d(e,"a",function(){return p}),n=o("mrSG"),i=o("bf9a"),r=o("q1tI"),a=o("i8i4"),s=o("17x9"),c=o("RgaO"),l=o("AiMB"),u=o("DTHj"),p=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._handleClose=function(){e.props.onClose()},e._handleClickOutside=function(t){var o,n=e.props,i=n.closeOnClickOutside,r=n.onClickOutside,s=n.doNotCloseOn;r&&r(t),i&&(s&&t.target instanceof Node&&(o=a.findDOMNode(s))instanceof Node&&o.contains(t.target)||e._handleClose())},e._handleScroll=function(t){var o=e.props.onScroll;o&&o(t),t.stopPropagation()},e}return n.__extends(e,t),e.prototype.componentWillReceiveProps=function(t){this.props.isOpened&&!t.isOpened&&this.setState({isMeasureValid:void 0})},e.prototype.render=function(){var t=this.props,e=t.children,o=t.isOpened,i=(t.closeOnClickOutside,t.doNotCloseOn,t.onClickOutside,t.onClose,n.__rest(t,["children","isOpened","closeOnClickOutside","doNotCloseOn","onClickOutside","onClose"]));return o?r.createElement(l.a,null,r.createElement(c.a,{handler:this._handleClickOutside, +mouseDown:!0,touchStart:!0},r.createElement(u.a,n.__assign({},i,{isOpened:o,onClose:this._handleClose,onScroll:this._handleScroll,customCloseDelegate:this.context.customCloseDelegate}),e))):null},e.contextTypes={customCloseDelegate:s.any},e.defaultProps={closeOnClickOutside:!0},e}(r.PureComponent)},AiMB:function(t,e,o){"use strict";var n,i,r,a,s,c,l,u;o.d(e,"a",function(){return l}),o.d(e,"b",function(){return u}),n=o("mrSG"),i=o("q1tI"),r=o("i8i4"),a=o("0waE"),s=o("jAh7"),c=o("+EG+"),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._uuid=Object(a.guid)(),e}return n.__extends(e,t),e.prototype.componentWillUnmount=function(){this._manager().removeWindow(this._uuid)},e.prototype.render=function(){return r.createPortal(i.createElement(u.Provider,{value:this},this.props.children),this._manager().ensureWindow(this._uuid))},e.prototype.moveToTop=function(){this._manager().moveToTop(this._uuid)},e.prototype._manager=function(){return null===this.context?Object(s.getRootOverlapManager)():this.context},e.contextType=c.b,e}(i.PureComponent),u=i.createContext(null)},Iksw:function(t,e,o){"use strict";function n(t,e){return function(o,n){var u=Object(i.ensureNotNull)(t).getBoundingClientRect(),p=e.verticalAttachEdge,d=void 0===p?l.verticalAttachEdge:p,h=e.verticalDropDirection,v=void 0===h?l.verticalDropDirection:h,f=e.horizontalAttachEdge,m=void 0===f?l.horizontalAttachEdge:f,g=e.horizontalDropDirection,b=void 0===g?l.horizontalDropDirection:g,O=e.horizontalMargin,_=void 0===O?l.horizontalMargin:O,w=e.verticalMargin,C=void 0===w?l.verticalMargin:w,D=d===r.Top?-1*C:C,E=m===a.Right?u.right:u.left,T=d===r.Top?u.top:u.bottom,N=E-(b===c.FromRightToLeft?o:0),k=T-(v===s.FromBottomToTop?n:0);return{x:N+_,y:k+D}}}var i,r,a,s,c,l;o.d(e,"a",function(){return r}),o.d(e,"b",function(){return s}),o.d(e,"c",function(){return n}),i=o("Eyy1"),function(t){t[t.Top=0]="Top",t[t.Bottom=1]="Bottom"}(r||(r={})),function(t){t[t.Left=0]="Left",t[t.Right=1]="Right"}(a||(a={})),function(t){t[t.FromTopToBottom=0]="FromTopToBottom",t[t.FromBottomToTop=1]="FromBottomToTop"}(s||(s={})),function(t){t[t.FromLeftToRight=0]="FromLeftToRight",t[t.FromRightToLeft=1]="FromRightToLeft"}(c||(c={})),l={verticalAttachEdge:r.Bottom,horizontalAttachEdge:a.Left,verticalDropDirection:s.FromTopToBottom,horizontalDropDirection:c.FromLeftToRight,verticalMargin:0,horizontalMargin:0}},KKsp:function(t,e,o){"use strict";function n(t){return i.createElement("div",{className:r.separator})}var i,r;o.d(e,"a",function(){return n}),i=o("q1tI"),r=o("NOPy")},"ML8+":function(t,e,o){"use strict";function n(t){var e,o=t.dropped,n=t.className;return i.createElement(a.a,{className:r(n,s.icon,(e={},e[s.dropped]=o,e)),icon:c})}var i,r,a,s,c;o.d(e,"a",function(){return n}),i=o("q1tI"),r=o("TSYQ"),a=o("jjrI"),s=o("cvzQ"),c=o("R4+T")},N5tr:function(t,e,o){"use strict";function n(t){return a.createElement(t.href?"a":"div",t)}function i(t){t.stopPropagation()}var r,a,s,c,l,u,p,d;o.d(e,"a",function(){return d}),r=o("mrSG"),a=o("q1tI"),s=o("TSYQ"),c=o("tWVy"), +l=o("tITk"),u=o("QpNh"),p=o("v1bN"),d=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._handleClick=function(t){var o=e.props,n=o.dontClosePopup,i=o.isDisabled,r=o.onClick,a=o.onClickArg,s=o.trackEventObject;i||(s&&Object(l.trackEvent)(s.category,s.event,s.label),r&&r(a,t),n||Object(c.b)())},e._handleMouseUp=function(t){var o=e.props,n=o.link,i=o.trackEventObject;1===t.button&&n&&i&&Object(l.trackEvent)(i.category,i.event,i.label)},e._formatShortcut=function(t){return t&&t.split("+").join(" + ")},e}return r.__extends(e,t),e.prototype.render=function(){var t,e,o=this.props,c=o.className,l=o.shortcut,d=o.forceShowShortcuts,h=o.icon,v=o.isActive,f=o.isDisabled,m=o.isHovered,g=o.appearAsDisabled,b=o.label,O=o.link,_=o.showToolboxOnHover,w=o.target,C=o.toolbox,D=o.theme,E=void 0===D?p:D,T=Object(u.a)(this.props);return a.createElement(n,r.__assign({},T,{className:s(c,E.item,h&&E.withIcon,(t={},t[E.isActive]=v,t[E.isDisabled]=f||g,t[E.hovered]=m,t)),href:O,target:w,onClick:this._handleClick,onMouseUp:this._handleMouseUp}),void 0!==h&&a.createElement("div",{className:E.icon,dangerouslySetInnerHTML:{__html:h}}),a.createElement("div",{className:E.labelRow},a.createElement("div",{className:E.label},b)),(void 0!==l||d)&&a.createElement("div",{className:E.shortcut},this._formatShortcut(l)),void 0!==C&&a.createElement("div",{onClick:i,className:s(E.toolbox,(e={},e[E.showOnHover]=_,e))},C))},e}(a.PureComponent)},NOPy:function(t,e,o){t.exports={separator:"separator-25lkUpN--"}},QpNh:function(t,e,o){"use strict";function n(t){var e,o,n,r,a,s=Object.entries(t).filter(i),c={};for(e=0,o=s;e'},"D/i5":function(e,t,n){e.exports={inputWrapper:"inputWrapper-6bNZbTW4-",textInput:"textInput-3WRWEmm7-",error:"error-v0663AtN-",success:"success-7iP8kTY5-",textInputLeftDirection:"textInputLeftDirection-mlAXPh8V-",xsmall:"xsmall-3Ah_Or2--",small:"small-2bmxiJCE-",large:"large-1JDowW2I-",iconed:"iconed-3ZQvxTot-",inputIcon:"inputIcon-W_Bse-a1-",clearable:"clearable-2tabt_rj-",clearIcon:"clearIcon-389FR5J4-"}},K5ke:function(e,t,n){e.exports={loader:"loader-3Pj8ExOX-",item:"item-2n55_7om-","tv-button-loader":"tv-button-loader-SKpJjjYw-",black:"black-eFIQWyf4-",white:"white-2Ma0ajvT-",gray:"gray-24fvVR0S-"}},L0Sj:function(e,t,n){"use strict";function a(e){var t,n=e.className,a=e.icon,d=e.clearable,p=e.onClear,m=e.size,f=e.strictLeftDirectionInput,h=r.__rest(e,["className","icon","clearable","onClear","size","strictLeftDirectionInput"]),g=s(l.inputWrapper,((t={})[n]=Boolean(n),t[l.iconed]=Boolean(a),t[l.clearable]=d,t));return o.createElement(u,r.__assign({theme:l,className:g,leftComponent:a?o.createElement(i.a,{key:"inputIcon",icon:a,className:l.inputIcon}):void 0,rightComponent:d?o.createElement(i.a,{className:l.clearIcon,icon:c,key:"clearIcon",onClick:p}):void 0,sizeMode:m,strictLeftDirectionInput:f},h))}var r,o,s,i,c,l,u;n.d(t,"a",function(){return u}),n.d(t,"b",function(){return a}),r=n("mrSG"),o=n("q1tI"),s=n("TSYQ"),i=n("jjrI"),c=n("Ald9"),l=n("D/i5"),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r.__extends(t,e),t.prototype.render=function(){var e,t,n,a,i=this.props,c=i.theme,u=i.error,d=i.success,p=i.sizeMode,m=i.leftComponent,f=i.rightComponent,h=i.grouped,g=i.columnGrouped,v=i.fontSize,I=i.reference,b=i.className,w=(i.strictLeftDirectionInput,r.__rest(i,["theme","error","success","sizeMode","leftComponent","rightComponent","grouped","columnGrouped","fontSize","reference","className","strictLeftDirectionInput"])),x={fontSize:v},y=s(c.textInput,this.props.strictLeftDirectionInput&&l.textInputLeftDirection,((e={})[c.error]=u,e[c.success]=d,e[c[p]]=Boolean(p),e)),C=s(c.inputWrapper,((t={})[b]=Boolean(b),t[c.grouped]=h,t[c.column]=g,t)),_=[],N=o.createElement("input",r.__assign({ref:I,className:y,key:"textInput",style:x},w));return m&&(n={className:s(c.leftComponent,m.props.className),key:"leftComponent"},_.push(o.cloneElement(m,n))),_.push(N),f&&(a={className:s(c.rightComponent,f.props.className),key:"rightComponent"},_.push(o.cloneElement(f,a))),o.createElement("div",{className:C},_)},t}(o.PureComponent)},ntfI:function(e,t,n){"use strict";var a,r,o,s,i,c,l +;n.d(t,"a",function(){return l}),a=n("mrSG"),r=n("q1tI"),o=n("TSYQ"),s=n("j1f4"),i=n("K5ke"),function(e){e[e.Initial=0]="Initial",e[e.Appear=1]="Appear",e[e.Active=2]="Active"}(c||(c={})),l=function(e){function t(t){var n=e.call(this,t)||this;return n._stateChangeTimeout=null,n.state={state:c.Initial},n}return a.__extends(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,a=t.color,s=void 0===a?"black":a,c=o(i.item,((e={})[i[s]]=Boolean(s),e));return r.createElement("span",{className:o(i.loader,n,this._getStateClass())},r.createElement("span",{className:c}),r.createElement("span",{className:c}),r.createElement("span",{className:c}))},t.prototype.componentDidMount=function(){var e=this;this.setState({state:c.Appear}),this._stateChangeTimeout=setTimeout(function(){e.setState({state:c.Active})},2*s.dur)},t.prototype.componentWillUnmount=function(){this._stateChangeTimeout&&(clearTimeout(this._stateChangeTimeout),this._stateChangeTimeout=null)},t.prototype._getStateClass=function(){switch(this.state.state){case c.Initial:return"loader-initial";case c.Appear:return"loader-appear";default:return""}},t}(r.PureComponent)},oj21:function(e,t,n){"use strict";function a(e){var t,n=e.active,a=void 0===n||n,l=e.children,u=e.className,d=void 0===u?"":u,p=e.disabled,m=void 0!==p&&p,f=e.grouped,h=void 0!==f&&f,g=e.growable,v=void 0!==g&&g,I=e.onClick,b=e.reference,w=e.size,x=e.theme,y=e.type,C=void 0===y?"default":y,_=e.loading,N=void 0!==_&&_,k=e.withPadding,E=void 0===k||k,S=e.title,W=void 0===S?"":S,T=e.disabledClassName,L=e.tabIndex,D=void 0===L?0:L,j=e.target,z=void 0===j?"":j,A=e.href,B=void 0===A?"":A,O=e.rounded,q=void 0!==O&&O,P=s(((t={})[d]=Boolean(d),t[i.button]=!0,t[i.active]=a&&!m,t[T||i.disabled]=m,t[i.grouped]=h,t[i.growable]=v,t[i.withPadding]=E,t[function(e){switch(e){case"xsmall":return i.xsmall;case"small":return i.small;case"large":return i.large;default:return""}}(w)]=Boolean(w),t[function(e){switch(e){case"ghost":return i.ghost;default:return""}}(x)]=Boolean(x),t[function(e){switch(e){case"default":return i.base;case"primary":return i.primary;case"secondary":return i.secondary;case"secondary-script":return i.secondaryScript;case"success":return i.success;case"warning":return i.warning;case"danger":return i.danger;case"link":return i.link;default:return""}}(C)]=!0,t[i.rounded]=q,t)),J="default"===C?"black":"white",M={disabled:m,title:W,target:z,href:B};return o.createElement("button",r.__assign({className:P,tabIndex:D,onClick:N?void 0:I,ref:b},M),o.createElement("span",{className:i.hiddenText},l),N?o.createElement("span",{className:i.loader},o.createElement(c.a,{color:J})):o.createElement("span",{className:i.text},l))}var r,o,s,i,c;n.d(t,"a",function(){return a}),r=n("mrSG"),o=n("q1tI"),s=n("TSYQ"),i=n("qsaw"),c=n("ntfI")},qsaw:function(e,t,n){e.exports={ghost:"ghost-3yO24wIn-",primary:"primary-1rSzOFdX-",success:"success-1qQ3_tEI-",danger:"danger-jKTO4wDd-",warning:"warning-2uDfz7Zc-",secondary:"secondary-3ll81brZ-",button:"button-2O-nMUcz-",withPadding:"withPadding-_5CJoO5q-", +hiddenText:"hiddenText-3qcN5Wif-",text:"text-2KOWx3rB-",loader:"loader-1CC-1F8J-",base:"base-2d4XFcnI-",secondaryScript:"secondaryScript-2iIeFIWW-",link:"link-2sR0CShp-",xsmall:"xsmall-1aiWe3Hs-",rounded:"rounded-3qEdyiAz-",small:"small-2-nQtW8O-",large:"large-33HYhX8D-",grouped:"grouped-1WsMjajI-",growable:"growable-F6tv8R_j-",active:"active-2UxWxOgk-",disabled:"disabled-3u0ULovv-"}}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/27.54aad15135c7ea57b345.js b/public/charting_library/static/bundles/27.54aad15135c7ea57b345.js new file mode 100644 index 0000000..0d65509 --- /dev/null +++ b/public/charting_library/static/bundles/27.54aad15135c7ea57b345.js @@ -0,0 +1,5 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{"/NcV":function(t,e){t.exports=''},FxnJ:function(t,e,i){},MjtL:function(t,e){t.exports=''},NhD9:function(t,e,i){"use strict";(function(t){var s,a,o,r,n;Object.defineProperty(e,"__esModule",{value:!0}),e.createTabbedDialog=function(e){var i,l,d,c,h,p,u,_,f,g,v;if(e=$.extend({},n,e),i=$(t.render(o,{tabs:e.tabs,customControls:e.customControls,customControlsAddClass:e.customControlsContainerAddClass},{additionalHeaderContent:e.additionalHeaderContent})),d=l=$(r),e.contentAddClass&&l.addClass(e.contentAddClass),!1!==e.withScroll&&(l=$('
').append(d.addClass("tv-dialog__scroll-wrap-inner"))),c=$('
').append(i).append(l),e.customControls&&i.find(".js-custom-controls").append(e.customControls),!0!==e.doNotCreatePages)for(h=0;h').append(e.tabs[h].page));return p=e.tabStateSaveKey,u=e.activeTab,_=e.tabsScrollBoxAddClass,f=e.tabAddClass,delete e.tabs,delete e.activeTab,delete e.customControls,delete e.tabStateSaveKey,delete e.customControlsContainerAddClass,delete e.tabsScrollBoxAddClass,delete e.tabAddClass,e.closeButtonAddClass="tv-tabbed-dialog__close",e.contentWrapTemplate=c,g=(0,a.createDialog)(e),v=new s.Tabs(i.find(".tv-tabs").get(0),d.get(0),{addLeftArrowsClass:"tv-tabbed-dialog__tabs-arrow-left",addRightArrowsClass:"tv-tabbed-dialog__tabs-arrow-right",addScrollBoxClass:_,tabClass:f,saveTab:p,activeTab:u}),g.on("afterOpen",function(){v.setActivePage(v.index(),!0,!0)}),{dialog:g,tabs:v}},s=i("pIOw"),a=i("YDhE"),i("FxnJ"),o='
{{#tabs}}
{{name}}
{{/tabs}}
{{#customControls}}
{{/customControls}}
{{>additionalHeaderContent}}',r='
',n={tabs:[]}}).call(this,i("OiQe"))},pIOw:function(t,e,i){"use strict";function s(){return new Promise(function(t){i.e("lazy-velocity").then(function(e){i("WJ2Z"),t()}.bind(null,i)).catch(i.oe)})}var a,o,r,n,l,d,c,h,p,u,_,f,g;i.r(e),a=i("Eyy1"),i("P5fv"),$.fn.velocity=function(){var t,e=this,i=[];for(t=0;t'+f.leftArrow+"
"),this._elArrowRight=this._findOrCreateElement(this._options.rArrowClass||"",this._elTabs,"append",'
'+f.rightArrow+"
"),this._addClass(this._elArrowLeft,this._options.addLeftArrowsClass),this._addClass(this._elArrowRight,this._options.addRightArrowsClass)),this._addClass(this._elScrollBox,this._options.addScrollBoxClass),this._addClass(this._elSlider,this._options.addSliderClass),this._addClass(this._elTabs,this._options.tabsContainerClass),this._addClass(this.getTabsArray(),this._options.tabClass),this._addClass(this._elTabs,this._options.loadedClass),this.checkScrollArrows(!0),this._initActivePage(),this._bindEvents()}return t.prototype.getTabsArray=function(){var t,e,i,s=this._elScrollBox.children;if(!this._options.sliderClass)return Array.prototype.slice.call(s);for(t=[],e=0;e=n?e(this._elArrowLeft):(a<=n||this._elScrollWrap.scrollWidth<=r)&&i(this._elArrowLeft,u.Left)),this._elArrowRight&&(l-a>1?e(this._elArrowRight):(a>=l||this._elScrollWrap.scrollWidth<=r)&&i(this._elArrowRight,u.Right))},t.prototype.index=function(){var t=this.getElActiveTab();return t?this.getTabsArray().indexOf(t):-1},t.prototype.getElActiveTab=function(){return this._getActiveElement(this.getTabsArray(),this._options.activeTabClass||"",this._options.inactiveTabClass)},t.prototype.getElActivePage=function(){return this._getActiveElement(this.getPagesArray(),this._options.activePageClass||"",this._options.inactivePageClass)},t.prototype.setActivePage=function(t,e,i){function s(e,i,s){e.forEach(function(e,a){var o=t===a,r=e.classList;i&&r.toggle(i,o),s&&r.toggle(s,!o)})}if(-1!==t&&(t!==this.index()||i)){var a=this.index();s(this.getTabsArray(),this._options.activeTabClass,this._options.inactiveTabClass),s(this.getPagesArray(),this._options.activePageClass,this._options.inactivePageClass),this._options.noSlider||this.updateSlider(a,t,e),this._options.saveTab&&h.setValue(this._options.saveTab,t),this.tabChanged.fire(t)}},t.prototype.updateSlider=function(t,e,i){var a,r,n,l,d,c,h=this;this._options.noSlider||0===(a=this.getTabsArray()[e]).clientWidth||0===a.clientHeight||"none"===window.getComputedStyle(a).getPropertyValue("display")||(r=window.getComputedStyle(a),n=a.offsetLeft+parseInt(r.getPropertyValue("padding-left")),l=this._getElWidth(a),(d=a.querySelector(".js-tabs__slider-pos"))&&(c=window.getComputedStyle(d),n+=parseInt(c.getPropertyValue("padding-left"))+d.offsetLeft,l-=l-this._getElWidth(d)),(i=i||-1===t||document.all&&!window.atob)?(this._elSlider.style.left=n+"px",this._elSlider.style.width=l+"px"):(this._animating=!0,s().then(function(){$.Velocity.animate(h._elSlider,{left:n},{duration:o.dur,easing:"easeOutCubic",queue:!1}),$.Velocity.animate(h._elSlider,{width:l},{complete:function(){h._animating=!1},duration:o.dur,easing:"easeOutCubic",queue:!1})})))},t.prototype.onTabClick=function(t){var e=t.currentTarget||t.target,i=this.getTabsArray().indexOf(e);-1===i||this._isTabDisabled(e)||this.setActivePage(i),document.activeElement.blur(),t.preventDefault()},t.prototype.resizeSlider=function(){var t,e;this._options.noSlider||(t=this._elTabs.offsetWidth)!==this._prevWidth&&(this._prevWidth=t,e=this.index(),this.updateSlider(e,e,!0))},t.prototype.count=function(){return this.getTabsArray().length},t.prototype.add=function(t,e){this._elScrollBox.appendChild(t),this._elPages&&e&&this._elPages.appendChild(e),this._bindTabEvents(t),this.checkScrollArrows(!0)},t.prototype.remove=function(t){function e(t){t.parentElement&&t.parentElement.removeChild(t)}var i,s,a=this.tabAt(t);a&&(this._unbindTabEvents(a),e(a)),(i=this.pageAt(t))&&e(i),s=t-1>=0?t-1:0,this.setActivePage(s),this.checkScrollArrows(!0)},t.prototype.indexOfTab=function(t){return this.getTabsArray().indexOf(t)},t.prototype.indexOfPage=function(t){return this.getPagesArray().indexOf(t)}, +t.prototype.pageAt=function(t){return this.getPagesArray()[t]||null},t.prototype.tabAt=function(t){return this.getTabsArray()[t]||null},t.prototype.deselect=function(t){var e,i=this.getElActiveTab();return this._options.activeTabClass&&i&&i.classList.remove(this._options.activeTabClass),e=this.getElActivePage(),this._options.activePageClass&&e&&e.classList.remove(this._options.activePageClass),this._elSlider&&(this._elSlider.style.left="",this._elSlider.style.width=""),this},t.prototype.stop=function(){this._unbindEvents({})},t.prototype._getElWidth=function(t){if(0===t.offsetWidth)return 0;var e=window.getComputedStyle(t);return t.offsetWidth-parseFloat(e.getPropertyValue("padding-left"))-parseFloat(e.getPropertyValue("padding-right"))-parseFloat(e.getPropertyValue("border-left-width"))-parseFloat(e.getPropertyValue("border-right-width"))},t.prototype._findOrCreateElement=function(t,e,i,s){var a,o,r,n=e.querySelector("."+t);if(!n)if((a=document.createElement("div")).innerHTML=s||'
',n=a.firstElementChild,"append"===i)e.appendChild(n);else{if("wrapInner"!==i)throw new Error("Unknown insertMethod");for(o=Array.prototype.slice.call(e.childNodes),r=0;rn?r=!0:a=e}}),s().then(function(){$.Velocity.animate(e._elScrollWrap,"scroll",{axis:"x",container:$(e._elScrollWrap),duration:o.dur/2,easing:"easeInOutCubic",offset:Math.floor(a-n-e._getElWidth(e._elArrowLeft)),queue:!1})})},target:this._elArrowLeft}),this._elArrowRight&&this._bindOneEvent({eventName:"click",listener:function(t){var i=e.getTabsArray(),r=0,n=p.IS_RTL?0:e._elScrollWrap.scrollLeft+e._getElWidth(e._elScrollWrap);p.IS_RTL&&i.reverse(),i.forEach(function(t){if(0===r){var e=t.offsetLeft+t.offsetWidth;e>n&&(r=e)}}),s().then(function(){$.Velocity.animate(e._elScrollWrap,"scroll",{axis:"x",container:$(e._elScrollWrap),duration:o.dur/2,easing:"easeInOutCubic",offset:Math.ceil(r-n+e._getElWidth(Object(a.ensureDefined)(e._elArrowRight))),queue:!1})})},target:this._elArrowRight}),(t=Array.prototype.slice.call(this._elTabs.querySelectorAll(".js-tabs__slider-hover")||[])).length&&t.forEach(function(t){return e._bindOneEvent({eventName:"mouseenter", +listener:function(t){if(!e._animating){var i=t.currentTarget;i&&e._options.activeTabClass&&i.classList&&i.classList.contains(e._options.activeTabClass)&&e._hoverSlider(i)}},target:t})}),this._bindOneEvent({eventName:"resize",listener:function(){e.checkScrollArrows(!0),e._options.noSlider||e.resizeSlider()},target:window})},t.prototype._bindTabEvents=function(t){var e=this;this._bindOneEvent({eventName:"click",listener:function(t){"function"==typeof e._options.onTabClick?e._options.onTabClick(t):e.onTabClick(t)},target:t})},t.prototype._unbindTabEvents=function(t){this._unbindEvents({target:t})},t.prototype._bindOneEvent=function(t){t.target.addEventListener(t.eventName,t.listener),this._bindings.push(t)},t.prototype._unbindEvents=function(t){var e=function(e){return!(void 0!==e.eventName&&e.eventName!==t.eventName||void 0!==e.target&&e.target!==t.target||void 0!==e.listener&&e.listener!==t.listener)};this._bindings.filter(e).forEach(function(t){return t.target.removeEventListener(t.eventName,t.listener)}),this._bindings=this._bindings.filter(function(t){return!e(t)})},t.prototype._getActiveElement=function(t,e,i){return t.filter(function(t,s,a){return e?t.classList.contains(e):!!i&&!t.classList.contains(i)})[0]||null},t.prototype._isTabDisabled=function(t){return t.classList.contains("i-disabled")||this._options.tabDisabledClass&&t.classList.contains(this._options.tabDisabledClass)||t.hasAttribute("disabled")},t.prototype._hoverSlider=function(t){var e,i=this,a=this._getElWidth(t),r=window.getComputedStyle(t),n=t.offsetLeft+parseInt(r.getPropertyValue("padding-left"))+parseInt(r.getPropertyValue("margin-left")),l={duration:o.dur/4,easing:"easeOutCubic",queue:!1};s().then(function(){$.Velocity.animate(i._elSlider,{left:n},l),$.Velocity.animate(i._elSlider,{width:a},l)}),e=function(){i.getElActiveTab()===t&&i._unhoverSlider(t),t.removeEventListener("mousleave",e)},t.addEventListener("mouseleave",e)},t.prototype._unhoverSlider=function(t){var e=this,i=window.getComputedStyle(t),a=t.querySelector(".js-tabs__slider-pos"),r=window.getComputedStyle(a),n=t.offsetLeft+parseInt(i.getPropertyValue("padding-left"))+parseInt(i.getPropertyValue("margin-left"))+parseInt(r.getPropertyValue("padding-left"))+a.offsetLeft,l=this._getElWidth(t),d=l-(l-this._getElWidth(a)),c={duration:o.dur/2,easing:"easeInSine",queue:!1};s().then(function(){$.Velocity.animate(e._elSlider,{left:n},c),$.Velocity.animate(e._elSlider,{width:d},c)})},t}()}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/28.3f2589cd73664ea3f3e3.js b/public/charting_library/static/bundles/28.3f2589cd73664ea3f3e3.js new file mode 100644 index 0000000..68782de --- /dev/null +++ b/public/charting_library/static/bundles/28.3f2589cd73664ea3f3e3.js @@ -0,0 +1,5 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{"75D8":function(t,e,n){"use strict";function o(t){return{x:t.pageX,y:t.pageY}}function r(t){return{x:t.touches[0].pageX,y:t.touches[0].pageY}}function s(t,e,n,o){var r=function(t,e,n,o){return 180*(Math.atan2(o-e,n-t)+Math.PI/2)/Math.PI}(t,e,n,o);return r<0?360+r:r}function i(t,e,n){var o,r,s;for(void 0===n&&(n=1),o=Math.max(Math.ceil((e-t)/n),0),r=Array(o),s=0;s0&&n.props.selected<=12},n}return l.__extends(e,t),e.prototype.render=function(){var t=this,e=this.props,n=e.center,o=e.radius,r=e.spacing,s=e.selected;return d.createElement("div",null,d.createElement(v,{radius:o,spacing:r,numbers:y,activeNumber:s,format:a,onMouseDown:this._onMouseDown,onTouchStart:this._onTouchStart}),this._renderInnerFace(o*w),d.createElement(g,{ref:function(e){return t._hand=e},length:o-(this.state.isInner?o*w:r)-this.props.numberRadius,angle:s*M,step:M,center:n,onMove:this._onHandMove,onMoveEnd:this._onHandMoveEnd}))},e.prototype._renderInnerFace=function(t){return d.createElement(v,{radius:this.props.radius,spacing:t,numbers:b,activeNumber:this.props.selected,onMouseDown:this._onMouseDown,onTouchStart:this._onTouchStart,isInner:!0})},e.prototype._valueFromDegrees=function(t){return this.state.isInner?b[t/M]:y[t/M]},e}(d.PureComponent),S=i(0,60,5),T=6,C=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._onMouseDown=function(t){e._hand.mouseStart(t)},e._onTouchStart=function(t){e._hand.touchStart(t)},e._onHandMove=function(t){e.props.onChange(t/T)},e._onHandMoveEnd=function(t){e.props.onSelect&&e.props.onSelect(t)},e}return l.__extends(e,t),e.prototype.render=function(){var t=this;return d.createElement("div",null,d.createElement(v,{radius:this.props.radius,spacing:this.props.spacing,numbers:S,activeNumber:this.props.selected,format:a,onMouseDown:this._onMouseDown,onTouchStart:this._onTouchStart}),d.createElement(g,{ref:function(e){return t._hand=e},length:this.props.radius-this.props.spacing-this.props.numberRadius,angle:this.props.selected*T,step:T,center:this.props.center,onMove:this._onHandMove,onMoveEnd:this._onHandMoveEnd}))},e}(d.PureComponent);n.d(e,"a",function(){return h}),c=.18,p=13,function(t){t[t.Hours=0]="Hours",t[t.Minutes=1]="Minutes"}(u||(u={})),h=function(t){function e(e){var n=t.call(this,e)||this;return n._clockFace=null,n._raf=null,n._recalculateTimeout=null,n._calculateShapeBinded=n._calculateShape.bind(n),n._onChangeHours=function(t){n.state.time.hours()!==t&&n._onChange(n.state.time.clone().hours(t))}, +n._onChangeMinutes=function(t){n.state.time.minutes()!==t&&n._onChange(n.state.time.clone().minutes(t))},n._onSelectHours=function(){n._displayMinutes()},n._onSelectMinutes=function(t){t&&t.target instanceof Node&&n._clockFace&&n._clockFace.contains(t.target)&&t.preventDefault(),n.props.onSelect&&n.props.onSelect(n.state.time.clone())},n._displayHours=function(){n.setState({faceType:u.Hours})},n._displayMinutes=function(){n.setState({faceType:u.Minutes})},n._setClockFace=function(t){n._clockFace=t},n.state={center:{x:0,y:0},radius:0,time:n.props.selectedTime,faceType:u.Hours},n}return l.__extends(e,t),e.prototype.render=function(){var t,e;return d.createElement("div",{className:_(f.clock,this.props.className)},d.createElement("div",{className:f.header},d.createElement("span",{className:_(f.number,(t={},t[f.active]=this.state.faceType===u.Hours,t)),onClick:this._displayHours},this.state.time.format("HH")),d.createElement("span",null,":"),d.createElement("span",{className:_(f.number,(e={},e[f.active]=this.state.faceType===u.Minutes,e)),onClick:this._displayMinutes},this.state.time.format("mm"))),d.createElement("div",{className:f.body},d.createElement("div",{className:f.clockFace,ref:this._setClockFace},this.state.faceType===u.Hours?this._renderHours():null,this.state.faceType===u.Minutes?this._renderMinutes():null,d.createElement("span",{className:f.centerDot}))))},e.prototype.componentDidMount=function(){this._calculateShape(),this._recalculateTimeout=setTimeout(this._calculateShapeBinded,1),window.addEventListener("resize",this._calculateShapeBinded),window.addEventListener("scroll",this._calculateShapeBinded,!0)},e.prototype.componentWillUnmount=function(){this._clearTimeout(),window.removeEventListener("resize",this._calculateShapeBinded),window.removeEventListener("scroll",this._calculateShapeBinded,!0),null!==this._raf&&(cancelAnimationFrame(this._raf),this._raf=null)},e.prototype._clearTimeout=function(){null!==this._recalculateTimeout&&(clearTimeout(this._recalculateTimeout),this._recalculateTimeout=null)},e.prototype._renderHours=function(){return d.createElement(E,{center:this.state.center,radius:this.state.radius,spacing:this.state.radius*c,selected:this.state.time.hours(),numberRadius:p,onChange:this._onChangeHours,onSelect:this._onSelectHours})},e.prototype._renderMinutes=function(){return d.createElement(C,{center:this.state.center,radius:this.state.radius,spacing:this.state.radius*c,selected:this.state.time.minutes(),numberRadius:p,onChange:this._onChangeMinutes,onSelect:this._onSelectMinutes})},e.prototype._onChange=function(t){this.setState({time:t}),this.props.onChange&&this.props.onChange(t.clone())},e.prototype._calculateShape=function(){var t=this;null===this._raf&&(this._raf=requestAnimationFrame(function(){var e=Object(m.ensureNotNull)(t._clockFace).getBoundingClientRect(),n=e.left,o=e.top,r=e.width;t.setState({center:{x:n+r/2,y:o+r/2},radius:r/2}),t._raf=null}))},e}(d.PureComponent)},"Db/h":function(t,e,n){t.exports={errors:"errors-C3KBJakt-",show:"show-2G4PY7Uu-",error:"error-3G4k6KUC-"}}, +Oehf:function(t,e,n){t.exports={clock:"clock-3pqBsiNm-",header:"header-pTWMGSpm-",number:"number-9PC9lvyt-",active:"active-1sonmMLV-",body:"body-2Q-g3GDd-",clockFace:"clockFace-eHYbqh-S-",face:"face-2iCoBAOV-",inner:"inner-1mVlhYbe-",hand:"hand-2ZG8pJQb-",knob:"knob-31dEppHa-",centerDot:"centerDot-210Fo0oV-"}},kSQs:function(t,e,n){"use strict";var o,r,s,i,a=n("mrSG"),c=n("q1tI"),p=n("TSYQ"),u=n("uqKQ"),h=n("i8i4"),l=n("Db/h"),d=n("Ialn");n.d(e,"b",function(){return o}),n.d(e,"a",function(){return r}),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.render=function(){var t,e,n,o=this.props,r=o.children,s=void 0===r?[]:r,i=o.show,u=void 0!==i&&i,h=o.customErrorClass,m=p(l.errors,((t={})[l.show]=u,t),h),f=s.map(function(t,e){return c.createElement("div",{className:l.error,key:e},t)}),_={position:"absolute",top:this.props.top,width:this.props.width,height:this.props.height,bottom:void 0!==this.props.bottom?this.props.bottom:"100%",right:void 0!==this.props.right?this.props.right:0,left:this.props.left,zIndex:this.props.zIndex};return d.IS_RTL&&(e=_.left,n=_.right,_=a.__assign({},_,{left:n,right:e})),c.createElement("div",{style:_,className:m},f)},e}(c.PureComponent),r=Object(u.a)((s=o,(i=function(t){function e(e){var n=t.call(this,e)||this;return n._getComponentInstance=function(t){n._instance=t},n._throttleCalcProps=function(){requestAnimationFrame(function(){return n._calcProps(n.props)})},n.state={bottom:n.props.bottom,left:n.props.left,right:n.props.right,top:"number"==typeof n.props.top?n.props.top:-1e4,width:n.props.inheritWidthFromTarget?n.props.target&&n.props.target.getBoundingClientRect().width:n.props.width},n}return a.__extends(e,t),e.prototype.componentDidMount=function(){this._instanceElem=h.findDOMNode(this._instance),this.props.attachOnce||this._subscribe(),this._calcProps(this.props)},e.prototype.componentWillReceiveProps=function(t){if(t.top!==this.props.top&&this.setState({top:t.top}),t.left!==this.props.left&&this.setState({left:t.left}),t.width!==this.props.width&&this.setState({width:t.width}),t.attachmentCommand!==this.props.attachmentCommand&&t.attachmentCommand)switch(t.attachmentCommand.name){case"update":this._calcProps(t)}},e.prototype.componentDidUpdate=function(t){t.children!==this.props.children&&this._calcProps(this.props)},e.prototype.render=function(){return c.createElement(s,a.__assign({},this.props,{ref:this._getComponentInstance,top:this.state.top,bottom:void 0!==this.state.bottom?this.state.bottom:"auto",right:void 0!==this.state.right?this.state.right:"auto",left:this.state.left,width:this.state.width}),this.props.children)},e.prototype.componentWillUnmount=function(){this._unsubsribe()},e.prototype._calcProps=function(t){var e,n,o,r,s;if(t.target&&t.attachment&&t.targetAttachment){switch(e=this._calcTargetProps(t.target,t.attachment,t.targetAttachment),o=(n=this.props).width,s={width:void 0===(r=n.inheritWidthFromTarget)||r?e.width:o},t.attachment.vertical){case"bottom":case"middle":s.top=e.y;break;default: +s[t.attachment.vertical]=e.y}switch(t.attachment.horizontal){case"right":case"center":s.left=e.x;break;default:s[t.attachment.horizontal]=e.x}this.setState(s)}},e.prototype._calcTargetProps=function(t,e,n){var o=t.getBoundingClientRect(),r=this._instanceElem.getBoundingClientRect(),s="parent"===this.props.root?this._getCoordsRelToParentEl(t,o):this._getCoordsRelToDocument(o),i=this._getDimensions(r),a=this._getDimensions(o),c=a.width,p=0,u=0;switch(e.vertical){case"top":u=s[n.vertical];break;case"bottom":u=s[n.vertical]-i.height;break;case"middle":u=s[n.vertical]-i.height/2}switch(e.horizontal){case"left":p=s[n.horizontal];break;case"right":p=s[n.horizontal]-i.width;break;case"center":p=s[n.horizontal]-i.width/2}return"number"==typeof this.props.attachmentOffsetY&&(u+=this.props.attachmentOffsetY),"number"==typeof this.props.attachmentOffsetX&&(p+=this.props.attachmentOffsetX),{x:p,y:u,width:c}},e.prototype._getCoordsRelToDocument=function(t){var e=pageYOffset,n=pageXOffset,o=t.top+e,r=t.bottom+e,s=t.left+n,i=t.right+n,a=(o+t.height)/2,c=s+t.width/2;return{top:o,bottom:r,left:s,right:i,middle:a,center:c}},e.prototype._getCoordsRelToParentEl=function(t,e){var n=t.offsetParent,o=n.scrollTop,r=n.scrollLeft,s=t.offsetTop+o,i=t.offsetLeft+r,a=e.width+i,c=e.height+s,p=(s+e.height)/2,u=(i+e.width)/2;return{top:s,bottom:c,left:i,right:a,middle:p,center:u}},e.prototype._getDimensions=function(t){return{height:t.height,width:t.width}},e.prototype._subscribe=function(){"document"===this.props.root&&(window.addEventListener("scroll",this._throttleCalcProps,!0),window.addEventListener("resize",this._throttleCalcProps))},e.prototype._unsubsribe=function(){window.removeEventListener("scroll",this._throttleCalcProps,!0),window.removeEventListener("resize",this._throttleCalcProps)},e}(c.PureComponent)).displayName="Attachable Component",i))},nPPD:function(t,e,n){"use strict";function o(t,e,n){var o,r,s,i,a;for(void 0===n&&(n={}),o=Object.assign({},e),r=0,s=Object.keys(e);r");i.appendTo(t),i.css("padding-left","0px"),i.css("padding-right","0px"),(o=$("")).attr("type","text"),o.addClass("ticker"),o.css("width","40px"),o.attr("id",e),o.appendTo(i)},s=function(t,e,o){var i,n=$("");n.css("padding-left",o),n.css("padding-right",o),n.appendTo(t),(i=$("
")).appendTo(n),i.append(e),i.css("font-size","150%")},(r=$("")).appendTo(t),(a=$("")).appendTo(r),l=["start_hours","start_minutes","end_hours","end_minutes"],n.call(this,a,l[0]),s.call(this,a,":",0),n.call(this,a,l[1]),s.call(this,a,"-",4),n.call(this,a,l[2]),s.call(this,a,":",0),n.call(this,a,l[3]),d=!1,this.bindControl(new p(a,l,e,d,this.model(),i))):w.logError("Session editor adding FAILED: wrong input type.")},i.prototype.prepareControl=function(e,o,i){var n,s,r,a,p,l,d,u,h,c,f,y,m,v,_,C,x,T,S,k,I,O=this,P=null,E=null,L=null;if("resolution"===e.type)P=$('");else if("symbol"===e.type)P=$(''),g().bindToInput(P,{onPopupOpen:function(t){this._$symbolSearchPopup=t,this._symbolSearchZindex&&t.css("z-index",this._symbolSearchZindex)}.bind(this),onPopupClose:function(){this._$symbolSearchPopup=null}.bind(this),callback:function(t){e.value=t}}),o.attr("colspan",5);else if("session"===e.type)this._addSessionEditor(o,this._property.inputs[e.id],e,i);else if("source"===e.type){for(n={},s={open:window.t("open"),high:window.t("high"),low:window.t("low"),close:window.t("close"),hl2:window.t("hl2"),hlc3:window.t("hlc3"),ohlc4:window.t("ohlc4")},r=Object.keys(s),a=0;a").attr("value",S).text(k).appendTo(P);o.addClass("js-value-cell")}else e.options?(P=$(""),"bool"===e.type?P.attr("type","checkbox"):P.attr("type","text"));return P&&(P.appendTo(o),P.is(":checkbox")||"symbol"===e.type||P.css("width","100px")),{valueEditor:P,valueSetter:E,propertyChangedHook:L}},i.prototype._symbolInfoBySymbolProperty=function(t){return this._study.resolvedSymbolInfoBySymbol(t.value())},i.prototype._sortInputs=function(t){return t},i.prototype.prepareLayoutImpl=function(t,e){function o(t){return(new _).format(t)}var i,n,p,l,b,w,g,C,x,T,S,k,I,O,P,E,L,B,V=this._sortInputs(t.inputs);for(i=0;i")).appendTo(e),(g=$("
")).appendTo(w),g.addClass("propertypage-name-label"),g.text(window.t(l,{context:"input"})),(C=$("")).appendTo(w),x=this.prepareControl(n,C,b),T=x.valueEditor,S=x.valueSetter,k=x.propertyChangedHook,n.options?this.bindControl(new y(T,this._property.inputs[p],null,!0,this.model(),b,S,k)):"bar_time"===n.type?(I=10,this.bindControl(new a(T,this._property.inputs[p],!0,this.model(),b,this.model().mainSeries(),I)), +T.addClass("ticker")):"integer"===n.type?(O=[h(n.defval)],(0===n.min||n.min)&&O.push(d(n.min)),(0===n.max||n.max)&&O.push(u(n.max)),this.bindControl(new v(T,this._property.inputs[p],O,!1,this.model(),b)),T.addClass("ticker"),isFinite(n.step)&&n.step>0&&T.attr("data-step",n.step)):"float"===n.type?(O=[c(n.defval)],(0===n.min||n.min)&&O.push(d(n.min)),(0===n.max||n.max)&&O.push(u(n.max)),(P=new v(T,this._property.inputs[p],O,!1,this.model(),b)).addFormatter(o),this.bindControl(P),T.addClass("ticker"),isFinite(n.step)&&n.step>0&&T.attr("data-step",n.step)):"text"===n.type?this.bindControl(new v(T,this._property.inputs[p],null,!1,this.model(),b)):"bool"===n.type?this.bindControl(new m(T,this._property.inputs[p],!0,this.model(),b)):"resolution"===n.type?this.bindControl(new y(T,this._property.inputs[p],s,!0,this.model(),"Change Interval")):"symbol"===n.type&&(E=this._symbolInfoBySymbolProperty.bind(this,this._property.inputs[p]),L=f(E,this._property.inputs[p]),B=new r(T,this._property.inputs[p],!0,this.model(),"Change Symbol",L,this._study.symbolsResolved()),this.bindControl(B))));this._property.offset&&(l=this._property.offset.title?this._property.offset.title.value():window.t("Offset"),T=this.addOffsetEditorRow(e,l),(O=[h(this._property.offset.val)]).push(d(this._property.offset.min)),O.push(u(this._property.offset.max)),this.bindControl(new v(T,this._property.offset.val,O,!1,this.model(),"Undo "+l))),this._property.offsets&&$.each(t.plots,function(t,o){var i,n,s;this._property.offsets[o.id]&&(void 0!==(i=this._property.offsets[o.id]).isHidden&&i.isHidden.value()||(n=i.title.value(),T=this.addOffsetEditorRow(e,n),(s=[h(i.val)]).push(d(i.min)),s.push(u(i.max)),this.bindControl(new v(T,i.val,s,!1,this.model(),"Undo "+n))))}.bind(this))},i.prototype.prepareLayout=function(){this._table=$(""),this._table.addClass("property-page"),this._table.attr("cellspacing","0"),this._table.attr("cellpadding","2");var t=this._study.metaInfo();this.prepareLayoutImpl(t,this._table),this.loadData()},i.prototype.symbolSearchPopup=function(){return this._$symbolSearchPopup},i.prototype.widget=function(){return this._table},e.StudyInputsPropertyPage=i}).call(this,o("Kxc7"))},PVgW:function(t,e,o){"use strict";function i(t){return t=Math.abs(t),!Object(l.isInteger)(t)&&t>1&&(t=parseFloat(t.toString().replace(/^.+\./,"0."))),0').appendTo(a.parent()),o=$('
').html(d).appendTo(e),i=$('
').html(d).appendTo(e),e.on("mousedown",function(t){t.preventDefault(),a.focus()}),o.click(function(){a.is(":disabled")||s(a)}),i.click(function(){a.is(":disabled")||r(a)}),a.keydown(function(t){a.is(":disabled")||(38===t.keyCode?o.addClass("i-active"):40===t.keyCode&&i.addClass("i-active"))}),a.keyup(function(t){a.is(":disabled")||(38===t.keyCode?(s(a),o.removeClass("i-active")):40===t.keyCode&&(r(a),i.removeClass("i-active")))}),a.mousewheel(function(t){t.deltaY*(t.deltaFactor/100)>0?o.click():i.click()}))})}},"R4+T":function(t,e){t.exports=''},"y1L/":function(t,e,o){}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/3.f41fdd1a128935b63e5b.js b/public/charting_library/static/bundles/3.f41fdd1a128935b63e5b.js new file mode 100644 index 0000000..40b5ed0 --- /dev/null +++ b/public/charting_library/static/bundles/3.f41fdd1a128935b63e5b.js @@ -0,0 +1,3 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{"+EG+":function(e,t,n){"use strict";var o,i,r,s;n.d(t,"a",function(){return r}),n.d(t,"b",function(){return s}),o=n("mrSG"),i=n("q1tI"),r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.shouldComponentUpdate=function(){return!1},t.prototype.render=function(){return i.createElement("div",{style:{position:"fixed",zIndex:150,left:0,top:0},ref:this.props.reference})},t}(i.Component),s=i.createContext(null)},"6uNr":function(e,t,n){e.exports={menuWrap:"menuWrap-1gEtmoET-",isMeasuring:"isMeasuring-FZ0EJCM2-",scrollWrap:"scrollWrap-1B5MfTJt-",momentumBased:"momentumBased-1Jq4gQt2-",menuBox:"menuBox-20sJGjtG-",isHidden:"isHidden-2vLQpR1t-"}},DTHj:function(e,t,n){"use strict";var o,i,r,s,a,u,d,l,c,p,h;n.d(t,"a",function(){return h}),o=n("mrSG"),i=n("q1tI"),r=n("TSYQ"),s=n("Eyy1"),a=n("Hr11"),u=n("XAms"),d=n("+EG+"),l=n("tWVy"),c=n("jAh7"),p=n("6uNr"),h=function(e){function t(t){var n=e.call(this,t)||this;return n._containerRef=null,n._scrollWrapRef=null,n._raf=null,n._manager=new c.OverlapManager,n._handleContainerRef=function(e){return n._containerRef=e},n._handleScrollWrapRef=function(e){return n._scrollWrapRef=e},n._handleMeasure=function(){var e,t,o,i,r,u,d,l,c,p,h,m,f,_,v,g;n.state.isMeasureValid||(e=n.props.position,o=(t=Object(s.ensureNotNull)(n._containerRef)).getBoundingClientRect(),i=document.documentElement.clientHeight,r=document.documentElement.clientWidth,u=i-10,(d=o.height>u)&&(Object(s.ensureNotNull)(n._scrollWrapRef).style.overflowY="scroll",o=t.getBoundingClientRect()),l=o.width,c=o.height,p="function"==typeof e?e(l,c):e,h=5,m=r-l-5,f=Object(a.clamp)(p.x,h,Math.max(h,m)),_=5,v=i-(p.overrideHeight||c)-5,g=Object(a.clamp)(p.y,_,Math.max(_,v)),n.setState({appearingMenuHeight:p.overrideHeight||(d?u:void 0),appearingMenuWidth:p.overrideWidth,appearingPosition:{x:f,y:g},isMeasureValid:!0},n._scrollToFocusedElement))},n._scrollToFocusedElement=function(){var e=document.activeElement,t=Object(s.ensureNotNull)(n._containerRef);null!==e&&t.contains(e)&&e.scrollIntoView()},n._resize=function(){null===n._raf&&(n._raf=requestAnimationFrame(function(){n.setState({appearingMenuHeight:void 0,appearingMenuWidth:void 0,appearingPosition:void 0,isMeasureValid:void 0}),n._raf=null}))},n._handleGlobalClose=function(){n.props.onClose()},n._handleSlot=function(e){n._manager.setContainer(e)},n.state={},n}return o.__extends(t,e),t.prototype.componentWillReceiveProps=function(e){this.props.isOpened&&!e.isOpened&&this.setState({isMeasureValid:void 0})},t.prototype.componentDidMount=function(){this._handleMeasure();var e=this.props.customCloseDelegate;(void 0===e?l.a:e).subscribe(this,this._handleGlobalClose),window.addEventListener("resize",this._resize)},t.prototype.componentDidUpdate=function(){this._handleMeasure()},t.prototype.componentWillUnmount=function(){var e=this.props.customCloseDelegate;(void 0===e?l.a:e).unsubscribe(this,this._handleGlobalClose),window.removeEventListener("resize",this._resize), +null!==this._raf&&(cancelAnimationFrame(this._raf),this._raf=null)},t.prototype.render=function(){var e=this.props,t=e.children,n=e.minWidth,o=e.theme,s=void 0===o?p:o,a=e.className,l=this.state,c=l.appearingMenuHeight,h=l.appearingMenuWidth,m=l.appearingPosition,f=l.isMeasureValid;return i.createElement(i.Fragment,null,i.createElement(d.b.Provider,{value:this._manager},i.createElement("div",{className:r(a,s.menuWrap,!f&&s.isMeasuring),style:{height:c,left:m&&m.x,minWidth:n,position:"fixed",top:m&&m.y,width:h},ref:this._handleContainerRef,onScroll:this.props.onScroll,onContextMenu:u.b},i.createElement("div",{className:r(s.scrollWrap,!this.props.noMomentumBasedScroll&&s.momentumBased),style:{overflowY:void 0!==c?"scroll":"auto"},ref:this._handleScrollWrapRef},i.createElement("div",{className:s.menuBox},t)))),i.createElement(d.a,{reference:this._handleSlot}))},t}(i.PureComponent)},RgaO:function(e,t,n){"use strict";var o,i,r;n.d(t,"a",function(){return r}),o=n("mrSG"),i=n("q1tI"),r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._scope=null,t._handleScopeRef=function(e){return t._scope=e},t._handleOutsideEvent=function(e){void 0!==t.props.handler&&null!==t._scope&&e.target instanceof Node&&(t._scope.contains(e.target)||t.props.handler(e))},t}return o.__extends(t,e),t.prototype.componentDidMount=function(){this.props.click&&document.addEventListener("click",this._handleOutsideEvent,!1),this.props.mouseDown&&document.addEventListener("mousedown",this._handleOutsideEvent,!1),this.props.touchEnd&&document.addEventListener("touchend",this._handleOutsideEvent,!1),this.props.touchStart&&document.addEventListener("touchstart",this._handleOutsideEvent,!1)},t.prototype.componentWillUnmount=function(){document.removeEventListener("click",this._handleOutsideEvent,!1),document.removeEventListener("mousedown",this._handleOutsideEvent,!1),document.removeEventListener("touchend",this._handleOutsideEvent,!1),document.removeEventListener("touchstart",this._handleOutsideEvent,!1)},t.prototype.render=function(){var e=this.props,t=(e.click,e.handler,e.mouseDown,e.touchEnd,e.touchStart,e.ctor),n=void 0===t?"span":t,r=o.__rest(e,["click","handler","mouseDown","touchEnd","touchStart","ctor"]);return i.createElement(n,o.__assign({},r,{ref:this._handleScopeRef}))},t}(i.PureComponent)},jAh7:function(e,t,n){"use strict";function o(e){var t,n,o;return void 0===e&&(e=document),null!==(t=e.getElementById("overlap-manager-root"))?Object(i.ensureDefined)(a.get(t)):(n=new s(e),o=function(e){var t=e.createElement("div");return t.style.position="absolute",t.style.zIndex=150..toString(),t.style.top="0px",t.style.left="0px",t.id="overlap-manager-root",t}(e),a.set(o,n),n.setContainer(o),e.body.appendChild(o),n)}var i,r,s,a;n.r(t),n.d(t,"OverlapManager",function(){return s}),n.d(t,"getRootOverlapManager",function(){return o}),i=n("Eyy1"),r=function(){function e(){this._storage=[]}return e.prototype.add=function(e){this._storage.push(e)},e.prototype.remove=function(e){this._storage=this._storage.filter(function(t){return e!==t}) +},e.prototype.has=function(e){return this._storage.includes(e)},e.prototype.getItems=function(){return this._storage},e}(),s=function(){function e(e){void 0===e&&(e=document),this._storage=new r,this._windows=new Map,this._index=0,this._document=e,this._container=e.createDocumentFragment()}return e.prototype.setContainer=function(e){var t=this._container,n=null===e?this._document.createDocumentFragment():e;!function(e,t){Array.from(e.childNodes).forEach(function(e){e.nodeType===Node.ELEMENT_NODE&&t.appendChild(e)})}(t,n),this._container=n},e.prototype.registerWindow=function(e){this._storage.has(e)||this._storage.add(e)},e.prototype.ensureWindow=function(e,t){var n,o;return void 0===t&&(t={position:"fixed"}),void 0!==(n=this._windows.get(e))?n:(this.registerWindow(e),(o=this._document.createElement("div")).style.position=t.position,o.style.zIndex=this._index.toString(),o.dataset.id=e,this._container.appendChild(o),this._windows.set(e,o),++this._index,o)},e.prototype.unregisterWindow=function(e){this._storage.remove(e);var t=this._windows.get(e);void 0!==t&&(null!==t.parentElement&&t.parentElement.removeChild(t),this._windows.delete(e))},e.prototype.getZindex=function(e){var t=this.ensureWindow(e);return parseInt(t.style.zIndex||"0")},e.prototype.moveToTop=function(e){this.getZindex(e)!==this._index&&(this.ensureWindow(e).style.zIndex=(++this._index).toString())},e.prototype.removeWindow=function(e){this.unregisterWindow(e)},e}(),a=new WeakMap}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/30.c3cc90c5fbe9a2b87ffb.js b/public/charting_library/static/bundles/30.c3cc90c5fbe9a2b87ffb.js new file mode 100644 index 0000000..21d6678 --- /dev/null +++ b/public/charting_library/static/bundles/30.c3cc90c5fbe9a2b87ffb.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{"4Cm8":function(t,e,i){"use strict";function s(t){var e;return c.createElement("div",{className:h(b.fadeLeft,(e={},e[b.isVisible]=t.isVisible,e))})}function r(t){var e;return c.createElement("div",{className:h(b.fadeRight,(e={},e[b.isVisible]=t.isVisible,e))})}function n(t){return c.createElement(l,a.__assign({},t,{className:b.scrollLeft}))}function o(t){return c.createElement(l,a.__assign({},t,{className:b.scrollRight}))}function l(t){var e;return c.createElement("div",{className:h(t.className,(e={},e[b.isVisible]=t.isVisible,e)),onClick:t.onClick},c.createElement("div",{className:b.iconWrap},c.createElement(p.a,{icon:m,className:b.icon})))}var a,c,h,u,p,d,f,w,m,b,_,R,S,V,v,g;i.d(e,"a",function(){return _}),a=i("mrSG"),c=i("q1tI"),h=i("TSYQ"),u=i("XmVn"),p=i("jjrI"),d=i("beCu"),f=i("j1f4"),w=i("Ialn"),m=i("Vike"),b=i("ji/R"),S=o,V=s,v=r,void 0===(R=n)&&(R=n),void 0===S&&(S=o),void 0===V&&(V=s),void 0===v&&(v=r),(g=function(t){function e(e){var i=t.call(this,e)||this;return i._scroll=c.createRef(),i._wrapMeasureRef=c.createRef(),i._contentMeasureRef=c.createRef(),i._handleScrollLeft=function(){i.props.onScrollButtonClick?i.props.onScrollButtonClick("left"):i.animateTo(Math.max(0,i.currentPosition()-(i.state.widthWrap-50)))},i._handleScrollRight=function(){i.props.onScrollButtonClick?i.props.onScrollButtonClick("right"):i.animateTo(Math.min((i.state.widthContent||0)-(i.state.widthWrap||0),i.currentPosition()+(i.state.widthWrap-50)))},i._handleResizeWrap=function(t){i.props.onMeasureWrap&&i.props.onMeasureWrap(t),i.setState({widthWrap:t.width}),i._checkButtonsVisibility()},i._handleResizeContent=function(t){i.props.onMeasureContent&&i.props.onMeasureContent(t);var e=i.props,s=e.shouldDecreaseWidthContent,r=e.buttonsWidthIfDecreasedWidthContent;s&&r?i.setState({widthContent:t.width+2*r}):i.setState({widthContent:t.width})},i._handleScroll=function(){var t=i.props.onScroll;t&&t(i.currentPosition(),i.isAtLeft(),i.isAtRight()),i._checkButtonsVisibility()},i._checkButtonsVisibility=function(){var t,e,s,r,n;(i.props.isVisibleButtons||i.props.isVisibleFade)&&(e=(t=i.state).isVisibleLeftButton,s=t.isVisibleRightButton,r=i.isAtLeft(),n=i.isAtRight(),r||e?r&&e&&i.setState({isVisibleLeftButton:!1}):i.setState({isVisibleLeftButton:!0}),n||s?n&&s&&i.setState({isVisibleRightButton:!1}):i.setState({isVisibleRightButton:!0}))},i.state={widthContent:0,widthWrap:0,isVisibleRightButton:!1,isVisibleLeftButton:!1},i}return a.__extends(e,t),e.prototype.componentDidMount=function(){this._checkButtonsVisibility()},e.prototype.componentDidUpdate=function(t,e){e.widthWrap===this.state.widthWrap&&e.widthContent===this.state.widthContent||this._handleScroll(),this.props.shouldMeasure&&this._wrapMeasureRef.current&&this._contentMeasureRef.current&&(this._wrapMeasureRef.current.measure(),this._contentMeasureRef.current.measure())},e.prototype.currentPosition=function(){return this._scroll.current?w.IS_RTL?Object(w.getLTRScrollLeft)(this._scroll.current):this._scroll.current.scrollLeft:0}, +e.prototype.isAtLeft=function(){return!this._isOverflowed()||this.currentPosition()<=this.props.hideButtonsFrom},e.prototype.isAtRight=function(){return!this._isOverflowed()||this.currentPosition()+this.state.widthWrap>=this.state.widthContent-this.props.hideButtonsFrom},e.prototype.animateTo=function(t,e){void 0===e&&(e=f.dur);var i=this._scroll.current;i&&(w.IS_RTL&&(t=Object(w.getLTRScrollLeftOffset)(i,t)),e<=0?i.scrollLeft=Math.round(t):Object(d.doAnimate)({onStep:function(t,e){i.scrollLeft=Math.round(e)},from:i.scrollLeft,to:Math.round(t),easing:f.easingFunc.easeInOutCubic,duration:e}))},e.prototype.render=function(){var t,e=this.props,i=e.children,s=e.isVisibleScrollbar,r=e.isVisibleFade,n=e.isVisibleButtons,o=e.shouldMeasure,l=e.shouldDecreaseWidthContent,a=e.buttonsWidthIfDecreasedWidthContent,p=this.state,d=p.isVisibleRightButton,f=p.isVisibleLeftButton,w=l&&a;return c.createElement(u,{whitelist:["width"],onMeasure:this._handleResizeWrap,shouldMeasure:o,ref:this._wrapMeasureRef},c.createElement("div",{className:b.wrapOverflow},c.createElement("div",{className:h(b.wrap,w?b.wrapWithArrowsOuting:"")},c.createElement("div",{className:h(b.scrollWrap,(t={},t[b.noScrollBar]=!s,t)),onScroll:this._handleScroll,ref:this._scroll},c.createElement(u,{onMeasure:this._handleResizeContent,whitelist:["width"],shouldMeasure:o,ref:this._contentMeasureRef},i)),r&&c.createElement(V,{isVisible:f}),r&&c.createElement(v,{isVisible:d}),n&&c.createElement(R,{onClick:this._handleScrollLeft,isVisible:f}),n&&c.createElement(S,{onClick:this._handleScrollRight,isVisible:d}))))},e.prototype._isOverflowed=function(){var t=this.state;return t.widthContent>t.widthWrap},e}(c.PureComponent)).defaultProps={isVisibleScrollbar:!0,shouldMeasure:!0,hideButtonsFrom:1},_=g},Vike:function(t,e){t.exports=''},"ji/R":function(t,e,i){t.exports={wrap:"wrap-5DN0XnS4-",wrapWithArrowsOuting:"wrapWithArrowsOuting-1OPNi0IP-",wrapOverflow:"wrapOverflow-2FHnhKaN-",scrollWrap:"scrollWrap-nAnkzkWd-",noScrollBar:"noScrollBar-34JzryqI-",icon:"icon-1nfNqIRh-",scrollLeft:"scrollLeft-2cl_k1e7-",scrollRight:"scrollRight-2SEqCpTf-",isVisible:"isVisible-Stm3XOHb-",iconWrap:"iconWrap-1E4GEP7h-",fadeLeft:"fadeLeft-244lj3pA-",fadeRight:"fadeRight-1JnS42hI-"}}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.css b/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.css new file mode 100644 index 0000000..84adb0d --- /dev/null +++ b/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.css @@ -0,0 +1 @@ +.icon-3yfDkFjY-{display:flex;flex-direction:row;align-items:center;transition:transform .35s cubic-bezier(.175,.885,.32,1.275)}.icon-3yfDkFjY- svg{display:block;fill:currentColor;width:8px;height:4px}.icon-3yfDkFjY-.dropped-50rfOQ8V-{transform:rotate(180deg)}.button-13wlLwhJ-{display:flex;flex:1 0 auto;align-items:center;height:100%;cursor:default;color:#131722;position:relative;z-index:0;transition:background-color .35s ease,color 60ms ease}html.theme-dark .button-13wlLwhJ-{color:#787b86}.button-13wlLwhJ-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover{color:#000}}html.theme-dark .button-13wlLwhJ-:active{color:#868993}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-:hover{color:#868993}}.button-13wlLwhJ-.hover-3L87f6Kw-:before,.button-13wlLwhJ-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px}}html.theme-dark .button-13wlLwhJ-.hover-3L87f6Kw-:before,html.theme-dark .button-13wlLwhJ-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-:hover:before{background-color:#2a2e39}}.button-13wlLwhJ- svg{display:block;fill:currentColor}.button-13wlLwhJ- .arrow-2pXEy7ej-{display:flex;contain:content;align-items:center;height:100%}.button-13wlLwhJ- .arrowWrap-r5l5nQXU-{margin:0 6px;transition:transform .35s ease}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover .arrowWrap-r5l5nQXU-{transform:translateY(2px)}}.button-13wlLwhJ-.isOpened-1939ai3F-.hover-3L87f6Kw-:before,.button-13wlLwhJ-.isOpened-1939ai3F-:active:before,.button-13wlLwhJ-.isOpened-1939ai3F-:before{content:"";display:block;position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:0;background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-.isOpened-1939ai3F-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:0;background-color:#f0f3fa}}html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-.hover-3L87f6Kw-:before,html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:active:before,html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:hover:before{background-color:#2a2e39}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-.isOpened-1939ai3F-:hover .arrowWrap-r5l5nQXU-{transform:none}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.rtl.css b/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.rtl.css new file mode 100644 index 0000000..d0c0441 --- /dev/null +++ b/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.rtl.css @@ -0,0 +1 @@ +.icon-3yfDkFjY-{display:flex;flex-direction:row;align-items:center;transition:transform .35s cubic-bezier(.175,.885,.32,1.275)}.icon-3yfDkFjY- svg{display:block;fill:currentColor;width:8px;height:4px}.icon-3yfDkFjY-.dropped-50rfOQ8V-{transform:rotate(-180deg)}.button-13wlLwhJ-{display:flex;flex:1 0 auto;align-items:center;height:100%;cursor:default;color:#131722;position:relative;z-index:0;transition:background-color .35s ease,color 60ms ease}html.theme-dark .button-13wlLwhJ-{color:#787b86}.button-13wlLwhJ-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover{color:#000}}html.theme-dark .button-13wlLwhJ-:active{color:#868993}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-:hover{color:#868993}}.button-13wlLwhJ-.hover-3L87f6Kw-:before,.button-13wlLwhJ-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px}}html.theme-dark .button-13wlLwhJ-.hover-3L87f6Kw-:before,html.theme-dark .button-13wlLwhJ-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-:hover:before{background-color:#2a2e39}}.button-13wlLwhJ- svg{display:block;fill:currentColor}.button-13wlLwhJ- .arrow-2pXEy7ej-{display:flex;contain:content;align-items:center;height:100%}.button-13wlLwhJ- .arrowWrap-r5l5nQXU-{margin:0 6px;transition:transform .35s ease}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover .arrowWrap-r5l5nQXU-{transform:translateY(2px)}}.button-13wlLwhJ-.isOpened-1939ai3F-.hover-3L87f6Kw-:before,.button-13wlLwhJ-.isOpened-1939ai3F-:active:before,.button-13wlLwhJ-.isOpened-1939ai3F-:before{content:"";display:block;position:absolute;z-index:-1;top:0;left:0;bottom:0;right:0;border-radius:0;background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-.isOpened-1939ai3F-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:0;left:0;bottom:0;right:0;border-radius:0;background-color:#f0f3fa}}html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-.hover-3L87f6Kw-:before,html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:active:before,html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:hover:before{background-color:#2a2e39}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-.isOpened-1939ai3F-:hover .arrowWrap-r5l5nQXU-{transform:none}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/31.d081df3316799b489847.js b/public/charting_library/static/bundles/31.d081df3316799b489847.js new file mode 100644 index 0000000..9b84033 --- /dev/null +++ b/public/charting_library/static/bundles/31.d081df3316799b489847.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js b/public/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js new file mode 100644 index 0000000..bae5831 --- /dev/null +++ b/public/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.css b/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.css new file mode 100644 index 0000000..c941075 --- /dev/null +++ b/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.css @@ -0,0 +1 @@ +.errors-C3KBJakt-{position:absolute;z-index:2;margin-bottom:1px;padding:10px 15px;color:#fff;opacity:0;text-align:center;border-radius:3px;background-color:#2a2e39;pointer-events:none;transform:translateY(-3px);box-sizing:border-box}html.theme-dark .errors-C3KBJakt-{background-color:#363c4e}.errors-C3KBJakt-:empty{display:none}.errors-C3KBJakt-.show-2G4PY7Uu-{opacity:1}.errors-C3KBJakt- .error-3G4k6KUC-{font-size:12px;line-height:1.4;text-transform:none}.clock-3pqBsiNm-{display:flex;flex-direction:column;border-radius:3px;background-color:#fff;box-shadow:0 2px 4px 0 rgba(107,121,136,.4)}html.theme-dark .clock-3pqBsiNm-{background-color:#1e222d;box-shadow:0 2px 4px 0 #000}.header-pTWMGSpm-{flex:0 0 50px;height:50px;box-sizing:border-box;font-size:24px;line-height:1;text-align:center;padding:10px 0;border-bottom:1px solid;border-bottom-color:#eceff2;color:#262b3e}html.theme-dark .header-pTWMGSpm-{color:#c5cbce;border-bottom-color:#363c4e}.header-pTWMGSpm- .number-9PC9lvyt-{padding:0 3px;cursor:pointer}.header-pTWMGSpm- .number-9PC9lvyt-.active-1sonmMLV-{color:#2196f3}.body-2Q-g3GDd-{padding:10px;background:#f7f8fa;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center}html.theme-dark .body-2Q-g3GDd-{background:#1c2030}.clockFace-eHYbqh-S-{position:relative;width:200px;height:200px;border-radius:50%;box-sizing:border-box;margin:0 auto;background:#fff}html.theme-dark .clockFace-eHYbqh-S-{background:#262b3e}.clockFace-eHYbqh-S- div{position:absolute;width:100%;height:100%}.clockFace-eHYbqh-S- .face-2iCoBAOV-{position:absolute;top:0;left:0;border-radius:50%;font-size:15px;pointer-events:none}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-{position:absolute;width:28px;height:28px;margin-top:-14px;margin-left:-14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border-radius:50%;display:flex;align-items:center;text-align:center;pointer-events:all;color:#262b3e;transition:background-color 60ms ease}html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-{color:#c5cbce}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt->span{flex:1 1 auto}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:hover{background-color:rgba(247,248,250,.5)}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:hover{background-color:rgba(28,32,48,.5)}}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:active{background-color:#f7f8fa}html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:active{background-color:#1c2030}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-.inner-1mVlhYbe-{font-size:120%}.clockFace-eHYbqh-S- .hand-2ZG8pJQb-{position:absolute;display:block;pointer-events:none;bottom:50%;left:50%;width:1px;margin-left:-.5px;transform-origin:50% 100%;background:#2196f3}.clockFace-eHYbqh-S- .hand-2ZG8pJQb- .knob-31dEppHa-{position:absolute;top:-26px;left:50%;width:26px;height:26px;margin-left:-13px;box-sizing:border-box;border-radius:50%;border:2px solid;border-color:#2196f3}html.theme-dark .clockFace-eHYbqh-S- .hand-2ZG8pJQb- .knob-31dEppHa-{border-color:#1976d2}.clockFace-eHYbqh-S- .centerDot-210Fo0oV-{position:absolute;top:50%;left:50%;width:4px;height:4px;margin-top:-2px;margin-left:-2px;content:"";border-radius:50%;background:#2196f3} \ No newline at end of file diff --git a/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.rtl.css b/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.rtl.css new file mode 100644 index 0000000..435de72 --- /dev/null +++ b/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.rtl.css @@ -0,0 +1 @@ +.errors-C3KBJakt-{position:absolute;z-index:2;margin-bottom:1px;padding:10px 15px;color:#fff;opacity:0;text-align:center;border-radius:3px;background-color:#2a2e39;pointer-events:none;transform:translateY(-3px);box-sizing:border-box}html.theme-dark .errors-C3KBJakt-{background-color:#363c4e}.errors-C3KBJakt-:empty{display:none}.errors-C3KBJakt-.show-2G4PY7Uu-{opacity:1}.errors-C3KBJakt- .error-3G4k6KUC-{font-size:12px;line-height:1.4;text-transform:none}.clock-3pqBsiNm-{display:flex;flex-direction:column;border-radius:3px;background-color:#fff;box-shadow:0 2px 4px 0 rgba(107,121,136,.4)}html.theme-dark .clock-3pqBsiNm-{background-color:#1e222d;box-shadow:0 2px 4px 0 #000}.header-pTWMGSpm-{flex:0 0 50px;height:50px;box-sizing:border-box;font-size:24px;line-height:1;text-align:center;padding:10px 0;border-bottom:1px solid;border-bottom-color:#eceff2;color:#262b3e}html.theme-dark .header-pTWMGSpm-{color:#c5cbce;border-bottom-color:#363c4e}.header-pTWMGSpm- .number-9PC9lvyt-{padding:0 3px;cursor:pointer}.header-pTWMGSpm- .number-9PC9lvyt-.active-1sonmMLV-{color:#2196f3}.body-2Q-g3GDd-{padding:10px;background:#f7f8fa;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center}html.theme-dark .body-2Q-g3GDd-{background:#1c2030}.clockFace-eHYbqh-S-{position:relative;width:200px;height:200px;border-radius:50%;box-sizing:border-box;margin:0 auto;background:#fff}html.theme-dark .clockFace-eHYbqh-S-{background:#262b3e}.clockFace-eHYbqh-S- div{position:absolute;width:100%;height:100%}.clockFace-eHYbqh-S- .face-2iCoBAOV-{position:absolute;top:0;right:0;border-radius:50%;font-size:15px;pointer-events:none}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-{position:absolute;width:28px;height:28px;margin-top:-14px;margin-left:-14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border-radius:50%;display:flex;align-items:center;text-align:center;pointer-events:all;color:#262b3e;transition:background-color 60ms ease}html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-{color:#c5cbce}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt->span{flex:1 1 auto}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:hover{background-color:rgba(247,248,250,.5)}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:hover{background-color:rgba(28,32,48,.5)}}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:active{background-color:#f7f8fa}html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:active{background-color:#1c2030}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-.inner-1mVlhYbe-{font-size:120%}.clockFace-eHYbqh-S- .hand-2ZG8pJQb-{position:absolute;display:block;pointer-events:none;bottom:50%;right:50%;width:1px;margin-right:-.5px;transform-origin:50% 100%;background:#2196f3}.clockFace-eHYbqh-S- .hand-2ZG8pJQb- .knob-31dEppHa-{position:absolute;top:-26px;right:50%;width:26px;height:26px;margin-right:-13px;box-sizing:border-box;border-radius:50%;border:2px solid;border-color:#2196f3}html.theme-dark .clockFace-eHYbqh-S- .hand-2ZG8pJQb- .knob-31dEppHa-{border-color:#1976d2}.clockFace-eHYbqh-S- .centerDot-210Fo0oV-{position:absolute;top:50%;right:50%;width:4px;height:4px;margin-top:-2px;margin-right:-2px;content:"";border-radius:50%;background:#2196f3} \ No newline at end of file diff --git a/public/charting_library/static/bundles/33.4a74c62095be3045c87e.js b/public/charting_library/static/bundles/33.4a74c62095be3045c87e.js new file mode 100644 index 0000000..28ac26b --- /dev/null +++ b/public/charting_library/static/bundles/33.4a74c62095be3045c87e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/33.ac320c107772f8e72252.css b/public/charting_library/static/bundles/33.ac320c107772f8e72252.css new file mode 100644 index 0000000..d66f779 --- /dev/null +++ b/public/charting_library/static/bundles/33.ac320c107772f8e72252.css @@ -0,0 +1 @@ +.ghost-3yO24wIn-.primary-1rSzOFdX-{color:#2196f3;border:1px solid #2196f3;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.primary-1rSzOFdX-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.success-1qQ3_tEI-{color:#3cbc98;border:1px solid #3cbc98;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.success-1qQ3_tEI-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.danger-jKTO4wDd-{color:#ff4a68;border:1px solid #ff4a68;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.danger-jKTO4wDd-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.warning-2uDfz7Zc-{color:#f89e30;border:1px solid #f89e30;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.warning-2uDfz7Zc-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.secondary-3ll81brZ-{color:#757575;border:1px solid #e9eff2;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.secondary-3ll81brZ-:hover{color:#757575;transition-duration:.06s}}.button-2O-nMUcz-{display:inline-flex;justify-content:center;align-items:center;padding:0;position:relative;min-width:35px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;white-space:nowrap;outline:0;cursor:pointer;overflow:hidden;box-sizing:border-box;line-height:32px;font-size:14px;transition:background-color .35s ease,border-color .35s ease,color .35s ease;border-radius:2px;border:1px solid transparent}.button-2O-nMUcz-.withPadding-_5CJoO5q-{padding:0 22px}.button-2O-nMUcz-+.button-2O-nMUcz-{margin-left:15px}.hiddenText-3qcN5Wif-{visibility:hidden;flex:1 1 auto}.text-2KOWx3rB-{position:absolute;left:0;right:0;bottom:0;top:0;text-align:center;display:inline-flex;justify-content:center;align-items:center;transition:opacity .175s ease,transform .175s ease}.loader-1CC-1F8J-{display:inline-block;transition:opacity .35s ease;opacity:1}.base-2d4XFcnI-{color:#757575;border-color:#adaeb0;background-color:transparent}html.theme-dark .base-2d4XFcnI-{border-color:#4f5966;color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.base-2d4XFcnI-:hover{background-color:#f2f2f2;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .base-2d4XFcnI-:hover{background-color:#1c2030}}.base-2d4XFcnI-:active{background-color:#ececec;transition-duration:.06s}html.theme-dark .base-2d4XFcnI-:active{background-color:#262b3e}.primary-1rSzOFdX-{color:#fff;border-color:#2196f3;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.primary-1rSzOFdX-:hover{background-color:#1e88e5;transition-duration:.06s}}.primary-1rSzOFdX-:active{background-color:#049ddc;transition-duration:.06s}.success-1qQ3_tEI-{color:#fff;border-color:#3cbc98;background-color:#3cbc98}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.success-1qQ3_tEI-:hover{background-color:#38b395;transition-duration:.06s}}.success-1qQ3_tEI-:active{background-color:#00a97f;transition-duration:.06s}.danger-jKTO4wDd-{color:#fff;border-color:#ff4a68;background-color:#ff4a68}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.danger-jKTO4wDd-:hover{background-color:#f24965;transition-duration:.06s}}.danger-jKTO4wDd-:active{background-color:#ff173e;transition-duration:.06s}.warning-2uDfz7Zc-{color:#fff;border-color:#f89e30;background-color:#f89e30}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.warning-2uDfz7Zc-:hover{background-color:#f79217;transition-duration:.06s}}.warning-2uDfz7Zc-:active{background-color:#d47807;transition-duration:.06s}.secondary-3ll81brZ-{color:#757575;border-color:#eceff2;background-color:#eceff2}html.theme-dark .secondary-3ll81brZ-{background-color:#363c4e;border-color:#363c4e;color:#c5cbce}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.secondary-3ll81brZ-:hover{background-color:#dce6ea;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .secondary-3ll81brZ-:hover{background-color:#4f5966}}.secondary-3ll81brZ-:active{background-color:#cfdce3;transition-duration:.06s}html.theme-dark .secondary-3ll81brZ-:active{background-color:#4f5966}.secondaryScript-2iIeFIWW-{color:#fff;border-color:#9db2bd;background-color:#9db2bd}html.theme-dark .secondaryScript-2iIeFIWW-{background-color:#363c4e;border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.secondaryScript-2iIeFIWW-:hover{background-color:#9db2bd;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .secondaryScript-2iIeFIWW-:hover{background-color:#363c4e}}.secondaryScript-2iIeFIWW-:active{background-color:#cfdce3;transition-duration:.06s}html.theme-dark .secondaryScript-2iIeFIWW-:active{background-color:#363c4e}.link-2sR0CShp-{color:#2196f3;transition:color .35s ease;background-color:transparent}html.theme-dark .link-2sR0CShp-{color:#1976d2}.link-2sR0CShp-:visited{color:#2196f3;fill:#2196f3}html.theme-dark .link-2sR0CShp-:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.link-2sR0CShp-:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}.link-2sR0CShp-:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}.xsmall-1aiWe3Hs-{line-height:17px;border-radius:1px;font-size:11px;font-weight:400}.xsmall-1aiWe3Hs-.withPadding-_5CJoO5q-{padding:0 7px}.xsmall-1aiWe3Hs-+.xsmall-1aiWe3Hs-{margin-left:10px}.xsmall-1aiWe3Hs-.rounded-3qEdyiAz-{border-radius:10px}.small-2-nQtW8O-{line-height:25px;font-size:13px}.small-2-nQtW8O-.withPadding-_5CJoO5q-{padding:0 12px}.small-2-nQtW8O-+.small-2-nQtW8O-{margin-left:10px}.small-2-nQtW8O-.rounded-3qEdyiAz-{border-radius:14px}.large-33HYhX8D-{line-height:46px;font-size:17px;letter-spacing:1px}.large-33HYhX8D-.withPadding-_5CJoO5q-{padding:0 30px}.large-33HYhX8D-.rounded-3qEdyiAz-{border-radius:24px}.grouped-1WsMjajI-:not(:first-child):not(:last-child){border-radius:0}.grouped-1WsMjajI-+.grouped-1WsMjajI-{margin-left:-1px}.grouped-1WsMjajI-:first-child{margin-left:0}.grouped-1WsMjajI-:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.grouped-1WsMjajI-:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.growable-F6tv8R_j-{flex:1}.growable-F6tv8R_j-.withPadding-_5CJoO5q-{padding:0}.active-2UxWxOgk-:active{transform:translateY(1px)}.disabled-3u0ULovv-{color:#adaeb0;border-color:#f1f3f6;background-color:#f1f3f6;cursor:default}html.theme-dark .disabled-3u0ULovv-{background-color:#262b3e;border-color:#262b3e;color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.disabled-3u0ULovv-:hover{background-color:#f1f3f6;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .disabled-3u0ULovv-:hover{background-color:#262b3e}}.disabled-3u0ULovv-:active{background-color:#f1f3f6;transition-duration:.06s}html.theme-dark .disabled-3u0ULovv-:active{background-color:#262b3e}.disabled-3u0ULovv-:active{transform:none}.rounded-3qEdyiAz-{border-radius:17px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/33.ac320c107772f8e72252.rtl.css b/public/charting_library/static/bundles/33.ac320c107772f8e72252.rtl.css new file mode 100644 index 0000000..7a6d8ad --- /dev/null +++ b/public/charting_library/static/bundles/33.ac320c107772f8e72252.rtl.css @@ -0,0 +1 @@ +.ghost-3yO24wIn-.primary-1rSzOFdX-{color:#2196f3;border:1px solid #2196f3;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.primary-1rSzOFdX-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.success-1qQ3_tEI-{color:#3cbc98;border:1px solid #3cbc98;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.success-1qQ3_tEI-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.danger-jKTO4wDd-{color:#ff4a68;border:1px solid #ff4a68;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.danger-jKTO4wDd-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.warning-2uDfz7Zc-{color:#f89e30;border:1px solid #f89e30;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.warning-2uDfz7Zc-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.secondary-3ll81brZ-{color:#757575;border:1px solid #e9eff2;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.secondary-3ll81brZ-:hover{color:#757575;transition-duration:.06s}}.button-2O-nMUcz-{display:inline-flex;justify-content:center;align-items:center;padding:0;position:relative;min-width:35px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;white-space:nowrap;outline:0;cursor:pointer;overflow:hidden;box-sizing:border-box;line-height:32px;font-size:14px;transition:background-color .35s ease,border-color .35s ease,color .35s ease;border-radius:2px;border:1px solid transparent}.button-2O-nMUcz-.withPadding-_5CJoO5q-{padding:0 22px}.button-2O-nMUcz-+.button-2O-nMUcz-{margin-right:15px}.hiddenText-3qcN5Wif-{visibility:hidden;flex:1 1 auto}.text-2KOWx3rB-{position:absolute;right:0;left:0;bottom:0;top:0;text-align:center;display:inline-flex;justify-content:center;align-items:center;transition:opacity .175s ease,transform .175s ease}.loader-1CC-1F8J-{display:inline-block;transition:opacity .35s ease;opacity:1}.base-2d4XFcnI-{color:#757575;border-color:#adaeb0;background-color:transparent}html.theme-dark .base-2d4XFcnI-{border-color:#4f5966;color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.base-2d4XFcnI-:hover{background-color:#f2f2f2;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .base-2d4XFcnI-:hover{background-color:#1c2030}}.base-2d4XFcnI-:active{background-color:#ececec;transition-duration:.06s}html.theme-dark .base-2d4XFcnI-:active{background-color:#262b3e}.primary-1rSzOFdX-{color:#fff;border-color:#2196f3;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.primary-1rSzOFdX-:hover{background-color:#1e88e5;transition-duration:.06s}}.primary-1rSzOFdX-:active{background-color:#049ddc;transition-duration:.06s}.success-1qQ3_tEI-{color:#fff;border-color:#3cbc98;background-color:#3cbc98}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.success-1qQ3_tEI-:hover{background-color:#38b395;transition-duration:.06s}}.success-1qQ3_tEI-:active{background-color:#00a97f;transition-duration:.06s}.danger-jKTO4wDd-{color:#fff;border-color:#ff4a68;background-color:#ff4a68}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.danger-jKTO4wDd-:hover{background-color:#f24965;transition-duration:.06s}}.danger-jKTO4wDd-:active{background-color:#ff173e;transition-duration:.06s}.warning-2uDfz7Zc-{color:#fff;border-color:#f89e30;background-color:#f89e30}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.warning-2uDfz7Zc-:hover{background-color:#f79217;transition-duration:.06s}}.warning-2uDfz7Zc-:active{background-color:#d47807;transition-duration:.06s}.secondary-3ll81brZ-{color:#757575;border-color:#eceff2;background-color:#eceff2}html.theme-dark .secondary-3ll81brZ-{background-color:#363c4e;border-color:#363c4e;color:#c5cbce}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.secondary-3ll81brZ-:hover{background-color:#dce6ea;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .secondary-3ll81brZ-:hover{background-color:#4f5966}}.secondary-3ll81brZ-:active{background-color:#cfdce3;transition-duration:.06s}html.theme-dark .secondary-3ll81brZ-:active{background-color:#4f5966}.secondaryScript-2iIeFIWW-{color:#fff;border-color:#9db2bd;background-color:#9db2bd}html.theme-dark .secondaryScript-2iIeFIWW-{background-color:#363c4e;border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.secondaryScript-2iIeFIWW-:hover{background-color:#9db2bd;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .secondaryScript-2iIeFIWW-:hover{background-color:#363c4e}}.secondaryScript-2iIeFIWW-:active{background-color:#cfdce3;transition-duration:.06s}html.theme-dark .secondaryScript-2iIeFIWW-:active{background-color:#363c4e}.link-2sR0CShp-{color:#2196f3;transition:color .35s ease;background-color:transparent}html.theme-dark .link-2sR0CShp-{color:#1976d2}.link-2sR0CShp-:visited{color:#2196f3;fill:#2196f3}html.theme-dark .link-2sR0CShp-:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.link-2sR0CShp-:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}.link-2sR0CShp-:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}.xsmall-1aiWe3Hs-{line-height:17px;border-radius:1px;font-size:11px;font-weight:400}.xsmall-1aiWe3Hs-.withPadding-_5CJoO5q-{padding:0 7px}.xsmall-1aiWe3Hs-+.xsmall-1aiWe3Hs-{margin-right:10px}.xsmall-1aiWe3Hs-.rounded-3qEdyiAz-{border-radius:10px}.small-2-nQtW8O-{line-height:25px;font-size:13px}.small-2-nQtW8O-.withPadding-_5CJoO5q-{padding:0 12px}.small-2-nQtW8O-+.small-2-nQtW8O-{margin-right:10px}.small-2-nQtW8O-.rounded-3qEdyiAz-{border-radius:14px}.large-33HYhX8D-{line-height:46px;font-size:17px;letter-spacing:1px}.large-33HYhX8D-.withPadding-_5CJoO5q-{padding:0 30px}.large-33HYhX8D-.rounded-3qEdyiAz-{border-radius:24px}.grouped-1WsMjajI-:not(:first-child):not(:last-child){border-radius:0}.grouped-1WsMjajI-+.grouped-1WsMjajI-{margin-right:-1px}.grouped-1WsMjajI-:first-child{margin-right:0}.grouped-1WsMjajI-:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.grouped-1WsMjajI-:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0}.growable-F6tv8R_j-{flex:1}.growable-F6tv8R_j-.withPadding-_5CJoO5q-{padding:0}.active-2UxWxOgk-:active{transform:translateY(1px)}.disabled-3u0ULovv-{color:#adaeb0;border-color:#f1f3f6;background-color:#f1f3f6;cursor:default}html.theme-dark .disabled-3u0ULovv-{background-color:#262b3e;border-color:#262b3e;color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.disabled-3u0ULovv-:hover{background-color:#f1f3f6;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .disabled-3u0ULovv-:hover{background-color:#262b3e}}.disabled-3u0ULovv-:active{background-color:#f1f3f6;transition-duration:.06s}html.theme-dark .disabled-3u0ULovv-:active{background-color:#262b3e}.disabled-3u0ULovv-:active{transform:none}.rounded-3qEdyiAz-{border-radius:17px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/34.17e0ce399a577f17ba55.js b/public/charting_library/static/bundles/34.17e0ce399a577f17ba55.js new file mode 100644 index 0000000..34f0a44 --- /dev/null +++ b/public/charting_library/static/bundles/34.17e0ce399a577f17ba55.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.css b/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.css new file mode 100644 index 0000000..d723cd8 --- /dev/null +++ b/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.css @@ -0,0 +1 @@ +.tv-search-row{width:100%;position:relative;cursor:default;display:flex;border-bottom:1px solid;border-bottom-color:#dadde0}html.theme-dark .tv-search-row{border-bottom-color:#363c4e}.tv-search-row__input{background-color:#fff;box-sizing:border-box;width:100%;padding:9px 50px 9px 60px;min-height:50px;height:50px;margin:0;border:none}html.theme-dark .tv-search-row__input{background-color:#1e222d}@media screen and (max-width:767px){.tv-search-row__input{min-height:34px;height:34px;padding-left:50px;padding-right:40px}.feature-mobiletouch .tv-search-row__input{min-height:50px;height:50px}}.tv-search-row--without-controls .tv-search-row__input{padding-right:30px;padding-left:30px}@media screen and (max-width:767px){.tv-search-row--without-controls .tv-search-row__input{padding-left:20px;padding-right:20px}}.tv-search-row__input-reset{top:0;right:16px;bottom:0;width:36px;position:absolute;text-align:center;opacity:.5;cursor:pointer;transition:opacity .35s ease}.tv-search-row__input-reset:after{content:"";display:inline-block;vertical-align:middle;height:100%}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-search-row__input-reset:hover{opacity:1;transition-duration:.06s}}.tv-search-row__input-reset svg{display:inline-block;fill:#4a4a4a;width:9px;height:9px;vertical-align:middle}html.theme-dark .tv-search-row__input-reset svg{fill:#c5cbce}@media screen and (max-width:767px){.tv-search-row__input-reset{right:10px}}.tv-search-row__search-icon{position:absolute;display:block;top:50%;left:30px;margin-top:-9px;opacity:.8;pointer-events:none;transition:opacity .35s ease}@media screen and (max-width:767px){.tv-search-row__search-icon{left:20px}}.tv-search-row__search-icon svg{display:block;fill:#adaeb0;width:18px;height:18px;overflow:visible}html.theme-dark .tv-search-row__search-icon svg{fill:#4f5966}.tv-search-row--without-controls .tv-search-row__input-reset,.tv-search-row--without-controls .tv-search-row__search-icon{display:none} \ No newline at end of file diff --git a/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.rtl.css b/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.rtl.css new file mode 100644 index 0000000..136b0ca --- /dev/null +++ b/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.rtl.css @@ -0,0 +1 @@ +.tv-search-row{width:100%;position:relative;cursor:default;display:flex;border-bottom:1px solid;border-bottom-color:#dadde0}html.theme-dark .tv-search-row{border-bottom-color:#363c4e}.tv-search-row__input{background-color:#fff;box-sizing:border-box;width:100%;padding:9px 60px 9px 50px;min-height:50px;height:50px;margin:0;border:none}html.theme-dark .tv-search-row__input{background-color:#1e222d}@media screen and (max-width:767px){.tv-search-row__input{min-height:34px;height:34px;padding-right:50px;padding-left:40px}.feature-mobiletouch .tv-search-row__input{min-height:50px;height:50px}}.tv-search-row--without-controls .tv-search-row__input{padding-left:30px;padding-right:30px}@media screen and (max-width:767px){.tv-search-row--without-controls .tv-search-row__input{padding-right:20px;padding-left:20px}}.tv-search-row__input-reset{top:0;left:16px;bottom:0;width:36px;position:absolute;text-align:center;opacity:.5;cursor:pointer;transition:opacity .35s ease}.tv-search-row__input-reset:after{content:"";display:inline-block;vertical-align:middle;height:100%}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-search-row__input-reset:hover{opacity:1;transition-duration:.06s}}.tv-search-row__input-reset svg{display:inline-block;fill:#4a4a4a;width:9px;height:9px;vertical-align:middle}html.theme-dark .tv-search-row__input-reset svg{fill:#c5cbce}@media screen and (max-width:767px){.tv-search-row__input-reset{left:10px}}.tv-search-row__search-icon{position:absolute;display:block;top:50%;right:30px;margin-top:-9px;opacity:.8;pointer-events:none;transition:opacity .35s ease}@media screen and (max-width:767px){.tv-search-row__search-icon{right:20px}}.tv-search-row__search-icon svg{display:block;fill:#adaeb0;width:18px;height:18px;overflow:visible}html.theme-dark .tv-search-row__search-icon svg{fill:#4f5966}.tv-search-row--without-controls .tv-search-row__input-reset,.tv-search-row--without-controls .tv-search-row__search-icon{display:none} \ No newline at end of file diff --git a/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.css b/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.css new file mode 100644 index 0000000..343e562 --- /dev/null +++ b/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.css @@ -0,0 +1 @@ +.tv-tabbed-dialog{background-color:#fff;color:#4a4a4a}html.theme-dark .tv-tabbed-dialog{color:#c5cbce;background-color:#1e222d}.tv-tabbed-dialog__header{display:flex;position:relative;padding-top:0;padding-left:0;padding-bottom:0;border-bottom:none!important;margin-bottom:-1px;z-index:6}.tv-tabbed-dialog__bottom-border{position:absolute;left:0;right:0;bottom:0;height:1px;background-color:#dadde0;z-index:-1}html.theme-dark .tv-tabbed-dialog__bottom-border{background-color:#363c4e}.tv-tabbed-dialog__tab-page{height:100%;display:none}.tv-tabbed-dialog__tab-page.active{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;display:block}.tv-tabbed-dialog__close{z-index:6;top:5px}.tv-tabbed-dialog__tabs{width:100%;flex-shrink:1;height:53px}.tv-tabbed-dialog__custom-controls{margin-left:10px;flex-shrink:0}.tv-tabbed-dialog__tabs-arrow-left:before,.tv-tabbed-dialog__tabs-arrow-right:before{content:"";position:absolute;bottom:1px;left:0;right:0;height:1px}.tv-tabbed-dialog__tabs-arrow-left:before{background:linear-gradient(90deg,#dadde0 0,#dadde0 85%,hsla(0,0%,100%,0))}.tv-tabbed-dialog__tabs-arrow-right:before{background:linear-gradient(270deg,#dadde0 0,#dadde0 85%,hsla(0,0%,100%,0))} \ No newline at end of file diff --git a/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.rtl.css b/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.rtl.css new file mode 100644 index 0000000..04972da --- /dev/null +++ b/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.rtl.css @@ -0,0 +1 @@ +.tv-tabbed-dialog{background-color:#fff;color:#4a4a4a}html.theme-dark .tv-tabbed-dialog{color:#c5cbce;background-color:#1e222d}.tv-tabbed-dialog__header{display:flex;position:relative;padding-top:0;padding-right:0;padding-bottom:0;border-bottom:none!important;margin-bottom:-1px;z-index:6}.tv-tabbed-dialog__bottom-border{position:absolute;right:0;left:0;bottom:0;height:1px;background-color:#dadde0;z-index:-1}html.theme-dark .tv-tabbed-dialog__bottom-border{background-color:#363c4e}.tv-tabbed-dialog__tab-page{height:100%;display:none}.tv-tabbed-dialog__tab-page.active{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;display:block}.tv-tabbed-dialog__close{z-index:6;top:5px}.tv-tabbed-dialog__tabs{width:100%;flex-shrink:1;height:53px}.tv-tabbed-dialog__custom-controls{margin-right:10px;flex-shrink:0}.tv-tabbed-dialog__tabs-arrow-left:before,.tv-tabbed-dialog__tabs-arrow-right:before{content:"";position:absolute;bottom:1px;right:0;left:0;height:1px}.tv-tabbed-dialog__tabs-arrow-left:before{background:linear-gradient(270deg,#dadde0 0,#dadde0 85%,hsla(0,0%,100%,0))}.tv-tabbed-dialog__tabs-arrow-right:before{background:linear-gradient(90deg,#dadde0 0,#dadde0 85%,hsla(0,0%,100%,0))} \ No newline at end of file diff --git a/public/charting_library/static/bundles/35.58433cec10095e3c1b7e.js b/public/charting_library/static/bundles/35.58433cec10095e3c1b7e.js new file mode 100644 index 0000000..8cc7499 --- /dev/null +++ b/public/charting_library/static/bundles/35.58433cec10095e3c1b7e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js b/public/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js new file mode 100644 index 0000000..5222a3a --- /dev/null +++ b/public/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.css b/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.css new file mode 100644 index 0000000..78806e4 --- /dev/null +++ b/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.css @@ -0,0 +1 @@ +.tv-text-input{color:#4a4a4a;margin:0;border:1px solid;border-color:#dadde0;display:inline-block;overflow:hidden;width:100px;height:26px;vertical-align:top;padding:0 5px}html.theme-dark .tv-text-input{border-color:#363c4e;color:#c5cbce}.tv-text-input:focus{border-color:#2196f3}html.theme-dark .tv-text-input:focus{border-color:#1976d2}.tv-text-input.inset{background:#fff}html.theme-dark .tv-text-input.inset{background:#131722}.tv-text-input.ticker{height:25px;width:60px}.tv-text-input.ticker--longer-sign_8{width:72px}.tv-text-input.ticker--evenlonger{width:90px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.rtl.css b/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.rtl.css new file mode 100644 index 0000000..72a7a5e --- /dev/null +++ b/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.rtl.css @@ -0,0 +1 @@ +.tv-text-input{color:#4a4a4a;margin:0;border:1px solid;border-color:#dadde0;display:inline-block;overflow:hidden;width:100px;height:26px;vertical-align:top;padding:0 5px;direction:ltr;text-align:right}html.theme-dark .tv-text-input{border-color:#363c4e;color:#c5cbce}.tv-text-input:focus{border-color:#2196f3}html.theme-dark .tv-text-input:focus{border-color:#1976d2}.tv-text-input.inset{background:#fff}html.theme-dark .tv-text-input.inset{background:#131722}.tv-text-input.ticker{height:25px;width:60px}.tv-text-input.ticker--longer-sign_8{width:72px}.tv-text-input.ticker--evenlonger{width:90px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css b/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css new file mode 100644 index 0000000..d500f6c --- /dev/null +++ b/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css @@ -0,0 +1 @@ +.star-uhAI7sV4-{display:block;opacity:.7;box-sizing:border-box;transition:opacity .35s ease;padding:4px;margin:-4px}.star-uhAI7sV4- svg{display:block;fill:currentColor;pointer-events:none}.star-uhAI7sV4-.checked-2bhy04CF- svg{fill:#ffca3b}.star-uhAI7sV4-:active{opacity:1;transition-duration:60ms}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.star-uhAI7sV4-:hover{opacity:1;transition-duration:60ms}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css b/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css new file mode 100644 index 0000000..d500f6c --- /dev/null +++ b/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css @@ -0,0 +1 @@ +.star-uhAI7sV4-{display:block;opacity:.7;box-sizing:border-box;transition:opacity .35s ease;padding:4px;margin:-4px}.star-uhAI7sV4- svg{display:block;fill:currentColor;pointer-events:none}.star-uhAI7sV4-.checked-2bhy04CF- svg{fill:#ffca3b}.star-uhAI7sV4-:active{opacity:1;transition-duration:60ms}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.star-uhAI7sV4-:hover{opacity:1;transition-duration:60ms}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/37.1735365b01406a8d696d.js b/public/charting_library/static/bundles/37.1735365b01406a8d696d.js new file mode 100644 index 0000000..7f6fcf6 --- /dev/null +++ b/public/charting_library/static/bundles/37.1735365b01406a8d696d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.css b/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.css new file mode 100644 index 0000000..b6244f2 --- /dev/null +++ b/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.css @@ -0,0 +1 @@ +.wrap-5DN0XnS4-{position:relative;direction:ltr;width:100%;height:100%;overflow:hidden}.wrap-5DN0XnS4- svg{display:block}.wrapWithArrowsOuting-1OPNi0IP-{width:calc(100% - 40px);margin-left:auto;margin-right:auto;overflow:visible}.wrapOverflow-2FHnhKaN-{overflow:hidden;width:100%}.scrollWrap-nAnkzkWd-{position:relative;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.scrollWrap-nAnkzkWd-::-webkit-scrollbar{width:5px;height:5px}.scrollWrap-nAnkzkWd-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .scrollWrap-nAnkzkWd-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.scrollWrap-nAnkzkWd-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-{padding-bottom:100px;margin-bottom:-100px;-ms-overflow-style:none}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-.sb-scrollbar-wrap{display:none}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar{display:none;width:0;height:0}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar-thumb,.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar-track{display:none}.icon-1nfNqIRh-{display:block;transition:transform 60ms ease}.scrollLeft-2cl_k1e7-,.scrollRight-2SEqCpTf-{display:flex;position:absolute;top:0;height:100%;width:24px;background-color:rgba(38,43,62,.7);color:#fff;transition:background-color .35s ease,transform .11666667s cubic-bezier(.55,.055,.675,.19);flex-direction:column;justify-content:center;align-items:center}.scrollLeft-2cl_k1e7-:active,.scrollRight-2SEqCpTf-:active{transition:background-color 58.33333ms ease,transform .11666667s cubic-bezier(.215,.61,.355,1)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.scrollLeft-2cl_k1e7-:hover,.scrollRight-2SEqCpTf-:hover{transition:background-color 58.33333ms ease,transform .11666667s cubic-bezier(.215,.61,.355,1)}}.scrollLeft-2cl_k1e7-:active .icon-1nfNqIRh-,.scrollRight-2SEqCpTf-:active .icon-1nfNqIRh-{transform:translateY(1px)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.scrollLeft-2cl_k1e7-:hover .icon-1nfNqIRh-,.scrollRight-2SEqCpTf-:hover .icon-1nfNqIRh-{transform:translateY(1px)}}.scrollLeft-2cl_k1e7-.isVisible-Stm3XOHb-,.scrollRight-2SEqCpTf-.isVisible-Stm3XOHb-{transform:translateX(0);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.scrollLeft-2cl_k1e7-{left:0;transform:translateX(-100%)}.scrollLeft-2cl_k1e7- .iconWrap-1E4GEP7h-{transform:rotate(90deg)}.scrollRight-2SEqCpTf-{right:0;transform:translateX(100%)}.scrollRight-2SEqCpTf- .iconWrap-1E4GEP7h-{transform:rotate(-90deg)}.fadeLeft-244lj3pA-,.fadeRight-1JnS42hI-{position:absolute;pointer-events:none;width:50px;height:100%;top:0}.fadeLeft-244lj3pA-.isVisible-Stm3XOHb-,.fadeRight-1JnS42hI-.isVisible-Stm3XOHb-{transform:translateX(0);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.fadeLeft-244lj3pA-{left:0;background-image:linear-gradient(270deg,hsla(0,0%,100%,0),#fff);transform:translateX(-100%)}html.theme-dark .fadeLeft-244lj3pA-{background-image:linear-gradient(270deg,rgba(19,23,34,0),#131722)}.fadeRight-1JnS42hI-{right:0;background-image:linear-gradient(90deg,hsla(0,0%,100%,0),#fff);transform:translateX(100%)}html.theme-dark .fadeRight-1JnS42hI-{background-image:linear-gradient(90deg,rgba(19,23,34,0),#131722)} \ No newline at end of file diff --git a/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.rtl.css b/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.rtl.css new file mode 100644 index 0000000..43d285f --- /dev/null +++ b/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.rtl.css @@ -0,0 +1 @@ +.wrap-5DN0XnS4-{position:relative;direction:rtl;width:100%;height:100%;overflow:hidden}.wrap-5DN0XnS4- svg{display:block}.wrapWithArrowsOuting-1OPNi0IP-{width:calc(100% - 40px);margin-right:auto;margin-left:auto;overflow:visible}.wrapOverflow-2FHnhKaN-{overflow:hidden;width:100%}.scrollWrap-nAnkzkWd-{position:relative;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.scrollWrap-nAnkzkWd-::-webkit-scrollbar{width:5px;height:5px}.scrollWrap-nAnkzkWd-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .scrollWrap-nAnkzkWd-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.scrollWrap-nAnkzkWd-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-{padding-bottom:100px;margin-bottom:-100px;-ms-overflow-style:none}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-.sb-scrollbar-wrap{display:none}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar{display:none;width:0;height:0}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar-thumb,.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar-track{display:none}.icon-1nfNqIRh-{display:block;transition:transform 60ms ease}.scrollLeft-2cl_k1e7-,.scrollRight-2SEqCpTf-{display:flex;position:absolute;top:0;height:100%;width:24px;background-color:rgba(38,43,62,.7);color:#fff;transition:background-color .35s ease,transform .11666667s cubic-bezier(.55,.055,.675,.19);flex-direction:column;justify-content:center;align-items:center}.scrollLeft-2cl_k1e7-:active,.scrollRight-2SEqCpTf-:active{transition:background-color 58.33333ms ease,transform .11666667s cubic-bezier(.215,.61,.355,1)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.scrollLeft-2cl_k1e7-:hover,.scrollRight-2SEqCpTf-:hover{transition:background-color 58.33333ms ease,transform .11666667s cubic-bezier(.215,.61,.355,1)}}.scrollLeft-2cl_k1e7-:active .icon-1nfNqIRh-,.scrollRight-2SEqCpTf-:active .icon-1nfNqIRh-{transform:translateY(1px)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.scrollLeft-2cl_k1e7-:hover .icon-1nfNqIRh-,.scrollRight-2SEqCpTf-:hover .icon-1nfNqIRh-{transform:translateY(1px)}}.scrollLeft-2cl_k1e7-.isVisible-Stm3XOHb-,.scrollRight-2SEqCpTf-.isVisible-Stm3XOHb-{transform:translateX(0);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.scrollLeft-2cl_k1e7-{left:0;transform:translateX(-100%)}.scrollLeft-2cl_k1e7- .iconWrap-1E4GEP7h-{transform:rotate(90deg)}.scrollRight-2SEqCpTf-{right:0;transform:translateX(100%)}.scrollRight-2SEqCpTf- .iconWrap-1E4GEP7h-{transform:rotate(-90deg)}.fadeLeft-244lj3pA-,.fadeRight-1JnS42hI-{position:absolute;pointer-events:none;width:50px;height:100%;top:0}.fadeLeft-244lj3pA-.isVisible-Stm3XOHb-,.fadeRight-1JnS42hI-.isVisible-Stm3XOHb-{transform:translateX(0);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.fadeLeft-244lj3pA-{right:0;background-image:linear-gradient(90deg,hsla(0,0%,100%,0),#fff);transform:translateX(100%)}html.theme-dark .fadeLeft-244lj3pA-{background-image:linear-gradient(90deg,rgba(19,23,34,0),#131722)}.fadeRight-1JnS42hI-{left:0;background-image:linear-gradient(270deg,hsla(0,0%,100%,0),#fff);transform:translateX(-100%)}html.theme-dark .fadeRight-1JnS42hI-{background-image:linear-gradient(270deg,rgba(19,23,34,0),#131722)} \ No newline at end of file diff --git a/public/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js b/public/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js new file mode 100644 index 0000000..2bf9df0 --- /dev/null +++ b/public/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.css b/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.css new file mode 100644 index 0000000..3efdd28 --- /dev/null +++ b/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.css @@ -0,0 +1 @@ +.tabs-1LGqoVz6-{display:flex;position:relative;width:100%}.tab-1Yr0rq0J-{flex:1 1;padding:13px 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;border-bottom:1px solid;border-color:#e1ecf2;transition:color .35s ease;color:#131722}html.theme-dark .tab-1Yr0rq0J-{color:#b2b5be;border-color:#363c4e}.tab-1Yr0rq0J-.noBorder-oc3HwerO-{border-bottom:0}.tab-1Yr0rq0J-.disabled-s8cEYElA-{color:#eceff2}.tab-1Yr0rq0J-.active-37sipdzm-{color:#2196f3}html.theme-dark .tab-1Yr0rq0J-.active-37sipdzm-{color:#1976d2}.defaultCursor-Np9BHjTg-{cursor:default}.slider-1-X4lOmE-{position:absolute;bottom:0;left:0;height:3px;background-color:#2196f3;transition-timing-function:cubic-bezier(.215,.61,.355,1)}html.theme-dark .slider-1-X4lOmE-{background-color:#1976d2}.content-2asssfGq-{width:100%} \ No newline at end of file diff --git a/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.rtl.css b/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.rtl.css new file mode 100644 index 0000000..3efdd28 --- /dev/null +++ b/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.rtl.css @@ -0,0 +1 @@ +.tabs-1LGqoVz6-{display:flex;position:relative;width:100%}.tab-1Yr0rq0J-{flex:1 1;padding:13px 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;border-bottom:1px solid;border-color:#e1ecf2;transition:color .35s ease;color:#131722}html.theme-dark .tab-1Yr0rq0J-{color:#b2b5be;border-color:#363c4e}.tab-1Yr0rq0J-.noBorder-oc3HwerO-{border-bottom:0}.tab-1Yr0rq0J-.disabled-s8cEYElA-{color:#eceff2}.tab-1Yr0rq0J-.active-37sipdzm-{color:#2196f3}html.theme-dark .tab-1Yr0rq0J-.active-37sipdzm-{color:#1976d2}.defaultCursor-Np9BHjTg-{cursor:default}.slider-1-X4lOmE-{position:absolute;bottom:0;left:0;height:3px;background-color:#2196f3;transition-timing-function:cubic-bezier(.215,.61,.355,1)}html.theme-dark .slider-1-X4lOmE-{background-color:#1976d2}.content-2asssfGq-{width:100%} \ No newline at end of file diff --git a/public/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js b/public/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js new file mode 100644 index 0000000..bcd80d7 --- /dev/null +++ b/public/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/4.80bf1a925965757be6d4.js b/public/charting_library/static/bundles/4.80bf1a925965757be6d4.js new file mode 100644 index 0000000..9261d87 --- /dev/null +++ b/public/charting_library/static/bundles/4.80bf1a925965757be6d4.js @@ -0,0 +1,4 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"56W2":function(e,t,s){(function(t){var s;s=void 0!==t?t:this,e.exports=function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var t=function(e){var t,s,n,i,o,l;if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(t=String(e),s=t.length,n=-1,o="",l=t.charCodeAt(0);++n=1&&i<=31||127==i||0==n&&i>=48&&i<=57||1==n&&i>=48&&i<=57&&45==l?"\\"+i.toString(16)+" ":0==n&&1==s&&45==i||!(i>=128||45==i||95==i||i>=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122)?"\\"+t.charAt(n):t.charAt(n):o+="�";return o};return e.CSS||(e.CSS={}),e.CSS.escape=t,t}(s)}).call(this,s("yLpj"))},Gs9W:function(e,t,s){},jgM0:function(e,t,s){"use strict";var n=s("56W2");s("Gs9W"),function(e,t){function s(){this._state=[],this._defaults={classHolder:"sbHolder",classHolderDisabled:"sbHolderDisabled",classHolderOpen:"sbHolderOpen",classSelector:"sbSelector",classOptions:"sbOptions",classGroup:"sbGroup",classSub:"sbSub",classDisabled:"sbDisabled",classToggleOpen:"sbToggleOpen",classToggle:"sbToggle",classSeparator:"sbSeparator",useCustomPrependWithSelector:"",customPrependSelectorClass:"",speed:200,slidesUp:!1,effect:"slide",onChange:null,beforeOpen:null,onOpen:null,onClose:null}}function i(t,s,n,i){function o(){s.removeClass(t.settings.customPrependSelectorClass),t._lastSelectorPrepend&&(t._lastSelectorPrepend.remove(),delete t._lastSelectorPrepend),n.data("custom-option-prepend")&&(t.settings.customPrependSelectorClass&&s.addClass(t.settings.customPrependSelectorClass),t._lastSelectorPrepend=e(n.data("custom-option-prepend")).clone(),s[t.settings.useCustomPrependWithSelector](t._lastSelectorPrepend))}t.settings.useCustomPrependWithSelector&&(i?t._onAttachCallback=o:o())}e.extend(s.prototype,{_refreshSelectbox:function(e,t){if(!e)return!1;var s=this._getInst(e);return null!=s&&(this._fillList(e,s,t),!0)},_isOpenSelectbox:function(e){return!!e&&this._getInst(e).isOpen},_isDisabledSelectbox:function(e){return!!e&&this._getInst(e).isDisabled},_attachSelectbox:function(t,s){function i(){var t,s=this.attr("id").split("_")[1];for(t in a._state)t!==s&&a._state.hasOwnProperty(t)&&e(":input[sb='"+t+"']")[0]&&a._closeSelectbox(e(":input[sb='"+t+"']")[0])}function o(s){l.children().each(function(n){var i;if(e(this).is(":selected")){if(38==s&&n>0)return i=e(l.children()[n-1]),a._changeSelectbox(t,i.val(),i.text()),!1;if(40==s&&n",{id:"sbHolder_"+c.uid,class:c.settings.classHolder}),(b=l.data("selectbox-css"))&&d.css(b),r=e("",{id:"sbSelector_"+c.uid,href:"#",class:c.settings.classSelector,click:function(s){s.preventDefault(),s.stopPropagation(),i.apply(e(this),[]);var n=e(this).attr("id").split("_")[1] +;a._state[n]?a._closeSelectbox(t):(a._openSelectbox(t),p.focus())},keyup:function(e){o(e.keyCode)}}),p=e("",{id:"sbToggle_"+c.uid,href:"#",class:c.settings.classToggle,click:function(s){s.preventDefault(),s.stopPropagation(),i.apply(e(this),[]);var n=e(this).attr("id").split("_")[1];a._state[n]?a._closeSelectbox(t):(a._openSelectbox(t),p.focus())},keyup:function(e){o(e.keyCode)}}),e('
').appendTo(p),p.appendTo(d),u=e("
").appendTo(t),i=$("").appendTo(this._table),$('").appendTo(this._table),$('").appendTo(this._table),$("
"),$("
").appendTo(e);return $('').appendTo(i)},r.prototype._labelToId=function(t){return"control"+t.replace(/(^| )\w/g,function(t){return"-"+t.trim().toLowerCase()})+Math.floor(1e3*Math.random())},r.prototype.addRow=function(t){return $(document.createElement("tr")).appendTo(t)},r.prototype.addLabeledRow=function(t,e,i,r){var n,s=e&&e.length>0?$.t(e):"",a=$(document.createElement("tr")),l=$(document.createElement("td")).html(s);return r&&(r=parseInt(r),V(r)&&(r=2),l.attr("colspan",r)),i&&(n=this._labelToId(e),i.attr("id",n),l.html(o(s,n))),a.append(l).appendTo(t)},r.prototype.addEditorRow=function(t,e,i,o){var r=$(document.createElement("td"));return i.row=this.addLabeledRow(t,e,i,o),i.appendTo(r.appendTo(i.row)),i},r.prototype.addColorPickerRow=function(t,e){return this.addEditorRow(t,e,this.createColorPicker())},r.prototype.addOffsetEditorRow=function(t,e){var i=$("");return i.attr("type","text"),i.css("width","100px"),i.addClass("ticker"),this.addEditorRow(t,e,i)},r.prototype.addFontEditorRow=function(t,e){return this.addEditorRow(t,e,this.createFontEditor())},r.prototype.refreshStateControls=function(t,e,i){var o,r,n;for(o=0;o0&&(i=e[0],this._control.selectbox("change",i.value,i.text))}catch(t){}},f.prototype.propertyChanged=function(t){var e=t.value();"function"==typeof this._propertyChangedHook&&(e=this._propertyChangedHook(e)),this.setValue(e)},inherit(v,H),v.prototype.value=function(){return this._property.value()},v.prototype.setValue=function(t){return this._control.html(t) +},inherit(g,H),g.prototype.value=function(){return this.control().is(":checked")},g.prototype.setValue=function(t){var e,i,o,r;return this.control().is(".visibility-checker")&&(t?(this.control().closest("tr").find(".slider-range").slider("enable"),this.control().closest("tr").find('input[type="text"]').each(function(){$(this).prop("disabled",!1)})):(this.control().closest("tr").find(".slider-range").slider("disable"),this.control().closest("tr").find('input[type="text"]').each(function(){$(this).prop("disabled",!0)}))),this.control().is(".visibility-switch")&&(e={opacity:t?1:.5},i=t?"enable":"disable",(o=this.control().data("hides"))?o.closest("td").css(e):(r=this.control()).parent().parent().data("visible",t).find("td").filter(function(){var t=$(this);return!t.find("label").length&&t.find(":checkbox").attr("id")!==r.attr("id")}).each(function(){var o=$(this),r=o.children();r.each(function(){var r=$(this);r.is(".ui-slider")?r.slider(i):r.is("select")?(r.selectbox(i),o.css(e)):r.is(".custom-select")?(r.data(i)(),o.css(e)):r.is(".tvcolorpicker-container")?(r.find("input").prop("disabled",!t),o.css(e)):(r.prop("disabled",!t),o.css(e))})})),this.control().attr("checked",!!t)},g.prototype.destroy=function(){H.prototype.destroy.call(this),this._control.off("change")},inherit(_,H),_.prototype.value=function(){return this.control().is(":disabled")},_.prototype.setValue=function(t){return t=Boolean(t),this._inverted&&(t=!t),this.control().parents("label").toggleClass("disabled",t),this.control().attr("disabled",t)},inherit(m,H),m.prototype.value=function(){return this.control().hasClass("active")},m.prototype.setValue=function(t){return this.control().toggleClass("active",!!t)},inherit(b,H),b.prototype.applyOldTransparency=function(){var t,e,i;this.transparencyProperty()&&(R.isHexColor(this.property().value())?(t=this.transparencyProperty().value?this.transparencyProperty().value():this.transparencyProperty(),e=O(this.property().value()),i=(100-t)/100,this.control().val(P(E(e,i)))):this.control().val(this.property().value()),this.control().change())},b.prototype.transparencyProperty=function(){return this._transparencyProperty},b.prototype.value=function(){return this._control.val()},b.prototype.setValue=function(t){this._control.val(t),this._control.change(),this._control.color&&this._control.color.fromString(t)},inherit(y,H),y.prototype.value=function(){return this._control.slider("option","value")},y.prototype.setValue=function(t){this._control.slider("option","value",t)},C.prototype._attachToControl=function(t){var e=this;this._wv.subscribe(this._setValueBinded,{callWithLast:!0}),$(this._control).on("change",function(){e.setValueToProperty(e.value())})},C.prototype.control=function(){return this._control},C.prototype.value=function(){var t=$(this._control).val();return this._transformFunction&&(t=this._transformFunction(t)),t},C.prototype.setValue=function(t){$(this._control).val(t)},C.prototype.setValueToProperty=function(t){this._undoModel.undoHistory.setWatchedValue(this._wv,t,this._undoText)}, +C.prototype.watchedValue=function(){return this._wv},C.prototype.destroy=function(){this._wv.unsubscribe(this._setValueBinded)},inherit(T,C),T.prototype._attachToControl=function(t){var e=this;this._wv.subscribe(this.setValue.bind(this),{callWithLast:!0}),$(this._control).on("click",function(){e.setValueToProperty(e.value())})},T.prototype.value=function(){var t=$(this._control).attr("checked");return this._not&&(t=!t),this._transformFunction&&(t=this._transformFunction(t)),t},T.prototype.setValue=function(t){this._not&&(t=!t),$(this._control).attr("checked",!!t)},k.prototype.properties=function(){return this._properties},k.prototype.value=function(t){return this._control.slider("values",t)},k.prototype.setValue=function(t,e){void 0===e&&(t===this._propFrom&&(e=0),t===this._propTo&&(e=1)),this._control.slider("values",e,t.value()),this._inputsText&&$(this._inputsText[e]).val(t.value())},k.prototype.propertyChanged=function(t){this.setValue(t)},k.prototype.setValueToProperty=function(t,e){($(e).hasClass("from")||"from"===e)&&(this._undoModel.beginUndoMacro(this._undoText[0]),this._undoModel.setProperty(this._propFrom,t[0],this._undoText[0]),this._propFrom.setValue(t[0],0),this._undoModel.endUndoMacro()),($(e).hasClass("to")||"to"===e)&&(this._undoModel.beginUndoMacro(this._undoText[1]),this._undoModel.setProperty(this._propTo,t[1],this._undoText[1]),this._propTo.setValue(t[1],1),this._undoModel.endUndoMacro())},k.prototype.destroy=function(){this._propFrom&&this._propTo&&(this._propFrom.listeners().unsubscribe(this,H.prototype.propertyChanged),this._propTo.listeners().unsubscribe(this,H.prototype.propertyChanged))},inherit(w,H),w.prototype.value=function(){var t=[];return this._control.each(function(){var e=$(this);e.is(":checked")&&t.push(e.attr("value"))}),t.join(this._separator)},w.prototype.setValue=function(t){var e=t.split(this._separator).filter(Boolean);this._control.each(function(){var t=$(this),i=-1!==e.indexOf(t.attr("value"));t.attr("checked",i),t.parents("label").toggleClass("active",i)})},e.PropertyPage=r,e.UppercaseTransformer=function(t){return t.toUpperCase()},e.GreateTransformer=n,e.LessTransformer=s,e.ToIntTransformer=a,e.ToFloatTransformer=l,e.ToFloatTransformerWithDynamicDefaultValue=function(t){var e=new I;return function(i){var o=e.parse(i);return V(o)?t():o}},e.ToFloatLimitedPrecisionTransformer=function(t,e){var i=new D(e);return function(e){var o=i.format(e);return V(o)?t:o}},e.ToAsciiTransformer=function(){return function(t){for(var e=t,i=t.replace(/[^\u0000-\u007F]/,"");i.length!==e.length;)i=(e=i).replace(/[^\u0000-\u007F]/,"");return i}},e.ReplaceEmptyTransformer=function(t){return function(e){return 0===e.length?t:e}},e.SymbolInfoSymbolTransformer=function(t,e){return function(i){var o=t();return i===e.value()&&o&&(o.ticker||o.full_name)?o.ticker||o.full_name:i}},e.SimpleStringBinder=c,e.FloatBinder=u,e.SessionBinder=h,e.BarTimeBinder=p,e.SymbolBinder=d,e.SimpleComboBinder=f,e.StaticContentBinder=v,e.BooleanBinder=g,e.DisabledBinder=_,e.ColorBinding=b,e.SliderBinder=y, +e.CheckboxWVBinding=T,e.RangeBinder=k,e.generateLabelElementStr=o}).call(this,i("tc+8"))},QBwY:function(t,e,i){var o,r,n;r=[i("P5fv"),i("iGnl"),i("vBzC"),i("Qwlt"),i("MIQu")],void 0===(n="function"==typeof(o=function(t){return t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,o=this.options,r=this.element.find(".ui-slider-handle"),n=[];for(i=o.values&&o.values.length||1,r.length>i&&(r.slice(i).remove(),r=r.slice(0,i)),e=r.length;e");this.handles=r.add(t(n.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("
").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==e.range&&"max"!==e.range||this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,o,r,n,s,a,l,c=this,u=this.options;return!u.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},o=this._normValueFromMouse(i),r=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(o-c.values(e));(r>i||r===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(r=i,n=t(this),s=e)}),!1!==this._start(e,s)&&(this._mouseSliding=!0,this._handleIndex=s,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),a=n.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-a.left-n.width()/2, +top:e.pageY-a.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,s,o),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,o,r,n;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),(o=i/e)>1&&(o=1),o<0&&(o=0),"vertical"===this.orientation&&(o=1-o),r=this._valueMax()-this._valueMin(),n=this._valueMin()+o*r,this._trimAlignValue(n)},_uiHash:function(t,e,i){var o={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(o.value=void 0!==e?e:this.values(t),o.values=i||this.values()),o},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var o,r=this.value(),n=this.values();this._hasMultipleValues()&&(o=this.values(e?0:1),r=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(o,i):Math.max(o,i)),n[e]=i),i!==r&&!1!==this._trigger("slide",t,this._uiHash(e,i,n))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(e,i){var o,r,n;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),void this._change(null,e);if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(o=this.options.values,r=arguments[0],n=0;n=0;o--)this._change(null,o);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,o;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),o=0;o=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,o=t-i;return 2*Math.abs(i)>=e&&(o+=i>0?e:-e),parseFloat(o.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,o=Math.round((t-e)/i)*i;(t=o+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,o,r,n,s=this.options.range,a=this.options,l=this,c=!this._animateOff&&a.animate,u={};this._hasMultipleValues()?this.handles.each(function(o){i=(l.values(o)-l._valueMin())/(l._valueMax()-l._valueMin())*100,u["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[c?"animate":"css"](u,a.animate),!0===l.options.range&&("horizontal"===l.orientation?(0===o&&l.range.stop(1,1)[c?"animate":"css"]({left:i+"%"},a.animate),1===o&&l.range[c?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===o&&l.range.stop(1,1)[c?"animate":"css"]({bottom:i+"%"},a.animate),1===o&&l.range[c?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(o=this.value(),r=this._valueMin(),n=this._valueMax(),i=n!==r?(o-r)/(n-r)*100:0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[c?"animate":"css"](u,a.animate),"min"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({width:i+"%"},a.animate),"max"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({ +width:100-i+"%"},a.animate),"min"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({height:i+"%"},a.animate),"max"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(e){var i,o,r,n=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),!1===this._start(e,n)))return}switch(r=this.options.step,i=o=this._hasMultipleValues()?this.values(n):this.value(),e.keyCode){case t.ui.keyCode.HOME:o=this._valueMin();break;case t.ui.keyCode.END:o=this._valueMax();break;case t.ui.keyCode.PAGE_UP:o=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:o=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(i===this._valueMax())return;o=this._trimAlignValue(i+r);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i===this._valueMin())return;o=this._trimAlignValue(i-r)}this._slide(e,n,o)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}})})?o.apply(e,r):o)||(t.exports=n)},"Y+MS":function(t,e,i){"use strict";var o=function(){function t(t,e){this.mouseFlag=!1,this.accuracy=2,this.value=1,this.colorInput=t,this.$el=$('
',t.prop("ownerDocument")),e&&this.$el.hide(),this.$gradient=$('
').appendTo(this.$el),this.$roller=$('').appendTo(this.$gradient)}return t.prototype.calculateRollerPosition=function(t){var e=t.pageX,i=this.$gradient.offset().left,o=e-i,r=this.$gradient.width();return o>r?100:o<0?0:~~(o/r*100)},t.prototype.toRgb=function(t){var e;return~t.indexOf("#")?t:(e=t.match(/[0-9.]+/g))?"rgb("+e.slice(0,3).join(", ")+")":"rgb(127, 127, 127)"},t.prototype.setValue=function(t){this.value=1!==t?t.toFixed(this.accuracy):t},t.prototype.updateRoller=function(){this.$roller.css("left",100-100*this.value+"%")},t.prototype.rollerMoveHandler=function(t){if(this.mouseFlag){var e=this.calculateRollerPosition(t);this.setValue((100-e)/100),$(this).trigger("change",[this.val()]),this.$roller.css("left",e+"%")}t.preventDefault()},t.prototype.mouseupHandler=function(t){this.mouseFlag&&(this.mouseFlag=!1,$(this).trigger("afterChange",[this.val()]))},t.prototype.initEvents=function(){var t=this.$el.prop("ownerDocument"),e=function(t){return this.rollerMoveHandler(t)}.bind(this),i=function(o){return $(t).off("mousemove mouseup",e), +$(t).off("mouseup",i),this.mouseupHandler(o)}.bind(this);this.$el.on("mousedown",function(o){this.mouseFlag=!0,$(t).on("mousemove mouseup",e),$(t).on("mouseup",i),o.preventDefault()}.bind(this)),this.colorInput.on("change",function(t){this.updateColor()}.bind(this))},t.prototype.removeEvents=function(){},t.prototype.updateColor=function(){var t=this.colorInput.val()||"black",e=this.toRgb(t),i=["-moz-linear-gradient(left, %COLOR 0%, transparent 100%)","-webkit-gradient(linear, left top, right top, color-stop(0%,%COLOR), color-stop(100%,transparent))","-webkit-linear-gradient(left, %COLOR 0%,transparent 100%)","-o-linear-gradient(left, %COLOR 0%,transparent 100%)","linear-gradient(to right, %COLOR 0%,transparent 100%)"];$.browser.msie?this.$gradient.css("filter",["progid:DXImageTransform.Microsoft.gradient(startColorstr='",e,"', EndColor=0, GradientType=1)"].join("")):i.forEach(function(t){this.$gradient.css("background-image",t.replace(/%COLOR/,e))}.bind(this))},t.prototype.val=function(t){return void 0!==t&&(this.setValue(+t),this.updateRoller()),this.value},function(e,i){return new t(e,i)}}();t.exports=o},"d2+F":function(t,e,i){"use strict";var o,r,n,s,a,l,c,u,h,p,d,f,v,g,_,m;i("zNST"),i("utoz"),o=i("eJTA"),r=o.rgba,n=o.areEqualRgb,s=o.areEqualRgba,a=o.normalizeHue,l=o.normalizeHsvSaturation,c=o.normalizeValue,u=o.hsv,h=o.rgbToHsv,p=o.hsvToRgb,d=o.rgbToString,f=o.rgbaToString,v=o.parseRgb,g=o.parseRgba,_=i("Y+MS"),m=i("wmOI").ESC,function(t){function e(t){return""===t?t:f(g(t))}function i(t){t&&(t.join||(t=t?(""+t).split(","):[]),C=t)}function o(k){function w(e,i,o){var n=t(this);e=f(r(v(e),i)),$.call(this,e),n.removeData("tvcolorpicker").removeData("tvcolorpicker-custom-color"),o&&(S.call(n),n.blur())}function $(e){var i=t(this);i.val(e),i.change(),e?i.trigger("pick-color",e):i.trigger("pick-transparent"),x.call(this,e)}function x(e){""!==e?(t(this).removeClass("tvcolorpicker-gradient-widget"),t(this).css({backgroundColor:e,color:e})):t(this).addClass("tvcolorpicker-gradient-widget")}function M(e,i){var o,r,s,a,l,c,u;return i=i||{},r=(o=this).prop("ownerDocument"),s=t(o).val().toLowerCase(),a=r.createElement("table"),l=r.createElement("tbody"),a.appendChild(l),u=0,t.each(e,function(e,r){var a,h;u++,e%y==0&&(c=t("
").appendTo(l)),a=t('').appendTo(c),h=t('
').appendTo(a).find(".tvcolorpicker-swatch").data("color",r),i.addClass&&h.addClass(i.addClass),r&&(r=r.toLowerCase(),s&&n(v(s),v(r))&&h.addClass("active"),h.css({backgroundColor:r}).data("color",r),h.bind("click",function(){w.call(o,r,P.val(),!0)}))}),t(a).addClass("tvcolorpicker-table"),u?a:t()}function V(e){function i(t){var e=t.originalEvent,i=t.offsetX||t.layerX||e&&(e.offsetX||e.layerX)||0,o=t.offsetY||t.layerY||e&&(e.offsetY||e.layerY)||0;V.css({left:i+"px",top:o+"px"}),z[0]=a(i/A),z[1]=l(1-o/R),F.css({backgroundColor:d(p(u(z[0],z[1],1)))}),b()}function o(e){1==e.which&&(H=!1,j.is(".opened")&&t(W).get(0).focus())}function n(e){ +var i=function(e){var i=e.pageY,o=t(D),r=i-o.offset().top;return r>o.height()?o.height():r<0?0:r}(e);I.css({top:i+"px"}),z[2]=c(1-Math.max(0,Math.min(i,R))/R),b()}function m(e){1==e.which&&(B=!1,t(U).unbind("mouseup",m),j.is(".opened")&&t(W).get(0).focus())}function b(){var t,e;L&&(L=!1,j.find(".tvcolorpicker-swatch.active").removeClass("active")),t=r(p(z),P.val()),s(g(W.val().toUpperCase()),t)||(e=f(t),W.data("tvcolorpicker-custom-color",e),$.call(W,e))}var y,k,x,V,S,O,F,I,D,R,A,H,B,L,z,N=!1,W=t(this),U=W.prop("ownerDocument"),j=t('
'),G=t('
').appendTo(j);return G.append(M.call(this,["rgb(0, 0, 0)","rgb(66, 66, 66)","rgb(101, 101, 101)","rgb(152, 152, 152)","rgb(182, 182, 182)","rgb(203, 203, 203)","rgb(216, 216, 216)","rgb(238, 238, 238)","rgb(242, 242, 242)","rgb(255, 255, 255)"])),G.append(M.call(this,["rgb(151, 0, 0)","rgb(255, 0, 0)","rgb(255, 152, 0)","rgb(255, 255, 0)","rgb(0, 255, 0)","rgb(0, 255, 255)","rgb(73, 133, 231)","rgb(0, 0, 255)","rgb(152, 0, 255)","rgb(255, 0, 255)"])),G.append(M.call(this,["rgb(230, 184, 175)","rgb(244, 204, 204)","rgb(252, 229, 205)","rgb(255, 242, 204)","rgb(217, 234, 211)","rgb(208, 224, 227)","rgb(201, 218, 248)","rgb(207, 226, 243)","rgb(217, 210, 233)","rgb(234, 209, 220)","rgb(221, 126, 107)","rgb(234, 153, 153)","rgb(249, 203, 156)","rgb(255, 229, 153)","rgb(182, 215, 168)","rgb(162, 196, 201)","rgb(164, 194, 244)","rgb(159, 197, 232)","rgb(180, 167, 214)","rgb(213, 166, 189)","rgb(204, 65, 37)","rgb(224, 102, 102)","rgb(246, 178, 107)","rgb(255, 217, 102)","rgb(147, 196, 125)","rgb(118, 165, 175)","rgb(109, 158, 235)","rgb(111, 168, 220)","rgb(142, 124, 195)","rgb(194, 123, 160)","rgb(166, 28, 0)","rgb(204, 0, 0)","rgb(230, 145, 56)","rgb(241, 194, 50)","rgb(106, 168, 79)","rgb(69, 129, 142)","rgb(60, 120, 216)","rgb(61, 133, 198)","rgb(103, 78, 167)","rgb(166, 77, 121)","rgb(133, 32, 12)","rgb(153, 0, 0)","rgb(180, 95, 6)","rgb(191, 144, 0)","rgb(56, 118, 29)","rgb(19, 79, 92)","rgb(17, 85, 204)","rgb(11, 83, 148)","rgb(53, 28, 117)","rgb(116, 27, 71)","rgb(91, 15, 0)","rgb(102, 0, 0)","rgb(120, 63, 4)","rgb(127, 96, 0)","rgb(39, 78, 19)","rgb(12, 52, 61)","rgb(28, 69, 135)","rgb(7, 55, 99)","rgb(32, 18, 77)","rgb(76, 17, 48)"])),y=t('
').css({display:"none"}).appendTo(j),k=t('
').appendTo(y),x=t('
').appendTo(k),V=t('
').appendTo(x),S=t('
').appendTo(x),O=t('
').appendTo(k),F=t('
').appendTo(O),I=t('
').appendTo(F),D=t('
').appendTo(F),(P=_(t(this),e.hideTransparency)).initEvents(),P.updateColor(),P.$el.appendTo(j),P.val(g(W.val()||T)[3]),R=x.height(),A=x.width(),H=!1,B=!1,L=!0,z=[0,0,.5],S.bind("mousedown",function(e){1==e.which&&(H=!0, +t(U).bind("mouseup",o),i(e),e.preventDefault())}),S.bind("mousemove",function(t){H&&(i(t),t.preventDefault())}),t(P).on("change",function(){N?b():w.call(this,t(this).val()||T,P.val())}.bind(this)),t(P).on("afterChange",function(){t(this).focus()}.bind(this)),O.bind("mousedown",function(e){1==e.which&&(B=!0,t(U).bind("mouseup",m),n(e),e.preventDefault())}),t(U).bind("mousemove",function(t){B&&(n(t),t.preventDefault())}),t('
'+window.t("Custom color...")+"").appendTo(j).bind("click",function(){var e,i=t(this).is(".active");i||y.css({minWidth:G.width()+"px",minHeight:G.height()+"px"}),t(this)[i?"removeClass":"addClass"]("active"),N=t(this).is(".active"),y.css({display:i?"none":"block"}),G.css({display:i?"block":"none"}),i?W.removeData("tvcolorpicker-custom-color"):(R=x.height(),A=x.width(),e=v(W.val()||T),z=h(e),V.css({left:~~(z[0]*A)+"px",top:~~((1-z[1])*R)+"px"}),I.css({top:~~((1-z[2])*R)+"px"}),F.css({backgroundColor:d(p(u(z[0],z[1],1)))}))}),j.append(t(M.call(this,C,{addClass:"tvcolorpicker-user"})).addClass("tvcolorpicker-user-swatches")),t(U.body).append(j),function(e,i,o){var r,n=t(e).prop("ownerDocument"),s=n.defaultView,a=t(e).offset(),l=(t(n).scrollLeft(),t(n).scrollTop()),c=t(e).outerWidth(),u=t(e).outerHeight(),h=t(s).width(),p=t(s).height(),d=t(i).outerWidth(),f=t(i).outerHeight(),v="function"==typeof o.direction?o.direction():o.direction;switch(v){default:case"down":r={top:a.top+u+o.offset,left:a.left+o.drift};break;case"right":r={top:a.top+o.drift,left:a.left+c+o.offset}}r.top+f>p+l&&(r.top=p-f+l),a.left+d>h&&(r.left=h-d),r.left+="px",r.top+="px",i.css(r)}(W,j,e),U.addEventListener("keydown",E,!1),j}function S(){var e=t(this).prop("ownerDocument")||document;t(e).find(".tvcolorpicker-popup").removeClass("opened").remove(),t(P).off("change"),t(P).off("afterChange"),e.removeEventListener("keydown",E,!1),t(O).data("tvcolorpicker",null),t(O).each(function(){var e,i=t(this).data("tvcolorpicker-custom-color");i&&(function(e){var i=!1,o=v(e);return t.each(C,function(t,e){if(n(v(e),o))return i=!0,!1}),!i&&(C=[d(o)].concat(C.slice(0,b-1)),!0)}(i)&&t(this).trigger("customcolorchange",[C]),t(this).data("tvcolorpicker-custom-color",null)),(e=t(this).data("tvcolorpicker-previous-color"))&&e!=t(this).val()&&t(this).trigger("change"),t(this).removeData("tvcolorpicker-previous-color")})}function E(t){t.keyCode===m&&(S.call(O),O.blur())}var P,O;return k=t.extend({},o.options,k||{}),O=this,k&&"customColors"in k&&i(k.customColors),this.each(function(){function i(){var t=e(s.val());x.call(s,t)}var o,r,n,s=t(this);s.val(e(s.val())),o=null,r=!1,s.addClass("tvcolorpicker-widget").attr("autocomplete","off").attr("readonly",!0),n=function(){s.data("tvcolorpicker")||(S.call(s),o=V.call(s,k),s.data("tvcolorpicker-custom-color",null),s.data("tvcolorpicker",o),s.data("tvcolorpicker-previous-color",s.val()),o.bind("mousedown click",function(e){t(e.target).parents().andSelf().is(o)&&(s.focus(),r=!0,setTimeout(function(){r=!1},0))}))},s.on("touchstart",n),s.focus(n),S.call(s), +s.bind("blur",function(t){r?t.stopPropagation():S.call(s)}),s.change(function(t){i()}),i()})}var b,y,C,T;if(!t)throw new Error("This program cannot be run in DOS mode");o.setCustomColors=i,t.fn.tvcolorpicker=o,b=29,y=10,C=[],T="rgb(14, 15, 16)",o.options={direction:"down",offset:0,drift:0}}(window.jQuery)},jNEI:function(t,e,i){"use strict";function o(t,e){void 0===e&&(e={});var i=$('');return null!==t&&i.appendTo(t),void 0!==e.addClass&&i.addClass(e.addClass),$('
').appendTo(i),$('').tvcolorpicker({customColors:function(t){var e,i,o,r=[];for(e=0,i=t;e50?t-50:0}),Object(s.rgbToString)(i)))}).bind("customcolorchange",function(t,e){Object(a.setJSON)("pickerCustomColors",e)}).appendTo(i),i}var r,n,s,a,l;i.r(e),i.d(e,"addColorPicker",function(){return o}),r=i("P5fv"),n=i("d2+F"),s=i("eJTA"),a=i("Vdly"),l="#727272"},utoz:function(t,e,i){},vBzC:function(t,e,i){var o,r,n;r=[i("P5fv"),i("Qwlt")],void 0===(n="function"==typeof(o=function(t){return t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}})?o.apply(e,r):o)||(t.exports=n)},zNST:function(t,e,i){}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/add-compare-dialog.e9db1b14483f3e7358f4.js b/public/charting_library/static/bundles/add-compare-dialog.e9db1b14483f3e7358f4.js new file mode 100644 index 0000000..12f6e13 --- /dev/null +++ b/public/charting_library/static/bundles/add-compare-dialog.e9db1b14483f3e7358f4.js @@ -0,0 +1,3 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["add-compare-dialog"],{UnpO:function(t,e,o){"use strict";var a,n,i,c;Object.defineProperty(e,"__esModule",{value:!0}),e.AddSymbolTab=void 0,a=function(){function t(t,e){var o,a;for(o=0;o\n\t\t\n\t\t
\n\t
',e.AddSymbolTab=function(){function t(e,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._chartWidgetCollection=e,this._dialog=o,this._$popup=null,this.init()}return a(t,[{key:"init",value:function(){var t=this;this.$tab=$(c),this._$input=this.$tab.find(".js-add-symbol-tab-input"),this._checkbox=new n.AddSymbolCheckbox({labelRight:$.t("Overlay the main chart"),labelAddClass:"tv-add-symbol-tab__checkbox-label",boxAddClass:"tv-add-symbol-tab__checkbox-box"}),this.$tab.find(".js-add-symbol-tab-checkbox").append(this._checkbox.$el),(0,i.symbolSearchUIService)().bindToInput(this._$input,{callback:function(e){var o=t._chartWidgetCollection.activeChartWidget.value();o&&o.addOverlayStudy(e,t._checkbox.checked)},onPopupOpen:function(e){e.css("z-index",t._dialog.getZIndex()),t._$popup=e},onPopupClose:function(){t._$popup=null},keepFocus:!0,clearAfterAccept:!0})}},{key:"focus",value:function(){Modernizr.mobiletouch||this._$input.focus()}},{key:"isClickOnTab",value:function(t){return!!this._$popup&&!(this._$popup[0]!==t.target&&!this._$popup[0].contains(t.target))}}]),t}()},UxRG:function(t,e,o){},dKfe:function(t,e,o){"use strict";var a,n,i;Object.defineProperty(e,"__esModule",{value:!0}),e.AddSymbolCheckbox=void 0,a=o("QwKQ"),n=(i=a)&&i.__esModule?i:{default:i},e.AddSymbolCheckbox=function(t){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t.checked=TVSettings.getBool("showAddSymbolDialog.checkboxState",!0);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return o.$checkbox.change(function(){setTimeout(function(){TVSettings.setValue("showAddSymbolDialog.checkboxState",o.checked)})}),o}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,n.default),e}()},frtK:function(t,e,o){},jPTo:function(t,e,o){},k47Q:function(t,e,o){}, +ocUP:function(t,e,o){"use strict";(function(t,a){var n,i,c,l,r,s;Object.defineProperty(e,"__esModule",{value:!0}),e.CompareTab=void 0,n=function(){function t(t,e){var o,a;for(o=0;o\n\t\t\n\t
',r='
',s='\n\t
\n\t\t\n\t
',e.CompareTab=function(){function e(t,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this._chartWidgetCollection=t,this._dialog=o,this._$popup=null,this._predefines={},this._symbolAlias={},this.init()}return n(e,[{key:"_addCompareSymbol",value:function(t,e,o){var a=this._chartWidgetCollection.activeChartWidget.value();if(a)return a.addCompareStudy(t).then(function(t){var e=null!==t;return e&&(0,c.trackEvent)("GUI","Add Compare"),e})}},{key:"removeCompareSymbol",value:function(t){var e,o=this,a=this._chartWidgetCollection.activeChartWidget.value();a&&(e=a.model())&&e.dataSources().forEach(function(a){if(a._metaInfo&&"Compare@tv-basicstudies"===a._metaInfo.id){var n=a.properties().inputs.symbol.value();(n===t||o._symbolAlias[n]&&o._symbolAlias[n]===t)&&e.removeSource(a)}})}},{key:"init",value:function(){var e,o,a,n=this,i=this._chartWidgetCollection.activeChartWidget.value();i&&(e=i.model())&&(o=e.dataSources(),this.$tab=$(l),this._initSymbolSearch(),t.enabled("charting_library_base")||(this._createPredefinesList(),(a=this.$tab.find(".js-compare-tab-predefines")).find(".js-predefine-checkbox").attr("checked",!1),Object.keys(this._predefines).forEach(function(t){var e=n._symbolToId(t),i=a.find("#"+e);o.forEach(function(e){if(e._metaInfo&&"Compare@tv-basicstudies"===e._metaInfo.id){var o=e.properties().inputs.symbol.value();(o===t||n._symbolAlias[o]&&n._symbolAlias[o]===t)&&i.attr("checked",!0)}})})))}},{key:"_initSymbolSearch",value:function(){var t=this;this._$input=this.$tab.find(".js-compare-tab-input"),(0,i.symbolSearchUIService)().bindToInput(this._$input,{callback:function(e){return t._addCompareSymbol(e)},onPopupOpen:function(e){e.css("z-index",t._dialog.getZIndex()),t._$popup=e},onPopupClose:function(){t._$popup=null},keepFocus:!0, +clearAfterAccept:!0})}},{key:"_createPredefinesList",value:function(){function t(t){var e=this;setTimeout(function(){$(e).is(":checked")?o._addCompareSymbol(t.data.symbol).then(function(t){t||$(e).attr("checked",!1)}):o.removeCompareSymbol(t.data.symbol)})}var e=this,o=this,n=$(r);Object.keys(this._predefines).forEach(function(o){var i=$(a.render(s,{symbolId:e._symbolToId(o),label:e._predefines[o],additionalClass:e._isBovespa?"tv-compare-tab__predefine-cell--wide":""})),c=i.find(".js-predefine-checkbox");c.change({symbol:o},t),i.appendTo(n)}),n.appendTo(this.$tab)}},{key:"_symbolToId",value:function(t){return t.replace(/[^a-z0-9]/gi,"_")}},{key:"focus",value:function(){Modernizr.mobiletouch||this._$input.focus()}},{key:"isClickOnTab",value:function(t){return!!this._$popup&&!(this._$popup[0]!==t.target&&!this._$popup[0].contains(t.target))}}]),e}()}).call(this,o("Kxc7"),o("OiQe"))},tkV1:function(t,e,o){"use strict";var a,n,i,c,l;Object.defineProperty(e,"__esModule",{value:!0}),e.AddCompareDialog=void 0,a=function(){function t(t,e){var o,a;for(o=0;o').html(" "),this._helpTooltipTrigger=$('').text("?").attr("title",$.t("Type the interval number for minute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)")),this._dialogTitle=$.t("Change Interval")}var n=e("PT1i").linking,o=e("h24c").parseIntervalValue,a=e("h24c").intervalIsSupported,p=e("h24c").sanitizeIntervalValue,l=e("Kxc7"),r=e("pPtI"),h=e("GAqT").TVOldDialogs;s.prototype._setInput=function(){this._input=$(''),this._input.on("keypress",this._handleInput.bind(this)).on("input",function(){this._validate(),this._updateCaption()}.bind(this)).on("blur",function(){setTimeout(this._submit.bind(this),0)}.bind(this))},s.prototype._validate=function(){var t,i=this._input.val();this._parsed=o(i),this._valid=!this._parsed.error,this._supported=!this._parsed.error&&a(i),t=this._parsed.unit,this._supported&&("R"===t&&this._parsed.qty>r.getMaxResolutionValue("R")?this._supported=!1:null!==t&&"H"!==t||this._parsed.qty*("H"===t?60:1)>1440&&(this._supported=!1))},s.prototype._updateCaption=function(){var t,i,e;this._valid&&this._supported?(i=this._parsed.qty||1,e=this._parsed.unit||"",t=r.getTranslatedResolutionModel(i+e).hint,this._input.add(this._caption).removeClass("error")):(t=this._parsed.error?" ":$.t("Not applicable"),this._input.add(this._caption).addClass("error")),this._caption.html(t)},s.prototype._handleInput=function(t){var i,e,s;13!==t.which?t.ctrlKey||t.metaKey||!t.charCode||!t.which||t.which<=32||(i=String.fromCharCode(t.charCode),e=/[\dhdwms]/i,s=/[\dhdwm]/i,(l.enabled("seconds_resolution")?e.test(i):s.test(i))||t.preventDefault()):this._submit()},s.prototype._submit=function(){var t,i;h.isOpen(this._dialogTitle)&&(this._valid&&this._supported&&(t=p(this._input.val()),i=n.interval.value(),t&&i!==t&&"function"==typeof this._options.callback&&this._options.callback(t)),h.destroy(this._dialogTitle))},s.prototype._setInitialValue=function(t){var i,e;i="",e=!1,(t=t||this._options.initialValue)&&","!==t?i=p(t)||"":(i=t=n.interval.value(),e=!0),this._input.val(i),e&&this._input.select()},s.prototype.isValid=function(){return Boolean(this._valid)},s.prototype.show=function(t){var i=h.createDialog(this._dialogTitle,{hideCloseCross:!0,addClass:"change-interval-dialog",ownerDocument:this._options.ownerDocument}),e=i.find("._tv-dialog-content");return i.css("min-width",0),e.css("min-width",0).mousedown(function(t){this._input.is(t.target)||t.preventDefault()}.bind(this)).append(this._input.add(this._caption).add(this._helpTooltipTrigger)),h.applyHandlers(i),h.positionDialog(i),this._setInitialValue(t),this._validate(),this._updateCaption(),i}, +t.exports.ChangeIntervalDialog=s}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js b/public/charting_library/static/bundles/chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js new file mode 100644 index 0000000..d0938b2 --- /dev/null +++ b/public/charting_library/static/bundles/chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js @@ -0,0 +1,10 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chart-bottom-toolbar"],{"+GaQ":function(e,t,n){"use strict";function i(e){return e.map?a.Children.toArray(e.children).map(e.map):e.children}var a;n.d(t,"a",function(){return i}),a=n("q1tI")},"2mG+":function(e,t,n){e.exports={button:"button-37qwTsBL-"}},"5o6O":function(e,t,n){e.exports={tabs:"tabs-1LGqoVz6-",tab:"tab-1Yr0rq0J-",noBorder:"noBorder-oc3HwerO-",disabled:"disabled-s8cEYElA-",active:"active-37sipdzm-",defaultCursor:"defaultCursor-Np9BHjTg-",slider:"slider-1-X4lOmE-",content:"content-2asssfGq-"}},ApAi:function(e,t){e.exports=''},J3OW:function(e,t,n){e.exports={button:"button-1VVj8kLG-"}},K3s3:function(e,t,n){"use strict";function i(e){var t,n=s(e.className,c.tab,((t={})[c.active]=e.isActive,t[c.disabled]=e.isDisabled,t[c.defaultCursor]=!!e.shouldUseDefaultCursor,t[c.noBorder]=!!e.noBorder,t));return r.createElement("div",{className:n,onClick:e.onClick,ref:e.reference},e.children)}function a(e){return function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.activeTab={current:null},e}return o.__extends(n,t),n.prototype.componentDidUpdate=function(){var e=Object(l.ensureNotNull)(this._slider),t=e.style;t.transition="transform 350ms",this._componentDidUpdate()},n.prototype.componentDidMount=function(){this._componentDidUpdate()},n.prototype.render=function(){var t=this,n=this.props.className,i=this._generateTabs();return r.createElement("div",{className:s(n,c.tabs)},i,r.createElement(e,{reference:function(e){t._slider=e}}))},n.prototype._generateTabs=function(){var e=this;return this.activeTab.current=null,r.Children.map(this.props.children,function(t){var n=t,i=Boolean(n.props.isActive),a={reference:function(t){i&&(e.activeTab.current=t),n.props.reference&&n.props.reference(t)}};return r.cloneElement(n,a)})},n.prototype._componentDidUpdate=function(){var e,t,n=Object(l.ensureNotNull)(this._slider),i=n.style;this.activeTab.current?(e=this.activeTab.current.offsetWidth,t=this.activeTab.current.offsetLeft,i.transform="translateX("+t+"px)",i.width=e+"px",i.opacity="1"):i.opacity="0"},n}(r.PureComponent)}var o,r,s,l,c,u;n.d(t,"a",function(){return u}),n.d(t,"b",function(){return i}),n.d(t,"c",function(){return a}),o=n("mrSG"),r=n("q1tI"),s=n("TSYQ"),l=n("Eyy1"),c=n("5o6O"),u=c,a(function(e){return r.createElement("div",{className:c.slider,ref:e.reference})})},MfqI:function(e,t,n){"use strict";function i(e){var t;return(t=function(t){function n(e,n){var i,a=t.call(this,e,n)||this;return a._handleUpdate=function(e){a.setState(e)},a._handleSelectRange=function(e){a._binding.selectRange(e)},S.has(n.chartWidget)||S.set(n.chartWidget,new E(n)),i=a._binding=Object(v.ensureDefined)(S.get(n.chartWidget)),a.state=i.state(),a}return u.__extends(n,t),n.prototype.componentDidMount=function(){ +this._binding.onChange().subscribe(this,this._handleUpdate)},n.prototype.componentWillUnmount=function(){this._binding.onChange().unsubscribe(this,this._handleUpdate)},n.prototype.render=function(){return l.createElement(e,{goToDateButton:this.props.goToDateButton,className:this.props.className,ranges:this.state.ranges,activeRange:this.state.activeRange,onSelectRange:this._handleSelectRange})},n}(l.PureComponent)).contextTypes={availableTimeFrames:d.any.isRequired,chartWidget:d.any.isRequired},t}function a(e){var t,n=h(M.item,((t={})[M.isActive]=e.isActive,t[M.isFirst]=e.isFirst,t[M.isLast]=e.isLast,t));return l.createElement("div",{className:n,onClick:e.onClick,ref:e.reference},e.children)}function o(e){var t=e.reference,n=e.className,i=e.children,a=u.__rest(e,["reference","className","children"]);return l.createElement("button",u.__assign({},a,{className:h(n,H.button),ref:t}),l.createElement("span",{className:H.inner},i))}function r(e){return l.createElement("span",{className:h($.separator,e.className)})}function s(e){0}var l,c,u,d,h,p,m,g,f,_,b,v,C,y,S,E,x,R,W,w,N,A,T,M,k,B,D,z,F,P,j,I,L,O,q,U,H,G,V,Z,K,Q,Y,J,X,$,ee,te,ne,ie,ae,oe,re,se,le,ce,ue,de,he,pe,me,ge,fe,_e,be,ve,Ce,ye,Se,Ee,xe;n.r(t),l=n("q1tI"),c=n("i8i4"),u=n("mrSG"),d=n("17x9"),n("YFKU"),h=n("TSYQ"),p=n("XmVn"),m=n("Kxc7"),g=n("82wv"),f=n("Iksw"),_=n("N5tr"),b=n("dfhE"),v=n("Eyy1"),C=n("aIyQ"),y=n.n(C),S=new WeakMap,E=function(){function e(e){var t,n=this;this._state={ranges:[]},this._change=new y.a,(t=(this._context=e).chartWidget).withModel(null,function(){var e=t.model(),i=e.mainSeries();i.onStatusChanged().subscribe(n,n._updateAvailableRanges),m.enabled("update_timeframes_set_on_symbol_resolve")&&i.dataEvents().symbolResolved().subscribe(n,n._updateAvailableRanges),i.priceScale().properties().lockScale.subscribe(n,n._updateAvailableRanges),i.onIntervalChanged().subscribe(n,n._onRangeChanged),e.model().onResetScales().subscribe(n,n._resetActiveInterval),i.dataEvents().symbolResolved().subscribe(n,n._resetActiveInterval),i.properties().extendedHours.subscribe(n,n._resetActiveInterval),n._updateAvailableRanges()}),t.onScroll().subscribe(this,this._resetActiveInterval)}return e.prototype.state=function(){return this._state},e.prototype.onChange=function(){return this._change},e.prototype.selectRange=function(e){var t,n;this._setState({activeRange:e.value}),t=this._context.chartWidget,n={val:e.value,res:e.targetResolution},t.loadRange(n)},e.prototype.destroy=function(){var e=this,t=this._context.chartWidget;t.withModel(null,function(){var n=t.model(),i=n.mainSeries();i.onStatusChanged().unsubscribe(e,e._updateAvailableRanges),m.enabled("update_timeframes_set_on_symbol_resolve")&&i.dataEvents().symbolResolved().unsubscribe(e,e._updateAvailableRanges),i.priceScale().properties().lockScale.unsubscribe(e,e._updateAvailableRanges),i.onIntervalChanged().unsubscribe(e,e._onRangeChanged),n.model().onResetScales().unsubscribe(e,e._resetActiveInterval),i.dataEvents().symbolResolved().unsubscribe(e,e._resetActiveInterval), +i.properties().extendedHours.unsubscribe(e,e._resetActiveInterval)}),t.onScroll().unsubscribe(this,this._resetActiveInterval),this._change.destroy()},e.prototype._setState=function(e){this._state=Object.assign({},this._state,e),this._change.fire(this._state)},e.prototype._onRangeChanged=function(e,t){this._setState({activeRange:t.timeframe})},e.prototype._resetActiveInterval=function(){this._setState({activeRange:void 0})},e.prototype._updateAvailableRanges=function(){var e,t,n,i=this._context,a=i.availableTimeFrames,o=i.chartWidget;o.model()&&(t=(e=o.model().mainSeries()).status())!==b.STATUS_LOADING&&t!==b.STATUS_RESOLVING&&0!==(n=a(e.symbolInfo(),e.status())).length&&this._setState({ranges:n})},e}(),x=n("KKsp"),R=n("cdbK"),W=n("J3OW"),w={title:window.t("Date Range"),goToDate:window.t("Go to...")},N=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleGoToDateClick=function(){var e=t.context.chartWidget;Object(R.showGoToDateDialog)(e.model())},t._handleRangeSelect=function(e){e&&t.props.onSelectRange&&t.props.onSelectRange(e)},t}return u.__extends(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.ranges,i=t.activeRange,a=t.goToDateButton;return l.createElement(g.a,{className:W.button,content:w.title,arrow:!0,verticalAttachEdge:f.a.Top,verticalDropDirection:f.b.FromBottomToTop,horizontalMargin:4},n.map(function(t){return l.createElement(_.a,{key:t.value,label:t.description||t.text,isActive:i===t.value,onClick:e._handleRangeSelect,onClickArg:t})}),a&&l.createElement(x.a,null),a&&l.createElement(_.a,{label:w.goToDate,onClick:this._handleGoToDateClick}))},t.contextTypes={chartWidget:d.any.isRequired},t}(l.PureComponent),A=i(N),T=n("K3s3"),M=n("W9Y+"),k=n("nPPD"),B=n("RZ2Z"),D=Object(k.a)(T.a,B),z=n("qSb5"),F=Object(T.c)(function(e){return l.createElement("div",{className:D.slider,ref:e.reference},l.createElement("div",{className:D.inner}))}),P=i(function(e){var t=e.className,n=e.ranges,i=e.activeRange,o=e.onSelectRange;return l.createElement(F,{className:h(z.sliderRow,t)},n.map(function(e,t){return l.createElement(a,{key:e.value,isFirst:0===t,isLast:t===n.length-1,isActive:i===e.value,onClick:o&&o.bind(null,e)},l.createElement("div",{title:e.description||e.text,className:"apply-common-tooltip"},e.text))}))}),j=n("ei7k"),I=n("c7H2"),L={title:window.t("Go to...")},O=Object(j.b)({keys:["Alt","G"],text:"{0} + {1}"}),q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleClick=function(){var e=t.context.chartWidget;Object(R.showGoToDateDialog)(e.model())},t}return u.__extends(t,e),t.prototype.render=function(){var e=this.props,t=e.className;return e.ranges.length>0&&l.createElement("div",{className:h("apply-common-tooltip",I.button,t),"data-tooltip-hotkey":O,onClick:this._handleClick},L.title)},t.contextTypes={chartWidget:d.any.isRequired},t}(l.PureComponent),U=i(q),H=n("URQ3"),G=n("U/gD"),V=n("4kQX"),Z=n("7KDR"),K=n("5VQP"),Q=function(e){function t(t){var n=e.call(this,t)||this;return n._element=null,n._menu=null,n._handleRef=function(e){ +n._element=e},n._showMenu=function(){var e,t,i,a;if(n._menu&&n._menu.isShown())return n._menu.hide(),void n._menu.destroy();t=(e=n.props).getActions,i=e.right,a=Object(v.ensureNotNull)(n._element),K.ContextMenuManager.createMenu(t()).then(function(e){n._menu=e,e.show(function(e,t){var n=a.getBoundingClientRect();return{clientX:i?n.right-e:n.left,clientY:n.top-Math.min(t,n.top),overrideHeight:n.top'},URQ3:function(e,t,n){e.exports={button:"button-88UE6omC-",hover:"hover-3_vVP91F-",inner:"inner-2FptJsfC-"}},"W9Y+":function(e,t,n){e.exports={item:"item-3cgIlGYO-",hover:"hover-2y46_KNk-",isActive:"isActive-2M6dwA7--",isFirst:"isFirst-2kfAV5tf-",isLast:"isLast-voJ1bqZh-"}},c7H2:function(e,t,n){e.exports={button:"button-2gir_Bbb-",hover:"hover-SrAyrKlT-"}},qSb5:function(e,t,n){e.exports={sliderRow:"sliderRow-Tv1W7hM5-"}},z6ID:function(e,t,n){e.exports={separator:"separator-3bp1jCsV-"}}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/chart-widget-gui.8005316cfc1f06be4bf0.js b/public/charting_library/static/bundles/chart-widget-gui.8005316cfc1f06be4bf0.js new file mode 100644 index 0000000..0e990bf --- /dev/null +++ b/public/charting_library/static/bundles/chart-widget-gui.8005316cfc1f06be4bf0.js @@ -0,0 +1,13 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chart-widget-gui"],{"/NcV":function(t,e){t.exports=''},"/vkn":function(t,e){t.exports=''},"1ANp":function(t,e,i){"use strict";function s(t){return"alwaysOn"===t||"alwaysOff"===t?t:"visibleOnMouseOver"}function n(){if(!u){(u=new h.a).setValue(s(d.getValue("NavigationButtons.visibility"))),u.subscribe(u,function(t){d.setValue("NavigationButtons.visibility",s(t.value()))})}return u}function o(){return[{value:"visibleOnMouseOver",title:window.t("Visible on Mouse Over")},{value:"alwaysOn",title:window.t("Always Visible")},{value:"alwaysOff",title:window.t("Always Invisible")}]}function r(){var t,e;return c||(c=new h.a,e=function(){var e=t.value();"alwaysOn"!==e&&"alwaysOff"!==e&&(e=Modernizr.mobiletouch?"alwaysOn":"visibleOnMouseOver"),c&&c.setValue(e)},(t=n()).subscribe(c,e),e()),c}var l,a,h,d,u,c;i.r(e),i.d(e,"property",function(){return n}),i.d(e,"availableValues",function(){return o}),i.d(e,"actualBehavior",function(){return r}),i("YFKU"),l=i("bf9a"),a=i("tc+8"),h=i.n(a),d=i("Vdly")},"3zM7":function(t,e){t.exports=''},"94TV":function(t,e){t.exports=''},"C+zC":function(t,e){t.exports=''},GBBr:function(t,e){t.exports=''},LxXZ:function(t,e,i){"use strict";(function(t){function s(t){t.classList.toggle("js-hidden",!0)}function n(t){t.classList.toggle("js-hidden",!1)}function o(t,e,i,s){var n;this._options=Object.assign({},u,s),this._model=e,this._paneWidget=t,this._chart=t._chart,this.$el=$(document.createElement("div")).addClass("pane-legend"),this._itemsBinding=[],this._mouseEventHandlers=[],this._chart.properties().paneProperties.legendProperties.showStudyTitles.listeners().subscribe(this,this.updateLayout), +this._chart.properties().paneProperties.legendProperties.showSeriesTitle.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showSeriesOHLC.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showBarChange.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showOnlyPriceSource.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showStudyValues.listeners().subscribe(this,this.updateLayout),this._model.mainSeries().properties().style.listeners().subscribe(this,this.updateLayout),this._model.mainSeries().properties().visible.listeners().subscribe(this,this.updateLayout),(n=this._chart.properties().scalesProperties.textColor).listeners().subscribe(this,function(t){this.$el.css("color",t.value())}),this.$el.css("color",n.value()),this._chart.properties().paneProperties.legendProperties.showLegend.subscribe(this,this.updateLayout),this._iconColor=null,this.updateLayout()}i("GVHu").Study;var r=i("tITk").trackEvent,l=(i("uOxu").getLogger("Chart.LegendWidget"),i("Tmoa")),a=i("Ialn").IS_RTL,h=(i("Vdly"),i("S8xo").MouseEventHandler),d=i("QloM").TabNames,u={contextMenuEnabled:!0,sourceSelectionEnabled:!0,symbolMarkerEnabled:!1,miniButtonsWidgetEnabled:!0,alertWidgetEnabled:!0};o.prototype.destroy=function(){this._removeMouseEventHandlers(),this._chart.properties().paneProperties.legendProperties.showLegend.unsubscribeAll(this),this._chart.properties().paneProperties.legendProperties.showStudyTitles.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showSeriesTitle.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showSeriesOHLC.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showBarChange.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showOnlyPriceSource.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showStudyValues.listeners().unsubscribe(this,this.updateLayout),this._model.mainSeries().properties().style.listeners().unsubscribe(this,this.updateLayout),this._model.mainSeries().properties().visible.listeners().unsubscribe(this,this.updateLayout)},o.prototype.updateThemedColors=function(t){this._iconColor=t,this._applyIconColors()},o.prototype._applyIconColors=function(){this.$el.find(".pane-legend-icon-container").css("color",this._iconColor||"")},o.prototype.contextMenuEvent=function(t,e){if(!this._model.chartModel().readOnly()&&this._options.contextMenuEnabled){this._chart.updateActions();var i=e.source;this._model.selectionMacro(function(t){t.clearSelection(),t.addSourceToSelection(i)}),this._paneWidget.showContextMenuForSelection(t)}},o.prototype._removeMouseEventHandlers=function(){this._mouseEventHandlers.forEach(function(t){t.destroy()}), +this._mouseEventHandlers=[]},o.prototype.updateLayout=function(){var e,s,n,o,r,l,a,d,u,c,p,_;if(this._removeMouseEventHandlers(),this._itemsBinding.length=0,this.$el.find(".apply-common-tooltip").trigger("mouseleave"),this.$el.empty(),this._indicatorRows=[],(e=this._paneWidget.state())&&this._model){for(s={showStudyTitles:this._model.model().properties().paneProperties.legendProperties.showStudyTitles.value(),showSeriesTitle:this._chart.properties().paneProperties.legendProperties.showSeriesTitle.value(),showSeriesOHLC:this._chart.properties().paneProperties.legendProperties.showSeriesOHLC.value(),showStudyValues:this._chart.properties().paneProperties.legendProperties.showStudyValues.value(),showLegend:this._model.model().properties().paneProperties.legendProperties.showLegend.value()},n=this._model.mainSeries(),(r=(o=e.orderedSources().slice()).indexOf(n))>-1&&(o.splice(r,1),o.push(n)),l=o.length-1;l>=0;l--)(d=(a=o[l]).statusView())&&(u=a===n,c=this._options.miniButtonsWidgetEnabled,(!u||s.showSeriesTitle||s.showSeriesOHLC||s.showStudyTitles||s.showStudyValues)&&(u&&t.enabled("fundamental_widget")||(!s.showLegend&&u&&c?this.$el.find(".expand-line").length||(p=$("
").addClass("pane-legend-line pane-legend-wrap main expand-line"),this._options.sourceSelectionEnabled||p.addClass("legend-selection-disabled"),p.appendTo(this.$el),this._chartHasStudies()?(_=$('').append($(i("/vkn")).attr({class:"expand closed"})),p.append(_.on("click touchend",this.toggleTitles.bind(this)))):p.addClass("pane-legend-line--without-child-studies"),p.source=a,a.properties().visible.value()||p.addClass("disabled"),s={showStudyTitles:!1,showSeriesTitle:s.showSeriesTitle,showSeriesOHLC:s.showSeriesOHLC,showStudyValues:!1},this._generateItemsForRow(p,d,s),this._mouseEventHandlers.push(new h(p,this,!0)),this.update()):(u||s.showStudyTitles||s.showStudyValues)&&s.showLegend&&(p=$("
").addClass("pane-legend-line pane-legend-wrap"),this._options.sourceSelectionEnabled||p.addClass("legend-selection-disabled"),p.appendTo(this.$el),u||this._indicatorRows.push(p[0]),p.source=a,u&&c?this._chartHasStudies()?(p.addClass("main"),_=$('').append($(i("scAS")).attr({class:"expand"})),p.append(_.on("click touchend",this.toggleTitles.bind(this)))):p.addClass("pane-legend-line--without-child-studies"):p.addClass("study"),a.properties().visible.value()||p.addClass("disabled"),this._generateItemsForRow(p,d,s),this._mouseEventHandlers.push(new h(p,this,!0))))));this.update()}},o.prototype._chartHasStudies=function(){return this._model.model().allStudies().some(function(t){return t.statusView()})},o.prototype._generateItemsForRow=function(e,s,n){var o,r,l,h,d,u,c,p,_,v,m,g=e.source,b=this,y=g===this._model.mainSeries(),w=g.properties().visible.value() +;if((y&&n.showSeriesTitle||!y&&n.showStudyTitles)&&((r=$("")).addClass("pane-legend-line__wrap-description apply-overflow-tooltip"),this._options.contextMenuEnabled&&!this._chart.readOnly()||r.addClass("no-context-menu"),this._options.sourceSelectionEnabled||r.addClass("legend-selection-disabled"),y&&r.addClass("main"),w||r.addClass("disabled"),r.css({"font-weight":s.bold()?"bold":"normal","font-size":s.size()}),this._options.contextMenuEnabled&&r.click(function(t){b.contextMenuEvent(t,e)}),$('').append($(i("3zM7"))).appendTo(r),r.appendTo(e),this._itemsBinding.push({value:s,cell:r,source:e.source}),!this._chart.readOnly()&&g.userEditEnabled()&&t.enabled("edit_buttons_in_legend")&&(o=$(''),a||o.appendTo(e),y&&w||!t.enabled("show_hide_button_in_legend")||$('').append($(i("cgDJ"))).appendTo(o).on("click touchend",this._generateItemsForRow._onShowhideClick.bind(this,g)),!y&&t.enabled("property_pages")&&t.enabled("format_button_in_legend")&&$('').append($(i("sGj7"))).appendTo(o).on("click touchend",this._generateItemsForRow._onFormatClick.bind(this,g)),!y&&t.enabled("delete_button_in_legend")&&$('').append($(i("VLql"))).appendTo(o).on("click touchend",this._generateItemsForRow._onDeleteClick.bind(this,g)))),l=g.legendView(),this.isDataWindowValuesVisible(l)&&l.isValuesVisible()&&(!y||w)){for(h=[],d=[],u=$('
').css({"font-size":s.size()}),this._options.contextMenuEnabled||u.addClass("no-context-menu"),this._options.sourceSelectionEnabled||u.addClass("legend-selection-disabled"),c=0;c").appendTo(u),_=y?$("").appendTo(p):null,v=$("").appendTo(p),y&&(_.addClass("pane-legend-item-value-title__main"),v.addClass("pane-legend-item-value__main")),g.properties().visible.value()||(v.addClass("disabled"),_&&_.addClass("disabled")),h.push(v),_&&d.push(_);m=$("").appendTo(u.appendTo(e)),this._itemsBinding.push({value:l,cell:h,titleCells:d.length?d:null,source:g,additional:m})}o&&a&&o.appendTo(e),this._applyIconColors()},o.prototype.isDataWindowValuesVisible=function(t){return this._chart.onWidget()?!!t&&!this._chart.isSmall():!!t},o.prototype._generateItemsForRow._onShowhideClick=function(t){this._model.setProperty(t.properties().visible,!t.properties().visible.value(),"Show/Hide "+t.title()),this._trackLegendEvent("Show/Hide")},o.prototype._generateItemsForRow._onFormatClick=function(t,e){t.userEditEnabled()&&this._chart.showChartPropertiesForSource(t,d.style),this._trackLegendEvent("Settings")},o.prototype._generateItemsForRow._onDeleteClick=function(t){ +t.isUserDeletable()&&(t.hasChildren()?showDeleteStudyTreeConfirm(this._model.removeSource.bind(this._model,t)):this._model.removeSource(t)),this._trackLegendEvent("Remove")},o.prototype._generateItemsForRow._onAddChildSourceClick=function(t){var e,i,s=this._chart.showIndicators(t);s&&(e=function(){r("SOS","Apply SOS","Apply by Plus SOS")},(i=this._model.model().studyInserted()).subscribe(this,e),s.visibilityChanged.subscribe(this,function(t){t||i.unsubscribe(this,e)},!0)),this._trackLegendEvent("Indicator on indicator")},o.prototype._generateItemsForRow._onViewSorceClick=function(t){var e=t.metaInfo();this._getPineSourceCode(e).done(function(t){TradingView.bottomWidgetBar&&TradingView.bottomWidgetBar.activateScriptEditorTab(t)}),this._trackLegendEvent("Source code")},o.prototype._getPineSourceCode=function(t){return $.Deferred()},o.prototype.setItemEnabled=function(t,e){var i=!t.hasClass("disabled"),s=t.closest(".pane-legend-wrap");e&&!i?(t.removeClass("disabled"),s.removeClass("disabled")):!e&&i&&(t.addClass("disabled"),s.addClass("disabled"))},o.prototype.valueChanged=function(t,e,i){return t[e]!==i&&(t[e]=i,!0)},o.prototype.firstTitle=function(){return this.$el.find(".pane-legend-wrap:first-child")},o.prototype.updateTitle=function(){var e,i,s,n,o,r,l,a,h,d,u,c,p;for(s=this._itemsBinding.length;s--;)i=this._itemsBinding[s],Array.isArray(i.cell)||(i.last||(i.last={}),n=i.last,e=(o=i.source).properties().visible.value(),this.valueChanged(n,"sourceVisible",e)&&this.setItemEnabled(i.cell,e),r=i.value.color(),l=o!==this._model.mainSeries()&&this._model.selection().isSelected(o)?"bold":"normal","function"==typeof i.value.getSplitTitle?(a=(u=i.value.getSplitTitle())[0].trim(),h=u[1].trim(),d=u[2].trim()):(a=i.value.text().trim(),h="",d=""),t.enabled("fundamental_widget")&&(a=((p=(c=this._model.mainSeries()).symbolInfo())?p.name:c.actualSymbol())+" "+a),i.isCellInited||(i.isCellInited=!0,d||h?(i.titleElement=document.createElement("div"),i.titleElement.classList.add("pane-legend-title__container"),i.cell[0].appendChild(i.titleElement),i.descriptionElement=document.createElement("div"),i.descriptionElement.classList.add("pane-legend-title__description"),i.titleElement.appendChild(i.descriptionElement),h&&(i.intervalElement=document.createElement("div"),i.intervalElement.classList.add("pane-legend-title__interval"),i.titleElement.appendChild(i.intervalElement)),d&&(i.detailsElement=document.createElement("div"),i.detailsElement.classList.add("pane-legend-title__details"),i.titleElement.appendChild(i.detailsElement)),i.titleElement.classList.add("apply-overflow-tooltip","apply-overflow-tooltip--allow-text","apply-overflow-tooltip--check-children")):(i.titleElement=document.createElement("div"),i.titleElement.classList.add("apply-overflow-tooltip","pane-legend-title__container"),i.cell[0].appendChild(i.titleElement),i.descriptionElement=document.createElement("div"),i.descriptionElement.classList.add("pane-legend-title__description"),i.titleElement.appendChild(i.descriptionElement))), +(this.valueChanged(n,"color",r)||this.valueChanged(n,"fontWeight",l))&&(i.titleElement.style.color=r,i.titleElement.style.borderColor=r,i.titleElement.style.fontWeight=l),a!==i.description&&(i.descriptionElement.textContent=TradingView.clean(a,!0),i.description=a),i.intervalElement&&h&&h!==i.interval&&(i.intervalElement.textContent=TradingView.clean(h,!0),i.interval=h),i.detailsElement&&d&&d!==i.details&&(i.detailsElement.textContent=TradingView.clean(d,!0),i.details=d));this._chart.resizeIndicator()},o.prototype.update=function(t){var e,i,o,r,a,h,d,u,c,p,_,v=!this._chart.isActive()&&!this._chart.crossHairSyncEnabled(),m=v?s:n;for(this._indicatorRows.forEach(m),this.updateTitle(),u=this._itemsBinding.length;u--;)if(e=(r=this._itemsBinding[u]).cell,i=r.titleCells,o=r.source.properties().visible.value(),Array.isArray(e))for(r.last||(r.last={},r.last.dwView||(r.last.dwView={})),c=r.last,a=r.value.items(),p=this.valueChanged(c,"sourceVisible",o),h=0;h'},MjtL:function(t,e){t.exports=''},TGRH:function(t,e,i){"use strict";var s,n,o,r,l,a,h,d,u,c,p,_,v,m,g,b,y,w,f,C,M,B,L,T;i.r(e),i.d(e,"ControlBarNavigation",function(){return T}),i("YFKU"),s=i("1ANp"),n=i("Ialn"),o=i("TzTt"),r=i("Tmoa"),l=i("ei7k"),a=i("qFKp"),i("tITk"),h=i("MjtL"),d=i("e8Rm"),u=i("e2QN"),c=i("vg09"),p=i("/NcV"),_=i("94TV"),v=i("qfuz"),m=i("MQEA"),g=i("jrhZ"),y=Object(l.b)({keys:["Alt","R"],text:"{0} + {1}"}),w=Object(l.b)({keys:[v], +text:"{0}"}),f=Object(l.b)({keys:[m],text:"{0}"}),C='
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t'+d+'\n\t\t\t
\n\t\t\t
\n\t\t\t\t'+c+'\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t'+h+'\n\t\t\t
\n\t\t\t
\n\t\t\t\t'+p+'\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t'+u+"\n\t\t
\n\t
\n
",M='
\n\t'+_+"\n
",(b={}).moving="wait_finishing",b.wait_finishing="stop",b.stop="moving",B=b,L="control-bar__btn--btn-hidden",T=function(){function t(t,e){this._back=null,this._backButtonVisible=!1,this._boundKeydownHandler=null,this._boundKeyupHandler=null,this._boundMouseHandler=null,this._chartBackgroundProperty=null,this._chartModel=null,this._checkIntervalId=0,this._controlBar=null,this._controlBarVisible=!1,this._currentDistance=0,this._deferredFinishTimeout=0,this._finishingTimeout=0,this._moveType="",this._movingTimeout=0,this._pressedKey=[],this._priceAxisChanged=null,this._resetAvailabilityChanged=null,this._priceAxisName="",this._rafId=0,this._startTime=0,this._state="stop",this._visibilityTypeProperty=null,this._widget=null,this._btnGroups=null,this._chart=t,this._parent=e,this._init(),this._initHandlers()}return t.prototype.destroy=function(){null!==this._visibilityTypeProperty&&(this._visibilityTypeProperty.unsubscribe(this,this._onVisibilityTypeChange),this._visibilityTypeProperty=null),null!==this._boundMouseHandler&&(this._parent.removeEventListener("mousemove",this._boundMouseHandler,!1),this._parent.removeEventListener("mouseleave",this._boundMouseHandler,!1),this._boundMouseHandler=null),null!==this._boundKeydownHandler&&(this._parent.ownerDocument.removeEventListener("keydown",this._boundKeydownHandler),this._boundKeydownHandler=null),null!==this._boundKeyupHandler&&(this._parent.ownerDocument.removeEventListener("keyup",this._boundKeyupHandler),this._boundKeyupHandler=null),clearTimeout(this._movingTimeout),null!==this._priceAxisChanged&&(this._priceAxisChanged.unsubscribe(this,this._updateBackBtnPosition),this._priceAxisChanged=null), +null!==this._chartBackgroundProperty&&(clearInterval(this._checkIntervalId),this._chartBackgroundProperty.unsubscribe(this,this._updateBgBarStyle),this._chartBackgroundProperty=null),null!==this._resetAvailabilityChanged&&(this._resetAvailabilityChanged.unsubscribe(this,this._updateResetScalesButtonVisibility),this._resetAvailabilityChanged=null),this._chart=null},t.prototype.updatePosition=function(t){var e,i;null!==this._widget&&null!==this._controlBar&&(e=this._chart.getPriceAxisMaxWidthByName("left"),i=this._chart.getPriceAxisMaxWidthByName("right"),this._updateBtnGroupVisibility(t,e,i))},t.prototype._init=function(){var t,e,i=this;if(this._widget=Object(o.a)(C).querySelector(".control-bar-wrapper"),this._back=Object(o.a)(M).querySelector(".control-bar__btn--back-present"),this._controlBar=this._widget.querySelector(".control-bar"),this._btnGroups=Array.from(this._controlBar.querySelectorAll(".js-btn-group")),a.CheckMobile.any())for(t=0,e=this._btnGroups;t=i.left-100&&t.clientX<=i.right+100&&t.clientY>=i.top-100&&t.clientY<=i.bottom+100),this._controlBarVisible!==e&&(this._controlBarVisible=e,null!==this._controlBar&&null===this._rafId&&(this._rafId=this._controlBar.ownerDocument.defaultView.requestAnimationFrame(this._updateControlBarVisibility.bind(this)))))},t.prototype._updateControlBarVisibility=function(){this._rafId=null,null!==this._controlBar&&this._controlBar.classList.toggle("control-bar--hidden",!this._controlBarVisible)},t.prototype._updateBackBtnPosition=function(){if("left"===this._priceAxisName||"right"===this._priceAxisName){var t=this._chart.getPriceAxisMaxWidthByName(this._priceAxisName)+14;t&&null!==this._back&&(this._back.style.marginRight=t+"px")}},t.prototype._updateBgBarStyle=function(){var t,e,i;if(null!==this._chartModel){for(t=Object(r.getLuminance)(this._chartModel.model().properties().paneProperties.background.value())<.5,e=0,i=Object.values(this._buttons);e(l=r[o]).leftPartWidth,d=s-i>l.rightPartWidth,u=!h||!d,void 0!==(c=this._getBtnGroup(l.className))&&u!==c.classList.contains("js-hidden")&&(c.classList.toggle("js-hidden",u),this._updateControlBarPosition())},t.prototype._getBtnGroup=function(t){if(null!==this._btnGroups)return this._btnGroups.find(function(e){return e.classList.contains(t)})},t.prototype._updateControlBarPosition=function(){var t,e;null!==this._widget&&null!==this._controlBar&&(t=0,t=(e=this._controlBar.querySelectorAll(".js-btn-group:not(.js-hidden)")).length>0?86*e.length:50,this._widget.style.left="calc(50% - "+Math.ceil(t/2)+"px)")},t.prototype._updateResetScalesButtonVisibility=function(){if(null!==this._chartModel){var t=this._chartModel.model().isScalesResetAvailable();this._buttons.turn.classList.toggle(L,!t)}},t.prototype._move=function(t){var e,i,s,n=this;null!==this._chartModel&&"stop"===this._state&&this._chartModel.beginUndoMacro(1===t?"Move Left":"Move Right"),this._state=B.stop,this._moveType="animated",this._deferredFinishTimeout&&(clearTimeout(this._deferredFinishTimeout),this._deferredFinishTimeout=0),this._finishingTimeout&&(clearTimeout(this._finishingTimeout),this._finishingTimeout=0),this._startTime=Date.now(),0===this._movingTimeout&&(e=this._startTime,i=10,s=function(){n._moveStep(e,0,50*t,1e3),n._movingTimeout=setTimeout(s,i)},this._movingTimeout=setTimeout(s,i))},t.prototype._moveStep=function(t,e,i,s){var n,o,r;return null===this._chartModel||this._chartModel.timeScale().isEmpty()?void 0:((n=Date.now())1||!isFinite(o))&&(o=1),r=1-Math.pow(1-o,3),this._currentDistance=(i-e)*r+e,this._chartModel.scrollChart(this._currentDistance),o)},t.prototype._finishMove=function(){var t,e,i,s=this;clearTimeout(this._movingTimeout),this._movingTimeout=0,this._deferredFinishTimeout=0,t=this._currentDistance,e=Date.now(),i=function(){var n=s._moveStep(e,t,0,700);n&&n<1?s._finishingTimeout=setTimeout(i,10):null!==s._chartModel&&(s._state=B.wait_finishing,s._moveType="",s._movingTimeout=0,s._currentDistance=0,s._chartModel.endUndoMacro())},this._finishingTimeout=setTimeout(i,10)},t.prototype._stopMove=function(){"moving"===this._state&&(this._state=B.moving,Date.now()-this._startTime<200?this._deferredFinishTimeout=setTimeout(this._finishMove.bind(this),200-(Date.now()-this._startTime)):this._finishMove())},t.prototype._moveByBar=function(t){var e,i,s,n,o,r,l=this;if(null!==this._chartModel){if((e=this._chartModel.timeScale()).isEmpty())return;"stop"===this._state&&this._chartModel.beginUndoMacro(1===t?"Move Left":"Move Right"), +null!==e.visibleBarsStrictRange()&&(i=e.indexToCoordinate(e.visibleBarsStrictRange().lastBar())+e.barSpacing()/2,Math.abs(e.width()-i)>e.barSpacing()/6&&this._chartModel.scrollChart(e.width()-i)),this._state=B.stop,this._moveType="by_bar",this._startTime=Date.now(),this._movingTimeout||(s=0,n=150,o=400,r=function(){l._moveByBarStep(t),s++,n>100&&(n-=s/5*20),l._movingTimeout=setTimeout(r,n)},this._movingTimeout=setTimeout(r,o),this._moveByBarStep(t))}},t.prototype._moveByBarStep=function(t){if(null!==this._chartModel){if(this._chartModel.timeScale().isEmpty())return;this._chartModel.scrollChartByBar(t)}},t.prototype._stopMoveByBar=function(){"moving"===this._state&&(clearTimeout(this._movingTimeout),this._movingTimeout=0,this._state=B.wait_finishing,this._moveType="",this._movingTimeout=0,this._currentDistance=0,null!==this._chartModel&&this._chartModel.endUndoMacro())},t.prototype._keydownHandler=function(t){var e,i;t.metaKey||37!==(e=t.which)&&39!==e||this._pressedKey[e]||(this._pressedKey[e]=!0,t.target.closest("input, textarea")||(i=37===e?1:-1,t.ctrlKey||t.altKey?this._move(i):this._moveByBar(i),t.preventDefault()))},t.prototype._keyupHandler=function(t){var e=t.which;37!==e&&39!==e||t.target.closest("input, textarea")||(this._pressedKey[t.which]=!1,"by_bar"===this._moveType?this._stopMoveByBar():this._stopMove())},t.prototype._trackEvent=function(t){0},t}()},VLql:function(t,e){t.exports=''},c44J:function(t,e){t.exports=''},cgDJ:function(t,e){t.exports=''},e2QN:function(t,e){t.exports=''},e8Rm:function(t,e){t.exports=''},jrhZ:function(t,e,i){},kGiK:function(t,e){t.exports=''},koft:function(t,e,i){"use strict";function s(t,e,i){this._model=e, +this._paneWidget=t,this._chart=t._chart,this._mainDiv=i,this.jqDiv=$('
'),this._initVisibility(),this.update(),this.jqDiv.appendTo(i)}var n=i("1ANp");s.prototype.updateThemedColors=function(t){t?this.jqDiv[0].style.color=t:this.jqDiv[0].style.removeProperty("color")},s.prototype.update=function(){var t,e,s,n,o,r,l,a=this._paneWidget.state();if(a)if(this._visible&&this._chart.isActive()){if(this.jqDiv[0].classList.remove("pane-controls--hidden"),e=(t=this)._model.panes().indexOf(a),s=Modernizr.mobiletouch,this.jqDiv.toggleClass("toppane",0===e||this._chart.isMaximizedPane()),n=!1,!a.containsMainSeries()&&!this._chart.isMaximizedPane()){for(o=0,l=(r=a.dataSources()).length;l--;)if(r[l]instanceof TradingView.Study&&++o>1){n=!0;break}r=null}e>0&&!this._chart.isMaximizedPane()&&!s?(this._$upButton||(this._$upButton=$(document.createElement("a")).addClass("pane-legend-icon up").append($(i("C+zC"))).attr("title",$.t("Move Up")).on("click",function(){t._model.rearrangePanes(t._chart,t._model.panes().indexOf(t._paneWidget.state()),"up")})),this._$upButton.appendTo(this.jqDiv)):this._$upButton&&this._$upButton.detach(),e1&&!this._chart.isMaximizedPane()&&!s?(this._$maximizeButton||(this._$maximizeButton=$(document.createElement("a")).addClass("pane-legend-icon maximize").append($(i("c44J"))).attr("title",$.t("Toggle Maximize Pane")).on("click",function(){t._chart.toggleMaximizePane(t._paneWidget)})),this._$maximizeButton.appendTo(this.jqDiv)):this._$maximizeButton&&this._$maximizeButton.detach(),this._model.panes().length>1&&this._chart.isMaximizedPane()?(this._$restoreButton||(this._$restoreButton=$(document.createElement("a")).addClass("pane-legend-icon restore").append($(i("kGiK"))).attr("title",$.t("Toggle Maximize Pane")).on("click",function(){t._chart.toggleMaximizePane(t._paneWidget)})),this._$restoreButton.appendTo(this.jqDiv)):this._$restoreButton&&this._$restoreButton.detach()}else this.jqDiv[0].classList.add("pane-controls--hidden")},s.prototype.destroy=function(){this._visibilityProperty&&(this._visibilityProperty.unsubscribe(this,this._onVisibilityPropertyChange),this._visibilityProperty=null),this._boundMouseHandler&&(this._mainDiv[0].removeEventListener("mouseenter",this._boundMouseHandler,!1), +this._mainDiv[0].removeEventListener("mouseleave",this._boundMouseHandler,!1),this._boundMouseHandler=null),this.jqDiv.remove()},s.prototype._initVisibility=function(){this._visible=!0,this._visibilityProperty=n.actualBehavior(),this._visibilityProperty.subscribe(this,this._onVisibilityPropertyChange),this._onVisibilityPropertyChange()},s.prototype._onVisibilityPropertyChange=function(){var t=this._visibilityProperty.value();"alwaysOn"===t||"alwaysOff"===t?(this._visible="alwaysOn"===t,this._boundMouseHandler&&(this._mainDiv[0].removeEventListener("mouseenter",this._boundMouseHandler),this._mainDiv[0].removeEventListener("mouseleave",this._boundMouseHandler),this._boundMouseHandler=null)):(this._boundMouseHandler||(this._boundMouseHandler=this._visibilityMouseHandler.bind(this),this._mainDiv[0].addEventListener("mouseenter",this._boundMouseHandler),this._mainDiv[0].addEventListener("mouseleave",this._boundMouseHandler)),this._visible=!1),this.update()},s.prototype._visibilityMouseHandler=function(t){this._visible="mouseenter"===t.type,this.update()},t.exports=s},qfuz:function(t,e){t.exports=''},sGj7:function(t,e){t.exports=''},scAS:function(t,e){t.exports=''},vg09:function(t,e){t.exports=''}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/clipboard.5403f9bd852af06addff.js b/public/charting_library/static/bundles/clipboard.5403f9bd852af06addff.js new file mode 100644 index 0000000..480d316 --- /dev/null +++ b/public/charting_library/static/bundles/clipboard.5403f9bd852af06addff.js @@ -0,0 +1,4 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["clipboard"],{Ddwv:function(t,e,n){var o,i,r;i=[t,n("YDNs"),n("wOJ8"),n("TiCD")],void 0===(r="function"==typeof(o=function(t,e,n,o){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var a=i(e),c=i(n),l=i(o),u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=function(){function t(t,e){var n,o;for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===u(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,l.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return r("action",t)}},{key:"defaultTarget",value:function(t){var e=r("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return r("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(c.default);t.exports=f})?o.apply(e,i):o)||(t.exports=r)},TiCD:function(t,e,n){var o=n("b+/x"),i=n("jFDo");t.exports=function(t,e,n){ +if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!o.string(e))throw new TypeError("Second argument must be a String");if(!o.fn(n))throw new TypeError("Third argument must be a Function");if(o.node(t))return function(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}(t,e,n);if(o.nodeList(t))return function(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}(t,e,n);if(o.string(t))return function(t,e,n){return i(document.body,t,e,n)}(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},YDNs:function(t,e,n){var o,i,r;i=[t,n("gvr7")],void 0===(r="function"==typeof(o=function(t,e){"use strict";var n,o=(n=e)&&n.__esModule?n:{default:n},i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=function(){function t(t,e){var n,o;for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t,e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px",t=window.pageYOffset||document.documentElement.scrollTop,this.fakeElem.style.top=t+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{ +t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=a})?o.apply(e,i):o)||(t.exports=r)},"b+/x":function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},gvr7:function(t,e){t.exports=function(t){var e,n,o,i;return"SELECT"===t.nodeName?(t.focus(),e=t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((n=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value):(t.hasAttribute("contenteditable")&&t.focus(),o=window.getSelection(),(i=document.createRange()).selectNodeContents(t),o.removeAllRanges(),o.addRange(i),e=o.toString()),e}},jFDo:function(t,e,n){function o(t,e,n,o,r){var a=function(t,e,n,o){return function(n){n.delegateTarget=i(n.target,e),n.delegateTarget&&o.call(t,n)}}.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}var i=n("lNia");t.exports=function(t,e,n,i,r){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,i,r)}))}},lNia:function(t,e){var n,o=9;"undefined"==typeof Element||Element.prototype.matches||((n=Element.prototype).matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector),t.exports=function(t,e){for(;t&&t.nodeType!==o;){ +if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},wOJ8:function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){i.off(t,o),e.apply(n,arguments)}var i=this;return o._=e,this.on(t,o,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;o2&&void 0!==arguments[2]?arguments[2]:{};for(w=$.extend({},{title:$.t("Confirm Inputs"),callback:function(t){}},w),n=null,a=(0,o.createDialog)({title:w.title,contentWrapTemplate:'
',width:c,closeOnClickAtOtherDialogs:!0,destroyOnClose:!0,actionsWrapTemplate:'
',isClickOutFn:function(t){var e=n.symbolSearchPopup();if(e)return e[0]!==t.target&&!e[0].contains(t.target)&&void 0},actions:[{name:"apply",type:"primary",text:$.t("Apply"),key:13}]}),r=a,d=(0,l.merge)({},e.defaults.inputs),u=0;uc&&a.$el.css("max-width",m),g.find("input,select").first().focus()},e.instance=function(){return r},o=n("YDhE"),i=n("L9lC"),l=n("ogJP"),a=n("tc+8"),s=(d=a)&&d.__esModule?d:{default:d},n("PVgW"),n("jgM0"),n("KFNk"),c=450,r=null}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/confirm-symbol-input-dialog.c72289c830292c73812f.js b/public/charting_library/static/bundles/confirm-symbol-input-dialog.c72289c830292c73812f.js new file mode 100644 index 0000000..be24ec1 --- /dev/null +++ b/public/charting_library/static/bundles/confirm-symbol-input-dialog.c72289c830292c73812f.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["confirm-symbol-input-dialog"],{kzGG:function(n,o,t){"use strict";function e(n,o,t){var e,i,p,a=$('');a.css({float:"none","box-sizing":"border-box",width:"100%"}),e=null,i=Object(c.createDialog)({title:o||window.t("Add Symbol"),width:400,actions:[{name:"apply",text:window.t("Apply"),type:"primary"}],content:a,isClickOutFn:function(n){if(e&&(n.target===e[0]||e[0].contains(n.target)))return!1}}),p=Object(l.symbolSearchUIService)().bindToInput(a,{callback:function(o){n(o),i.close()},onPopupOpen:function(n){n.css("z-index",i.zIndex),e=n},onPopupClose:function(){e=null}}),i.on("action:apply",function(){p.then(function(n){n.acceptTypeIn()})}),t&&i.on("beforeClose",function(){t()}),i.open()}var i,c,l;t.r(o),t.d(o,"showConfirmSymbolInputDialog",function(){return e}),i=t("P5fv"),t("YFKU"),c=t("YDhE"),l=t("pZll")}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/context-menu-renderer.5eff9c34fa03e94b2c1b.js b/public/charting_library/static/bundles/context-menu-renderer.5eff9c34fa03e94b2c1b.js new file mode 100644 index 0000000..a525b8c --- /dev/null +++ b/public/charting_library/static/bundles/context-menu-renderer.5eff9c34fa03e94b2c1b.js @@ -0,0 +1,5 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["context-menu-renderer"],{"G/dZ":function(e,t,n){e.exports={toolbox:"toolbox-1zer1221-"}},Gpmm:function(e,t,n){e.exports={row:"row-1Gn06tA2-",line:"line-c_e_alAN-",hint:"hint-18i4fysm-"}},K5ke:function(e,t,n){e.exports={loader:"loader-3Pj8ExOX-",item:"item-2n55_7om-","tv-button-loader":"tv-button-loader-SKpJjjYw-",black:"black-eFIQWyf4-",white:"white-2Ma0ajvT-",gray:"gray-24fvVR0S-"}},X64X:function(e,t,n){e.exports={loaderWrap:"loaderWrap-18NjkayD-",loader:"loader-Cgjcl0qz-"}},cbq4:function(e,t,n){"use strict";function o(e){return l.createElement("tr",{className:_.row},l.createElement("td",null,l.createElement("div",{className:_.line})),l.createElement("td",null,l.createElement("div",{className:_.line}),e.hint?l.createElement("div",{className:_.hint},e.hint):null))}function s(e){return l.createElement(C,{icon:w,onClick:e.onClick})}function r(e){return l.createElement(E,{label:l.createElement("div",{className:g.loaderWrap},l.createElement(O.a,{className:g.loader,color:"gray"})),noInteractive:!0,onMouseOver:e.onMouseOver})}function i(e){return l.createElement(E,{label:e.label,noInteractive:!0,disabled:!0,onMouseOver:e.onMouseOver})}var a,l,c,u,p,h,m,d,_,f,v,b,S,y,C,w,E,k,x,N,M,g,O,I,T,D,H,P,A,j;n.r(t),a=n("mrSG"),l=n("q1tI"),c=n("i8i4"),u=n("DTHj"),p=n("RgaO"),h=n("ycI/"),m=n("TSYQ"),d=n("zRdu"),_=n("Gpmm"),f=n("ycgn"),v=n("euMy"),b=n("hn2c"),n("bf9a"),S=n("L/Ed"),y=n("G/dZ"),C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleClick=function(e){t.props.onClick(e.nativeEvent)},t}return a.__extends(t,e),t.prototype.render=function(){return l.createElement("span",{className:y.toolbox,dangerouslySetInnerHTML:{__html:this.props.icon},onClick:this._handleClick,"data-toolbox-icon":!0})},t}(l.PureComponent),w=n("PgQx"),E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleMouseOver=function(e){var n,o,s;(n=e.nativeEvent,o=n.sourceCapabilities,void 0===(s=o&&o.firesTouchEvents)&&(s=Modernizr.touch),s)||t.props.onMouseOver&&t.props.onMouseOver()},t._handleClickToolbox=function(e){e.stopPropagation(),t.props.onClickToolbox&&t.props.onClickToolbox()},t}return a.__extends(t,e),t.prototype.render=function(){return l.createElement(l.Fragment,null,l.createElement("tr",{className:m(f.item,!this.props.noInteractive&&f.interactive,this.props.hovered&&f.hovered,this.props.disabled&&f.disabled,this.props.active&&f.active),onClick:this.props.onClick,onMouseOver:this._handleMouseOver,ref:this.props.reference,"data-action-name":this.props.actionName},l.createElement("td",{className:m(f.iconCell),"data-icon-cell":!0},this._icon()),l.createElement("td",null,l.createElement("div",{className:f.content},l.createElement("span",{className:m(f.label,this.props.checked&&f.checked),"data-label":!0},this.props.label),this._toolbox(),this.props.hasSubItems?l.createElement("span",{className:f.arrowIcon,dangerouslySetInnerHTML:{__html:b},"data-submenu-arrow":!0 +}):null,!this.props.hasSubItems&&this.props.shortcutHint?l.createElement("span",{className:f.shortcut},this.props.shortcutHint):null))),l.createElement("tr",{className:f.subMenu},l.createElement("td",null,this.props.children)))},t.prototype._icon=function(){var e,t;return this.props.checkable?this.props.checked?(e=!this.props.icon&&!this.props.iconChecked,t=this.props.iconChecked||this.props.icon||v,l.createElement("span",{className:m(f.icon,e&&f.checkmark),dangerouslySetInnerHTML:{__html:t},"data-icon-checkmark":e})):this.props.icon?l.createElement("span",{className:f.icon,dangerouslySetInnerHTML:{__html:this.props.icon}}):l.createElement("span",{className:f.icon}):this.props.icon?l.createElement("span",{className:f.icon,dangerouslySetInnerHTML:{__html:this.props.icon}}):null},t.prototype._toolbox=function(){return this.props.toolbox?l.createElement("span",{className:m(f.toolbox,this.props.showToolboxOnHover&&f.showToolboxOnHover),onClick:this._handleClickToolbox,"data-toolbox":!0},this._renderToolboxContent()):null},t.prototype._renderToolboxContent=function(){if(this.props.toolbox)switch(this.props.toolbox.type){case S.ToolboxType.Delete:return l.createElement(s,{onClick:this.props.toolbox.action})}return null},t}(l.PureComponent),k=n("tWVy"),x=n("tITk"),N=n("Ialn"),M=function(e){function t(t){var n=e.call(this,t)||this;return n._itemRef=null,n._handleClick=function(e){e.isDefaultPrevented()||n.state.disabled||(n._hasSubItems()?n._showSubMenu():(n.state.doNotCloseOnClick||Object(k.b)(),n.props.action.execute(),n._trackEvent()))},n._handleClickToolbox=function(){Object(k.b)()},n._showSubMenu=function(){n.props.onShowSubMenu(n.props.action)},n._calcSubMenuPos=function(e,t){var o,s,r,i,a,l,c;return n._itemRef?(s=(o=n._itemRef.getBoundingClientRect()).left,r=o.right,i=o.top,a=document.documentElement.clientWidth,l={x:s-e,y:i},c={x:r,y:i},N.IS_RTL?s<=e?c:l:a-r>=e?c:l):{x:0,y:10}},n._updateState=function(e){n.setState(e.getState())},n._setItemRef=function(e){n._itemRef=e},n.state=a.__assign({},n.props.action.getState()),n}return a.__extends(t,e),t.prototype.componentDidMount=function(){this.props.action.onUpdate().subscribe(this,this._updateState)},t.prototype.componentWillUnmount=function(){this.props.action.onUpdate().unsubscribe(this,this._updateState)},t.prototype.render=function(){return l.createElement(E,a.__assign({reference:this._setItemRef,onClick:this._handleClick,onClickToolbox:this._handleClickToolbox,onMouseOver:this._showSubMenu,hovered:this.props.isSubMenuOpened,hasSubItems:this._hasSubItems(),actionName:this.state.name},this.state),l.createElement(A,{isOpened:this.props.isSubMenuOpened,items:this.state.subItems,position:this._calcSubMenuPos,menuStatName:this.props.menuStatName,parentStatName:this._getStatName()}))},t.prototype._hasSubItems=function(){return this.state.subItems.length>0},t.prototype._trackEvent=function(){var e=this._getStatName();Object(x.trackEvent)("ContextMenuClick",this.props.menuStatName||"",e)},t.prototype._getStatName=function(){ +return[this.props.parentStatName,this.state.statName].filter(function(e){return Boolean(e)}).join(".")},t}(l.PureComponent),g=n("X64X"),O=n("ntfI"),I=n("4O8T"),T=n.n(I),D=function(e){function t(t){var n=e.call(this,t)||this;return n._loadEmitter=new T.a,n._onDone=function(){n.setState({loaded:!0,failed:!1})},n._onFail=function(e){n.setState({failed:!0,error:e})},n._handleMouseOver=function(){n.props.onShowSubMenu(n.props.action)},n.state={loaded:n.props.action.isLoaded(),failed:!1,error:""},n}return a.__extends(t,e),t.prototype.componentDidMount=function(){this._loadEmitter.on("done",this._onDone),this._loadEmitter.on("fail",this._onFail),this._load()},t.prototype.componentWillUnmount=function(){this._loadEmitter.removeEvent("done"),this._loadEmitter.removeEvent("fail")},t.prototype.render=function(){return this.state.failed?l.createElement(i,{label:this.state.error,onMouseOver:this._handleMouseOver}):this.state.loaded?l.createElement(M,a.__assign({},this.props)):l.createElement(r,{onMouseOver:this._handleMouseOver})},t.prototype._load=function(){var e=this;this.props.action.loadOptions().then(function(){e._loadEmitter.emit("done")}).catch(function(t){e._loadEmitter.emit("fail",t)})},t}(l.PureComponent),H=function(e){function t(t){var n=e.call(this,t)||this;return n._handleShowSubMenu=function(e){var t=e.getState();n.setState({showSubMenuOf:t.subItems.length?e:void 0})},n.state={},n}return a.__extends(t,e),t.prototype.render=function(){var e=this;return l.createElement("table",null,l.createElement("tbody",null,this.props.items.map(function(t){return e._item(t)})))},t.getDerivedStateFromProps=function(e,t){return!e.parentIsOpened&&t.showSubMenuOf?{showSubMenuOf:void 0}:null},t.prototype._item=function(e){switch(e.type){case d.a.Separator:return l.createElement(o,{key:e.id,hint:e.getHint()});case d.a.Action:return l.createElement(M,{key:e.id,action:e,onShowSubMenu:this._handleShowSubMenu,isSubMenuOpened:this.state.showSubMenuOf===e,menuStatName:this.props.menuStatName,parentStatName:this.props.parentStatName});case d.a.ActionAsync:return l.createElement(D,{key:e.id,action:e,onShowSubMenu:this._handleShowSubMenu,isSubMenuOpened:this.state.showSubMenuOf===e,menuStatName:this.props.menuStatName,parentStatName:this.props.parentStatName});default:return null}},t}(l.PureComponent),P=n("t3rk"),A=function(e){function t(t){var n=e.call(this,t)||this;return n._handleClose=function(){n.props.onClose&&n.props.onClose()},n._handleOutsideClickClose=function(e){var t=n.props,o=t.doNotCloseOn,s=t.onClose;!s||void 0!==o&&o.contains(e.target)||s()},n.state={},n}return a.__extends(t,e),t.prototype.render=function(){var e=this.props,t=e.isOpened,n=(e.onClose,e.items),o=(e.doNotCloseOn,e.menuStatName),s=e.parentStatName,r=a.__rest(e,["isOpened","onClose","items","doNotCloseOn","menuStatName","parentStatName"]);return t?l.createElement(p.a,{handler:this._handleOutsideClickClose,mouseDown:!0,touchStart:!0,ctor:"div"},l.createElement(h.a,{keyCode:27,eventType:"keyup",handler:this._handleClose}),l.createElement(u.a,a.__assign({},r,{ +isOpened:this.props.isOpened,className:m(P.menu,"context-menu"),onClose:this._handleClose,noMomentumBasedScroll:!0}),l.createElement(H,{items:n,menuStatName:o,parentStatName:s,parentIsOpened:t}))):null},t}(l.PureComponent),n.d(t,"ContextMenuRenderer",function(){return j}),j=function(){function e(e,t,n,o){this._root=null,this._isShown=!1,this._props={isOpened:!1,items:e,position:{x:0,y:0},menuStatName:t.statName},this._onDestroy=n,this._onShow=o}return e.prototype.show=function(e,t,n){var o=this;this._onShow&&this._onShow(),this._isShown=!0,this._render(a.__assign({},this._props,{position:function(t,o){return"function"==typeof e&&(e=e(t,o)),e.touches&&e.touches.length>0&&(e={clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}),{x:!n&&N.IS_RTL?e.clientX-t:e.clientX,y:e.clientY,overrideHeight:e.overrideHeight}},isOpened:!0,onClose:function(){o.hide(),o.destroy()},doNotCloseOn:t}))},e.prototype.hide=function(){this._isShown=!1,this._render(a.__assign({},this._props,{isOpened:!1}))},e.prototype.isShown=function(){return this._isShown},e.prototype.destroy=function(){this._isShown=!1,this._root&&(c.unmountComponentAtNode(this._root),document.body.removeChild(this._root),this._root=null),this._onDestroy&&this._onDestroy()},e.prototype._render=function(e){this._root||(this._root=document.createElement("span"),this._root.className="context-menu-wrapper",document.body.appendChild(this._root)),c.render(l.createElement(A,e),this._root)},e}()},euMy:function(e,t){e.exports=''},hn2c:function(e,t){e.exports=''},ntfI:function(e,t,n){"use strict";var o,s,r,i,a,l,c;n.d(t,"a",function(){return c}),o=n("mrSG"),s=n("q1tI"),r=n("TSYQ"),i=n("j1f4"),a=n("K5ke"),function(e){e[e.Initial=0]="Initial",e[e.Appear=1]="Appear",e[e.Active=2]="Active"}(l||(l={})),c=function(e){function t(t){var n=e.call(this,t)||this;return n._stateChangeTimeout=null,n.state={state:l.Initial},n}return o.__extends(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,o=t.color,i=void 0===o?"black":o,l=r(a.item,((e={})[a[i]]=Boolean(i),e));return s.createElement("span",{className:r(a.loader,n,this._getStateClass())},s.createElement("span",{className:l}),s.createElement("span",{className:l}),s.createElement("span",{className:l}))},t.prototype.componentDidMount=function(){var e=this;this.setState({state:l.Appear}),this._stateChangeTimeout=setTimeout(function(){e.setState({state:l.Active})},2*i.dur)},t.prototype.componentWillUnmount=function(){this._stateChangeTimeout&&(clearTimeout(this._stateChangeTimeout),this._stateChangeTimeout=null)},t.prototype._getStateClass=function(){switch(this.state.state){case l.Initial:return"loader-initial";case l.Appear:return"loader-appear";default:return""}},t}(s.PureComponent)}, +t3rk:function(e,t,n){e.exports={menu:"menu-1y0eDKzl-"}},"ycI/":function(e,t,n){"use strict";var o,s,r;n.d(t,"a",function(){return r}),o=n("mrSG"),s=n("q1tI"),r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleKeyDown=function(e){e.keyCode===t.props.keyCode&&t.props.handler(e)},t}return o.__extends(t,e),t.prototype.componentDidMount=function(){document.addEventListener(this.props.eventType||"keydown",this._handleKeyDown,!1)},t.prototype.componentWillUnmount=function(){document.removeEventListener(this.props.eventType||"keydown",this._handleKeyDown,!1)},t.prototype.render=function(){return null},t}(s.PureComponent)},ycgn:function(e,t,n){e.exports={item:"item-stVdeCwG-",interactive:"interactive-3E0jwVyG-",hovered:"hovered-2HCCgw6c-",disabled:"disabled-2K7FyUI3-",active:"active-muW4lycL-",shortcut:"shortcut-2P38AivB-",iconCell:"iconCell-OhwVvlgA-",icon:"icon-3DDcYD-t-",checkmark:"checkmark-2UE1siCn-",content:"content-1GXgstZ5-",label:"label-1If3beUH-",checked:"checked-5eQn8630-",toolbox:"toolbox-2XX2mSNw-",showToolboxOnHover:"showToolboxOnHover-iCrUIcOG-",arrowIcon:"arrowIcon-2FMesq_x-",subMenu:"subMenu-QM4GIDtY-"}}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/create-dialog.472fe015128398f27a86.js b/public/charting_library/static/bundles/create-dialog.472fe015128398f27a86.js new file mode 100644 index 0000000..7c94446 --- /dev/null +++ b/public/charting_library/static/bundles/create-dialog.472fe015128398f27a86.js @@ -0,0 +1,6 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["create-dialog"],{"33OQ":function(t,e,i){"use strict";(function(o){function s(){d.width=window.innerWidth,d.height=p.height()}function n(t){var e=d.device;d.device=t,d.trigger("changeDevice",[t,e])}var r,h,a,l,p,c,d,u,_,g,f,v;for(Object.defineProperty(e,"__esModule",{value:!0}),r=i("4O8T"),h=(f=r)&&f.__esModule?f:{default:f},a=i("BI5g"),l=$("body"),p=$(window),c=0,d={width:null,height:null,device:null,isSafari:!!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/)||!!navigator.userAgent.match("CriOS"),getScrollbarWidth:(v=void 0,function(){var t,e,i,o;return void 0===v&&((t=document.createElement("div")).style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",document.body.appendChild(t),e=t.offsetWidth,t.style.overflow="scroll",(i=document.createElement("div")).style.width="100%",t.appendChild(i),o=i.offsetWidth,t.parentNode.removeChild(t),v=e-o),v}),hasScroll:function(t){return t.get(0).scrollHeight>t.height()},breakpoints:a.breakpoints,widgetbarBreakpoint:1064,setFixedBodyState:function(t){var e,i;t&&1==++c?("hidden"!==$(document.body).css("overflow").toLowerCase()&&document.body.scrollHeight>document.body.offsetHeight&&($(".widgetbar-wrap").css("right",d.getScrollbarWidth()),l.css("padding-right",parseInt(l.css("padding-right").replace("px",""))+d.getScrollbarWidth()+"px").data("wasScroll",!0)),l.addClass("i-no-scroll")):!t&&c>0&&0==--c&&(l.removeClass("i-no-scroll"),l.data("wasScroll")&&(e=l.get(0),$(".widgetbar-wrap").css("right",0),i=$(".widgetbar-wrap").width()||0,e.scrollHeight<=e.clientHeight&&(i-=d.getScrollbarWidth()),l.css("padding-right",(i<0?0:i)+"px").data("wasScroll",void 0)))}},u=Object.keys(d.breakpoints).sort(function(t,e){return d.breakpoints[t]-d.breakpoints[e]}),o.extend(d,h.default.prototype),s(),$(s),p.on("resize",s),_=function(t){var e,i,o=u[t],r=0===t?0:d.breakpoints[u[t-1]]+1,h=d.breakpoints[o],a=(e=r,(i=h)===1/0?window.matchMedia("(min-width: "+e+"px)"):window.matchMedia("(min-width: "+e+"px) and (max-width: "+i+"px)"));a.matches&&n(o),a.addListener(function(t){t.matches&&(s(),n(o))})},g=0;g').appendTo(this._$wrapper)),!1!==this._options.showBottomShadow&&(this._$shadowBottom=$('
').appendTo(this._$wrapper)),this._$shadowTop&&this._header_height&&this._$shadowTop.css("top",this._header_height-this._shadow_offset),n=this._options.additionalClass?" "+this._options.additionalClass:"",r=this._options.alwaysVisible?" active-always":"",this._$scrollBarWrapper=$('
').appendTo(this._$wrapper),this._$scrollBar=$('
').appendTo(this._$scrollBarWrapper),this._onScroll()}var s,n=i("5qpw").lazyJqueryUI;i("nzny"),s=i("pLUm"),o.prototype.isTouch=function(){return this._touch},o.prototype.getScrollBar=function(){return this._$scrollBar},o.prototype._defaultOptions={headerHeight:0,additionalClass:"",alwaysVisible:!1,showBottomShadow:!0,scrollMarginTop:1,bubbleScrollEvent:!1},o.prototype.initDraggable=function(){if(this._dragInitialized)return this;var t=this;return n(this._$scrollBar).draggable({axis:"y",containment:this._$scrollBarWrapper,start:function(){t._dragging=!0},stop:function(){t._dragging=!1},drag:function(e,i){t.updateScroll()}}),this._dragInitialized=!0,this},o.prototype.updateScroll=function(){var t,e,i,o,s;return this._touch?this:(t=1,e=Math.ceil(this._$scrollBar.position().top-this._scroll_margin_top-this._header_height),i=this.getContainerHeightWithoutHeader(),s=(o=this._$content.outerHeight())-i-t,i<=0?this:(this._scroll_target_top=s<=0?this._header_height:Math.min(-e*o/i+this._header_height,this._header_height),e+this._$scrollBar.height()+2>=i?this.scrollToEnd():(this._$content.css("top",this._scroll_target_top+"px"),this._onScroll()),this))},o.prototype.getContainerHeightWithoutHeader=function(){return this._$wrapper[0].getBoundingClientRect().height-this._header_height},o.prototype.getContainerHeight=function(){return this._$wrapper[0].getBoundingClientRect().height}, +o.prototype.getContentHeight=function(){return this._$content[0].getBoundingClientRect().height},o.prototype.updateScrollBar=function(){var t,e,i,o,s,n,r,h,a;return this._touch?this:(t=1,e=this._$content.position().top,i=this.getContentHeight(),o=this.getContainerHeight(),s=this.getContainerHeightWithoutHeader(),n=t+this._header_height,r=s-2*t,h=(Math.abs(e)-this._header_height)*r/i,a=o*o/i,this.isContentShort()?(this._$scrollBar.addClass("js-hidden"),this._$wrapper.removeClass("sb-scroll-active")):(this._$scrollBar.removeClass("js-hidden").height(a).css("top",n+h),this._$wrapper.addClass("sb-scroll-active"),this.initDraggable()),this)},o.prototype.scroll=function(t,e){var i=this._$content.position().top,o=this._$content.outerHeight(),s=this.getContainerHeightWithoutHeader(),n=o-s-1,r=e||this._scroll_speed;return n<=0||(this._scroll_target_top=Math.max(-n+this._header_height,Math.min(this._header_height,i+t*r)),this.setContentTop(this._scroll_target_top),this._onScroll())},o.prototype.animateTo=function(t){var e;return this._touch?this:(e=this._$content.outerHeight()-this.getContainerHeightWithoutHeader()-1)<=0||(this._scroll_target_top=Math.max(-e+this._header_height,Math.min(this._header_height,-t)),void this._$content.animate({top:this._scroll_target_top},500,function(){this._onScroll()}.bind(this)))},o.prototype.resize=function(){var t,e;this._bottomFixed||(t=this._$content.outerHeight(),e=this._$wrapper.outerHeight(),!this._options.vAlignBottom&&ts&&t+e.areaHeightn?n-t-e.areaHeight:s-t}else"top"===e.position&&(r=s-t);return this.scroll(r,1),this._onScroll(),!1},o.prototype.scrollToEnd=function(){var t=1,e=this._$content.position().top,i=this._$content.outerHeight(),o=this._$wrapper.outerHeight(),s=i+e,n=i>o?e+(o-s)+t:t;return this.setContentTop(n),this._onScroll(),this},o.prototype.scrollToStart=function(){return this.setContentTop(this._header_height),this._onScroll(),this},o.prototype.currentPosition=function(){return Math.round(this._$content.position().top)},o.prototype.atStart=function(){return Math.round(this._$content.position().top)>=this._header_height},o.prototype.atEnd=function(t){var e,i,o,s;return"number"==typeof t&&isFinite(t)||(t=0),e=1,i=Math.round(this._$content.position().top), +o=this._$content.outerHeight(),s=this._$wrapper.outerHeight(),o-Math.abs(i)-e<=s+t},o.prototype._onScroll=function(t){var e,i;return this._touch||this._$content.css("bottom","auto"),this.scrolled.fire(),this._dragging&&!0!==t||this.updateScrollBar(),e=this.atStart(),i=this.atEnd(),this._$shadowTop&&this._$shadowTop.toggleClass("i-invisible",!!e),this._$shadowBottom&&this._$shadowBottom.toggleClass("i-invisible",!!i),this._onContentVisible(),!this._atStart&&e?(this._atStart=!0,this.scrolltostart.fire()):this._atStart&&!e&&delete this._atStart,!this._atEnd&&i?(this._atEnd=!0,this.scrolltoend.fire()):this._atEnd&&!i&&delete this._atEnd,this._options.vAlignBottom&&(this._stickyBottom=this._$content.outerHeight()-Math.abs(this._$content.position().top)-this._$wrapper.outerHeight()),!(!this._atStart&&!this._atEnd||("function"==typeof this._options.bubbleScrollEvent?!this._options.bubbleScrollEvent():!this._options.bubbleScrollEvent))},o.prototype.checkContentVisibility=function(){this._onContentVisible()},o.prototype.subscribeToContentVisible=function(t,e,i){this.visibilityCallbacks.push({id:t,$el:e,callback:i})},o.prototype.triggerVisibilityCallbacks=function(t){this._onContentVisible(t)},o.prototype._contentIsVisible=function(t){return t.$el.position().top>-1*this.currentPosition()},o.prototype._onContentVisible=function(t){var e,i,o;this.visibilityCallbacks.length&&(e=t||this._contentIsVisible.bind(this),i=[],o=this.visibilityCallbacks.filter(function(t,o){if(!$.contains(this._$content,t.$el[0]))return!1;var s=e(t);return s&&i.push(o),!s},this),i.forEach(function(e){this.visibilityCallbacks[e].callback(!!t)},this),delete this.visibilityCallbacks,this.visibilityCallbacks=o)},o.prototype.save=function(){return this._saved={top:this._$content.position().top,height:this._$content.outerHeight()},this},o.prototype.restore=function(){if(this._saved){if(this._saved.top===this._$content.position().top&&this._saved.height===this._$content.outerHeight())return delete this._saved,this;this._options.vAlignBottom&&(this._saved.top-=this._$content.outerHeight()-this._saved.height,this._saved.top>this._header_height&&(this._saved.top=this._header_height)),this.setContentTop(this._saved.top),delete this._saved,this._onScroll(!0)}return this},o.prototype.fixBottom=function(){var t,e;return this._bottomFixed?this:(this._touch?(t=this._$content.outerHeight(),e=this._$wrapper.scrollTop(),this._tempIntervalID=setInterval(function(){this._$wrapper.scrollTop(e+(this._$content.outerHeight()-t))}.bind(this),0)):this._$content.css({top:"auto",bottom:this._$wrapper.outerHeight()-this._$content.position().top-this._$content.outerHeight()}),this._bottomFixed=!0,this)},o.prototype.releaseBottom=function(){return this._bottomFixed?(this._touch?clearInterval(this._tempIntervalID):this._$content.css({top:this._$content.position().top,bottom:"auto"}),delete this._bottomFixed,this._onScroll(),this):this},o.prototype.setContentTop=function(t){ +return this._touch?this._options.vAlignBottom&&this._$content.outerHeight()'}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur b/public/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur new file mode 100644 index 0000000..10251fa Binary files /dev/null and b/public/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur differ diff --git a/public/charting_library/static/bundles/dialogs-core.c712826575e8ea62d8e0.js b/public/charting_library/static/bundles/dialogs-core.c712826575e8ea62d8e0.js new file mode 100644 index 0000000..c546106 --- /dev/null +++ b/public/charting_library/static/bundles/dialogs-core.c712826575e8ea62d8e0.js @@ -0,0 +1,9 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["dialogs-core"],{"6aJD":function(t,e,o){"use strict";var n=o("APlX");o.d(e,"a",function(){return n.TVModal})},APlX:function(t,e,o){"use strict";(function(t){function n(t){var e,o;if(t&&t.__esModule)return t;if(e={},null!=t)for(o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e.default=t,e}var i,s,r,a,l,c,u,d,p,h,f,g,v,b,y;Object.defineProperty(e,"__esModule",{value:!0}),e.TVModal=void 0,i=Object.assign||function(t){var e,o,n;for(e=1;e
',containerTemplate:'
',ajaxErrorTemplate:'
'+window.t("Error")+"
"},e.TVModal=function(e){function o(){var t,e,n,s,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o),(t=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this,i({},b,r)))).$overlay=$(t.options.overlayTemplate),t.$modalWrap=$(t.options.containerTemplate),t.$body=t.$modalWrap.find(".tv-dialog__modal-body").append(t.$el),t.options.closeOnOutsideClick&&t.$overlay.add(t.$modalWrap).click(function(e){t.isEventOut(e)&&t.close()}),t.on("change:zIndex",function(){t.$overlay.css("z-index",t.zIndex),t.$modalWrap.css("z-index",t.zIndex)}),t.on("destroy",function(){var e=function(){t.$overlay.remove(),t.$modalWrap.remove()};t.opened?(t.close(),setTimeout(e,t.options.closingDuration)):e()}),t.on("beforeOpen",function(){v.push(t)}),t.options.ajax.url&&(e=t.options.ajax.beforeSend||$.noop,n=t.options.ajax.success||!1,s=t.options.ajax.error||$.noop,$.extend(t.options.ajax,{beforeSend:function(){t.trigger("beforeLoading",[t]),t.startSpinner(),e(t)},success:function(e){t.trigger("afterLoading",[t]),t.renderContent(n?n(t,e):e).showContent(),t.trigger("afterLoadingShow",[t])},error:function(){t.renderContent(t.options.ajaxErrorTemplate),s(t),t.trigger("errorLoading",[t])}})),t.on("error",function(e,o){t.$modalWrap[0].getBoundingClientRect().height0&&v[v.length-1].focus(),e.options.destroyOnClose&&e.destroy()},this.options.closingDuration),this}},{key:"showContent",value:function(){var t=this;return this.$modalWrap.removeClass("i-hidden"),setTimeout(function(){t.$modalWrap.removeClass("i-closed")},20),setTimeout(function(){t.trigger("afterOpen",[t]),t.spinner&&t.stopSpinner()},.75*a.dur+20),this}},{key:"hideContent",value:function(){if(this.$el)return this.$modalWrap.addClass("i-closed"),this.unfocus(),this}},{key:"startSpinner",value:function(){return this.spinner=new d.Spinner("large"),this.spinner.spin(this.$overlay[0]),this}},{key:"stopSpinner",value:function(){if(this.spinner)return this.spinner.stop(),delete this.spinner,this}}]),o}()}).call(this,o("F/us"))},KHon:function(t,e,o){"use strict";var n;o.r(e),n=o("v2PZ"),o.d(e,"TVDialogAbstract",function(){return n.TVDialogAbstract}),o.d(e,"closeAllDialogs",function(){return n.closeAllDialogs})},nZrM:function(t,e,o){},nbyR:function(t,e,o){"use strict";var n,i,s,r,a,l,c,u,d,p,h,f,g,v;Object.defineProperty(e,"__esModule",{value:!0}),e.TVPopup=void 0,n=Object.assign||function(t){var e,o,n;for(e=1;e',scrollWrapInner:'
',withScroll:!0},g="js-dialog__scroll-wrap",e.TVPopup=function(t){function e(){var t,o,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(t=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,n({},f,i)))).$scrollWrap=t.$content.hasClass(g)?t.$content:t.$content.find("."+g),t.$scrollWrap.length?t.$scrollWrapInner=t.$scrollWrap.children().first():(t.$scrollWrap=t.$content.wrap($(t.options.scrollWrap)).parent(),t.$scrollWrapInner=t.$content.wrap($(t.options.scrollWrapInner)).parent()),t.$actions&&t.$scrollWrap.addClass("i-with-actions"),t.options.withScroll&&(t.scroll=new u.SidebarCustomScroll(t.$scrollWrap,t.$scrollWrapInner),t.scroll.scrolled.subscribe(null,function(){return t.trigger("scroll")})),t.$scrollWrap.css("overflow",""),o=t.getDialogId(),t.$el.addClass("tv-dialog--popup i-closed i-hidden"),t.options.width&&t.$el.css({width:"calc(100% - 20px)","max-width":t.options.width}),t.$el.on("mousedown touchstart",t.toTop.bind(t)),t.options.closeOnOutsideClick&&(t._preventClick=!0,t.on("beforeOpen",function(){setTimeout(function(){t.opened&&($(document).on("mousedown touchstart",function(){t._preventClick=!1}),$(document).on("click.tv-popup-"+o,function(e){if(!t._preventClick){var o=$(e.target).closest(".js-dialog");(t.options.closeOnClickAtOtherDialogs||0===o.length)&&t.isEventOut(e)&&t.close()}}))},0)}),t.on("beforeClose",function(){return $(document).off("click.tv-popup-"+o)})),t.on("change:zIndex",function(){t.$el.css("z-index",t.zIndex)}),t.on("destroy",function(){var e=function(){t.$el.remove()};t.opened?(t.close(),setTimeout(e,r.dur/2)):e()}),t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,c.TVDialogAbstract),i(e,[{key:"open",value:function(){var t,e,o,n,i,s=this;return this.opened?this:(this.opened=!0,this.trigger("beforeOpen",[this]),this.$el.appendTo(this.$wrap).removeClass("i-hidden").css((s.calcHeight(),t=h.height(),e=h.width(),o=s.$el.height(),n=s.$el.width(),(i=s.options.position)||(i={top:t/2-o/2,left:e/2-n/2}),i.top>t-o&&(i.top=t-o),i.left>e-n&&(i.left=e-n),i)),this.focus(),this.toTop(),this._doOpenAnimation().then(function(){ +s.opened&&(s.$el.removeClass("i-closed"),s.options.draggable&&((0,d.lazyJqueryUI)(s.$el).draggable({handle:".js-dialog__drag",cancel:"input, textarea, button, select, option, .js-dialog__no-drag, .js-dialog__close",containment:"window",cursor:"-webkit-grabbing"}),s.$el.find(".js-dialog__drag").addClass("tv-dialog__grab")),s.trigger("afterOpen",[s]))}),h.on("resize.tv-popup-"+this.getDialogId(),function(){s.calcHeight(),s.fixPos()}),this)}},{key:"close",value:function(){var t=this;if(this.opened)return this.trigger("beforeClose",[this]),this.$el.addClass("i-closed"),this.opened=!1,this._doCloseAnimation().then(function(){t.opened||((0,d.lazyJqueryUI)(t.$el).draggable("instance").then(function(t){t&&t.destroy()}),t.$el.addClass("i-hidden").detach(),p.css("cursor","auto"),t.trigger("afterClose",[t]),t.options.destroyOnClose&&t.destroy())}),h.off("resize.tv-popup-"+this.getDialogId()),this}},{key:"hide",value:function(){this.$el.addClass("i-hidden")}},{key:"show",value:function(){this.$el.removeClass("i-hidden")}},{key:"fixPos",value:function(){var t=this.$el[0].getBoundingClientRect(),e={};t.bottom>l.default.height-10&&(e.top=l.default.height-10-t.height,e.top<10&&(e.top=10)),t.right>l.default.width-10&&(e.left=l.default.width-10-t.width,e.left<10&&(e.left=10)),(e.top||e.left)&&this.$el.css(e)}},{key:"calcHeight",value:function(){var t,e,o=this.$el[0].getBoundingClientRect(),n=this.$scrollWrapInner[0].getBoundingClientRect(),i=this.$scrollWrap[0].getBoundingClientRect(),s=this.options.height&&this.options.heights)&&((s-=o.height-i.height)<60&&(s=60),this.$scrollWrap.css({height:s})),this.options.withScroll&&this.scroll.resize(),(e=s'+this.$btn.html()+''),this.loading=this.$btn.hasClass("i-loading")}return n(t,[{key:"_start",value:function(){var t=this;this.starting=!0,this.$btn.addClass("i-start-load"),this.$btn.trigger("tv-button-loader:start"),setTimeout(function(){t.loading=!0,t.starting=!1,t._startPromise=!1,t.$btn.addClass("i-loading"),t.$btn.removeClass("i-start-load"),t._stopPromise&&t._stop()},2*r.dur)}},{key:"start",value:function(){this.starting||(this.stopping?this._startPromise=!0:this._start())}},{key:"_stop",value:function(){var t=this;this.stopping=!0,this.$btn.addClass("i-stop-load"),this.$btn.trigger("tv-button-loader:stop"),setTimeout(function(){t.loading=!1,t.stopping=!1,t._stopPromise=!1,t.$btn.removeClass("i-loading i-start-load i-stop-load"),t._startPromise&&t._start()},r.dur)}},{key:"stop",value:function(){this.stopping||(this.starting?this._stopPromise=!0:this._stop())}},{key:"toggle",value:function(){this.loading?this.stop():this.start()}},{key:"contentHtml",value:function(t){return t?(this.$btn.find(".tv-button__text").html(t),t):this.$btn.find(".tv-button__text").html()}},{key:"contentNojQuery",value:function(){return this.$btn.get(0)}},{key:"disable",value:function(){this.stop(),this.$btn.addClass("i-disabled")}},{key:"enable",value:function(){this.$btn.removeClass("i-disabled")}}]),t}()},tKRU:function(t,e,o){"use strict";var n=o("nbyR");o.d(e,"a",function(){return n.TVPopup})},v2PZ:function(t,e,o){"use strict";(function(t,n){function i(t){return t&&t.__esModule?t:{default:t}}var s,r,a,l,c,u,d,p,h,f,g,v,b,y,_,m,w,k;Object.defineProperty(e,"__esModule",{value:!0}),e.TVDialogAbstract=void 0,s=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var o,n,i=[],s=!0,r=!1,a=void 0;try{for(o=t[Symbol.iterator]();!(s=(n=o.next()).done)&&(i.push(n.value),!e||i.length!==e);s=!0);}catch(t){r=!0,a=t}finally{try{!s&&o.return&&o.return()}finally{if(r)throw a}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=Object.assign||function(t){var e,o,n;for(e=1;e',errorTemplate:'
{{{ error }}}
',titleTemplate:'
{{{ title }}}
',contentWrapTemplate:'
',actionsWrapTemplate:'
',closeButtonTemplate:'
'+o("uo4K")+"
",helpButtonTemplate:'
',helpActionsMod:"tv-dialog__section--actions_with-help"},m={default:"tv-button tv-button--default",primary:"tv-button tv-button--primary",success:"tv-button tv-button--success",danger:"tv-button tv-button--danger",warning:"tv-button tv-button--warning",link:"tv-button tv-button--link",checkbox:"tv-control-checkbox tv-control-checkbox--in-actions","default-ghost":"tv-button tv-button--default_ghost","primary-ghost":"tv-button tv-button--primary_ghost","success-ghost":"tv-button tv-button--success_ghost","danger-ghost":"tv-button tv-button--danger_ghost","warning-ghost":"tv-button tv-button--warning_ghost"},w={_default:'
{{ text }}
',"submit-success":''},k=function(e){function o(){var e,n,i,a,l,c,u,p,v,k,C,O,T,j,x=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o),(e=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this))).manager=(0,h.getRootOverlapManager)(x.ownerDocument),e._id=f++,e.loadingActions=[],e.disabledActions=[],e.firstFocusControl=null,e.options=r({},_,x),e.$el=$(t.render(e.options.template,{title:e.options.title,closeButton:e.options.closeButton})),e.$el.addClass("js-dialog"),e.el=e.$el[0],e.options.dataset){n=!0,i=!1,a=void 0;try{for(l=Object.entries(e.options.dataset)[Symbol.iterator]();!(n=(c=l.next()).done);n=!0)u=c.value,v=(p=s(u,2))[0],"string"==typeof(k=p[1])&&e.el.setAttribute("data-"+v,k)}catch(t){i=!0,a=t}finally{try{!n&&l.return&&l.return()}finally{if(i)throw a}}}for(e.options.addClass&&e.$el.addClass(e.options.addClass),e.options.width&&e.$el.css({width:"100%","max-width":e.options.width}),e.on("beforeOpen",function(){ +e.$wrap=e.manager.ensureWindow(e._id)}),e.on("afterClose",function(){e.$wrap=null,e.manager.unregisterWindow(e._id)}),e.options.title&&(e.$title=$(t.render(e.options.titleTemplate,{title:e.options.title})).appendTo(e.$el)),e.$content=$(e.options.contentWrapTemplate).appendTo(e.$el),e.$contentIn=e.$content;e.$contentIn.length;)e.$contentIn=e.$contentIn.children();if(e.$contentIn=e.$contentIn.end(),e.options.content&&e.renderContent(e.options.content),(e.options.actions||e.options.help)&&(e.$content.hasClass("tv-dialog__section")&&e.$content.addClass("tv-dialog__section--no-padding_bottom"),e.$actions=$(e.options.actionsWrapTemplate).appendTo(e.$el)),e.options.actions)for(e.actions={},e.$el.on("click touchend",".js-dialog__action-click",function(t){t.preventDefault(),e.actionDispatcher($(t.currentTarget).data("name"))}),C=function(o){var n,i,s,r,a,l,c=e.options.actions[o];c.type||(c.type="default"),c.class||(c.class=m[c.type]?m[c.type]:m.default),"checkbox"===c.type?(n=new d.default({labelRight:c.text,name:c.name,checked:c.checked}),e.actions[c.name]=n.$el.appendTo(e.$actions),e.actions[c.name].on("change",function(){setTimeout(function(){return e.actionDispatcher(c.name,n.checked)})})):e.actions[c.name]=$(t.render(c.template?c.template:w[c.type]||w._default,c,c)).appendTo(e.$actions),c.method&&"function"==typeof e[c.method]&&e.on("action:"+c.name,e[c.method].bind(e)),c.addClass&&e.actions[c.name].addClass(c.addClass),c.key&&(i=void 0,"string"==typeof c.key&&c.key.split("+").length>1?(s=[],r=c.key.split("+"),i=function(t){s=[]},a=function(t){var o=""+t.keyCode;-1!==r.indexOf(o)&&s.indexOf(o)&&s.push(o),e._focused&&s.length===r.length&&(s=[],e.actionDispatcher(c.name))},e.on("afterOpen",function(){y.on("keydown",a),y.on("keyup",i)}),e.on("beforeClose",function(){y.off("keydown",a),y.off("keyup",i)})):(l=$.isArray(c.key)?c.key:[c.key],i=function(t){!t.isDefaultPrevented()&&e._focused&&-1!==l.indexOf(t.keyCode)&&e.actionDispatcher(c.name)},e.on("afterOpen",function(){return y.on("keyup",i)}),e.on("beforeClose",function(){return y.off("keyup",i)})))},O=e.options.actions.length-1;O>=0;O--)C(O);return e.options.help&&$(t.render(e.options.helpButtonTemplate,e.options.help)).prependTo(e.$actions.addClass(e.options.helpActionsMod)),e.options.closeButton&&((T=$(e.options.closeButtonTemplate)).addClass(e.options.closeButtonAddClass||""),j=e.$el,1===e.$el.find(".js-close-button-place").length&&(j=e.$el.find(".js-close-button-place")),T.appendTo(j)),e.setZIndex(b+g.length),x.errorMod&&(e.errorMod=x.errorMod),e.on("afterOpen",function(){e.options.focusFirstControl&&!Modernizr.mobiletouch&&(e.firstFocusControl||e.$el.find('input:not([type="hidden"]), textarea').first()).focus()}),e.$el.on("click",".js-dialog__close",e.close.bind(e)),e.$el.on("mousedown touchstart",e.focus.bind(e)),g.push(e),e}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0, +configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,p.default),a(o,[{key:"renderContent",value:function(t){return this.$contentIn.html("function"==typeof t?t(this):t),this}},{key:"setDestroyOnClose",value:function(t){this.options.destroyOnClose=t}},{key:"setZIndex",value:function(t){return this.zIndex=t,this.trigger("change:zIndex",[this]),this}},{key:"toTop",value:function(){for(var t=g.length-1;t>=0;t--)g[t].zIndex>this.zIndex&&g[t].setZIndex(g[t].zIndex-1);return this.setZIndex(b+g.length),this.manager.moveToTop(this._id),this}},{key:"isEventOut",value:function(t){var e,o,n;return this.options.isClickOutFn&&void 0!==(e=this.options.isClickOutFn(t))?e:(o=!0,(n=$(t.target)).get(0)!==this.$el.get(0)&&($(">*",this.$el).each(function(){n.get(0)===$(this).get(0)&&(o=!1),0===n.closest("HTML",$(this).get(0)).length&&(o=!1)}),o))}},{key:"focus",value:function(){var t=this;v&&v!==this&&v.unfocus(),this._setFocused(),this._focused=!0,this.$el.addClass(this.options.focusClass),this.trigger("focus",[this]),setTimeout(function(){y.on("mousedown.tv-dialog-unfocus-"+t._id,function(e){t.isEventOut(e)&&(t.unfocus(),y.off("mousedown.tv-dialog-unfocus-"+t._id))})},20)}},{key:"_setFocused",value:function(){v!==this&&(v=this)}},{key:"_setUnfocused",value:function(){v===this&&(v=void 0)}},{key:"unfocus",value:function(){v===this&&(this._setUnfocused(),this._focused=!1,this.$el.removeClass(this.options.focusClass).find(":focus").blur(),this.trigger("unfocus",[this]))}},{key:"isFocused",value:function(){return this._focused}},{key:"setTitle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.$title.toggleClass("tv-dialog__section--one-line apply-overflow-tooltip",e),this.$title.html(t),this}},{key:"setTitleText",value:function(t){this.$title.find(".js-title-text").text(t)}},{key:"actionDispatcher",value:function(t){if(!this.disabledActions.includes(t)&&!this.loadingActions.includes(t)){for(var e=arguments.length,o=Array(e>1?e-1:0),n=1;n1&&void 0!==arguments[1]?arguments[1]:"init";return this.actions[t].tvButtonLoader(o),"init"===o&&(this.actions[t].off("tv-button-loader:start.dialog-action").on("tv-button-loader:start.dialog-action",function(){e.loadingActions.push(t)}),this.actions[t].off("tv-button-loader:stop.dialog-action").on("tv-button-loader:stop.dialog-action",function(){e.loadingActions=n.without(e.loadingActions,t)})),this}},{key:"error",value:function(e){var o=$(t.render(this.options.errorTemplate,{error:e,errorMod:this.errorMod})).appendTo(this.$el),n=function(){o.addClass("i-slided"),setTimeout(function(){return o.remove()},.75*c.dur)} +;return setTimeout(function(){return o.removeClass("i-slided")},20),y.one("touchstart mousedown keydown",n),this.trigger("error",[this,o]),this}},{key:"destroy",value:function(){this.$wrap=null,this.manager.unregisterWindow(this._id),g=n.without(g,this);for(var t=0;t=this.state.heightContent-1},t.prototype.animateTo=function(e,t){if(void 0===t&&(t=F.dur),this._scroll){var o=d.findDOMNode(this._scroll);Object(V.doAnimate)({onStep:function(e,t){o.scrollTop=t},from:o.scrollTop,to:Math.round(e),easing:F.easingFunc.easeInOutCubic,duration:t})}},t.prototype.render=function(){var e,t,o,n,i,r=this,a=this.props,s=a.children,l=a.isVisibleScrollbar,c=a.isVisibleFade,d=a.isVisibleButtons,p=this.state,h=p.heightContent,f=p.heightWrap,g=p.isVisibleBotButton,v=p.isVisibleTopButton;return u.createElement(x,{whitelist:["height"],onMeasure:this._handleResizeWrap},u.createElement("div",{className:I.wrap},u.createElement("div",{className:m(I.scrollWrap,(e={},e[I.noScrollBar]=!l,e)),onScroll:this._handleScroll,ref:function(e){return r._scroll=e}},u.createElement(x,{onMeasure:this._handleResizeContent,whitelist:["height"]},u.createElement("div",{className:I.content},s))),c&&u.createElement("div",{className:m(I.fadeTop,(t={},t[I.isVisible]=v&&h>f,t))}),c&&u.createElement("div",{className:m(I.fadeBot,(o={},o[I.isVisible]=g&&h>f,o))}),d&&u.createElement("div",{className:m(I.scrollTop,(n={},n[I.isVisible]=v&&h>f,n)),onClick:this._handleScrollTop},u.createElement("div",{className:I.iconWrap +},u.createElement(B.a,{icon:R,className:I.icon}))),d&&u.createElement("div",{className:m(I.scrollBot,(i={},i[I.isVisible]=g&&h>f,i)),onClick:this._handleScrollBot},u.createElement("div",{className:I.iconWrap},u.createElement(B.a,{icon:R,className:I.icon})))))},t.defaultProps={isVisibleScrollbar:!0},t}(u.PureComponent),z=o("ycI/"),U=o("WUqb"),G=o("tWVy"),H=o("gb5g"),K=o("wZIs"),q=o("3mf1"),Q=o("9dlw"),J=o("hn2c"),Y=o("KmEK"),X=function(e){function t(t){var o=e.call(this,t)||this;return o._toggleDropdown=function(e){o.setState({isOpened:void 0!==e?e:!o.state.isOpened})},o._handleClose=function(){o._toggleDropdown(!1)},o._getDropdownPosition=function(){if(!o._control)return{x:0,y:0};var e=o._control.getBoundingClientRect();return{x:e.left+e.width+1,y:e.top-6}},o._handleClickArrow=function(){o._toggleDropdown()},o._handleTouchStart=function(){o.props.onClickButton(),o._toggleDropdown()},o._handlePressStart=function(){if(Modernizr.mobiletouch&&!o.props.checkable)o._longPressDelay||o.props.onClickButton();else{if(o._doubleClickDelay)return clearTimeout(o._doubleClickDelay),delete o._doubleClickDelay,void o._toggleDropdown(!0);o._doubleClickDelay=setTimeout(function(){delete o._doubleClickDelay,o._longPressDelay||o.props.onClickButton()},175)}o._longPressDelay=setTimeout(function(){delete o._longPressDelay,o._toggleDropdown(!0)},300)},o._handlePressEnd=function(){o._longPressDelay&&(clearTimeout(o._longPressDelay),delete o._longPressDelay,o.state.isOpened?o._toggleDropdown(!1):o.props.checkable||o.state.isOpened||!o.props.isActive||Modernizr.mobiletouch||o._toggleDropdown(!0))},o.state={isOpened:!1},o}return c.__extends(t,e),t.prototype.render=function(){var e,t=this,o=this.props,n=o.buttonActiveClass,r=o.buttonClass,a=o.buttonIcon,s=o.buttonTitle,l=o.buttonHotKey,c=o.dropdownTooltip,d=o.children,p=o.isActive,h=o.isGrayed,f=o.onClickWhenGrayed,g=o.checkable,v=this.state.isOpened;return u.createElement("div",{className:m(Y.dropdown,(e={},e[Y.isGrayed]=h,e[Y.isActive]=p,e[Y.isOpened]=v,e)),onClick:h?f:void 0},u.createElement("div",{ref:function(e){return t._control=e},className:Y.control},u.createElement("div",{className:m(Y.buttonWrap,{"apply-common-tooltip common-tooltip-vertical":Boolean(s||l)}),"data-tooltip-hotkey":l,"data-tooltip-delay":1500,title:s,onMouseDown:h||Modernizr.mobiletouch?void 0:this._handlePressStart,onMouseUp:h||Modernizr.mobiletouch?void 0:this._handlePressEnd,onTouchStart:!h&&g&&Modernizr.mobiletouch?this._handlePressStart:void 0,onTouchEnd:!h&&g&&Modernizr.mobiletouch?this._handlePressEnd:void 0,onClick:h||g||!Modernizr.mobiletouch?void 0:this._handleTouchStart},u.createElement(i,{activeClass:n,className:r,icon:a,isActive:p,isGrayed:h,isTransparent:!g})),!h&&!Modernizr.mobiletouch&&u.createElement("div",{className:m(Y.arrow,c&&"apply-common-tooltip common-tooltip-vertical"),title:c,onClick:this._handleClickArrow},u.createElement(B.a,{className:Y.arrowIcon,icon:J}))),!h&&u.createElement(Q.a,{doNotCloseOn:this,isOpened:v,onClose:this._handleClose,position:this._getDropdownPosition},d))},t +}(u.PureComponent),Z=o("KKsp"),$=o("EA32"),ee={icon:window.t("Icon"),dropdownTooltip:window.t("Icons")},te=10,oe=function(e){function t(t){var o=e.call(this,t)||this;return o._renderItem=function(e){return u.createElement("div",{className:$.item,key:e,onClick:function(){o._handleSelect(e),Object(G.b)()}},String.fromCharCode(e))},o._onChangeDrawingState=function(){o.setState({isActive:o._isActive()})},o._handleSelect=function(e){var t,n;Object(K.saveDefaults)("linetoolicon",c.__assign({},Object(K.defaults)("linetoolicon"),{icon:e})),v.tool.setValue("LineToolIcon"),-1!==(n=(t=o.state.recents).indexOf(e))&&t.splice(n,1),t=[e].concat(t.slice(0,te-1)),Object(f.setJSON)("linetoolicon.recenticons",t),o.setState({current:e,recents:t})},o.state={current:Object(K.defaults)("linetoolicon").icon,recents:Object(f.getJSON)("linetoolicon.recenticons")||[]},o}return c.__extends(t,e),t.prototype.componentDidMount=function(){v.tool.subscribe(this._onChangeDrawingState),f.onSync.subscribe(this,this._onSyncSettings)},t.prototype.componentWillUnmount=function(){v.tool.unsubscribe(this._onChangeDrawingState),f.onSync.unsubscribe(this,this._onSyncSettings)},t.prototype.render=function(){var e=this,t=this.props,o=t.isGrayed,n=t.toolName,i=this.state,r=i.current,a=i.isActive,s=i.recents;return u.createElement(X,{buttonClass:$.button,buttonIcon:u.createElement("div",{className:$.buttonIcon},String.fromCharCode(r||q.availableIcons[0])),buttonTitle:ee.icon,dropdownTooltip:ee.dropdownTooltip,isActive:a,isGrayed:o,onClickButton:function(){return e._handleSelect(r||q.availableIcons[0])},onClickWhenGrayed:function(){return Object(b.emit)("onGrayedObjectClicked",{type:"drawing",name:T.a[n].localizedName})}},s&&[u.createElement("div",{key:"recent",className:$.wrap},s.map(this._renderItem)),u.createElement(Z.a,{key:"separator"})],u.createElement("div",{key:"all",className:$.wrap},q.availableIcons.map(this._renderItem)))},t.prototype._isActive=function(){return v.tool.value()===this.props.toolName},t.prototype._onSyncSettings=function(){this.setState({recents:Object(f.getJSON)("linetoolicon.recenticons")})},t}(u.Component),ne=o("Ocx9"),ie=function(e){function t(t){var o=e.call(this,t)||this;return o._handleClick=function(){o.props.saveDefaultOnChange&&Object(ne.saveDefaultProperties)(!0),o.props.property.setValue(!o.props.property.value()),o.props.saveDefaultOnChange&&Object(ne.saveDefaultProperties)(!1)},o.state={isActive:o.props.property.value()},o}return c.__extends(t,e),t.prototype.componentDidMount=function(){this.props.property.subscribe(this,this._onChange)},t.prototype.componentWillUnmount=function(){this.props.property.unsubscribe(this,this._onChange)},t.prototype.render=function(){var e=this.props.toolName,t=this.state.isActive,o=T.a[e];return u.createElement(i,{icon:t&&o.iconActive?o.iconActive:o.icon,isActive:t,onClick:this._handleClick,title:o.localizedName})},t.prototype._onChange=function(e){this.setState({isActive:e.value()})},t}(u.PureComponent),re=function(e){function t(t){var o=e.call(this,t)||this;return o._handleClick=function(){ +v.tool.setValue(o.props.toolName)},o._onChange=function(){o.setState({isActive:v.tool.value()===o.props.toolName})},o.state={isActive:v.tool.value()===o.props.toolName},o}return c.__extends(t,e),t.prototype.componentDidMount=function(){v.tool.subscribe(this._onChange)},t.prototype.componentWillUnmount=function(){v.tool.unsubscribe(this._onChange)},t.prototype.render=function(){var e=this.props.toolName,t=this.state.isActive,o=T.a[e];return u.createElement(i,{icon:T.a[e].icon,isActive:t,isTransparent:!0,onClick:this._handleClick,title:o.localizedName,buttonHotKey:o.hotKey})},t}(u.PureComponent),ae=function(e){function t(t){var o=e.call(this,t)||this;return o._boundUndoModel=null,o._handleClick=function(){var e=o._activeChartWidget().model();e&&e.zoomFromViewport()},o._syncUnzoomButton=function(){var e=o._activeChartWidget(),t=e.model(),n=!1;t?(o._boundUndoModel!==t&&(o._boundUndoModel&&o._boundUndoModel.zoomStack().onChange().unsubscribe(null,o._syncUnzoomButton),t.zoomStack().onChange().subscribe(null,o._syncUnzoomButton),o._boundUndoModel=t),n=!t.zoomStack().isEmpty()):e.withModel(null,o._syncUnzoomButton),o.setState({isVisible:n})},o.state={isVisible:!1},o}return c.__extends(t,e),t.prototype.componentDidMount=function(){this.props.chartWidgetCollection.activeChartWidget.subscribe(this._syncUnzoomButton,{callWithLast:!0})},t.prototype.componentWillUnmount=function(){this.props.chartWidgetCollection.activeChartWidget.unsubscribe(this._syncUnzoomButton)},t.prototype.render=function(){return this.state.isVisible?u.createElement(r,{action:this._handleClick,isTransparent:!0,toolName:"zoom-out"}):u.createElement("div",null)},t.prototype._activeChartWidget=function(){return this.props.chartWidgetCollection.activeChartWidget.value()},t}(u.PureComponent),se=o("b2d7"),le=o("pr86"),ce=o("N5tr"),ue=o("Bruo"),de=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c.__extends(t,e),t.prototype.componentDidMount=function(){ue.bind(this.props.keys,this.props.handler)},t.prototype.componentDidUpdate=function(e){this.props.keys===e.keys&&this.props.handler===e.handler||(ue.unbind(e.keys),ue.bind(this.props.keys,this.props.handler))},t.prototype.componentWillUnmount=function(){ue.unbind(this.props.keys)},t.prototype.render=function(){return null},t}(u.PureComponent),pe=function(e){function t(t){var o,n=e.call(this,t)||this;return n._onChangeDrawingState=function(){var e=n._getActiveToolIndex();n.setState({current:-1!==e?e:n.state.current,isActive:-1!==e})},n._handleClickButton=function(){var e=n._getCurrentToolName();n._selectTool(e)},n._handleClickItem=function(e){n._selectTool(e)},n._handleGrayedClick=function(e){Object(b.emit)("onGrayedObjectClicked",{type:"drawing",name:T.a[e].localizedName})},n._handleShortcut=function(e){var t=n.props.lineTools.find(function(t){return t.name===e}),o=t&&t.shortcut;o&&o.immediately?n._drawLinetoolImmediately(e):n._selectTool(e)},n._drawLinetoolImmediately=function(e){var t=n.props.chartWidgetCollection.activeChartWidget.value() +;t.activePaneWidget&&t.activePaneWidget.drawRightThere(e)},n._handleClickFavorite=function(e){n.state.favState&&n.state.favState[e]?se.a.removeFavorite(e):se.a.addFavorite(e)},n._onAddFavorite=function(e){var t;n.setState({favState:c.__assign({},n.state.favState,(t={},t[e]=!0,t))})},n._onRemoveFavorite=function(e){var t;n.setState({favState:c.__assign({},n.state.favState,(t={},t[e]=!1,t))})},n._onSyncFavorites=function(){n.setState({favState:n._composeFavState()})},o=n._getActiveToolIndex(),n.state={current:-1===o?n._firstNonGrayedTool():o,favState:n._composeFavState(),isActive:-1!==o},n}return c.__extends(t,e),t.prototype.componentDidMount=function(){v.tool.subscribe(this._onChangeDrawingState),se.a.favoriteAdded.subscribe(null,this._onAddFavorite),se.a.favoriteRemoved.subscribe(null,this._onRemoveFavorite),se.a.favoritesSynced.subscribe(null,this._onSyncFavorites)},t.prototype.componentWillUnmount=function(){v.tool.unsubscribe(this._onChangeDrawingState),se.a.favoriteAdded.unsubscribe(null,this._onAddFavorite),se.a.favoriteRemoved.unsubscribe(null,this._onRemoveFavorite),se.a.favoritesSynced.unsubscribe(null,this._onSyncFavorites)},t.prototype.componentDidUpdate=function(e,t){e.lineTools!==this.props.lineTools&&this.setState({favState:this._composeFavState()})},t.prototype.render=function(){var e=this,t=this.props,o=t.favoriting,n=t.grayedTools,i=t.lineTools,r=t.dropdownTooltip,a=this.state,s=a.current,l=a.favState,c=a.isActive,d=this._getCurrentToolName(),p=T.a[d],h=this._showShortcuts();return u.createElement("span",null,u.createElement(X,{buttonIcon:p.icon,buttonTitle:p.localizedName,buttonHotKey:p.hotKey,dropdownTooltip:r,isActive:c,onClickButton:this._handleClickButton},i.map(function(t,i){var r=t.name,a=T.a[r],d=n[r];return u.createElement(ce.a,{key:r,dontClosePopup:d,forceShowShortcuts:h,shortcut:t.shortcut&&t.shortcut.keys,icon:a.icon,isActive:c&&s===i,appearAsDisabled:d,label:a.localizedName,onClick:d?e._handleGrayedClick:e._handleClickItem,onClickArg:r,showToolboxOnHover:!l[r],toolbox:o&&!d?u.createElement(le.a,{isFilled:l[r],onClick:e._handleClickFavorite,onClickArg:r}):void 0})})),i.map(function(t,o){var n=t.name,i=t.shortcut;return i&&u.createElement(de,{handler:function(t){t.preventDefault(),e._handleShortcut(n)},key:n,keys:i.keys})}))},t.prototype._getCurrentToolName=function(){var e=this.state.current,t=this.props.lineTools;return t[e||0].name},t.prototype._firstNonGrayedTool=function(){var e=this.props,t=e.grayedTools;return e.lineTools.findIndex(function(e){return!t[e.name]})},t.prototype._getActiveToolIndex=function(){return this.props.lineTools.findIndex(function(e){return e.name===v.tool.value()})},t.prototype._showShortcuts=function(){return this.props.lineTools.some(function(e){return"shortcut"in e})},t.prototype._selectTool=function(e){v.tool.setValue(e)},t.prototype._composeFavState=function(){var e={};return this.props.lineTools.forEach(function(t){e[t.name]=se.a.isFavorite(t.name)}),e},t}(u.PureComponent),he={all:window.t("Remove Drawing Tools & Indicators"), +drawings:window.t("Remove Drawing Tools"),studies:window.t("Remove Indicators")},me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleRemoveToolClick=function(){Modernizr.mobiletouch||t._handleRemoveDrawings()},t._handleRemoveDrawings=function(){t.props.chartWidgetCollection.activeChartWidget.value().removeAllDrawingTools()},t._handleRemoveStudies=function(){t.props.chartWidgetCollection.activeChartWidget.value().removeAllStudies()},t._handleRemoveAll=function(){t.props.chartWidgetCollection.activeChartWidget.value().removeAllStudiesDrawingTools()},t}return c.__extends(t,e),t.prototype.render=function(){return u.createElement(X,{buttonIcon:T.a[this.props.toolName].icon,buttonTitle:he.drawings,onClickButton:this._handleRemoveToolClick},u.createElement(ce.a,{label:he.drawings,onClick:this._handleRemoveDrawings}),u.createElement(ce.a,{label:he.studies,onClick:this._handleRemoveStudies}),u.createElement(ce.a,{label:he.all,onClick:this._handleRemoveAll}))},t}(u.PureComponent),fe=o("g5Qf"),ge=o("85c9"),ve=window.t("Show Favorite Drawings Toolbar"),be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._instance=null,t._promise=null,t._bindedForceUpdate=function(){return t.forceUpdate()},t._handleClick=function(){null!==t._instance&&(t._instance.isVisible()?t._instance.hide():t._instance.show())},t}return c.__extends(t,e),t.prototype.componentDidMount=function(){var e=this,t=this._promise=Object(p.ensureNotNull)(Object(fe.getFavoriteDrawingToolbarPromise)());t.then(function(o){e._promise===t&&(e._instance=o,e._instance.canBeShown().subscribe(e._bindedForceUpdate),e._instance.visibility().subscribe(e._bindedForceUpdate),e.forceUpdate())})},t.prototype.componentWillUnmount=function(){this._promise=null,null!==this._instance&&(this._instance.canBeShown().unsubscribe(this._bindedForceUpdate),this._instance.visibility().unsubscribe(this._bindedForceUpdate),this._instance=null)},t.prototype.render=function(){return null!==this._instance&&this._instance.canBeShown().value()?u.createElement(i,{id:this.props.id,icon:ge,isActive:this._instance.isVisible(),onClick:this._handleClick,title:ve}):null},t}(u.PureComponent),_e=o("Ijvb"),ye=o("tITk"),we=o("4o++"),Te=o("7RN7"),function(e){e.Screenshot="drawing-toolbar-screenshot",e.FavoriteDrawings="drawing-toolbar-favorite-drawings",e.ObjectTree="drawing-toolbar-object-tree"}(Ce||(Ce={})),ke=o("JQKp"),Se={weakMagnet:window.t("Weak Magnet"),strongMagnet:window.t("Strong Magnet")},Ee=Object(w.onWidget)(),Le=new y.a,De=function(e){function t(t){var o=e.call(this,t)||this;return o._grayedTools={},o._handleChangeVisibility=function(e){o.setState({isVisible:e})},o._handleEsc=function(){v.resetToCursor(!0),Object(G.b)()},v.init(),o._toolsFilter=new C(o.props.drawingsAccess),o._filteredLineTools=k.map(function(e){return{title:e.title,items:e.items.filter(function(e){return o._toolsFilter.isToolEnabled(T.a[e.name].localizedName)})}}).filter(function(e){return 0!==e.items.length}),o._filteredLineTools.forEach(function(e){ +return e.items.forEach(function(e){o._grayedTools[e.name]=o._toolsFilter.isToolGrayed(T.a[e.name].localizedName)})}),o.state={isVisible:S.isDrawingToolbarVisible.value(),magnet:v.properties().childs().magnet.value(),magnetMode:v.properties().childs().magnetMode.value()},o._features={favoriting:!Ee&&g.enabled("items_favoriting"),multicharts:g.enabled("support_multicharts"),tools:!Ee||g.enabled("charting_library_base")},o._negotiateResizer(),o}return c.__extends(t,e),t.prototype.getChildContext=function(){return{chartWidgetCollection:this.props.chartWidgetCollection,customCloseDelegate:Le}},t.prototype.componentDidMount=function(){S.isDrawingToolbarVisible.subscribe(this._handleChangeVisibility),d.findDOMNode(this).addEventListener("contextmenu",function(e){return e.preventDefault()}),G.a.subscribe(this,this._handleGlobalClose),v.properties().childs().magnet.subscribe(this,this._updateMagnetEnabled),v.properties().childs().magnetMode.subscribe(this,this._updateMagnetMode)},t.prototype.componentWillUnmount=function(){S.isDrawingToolbarVisible.unsubscribe(this._handleChangeVisibility),G.a.unsubscribe(this,this._handleGlobalClose),v.properties().childs().magnet.unsubscribe(this,this._updateMagnetEnabled),v.properties().childs().magnetMode.unsubscribe(this,this._updateMagnetMode)},t.prototype.componentDidUpdate=function(e,t){var o=this.state.isVisible;o!==t.isVisible&&(b.emit("toggle_sidebar",!o),f.setValue("ChartDrawingToolbarWidget.visible",o),this._negotiateResizer())},t.prototype.render=function(){var e,t=this,o=this.props,n=o.bgColor,i=o.chartWidgetCollection,c=o.readOnly,d=(o.hideMainMenu,this.state),p=d.isVisible,h=d.magnet,f=d.magnetMode,g={backgroundColor:n&&"#"+n};return u.createElement("div",{className:m(ke.drawingToolbar,(e={},e[ke.isHidden]=!p,e)),style:g,onClick:this.props.onClick},u.createElement(j,{onScroll:this._handleGlobalClose,isVisibleFade:Modernizr.mobiletouch,isVisibleButtons:!Modernizr.mobiletouch,isVisibleScrollbar:!1},u.createElement("div",{className:ke.inner},!1,!c&&u.createElement("div",{className:ke.group,style:g},this._filteredLineTools.map(function(e,o){return u.createElement(pe,{chartWidgetCollection:i,favoriting:t._features.favoriting,grayedTools:t._grayedTools,key:o,dropdownTooltip:e.title,lineTools:e.items})}),this._toolsFilter.isToolEnabled("Font Icons")&&u.createElement(oe,{isGrayed:this._grayedTools["Font Icons"],toolName:"LineToolIcon"})),!c&&u.createElement("div",{className:ke.group,style:g},u.createElement(re,{toolName:"measure"}),u.createElement(re,{toolName:"zoom"}),u.createElement(ae,{chartWidgetCollection:i})),!c&&u.createElement("div",{className:ke.group,style:g},u.createElement(X,{buttonIcon:f===we.MagnetMode.StrongMagnet?_e.a.strongMagnet:_e.a.magnet,buttonTitle:T.a.magnet.localizedName,isActive:h,onClickButton:a,checkable:!0},u.createElement(ce.a,{key:"weakMagnet",icon:_e.a.magnet,isActive:h&&f!==we.MagnetMode.StrongMagnet,label:Se.weakMagnet,onClick:s}),u.createElement(ce.a,{key:"strongMagnet",icon:_e.a.strongMagnet,isActive:h&&f===we.MagnetMode.StrongMagnet, +label:Se.strongMagnet,onClick:l})),this._features.tools&&u.createElement(ie,{property:v.properties().childs().stayInDrawingMode,saveDefaultOnChange:!0,toolName:"drawginmode"}),this._features.tools&&u.createElement(ie,{property:v.lockDrawings(),toolName:"lockAllDrawings"}),this._features.tools&&u.createElement(ie,{property:v.hideAllDrawings(),toolName:"hideAllDrawings"}),!1),!c&&this._features.tools&&u.createElement("div",{className:ke.group,style:g},u.createElement(me,{chartWidgetCollection:i,toolName:"removeAllDrawingTools"})),u.createElement("div",{className:ke.fill,style:g}),!c&&(this._features.tools||!1)&&u.createElement("div",{className:m(ke.group,ke.lastGroup),style:g},!1,this._features.tools&&this._features.favoriting&&u.createElement(be,{id:Ce.FavoriteDrawings}),this._features.tools&&u.createElement(r,{id:Ce.ObjectTree,action:function(){return t._activeChartWidget().showObjectsTreeDialog()},toolName:"showObjectsTree"})))),u.createElement(W,{toolbarVisible:p}),u.createElement(z.a,{keyCode:U.a.Escape,handler:this._handleEsc}))},t.prototype._activeChartWidget=function(){return this.props.chartWidgetCollection.activeChartWidget.value()},t.prototype._negotiateResizer=function(){this.props.resizerBridge.negotiateWidth(this.state.isVisible?Te.b:Te.a)},t.prototype._handleGlobalClose=function(){Le.fire()},t.prototype._updateMagnetEnabled=function(){var e={magnet:v.properties().childs().magnet.value()};this.setState(e)},t.prototype._updateMagnetMode=function(){var e={magnetMode:v.properties().childs().magnetMode.value()};this.setState(e)},t.childContextTypes={chartWidgetCollection:h.any.isRequired,customCloseDelegate:h.any.isRequired},t}(u.PureComponent),o.d(t,"DrawingToolbarRenderer",function(){return Ae}),Ae=function(){function e(e,t){var o=this;this._component=null,this._handleRef=function(e){o._component=e},this._container=e,d.render(u.createElement(De,c.__assign({},t,{ref:this._handleRef})),this._container)}return e.prototype.destroy=function(){d.unmountComponentAtNode(this._container)},e.prototype.getComponent=function(){return Object(p.ensureNotNull)(this._component)},e}()},"85c9":function(e,t){e.exports=''},"9dlw":function(e,t,o){"use strict";var n,i,r,a,s,l,c,u,d;o.d(t,"a",function(){return d}),n=o("mrSG"),i=o("bf9a"),r=o("q1tI"),a=o("i8i4"),s=o("17x9"),l=o("RgaO"),c=o("AiMB"),u=o("DTHj"),d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleClose=function(){t.props.onClose()},t._handleClickOutside=function(e){var o,n=t.props,i=n.closeOnClickOutside,r=n.onClickOutside,s=n.doNotCloseOn;r&&r(e), +i&&(s&&e.target instanceof Node&&(o=a.findDOMNode(s))instanceof Node&&o.contains(e.target)||t._handleClose())},t._handleScroll=function(e){var o=t.props.onScroll;o&&o(e),e.stopPropagation()},t}return n.__extends(t,e),t.prototype.componentWillReceiveProps=function(e){this.props.isOpened&&!e.isOpened&&this.setState({isMeasureValid:void 0})},t.prototype.render=function(){var e=this.props,t=e.children,o=e.isOpened,i=(e.closeOnClickOutside,e.doNotCloseOn,e.onClickOutside,e.onClose,n.__rest(e,["children","isOpened","closeOnClickOutside","doNotCloseOn","onClickOutside","onClose"]));return o?r.createElement(c.a,null,r.createElement(l.a,{handler:this._handleClickOutside,mouseDown:!0,touchStart:!0},r.createElement(u.a,n.__assign({},i,{isOpened:o,onClose:this._handleClose,onScroll:this._handleScroll,customCloseDelegate:this.context.customCloseDelegate}),t))):null},t.contextTypes={customCloseDelegate:s.any},t.defaultProps={closeOnClickOutside:!0},t}(r.PureComponent)},AiMB:function(e,t,o){"use strict";var n,i,r,a,s,l,c,u;o.d(t,"a",function(){return c}),o.d(t,"b",function(){return u}),n=o("mrSG"),i=o("q1tI"),r=o("i8i4"),a=o("0waE"),s=o("jAh7"),l=o("+EG+"),c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._uuid=Object(a.guid)(),t}return n.__extends(t,e),t.prototype.componentWillUnmount=function(){this._manager().removeWindow(this._uuid)},t.prototype.render=function(){return r.createPortal(i.createElement(u.Provider,{value:this},this.props.children),this._manager().ensureWindow(this._uuid))},t.prototype.moveToTop=function(){this._manager().moveToTop(this._uuid)},t.prototype._manager=function(){return null===this.context?Object(s.getRootOverlapManager)():this.context},t.contextType=l.b,t}(i.PureComponent),u=i.createContext(null)},EA32:function(e,t,o){e.exports={wrap:"wrap-2I6DAtXG-",buttonIcon:"buttonIcon-2rBwJ1QM-",item:"item-31XunD5q-",hovered:"hovered-2A1Cpat5-",button:"button-21ihqWJ8-"}},GWvR:function(e,t){e.exports=''},HHbT:function(e,t){ +e.exports=''},JQKp:function(e,t,o){e.exports={drawingToolbar:"drawingToolbar-U3_QXRof-",isHidden:"isHidden-2d-PYkzV-",inner:"inner-1xuW-gY4-",group:"group-2JyOhh7Z-",noGroupPadding:"noGroupPadding-1TTjVKWk-",lastGroup:"lastGroup-O75UB5Xa-",fill:"fill-1djIbBXv-",separator:"separator-1BAqp1-l-"}},KKsp:function(e,t,o){"use strict";function n(e){return i.createElement("div",{className:r.separator})}var i,r;o.d(t,"a",function(){return n}),i=o("q1tI"),r=o("NOPy")},KmEK:function(e,t,o){e.exports={dropdown:"dropdown-3_ASLzSj-",buttonWrap:"buttonWrap-3fZWypJl-",control:"control-1TyEfSIx-",arrow:"arrow-1cFKS5Ok-",arrowIcon:"arrowIcon-2wA7q8om-",isOpened:"isOpened-22vLOY9o-",isGrayed:"isGrayed-xr-mULNo-"}},N5tr:function(e,t,o){"use strict";function n(e){return a.createElement(e.href?"a":"div",e)}function i(e){e.stopPropagation()}var r,a,s,l,c,u,d,p;o.d(t,"a",function(){return p}),r=o("mrSG"),a=o("q1tI"),s=o("TSYQ"),l=o("tWVy"),c=o("tITk"),u=o("QpNh"),d=o("v1bN"),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleClick=function(e){var o=t.props,n=o.dontClosePopup,i=o.isDisabled,r=o.onClick,a=o.onClickArg,s=o.trackEventObject;i||(s&&Object(c.trackEvent)(s.category,s.event,s.label),r&&r(a,e),n||Object(l.b)())},t._handleMouseUp=function(e){var o=t.props,n=o.link,i=o.trackEventObject;1===e.button&&n&&i&&Object(c.trackEvent)(i.category,i.event,i.label)},t._formatShortcut=function(e){return e&&e.split("+").join(" + ")},t}return r.__extends(t,e),t.prototype.render=function(){var e,t,o=this.props,l=o.className,c=o.shortcut,p=o.forceShowShortcuts,h=o.icon,m=o.isActive,f=o.isDisabled,g=o.isHovered,v=o.appearAsDisabled,b=o.label,_=o.link,y=o.showToolboxOnHover,w=o.target,T=o.toolbox,C=o.theme,k=void 0===C?d:C,S=Object(u.a)(this.props);return a.createElement(n,r.__assign({},S,{className:s(l,k.item,h&&k.withIcon,(e={},e[k.isActive]=m,e[k.isDisabled]=f||v,e[k.hovered]=g,e)),href:_,target:w,onClick:this._handleClick,onMouseUp:this._handleMouseUp}),void 0!==h&&a.createElement("div",{className:k.icon,dangerouslySetInnerHTML:{__html:h}}),a.createElement("div",{className:k.labelRow},a.createElement("div",{className:k.label},b)),(void 0!==c||p)&&a.createElement("div",{className:k.shortcut},this._formatShortcut(c)),void 0!==T&&a.createElement("div",{onClick:i,className:s(k.toolbox,(t={},t[k.showOnHover]=y,t))},T))},t}(a.PureComponent)},NOPy:function(e,t,o){e.exports={separator:"separator-25lkUpN--"}},QpNh:function(e,t,o){ +"use strict";function n(e){var t,o,n,r,a,s=Object.entries(e).filter(i),l={};for(t=0,o=s;t'},nPPD:function(e,t,o){"use strict";function n(e,t,o){var n,i,r,a,s;for(void 0===o&&(o={}),n=Object.assign({},t),i=0,r=Object.keys(t);i"),this._table=$('
').appendTo(this._res),e=this.createLineWidthEditor(),t=b(),i=this.createColorPicker(),o=this.addLabeledRow(this._table,"Line"),$("
").append(i).appendTo(o),$("").append(e).appendTo(o),$('').append(t.render().css("display","block")).appendTo(o),n=$(""),o=$("
').append($("
').append($("").append(l).appendTo(o),$("").append(u).appendTo(o),$("").append(r).appendTo(o),$("").append(C).appendTo(o),$("").append(g).appendTo(o),o=$("
").append($.t("Text Alignment:")).appendTo(o),y=$(""),w=$("").data("selectbox-css",{display:"block"}),$("").append(y).appendTo(o),$("").append(w).appendTo(o),T=$("