diff --git a/.gitignore b/.gitignore index 609ff97..ef947e0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ coverage/ npm-debug.log db/ uploads/ +.env \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 11500bd..42e688c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,5 @@ sudo: required -language: java -jdk: -- oraclejdk8 +language: bash services: - docker branches: @@ -10,43 +8,9 @@ branches: before_install: - nvm install 6.8.1 - nvm use 6.8.1 -- npm install -g npm@'>=3' +- npm install -g yarn npm@'>=3' install: -- npm install -addons: - sonarqube: true - ssh_known_hosts: $STAGING_SERVER -env: - global: - - COMMIT=${TRAVIS_COMMIT::8} - - secure: c2rxbjWjpd7Jvjon1+mMY/oMLwjBgBF/1x/+3q3FXREjzShJ6fMSPt0Pfep5gWr7xGPrGbIqQ9zvQ4wT5I6ro61C6uJj8oVNh3BxyudbLspFuM2j6RrrKIr7mXRcXEBGLPWJgIpJZZ3kF5y99WYRiHPMO8QykDWu8txWunGYRvs2gezJJsqIgJ0MwLe5/vci9NGYTz1CBS6cTQWgoeHxAySY9lI8m/tJHQNbYwa0Cm9wvcJ2wJcxfplmTraNcD6djfmbN1fUk5GhMW3YQPPuetMgeXPmkcPKV1IjoOgJmxKciGCSW19oBVRtvCKRGQNgoIltM6jbbS61v1Yhia8VRFT6L7ZtsA1URiEjnX1t4f/2xWr7DLBXpv2+TKNSg/uxqsElIpvEy9kII8N3nQnR2CLorIP3VZqLxJsSceyTkx2kIljuHyJfb6egoMVfuqhyDBhHuIQQTJRpgyBKZbUaz5wB/lGB7ASGqAZCptS+JEJjIUkMW5h6O93L+jqzi5iim8Uq/dZyKW69FzH5xZzIn90R2/2sIL5oqGstTwB7xpu/9jT9L+x5YQB4e5w9n+cGzqluCsf+c0x/fFPVoy9NFs0azyTVRxOiKG+TT6bc1M/GWP0jTYxgtQBH4aavqxYmw6VR173Ye3HUEwhkB/ZP2Rq0GzzBRQHH4l+EhzzhiYw= - - secure: BTgMPl0ycLP8K9zXIKktTy7c/1xnE6VigI2gBYhCf8yBokQnUo4DAcKrJbO8wMcOlO3deD4+C7/rem/O2NGSCd8YpA3npdR9BjXzCccEg9K8mYpTLCeWmszU5hWYUzop6gUrlBaQQbUcJ0Qpk7Uaz5biK73n0t/3AyBfAGIkWmp57UJcpWcHOiF8J8wjfuJFk4LGZd7TXdS1fQLVhiLbidb/m3cB///jQO20EyfWMYwXn4D71VMQAKKWtSLjlUg8zD9qoiW4+joTNd2U2f5wCsmvb/rcS13FgQ/qZnWNWo7aQ5vEZ4Bo0WOPvX/KoDySLYwjowQKCchqTTDL8aWDbd0BDqzGnIx8nvEJMBpPujNh6d9hPolx3lX743/Hig9RO9ArseASDAWQ0OUifuyfHD+rhxJCuNqUWjZ+h7mqwPTB8SbJ8Kn+LmXlDbBbod84jDxjg+puB4UcNeUXkkeIJ+jsON0hXXxpxFjIPRV9z4euF2HiEjgLS/wwX4d6/bSyqJNYK+mXMF5sJ+Bmf5GnEcSdCLMmrgB6kiCXMP1V6PMz5Z+UvBhScHv5GR8Z4oL2j8UCN94Peo5H+N8nl0kxHkse/n2T/o2SIqTCPNOLRkVHjfe7/+rBYJRkhokTMWlnDW/24nQzsm1DFppEDVoi7BHzwbOxAh5PbcBCMKoO6Tg= - - secure: Hu5xs0fiOD2AA92mG4536CJml0FmL0swUBdpavZjXCFrf07A+uayGPaf/eg0/0waYjBfdOKgvLa5eh9VPeLUuLm4hkmr3nDxRJHDe5GQFZrtHOJZMk3X5yWQW3NOB1H9FogjjVTe7MZu41d2r5aqGghZ4CQauEbDd/YeTtnUu5GF1GXIWA56LUz9uhlhF+js8/wnAIl5K/eKCGJYctRZIGDkF3WV+tV3Q/OF8Y4mzqJD6ZGN2nRSBX9M46gUYM6EmMc5lt6C1S1uMG/4cCPQ2xxeoaQ3ZrSQ9zrmIZEDrShXtOtFH3xVEsZ0iyxTEV5Y+zvr4+m554+XiGA0C6Knb5Q/q42omm9n0yaW8XoWjgwW5uIBQ8PgxaP8WJlN4PT2hBw9jm7Tzp0zDU/3fM4h3HTgvxWKIA6ZPGnNzIbNCtt5yAOvPLQwcmjpDug/vqoWCgGqz30UEkawFzOTWYB3ZSLjWMBUP46no4PlfeNlaqWquHXx5pmIKWR+OpJCccOpOQdQf3aiP97mIJPkyMbJjCCa5vJrtMpVwLRe08lvgb57coSXSQqcBXb56MmLIbacdtfrPUxauEpbELSQkj4G0FbOu53ofQJfHnJp02uczIqhVoGXerI42Z8UQ6SRNdp0mICCCXChz3+RrFxx4sPL3DcCmqP9VE2DPYDiIYAqIjc= - - secure: Kp6ina+boGJ8UJmVuwz28qBi124Y3eWfgy+AEm2X8eutQqE6VeNbL6qVkrfUbtsXXZAFjzt05FYn8+TKA08tc7YdzRUNdpON5YdcC21wCRqotP+KqHoG/FTNm5tJJ55UlmrtJfxFw33suSrw95HHUNV0dYE8uSJd7aCrJN482hWfN0usNF2ew8XDdFLtqvux1tBSF29b66MZIbH6/S7k180P1xjfNl7Ah5nnrqUgWB2glSsMi/qPwuGKZTIasKiNm/qVUkiLCY2mMPk9e2C4Wh9EfcL4hJBkjTzBanyiBAgVs244geWqeQ/KBUTZuQzz9tQFH7UyUge6MADw0C+Bb4mBhIWtAhSokS9nsGvFWIKZuPJgO1waDc5TStEXXZYyDvaCiibfBVCFyf51dmIJ174gvE+CxlZ+uVOSafoBdOaAcHP+AyG9mP6YRZHZYYVPiyrXHqyGYlf9WnTzA5U1xK1MPca2Nr4PJpt9IYnZ6QsJIYYpe+E4stNGxH59z0oUx5psjfC2pFVP4lG7IMDcHWfOmJen0ZXbLJrSDe7yhijzXIBkF3YgW4Meysfa6164GTd0hPvW4zjIkVe54z1r3FtpXxccAdvBiolY+UqhRe7H+AOXyORn5eYZ0FPt3OhPARjYB3YWwgxRDuo0+uWNQ5/ZmVaqQbrbFlTKQB2A3/c= +- yarn install script: - docker pull ubuntu:latest -- npm run coverage -after_success: -- sonar-scanner -Dsonar.login=$SONAR_TOKEN -- export REPO=scoady2/lifecycle-management-for-docker -- export TAG=`if [ "$TRAVIS_BRANCH" == "master" ]; then echo "latest"; else echo $TRAVIS_BRANCH; - fi` -- if [[ $TRAVIS_PULL_REQUEST == "false" && $TRAVIS_BRANCH == "master" ]] ; then docker - login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS ; docker build -f Dockerfile - -t $REPO:$COMMIT . ; docker tag $REPO:$COMMIT $REPO:$TAG ; docker tag $REPO:$COMMIT - $REPO:travis-$TRAVIS_BUILD_NUMBER ; docker push $REPO ; - openssl aes-256-cbc -K $encrypted_f06e4d6d6f2c_key -iv $encrypted_f06e4d6d6f2c_iv -in stephen.key.enc -out /tmp/stephen.key -d ; - eval "$(ssh-agent -s)" ; - chmod 600 /tmp/stephen.key ; - ssh-add /tmp/stephen.key ; - ./deploy.sh $STAGING_SERVER; - fi -notifications: - email: - on_success: never - on_failure: always - slack: - on_success: always - on_failure: always - on_start: always - secure: ZeX5tBf787syAtvLXEfhVzEt246zQMjskEodvFl52grK8lCvcoFCCY0UYRGAN2bb01odwNPbkrdcnrvH/UaIqIvw831lDq5PKXOgjyMmDWWH7j8qSkrH+5YpjhSumdfQa1KLfwrzLsgTPc/tJAOzW/vx0v55kYag349a5FPJIUZGCVgbnt0d5e93xv4pcnzb5I43/+lRZXbNCanuCt0rKB7vahNP673Rydy+41GJ0BosZtGXpoG4Kr2rt6S4dfpWy5x7Lao5ELVzoY5b3D3PIBh7hLUiqmC3axAqThuyTM9Df+QM3MQaqmH6IKWX3DmaVvfSRQrQ2fMyYJNt6HbK9EtFiNeNEVGluiYRiBE9/ch/VbLcZjw8wLX0NJ1rVzIx63sqJQzybCqMaxOWngEJCx9i3vYXAcNIUGooRpqbijp3LixFhmk1CpJ+jLK2/8jVr5KfoQUmS5tS5lP4fi2+h9JOjOTlAvh8oO0HdNqzlyowrvxAIiyDm1pHen9cDRaVhg9k6eq2BimNQc+8Bb8fUVv7f6ItaMMs1HWVz7ulXyu8pHbzzfExbwWYUobqgkdo+SqIStDfE1ECdU8y+i26f0VOemTo7+N1Fj56pyeMXBjLEazdIAaaBDNRE89TGGC7XOAb63fBCrimYGoylA3Tew5/Dz90iUUhFH9O/ALpMrI= +- npm run coverage \ No newline at end of file diff --git a/README.md b/README.md index 95ea852..f9461b2 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,3 @@ -

- -

+# This is a fork from ![Stephen Coady's Gantry](https://github.com/StephenCoady/gantry) -| Build Status | Dependencies | Version | Docker Image | Coverage | Technical Debt | -|---|---|---|---|---|---| -|[![Build][travis-image]][travis-url]|[![Deps!][daviddm-image]][daviddm-url]|[![Tag!][github-image]][github-url]|[![Docker][docker-image]][docker-url]|[![Coverage][coverage-image]][sonar-url]|[![Tech Debt][tech-debt-image]][sonar-url]| -> This project aims to provide graphical option for managing Docker on a remote host. It will provide container, image and network orchestration through a graphical user interface. - -## Usage - -Clone down this repository through your preferred means and navigate to the projects root folder. Please run: - -``` -npm install -``` - -NOTE: The project uses aspects of ES6 and might necessitate running your node process in strict mode to build correctly. Therefore in any documentation referenced within this repository you might need to swap in --use-strict as the case may be. - -``` -node --use-strict -``` - -#### Docker Container -``` -docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock scoady2/lifecycle-management-for-docker -``` - -#### Using Node.js -Note: The Docker API must be listening on /var/run/docker.sock -``` -node index.js -``` -You should now be able to navigate to http://:3000 - -#### Credentials -By default the credentials are as follows: -``` -user: admin - -pw: admin -``` - -#### Run tests -``` -npm test -``` - -#### Run coverage report -``` -npm run coverage -``` - -## Documentation -To view the API documentation for the application navigate to http://``:3000/docs - -## License - -MIT © [Stephen Coady]() - - -[travis-image]: https://img.shields.io/travis/StephenCoady/gantry.svg?branch=master -[travis-url]: https://travis-ci.org/StephenCoady/gantry -[daviddm-image]: https://img.shields.io/david/StephenCoady/lifecycle-management-for-docker.svg -[daviddm-url]: https://david-dm.org/StephenCoady/lifecycle-management-for-docker -[github-image]: https://img.shields.io/github/tag/StephenCoady/lifecycle-management-for-docker.svg -[github-url]: https://github.com/StephenCoady/lifecycle-management-for-docker/releases -[docker-image]: https://img.shields.io/docker/pulls/scoady2/lifecycle-management-for-docker.svg -[docker-url]: https://hub.docker.com/r/scoady2/lifecycle-management-for-docker/ -[coverage-image]: https://sonarqube.com/api/badges/measure?key=lifecycle-management-for-docker&metric=coverage -[tech-debt-image]: https://sonarqube.com/api/badges/measure?key=lifecycle-management-for-docker&metric=sqale_debt_ratio -[sonar-url]: https://sonarqube.com/dashboard?id=lifecycle-management-for-docker +*This repository is the Gantry component, part of the backend of Dynamic Dockerizer - a project that provides a user-friendly interface that helps to clone a VM, convert running processes running in the clone to Docker images, create containers from the images, and manage them. Full reference to all repositories of the project: ![Master](https://github.com/thailekha/dynamic-dockerizer-master), ![Agent](https://github.com/thailekha/dynamic-dockerizer-agent), ![Frontend](https://github.com/thailekha/dynamic-dockerizer-frontend),![Gantry](https://github.com/thailekha/gantry)* \ No newline at end of file diff --git a/app/app.js b/app/app.js deleted file mode 100644 index d5f82d4..0000000 --- a/app/app.js +++ /dev/null @@ -1,107 +0,0 @@ -angular.module('uiForDocker', [ - 'ngRoute', - 'toaster', - 'ngCookies', - 'ngAnimate', - 'ngMaterial', - 'angular-loading-bar', - 'chart.js', - 'angularFileUpload' - ]) - .controller('LandingCtrl', function($scope, $route, $location, $cookieStore, authentication, $rootScope) { - $scope.isActive = function(route) { - return route === $location.path(); - } - - $rootScope.isLoggedIn = false; - - $scope.logout = function() { - $cookieStore.remove('Gantry'); - authentication.setIslogged(false); - $rootScope.isLoggedIn = false; - $location.path('/login'); - }; - }) - .config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { - - $routeProvider - .when('/', { - templateUrl: 'components/dashboard/dashboard.html', - controller: 'DashCtrl' - }) - .when('/containers', { - templateUrl: 'components/containers/containers.html', - controller: 'ContainersCtrl' - }) - .when('/containers/:Id', { - templateUrl: 'components/container/container.html', - controller: 'ContainerCtrl' - }) - .when('/containers/:Id/stats', { - templateUrl: 'components/stats/stats.html', - controller: 'StatsCtrl' - }) - .when('/images', { - templateUrl: 'components/images/images.html', - controller: 'ImagesCtrl' - }) - .when('/images/:Id', { - templateUrl: 'components/image/image.html', - controller: 'ImageCtrl' - }) - .when('/networks', { - templateUrl: 'components/networks/networks.html', - controller: 'NetworksCtrl' - }) - .when('/networks/:Id', { - templateUrl: 'components/network/network.html', - controller: 'NetworkCtrl' - }) - .when('/volumes', { - templateUrl: 'components/volumes/volumes.html', - controller: 'VolumesCtrl' - }) - .when('/volumes/:Id', { - templateUrl: 'components/volume/volume.html', - controller: 'VolumeCtrl' - }) - .when('/docker', { - templateUrl: 'components/docker/docker.html', - controller: 'DockerCtrl' - }) - .when('/events', { - templateUrl: 'components/events/events.html', - controller: 'EventsCtrl' - }) - .when('/settings', { - templateUrl: 'components/settings/settings.html', - controller: 'SettingsCtrl' - }) - .when('/login', { - templateUrl: 'components/login/login.html', - controller: 'LoginCtrl' - }) - .otherwise({ - redirectTo: '/' - }); - $locationProvider.hashPrefix(''); - }]) - .run(['$rootScope', '$location', '$route', 'authentication', '$cookieStore', function($rootScope, $location, $route, authentication, $cookieStore) { - $rootScope.$on('$routeChangeStart', function(event) { - if (typeof $cookieStore.get('Gantry') !== 'undefined') { - authentication.setIslogged(true); - $rootScope.isLoggedIn = true; - } - var path = $location.path(); - if (!authentication.isLoggedIn()) { - console.log('DENY on route: ', $location.path()); - if (path !== "/login") { - $rootScope.isLoggedIn = false; - $location.path('/login'); - } - } else { - $rootScope.isLoggedIn = true; - console.log('ALLOW on route: ', $location.path()); - } - }); - }]); diff --git a/app/components/container/container.html b/app/components/container/container.html deleted file mode 100644 index b8b772c..0000000 --- a/app/components/container/container.html +++ /dev/null @@ -1,71 +0,0 @@ -
-
-
- Back -
-
-
-
-
-
-
-

- Actions on {{container.Name}} -

-
-
-
- - - - - - - -
-
-
-
-
-
-
-

- Information -

-
-
- - - - - - - - - - - - - - - - - - - -
Statusrunningpausedstopped
Path{{container.Path}}
Privileged Mode{{container.HostConfig.Privileged}}
IP address{{container.NetworkSettings.IPAddress}}
-
-
-
-
-
-
-

- Container Logs -

-
-
-
{{log}}
-
-
-
diff --git a/app/components/container/containerController.js b/app/components/container/containerController.js deleted file mode 100644 index 5860b71..0000000 --- a/app/components/container/containerController.js +++ /dev/null @@ -1,87 +0,0 @@ -angular.module('uiForDocker') - .controller('ContainerCtrl', ContainerCtrl); - -ContainerCtrl.$inject = ['$scope', '$http', '$routeParams', 'containerApi', 'toaster', '$route', '$location', 'dockerApi']; - -function ContainerCtrl($scope, $http, $routeParams, containerApi, toaster, $route, $location, dockerApi) { - - containerApi.getOne($routeParams.Id).then(function(response) { - $scope.container = response.data.container; - }, function(error) {}); - - dockerApi.getLogs($routeParams.Id).then(function(response) { - // Replace carriage returns with newlines to clean up output - var data = response.data.response.replace(/[\r]/g, '\n').substring(8).replace(/\n(.{8})/g, '\n'); - $scope.log = data; - }, function(error) {}); - - $scope.start = function(container) { - containerApi.start(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Name + " started."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Name + " cannot be started."); - }) - } - - $scope.stop = function(container) { - containerApi.stop(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Name + " stopped."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Name + " cannot be stopped."); - }) - } - - $scope.pause = function(container) { - containerApi.pause(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Name + " paused."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Name + " cannot be paused."); - }) - } - - $scope.unpause = function(container) { - containerApi.unpause(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Name + " unpaused."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Name + " cannot be unpaused."); - }) - } - - $scope.restart = function(container) { - containerApi.restart(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Name + " restarted."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Name + " cannot be restarted."); - }) - } - - $scope.remove = function(container) { - containerApi.remove(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Name + " removed."); - $location.path('/containers'); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Name + " cannot be removed. Is it stopped?"); - }) - } - - $scope.viewContainer = function(container) { - $location.path('/containers/' + container.Id + '/stats'); - }; -} diff --git a/app/components/containers/containers.html b/app/components/containers/containers.html deleted file mode 100644 index b9e1dd6..0000000 --- a/app/components/containers/containers.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - -
-
- - - - - - -
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
NameStateStatusPortsImage
{{container.Names[0]}}runningpausedstoppedcreated{{container.Status}} -

{{port.PrivatePort}}:{{port.PublicPort}}

-
{{container.Image | limitTo : 25 : 0}}
-
-
-
-
- {{currentPage+1}}/{{numberOfPages()}} - -
-
-
- - -
-
-
-

Details

-
-
- -
- -
-
- -
- -
- -
- -
- -
- -
- -
-
- -
- -
-
- -
-
- -
-
- -
-
- -
-
-
- -
- -
- -
-
-
-
- host - -
-
- container - -
-
- - - - -
-
-
-
-
-
- -

Commands

-
-
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
-
-
-
-

Volumes

-
-
- Volume Mapping: -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
- container - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
diff --git a/app/components/containers/containersController.js b/app/components/containers/containersController.js deleted file mode 100644 index d12317d..0000000 --- a/app/components/containers/containersController.js +++ /dev/null @@ -1,303 +0,0 @@ -angular.module('uiForDocker') - .controller('ContainersCtrl', ContainersCtrl); - -ContainersCtrl.$inject = ['$scope', '$http', '$location', 'containerApi', 'imageApi', 'toaster', '$route', '$filter', 'volumeApi']; - -function ContainersCtrl($scope, $http, $location, containerApi, imageApi, toaster, $route, $filter, volumeApi) { - $scope.base = ($location.$$host); - $scope.volumeOrPath = "path"; - $scope.isActive = function(route) { - return route === $location.path(); - } - - $scope.form = { - Volumes: [] - } - - $scope.options = { - name: "", - Image: "", - ExposedPorts: {}, - HostConfig: { - PortBindings: [], - Binds: [], - NetworkMode: "bridge", - Privileged: false - } - }; - - $scope.addPortBinding = function() { - $scope.options.HostConfig.PortBindings.push({ - hostPort: '', - containerPort: '', - protocol: 'tcp' - }); - }; - - $scope.removePortBinding = function(index) { - $scope.options.HostConfig.PortBindings.splice(index, 1); - }; - - $scope.addVolume = function() { - $scope.form.Volumes.push({ - name: '', - containerPath: '' - }); - }; - - $scope.removeVolume = function(index) { - $scope.form.Volumes.splice(index, 1); - }; - - function preparePortBindings(options) { - var bindings = {}; - options.HostConfig.PortBindings.forEach(function(portBinding) { - if (portBinding.containerPort) { - var key = portBinding.containerPort + "/" + portBinding.protocol; - var binding = {}; - if (portBinding.hostPort && portBinding.hostPort.indexOf(':') > -1) { - var hostAndPort = portBinding.hostPort.split(':'); - binding.HostIp = hostAndPort[0]; - binding.HostPort = hostAndPort[1]; - } else { - binding.HostPort = portBinding.hostPort; - } - bindings[key] = [binding]; - $scope.options.ExposedPorts[key] = {}; - } - }); - $scope.options.HostConfig.PortBindings = bindings; - }; - - function prepareConsole() { - var value = $scope.formValues.Console; - var openStdin = true; - var tty = true; - if (value === 'tty') { - openStdin = false; - } else if (value === 'interactive') { - tty = false; - } else if (value === 'none') { - openStdin = false; - tty = false; - } - $scope.options.OpenStdin = openStdin; - $scope.options.Tty = tty; - } - - function prepareVolumes() { - var binds = []; - var volumes = {}; - - $scope.form.Volumes.forEach(function(volume) { - var name = volume.name; - var containerPath = volume.containerPath; - if (name && containerPath) { - var bind = name + ':' + containerPath; - volumes[containerPath] = {}; - if (volume.readOnly) { - bind += ':ro'; - } - binds.push(bind); - } - }); - $scope.options.HostConfig.Binds = binds; - $scope.options.Volumes = volumes; - } - - $scope.createContainer = function() { - preparePortBindings($scope.options); - prepareVolumes(); - prepareConsole(); - let image = {}; - image.name = $scope.options.Image; - if ($scope.options.tag === undefined) { - image.tag = 'latest' - } else { - image.tag = $scope.options.tag; - } - // imageApi.pull(image) - // .then(function(response) { - // toaster.pop('success', "Success", "Image " + $scope.options.Image + " pulled."); - // }) - // .then(function(response) { - containerApi.create($scope.options) - .then(function(response) { - toaster.pop('success', "Success", "Container " + $scope.options.name + " created."); - $route.reload(); - return response; - }) - .then(function(response) { - containerApi.start(response.data.data.id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + $scope.options.name + " started."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + $scope.options.name + " cannot be started."); - }) - }) - // }) - .catch(function(e) { - toaster.pop('error', "Error", "Image " + $scope.options.Image + " cannot be pulled. Is the account named included?"); - }) - }; - - volumeApi.getAll().then(function(response) { - $scope.volumes = response.data.volumes.Volumes; - }, function(error) {}); - - containerApi.getAll().then(function(response) { - $scope.containers = response.data.containers; - $scope.currentPage = 0; - $scope.pageSize = 10; - $scope.q = ''; - $scope.getData = function() { - // needed for the pagination calc - // https://docs.angularjs.org/api/ng/filter/filter - return $filter('filter')($scope.containers, $scope.q) - } - $scope.numberOfPages = function() { - let pages = Math.ceil($scope.getData().length / $scope.pageSize); - if (pages) { - return pages; - } else { - return 1; - } - } - - $scope.$watch('q', function(newValue, oldValue) { - if (oldValue != newValue) { - $scope.currentPage = 0; - } - }, true); - - }, function(error) {}); - - - $scope.checkAll = function() { - angular.forEach($scope.containers, function(container) { - container.select = $scope.selectAll; - }); - }; - - $scope.start = function(containers) { - for (var i = 0; i < containers.length; i++) { - if (containers[i].select) { - var container = containers[i]; - startHandler(container); - } - } - } - - $scope.stop = function(containers) { - for (var i = 0; i < containers.length; i++) { - if (containers[i].select) { - var container = containers[i]; - stopHandler(container); - } - } - } - - $scope.pause = function(containers) { - for (var i = 0; i < containers.length; i++) { - if (containers[i].select) { - var container = containers[i]; - pauseHandler(container); - } - } - } - - $scope.unpause = function(containers) { - for (var i = 0; i < containers.length; i++) { - if (containers[i].select) { - var container = containers[i]; - unpauseHandler(container); - } - } - } - - $scope.restart = function(containers) { - for (var i = 0; i < containers.length; i++) { - if (containers[i].select) { - var container = containers[i]; - restartHandler(container); - } - } - } - - $scope.remove = function(containers) { - for (var i = 0; i < containers.length; i++) { - if (containers[i].select) { - var container = containers[i]; - removeHandler(container); - } - } - } - - function startHandler(container) { - containerApi.start(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Names[0] + " started."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Names[0] + " cannot be started."); - }) - } - - function stopHandler(container) { - containerApi.stop(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Names[0] + " stopped."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Names[0] + " cannot be stopped."); - }) - } - - function pauseHandler(container) { - containerApi.pause(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Names[0] + " paused."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Names[0] + " cannot be paused."); - }) - } - - function unpauseHandler(container) { - containerApi.unpause(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Names[0] + " unpaused."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Names[0] + " cannot be unpaused."); - }) - } - - function restartHandler(container) { - containerApi.restart(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Names[0] + " restarted."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Names[0] + " cannot be restarted."); - }) - } - - function removeHandler(container) { - containerApi.remove(container.Id) - .then(function(response) { - toaster.pop('success', "Success", "Container " + container.Names[0] + " removed."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Container " + container.Names[0] + " cannot be removed. Is it stopped?"); - }) - } -} diff --git a/app/components/dashboard/dashboard.html b/app/components/dashboard/dashboard.html deleted file mode 100644 index da313b6..0000000 --- a/app/components/dashboard/dashboard.html +++ /dev/null @@ -1,96 +0,0 @@ -
-
-
-
- Containers -
-
-
-
- - -
-
-
-
-
-
-
-
- Disk Usage -
-
-
-
- - -
-
-
-
-
-
-
-
-
-
- Networks -
-
-
-
- - -
-
-
-
-
-
-
-
- Volumes -
-
-
-
-

{{volumes.length}}

-
-
-
-
-
-
-
-
-
-
- Host Information -
-
-
-
- - - - - - - - - - - - - - - - - -
Architecture{{architecture}}
Operating System{{os}}
CPUs{{cpus}}
Server Version{{ serverVersion }}
-
-
-
-
-
-
diff --git a/app/components/dashboard/dashboardController.js b/app/components/dashboard/dashboardController.js deleted file mode 100644 index f3c864b..0000000 --- a/app/components/dashboard/dashboardController.js +++ /dev/null @@ -1,76 +0,0 @@ -angular.module('uiForDocker') - .controller('DashCtrl', DashCtrl); - -DashCtrl.$inject = ['$scope', '$http', '$route', '$location', 'containerApi', 'imageApi', 'networkApi', 'volumeApi', 'dockerApi']; - -function DashCtrl($scope, $http, $route, $location, containerApi, imageApi, networkApi, volumeApi, dockerApi) { - $scope.imagesSize = 0; - $scope.imageLabels = ["Used", "Available"]; - $scope.imageData = []; - $scope.height_chart = '90'; - $scope.options = { - legend: { - display: true, - position: "bottom" - } - }; - $scope.imageColours = ['#ED956B', '#42B185']; - - - $scope.netLabels = []; - - $scope.netData = []; - - dockerApi.getInfo().then(function(res) { - if((res.data.info.ContainersRunning + - res.data.info.ContainersStopped + - res.data.info.ContainersPaused) == 0){ - $scope.containerLabels = ["No Containers on host"]; - $scope.containerData = [1]; - $scope.containerColours = ['#EA3A3A']; - } else { - $scope.containerColours = ['#42B185', '#6BC3ED', '#ED956B']; - $scope.containerLabels = ["Running", "Paused", "Stopped"]; - $scope.containerData = [ - res.data.info.ContainersRunning, - res.data.info.ContainersPaused, - res.data.info.ContainersStopped - ]; - } - $scope.images = res.data.info.Images; - $scope.cpus = res.data.info.NCPU; - $scope.architecture = res.data.info.Architecture; - $scope.os = res.data.info.OSType; - $scope.memTotal = (res.data.info.MemTotal.toFixed(1) / 1000000000).toString().substring(0, 6); - $scope.serverVersion = res.data.info.ServerVersion; - - - }, function(error) {}) - .then(function() { - imageApi.getAll().then(function(response) { - var size = 0; - response.data.images.forEach(function(image) { - var size = image.VirtualSize; - var sizeMegabytes = size; - $scope.imagesSize += Math.round(sizeMegabytes.toString()); - }); - $scope.imagesSize = ($scope.imagesSize.toFixed(1) / 1000000000).toString().substring(0, 6); - $scope.imageData[0] = $scope.imagesSize; - $scope.imageData[1] = ($scope.memTotal - $scope.imageData[0]).toFixed(1); - }, function(error) {}); - }) - - networkApi.getAll().then(function(res) { - $scope.networks = res.data.networks; - for (var i = 0; i < $scope.networks.length; i++) { - $scope.networks[i].Name = $scope.networks[i].Name.substring(0, 12); - $scope.netLabels.push($scope.networks[i].Name); - let size = parseInt(Object.keys($scope.networks[i].Containers).length); - $scope.netData.push(size); - } - }, function(error) {}); - - volumeApi.getAll().then(function(res) { - $scope.volumes = res.data.volumes.Volumes; - }, function(error) {}); -} diff --git a/app/components/docker/docker.html b/app/components/docker/docker.html deleted file mode 100644 index 8ff64f2..0000000 --- a/app/components/docker/docker.html +++ /dev/null @@ -1,55 +0,0 @@ -
-
-
-
-

- Docker Engine -

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Architecture{{architecture}}
Operating System{{os}}
CPUs{{cpus}}
Server Version{{ serverVersion }}
Kernel{{ kernel }}
Driver{{ driver }}
Operating System{{ operatingSystem }}
Root Directory{{ dockerRootDir }}
Host Name{{ name }}
-
-
-
-
-
-
diff --git a/app/components/docker/dockerController.js b/app/components/docker/dockerController.js deleted file mode 100644 index 5ee939e..0000000 --- a/app/components/docker/dockerController.js +++ /dev/null @@ -1,19 +0,0 @@ -angular.module('uiForDocker') -.controller('DockerCtrl', DockerCtrl); - -DockerCtrl.$inject = ['$scope', '$http', 'dockerApi']; - -function DockerCtrl($scope, $http, dockerApi) { - dockerApi.getInfo().then(function(res) { - console.log(res); - $scope.cpus = res.data.info.NCPU;// - $scope.architecture = res.data.info.Architecture;// - $scope.os = res.data.info.OSType;// - $scope.serverVersion = res.data.info.ServerVersion;// - $scope.driver = res.data.info.Driver; - $scope.operatingSystem = res.data.info.OperatingSystem; - $scope.dockerRootDir = res.data.info.DockerRootDir; - $scope.name = res.data.info.Name; - $scope.kernel = res.data.info.KernelVersion; - }, function(error) {}) -} diff --git a/app/components/events/events.html b/app/components/events/events.html deleted file mode 100644 index 0e91d30..0000000 --- a/app/components/events/events.html +++ /dev/null @@ -1,47 +0,0 @@ -
-
-
-
-
-
-

- Docker Events -

-
-
-
-
-
-
- - - - - - - - - - - - - - - -
TypeDetailsAction
{{event.Type }}{{event.Actor.Attributes.name}}{{event.Action}}
-
-
-
- {{currentPage+1}}/{{numberOfPages()}} - -
-
-
-
-
-
-
-
-
-
-
diff --git a/app/components/events/eventsController.js b/app/components/events/eventsController.js deleted file mode 100644 index 6f05912..0000000 --- a/app/components/events/eventsController.js +++ /dev/null @@ -1,36 +0,0 @@ -angular.module('uiForDocker') - .controller('EventsCtrl', EventsCtrl); - -EventsCtrl.$inject = ['$scope', '$http', 'dockerApi', '$filter']; - -function EventsCtrl($scope, $http, dockerApi, $filter) { - dockerApi.getEvents().then(function(response) { - $scope.events = []; - var records = response.data.events.split('\n').map(function(record) { - if (record !== "") { - $scope.events.push(JSON.parse(record)); - } - }) - }).then(function(){ - $scope.currentPage = 0; - $scope.pageSize = 10; - $scope.q = ''; - $scope.getData = function() { - return $filter('filter')($scope.events, $scope.q) - } - $scope.numberOfPages = function() { - let pages = Math.ceil($scope.getData().length / $scope.pageSize); - if(pages){ - return pages; - } else { - return 1; - } - } - - $scope.$watch('q', function(newValue, oldValue) { - if (oldValue != newValue) { - $scope.currentPage = 0; - } - }, true); - }) -} diff --git a/app/components/image/image.html b/app/components/image/image.html deleted file mode 100644 index 86b2c88..0000000 --- a/app/components/image/image.html +++ /dev/null @@ -1,115 +0,0 @@ -
-
-
- Back -
-
-
-
-
-
-
-
-
-

- Tags -

-
-
-
- - - - - -
{{$index + 1}}{{tag}}
-
-
-
-
-
-
-
-
-
-
-
-

- Add a Tag -

-
-
-
-
-
- - -
-
- - -
-
- -

Note: If tag is left empty then latest will be used.

-
-
-
-
-
-
-
-
-
-
-
-
-
-

- Image Information -

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - -
Created{{image.Created | date:'HH:mm dd-MM-yyyy'}}
Docker Version{{image.DockerVersion}}
Working Directory{{image.ContainerConfig.WorkingDir}}
Environment Variables - - - - -
{{env}}
-
Commands - - - - -
{{cmd}}
-
-
-
-
-
-
-
-
diff --git a/app/components/image/imageController.js b/app/components/image/imageController.js deleted file mode 100644 index 6dc31fa..0000000 --- a/app/components/image/imageController.js +++ /dev/null @@ -1,52 +0,0 @@ -angular.module('uiForDocker') - .controller('ImageCtrl', ImageCtrl); - -ImageCtrl.$inject = ['$scope', '$http', 'imageApi', 'toaster', '$route', '$filter', '$routeParams']; - -function ImageCtrl($scope, $http, imageApi, toaster, $route, $filter, $routeParams) { - - imageApi.getOne($routeParams.Id).then(function(response) { - - $scope.image = response.data.image; - $scope.image.Created = Date.parse(response.data.image.Created); - - }, function(error) {}); - - $scope.remove = function(tag) { - let noSlashes = tag.replace(/\//g, '%2F'); - - imageApi.remove(noSlashes) - .then(function(response) { - toaster.pop('success', "Success", "Image tag " + tag + " removed."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Image tag " + tag + " cannot be removed."); - }) - }; - - $scope.tagImage = function(tag) { - - if(!tag.repo){ - tag.repo = 'emptyTag' - } else{ - tag.repo = tag.repo.toLowerCase(); - } - - if(!tag.tag){ - tag.tag = 'latest'; - } else { - tag.tag = tag.tag.toLowerCase(); - } - - imageApi.tag($scope.image.Id, tag) - .then(function(response) { - toaster.pop('success', "Success", "Image tag " + tag.repo + ":" + tag.tag + " added."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Image tag " + tag.repo + ":" + tag.tag + " cannot be added."); - }) - }; - -} diff --git a/app/components/images/images.html b/app/components/images/images.html deleted file mode 100644 index fa89853..0000000 --- a/app/components/images/images.html +++ /dev/null @@ -1,149 +0,0 @@ -
-
-
-
-
-
-

- Pull Image -

-
-
-
-
-
- -
- - - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - -
NameStarsOfficialDescriptionPull
{{image.name}}{{image.star_count}}{{image.is_official}}{{image.description}}
-
-
-
-
-
-
-
-
-
-
-

- Create an Image from a Dockerfile -

-
-
-
-
-
- - -
-
- - -
-
-
-
-
-

Or drop the Dockerfile here!

-

{{uploader.queue[0].file.name}}

-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-

- Images -

-
-
-
-
-
- -
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
IdCreatedTagsSize
{{image.Id | limitTo : 15 : 0}}{{image.Created * 1000 | date:'HH:mm dd-MM-yyyy'}} -

{{tag}}

-
{{image.VirtualSize}} MB
-
-
-
- {{currentPage+1}}/{{numberOfPages()}} - -
-
-
-
- -
-
-
-
-
-
-
diff --git a/app/components/images/imagesController.js b/app/components/images/imagesController.js deleted file mode 100644 index 5d80fbb..0000000 --- a/app/components/images/imagesController.js +++ /dev/null @@ -1,116 +0,0 @@ -angular.module('uiForDocker') - .controller('ImagesCtrl', ImagesCtrl) - .filter('startFrom', function() { - return function(input, start) { - if (input == undefined) { - return - } else { - start = +start; //parse to int - return input.slice(start); - } - } - }); - -ImagesCtrl.$inject = ['$scope', '$http', 'imageApi', 'toaster', '$route', '$filter', 'FileUploader', 'dockerApi']; - -function ImagesCtrl($scope, $http, imageApi, toaster, $route, $filter, FileUploader, dockerApi) { - - $scope.create = {}; - - var uploader = $scope.uploader = new FileUploader({ - url: '/api/docker/upload' - }); - $scope.uploader.queue = []; - - uploader.onAfterAddingFile = function(fileItem) { - $scope.uploader.queue = []; - $scope.uploader.queue.push(fileItem); - $scope.file = fileItem; - }; - - uploader.onSuccessItem = function(fileItem, response, status, headers) { - toaster.pop('success', "Success", "Dockerfile uploaded"); - dockerApi.build($scope.create).then(function(response){ - toaster.pop('success', "Success", "Image built successfully"); - $route.reload(); - }); -}; - - - - imageApi.getAll().then(function(response) { - response.data.images.forEach(function(image) { - var sizeBytes = image.VirtualSize; - var sizeMegabytes = sizeBytes / 1000000; - image.VirtualSize = Math.round(sizeMegabytes.toString().substring(0, 5)); - }); - $scope.images = response.data.images; - $scope.currentPage = 0; - $scope.pageSize = 10; - $scope.q = ''; - $scope.getData = function() { - // needed for the pagination calc - // https://docs.angularjs.org/api/ng/filter/filter - return $filter('filter')($scope.images, $scope.q) - } - $scope.numberOfPages = function() { - let pages = Math.ceil($scope.getData().length / $scope.pageSize); - if (pages) { - return pages; - } else { - return 1; - } - } - - $scope.$watch('q', function(newValue, oldValue) { - if (oldValue != newValue) { - $scope.currentPage = 0; - } - }, true); - - }, function(error) {}); - - $scope.checkAll = function() { - angular.forEach($scope.images, function(image) { - image.select = $scope.selectAll; - }); - }; - - $scope.remove = function(images) { - for (var i = 0; i < images.length; i++) { - if (images[i].select) { - var image = images[i]; - removeHandler(image); - } - } - } - - $scope.pullImage = function(image) { - image.tag = "latest"; - imageApi.pull(image) - .then(function(response) { - toaster.pop('success', "Success", "Image " + image.name + " pulled."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Image " + image.name + " cannot be pulled."); - }) - } - - $scope.search = function(search) { - dockerApi.search(search) - .then(function(response){ - $scope.foundImages = response.data.data; - }) - } - function removeHandler(image) { - imageApi.remove(image.Id) - .then(function(response) { - toaster.pop('success', "Success", "Image " + image.Id.substring(0, 15) + " removed."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Image " + image.Id.substring(0, 15) + " cannot be removed. Remove any containers using it first."); - }) - } -} diff --git a/app/components/login/login.html b/app/components/login/login.html deleted file mode 100644 index 6a6d456..0000000 --- a/app/components/login/login.html +++ /dev/null @@ -1,23 +0,0 @@ -
-
-
- -
-
- -
-
-
-
-
diff --git a/app/components/login/loginController.js b/app/components/login/loginController.js deleted file mode 100644 index 83c4f96..0000000 --- a/app/components/login/loginController.js +++ /dev/null @@ -1,33 +0,0 @@ -angular.module('uiForDocker') - .controller('LoginCtrl', LoginCtrl); - -LoginCtrl.$inject = ['$scope', '$rootScope', '$location', '$cookieStore', 'authentication', 'toaster']; - -function LoginCtrl($scope, $rootScope, $location, $cookieStore, authentication, toaster) { - - $scope.credentials = {}; - - $scope.login = function(credentials){ - $scope.credentials = credentials; - authentication.loginUser({ - 'name': credentials.name, - 'password': credentials.password - }) - .then(function(data) { - console.log("succ"); - - $cookieStore.put('Gantry', data); - authentication.setIslogged(true); - $location.path('/'); - }) - .catch(function(error) { - toaster.pop({ - type: 'error', - title: 'Unauthorised', - body: 'Invalid credentials', - timeout: 10000, - showCloseButton: true - }); - }); - }; -} diff --git a/app/components/network/network.html b/app/components/network/network.html deleted file mode 100644 index f8da033..0000000 --- a/app/components/network/network.html +++ /dev/null @@ -1,60 +0,0 @@ -
-
- Back -
-
-
-
-
-
-
-

- Information -

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name{{network.Name}}
Id{{network.Id}}
Created{{network.Created | date:'HH:mm dd-MM-yyyy'}}
Driver{{network.Driver}}
Scope{{network.Scope}}
IPv6{{network.EnableIPv6}}
Config - - - - - - - - - -
Subnet{{config.Subnet}}
Gateway{{config.Gateway}}
-
-
-
-
-
diff --git a/app/components/network/networkController.js b/app/components/network/networkController.js deleted file mode 100644 index e6a5077..0000000 --- a/app/components/network/networkController.js +++ /dev/null @@ -1,33 +0,0 @@ -angular.module('uiForDocker') -.controller('NetworkCtrl', NetworkCtrl); - -NetworkCtrl.$inject = ['$scope', '$http', 'networkApi', '$filter', '$routeParams']; - -function NetworkCtrl($scope, $http, networkApi, $filter, $routeParams) { - - networkApi.getOne($routeParams.Id).then(function(response) { - - $scope.network = response.data.network; - - }, function(error) {}); - - $scope.remove = function(network) { - for (var i = 0; i < network.length; i++) { - if (network[i].select) { - var image = network[i]; - removeHandler(network); - } - } - } - - function removeHandler(network) { - networkApi.remove(network.Id) - .then(function(response) { - toaster.pop('success', "Success", "Network " + network.Id.substring(0, 15) + " removed."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Network " + network.Id.substring(0, 15) + " cannot be removed."); - }) - } -} diff --git a/app/components/networks/networks.html b/app/components/networks/networks.html deleted file mode 100644 index c480acf..0000000 --- a/app/components/networks/networks.html +++ /dev/null @@ -1,91 +0,0 @@ -
-
-
-
-
-
-

- Create Network -

-
-
-
-
-
- - -
-
- -

Note: The bridge driver will be used for any networks created.

-
-
-
-
-
-
-
-
-
-
-
-

- Networks -

-
-
-
-
-
- -
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
NameIdCreatedDriverSubnetContainers
{{network.Name}}{{network.Id | limitTo : 15 : 0}}{{network.Created | date:'HH:mm dd-MM-yyyy'}}{{network.Driver}} - {{network.IPAM.Config[0].Subnet}} - -

{{container.Name}}

-
-
-
- {{currentPage+1}}/{{numberOfPages()}} - -
-
-
-
-
-
-
-
-
-
diff --git a/app/components/networks/networksController.js b/app/components/networks/networksController.js deleted file mode 100644 index da08be1..0000000 --- a/app/components/networks/networksController.js +++ /dev/null @@ -1,68 +0,0 @@ -angular.module('uiForDocker') -.controller('NetworksCtrl', NetworksCtrl); - -NetworksCtrl.$inject = ['$scope', '$http', 'networkApi', '$filter', 'toaster', '$route']; - -function NetworksCtrl($scope, $http, networkApi, $filter, toaster, $route) { - networkApi.getAll().then(function(response) { - $scope.networks = response.data.networks; - $scope.currentPage = 0; - $scope.pageSize = 10; - $scope.q = ''; - $scope.getData = function() { - return $filter('filter')($scope.networks, $scope.q) - } - $scope.numberOfPages = function() { - let pages = Math.ceil($scope.getData().length / $scope.pageSize); - if(pages){ - return pages; - } else { - return 1; - } - } - - $scope.$watch('q', function(newValue, oldValue) { - if (oldValue != newValue) { - $scope.currentPage = 0; - } - }, true); - - }, function(error) {}); - - $scope.checkAll = function() { - angular.forEach($scope.networks, function(network) { - network.select = $scope.selectAll; - }); - }; - - $scope.createNetwork = function(network) { - networkApi.create(network) - .then(function(response) { - toaster.pop('success', "Success", "Network " + network.Name + " created."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Network " + network.Name + " cannot be created."); - }) - }; - - $scope.remove = function(networks) { - for (var i = 0; i < networks.length; i++) { - if (networks[i].select) { - var network = networks[i]; - removeHandler(network); - } - } - } - - function removeHandler(network) { - networkApi.remove(network.Id) - .then(function(response) { - toaster.pop('success', "Success", "Network " + network.Name + " removed."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Network " + network.Name + " cannot be removed."); - }) - } -} diff --git a/app/components/settings/settings.html b/app/components/settings/settings.html deleted file mode 100644 index 81a53e8..0000000 --- a/app/components/settings/settings.html +++ /dev/null @@ -1,18 +0,0 @@ -
- -
diff --git a/app/components/settings/settingsController.js b/app/components/settings/settingsController.js deleted file mode 100644 index 34da084..0000000 --- a/app/components/settings/settingsController.js +++ /dev/null @@ -1,41 +0,0 @@ -angular.module('uiForDocker') - .controller('SettingsCtrl', SettingsCtrl); - -SettingsCtrl.$inject = ['$scope', '$rootScope', '$location', '$cookieStore', 'authentication', 'toaster']; - -function SettingsCtrl($scope, $rootScope, $location, $cookieStore, authentication, toaster) { - - $scope.credentials = {}; - - $scope.changePassword = function(credentials) { - $scope.credentials = credentials; - if (credentials.desired_password == credentials.desired_password_again) { - authentication.changePassword({name: credentials.name, password: credentials.password, desired_password: credentials.desired_password}) - .then(function(data) { - console.log("succ"); - toaster.pop('success', "Success", "Password successfully changed, please log in again."); - $cookieStore.remove('Gantry', data); - authentication.setIslogged(false); - $rootScope.isLoggedIn = false; - $location.path('/login'); - }) - .catch(function(error) { - toaster.pop({ - type: 'error', - title: 'Oops', - body: 'Something went wrong', - timeout: 10000, - showCloseButton: true - }); - }); - } else { - toaster.pop({ - type: 'error', - title: 'Oops', - body: 'Your new password does not match', - timeout: 10000, - showCloseButton: true - }); - } - } -} diff --git a/app/components/stats/stats.html b/app/components/stats/stats.html deleted file mode 100644 index 29ffced..0000000 --- a/app/components/stats/stats.html +++ /dev/null @@ -1,68 +0,0 @@ -
-
-
- Back -
-
-
-
-
-
-
-

- CPU -

-
-
- - -
-
-
-
-
-
-

- Memory -

-
-
-
- - -
-
-
-
-
-
-
-

- Network -

-
-
- - -
-
-
diff --git a/app/components/stats/statsController.js b/app/components/stats/statsController.js deleted file mode 100644 index 8fa7582..0000000 --- a/app/components/stats/statsController.js +++ /dev/null @@ -1,130 +0,0 @@ -angular.module('uiForDocker') - .controller('StatsCtrl', StatsCtrl); - -StatsCtrl.$inject = ['$scope', '$http', '$routeParams', 'containerApi', 'toaster', '$route', '$location', '$interval']; - -function StatsCtrl($scope, $http, $routeParams, containerApi, toaster, $route, $location, $interval) { - - containerApi.getOne($routeParams.Id).then(function(response) { - $scope.container = response.data.container; - }, function(error) {}); - - // let date = new Date(); - // let initialTime = date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds(); - - $scope.cpuLabels = []; - $scope.memoryLabels = []; - $scope.networkLabels = []; - - $scope.cpuData = []; - $scope.memoryData = []; - $scope.networkData = [[],[]]; - - $scope.networkSeries = ['RxData', 'TxData']; - - $scope.networkColours = ['#42B185', '#ED956B']; - - $scope.updateGraphs = function() { - containerApi.getStats($routeParams.Id).then(function(response) { - let time = response.data.stats.read; - time = time.substring(time.indexOf('T') + 1, time.indexOf('T') + 9); - - $scope.cpuLabels.push(time); - $scope.memoryLabels.push(time); - $scope.networkLabels.push(time); - - var cpuDelta = response.data.stats.cpu_stats.cpu_usage.total_usage - response.data.stats.precpu_stats.cpu_usage.total_usage; - var systemDelta = response.data.stats.cpu_stats.system_cpu_usage - response.data.stats.precpu_stats.system_cpu_usage; - var RESULT_CPU_USAGE = cpuDelta / systemDelta * 100; - - - - if ($scope.cpuData.length > 10) { - $scope.cpuData.splice(0, 1); - $scope.cpuLabels.splice(0, 1); - - $scope.memoryData.splice(0, 1); - $scope.memoryLabels.splice(0, 1); - - $scope.networkData[0].splice(0, 1); - $scope.networkData[1].splice(0, 1); - $scope.networkLabels.splice(0, 1); - - $scope.cpuData.push(RESULT_CPU_USAGE); - $scope.memoryData.push(response.data.stats.memory_stats.usage / 1000000000); - $scope.networkData[0].push(response.data.stats.networks.eth0.rx_bytes); - $scope.networkData[1].push(response.data.stats.networks.eth0.tx_bytes); - } else { - $scope.cpuData.push(RESULT_CPU_USAGE); - $scope.memoryData.push(response.data.stats.memory_stats.usage / 1000000000); - $scope.networkData[0].push(response.data.stats.networks.eth0.rx_bytes); - $scope.networkData[1].push(response.data.stats.networks.eth0.tx_bytes); - } - }) - }; - - $scope.initialLoad = function() { - $scope.cpuOptions = { - animation: false, - scales: { - yAxes: [{ - id: 'y-axis-1', - type: 'linear', - position: 'left', - ticks: { - min: 0, - max: 100 - }, - scaleLabel: { - display: true, - labelString: 'Percentage' - } - }] - } - }; - $scope.memoryOptions = { - animation: false, - scales: { - yAxes: [{ - id: 'y-axis-1', - type: 'linear', - position: 'left', - ticks: { - min: 0 - }, - scaleLabel: { - display: true, - labelString: 'GB' - } - }] - } - }; - $scope.networkOptions = { - animation: false, - scales: { - yAxes: [{ - id: 'y-axis-1', - type: 'linear', - position: 'left', - scaleLabel: { - display: true, - labelString: 'KB' - } - }] - }, - legend: { - display: true, - position: "bottom" - } - }; - $scope.updateGraphs(); - }; - - $scope.initialLoad(); - - var promise = $interval($scope.updateGraphs, 3000); - $scope.$on('$destroy', function() { - if (promise) - $interval.cancel(promise); - }); -} diff --git a/app/components/volume/volume.html b/app/components/volume/volume.html deleted file mode 100644 index 63f76d4..0000000 --- a/app/components/volume/volume.html +++ /dev/null @@ -1,37 +0,0 @@ -
-
- Back -
-
-
-
-
-
-
-

- Information -

-
-
- - - - - - - - - - - - - - - - - -
Name{{volume.Name}}
Mountpoint{{volume.Mountpoint}}
Driver{{volume.Driver}}
Scope{{volume.Scope}}
-
-
-
-
diff --git a/app/components/volume/volumeController.js b/app/components/volume/volumeController.js deleted file mode 100644 index 009d31b..0000000 --- a/app/components/volume/volumeController.js +++ /dev/null @@ -1,13 +0,0 @@ -angular.module('uiForDocker') -.controller('VolumeCtrl', VolumeCtrl); - -VolumeCtrl.$inject = ['$scope', '$http', 'volumeApi', '$filter', '$routeParams']; - -function VolumeCtrl($scope, $http, volumeApi, $filter, $routeParams) { - - volumeApi.getOne($routeParams.Id).then(function(response) { - - $scope.volume = response.data.volume; - - }, function(error) {}); -} diff --git a/app/components/volumes/volumes.html b/app/components/volumes/volumes.html deleted file mode 100644 index 3bc47d5..0000000 --- a/app/components/volumes/volumes.html +++ /dev/null @@ -1,82 +0,0 @@ -
-
-
-
-
-
-

- Create Volume -

-
-
-
-
-
- - -
-
- -
-
-
-
-
-
-
-
-
-
-
-

- Volumes -

-
-
-
-
-
- -
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - -
NameDriverScope
{{volume.Name | limitTo : 15 : 0}}{{volume.Driver}}{{volume.Scope}}
-
-
-
- {{currentPage+1}}/{{numberOfPages()}} - -
-
-
-
-
-
-
-
-
-
-
diff --git a/app/components/volumes/volumesController.js b/app/components/volumes/volumesController.js deleted file mode 100644 index 1680e32..0000000 --- a/app/components/volumes/volumesController.js +++ /dev/null @@ -1,70 +0,0 @@ -angular.module('uiForDocker') -.controller('VolumesCtrl', VolumesCtrl); - -VolumesCtrl.$inject = ['$scope', '$http', 'volumeApi', '$filter', 'toaster', '$route']; - -function VolumesCtrl($scope, $http, volumeApi, $filter, toaster, $route) { - volumeApi.getAll().then(function(response) { - $scope.volumes = response.data.volumes.Volumes; - $scope.currentPage = 0; - $scope.pageSize = 10; - $scope.q = ''; - $scope.getData = function() { - return $filter('filter')($scope.volumes, $scope.q) - } - $scope.numberOfPages = function() { - let pages = Math.ceil($scope.getData().length / $scope.pageSize); - if(pages){ - return pages; - } else { - return 1; - } - } - - $scope.$watch('q', function(newValue, oldValue) { - if (oldValue != newValue) { - $scope.currentPage = 0; - } - }, true); - - }, function(error) {}); - - $scope.checkAll = function() { - angular.forEach($scope.volumes, function(volume) { - volume.select = $scope.selectAll; - }); - }; - - $scope.createVolume = function(volume) { - volumeApi.create(volume) - .then(function(response) { - console.log(response); - toaster.pop('success', "Success", "Volume " + volume.Name + " created."); - $route.reload(); - }) - .catch(function(e) { - toaster.pop('error', "Error", "Volume " + volume.Name + " cannot be created."); - }) - }; - - $scope.remove = function(volumes) { - for (var i = 0; i < volumes.length; i++) { - if (volumes[i].select) { - var volume = volumes[i]; - removeHandler(volume); - } - } - } - - function removeHandler(volume) { - volumeApi.remove(volume.Name) - .then(function(response) { - toaster.pop('success', "Success", "volume " + volume.Name + " removed."); - $route.reload(); - }) - .catch(function(e) { - console.log(e); - toaster.pop('error', "Error", "volume " + volume.Name + " cannot be removed."); - }) - } -} diff --git a/app/index.html b/app/index.html deleted file mode 100644 index 81f3fc7..0000000 --- a/app/index.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - Gantry - - - - - - - - - - - - - - - - - - -
- -
- - - - -
-
-
-
-
- -
-
-
-
- -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/services/authentication.js b/app/services/authentication.js deleted file mode 100644 index c83db29..0000000 --- a/app/services/authentication.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -angular.module('uiForDocker') - .service('authentication', function($http, $cookieStore) { - var authApi = {}; - var isLogged = false; - - - authApi.isLoggedIn = function() { - return isLogged; - }; - - authApi.setIslogged = function(state) { - isLogged = state; - }; - - authApi.getToken = function() { - - var token; - - if ($cookieStore.get('Gantry')) { - token = $cookieStore.get('Gantry').data.token; - } - return token; - }; - - authApi.getUser = function() { - var user; - - if ($cookieStore.get('Gantry')) { - user = $cookieStore.get('Gantry').user; - } - return user; - }; - - authApi.loginUser = function(user) { - return $http.post('api/users/authenticate', user, { - headers: { - 'Content-Type': 'application/json' - } - }); - }; - - authApi.changePassword = function(user) { - var token = authApi.getToken(); - var config = { - headers: { - 'x-access-token': token - } - }; - return $http.put('api/users/', user, config); - }; - - return authApi; - }); diff --git a/app/services/containerApi.js b/app/services/containerApi.js deleted file mode 100644 index 3db31f4..0000000 --- a/app/services/containerApi.js +++ /dev/null @@ -1,61 +0,0 @@ -angular.module('uiForDocker') - .service('containerApi', function($http, authentication) { - var token = authentication.getToken(); - var config = { - headers: { - 'x-access-token': token - } - }; - var containers = {}; - - containers.getOne = function(id) { - return $http.get('/api/containers/' + id, config); - }; - - containers.getAll = function() { - return $http.get('/api/containers/all', config); - }; - - containers.getRunning = function() { - return $http.get('/api/containers/running', config); - }; - - containers.getStats = function(id) { - return $http.get('/api/containers/' + id + '/stats', { - headers: { - 'x-access-token': token - }, - ignoreLoadingBar: true - }); - }; - - containers.start = function(id) { - return $http.post('/api/containers/' + id + '/start', {}, config); - }; - - containers.stop = function(id) { - return $http.post('/api/containers/' + id + '/stop', {}, config); - }; - - containers.pause = function(id) { - return $http.post('/api/containers/' + id + '/pause', {}, config); - }; - - containers.unpause = function(id) { - return $http.post('/api/containers/' + id + '/unpause', {}, config); - }; - - containers.restart = function(id) { - return $http.post('/api/containers/' + id + '/restart', {}, config); - }; - - containers.remove = function(id) { - return $http.delete('/api/containers/' + id + '/remove', config); - }; - - containers.create = function(options) { - return $http.post('/api/containers/create', options, config); - }; - - return containers; - }); diff --git a/app/services/dockerApi.js b/app/services/dockerApi.js deleted file mode 100644 index e7d4fbf..0000000 --- a/app/services/dockerApi.js +++ /dev/null @@ -1,36 +0,0 @@ -angular.module('uiForDocker') - .service('dockerApi', function($http, authentication) { - var token = authentication.getToken(); - var config = { - headers: { - 'x-access-token': token - } - }; - var docker = {}; - - docker.getInfo = function() { - return $http.get('/api/docker/info', config); - }; - - docker.getEvents = function() { - return $http.get('/api/docker/events', config); - }; - - docker.getLogs = function(id) { - return $http.get('/api/docker/logs/' + id, config); - }; - - docker.upload = function() { - return $http.post('/api/docker/upload/', {}, config); - }; - - docker.build = function(options) { - return $http.post('/api/docker/build/', options, config); - }; - - docker.search = function(body) { - return $http.post('/api/docker/search/', body, config); - }; - - return docker; - }); diff --git a/app/services/imageApi.js b/app/services/imageApi.js deleted file mode 100644 index 854cef1..0000000 --- a/app/services/imageApi.js +++ /dev/null @@ -1,32 +0,0 @@ -angular.module('uiForDocker') - .service('imageApi', function($http, authentication) { - var token = authentication.getToken(); - var config = { - headers: { - 'x-access-token': token - } - }; - var images = {}; - - images.getOne = function(id) { - return $http.get('/api/images/' + id, config); - }; - - images.getAll = function() { - return $http.get('/api/images/', config); - }; - - images.remove = function(id) { - return $http.delete('/api/images/' + id, config); - }; - - images.pull = function(image) { - return $http.post('/api/images/pull', image, config); - }; - - images.tag = function(id, tag) { - return $http.post('/api/images/' + id + '/tag', tag, config); - } - - return images; - }); diff --git a/app/services/networkApi.js b/app/services/networkApi.js deleted file mode 100644 index fe57399..0000000 --- a/app/services/networkApi.js +++ /dev/null @@ -1,28 +0,0 @@ -angular.module('uiForDocker') - .service('networkApi', function($http, authentication) { - var token = authentication.getToken(); - var config = { - headers: { - 'x-access-token': token - } - }; - var networks = {}; - - networks.create = function(network) { - return $http.post('/api/networks', network, config); - }; - - networks.getOne = function(id) { - return $http.get('/api/networks/' + id, config); - }; - - networks.getAll = function() { - return $http.get('/api/networks/', config); - }; - - networks.remove = function(id) { - return $http.delete('/api/networks/' + id, config); - }; - - return networks; - }); diff --git a/app/services/volumeApi.js b/app/services/volumeApi.js deleted file mode 100644 index 86ea808..0000000 --- a/app/services/volumeApi.js +++ /dev/null @@ -1,28 +0,0 @@ -angular.module('uiForDocker') - .service('volumeApi', function($http, authentication) { - var token = authentication.getToken(); - var config = { - headers: { - 'x-access-token': token - } - }; - var volumes = {}; - - volumes.create = function(volume) { - return $http.post('/api/volumes', volume, config); - }; - - volumes.getOne = function(id) { - return $http.get('/api/volumes/' + id, config); - }; - - volumes.getAll = function(id) { - return $http.get('/api/volumes/', config); - }; - - volumes.remove = function(id) { - return $http.delete('/api/volumes/' + id, config); - }; - - return volumes; - }); diff --git a/app/support/images/favicon.ico b/app/support/images/favicon.ico deleted file mode 100644 index a913ccf..0000000 Binary files a/app/support/images/favicon.ico and /dev/null differ diff --git a/app/support/images/gantry.png b/app/support/images/gantry.png deleted file mode 100644 index 9b69c15..0000000 Binary files a/app/support/images/gantry.png and /dev/null differ diff --git a/app/support/scripts/angular-simple-sidebar.min.js b/app/support/scripts/angular-simple-sidebar.min.js deleted file mode 100644 index 7dc3837..0000000 --- a/app/support/scripts/angular-simple-sidebar.min.js +++ /dev/null @@ -1 +0,0 @@ -angular.module("angular-simple-sidebar",[]).directive("angularSimpleSidebar",function(){return{restrict:"E",transclude:!0,scope:{items:"=",state:"=",title:"=",settings:"="},template:'
',link:function(a,b,c){a.slide,a.state&&(a.slide="in"),a.openSidebar=function(){a.state=!0,a.slide="in"},a.closeSidebar=function(){a.state=!1,a.slide="out"}}}}); \ No newline at end of file diff --git a/app/support/scripts/bootstrap.min.js b/app/support/scripts/bootstrap.min.js deleted file mode 100644 index 9bcd2fc..0000000 --- a/app/support/scripts/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under the MIT license - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/app/support/scripts/jquery-3.1.1.min.js b/app/support/scripts/jquery-3.1.1.min.js deleted file mode 100644 index 4c5be4c..0000000 --- a/app/support/scripts/jquery-3.1.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */ -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R), -a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)), -void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" - - - - - - - - - - - - - - - - - - - - - - - - - -
 
-
- - diff --git a/server/api/docs/lang/ca.js b/server/api/docs/lang/ca.js deleted file mode 100644 index f8c815a..0000000 --- a/server/api/docs/lang/ca.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Advertència: Obsolet", - "Implementation Notes":"Notes d'implementació", - "Response Class":"Classe de la Resposta", - "Status":"Estatus", - "Parameters":"Paràmetres", - "Parameter":"Paràmetre", - "Value":"Valor", - "Description":"Descripció", - "Parameter Type":"Tipus del Paràmetre", - "Data Type":"Tipus de la Dada", - "Response Messages":"Missatges de la Resposta", - "HTTP Status Code":"Codi d'Estatus HTTP", - "Reason":"Raó", - "Response Model":"Model de la Resposta", - "Request URL":"URL de la Sol·licitud", - "Response Body":"Cos de la Resposta", - "Response Code":"Codi de la Resposta", - "Response Headers":"Capçaleres de la Resposta", - "Hide Response":"Amagar Resposta", - "Try it out!":"Prova-ho!", - "Show/Hide":"Mostrar/Amagar", - "List Operations":"Llista Operacions", - "Expand Operations":"Expandir Operacions", - "Raw":"Cru", - "can't parse JSON. Raw result":"no puc analitzar el JSON. Resultat cru", - "Example Value":"Valor d'Exemple", - "Model Schema":"Esquema del Model", - "Model":"Model", - "apply":"aplicar", - "Username":"Nom d'usuari", - "Password":"Contrasenya", - "Terms of service":"Termes del servei", - "Created by":"Creat per", - "See more at":"Veure més en", - "Contact the developer":"Contactar amb el desenvolupador", - "api version":"versió de la api", - "Response Content Type":"Tipus de Contingut de la Resposta", - "fetching resource":"recollint recurs", - "fetching resource list":"recollins llista de recursos", - "Explore":"Explorant", - "Show Swagger Petstore Example Apis":"Mostrar API d'Exemple Swagger Petstore", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"No es pot llegir del servidor. Potser no teniu la configuració de control d'accés apropiada.", - "Please specify the protocol for":"Si us plau, especifiqueu el protocol per a", - "Can't read swagger JSON from":"No es pot llegir el JSON de swagger des de", - "Finished Loading Resource Information. Rendering Swagger UI":"Finalitzada la càrrega del recurs informatiu. Renderitzant Swagger UI", - "Unable to read api":"No es pot llegir l'api", - "from path":"des de la ruta", - "server returned":"el servidor ha retornat" -}); diff --git a/server/api/docs/lang/el.js b/server/api/docs/lang/el.js deleted file mode 100644 index fcd1ffd..0000000 --- a/server/api/docs/lang/el.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Προειδοποίηση: Έχει αποσυρθεί", - "Implementation Notes":"Σημειώσεις Υλοποίησης", - "Response Class":"Απόκριση", - "Status":"Κατάσταση", - "Parameters":"Παράμετροι", - "Parameter":"Παράμετρος", - "Value":"Τιμή", - "Description":"Περιγραφή", - "Parameter Type":"Τύπος Παραμέτρου", - "Data Type":"Τύπος Δεδομένων", - "Response Messages":"Μηνύματα Απόκρισης", - "HTTP Status Code":"Κωδικός Κατάστασης HTTP", - "Reason":"Αιτιολογία", - "Response Model":"Μοντέλο Απόκρισης", - "Request URL":"URL Αιτήματος", - "Response Body":"Σώμα Απόκρισης", - "Response Code":"Κωδικός Απόκρισης", - "Response Headers":"Επικεφαλίδες Απόκρισης", - "Hide Response":"Απόκρυψη Απόκρισης", - "Headers":"Επικεφαλίδες", - "Try it out!":"Δοκιμάστε το!", - "Show/Hide":"Εμφάνιση/Απόκρυψη", - "List Operations":"Λίστα Λειτουργιών", - "Expand Operations":"Ανάπτυξη Λειτουργιών", - "Raw":"Ακατέργαστο", - "can't parse JSON. Raw result":"αδυναμία ανάλυσης JSON. Ακατέργαστο αποτέλεσμα", - "Example Value":"Παράδειγμα Τιμής", - "Model Schema":"Σχήμα Μοντέλου", - "Model":"Μοντέλο", - "Click to set as parameter value":"Πατήστε για να θέσετε τιμή παραμέτρου", - "apply":"εφαρμογή", - "Username":"Όνομα χρήση", - "Password":"Κωδικός πρόσβασης", - "Terms of service":"Όροι χρήσης", - "Created by":"Δημιουργήθηκε από", - "See more at":"Δείτε περισσότερα στο", - "Contact the developer":"Επικοινωνήστε με τον προγραμματιστή", - "api version":"έκδοση api", - "Response Content Type":"Τύπος Περιεχομένου Απόκρισης", - "Parameter content type:":"Τύπος περιεχομένου παραμέτρου:", - "fetching resource":"παραλαβή πόρου", - "fetching resource list":"παραλαβή λίστας πόρων", - "Explore":"Εξερεύνηση", - "Show Swagger Petstore Example Apis":"Εμφάνιση Api Δειγμάτων Petstore του Swagger", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Αδυναμία ανάγνωσης από τον εξυπηρετητή. Μπορεί να μην έχει κατάλληλες ρυθμίσεις για access-control-origin.", - "Please specify the protocol for":"Παρακαλώ προσδιορίστε το πρωτόκολλο για", - "Can't read swagger JSON from":"Αδυναμία ανάγνωσης swagger JSON από", - "Finished Loading Resource Information. Rendering Swagger UI":"Ολοκλήρωση Φόρτωσης Πληροφορικών Πόρου. Παρουσίαση Swagger UI", - "Unable to read api":"Αδυναμία ανάγνωσης api", - "from path":"από το μονοπάτι", - "server returned":"ο εξυπηρετηρής επέστρεψε" -}); diff --git a/server/api/docs/lang/en.js b/server/api/docs/lang/en.js deleted file mode 100644 index 9183136..0000000 --- a/server/api/docs/lang/en.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Warning: Deprecated", - "Implementation Notes":"Implementation Notes", - "Response Class":"Response Class", - "Status":"Status", - "Parameters":"Parameters", - "Parameter":"Parameter", - "Value":"Value", - "Description":"Description", - "Parameter Type":"Parameter Type", - "Data Type":"Data Type", - "Response Messages":"Response Messages", - "HTTP Status Code":"HTTP Status Code", - "Reason":"Reason", - "Response Model":"Response Model", - "Request URL":"Request URL", - "Response Body":"Response Body", - "Response Code":"Response Code", - "Response Headers":"Response Headers", - "Hide Response":"Hide Response", - "Headers":"Headers", - "Try it out!":"Try it out!", - "Show/Hide":"Show/Hide", - "List Operations":"List Operations", - "Expand Operations":"Expand Operations", - "Raw":"Raw", - "can't parse JSON. Raw result":"can't parse JSON. Raw result", - "Example Value":"Example Value", - "Model Schema":"Model Schema", - "Model":"Model", - "Click to set as parameter value":"Click to set as parameter value", - "apply":"apply", - "Username":"Username", - "Password":"Password", - "Terms of service":"Terms of service", - "Created by":"Created by", - "See more at":"See more at", - "Contact the developer":"Contact the developer", - "api version":"api version", - "Response Content Type":"Response Content Type", - "Parameter content type:":"Parameter content type:", - "fetching resource":"fetching resource", - "fetching resource list":"fetching resource list", - "Explore":"Explore", - "Show Swagger Petstore Example Apis":"Show Swagger Petstore Example Apis", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Can't read from server. It may not have the appropriate access-control-origin settings.", - "Please specify the protocol for":"Please specify the protocol for", - "Can't read swagger JSON from":"Can't read swagger JSON from", - "Finished Loading Resource Information. Rendering Swagger UI":"Finished Loading Resource Information. Rendering Swagger UI", - "Unable to read api":"Unable to read api", - "from path":"from path", - "server returned":"server returned" -}); diff --git a/server/api/docs/lang/es.js b/server/api/docs/lang/es.js deleted file mode 100644 index 13fa015..0000000 --- a/server/api/docs/lang/es.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Advertencia: Obsoleto", - "Implementation Notes":"Notas de implementación", - "Response Class":"Clase de la Respuesta", - "Status":"Status", - "Parameters":"Parámetros", - "Parameter":"Parámetro", - "Value":"Valor", - "Description":"Descripción", - "Parameter Type":"Tipo del Parámetro", - "Data Type":"Tipo del Dato", - "Response Messages":"Mensajes de la Respuesta", - "HTTP Status Code":"Código de Status HTTP", - "Reason":"Razón", - "Response Model":"Modelo de la Respuesta", - "Request URL":"URL de la Solicitud", - "Response Body":"Cuerpo de la Respuesta", - "Response Code":"Código de la Respuesta", - "Response Headers":"Encabezados de la Respuesta", - "Hide Response":"Ocultar Respuesta", - "Try it out!":"Pruébalo!", - "Show/Hide":"Mostrar/Ocultar", - "List Operations":"Listar Operaciones", - "Expand Operations":"Expandir Operaciones", - "Raw":"Crudo", - "can't parse JSON. Raw result":"no puede parsear el JSON. Resultado crudo", - "Example Value":"Valor de Ejemplo", - "Model Schema":"Esquema del Modelo", - "Model":"Modelo", - "apply":"aplicar", - "Username":"Nombre de usuario", - "Password":"Contraseña", - "Terms of service":"Términos de Servicio", - "Created by":"Creado por", - "See more at":"Ver más en", - "Contact the developer":"Contactar al desarrollador", - "api version":"versión de la api", - "Response Content Type":"Tipo de Contenido (Content Type) de la Respuesta", - "fetching resource":"buscando recurso", - "fetching resource list":"buscando lista del recurso", - "Explore":"Explorar", - "Show Swagger Petstore Example Apis":"Mostrar Api Ejemplo de Swagger Petstore", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"No se puede leer del servidor. Tal vez no tiene la configuración de control de acceso de origen (access-control-origin) apropiado.", - "Please specify the protocol for":"Por favor, especificar el protocola para", - "Can't read swagger JSON from":"No se puede leer el JSON de swagger desde", - "Finished Loading Resource Information. Rendering Swagger UI":"Finalizada la carga del recurso de Información. Mostrando Swagger UI", - "Unable to read api":"No se puede leer la api", - "from path":"desde ruta", - "server returned":"el servidor retornó" -}); diff --git a/server/api/docs/lang/fr.js b/server/api/docs/lang/fr.js deleted file mode 100644 index 388dff1..0000000 --- a/server/api/docs/lang/fr.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Avertissement : Obsolète", - "Implementation Notes":"Notes d'implémentation", - "Response Class":"Classe de la réponse", - "Status":"Statut", - "Parameters":"Paramètres", - "Parameter":"Paramètre", - "Value":"Valeur", - "Description":"Description", - "Parameter Type":"Type du paramètre", - "Data Type":"Type de données", - "Response Messages":"Messages de la réponse", - "HTTP Status Code":"Code de statut HTTP", - "Reason":"Raison", - "Response Model":"Modèle de réponse", - "Request URL":"URL appelée", - "Response Body":"Corps de la réponse", - "Response Code":"Code de la réponse", - "Response Headers":"En-têtes de la réponse", - "Hide Response":"Cacher la réponse", - "Headers":"En-têtes", - "Try it out!":"Testez !", - "Show/Hide":"Afficher/Masquer", - "List Operations":"Liste des opérations", - "Expand Operations":"Développer les opérations", - "Raw":"Brut", - "can't parse JSON. Raw result":"impossible de décoder le JSON. Résultat brut", - "Example Value":"Exemple la valeur", - "Model Schema":"Définition du modèle", - "Model":"Modèle", - "apply":"appliquer", - "Username":"Nom d'utilisateur", - "Password":"Mot de passe", - "Terms of service":"Conditions de service", - "Created by":"Créé par", - "See more at":"Voir plus sur", - "Contact the developer":"Contacter le développeur", - "api version":"version de l'api", - "Response Content Type":"Content Type de la réponse", - "fetching resource":"récupération de la ressource", - "fetching resource list":"récupération de la liste de ressources", - "Explore":"Explorer", - "Show Swagger Petstore Example Apis":"Montrer les Apis de l'exemple Petstore de Swagger", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Impossible de lire à partir du serveur. Il se peut que les réglages access-control-origin ne soient pas appropriés.", - "Please specify the protocol for":"Veuillez spécifier un protocole pour", - "Can't read swagger JSON from":"Impossible de lire le JSON swagger à partir de", - "Finished Loading Resource Information. Rendering Swagger UI":"Chargement des informations terminé. Affichage de Swagger UI", - "Unable to read api":"Impossible de lire l'api", - "from path":"à partir du chemin", - "server returned":"réponse du serveur" -}); diff --git a/server/api/docs/lang/geo.js b/server/api/docs/lang/geo.js deleted file mode 100644 index 609c20d..0000000 --- a/server/api/docs/lang/geo.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"ყურადღება: აღარ გამოიყენება", - "Implementation Notes":"იმპლემენტაციის აღწერა", - "Response Class":"რესპონს კლასი", - "Status":"სტატუსი", - "Parameters":"პარამეტრები", - "Parameter":"პარამეტრი", - "Value":"მნიშვნელობა", - "Description":"აღწერა", - "Parameter Type":"პარამეტრის ტიპი", - "Data Type":"მონაცემის ტიპი", - "Response Messages":"პასუხი", - "HTTP Status Code":"HTTP სტატუსი", - "Reason":"მიზეზი", - "Response Model":"რესპონს მოდელი", - "Request URL":"მოთხოვნის URL", - "Response Body":"პასუხის სხეული", - "Response Code":"პასუხის კოდი", - "Response Headers":"პასუხის ჰედერები", - "Hide Response":"დამალე პასუხი", - "Headers":"ჰედერები", - "Try it out!":"ცადე !", - "Show/Hide":"გამოჩენა/დამალვა", - "List Operations":"ოპერაციების სია", - "Expand Operations":"ოპერაციები ვრცლად", - "Raw":"ნედლი", - "can't parse JSON. Raw result":"JSON-ის დამუშავება ვერ მოხერხდა. ნედლი პასუხი", - "Example Value":"მაგალითი", - "Model Schema":"მოდელის სტრუქტურა", - "Model":"მოდელი", - "Click to set as parameter value":"პარამეტრისთვის მნიშვნელობის მისანიჭებლად, დააკლიკე", - "apply":"გამოყენება", - "Username":"მოხმარებელი", - "Password":"პაროლი", - "Terms of service":"მომსახურების პირობები", - "Created by":"შექმნა", - "See more at":"ნახე ვრცლად", - "Contact the developer":"დაუკავშირდი დეველოპერს", - "api version":"api ვერსია", - "Response Content Type":"პასუხის კონტენტის ტიპი", - "Parameter content type:":"პარამეტრის კონტენტის ტიპი:", - "fetching resource":"რესურსების მიღება", - "fetching resource list":"რესურსების სიის მიღება", - "Explore":"ნახვა", - "Show Swagger Petstore Example Apis":"ნახე Swagger Petstore სამაგალითო Api", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"სერვერთან დაკავშირება ვერ ხერხდება. შეამოწმეთ access-control-origin.", - "Please specify the protocol for":"მიუთითეთ პროტოკოლი", - "Can't read swagger JSON from":"swagger JSON წაკითხვა ვერ მოხერხდა", - "Finished Loading Resource Information. Rendering Swagger UI":"რესურსების ჩატვირთვა სრულდება. Swagger UI რენდერდება", - "Unable to read api":"api წაკითხვა ვერ მოხერხდა", - "from path":"მისამართიდან", - "server returned":"სერვერმა დააბრუნა" -}); diff --git a/server/api/docs/lang/it.js b/server/api/docs/lang/it.js deleted file mode 100644 index 8529c2a..0000000 --- a/server/api/docs/lang/it.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Attenzione: Deprecato", - "Implementation Notes":"Note di implementazione", - "Response Class":"Classe della risposta", - "Status":"Stato", - "Parameters":"Parametri", - "Parameter":"Parametro", - "Value":"Valore", - "Description":"Descrizione", - "Parameter Type":"Tipo di parametro", - "Data Type":"Tipo di dato", - "Response Messages":"Messaggi della risposta", - "HTTP Status Code":"Codice stato HTTP", - "Reason":"Motivo", - "Response Model":"Modello di risposta", - "Request URL":"URL della richiesta", - "Response Body":"Corpo della risposta", - "Response Code":"Oggetto della risposta", - "Response Headers":"Intestazioni della risposta", - "Hide Response":"Nascondi risposta", - "Try it out!":"Provalo!", - "Show/Hide":"Mostra/Nascondi", - "List Operations":"Mostra operazioni", - "Expand Operations":"Espandi operazioni", - "Raw":"Grezzo (raw)", - "can't parse JSON. Raw result":"non è possibile parsare il JSON. Risultato grezzo (raw).", - "Model Schema":"Schema del modello", - "Model":"Modello", - "apply":"applica", - "Username":"Nome utente", - "Password":"Password", - "Terms of service":"Condizioni del servizio", - "Created by":"Creato da", - "See more at":"Informazioni aggiuntive:", - "Contact the developer":"Contatta lo sviluppatore", - "api version":"versione api", - "Response Content Type":"Tipo di contenuto (content type) della risposta", - "fetching resource":"recuperando la risorsa", - "fetching resource list":"recuperando lista risorse", - "Explore":"Esplora", - "Show Swagger Petstore Example Apis":"Mostra le api di esempio di Swagger Petstore", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Non è possibile leggere dal server. Potrebbe non avere le impostazioni di controllo accesso origine (access-control-origin) appropriate.", - "Please specify the protocol for":"Si prega di specificare il protocollo per", - "Can't read swagger JSON from":"Impossibile leggere JSON swagger da:", - "Finished Loading Resource Information. Rendering Swagger UI":"Lettura informazioni risorse termianta. Swagger UI viene mostrata", - "Unable to read api":"Impossibile leggere la api", - "from path":"da cartella", - "server returned":"il server ha restituito" -}); diff --git a/server/api/docs/lang/ja.js b/server/api/docs/lang/ja.js deleted file mode 100755 index 1cbeb37..0000000 --- a/server/api/docs/lang/ja.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"警告: 廃止予定", - "Implementation Notes":"実装メモ", - "Response Class":"レスポンスクラス", - "Status":"ステータス", - "Parameters":"パラメータ群", - "Parameter":"パラメータ", - "Value":"値", - "Description":"説明", - "Parameter Type":"パラメータタイプ", - "Data Type":"データタイプ", - "Response Messages":"レスポンスメッセージ", - "HTTP Status Code":"HTTPステータスコード", - "Reason":"理由", - "Response Model":"レスポンスモデル", - "Request URL":"リクエストURL", - "Response Body":"レスポンスボディ", - "Response Code":"レスポンスコード", - "Response Headers":"レスポンスヘッダ", - "Hide Response":"レスポンスを隠す", - "Headers":"ヘッダ", - "Try it out!":"実際に実行!", - "Show/Hide":"表示/非表示", - "List Operations":"操作一覧", - "Expand Operations":"操作の展開", - "Raw":"未加工", - "can't parse JSON. Raw result":"JSONへ解釈できません. 未加工の結果", - "Example Value":"値の例", - "Model Schema":"モデルスキーマ", - "Model":"モデル", - "Click to set as parameter value":"パラメータ値と設定するにはクリック", - "apply":"実行", - "Username":"ユーザ名", - "Password":"パスワード", - "Terms of service":"サービス利用規約", - "Created by":"Created by", - "See more at":"詳細を見る", - "Contact the developer":"開発者に連絡", - "api version":"APIバージョン", - "Response Content Type":"レスポンス コンテンツタイプ", - "Parameter content type:":"パラメータコンテンツタイプ:", - "fetching resource":"リソースの取得", - "fetching resource list":"リソース一覧の取得", - "Explore":"調査", - "Show Swagger Petstore Example Apis":"SwaggerペットストアAPIの表示", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"サーバから読み込めません. 適切なaccess-control-origin設定を持っていない可能性があります.", - "Please specify the protocol for":"プロトコルを指定してください", - "Can't read swagger JSON from":"次からswagger JSONを読み込めません", - "Finished Loading Resource Information. Rendering Swagger UI":"リソース情報の読み込みが完了しました. Swagger UIを描画しています", - "Unable to read api":"APIを読み込めません", - "from path":"次のパスから", - "server returned":"サーバからの返答" -}); diff --git a/server/api/docs/lang/ko-kr.js b/server/api/docs/lang/ko-kr.js deleted file mode 100644 index 03c7626..0000000 --- a/server/api/docs/lang/ko-kr.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"경고:폐기예정됨", - "Implementation Notes":"구현 노트", - "Response Class":"응답 클래스", - "Status":"상태", - "Parameters":"매개변수들", - "Parameter":"매개변수", - "Value":"값", - "Description":"설명", - "Parameter Type":"매개변수 타입", - "Data Type":"데이터 타입", - "Response Messages":"응답 메세지", - "HTTP Status Code":"HTTP 상태 코드", - "Reason":"원인", - "Response Model":"응답 모델", - "Request URL":"요청 URL", - "Response Body":"응답 본문", - "Response Code":"응답 코드", - "Response Headers":"응답 헤더", - "Hide Response":"응답 숨기기", - "Headers":"헤더", - "Try it out!":"써보기!", - "Show/Hide":"보이기/숨기기", - "List Operations":"목록 작업", - "Expand Operations":"전개 작업", - "Raw":"원본", - "can't parse JSON. Raw result":"JSON을 파싱할수 없음. 원본결과:", - "Model Schema":"모델 스키마", - "Model":"모델", - "apply":"적용", - "Username":"사용자 이름", - "Password":"암호", - "Terms of service":"이용약관", - "Created by":"작성자", - "See more at":"추가정보:", - "Contact the developer":"개발자에게 문의", - "api version":"api버전", - "Response Content Type":"응답Content Type", - "fetching resource":"리소스 가져오기", - "fetching resource list":"리소스 목록 가져오기", - "Explore":"탐색", - "Show Swagger Petstore Example Apis":"Swagger Petstore 예제 보기", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"서버로부터 읽어들일수 없습니다. access-control-origin 설정이 올바르지 않을수 있습니다.", - "Please specify the protocol for":"다음을 위한 프로토콜을 정하세요", - "Can't read swagger JSON from":"swagger JSON 을 다음으로 부터 읽을수 없습니다", - "Finished Loading Resource Information. Rendering Swagger UI":"리소스 정보 불러오기 완료. Swagger UI 랜더링", - "Unable to read api":"api를 읽을 수 없습니다.", - "from path":"다음 경로로 부터", - "server returned":"서버 응답함." -}); diff --git a/server/api/docs/lang/pl.js b/server/api/docs/lang/pl.js deleted file mode 100644 index ce41e91..0000000 --- a/server/api/docs/lang/pl.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Uwaga: Wycofane", - "Implementation Notes":"Uwagi Implementacji", - "Response Class":"Klasa Odpowiedzi", - "Status":"Status", - "Parameters":"Parametry", - "Parameter":"Parametr", - "Value":"Wartość", - "Description":"Opis", - "Parameter Type":"Typ Parametru", - "Data Type":"Typ Danych", - "Response Messages":"Wiadomości Odpowiedzi", - "HTTP Status Code":"Kod Statusu HTTP", - "Reason":"Przyczyna", - "Response Model":"Model Odpowiedzi", - "Request URL":"URL Wywołania", - "Response Body":"Treść Odpowiedzi", - "Response Code":"Kod Odpowiedzi", - "Response Headers":"Nagłówki Odpowiedzi", - "Hide Response":"Ukryj Odpowiedź", - "Headers":"Nagłówki", - "Try it out!":"Wypróbuj!", - "Show/Hide":"Pokaż/Ukryj", - "List Operations":"Lista Operacji", - "Expand Operations":"Rozwiń Operacje", - "Raw":"Nieprzetworzone", - "can't parse JSON. Raw result":"nie można przetworzyć pliku JSON. Nieprzetworzone dane", - "Model Schema":"Schemat Modelu", - "Model":"Model", - "apply":"użyj", - "Username":"Nazwa użytkownika", - "Password":"Hasło", - "Terms of service":"Warunki używania", - "Created by":"Utworzone przez", - "See more at":"Zobacz więcej na", - "Contact the developer":"Kontakt z deweloperem", - "api version":"wersja api", - "Response Content Type":"Typ Zasobu Odpowiedzi", - "fetching resource":"ładowanie zasobu", - "fetching resource list":"ładowanie listy zasobów", - "Explore":"Eksploruj", - "Show Swagger Petstore Example Apis":"Pokaż Przykładowe Api Swagger Petstore", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Brak połączenia z serwerem. Może on nie mieć odpowiednich ustawień access-control-origin.", - "Please specify the protocol for":"Proszę podać protokół dla", - "Can't read swagger JSON from":"Nie można odczytać swagger JSON z", - "Finished Loading Resource Information. Rendering Swagger UI":"Ukończono Ładowanie Informacji o Zasobie. Renderowanie Swagger UI", - "Unable to read api":"Nie można odczytać api", - "from path":"ze ścieżki", - "server returned":"serwer zwrócił" -}); diff --git a/server/api/docs/lang/pt.js b/server/api/docs/lang/pt.js deleted file mode 100644 index f2e7c13..0000000 --- a/server/api/docs/lang/pt.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Aviso: Depreciado", - "Implementation Notes":"Notas de Implementação", - "Response Class":"Classe de resposta", - "Status":"Status", - "Parameters":"Parâmetros", - "Parameter":"Parâmetro", - "Value":"Valor", - "Description":"Descrição", - "Parameter Type":"Tipo de parâmetro", - "Data Type":"Tipo de dados", - "Response Messages":"Mensagens de resposta", - "HTTP Status Code":"Código de status HTTP", - "Reason":"Razão", - "Response Model":"Modelo resposta", - "Request URL":"URL requisição", - "Response Body":"Corpo da resposta", - "Response Code":"Código da resposta", - "Response Headers":"Cabeçalho da resposta", - "Headers":"Cabeçalhos", - "Hide Response":"Esconder resposta", - "Try it out!":"Tente agora!", - "Show/Hide":"Mostrar/Esconder", - "List Operations":"Listar operações", - "Expand Operations":"Expandir operações", - "Raw":"Cru", - "can't parse JSON. Raw result":"Falha ao analisar JSON. Resulto cru", - "Model Schema":"Modelo esquema", - "Model":"Modelo", - "apply":"Aplicar", - "Username":"Usuário", - "Password":"Senha", - "Terms of service":"Termos do serviço", - "Created by":"Criado por", - "See more at":"Veja mais em", - "Contact the developer":"Contate o desenvolvedor", - "api version":"Versão api", - "Response Content Type":"Tipo de conteúdo da resposta", - "fetching resource":"busca recurso", - "fetching resource list":"buscando lista de recursos", - "Explore":"Explorar", - "Show Swagger Petstore Example Apis":"Show Swagger Petstore Example Apis", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Não é possível ler do servidor. Pode não ter as apropriadas configurações access-control-origin", - "Please specify the protocol for":"Por favor especifique o protocolo", - "Can't read swagger JSON from":"Não é possível ler o JSON Swagger de", - "Finished Loading Resource Information. Rendering Swagger UI":"Carregar informação de recurso finalizada. Renderizando Swagger UI", - "Unable to read api":"Não foi possível ler api", - "from path":"do caminho", - "server returned":"servidor retornou" -}); diff --git a/server/api/docs/lang/ru.js b/server/api/docs/lang/ru.js deleted file mode 100644 index 592744e..0000000 --- a/server/api/docs/lang/ru.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Предупреждение: Устарело", - "Implementation Notes":"Заметки", - "Response Class":"Пример ответа", - "Status":"Статус", - "Parameters":"Параметры", - "Parameter":"Параметр", - "Value":"Значение", - "Description":"Описание", - "Parameter Type":"Тип параметра", - "Data Type":"Тип данных", - "HTTP Status Code":"HTTP код", - "Reason":"Причина", - "Response Model":"Структура ответа", - "Request URL":"URL запроса", - "Response Body":"Тело ответа", - "Response Code":"HTTP код ответа", - "Response Headers":"Заголовки ответа", - "Hide Response":"Спрятать ответ", - "Headers":"Заголовки", - "Response Messages":"Что может прийти в ответ", - "Try it out!":"Попробовать!", - "Show/Hide":"Показать/Скрыть", - "List Operations":"Операции кратко", - "Expand Operations":"Операции подробно", - "Raw":"В сыром виде", - "can't parse JSON. Raw result":"Не удается распарсить ответ:", - "Example Value":"Пример", - "Model Schema":"Структура", - "Model":"Описание", - "Click to set as parameter value":"Нажмите, чтобы испльзовать в качестве значения параметра", - "apply":"применить", - "Username":"Имя пользователя", - "Password":"Пароль", - "Terms of service":"Условия использования", - "Created by":"Разработано", - "See more at":"Еще тут", - "Contact the developer":"Связаться с разработчиком", - "api version":"Версия API", - "Response Content Type":"Content Type ответа", - "Parameter content type:":"Content Type параметра:", - "fetching resource":"Получение ресурса", - "fetching resource list":"Получение ресурсов", - "Explore":"Показать", - "Show Swagger Petstore Example Apis":"Показать примеры АПИ", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Не удается получить ответ от сервера. Возможно, проблема с настройками доступа", - "Please specify the protocol for":"Пожалуйста, укажите протокол для", - "Can't read swagger JSON from":"Не получается прочитать swagger json из", - "Finished Loading Resource Information. Rendering Swagger UI":"Загрузка информации о ресурсах завершена. Рендерим", - "Unable to read api":"Не удалось прочитать api", - "from path":"по адресу", - "server returned":"сервер сказал" -}); diff --git a/server/api/docs/lang/tr.js b/server/api/docs/lang/tr.js deleted file mode 100644 index 16426a9..0000000 --- a/server/api/docs/lang/tr.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Uyarı: Deprecated", - "Implementation Notes":"Gerçekleştirim Notları", - "Response Class":"Dönen Sınıf", - "Status":"Statü", - "Parameters":"Parametreler", - "Parameter":"Parametre", - "Value":"Değer", - "Description":"Açıklama", - "Parameter Type":"Parametre Tipi", - "Data Type":"Veri Tipi", - "Response Messages":"Dönüş Mesajı", - "HTTP Status Code":"HTTP Statü Kodu", - "Reason":"Gerekçe", - "Response Model":"Dönüş Modeli", - "Request URL":"İstek URL", - "Response Body":"Dönüş İçeriği", - "Response Code":"Dönüş Kodu", - "Response Headers":"Dönüş Üst Bilgileri", - "Hide Response":"Dönüşü Gizle", - "Headers":"Üst Bilgiler", - "Try it out!":"Dene!", - "Show/Hide":"Göster/Gizle", - "List Operations":"Operasyonları Listele", - "Expand Operations":"Operasyonları Aç", - "Raw":"Ham", - "can't parse JSON. Raw result":"JSON çözümlenemiyor. Ham sonuç", - "Model Schema":"Model Şema", - "Model":"Model", - "apply":"uygula", - "Username":"Kullanıcı Adı", - "Password":"Parola", - "Terms of service":"Servis şartları", - "Created by":"Oluşturan", - "See more at":"Daha fazlası için", - "Contact the developer":"Geliştirici ile İletişime Geçin", - "api version":"api versiyon", - "Response Content Type":"Dönüş İçerik Tipi", - "fetching resource":"kaynak getiriliyor", - "fetching resource list":"kaynak listesi getiriliyor", - "Explore":"Keşfet", - "Show Swagger Petstore Example Apis":"Swagger Petstore Örnek Api'yi Gör", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Sunucudan okuma yapılamıyor. Sunucu access-control-origin ayarlarınızı kontrol edin.", - "Please specify the protocol for":"Lütfen istenen adres için protokol belirtiniz", - "Can't read swagger JSON from":"Swagger JSON bu kaynaktan okunamıyor", - "Finished Loading Resource Information. Rendering Swagger UI":"Kaynak baglantısı tamamlandı. Swagger UI gösterime hazırlanıyor", - "Unable to read api":"api okunamadı", - "from path":"yoldan", - "server returned":"sunucuya dönüldü" -}); diff --git a/server/api/docs/lang/translator.js b/server/api/docs/lang/translator.js deleted file mode 100644 index ffb879f..0000000 --- a/server/api/docs/lang/translator.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -/** - * Translator for documentation pages. - * - * To enable translation you should include one of language-files in your index.html - * after . - * For example - - * - * If you wish to translate some new texts you should do two things: - * 1. Add a new phrase pair ("New Phrase": "New Translation") into your language file (for example lang/ru.js). It will be great if you add it in other language files too. - * 2. Mark that text it templates this way New Phrase or . - * The main thing here is attribute data-sw-translate. Only inner html, title-attribute and value-attribute are going to translate. - * - */ -window.SwaggerTranslator = { - - _words:[], - - translate: function(sel) { - var $this = this; - sel = sel || '[data-sw-translate]'; - - $(sel).each(function() { - $(this).html($this._tryTranslate($(this).html())); - - $(this).val($this._tryTranslate($(this).val())); - $(this).attr('title', $this._tryTranslate($(this).attr('title'))); - }); - }, - - _tryTranslate: function(word) { - return this._words[$.trim(word)] !== undefined ? this._words[$.trim(word)] : word; - }, - - learn: function(wordsMap) { - this._words = wordsMap; - } -}; diff --git a/server/api/docs/lang/zh-cn.js b/server/api/docs/lang/zh-cn.js deleted file mode 100644 index 3af61ad..0000000 --- a/server/api/docs/lang/zh-cn.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"警告:已过时", - "Implementation Notes":"实现备注", - "Response Class":"响应类", - "Status":"状态", - "Parameters":"参数", - "Parameter":"参数", - "Value":"值", - "Description":"描述", - "Parameter Type":"参数类型", - "Data Type":"数据类型", - "Response Messages":"响应消息", - "HTTP Status Code":"HTTP状态码", - "Reason":"原因", - "Response Model":"响应模型", - "Request URL":"请求URL", - "Response Body":"响应体", - "Response Code":"响应码", - "Response Headers":"响应头", - "Hide Response":"隐藏响应", - "Headers":"头", - "Try it out!":"试一下!", - "Show/Hide":"显示/隐藏", - "List Operations":"显示操作", - "Expand Operations":"展开操作", - "Raw":"原始", - "can't parse JSON. Raw result":"无法解析JSON. 原始结果", - "Example Value":"示例", - "Click to set as parameter value":"点击设置参数", - "Model Schema":"模型架构", - "Model":"模型", - "apply":"应用", - "Username":"用户名", - "Password":"密码", - "Terms of service":"服务条款", - "Created by":"创建者", - "See more at":"查看更多:", - "Contact the developer":"联系开发者", - "api version":"api版本", - "Response Content Type":"响应Content Type", - "Parameter content type:":"参数类型:", - "fetching resource":"正在获取资源", - "fetching resource list":"正在获取资源列表", - "Explore":"浏览", - "Show Swagger Petstore Example Apis":"显示 Swagger Petstore 示例 Apis", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"无法从服务器读取。可能没有正确设置access-control-origin。", - "Please specify the protocol for":"请指定协议:", - "Can't read swagger JSON from":"无法读取swagger JSON于", - "Finished Loading Resource Information. Rendering Swagger UI":"已加载资源信息。正在渲染Swagger UI", - "Unable to read api":"无法读取api", - "from path":"从路径", - "server returned":"服务器返回" -}); diff --git a/server/api/docs/lib/backbone-min.js b/server/api/docs/lib/backbone-min.js deleted file mode 100644 index 8eff02e..0000000 --- a/server/api/docs/lib/backbone-min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,s){t.Backbone=e(t,s,i,n)});else if("undefined"!=typeof exports){var i=require("underscore");e(t,exports,i)}else t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}(this,function(t,e,i,n){var s=t.Backbone,r=[],a=(r.push,r.slice);r.splice;e.VERSION="1.1.2",e.$=n,e.noConflict=function(){return t.Backbone=s,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var n=this._events[t]||(this._events[t]=[]);return n.push({callback:e,context:i,ctx:i||this}),this},once:function(t,e,n){if(!c(this,"once",t,[e,n])||!e)return this;var s=this,r=i.once(function(){s.off(t,r),e.apply(this,arguments)});return r._callback=e,this.on(t,r,n)},off:function(t,e,n){var s,r,a,o,h,u,l,d;if(!this._events||!c(this,"off",t,[e,n]))return this;if(!t&&!e&&!n)return this._events=void 0,this;for(o=t?[t]:i.keys(this._events),h=0,u=o.length;h").attr(t);this.setElement(n,!1)}}}),e.sync=function(t,n,s){var r=E[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:r,dataType:"json"};if(s.url||(a.url=i.result(n,"url")||j()),null!=s.data||!n||"create"!==t&&"update"!==t&&"patch"!==t||(a.contentType="application/json",a.data=JSON.stringify(s.attrs||n.toJSON(s))),s.emulateJSON&&(a.contentType="application/x-www-form-urlencoded",a.data=a.data?{model:a.data}:{}),s.emulateHTTP&&("PUT"===r||"DELETE"===r||"PATCH"===r)){a.type="POST",s.emulateJSON&&(a.data._method=r);var o=s.beforeSend;s.beforeSend=function(t){if(t.setRequestHeader("X-HTTP-Method-Override",r),o)return o.apply(this,arguments)}}"GET"===a.type||s.emulateJSON||(a.processData=!1),"PATCH"===a.type&&x&&(a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var h=s.xhr=e.ajax(i.extend(a,s));return n.trigger("request",n,h,s),h};var x=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),E={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var k=e.Router=function(t){t||(t={}),t.routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},T=/\((.*?)\)/g,$=/(\(\?)?:\w+/g,S=/\*\w+/g,H=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend(k.prototype,o,{initialize:function(){},route:function(t,n,s){i.isRegExp(t)||(t=this._routeToRegExp(t)),i.isFunction(n)&&(s=n,n=""),s||(s=this[n]);var r=this;return e.history.route(t,function(i){var a=r._extractParameters(t,i);r.execute(s,a),r.trigger.apply(r,["route:"+n].concat(a)),r.trigger("route",n,a),e.history.trigger("route",r,n,a)}),this},execute:function(t,e){t&&t.apply(this,e)},navigate:function(t,i){return e.history.navigate(t,i),this},_bindRoutes:function(){if(this.routes){this.routes=i.result(this,"routes");for(var t,e=i.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(H,"\\$&").replace(T,"(?:$1)?").replace($,function(t,e){return e?t:"([^/?]+)"}).replace(S,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var n=t.exec(e).slice(1);return i.map(n,function(t,e){return e===n.length-1?t||null:t?decodeURIComponent(t):null})}});var A=e.History=function(){this.handlers=[],i.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},I=/^[#\/]|\s+$/g,N=/^\/+|\/+$/g,R=/msie [\w.]+/,O=/\/$/,P=/#.*$/;A.started=!1,i.extend(A.prototype,o,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(null==t)if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(O,"");t.indexOf(i)||(t=t.slice(i.length))}else t=this.getHash();return t.replace(I,"")},start:function(t){if(A.started)throw new Error("Backbone.history has already been started");A.started=!0,this.options=i.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var n=this.getFragment(),s=document.documentMode,r=R.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);if(this.root=("/"+this.root+"/").replace(N,"/"),r&&this._wantsHashChange){var a=e.$('