From 0cc8aea9b936ee77071e2d55ee595835d7a9e852 Mon Sep 17 00:00:00 2001 From: Agner Date: Mon, 5 Jun 2017 23:05:37 -0300 Subject: [PATCH 01/23] add gitignore --- .gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..e69de29b From 14e6b9e5faf1e76176157c7fbe23c32df6c996ab Mon Sep 17 00:00:00 2001 From: Agner Date: Tue, 6 Jun 2017 00:23:17 -0300 Subject: [PATCH 02/23] add sources javascript and css --- .gitignore | 2 + bower.json | 16 + gulpfile.js | 74 + package-lock.json | 3018 ++++++++++++++++++++++++++++++++++++++ package.json | 28 + public/css/app.css | 1 + public/css/libs.css | 5 + public/index.html | 37 + public/js/app.js | 1 + public/js/libs.js | 1 + src/js/core.js | 17 + src/js/database.js | 15 + src/js/paginator.js | 24 + src/js/validator.js | 3 + src/scss/_paginator.scss | 11 + src/scss/animate.css | 1579 ++++++++++++++++++++ src/scss/app.scss | 6 + 17 files changed, 4838 insertions(+) create mode 100644 bower.json create mode 100644 gulpfile.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/css/app.css create mode 100644 public/css/libs.css create mode 100644 public/index.html create mode 100644 public/js/app.js create mode 100644 public/js/libs.js create mode 100644 src/js/core.js create mode 100644 src/js/database.js create mode 100644 src/js/paginator.js create mode 100644 src/js/validator.js create mode 100644 src/scss/_paginator.scss create mode 100644 src/scss/animate.css create mode 100644 src/scss/app.scss diff --git a/.gitignore b/.gitignore index e69de29b..4a688ff0 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +bower_components/ \ No newline at end of file diff --git a/bower.json b/bower.json new file mode 100644 index 00000000..51eab567 --- /dev/null +++ b/bower.json @@ -0,0 +1,16 @@ +{ + "name": "LibIN", + "version": "1.0.0", + "authors": [ + "Agner Esteves Ballejo" + ], + "description": "> [![Logo iColabora](http://www.icolabora.com.br/vagas/imgs/icolabora.png)](https://www.icolabora.com.br/vagas)\r >\r > Todos que os interessados que fizerem pull request receberão um feedback da iColabora.
\r > Essa prova consiste em testar seus conhecimentos com HTML, CSS, JavaScript, SQL entre outras coisas.
\r > O conjunto de interfaces disponibilizado leva em média 6 horas para ser implementado;", + "main": "index.html", + "license": "MIT", + "homepage": "https://github.com/agscripter/teste-front-end-developer#readme", + "dependencies": { + "bootstrap": "^3.3.7" + }, + "ignore": [], + "private": true +} diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 00000000..55d60ff0 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,74 @@ +var gulp = require('gulp'); +var $ = require('gulp-load-plugins')(); + +var browserSync = require('browser-sync').create(); + +var concat = require('gulp-concat'), + uglify = require('gulp-uglify'); + +var scripts = [ + './src/js/database.js', + './src/js/validator.js', + './src/js/paginator.js', + './src/js/core.js', +]; + +var scriptsLibs = [ + './exemplo-query/mysql_lib.js', + './bower_components/jquery/dist/jquery.js' +]; + +var cssLib = [ + './bower_components/bootstrap/dist/css/bootstrap.min.css' +]; + +gulp.task('scripts-libs', function() { + return gulp.src(scriptsLibs) + .pipe(concat('libs.js')) + .pipe(uglify({mangle: true})) + .pipe(gulp.dest('./public/js/')); +}); + +gulp.task('scripts-site', function() { + return gulp.src(scripts) + .pipe(concat('app.js')) + .pipe(uglify({mangle: true})) + .pipe(gulp.dest('./public/js/')); +}); + +gulp.task('sass', function() { + return gulp.src(['src/scss/app.scss']) + .pipe($.sass({ + outputStyle: 'compressed' + }) + .on('error', $.sass.logError)) + .pipe($.autoprefixer({ + browsers: ['last 2 versions', 'ie >= 9'] + })) + .pipe(gulp.dest('public/css')); +}); + +gulp.task('css-libs', function() { + return gulp.src(cssLib) + .pipe($.sass({ + outputStyle: 'compressed' + }) + .on('error', $.sass.logError)) + .pipe($.autoprefixer({ + browsers: ['last 2 versions', 'ie >= 9'] + })) + .pipe(concat('libs.css')) + .pipe(gulp.dest('public/css')); +}); + +gulp.task('serve', ['sass', 'css-libs'], function() { + browserSync.init({ + server: "./public" + }); + + gulp.watch(['./src/scss/**/*.scss'], ['sass']); + gulp.watch(scripts, ['scripts-site']); + gulp.watch("public/index.html").on('change', browserSync.reload); +}); + +gulp.task('default', ['serve']); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..26d2e37a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3018 @@ +{ + "name": "teste-front-end-developer", + "version": "1.0.0", + "lockfileVersion": 1, + "dependencies": { + "abbrev": { + "version": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" + }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=" + }, + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=" + }, + "acorn-object-spread": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz", + "integrity": "sha1-SOrQ9KjrFplaF6Dbn/xqyq2kumg=" + }, + "after": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", + "integrity": "sha1-q11PuIP1loFtNRX495HAr0ht1ic=" + }, + "ajv": { + "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=" + }, + "amdefine": { + "version": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=" + }, + "aproba": { + "version": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "integrity": "sha1-RcZikJTeTpb2k+9+q3SuB5wkD8E=" + }, + "archy": { + "version": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "are-we-there-yet": { + "version": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", + "integrity": "sha1-7/5yu3yITA3TNeI3nVJhltnQEe4=" + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + } + } + }, + "arr-diff": { + "version": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=" + }, + "arr-flatten": { + "version": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=" + }, + "array-differ": { + "version": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-find-index": { + "version": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-uniq": { + "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=" + }, + "async-foreach": { + "version": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, + "asynckit": { + "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "autoprefixer": { + "version": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.1.tgz", + "integrity": "sha1-l7yFTH0Ll5+NZIneVHoNF/swf20=" + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + }, + "aws4": { + "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "base64id": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", + "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=" + }, + "batch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", + "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=" + }, + "bcrypt-pbkdf": { + "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true + }, + "beeper": { + "version": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=" + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=" + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" + }, + "block-stream": { + "version": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=" + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=" + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=" + }, + "braces": { + "version": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=" + }, + "browser-sync": { + "version": "2.18.12", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.18.12.tgz", + "integrity": "sha1-u6oKF6lh4rXwqOdg5pUCcYZmR3k=", + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "qs": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", + "integrity": "sha1-zgPF/wk1vB2daanxTL0Y5WjWdiU=" + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + }, + "yargs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", + "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=" + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=" + } + } + }, + "browser-sync-client": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.5.1.tgz", + "integrity": "sha1-7BrWmknC4tS2RbGLHAbCmz2a+Os=" + }, + "browser-sync-ui": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-0.6.3.tgz", + "integrity": "sha1-ZApTfBgGiTA9W+krxHa568RBwLw=" + }, + "browserslist": { + "version": "https://registry.npmjs.org/browserslist/-/browserslist-2.1.4.tgz", + "integrity": "sha1-zFJq9KExK30uBWU+VtDIq3DA4FM=" + }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=" + }, + "buble": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/buble/-/buble-0.12.5.tgz", + "integrity": "sha1-xm/+kvn0o8ZdMlYHm3EeK9C8UBM=" + }, + "bubleify": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/bubleify/-/bubleify-0.5.1.tgz", + "integrity": "sha1-9lxHzuMbgMrYuedHu+GH1/5R6Sc=", + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "builtin-modules": { + "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=" + }, + "caniuse-lite": { + "version": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000677.tgz", + "integrity": "sha1-QwkCM9SyxxkGV/lUVZg9lNJkuqo=" + }, + "caseless": { + "version": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=" + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=" + }, + "clone": { + "version": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + }, + "clone-buffer": { + "version": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-stats": { + "version": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, + "cloneable-readable": { + "version": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz", + "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=" + }, + "co": { + "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=" + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=" + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-with-sourcemaps": { + "version": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz", + "integrity": "sha1-9Vs74q60dgGxCi1SWcz7cP0vHdY=" + }, + "connect": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.5.0.tgz", + "integrity": "sha1-s1dSWgtMH1BZnNmD4dnv7qlncZg=" + }, + "connect-history-api-fallback": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", + "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=" + }, + "console-control-strings": { + "version": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dependencies": { + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=" + } + } + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=" + }, + "currently-unhandled": { + "version": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=" + }, + "dashdash": { + "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "dateformat": { + "version": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", + "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=" + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=" + }, + "decamelize": { + "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "defaults": { + "version": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=" + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" + }, + "deprecated": { + "version": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-file": { + "version": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=" + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=" + }, + "duplexer2": { + "version": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=" + }, + "easy-extender": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.2.tgz", + "integrity": "sha1-PTJI/r4rFZYHMW2PnPSRwWZIIh0=", + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, + "eazy-logger": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", + "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=" + }, + "ecc-jsbn": { + "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.13.tgz", + "integrity": "sha1-GzperObgh7teJXoQCwy/6Bsokfw=" + }, + "emitter-steward": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emitter-steward/-/emitter-steward-1.0.0.tgz", + "integrity": "sha1-80Ea3pdYp1Zd+Eiy2gy70bRsvWQ=" + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + }, + "end-of-stream": { + "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=" + }, + "engine.io": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.0.tgz", + "integrity": "sha1-PutfJky3XbvsG6rqJtYfWk6s4qo=", + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=" + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "engine.io-client": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.0.tgz", + "integrity": "sha1-e3MOQSdBQIdZbZvjyI0rxf22z1w=", + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=" + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "engine.io-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.1.tgz", + "integrity": "sha1-lVTxrjMQfW+9FwylRm0vgz9qB88=", + "dependencies": { + "has-binary": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", + "integrity": "sha1-JTJvOc+k9hath4eJTjryz7x7bhA=" + } + } + }, + "error-ex": { + "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "etag": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=" + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" + }, + "expand-brackets": { + "version": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=" + }, + "expand-range": { + "version": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=" + }, + "expand-tilde": { + "version": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=" + }, + "express": { + "version": "2.5.11", + "resolved": "https://registry.npmjs.org/express/-/express-2.5.11.tgz", + "integrity": "sha1-TOjqHzY15p5J8Ou0l7aksKUc5vA=", + "dependencies": { + "connect": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-1.9.2.tgz", + "integrity": "sha1-QogKIulDiuWait105Df1iujlKAc=" + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" + }, + "qs": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.4.2.tgz", + "integrity": "sha1-PKxMhh43GoycR3CsI82o3mObjl8=" + } + } + }, + "extend": { + "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extglob": { + "version": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=" + }, + "extsprintf": { + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + }, + "fancy-log": { + "version": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=" + }, + "filename-regex": { + "version": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fill-range": { + "version": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=" + }, + "finalhandler": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz", + "integrity": "sha1-6VCKvs6bbbqHGmlCodeRG5GRGsc=" + }, + "find-index": { + "version": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=" + }, + "find-up": { + "version": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=" + }, + "findup-sync": { + "version": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=" + }, + "fined": { + "version": "https://registry.npmjs.org/fined/-/fined-1.0.2.tgz", + "integrity": "sha1-WyhCS3YNdZiWC374SA3/itNmDpc=" + }, + "first-chunk-stream": { + "version": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" + }, + "flagged-respawn": { + "version": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=" + }, + "for-in": { + "version": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=" + }, + "forever-agent": { + "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=" + }, + "formidable": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.17.tgz", + "integrity": "sha1-71SRSQ+UM7cF+qdyScmQKa40hVk=" + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=" + }, + "fs-exists-sync": { + "version": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=" + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + } + } + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz", + "integrity": "sha1-8Z/Sj0Pur3YWgOUZogPE0LPTGv8=", + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.2", + "bundled": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "bundled": true + }, + "boom": { + "version": "2.10.1", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.6", + "bundled": true + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.11.0", + "bundled": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true + }, + "commander": { + "version": "2.9.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "debug": { + "version": "2.2.0", + "bundled": true, + "optional": true + }, + "deep-extend": { + "version": "0.4.1", + "bundled": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "extend": { + "version": "3.0.0", + "bundled": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "form-data": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.10", + "bundled": true + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.3", + "bundled": true, + "optional": true + }, + "generate-function": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "generate-object-property": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "getpass": { + "version": "0.1.6", + "bundled": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.1", + "bundled": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "graceful-readlink": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "har-validator": { + "version": "2.0.6", + "bundled": true, + "optional": true + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "optional": true + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true + }, + "is-my-json-valid": { + "version": "2.15.0", + "bundled": true, + "optional": true + }, + "is-property": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "optional": true + }, + "jsonpointer": { + "version": "4.0.1", + "bundled": true, + "optional": true + }, + "jsprim": { + "version": "1.3.1", + "bundled": true, + "optional": true + }, + "mime-db": { + "version": "1.26.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.14", + "bundled": true + }, + "minimatch": { + "version": "3.0.3", + "bundled": true + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true + }, + "ms": { + "version": "0.7.1", + "bundled": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.33", + "bundled": true, + "optional": true + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "optional": true + }, + "npmlog": { + "version": "4.0.2", + "bundled": true, + "optional": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "optional": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "optional": true + }, + "qs": { + "version": "6.3.1", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.1.7", + "bundled": true, + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.2", + "bundled": true, + "optional": true + }, + "request": { + "version": "2.79.0", + "bundled": true, + "optional": true + }, + "rimraf": { + "version": "2.5.4", + "bundled": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "optional": true + }, + "sshpk": { + "version": "1.10.2", + "bundled": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true + }, + "tar-pack": { + "version": "3.3.0", + "bundled": true, + "optional": true, + "dependencies": { + "once": { + "version": "1.3.3", + "bundled": true, + "optional": true + }, + "readable-stream": { + "version": "2.1.5", + "bundled": true, + "optional": true + } + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.4.3", + "bundled": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true, + "optional": true + } + } + }, + "fstream": { + "version": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + } + } + }, + "gauge": { + "version": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "gaze": { + "version": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=" + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=" + }, + "get-caller-file": { + "version": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stdin": { + "version": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "getpass": { + "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=" + }, + "glob-base": { + "version": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=" + }, + "glob-parent": { + "version": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=" + }, + "glob-stream": { + "version": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dependencies": { + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=" + }, + "through2": { + "version": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=" + } + } + }, + "glob-watcher": { + "version": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=" + }, + "glob2base": { + "version": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=" + }, + "global-modules": { + "version": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=" + }, + "global-prefix": { + "version": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=" + }, + "globule": { + "version": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dependencies": { + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=" + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=" + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=" + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=" + } + } + }, + "glogg": { + "version": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=" + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=" + }, + "graceful-readlink": { + "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "gulp": { + "version": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=" + }, + "gulp-autoprefixer": { + "version": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-4.0.0.tgz", + "integrity": "sha1-4AqMVxuF0GUWrCY0G+kN/Z/B6rA=" + }, + "gulp-concat": { + "version": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dependencies": { + "clone-stats": { + "version": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "replace-ext": { + "version": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "vinyl": { + "version": "https://registry.npmjs.org/vinyl/-/vinyl-2.0.2.tgz", + "integrity": "sha1-CjcT2NTpIhxY8QyhbAEWyeJe2nw=" + } + } + }, + "gulp-load-plugins": { + "version": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-1.5.0.tgz", + "integrity": "sha1-TEGffldk2aDjMGG6uWGPgbc9QXE=" + }, + "gulp-sass": { + "version": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-3.1.0.tgz", + "integrity": "sha1-U9xLaKH13f5EJKtMJHZVJpqLdLc=" + }, + "gulp-uglify": { + "version": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.0.tgz", + "integrity": "sha1-DfAzHXKg0wLj434QlIXd3zPG0co=", + "dependencies": { + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + } + } + }, + "gulp-util": { + "version": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=" + }, + "gulplog": { + "version": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=" + }, + "har-schema": { + "version": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" + }, + "har-validator": { + "version": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=" + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=" + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "has-gulplog": { + "version": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=" + }, + "has-unicode": { + "version": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=" + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "homedir-polyfill": { + "version": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=" + }, + "hosted-git-info": { + "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=" + }, + "http-errors": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", + "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=" + }, + "http-proxy": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", + "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=" + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=" + }, + "immutable": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.1.tgz", + "integrity": "sha1-IAgH8Rqw9ycQ6khVQt4IgHX2jNI=" + }, + "in-publish": { + "version": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + }, + "indent-string": { + "version": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" + }, + "interpret": { + "version": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=" + }, + "invert-kv": { + "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-absolute": { + "version": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=" + }, + "is-arrayish": { + "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=" + }, + "is-buffer": { + "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" + }, + "is-dotfile": { + "version": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=" + }, + "is-extendable": { + "version": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=" + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + }, + "is-glob": { + "version": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=" + }, + "is-my-json-valid": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=" + }, + "is-number": { + "version": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=" + }, + "is-number-like": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.7.tgz", + "integrity": "sha1-o41rD9LNQoJEkSiFnu2GwD/SNVI=" + }, + "is-posix-bracket": { + "version": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + }, + "is-relative": { + "version": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=" + }, + "is-stream": { + "version": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-unc-path": { + "version": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=" + }, + "is-utf8": { + "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "isstream": { + "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jodid25519": { + "version": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "optional": true + }, + "js-base64": { + "version": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=" + }, + "jsbn": { + "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-stable-stringify": { + "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, + "jsonfile": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.0.tgz", + "integrity": "sha1-kufHRE5f/V+jLmqa6LhQNN+DR9A=", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "optional": true + } + } + }, + "jsonify": { + "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" + }, + "jsprim": { + "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + }, + "lcid": { + "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=" + }, + "liftoff": { + "version": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=" + }, + "limiter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.0.tgz", + "integrity": "sha1-bivRLKP82qEfIk4uU8iW3z8I2RM=" + }, + "load-json-file": { + "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dependencies": { + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=" + } + } + }, + "localtunnel": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.8.2.tgz", + "integrity": "sha1-kTBR6DKLUfda2KIq0fXFuMWZo1k=", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=" + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=" + }, + "request": { + "version": "2.78.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.78.0.tgz", + "integrity": "sha1-4cjew0bhyBkjskrNszfxHeyr6cw=" + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + }, + "yargs": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.29.0.tgz", + "integrity": "sha1-GquWYOrnnYuPZ1vK7qtu40ws9pw=" + } + } + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=" + }, + "lodash._basecopy": { + "version": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basetostring": { + "version": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=" + }, + "lodash._basevalues": { + "version": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=" + }, + "lodash._getnative": { + "version": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash._reescape": { + "version": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=" + }, + "lodash._reevaluate": { + "version": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=" + }, + "lodash._reinterpolate": { + "version": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash._root": { + "version": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" + }, + "lodash.assign": { + "version": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lodash.assignwith": { + "version": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", + "integrity": "sha1-EnqX8CrcQXUalU0ksN4X4QDgOOs=" + }, + "lodash.clonedeep": { + "version": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.escape": { + "version": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=" + }, + "lodash.isarguments": { + "version": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isempty": { + "version": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=" + }, + "lodash.isplainobject": { + "version": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.keys": { + "version": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=" + }, + "lodash.mapvalues": { + "version": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=" + }, + "lodash.mergewith": { + "version": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=" + }, + "lodash.pick": { + "version": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.restparam": { + "version": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, + "lodash.template": { + "version": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=" + }, + "lodash.templatesettings": { + "version": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=" + }, + "loud-rejection": { + "version": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=" + }, + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "magic-string": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.14.0.tgz", + "integrity": "sha1-VyJK7xcByu7Sc7F6OalW5ysXJGI=" + }, + "make-error": { + "version": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", + "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=" + }, + "make-error-cause": { + "version": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=" + }, + "map-cache": { + "version": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "meow": { + "version": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dependencies": { + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "micromatch": { + "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=" + }, + "mime": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.4.tgz", + "integrity": "sha1-EbX9rynCUJJVF2uArVIClPXekrc=" + }, + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=" + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=" + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "multipipe": { + "version": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=" + }, + "nan": { + "version": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" + }, + "natives": { + "version": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "node-gyp": { + "version": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, + "node-sass": { + "version": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", + "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=", + "dependencies": { + "gaze": { + "version": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=" + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=" + }, + "globule": { + "version": "https://registry.npmjs.org/globule/-/globule-1.1.0.tgz", + "integrity": "sha1-xJNS5NwYPYWJPuglOF65lLtt9F8=" + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.16.6.tgz", + "integrity": "sha1-0iyaxmAojzhD4Wun0rXQbMon13c=" + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=" + } + } + }, + "nopt": { + "version": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=" + }, + "normalize-package-data": { + "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=" + }, + "normalize-path": { + "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" + }, + "normalize-range": { + "version": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "npmlog": { + "version": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha1-3Fm+6F9k8A7UJO+yrweD3yXRwLU=" + }, + "num2fraction": { + "version": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=" + }, + "object.omit": { + "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=" + }, + "openurl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.0.tgz", + "integrity": "sha1-4vIYnZmcBIIyAfCD8PGnzYkDGHo=" + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" + }, + "orchestrator": { + "version": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=" + }, + "ordered-read-streams": { + "version": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=" + }, + "os-homedir": { + "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=" + }, + "os-tmpdir": { + "version": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=" + }, + "parse-filepath": { + "version": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=" + }, + "parse-glob": { + "version": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=" + }, + "parse-json": { + "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" + }, + "parse-passwd": { + "version": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=" + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=" + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=" + }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" + }, + "path-exists": { + "version": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-root": { + "version": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=" + }, + "path-root-regex": { + "version": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" + }, + "path-type": { + "version": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + } + } + }, + "performance-now": { + "version": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + }, + "pify": { + "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" + }, + "portscanner": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", + "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=" + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "dependencies": { + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" + } + } + }, + "postcss-value-parser": { + "version": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" + }, + "preserve": { + "version": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-hrtime": { + "version": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "pseudomap": { + "version": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "randomatic": { + "version": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz", + "integrity": "sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "read-pkg": { + "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=" + }, + "read-pkg-up": { + "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=" + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=" + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + }, + "readable-stream": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", + "integrity": "sha512-HQEnnoV404e0EtwB9yNiuk2tJ+egeVC8Y9QBAxzDg8DBJt4BzRp+yQuIb/t3FIWkSTmIi+sgx7yVv/ZM0GNoqw==" + }, + "string_decoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + } + } + }, + "rechoir": { + "version": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=" + }, + "redent": { + "version": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=" + }, + "regex-cache": { + "version": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=" + }, + "remove-trailing-separator": { + "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz", + "integrity": "sha1-YV67lq9VlVLUv0BXyENtSGq2PMQ=" + }, + "repeat-element": { + "version": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" + }, + "replace-ext": { + "version": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=" + }, + "require-directory": { + "version": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=" + }, + "resolve-dir": { + "version": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=" + }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + } + } + }, + "rimraf": { + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + } + } + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" + }, + "safe-buffer": { + "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", + "integrity": "sha1-/kyEYDl/nqqqWOc75GJzQIpF4iM=" + }, + "sass-graph": { + "version": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + } + } + }, + "scss-tokenizer": { + "version": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dependencies": { + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=" + } + } + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + }, + "send": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.2.tgz", + "integrity": "sha1-+R+rRAO8+H5xb3DOtdsvV4vcF9Y=", + "dependencies": { + "debug": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz", + "integrity": "sha1-dYaps8OXQcAoKuM0RcTorHRzT+A=", + "dependencies": { + "ms": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=" + } + } + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=" + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, + "ms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-1.0.0.tgz", + "integrity": "sha1-Wa3NIu3FQ/e1OBhi0xOHsfS8lHM=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "sequencify": { + "version": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=" + }, + "serve-index": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz", + "integrity": "sha1-fF2WwT+xMRAfk8HFd0+FFqHnjTs=" + }, + "serve-static": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.2.tgz", + "integrity": "sha1-5UbicmCBuBtLzsjpCAjrzdMjr7o=" + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=" + }, + "set-blocking": { + "version": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setprototypeof": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", + "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=" + }, + "sigmund": { + "version": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "signal-exit": { + "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sntp": { + "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=" + }, + "socket.io": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.6.0.tgz", + "integrity": "sha1-PkDZMmN+a9kjmBslyvfFPoO24uE=", + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=" + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=" + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=" + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "socket.io-client": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.6.0.tgz", + "integrity": "sha1-W2aPT3cTBN/u0XkGRwg4b6ZxeFM=", + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=" + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=" + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + }, + "sparkles": { + "version": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=" + }, + "spdx-correct": { + "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" + }, + "spdx-expression-parse": { + "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sshpk": { + "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stdout-stream": { + "version": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", + "integrity": "sha512-HQEnnoV404e0EtwB9yNiuk2tJ+egeVC8Y9QBAxzDg8DBJt4BzRp+yQuIb/t3FIWkSTmIi+sgx7yVv/ZM0GNoqw==" + }, + "string_decoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + } + } + }, + "stream-consume": { + "version": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=" + }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=" + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + }, + "stringstream": { + "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + }, + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=" + }, + "strip-indent": { + "version": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=" + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "tar": { + "version": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=" + }, + "tfunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", + "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=" + }, + "through2": { + "version": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", + "integrity": "sha1-7/5yu3yITA3TNeI3nVJhltnQEe4=" + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + } + } + }, + "tildify": { + "version": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=" + }, + "time-stamp": { + "version": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "tough-cookie": { + "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=" + }, + "trim-newlines": { + "version": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" + }, + "tweetnacl": { + "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "ua-parser-js": { + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.12.tgz", + "integrity": "sha1-BMgamb3V3FImPqKdJMa/jUgYpLs=" + }, + "uglify-js": { + "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.15.tgz", + "integrity": "sha1-qssyOoRrI0YCJw3q2KMkQaiAb0I=" + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" + }, + "unc-path-regex": { + "version": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=" + }, + "unique-stream": { + "version": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=" + }, + "universalify": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.0.tgz", + "integrity": "sha1-nrHEZR3rzGcMyU8adXYjMruWd3g=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "user-home": { + "version": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + }, + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" + }, + "v8flags": { + "version": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=" + }, + "validate-npm-package-license": { + "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" + }, + "verror": { + "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=" + }, + "vinyl": { + "version": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=" + }, + "vinyl-fs": { + "version": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dependencies": { + "clone": { + "version": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=" + }, + "through2": { + "version": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=" + }, + "vinyl": { + "version": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=" + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=" + }, + "vlq": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.2.tgz", + "integrity": "sha1-4xbVJXtAuGu0PLjV/qXX9U1rDKE=" + }, + "weinre": { + "version": "2.0.0-pre-I0Z7U9OV", + "resolved": "https://registry.npmjs.org/weinre/-/weinre-2.0.0-pre-I0Z7U9OV.tgz", + "integrity": "sha1-/viqIjkh97QLu71MPtQwL2/QqBM=" + }, + "which": { + "version": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=" + }, + "which-module": { + "version": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "wide-align": { + "version": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=" + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wrap-ansi": { + "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=" + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz", + "integrity": "sha1-CC3bbGQehdS7RR8D1S8G6r2x8Bg=" + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=" + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=" + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + }, + "yargs-parser": { + "version": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..1c4b31cb --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "teste-front-end-developer", + "version": "1.0.0", + "description": "> [![Logo iColabora](http://www.icolabora.com.br/vagas/imgs/icolabora.png)](https://www.icolabora.com.br/vagas)\r >\r > Todos que os interessados que fizerem pull request receberão um feedback da iColabora.
\r > Essa prova consiste em testar seus conhecimentos com HTML, CSS, JavaScript, SQL entre outras coisas.
\r > O conjunto de interfaces disponibilizado leva em média 6 horas para ser implementado;", + "main": "mysql_lib.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/agscripter/teste-front-end-developer.git" + }, + "author": "Agner Esteves Ballejo", + "license": "ISC", + "bugs": { + "url": "https://github.com/agscripter/teste-front-end-developer/issues" + }, + "homepage": "https://github.com/agscripter/teste-front-end-developer#readme", + "dependencies": { + "browser-sync": "^2.18.12", + "gulp": "^3.9.1", + "gulp-autoprefixer": "^4.0.0", + "gulp-concat": "^2.6.1", + "gulp-load-plugins": "^1.5.0", + "gulp-sass": "^3.1.0", + "gulp-uglify": "^3.0.0" + } +} diff --git a/public/css/app.css b/public/css/app.css new file mode 100644 index 00000000..73a77126 --- /dev/null +++ b/public/css/app.css @@ -0,0 +1 @@ +*{margin:0;padding:0}.paginator .show-page{display:block}.paginator .hide-page{display:none} diff --git a/public/css/libs.css b/public/css/libs.css new file mode 100644 index 00000000..ae0d6831 --- /dev/null +++ b/public/css/libs.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000 !important;text-shadow:none !important;background:0 0 !important;-webkit-box-shadow:none !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100% !important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered td,.table-bordered th{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width: 768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width: 992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width: 1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width: 768px){.navbar{border-radius:4px}}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out, -webkit-transform .3s ease-out;-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d), (-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out, -webkit-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:transparent;filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear, left top, right top, color-stop(0, rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none !important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}td.visible-xs,th.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}td.visible-sm,th.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}td.visible-md,th.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}td.visible-lg,th.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}td.visible-print,th.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}} diff --git a/public/index.html b/public/index.html new file mode 100644 index 00000000..07c2fc15 --- /dev/null +++ b/public/index.html @@ -0,0 +1,37 @@ + + + + + Paínel de Controle + + + + + + + + +
+
+

Gráfico 01

+
+ +
+

Gráfico 02

+
+ +
+

Tabela

+
+
+ + + + + \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js new file mode 100644 index 00000000..e2781dbe --- /dev/null +++ b/public/js/app.js @@ -0,0 +1 @@ +var Database={fetchAllPedidos:function(e){this._execute("SELECT * FROM pedidos",e)},_execute:function(e,a){mysqlQuery(e,function(e){var t=JSON.parse(e);a(t)})}},Validator={},Paginator=function(e,a){var t=this,i=$(e),n=$(a),s=function(){i.click(function(){t.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){s()},this.setSelectedPage=function(e){n.find(".page").removeClass("show-page").addClass("hide-page"),this.selectedPage=n.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page")}},Core={paginatorMenu:null,validator:null,init:function(){this.paginatorMenu=new Paginator("#menu ul a",".paginator"),this.paginatorMenu.init(),Database.fetchAllPedidos(function(e){console.log(e)})}};Core.init(); \ No newline at end of file diff --git a/public/js/libs.js b/public/js/libs.js new file mode 100644 index 00000000..79c33d04 --- /dev/null +++ b/public/js/libs.js @@ -0,0 +1 @@ +function mysqlQuery(e,t){if("string"==typeof e){var n=new XMLHttpRequest;n.onreadystatechange=function(){4==n.readyState&&200==n.status&&void 0!=t&&"function"==typeof t&&t(n.responseText)},n.open("GET","http://192.241.152.185/"+e,!1),n.send()}else console.warn("Your query mysql is not a string")}!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(e,t){var n=(t=t||ne).createElement("script");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}function r(e){var t=!!e&&"length"in e&&e.length,n=he.type(e);return"function"!==n&&!he.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function i(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}function o(e,t,n){return he.isFunction(t)?he.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?he.grep(e,function(e){return e===t!==n}):"string"!=typeof t?he.grep(e,function(e){return se.call(t,e)>-1!==n}):Ee.test(t)?he.filter(t,e,n):(t=he.filter(t,e),he.grep(e,function(e){return se.call(t,e)>-1!==n&&1===e.nodeType}))}function a(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return he.each(e.match(je)||[],function(e,n){t[n]=!0}),t}function u(e){return e}function l(e){throw e}function c(e,t,n,r){var i;try{e&&he.isFunction(i=e.promise)?i.call(e).done(t).fail(n):e&&he.isFunction(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}function f(){ne.removeEventListener("DOMContentLoaded",f),e.removeEventListener("load",f),he.ready()}function p(){this.expando=he.expando+p.uid++}function d(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Pe.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Re,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=d(n)}catch(e){}Oe.set(e,t,n)}else n=void 0;return n}function g(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return he.css(e,t,"")},u=s(),l=n&&n[3]||(he.cssNumber[t]?"":"px"),c=(he.cssNumber[t]||"px"!==l&&+u)&&Ie.exec(he.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do{c/=o=o||".5",he.style(e,t,c+l)}while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function v(e){var t,n=e.ownerDocument,r=e.nodeName,i=_e[r];return i||(t=n.body.appendChild(n.createElement(r)),i=he.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),_e[r]=i,i)}function y(e,t){for(var n,r,i=[],o=0,a=e.length;o-1)i&&i.push(o);else if(l=he.contains(o.ownerDocument,o),a=m(f.appendChild(o),"script"),l&&x(a),n)for(c=0;o=a[c++];)Ue.test(o.type||"")&&n.push(o);return f}function w(){return!0}function T(){return!1}function C(){try{return ne.activeElement}catch(e){}}function E(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)E(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=T;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return he().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=he.guid++)),e.each(function(){he.event.add(this,t,i,r,n)})}function k(e,t){return i(e,"table")&&i(11!==t.nodeType?t:t.firstChild,"tr")?he(">tbody",e)[0]||e:e}function S(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function N(e){var t=nt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function D(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&&(o=Fe.access(e),a=Fe.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof h&&!de.checkClone&&tt.test(h))return e.each(function(n){var o=e.eq(n);g&&(t[0]=h.call(this,n,o.html())),A(o,t,r,i)});if(p&&(o=b(t,e[0].ownerDocument,!1,e,i),a=o.firstChild,1===o.childNodes.length&&(o=a),a||i)){for(u=(s=he.map(m(o,"script"),S)).length;f=0&&nw.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[M]=!0,e}function i(e){var t=q.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&Te(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function u(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function l(e){return e&&void 0!==e.getElementsByTagName&&e}function c(){}function f(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function h(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=g(x===a?x.splice(v,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return K(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==N)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&d(c),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(oe,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,p,d=0,h="0",v=r&&[],y=[],m=N,x=r||o&&w.find.TAG("*",l),b=W+=null==m?1:Math.random()||.1,T=x.length;for(l&&(N=a===q||a||l);h!==T&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===q||(A(c),s=!H);p=e[f++];)if(p(c,a||q,s)){u.push(c);break}l&&(W=b)}i&&((c=!p&&c)&&d--,r&&v.push(c))}if(d+=h,i&&h!==d){for(f=0;p=n[f++];)p(v,y,a,s);if(r){if(d>0)for(;h--;)v[h]||y[h]||(y[h]=G.call(u));y=g(y)}Q.apply(u,y),l&&!r&&y.length>0&&d+n.length>1&&t.uniqueSort(u)}return l&&(W=b,N=m),v};return i?r(a):a}var x,b,w,T,C,E,k,S,N,D,j,A,q,L,H,F,O,P,R,M="sizzle"+1*new Date,I=e.document,W=0,$=0,B=n(),_=n(),X=n(),z=function(e,t){return e===t&&(j=!0),0},U={}.hasOwnProperty,V=[],G=V.pop,Y=V.push,Q=V.push,J=V.slice,K=function(e,t){for(var n=0,r=e.length;n+~]|"+ee+")"+ee+"*"),ue=new RegExp("="+ee+"*([^\\]'\"]*?)"+ee+"*\\]","g"),le=new RegExp(re),ce=new RegExp("^"+te+"$"),fe={ID:new RegExp("^#("+te+")"),CLASS:new RegExp("^\\.("+te+")"),TAG:new RegExp("^("+te+"|[*])"),ATTR:new RegExp("^"+ne),PSEUDO:new RegExp("^"+re),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ee+"*(even|odd|(([+-]|)(\\d*)n|)"+ee+"*(?:([+-]|)"+ee+"*(\\d+)|))"+ee+"*\\)|)","i"),bool:new RegExp("^(?:"+Z+")$","i"),needsContext:new RegExp("^"+ee+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ee+"*((?:-\\d)?\\d*)"+ee+"*\\)|)(?=[^-]|$)","i")},pe=/^(?:input|select|textarea|button)$/i,de=/^h\d$/i,he=/^[^{]+\{\s*\[native \w/,ge=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,ye=new RegExp("\\\\([\\da-f]{1,6}"+ee+"?|("+ee+")|.)","ig"),me=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},xe=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,be=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},we=function(){A()},Te=p(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{Q.apply(V=J.call(I.childNodes),I.childNodes),V[I.childNodes.length].nodeType}catch(e){Q={apply:V.length?function(e,t){Y.apply(e,J.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}b=t.support={},C=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},A=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:I;return r!==q&&9===r.nodeType&&r.documentElement?(q=r,L=q.documentElement,H=!C(q),I!==q&&(n=q.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",we,!1):n.attachEvent&&n.attachEvent("onunload",we)),b.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),b.getElementsByTagName=i(function(e){return e.appendChild(q.createComment("")),!e.getElementsByTagName("*").length}),b.getElementsByClassName=he.test(q.getElementsByClassName),b.getById=i(function(e){return L.appendChild(e).id=M,!q.getElementsByName||!q.getElementsByName(M).length}),b.getById?(w.filter.ID=function(e){var t=e.replace(ye,me);return function(e){return e.getAttribute("id")===t}},w.find.ID=function(e,t){if(void 0!==t.getElementById&&H){var n=t.getElementById(e);return n?[n]:[]}}):(w.filter.ID=function(e){var t=e.replace(ye,me);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},w.find.ID=function(e,t){if(void 0!==t.getElementById&&H){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),w.find.TAG=b.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):b.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=b.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&H)return t.getElementsByClassName(e)},O=[],F=[],(b.qsa=he.test(q.querySelectorAll))&&(i(function(e){L.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ee+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ee+"*(?:value|"+Z+")"),e.querySelectorAll("[id~="+M+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+M+"+*").length||F.push(".#.+[+~]")}),i(function(e){e.innerHTML="";var t=q.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ee+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&F.push(":enabled",":disabled"),L.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(b.matchesSelector=he.test(P=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){b.disconnectedMatch=P.call(e,"*"),P.call(e,"[s!='']:x"),O.push("!=",re)}),F=F.length&&new RegExp(F.join("|")),O=O.length&&new RegExp(O.join("|")),t=he.test(L.compareDocumentPosition),R=t||he.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},z=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!b.sortDetached&&t.compareDocumentPosition(e)===n?e===q||e.ownerDocument===I&&R(I,e)?-1:t===q||t.ownerDocument===I&&R(I,t)?1:D?K(D,e)-K(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===q?-1:t===q?1:i?-1:o?1:D?K(D,e)-K(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===I?-1:u[r]===I?1:0},q):q},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==q&&A(e),n=n.replace(ue,"='$1']"),b.matchesSelector&&H&&!X[n+" "]&&(!O||!O.test(n))&&(!F||!F.test(n)))try{var r=P.call(e,n);if(r||b.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,q,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==q&&A(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==q&&A(e);var n=w.attrHandle[t.toLowerCase()],r=n&&U.call(w.attrHandle,t.toLowerCase())?n(e,t,!H):void 0;return void 0!==r?r:b.attributes||!H?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(xe,be)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!b.detectDuplicates,D=!b.sortStable&&e.slice(0),e.sort(z),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},T=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=T(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=T(t);return n},(w=t.selectors={cacheLength:50,createPseudo:r,match:fe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(ye,me),e[3]=(e[3]||e[4]||e[5]||"").replace(ye,me),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return fe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&le.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(ye,me).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=B[e+" "];return t||(t=new RegExp("(^|"+ee+")"+e+"("+ee+"|$)"))&&B(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ie," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[M]||(p[M]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===W&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[W,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[M]||(p[M]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===W&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[M]||(p[M]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[W,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=w.pseudos[e]||w.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[M]?o(n):o.length>1?(i=[e,e,"",n],w.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)e[r=K(e,i[a])]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(oe,"$1"));return i[M]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(ye,me),function(t){return(t.textContent||t.innerText||T(t)).indexOf(e)>-1}}),lang:r(function(e){return ce.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(ye,me).toLowerCase(),function(t){var n;do{if(n=H?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===L},focus:function(e){return e===q.activeElement&&(!q.hasFocus||q.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:s(!1),disabled:s(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return de.test(e.nodeName)},input:function(e){return pe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:u(function(){return[0]}),last:u(function(e,t){return[t-1]}),eq:u(function(e,t,n){return[n<0?n+t:n]}),even:u(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:u(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&9===t.nodeType&&H&&w.relative[o[1].type]){if(!(t=(w.find.ID(a.matches[0].replace(ye,me),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=fe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((u=w.find[s])&&(r=u(a.matches[0].replace(ye,me),ve.test(o[0].type)&&l(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&f(o)))return Q.apply(n,r),n;break}}return(c||k(e,p))(r,t,!H,n,!t||ve.test(e)&&l(t.parentNode)||t),n},b.sortStable=M.split("").sort(z).join("")===M,b.detectDuplicates=!!j,A(),b.sortDetached=i(function(e){return 1&e.compareDocumentPosition(q.createElement("fieldset"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),b.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(Z,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);he.find=xe,he.expr=xe.selectors,he.expr[":"]=he.expr.pseudos,he.uniqueSort=he.unique=xe.uniqueSort,he.text=xe.getText,he.isXMLDoc=xe.isXML,he.contains=xe.contains,he.escapeSelector=xe.escape;var be=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&he(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Te=he.expr.match.needsContext,Ce=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Ee=/^.[^:#\[\.,]*$/;he.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?he.find.matchesSelector(r,e)?[r]:[]:he.find.matches(e,he.grep(t,function(e){return 1===e.nodeType}))},he.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(he(e).filter(function(){for(t=0;t1?he.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Te.test(e)?he(e):e||[],!1).length}});var ke,Se=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(he.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||ke,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Se.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof he?t[0]:t,he.merge(this,he.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:ne,!0)),Ce.test(r[1])&&he.isPlainObject(t))for(r in t)he.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=ne.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):he.isFunction(e)?void 0!==n.ready?n.ready(e):e(he):he.makeArray(e,this)}).prototype=he.fn,ke=he(ne);var Ne=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};he.fn.extend({has:function(e){var t=he(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&he.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?he.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(he(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(he.uniqueSort(he.merge(this.get(),he(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),he.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return be(e,"parentNode")},parentsUntil:function(e,t,n){return be(e,"parentNode",n)},next:function(e){return a(e,"nextSibling")},prev:function(e){return a(e,"previousSibling")},nextAll:function(e){return be(e,"nextSibling")},prevAll:function(e){return be(e,"previousSibling")},nextUntil:function(e,t,n){return be(e,"nextSibling",n)},prevUntil:function(e,t,n){return be(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return i(e,"iframe")?e.contentDocument:(i(e,"template")&&(e=e.content||e),he.merge([],e.childNodes))}},function(e,t){he.fn[e]=function(n,r){var i=he.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=he.filter(r,i)),this.length>1&&(De[e]||he.uniqueSort(i),Ne.test(e)&&i.reverse()),this.pushStack(i)}});var je=/[^\x20\t\r\n\f]+/g;he.Callbacks=function(e){e="string"==typeof e?s(e):he.extend({},e);var t,n,r,i,o=[],a=[],u=-1,l=function(){for(i=i||e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)o.splice(n,1),n<=u&&u--}),this},has:function(e){return e?he.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},he.extend({Deferred:function(t){var n=[["notify","progress",he.Callbacks("memory"),he.Callbacks("memory"),2],["resolve","done",he.Callbacks("once memory"),he.Callbacks("once memory"),0,"resolved"],["reject","fail",he.Callbacks("once memory"),he.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return he.Deferred(function(t){he.each(n,function(n,r){var i=he.isFunction(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&he.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){function o(t,n,r,i){return function(){var s=this,c=arguments,f=function(){var e,f;if(!(t=a&&(r!==l&&(s=void 0,c=[e]),n.rejectWith(s,c))}};t?p():(he.Deferred.getStackHook&&(p.stackTrace=he.Deferred.getStackHook()),e.setTimeout(p))}}var a=0;return he.Deferred(function(e){n[0][3].add(o(0,e,he.isFunction(i)?i:u,e.notifyWith)),n[1][3].add(o(0,e,he.isFunction(t)?t:u)),n[2][3].add(o(0,e,he.isFunction(r)?r:l))}).promise()},promise:function(e){return null!=e?he.extend(e,i):i}},o={};return he.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[0][2].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=ie.call(arguments),o=he.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?ie.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(c(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||he.isFunction(i[n]&&i[n].then)))return o.then();for(;n--;)c(i[n],a(n),o.reject);return o.promise()}});var Ae=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;he.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&Ae.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},he.readyException=function(t){e.setTimeout(function(){throw t})};var qe=he.Deferred();he.fn.ready=function(e){return qe.then(e).catch(function(e){he.readyException(e)}),this},he.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--he.readyWait:he.isReady)||(he.isReady=!0,!0!==e&&--he.readyWait>0||qe.resolveWith(ne,[he]))}}),he.ready.then=qe.then,"complete"===ne.readyState||"loading"!==ne.readyState&&!ne.documentElement.doScroll?e.setTimeout(he.ready):(ne.addEventListener("DOMContentLoaded",f),e.addEventListener("load",f));var Le=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===he.type(n)){i=!0;for(s in n)Le(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,he.isFunction(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(he(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){Oe.remove(this,e)})}}),he.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||Array.isArray(n)?r=Fe.access(e,t,he.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=he.queue(e,t),r=n.length,i=n.shift(),o=he._queueHooks(e,t),a=function(){he.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:he.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),he.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ue=/^$|\/(?:java|ecma)script/i,Ve={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Ve.optgroup=Ve.option,Ve.tbody=Ve.tfoot=Ve.colgroup=Ve.caption=Ve.thead,Ve.th=Ve.td;var Ge=/<|&#?\w+;/;!function(){var e=ne.createDocumentFragment().appendChild(ne.createElement("div")),t=ne.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),de.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",de.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Ye=ne.documentElement,Qe=/^key/,Je=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ke=/^([^.]*)(?:\.(.+)|)/;he.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Fe.get(e);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&he.find.matchesSelector(Ye,i),n.guid||(n.guid=he.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(t){return void 0!==he&&he.event.triggered!==t.type?he.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(je)||[""]).length;l--;)d=g=(s=Ke.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=he.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=he.event.special[d]||{},c=he.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&he.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),he.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Fe.hasData(e)&&Fe.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(je)||[""]).length;l--;)if(s=Ke.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){for(f=he.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||he.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)he.event.remove(e,d+t[l],n,r,!0);he.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=he.event.fix(e),u=new Array(arguments.length),l=(Fe.get(this,"events")||{})[s.type]||[],c=he.event.special[s.type]||{};for(u[0]=s,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:he.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,et=/\s*$/g;he.extend({htmlPrefilter:function(e){return e.replace(Ze,"<$1>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=he.contains(e.ownerDocument,e);if(!(de.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||he.isXMLDoc(e)))for(a=m(s),r=0,i=(o=m(e)).length;r0&&x(a,!u&&m(e,"script")),s},cleanData:function(e){for(var t,n,r,i=he.event.special,o=0;void 0!==(n=e[o]);o++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)i[r]?he.event.remove(n,r):he.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Oe.expando]&&(n[Oe.expando]=void 0)}}}),he.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?he.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||k(this,e).appendChild(e)})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=k(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(he.cleanData(m(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return he.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!et.test(e)&&!Ve[(ze.exec(e)||["",""])[1].toLowerCase()]){e=he.htmlPrefilter(e);try{for(;n1)}}),he.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||he.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(he.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=he.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=he.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){he.fx.step[e.prop]?he.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[he.cssProps[e.prop]]&&!he.cssHooks[e.prop]?e.elem[e.prop]=e.now:he.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},he.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},he.fx=I.prototype.init,he.fx.step={};var dt,ht,gt=/^(?:toggle|show|hide)$/,vt=/queueHooks$/;he.Animation=he.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,Ie.exec(t),n),n}]},tweener:function(e,t){he.isFunction(e)?(t=e,e=["*"]):e=e.match(je);for(var n,r=0,i=e.length;r1)},removeAttr:function(e){return this.each(function(){he.removeAttr(this,e)})}}),he.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?he.prop(e,t,n):(1===o&&he.isXMLDoc(e)||(i=he.attrHooks[t.toLowerCase()]||(he.expr.match.bool.test(t)?yt:void 0)),void 0!==n?null===n?void he.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=he.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!de.radioValue&&"radio"===t&&i(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(je);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),yt={set:function(e,t,n){return!1===t?he.removeAttr(e,n):e.setAttribute(n,n),n}},he.each(he.expr.match.bool.source.match(/\w+/g),function(e,t){var n=mt[t]||he.find.attr;mt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=mt[a],mt[a]=i,i=null!=n(e,t,r)?a:null,mt[a]=o),i}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;he.fn.extend({prop:function(e,t){return Le(this,he.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[he.propFix[e]||e]})}}),he.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&he.isXMLDoc(e)||(t=he.propFix[t]||t,i=he.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=he.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),de.optSelected||(he.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),he.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){he.propFix[this.toLowerCase()]=this}),he.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(he.isFunction(e))return this.each(function(t){he(this).addClass(e.call(this,t,G(this)))});if("string"==typeof e&&e)for(t=e.match(je)||[];n=this[u++];)if(i=G(n),r=1===n.nodeType&&" "+V(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=V(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(he.isFunction(e))return this.each(function(t){he(this).removeClass(e.call(this,t,G(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(je)||[];n=this[u++];)if(i=G(n),r=1===n.nodeType&&" "+V(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=V(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):he.isFunction(e)?this.each(function(n){he(this).toggleClass(e.call(this,n,G(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=he(this),o=e.match(je)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=G(this))&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+V(G(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;he.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=he.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,he(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=he.map(i,function(e){return null==e?"":e+""})),(t=he.valHooks[this.type]||he.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=he.valHooks[i.type]||he.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),he.extend({valHooks:{option:{get:function(e){var t=he.find.attr(e,"value");return null!=t?t:V(he.text(e))}},select:{get:function(e){var t,n,r,o=e.options,a=e.selectedIndex,s="select-one"===e.type,u=s?null:[],l=s?a+1:o.length;for(r=a<0?l:s?a:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),he.each(["radio","checkbox"],function(){he.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=he.inArray(he(e).val(),t)>-1}},de.checkOn||(he.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;he.extend(he.event,{trigger:function(t,n,r,i){var o,a,s,u,l,c,f,p=[r||ne],d=ce.call(t,"type")?t.type:t,h=ce.call(t,"namespace")?t.namespace.split("."):[];if(a=s=r=r||ne,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(d+he.event.triggered)&&(d.indexOf(".")>-1&&(d=(h=d.split(".")).shift(),h.sort()),l=d.indexOf(":")<0&&"on"+d,t=t[he.expando]?t:new he.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:he.makeArray(n,[t]),f=he.event.special[d]||{},i||!f.trigger||!1!==f.trigger.apply(r,n))){if(!i&&!f.noBubble&&!he.isWindow(r)){for(u=f.delegateType||d,Tt.test(u+d)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||ne)&&p.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=p[o++])&&!t.isPropagationStopped();)t.type=o>1?u:f.bindType||d,(c=(Fe.get(a,"events")||{})[t.type]&&Fe.get(a,"handle"))&&c.apply(a,n),(c=l&&a[l])&&c.apply&&He(a)&&(t.result=c.apply(a,n),!1===t.result&&t.preventDefault());return t.type=d,i||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),n)||!He(r)||l&&he.isFunction(r[d])&&!he.isWindow(r)&&((s=r[l])&&(r[l]=null),he.event.triggered=d,r[d](),he.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=he.extend(new he.Event,n,{type:e,isSimulated:!0});he.event.trigger(r,null,t)}}),he.fn.extend({trigger:function(e,t){return this.each(function(){he.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return he.event.trigger(e,t,n,!0)}}),he.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(e,t){he.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),he.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),de.focusin="onfocusin"in e,de.focusin||he.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){he.event.simulate(t,e.target,he.event.fix(e))};he.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Fe.access(r,t);i||r.addEventListener(e,n,!0),Fe.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Fe.access(r,t)-1;i?Fe.access(r,t,i):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,Et=he.now(),kt=/\?/;he.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||he.error("Invalid XML: "+t),n};var St=/\[\]$/,Nt=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;he.param=function(e,t){var n,r=[],i=function(e,t){var n=he.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!he.isPlainObject(e))he.each(e,function(){i(this.name,this.value)});else for(n in e)Y(n,e[n],t,i);return r.join("&")},he.fn.extend({serialize:function(){return he.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=he.prop(this,"elements");return e?he.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!he(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!Xe.test(e))}).map(function(e,t){var n=he(this).val();return null==n?null:Array.isArray(n)?he.map(n,function(e){return{name:t.name,value:e.replace(Nt,"\r\n")}}):{name:t.name,value:n.replace(Nt,"\r\n")}}).get()}});var At=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=ne.createElement("a");Wt.href=Ct.href,he.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ft.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,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":he.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?K(K(e,he.ajaxSettings),t):K(he.ajaxSettings,e)},ajaxPrefilter:Q(Rt),ajaxTransport:Q(Mt),ajax:function(t,n){function r(t,n,r,s){var l,p,d,b,w,T=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",C.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Z(h,C,r)),b=ee(h,b,C,l),l?(h.ifModified&&((w=C.getResponseHeader("Last-Modified"))&&(he.lastModified[o]=w),(w=C.getResponseHeader("etag"))&&(he.etag[o]=w)),204===t||"HEAD"===h.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,l=!(d=b.error))):(d=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(n||T)+"",l?y.resolveWith(g,[p,T,C]):y.rejectWith(g,[C,T,d]),C.statusCode(x),x=void 0,f&&v.trigger(l?"ajaxSuccess":"ajaxError",[C,h,l?p:d]),m.fireWith(g,[C,T]),f&&(v.trigger("ajaxComplete",[C,h]),--he.active||he.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=he.ajaxSetup({},n),g=h.context||h,v=h.context&&(g.nodeType||g.jquery)?he(g):he.event,y=he.Deferred(),m=he.Callbacks("once memory"),x=h.statusCode||{},b={},w={},T="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=Ht.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)C.always(e[C.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return i&&i.abort(t),r(0,t),this}};if(y.promise(C),h.url=((t||h.url||Ct.href)+"").replace(Pt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(je)||[""],null==h.crossDomain){l=ne.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Wt.protocol+"//"+Wt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=he.param(h.data,h.traditional)),J(Rt,h,n,C),c)return C;(f=he.event&&h.global)&&0==he.active++&&he.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Ot.test(h.type),o=h.url.replace(qt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(At,"+")):(d=h.url.slice(o.length),h.data&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Lt,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(he.lastModified[o]&&C.setRequestHeader("If-Modified-Since",he.lastModified[o]),he.etag[o]&&C.setRequestHeader("If-None-Match",he.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&C.setRequestHeader("Content-Type",h.contentType),C.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+It+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)C.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,C,h)||c))return C.abort();if(T="abort",m.add(h.complete),C.done(h.success),C.fail(h.error),i=J(Mt,h,n,C)){if(C.readyState=1,f&&v.trigger("ajaxSend",[C,h]),c)return C;h.async&&h.timeout>0&&(u=e.setTimeout(function(){C.abort("timeout")},h.timeout));try{c=!1,i.send(b,r)}catch(e){if(c)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return he.get(e,t,n,"json")},getScript:function(e,t){return he.get(e,void 0,t,"script")}}),he.each(["get","post"],function(e,t){he[t]=function(e,n,r,i){return he.isFunction(n)&&(i=i||r,r=n,n=void 0),he.ajax(he.extend({url:e,type:t,dataType:i,data:n,success:r},he.isPlainObject(e)&&e))}}),he._evalUrl=function(e){return he.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},he.fn.extend({wrapAll:function(e){var t;return this[0]&&(he.isFunction(e)&&(e=e.call(this[0])),t=he(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return he.isFunction(e)?this.each(function(t){he(this).wrapInner(e.call(this,t))}):this.each(function(){var t=he(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=he.isFunction(e);return this.each(function(n){he(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){he(this).replaceWith(this.childNodes)}),this}}),he.expr.pseudos.hidden=function(e){return!he.expr.pseudos.visible(e)},he.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},he.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var $t={0:200,1223:204},Bt=he.ajaxSettings.xhr();de.cors=!!Bt&&"withCredentials"in Bt,de.ajax=Bt=!!Bt,he.ajaxTransport(function(t){var n,r;if(de.cors||Bt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o($t[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),he.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),he.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return he.globalEval(e),e}}}),he.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),he.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=he(" diff --git a/public/js/app.js b/public/js/app.js index 0df25819..e72867bd 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("SELECT * FROM pedidos",e)},_execute:function(e,t){mysqlQuery(e,function(e){var a=JSON.parse(e);t(a)})}},Validator={},Paginator=function(e,t){var a=this,n=$(e),i=$(t),o=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){o()},this.setSelectedPage=function(e){i.find(".page").removeClass("show-page").addClass("hide-page"),this.selectedPage=i.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page")}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",t)}},Core={paginatorMenu:null,validator:null,init:function(){this.paginatorMenu=new Paginator("#menu ul a",".paginator"),this.paginatorMenu.init(),Database.fetchAllPedidos(function(e){console.log(e)}),CEP.getInfo("08411462",function(e){console.log(e)})}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(t){this._execute("SELECT * FROM pedidos",t)},_execute:function(t,e){mysqlQuery(t,function(t){var i=JSON.parse(t);e(i)})}},Validator=function(t,e){var i={required:function(e){return t.val().length>0},max:function(e){return t.val().length<=e},min:function(e){return t.val().length>=e}},a=[];this.validate=function(t){for(var e in a){var n=a[e];if(!i[n.name]||!i[n.name](n.opt))return void t(n,!1)}t({},!0)},function(){var t=e.split("|");for(var i in t){var n=t[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(t,e){var i=$(t),a=[],n=function(){for(var t in e)o(t,e[t])},o=function(t,e){$elField=i.find('input[name="'+t+'"]'),a[t]={el:$elField},e.rules&&(a[t].el.attr("data-toggle","tooltip"),a[t].el.attr("data-placement","top"),a[t].validator=new Validator($elField,e.rules)),s(a[t]),e.isDate&&l(a[t]),e.mask&&r(a[t],e.mask)},r=function(t,e){t.el.mask(e)},l=function(t){t.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})},s=function(t){t.el.on("keyup",function(){u(a[$(this).attr("name")])})},u=function(t){t.validator.validate(function(e,i){i?t.tooltip&&(t.tooltip=!1,t.el.tooltip("destroy")):(t.el.attr("title",e.name),t.el.tooltip("show"),t.tooltip=!0)})};this.init=function(){n()},this.init()},Paginator=function(t,e){var i=this,a=$(t),n=$(e),o=function(){a.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){o()},this.setSelectedPage=function(t){n.find(".page").removeClass("show-page").addClass("hide-page"),this.selectedPage=n.find("div[data-page="+t+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page")}},CEP={getInfo:function(t,e){$.getJSON("https://viacep.com.br/ws/"+t+"/json/",e)}},Core={paginatorMenu:null,validator:null,init:function(){this.paginatorMenu=new Paginator("#menu ul a",".paginator"),this.paginatorMenu.init();new FormWizard(".form-wizard.form-pedido",{data_de_compra:{isDate:!0},cep:{mask:"00000-000"},nome:{rules:"required|min:3|max:10"}})}};Core.init(); \ No newline at end of file diff --git a/public/js/libs.js b/public/js/libs.js index 79c33d04..98405280 100644 --- a/public/js/libs.js +++ b/public/js/libs.js @@ -1 +1,241 @@ -function mysqlQuery(e,t){if("string"==typeof e){var n=new XMLHttpRequest;n.onreadystatechange=function(){4==n.readyState&&200==n.status&&void 0!=t&&"function"==typeof t&&t(n.responseText)},n.open("GET","http://192.241.152.185/"+e,!1),n.send()}else console.warn("Your query mysql is not a string")}!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(e,t){var n=(t=t||ne).createElement("script");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}function r(e){var t=!!e&&"length"in e&&e.length,n=he.type(e);return"function"!==n&&!he.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function i(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}function o(e,t,n){return he.isFunction(t)?he.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?he.grep(e,function(e){return e===t!==n}):"string"!=typeof t?he.grep(e,function(e){return se.call(t,e)>-1!==n}):Ee.test(t)?he.filter(t,e,n):(t=he.filter(t,e),he.grep(e,function(e){return se.call(t,e)>-1!==n&&1===e.nodeType}))}function a(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return he.each(e.match(je)||[],function(e,n){t[n]=!0}),t}function u(e){return e}function l(e){throw e}function c(e,t,n,r){var i;try{e&&he.isFunction(i=e.promise)?i.call(e).done(t).fail(n):e&&he.isFunction(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}function f(){ne.removeEventListener("DOMContentLoaded",f),e.removeEventListener("load",f),he.ready()}function p(){this.expando=he.expando+p.uid++}function d(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Pe.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Re,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=d(n)}catch(e){}Oe.set(e,t,n)}else n=void 0;return n}function g(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return he.css(e,t,"")},u=s(),l=n&&n[3]||(he.cssNumber[t]?"":"px"),c=(he.cssNumber[t]||"px"!==l&&+u)&&Ie.exec(he.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do{c/=o=o||".5",he.style(e,t,c+l)}while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function v(e){var t,n=e.ownerDocument,r=e.nodeName,i=_e[r];return i||(t=n.body.appendChild(n.createElement(r)),i=he.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),_e[r]=i,i)}function y(e,t){for(var n,r,i=[],o=0,a=e.length;o-1)i&&i.push(o);else if(l=he.contains(o.ownerDocument,o),a=m(f.appendChild(o),"script"),l&&x(a),n)for(c=0;o=a[c++];)Ue.test(o.type||"")&&n.push(o);return f}function w(){return!0}function T(){return!1}function C(){try{return ne.activeElement}catch(e){}}function E(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)E(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=T;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return he().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=he.guid++)),e.each(function(){he.event.add(this,t,i,r,n)})}function k(e,t){return i(e,"table")&&i(11!==t.nodeType?t:t.firstChild,"tr")?he(">tbody",e)[0]||e:e}function S(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function N(e){var t=nt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function D(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Fe.hasData(e)&&(o=Fe.access(e),a=Fe.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof h&&!de.checkClone&&tt.test(h))return e.each(function(n){var o=e.eq(n);g&&(t[0]=h.call(this,n,o.html())),A(o,t,r,i)});if(p&&(o=b(t,e[0].ownerDocument,!1,e,i),a=o.firstChild,1===o.childNodes.length&&(o=a),a||i)){for(u=(s=he.map(m(o,"script"),S)).length;f=0&&nw.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[M]=!0,e}function i(e){var t=q.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&Te(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function u(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function l(e){return e&&void 0!==e.getElementsByTagName&&e}function c(){}function f(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function h(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=g(x===a?x.splice(v,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return K(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==N)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&d(c),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(oe,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,p,d=0,h="0",v=r&&[],y=[],m=N,x=r||o&&w.find.TAG("*",l),b=W+=null==m?1:Math.random()||.1,T=x.length;for(l&&(N=a===q||a||l);h!==T&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===q||(A(c),s=!H);p=e[f++];)if(p(c,a||q,s)){u.push(c);break}l&&(W=b)}i&&((c=!p&&c)&&d--,r&&v.push(c))}if(d+=h,i&&h!==d){for(f=0;p=n[f++];)p(v,y,a,s);if(r){if(d>0)for(;h--;)v[h]||y[h]||(y[h]=G.call(u));y=g(y)}Q.apply(u,y),l&&!r&&y.length>0&&d+n.length>1&&t.uniqueSort(u)}return l&&(W=b,N=m),v};return i?r(a):a}var x,b,w,T,C,E,k,S,N,D,j,A,q,L,H,F,O,P,R,M="sizzle"+1*new Date,I=e.document,W=0,$=0,B=n(),_=n(),X=n(),z=function(e,t){return e===t&&(j=!0),0},U={}.hasOwnProperty,V=[],G=V.pop,Y=V.push,Q=V.push,J=V.slice,K=function(e,t){for(var n=0,r=e.length;n+~]|"+ee+")"+ee+"*"),ue=new RegExp("="+ee+"*([^\\]'\"]*?)"+ee+"*\\]","g"),le=new RegExp(re),ce=new RegExp("^"+te+"$"),fe={ID:new RegExp("^#("+te+")"),CLASS:new RegExp("^\\.("+te+")"),TAG:new RegExp("^("+te+"|[*])"),ATTR:new RegExp("^"+ne),PSEUDO:new RegExp("^"+re),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ee+"*(even|odd|(([+-]|)(\\d*)n|)"+ee+"*(?:([+-]|)"+ee+"*(\\d+)|))"+ee+"*\\)|)","i"),bool:new RegExp("^(?:"+Z+")$","i"),needsContext:new RegExp("^"+ee+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ee+"*((?:-\\d)?\\d*)"+ee+"*\\)|)(?=[^-]|$)","i")},pe=/^(?:input|select|textarea|button)$/i,de=/^h\d$/i,he=/^[^{]+\{\s*\[native \w/,ge=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,ye=new RegExp("\\\\([\\da-f]{1,6}"+ee+"?|("+ee+")|.)","ig"),me=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},xe=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,be=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},we=function(){A()},Te=p(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{Q.apply(V=J.call(I.childNodes),I.childNodes),V[I.childNodes.length].nodeType}catch(e){Q={apply:V.length?function(e,t){Y.apply(e,J.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}b=t.support={},C=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},A=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:I;return r!==q&&9===r.nodeType&&r.documentElement?(q=r,L=q.documentElement,H=!C(q),I!==q&&(n=q.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",we,!1):n.attachEvent&&n.attachEvent("onunload",we)),b.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),b.getElementsByTagName=i(function(e){return e.appendChild(q.createComment("")),!e.getElementsByTagName("*").length}),b.getElementsByClassName=he.test(q.getElementsByClassName),b.getById=i(function(e){return L.appendChild(e).id=M,!q.getElementsByName||!q.getElementsByName(M).length}),b.getById?(w.filter.ID=function(e){var t=e.replace(ye,me);return function(e){return e.getAttribute("id")===t}},w.find.ID=function(e,t){if(void 0!==t.getElementById&&H){var n=t.getElementById(e);return n?[n]:[]}}):(w.filter.ID=function(e){var t=e.replace(ye,me);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},w.find.ID=function(e,t){if(void 0!==t.getElementById&&H){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),w.find.TAG=b.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):b.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=b.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&H)return t.getElementsByClassName(e)},O=[],F=[],(b.qsa=he.test(q.querySelectorAll))&&(i(function(e){L.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ee+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ee+"*(?:value|"+Z+")"),e.querySelectorAll("[id~="+M+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+M+"+*").length||F.push(".#.+[+~]")}),i(function(e){e.innerHTML="";var t=q.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ee+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&F.push(":enabled",":disabled"),L.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(b.matchesSelector=he.test(P=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){b.disconnectedMatch=P.call(e,"*"),P.call(e,"[s!='']:x"),O.push("!=",re)}),F=F.length&&new RegExp(F.join("|")),O=O.length&&new RegExp(O.join("|")),t=he.test(L.compareDocumentPosition),R=t||he.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},z=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!b.sortDetached&&t.compareDocumentPosition(e)===n?e===q||e.ownerDocument===I&&R(I,e)?-1:t===q||t.ownerDocument===I&&R(I,t)?1:D?K(D,e)-K(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===q?-1:t===q?1:i?-1:o?1:D?K(D,e)-K(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===I?-1:u[r]===I?1:0},q):q},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==q&&A(e),n=n.replace(ue,"='$1']"),b.matchesSelector&&H&&!X[n+" "]&&(!O||!O.test(n))&&(!F||!F.test(n)))try{var r=P.call(e,n);if(r||b.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,q,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==q&&A(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==q&&A(e);var n=w.attrHandle[t.toLowerCase()],r=n&&U.call(w.attrHandle,t.toLowerCase())?n(e,t,!H):void 0;return void 0!==r?r:b.attributes||!H?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(xe,be)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!b.detectDuplicates,D=!b.sortStable&&e.slice(0),e.sort(z),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},T=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=T(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=T(t);return n},(w=t.selectors={cacheLength:50,createPseudo:r,match:fe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(ye,me),e[3]=(e[3]||e[4]||e[5]||"").replace(ye,me),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return fe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&le.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(ye,me).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=B[e+" "];return t||(t=new RegExp("(^|"+ee+")"+e+"("+ee+"|$)"))&&B(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ie," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[M]||(p[M]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===W&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[W,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[M]||(p[M]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===W&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[M]||(p[M]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[W,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=w.pseudos[e]||w.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[M]?o(n):o.length>1?(i=[e,e,"",n],w.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)e[r=K(e,i[a])]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(oe,"$1"));return i[M]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(ye,me),function(t){return(t.textContent||t.innerText||T(t)).indexOf(e)>-1}}),lang:r(function(e){return ce.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(ye,me).toLowerCase(),function(t){var n;do{if(n=H?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===L},focus:function(e){return e===q.activeElement&&(!q.hasFocus||q.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:s(!1),disabled:s(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return de.test(e.nodeName)},input:function(e){return pe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:u(function(){return[0]}),last:u(function(e,t){return[t-1]}),eq:u(function(e,t,n){return[n<0?n+t:n]}),even:u(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:u(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&9===t.nodeType&&H&&w.relative[o[1].type]){if(!(t=(w.find.ID(a.matches[0].replace(ye,me),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=fe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((u=w.find[s])&&(r=u(a.matches[0].replace(ye,me),ve.test(o[0].type)&&l(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&f(o)))return Q.apply(n,r),n;break}}return(c||k(e,p))(r,t,!H,n,!t||ve.test(e)&&l(t.parentNode)||t),n},b.sortStable=M.split("").sort(z).join("")===M,b.detectDuplicates=!!j,A(),b.sortDetached=i(function(e){return 1&e.compareDocumentPosition(q.createElement("fieldset"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),b.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(Z,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);he.find=xe,he.expr=xe.selectors,he.expr[":"]=he.expr.pseudos,he.uniqueSort=he.unique=xe.uniqueSort,he.text=xe.getText,he.isXMLDoc=xe.isXML,he.contains=xe.contains,he.escapeSelector=xe.escape;var be=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&he(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Te=he.expr.match.needsContext,Ce=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Ee=/^.[^:#\[\.,]*$/;he.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?he.find.matchesSelector(r,e)?[r]:[]:he.find.matches(e,he.grep(t,function(e){return 1===e.nodeType}))},he.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(he(e).filter(function(){for(t=0;t1?he.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Te.test(e)?he(e):e||[],!1).length}});var ke,Se=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(he.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||ke,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Se.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof he?t[0]:t,he.merge(this,he.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:ne,!0)),Ce.test(r[1])&&he.isPlainObject(t))for(r in t)he.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=ne.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):he.isFunction(e)?void 0!==n.ready?n.ready(e):e(he):he.makeArray(e,this)}).prototype=he.fn,ke=he(ne);var Ne=/^(?:parents|prev(?:Until|All))/,De={children:!0,contents:!0,next:!0,prev:!0};he.fn.extend({has:function(e){var t=he(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&he.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?he.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(he(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(he.uniqueSort(he.merge(this.get(),he(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),he.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return be(e,"parentNode")},parentsUntil:function(e,t,n){return be(e,"parentNode",n)},next:function(e){return a(e,"nextSibling")},prev:function(e){return a(e,"previousSibling")},nextAll:function(e){return be(e,"nextSibling")},prevAll:function(e){return be(e,"previousSibling")},nextUntil:function(e,t,n){return be(e,"nextSibling",n)},prevUntil:function(e,t,n){return be(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return i(e,"iframe")?e.contentDocument:(i(e,"template")&&(e=e.content||e),he.merge([],e.childNodes))}},function(e,t){he.fn[e]=function(n,r){var i=he.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=he.filter(r,i)),this.length>1&&(De[e]||he.uniqueSort(i),Ne.test(e)&&i.reverse()),this.pushStack(i)}});var je=/[^\x20\t\r\n\f]+/g;he.Callbacks=function(e){e="string"==typeof e?s(e):he.extend({},e);var t,n,r,i,o=[],a=[],u=-1,l=function(){for(i=i||e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)o.splice(n,1),n<=u&&u--}),this},has:function(e){return e?he.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},he.extend({Deferred:function(t){var n=[["notify","progress",he.Callbacks("memory"),he.Callbacks("memory"),2],["resolve","done",he.Callbacks("once memory"),he.Callbacks("once memory"),0,"resolved"],["reject","fail",he.Callbacks("once memory"),he.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return he.Deferred(function(t){he.each(n,function(n,r){var i=he.isFunction(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&he.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){function o(t,n,r,i){return function(){var s=this,c=arguments,f=function(){var e,f;if(!(t=a&&(r!==l&&(s=void 0,c=[e]),n.rejectWith(s,c))}};t?p():(he.Deferred.getStackHook&&(p.stackTrace=he.Deferred.getStackHook()),e.setTimeout(p))}}var a=0;return he.Deferred(function(e){n[0][3].add(o(0,e,he.isFunction(i)?i:u,e.notifyWith)),n[1][3].add(o(0,e,he.isFunction(t)?t:u)),n[2][3].add(o(0,e,he.isFunction(r)?r:l))}).promise()},promise:function(e){return null!=e?he.extend(e,i):i}},o={};return he.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[0][2].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=ie.call(arguments),o=he.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?ie.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(c(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||he.isFunction(i[n]&&i[n].then)))return o.then();for(;n--;)c(i[n],a(n),o.reject);return o.promise()}});var Ae=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;he.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&Ae.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},he.readyException=function(t){e.setTimeout(function(){throw t})};var qe=he.Deferred();he.fn.ready=function(e){return qe.then(e).catch(function(e){he.readyException(e)}),this},he.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--he.readyWait:he.isReady)||(he.isReady=!0,!0!==e&&--he.readyWait>0||qe.resolveWith(ne,[he]))}}),he.ready.then=qe.then,"complete"===ne.readyState||"loading"!==ne.readyState&&!ne.documentElement.doScroll?e.setTimeout(he.ready):(ne.addEventListener("DOMContentLoaded",f),e.addEventListener("load",f));var Le=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===he.type(n)){i=!0;for(s in n)Le(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,he.isFunction(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(he(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){Oe.remove(this,e)})}}),he.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||Array.isArray(n)?r=Fe.access(e,t,he.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=he.queue(e,t),r=n.length,i=n.shift(),o=he._queueHooks(e,t),a=function(){he.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:he.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),he.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ue=/^$|\/(?:java|ecma)script/i,Ve={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Ve.optgroup=Ve.option,Ve.tbody=Ve.tfoot=Ve.colgroup=Ve.caption=Ve.thead,Ve.th=Ve.td;var Ge=/<|&#?\w+;/;!function(){var e=ne.createDocumentFragment().appendChild(ne.createElement("div")),t=ne.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),de.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",de.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Ye=ne.documentElement,Qe=/^key/,Je=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ke=/^([^.]*)(?:\.(.+)|)/;he.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Fe.get(e);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&he.find.matchesSelector(Ye,i),n.guid||(n.guid=he.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(t){return void 0!==he&&he.event.triggered!==t.type?he.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(je)||[""]).length;l--;)d=g=(s=Ke.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=he.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=he.event.special[d]||{},c=he.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&he.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),he.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Fe.hasData(e)&&Fe.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(je)||[""]).length;l--;)if(s=Ke.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){for(f=he.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||he.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)he.event.remove(e,d+t[l],n,r,!0);he.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=he.event.fix(e),u=new Array(arguments.length),l=(Fe.get(this,"events")||{})[s.type]||[],c=he.event.special[s.type]||{};for(u[0]=s,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:he.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,et=/\s*$/g;he.extend({htmlPrefilter:function(e){return e.replace(Ze,"<$1>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=he.contains(e.ownerDocument,e);if(!(de.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||he.isXMLDoc(e)))for(a=m(s),r=0,i=(o=m(e)).length;r0&&x(a,!u&&m(e,"script")),s},cleanData:function(e){for(var t,n,r,i=he.event.special,o=0;void 0!==(n=e[o]);o++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)i[r]?he.event.remove(n,r):he.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Oe.expando]&&(n[Oe.expando]=void 0)}}}),he.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?he.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||k(this,e).appendChild(e)})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=k(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(he.cleanData(m(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return he.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!et.test(e)&&!Ve[(ze.exec(e)||["",""])[1].toLowerCase()]){e=he.htmlPrefilter(e);try{for(;n1)}}),he.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||he.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(he.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=he.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=he.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){he.fx.step[e.prop]?he.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[he.cssProps[e.prop]]&&!he.cssHooks[e.prop]?e.elem[e.prop]=e.now:he.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},he.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},he.fx=I.prototype.init,he.fx.step={};var dt,ht,gt=/^(?:toggle|show|hide)$/,vt=/queueHooks$/;he.Animation=he.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return g(n.elem,e,Ie.exec(t),n),n}]},tweener:function(e,t){he.isFunction(e)?(t=e,e=["*"]):e=e.match(je);for(var n,r=0,i=e.length;r1)},removeAttr:function(e){return this.each(function(){he.removeAttr(this,e)})}}),he.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?he.prop(e,t,n):(1===o&&he.isXMLDoc(e)||(i=he.attrHooks[t.toLowerCase()]||(he.expr.match.bool.test(t)?yt:void 0)),void 0!==n?null===n?void he.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=he.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!de.radioValue&&"radio"===t&&i(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(je);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),yt={set:function(e,t,n){return!1===t?he.removeAttr(e,n):e.setAttribute(n,n),n}},he.each(he.expr.match.bool.source.match(/\w+/g),function(e,t){var n=mt[t]||he.find.attr;mt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=mt[a],mt[a]=i,i=null!=n(e,t,r)?a:null,mt[a]=o),i}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;he.fn.extend({prop:function(e,t){return Le(this,he.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[he.propFix[e]||e]})}}),he.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&he.isXMLDoc(e)||(t=he.propFix[t]||t,i=he.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=he.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),de.optSelected||(he.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),he.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){he.propFix[this.toLowerCase()]=this}),he.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(he.isFunction(e))return this.each(function(t){he(this).addClass(e.call(this,t,G(this)))});if("string"==typeof e&&e)for(t=e.match(je)||[];n=this[u++];)if(i=G(n),r=1===n.nodeType&&" "+V(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=V(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(he.isFunction(e))return this.each(function(t){he(this).removeClass(e.call(this,t,G(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(je)||[];n=this[u++];)if(i=G(n),r=1===n.nodeType&&" "+V(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=V(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):he.isFunction(e)?this.each(function(n){he(this).toggleClass(e.call(this,n,G(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=he(this),o=e.match(je)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=G(this))&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+V(G(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;he.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=he.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,he(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=he.map(i,function(e){return null==e?"":e+""})),(t=he.valHooks[this.type]||he.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=he.valHooks[i.type]||he.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),he.extend({valHooks:{option:{get:function(e){var t=he.find.attr(e,"value");return null!=t?t:V(he.text(e))}},select:{get:function(e){var t,n,r,o=e.options,a=e.selectedIndex,s="select-one"===e.type,u=s?null:[],l=s?a+1:o.length;for(r=a<0?l:s?a:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),he.each(["radio","checkbox"],function(){he.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=he.inArray(he(e).val(),t)>-1}},de.checkOn||(he.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;he.extend(he.event,{trigger:function(t,n,r,i){var o,a,s,u,l,c,f,p=[r||ne],d=ce.call(t,"type")?t.type:t,h=ce.call(t,"namespace")?t.namespace.split("."):[];if(a=s=r=r||ne,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(d+he.event.triggered)&&(d.indexOf(".")>-1&&(d=(h=d.split(".")).shift(),h.sort()),l=d.indexOf(":")<0&&"on"+d,t=t[he.expando]?t:new he.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:he.makeArray(n,[t]),f=he.event.special[d]||{},i||!f.trigger||!1!==f.trigger.apply(r,n))){if(!i&&!f.noBubble&&!he.isWindow(r)){for(u=f.delegateType||d,Tt.test(u+d)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||ne)&&p.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=p[o++])&&!t.isPropagationStopped();)t.type=o>1?u:f.bindType||d,(c=(Fe.get(a,"events")||{})[t.type]&&Fe.get(a,"handle"))&&c.apply(a,n),(c=l&&a[l])&&c.apply&&He(a)&&(t.result=c.apply(a,n),!1===t.result&&t.preventDefault());return t.type=d,i||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),n)||!He(r)||l&&he.isFunction(r[d])&&!he.isWindow(r)&&((s=r[l])&&(r[l]=null),he.event.triggered=d,r[d](),he.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=he.extend(new he.Event,n,{type:e,isSimulated:!0});he.event.trigger(r,null,t)}}),he.fn.extend({trigger:function(e,t){return this.each(function(){he.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return he.event.trigger(e,t,n,!0)}}),he.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(e,t){he.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),he.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),de.focusin="onfocusin"in e,de.focusin||he.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){he.event.simulate(t,e.target,he.event.fix(e))};he.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Fe.access(r,t);i||r.addEventListener(e,n,!0),Fe.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Fe.access(r,t)-1;i?Fe.access(r,t,i):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,Et=he.now(),kt=/\?/;he.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||he.error("Invalid XML: "+t),n};var St=/\[\]$/,Nt=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;he.param=function(e,t){var n,r=[],i=function(e,t){var n=he.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!he.isPlainObject(e))he.each(e,function(){i(this.name,this.value)});else for(n in e)Y(n,e[n],t,i);return r.join("&")},he.fn.extend({serialize:function(){return he.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=he.prop(this,"elements");return e?he.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!he(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!Xe.test(e))}).map(function(e,t){var n=he(this).val();return null==n?null:Array.isArray(n)?he.map(n,function(e){return{name:t.name,value:e.replace(Nt,"\r\n")}}):{name:t.name,value:n.replace(Nt,"\r\n")}}).get()}});var At=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=ne.createElement("a");Wt.href=Ct.href,he.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ft.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,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":he.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?K(K(e,he.ajaxSettings),t):K(he.ajaxSettings,e)},ajaxPrefilter:Q(Rt),ajaxTransport:Q(Mt),ajax:function(t,n){function r(t,n,r,s){var l,p,d,b,w,T=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",C.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Z(h,C,r)),b=ee(h,b,C,l),l?(h.ifModified&&((w=C.getResponseHeader("Last-Modified"))&&(he.lastModified[o]=w),(w=C.getResponseHeader("etag"))&&(he.etag[o]=w)),204===t||"HEAD"===h.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,l=!(d=b.error))):(d=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(n||T)+"",l?y.resolveWith(g,[p,T,C]):y.rejectWith(g,[C,T,d]),C.statusCode(x),x=void 0,f&&v.trigger(l?"ajaxSuccess":"ajaxError",[C,h,l?p:d]),m.fireWith(g,[C,T]),f&&(v.trigger("ajaxComplete",[C,h]),--he.active||he.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=he.ajaxSetup({},n),g=h.context||h,v=h.context&&(g.nodeType||g.jquery)?he(g):he.event,y=he.Deferred(),m=he.Callbacks("once memory"),x=h.statusCode||{},b={},w={},T="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=Ht.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)C.always(e[C.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return i&&i.abort(t),r(0,t),this}};if(y.promise(C),h.url=((t||h.url||Ct.href)+"").replace(Pt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(je)||[""],null==h.crossDomain){l=ne.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Wt.protocol+"//"+Wt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=he.param(h.data,h.traditional)),J(Rt,h,n,C),c)return C;(f=he.event&&h.global)&&0==he.active++&&he.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Ot.test(h.type),o=h.url.replace(qt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(At,"+")):(d=h.url.slice(o.length),h.data&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Lt,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(he.lastModified[o]&&C.setRequestHeader("If-Modified-Since",he.lastModified[o]),he.etag[o]&&C.setRequestHeader("If-None-Match",he.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&C.setRequestHeader("Content-Type",h.contentType),C.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+It+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)C.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,C,h)||c))return C.abort();if(T="abort",m.add(h.complete),C.done(h.success),C.fail(h.error),i=J(Mt,h,n,C)){if(C.readyState=1,f&&v.trigger("ajaxSend",[C,h]),c)return C;h.async&&h.timeout>0&&(u=e.setTimeout(function(){C.abort("timeout")},h.timeout));try{c=!1,i.send(b,r)}catch(e){if(c)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return he.get(e,t,n,"json")},getScript:function(e,t){return he.get(e,void 0,t,"script")}}),he.each(["get","post"],function(e,t){he[t]=function(e,n,r,i){return he.isFunction(n)&&(i=i||r,r=n,n=void 0),he.ajax(he.extend({url:e,type:t,dataType:i,data:n,success:r},he.isPlainObject(e)&&e))}}),he._evalUrl=function(e){return he.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},he.fn.extend({wrapAll:function(e){var t;return this[0]&&(he.isFunction(e)&&(e=e.call(this[0])),t=he(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return he.isFunction(e)?this.each(function(t){he(this).wrapInner(e.call(this,t))}):this.each(function(){var t=he(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=he.isFunction(e);return this.each(function(n){he(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){he(this).replaceWith(this.childNodes)}),this}}),he.expr.pseudos.hidden=function(e){return!he.expr.pseudos.visible(e)},he.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},he.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var $t={0:200,1223:204},Bt=he.ajaxSettings.xhr();de.cors=!!Bt&&"withCredentials"in Bt,de.ajax=Bt=!!Bt,he.ajaxTransport(function(t){var n,r;if(de.cors||Bt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o($t[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),he.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),he.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return he.globalEval(e),e}}}),he.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),he.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=he(" diff --git a/public/js/app.js b/public/js/app.js index a887f998..a40289cc 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select *, ((SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id)+(SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id)) as valor from pedidos as p",e)},findMaterialByPedidoId:function(e,a){var t="SELECT * FROM materiais WHERE id_pedido ="+e;this._execute(t,a)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,a){mysqlQuery(e,function(e){var t=JSON.parse(e);a(t)})}},Validator=function(e,a){var t={required:function(a){return e.val().length>0},max:function(a){return e.val().length<=a},min:function(a){return e.val().length>=a}},i=[];this.validate=function(e){for(var a in i){var n=i[a];if(!t[n.name]||!t[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=a.split("|");for(var t in e){var n=e[t].split(":");i[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(e,a){var t=$(e),i=[],n=function(){for(var e in a)o(e,a[e])},o=function(e,a){$elField=t.find('input[name="'+e+'"]'),i[e]={el:$elField},a.rules&&(i[e].validator=new Validator($elField,a.rules)),d(i[e]),a.isDate&&s(i[e]),a.mask&&r(i[e],a.mask,a.onCompleteMask)},r=function(e,a,t){var i={onComplete:t||function(){}};e.el.mask(a,i)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})},d=function(e){e.el.on("keyup",function(){e.validator&&l(i[$(this).attr("name")])})},l=function(e){e.validator.validate(function(a,t){var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),t?i.removeClass("has-error").addClass("has-success"):(console.log('.validator-errors span[data-error="'+a.name+'"]'),i.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),i.addClass("has-error"))})};this.setValue=function(e){for(var a in e)i[a]&&i[a].el.attr("value",e[a])},this.setEnabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.attr("disabled","disabled")},this.init=function(){n()},this.init()},Paginator=function(e,a,t){var i=this,n=$(e),o=$(a),r=function(){n.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.setSelectedPage=function(e){i=this,o.find(".page").removeClass("show-page").addClass("hide-page"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page"),t(e,function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")})}},CEP={getInfo:function(e,a){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)a(e);else{var t={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};a(t)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,a,t,i){this.label=a,this.el=e,this.labels=t,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},Core={paginatorMenu:null,validator:null,formPedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator("#menu ul a",".paginator",function(e,a){"graph1"==e&&a()}),this.paginatorMenu.init(),this.formPedido=new FormWizard(".form-wizard.form-pedido",{data_de_compra:{isDate:!0},cep:{mask:"00000-000",onCompleteMask:function(a){e.searchCep(a)}},nome:{rules:"required|min:3|max:10"},rua:{rules:"required|min:3"}}),this.createGraphOne(),this.createGraphTwo(),this.createTable()},createTable:function(){$("#table-pedidos").DataTable()},searchCep:function(e){var a=this,t=["rua","numero","complemento","cidade","estado"];this.formPedido.setDisabled(t),CEP.getInfo(e,function(e){a.formPedido.setValue(e),a.formPedido.setEnabled(t)})},createGraphOne:function(){$this=this,Database.fetchPedidosPorDia(function(e){e=$this.prepareResultPorDia(e),ChartPedidos.init("chartOne","# pedidos por dia",e.labels,e.data)})},createGraphTwo:function(){$this=this,Database.fetchPedidosPorSolicitantes(function(e){e=$this.prepareResultPorSolicitante(e),ChartPedidos.init("chartTwo","# pedidos por solicitante",e.labels,e.data)})},prepareResultPorSolicitante:function(e){var a={labels:[],data:[]};for(var t in e)a.labels.push(e[t].nome),a.data.push(e[t].total);return a},prepareResultPorDia:function(e){var a={data:[],labels:[]};for(var t in e)a.labels.push(this.prepareNumber(e[t].day)),a.data.push(e[t].total);return a},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findMaterialByPedidoId:function(e,a){var t="SELECT * FROM materiais WHERE id_pedido ="+e;this._execute(t,a)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,a){mysqlQuery(e,function(e){var t=JSON.parse(e);a(t)})}},Validator=function(e,a){var t={required:function(a){return e.val().length>0},max:function(a){return e.val().length<=a},min:function(a){return e.val().length>=a}},i=[];this.validate=function(e){for(var a in i){var o=i[a];if(!t[o.name]||!t[o.name](o.opt))return void e(o,!1)}e({},!0)},function(){var e=a.split("|");for(var t in e){var o=e[t].split(":");i[o[0]]={name:o[0],opt:o[1]}}}()},FormWizard=function(e,a){var t=$(e),i=[],o=function(){for(var e in a)n(e,a[e])},n=function(e,a){$elField=t.find('input[name="'+e+'"]'),i[e]={el:$elField},a.rules&&(i[e].validator=new Validator($elField,a.rules)),d(i[e]),a.isDate&&r(i[e]),a.mask&&s(i[e],a.mask,a.onCompleteMask)},s=function(e,a,t){var i={onComplete:t||function(){}};e.el.mask(a,i)},r=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})},d=function(e){e.el.on("keyup",function(){e.validator&&l(i[$(this).attr("name")])})},l=function(e){e.validator.validate(function(a,t){var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),t?i.removeClass("has-error").addClass("has-success"):(console.log('.validator-errors span[data-error="'+a.name+'"]'),i.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),i.addClass("has-error"))})};this.setValue=function(e){for(var a in e)i[a]&&i[a].el.attr("value",e[a])},this.setEnabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.attr("disabled","disabled")},this.init=function(){o()},this.init()},Paginator=function(e,a,t){var i=this,o=$(e),n=$(a),s={},r=function(){o.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,a,t){$.ajax({url:"views/"+e+".html"}).done(function(e){a.find(".content").html(e),t()})},this.setSelectedPage=function(e){i=this,n.find(".page").removeClass("show-page").addClass("hide-page"),this.selectedPage=n.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var a=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?t(e,a):this.loadHtml(e,this.selectedPage,function(){t(e,a)})}},CEP={getInfo:function(e,a){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)a(e);else{var t={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};a(t)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,a,t,i){this.label=a,this.el=e,this.labels=t,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},Core={paginatorMenu:null,validator:null,formPedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(a,t){e.pages[a](e,t)}),this.paginatorMenu.init(),this.formPedido=new FormWizard(".form-wizard.form-pedido",{data_de_compra:{isDate:!0},cep:{mask:"00000-000",onCompleteMask:function(a){e.searchCep(a)}},nome:{rules:"required|min:3|max:10"},rua:{rules:"required|min:3"}}),String.prototype.replaceAll=function(e,a){return this.replace(new RegExp(e,"g"),a)},this.paginatorMenu.setSelectedPage("dashboard1")},searchCep:function(e){var a=this,t=["rua","numero","complemento","cidade","estado"];this.formPedido.setDisabled(t),CEP.getInfo(e,function(e){a.formPedido.setValue(e),a.formPedido.setEnabled(t)})},pages:{dashboard1:function(e,a){Database.fetchPedidosPorDia(function(t){t=e.prepareResultPorDia(t),ChartPedidos.init("chartOne","# pedidos por dia",t.labels,t.data),a()})},dashboard2:function(e,a){Database.fetchPedidosPorSolicitantes(function(t){t=e.prepareResultPorSolicitante(t),ChartPedidos.init("chartTwo","# pedidos por solicitante",t.labels,t.data),a()})},dashboard3:function(e,a){Database.fetchAllPedidos(function(e){var t=[];for(var i in e){var o=Number(e[i].total_materiais)+Number(e[i].total_insumos);t.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+o.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:t}),a()})},process:function(e,a){}},prepareResultPorSolicitante:function(e){var a={labels:[],data:[]};for(var t in e)a.labels.push(e[t].nome),a.data.push(e[t].total);return a},prepareResultPorDia:function(e){var a={data:[],labels:[]};for(var t in e)a.labels.push(this.prepareNumber(e[t].day)),a.data.push(e[t].total);return a},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/views/dashboard1.html b/public/views/dashboard1.html new file mode 100644 index 00000000..17b62364 --- /dev/null +++ b/public/views/dashboard1.html @@ -0,0 +1,7 @@ +
+
+ +
+ +
+
\ No newline at end of file diff --git a/public/views/dashboard2.html b/public/views/dashboard2.html new file mode 100644 index 00000000..5c4620f4 --- /dev/null +++ b/public/views/dashboard2.html @@ -0,0 +1,35 @@ +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + +
+ O campo nome é obrigatório +
+
+ + +
+
+ +
+ +
+
\ No newline at end of file diff --git a/public/views/dashboard3.html b/public/views/dashboard3.html new file mode 100644 index 00000000..efbd10d7 --- /dev/null +++ b/public/views/dashboard3.html @@ -0,0 +1,3 @@ + + +
\ No newline at end of file diff --git a/public/views/process.html b/public/views/process.html new file mode 100644 index 00000000..e69de29b diff --git a/src/js/core.js b/src/js/core.js index dd1425b7..09a444f5 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -7,10 +7,8 @@ var Core = { init: function() { var $this = this; - this.paginatorMenu = new Paginator('#menu ul a', '.paginator', function(page, showContentFn) { - if (page == 'graph1') { - showContentFn(); - } + this.paginatorMenu = new Paginator('.page-change', '.paginator', function(page, showContentFn) { + $this.pages[page]($this, showContentFn); }); this.paginatorMenu.init(); @@ -36,13 +34,11 @@ var Core = { } }); - this.createGraphOne(); - this.createGraphTwo(); - this.createTable(); - }, + String.prototype.replaceAll = function(search, replacement) { + return this.replace(new RegExp(search, 'g'), replacement); + } - createTable: function() { - $('#table-pedidos').DataTable(); + this.paginatorMenu.setSelectedPage('dashboard1'); }, searchCep: function(cep) { @@ -57,24 +53,59 @@ var Core = { }); }, - createGraphOne: function() { - $this = this; + pages: { + dashboard1: function($this, showContentFn) { + Database.fetchPedidosPorDia(function(result) { + result = $this.prepareResultPorDia(result); - Database.fetchPedidosPorDia(function(result) { - result = $this.prepareResultPorDia(result); + ChartPedidos.init('chartOne', '# pedidos por dia', result.labels, result.data); + showContentFn(); + }); + }, - ChartPedidos.init('chartOne', '# pedidos por dia', result.labels, result.data); - }); - }, + dashboard2: function($this, showContentFn) { + Database.fetchPedidosPorSolicitantes(function(result) { + result = $this.prepareResultPorSolicitante(result); - createGraphTwo: function() { - $this = this; + ChartPedidos.init('chartTwo', '# pedidos por solicitante', result.labels, result.data); + showContentFn(); + }); + }, + + dashboard3: function($this, showContentFn) { + Database.fetchAllPedidos(function(result) { + var data = []; + + for (var i in result) { + var total = Number(result[i].total_materiais) + Number(result[i].total_insumos); + data.push([ + result[i].numero, + result[i].nome, + result[i].data_de_compra.replaceAll('-', '/'), + 'R$ ' + result[i].total_materiais.toFixed(2), + 'R$ ' + result[i].total_insumos.toFixed(2), + 'R$ ' + total.toFixed(2) + ]); + } - Database.fetchPedidosPorSolicitantes(function(result) { - result = $this.prepareResultPorSolicitante(result); + $('#table-pedidos').DataTable({ + columns: [ + { title: 'Numero' }, + { title: 'Solicitante' }, + { title: 'Data de compra' }, + { title: 'Total em Materiais' }, + { title: 'Total em Insumos' }, + { title: 'Total da compra' } + ], + data: data + }); + showContentFn(); + }); + }, + + process: function($this, showContentFn) { - ChartPedidos.init('chartTwo', '# pedidos por solicitante', result.labels, result.data); - }); + } }, prepareResultPorSolicitante: function(result) { diff --git a/src/js/database.js b/src/js/database.js index b01075af..7eec24a7 100644 --- a/src/js/database.js +++ b/src/js/database.js @@ -1,7 +1,7 @@ var Database = { fetchAllPedidos: function(callback) { - var query = "select *, ((SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id)+(SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id)) as valor from pedidos as p"; + var query = "select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante"; this._execute(query, callback); }, diff --git a/src/js/paginator.js b/src/js/paginator.js index b20f9f29..ba3c6383 100644 --- a/src/js/paginator.js +++ b/src/js/paginator.js @@ -3,7 +3,8 @@ var Paginator = function(links, el, onPageChange) { var $this = this, $links = $(links), $el = $(el), - selectedPage = null; + selectedPage = null, + pagesLoaded = {}; var _createEvents = function() { $links.click(function() { @@ -17,8 +18,18 @@ var Paginator = function(links, el, onPageChange) { _createEvents(); }; + this.loadHtml = function(page, el, callback) { + $.ajax({ + url: "views/"+page+".html" + }).done(function(result) { + el.find('.content').html(result); + callback(); + }); + } + this.setSelectedPage = function(page) { $this = this; + $el.find('.page').removeClass('show-page').addClass('hide-page'); this.selectedPage = $el.find('div[data-page='+page+']'); this.selectedPage.addClass('show-page').removeClass('hide-page'); @@ -27,8 +38,14 @@ var Paginator = function(links, el, onPageChange) { $this.selectedPage.find('.loading').addClass('hide'); $this.selectedPage.find('.content').addClass('show'); } - - onPageChange(page, showContentFn); + + if (!pagesLoaded.page) { + this.loadHtml(page, this.selectedPage, function() { + onPageChange(page, showContentFn); + }); + } else { + onPageChange(page, showContentFn); + } } } \ No newline at end of file diff --git a/src/scss/_footer.scss b/src/scss/_footer.scss new file mode 100644 index 00000000..5b379433 --- /dev/null +++ b/src/scss/_footer.scss @@ -0,0 +1,28 @@ +.footer { + + $background-color-footer: #555; + $text-color-footer: #fff; + $color-border-top-footer: #ddd; + $copy-color: #ddd; + + background-color: $background-color-footer; + color: $text-color-footer; + float:left; + width:100%; + padding:5px; + border-top:1px solid $color-border-top-footer; + + .left { + float:left; + padding-left:10px; + + span.copy { + color: $copy-color; + } + } + + .right { + float:right; + } + +} \ No newline at end of file diff --git a/src/scss/_navbar.scss b/src/scss/_navbar.scss new file mode 100644 index 00000000..4ba18a62 --- /dev/null +++ b/src/scss/_navbar.scss @@ -0,0 +1,54 @@ +.navbar{ + + $background-navbar: #333; + $color-navbar: #fff; + + $background-sub-navbar: #fff; + $color-border-bottom-sub-navbar: #ddd; + $color-sub-navbar: #aaa; + + &.navbar-dark { + background-color:$background-navbar; + + a { + color: $color-navbar; + text-transform: uppercase; + + &:hover { + background-color: transparent; + } + } + } + + .init-process { + margin-left:20px; + } + + &.navbar-fixed-top { + border-width:0; + } + + .sub-navbar { + float:left; + width:100%; + background: $background-sub-navbar; + border-bottom:1px solid $color-border-bottom-sub-navbar; + + a { + color: $color-sub-navbar; + } + + ul.list { + margin-bottom:0px; + float:left; + width:100%; + list-style:none; + + li { + float:left; + padding: 17px 23px 15px; + } + } + } + +} \ No newline at end of file diff --git a/src/scss/app.scss b/src/scss/app.scss index 105a3278..067c5fd2 100644 --- a/src/scss/app.scss +++ b/src/scss/app.scss @@ -3,5 +3,14 @@ padding:0; } +$color-background: #f8f8f8; + +@import '_navbar.scss'; @import '_paginator.scss'; -@import '_validator.scss'; \ No newline at end of file +@import '_validator.scss'; +@import '_footer.scss'; + +body { + padding-top: 100px; + background-color:$color-background; +} \ No newline at end of file From bfb91f980acac645d2130acd693922ebcf5b6c90 Mon Sep 17 00:00:00 2001 From: Agner Date: Wed, 7 Jun 2017 22:03:41 -0300 Subject: [PATCH 10/23] add form pedido --- public/index.html | 8 ++- public/js/app.js | 2 +- public/loading.svg | 1 + public/views/process.html | 131 ++++++++++++++++++++++++++++++++++++++ src/js/core.js | 70 ++++++++++++-------- src/js/form-wizard.js | 17 +++-- 6 files changed, 198 insertions(+), 31 deletions(-) create mode 100644 public/loading.svg diff --git a/public/index.html b/public/index.html index ad865abd..ebbb509b 100644 --- a/public/index.html +++ b/public/index.html @@ -95,7 +95,13 @@

Tabela

- process +
+ Loading... +
+ +
+ +
diff --git a/public/js/app.js b/public/js/app.js index a40289cc..17978ebf 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findMaterialByPedidoId:function(e,a){var t="SELECT * FROM materiais WHERE id_pedido ="+e;this._execute(t,a)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,a){mysqlQuery(e,function(e){var t=JSON.parse(e);a(t)})}},Validator=function(e,a){var t={required:function(a){return e.val().length>0},max:function(a){return e.val().length<=a},min:function(a){return e.val().length>=a}},i=[];this.validate=function(e){for(var a in i){var o=i[a];if(!t[o.name]||!t[o.name](o.opt))return void e(o,!1)}e({},!0)},function(){var e=a.split("|");for(var t in e){var o=e[t].split(":");i[o[0]]={name:o[0],opt:o[1]}}}()},FormWizard=function(e,a){var t=$(e),i=[],o=function(){for(var e in a)n(e,a[e])},n=function(e,a){$elField=t.find('input[name="'+e+'"]'),i[e]={el:$elField},a.rules&&(i[e].validator=new Validator($elField,a.rules)),d(i[e]),a.isDate&&r(i[e]),a.mask&&s(i[e],a.mask,a.onCompleteMask)},s=function(e,a,t){var i={onComplete:t||function(){}};e.el.mask(a,i)},r=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})},d=function(e){e.el.on("keyup",function(){e.validator&&l(i[$(this).attr("name")])})},l=function(e){e.validator.validate(function(a,t){var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),t?i.removeClass("has-error").addClass("has-success"):(console.log('.validator-errors span[data-error="'+a.name+'"]'),i.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),i.addClass("has-error"))})};this.setValue=function(e){for(var a in e)i[a]&&i[a].el.attr("value",e[a])},this.setEnabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.attr("disabled","disabled")},this.init=function(){o()},this.init()},Paginator=function(e,a,t){var i=this,o=$(e),n=$(a),s={},r=function(){o.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,a,t){$.ajax({url:"views/"+e+".html"}).done(function(e){a.find(".content").html(e),t()})},this.setSelectedPage=function(e){i=this,n.find(".page").removeClass("show-page").addClass("hide-page"),this.selectedPage=n.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var a=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?t(e,a):this.loadHtml(e,this.selectedPage,function(){t(e,a)})}},CEP={getInfo:function(e,a){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)a(e);else{var t={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};a(t)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,a,t,i){this.label=a,this.el=e,this.labels=t,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},Core={paginatorMenu:null,validator:null,formPedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(a,t){e.pages[a](e,t)}),this.paginatorMenu.init(),this.formPedido=new FormWizard(".form-wizard.form-pedido",{data_de_compra:{isDate:!0},cep:{mask:"00000-000",onCompleteMask:function(a){e.searchCep(a)}},nome:{rules:"required|min:3|max:10"},rua:{rules:"required|min:3"}}),String.prototype.replaceAll=function(e,a){return this.replace(new RegExp(e,"g"),a)},this.paginatorMenu.setSelectedPage("dashboard1")},searchCep:function(e){var a=this,t=["rua","numero","complemento","cidade","estado"];this.formPedido.setDisabled(t),CEP.getInfo(e,function(e){a.formPedido.setValue(e),a.formPedido.setEnabled(t)})},pages:{dashboard1:function(e,a){Database.fetchPedidosPorDia(function(t){t=e.prepareResultPorDia(t),ChartPedidos.init("chartOne","# pedidos por dia",t.labels,t.data),a()})},dashboard2:function(e,a){Database.fetchPedidosPorSolicitantes(function(t){t=e.prepareResultPorSolicitante(t),ChartPedidos.init("chartTwo","# pedidos por solicitante",t.labels,t.data),a()})},dashboard3:function(e,a){Database.fetchAllPedidos(function(e){var t=[];for(var i in e){var o=Number(e[i].total_materiais)+Number(e[i].total_insumos);t.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+o.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:t}),a()})},process:function(e,a){}},prepareResultPorSolicitante:function(e){var a={labels:[],data:[]};for(var t in e)a.labels.push(e[t].nome),a.data.push(e[t].total);return a},prepareResultPorDia:function(e){var a={data:[],labels:[]};for(var t in e)a.labels.push(this.prepareNumber(e[t].day)),a.data.push(e[t].total);return a},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findMaterialByPedidoId:function(e,t){var a="SELECT * FROM materiais WHERE id_pedido ="+e;this._execute(a,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var a=JSON.parse(e);t(a)})}},Validator=function(e,t){var a={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},i=[];this.validate=function(e){for(var t in i){var o=i[t];if(!a[o.name]||!a[o.name](o.opt))return void e(o,!1)}e({},!0)},function(){var e=t.split("|");for(var a in e){var o=e[a].split(":");i[o[0]]={name:o[0],opt:o[1]}}}()},FormWizard=function(e,t){var a=$(e),i=[],o=function(){for(var e in t)n(e,t[e])},n=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),i[e]={el:$elField,properties:t},t.rules&&(i[e].validator=new Validator($elField,t.rules)),l(i[e]),t.isDate&&s(i[e]),t.mask&&r(i[e],t.mask,t.onCompleteMask)},r=function(e,t,a){var i={onComplete:a||function(){}};e.el.mask(t,i)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})},l=function(e){e.el.on("keyup",function(){e.validator&&d(i[$(this).attr("name")])})},d=function(e){e.validator.validate(function(t,a){var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),a?i.removeClass("has-error").addClass("has-success"):(i.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),i.addClass("has-error"))})};this.setValue=function(e){for(var t in e)i[t]&&(i[t].properties.select?i[t].el.val(e[t]):i[t].el.attr("value",e[t]))},this.setEnabled=function(e){for(var t in e)i[e[t]]&&i[e[t]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)i[e[t]]&&i[e[t]].el.attr("disabled","disabled")},this.init=function(){o()},this.init()},Paginator=function(e,t,a){var i=this,o=$(e),n=$(t),r={},s=function(){o.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){s()},this.loadHtml=function(e,t,a){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),a()})},this.setSelectedPage=function(e){i=this,n.find(".page").removeClass("show-page").addClass("hide-page"),this.selectedPage=n.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};r.page?a(e,t):this.loadHtml(e,this.selectedPage,function(){a(e,t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,a,i){this.label=t,this.el=e,this.labels=a,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},Core={paginatorMenu:null,validator:null,formPedido:null,formSolicitante:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1")},searchCep:function(e){var t=this,a=["rua","numero","complemento","cidade","uf"];this.formSolicitante.setDisabled(a),CEP.getInfo(e,function(e){t.formSolicitante.setValue(e),t.formSolicitante.setEnabled(a)})},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var a=[];for(var i in e){var o=Number(e[i].total_materiais)+Number(e[i].total_insumos);a.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+o.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),t()})},process:function(e,t){e.formPedido=new FormWizard(".form-wizard.form-pedido",{data_de_compra:{isDate:!0}}),e.formSolicitante=new FormWizard(".form-wizard.form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00"},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)}},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}}),t()}},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var a in e)t.labels.push(e[a].nome),t.data.push(e[a].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var a in e)t.labels.push(this.prepareNumber(e[a].day)),t.data.push(e[a].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/loading.svg b/public/loading.svg new file mode 100644 index 00000000..14a23105 --- /dev/null +++ b/public/loading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/views/process.html b/public/views/process.html index e69de29b..f069a140 100644 --- a/public/views/process.html +++ b/public/views/process.html @@ -0,0 +1,131 @@ +
+ +
+
+
+
+
+ + +
+ +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+ +
+
+
+
+ +
+
+ + + +
+ O campo nome é obrigatório +
+
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+ +
+ +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+ +
+
\ No newline at end of file diff --git a/src/js/core.js b/src/js/core.js index 09a444f5..c44fcd9d 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -3,6 +3,7 @@ var Core = { paginatorMenu: null, validator: null, formPedido: null, + formSolicitante: null, init: function() { var $this = this; @@ -13,27 +14,6 @@ var Core = { this.paginatorMenu.init(); - /** - * Form pedido - */ - this.formPedido = new FormWizard('.form-wizard.form-pedido', { - data_de_compra: { - isDate: true - }, - cep: { - mask: '00000-000', - onCompleteMask: function(cep) { - $this.searchCep(cep); - } - }, - nome: { - rules: 'required|min:3|max:10' - }, - rua: { - rules: 'required|min:3' - } - }); - String.prototype.replaceAll = function(search, replacement) { return this.replace(new RegExp(search, 'g'), replacement); } @@ -44,12 +24,12 @@ var Core = { searchCep: function(cep) { var $this = this; - var fieldsAddress = ['rua', 'numero', 'complemento', 'cidade', 'estado']; + var fieldsAddress = ['rua', 'numero', 'complemento', 'cidade', 'uf']; - this.formPedido.setDisabled(fieldsAddress); + this.formSolicitante.setDisabled(fieldsAddress); CEP.getInfo(cep, function(address) { - $this.formPedido.setValue(address); - $this.formPedido.setEnabled(fieldsAddress); + $this.formSolicitante.setValue(address); + $this.formSolicitante.setEnabled(fieldsAddress); }); }, @@ -104,7 +84,47 @@ var Core = { }, process: function($this, showContentFn) { + $this.formPedido = new FormWizard('.form-wizard.form-pedido', { + data_de_compra: { + isDate: true + } + }); + + $this.formSolicitante = new FormWizard('.form-wizard.form-solicitante', { + nome: { + rules: 'required|min:3|max:10' + }, + telefone: { + mask: '(00) 00000-0000', + }, + cpf: { + mask: '000.000.000-00', + }, + cep: { + mask: '00000-000', + onCompleteMask: function(cep) { + $this.searchCep(cep); + } + }, + rua: { + rules: 'required|min:3' + }, + numero: { + rules: 'required' + }, + complemento: { + rules: 'required' + }, + uf: { + rules: 'required', + select: true + }, + cidade: { + rules: 'required|min:3' + } + }); + showContentFn(); } }, diff --git a/src/js/form-wizard.js b/src/js/form-wizard.js index 168145c5..b6e44321 100644 --- a/src/js/form-wizard.js +++ b/src/js/form-wizard.js @@ -16,9 +16,15 @@ var FormWizard = function(el, fields) { }; var _initializeField = function(field, properties) { - $elField = $el.find('input[name="'+field+'"]'); + if (properties.select) { + $elField = $el.find('select[name="'+field+'"]'); + } else { + $elField = $el.find('input[name="'+field+'"]'); + } + $fields[field] = { - el: $elField + el: $elField, + properties: properties } if (properties.rules) { @@ -65,7 +71,6 @@ var FormWizard = function(el, fields) { formGroup.find('.validator-errors span').removeClass('show'); if (!status) { - console.log('.validator-errors span[data-error="'+rule.name+'"]'); formGroup.find('.validator-errors span[data-error="'+rule.name+'"]').addClass('show'); formGroup.addClass('has-error'); } else { @@ -77,7 +82,11 @@ var FormWizard = function(el, fields) { this.setValue = function(fields) { for (var i in fields) { if ($fields[i]) { - $fields[i].el.attr('value', fields[i]); + if ($fields[i].properties.select) { + $fields[i].el.val(fields[i]); + } else { + $fields[i].el.attr('value', fields[i]); + } } } } From b76b83368183495509bbb2d31ea561cc9324499a Mon Sep 17 00:00:00 2001 From: "agner.e.ballejo" Date: Thu, 8 Jun 2017 09:26:27 -0300 Subject: [PATCH 11/23] add assets and some css --- public/assets/fonts/HelveticaNeue-Bold.eot | Bin 0 -> 71049 bytes public/assets/fonts/HelveticaNeue-Bold.ttf | Bin 0 -> 112344 bytes public/assets/fonts/HelveticaNeue-Bold.woff | Bin 0 -> 71049 bytes public/assets/images/logo.png | Bin 0 -> 2464 bytes public/css/app.css | 2 +- public/index.html | 74 +++++++++---------- public/js/app.js | 2 +- src/js/paginator.js | 2 + src/js/pedido.js | 12 +++ src/scss/_navbar.scss | 78 ++++++++++++++++---- src/scss/app.scss | 12 ++- 11 files changed, 126 insertions(+), 56 deletions(-) create mode 100644 public/assets/fonts/HelveticaNeue-Bold.eot create mode 100644 public/assets/fonts/HelveticaNeue-Bold.ttf create mode 100644 public/assets/fonts/HelveticaNeue-Bold.woff create mode 100644 public/assets/images/logo.png create mode 100644 src/js/pedido.js diff --git a/public/assets/fonts/HelveticaNeue-Bold.eot b/public/assets/fonts/HelveticaNeue-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..3e5cd14482e65241c353388706fbc9b05b041713 GIT binary patch literal 71049 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 KSd`7xzzhIUR08S% literal 0 HcmV?d00001 diff --git a/public/assets/fonts/HelveticaNeue-Bold.ttf b/public/assets/fonts/HelveticaNeue-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..193b51e0c1df6f660ae6dee3ae5b7efad21b01ef GIT binary patch literal 112344 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�oE&gJ0*7hwKr{}VLRKXHKcbGM|9PQSs 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 e?0ln>nEwO)>f<=71=}P50000 +
diff --git a/public/js/app.js b/public/js/app.js index a40289cc..a06a747b 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findMaterialByPedidoId:function(e,a){var t="SELECT * FROM materiais WHERE id_pedido ="+e;this._execute(t,a)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,a){mysqlQuery(e,function(e){var t=JSON.parse(e);a(t)})}},Validator=function(e,a){var t={required:function(a){return e.val().length>0},max:function(a){return e.val().length<=a},min:function(a){return e.val().length>=a}},i=[];this.validate=function(e){for(var a in i){var o=i[a];if(!t[o.name]||!t[o.name](o.opt))return void e(o,!1)}e({},!0)},function(){var e=a.split("|");for(var t in e){var o=e[t].split(":");i[o[0]]={name:o[0],opt:o[1]}}}()},FormWizard=function(e,a){var t=$(e),i=[],o=function(){for(var e in a)n(e,a[e])},n=function(e,a){$elField=t.find('input[name="'+e+'"]'),i[e]={el:$elField},a.rules&&(i[e].validator=new Validator($elField,a.rules)),d(i[e]),a.isDate&&r(i[e]),a.mask&&s(i[e],a.mask,a.onCompleteMask)},s=function(e,a,t){var i={onComplete:t||function(){}};e.el.mask(a,i)},r=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})},d=function(e){e.el.on("keyup",function(){e.validator&&l(i[$(this).attr("name")])})},l=function(e){e.validator.validate(function(a,t){var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),t?i.removeClass("has-error").addClass("has-success"):(console.log('.validator-errors span[data-error="'+a.name+'"]'),i.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),i.addClass("has-error"))})};this.setValue=function(e){for(var a in e)i[a]&&i[a].el.attr("value",e[a])},this.setEnabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.attr("disabled","disabled")},this.init=function(){o()},this.init()},Paginator=function(e,a,t){var i=this,o=$(e),n=$(a),s={},r=function(){o.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,a,t){$.ajax({url:"views/"+e+".html"}).done(function(e){a.find(".content").html(e),t()})},this.setSelectedPage=function(e){i=this,n.find(".page").removeClass("show-page").addClass("hide-page"),this.selectedPage=n.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var a=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?t(e,a):this.loadHtml(e,this.selectedPage,function(){t(e,a)})}},CEP={getInfo:function(e,a){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)a(e);else{var t={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};a(t)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,a,t,i){this.label=a,this.el=e,this.labels=t,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},Core={paginatorMenu:null,validator:null,formPedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(a,t){e.pages[a](e,t)}),this.paginatorMenu.init(),this.formPedido=new FormWizard(".form-wizard.form-pedido",{data_de_compra:{isDate:!0},cep:{mask:"00000-000",onCompleteMask:function(a){e.searchCep(a)}},nome:{rules:"required|min:3|max:10"},rua:{rules:"required|min:3"}}),String.prototype.replaceAll=function(e,a){return this.replace(new RegExp(e,"g"),a)},this.paginatorMenu.setSelectedPage("dashboard1")},searchCep:function(e){var a=this,t=["rua","numero","complemento","cidade","estado"];this.formPedido.setDisabled(t),CEP.getInfo(e,function(e){a.formPedido.setValue(e),a.formPedido.setEnabled(t)})},pages:{dashboard1:function(e,a){Database.fetchPedidosPorDia(function(t){t=e.prepareResultPorDia(t),ChartPedidos.init("chartOne","# pedidos por dia",t.labels,t.data),a()})},dashboard2:function(e,a){Database.fetchPedidosPorSolicitantes(function(t){t=e.prepareResultPorSolicitante(t),ChartPedidos.init("chartTwo","# pedidos por solicitante",t.labels,t.data),a()})},dashboard3:function(e,a){Database.fetchAllPedidos(function(e){var t=[];for(var i in e){var o=Number(e[i].total_materiais)+Number(e[i].total_insumos);t.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+o.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:t}),a()})},process:function(e,a){}},prepareResultPorSolicitante:function(e){var a={labels:[],data:[]};for(var t in e)a.labels.push(e[t].nome),a.data.push(e[t].total);return a},prepareResultPorDia:function(e){var a={data:[],labels:[]};for(var t in e)a.labels.push(this.prepareNumber(e[t].day)),a.data.push(e[t].total);return a},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findMaterialByPedidoId:function(e,a){var t="SELECT * FROM materiais WHERE id_pedido ="+e;this._execute(t,a)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,a){mysqlQuery(e,function(e){var t=JSON.parse(e);a(t)})}},Validator=function(e,a){var t={required:function(a){return e.val().length>0},max:function(a){return e.val().length<=a},min:function(a){return e.val().length>=a}},i=[];this.validate=function(e){for(var a in i){var o=i[a];if(!t[o.name]||!t[o.name](o.opt))return void e(o,!1)}e({},!0)},function(){var e=a.split("|");for(var t in e){var o=e[t].split(":");i[o[0]]={name:o[0],opt:o[1]}}}()},FormWizard=function(e,a){var t=$(e),i=[],o=function(){for(var e in a)n(e,a[e])},n=function(e,a){$elField=t.find('input[name="'+e+'"]'),i[e]={el:$elField},a.rules&&(i[e].validator=new Validator($elField,a.rules)),d(i[e]),a.isDate&&r(i[e]),a.mask&&s(i[e],a.mask,a.onCompleteMask)},s=function(e,a,t){var i={onComplete:t||function(){}};e.el.mask(a,i)},r=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})},d=function(e){e.el.on("keyup",function(){e.validator&&l(i[$(this).attr("name")])})},l=function(e){e.validator.validate(function(a,t){var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),t?i.removeClass("has-error").addClass("has-success"):(console.log('.validator-errors span[data-error="'+a.name+'"]'),i.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),i.addClass("has-error"))})};this.setValue=function(e){for(var a in e)i[a]&&i[a].el.attr("value",e[a])},this.setEnabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var a in e)i[e[a]]&&i[e[a]].el.attr("disabled","disabled")},this.init=function(){o()},this.init()},Paginator=function(e,a,t){var i=this,o=$(e),n=$(a),s={},r=function(){o.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,a,t){$.ajax({url:"views/"+e+".html"}).done(function(e){a.find(".content").html(e),t()})},this.setSelectedPage=function(e){i=this,n.find(".page").removeClass("show-page").addClass("hide-page"),n.find(".page .loading").removeClass("hide"),n.find(".page .content").removeClass("show"),this.selectedPage=n.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var a=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?t(e,a):this.loadHtml(e,this.selectedPage,function(){t(e,a)})}},CEP={getInfo:function(e,a){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)a(e);else{var t={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};a(t)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,a,t,i){this.label=a,this.el=e,this.labels=t,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},Core={paginatorMenu:null,validator:null,formPedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(a,t){e.pages[a](e,t)}),this.paginatorMenu.init(),this.formPedido=new FormWizard(".form-wizard.form-pedido",{data_de_compra:{isDate:!0},cep:{mask:"00000-000",onCompleteMask:function(a){e.searchCep(a)}},nome:{rules:"required|min:3|max:10"},rua:{rules:"required|min:3"}}),String.prototype.replaceAll=function(e,a){return this.replace(new RegExp(e,"g"),a)},this.paginatorMenu.setSelectedPage("dashboard1")},searchCep:function(e){var a=this,t=["rua","numero","complemento","cidade","estado"];this.formPedido.setDisabled(t),CEP.getInfo(e,function(e){a.formPedido.setValue(e),a.formPedido.setEnabled(t)})},pages:{dashboard1:function(e,a){Database.fetchPedidosPorDia(function(t){t=e.prepareResultPorDia(t),ChartPedidos.init("chartOne","# pedidos por dia",t.labels,t.data),a()})},dashboard2:function(e,a){Database.fetchPedidosPorSolicitantes(function(t){t=e.prepareResultPorSolicitante(t),ChartPedidos.init("chartTwo","# pedidos por solicitante",t.labels,t.data),a()})},dashboard3:function(e,a){Database.fetchAllPedidos(function(e){var t=[];for(var i in e){var o=Number(e[i].total_materiais)+Number(e[i].total_insumos);t.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+o.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:t}),a()})},process:function(e,a){}},prepareResultPorSolicitante:function(e){var a={labels:[],data:[]};for(var t in e)a.labels.push(e[t].nome),a.data.push(e[t].total);return a},prepareResultPorDia:function(e){var a={data:[],labels:[]};for(var t in e)a.labels.push(this.prepareNumber(e[t].day)),a.data.push(e[t].total);return a},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/src/js/paginator.js b/src/js/paginator.js index ba3c6383..47abbdc1 100644 --- a/src/js/paginator.js +++ b/src/js/paginator.js @@ -31,6 +31,8 @@ var Paginator = function(links, el, onPageChange) { $this = this; $el.find('.page').removeClass('show-page').addClass('hide-page'); + $el.find('.page .loading').removeClass('hide'); + $el.find('.page .content').removeClass('show'); this.selectedPage = $el.find('div[data-page='+page+']'); this.selectedPage.addClass('show-page').removeClass('hide-page'); diff --git a/src/js/pedido.js b/src/js/pedido.js new file mode 100644 index 00000000..42890847 --- /dev/null +++ b/src/js/pedido.js @@ -0,0 +1,12 @@ +var Pedido = function() { + + var data = {}; + var solicitante = {}; + var materiais = []; + var insumos = []; + + this.set = function(key, value) { + data[key] = value; + }; + +}; \ No newline at end of file diff --git a/src/scss/_navbar.scss b/src/scss/_navbar.scss index 4ba18a62..d6f9f8c7 100644 --- a/src/scss/_navbar.scss +++ b/src/scss/_navbar.scss @@ -1,27 +1,70 @@ .navbar{ - $background-navbar: #333; - $color-navbar: #fff; + $background-navbar: #102938; + $color-navbar: #feffff; $background-sub-navbar: #fff; $color-border-bottom-sub-navbar: #ddd; - $color-sub-navbar: #aaa; + $color-sub-navbar: #666666; &.navbar-dark { background-color:$background-navbar; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; - a { - color: $color-navbar; - text-transform: uppercase; - - &:hover { - background-color: transparent; + .navbar-header { + .navbar-brand { + padding-top:8px; + + img { + width:34px; + height: auto; + } + } + } + + ul.navbar-nav{ + li{ + a { + color: $color-navbar; + text-transform: uppercase; + font-family: $font-helvetica; + + &:hover, + &:active, + &:focus { + background-color: transparent; + color:$color-accent; + } + } + + &.focus { + background: transparent; + + a { + color: $color-accent; + } + } + + &:hover{ + background: transparent; + } + + &.init-process { + margin-left:20px; + background: $color-accent; + + &:hover { + background: $color-accent; + + a { + color:#fff; + } + } + } } } - } - .init-process { - margin-left:20px; } &.navbar-fixed-top { @@ -46,7 +89,16 @@ li { float:left; - padding: 17px 23px 15px; + + a { + float:left; + padding: 17px 23px 15px; + color: $color-sub-navbar; + + &:hover{ + text-decoration:none; + } + } } } } diff --git a/src/scss/app.scss b/src/scss/app.scss index 067c5fd2..dc431add 100644 --- a/src/scss/app.scss +++ b/src/scss/app.scss @@ -3,7 +3,17 @@ padding:0; } -$color-background: #f8f8f8; +$color-background: #f9f9f9; +$color-accent: #39bb9d; + +@font-face +{ + font-family: 'HelveticaNeueBold'; + src: url('../assets/fonts/HelveticaNeue-Bold.eot'); + src: local('Helvetica Neue Bold'), local('HelveticaNeue'), url('../assets/fonts/HelveticaNeue-Bold.woff') format('woff'), url('../assets/fonts/HelveticaNeue-Bold.ttf') format('truetype'); +} + +$font-helvetica: 'HelveticaNeueBold'; @import '_navbar.scss'; @import '_paginator.scss'; From e9f723ba1d5510311b420382b6fb3b1aebdffce2 Mon Sep 17 00:00:00 2001 From: "agner.e.ballejo" Date: Thu, 8 Jun 2017 11:33:54 -0300 Subject: [PATCH 12/23] remove console --- public/js/app.js | 2 +- src/js/forms/formPedido.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 65983fdf..f6835022 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var a="select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(a,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var a=JSON.parse(e);t(a)})}},Validator=function(e,t){var a={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},i=[];this.validate=function(e){for(var t in i){var n=i[t];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var a in e){var n=e[a].split(":");i[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(e,t,a){var i=$(e),n=[];this.initializeFields=function(){for(var e in t)this.initializeField(e,t[e]);this.btnSubmit=i.find(".btn-submit"),this.btnSubmit.click(function(){a()})},this.initializeField=function(e,t){t.select?$elField=i.find('select[name="'+e+'"]'):$elField=i.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&s(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,a){var i={onComplete:a||function(){}};e.el.mask(t,i)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})};this.createEvents=function(e){var t=this;e.el.on("keyup",function(a){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(a),t.allValidate()?t.enableBtnSubmit():t.disableBtnSubmit()})},this.validateField=function(e){e.validator.validate(function(t,a){e.status=a;var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),a?i.removeClass("has-error").addClass("has-success"):(i.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),i.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].el.attr("value",e[t]))},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,a){var i=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,a){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),a()})},this.setSelectedPage=function(e){i=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?a(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){a(e,i.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,a,i){this.label=t,this.el=e,this.labels=a,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t){var a=null,i=null;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e){$this.keyUpNumero(e)}},data_de_compra:{rules:"required",isDate:!0}},function(){e.paginatorForms.setSelectedPage("formSolicitante")})},this.keyUpNumero=function(e){clearTimeout(i),i=setTimeout(function(){a.setDisabled(["numero","data_de_compra"]),Database.findPedidoByNumero(a.get("numero"),function(e){a.setEnabled(["numero","data_de_compra"]),1==e.length&&(console.log(e[0]),a.setValue(e[0]))})},1e3)},this.init()},FormSolicitante=function(e,t){var a=null;this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00"},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)}},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),t()},this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,a,i){e.pages[t](e,i)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var a=[];for(var i in e){var n=Number(e[i].total_materiais)+Number(e[i].total_insumos);a.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),t()})},process:function(e,t){e.paginatorForms=new Paginator("--",".paginator.forms",function(t,a,i){e.changeTitleHeader(a),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,i)):"formSolicitante"==t&&(e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,i)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var a in e)t.labels.push(e[a].nome),t.data.push(e[a].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var a in e)t.labels.push(this.prepareNumber(e[a].day)),t.data.push(e[a].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var a="select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(a,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var a=JSON.parse(e);t(a)})}},Validator=function(e,t){var a={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},i=[];this.validate=function(e){for(var t in i){var n=i[t];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var a in e){var n=e[a].split(":");i[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(e,t,a){var i=$(e),n=[];this.initializeFields=function(){for(var e in t)this.initializeField(e,t[e]);this.btnSubmit=i.find(".btn-submit"),this.btnSubmit.click(function(){a()})},this.initializeField=function(e,t){t.select?$elField=i.find('select[name="'+e+'"]'):$elField=i.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&s(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,a){var i={onComplete:a||function(){}};e.el.mask(t,i)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})};this.createEvents=function(e){var t=this;e.el.on("keyup",function(a){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(a),t.allValidate()?t.enableBtnSubmit():t.disableBtnSubmit()})},this.validateField=function(e){e.validator.validate(function(t,a){e.status=a;var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),a?i.removeClass("has-error").addClass("has-success"):(i.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),i.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].el.attr("value",e[t]))},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,a){var i=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,a){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),a()})},this.setSelectedPage=function(e){i=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?a(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){a(e,i.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,a,i){this.label=t,this.el=e,this.labels=a,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t){var a=null,i=null;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e){$this.keyUpNumero(e)}},data_de_compra:{rules:"required",isDate:!0}},function(){e.paginatorForms.setSelectedPage("formSolicitante")})},this.keyUpNumero=function(e){clearTimeout(i),i=setTimeout(function(){a.setDisabled(["numero","data_de_compra"]),Database.findPedidoByNumero(a.get("numero"),function(e){a.setEnabled(["numero","data_de_compra"]),1==e.length&&a.setValue(e[0])})},1e3)},this.init()},FormSolicitante=function(e,t){var a=null;this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00"},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)}},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),t()},this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,a,i){e.pages[t](e,i)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var a=[];for(var i in e){var n=Number(e[i].total_materiais)+Number(e[i].total_insumos);a.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),t()})},process:function(e,t){e.paginatorForms=new Paginator("--",".paginator.forms",function(t,a,i){e.changeTitleHeader(a),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,i)):"formSolicitante"==t&&(e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,i)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var a in e)t.labels.push(e[a].nome),t.data.push(e[a].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var a in e)t.labels.push(this.prepareNumber(e[a].day)),t.data.push(e[a].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/src/js/forms/formPedido.js b/src/js/forms/formPedido.js index 0688a331..ac2908e3 100644 --- a/src/js/forms/formPedido.js +++ b/src/js/forms/formPedido.js @@ -32,7 +32,6 @@ var FormPedido = function(core, showContentFn) { Database.findPedidoByNumero(formPedido.get('numero'), function(result) { formPedido.setEnabled(['numero', 'data_de_compra']); if (result.length == 1) { - console.log(result[0]); formPedido.setValue(result[0]); } }); From 25191fe62440eecff7d368a811cc8fd4bbe2a577 Mon Sep 17 00:00:00 2001 From: "agner.e.ballejo" Date: Thu, 8 Jun 2017 14:10:37 -0300 Subject: [PATCH 13/23] adjust layout form pedido --- public/css/app.css | 2 +- public/js/app.js | 2 +- public/views/formPedido.html | 19 +++++++++++++++++-- src/js/core.js | 8 ++------ src/js/form-wizard.js | 28 +++++++++++++++++++++------- src/js/forms/formPedido.js | 13 +++++++++---- src/scss/_form-pedido.scss | 17 +++++++++++++++++ src/scss/_sublist.scss | 10 ++++++++++ src/scss/app.scss | 2 ++ 9 files changed, 80 insertions(+), 21 deletions(-) create mode 100644 src/scss/_form-pedido.scss create mode 100644 src/scss/_sublist.scss diff --git a/public/css/app.css b/public/css/app.css index e504be49..3b63e456 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -1 +1 @@ -*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../assets/fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../assets/fonts/HelveticaNeue-Bold.woff") format("woff"),url("../assets/fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:8px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold"}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:20px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar h2{font-size:14px;float:left;width:100%;margin:0;padding:17px 23px 15px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:17px 23px 15px;color:#666}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.footer{background-color:#555;color:#fff;float:left;width:100%;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#ddd}.footer .right{float:right}body{padding-top:110px;background-color:#f9f9f9} +*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../assets/fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../assets/fonts/HelveticaNeue-Bold.woff") format("woff"),url("../assets/fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:8px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold"}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:20px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar h2{font-size:14px;float:left;width:100%;margin:0;padding:17px 23px 15px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:17px 23px 15px;color:#666}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-pedido .about-pedido{margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.footer{background-color:#555;color:#fff;float:left;width:100%;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#ddd}.footer .right{float:right}body{padding-top:110px;background-color:#f9f9f9} diff --git a/public/js/app.js b/public/js/app.js index f6835022..0533226c 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var a="select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(a,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var a=JSON.parse(e);t(a)})}},Validator=function(e,t){var a={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},i=[];this.validate=function(e){for(var t in i){var n=i[t];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var a in e){var n=e[a].split(":");i[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(e,t,a){var i=$(e),n=[];this.initializeFields=function(){for(var e in t)this.initializeField(e,t[e]);this.btnSubmit=i.find(".btn-submit"),this.btnSubmit.click(function(){a()})},this.initializeField=function(e,t){t.select?$elField=i.find('select[name="'+e+'"]'):$elField=i.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&s(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,a){var i={onComplete:a||function(){}};e.el.mask(t,i)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})};this.createEvents=function(e){var t=this;e.el.on("keyup",function(a){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(a),t.allValidate()?t.enableBtnSubmit():t.disableBtnSubmit()})},this.validateField=function(e){e.validator.validate(function(t,a){e.status=a;var i=e.el.parent();i.find(".validator-errors span").removeClass("show"),a?i.removeClass("has-error").addClass("has-success"):(i.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),i.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].el.attr("value",e[t]))},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,a){var i=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,a){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),a()})},this.setSelectedPage=function(e){i=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?a(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){a(e,i.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,a,i){this.label=t,this.el=e,this.labels=a,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t){var a=null,i=null;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e){$this.keyUpNumero(e)}},data_de_compra:{rules:"required",isDate:!0}},function(){e.paginatorForms.setSelectedPage("formSolicitante")})},this.keyUpNumero=function(e){clearTimeout(i),i=setTimeout(function(){a.setDisabled(["numero","data_de_compra"]),Database.findPedidoByNumero(a.get("numero"),function(e){a.setEnabled(["numero","data_de_compra"]),1==e.length&&a.setValue(e[0])})},1e3)},this.init()},FormSolicitante=function(e,t){var a=null;this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00"},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)}},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),t()},this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,a,i){e.pages[t](e,i)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var a=[];for(var i in e){var n=Number(e[i].total_materiais)+Number(e[i].total_insumos);a.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),t()})},process:function(e,t){e.paginatorForms=new Paginator("--",".paginator.forms",function(t,a,i){e.changeTitleHeader(a),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,i)):"formSolicitante"==t&&(e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,i)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var a in e)t.labels.push(e[a].nome),t.data.push(e[a].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var a in e)t.labels.push(this.prepareNumber(e[a].day)),t.data.push(e[a].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var i="select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(i,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var i=JSON.parse(e);t(i)})}},Validator=function(e,t){var i={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},a=[];this.validate=function(e){for(var t in a){var n=a[t];if(!i[n.name]||!i[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var i in e){var n=e[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(e,t,i){var a=$(e),n=[];this.initializeFields=function(){for(var e in t)this.initializeField(e,t[e]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){i()})},this.initializeField=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&s(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,i){var a={onComplete:i||function(){}};e.el.mask(t,a)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})};this.createEvents=function(e){var t=this;e.el.on("keyup",function(i){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(i,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,i){e.status=i;var a=e.el.parent();a.find(".validator-errors span").removeClass("show"),i?a.removeClass("has-error").addClass("has-success"):(a.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),a.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,i){var a=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,i){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),i()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s.page?i(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){i(e,a.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var i={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(i)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,i,a){this.label=t,this.el=e,this.labels=i,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t){var i=null,a=null;this.init=function(){$this=this,i=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)}},data_de_compra:{rules:"required",isDate:!0}},function(){e.paginatorForms.setSelectedPage("formSolicitante")})},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(a),a=setTimeout(function(){i.setDisabled(["numero","data_de_compra"]),Database.findPedidoByNumero(i.get("numero"),function(e){i.setEnabled(["numero"]),1==e.length&&(i.setValue(e[0]),i.verifySubmitEnaled())})},1e3))},this.init()},FormSolicitante=function(e,t){var i=null;this.init=function(){var e=this;i=new FormWizard(".form-wizard.form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00"},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)}},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),t()},this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];i.setDisabled(t),CEP.getInfo(e,function(e){i.setValue(e),i.setEnabled(t)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,i,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(i){i=e.prepareResultPorDia(i),ChartPedidos.init("chartOne","# pedidos por dia",i.labels,i.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(i){i=e.prepareResultPorSolicitante(i),ChartPedidos.init("chartTwo","# pedidos por solicitante",i.labels,i.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var i=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);i.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:i}),t()})},process:function(e,t){e.paginatorForms=new Paginator("--",".paginator.forms",function(t,i,a){e.changeTitleHeader(i),"formPedido"==t?e.formPedido=new FormPedido(e,a):"formSolicitante"==t&&(e.formSolicitante=new FormSolicitante(e,a))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var i in e)t.labels.push(e[i].nome),t.data.push(e[i].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var i in e)t.labels.push(this.prepareNumber(e[i].day)),t.data.push(e[i].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/views/formPedido.html b/public/views/formPedido.html index 317d190c..62767af1 100644 --- a/public/views/formPedido.html +++ b/public/views/formPedido.html @@ -1,12 +1,27 @@ -
+
- + + +
+ O campo de número é obrigatório +
+ +
+
Pedido encontrado:
+
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
  • Porta ac consectetur ac
  • +
  • Vestibulum at eros
  • +
+
diff --git a/src/js/core.js b/src/js/core.js index 813565fb..2afcda50 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -86,13 +86,9 @@ var Core = { $this.changeTitleHeader(title); if (page == 'formPedido') { - if (!$this.formPedido) { - $this.formPedido = new FormPedido($this, showContentForms); - } + $this.formPedido = new FormPedido($this, showContentForms); } else if (page == 'formSolicitante') { - if (!$this.formSolicitante) { - $this.formSolicitante = new FormSolicitante($this, showContentForms); - } + $this.formSolicitante = new FormSolicitante($this, showContentForms); } }); diff --git a/src/js/form-wizard.js b/src/js/form-wizard.js index 33f8ab81..ab3bba3a 100644 --- a/src/js/form-wizard.js +++ b/src/js/form-wizard.js @@ -71,17 +71,21 @@ var FormWizard = function(el, fields, submitCallback) { } if (field.properties.keyUp) { - field.properties.keyUp(e); + field.properties.keyUp(e, field); } - if ($this.allValidate()) { - $this.enableBtnSubmit(); - } else { - $this.disableBtnSubmit(); - } + $this.verifySubmitEnaled(); }); } + this.verifySubmitEnaled = function() { + if (this.allValidate()) { + this.enableBtnSubmit(); + } else { + this.disableBtnSubmit(); + } + } + this.validateField = function(field) { field.validator.validate(function(rule, status) { field.status = status; @@ -115,12 +119,22 @@ var FormWizard = function(el, fields, submitCallback) { if ($fields[i].properties.select) { $fields[i].el.val(fields[i]); } else { - $fields[i].el.attr('value', fields[i]); + if ($fields[i].properties.isDate) { + $fields[i].el.datepicker('update', this.getDate(fields[i])); + this.validateField($fields[i]); + } else { + $fields[i].el.attr('value', fields[i]); + } } } } } + this.getDate = function(date) { + var dateSplit = date.split('-'); + return new Date(dateSplit[2], dateSplit[1], dateSplit[0]); + } + this.setEnabled = function(fields) { for (var i in fields) { if ($fields[fields[i]]) { diff --git a/src/js/forms/formPedido.js b/src/js/forms/formPedido.js index ac2908e3..1730274a 100644 --- a/src/js/forms/formPedido.js +++ b/src/js/forms/formPedido.js @@ -9,8 +9,8 @@ var FormPedido = function(core, showContentFn) { formPedido = new FormWizard('.form-wizard.form-pedido', { numero: { rules: 'required', - keyUp: function(e) { - $this.keyUpNumero(e); + keyUp: function(e, field) { + $this.keyUpNumero(e, field); } }, data_de_compra: { @@ -22,17 +22,22 @@ var FormPedido = function(core, showContentFn) { }); } - this.keyUpNumero = function(e) { + this.keyUpNumero = function(e, field) { var $this = this; + if (!field.status) { + return; + } + clearTimeout(timeoutNumero); timeoutNumero = setTimeout(function() { formPedido.setDisabled(['numero', 'data_de_compra']); Database.findPedidoByNumero(formPedido.get('numero'), function(result) { - formPedido.setEnabled(['numero', 'data_de_compra']); + formPedido.setEnabled(['numero']); if (result.length == 1) { formPedido.setValue(result[0]); + formPedido.verifySubmitEnaled(); } }); }, 1000); diff --git a/src/scss/_form-pedido.scss b/src/scss/_form-pedido.scss new file mode 100644 index 00000000..fef130f0 --- /dev/null +++ b/src/scss/_form-pedido.scss @@ -0,0 +1,17 @@ +.form-pedido { + + .about-pedido { + margin-bottom:15px; + + h5 { + margin: 15px 0 5px 10px; + font-weight:bold; + } + + .sub-list { + margin-top:0; + } + + } + +} \ No newline at end of file diff --git a/src/scss/_sublist.scss b/src/scss/_sublist.scss new file mode 100644 index 00000000..0432ce3b --- /dev/null +++ b/src/scss/_sublist.scss @@ -0,0 +1,10 @@ +.list-group.sub-list { + + margin: 10px; + + .list-group-item { + font-size:12px; + padding:8px 10px; + } + +} \ No newline at end of file diff --git a/src/scss/app.scss b/src/scss/app.scss index e0cdd311..c7e75c6c 100644 --- a/src/scss/app.scss +++ b/src/scss/app.scss @@ -18,6 +18,8 @@ $font-helvetica: 'HelveticaNeueBold'; @import '_navbar.scss'; @import '_paginator.scss'; @import '_validator.scss'; +@import '_sublist.scss'; +@import '_form-pedido.scss'; @import '_footer.scss'; body { From e66bc44950bc065d8067719994e894e41d1343ee Mon Sep 17 00:00:00 2001 From: Agner Date: Fri, 9 Jun 2017 00:29:04 -0300 Subject: [PATCH 14/23] add layout, add font weight, add imagens navbar, adjust footer --- gulpfile.js | 8 +- public/assets/css/app.css | 1 + public/{ => assets}/css/libs.css | 0 public/assets/fonts/HelveticaNeue-Bold.eot | Bin 71049 -> 34744 bytes public/assets/fonts/HelveticaNeue-Bold.ttf | Bin 112344 -> 34504 bytes public/assets/fonts/HelveticaNeue-Bold.woff | Bin 71049 -> 18056 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 ++++++++++++++++++ .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes public/assets/images/accessibility.png | Bin 0 -> 1082 bytes public/assets/images/loading.svg | 16 + public/assets/images/play-options.png | Bin 0 -> 369 bytes public/assets/images/play.png | Bin 0 -> 332 bytes public/assets/images/search.png | Bin 0 -> 1149 bytes public/assets/images/task.png | Bin 0 -> 1485 bytes public/assets/images/user.png | Bin 0 -> 7021 bytes public/assets/js/app.js | 1 + public/{ => assets}/js/libs.js | 0 public/css/app.css | 1 - public/index.html | 186 ++++++----- public/js/app.js | 1 - public/loading.svg | 1 - public/views/dashboard1.html | 8 +- public/views/dashboard2.html | 36 +-- public/views/formPedido.html | 55 ++-- public/views/formSolicitante.html | 140 ++++----- src/js/core.js | 6 + src/js/form-wizard.js | 12 + src/js/forms/formPedido.js | 28 +- src/js/forms/formSolicitante.js | 5 +- src/scss/_footer.scss | 5 +- src/scss/_form-pedido.scss | 3 + src/scss/_form-solicitante.scss | 5 + src/scss/_form-wizard.scss | 27 ++ src/scss/_navbar.scss | 107 ++++++- src/scss/app.scss | 23 +- 38 files changed, 717 insertions(+), 246 deletions(-) create mode 100644 public/assets/css/app.css rename public/{ => assets}/css/libs.css (100%) create mode 100644 public/assets/fonts/glyphicons-halflings-regular.eot create mode 100644 public/assets/fonts/glyphicons-halflings-regular.svg create mode 100644 public/assets/fonts/glyphicons-halflings-regular.ttf create mode 100644 public/assets/fonts/glyphicons-halflings-regular.woff create mode 100644 public/assets/fonts/glyphicons-halflings-regular.woff2 create mode 100644 public/assets/images/accessibility.png create mode 100644 public/assets/images/loading.svg create mode 100644 public/assets/images/play-options.png create mode 100644 public/assets/images/play.png create mode 100644 public/assets/images/search.png create mode 100644 public/assets/images/task.png create mode 100644 public/assets/images/user.png create mode 100644 public/assets/js/app.js rename public/{ => assets}/js/libs.js (100%) delete mode 100644 public/css/app.css delete mode 100644 public/js/app.js delete mode 100644 public/loading.svg create mode 100644 src/scss/_form-solicitante.scss create mode 100644 src/scss/_form-wizard.scss diff --git a/gulpfile.js b/gulpfile.js index 937dcc8e..bf252060 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -40,14 +40,14 @@ var cssLib = [ gulp.task('scripts-libs', function() { return gulp.src(scriptsLibs) .pipe(concat('libs.js')) - .pipe(gulp.dest('./public/js/')); + .pipe(gulp.dest('./public/assets/js/')); }); gulp.task('scripts-site', function() { return gulp.src(scripts) .pipe(concat('app.js')) .pipe(uglify({mangle: true})) - .pipe(gulp.dest('./public/js/')); + .pipe(gulp.dest('./public/assets/js/')); }); gulp.task('sass', function() { @@ -59,7 +59,7 @@ gulp.task('sass', function() { .pipe($.autoprefixer({ browsers: ['last 2 versions', 'ie >= 9'] })) - .pipe(gulp.dest('public/css')); + .pipe(gulp.dest('public/assets/css')); }); gulp.task('css-libs', function() { @@ -72,7 +72,7 @@ gulp.task('css-libs', function() { browsers: ['last 2 versions', 'ie >= 9'] })) .pipe(concat('libs.css')) - .pipe(gulp.dest('public/css')); + .pipe(gulp.dest('public/assets/css')); }); gulp.task('serve', ['sass', 'css-libs', 'scripts-libs', 'scripts-site'], function() { diff --git a/public/assets/css/app.css b/public/assets/css/app.css new file mode 100644 index 00000000..a2a1b47b --- /dev/null +++ b/public/assets/css/app.css @@ -0,0 +1 @@ +*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../assets/fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../assets/fonts/HelveticaNeue-Bold.woff") format("woff"),url("../assets/fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:21px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none;background-color:#fff}.form-pedido{margin-top:20px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin-top:40px}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px}html body .wrapper .push{height:31px} diff --git a/public/css/libs.css b/public/assets/css/libs.css similarity index 100% rename from public/css/libs.css rename to public/assets/css/libs.css diff --git a/public/assets/fonts/HelveticaNeue-Bold.eot b/public/assets/fonts/HelveticaNeue-Bold.eot index 3e5cd14482e65241c353388706fbc9b05b041713..7ece6c3d2fe6fd5f6049efbea76c1ad1a334f2fe 100644 GIT binary patch literal 34744 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 QKZ~Yw#vZF$H<3L5f8}kiKmY&$ literal 71049 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 KSd`7xzzhIUR08S% diff --git a/public/assets/fonts/HelveticaNeue-Bold.ttf b/public/assets/fonts/HelveticaNeue-Bold.ttf index 193b51e0c1df6f660ae6dee3ae5b7efad21b01ef..99575849c610a04704f96e65ff2ebafbececd9d2 100644 GIT binary patch literal 34504 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�oE&gJ0*7hwKr{}VLRKXHKcbGM|9PQSs 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

-|pTXK|+Td|(Cc_(eyF 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 literal 71049 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/assets/fonts/glyphicons-halflings-regular.ttf b/public/assets/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/public/assets/fonts/glyphicons-halflings-regular.woff2 b/public/assets/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/accessibility.png b/public/assets/images/accessibility.png new file mode 100644 index 0000000000000000000000000000000000000000..e1031c809daa3228d7935be176d0b6a009676c97 GIT binary patch literal 1082 zcmV-A1jYM_P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x010qNS#tmY79{`x79{~mQY7#I00W*$L_t(o!@byRs8vN2 z!13Qb-U_ia@{yHALGLI^D745*ByvEE@I%I631x#t5BgGwK@T$MMfIT_8WHUvh)5{5 zJ~uOJlm|x($@lF3O3-vCe6FBw8*pfy9rWjVSlLw1e}a#Lrh2a6ePqn6<2kL zI~U7(osqeiG=kU*dJS@Dgt2`i^cyqCdi*(p*sppDQsmiQeAFRsGuHGvBd`?Tw`ltb z%Zofa*mIB~&;G)X4d&f=9ak55wy~QK(BGzQUxU7*$g{=W256g+x-<^h<9h|sDI620k!LU0-}iRvU<7g=?&{>!Z)ob_t;+kmm@$SQzXsDQ`eHoY zE}$>Ov}=4F!M*K3_Eq$$A*OaK>u6+p6Wg2+)A@r+ zh-qAi=}gL5^NaH2Mma;~;l0Bl2r>2Hq9#ofu`XiZ5VR35Mr8ub-1#L?;&Nqf3NG4F%8Yi_bqNL z@@$h4%CI|*`nXt)MamIA8W~V7?Kc&9wr4bfEiYR_O!JjHtIG_ndnV9% AE&u=k literal 0 HcmV?d00001 diff --git a/public/assets/images/loading.svg b/public/assets/images/loading.svg new file mode 100644 index 00000000..455bf146 --- /dev/null +++ b/public/assets/images/loading.svg @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/public/assets/images/play-options.png b/public/assets/images/play-options.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b54656527fe816dc48f8e3d5d42fa0fbbd6a1d GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!3HGD9`RZNDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*It(m?Rjd3QaK z;w(P|(2k(WhqW3G_cluFjq2`2BD z*K|1cG@Une+~6bJ6I{bosvB+IDP|~E(W zIgO$L=On8hv6bvG>HJ=&px5wcb3)3Ns0xNmq5QuNCJkZdKHSMLWz?`rk&k%Jk-tW~ zp=tFAgH^YESH&MvcaT`y=YQxggZ7s<4)fh!?@VOSf9*B-#{>39JSE1LE@W&y^XooW z&dGE9F0vWXS!r8l)qR>)*JH{s>)c=a6p5=qR97iCt;+Jl^thBOAm4ks`njxgN@xNA DxEq0+ literal 0 HcmV?d00001 diff --git a/public/assets/images/play.png b/public/assets/images/play.png new file mode 100644 index 0000000000000000000000000000000000000000..7de5737ff2517a790fc751f5bed0b2946bc7c0d8 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gx!3HG%?c?kMk*<6-|boFoZZ=ffKNQfpi8IVa=|gFW}c7Meh~|%>#kdApsl#hG9k)| zCp^cR{h!kxnTo4YKiCVmAE@uhzQ^t-aD5M(pU7nvxo;1itN!r0s;|)7@gluDUvOi0 zM`hWb!n8e$pA>q>PcWV)6u#?(pjE=Bt2J9VF7wx(%GUbk^Ih)!{^}WgcNpg$W34sv R)U^Y7%+uA+Wt~$(695gUZ)gAj literal 0 HcmV?d00001 diff --git a/public/assets/images/search.png b/public/assets/images/search.png new file mode 100644 index 0000000000000000000000000000000000000000..51a52e01c185b7ed01819d041a9437fdc9e44825 GIT binary patch literal 1149 zcmV-@1cLjCP)?00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x010qNS#tmY79{`x79{~mQY7#I00ZGkL_t(o!_C=Sh*wn< z$MKIdCMaY`hC!BA+C$=GFeyDqnkIGVN`*Zf%pmB{^(CT;y59b)uxc_tZf95~g?`c?j?X|zN&%Ug+|D!}INwaQT zghiNxX*d<5YnMIv9$T>Uz4hb|#v$6Hy=eO|v2zQr7zOgB2 zl4euzFm7z&@+&SVi~QSI(5`-eKhgrS5BFhi3?!6A{zF;hOOarIz-2t1uQzP`j3#Mz zF19)LbM;|KS>$VC0}fP@W;3w?69dh+ltsR(of%ywyrv!;4kVOC{speZ;Xw1UB+W+0 z#ObOJ^y>m`oAB6hAp60-kClO@(^bo(85Gyxgh1Qx91FT2VE?Wx z@(mq?R2KPu)g>}e3u5|rp(hl#laLK@CnafiN(|`Kfc^6k0^Qoeer62l*ns`#5dz)U z!agnrG^ED#Z-{CY_fQOIX!b@TAsH<0-WbsB0sEX00-YVO9mcL0&`$#PBuTTzbu$EA zAFzEEQ?hj7t$=+zZtf&ul4i4n&&>5P{kyOZy8~^@W6rlo$WeGgcr&ez0xgUD5S|IN zos1V^lZFN@7cOhwj?GDr9#1QUXLTWpB+bSQl`u)OyHo|@KpnvYv2nVfUd*?(@L7!a z>RPHD!0}0%tyX>VkiN#3vGE4hOi!z7_>c}F$J1qz?-&Gd0&c=Rn%@E5#g#F;ejsQ! zUcprj{XSLIS36bL;y9dvUd%;1OJy?_HP!r~a(N7%#gaA#8?LrtVOivRS~(nZ*Ox{9 z7nb4<)#v^%)T7!5lUq3qntUW_b`~C2RRKfQMm&iX27fPr9k`?{@||sg_5+@QTUA$J z%q8##Ud3}|k*}{~OjW(WoZZlO7v`5m{;wRQt#q!g!+UTc&QX=XC#q_pef5lNR^8u! z2KrA{UD-1lhT4mZ>k77g&`zknme*lcgX=zARu=gtS|`pUrg~@3Q_cKfnt*jln$6=l z%;-_oY2+K2-{5)x3yvFTKiHRWMT6^>;|f~Cj=>t?*P4IS9T#row0+x_!_#|u*Q!e9 z^IEv=KJK73?2+j`y|1Z~nBIWP^8W>B4QqN&Z>c&%XR3bS_zBC(B7f>{i&7Sv4If-N P00000NkvXXu0mjfJuD23 literal 0 HcmV?d00001 diff --git a/public/assets/images/task.png b/public/assets/images/task.png new file mode 100644 index 0000000000000000000000000000000000000000..1e720a575737d055829119a37ca8c45c1605982c GIT binary patch literal 1485 zcmV;;1v2`HP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x010qNS#tmY79{`x79{~mQY7#I00l8gL_t(o!@ZeXs8&T3 z$A90^BN}wkEJIVNtT`w0)(yk(SVBnQfvBMZgVH(=R>n|iSst?zdQbj`qUfPeF)hdJf??h=CC$wG{Cb$#I!Di*Z}$Gw|I_Tf*Q~YvvuCfhX6+IY5Q)A9 zcm%i|7~pPi2bKVD7^ybK=!vj11b7q}3-tHwd=9*7q}o(XN2!W|5-<~(26V{~s{pfr zRwGrVAdwRA0`P3Wr!w#oFf(MQu8OT`!1Mr_bWxrIT8ofzXmvV53)}^m;d}}@leKD> z0S2g#bgB#tGE)7Lhlxn^AYeK-S4TR^}uLg3~&i{ zYyJQ%Gg7Vd=IsU605?b4sRtgyZqHK?dPD8Njgdw^2BeXy;=YFo*l(|2hWt9&uiZ#BqO%8~Z)i}Y^1VQdM`khbW`GR9wZICI=!pPEs{O!&k@g4?4-x7S zseF!+>JK-5Du-irz#@_8k&e`AY*2xkYdoSPLK$-3au~kXz_{sg01s@QnKxaiXYP z32ZAs=mR5F8VK$z;6pqik?01I==p>{#1;T|=$e<4Oa++lY}H{a{47iriJmVK-4IgP zX|*j9eH->5)fC~>KfpjE)oyoW*aTb^N$4#j)dSAvIP8%=1}m@u;*@RPfsjb_aBOWA zL&V1dBh@6QV-)Ze)wlC5V5pI5k9#{C$PNf0V#-Lhz5^kV=q}jv%hSZ49DS65kw&U^ zr*AUh?ROLy<;g2xZUMWg?U#WWMyhhjZIh3H=7I`SdgRL6@` zk?6j_L~Q8oAE|2{@ESH3{pIPp0-MaoI;Ia4|5&NHyEZG+{&Jd1r`BimkvcMylVO-A{o#fIZmb#ztU0&}O9Cl1?gB z)9RvD#Yj~aiS7e@2lP6_WKyibChUqxbT^<}t>Uiwu^FlU^DZZyMKS<4VH+rIergCI z_V|!u;8`S-B3FHvm(Y=%@}~p2s)xLUmY!uYe-qyx&QHil^$E7zDfFiq1b}7nbRM>cL47K^YW4@Ovocv4_t@+kJJcUj?G&a06l^8JDFAn4qzMZ n2Y{WxkJ!A@4t!tqUoF7@nFXEfuYzsq00000NkvXXu0mjfN~fIF literal 0 HcmV?d00001 diff --git a/public/assets/images/user.png b/public/assets/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..44b1867b45965c439f13ed7f600e999bd7d03bcf GIT binary patch literal 7021 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 MrB$T9N}|2~2hx{|Qvd(} literal 0 HcmV?d00001 diff --git a/public/assets/js/app.js b/public/assets/js/app.js new file mode 100644 index 00000000..c8d63272 --- /dev/null +++ b/public/assets/js/app.js @@ -0,0 +1 @@ +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var a="select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(a,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var a=JSON.parse(e);t(a)})}},Validator=function(e,t){var a={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},i=[];this.validate=function(e){for(var t in i){var n=i[t];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var a in e){var n=e[a].split(":");i[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(e,t,a){var i=$(e),n=[];this.initializeFields=function(){for(var e in t)this.initializeField(e,t[e]);this.btnSubmit=i.find(".btn-submit"),this.btnSubmit.click(function(){a()})},this.initializeField=function(e,t){t.select?$elField=i.find('select[name="'+e+'"]'):$elField=i.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&s(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,a){var i={onComplete:a||function(){}};e.el.mask(t,i)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})};this.createEvents=function(e){var t=this;e.el.on("keyup",function(a){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(a,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,a){e.status=a;var i=e.el.parent();e.properties.hasLoading&&(i=i.parent()),i.find(".validator-errors span").removeClass("show"),a?i.removeClass("has-error").addClass("has-success"):(i.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),i.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.showLoading=function(e){n[e].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e){n[e].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,a){var i=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,a){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),a()})},this.setSelectedPage=function(e){i=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?a(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){a(e,i.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,a,i){this.label=t,this.el=e,this.labels=a,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t){var a=null,i=null;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0}},function(){e.paginatorForms.setSelectedPage("formSolicitante")})},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(i),i=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero"),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnaled(),e.total=e.total_materiais+e.total_insumos;var t=$(".fields-pedido");for(var i in e){var n=e[i];"total_materiais"!=i&&"total_insumos"!=i&&"total"!=i||(n=n.toFixed(2)),t.find('li[data-field="'+i+'"] span').text(n)}$(".about-pedido").removeClass("hide")}else $(".about-pedido").addClass("hide");a.hideLoading("numero")})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,t){var a=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00"},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),t()},this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,a,i){e.pages[t](e,i)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var a=[];for(var i in e){var n=Number(e[i].total_materiais)+Number(e[i].total_insumos);a.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),t()})},process:function(e,t){e.paginatorForms=new Paginator("--",".paginator.forms",function(t,a,i){e.changeTitleHeader(a),"formPedido"==t?e.formPedido=new FormPedido(e,i):"formSolicitante"==t&&(e.formSolicitante=new FormSolicitante(e,i))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var a in e)t.labels.push(e[a].nome),t.data.push(e[a].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var a in e)t.labels.push(this.prepareNumber(e[a].day)),t.data.push(e[a].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/js/libs.js b/public/assets/js/libs.js similarity index 100% rename from public/js/libs.js rename to public/assets/js/libs.js diff --git a/public/css/app.css b/public/css/app.css deleted file mode 100644 index 3b63e456..00000000 --- a/public/css/app.css +++ /dev/null @@ -1 +0,0 @@ -*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../assets/fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../assets/fonts/HelveticaNeue-Bold.woff") format("woff"),url("../assets/fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:8px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold"}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:20px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar h2{font-size:14px;float:left;width:100%;margin:0;padding:17px 23px 15px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:17px 23px 15px;color:#666}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-pedido .about-pedido{margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.footer{background-color:#555;color:#fff;float:left;width:100%;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#ddd}.footer .right{float:right}body{padding-top:110px;background-color:#f9f9f9} diff --git a/public/index.html b/public/index.html index 212c9def..5a11d1fd 100644 --- a/public/index.html +++ b/public/index.html @@ -4,104 +4,130 @@ Paínel de Controle - - + + -

- +
-
- Loading... -
+
-
- -
-
+
+
+ -
-

Gráfico 02

+
+ Loading... +
-
- Loading... +
+ +
-
- -
-
+
+

Gráfico 02

-
-

Tabela

+
+ Loading... +
-
- Loading... +
+ +
-
- -
-
+
+

Tabela

+ +
+ Loading... +
-
-
- Loading... +
+ +
-
- +
+
+ Loading... +
+ +
+ +
-
-
+
+
+ +
+ +
@@ -112,7 +138,7 @@

Tabela

- - + + \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js deleted file mode 100644 index 0533226c..00000000 --- a/public/js/app.js +++ /dev/null @@ -1 +0,0 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var i="select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(i,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var i=JSON.parse(e);t(i)})}},Validator=function(e,t){var i={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},a=[];this.validate=function(e){for(var t in a){var n=a[t];if(!i[n.name]||!i[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var i in e){var n=e[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(e,t,i){var a=$(e),n=[];this.initializeFields=function(){for(var e in t)this.initializeField(e,t[e]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){i()})},this.initializeField=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&s(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,i){var a={onComplete:i||function(){}};e.el.mask(t,a)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})};this.createEvents=function(e){var t=this;e.el.on("keyup",function(i){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(i,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,i){e.status=i;var a=e.el.parent();a.find(".validator-errors span").removeClass("show"),i?a.removeClass("has-error").addClass("has-success"):(a.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),a.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,i){var a=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,i){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),i()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s.page?i(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){i(e,a.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var i={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(i)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,i,a){this.label=t,this.el=e,this.labels=i,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t){var i=null,a=null;this.init=function(){$this=this,i=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)}},data_de_compra:{rules:"required",isDate:!0}},function(){e.paginatorForms.setSelectedPage("formSolicitante")})},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(a),a=setTimeout(function(){i.setDisabled(["numero","data_de_compra"]),Database.findPedidoByNumero(i.get("numero"),function(e){i.setEnabled(["numero"]),1==e.length&&(i.setValue(e[0]),i.verifySubmitEnaled())})},1e3))},this.init()},FormSolicitante=function(e,t){var i=null;this.init=function(){var e=this;i=new FormWizard(".form-wizard.form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00"},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)}},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),t()},this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];i.setDisabled(t),CEP.getInfo(e,function(e){i.setValue(e),i.setEnabled(t)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,i,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(i){i=e.prepareResultPorDia(i),ChartPedidos.init("chartOne","# pedidos por dia",i.labels,i.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(i){i=e.prepareResultPorSolicitante(i),ChartPedidos.init("chartTwo","# pedidos por solicitante",i.labels,i.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var i=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);i.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:i}),t()})},process:function(e,t){e.paginatorForms=new Paginator("--",".paginator.forms",function(t,i,a){e.changeTitleHeader(i),"formPedido"==t?e.formPedido=new FormPedido(e,a):"formSolicitante"==t&&(e.formSolicitante=new FormSolicitante(e,a))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var i in e)t.labels.push(e[i].nome),t.data.push(e[i].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var i in e)t.labels.push(this.prepareNumber(e[i].day)),t.data.push(e[i].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/loading.svg b/public/loading.svg deleted file mode 100644 index 14a23105..00000000 --- a/public/loading.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/views/dashboard1.html b/public/views/dashboard1.html index 17b62364..38483c9d 100644 --- a/public/views/dashboard1.html +++ b/public/views/dashboard1.html @@ -1,7 +1 @@ -
-
- -
- -
-
\ No newline at end of file + diff --git a/public/views/dashboard2.html b/public/views/dashboard2.html index 5c4620f4..e1ff08e4 100644 --- a/public/views/dashboard2.html +++ b/public/views/dashboard2.html @@ -1,35 +1 @@ -
-
- -
- - -
- -
- - -
- -
- - -
- -
- - - -
- O campo nome é obrigatório -
-
- - - -
- -
- -
-
\ No newline at end of file + \ No newline at end of file diff --git a/public/views/formPedido.html b/public/views/formPedido.html index 62767af1..acadbc25 100644 --- a/public/views/formPedido.html +++ b/public/views/formPedido.html @@ -1,39 +1,38 @@
-
-
-
-
- - - -
- O campo de número é obrigatório -
+ +
+ -
-
Pedido encontrado:
-
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-
-
+
+ + +
+ +
+ O campo de número é obrigatório +
-
- - -
+
+
Pedido encontrado:
+
    +
  • Número do pedido:
  • +
  • Solicitante:
  • +
  • Total em materiais: R$
  • +
  • Total em insumos: R$
  • +
  • Total: R$
  • +
+
+
- -
+
+ +
-
+ +
diff --git a/public/views/formSolicitante.html b/public/views/formSolicitante.html index 2a0c414f..9675cef9 100644 --- a/public/views/formSolicitante.html +++ b/public/views/formSolicitante.html @@ -1,104 +1,94 @@ -
-
-
-
+
+
+
+ +

Dados pessoais

-
-
- - +
+ -
- O campo nome é obrigatório -
+
+ +
-
-
-
-
- - -
-
-
+
+ + -
-
-
- - +
+ O campo nome é obrigatório
-
- -
-
-
- - -
-
- -
+
+ +
-
-
+

Endereço

+
-
- - +
+
+ +
+ + +
+
-
-
-
-
-
- - +
+
+ + +
-
-
-
- - +
+
+ + +
+
+
+
+ + +
-
-
-
- - +
+
+ + +
-
-
-
-
-
- - +
+
+ + +
-
- + +
-
+
+ +
+
- -
-
\ No newline at end of file +
diff --git a/src/js/core.js b/src/js/core.js index 2afcda50..dfde6a01 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -22,8 +22,14 @@ var Core = { this.paginatorMenu.setSelectedPage('dashboard1'); $('.change-sub-navbar').click(function(){ + $this.changeSubNavbar($(this).data('subnavbar')); }); + + $('.navbar .navbar-nav a').click(function() { + $('.navbar .navbar-nav li').removeClass('active'); + $(this).addClass('active'); + }); }, changeSubNavbar: function(sub) { diff --git a/src/js/form-wizard.js b/src/js/form-wizard.js index ab3bba3a..8de65105 100644 --- a/src/js/form-wizard.js +++ b/src/js/form-wizard.js @@ -92,6 +92,10 @@ var FormWizard = function(el, fields, submitCallback) { var formGroup = field.el.parent(); + if (field.properties.hasLoading) { + formGroup = formGroup.parent(); + } + formGroup.find('.validator-errors span').removeClass('show'); if (!status) { @@ -163,6 +167,14 @@ var FormWizard = function(el, fields, submitCallback) { return $fields[field].el.val(); }; + this.showLoading = function(field) { + $fields[field].el.parent().find('.image-loading').addClass('show fadeIn'); + } + + this.hideLoading = function(field) { + $fields[field].el.parent().find('.image-loading').removeClass('fadeIn show'); + } + /** * Initialize */ diff --git a/src/js/forms/formPedido.js b/src/js/forms/formPedido.js index 1730274a..151d6a4a 100644 --- a/src/js/forms/formPedido.js +++ b/src/js/forms/formPedido.js @@ -11,7 +11,8 @@ var FormPedido = function(core, showContentFn) { rules: 'required', keyUp: function(e, field) { $this.keyUpNumero(e, field); - } + }, + hasLoading: true }, data_de_compra: { rules: 'required', @@ -31,14 +32,37 @@ var FormPedido = function(core, showContentFn) { clearTimeout(timeoutNumero); timeoutNumero = setTimeout(function() { + if (formPedido.get('numero') == '') { + $('.about-pedido').addClass('hide'); + return; + } formPedido.setDisabled(['numero', 'data_de_compra']); + + formPedido.showLoading('numero'); Database.findPedidoByNumero(formPedido.get('numero'), function(result) { formPedido.setEnabled(['numero']); if (result.length == 1) { - formPedido.setValue(result[0]); + result = result[0]; + + formPedido.setValue(result); formPedido.verifySubmitEnaled(); + + result.total = result.total_materiais + result.total_insumos; + + var fieldsPedido = $('.fields-pedido'); + for (var i in result) { + var value = result[i]; + if (i == 'total_materiais' || i == 'total_insumos' || i == 'total') { + value = value.toFixed(2); + } + fieldsPedido.find('li[data-field="'+i+'"] span').text(value); + } + $('.about-pedido').removeClass('hide'); + } else { + $('.about-pedido').addClass('hide'); } + formPedido.hideLoading('numero'); }); }, 1000); } diff --git a/src/js/forms/formSolicitante.js b/src/js/forms/formSolicitante.js index 2ac25f45..bead3824 100644 --- a/src/js/forms/formSolicitante.js +++ b/src/js/forms/formSolicitante.js @@ -5,7 +5,7 @@ var FormSolicitante = function(core, showContentFn) { this.init = function() { var $this = this; - formSolicitante = new FormWizard('.form-wizard.form-solicitante', { + formSolicitante = new FormWizard('.form-solicitante', { nome: { rules: 'required|min:3|max:10' }, @@ -19,7 +19,8 @@ var FormSolicitante = function(core, showContentFn) { mask: '00000-000', onCompleteMask: function(cep) { $this.searchCep(cep); - } + }, + hasLoading: true }, rua: { rules: 'required|min:3' diff --git a/src/scss/_footer.scss b/src/scss/_footer.scss index 9862dba9..feeec59d 100644 --- a/src/scss/_footer.scss +++ b/src/scss/_footer.scss @@ -3,12 +3,13 @@ $background-color-footer: #555; $text-color-footer: #fff; $color-border-top-footer: #ddd; - $copy-color: #ddd; + $copy-color: #999; background-color: $background-color-footer; color: $text-color-footer; float:left; width:100%; + height:31px; padding:5px; margin-top:20px; border-top:1px solid $color-border-top-footer; @@ -19,6 +20,8 @@ span.copy { color: $copy-color; + font-family: $font-trebuchet; + font-size:12px; } } diff --git a/src/scss/_form-pedido.scss b/src/scss/_form-pedido.scss index fef130f0..4c4aa15b 100644 --- a/src/scss/_form-pedido.scss +++ b/src/scss/_form-pedido.scss @@ -1,6 +1,9 @@ .form-pedido { + margin-top:20px; + .about-pedido { + width:100%; margin-bottom:15px; h5 { diff --git a/src/scss/_form-solicitante.scss b/src/scss/_form-solicitante.scss new file mode 100644 index 00000000..7e2f2ba4 --- /dev/null +++ b/src/scss/_form-solicitante.scss @@ -0,0 +1,5 @@ +.form-solicitante { + + margin-top:40px; + +} \ No newline at end of file diff --git a/src/scss/_form-wizard.scss b/src/scss/_form-wizard.scss new file mode 100644 index 00000000..ae84dd34 --- /dev/null +++ b/src/scss/_form-wizard.scss @@ -0,0 +1,27 @@ +.form-wizard { + + h3 { + width:100%; + font-size:18px; + border-bottom:1px solid #eee; + padding-bottom:7px; + + &.margin{ + margin-top:40px; + } + } + + .loading-field{ + position:relative; + width:100%; + + .image-loading { + position:absolute; + right:3px; + top:2px; + display:none; + background-color:#fff; + } + } + +} \ No newline at end of file diff --git a/src/scss/_navbar.scss b/src/scss/_navbar.scss index 71655cb1..1d26bf4f 100644 --- a/src/scss/_navbar.scss +++ b/src/scss/_navbar.scss @@ -5,7 +5,54 @@ $background-sub-navbar: #fff; $color-border-bottom-sub-navbar: #ddd; - $color-sub-navbar: #666666; + $color-sub-navbar: #666; + $color-title-subnav: #102938; + + .navbar-nav:not(.navbar-right) { + >li { + >a { + padding-top:20px !important; + padding-bottom:20px !important; + } + } + } + + .navbar-right { + li { + a { + padding-top:13px !important; + + &.search { + img { + margin-top:6px; + width:21px; + height: auto; + } + } + + &.accessibility { + img { + margin-top:7px; + width:17px; + height: auto; + } + } + + &.user { + img.img-profile { + width:32px; + height: auto; + margin-right:5px; + } + + img.arrow { + width:8px; + height: auto; + } + } + } + } + } &.navbar-dark { background-color:$background-navbar; @@ -14,7 +61,7 @@ .navbar-header { .navbar-brand { - padding-top:8px; + padding-top:13px; img { width:34px; @@ -25,10 +72,22 @@ ul.navbar-nav{ li{ + + &.first-item { + margin-left:40px; + } + + &.active{ + a { + color:$color-accent; + } + } + a { color: $color-navbar; text-transform: uppercase; font-family: $font-helvetica; + font-weight:bold; &:hover, &:active, @@ -51,13 +110,25 @@ } &.init-process { - margin-left:20px; + margin-left:60px; background: $color-accent; a, a:focus{ color:#fff; } + img { + width:11px; + height:auto; + display:inline-block; + margin-top:-2px; + margin-right:8px; + } + + span { + display:inline-block; + } + &:hover { background: $color-accent; @@ -80,17 +151,40 @@ width:100%; background: $background-sub-navbar; border-bottom:1px solid $color-border-bottom-sub-navbar; + min-height:55px; a { color: $color-sub-navbar; } + .left { + float:left; + margin: 16px 0 0 20px; + + img { + width:26px; + height: auto; + } + + span { + font-family: $font-helvetica; + font-weight:bold; + color: $color-title-subnav; + font-size:14px; + margin-left:5px; + margin-top:1px; + display:inline-block; + } + } + h2 { font-size:14px; float:left; - width:100%; margin:0; - padding: 17px 23px 15px; + font-family: $font-helvetica; + font-weight:bold; + color: $color-title-subnav; + padding: 21px 23px 17px; } ul.list { @@ -104,8 +198,9 @@ a { float:left; - padding: 17px 23px 15px; + padding: 18px 23px 17px; color: $color-sub-navbar; + font-family: $font-trebuchet; &:hover, &:focus, diff --git a/src/scss/app.scss b/src/scss/app.scss index c7e75c6c..d57f2e35 100644 --- a/src/scss/app.scss +++ b/src/scss/app.scss @@ -14,15 +14,32 @@ $color-accent: #39bb9d; } $font-helvetica: 'HelveticaNeueBold'; +$font-trebuchet: 'Trebuchet MS Regular'; @import '_navbar.scss'; @import '_paginator.scss'; @import '_validator.scss'; @import '_sublist.scss'; +@import '_form-wizard.scss'; @import '_form-pedido.scss'; +@import '_form-solicitante.scss'; @import '_footer.scss'; -body { - padding-top: 110px; - background-color:$color-background; +html { + height:100%; + + body { + height:100%; + padding-top: 115px; + background-color:$color-background; + + .wrapper { + min-height: 100%; + margin-bottom: -51px; + + .push { + height:31px; + } + } + } } \ No newline at end of file From 44129738e414fc70637a315fbf1f0d175bd08a98 Mon Sep 17 00:00:00 2001 From: "agner.e.ballejo" Date: Fri, 9 Jun 2017 10:54:09 -0300 Subject: [PATCH 15/23] ajuste form solicitante --- gulpfile.js | 1 + public/assets/css/app.css | 2 +- public/assets/js/app.js | 2 +- public/index.html | 8 ++--- public/views/formPedido.html | 2 +- public/views/formSolicitante.html | 8 +++-- public/views/process.html | 4 +-- src/js/core.js | 13 +++++-- src/js/database.js | 9 +++-- src/js/form-wizard.js | 40 +++++++++++++++++++--- src/js/forms/formPedido.js | 28 +++++++++++++--- src/js/forms/formSolicitante.js | 56 +++++++++++++++++++++++++++++-- src/js/paginator.js | 2 +- src/js/pedido.js | 14 ++++++-- src/scss/_form-solicitante.scss | 4 ++- src/scss/_navbar.scss | 2 +- src/scss/_paginator.scss | 7 ++++ src/scss/app.scss | 10 ++++-- 18 files changed, 176 insertions(+), 36 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index bf252060..19dcf51a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -9,6 +9,7 @@ var concat = require('gulp-concat'), var scripts = [ './src/js/database.js', './src/js/validator.js', + './src/js/pedido.js', './src/js/form-wizard.js', './src/js/paginator.js', './src/js/cep.js', diff --git a/public/assets/css/app.css b/public/assets/css/app.css index a2a1b47b..b635c7fd 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1 +1 @@ -*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../assets/fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../assets/fonts/HelveticaNeue-Bold.woff") format("woff"),url("../assets/fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:21px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none;background-color:#fff}.form-pedido{margin-top:20px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin-top:40px}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px}html body .wrapper .push{height:31px} +*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none;background-color:#fff}.form-pedido{margin-top:20px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .container{min-height:100%;position:relative}html body .wrapper .push{height:31px} diff --git a/public/assets/js/app.js b/public/assets/js/app.js index c8d63272..57e90791 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var a="select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(a,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var a=JSON.parse(e);t(a)})}},Validator=function(e,t){var a={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},i=[];this.validate=function(e){for(var t in i){var n=i[t];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var a in e){var n=e[a].split(":");i[n[0]]={name:n[0],opt:n[1]}}}()},FormWizard=function(e,t,a){var i=$(e),n=[];this.initializeFields=function(){for(var e in t)this.initializeField(e,t[e]);this.btnSubmit=i.find(".btn-submit"),this.btnSubmit.click(function(){a()})},this.initializeField=function(e,t){t.select?$elField=i.find('select[name="'+e+'"]'):$elField=i.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&s(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,a){var i={onComplete:a||function(){}};e.el.mask(t,i)},s=function(e){e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR"})};this.createEvents=function(e){var t=this;e.el.on("keyup",function(a){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(a,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,a){e.status=a;var i=e.el.parent();e.properties.hasLoading&&(i=i.parent()),i.find(".validator-errors span").removeClass("show"),a?i.removeClass("has-error").addClass("has-success"):(i.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),i.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.showLoading=function(e){n[e].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e){n[e].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,a){var i=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&i.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,a){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),a()})},this.setSelectedPage=function(e){i=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){i.selectedPage.find(".loading").addClass("hide"),i.selectedPage.find(".content").addClass("show")};s.page?a(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){a(e,i.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,a,i){this.label=t,this.el=e,this.labels=a,this.data=i,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t){var a=null,i=null;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0}},function(){e.paginatorForms.setSelectedPage("formSolicitante")})},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(i),i=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero"),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnaled(),e.total=e.total_materiais+e.total_insumos;var t=$(".fields-pedido");for(var i in e){var n=e[i];"total_materiais"!=i&&"total_insumos"!=i&&"total"!=i||(n=n.toFixed(2)),t.find('li[data-field="'+i+'"] span').text(n)}$(".about-pedido").removeClass("hide")}else $(".about-pedido").addClass("hide");a.hideLoading("numero")})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,t){var a=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00"},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),t()},this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,a,i){e.pages[t](e,i)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var a=[];for(var i in e){var n=Number(e[i].total_materiais)+Number(e[i].total_insumos);a.push([e[i].numero,e[i].nome,e[i].data_de_compra.replaceAll("-","/"),"R$ "+e[i].total_materiais.toFixed(2),"R$ "+e[i].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),t()})},process:function(e,t){e.paginatorForms=new Paginator("--",".paginator.forms",function(t,a,i){e.changeTitleHeader(a),"formPedido"==t?e.formPedido=new FormPedido(e,i):"formSolicitante"==t&&(e.formSolicitante=new FormSolicitante(e,i))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var a in e)t.labels.push(e[a].nome),t.data.push(e[a].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var a in e)t.labels.push(this.prepareNumber(e[a].day)),t.data.push(e[a].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var i="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(i,t)},findSolicitanteById:function(e,t){var i="SELECT * FROM solicitantes WHERE id = "+e;this._execute(i,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var i=JSON.parse(e);t(i)})}},Validator=function(e,t){var i={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},a=[];this.validate=function(e){for(var t in a){var n=a[t];if(!i[n.name]||!i[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var i in e){var n=e[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={};this.setData=function(t){e=t},this.getData=function(){return e},this.get=function(t){return e[t]}},FormWizard=function(e,t,i){var a=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in t)this.initializeField(n,t[n]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&i()})},this.initializeField=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&this.startDatepicker(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,i){var a={onComplete:i||function(){}};e.el.mask(t,a)};this.startDatepicker=function(e){var t=this;e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(i){e.validator&&t.validateField(e),t.verifySubmitEnaled(),e.properties&&e.properties.onChangeDate(i)})},this.createEvents=function(e){var t=this;e.el.on("keyup",function(i){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(i,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,i){e.status=i;var a=e.el.parent();e.properties.hasLoading&&(a=a.parent()),a.find(".validator-errors span").removeClass("show"),i?a.removeClass("has-error").addClass("has-success"):(a.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),a.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)n[e].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.getAll=function(){var e={};for(var t in n)e[t]=n[t].el.val();return e},this.showLoading=function(e){n[e].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e){n[e].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,i){var a=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,i){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),i()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s[e]?i(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){i(e,a.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var i={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(i)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,i,a){this.label=t,this.el=e,this.labels=i,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t,i){var a=null,n=null,o=0,s=0;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){$this.submit()}),i()},this.submit=function(){var i=a.getAll();i.id=o,i.idSolicitante=s,t.setData(i),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(n),n=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero"),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnaled(),e.total=e.total_materiais+e.total_insumos;var t=$(".fields-pedido");for(var i in e){var n=e[i];"total_materiais"!=i&&"total_insumos"!=i&&"total"!=i||(n=n.toFixed(2)),t.find('li[data-field="'+i+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,a.setEnabled(["data_de_compra"]),$(".about-pedido").addClass("hide");a.hideLoading("numero")})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,t,i){var a=null,n=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00",onCompleteMask:function(){e.searchCpf()}},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),this.load()},this.load=function(){0==t.get("id")?i():Database.findSolicitanteById(t.get("idSolicitante"),function(e){if(0==e.length)a.setEnabled(["cep","nome","telefone"]);else{var t=e[0];t.cpf=s(t.cpf),t.cep=r(t.cep),t.telefone=o(t.telefone),a.setValue(t),i()}})};var o=function(e){return $("
"+e.replace("(").replace(")")+"
").mask("(00) 00000-0000").text()},s=function(e){return $("
"+e+"
").mask("000.000.000-00").text()},r=function(e){return $("
"+e+"
").mask("00000-000").text()};this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.searchSolicitante=function(){clearTimeout(n),n=setTimeout(function(){var e=a.get("cpf");console.log("cpf ",e)},1e3)},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,i,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(i){i=e.prepareResultPorDia(i),ChartPedidos.init("chartOne","# pedidos por dia",i.labels,i.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(i){i=e.prepareResultPorSolicitante(i),ChartPedidos.init("chartTwo","# pedidos por solicitante",i.labels,i.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var i=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);i.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:i}),t()})},process:function(e,t){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(t,i,a){e.changeTitleHeader(i),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,a)):"formSolicitante"==t&&(e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,a)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var i in e)t.labels.push(e[i].nome),t.data.push(e[i].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var i in e)t.labels.push(this.prepareNumber(e[i].day)),t.data.push(e[i].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/index.html b/public/index.html index 5a11d1fd..f301ad7a 100644 --- a/public/index.html +++ b/public/index.html @@ -83,7 +83,7 @@

Pedidos realizados por dia

- Loading... +
@@ -95,7 +95,7 @@

Pedidos realizados por dia

Gráfico 02

- Loading... +
@@ -107,7 +107,7 @@

Gráfico 02

Tabela

- Loading... +
@@ -117,7 +117,7 @@

Tabela

- Loading... +
diff --git a/public/views/formPedido.html b/public/views/formPedido.html index acadbc25..a0152e41 100644 --- a/public/views/formPedido.html +++ b/public/views/formPedido.html @@ -27,7 +27,7 @@
Pedido encontrado:
- +
diff --git a/public/views/formSolicitante.html b/public/views/formSolicitante.html index 9675cef9..b340f181 100644 --- a/public/views/formSolicitante.html +++ b/public/views/formSolicitante.html @@ -15,7 +15,7 @@

Dados pessoais

- +
O campo nome é obrigatório @@ -24,7 +24,7 @@

Dados pessoais

- +

Endereço

@@ -34,7 +34,7 @@

Endereço

- +
@@ -82,6 +82,8 @@

Endereço

+ +
diff --git a/public/views/process.html b/public/views/process.html index 52a4ff78..eeb430f1 100644 --- a/public/views/process.html +++ b/public/views/process.html @@ -3,7 +3,7 @@
- Loading... +
@@ -14,7 +14,7 @@
- Loading... +
diff --git a/src/js/core.js b/src/js/core.js index dfde6a01..b797dac1 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -5,6 +5,7 @@ var Core = { validator: null, formPedido: null, formSolicitante: null, + pedido: null, init: function() { var $this = this; @@ -88,13 +89,21 @@ var Core = { }, process: function($this, showContentFn) { + if (!$this.pedido) { + $this.pedido = new Pedido(); + } + $this.paginatorForms = new Paginator('--', '.paginator.forms', function(page, title, showContentForms) { $this.changeTitleHeader(title); if (page == 'formPedido') { - $this.formPedido = new FormPedido($this, showContentForms); + if (!$this.formPedido) { + $this.formPedido = new FormPedido($this, $this.pedido, showContentForms); + } } else if (page == 'formSolicitante') { - $this.formSolicitante = new FormSolicitante($this, showContentForms); + if (!$this.formSolicitante) { + $this.formSolicitante = new FormSolicitante($this, $this.pedido, showContentForms); + } } }); diff --git a/src/js/database.js b/src/js/database.js index 68083d13..5516bf37 100644 --- a/src/js/database.js +++ b/src/js/database.js @@ -1,15 +1,20 @@ var Database = { fetchAllPedidos: function(callback) { - var query = "select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante"; + var query = "select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante"; this._execute(query, callback); }, findPedidoByNumero: function(numero, callback) { - var query = "select p.numero, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+numero; + var query = "select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+numero; this._execute(query, callback); }, + findSolicitanteById: function(id, callback) { + var query = "SELECT * FROM solicitantes WHERE id = " + id; + this._execute(query, callback); + }, + fetchAllSolicitantes: function(callback) { var query = "SELECT * FROM solicitantes"; this._execute(query, callback); diff --git a/src/js/form-wizard.js b/src/js/form-wizard.js index 8de65105..bbebd833 100644 --- a/src/js/form-wizard.js +++ b/src/js/form-wizard.js @@ -10,13 +10,16 @@ var FormWizard = function(el, fields, submitCallback) { * Treat fields */ this.initializeFields = function() { + var $this = this; for (var i in fields) { this.initializeField(i, fields[i]); } this.btnSubmit = $el.find('.btn-submit'); this.btnSubmit.click(function() { - submitCallback(); + if ($this.allValidate()) { + submitCallback(); + } }); }; @@ -40,7 +43,7 @@ var FormWizard = function(el, fields, submitCallback) { this.createEvents($fields[field]); if (properties.isDate) { - _startDatepicker($fields[field]); + this.startDatepicker($fields[field]); } if (properties.mask) { @@ -55,10 +58,23 @@ var FormWizard = function(el, fields, submitCallback) { field.el.mask(mask, options); }; - var _startDatepicker = function(field) { + this.startDatepicker = function(field) { + var $this = this; + field.el.datepicker({ format: 'dd/mm/yyyy', - language: "pt-BR" + language: 'pt-BR', + orientation: 'bottom left' + }).on('changeDate', function(e) { + if (field.validator) { + $this.validateField(field); + } + + $this.verifySubmitEnaled(); + + if (field.properties) { + field.properties.onChangeDate(e); + } }); }; @@ -147,6 +163,12 @@ var FormWizard = function(el, fields, submitCallback) { } } + this.setAllEnabled = function() { + for (var i in $fields) { + $fields[i].el.removeAttr('disabled'); + } + } + this.setDisabled = function(fields) { for (var i in fields) { if ($fields[fields[i]]) { @@ -167,6 +189,16 @@ var FormWizard = function(el, fields, submitCallback) { return $fields[field].el.val(); }; + this.getAll = function() { + var ret = {}; + + for (var i in $fields) { + ret[i] = $fields[i].el.val(); + } + + return ret; + } + this.showLoading = function(field) { $fields[field].el.parent().find('.image-loading').addClass('show fadeIn'); } diff --git a/src/js/forms/formPedido.js b/src/js/forms/formPedido.js index 151d6a4a..ee2fa495 100644 --- a/src/js/forms/formPedido.js +++ b/src/js/forms/formPedido.js @@ -1,7 +1,9 @@ -var FormPedido = function(core, showContentFn) { +var FormPedido = function(core, pedido, showContentFn) { var formPedido = null, - timeoutNumero = null; + timeoutNumero = null, + id = 0, + idSolicitante = 0; this.init = function() { $this = this; @@ -16,11 +18,23 @@ var FormPedido = function(core, showContentFn) { }, data_de_compra: { rules: 'required', - isDate: true + isDate: true, + onChangeDate: function() { + + } } }, function() { - core.paginatorForms.setSelectedPage('formSolicitante'); + $this.submit(); }); + showContentFn(); + } + + this.submit = function() { + var values = formPedido.getAll(); + values.id = id; + values.idSolicitante = idSolicitante; + pedido.setData(values); + core.paginatorForms.setSelectedPage('formSolicitante'); } this.keyUpNumero = function(e, field) { @@ -44,7 +58,6 @@ var FormPedido = function(core, showContentFn) { formPedido.setEnabled(['numero']); if (result.length == 1) { result = result[0]; - formPedido.setValue(result); formPedido.verifySubmitEnaled(); @@ -58,8 +71,13 @@ var FormPedido = function(core, showContentFn) { } fieldsPedido.find('li[data-field="'+i+'"] span').text(value); } + + id = result.id; + idSolicitante = result.id_solicitante; $('.about-pedido').removeClass('hide'); } else { + id = 0; + formPedido.setEnabled(['data_de_compra']); $('.about-pedido').addClass('hide'); } formPedido.hideLoading('numero'); diff --git a/src/js/forms/formSolicitante.js b/src/js/forms/formSolicitante.js index bead3824..3421c25b 100644 --- a/src/js/forms/formSolicitante.js +++ b/src/js/forms/formSolicitante.js @@ -1,6 +1,7 @@ -var FormSolicitante = function(core, showContentFn) { +var FormSolicitante = function(core, pedido, showContentFn) { - var formSolicitante = null; + var formSolicitante = null, + timeoutCpf = null; this.init = function() { var $this = this; @@ -14,6 +15,9 @@ var FormSolicitante = function(core, showContentFn) { }, cpf: { mask: '000.000.000-00', + onCompleteMask: function() { + $this.searchCpf(); + } }, cep: { mask: '00000-000', @@ -41,9 +45,46 @@ var FormSolicitante = function(core, showContentFn) { }, function() { }); - showContentFn(); + + this.load(); }; + this.load = function() { + if (pedido.get('id') == 0) { + showContentFn(); + } else { + Database.findSolicitanteById(pedido.get('idSolicitante'), function(result) { + if (result.length == 0) { + formSolicitante.setEnabled(['cep', 'nome', 'telefone']); + } else { + var solicitante = result[0]; + + solicitante.cpf = maskCpf(solicitante.cpf); + solicitante.cep = maskCep(solicitante.cep); + solicitante.telefone = maskTelefone(solicitante.telefone); + + formSolicitante.setValue(solicitante); + showContentFn(); + } + }); + } + } + + var maskTelefone = function(telefone) { + var div = $('
'+telefone.replace('(').replace(')')+'
').mask('(00) 00000-0000'); + return div.text(); + } + + var maskCpf = function(cpf) { + var div = $('
'+cpf+'
').mask('000.000.000-00'); + return div.text(); + } + + var maskCep = function(cep) { + var div = $('
'+cep+'
').mask('00000-000'); + return div.text(); + } + this.searchCep = function(cep) { var $this = this; @@ -56,6 +97,15 @@ var FormSolicitante = function(core, showContentFn) { }); }; + this.searchSolicitante = function() { + clearTimeout(timeoutCpf); + timeoutCpf = setTimeout(function() { + var cpf = formSolicitante.get('cpf'); + console.log('cpf ', cpf); + + }, 1000); + } + this.init(); } \ No newline at end of file diff --git a/src/js/paginator.js b/src/js/paginator.js index 9ffa2af4..06317098 100644 --- a/src/js/paginator.js +++ b/src/js/paginator.js @@ -41,7 +41,7 @@ var Paginator = function(links, el, onPageChange) { $this.selectedPage.find('.content').addClass('show'); } - if (!pagesLoaded.page) { + if (!pagesLoaded[page]) { this.loadHtml(page, this.selectedPage, function() { onPageChange(page, $this.selectedPage.data('title'), showContentFn); }); diff --git a/src/js/pedido.js b/src/js/pedido.js index 42890847..e7a82a43 100644 --- a/src/js/pedido.js +++ b/src/js/pedido.js @@ -5,8 +5,16 @@ var Pedido = function() { var materiais = []; var insumos = []; - this.set = function(key, value) { - data[key] = value; - }; + this.setData = function(d) { + data = d; + } + + this.getData = function() { + return data; + } + + this.get = function(k) { + return data[k]; + } }; \ No newline at end of file diff --git a/src/scss/_form-solicitante.scss b/src/scss/_form-solicitante.scss index 7e2f2ba4..7ac98430 100644 --- a/src/scss/_form-solicitante.scss +++ b/src/scss/_form-solicitante.scss @@ -1,5 +1,7 @@ .form-solicitante { - margin-top:40px; + margin:40px 0 60px; + float:left; + width:100%; } \ No newline at end of file diff --git a/src/scss/_navbar.scss b/src/scss/_navbar.scss index 1d26bf4f..6fdd78d5 100644 --- a/src/scss/_navbar.scss +++ b/src/scss/_navbar.scss @@ -184,7 +184,7 @@ font-family: $font-helvetica; font-weight:bold; color: $color-title-subnav; - padding: 21px 23px 17px; + padding: 20px 23px 17px; } ul.list { diff --git a/src/scss/_paginator.scss b/src/scss/_paginator.scss index b063e089..dcc76f06 100644 --- a/src/scss/_paginator.scss +++ b/src/scss/_paginator.scss @@ -1,6 +1,13 @@ .paginator { + height:100%; + .loading { + + width:100%; + text-align:center; + padding:50px 0; + .hide { display:none; } diff --git a/src/scss/app.scss b/src/scss/app.scss index d57f2e35..8829e3d7 100644 --- a/src/scss/app.scss +++ b/src/scss/app.scss @@ -9,8 +9,8 @@ $color-accent: #39bb9d; @font-face { font-family: 'HelveticaNeueBold'; - src: url('../assets/fonts/HelveticaNeue-Bold.eot'); - src: local('Helvetica Neue Bold'), local('HelveticaNeue'), url('../assets/fonts/HelveticaNeue-Bold.woff') format('woff'), url('../assets/fonts/HelveticaNeue-Bold.ttf') format('truetype'); + src: url('../fonts/HelveticaNeue-Bold.eot'); + src: local('Helvetica Neue Bold'), local('HelveticaNeue'), url('../fonts/HelveticaNeue-Bold.woff') format('woff'), url('../fonts/HelveticaNeue-Bold.ttf') format('truetype'); } $font-helvetica: 'HelveticaNeueBold'; @@ -36,6 +36,12 @@ html { .wrapper { min-height: 100%; margin-bottom: -51px; + position:relative; + + .container { + min-height:100%; + position:relative; + } .push { height:31px; From 8b265d471dfd40b4231932c7863f3e4afe5f4767 Mon Sep 17 00:00:00 2001 From: "agner.e.ballejo" Date: Fri, 9 Jun 2017 14:47:27 -0300 Subject: [PATCH 16/23] adjust form solicitante, adjust validate form --- public/assets/css/app.css | 2 +- public/assets/js/app.js | 2 +- public/views/formSolicitante.html | 22 +++++++------- src/js/database.js | 5 ++++ src/js/form-wizard.js | 19 ++++++++++++ src/js/forms/formPedido.js | 2 +- src/js/forms/formSolicitante.js | 50 ++++++++++++++++++++++--------- src/js/validator.js | 6 +++- src/scss/_form-wizard.scss | 1 - 9 files changed, 79 insertions(+), 30 deletions(-) diff --git a/public/assets/css/app.css b/public/assets/css/app.css index b635c7fd..e9da2844 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1 +1 @@ -*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none;background-color:#fff}.form-pedido{margin-top:20px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .container{min-height:100%;position:relative}html body .wrapper .push{height:31px} +*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:20px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .container{min-height:100%;position:relative}html body .wrapper .push{height:31px} diff --git a/public/assets/js/app.js b/public/assets/js/app.js index 57e90791..ed9c37e8 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var i="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(i,t)},findSolicitanteById:function(e,t){var i="SELECT * FROM solicitantes WHERE id = "+e;this._execute(i,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var i=JSON.parse(e);t(i)})}},Validator=function(e,t){var i={required:function(t){return e.val().length>0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},a=[];this.validate=function(e){for(var t in a){var n=a[t];if(!i[n.name]||!i[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var i in e){var n=e[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={};this.setData=function(t){e=t},this.getData=function(){return e},this.get=function(t){return e[t]}},FormWizard=function(e,t,i){var a=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in t)this.initializeField(n,t[n]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&i()})},this.initializeField=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&this.startDatepicker(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,i){var a={onComplete:i||function(){}};e.el.mask(t,a)};this.startDatepicker=function(e){var t=this;e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(i){e.validator&&t.validateField(e),t.verifySubmitEnaled(),e.properties&&e.properties.onChangeDate(i)})},this.createEvents=function(e){var t=this;e.el.on("keyup",function(i){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(i,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,i){e.status=i;var a=e.el.parent();e.properties.hasLoading&&(a=a.parent()),a.find(".validator-errors span").removeClass("show"),i?a.removeClass("has-error").addClass("has-success"):(a.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),a.addClass("has-error"))})},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)n[e].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.getAll=function(){var e={};for(var t in n)e[t]=n[t].el.val();return e},this.showLoading=function(e){n[e].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e){n[e].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,i){var a=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,i){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),i()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s[e]?i(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){i(e,a.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var i={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(i)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,i,a){this.label=t,this.el=e,this.labels=i,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t,i){var a=null,n=null,o=0,s=0;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){$this.submit()}),i()},this.submit=function(){var i=a.getAll();i.id=o,i.idSolicitante=s,t.setData(i),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(n),n=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero"),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnaled(),e.total=e.total_materiais+e.total_insumos;var t=$(".fields-pedido");for(var i in e){var n=e[i];"total_materiais"!=i&&"total_insumos"!=i&&"total"!=i||(n=n.toFixed(2)),t.find('li[data-field="'+i+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,a.setEnabled(["data_de_compra"]),$(".about-pedido").addClass("hide");a.hideLoading("numero")})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,t,i){var a=null,n=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:10"},telefone:{mask:"(00) 00000-0000"},cpf:{mask:"000.000.000-00",onCompleteMask:function(){e.searchCpf()}},cep:{mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{rules:"required"},uf:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),this.load()},this.load=function(){0==t.get("id")?i():Database.findSolicitanteById(t.get("idSolicitante"),function(e){if(0==e.length)a.setEnabled(["cep","nome","telefone"]);else{var t=e[0];t.cpf=s(t.cpf),t.cep=r(t.cep),t.telefone=o(t.telefone),a.setValue(t),i()}})};var o=function(e){return $("
"+e.replace("(").replace(")")+"
").mask("(00) 00000-0000").text()},s=function(e){return $("
"+e+"
").mask("000.000.000-00").text()},r=function(e){return $("
"+e+"
").mask("00000-000").text()};this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.searchSolicitante=function(){clearTimeout(n),n=setTimeout(function(){var e=a.get("cpf");console.log("cpf ",e)},1e3)},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,i,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(i){i=e.prepareResultPorDia(i),ChartPedidos.init("chartOne","# pedidos por dia",i.labels,i.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(i){i=e.prepareResultPorSolicitante(i),ChartPedidos.init("chartTwo","# pedidos por solicitante",i.labels,i.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var i=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);i.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:i}),t()})},process:function(e,t){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(t,i,a){e.changeTitleHeader(i),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,a)):"formSolicitante"==t&&(e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,a)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var i in e)t.labels.push(e[i].nome),t.data.push(e[i].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var i in e)t.labels.push(this.prepareNumber(e[i].day)),t.data.push(e[i].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var i="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(i,t)},findSolicitanteById:function(e,t){var i="SELECT * FROM solicitantes WHERE id = "+e;this._execute(i,t)},findSolicitanteByCpf:function(e,t){var i="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(i,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var i=JSON.parse(e);t(i)})}},Validator=function(e,t){var i={required:function(t){return e.is("select")?"-1"!=e.val()||""!=e.val():e.is("input")?e.val().length>0:void 0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},a=[];this.validate=function(e){for(var t in a){var n=a[t];if(!i[n.name]||!i[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var i in e){var n=e[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={};this.setData=function(t){e=t},this.getData=function(){return e},this.get=function(t){return e[t]}},FormWizard=function(e,t,i){var a=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in t)this.initializeField(n,t[n]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&i()})},this.initializeField=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&this.startDatepicker(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,i){var a={onComplete:i||function(){}};e.el.mask(t,a)};this.startDatepicker=function(e){var t=this;e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(i){e.validator&&t.validateField(e),t.verifySubmitEnaled(),e.properties&&e.properties.onChangeDate(i)})},this.createEvents=function(e){var t=this;e.el.on("keyup",function(i){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(i,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,i){e.status=i;var a=e.el.parent();e.properties.hasLoading&&(a=a.parent()),a.find(".validator-errors span").removeClass("show"),i?a.removeClass("has-error").addClass("has-success"):(a.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),a.addClass("has-error"))})},this.validateAllFields=function(){for(var e in n)n[e].validator?this.validateField(n[e]):console.log(e)},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)n[e].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].el.cleanVal()},this.getAll=function(){var e={};for(var t in n)e[t]=n[t].el.val();return e},this.showLoading=function(e){n[e].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e){n[e].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,i){var a=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,i){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),i()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s[e]?i(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){i(e,a.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var i={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(i)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,i,a){this.label=t,this.el=e,this.labels=i,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t,i){var a=null,n=null,o=0,s=0;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){$this.submit()}),i()},this.submit=function(){var i=a.getAll();i.id=o,i.idSolicitante=s,t.setData(i),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(n),n=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero"),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnaled(),e.total=e.total_materiais+e.total_insumos;var t=$(".fields-pedido");for(var i in e){var n=e[i];"total_materiais"!=i&&"total_insumos"!=i&&"total"!=i||(n=n.toFixed(2)),t.find('li[data-field="'+i+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");a.setEnabled(["data_de_compra"]),a.hideLoading("numero")})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,t,i){var a=null,n=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),this.load()},this.load=function(){var e=this;0==t.get("id")?i():Database.findSolicitanteById(t.get("idSolicitante"),function(t){if(0==t.length)a.setEnabled(["cep","nome","telefone"]);else{var i=t[0];e.setValueForm(i)}})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),a.setValue(e),a.setAllEnabled()};var o=function(e){return $("
"+e.replace("(").replace(")")+"
").mask("(00) 00000-0000").text()},s=function(e){return $("
"+e+"
").mask("000.000.000-00").text()},r=function(e){return $("
"+e+"
").mask("00000-000").text()};this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){a.setDisabled(["cpf"]);var t=a.getCleanValue("cpf");a.showLoading("cpf"),Database.findSolicitanteByCpf(t,function(t){0==t.length?a.setEnabled(["cep","nome","telefone"]):(e.setValueForm(t[0]),a.validateAllFields(),a.verifySubmitEnaled()),a.hideLoading("cpf")})},1e3)},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,i,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(i){i=e.prepareResultPorDia(i),ChartPedidos.init("chartOne","# pedidos por dia",i.labels,i.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(i){i=e.prepareResultPorSolicitante(i),ChartPedidos.init("chartTwo","# pedidos por solicitante",i.labels,i.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var i=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);i.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:i}),t()})},process:function(e,t){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(t,i,a){e.changeTitleHeader(i),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,a)):"formSolicitante"==t&&(e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,a)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var i in e)t.labels.push(e[i].nome),t.data.push(e[i].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var i in e)t.labels.push(this.prepareNumber(e[i].day)),t.data.push(e[i].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/views/formSolicitante.html b/public/views/formSolicitante.html index b340f181..94f4d115 100644 --- a/public/views/formSolicitante.html +++ b/public/views/formSolicitante.html @@ -5,7 +5,7 @@

Dados pessoais

- +
@@ -14,7 +14,7 @@

Dados pessoais

- +
@@ -23,7 +23,7 @@

Dados pessoais

- +
@@ -32,7 +32,7 @@

Endereço

- +
@@ -42,7 +42,7 @@

Endereço

- +
@@ -51,13 +51,13 @@

Endereço

- +
- +
@@ -66,9 +66,9 @@

Endereço

- - + @@ -77,7 +77,7 @@

Endereço

- +
diff --git a/src/js/database.js b/src/js/database.js index 5516bf37..08312e8d 100644 --- a/src/js/database.js +++ b/src/js/database.js @@ -15,6 +15,11 @@ var Database = { this._execute(query, callback); }, + findSolicitanteByCpf: function(cpf, callback) { + var query = "SELECT * FROM solicitantes WHERE cpf = " + cpf; + this._execute(query, callback); + }, + fetchAllSolicitantes: function(callback) { var query = "SELECT * FROM solicitantes"; this._execute(query, callback); diff --git a/src/js/form-wizard.js b/src/js/form-wizard.js index bbebd833..2c7ed1d9 100644 --- a/src/js/form-wizard.js +++ b/src/js/form-wizard.js @@ -123,6 +123,16 @@ var FormWizard = function(el, fields, submitCallback) { }); } + this.validateAllFields = function() { + for (var i in $fields) { + if ($fields[i].validator) { + this.validateField($fields[i]); + } else { + console.log(i); + } + } + } + this.allValidate = function() { for (var i in $fields) { if (!$fields[i].status) { @@ -189,6 +199,15 @@ var FormWizard = function(el, fields, submitCallback) { return $fields[field].el.val(); }; + this.unmask = function(field) { + return $fields[field].el.unmask(); + } + + this.getCleanValue = function(field) { + return $fields[field].el.cleanVal(); + } + + this.getAll = function() { var ret = {}; diff --git a/src/js/forms/formPedido.js b/src/js/forms/formPedido.js index ee2fa495..dcfaabe3 100644 --- a/src/js/forms/formPedido.js +++ b/src/js/forms/formPedido.js @@ -77,9 +77,9 @@ var FormPedido = function(core, pedido, showContentFn) { $('.about-pedido').removeClass('hide'); } else { id = 0; - formPedido.setEnabled(['data_de_compra']); $('.about-pedido').addClass('hide'); } + formPedido.setEnabled(['data_de_compra']); formPedido.hideLoading('numero'); }); }, 1000); diff --git a/src/js/forms/formSolicitante.js b/src/js/forms/formSolicitante.js index 3421c25b..cd0fee34 100644 --- a/src/js/forms/formSolicitante.js +++ b/src/js/forms/formSolicitante.js @@ -8,18 +8,22 @@ var FormSolicitante = function(core, pedido, showContentFn) { formSolicitante = new FormWizard('.form-solicitante', { nome: { - rules: 'required|min:3|max:10' + rules: 'required|min:3|max:100' }, telefone: { + rules: 'required', mask: '(00) 00000-0000', }, cpf: { + rules: 'required', mask: '000.000.000-00', onCompleteMask: function() { - $this.searchCpf(); - } + $this.searchSolicitante(); + }, + hasLoading: true }, cep: { + rules: 'required', mask: '00000-000', onCompleteMask: function(cep) { $this.searchCep(cep); @@ -33,9 +37,9 @@ var FormSolicitante = function(core, pedido, showContentFn) { rules: 'required' }, complemento: { - rules: 'required' + }, - uf: { + estado: { rules: 'required', select: true }, @@ -50,6 +54,8 @@ var FormSolicitante = function(core, pedido, showContentFn) { }; this.load = function() { + var $this = this; + if (pedido.get('id') == 0) { showContentFn(); } else { @@ -58,18 +64,21 @@ var FormSolicitante = function(core, pedido, showContentFn) { formSolicitante.setEnabled(['cep', 'nome', 'telefone']); } else { var solicitante = result[0]; - - solicitante.cpf = maskCpf(solicitante.cpf); - solicitante.cep = maskCep(solicitante.cep); - solicitante.telefone = maskTelefone(solicitante.telefone); - - formSolicitante.setValue(solicitante); - showContentFn(); + $this.setValueForm(solicitante); } }); } } + this.setValueForm = function(solicitante) { + solicitante.cpf = maskCpf(solicitante.cpf); + solicitante.cep = maskCep(solicitante.cep); + solicitante.telefone = maskTelefone(solicitante.telefone); + + formSolicitante.setValue(solicitante); + formSolicitante.setAllEnabled(); + } + var maskTelefone = function(telefone) { var div = $('
'+telefone.replace('(').replace(')')+'
').mask('(00) 00000-0000'); return div.text(); @@ -98,11 +107,24 @@ var FormSolicitante = function(core, pedido, showContentFn) { }; this.searchSolicitante = function() { + var $this = this; + clearTimeout(timeoutCpf); timeoutCpf = setTimeout(function() { - var cpf = formSolicitante.get('cpf'); - console.log('cpf ', cpf); + formSolicitante.setDisabled(['cpf']); + var cpf = formSolicitante.getCleanValue('cpf'); + formSolicitante.showLoading('cpf'); + Database.findSolicitanteByCpf(cpf, function(result) { + if (result.length == 0) { + formSolicitante.setEnabled(['cep', 'nome', 'telefone']); + } else { + $this.setValueForm(result[0]); + formSolicitante.validateAllFields(); + formSolicitante.verifySubmitEnaled(); + } + formSolicitante.hideLoading('cpf'); + }); }, 1000); } diff --git a/src/js/validator.js b/src/js/validator.js index dbd14ddc..f67f43db 100644 --- a/src/js/validator.js +++ b/src/js/validator.js @@ -2,7 +2,11 @@ var Validator = function (field, rulesValidate){ var rules = { required: function(opt) { - return field.val().length > 0; + if (field.is("select")) { + return field.val() != '-1' || field.val() != ''; + } else if (field.is("input")) { + return field.val().length > 0; + } }, max: function(opt) { return field.val().length <= opt; diff --git a/src/scss/_form-wizard.scss b/src/scss/_form-wizard.scss index ae84dd34..e2f32d49 100644 --- a/src/scss/_form-wizard.scss +++ b/src/scss/_form-wizard.scss @@ -20,7 +20,6 @@ right:3px; top:2px; display:none; - background-color:#fff; } } From e12208c695853d4a5e016a4d9a062dd77ba80b56 Mon Sep 17 00:00:00 2001 From: "agner.e.ballejo" Date: Fri, 9 Jun 2017 15:44:15 -0300 Subject: [PATCH 17/23] add new form material --- gulpfile.js | 1 + public/assets/js/app.js | 2 +- public/views/formMaterial.html | 12 ++++++++++++ public/views/formPedido.html | 2 +- src/js/core.js | 5 +++++ src/js/forms/formMaterial.js | 4 ++++ src/js/forms/formSolicitante.js | 11 ++++++++++- src/js/pedido.js | 4 ++++ 8 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 public/views/formMaterial.html create mode 100644 src/js/forms/formMaterial.js diff --git a/gulpfile.js b/gulpfile.js index 19dcf51a..6e6acab0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -16,6 +16,7 @@ var scripts = [ './src/js/chart_pedidos.js', './src/js/forms/formPedido.js', './src/js/forms/formSolicitante.js', + './src/js/forms/formMaterial.js', './src/js/core.js', ]; diff --git a/public/assets/js/app.js b/public/assets/js/app.js index ed9c37e8..9f424f8f 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var i="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(i,t)},findSolicitanteById:function(e,t){var i="SELECT * FROM solicitantes WHERE id = "+e;this._execute(i,t)},findSolicitanteByCpf:function(e,t){var i="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(i,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var i=JSON.parse(e);t(i)})}},Validator=function(e,t){var i={required:function(t){return e.is("select")?"-1"!=e.val()||""!=e.val():e.is("input")?e.val().length>0:void 0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},a=[];this.validate=function(e){for(var t in a){var n=a[t];if(!i[n.name]||!i[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var i in e){var n=e[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={};this.setData=function(t){e=t},this.getData=function(){return e},this.get=function(t){return e[t]}},FormWizard=function(e,t,i){var a=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in t)this.initializeField(n,t[n]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&i()})},this.initializeField=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&this.startDatepicker(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,i){var a={onComplete:i||function(){}};e.el.mask(t,a)};this.startDatepicker=function(e){var t=this;e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(i){e.validator&&t.validateField(e),t.verifySubmitEnaled(),e.properties&&e.properties.onChangeDate(i)})},this.createEvents=function(e){var t=this;e.el.on("keyup",function(i){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(i,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,i){e.status=i;var a=e.el.parent();e.properties.hasLoading&&(a=a.parent()),a.find(".validator-errors span").removeClass("show"),i?a.removeClass("has-error").addClass("has-success"):(a.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),a.addClass("has-error"))})},this.validateAllFields=function(){for(var e in n)n[e].validator?this.validateField(n[e]):console.log(e)},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)n[e].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].el.cleanVal()},this.getAll=function(){var e={};for(var t in n)e[t]=n[t].el.val();return e},this.showLoading=function(e){n[e].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e){n[e].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,i){var a=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,i){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),i()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s[e]?i(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){i(e,a.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var i={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(i)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,i,a){this.label=t,this.el=e,this.labels=i,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t,i){var a=null,n=null,o=0,s=0;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){$this.submit()}),i()},this.submit=function(){var i=a.getAll();i.id=o,i.idSolicitante=s,t.setData(i),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(n),n=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero"),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnaled(),e.total=e.total_materiais+e.total_insumos;var t=$(".fields-pedido");for(var i in e){var n=e[i];"total_materiais"!=i&&"total_insumos"!=i&&"total"!=i||(n=n.toFixed(2)),t.find('li[data-field="'+i+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");a.setEnabled(["data_de_compra"]),a.hideLoading("numero")})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,t,i){var a=null,n=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){}),this.load()},this.load=function(){var e=this;0==t.get("id")?i():Database.findSolicitanteById(t.get("idSolicitante"),function(t){if(0==t.length)a.setEnabled(["cep","nome","telefone"]);else{var i=t[0];e.setValueForm(i)}})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),a.setValue(e),a.setAllEnabled()};var o=function(e){return $("
"+e.replace("(").replace(")")+"
").mask("(00) 00000-0000").text()},s=function(e){return $("
"+e+"
").mask("000.000.000-00").text()},r=function(e){return $("
"+e+"
").mask("00000-000").text()};this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){a.setDisabled(["cpf"]);var t=a.getCleanValue("cpf");a.showLoading("cpf"),Database.findSolicitanteByCpf(t,function(t){0==t.length?a.setEnabled(["cep","nome","telefone"]):(e.setValueForm(t[0]),a.validateAllFields(),a.verifySubmitEnaled()),a.hideLoading("cpf")})},1e3)},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,i,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(i){i=e.prepareResultPorDia(i),ChartPedidos.init("chartOne","# pedidos por dia",i.labels,i.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(i){i=e.prepareResultPorSolicitante(i),ChartPedidos.init("chartTwo","# pedidos por solicitante",i.labels,i.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var i=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);i.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:i}),t()})},process:function(e,t){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(t,i,a){e.changeTitleHeader(i),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,a)):"formSolicitante"==t&&(e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,a)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var i in e)t.labels.push(e[i].nome),t.data.push(e[i].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var i in e)t.labels.push(this.prepareNumber(e[i].day)),t.data.push(e[i].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var i="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(i,t)},findSolicitanteById:function(e,t){var i="SELECT * FROM solicitantes WHERE id = "+e;this._execute(i,t)},findSolicitanteByCpf:function(e,t){var i="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(i,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var i=JSON.parse(e);t(i)})}},Validator=function(e,t){var i={required:function(t){return e.is("select")?"-1"!=e.val()||""!=e.val():e.is("input")?e.val().length>0:void 0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},a=[];this.validate=function(e){for(var t in a){var n=a[t];if(!i[n.name]||!i[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var i in e){var n=e[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},t={};this.setData=function(t){e=t},this.getData=function(){return e},this.setSolicitante=function(e){t=e},this.get=function(t){return e[t]}},FormWizard=function(e,t,i){var a=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in t)this.initializeField(n,t[n]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&i()})},this.initializeField=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&this.startDatepicker(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,i){var a={onComplete:i||function(){}};e.el.mask(t,a)};this.startDatepicker=function(e){var t=this;e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(i){e.validator&&t.validateField(e),t.verifySubmitEnaled(),e.properties&&e.properties.onChangeDate(i)})},this.createEvents=function(e){var t=this;e.el.on("keyup",function(i){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(i,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,i){e.status=i;var a=e.el.parent();e.properties.hasLoading&&(a=a.parent()),a.find(".validator-errors span").removeClass("show"),i?a.removeClass("has-error").addClass("has-success"):(a.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),a.addClass("has-error"))})},this.validateAllFields=function(){for(var e in n)n[e].validator?this.validateField(n[e]):console.log(e)},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)n[e].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].el.cleanVal()},this.getAll=function(){var e={};for(var t in n)e[t]=n[t].el.val();return e},this.showLoading=function(e){n[e].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e){n[e].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,i){var a=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,i){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),i()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s[e]?i(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){i(e,a.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var i={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(i)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,i,a){this.label=t,this.el=e,this.labels=i,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t,i){var a=null,n=null,o=0,s=0;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){$this.submit()}),i()},this.submit=function(){var i=a.getAll();i.id=o,i.idSolicitante=s,t.setData(i),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(n),n=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero"),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnaled(),e.total=e.total_materiais+e.total_insumos;var t=$(".fields-pedido");for(var i in e){var n=e[i];"total_materiais"!=i&&"total_insumos"!=i&&"total"!=i||(n=n.toFixed(2)),t.find('li[data-field="'+i+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");a.setEnabled(["data_de_compra"]),a.hideLoading("numero")})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,t,i){var a=null,n=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var i=a.getAll();t.setSolicitante(i),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==t.get("id")?i():Database.findSolicitanteById(t.get("idSolicitante"),function(t){if(0==t.length)a.setEnabled(["cep","nome","telefone"]);else{var n=t[0];e.setValueForm(n),e.formSolicitante.validateAllFields(),e.formSolicitante.verifySubmitEnaled()}i()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),a.setValue(e),a.setAllEnabled()};var o=function(e){return $("
"+e.replace("(").replace(")")+"
").mask("(00) 00000-0000").text()},s=function(e){return $("
"+e+"
").mask("000.000.000-00").text()},r=function(e){return $("
"+e+"
").mask("00000-000").text()};this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){a.setDisabled(["cpf"]);var t=a.getCleanValue("cpf");a.showLoading("cpf"),Database.findSolicitanteByCpf(t,function(t){0==t.length?a.setEnabled(["cep","nome","telefone"]):(e.setValueForm(t[0]),a.validateAllFields(),a.verifySubmitEnaled()),a.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,t,i){},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,i,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(i){i=e.prepareResultPorDia(i),ChartPedidos.init("chartOne","# pedidos por dia",i.labels,i.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(i){i=e.prepareResultPorSolicitante(i),ChartPedidos.init("chartTwo","# pedidos por solicitante",i.labels,i.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var i=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);i.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:i}),t()})},process:function(e,t){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(t,i,a){e.changeTitleHeader(i),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,a)):"formSolicitante"==t?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,a)):"formMaterial"==t&&(e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,a)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var i in e)t.labels.push(e[i].nome),t.data.push(e[i].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var i in e)t.labels.push(this.prepareNumber(e[i].day)),t.data.push(e[i].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/views/formMaterial.html b/public/views/formMaterial.html new file mode 100644 index 00000000..7a30e4af --- /dev/null +++ b/public/views/formMaterial.html @@ -0,0 +1,12 @@ +
+ +
+
+
+
+ +
+ +
+ +
\ No newline at end of file diff --git a/public/views/formPedido.html b/public/views/formPedido.html index a0152e41..6b419c70 100644 --- a/public/views/formPedido.html +++ b/public/views/formPedido.html @@ -1,4 +1,4 @@ -
+
diff --git a/src/js/core.js b/src/js/core.js index b797dac1..7c8fb578 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -5,6 +5,7 @@ var Core = { validator: null, formPedido: null, formSolicitante: null, + formMaterial: null, pedido: null, init: function() { @@ -104,6 +105,10 @@ var Core = { if (!$this.formSolicitante) { $this.formSolicitante = new FormSolicitante($this, $this.pedido, showContentForms); } + } else if (page == 'formMaterial') { + if (!$this.formMaterial) { + $this.formMaterial = new FormMaterial($this, $this.pedido, showContentForms); + } } }); diff --git a/src/js/forms/formMaterial.js b/src/js/forms/formMaterial.js new file mode 100644 index 00000000..8159e100 --- /dev/null +++ b/src/js/forms/formMaterial.js @@ -0,0 +1,4 @@ +var FormMaterial = function(core, pedido, showContentFn) { + + +} \ No newline at end of file diff --git a/src/js/forms/formSolicitante.js b/src/js/forms/formSolicitante.js index cd0fee34..ce2b8d81 100644 --- a/src/js/forms/formSolicitante.js +++ b/src/js/forms/formSolicitante.js @@ -47,12 +47,18 @@ var FormSolicitante = function(core, pedido, showContentFn) { rules: 'required|min:3' } }, function() { - + $this.submit(); }); this.load(); }; + this.submit = function() { + var values = formSolicitante.getAll(); + pedido.setSolicitante(values); + core.paginatorForms.setSelectedPage('formMaterial'); + } + this.load = function() { var $this = this; @@ -65,7 +71,10 @@ var FormSolicitante = function(core, pedido, showContentFn) { } else { var solicitante = result[0]; $this.setValueForm(solicitante); + $this.formSolicitante.validateAllFields(); + $this.formSolicitante.verifySubmitEnaled(); } + showContentFn(); }); } } diff --git a/src/js/pedido.js b/src/js/pedido.js index e7a82a43..b2bb2265 100644 --- a/src/js/pedido.js +++ b/src/js/pedido.js @@ -13,6 +13,10 @@ var Pedido = function() { return data; } + this.setSolicitante = function(s) { + solicitante = s; + } + this.get = function(k) { return data[k]; } From cc2433ed99722f0d4fbaff971dda33cfc530a84f Mon Sep 17 00:00:00 2001 From: Agner Date: Mon, 12 Jun 2017 00:24:54 -0300 Subject: [PATCH 18/23] add form finish --- gulpfile.js | 5 + public/assets/css/app.css | 2 +- public/assets/js/app.js | 2 +- public/index.html | 14 +- public/views/formAddress.html | 82 +++++++++++ public/views/formFinish.html | 0 public/views/formInsumo.html | 69 +++++++++ public/views/formInsurance.html | 28 ++++ public/views/formMaterial.html | 55 ++++++-- public/views/formPedido.html | 63 +++++---- public/views/formResumo.html | 161 +++++++++++++++++++++ public/views/formSolicitante.html | 157 ++++++++++++--------- public/views/process.html | 66 +++++++++ src/js/chart_pedidos.js | 2 +- src/js/core.js | 28 +++- src/js/database.js | 10 ++ src/js/form-wizard.js | 225 ++++++++++++++++++++---------- src/js/forms/formAddress.js | 90 ++++++++++++ src/js/forms/formFinish.js | 0 src/js/forms/formInsumo.js | 120 ++++++++++++++++ src/js/forms/formInsurance.js | 36 +++++ src/js/forms/formMaterial.js | 101 +++++++++++++- src/js/forms/formPedido.js | 9 +- src/js/forms/formResumo.js | 83 +++++++++++ src/js/forms/formSolicitante.js | 8 +- src/js/pedido.js | 37 +++++ src/js/validator.js | 4 +- src/scss/_form-address.scss | 7 + src/scss/_form-finish.scss | 0 src/scss/_form-insumo.scss | 7 + src/scss/_form-insurance.scss | 32 +++++ src/scss/_form-material.scss | 7 + src/scss/_form-pedido.scss | 2 +- src/scss/_form-resumo.scss | 14 ++ src/scss/_navbar.scss | 4 + src/scss/app.scss | 18 ++- 36 files changed, 1345 insertions(+), 203 deletions(-) create mode 100644 public/views/formAddress.html create mode 100644 public/views/formFinish.html create mode 100644 public/views/formInsumo.html create mode 100644 public/views/formInsurance.html create mode 100644 public/views/formResumo.html create mode 100644 src/js/forms/formAddress.js create mode 100644 src/js/forms/formFinish.js create mode 100644 src/js/forms/formInsumo.js create mode 100644 src/js/forms/formInsurance.js create mode 100644 src/js/forms/formResumo.js create mode 100644 src/scss/_form-address.scss create mode 100644 src/scss/_form-finish.scss create mode 100644 src/scss/_form-insumo.scss create mode 100644 src/scss/_form-insurance.scss create mode 100644 src/scss/_form-material.scss create mode 100644 src/scss/_form-resumo.scss diff --git a/gulpfile.js b/gulpfile.js index 6e6acab0..46eb2cbb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -17,6 +17,11 @@ var scripts = [ './src/js/forms/formPedido.js', './src/js/forms/formSolicitante.js', './src/js/forms/formMaterial.js', + './src/js/forms/formInsumo.js', + './src/js/forms/formAddress.js', + './src/js/forms/formInsurance.js', + './src/js/forms/formResumo.js', + './src/js/forms/formFinish.js', './src/js/core.js', ]; diff --git a/public/assets/css/app.css b/public/assets/css/app.css index e9da2844..473a4c13 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1 +1 @@ -*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:20px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .container{min-height:100%;position:relative}html body .wrapper .push{height:31px} +*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .dropdown-menu{background-color:#102938}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:30px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.form-material{margin:20px 0 40px;float:left;width:100%}.form-insumo{margin:20px 0 60px;float:left;width:100%}.form-address{margin:20px 0 60px;float:left;width:100%}.form-insurance{margin:20px 0 60px;float:left;width:100%}.form-insurance .sub{margin:20px 0;font-size:16px}.form-insurance .radio{background-color:#eee}.form-insurance .radio label{width:100%;text-align:center;padding:10px}.form-insurance .radio label:hover,.form-insurance .radio label.checked{background-color:#39bb9d;color:#fff}.form-insurance .btn-submit{margin-top:10px}.form-resumo{margin:20px 0 60px;float:left;width:100%}.form-resumo .form-group span{width:100%;display:block}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .dashboard{margin:0 0 30px;float:left;width:100%}html body .wrapper>.container{min-height:100%;position:relative}html body .wrapper>.container .form-center{max-width:600px}html body .wrapper .push{height:31px} diff --git a/public/assets/js/app.js b/public/assets/js/app.js index 9f424f8f..062a1bd2 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,t){var i="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(i,t)},findSolicitanteById:function(e,t){var i="SELECT * FROM solicitantes WHERE id = "+e;this._execute(i,t)},findSolicitanteByCpf:function(e,t){var i="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(i,t)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,t){mysqlQuery(e,function(e){var i=JSON.parse(e);t(i)})}},Validator=function(e,t){var i={required:function(t){return e.is("select")?"-1"!=e.val()||""!=e.val():e.is("input")?e.val().length>0:void 0},max:function(t){return e.val().length<=t},min:function(t){return e.val().length>=t}},a=[];this.validate=function(e){for(var t in a){var n=a[t];if(!i[n.name]||!i[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=t.split("|");for(var i in e){var n=e[i].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},t={};this.setData=function(t){e=t},this.getData=function(){return e},this.setSolicitante=function(e){t=e},this.get=function(t){return e[t]}},FormWizard=function(e,t,i){var a=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in t)this.initializeField(n,t[n]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&i()})},this.initializeField=function(e,t){t.select?$elField=a.find('select[name="'+e+'"]'):$elField=a.find('input[name="'+e+'"]'),n[e]={el:$elField,properties:t,status:!t.rules},t.rules&&(n[e].validator=new Validator($elField,t.rules)),this.createEvents(n[e]),t.isDate&&this.startDatepicker(n[e]),t.mask&&o(n[e],t.mask,t.onCompleteMask)};var o=function(e,t,i){var a={onComplete:i||function(){}};e.el.mask(t,a)};this.startDatepicker=function(e){var t=this;e.el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(i){e.validator&&t.validateField(e),t.verifySubmitEnaled(),e.properties&&e.properties.onChangeDate(i)})},this.createEvents=function(e){var t=this;e.el.on("keyup",function(i){e.validator&&t.validateField(n[$(this).attr("name")]),e.properties.keyUp&&e.properties.keyUp(i,e),t.verifySubmitEnaled()})},this.verifySubmitEnaled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e){e.validator.validate(function(t,i){e.status=i;var a=e.el.parent();e.properties.hasLoading&&(a=a.parent()),a.find(".validator-errors span").removeClass("show"),i?a.removeClass("has-error").addClass("has-success"):(a.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),a.addClass("has-error"))})},this.validateAllFields=function(){for(var e in n)n[e].validator?this.validateField(n[e]):console.log(e)},this.allValidate=function(){for(var e in n)if(!n[e].status)return!1;return!0},this.setValue=function(e){for(var t in e)n[t]&&(n[t].properties.select?n[t].el.val(e[t]):n[t].properties.isDate?(n[t].el.datepicker("update",this.getDate(e[t])),this.validateField(n[t])):n[t].el.attr("value",e[t]))},this.getDate=function(e){var t=e.split("-");return new Date(t[2],t[1],t[0])},this.setEnabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)n[e].el.removeAttr("disabled")},this.setDisabled=function(e){for(var t in e)n[e[t]]&&n[e[t]].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){return n[e].el.val()},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].el.cleanVal()},this.getAll=function(){var e={};for(var t in n)e[t]=n[t].el.val();return e},this.showLoading=function(e){n[e].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e){n[e].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){this.initializeFields()},this.init()},Paginator=function(e,t,i){var a=this,n=$(e),o=$(t),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,t,i){$.ajax({url:"views/"+e+".html"}).done(function(e){t.find(".content").html(e),i()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var t=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s[e]?i(e,this.selectedPage.data("title"),t):this.loadHtml(e,this.selectedPage,function(){i(e,a.selectedPage.data("title"),t)})}},CEP={getInfo:function(e,t){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)t(e);else{var i={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};t(i)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,t,i,a){this.label=t,this.el=e,this.labels=i,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=300,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,t,i){var a=null,n=null,o=0,s=0;this.init=function(){$this=this,a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(e,t){$this.keyUpNumero(e,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){$this.submit()}),i()},this.submit=function(){var i=a.getAll();i.id=o,i.idSolicitante=s,t.setData(i),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpNumero=function(e,t){t.status&&(clearTimeout(n),n=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero"),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnaled(),e.total=e.total_materiais+e.total_insumos;var t=$(".fields-pedido");for(var i in e){var n=e[i];"total_materiais"!=i&&"total_insumos"!=i&&"total"!=i||(n=n.toFixed(2)),t.find('li[data-field="'+i+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");a.setEnabled(["data_de_compra"]),a.hideLoading("numero")})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,t,i){var a=null,n=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(t){e.searchCep(t)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var i=a.getAll();t.setSolicitante(i),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==t.get("id")?i():Database.findSolicitanteById(t.get("idSolicitante"),function(t){if(0==t.length)a.setEnabled(["cep","nome","telefone"]);else{var n=t[0];e.setValueForm(n),e.formSolicitante.validateAllFields(),e.formSolicitante.verifySubmitEnaled()}i()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),a.setValue(e),a.setAllEnabled()};var o=function(e){return $("
"+e.replace("(").replace(")")+"
").mask("(00) 00000-0000").text()},s=function(e){return $("
"+e+"
").mask("000.000.000-00").text()},r=function(e){return $("
"+e+"
").mask("00000-000").text()};this.searchCep=function(e){var t=["rua","numero","complemento","cidade","uf"];a.setDisabled(t),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(t)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){a.setDisabled(["cpf"]);var t=a.getCleanValue("cpf");a.showLoading("cpf"),Database.findSolicitanteByCpf(t,function(t){0==t.length?a.setEnabled(["cep","nome","telefone"]):(e.setValueForm(t[0]),a.validateAllFields(),a.verifySubmitEnaled()),a.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,t,i){},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(t,i,a){e.pages[t](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,t){Database.fetchPedidosPorDia(function(i){i=e.prepareResultPorDia(i),ChartPedidos.init("chartOne","# pedidos por dia",i.labels,i.data),t()})},dashboard2:function(e,t){Database.fetchPedidosPorSolicitantes(function(i){i=e.prepareResultPorSolicitante(i),ChartPedidos.init("chartTwo","# pedidos por solicitante",i.labels,i.data),t()})},dashboard3:function(e,t){Database.fetchAllPedidos(function(e){var i=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);i.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:i}),t()})},process:function(e,t){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(t,i,a){e.changeTitleHeader(i),"formPedido"==t?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,a)):"formSolicitante"==t?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,a)):"formMaterial"==t&&(e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,a)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),t()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var t={labels:[],data:[]};for(var i in e)t.labels.push(e[i].nome),t.data.push(e[i].total);return t},prepareResultPorDia:function(e){var t={data:[],labels:[]};for(var i in e)t.labels.push(this.prepareNumber(e[i].day)),t.data.push(e[i].total);return t},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,i){var t="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(t,i)},findMaterialByIdPedido:function(e,i){var t="SELECT * FROM materiais WHERE id_pedido = "+e;this._execute(t,i)},findInsumoByIdPedido:function(e,i){var t="SELECT * FROM insumos WHERE id_pedido = "+e;this._execute(t,i)},findSolicitanteById:function(e,i){var t="SELECT * FROM solicitantes WHERE id = "+e;this._execute(t,i)},findSolicitanteByCpf:function(e,i){var t="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(t,i)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,i){mysqlQuery(e,function(e){var t=JSON.parse(e);i(t)})}},Validator=function(e,i){var t={required:function(i){return e.is("select")?"-1"!=e.val()&&""!=e.val()&&null!=e.val()&&"null"!=e.val():e.is("input")||e.is("textarea")?e.val().length>0:void 0},max:function(i){return e.val().length<=i},min:function(i){return e.val().length>=i}},a=[];this.validate=function(e){for(var i in a){var n=a[i];if(!t[n.name]||!t[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=i.split("|");for(var t in e){var n=e[t].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},i={},t=[],a=[],n="";this.setAddress=function(i){for(var t in i)e[t]=i[t]},this.setData=function(i){e=i},this.getData=function(){return e},this.setSolicitante=function(e){i=e},this.getSolicitante=function(){return i},this.setMaterial=function(e){t=e},this.getMateriais=function(){return t},this.setInsumos=function(e){console.log("set insumos",a),a=e},this.getInsumos=function(){return console.log("get insumos",a),a},this.setInsurance=function(e){n=e},this.getInsurance=function(){return n},this.get=function(i){return e[i]}},FormWizard=function(e,i,t){var a=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in i)this.initializeField(n,i[n]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&t()})},this.reloadElements=function(){for(var e in i)i[e].el=$()},this.reload=function(){n=[];for(var e in i)this.initializeField(e,i[e]);this.validateAllFields()},this.initializeField=function(e,i){i.select?$elField=a.find('select[data-field="'+e+'"]'):$elField=a.find('input[data-field="'+e+'"], textarea[data-field="'+e+'"]'),n[e]={els:[],properties:i};for(var t=0;t<$elField.length;t++){var s=$($elField[t]);s.attr("data-index",t),n[e].els.push({el:s,status:!i.rules,validator:i.rules?new Validator(s,i.rules):null})}i.isDate&&this.startDatepicker(n[e]),i.mask&&o(n[e],i.mask,i.onCompleteMask),this.createEvents(n[e])};var o=function(e,i,t){var a={onComplete:t||function(){}};for(var n in e.els)e.els[n].el.mask(i,a)};this.startDatepicker=function(e){var i=this;for(var t in e.els)e.els[t].el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(a){e.els[t].validator&&i.validateField(e.els[t]),i.verifySubmitEnabled(),e.properties&&e.properties.onChangeDate(a)})},this.createEvents=function(e){var i=this;for(var t in e.els)e.els[t].el.is("input")?e.els[t].el.on("keyup",function(t){var a=n[$(this).data("field")].els[$(this).data("index")];a.validator&&i.validateField(a,e),e.properties.keyUp&&e.properties.keyUp(t,a),i.verifySubmitEnabled()}):e.els[t].el.on("change",function(t){console.log("change");var a=n[$(this).data("field")].els[$(this).data("index")];a.validator&&i.validateField(a,e),e.properties.keyUp&&e.properties.keyUp(t,a),i.verifySubmitEnabled()})},this.verifySubmitEnabled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e,i){$this=this,e.validator.validate(function(t,a){e.status=a,$this.validateFieldElement(e.el,i.properties,t,a)})},this.validateFieldElement=function(e,i,t,a){var n=e.parent();i.hasLoading&&(n=n.parent()),n.find(".validator-errors span").removeClass("show"),a?n.removeClass("has-error").addClass("has-success"):(n.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),n.addClass("has-error"))},this.validateAllFields=function(){for(var e in n)for(var i in n[e].els){var t=n[e],a=n[e].els[i];a.validator?this.validateField(a,t):console.log("No validator ",e)}},this.allValidate=function(){for(var e in n)for(var i in n[e].els)if(!n[e].els[i].status)return!1;return!0},this.setValue=function(e){for(var i in e)n[i]&&(n[i].properties.select?n[i].els[0].el.val(e[i]):n[i].properties.isDate?(n[i].els[0].el.datepicker("update",this.getDate(e[i])),this.validateField(n[i].els[0],n[i])):n[i].els[0].el.attr("value",e[i]))},this.getDate=function(e){var i=e.split("-");return new Date(i[2],i[1],i[0])},this.setEnabled=function(e,i){if(Array.isArray(e))for(var t in e)n[e[t]]&&n[e[t]].els[0].el.removeAttr("disabled");else n[e].els[i].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)for(var i in n[e].els)this.setEnabled(e,i)},this.setDisabled=function(e,i){if(Array.isArray(e))for(var t in e)n[e[t]]&&n[e[t]].els[0].el.attr("disabled","disabled");else n[e].els[i].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){var i=[];for(var t in n[e].els)i.push(n[e].els[t].el.val());return 1==i.length?i[0]:i},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].el.cleanVal()},this.getAll=function(){var e={};for(var i in n)e[i]=n[i].els[0].el.val();return e},this.showLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){a.on("submit",function(e){e.preventDefault()}),this.initializeFields()},this.init()},Paginator=function(e,i,t){var a=this,n=$(e),o=$(i),s={},l=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){l()},this.loadHtml=function(e,i,t){$.ajax({url:"views/"+e+".html"}).done(function(e){i.find(".content").html(e),t()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var i=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s[e]?t(e,this.selectedPage.data("title"),i):this.loadHtml(e,this.selectedPage,function(){t(e,a.selectedPage.data("title"),i)})}},CEP={getInfo:function(e,i){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)i(e);else{var t={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};i(t)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,i,t,a){this.label=i,this.el=e,this.labels=t,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=100,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,i,t){var a=null,n=null,o=0,s=0;this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(i,t){e.keyUpNumero(i,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){e.submit()}),t()},this.submit=function(){var t=a.getAll();t.id=o,t.idSolicitante=s,i.setData(t),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpNumero=function(e,i){i.status&&(clearTimeout(n),n=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero",0),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnabled(),e.total=e.total_materiais+e.total_insumos;var i=$(".fields-pedido");for(var t in e){var n=e[t];"total_materiais"!=t&&"total_insumos"!=t&&"total"!=t||(n=n.toFixed(2)),i.find('li[data-field="'+t+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");a.setEnabled(["data_de_compra"]),a.hideLoading("numero",0)})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,i,t){var a=null,n=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var t=a.getAll();i.setSolicitante(t),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==i.get("id")?t():Database.findSolicitanteById(i.get("idSolicitante"),function(i){if(0==i.length)a.setEnabled(["cep","nome","telefone"]);else{var n=i[0];e.setValueForm(n),a.validateAllFields(),a.verifySubmitEnabled()}t()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=l(e.cep),e.telefone=o(e.telefone),a.setValue(e),a.setAllEnabled()};var o=function(e){return $("
"+e.replace("(").replace(")")+"
").mask("(00) 00000-0000").text()},s=function(e){return $("
"+e+"
").mask("000.000.000-00").text()},l=function(e){return $("
"+e+"
").mask("00000-000").text()};this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];a.setDisabled(i),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(i)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){a.setDisabled(["cpf"]);var i=a.getCleanValue("cpf");a.showLoading("cpf"),Database.findSolicitanteByCpf(i,function(i){0==i.length?a.setEnabled(["cep","nome","telefone"]):(e.setValueForm(i[0]),a.validateAllFields(),a.verifySubmitEnabled()),a.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,i,t){var a=null;this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-material",{id:{},nome:{rules:"required"},marca:{rules:"required"},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-material").click(function(){e.addMaterial({})}),this.load()},this.submit=function(){i.setMaterial(this.constructObject(a.get("id"),a.get("nome"),a.get("marca"),a.get("quantidade"),a.get("preco"))),e.paginatorForms.setSelectedPage("formInsumo")},this.constructObject=function(e,i,t,a,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],nome:i[s],marca:t[s],quantidade:a[s],preco:n[s]});return o}return[{id:e,nome:i,marca:t,quantidade:a,preco:n}]},this.htmlMaterial=function(e){return'
  • '},this.addMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e)),a.reload()},this.load=function(){var e=this,n=i.get("id");(n=!n)?t():Database.findMaterialByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-material").html("");for(var n in i)e.injectHtmlMaterial(i[n]);a.reload(),t()}else t()})},this.injectHtmlMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e))},this.init()},FormInsumo=function(e,i,t){var a=null,n="";this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-insumo",{id:{},descricao:{rules:"required"},id_material:{rules:"required",select:!0},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-insumo").click(function(){e.addInsumo({})}),this.load()},this.submit=function(){i.setInsumos(this.constructObject(a.get("id"),a.get("descricao"),a.get("id_material"),a.get("quantidade"),a.get("preco"))),e.paginatorForms.setSelectedPage("formAddress")},this.constructObject=function(e,i,t,a,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],descricao:i[s],id_material:t[s],quantidade:a[s],preco:n[s]});return o}return[{id:e,descricao:i,id_material:t,quantidade:a,preco:n}]},this.htmlInsumo=function(e){return'
  • '},this.addInsumo=function(e){$(".list-group.list-insumos").append(this.htmlInsumo(e)),a.reload()},this.load=function(){var e=this;this.createSelectMaterial();var n=i.get("id");(n=!n)?t():Database.findInsumoByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-insumos").html("");for(var n in i)e.injectHtmlInsumo(i[n]);a.reload(),t()}else t()})},this.createSelectMaterial=function(){var e=i.getMateriais();for(var t in e)console.log(e),n='"},this.injectHtmlInsumo=function(e){var i=$(this.htmlInsumo(e));e.id_material&&i.find(".sel-material").val(e.id_material),$(".list-group.list-insumos").append(i)},this.init()},FormAddress=function(e,i,t){var a=null,n=null;this.init=function(){var e=this,t=i.getSolicitante();a=new FormWizard(".form-address",{cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.setValueForm(t)},this.submit=function(){(n={}).cep=a.get("cep").replace("-",""),n.rua=a.get("rua"),n.complemento=a.get("complemento"),n.numero=a.get("numero"),n.estado=a.get("estado"),n.cidade=a.get("cidade"),i.setAddress(n),e.paginatorForms.setSelectedPage("formInsurance")};var o=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.setValueForm=function(e){(n={}).cep=o(e.cep),n.rua=e.rua,n.complemento=e.complemento,n.numero=e.numero,n.estado=e.estado,n.cidade=e.cidade,a.setValue(n),a.setAllEnabled(),a.validateAllFields(),a.verifySubmitEnabled(),t()},this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];a.setDisabled(i),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(i)})},this.init()},FormInsurance=function(e,i,t){var a=null,n="";this.init=function(){var e=this;(a=$(".form-insurance")).find(".btn-submit").click(function(){e.submit()}),a.find(".insurance").on("change",function(){n=$(this).val(),e.checkEnabledSubmit()}),t()},this.submit=function(){i.setInsurance(n),e.paginatorForms.setSelectedPage("formResumo")},this.checkEnabledSubmit=function(){""!=n&&a.find(".btn-submit").removeAttr("disabled")},this.init()},FormResumo=function(e,i,t){var a=null;this.init=function(){a=$(".form-resumo"),this.setValueForPedido(),this.setValuesForSolicitante(),this.setValuesForMateriais(),this.setValuesForInsumos(),this.setValuesForInsurance(),t()},this.setValueForPedido=function(){var e=a.find('.info[data-info="pedido"]'),t=i.getData();this.setValue(e,t)},this.setValuesForSolicitante=function(){var e=a.find('.info[data-info="solicitante"]'),t=i.getSolicitante();this.setValue(e,t)},this.getHtmlMaterial=function(e){return'
  • '+e.nome+'
    '+e.marca+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForMateriais=function(){var e=i.getMateriais();for(var t in e)a.find(".list-material").append(this.getHtmlMaterial(e[t]))},this.getHtmlInsumo=function(e){return'
  • '+e.descricao+'
    '+e.id_material+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForInsumos=function(){var e=i.getInsumos();for(var t in e)a.find(".list-insumos").append(this.getHtmlInsumo(e[t]))},this.setValuesForInsurance=function(){var e=i.getInsurance(),t="";console.log(e),t="s"==e?"Optou pelo seguro extra":"Não optou pelo seguro extra",a.find(".insurance").text(t)},this.setValue=function(e,i){for(var t in i){var a=e.find('span[data-field="'+t+'"]');a&&a.text(i[t])}},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,formInsumo:null,formInsurance:null,formAddress:null,formResumo:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(i,t,a){e.pages[i](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,i){return this.replace(new RegExp(e,"g"),i)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,i){Database.fetchPedidosPorDia(function(t){t=e.prepareResultPorDia(t),ChartPedidos.init("chartOne","# pedidos por dia",t.labels,t.data),i()})},dashboard2:function(e,i){Database.fetchPedidosPorSolicitantes(function(t){t=e.prepareResultPorSolicitante(t),ChartPedidos.init("chartTwo","# pedidos por solicitante",t.labels,t.data),i()})},dashboard3:function(e,i){Database.fetchAllPedidos(function(e){var t=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);t.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:t}),i()})},process:function(e,i){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(i,t,a){e.changeTitleHeader(t),console.log("Change page",i),"formPedido"==i?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,a)):"formSolicitante"==i?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,a)):"formMaterial"==i?e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,a)):"formInsumo"==i?e.formInsumo||(e.formInsumo=new FormInsumo(e,e.pedido,a)):"formAddress"==i?e.formAddress||(e.formAddress=new FormAddress(e,e.pedido,a)):"formInsurance"==i?e.formInsurance||(e.formInsurance=new FormInsurance(e,e.pedido,a)):"formResumo"==i?e.formResumo||(e.formResumo=new FormResumo(e,e.pedido,a)):"formFinish"==i&&(e.formFinish||(e.formFinish=new FormFinish(e,e.pedido,a)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("FormFinish"),i()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var i={labels:[],data:[]};for(var t in e)i.labels.push(e[t].nome),i.data.push(e[t].total);return i},prepareResultPorDia:function(e){var i={data:[],labels:[]};for(var t in e)i.labels.push(this.prepareNumber(e[t].day)),i.data.push(e[t].total);return i},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/index.html b/public/index.html index f301ad7a..e75a6200 100644 --- a/public/index.html +++ b/public/index.html @@ -77,7 +77,7 @@

    -
    +
    @@ -91,8 +91,10 @@

    Pedidos realizados por dia

    -
    -

    Gráfico 02

    +
    +
    @@ -103,8 +105,10 @@

    Gráfico 02

    -
    -

    Tabela

    +
    +
    diff --git a/public/views/formAddress.html b/public/views/formAddress.html new file mode 100644 index 00000000..7b5953ca --- /dev/null +++ b/public/views/formAddress.html @@ -0,0 +1,82 @@ +
    + +

    Endereço de entrega

    + +
    +
    +
    + +
    + + +
    + +
    + O campo CEP é obrigatório +
    +
    +
    + +
    +
    + + + +
    + O campo rua é obrigatório +
    +
    +
    +
    + +
    +
    +
    + + + +
    + O campo número é obrigatório +
    +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    + + + +
    + O campo estado é obrigatório +
    +
    +
    + +
    +
    + + + +
    + O campo cidade é obrigatório +
    +
    +
    +
    + + + +
    \ No newline at end of file diff --git a/public/views/formFinish.html b/public/views/formFinish.html new file mode 100644 index 00000000..e69de29b diff --git a/public/views/formInsumo.html b/public/views/formInsumo.html new file mode 100644 index 00000000..8f96965c --- /dev/null +++ b/public/views/formInsumo.html @@ -0,0 +1,69 @@ +
    +
    +

    Insumos desse pedido

    + +
      + +
    • + + +
      + + + +
      + O campo descrição é obrigatório +
      +
      + +
      +
      +
      + + + +
      + O campo material é obrigatório +
      +
      +
      + +
      +
      + + + +
      + O campo quantidade é obrigatório +
      +
      +
      + +
      +
      + + + +
      + O campo preço é obrigatório +
      +
      +
      +
      +
    • + +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    \ No newline at end of file diff --git a/public/views/formInsurance.html b/public/views/formInsurance.html new file mode 100644 index 00000000..da46e8a2 --- /dev/null +++ b/public/views/formInsurance.html @@ -0,0 +1,28 @@ +
    +
    +

    Seguro

    + +

    É necessário um seguro extra para o transporte dos insumos?

    + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    \ No newline at end of file diff --git a/public/views/formMaterial.html b/public/views/formMaterial.html index 7a30e4af..4373e1d6 100644 --- a/public/views/formMaterial.html +++ b/public/views/formMaterial.html @@ -1,12 +1,51 @@ -
    +
    +
    +

    Materiais desse pedido

    -
    - - -
    - -
    +
      -
    +
  • + + +
    + + +
    + +
    +
    +
    + + +
    +
    + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +
  • + + + +
    +
    + +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/public/views/formPedido.html b/public/views/formPedido.html index 6b419c70..13c7ced0 100644 --- a/public/views/formPedido.html +++ b/public/views/formPedido.html @@ -1,39 +1,40 @@ -
    +
    +
    +

    Pedido

    -
    - -
    - +
    + -
    - - -
    - -
    - O campo de número é obrigatório -
    - -
    -
    Pedido encontrado:
    -
      -
    • Número do pedido:
    • -
    • Solicitante:
    • -
    • Total em materiais: R$
    • -
    • Total em insumos: R$
    • -
    • Total: R$
    • -
    -
    +
    + + +
    + +
    + O campo de número é obrigatório
    -
    - - +
    +
    Pedido encontrado:
    +
      +
    • Número do pedido:
    • +
    • Solicitante:
    • +
    • Total em materiais: R$
    • +
    • Total em insumos: R$
    • +
    • Total: R$
    • +
    +
    - - +
    + + + +
    + O campo de data da compra é obrigatório +
    -
    -
    + + +
    \ No newline at end of file diff --git a/public/views/formResumo.html b/public/views/formResumo.html new file mode 100644 index 00000000..68ac98b0 --- /dev/null +++ b/public/views/formResumo.html @@ -0,0 +1,161 @@ +
    +
    + +
    +

    Pedido

    + +
    + + +
    + +
    + + +
    + +

    Endereço de entrega

    + +
    +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    +

    Dados pessoais do solicitante

    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +

    Endereço do solicitante

    + +
    +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    +

    Materiais

    + +
      + + + +
    +
    + +
    +

    Insumos

    + +
      + +
    +
    + +
    +

    Seguro

    + + +
    + + +
    +
    \ No newline at end of file diff --git a/public/views/formSolicitante.html b/public/views/formSolicitante.html index 94f4d115..0a8f3aff 100644 --- a/public/views/formSolicitante.html +++ b/public/views/formSolicitante.html @@ -1,96 +1,115 @@ -
    -
    -
    -
    -

    Dados pessoais

    +
    + +

    Dados pessoais

    -
    - +
    + + +
    + + +
    + +
    + O campo CPF é obrigatório +
    +
    + +
    + + +
    + O campo nome é obrigatório +
    +
    + +
    + + + +
    + O campo telefone é obrigatório +
    +
    + +

    Endereço

    + +
    +
    +
    +
    - +
    + +
    + O campo CEP é obrigatório +
    +
    +
    - - + +
    - O campo nome é obrigatório + O campo rua é obrigatório
    +
    +
    +
    +
    - - -
    + + -

    Endereço

    - -
    -
    -
    - -
    - - -
    -
    -
    - -
    -
    - - -
    +
    + O campo número é obrigatório
    +
    +
    +
    + + +
    +
    +
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    +
    +
    +
    + + + +
    + O campo estado é obrigatório
    +
    -
    -
    -
    - - -
    -
    +
    +
    + + -
    -
    - - -
    +
    + O campo cidade é obrigatório
    - - - +
    -
    - - -
    - -
    + +
    diff --git a/public/views/process.html b/public/views/process.html index eeb430f1..d156c0c9 100644 --- a/public/views/process.html +++ b/public/views/process.html @@ -21,4 +21,70 @@
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    + +
    + +
    +
    \ No newline at end of file diff --git a/src/js/chart_pedidos.js b/src/js/chart_pedidos.js index 9d2ed960..02bb7583 100644 --- a/src/js/chart_pedidos.js +++ b/src/js/chart_pedidos.js @@ -17,7 +17,7 @@ var ChartPedidos = { constructElement: function() { var ctx = document.getElementById(this.el); - ctx.height = 300; + ctx.height = 100; this.chart = new Chart(ctx, { type: this.type, data: { diff --git a/src/js/core.js b/src/js/core.js index 7c8fb578..a952970f 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -6,6 +6,10 @@ var Core = { formPedido: null, formSolicitante: null, formMaterial: null, + formInsumo: null, + formInsurance: null, + formAddress: null, + formResumo: null, pedido: null, init: function() { @@ -96,6 +100,8 @@ var Core = { $this.paginatorForms = new Paginator('--', '.paginator.forms', function(page, title, showContentForms) { $this.changeTitleHeader(title); + + console.log('Change page', page); if (page == 'formPedido') { if (!$this.formPedido) { @@ -109,11 +115,31 @@ var Core = { if (!$this.formMaterial) { $this.formMaterial = new FormMaterial($this, $this.pedido, showContentForms); } + } else if (page == 'formInsumo') { + if (!$this.formInsumo) { + $this.formInsumo = new FormInsumo($this, $this.pedido, showContentForms); + } + } else if (page == 'formAddress') { + if (!$this.formAddress) { + $this.formAddress = new FormAddress($this, $this.pedido, showContentForms); + } + } else if (page == 'formInsurance') { + if (!$this.formInsurance) { + $this.formInsurance = new FormInsurance($this, $this.pedido, showContentForms); + } + } else if (page == 'formResumo') { + if (!$this.formResumo) { + $this.formResumo = new FormResumo($this, $this.pedido, showContentForms); + } + } else if (page == 'formFinish') { + if (!$this.formFinish) { + $this.formFinish = new FormFinish($this, $this.pedido, showContentForms); + } } }); $this.paginatorForms.init(); - $this.paginatorForms.setSelectedPage('formPedido'); + $this.paginatorForms.setSelectedPage('FormFinish'); showContentFn(); } diff --git a/src/js/database.js b/src/js/database.js index 08312e8d..c689770b 100644 --- a/src/js/database.js +++ b/src/js/database.js @@ -10,6 +10,16 @@ var Database = { this._execute(query, callback); }, + findMaterialByIdPedido: function(id, callback) { + var query = "SELECT * FROM materiais WHERE id_pedido = " + id; + this._execute(query, callback); + }, + + findInsumoByIdPedido: function(id, callback) { + var query = "SELECT * FROM insumos WHERE id_pedido = " + id; + this._execute(query, callback); + }, + findSolicitanteById: function(id, callback) { var query = "SELECT * FROM solicitantes WHERE id = " + id; this._execute(query, callback); diff --git a/src/js/form-wizard.js b/src/js/form-wizard.js index 2c7ed1d9..fbb1b3f4 100644 --- a/src/js/form-wizard.js +++ b/src/js/form-wizard.js @@ -23,24 +23,44 @@ var FormWizard = function(el, fields, submitCallback) { }); }; + this.reloadElements = function() { + for (var i in fields) { + fields[i].el = $(); + } + } + + this.reload = function() { + $fields = []; + + for (var i in fields) { + this.initializeField(i, fields[i]); + } + + this.validateAllFields(); + } + this.initializeField = function(field, properties) { if (properties.select) { - $elField = $el.find('select[name="'+field+'"]'); + $elField = $el.find('select[data-field="'+field+'"]'); } else { - $elField = $el.find('input[name="'+field+'"]'); + $elField = $el.find('input[data-field="'+field+'"], textarea[data-field="'+field+'"]'); } $fields[field] = { - el: $elField, - properties: properties, - status: properties.rules ? false : true - } - - if (properties.rules) { - $fields[field].validator = new Validator($elField, properties.rules); + els: [], + properties: properties } - this.createEvents($fields[field]); + for (var i = 0; i < $elField.length; i++) { + var el = $($elField[i]); + el.attr('data-index', i); + + $fields[field].els.push({ + el: el, + status: properties.rules ? false : true, + validator: properties.rules ? new Validator(el, properties.rules) : null + }); + } if (properties.isDate) { this.startDatepicker($fields[field]); @@ -49,52 +69,80 @@ var FormWizard = function(el, fields, submitCallback) { if (properties.mask) { _startMask($fields[field], properties.mask, properties.onCompleteMask); } + + this.createEvents($fields[field]); }; var _startMask = function(field, mask, onComplete) { var options = { onComplete: onComplete ? onComplete : function() {} }; - field.el.mask(mask, options); + + for (var i in field.els) { + field.els[i].el.mask(mask, options); + } }; this.startDatepicker = function(field) { var $this = this; - field.el.datepicker({ - format: 'dd/mm/yyyy', - language: 'pt-BR', - orientation: 'bottom left' - }).on('changeDate', function(e) { - if (field.validator) { - $this.validateField(field); - } + for (var i in field.els) { + field.els[i].el.datepicker({ + format: 'dd/mm/yyyy', + language: 'pt-BR', + orientation: 'bottom left' + }).on('changeDate', function(e) { + if (field.els[i].validator) { + $this.validateField(field.els[i]); + } - $this.verifySubmitEnaled(); - - if (field.properties) { - field.properties.onChangeDate(e); - } - }); + $this.verifySubmitEnabled(); + + if (field.properties) { + field.properties.onChangeDate(e); + } + }); + } }; this.createEvents = function(field) { var $this = this; - field.el.on('keyup', function(e) { - if (field.validator) { - $this.validateField($fields[$(this).attr('name')]); - } + for (var i in field.els) { + if (field.els[i].el.is('input')) { + field.els[i].el.on('keyup', function(e) { + var f = $fields[$(this).data('field')].els[$(this).data('index')]; - if (field.properties.keyUp) { - field.properties.keyUp(e, field); - } + if (f.validator) { + $this.validateField(f, field); + } - $this.verifySubmitEnaled(); - }); + if (field.properties.keyUp) { + field.properties.keyUp(e, f); + } + + $this.verifySubmitEnabled(); + }); + } else { + field.els[i].el.on('change', function(e) { + console.log('change'); + var f = $fields[$(this).data('field')].els[$(this).data('index')]; + + if (f.validator) { + $this.validateField(f, field); + } + + if (field.properties.keyUp) { + field.properties.keyUp(e, f); + } + + $this.verifySubmitEnabled(); + }); + } + } } - this.verifySubmitEnaled = function() { + this.verifySubmitEnabled = function() { if (this.allValidate()) { this.enableBtnSubmit(); } else { @@ -102,41 +150,53 @@ var FormWizard = function(el, fields, submitCallback) { } } - this.validateField = function(field) { + this.validateField = function(field, fieldProperties) { + $this = this; + field.validator.validate(function(rule, status) { field.status = status; + $this.validateFieldElement(field.el, fieldProperties.properties, rule, status); + }); + } - var formGroup = field.el.parent(); + this.validateFieldElement = function(el, properties, rule, status) { + var formGroup = el.parent(); - if (field.properties.hasLoading) { - formGroup = formGroup.parent(); - } + if (properties.hasLoading) { + formGroup = formGroup.parent(); + } - formGroup.find('.validator-errors span').removeClass('show'); + formGroup.find('.validator-errors span').removeClass('show'); - if (!status) { - formGroup.find('.validator-errors span[data-error="'+rule.name+'"]').addClass('show'); - formGroup.addClass('has-error'); - } else { - formGroup.removeClass('has-error').addClass('has-success'); - } - }); + if (!status) { + formGroup.find('.validator-errors span[data-error="'+rule.name+'"]').addClass('show'); + formGroup.addClass('has-error'); + } else { + formGroup.removeClass('has-error').addClass('has-success'); + } } this.validateAllFields = function() { for (var i in $fields) { - if ($fields[i].validator) { - this.validateField($fields[i]); - } else { - console.log(i); + + for (var y in $fields[i].els) { + var field = $fields[i]; + var fieldEl = $fields[i].els[y]; + if (fieldEl.validator) { + this.validateField(fieldEl, field); + } else { + console.log("No validator ", i); + } } } } this.allValidate = function() { for (var i in $fields) { - if (!$fields[i].status) { - return false; + for (var y in $fields[i].els) { + if (!$fields[i].els[y].status) { + return false; + } } } @@ -147,13 +207,13 @@ var FormWizard = function(el, fields, submitCallback) { for (var i in fields) { if ($fields[i]) { if ($fields[i].properties.select) { - $fields[i].el.val(fields[i]); + $fields[i].els[0].el.val(fields[i]); } else { if ($fields[i].properties.isDate) { - $fields[i].el.datepicker('update', this.getDate(fields[i])); - this.validateField($fields[i]); + $fields[i].els[0].el.datepicker('update', this.getDate(fields[i])); + this.validateField($fields[i].els[0], $fields[i]); } else { - $fields[i].el.attr('value', fields[i]); + $fields[i].els[0].el.attr('value', fields[i]); } } } @@ -165,25 +225,35 @@ var FormWizard = function(el, fields, submitCallback) { return new Date(dateSplit[2], dateSplit[1], dateSplit[0]); } - this.setEnabled = function(fields) { - for (var i in fields) { - if ($fields[fields[i]]) { - $fields[fields[i]].el.removeAttr('disabled'); + this.setEnabled = function(field, index) { + if (Array.isArray(field)) { + for (var i in field) { + if ($fields[field[i]]) { + $fields[field[i]].els[0].el.removeAttr('disabled'); + } } + } else { + $fields[field].els[index].el.removeAttr('disabled'); } } this.setAllEnabled = function() { for (var i in $fields) { - $fields[i].el.removeAttr('disabled'); + for (var y in $fields[i].els) { + this.setEnabled(i, y); + } } } - this.setDisabled = function(fields) { - for (var i in fields) { - if ($fields[fields[i]]) { - $fields[fields[i]].el.attr('disabled', 'disabled'); + this.setDisabled = function(field, index) { + if (Array.isArray(field)) { + for (var i in field) { + if ($fields[field[i]]) { + $fields[field[i]].els[0].el.attr('disabled', 'disabled'); + } } + } else { + $fields[field].els[index].el.attr('disabled', 'disabled'); } } @@ -196,7 +266,13 @@ var FormWizard = function(el, fields, submitCallback) { } this.get = function(field) { - return $fields[field].el.val(); + var ret = []; + + for (var i in $fields[field].els) { + ret.push($fields[field].els[i].el.val()); + } + + return ret.length == 1 ? ret[0] : ret; }; this.unmask = function(field) { @@ -212,24 +288,27 @@ var FormWizard = function(el, fields, submitCallback) { var ret = {}; for (var i in $fields) { - ret[i] = $fields[i].el.val(); + ret[i] = $fields[i].els[0].el.val(); } return ret; } - this.showLoading = function(field) { - $fields[field].el.parent().find('.image-loading').addClass('show fadeIn'); + this.showLoading = function(field, index) { + $fields[field].els[index].el.parent().find('.image-loading').addClass('show fadeIn'); } - this.hideLoading = function(field) { - $fields[field].el.parent().find('.image-loading').removeClass('fadeIn show'); + this.hideLoading = function(field, index) { + $fields[field].els[index].el.parent().find('.image-loading').removeClass('fadeIn show'); } /** * Initialize */ this.init = function() { + $el.on('submit', function(evt) { + evt.preventDefault(); + }); this.initializeFields(); }; diff --git a/src/js/forms/formAddress.js b/src/js/forms/formAddress.js new file mode 100644 index 00000000..e42d8f53 --- /dev/null +++ b/src/js/forms/formAddress.js @@ -0,0 +1,90 @@ +var FormAddress = function(core, pedido, showContentFn) { + + var formAddress = null, + address = null; + + this.init = function() { + var $this = this; + var solicitante = pedido.getSolicitante(); + + formAddress = new FormWizard('.form-address', { + cep: { + rules: 'required', + mask: '00000-000', + onCompleteMask: function(cep) { + $this.searchCep(cep); + }, + hasLoading: true + }, + rua: { + rules: 'required|min:3' + }, + numero: { + rules: 'required' + }, + complemento: { + + }, + estado: { + rules: 'required', + select: true + }, + cidade: { + rules: 'required|min:3' + } + }, function() { + $this.submit(); + }); + + this.setValueForm(solicitante); + } + + this.submit = function( ) { + address = {}; + address.cep = formAddress.get('cep').replace('-', ''); + address.rua = formAddress.get('rua'); + address.complemento = formAddress.get('complemento'); + address.numero = formAddress.get('numero'); + address.estado = formAddress.get('estado'); + address.cidade = formAddress.get('cidade'); + pedido.setAddress(address); + core.paginatorForms.setSelectedPage('formInsurance'); + } + + var maskCep = function(cep) { + var div = $('
    '+cep+'
    ').mask('00000-000'); + return div.text(); + } + + this.setValueForm = function(solicitante) { + address = {}; + address.cep = maskCep(solicitante.cep); + address.rua = solicitante.rua; + address.complemento = solicitante.complemento; + address.numero = solicitante.numero; + address.estado = solicitante.estado; + address.cidade = solicitante.cidade; + + formAddress.setValue(address); + formAddress.setAllEnabled(); + formAddress.validateAllFields(); + formAddress.verifySubmitEnabled(); + + showContentFn(); + } + + this.searchCep = function(cep) { + var $this = this; + + var fieldsAddress = ['cep', 'rua', 'numero', 'complemento', 'cidade', 'uf']; + + formAddress.setDisabled(fieldsAddress); + CEP.getInfo(cep, function(address) { + formAddress.setValue(address); + formAddress.setEnabled(fieldsAddress); + }); + }; + + this.init(); + +} \ No newline at end of file diff --git a/src/js/forms/formFinish.js b/src/js/forms/formFinish.js new file mode 100644 index 00000000..e69de29b diff --git a/src/js/forms/formInsumo.js b/src/js/forms/formInsumo.js new file mode 100644 index 00000000..03c94636 --- /dev/null +++ b/src/js/forms/formInsumo.js @@ -0,0 +1,120 @@ +var FormInsumo = function(core, pedido, showContentFn) { + + var formInsumo = null, + options = ''; + + this.init = function() { + var $this = this; + formInsumo = new FormWizard('.form-wizard.form-insumo', { + id: { + + }, + descricao: { + rules: 'required' + }, + id_material: { + rules: 'required', + select: true + }, + quantidade: { + rules: 'required' + }, + preco: { + rules: 'required' + } + }, function() { + $this.submit(); + }); + + $('.btn-add-insumo').click(function() { + $this.addInsumo({}); + }); + + this.load(); + }; + + this.submit = function() { + pedido.setInsumos(this.constructObject(formInsumo.get('id'), formInsumo.get('descricao'), formInsumo.get('id_material'), formInsumo.get('quantidade'), formInsumo.get('preco'))); + core.paginatorForms.setSelectedPage('formAddress'); + } + + this.constructObject = function(id, descricao, id_material, quantidade, preco) { + if (Array.isArray(id)) { + var objs = []; + for (var i in id) { + objs.push({ + id: id[i], + descricao: descricao[i], + id_material: id_material[i], + quantidade: quantidade[i], + preco: preco[i] + }); + } + return objs; + } + + return [{ + id: id, + descricao: descricao, + id_material: id_material, + quantidade: quantidade, + preco: preco + }]; + } + + this.htmlInsumo = function(insumo) { + var li = '
  • '; + return li; + } + + this.addInsumo = function(insumo) { + $('.list-group.list-insumos').append(this.htmlInsumo(insumo)); + formInsumo.reload(); + } + + this.load = function() { + var $this = this; + + this.createSelectMaterial(); + + var id = pedido.get('id'); + + if (id = 0 || !id) { + showContentFn(); + } else { + Database.findInsumoByIdPedido(pedido.get('id'), function(result) { + if (result.length > 0) { + $('.list-group.list-insumos').html(''); + for (var i in result) { + $this.injectHtmlInsumo(result[i]); + } + formInsumo.reload(); + showContentFn(); + } else { + showContentFn(); + } + }); + } + } + + this.createSelectMaterial = function() { + var materiais = pedido.getMateriais(); + + for (var i in materiais) { + console.log(materiais); + options = ''; + } + } + + this.injectHtmlInsumo = function(insumo) { + var $html = $(this.htmlInsumo(insumo)); + + if (insumo.id_material) { + $html.find('.sel-material').val(insumo.id_material); + } + $('.list-group.list-insumos').append($html); + } + + this.init(); + +}; \ No newline at end of file diff --git a/src/js/forms/formInsurance.js b/src/js/forms/formInsurance.js new file mode 100644 index 00000000..743fe90e --- /dev/null +++ b/src/js/forms/formInsurance.js @@ -0,0 +1,36 @@ +var FormInsurance = function(core, pedido, showContentFn) { + + var formInsurance = null, + valueChecked = ''; + + + this.init = function() { + var $this = this; + formInsurance = $('.form-insurance'); + + formInsurance.find('.btn-submit').click(function() { + $this.submit(); + }); + + formInsurance.find('.insurance').on('change', function() { + valueChecked = $(this).val(); + $this.checkEnabledSubmit(); + }); + + showContentFn(); + } + + this.submit = function() { + pedido.setInsurance(valueChecked); + core.paginatorForms.setSelectedPage('formResumo'); + } + + this.checkEnabledSubmit = function() { + if (valueChecked != '') { + formInsurance.find('.btn-submit').removeAttr('disabled'); + } + } + + this.init(); + +} \ No newline at end of file diff --git a/src/js/forms/formMaterial.js b/src/js/forms/formMaterial.js index 8159e100..50c11ede 100644 --- a/src/js/forms/formMaterial.js +++ b/src/js/forms/formMaterial.js @@ -1,4 +1,103 @@ var FormMaterial = function(core, pedido, showContentFn) { - + var formMaterial = null; + + this.init = function() { + var $this = this; + + formMaterial = new FormWizard('.form-wizard.form-material', { + id: { + + }, + nome: { + rules: 'required' + }, + marca: { + rules: 'required' + }, + quantidade: { + rules: 'required' + }, + preco: { + rules: 'required' + } + }, function() { + $this.submit(); + }); + + $('.btn-add-material').click(function() { + $this.addMaterial({}); + }); + + this.load(); + } + + this.submit = function() { + pedido.setMaterial(this.constructObject(formMaterial.get('id'), formMaterial.get('nome'), formMaterial.get('marca'), formMaterial.get('quantidade'), formMaterial.get('preco'))); + core.paginatorForms.setSelectedPage('formInsumo'); + } + + this.constructObject = function(id, nome, marca, quantidade, preco) { + if (Array.isArray(id)) { + var objs = []; + for (var i in id) { + objs.push({ + id: id[i], + nome: nome[i], + marca: marca[i], + quantidade: quantidade[i], + preco: preco[i] + }); + } + return objs; + } + + return [{ + id: id, + nome: nome, + marca: marca, + quantidade: quantidade, + preco: preco + }]; + } + + this.htmlMaterial = function(material) { + var li = '
  • '; + return li; + } + + this.addMaterial = function(material) { + $('.list-group.list-material').append(this.htmlMaterial(material)); + formMaterial.reload(); + } + + this.load = function() { + var $this = this; + + var id = pedido.get('id'); + + if (id = 0 || !id) { + showContentFn(); + } else { + Database.findMaterialByIdPedido(pedido.get('id'), function(result) { + if (result.length > 0) { + $('.list-group.list-material').html(''); + for (var i in result) { + $this.injectHtmlMaterial(result[i]); + } + formMaterial.reload(); + showContentFn(); + } else { + showContentFn(); + } + }); + } + } + + this.injectHtmlMaterial = function(material) { + $('.list-group.list-material').append(this.htmlMaterial(material)); + } + + this.init(); + } \ No newline at end of file diff --git a/src/js/forms/formPedido.js b/src/js/forms/formPedido.js index dcfaabe3..353661eb 100644 --- a/src/js/forms/formPedido.js +++ b/src/js/forms/formPedido.js @@ -6,7 +6,7 @@ var FormPedido = function(core, pedido, showContentFn) { idSolicitante = 0; this.init = function() { - $this = this; + var $this = this; formPedido = new FormWizard('.form-wizard.form-pedido', { numero: { @@ -50,16 +50,17 @@ var FormPedido = function(core, pedido, showContentFn) { $('.about-pedido').addClass('hide'); return; } + formPedido.setDisabled(['numero', 'data_de_compra']); - formPedido.showLoading('numero'); + formPedido.showLoading('numero', 0); Database.findPedidoByNumero(formPedido.get('numero'), function(result) { formPedido.setEnabled(['numero']); if (result.length == 1) { result = result[0]; formPedido.setValue(result); - formPedido.verifySubmitEnaled(); + formPedido.verifySubmitEnabled(); result.total = result.total_materiais + result.total_insumos; @@ -80,7 +81,7 @@ var FormPedido = function(core, pedido, showContentFn) { $('.about-pedido').addClass('hide'); } formPedido.setEnabled(['data_de_compra']); - formPedido.hideLoading('numero'); + formPedido.hideLoading('numero', 0); }); }, 1000); } diff --git a/src/js/forms/formResumo.js b/src/js/forms/formResumo.js new file mode 100644 index 00000000..58fa95ab --- /dev/null +++ b/src/js/forms/formResumo.js @@ -0,0 +1,83 @@ +var FormResumo = function(core, pedido, showContentFn) { + + var formResumo = null; + + + this.init = function() { + var $this = this; + formResumo = $('.form-resumo'); + + this.setValueForPedido(); + this.setValuesForSolicitante(); + this.setValuesForMateriais(); + this.setValuesForInsumos(); + this.setValuesForInsurance(); + + showContentFn(); + } + + this.setValueForPedido = function() { + var infoPedido = formResumo.find('.info[data-info="pedido"]'); + + var values = pedido.getData(); + this.setValue(infoPedido, values); + } + + this.setValuesForSolicitante = function() { + var infoPedido = formResumo.find('.info[data-info="solicitante"]'); + + var values = pedido.getSolicitante(); + this.setValue(infoPedido, values); + } + + this.getHtmlMaterial = function(material) { + return '
  • '+(material.nome)+'
    '+(material.marca)+'
    '+(material.quantidade)+'
    '+(material.preco)+'
  • '; + } + + this.setValuesForMateriais = function() { + var materiais = pedido.getMateriais(); + + for (var i in materiais) { + formResumo.find('.list-material').append(this.getHtmlMaterial(materiais[i])); + } + } + + this.getHtmlInsumo = function(insumo) { + return '
  • '+(insumo.descricao)+'
    '+(insumo.id_material)+'
    '+(insumo.quantidade)+'
    '+(insumo.preco)+'
  • '; + } + + this.setValuesForInsumos = function() { + var insumos = pedido.getInsumos(); + + for (var i in insumos) { + formResumo.find('.list-insumos').append(this.getHtmlInsumo(insumos[i])); + } + } + + this.setValuesForInsurance = function() { + var insurance = pedido.getInsurance(); + var text = ""; + + console.log(insurance); + + if (insurance == 's') { + text = "Optou pelo seguro extra"; + } else { + text = "Não optou pelo seguro extra"; + } + + formResumo.find('.insurance').text(text); + } + + this.setValue = function(section, values) { + for (var i in values) { + var field = section.find('span[data-field="'+i+'"]'); + if (field) { + field.text(values[i]); + } + } + } + + this.init(); + +} \ No newline at end of file diff --git a/src/js/forms/formSolicitante.js b/src/js/forms/formSolicitante.js index ce2b8d81..c4135573 100644 --- a/src/js/forms/formSolicitante.js +++ b/src/js/forms/formSolicitante.js @@ -71,8 +71,8 @@ var FormSolicitante = function(core, pedido, showContentFn) { } else { var solicitante = result[0]; $this.setValueForm(solicitante); - $this.formSolicitante.validateAllFields(); - $this.formSolicitante.verifySubmitEnaled(); + formSolicitante.validateAllFields(); + formSolicitante.verifySubmitEnabled(); } showContentFn(); }); @@ -106,7 +106,7 @@ var FormSolicitante = function(core, pedido, showContentFn) { this.searchCep = function(cep) { var $this = this; - var fieldsAddress = ['rua', 'numero', 'complemento', 'cidade', 'uf']; + var fieldsAddress = ['cep', 'rua', 'numero', 'complemento', 'cidade', 'uf']; formSolicitante.setDisabled(fieldsAddress); CEP.getInfo(cep, function(address) { @@ -130,7 +130,7 @@ var FormSolicitante = function(core, pedido, showContentFn) { } else { $this.setValueForm(result[0]); formSolicitante.validateAllFields(); - formSolicitante.verifySubmitEnaled(); + formSolicitante.verifySubmitEnabled(); } formSolicitante.hideLoading('cpf'); }); diff --git a/src/js/pedido.js b/src/js/pedido.js index b2bb2265..0bf94fc4 100644 --- a/src/js/pedido.js +++ b/src/js/pedido.js @@ -4,6 +4,13 @@ var Pedido = function() { var solicitante = {}; var materiais = []; var insumos = []; + var insurance = ''; + + this.setAddress = function(attrs) { + for (var i in attrs) { + data[i] = attrs[i]; + } + } this.setData = function(d) { data = d; @@ -16,6 +23,36 @@ var Pedido = function() { this.setSolicitante = function(s) { solicitante = s; } + + this.getSolicitante = function() { + return solicitante; + } + + this.setMaterial = function(m) { + materiais = m; + } + + this.getMateriais = function() { + return materiais; + } + + this.setInsumos = function(i) { + console.log('set insumos', insumos); + insumos = i; + } + + this.getInsumos = function() { + console.log('get insumos', insumos); + return insumos; + } + + this.setInsurance = function(i) { + insurance = i; + } + + this.getInsurance = function() { + return insurance; + } this.get = function(k) { return data[k]; diff --git a/src/js/validator.js b/src/js/validator.js index f67f43db..c961ccc7 100644 --- a/src/js/validator.js +++ b/src/js/validator.js @@ -3,8 +3,8 @@ var Validator = function (field, rulesValidate){ var rules = { required: function(opt) { if (field.is("select")) { - return field.val() != '-1' || field.val() != ''; - } else if (field.is("input")) { + return field.val() != '-1' && field.val() != '' && field.val() != null && field.val() != 'null'; + } else if (field.is("input") || field.is("textarea")) { return field.val().length > 0; } }, diff --git a/src/scss/_form-address.scss b/src/scss/_form-address.scss new file mode 100644 index 00000000..81ce5f41 --- /dev/null +++ b/src/scss/_form-address.scss @@ -0,0 +1,7 @@ +.form-address { + + margin:20px 0 60px; + float:left; + width:100%; + +} \ No newline at end of file diff --git a/src/scss/_form-finish.scss b/src/scss/_form-finish.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/scss/_form-insumo.scss b/src/scss/_form-insumo.scss new file mode 100644 index 00000000..d0904f11 --- /dev/null +++ b/src/scss/_form-insumo.scss @@ -0,0 +1,7 @@ +.form-insumo { + + margin:20px 0 60px; + float:left; + width:100%; + +} \ No newline at end of file diff --git a/src/scss/_form-insurance.scss b/src/scss/_form-insurance.scss new file mode 100644 index 00000000..920f948f --- /dev/null +++ b/src/scss/_form-insurance.scss @@ -0,0 +1,32 @@ +.form-insurance { + + margin:20px 0 60px; + float:left; + width:100%; + + .sub { + margin: 20px 0; + font-size:16px; + } + + .radio { + background-color:#eee; + + label { + width:100%; + text-align:center; + padding:10px; + + &:hover, + &.checked { + background-color: $color-accent; + color:#fff; + } + } + } + + .btn-submit { + margin-top:10px; + } + +} \ No newline at end of file diff --git a/src/scss/_form-material.scss b/src/scss/_form-material.scss new file mode 100644 index 00000000..f00e82b8 --- /dev/null +++ b/src/scss/_form-material.scss @@ -0,0 +1,7 @@ +.form-material { + + margin:20px 0 40px; + float:left; + width:100%; + +} \ No newline at end of file diff --git a/src/scss/_form-pedido.scss b/src/scss/_form-pedido.scss index 4c4aa15b..e717ef56 100644 --- a/src/scss/_form-pedido.scss +++ b/src/scss/_form-pedido.scss @@ -1,6 +1,6 @@ .form-pedido { - margin-top:20px; + margin-top:30px; .about-pedido { width:100%; diff --git a/src/scss/_form-resumo.scss b/src/scss/_form-resumo.scss new file mode 100644 index 00000000..1080d7fe --- /dev/null +++ b/src/scss/_form-resumo.scss @@ -0,0 +1,14 @@ +.form-resumo { + + margin:20px 0 60px; + float:left; + width:100%; + + .form-group { + span { + width:100%; + display:block; + } + } + +} \ No newline at end of file diff --git a/src/scss/_navbar.scss b/src/scss/_navbar.scss index 6fdd78d5..8a802b44 100644 --- a/src/scss/_navbar.scss +++ b/src/scss/_navbar.scss @@ -59,6 +59,10 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + .dropdown-menu { + background-color:$background-navbar; + } + .navbar-header { .navbar-brand { padding-top:13px; diff --git a/src/scss/app.scss b/src/scss/app.scss index 8829e3d7..45daad29 100644 --- a/src/scss/app.scss +++ b/src/scss/app.scss @@ -23,6 +23,12 @@ $font-trebuchet: 'Trebuchet MS Regular'; @import '_form-wizard.scss'; @import '_form-pedido.scss'; @import '_form-solicitante.scss'; +@import '_form-material.scss'; +@import '_form-insumo.scss'; +@import '_form-address.scss'; +@import '_form-insurance.scss'; +@import '_form-resumo.scss'; +@import '_form-finish.scss'; @import '_footer.scss'; html { @@ -38,9 +44,19 @@ html { margin-bottom: -51px; position:relative; - .container { + .dashboard { + margin:0 0 30px; + float:left; + width:100%; + } + + >.container { min-height:100%; position:relative; + + .form-center { + max-width:600px; + } } .push { From 7eed2647842c6a49b8d4527635d696cc9c0a1e0e Mon Sep 17 00:00:00 2001 From: Agner Date: Mon, 12 Jun 2017 08:19:07 -0300 Subject: [PATCH 19/23] add database --- exemplo-query/mysql_lib.js | 17 ++++------ public/assets/js/app.js | 2 +- public/assets/js/libs.js | 17 ++++------ public/views/formPedido.html | 8 ++--- public/views/formSolicitante.html | 2 ++ src/js/core.js | 2 +- src/js/database.js | 55 +++++++++++++++++++++++++++---- src/js/form-wizard.js | 2 +- src/js/forms/formFinish.js | 25 ++++++++++++++ src/js/forms/formPedido.js | 19 +++++------ src/js/forms/formResumo.js | 8 +++++ src/js/forms/formSolicitante.js | 7 ++++ 12 files changed, 119 insertions(+), 45 deletions(-) diff --git a/exemplo-query/mysql_lib.js b/exemplo-query/mysql_lib.js index 86919f8c..8646deeb 100644 --- a/exemplo-query/mysql_lib.js +++ b/exemplo-query/mysql_lib.js @@ -4,17 +4,14 @@ function mysqlQuery(sql_string, callback){ // you have only permission to 'SELECT' on database :D if(typeof sql_string == "string"){ - var api_host = "http://192.241.152.185/"; - var xhttp = new XMLHttpRequest(); - xhttp.onreadystatechange = function() { - if (xhttp.readyState == 4 && xhttp.status == 200) { - if(callback != undefined && typeof callback == "function"){ - callback(xhttp.responseText); - } + var api_host = "http://192.241.152.185/"; + $.ajax({ + url: api_host+encodeURIComponent(sql_string) + }).done(function(result) { + if(callback != undefined && typeof callback == "function"){ + callback(result); } - }; - xhttp.open("GET", encodeURI(api_host+sql_string), false); - xhttp.send(); + }); }else{ console.warn("Your query mysql is not a string"); } diff --git a/public/assets/js/app.js b/public/assets/js/app.js index 062a1bd2..a4006bf8 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoByNumero:function(e,i){var t="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+e;this._execute(t,i)},findMaterialByIdPedido:function(e,i){var t="SELECT * FROM materiais WHERE id_pedido = "+e;this._execute(t,i)},findInsumoByIdPedido:function(e,i){var t="SELECT * FROM insumos WHERE id_pedido = "+e;this._execute(t,i)},findSolicitanteById:function(e,i){var t="SELECT * FROM solicitantes WHERE id = "+e;this._execute(t,i)},findSolicitanteByCpf:function(e,i){var t="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(t,i)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},_execute:function(e,i){mysqlQuery(e,function(e){var t=JSON.parse(e);i(t)})}},Validator=function(e,i){var t={required:function(i){return e.is("select")?"-1"!=e.val()&&""!=e.val()&&null!=e.val()&&"null"!=e.val():e.is("input")||e.is("textarea")?e.val().length>0:void 0},max:function(i){return e.val().length<=i},min:function(i){return e.val().length>=i}},a=[];this.validate=function(e){for(var i in a){var n=a[i];if(!t[n.name]||!t[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=i.split("|");for(var t in e){var n=e[t].split(":");a[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},i={},t=[],a=[],n="";this.setAddress=function(i){for(var t in i)e[t]=i[t]},this.setData=function(i){e=i},this.getData=function(){return e},this.setSolicitante=function(e){i=e},this.getSolicitante=function(){return i},this.setMaterial=function(e){t=e},this.getMateriais=function(){return t},this.setInsumos=function(e){console.log("set insumos",a),a=e},this.getInsumos=function(){return console.log("get insumos",a),a},this.setInsurance=function(e){n=e},this.getInsurance=function(){return n},this.get=function(i){return e[i]}},FormWizard=function(e,i,t){var a=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in i)this.initializeField(n,i[n]);this.btnSubmit=a.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&t()})},this.reloadElements=function(){for(var e in i)i[e].el=$()},this.reload=function(){n=[];for(var e in i)this.initializeField(e,i[e]);this.validateAllFields()},this.initializeField=function(e,i){i.select?$elField=a.find('select[data-field="'+e+'"]'):$elField=a.find('input[data-field="'+e+'"], textarea[data-field="'+e+'"]'),n[e]={els:[],properties:i};for(var t=0;t<$elField.length;t++){var s=$($elField[t]);s.attr("data-index",t),n[e].els.push({el:s,status:!i.rules,validator:i.rules?new Validator(s,i.rules):null})}i.isDate&&this.startDatepicker(n[e]),i.mask&&o(n[e],i.mask,i.onCompleteMask),this.createEvents(n[e])};var o=function(e,i,t){var a={onComplete:t||function(){}};for(var n in e.els)e.els[n].el.mask(i,a)};this.startDatepicker=function(e){var i=this;for(var t in e.els)e.els[t].el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(a){e.els[t].validator&&i.validateField(e.els[t]),i.verifySubmitEnabled(),e.properties&&e.properties.onChangeDate(a)})},this.createEvents=function(e){var i=this;for(var t in e.els)e.els[t].el.is("input")?e.els[t].el.on("keyup",function(t){var a=n[$(this).data("field")].els[$(this).data("index")];a.validator&&i.validateField(a,e),e.properties.keyUp&&e.properties.keyUp(t,a),i.verifySubmitEnabled()}):e.els[t].el.on("change",function(t){console.log("change");var a=n[$(this).data("field")].els[$(this).data("index")];a.validator&&i.validateField(a,e),e.properties.keyUp&&e.properties.keyUp(t,a),i.verifySubmitEnabled()})},this.verifySubmitEnabled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e,i){$this=this,e.validator.validate(function(t,a){e.status=a,$this.validateFieldElement(e.el,i.properties,t,a)})},this.validateFieldElement=function(e,i,t,a){var n=e.parent();i.hasLoading&&(n=n.parent()),n.find(".validator-errors span").removeClass("show"),a?n.removeClass("has-error").addClass("has-success"):(n.find('.validator-errors span[data-error="'+t.name+'"]').addClass("show"),n.addClass("has-error"))},this.validateAllFields=function(){for(var e in n)for(var i in n[e].els){var t=n[e],a=n[e].els[i];a.validator?this.validateField(a,t):console.log("No validator ",e)}},this.allValidate=function(){for(var e in n)for(var i in n[e].els)if(!n[e].els[i].status)return!1;return!0},this.setValue=function(e){for(var i in e)n[i]&&(n[i].properties.select?n[i].els[0].el.val(e[i]):n[i].properties.isDate?(n[i].els[0].el.datepicker("update",this.getDate(e[i])),this.validateField(n[i].els[0],n[i])):n[i].els[0].el.attr("value",e[i]))},this.getDate=function(e){var i=e.split("-");return new Date(i[2],i[1],i[0])},this.setEnabled=function(e,i){if(Array.isArray(e))for(var t in e)n[e[t]]&&n[e[t]].els[0].el.removeAttr("disabled");else n[e].els[i].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)for(var i in n[e].els)this.setEnabled(e,i)},this.setDisabled=function(e,i){if(Array.isArray(e))for(var t in e)n[e[t]]&&n[e[t]].els[0].el.attr("disabled","disabled");else n[e].els[i].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){var i=[];for(var t in n[e].els)i.push(n[e].els[t].el.val());return 1==i.length?i[0]:i},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].el.cleanVal()},this.getAll=function(){var e={};for(var i in n)e[i]=n[i].els[0].el.val();return e},this.showLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){a.on("submit",function(e){e.preventDefault()}),this.initializeFields()},this.init()},Paginator=function(e,i,t){var a=this,n=$(e),o=$(i),s={},l=function(){n.click(function(){$(this).hasClass("enabled")&&a.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){l()},this.loadHtml=function(e,i,t){$.ajax({url:"views/"+e+".html"}).done(function(e){i.find(".content").html(e),t()})},this.setSelectedPage=function(e){a=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var i=function(){a.selectedPage.find(".loading").addClass("hide"),a.selectedPage.find(".content").addClass("show")};s[e]?t(e,this.selectedPage.data("title"),i):this.loadHtml(e,this.selectedPage,function(){t(e,a.selectedPage.data("title"),i)})}},CEP={getInfo:function(e,i){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)i(e);else{var t={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};i(t)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,i,t,a){this.label=i,this.el=e,this.labels=t,this.data=a,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=100,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,i,t){var a=null,n=null,o=0,s=0;this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-pedido",{numero:{rules:"required",keyUp:function(i,t){e.keyUpNumero(i,t)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){e.submit()}),t()},this.submit=function(){var t=a.getAll();t.id=o,t.idSolicitante=s,i.setData(t),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpNumero=function(e,i){i.status&&(clearTimeout(n),n=setTimeout(function(){""!=a.get("numero")?(a.setDisabled(["numero","data_de_compra"]),a.showLoading("numero",0),Database.findPedidoByNumero(a.get("numero"),function(e){if(a.setEnabled(["numero"]),1==e.length){e=e[0],a.setValue(e),a.verifySubmitEnabled(),e.total=e.total_materiais+e.total_insumos;var i=$(".fields-pedido");for(var t in e){var n=e[t];"total_materiais"!=t&&"total_insumos"!=t&&"total"!=t||(n=n.toFixed(2)),i.find('li[data-field="'+t+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");a.setEnabled(["data_de_compra"]),a.hideLoading("numero",0)})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,i,t){var a=null,n=null;this.init=function(){var e=this;a=new FormWizard(".form-solicitante",{nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var t=a.getAll();i.setSolicitante(t),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==i.get("id")?t():Database.findSolicitanteById(i.get("idSolicitante"),function(i){if(0==i.length)a.setEnabled(["cep","nome","telefone"]);else{var n=i[0];e.setValueForm(n),a.validateAllFields(),a.verifySubmitEnabled()}t()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=l(e.cep),e.telefone=o(e.telefone),a.setValue(e),a.setAllEnabled()};var o=function(e){return $("
    "+e.replace("(").replace(")")+"
    ").mask("(00) 00000-0000").text()},s=function(e){return $("
    "+e+"
    ").mask("000.000.000-00").text()},l=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];a.setDisabled(i),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(i)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){a.setDisabled(["cpf"]);var i=a.getCleanValue("cpf");a.showLoading("cpf"),Database.findSolicitanteByCpf(i,function(i){0==i.length?a.setEnabled(["cep","nome","telefone"]):(e.setValueForm(i[0]),a.validateAllFields(),a.verifySubmitEnabled()),a.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,i,t){var a=null;this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-material",{id:{},nome:{rules:"required"},marca:{rules:"required"},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-material").click(function(){e.addMaterial({})}),this.load()},this.submit=function(){i.setMaterial(this.constructObject(a.get("id"),a.get("nome"),a.get("marca"),a.get("quantidade"),a.get("preco"))),e.paginatorForms.setSelectedPage("formInsumo")},this.constructObject=function(e,i,t,a,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],nome:i[s],marca:t[s],quantidade:a[s],preco:n[s]});return o}return[{id:e,nome:i,marca:t,quantidade:a,preco:n}]},this.htmlMaterial=function(e){return'
  • '},this.addMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e)),a.reload()},this.load=function(){var e=this,n=i.get("id");(n=!n)?t():Database.findMaterialByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-material").html("");for(var n in i)e.injectHtmlMaterial(i[n]);a.reload(),t()}else t()})},this.injectHtmlMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e))},this.init()},FormInsumo=function(e,i,t){var a=null,n="";this.init=function(){var e=this;a=new FormWizard(".form-wizard.form-insumo",{id:{},descricao:{rules:"required"},id_material:{rules:"required",select:!0},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-insumo").click(function(){e.addInsumo({})}),this.load()},this.submit=function(){i.setInsumos(this.constructObject(a.get("id"),a.get("descricao"),a.get("id_material"),a.get("quantidade"),a.get("preco"))),e.paginatorForms.setSelectedPage("formAddress")},this.constructObject=function(e,i,t,a,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],descricao:i[s],id_material:t[s],quantidade:a[s],preco:n[s]});return o}return[{id:e,descricao:i,id_material:t,quantidade:a,preco:n}]},this.htmlInsumo=function(e){return'
  • '},this.addInsumo=function(e){$(".list-group.list-insumos").append(this.htmlInsumo(e)),a.reload()},this.load=function(){var e=this;this.createSelectMaterial();var n=i.get("id");(n=!n)?t():Database.findInsumoByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-insumos").html("");for(var n in i)e.injectHtmlInsumo(i[n]);a.reload(),t()}else t()})},this.createSelectMaterial=function(){var e=i.getMateriais();for(var t in e)console.log(e),n='"},this.injectHtmlInsumo=function(e){var i=$(this.htmlInsumo(e));e.id_material&&i.find(".sel-material").val(e.id_material),$(".list-group.list-insumos").append(i)},this.init()},FormAddress=function(e,i,t){var a=null,n=null;this.init=function(){var e=this,t=i.getSolicitante();a=new FormWizard(".form-address",{cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.setValueForm(t)},this.submit=function(){(n={}).cep=a.get("cep").replace("-",""),n.rua=a.get("rua"),n.complemento=a.get("complemento"),n.numero=a.get("numero"),n.estado=a.get("estado"),n.cidade=a.get("cidade"),i.setAddress(n),e.paginatorForms.setSelectedPage("formInsurance")};var o=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.setValueForm=function(e){(n={}).cep=o(e.cep),n.rua=e.rua,n.complemento=e.complemento,n.numero=e.numero,n.estado=e.estado,n.cidade=e.cidade,a.setValue(n),a.setAllEnabled(),a.validateAllFields(),a.verifySubmitEnabled(),t()},this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];a.setDisabled(i),CEP.getInfo(e,function(e){a.setValue(e),a.setEnabled(i)})},this.init()},FormInsurance=function(e,i,t){var a=null,n="";this.init=function(){var e=this;(a=$(".form-insurance")).find(".btn-submit").click(function(){e.submit()}),a.find(".insurance").on("change",function(){n=$(this).val(),e.checkEnabledSubmit()}),t()},this.submit=function(){i.setInsurance(n),e.paginatorForms.setSelectedPage("formResumo")},this.checkEnabledSubmit=function(){""!=n&&a.find(".btn-submit").removeAttr("disabled")},this.init()},FormResumo=function(e,i,t){var a=null;this.init=function(){a=$(".form-resumo"),this.setValueForPedido(),this.setValuesForSolicitante(),this.setValuesForMateriais(),this.setValuesForInsumos(),this.setValuesForInsurance(),t()},this.setValueForPedido=function(){var e=a.find('.info[data-info="pedido"]'),t=i.getData();this.setValue(e,t)},this.setValuesForSolicitante=function(){var e=a.find('.info[data-info="solicitante"]'),t=i.getSolicitante();this.setValue(e,t)},this.getHtmlMaterial=function(e){return'
  • '+e.nome+'
    '+e.marca+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForMateriais=function(){var e=i.getMateriais();for(var t in e)a.find(".list-material").append(this.getHtmlMaterial(e[t]))},this.getHtmlInsumo=function(e){return'
  • '+e.descricao+'
    '+e.id_material+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForInsumos=function(){var e=i.getInsumos();for(var t in e)a.find(".list-insumos").append(this.getHtmlInsumo(e[t]))},this.setValuesForInsurance=function(){var e=i.getInsurance(),t="";console.log(e),t="s"==e?"Optou pelo seguro extra":"Não optou pelo seguro extra",a.find(".insurance").text(t)},this.setValue=function(e,i){for(var t in i){var a=e.find('span[data-field="'+t+'"]');a&&a.text(i[t])}},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,formInsumo:null,formInsurance:null,formAddress:null,formResumo:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(i,t,a){e.pages[i](e,a)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,i){return this.replace(new RegExp(e,"g"),i)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,i){Database.fetchPedidosPorDia(function(t){t=e.prepareResultPorDia(t),ChartPedidos.init("chartOne","# pedidos por dia",t.labels,t.data),i()})},dashboard2:function(e,i){Database.fetchPedidosPorSolicitantes(function(t){t=e.prepareResultPorSolicitante(t),ChartPedidos.init("chartTwo","# pedidos por solicitante",t.labels,t.data),i()})},dashboard3:function(e,i){Database.fetchAllPedidos(function(e){var t=[];for(var a in e){var n=Number(e[a].total_materiais)+Number(e[a].total_insumos);t.push([e[a].numero,e[a].nome,e[a].data_de_compra.replaceAll("-","/"),"R$ "+e[a].total_materiais.toFixed(2),"R$ "+e[a].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:t}),i()})},process:function(e,i){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(i,t,a){e.changeTitleHeader(t),console.log("Change page",i),"formPedido"==i?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,a)):"formSolicitante"==i?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,a)):"formMaterial"==i?e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,a)):"formInsumo"==i?e.formInsumo||(e.formInsumo=new FormInsumo(e,e.pedido,a)):"formAddress"==i?e.formAddress||(e.formAddress=new FormAddress(e,e.pedido,a)):"formInsurance"==i?e.formInsurance||(e.formInsurance=new FormInsurance(e,e.pedido,a)):"formResumo"==i?e.formResumo||(e.formResumo=new FormResumo(e,e.pedido,a)):"formFinish"==i&&(e.formFinish||(e.formFinish=new FormFinish(e,e.pedido,a)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("FormFinish"),i()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var i={labels:[],data:[]};for(var t in e)i.labels.push(e[t].nome),i.data.push(e[t].total);return i},prepareResultPorDia:function(e){var i={data:[],labels:[]};for(var t in e)i.labels.push(this.prepareNumber(e[t].day)),i.data.push(e[t].total);return i},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoById:function(e,i){var a="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.id = "+e;this._execute(a,i)},findMaterialByIdPedido:function(e,i){var a="SELECT * FROM materiais WHERE id_pedido = "+e;this._execute(a,i)},findInsumoByIdPedido:function(e,i){var a="SELECT * FROM insumos WHERE id_pedido = "+e;this._execute(a,i)},findSolicitanteById:function(e,i){var a="SELECT * FROM solicitantes WHERE id = "+e;this._execute(a,i)},findSolicitanteByCpf:function(e,i){var a="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(a,i)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},insertPedido:function(e,i){var a="INSERT INTO pedidos (id_solicitante, data_de_compra, cep, rua, numero, bairro, cidade, estado, pais) VALUES ("+e.id_solicitante+", '"+e.data_de_compra+"', '"+e.cep+"', '"+e.rua+"', '"+e.numero+"', '"+e.bairro+"', '"+e.cidade+"', '"+e.estado+"', '"+e.pais+"')";this._execute(a,i)},insertSolicitante:function(e,i){var a="INSERT INTO solicitantes (nome, telefone, cpf, cep, rua, numero, bairro, cidade, estado, pais) VALUES ('"+e.nome+"', '"+e.telefone+"', '"+e.cpf+"', '"+e.cep+"', '"+e.rua+"', "+e.numero+", '"+e.bairro+"', '"+e.cidade+"', '"+e.cidade+"', '"+e.estado+"', '"+e.pais+"')";this._execute(a,i)},insertMaterial:function(e,i,a){var t="INSERT INTO materiais (id_pedido, nome, marca, preco, quantidade) VALUES ("+e+", '"+i.nome+"', '"+i.marca+"', '"+i.marca+"', "+i.preco+", "+i.quantidade+")";this._execute(t,a)},insertInsumo:function(e,i,a){var t="INSERT INTO insumos (id_pedido, id_material, descricao, preco, quantidade) VALUES ("+e+", '"+i.id_material+"', '"+i.descricao+"', "+i.preco+", "+i.quantidade+")";this._execute(t,a)},updatePedido:function(e,i,a){var t="UPDATE pedidos SET id_solicitante = "+i.id_solicitante+", data_de_compra = '"+i.data_de_compra+"', cep = '"+i.cep+"', ";t+="rua = '"+i.rua+"', numero = "+i.numero+", bairro = '"+i.bairro+"', cidade = '"+i.cidade+"', estado = '"+i.estado+"', ",t+="pais = '"+i.pais+"' WHERE id = "+e,this._execute(t,a)},updateSolicitante:function(e,i){var a="UPDATE solicitantes SET nome = '"+e.nome+"', telefone = '"+e.telefone+"', cpf = '"+e.cpf+"', cep = '"+e.cep+"', ";a+="rua = '"+e.rua+"', numero = "+e.numero+", bairro = '"+e.bairro+"', cidade = '"+e.cidade+"', estado = '"+e.estado+"', ",a+="pais = '"+e.pais+"' WHERE id = "+e.id,this._execute(a,i)},updateMaterial:function(e,i,a,t){var n="UPDATE materiais SET id_pedido = "+i+", nome = '"+a.nome+"', marca = '"+a.marca+"', preco = '"+a.preco+"', ";n+="quantidade = "+a.quantidade+" WHERE id = "+e,this._execute(n,t)},updateInsumo:function(e,i,a,t){var n="UPDATE insumos SET id_pedido = "+i+", id_material = "+a.id_material+", descricao = '"+a.descricao+"', preco = '"+a.preco+"', ";n+="quantidade = "+a.quantidade+" WHERE id = "+e,this._execute(n,t)},_execute:function(e,i){mysqlQuery(e,i)}},Validator=function(e,i){var a={required:function(i){return e.is("select")?"-1"!=e.val()&&""!=e.val()&&null!=e.val()&&"null"!=e.val():e.is("input")||e.is("textarea")?e.val().length>0:void 0},max:function(i){return e.val().length<=i},min:function(i){return e.val().length>=i}},t=[];this.validate=function(e){for(var i in t){var n=t[i];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=i.split("|");for(var a in e){var n=e[a].split(":");t[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},i={},a=[],t=[],n="";this.setAddress=function(i){for(var a in i)e[a]=i[a]},this.setData=function(i){e=i},this.getData=function(){return e},this.setSolicitante=function(e){i=e},this.getSolicitante=function(){return i},this.setMaterial=function(e){a=e},this.getMateriais=function(){return a},this.setInsumos=function(e){console.log("set insumos",t),t=e},this.getInsumos=function(){return console.log("get insumos",t),t},this.setInsurance=function(e){n=e},this.getInsurance=function(){return n},this.get=function(i){return e[i]}},FormWizard=function(e,i,a){var t=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in i)this.initializeField(n,i[n]);this.btnSubmit=t.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&a()})},this.reloadElements=function(){for(var e in i)i[e].el=$()},this.reload=function(){n=[];for(var e in i)this.initializeField(e,i[e]);this.validateAllFields()},this.initializeField=function(e,i){i.select?$elField=t.find('select[data-field="'+e+'"]'):$elField=t.find('input[data-field="'+e+'"], textarea[data-field="'+e+'"]'),n[e]={els:[],properties:i};for(var a=0;a<$elField.length;a++){var s=$($elField[a]);s.attr("data-index",a),n[e].els.push({el:s,status:!i.rules,validator:i.rules?new Validator(s,i.rules):null})}i.isDate&&this.startDatepicker(n[e]),i.mask&&o(n[e],i.mask,i.onCompleteMask),this.createEvents(n[e])};var o=function(e,i,a){var t={onComplete:a||function(){}};for(var n in e.els)e.els[n].el.mask(i,t)};this.startDatepicker=function(e){var i=this;for(var a in e.els)e.els[a].el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(t){e.els[a].validator&&i.validateField(e.els[a]),i.verifySubmitEnabled(),e.properties&&e.properties.onChangeDate(t)})},this.createEvents=function(e){var i=this;for(var a in e.els)e.els[a].el.is("input")?e.els[a].el.on("keyup",function(a){var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()}):e.els[a].el.on("change",function(a){console.log("change");var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()})},this.verifySubmitEnabled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e,i){$this=this,e.validator.validate(function(a,t){e.status=t,$this.validateFieldElement(e.el,i.properties,a,t)})},this.validateFieldElement=function(e,i,a,t){var n=e.parent();i.hasLoading&&(n=n.parent()),n.find(".validator-errors span").removeClass("show"),t?n.removeClass("has-error").addClass("has-success"):(n.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),n.addClass("has-error"))},this.validateAllFields=function(){for(var e in n)for(var i in n[e].els){var a=n[e],t=n[e].els[i];t.validator?this.validateField(t,a):console.log("No validator ",e)}},this.allValidate=function(){for(var e in n)for(var i in n[e].els)if(!n[e].els[i].status)return!1;return!0},this.setValue=function(e){for(var i in e)n[i]&&(n[i].properties.select?n[i].els[0].el.val(e[i]):n[i].properties.isDate?(n[i].els[0].el.datepicker("update",this.getDate(e[i])),this.validateField(n[i].els[0],n[i])):n[i].els[0].el.attr("value",e[i]))},this.getDate=function(e){var i=e.split("-");return new Date(i[2],i[1],i[0])},this.setEnabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.removeAttr("disabled");else n[e].els[i].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)for(var i in n[e].els)this.setEnabled(e,i)},this.setDisabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.attr("disabled","disabled");else n[e].els[i].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){var i=[];for(var a in n[e].els)i.push(n[e].els[a].el.val());return 1==i.length?i[0]:i},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].els[0].el.cleanVal()},this.getAll=function(){var e={};for(var i in n)e[i]=n[i].els[0].el.val();return e},this.showLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){t.on("submit",function(e){e.preventDefault()}),this.initializeFields()},this.init()},Paginator=function(e,i,a){var t=this,n=$(e),o=$(i),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&t.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,i,a){$.ajax({url:"views/"+e+".html"}).done(function(e){i.find(".content").html(e),a()})},this.setSelectedPage=function(e){t=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var i=function(){t.selectedPage.find(".loading").addClass("hide"),t.selectedPage.find(".content").addClass("show")};s[e]?a(e,this.selectedPage.data("title"),i):this.loadHtml(e,this.selectedPage,function(){a(e,t.selectedPage.data("title"),i)})}},CEP={getInfo:function(e,i){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)i(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};i(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,i,a,t){this.label=i,this.el=e,this.labels=a,this.data=t,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=100,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,i,a){var t=null,n=null,o=0,s=0;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-pedido",{id:{keyUp:function(i,a){e.keyUpId(i,a)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){e.submit()}),a()},this.submit=function(){var a=t.getAll();a.id=o,a.idSolicitante=s,i.setData(a),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpId=function(e,i){i.status&&(clearTimeout(n),n=setTimeout(function(){""!=t.get("id")?(t.setDisabled(["id","data_de_compra"]),t.showLoading("id",0),Database.findPedidoById(t.get("id"),function(e){if(t.setEnabled(["id"]),1==e.length){e=e[0],t.setValue(e),t.verifySubmitEnabled(),e.total=e.total_materiais+e.total_insumos;var i=$(".fields-pedido");for(var a in e){var n=e[a];"total_materiais"!=a&&"total_insumos"!=a&&"total"!=a||(n=n.toFixed(2)),i.find('li[data-field="'+a+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");t.setEnabled(["data_de_compra"]),t.hideLoading("id",0)})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,i,a){var t=null,n=null;this.init=function(){var e=this;t=new FormWizard(".form-solicitante",{id:{},nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var a=t.getAll();a.cpf=t.getCleanValue("cpf"),a.cep=a.cep.replace("-",""),a.telefone=a.telefone.replace(" ",""),i.setSolicitante(a),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==i.get("id")?a():Database.findSolicitanteById(i.get("idSolicitante"),function(i){if(0==i.length)t.setEnabled(["cep","nome","telefone"]);else{var n=i[0];e.setValueForm(n),t.validateAllFields(),t.verifySubmitEnabled()}a()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),t.setValue(e),t.setAllEnabled()};var o=function(e){return $("
    "+e.replace("(").replace(")")+"
    ").mask("(00) 00000-0000").text()},s=function(e){return $("
    "+e+"
    ").mask("000.000.000-00").text()},r=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){t.setDisabled(["cpf"]);var i=t.getCleanValue("cpf");t.showLoading("cpf"),Database.findSolicitanteByCpf(i,function(i){0==i.length?t.setEnabled(["cep","nome","telefone"]):(e.setValueForm(i[0]),t.validateAllFields(),t.verifySubmitEnabled()),t.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,i,a){var t=null;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-material",{id:{},nome:{rules:"required"},marca:{rules:"required"},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-material").click(function(){e.addMaterial({})}),this.load()},this.submit=function(){i.setMaterial(this.constructObject(t.get("id"),t.get("nome"),t.get("marca"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formInsumo")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],nome:i[s],marca:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,nome:i,marca:a,quantidade:t,preco:n}]},this.htmlMaterial=function(e){return'
  • '},this.addMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e)),t.reload()},this.load=function(){var e=this,n=i.get("id");(n=!n)?a():Database.findMaterialByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-material").html("");for(var n in i)e.injectHtmlMaterial(i[n]);t.reload(),a()}else a()})},this.injectHtmlMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e))},this.init()},FormInsumo=function(e,i,a){var t=null,n="";this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-insumo",{id:{},descricao:{rules:"required"},id_material:{rules:"required",select:!0},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-insumo").click(function(){e.addInsumo({})}),this.load()},this.submit=function(){i.setInsumos(this.constructObject(t.get("id"),t.get("descricao"),t.get("id_material"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formAddress")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],descricao:i[s],id_material:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,descricao:i,id_material:a,quantidade:t,preco:n}]},this.htmlInsumo=function(e){return'
  • '},this.addInsumo=function(e){$(".list-group.list-insumos").append(this.htmlInsumo(e)),t.reload()},this.load=function(){var e=this;this.createSelectMaterial();var n=i.get("id");(n=!n)?a():Database.findInsumoByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-insumos").html("");for(var n in i)e.injectHtmlInsumo(i[n]);t.reload(),a()}else a()})},this.createSelectMaterial=function(){var e=i.getMateriais();for(var a in e)console.log(e),n='"},this.injectHtmlInsumo=function(e){var i=$(this.htmlInsumo(e));e.id_material&&i.find(".sel-material").val(e.id_material),$(".list-group.list-insumos").append(i)},this.init()},FormAddress=function(e,i,a){var t=null,n=null;this.init=function(){var e=this,a=i.getSolicitante();t=new FormWizard(".form-address",{cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.setValueForm(a)},this.submit=function(){(n={}).cep=t.get("cep").replace("-",""),n.rua=t.get("rua"),n.complemento=t.get("complemento"),n.numero=t.get("numero"),n.estado=t.get("estado"),n.cidade=t.get("cidade"),i.setAddress(n),e.paginatorForms.setSelectedPage("formInsurance")};var o=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.setValueForm=function(e){(n={}).cep=o(e.cep),n.rua=e.rua,n.complemento=e.complemento,n.numero=e.numero,n.estado=e.estado,n.cidade=e.cidade,t.setValue(n),t.setAllEnabled(),t.validateAllFields(),t.verifySubmitEnabled(),a()},this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.init()},FormInsurance=function(e,i,a){var t=null,n="";this.init=function(){var e=this;(t=$(".form-insurance")).find(".btn-submit").click(function(){e.submit()}),t.find(".insurance").on("change",function(){n=$(this).val(),e.checkEnabledSubmit()}),a()},this.submit=function(){i.setInsurance(n),e.paginatorForms.setSelectedPage("formResumo")},this.checkEnabledSubmit=function(){""!=n&&t.find(".btn-submit").removeAttr("disabled")},this.init()},FormResumo=function(e,i,a){var t=null;this.init=function(){var e=this;t=$(".form-resumo"),this.setValueForPedido(),this.setValuesForSolicitante(),this.setValuesForMateriais(),this.setValuesForInsumos(),this.setValuesForInsurance(),t.find(".btn-submit").click(function(){e.submit()}),a()},this.submit=function(){e.paginatorForms.setSelectedPage("formFinish")},this.setValueForPedido=function(){var e=t.find('.info[data-info="pedido"]'),a=i.getData();this.setValue(e,a)},this.setValuesForSolicitante=function(){var e=t.find('.info[data-info="solicitante"]'),a=i.getSolicitante();this.setValue(e,a)},this.getHtmlMaterial=function(e){return'
  • '+e.nome+'
    '+e.marca+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForMateriais=function(){var e=i.getMateriais();for(var a in e)t.find(".list-material").append(this.getHtmlMaterial(e[a]))},this.getHtmlInsumo=function(e){return'
  • '+e.descricao+'
    '+e.id_material+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForInsumos=function(){var e=i.getInsumos();for(var a in e)t.find(".list-insumos").append(this.getHtmlInsumo(e[a]))},this.setValuesForInsurance=function(){var e=i.getInsurance(),a="";console.log(e),a="s"==e?"Optou pelo seguro extra":"Não optou pelo seguro extra",t.find(".insurance").text(a)},this.setValue=function(e,i){for(var a in i){var t=e.find('span[data-field="'+a+'"]');t&&t.text(i[a])}},this.init()},FormFinish=function(e,i,a){this.init=function(){this.mergeSolicitante(),a()},this.mergeSolicitante=function(){var e=i.getSolicitante();0==e.id?Database.insertSolicitante(e,function(e){console.log(e)}):Database.updateSolicitante(e,function(e){console.log(e)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,formInsumo:null,formInsurance:null,formAddress:null,formResumo:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(i,a,t){e.pages[i](e,t)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,i){return this.replace(new RegExp(e,"g"),i)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,i){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),i()})},dashboard2:function(e,i){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),i()})},dashboard3:function(e,i){Database.fetchAllPedidos(function(e){var a=[];for(var t in e){var n=Number(e[t].total_materiais)+Number(e[t].total_insumos);a.push([e[t].numero,e[t].nome,e[t].data_de_compra.replaceAll("-","/"),"R$ "+e[t].total_materiais.toFixed(2),"R$ "+e[t].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),i()})},process:function(e,i){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(i,a,t){e.changeTitleHeader(a),console.log("Change page",i),"formPedido"==i?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,t)):"formSolicitante"==i?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,t)):"formMaterial"==i?e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,t)):"formInsumo"==i?e.formInsumo||(e.formInsumo=new FormInsumo(e,e.pedido,t)):"formAddress"==i?e.formAddress||(e.formAddress=new FormAddress(e,e.pedido,t)):"formInsurance"==i?e.formInsurance||(e.formInsurance=new FormInsurance(e,e.pedido,t)):"formResumo"==i?e.formResumo||(e.formResumo=new FormResumo(e,e.pedido,t)):"formFinish"==i&&(e.formFinish||(e.formFinish=new FormFinish(e,e.pedido,t)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),i()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var i={labels:[],data:[]};for(var a in e)i.labels.push(e[a].nome),i.data.push(e[a].total);return i},prepareResultPorDia:function(e){var i={data:[],labels:[]};for(var a in e)i.labels.push(this.prepareNumber(e[a].day)),i.data.push(e[a].total);return i},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/assets/js/libs.js b/public/assets/js/libs.js index fb9bfc21..61a359d3 100644 --- a/public/assets/js/libs.js +++ b/public/assets/js/libs.js @@ -4,17 +4,14 @@ function mysqlQuery(sql_string, callback){ // you have only permission to 'SELECT' on database :D if(typeof sql_string == "string"){ - var api_host = "http://192.241.152.185/"; - var xhttp = new XMLHttpRequest(); - xhttp.onreadystatechange = function() { - if (xhttp.readyState == 4 && xhttp.status == 200) { - if(callback != undefined && typeof callback == "function"){ - callback(xhttp.responseText); - } + var api_host = "http://192.241.152.185/"; + $.ajax({ + url: api_host+encodeURIComponent(sql_string) + }).done(function(result) { + if(callback != undefined && typeof callback == "function"){ + callback(result); } - }; - xhttp.open("GET", encodeURI(api_host+sql_string), false); - xhttp.send(); + }); }else{ console.warn("Your query mysql is not a string"); } diff --git a/public/views/formPedido.html b/public/views/formPedido.html index 13c7ced0..cb948c57 100644 --- a/public/views/formPedido.html +++ b/public/views/formPedido.html @@ -3,16 +3,12 @@

    Pedido

    - +
    - +
    - -
    - O campo de número é obrigatório -
    Pedido encontrado:
    diff --git a/public/views/formSolicitante.html b/public/views/formSolicitante.html index 0a8f3aff..43781179 100644 --- a/public/views/formSolicitante.html +++ b/public/views/formSolicitante.html @@ -2,6 +2,8 @@

    Dados pessoais

    + +
    diff --git a/src/js/core.js b/src/js/core.js index a952970f..3824cca4 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -139,7 +139,7 @@ var Core = { }); $this.paginatorForms.init(); - $this.paginatorForms.setSelectedPage('FormFinish'); + $this.paginatorForms.setSelectedPage('formPedido'); showContentFn(); } diff --git a/src/js/database.js b/src/js/database.js index c689770b..50f6bcdc 100644 --- a/src/js/database.js +++ b/src/js/database.js @@ -5,8 +5,8 @@ var Database = { this._execute(query, callback); }, - findPedidoByNumero: function(numero, callback) { - var query = "select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.numero = "+numero; + findPedidoById: function(id, callback) { + var query = "select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.id = "+id; this._execute(query, callback); }, @@ -45,11 +45,54 @@ var Database = { this._execute(query, callback); }, + insertPedido: function(pedido, callback) { + var query = "INSERT INTO pedidos (id_solicitante, data_de_compra, cep, rua, numero, bairro, cidade, estado, pais) VALUES ("+pedido.id_solicitante+", '"+pedido.data_de_compra+"', '"+pedido.cep+"', '"+pedido.rua+"', '"+pedido.numero+"', '"+pedido.bairro+"', '"+pedido.cidade+"', '"+pedido.estado+"', '"+pedido.pais+"')"; + this._execute(query, callback); + }, + + insertSolicitante: function(solicitante, callback) { + var query = "INSERT INTO solicitantes (nome, telefone, cpf, cep, rua, numero, bairro, cidade, estado, pais) VALUES ('"+solicitante.nome+"', '"+solicitante.telefone+"', '"+solicitante.cpf+"', '"+solicitante.cep+"', '"+solicitante.rua+"', "+solicitante.numero+", '"+solicitante.bairro+"', '"+solicitante.cidade+"', '"+solicitante.cidade+"', '"+solicitante.estado+"', '"+solicitante.pais+"')"; + this._execute(query, callback); + }, + + insertMaterial: function(id_pedido, material, callback) { + var query = "INSERT INTO materiais (id_pedido, nome, marca, preco, quantidade) VALUES ("+id_pedido+", '"+material.nome+"', '"+material.marca+"', '"+material.marca+"', "+material.preco+", "+material.quantidade+")"; + this._execute(query, callback); + }, + + insertInsumo: function(id_pedido, insumo, callback) { + var query = "INSERT INTO insumos (id_pedido, id_material, descricao, preco, quantidade) VALUES ("+id_pedido+", '"+insumo.id_material+"', '"+insumo.descricao+"', "+insumo.preco+", "+insumo.quantidade+")"; + this._execute(query, callback); + }, + + updatePedido: function(id, pedido, callback) { + var query = "UPDATE pedidos SET id_solicitante = "+pedido.id_solicitante+", data_de_compra = '" + pedido.data_de_compra + "', cep = '"+pedido.cep+"', "; + query += "rua = '"+pedido.rua+"', numero = "+pedido.numero+", bairro = '"+pedido.bairro+"', cidade = '"+pedido.cidade+"', estado = '"+pedido.estado+"', "; + query += "pais = '"+pedido.pais+"' WHERE id = "+ id; + this._execute(query, callback); + }, + + updateSolicitante: function(solicitante, callback) { + var query = "UPDATE solicitantes SET nome = '"+solicitante.nome+"', telefone = '"+solicitante.telefone+"', cpf = '"+solicitante.cpf+"', cep = '"+solicitante.cep+"', "; + query += "rua = '"+solicitante.rua+"', numero = "+solicitante.numero+", bairro = '"+solicitante.bairro+"', cidade = '"+solicitante.cidade+"', estado = '"+solicitante.estado+"', "; + query += "pais = '"+solicitante.pais+"' WHERE id = "+ solicitante.id; + this._execute(query, callback); + }, + + updateMaterial: function(id, id_pedido, material, callback) { + var query = "UPDATE materiais SET id_pedido = "+id_pedido+", nome = '"+material.nome+"', marca = '"+material.marca+"', preco = '"+material.preco+"', "; + query += "quantidade = "+material.quantidade+" WHERE id = "+id; + this._execute(query, callback); + }, + + updateInsumo: function(id, id_pedido, insumo, callback) { + var query = "UPDATE insumos SET id_pedido = "+id_pedido+", id_material = "+insumo.id_material+", descricao = '"+insumo.descricao+"', preco = '"+insumo.preco+"', "; + query += "quantidade = "+insumo.quantidade+" WHERE id = "+id; + this._execute(query, callback); + }, + _execute: function(query, callback) { - mysqlQuery(query, function(result) { - var json = JSON.parse(result); - callback(json); - }); + mysqlQuery(query, callback); } } \ No newline at end of file diff --git a/src/js/form-wizard.js b/src/js/form-wizard.js index fbb1b3f4..a8527439 100644 --- a/src/js/form-wizard.js +++ b/src/js/form-wizard.js @@ -280,7 +280,7 @@ var FormWizard = function(el, fields, submitCallback) { } this.getCleanValue = function(field) { - return $fields[field].el.cleanVal(); + return $fields[field].els[0].el.cleanVal(); } diff --git a/src/js/forms/formFinish.js b/src/js/forms/formFinish.js index e69de29b..d3842aa3 100644 --- a/src/js/forms/formFinish.js +++ b/src/js/forms/formFinish.js @@ -0,0 +1,25 @@ +var FormFinish = function(core, pedido, showContentFn) { + + this.init = function() { + this.mergeSolicitante(); + + showContentFn(); + } + + this.mergeSolicitante = function() { + var solicitante = pedido.getSolicitante(); + + if (solicitante.id == 0) { + Database.insertSolicitante(solicitante, function(result) { + console.log(result); + }); + } else { + Database.updateSolicitante(solicitante, function(result) { + console.log(result); + }); + } + }; + + this.init(); + +}; \ No newline at end of file diff --git a/src/js/forms/formPedido.js b/src/js/forms/formPedido.js index 353661eb..47284c68 100644 --- a/src/js/forms/formPedido.js +++ b/src/js/forms/formPedido.js @@ -9,10 +9,9 @@ var FormPedido = function(core, pedido, showContentFn) { var $this = this; formPedido = new FormWizard('.form-wizard.form-pedido', { - numero: { - rules: 'required', + id: { keyUp: function(e, field) { - $this.keyUpNumero(e, field); + $this.keyUpId(e, field); }, hasLoading: true }, @@ -37,7 +36,7 @@ var FormPedido = function(core, pedido, showContentFn) { core.paginatorForms.setSelectedPage('formSolicitante'); } - this.keyUpNumero = function(e, field) { + this.keyUpId = function(e, field) { var $this = this; if (!field.status) { @@ -46,17 +45,17 @@ var FormPedido = function(core, pedido, showContentFn) { clearTimeout(timeoutNumero); timeoutNumero = setTimeout(function() { - if (formPedido.get('numero') == '') { + if (formPedido.get('id') == '') { $('.about-pedido').addClass('hide'); return; } - formPedido.setDisabled(['numero', 'data_de_compra']); + formPedido.setDisabled(['id', 'data_de_compra']); - formPedido.showLoading('numero', 0); + formPedido.showLoading('id', 0); - Database.findPedidoByNumero(formPedido.get('numero'), function(result) { - formPedido.setEnabled(['numero']); + Database.findPedidoById(formPedido.get('id'), function(result) { + formPedido.setEnabled(['id']); if (result.length == 1) { result = result[0]; formPedido.setValue(result); @@ -81,7 +80,7 @@ var FormPedido = function(core, pedido, showContentFn) { $('.about-pedido').addClass('hide'); } formPedido.setEnabled(['data_de_compra']); - formPedido.hideLoading('numero', 0); + formPedido.hideLoading('id', 0); }); }, 1000); } diff --git a/src/js/forms/formResumo.js b/src/js/forms/formResumo.js index 58fa95ab..639c111f 100644 --- a/src/js/forms/formResumo.js +++ b/src/js/forms/formResumo.js @@ -13,9 +13,17 @@ var FormResumo = function(core, pedido, showContentFn) { this.setValuesForInsumos(); this.setValuesForInsurance(); + formResumo.find('.btn-submit').click(function() { + $this.submit(); + }); + showContentFn(); } + this.submit = function() { + core.paginatorForms.setSelectedPage('formFinish'); + } + this.setValueForPedido = function() { var infoPedido = formResumo.find('.info[data-info="pedido"]'); diff --git a/src/js/forms/formSolicitante.js b/src/js/forms/formSolicitante.js index c4135573..9a3c852b 100644 --- a/src/js/forms/formSolicitante.js +++ b/src/js/forms/formSolicitante.js @@ -7,6 +7,9 @@ var FormSolicitante = function(core, pedido, showContentFn) { var $this = this; formSolicitante = new FormWizard('.form-solicitante', { + id: { + + }, nome: { rules: 'required|min:3|max:100' }, @@ -55,6 +58,10 @@ var FormSolicitante = function(core, pedido, showContentFn) { this.submit = function() { var values = formSolicitante.getAll(); + values.cpf = formSolicitante.getCleanValue('cpf'); + values.cep = values.cep.replace('-', ''); + values.telefone = values.telefone.replace(' ', ''); + pedido.setSolicitante(values); core.paginatorForms.setSelectedPage('formMaterial'); } From 3628438d5c84e182c1f61ccaf961e48e9744b6da Mon Sep 17 00:00:00 2001 From: Agner Date: Mon, 12 Jun 2017 08:25:15 -0300 Subject: [PATCH 20/23] add message succes --- public/assets/css/app.css | 2 +- public/assets/images/success_icon.png | Bin 0 -> 5681 bytes public/assets/js/app.js | 2 +- public/views/formFinish.html | 10 ++++++++++ src/js/forms/formFinish.js | 2 +- src/scss/_form-finish.scss | 19 +++++++++++++++++++ 6 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 public/assets/images/success_icon.png diff --git a/public/assets/css/app.css b/public/assets/css/app.css index 473a4c13..e1f7efe9 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1 +1 @@ -*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .dropdown-menu{background-color:#102938}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:30px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.form-material{margin:20px 0 40px;float:left;width:100%}.form-insumo{margin:20px 0 60px;float:left;width:100%}.form-address{margin:20px 0 60px;float:left;width:100%}.form-insurance{margin:20px 0 60px;float:left;width:100%}.form-insurance .sub{margin:20px 0;font-size:16px}.form-insurance .radio{background-color:#eee}.form-insurance .radio label{width:100%;text-align:center;padding:10px}.form-insurance .radio label:hover,.form-insurance .radio label.checked{background-color:#39bb9d;color:#fff}.form-insurance .btn-submit{margin-top:10px}.form-resumo{margin:20px 0 60px;float:left;width:100%}.form-resumo .form-group span{width:100%;display:block}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .dashboard{margin:0 0 30px;float:left;width:100%}html body .wrapper>.container{min-height:100%;position:relative}html body .wrapper>.container .form-center{max-width:600px}html body .wrapper .push{height:31px} +*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .dropdown-menu{background-color:#102938}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:30px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.form-material{margin:20px 0 40px;float:left;width:100%}.form-insumo{margin:20px 0 60px;float:left;width:100%}.form-address{margin:20px 0 60px;float:left;width:100%}.form-insurance{margin:20px 0 60px;float:left;width:100%}.form-insurance .sub{margin:20px 0;font-size:16px}.form-insurance .radio{background-color:#eee}.form-insurance .radio label{width:100%;text-align:center;padding:10px}.form-insurance .radio label:hover,.form-insurance .radio label.checked{background-color:#39bb9d;color:#fff}.form-insurance .btn-submit{margin-top:10px}.form-resumo{margin:20px 0 60px;float:left;width:100%}.form-resumo .form-group span{width:100%;display:block}.form-finish{margin:20px 0 60px;float:left;width:100%}.form-finish .message{width:100%;text-align:center;padding:30px 10px 0}.form-finish .message h5{color:#0ea02e;font-size:20px;font-weight:bold}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .dashboard{margin:0 0 30px;float:left;width:100%}html body .wrapper>.container{min-height:100%;position:relative}html body .wrapper>.container .form-center{max-width:600px}html body .wrapper .push{height:31px} diff --git a/public/assets/images/success_icon.png b/public/assets/images/success_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd1efed0e34d8b0520599f73d51d30cc2190f60 GIT binary patch literal 5681 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:void 0},max:function(i){return e.val().length<=i},min:function(i){return e.val().length>=i}},t=[];this.validate=function(e){for(var i in t){var n=t[i];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=i.split("|");for(var a in e){var n=e[a].split(":");t[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},i={},a=[],t=[],n="";this.setAddress=function(i){for(var a in i)e[a]=i[a]},this.setData=function(i){e=i},this.getData=function(){return e},this.setSolicitante=function(e){i=e},this.getSolicitante=function(){return i},this.setMaterial=function(e){a=e},this.getMateriais=function(){return a},this.setInsumos=function(e){console.log("set insumos",t),t=e},this.getInsumos=function(){return console.log("get insumos",t),t},this.setInsurance=function(e){n=e},this.getInsurance=function(){return n},this.get=function(i){return e[i]}},FormWizard=function(e,i,a){var t=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in i)this.initializeField(n,i[n]);this.btnSubmit=t.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&a()})},this.reloadElements=function(){for(var e in i)i[e].el=$()},this.reload=function(){n=[];for(var e in i)this.initializeField(e,i[e]);this.validateAllFields()},this.initializeField=function(e,i){i.select?$elField=t.find('select[data-field="'+e+'"]'):$elField=t.find('input[data-field="'+e+'"], textarea[data-field="'+e+'"]'),n[e]={els:[],properties:i};for(var a=0;a<$elField.length;a++){var s=$($elField[a]);s.attr("data-index",a),n[e].els.push({el:s,status:!i.rules,validator:i.rules?new Validator(s,i.rules):null})}i.isDate&&this.startDatepicker(n[e]),i.mask&&o(n[e],i.mask,i.onCompleteMask),this.createEvents(n[e])};var o=function(e,i,a){var t={onComplete:a||function(){}};for(var n in e.els)e.els[n].el.mask(i,t)};this.startDatepicker=function(e){var i=this;for(var a in e.els)e.els[a].el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(t){e.els[a].validator&&i.validateField(e.els[a]),i.verifySubmitEnabled(),e.properties&&e.properties.onChangeDate(t)})},this.createEvents=function(e){var i=this;for(var a in e.els)e.els[a].el.is("input")?e.els[a].el.on("keyup",function(a){var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()}):e.els[a].el.on("change",function(a){console.log("change");var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()})},this.verifySubmitEnabled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e,i){$this=this,e.validator.validate(function(a,t){e.status=t,$this.validateFieldElement(e.el,i.properties,a,t)})},this.validateFieldElement=function(e,i,a,t){var n=e.parent();i.hasLoading&&(n=n.parent()),n.find(".validator-errors span").removeClass("show"),t?n.removeClass("has-error").addClass("has-success"):(n.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),n.addClass("has-error"))},this.validateAllFields=function(){for(var e in n)for(var i in n[e].els){var a=n[e],t=n[e].els[i];t.validator?this.validateField(t,a):console.log("No validator ",e)}},this.allValidate=function(){for(var e in n)for(var i in n[e].els)if(!n[e].els[i].status)return!1;return!0},this.setValue=function(e){for(var i in e)n[i]&&(n[i].properties.select?n[i].els[0].el.val(e[i]):n[i].properties.isDate?(n[i].els[0].el.datepicker("update",this.getDate(e[i])),this.validateField(n[i].els[0],n[i])):n[i].els[0].el.attr("value",e[i]))},this.getDate=function(e){var i=e.split("-");return new Date(i[2],i[1],i[0])},this.setEnabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.removeAttr("disabled");else n[e].els[i].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)for(var i in n[e].els)this.setEnabled(e,i)},this.setDisabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.attr("disabled","disabled");else n[e].els[i].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){var i=[];for(var a in n[e].els)i.push(n[e].els[a].el.val());return 1==i.length?i[0]:i},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].els[0].el.cleanVal()},this.getAll=function(){var e={};for(var i in n)e[i]=n[i].els[0].el.val();return e},this.showLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){t.on("submit",function(e){e.preventDefault()}),this.initializeFields()},this.init()},Paginator=function(e,i,a){var t=this,n=$(e),o=$(i),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&t.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,i,a){$.ajax({url:"views/"+e+".html"}).done(function(e){i.find(".content").html(e),a()})},this.setSelectedPage=function(e){t=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var i=function(){t.selectedPage.find(".loading").addClass("hide"),t.selectedPage.find(".content").addClass("show")};s[e]?a(e,this.selectedPage.data("title"),i):this.loadHtml(e,this.selectedPage,function(){a(e,t.selectedPage.data("title"),i)})}},CEP={getInfo:function(e,i){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)i(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};i(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,i,a,t){this.label=i,this.el=e,this.labels=a,this.data=t,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=100,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,i,a){var t=null,n=null,o=0,s=0;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-pedido",{id:{keyUp:function(i,a){e.keyUpId(i,a)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){e.submit()}),a()},this.submit=function(){var a=t.getAll();a.id=o,a.idSolicitante=s,i.setData(a),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpId=function(e,i){i.status&&(clearTimeout(n),n=setTimeout(function(){""!=t.get("id")?(t.setDisabled(["id","data_de_compra"]),t.showLoading("id",0),Database.findPedidoById(t.get("id"),function(e){if(t.setEnabled(["id"]),1==e.length){e=e[0],t.setValue(e),t.verifySubmitEnabled(),e.total=e.total_materiais+e.total_insumos;var i=$(".fields-pedido");for(var a in e){var n=e[a];"total_materiais"!=a&&"total_insumos"!=a&&"total"!=a||(n=n.toFixed(2)),i.find('li[data-field="'+a+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");t.setEnabled(["data_de_compra"]),t.hideLoading("id",0)})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,i,a){var t=null,n=null;this.init=function(){var e=this;t=new FormWizard(".form-solicitante",{id:{},nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var a=t.getAll();a.cpf=t.getCleanValue("cpf"),a.cep=a.cep.replace("-",""),a.telefone=a.telefone.replace(" ",""),i.setSolicitante(a),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==i.get("id")?a():Database.findSolicitanteById(i.get("idSolicitante"),function(i){if(0==i.length)t.setEnabled(["cep","nome","telefone"]);else{var n=i[0];e.setValueForm(n),t.validateAllFields(),t.verifySubmitEnabled()}a()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),t.setValue(e),t.setAllEnabled()};var o=function(e){return $("
    "+e.replace("(").replace(")")+"
    ").mask("(00) 00000-0000").text()},s=function(e){return $("
    "+e+"
    ").mask("000.000.000-00").text()},r=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){t.setDisabled(["cpf"]);var i=t.getCleanValue("cpf");t.showLoading("cpf"),Database.findSolicitanteByCpf(i,function(i){0==i.length?t.setEnabled(["cep","nome","telefone"]):(e.setValueForm(i[0]),t.validateAllFields(),t.verifySubmitEnabled()),t.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,i,a){var t=null;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-material",{id:{},nome:{rules:"required"},marca:{rules:"required"},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-material").click(function(){e.addMaterial({})}),this.load()},this.submit=function(){i.setMaterial(this.constructObject(t.get("id"),t.get("nome"),t.get("marca"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formInsumo")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],nome:i[s],marca:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,nome:i,marca:a,quantidade:t,preco:n}]},this.htmlMaterial=function(e){return'
  • '},this.addMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e)),t.reload()},this.load=function(){var e=this,n=i.get("id");(n=!n)?a():Database.findMaterialByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-material").html("");for(var n in i)e.injectHtmlMaterial(i[n]);t.reload(),a()}else a()})},this.injectHtmlMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e))},this.init()},FormInsumo=function(e,i,a){var t=null,n="";this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-insumo",{id:{},descricao:{rules:"required"},id_material:{rules:"required",select:!0},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-insumo").click(function(){e.addInsumo({})}),this.load()},this.submit=function(){i.setInsumos(this.constructObject(t.get("id"),t.get("descricao"),t.get("id_material"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formAddress")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],descricao:i[s],id_material:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,descricao:i,id_material:a,quantidade:t,preco:n}]},this.htmlInsumo=function(e){return'
  • '},this.addInsumo=function(e){$(".list-group.list-insumos").append(this.htmlInsumo(e)),t.reload()},this.load=function(){var e=this;this.createSelectMaterial();var n=i.get("id");(n=!n)?a():Database.findInsumoByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-insumos").html("");for(var n in i)e.injectHtmlInsumo(i[n]);t.reload(),a()}else a()})},this.createSelectMaterial=function(){var e=i.getMateriais();for(var a in e)console.log(e),n='"},this.injectHtmlInsumo=function(e){var i=$(this.htmlInsumo(e));e.id_material&&i.find(".sel-material").val(e.id_material),$(".list-group.list-insumos").append(i)},this.init()},FormAddress=function(e,i,a){var t=null,n=null;this.init=function(){var e=this,a=i.getSolicitante();t=new FormWizard(".form-address",{cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.setValueForm(a)},this.submit=function(){(n={}).cep=t.get("cep").replace("-",""),n.rua=t.get("rua"),n.complemento=t.get("complemento"),n.numero=t.get("numero"),n.estado=t.get("estado"),n.cidade=t.get("cidade"),i.setAddress(n),e.paginatorForms.setSelectedPage("formInsurance")};var o=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.setValueForm=function(e){(n={}).cep=o(e.cep),n.rua=e.rua,n.complemento=e.complemento,n.numero=e.numero,n.estado=e.estado,n.cidade=e.cidade,t.setValue(n),t.setAllEnabled(),t.validateAllFields(),t.verifySubmitEnabled(),a()},this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.init()},FormInsurance=function(e,i,a){var t=null,n="";this.init=function(){var e=this;(t=$(".form-insurance")).find(".btn-submit").click(function(){e.submit()}),t.find(".insurance").on("change",function(){n=$(this).val(),e.checkEnabledSubmit()}),a()},this.submit=function(){i.setInsurance(n),e.paginatorForms.setSelectedPage("formResumo")},this.checkEnabledSubmit=function(){""!=n&&t.find(".btn-submit").removeAttr("disabled")},this.init()},FormResumo=function(e,i,a){var t=null;this.init=function(){var e=this;t=$(".form-resumo"),this.setValueForPedido(),this.setValuesForSolicitante(),this.setValuesForMateriais(),this.setValuesForInsumos(),this.setValuesForInsurance(),t.find(".btn-submit").click(function(){e.submit()}),a()},this.submit=function(){e.paginatorForms.setSelectedPage("formFinish")},this.setValueForPedido=function(){var e=t.find('.info[data-info="pedido"]'),a=i.getData();this.setValue(e,a)},this.setValuesForSolicitante=function(){var e=t.find('.info[data-info="solicitante"]'),a=i.getSolicitante();this.setValue(e,a)},this.getHtmlMaterial=function(e){return'
  • '+e.nome+'
    '+e.marca+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForMateriais=function(){var e=i.getMateriais();for(var a in e)t.find(".list-material").append(this.getHtmlMaterial(e[a]))},this.getHtmlInsumo=function(e){return'
  • '+e.descricao+'
    '+e.id_material+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForInsumos=function(){var e=i.getInsumos();for(var a in e)t.find(".list-insumos").append(this.getHtmlInsumo(e[a]))},this.setValuesForInsurance=function(){var e=i.getInsurance(),a="";console.log(e),a="s"==e?"Optou pelo seguro extra":"Não optou pelo seguro extra",t.find(".insurance").text(a)},this.setValue=function(e,i){for(var a in i){var t=e.find('span[data-field="'+a+'"]');t&&t.text(i[a])}},this.init()},FormFinish=function(e,i,a){this.init=function(){this.mergeSolicitante(),a()},this.mergeSolicitante=function(){var e=i.getSolicitante();0==e.id?Database.insertSolicitante(e,function(e){console.log(e)}):Database.updateSolicitante(e,function(e){console.log(e)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,formInsumo:null,formInsurance:null,formAddress:null,formResumo:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(i,a,t){e.pages[i](e,t)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,i){return this.replace(new RegExp(e,"g"),i)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,i){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),i()})},dashboard2:function(e,i){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),i()})},dashboard3:function(e,i){Database.fetchAllPedidos(function(e){var a=[];for(var t in e){var n=Number(e[t].total_materiais)+Number(e[t].total_insumos);a.push([e[t].numero,e[t].nome,e[t].data_de_compra.replaceAll("-","/"),"R$ "+e[t].total_materiais.toFixed(2),"R$ "+e[t].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),i()})},process:function(e,i){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(i,a,t){e.changeTitleHeader(a),console.log("Change page",i),"formPedido"==i?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,t)):"formSolicitante"==i?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,t)):"formMaterial"==i?e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,t)):"formInsumo"==i?e.formInsumo||(e.formInsumo=new FormInsumo(e,e.pedido,t)):"formAddress"==i?e.formAddress||(e.formAddress=new FormAddress(e,e.pedido,t)):"formInsurance"==i?e.formInsurance||(e.formInsurance=new FormInsurance(e,e.pedido,t)):"formResumo"==i?e.formResumo||(e.formResumo=new FormResumo(e,e.pedido,t)):"formFinish"==i&&(e.formFinish||(e.formFinish=new FormFinish(e,e.pedido,t)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),i()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var i={labels:[],data:[]};for(var a in e)i.labels.push(e[a].nome),i.data.push(e[a].total);return i},prepareResultPorDia:function(e){var i={data:[],labels:[]};for(var a in e)i.labels.push(this.prepareNumber(e[a].day)),i.data.push(e[a].total);return i},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoById:function(e,i){var a="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.id = "+e;this._execute(a,i)},findMaterialByIdPedido:function(e,i){var a="SELECT * FROM materiais WHERE id_pedido = "+e;this._execute(a,i)},findInsumoByIdPedido:function(e,i){var a="SELECT * FROM insumos WHERE id_pedido = "+e;this._execute(a,i)},findSolicitanteById:function(e,i){var a="SELECT * FROM solicitantes WHERE id = "+e;this._execute(a,i)},findSolicitanteByCpf:function(e,i){var a="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(a,i)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},insertPedido:function(e,i){var a="INSERT INTO pedidos (id_solicitante, data_de_compra, cep, rua, numero, bairro, cidade, estado, pais) VALUES ("+e.id_solicitante+", '"+e.data_de_compra+"', '"+e.cep+"', '"+e.rua+"', '"+e.numero+"', '"+e.bairro+"', '"+e.cidade+"', '"+e.estado+"', '"+e.pais+"')";this._execute(a,i)},insertSolicitante:function(e,i){var a="INSERT INTO solicitantes (nome, telefone, cpf, cep, rua, numero, bairro, cidade, estado, pais) VALUES ('"+e.nome+"', '"+e.telefone+"', '"+e.cpf+"', '"+e.cep+"', '"+e.rua+"', "+e.numero+", '"+e.bairro+"', '"+e.cidade+"', '"+e.cidade+"', '"+e.estado+"', '"+e.pais+"')";this._execute(a,i)},insertMaterial:function(e,i,a){var t="INSERT INTO materiais (id_pedido, nome, marca, preco, quantidade) VALUES ("+e+", '"+i.nome+"', '"+i.marca+"', '"+i.marca+"', "+i.preco+", "+i.quantidade+")";this._execute(t,a)},insertInsumo:function(e,i,a){var t="INSERT INTO insumos (id_pedido, id_material, descricao, preco, quantidade) VALUES ("+e+", '"+i.id_material+"', '"+i.descricao+"', "+i.preco+", "+i.quantidade+")";this._execute(t,a)},updatePedido:function(e,i,a){var t="UPDATE pedidos SET id_solicitante = "+i.id_solicitante+", data_de_compra = '"+i.data_de_compra+"', cep = '"+i.cep+"', ";t+="rua = '"+i.rua+"', numero = "+i.numero+", bairro = '"+i.bairro+"', cidade = '"+i.cidade+"', estado = '"+i.estado+"', ",t+="pais = '"+i.pais+"' WHERE id = "+e,this._execute(t,a)},updateSolicitante:function(e,i){var a="UPDATE solicitantes SET nome = '"+e.nome+"', telefone = '"+e.telefone+"', cpf = '"+e.cpf+"', cep = '"+e.cep+"', ";a+="rua = '"+e.rua+"', numero = "+e.numero+", bairro = '"+e.bairro+"', cidade = '"+e.cidade+"', estado = '"+e.estado+"', ",a+="pais = '"+e.pais+"' WHERE id = "+e.id,this._execute(a,i)},updateMaterial:function(e,i,a,t){var n="UPDATE materiais SET id_pedido = "+i+", nome = '"+a.nome+"', marca = '"+a.marca+"', preco = '"+a.preco+"', ";n+="quantidade = "+a.quantidade+" WHERE id = "+e,this._execute(n,t)},updateInsumo:function(e,i,a,t){var n="UPDATE insumos SET id_pedido = "+i+", id_material = "+a.id_material+", descricao = '"+a.descricao+"', preco = '"+a.preco+"', ";n+="quantidade = "+a.quantidade+" WHERE id = "+e,this._execute(n,t)},_execute:function(e,i){mysqlQuery(e,i)}},Validator=function(e,i){var a={required:function(i){return e.is("select")?"-1"!=e.val()&&""!=e.val()&&null!=e.val()&&"null"!=e.val():e.is("input")||e.is("textarea")?e.val().length>0:void 0},max:function(i){return e.val().length<=i},min:function(i){return e.val().length>=i}},t=[];this.validate=function(e){for(var i in t){var n=t[i];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=i.split("|");for(var a in e){var n=e[a].split(":");t[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},i={},a=[],t=[],n="";this.setAddress=function(i){for(var a in i)e[a]=i[a]},this.setData=function(i){e=i},this.getData=function(){return e},this.setSolicitante=function(e){i=e},this.getSolicitante=function(){return i},this.setMaterial=function(e){a=e},this.getMateriais=function(){return a},this.setInsumos=function(e){console.log("set insumos",t),t=e},this.getInsumos=function(){return console.log("get insumos",t),t},this.setInsurance=function(e){n=e},this.getInsurance=function(){return n},this.get=function(i){return e[i]}},FormWizard=function(e,i,a){var t=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in i)this.initializeField(n,i[n]);this.btnSubmit=t.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&a()})},this.reloadElements=function(){for(var e in i)i[e].el=$()},this.reload=function(){n=[];for(var e in i)this.initializeField(e,i[e]);this.validateAllFields()},this.initializeField=function(e,i){i.select?$elField=t.find('select[data-field="'+e+'"]'):$elField=t.find('input[data-field="'+e+'"], textarea[data-field="'+e+'"]'),n[e]={els:[],properties:i};for(var a=0;a<$elField.length;a++){var s=$($elField[a]);s.attr("data-index",a),n[e].els.push({el:s,status:!i.rules,validator:i.rules?new Validator(s,i.rules):null})}i.isDate&&this.startDatepicker(n[e]),i.mask&&o(n[e],i.mask,i.onCompleteMask),this.createEvents(n[e])};var o=function(e,i,a){var t={onComplete:a||function(){}};for(var n in e.els)e.els[n].el.mask(i,t)};this.startDatepicker=function(e){var i=this;for(var a in e.els)e.els[a].el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(t){e.els[a].validator&&i.validateField(e.els[a]),i.verifySubmitEnabled(),e.properties&&e.properties.onChangeDate(t)})},this.createEvents=function(e){var i=this;for(var a in e.els)e.els[a].el.is("input")?e.els[a].el.on("keyup",function(a){var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()}):e.els[a].el.on("change",function(a){console.log("change");var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()})},this.verifySubmitEnabled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e,i){$this=this,e.validator.validate(function(a,t){e.status=t,$this.validateFieldElement(e.el,i.properties,a,t)})},this.validateFieldElement=function(e,i,a,t){var n=e.parent();i.hasLoading&&(n=n.parent()),n.find(".validator-errors span").removeClass("show"),t?n.removeClass("has-error").addClass("has-success"):(n.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),n.addClass("has-error"))},this.validateAllFields=function(){for(var e in n)for(var i in n[e].els){var a=n[e],t=n[e].els[i];t.validator?this.validateField(t,a):console.log("No validator ",e)}},this.allValidate=function(){for(var e in n)for(var i in n[e].els)if(!n[e].els[i].status)return!1;return!0},this.setValue=function(e){for(var i in e)n[i]&&(n[i].properties.select?n[i].els[0].el.val(e[i]):n[i].properties.isDate?(n[i].els[0].el.datepicker("update",this.getDate(e[i])),this.validateField(n[i].els[0],n[i])):n[i].els[0].el.attr("value",e[i]))},this.getDate=function(e){var i=e.split("-");return new Date(i[2],i[1],i[0])},this.setEnabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.removeAttr("disabled");else n[e].els[i].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)for(var i in n[e].els)this.setEnabled(e,i)},this.setDisabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.attr("disabled","disabled");else n[e].els[i].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){var i=[];for(var a in n[e].els)i.push(n[e].els[a].el.val());return 1==i.length?i[0]:i},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].els[0].el.cleanVal()},this.getAll=function(){var e={};for(var i in n)e[i]=n[i].els[0].el.val();return e},this.showLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){t.on("submit",function(e){e.preventDefault()}),this.initializeFields()},this.init()},Paginator=function(e,i,a){var t=this,n=$(e),o=$(i),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&t.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,i,a){$.ajax({url:"views/"+e+".html"}).done(function(e){i.find(".content").html(e),a()})},this.setSelectedPage=function(e){t=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var i=function(){t.selectedPage.find(".loading").addClass("hide"),t.selectedPage.find(".content").addClass("show")};s[e]?a(e,this.selectedPage.data("title"),i):this.loadHtml(e,this.selectedPage,function(){a(e,t.selectedPage.data("title"),i)})}},CEP={getInfo:function(e,i){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)i(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};i(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,i,a,t){this.label=i,this.el=e,this.labels=a,this.data=t,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=100,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,i,a){var t=null,n=null,o=0,s=0;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-pedido",{id:{keyUp:function(i,a){e.keyUpId(i,a)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){e.submit()}),a()},this.submit=function(){var a=t.getAll();a.id=o,a.idSolicitante=s,i.setData(a),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpId=function(e,i){i.status&&(clearTimeout(n),n=setTimeout(function(){""!=t.get("id")?(t.setDisabled(["id","data_de_compra"]),t.showLoading("id",0),Database.findPedidoById(t.get("id"),function(e){if(t.setEnabled(["id"]),1==e.length){e=e[0],t.setValue(e),t.verifySubmitEnabled(),e.total=e.total_materiais+e.total_insumos;var i=$(".fields-pedido");for(var a in e){var n=e[a];"total_materiais"!=a&&"total_insumos"!=a&&"total"!=a||(n=n.toFixed(2)),i.find('li[data-field="'+a+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");t.setEnabled(["data_de_compra"]),t.hideLoading("id",0)})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,i,a){var t=null,n=null;this.init=function(){var e=this;t=new FormWizard(".form-solicitante",{id:{},nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var a=t.getAll();a.cpf=t.getCleanValue("cpf"),a.cep=a.cep.replace("-",""),a.telefone=a.telefone.replace(" ",""),i.setSolicitante(a),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==i.get("id")?a():Database.findSolicitanteById(i.get("idSolicitante"),function(i){if(0==i.length)t.setEnabled(["cep","nome","telefone"]);else{var n=i[0];e.setValueForm(n),t.validateAllFields(),t.verifySubmitEnabled()}a()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),t.setValue(e),t.setAllEnabled()};var o=function(e){return $("
    "+e.replace("(").replace(")")+"
    ").mask("(00) 00000-0000").text()},s=function(e){return $("
    "+e+"
    ").mask("000.000.000-00").text()},r=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){t.setDisabled(["cpf"]);var i=t.getCleanValue("cpf");t.showLoading("cpf"),Database.findSolicitanteByCpf(i,function(i){0==i.length?t.setEnabled(["cep","nome","telefone"]):(e.setValueForm(i[0]),t.validateAllFields(),t.verifySubmitEnabled()),t.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,i,a){var t=null;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-material",{id:{},nome:{rules:"required"},marca:{rules:"required"},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-material").click(function(){e.addMaterial({})}),this.load()},this.submit=function(){i.setMaterial(this.constructObject(t.get("id"),t.get("nome"),t.get("marca"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formInsumo")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],nome:i[s],marca:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,nome:i,marca:a,quantidade:t,preco:n}]},this.htmlMaterial=function(e){return'
  • '},this.addMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e)),t.reload()},this.load=function(){var e=this,n=i.get("id");(n=!n)?a():Database.findMaterialByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-material").html("");for(var n in i)e.injectHtmlMaterial(i[n]);t.reload(),a()}else a()})},this.injectHtmlMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e))},this.init()},FormInsumo=function(e,i,a){var t=null,n="";this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-insumo",{id:{},descricao:{rules:"required"},id_material:{rules:"required",select:!0},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-insumo").click(function(){e.addInsumo({})}),this.load()},this.submit=function(){i.setInsumos(this.constructObject(t.get("id"),t.get("descricao"),t.get("id_material"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formAddress")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],descricao:i[s],id_material:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,descricao:i,id_material:a,quantidade:t,preco:n}]},this.htmlInsumo=function(e){return'
  • '},this.addInsumo=function(e){$(".list-group.list-insumos").append(this.htmlInsumo(e)),t.reload()},this.load=function(){var e=this;this.createSelectMaterial();var n=i.get("id");(n=!n)?a():Database.findInsumoByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-insumos").html("");for(var n in i)e.injectHtmlInsumo(i[n]);t.reload(),a()}else a()})},this.createSelectMaterial=function(){var e=i.getMateriais();for(var a in e)console.log(e),n='"},this.injectHtmlInsumo=function(e){var i=$(this.htmlInsumo(e));e.id_material&&i.find(".sel-material").val(e.id_material),$(".list-group.list-insumos").append(i)},this.init()},FormAddress=function(e,i,a){var t=null,n=null;this.init=function(){var e=this,a=i.getSolicitante();t=new FormWizard(".form-address",{cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.setValueForm(a)},this.submit=function(){(n={}).cep=t.get("cep").replace("-",""),n.rua=t.get("rua"),n.complemento=t.get("complemento"),n.numero=t.get("numero"),n.estado=t.get("estado"),n.cidade=t.get("cidade"),i.setAddress(n),e.paginatorForms.setSelectedPage("formInsurance")};var o=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.setValueForm=function(e){(n={}).cep=o(e.cep),n.rua=e.rua,n.complemento=e.complemento,n.numero=e.numero,n.estado=e.estado,n.cidade=e.cidade,t.setValue(n),t.setAllEnabled(),t.validateAllFields(),t.verifySubmitEnabled(),a()},this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.init()},FormInsurance=function(e,i,a){var t=null,n="";this.init=function(){var e=this;(t=$(".form-insurance")).find(".btn-submit").click(function(){e.submit()}),t.find(".insurance").on("change",function(){n=$(this).val(),e.checkEnabledSubmit()}),a()},this.submit=function(){i.setInsurance(n),e.paginatorForms.setSelectedPage("formResumo")},this.checkEnabledSubmit=function(){""!=n&&t.find(".btn-submit").removeAttr("disabled")},this.init()},FormResumo=function(e,i,a){var t=null;this.init=function(){var e=this;t=$(".form-resumo"),this.setValueForPedido(),this.setValuesForSolicitante(),this.setValuesForMateriais(),this.setValuesForInsumos(),this.setValuesForInsurance(),t.find(".btn-submit").click(function(){e.submit()}),a()},this.submit=function(){e.paginatorForms.setSelectedPage("formFinish")},this.setValueForPedido=function(){var e=t.find('.info[data-info="pedido"]'),a=i.getData();this.setValue(e,a)},this.setValuesForSolicitante=function(){var e=t.find('.info[data-info="solicitante"]'),a=i.getSolicitante();this.setValue(e,a)},this.getHtmlMaterial=function(e){return'
  • '+e.nome+'
    '+e.marca+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForMateriais=function(){var e=i.getMateriais();for(var a in e)t.find(".list-material").append(this.getHtmlMaterial(e[a]))},this.getHtmlInsumo=function(e){return'
  • '+e.descricao+'
    '+e.id_material+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForInsumos=function(){var e=i.getInsumos();for(var a in e)t.find(".list-insumos").append(this.getHtmlInsumo(e[a]))},this.setValuesForInsurance=function(){var e=i.getInsurance(),a="";console.log(e),a="s"==e?"Optou pelo seguro extra":"Não optou pelo seguro extra",t.find(".insurance").text(a)},this.setValue=function(e,i){for(var a in i){var t=e.find('span[data-field="'+a+'"]');t&&t.text(i[a])}},this.init()},FormFinish=function(e,i,a){this.init=function(){a()},this.mergeSolicitante=function(){var e=i.getSolicitante();0==e.id?Database.insertSolicitante(e,function(e){console.log(e)}):Database.updateSolicitante(e,function(e){console.log(e)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,formInsumo:null,formInsurance:null,formAddress:null,formResumo:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(i,a,t){e.pages[i](e,t)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,i){return this.replace(new RegExp(e,"g"),i)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,i){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),i()})},dashboard2:function(e,i){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),i()})},dashboard3:function(e,i){Database.fetchAllPedidos(function(e){var a=[];for(var t in e){var n=Number(e[t].total_materiais)+Number(e[t].total_insumos);a.push([e[t].numero,e[t].nome,e[t].data_de_compra.replaceAll("-","/"),"R$ "+e[t].total_materiais.toFixed(2),"R$ "+e[t].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),i()})},process:function(e,i){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(i,a,t){e.changeTitleHeader(a),console.log("Change page",i),"formPedido"==i?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,t)):"formSolicitante"==i?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,t)):"formMaterial"==i?e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,t)):"formInsumo"==i?e.formInsumo||(e.formInsumo=new FormInsumo(e,e.pedido,t)):"formAddress"==i?e.formAddress||(e.formAddress=new FormAddress(e,e.pedido,t)):"formInsurance"==i?e.formInsurance||(e.formInsurance=new FormInsurance(e,e.pedido,t)):"formResumo"==i?e.formResumo||(e.formResumo=new FormResumo(e,e.pedido,t)):"formFinish"==i&&(e.formFinish||(e.formFinish=new FormFinish(e,e.pedido,t)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),i()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var i={labels:[],data:[]};for(var a in e)i.labels.push(e[a].nome),i.data.push(e[a].total);return i},prepareResultPorDia:function(e){var i={data:[],labels:[]};for(var a in e)i.labels.push(this.prepareNumber(e[a].day)),i.data.push(e[a].total);return i},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/public/views/formFinish.html b/public/views/formFinish.html index e69de29b..b0c47ea9 100644 --- a/public/views/formFinish.html +++ b/public/views/formFinish.html @@ -0,0 +1,10 @@ +
    + +

    Pedido

    + +
    + +
    Pedido registrado com sucesso!
    +
    + +
    \ No newline at end of file diff --git a/src/js/forms/formFinish.js b/src/js/forms/formFinish.js index d3842aa3..54a75393 100644 --- a/src/js/forms/formFinish.js +++ b/src/js/forms/formFinish.js @@ -1,7 +1,7 @@ var FormFinish = function(core, pedido, showContentFn) { this.init = function() { - this.mergeSolicitante(); + //this.mergeSolicitante(); showContentFn(); } diff --git a/src/scss/_form-finish.scss b/src/scss/_form-finish.scss index e69de29b..5797f025 100644 --- a/src/scss/_form-finish.scss +++ b/src/scss/_form-finish.scss @@ -0,0 +1,19 @@ +.form-finish { + + margin:20px 0 60px; + float:left; + width:100%; + + .message { + width:100%; + text-align:center; + padding:30px 10px 0; + + h5 { + color:#0ea02e; + font-size:20px; + font-weight:bold; + } + } + +} \ No newline at end of file From 32261db60afa62c0e0b772f037656cafc6c1e3a9 Mon Sep 17 00:00:00 2001 From: "agner.e.ballejo" Date: Mon, 12 Jun 2017 15:35:33 -0300 Subject: [PATCH 21/23] add button --- public/assets/css/app.css | 2 +- src/scss/_button.scss | 18 ++++++++++++++++++ src/scss/app.scss | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/scss/_button.scss diff --git a/public/assets/css/app.css b/public/assets/css/app.css index e1f7efe9..6e8f5a5b 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1 +1 @@ -*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .dropdown-menu{background-color:#102938}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:30px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.form-material{margin:20px 0 40px;float:left;width:100%}.form-insumo{margin:20px 0 60px;float:left;width:100%}.form-address{margin:20px 0 60px;float:left;width:100%}.form-insurance{margin:20px 0 60px;float:left;width:100%}.form-insurance .sub{margin:20px 0;font-size:16px}.form-insurance .radio{background-color:#eee}.form-insurance .radio label{width:100%;text-align:center;padding:10px}.form-insurance .radio label:hover,.form-insurance .radio label.checked{background-color:#39bb9d;color:#fff}.form-insurance .btn-submit{margin-top:10px}.form-resumo{margin:20px 0 60px;float:left;width:100%}.form-resumo .form-group span{width:100%;display:block}.form-finish{margin:20px 0 60px;float:left;width:100%}.form-finish .message{width:100%;text-align:center;padding:30px 10px 0}.form-finish .message h5{color:#0ea02e;font-size:20px;font-weight:bold}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .dashboard{margin:0 0 30px;float:left;width:100%}html body .wrapper>.container{min-height:100%;position:relative}html body .wrapper>.container .form-center{max-width:600px}html body .wrapper .push{height:31px} +*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .dropdown-menu{background-color:#102938}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.btn[disabled].btn-success{background-color:#81d9c5;border:1px solid #5acdb2}.btn.btn-success{background-color:#39bb9d;border:1px solid #2d947c}.btn.btn-success:hover{background-color:#2d947c;border:1px solid #216d5b}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:30px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.form-material{margin:20px 0 40px;float:left;width:100%}.form-insumo{margin:20px 0 60px;float:left;width:100%}.form-address{margin:20px 0 60px;float:left;width:100%}.form-insurance{margin:20px 0 60px;float:left;width:100%}.form-insurance .sub{margin:20px 0;font-size:16px}.form-insurance .radio{background-color:#eee}.form-insurance .radio label{width:100%;text-align:center;padding:10px}.form-insurance .radio label:hover,.form-insurance .radio label.checked{background-color:#39bb9d;color:#fff}.form-insurance .btn-submit{margin-top:10px}.form-resumo{margin:20px 0 60px;float:left;width:100%}.form-resumo .form-group span{width:100%;display:block}.form-finish{margin:20px 0 60px;float:left;width:100%}.form-finish .message{width:100%;text-align:center;padding:30px 10px 0}.form-finish .message h5{color:#0ea02e;font-size:20px;font-weight:bold}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .dashboard{margin:0 0 30px;float:left;width:100%}html body .wrapper>.container{min-height:100%;position:relative}html body .wrapper>.container .form-center{max-width:600px}html body .wrapper .push{height:31px} diff --git a/src/scss/_button.scss b/src/scss/_button.scss new file mode 100644 index 00000000..7515501d --- /dev/null +++ b/src/scss/_button.scss @@ -0,0 +1,18 @@ +.btn { + &[disabled] { + &.btn-success { + background-color: lighten($color-accent, 20%); + border:1px solid lighten($color-accent, 10%); + } + } + + &.btn-success { + background-color: $color-accent; + border:1px solid darken($color-accent, 10%); + + &:hover{ + background-color: darken($color-accent, 10%); + border:1px solid darken($color-accent, 20%); + } + } +} \ No newline at end of file diff --git a/src/scss/app.scss b/src/scss/app.scss index 45daad29..8a00b600 100644 --- a/src/scss/app.scss +++ b/src/scss/app.scss @@ -20,6 +20,7 @@ $font-trebuchet: 'Trebuchet MS Regular'; @import '_paginator.scss'; @import '_validator.scss'; @import '_sublist.scss'; +@import '_button.scss'; @import '_form-wizard.scss'; @import '_form-pedido.scss'; @import '_form-solicitante.scss'; From 6ebfb7e20f3916acf3097c21c0c84a5a2f39c0b5 Mon Sep 17 00:00:00 2001 From: "agner.e.ballejo" Date: Mon, 12 Jun 2017 17:46:22 -0300 Subject: [PATCH 22/23] adjust paginator --- public/assets/js/app.js | 2 +- src/js/paginator.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/assets/js/app.js b/public/assets/js/app.js index 8167848b..af310c14 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1 +1 @@ -var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoById:function(e,i){var a="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.id = "+e;this._execute(a,i)},findMaterialByIdPedido:function(e,i){var a="SELECT * FROM materiais WHERE id_pedido = "+e;this._execute(a,i)},findInsumoByIdPedido:function(e,i){var a="SELECT * FROM insumos WHERE id_pedido = "+e;this._execute(a,i)},findSolicitanteById:function(e,i){var a="SELECT * FROM solicitantes WHERE id = "+e;this._execute(a,i)},findSolicitanteByCpf:function(e,i){var a="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(a,i)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},insertPedido:function(e,i){var a="INSERT INTO pedidos (id_solicitante, data_de_compra, cep, rua, numero, bairro, cidade, estado, pais) VALUES ("+e.id_solicitante+", '"+e.data_de_compra+"', '"+e.cep+"', '"+e.rua+"', '"+e.numero+"', '"+e.bairro+"', '"+e.cidade+"', '"+e.estado+"', '"+e.pais+"')";this._execute(a,i)},insertSolicitante:function(e,i){var a="INSERT INTO solicitantes (nome, telefone, cpf, cep, rua, numero, bairro, cidade, estado, pais) VALUES ('"+e.nome+"', '"+e.telefone+"', '"+e.cpf+"', '"+e.cep+"', '"+e.rua+"', "+e.numero+", '"+e.bairro+"', '"+e.cidade+"', '"+e.cidade+"', '"+e.estado+"', '"+e.pais+"')";this._execute(a,i)},insertMaterial:function(e,i,a){var t="INSERT INTO materiais (id_pedido, nome, marca, preco, quantidade) VALUES ("+e+", '"+i.nome+"', '"+i.marca+"', '"+i.marca+"', "+i.preco+", "+i.quantidade+")";this._execute(t,a)},insertInsumo:function(e,i,a){var t="INSERT INTO insumos (id_pedido, id_material, descricao, preco, quantidade) VALUES ("+e+", '"+i.id_material+"', '"+i.descricao+"', "+i.preco+", "+i.quantidade+")";this._execute(t,a)},updatePedido:function(e,i,a){var t="UPDATE pedidos SET id_solicitante = "+i.id_solicitante+", data_de_compra = '"+i.data_de_compra+"', cep = '"+i.cep+"', ";t+="rua = '"+i.rua+"', numero = "+i.numero+", bairro = '"+i.bairro+"', cidade = '"+i.cidade+"', estado = '"+i.estado+"', ",t+="pais = '"+i.pais+"' WHERE id = "+e,this._execute(t,a)},updateSolicitante:function(e,i){var a="UPDATE solicitantes SET nome = '"+e.nome+"', telefone = '"+e.telefone+"', cpf = '"+e.cpf+"', cep = '"+e.cep+"', ";a+="rua = '"+e.rua+"', numero = "+e.numero+", bairro = '"+e.bairro+"', cidade = '"+e.cidade+"', estado = '"+e.estado+"', ",a+="pais = '"+e.pais+"' WHERE id = "+e.id,this._execute(a,i)},updateMaterial:function(e,i,a,t){var n="UPDATE materiais SET id_pedido = "+i+", nome = '"+a.nome+"', marca = '"+a.marca+"', preco = '"+a.preco+"', ";n+="quantidade = "+a.quantidade+" WHERE id = "+e,this._execute(n,t)},updateInsumo:function(e,i,a,t){var n="UPDATE insumos SET id_pedido = "+i+", id_material = "+a.id_material+", descricao = '"+a.descricao+"', preco = '"+a.preco+"', ";n+="quantidade = "+a.quantidade+" WHERE id = "+e,this._execute(n,t)},_execute:function(e,i){mysqlQuery(e,i)}},Validator=function(e,i){var a={required:function(i){return e.is("select")?"-1"!=e.val()&&""!=e.val()&&null!=e.val()&&"null"!=e.val():e.is("input")||e.is("textarea")?e.val().length>0:void 0},max:function(i){return e.val().length<=i},min:function(i){return e.val().length>=i}},t=[];this.validate=function(e){for(var i in t){var n=t[i];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=i.split("|");for(var a in e){var n=e[a].split(":");t[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},i={},a=[],t=[],n="";this.setAddress=function(i){for(var a in i)e[a]=i[a]},this.setData=function(i){e=i},this.getData=function(){return e},this.setSolicitante=function(e){i=e},this.getSolicitante=function(){return i},this.setMaterial=function(e){a=e},this.getMateriais=function(){return a},this.setInsumos=function(e){console.log("set insumos",t),t=e},this.getInsumos=function(){return console.log("get insumos",t),t},this.setInsurance=function(e){n=e},this.getInsurance=function(){return n},this.get=function(i){return e[i]}},FormWizard=function(e,i,a){var t=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in i)this.initializeField(n,i[n]);this.btnSubmit=t.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&a()})},this.reloadElements=function(){for(var e in i)i[e].el=$()},this.reload=function(){n=[];for(var e in i)this.initializeField(e,i[e]);this.validateAllFields()},this.initializeField=function(e,i){i.select?$elField=t.find('select[data-field="'+e+'"]'):$elField=t.find('input[data-field="'+e+'"], textarea[data-field="'+e+'"]'),n[e]={els:[],properties:i};for(var a=0;a<$elField.length;a++){var s=$($elField[a]);s.attr("data-index",a),n[e].els.push({el:s,status:!i.rules,validator:i.rules?new Validator(s,i.rules):null})}i.isDate&&this.startDatepicker(n[e]),i.mask&&o(n[e],i.mask,i.onCompleteMask),this.createEvents(n[e])};var o=function(e,i,a){var t={onComplete:a||function(){}};for(var n in e.els)e.els[n].el.mask(i,t)};this.startDatepicker=function(e){var i=this;for(var a in e.els)e.els[a].el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(t){e.els[a].validator&&i.validateField(e.els[a]),i.verifySubmitEnabled(),e.properties&&e.properties.onChangeDate(t)})},this.createEvents=function(e){var i=this;for(var a in e.els)e.els[a].el.is("input")?e.els[a].el.on("keyup",function(a){var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()}):e.els[a].el.on("change",function(a){console.log("change");var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()})},this.verifySubmitEnabled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e,i){$this=this,e.validator.validate(function(a,t){e.status=t,$this.validateFieldElement(e.el,i.properties,a,t)})},this.validateFieldElement=function(e,i,a,t){var n=e.parent();i.hasLoading&&(n=n.parent()),n.find(".validator-errors span").removeClass("show"),t?n.removeClass("has-error").addClass("has-success"):(n.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),n.addClass("has-error"))},this.validateAllFields=function(){for(var e in n)for(var i in n[e].els){var a=n[e],t=n[e].els[i];t.validator?this.validateField(t,a):console.log("No validator ",e)}},this.allValidate=function(){for(var e in n)for(var i in n[e].els)if(!n[e].els[i].status)return!1;return!0},this.setValue=function(e){for(var i in e)n[i]&&(n[i].properties.select?n[i].els[0].el.val(e[i]):n[i].properties.isDate?(n[i].els[0].el.datepicker("update",this.getDate(e[i])),this.validateField(n[i].els[0],n[i])):n[i].els[0].el.attr("value",e[i]))},this.getDate=function(e){var i=e.split("-");return new Date(i[2],i[1],i[0])},this.setEnabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.removeAttr("disabled");else n[e].els[i].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)for(var i in n[e].els)this.setEnabled(e,i)},this.setDisabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.attr("disabled","disabled");else n[e].els[i].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){var i=[];for(var a in n[e].els)i.push(n[e].els[a].el.val());return 1==i.length?i[0]:i},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].els[0].el.cleanVal()},this.getAll=function(){var e={};for(var i in n)e[i]=n[i].els[0].el.val();return e},this.showLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){t.on("submit",function(e){e.preventDefault()}),this.initializeFields()},this.init()},Paginator=function(e,i,a){var t=this,n=$(e),o=$(i),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&t.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,i,a){$.ajax({url:"views/"+e+".html"}).done(function(e){i.find(".content").html(e),a()})},this.setSelectedPage=function(e){t=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var i=function(){t.selectedPage.find(".loading").addClass("hide"),t.selectedPage.find(".content").addClass("show")};s[e]?a(e,this.selectedPage.data("title"),i):this.loadHtml(e,this.selectedPage,function(){a(e,t.selectedPage.data("title"),i)})}},CEP={getInfo:function(e,i){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)i(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};i(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,i,a,t){this.label=i,this.el=e,this.labels=a,this.data=t,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=100,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,i,a){var t=null,n=null,o=0,s=0;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-pedido",{id:{keyUp:function(i,a){e.keyUpId(i,a)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){e.submit()}),a()},this.submit=function(){var a=t.getAll();a.id=o,a.idSolicitante=s,i.setData(a),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpId=function(e,i){i.status&&(clearTimeout(n),n=setTimeout(function(){""!=t.get("id")?(t.setDisabled(["id","data_de_compra"]),t.showLoading("id",0),Database.findPedidoById(t.get("id"),function(e){if(t.setEnabled(["id"]),1==e.length){e=e[0],t.setValue(e),t.verifySubmitEnabled(),e.total=e.total_materiais+e.total_insumos;var i=$(".fields-pedido");for(var a in e){var n=e[a];"total_materiais"!=a&&"total_insumos"!=a&&"total"!=a||(n=n.toFixed(2)),i.find('li[data-field="'+a+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");t.setEnabled(["data_de_compra"]),t.hideLoading("id",0)})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,i,a){var t=null,n=null;this.init=function(){var e=this;t=new FormWizard(".form-solicitante",{id:{},nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var a=t.getAll();a.cpf=t.getCleanValue("cpf"),a.cep=a.cep.replace("-",""),a.telefone=a.telefone.replace(" ",""),i.setSolicitante(a),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==i.get("id")?a():Database.findSolicitanteById(i.get("idSolicitante"),function(i){if(0==i.length)t.setEnabled(["cep","nome","telefone"]);else{var n=i[0];e.setValueForm(n),t.validateAllFields(),t.verifySubmitEnabled()}a()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),t.setValue(e),t.setAllEnabled()};var o=function(e){return $("
    "+e.replace("(").replace(")")+"
    ").mask("(00) 00000-0000").text()},s=function(e){return $("
    "+e+"
    ").mask("000.000.000-00").text()},r=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){t.setDisabled(["cpf"]);var i=t.getCleanValue("cpf");t.showLoading("cpf"),Database.findSolicitanteByCpf(i,function(i){0==i.length?t.setEnabled(["cep","nome","telefone"]):(e.setValueForm(i[0]),t.validateAllFields(),t.verifySubmitEnabled()),t.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,i,a){var t=null;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-material",{id:{},nome:{rules:"required"},marca:{rules:"required"},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-material").click(function(){e.addMaterial({})}),this.load()},this.submit=function(){i.setMaterial(this.constructObject(t.get("id"),t.get("nome"),t.get("marca"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formInsumo")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],nome:i[s],marca:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,nome:i,marca:a,quantidade:t,preco:n}]},this.htmlMaterial=function(e){return'
  • '},this.addMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e)),t.reload()},this.load=function(){var e=this,n=i.get("id");(n=!n)?a():Database.findMaterialByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-material").html("");for(var n in i)e.injectHtmlMaterial(i[n]);t.reload(),a()}else a()})},this.injectHtmlMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e))},this.init()},FormInsumo=function(e,i,a){var t=null,n="";this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-insumo",{id:{},descricao:{rules:"required"},id_material:{rules:"required",select:!0},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-insumo").click(function(){e.addInsumo({})}),this.load()},this.submit=function(){i.setInsumos(this.constructObject(t.get("id"),t.get("descricao"),t.get("id_material"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formAddress")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],descricao:i[s],id_material:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,descricao:i,id_material:a,quantidade:t,preco:n}]},this.htmlInsumo=function(e){return'
  • '},this.addInsumo=function(e){$(".list-group.list-insumos").append(this.htmlInsumo(e)),t.reload()},this.load=function(){var e=this;this.createSelectMaterial();var n=i.get("id");(n=!n)?a():Database.findInsumoByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-insumos").html("");for(var n in i)e.injectHtmlInsumo(i[n]);t.reload(),a()}else a()})},this.createSelectMaterial=function(){var e=i.getMateriais();for(var a in e)console.log(e),n='"},this.injectHtmlInsumo=function(e){var i=$(this.htmlInsumo(e));e.id_material&&i.find(".sel-material").val(e.id_material),$(".list-group.list-insumos").append(i)},this.init()},FormAddress=function(e,i,a){var t=null,n=null;this.init=function(){var e=this,a=i.getSolicitante();t=new FormWizard(".form-address",{cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.setValueForm(a)},this.submit=function(){(n={}).cep=t.get("cep").replace("-",""),n.rua=t.get("rua"),n.complemento=t.get("complemento"),n.numero=t.get("numero"),n.estado=t.get("estado"),n.cidade=t.get("cidade"),i.setAddress(n),e.paginatorForms.setSelectedPage("formInsurance")};var o=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.setValueForm=function(e){(n={}).cep=o(e.cep),n.rua=e.rua,n.complemento=e.complemento,n.numero=e.numero,n.estado=e.estado,n.cidade=e.cidade,t.setValue(n),t.setAllEnabled(),t.validateAllFields(),t.verifySubmitEnabled(),a()},this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.init()},FormInsurance=function(e,i,a){var t=null,n="";this.init=function(){var e=this;(t=$(".form-insurance")).find(".btn-submit").click(function(){e.submit()}),t.find(".insurance").on("change",function(){n=$(this).val(),e.checkEnabledSubmit()}),a()},this.submit=function(){i.setInsurance(n),e.paginatorForms.setSelectedPage("formResumo")},this.checkEnabledSubmit=function(){""!=n&&t.find(".btn-submit").removeAttr("disabled")},this.init()},FormResumo=function(e,i,a){var t=null;this.init=function(){var e=this;t=$(".form-resumo"),this.setValueForPedido(),this.setValuesForSolicitante(),this.setValuesForMateriais(),this.setValuesForInsumos(),this.setValuesForInsurance(),t.find(".btn-submit").click(function(){e.submit()}),a()},this.submit=function(){e.paginatorForms.setSelectedPage("formFinish")},this.setValueForPedido=function(){var e=t.find('.info[data-info="pedido"]'),a=i.getData();this.setValue(e,a)},this.setValuesForSolicitante=function(){var e=t.find('.info[data-info="solicitante"]'),a=i.getSolicitante();this.setValue(e,a)},this.getHtmlMaterial=function(e){return'
  • '+e.nome+'
    '+e.marca+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForMateriais=function(){var e=i.getMateriais();for(var a in e)t.find(".list-material").append(this.getHtmlMaterial(e[a]))},this.getHtmlInsumo=function(e){return'
  • '+e.descricao+'
    '+e.id_material+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForInsumos=function(){var e=i.getInsumos();for(var a in e)t.find(".list-insumos").append(this.getHtmlInsumo(e[a]))},this.setValuesForInsurance=function(){var e=i.getInsurance(),a="";console.log(e),a="s"==e?"Optou pelo seguro extra":"Não optou pelo seguro extra",t.find(".insurance").text(a)},this.setValue=function(e,i){for(var a in i){var t=e.find('span[data-field="'+a+'"]');t&&t.text(i[a])}},this.init()},FormFinish=function(e,i,a){this.init=function(){a()},this.mergeSolicitante=function(){var e=i.getSolicitante();0==e.id?Database.insertSolicitante(e,function(e){console.log(e)}):Database.updateSolicitante(e,function(e){console.log(e)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,formInsumo:null,formInsurance:null,formAddress:null,formResumo:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(i,a,t){e.pages[i](e,t)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,i){return this.replace(new RegExp(e,"g"),i)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,i){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),i()})},dashboard2:function(e,i){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),i()})},dashboard3:function(e,i){Database.fetchAllPedidos(function(e){var a=[];for(var t in e){var n=Number(e[t].total_materiais)+Number(e[t].total_insumos);a.push([e[t].numero,e[t].nome,e[t].data_de_compra.replaceAll("-","/"),"R$ "+e[t].total_materiais.toFixed(2),"R$ "+e[t].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),i()})},process:function(e,i){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(i,a,t){e.changeTitleHeader(a),console.log("Change page",i),"formPedido"==i?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,t)):"formSolicitante"==i?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,t)):"formMaterial"==i?e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,t)):"formInsumo"==i?e.formInsumo||(e.formInsumo=new FormInsumo(e,e.pedido,t)):"formAddress"==i?e.formAddress||(e.formAddress=new FormAddress(e,e.pedido,t)):"formInsurance"==i?e.formInsurance||(e.formInsurance=new FormInsurance(e,e.pedido,t)):"formResumo"==i?e.formResumo||(e.formResumo=new FormResumo(e,e.pedido,t)):"formFinish"==i&&(e.formFinish||(e.formFinish=new FormFinish(e,e.pedido,t)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),i()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var i={labels:[],data:[]};for(var a in e)i.labels.push(e[a].nome),i.data.push(e[a].total);return i},prepareResultPorDia:function(e){var i={data:[],labels:[]};for(var a in e)i.labels.push(this.prepareNumber(e[a].day)),i.data.push(e[a].total);return i},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file +var Database={fetchAllPedidos:function(e){this._execute("select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante",e)},findPedidoById:function(e,i){var a="select p.numero, p.id, p.id_solicitante, s.nome, DATE_FORMAT(STR_TO_DATE(p.data_de_compra, '%Y-%m-%d'), '%d-%m-%Y') as data_de_compra, (SELECT SUM (m.quantidade*m.preco) FROM materiais as m WHERE m.id_pedido = p.id) as total_materiais, (SELECT SUM (i.quantidade*i.preco) FROM insumos as i WHERE i.id_pedido = p.id) as total_insumos from pedidos as p INNER JOIN solicitantes as s ON s.id = p.id_solicitante WHERE p.id = "+e;this._execute(a,i)},findMaterialByIdPedido:function(e,i){var a="SELECT * FROM materiais WHERE id_pedido = "+e;this._execute(a,i)},findInsumoByIdPedido:function(e,i){var a="SELECT * FROM insumos WHERE id_pedido = "+e;this._execute(a,i)},findSolicitanteById:function(e,i){var a="SELECT * FROM solicitantes WHERE id = "+e;this._execute(a,i)},findSolicitanteByCpf:function(e,i){var a="SELECT * FROM solicitantes WHERE cpf = "+e;this._execute(a,i)},fetchAllSolicitantes:function(e){this._execute("SELECT * FROM solicitantes",e)},fetchPedidosPorDia:function(e){this._execute("select count(*) as total, day(STR_TO_DATE(data_de_compra, '%Y-%m-%d')) as day from pedidos p group by day(STR_TO_DATE(data_de_compra, '%Y-%m-%d'))",e)},fetchPedidosPorSolicitantes:function(e){this._execute("select count(*) total, s.nome from pedidos p inner join solicitantes s on s.id = p.id_solicitante group by p.id_solicitante",e)},insertPedido:function(e,i){var a="INSERT INTO pedidos (id_solicitante, data_de_compra, cep, rua, numero, bairro, cidade, estado, pais) VALUES ("+e.id_solicitante+", '"+e.data_de_compra+"', '"+e.cep+"', '"+e.rua+"', '"+e.numero+"', '"+e.bairro+"', '"+e.cidade+"', '"+e.estado+"', '"+e.pais+"')";this._execute(a,i)},insertSolicitante:function(e,i){var a="INSERT INTO solicitantes (nome, telefone, cpf, cep, rua, numero, bairro, cidade, estado, pais) VALUES ('"+e.nome+"', '"+e.telefone+"', '"+e.cpf+"', '"+e.cep+"', '"+e.rua+"', "+e.numero+", '"+e.bairro+"', '"+e.cidade+"', '"+e.cidade+"', '"+e.estado+"', '"+e.pais+"')";this._execute(a,i)},insertMaterial:function(e,i,a){var t="INSERT INTO materiais (id_pedido, nome, marca, preco, quantidade) VALUES ("+e+", '"+i.nome+"', '"+i.marca+"', '"+i.marca+"', "+i.preco+", "+i.quantidade+")";this._execute(t,a)},insertInsumo:function(e,i,a){var t="INSERT INTO insumos (id_pedido, id_material, descricao, preco, quantidade) VALUES ("+e+", '"+i.id_material+"', '"+i.descricao+"', "+i.preco+", "+i.quantidade+")";this._execute(t,a)},updatePedido:function(e,i,a){var t="UPDATE pedidos SET id_solicitante = "+i.id_solicitante+", data_de_compra = '"+i.data_de_compra+"', cep = '"+i.cep+"', ";t+="rua = '"+i.rua+"', numero = "+i.numero+", bairro = '"+i.bairro+"', cidade = '"+i.cidade+"', estado = '"+i.estado+"', ",t+="pais = '"+i.pais+"' WHERE id = "+e,this._execute(t,a)},updateSolicitante:function(e,i){var a="UPDATE solicitantes SET nome = '"+e.nome+"', telefone = '"+e.telefone+"', cpf = '"+e.cpf+"', cep = '"+e.cep+"', ";a+="rua = '"+e.rua+"', numero = "+e.numero+", bairro = '"+e.bairro+"', cidade = '"+e.cidade+"', estado = '"+e.estado+"', ",a+="pais = '"+e.pais+"' WHERE id = "+e.id,this._execute(a,i)},updateMaterial:function(e,i,a,t){var n="UPDATE materiais SET id_pedido = "+i+", nome = '"+a.nome+"', marca = '"+a.marca+"', preco = '"+a.preco+"', ";n+="quantidade = "+a.quantidade+" WHERE id = "+e,this._execute(n,t)},updateInsumo:function(e,i,a,t){var n="UPDATE insumos SET id_pedido = "+i+", id_material = "+a.id_material+", descricao = '"+a.descricao+"', preco = '"+a.preco+"', ";n+="quantidade = "+a.quantidade+" WHERE id = "+e,this._execute(n,t)},_execute:function(e,i){mysqlQuery(e,i)}},Validator=function(e,i){var a={required:function(i){return e.is("select")?"-1"!=e.val()&&""!=e.val()&&null!=e.val()&&"null"!=e.val():e.is("input")||e.is("textarea")?e.val().length>0:void 0},max:function(i){return e.val().length<=i},min:function(i){return e.val().length>=i}},t=[];this.validate=function(e){for(var i in t){var n=t[i];if(!a[n.name]||!a[n.name](n.opt))return void e(n,!1)}e({},!0)},function(){var e=i.split("|");for(var a in e){var n=e[a].split(":");t[n[0]]={name:n[0],opt:n[1]}}}()},Pedido=function(){var e={},i={},a=[],t=[],n="";this.setAddress=function(i){for(var a in i)e[a]=i[a]},this.setData=function(i){e=i},this.getData=function(){return e},this.setSolicitante=function(e){i=e},this.getSolicitante=function(){return i},this.setMaterial=function(e){a=e},this.getMateriais=function(){return a},this.setInsumos=function(e){console.log("set insumos",t),t=e},this.getInsumos=function(){return console.log("get insumos",t),t},this.setInsurance=function(e){n=e},this.getInsurance=function(){return n},this.get=function(i){return e[i]}},FormWizard=function(e,i,a){var t=$(e),n=[];this.initializeFields=function(){var e=this;for(var n in i)this.initializeField(n,i[n]);this.btnSubmit=t.find(".btn-submit"),this.btnSubmit.click(function(){e.allValidate()&&a()})},this.reloadElements=function(){for(var e in i)i[e].el=$()},this.reload=function(){n=[];for(var e in i)this.initializeField(e,i[e]);this.validateAllFields()},this.initializeField=function(e,i){i.select?$elField=t.find('select[data-field="'+e+'"]'):$elField=t.find('input[data-field="'+e+'"], textarea[data-field="'+e+'"]'),n[e]={els:[],properties:i};for(var a=0;a<$elField.length;a++){var s=$($elField[a]);s.attr("data-index",a),n[e].els.push({el:s,status:!i.rules,validator:i.rules?new Validator(s,i.rules):null})}i.isDate&&this.startDatepicker(n[e]),i.mask&&o(n[e],i.mask,i.onCompleteMask),this.createEvents(n[e])};var o=function(e,i,a){var t={onComplete:a||function(){}};for(var n in e.els)e.els[n].el.mask(i,t)};this.startDatepicker=function(e){var i=this;for(var a in e.els)e.els[a].el.datepicker({format:"dd/mm/yyyy",language:"pt-BR",orientation:"bottom left"}).on("changeDate",function(t){e.els[a].validator&&i.validateField(e.els[a]),i.verifySubmitEnabled(),e.properties&&e.properties.onChangeDate(t)})},this.createEvents=function(e){var i=this;for(var a in e.els)e.els[a].el.is("input")?e.els[a].el.on("keyup",function(a){var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()}):e.els[a].el.on("change",function(a){console.log("change");var t=n[$(this).data("field")].els[$(this).data("index")];t.validator&&i.validateField(t,e),e.properties.keyUp&&e.properties.keyUp(a,t),i.verifySubmitEnabled()})},this.verifySubmitEnabled=function(){this.allValidate()?this.enableBtnSubmit():this.disableBtnSubmit()},this.validateField=function(e,i){$this=this,e.validator.validate(function(a,t){e.status=t,$this.validateFieldElement(e.el,i.properties,a,t)})},this.validateFieldElement=function(e,i,a,t){var n=e.parent();i.hasLoading&&(n=n.parent()),n.find(".validator-errors span").removeClass("show"),t?n.removeClass("has-error").addClass("has-success"):(n.find('.validator-errors span[data-error="'+a.name+'"]').addClass("show"),n.addClass("has-error"))},this.validateAllFields=function(){for(var e in n)for(var i in n[e].els){var a=n[e],t=n[e].els[i];t.validator?this.validateField(t,a):console.log("No validator ",e)}},this.allValidate=function(){for(var e in n)for(var i in n[e].els)if(!n[e].els[i].status)return!1;return!0},this.setValue=function(e){for(var i in e)n[i]&&(n[i].properties.select?n[i].els[0].el.val(e[i]):n[i].properties.isDate?(n[i].els[0].el.datepicker("update",this.getDate(e[i])),this.validateField(n[i].els[0],n[i])):n[i].els[0].el.attr("value",e[i]))},this.getDate=function(e){var i=e.split("-");return new Date(i[2],i[1],i[0])},this.setEnabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.removeAttr("disabled");else n[e].els[i].el.removeAttr("disabled")},this.setAllEnabled=function(){for(var e in n)for(var i in n[e].els)this.setEnabled(e,i)},this.setDisabled=function(e,i){if(Array.isArray(e))for(var a in e)n[e[a]]&&n[e[a]].els[0].el.attr("disabled","disabled");else n[e].els[i].el.attr("disabled","disabled")},this.enableBtnSubmit=function(){this.btnSubmit.removeAttr("disabled")},this.disableBtnSubmit=function(){this.btnSubmit.attr("disabled","disabled")},this.get=function(e){var i=[];for(var a in n[e].els)i.push(n[e].els[a].el.val());return 1==i.length?i[0]:i},this.unmask=function(e){return n[e].el.unmask()},this.getCleanValue=function(e){return n[e].els[0].el.cleanVal()},this.getAll=function(){var e={};for(var i in n)e[i]=n[i].els[0].el.val();return e},this.showLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").addClass("show fadeIn")},this.hideLoading=function(e,i){n[e].els[i].el.parent().find(".image-loading").removeClass("fadeIn show")},this.init=function(){t.on("submit",function(e){e.preventDefault()}),this.initializeFields()},this.init()},Paginator=function(e,i,a){var t=this,n=$(e),o=$(i),s={},r=function(){n.click(function(){$(this).hasClass("enabled")&&t.setSelectedPage($(this).attr("href").replace("#",""))})};this.init=function(){r()},this.loadHtml=function(e,i,a){$.ajax({url:"views/"+e+".html"}).done(function(e){i.find(".content").html(e),a()})},this.setSelectedPage=function(e){t=this,o.find(".page").removeClass("show-page").addClass("hide-page"),o.find(".page .loading").removeClass("hide"),o.find(".page .content").removeClass("show"),this.selectedPage=o.find("div[data-page="+e+"]"),this.selectedPage.addClass("show-page").removeClass("hide-page");var i=function(){t.selectedPage.find(".loading").addClass("hide"),t.selectedPage.find(".content").addClass("show animated fadeIn")};s[e]?a(e,this.selectedPage.data("title"),i):this.loadHtml(e,this.selectedPage,function(){a(e,t.selectedPage.data("title"),i)})}},CEP={getInfo:function(e,i){$.getJSON("https://viacep.com.br/ws/"+e+"/json/",function(e){if(e.erro)i(e);else{var a={rua:e.logradouro,cidade:e.localidade,bairro:e.bairro,uf:e.uf,pais:"Brasil"};i(a)}})}},ChartPedidos={type:"line",labels:[],data:[],chart:null,el:null,label:"",init:function(e,i,a,t){this.label=i,this.el=e,this.labels=a,this.data=t,this.constructElement()},constructElement:function(){var e=document.getElementById(this.el);e.height=100,this.chart=new Chart(e,{type:this.type,data:{labels:this.labels,datasets:[{label:this.label,data:this.data,backgroundColor:["rgba(255, 99, 132, 0.2)"],borderColor:["rgba(255,99,132,1)"],borderWidth:1}]},options:{scales:{yAxes:[{ticks:{beginAtZero:!0}}]}}})}},FormPedido=function(e,i,a){var t=null,n=null,o=0,s=0;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-pedido",{id:{keyUp:function(i,a){e.keyUpId(i,a)},hasLoading:!0},data_de_compra:{rules:"required",isDate:!0,onChangeDate:function(){}}},function(){e.submit()}),a()},this.submit=function(){var a=t.getAll();a.id=o,a.idSolicitante=s,i.setData(a),e.paginatorForms.setSelectedPage("formSolicitante")},this.keyUpId=function(e,i){i.status&&(clearTimeout(n),n=setTimeout(function(){""!=t.get("id")?(t.setDisabled(["id","data_de_compra"]),t.showLoading("id",0),Database.findPedidoById(t.get("id"),function(e){if(t.setEnabled(["id"]),1==e.length){e=e[0],t.setValue(e),t.verifySubmitEnabled(),e.total=e.total_materiais+e.total_insumos;var i=$(".fields-pedido");for(var a in e){var n=e[a];"total_materiais"!=a&&"total_insumos"!=a&&"total"!=a||(n=n.toFixed(2)),i.find('li[data-field="'+a+'"] span').text(n)}o=e.id,s=e.id_solicitante,$(".about-pedido").removeClass("hide")}else o=0,$(".about-pedido").addClass("hide");t.setEnabled(["data_de_compra"]),t.hideLoading("id",0)})):$(".about-pedido").addClass("hide")},1e3))},this.init()},FormSolicitante=function(e,i,a){var t=null,n=null;this.init=function(){var e=this;t=new FormWizard(".form-solicitante",{id:{},nome:{rules:"required|min:3|max:100"},telefone:{rules:"required",mask:"(00) 00000-0000"},cpf:{rules:"required",mask:"000.000.000-00",onCompleteMask:function(){e.searchSolicitante()},hasLoading:!0},cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.load()},this.submit=function(){var a=t.getAll();a.cpf=t.getCleanValue("cpf"),a.cep=a.cep.replace("-",""),a.telefone=a.telefone.replace(" ",""),i.setSolicitante(a),e.paginatorForms.setSelectedPage("formMaterial")},this.load=function(){var e=this;0==i.get("id")?a():Database.findSolicitanteById(i.get("idSolicitante"),function(i){if(0==i.length)t.setEnabled(["cep","nome","telefone"]);else{var n=i[0];e.setValueForm(n),t.validateAllFields(),t.verifySubmitEnabled()}a()})},this.setValueForm=function(e){e.cpf=s(e.cpf),e.cep=r(e.cep),e.telefone=o(e.telefone),t.setValue(e),t.setAllEnabled()};var o=function(e){return $("
    "+e.replace("(").replace(")")+"
    ").mask("(00) 00000-0000").text()},s=function(e){return $("
    "+e+"
    ").mask("000.000.000-00").text()},r=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.searchSolicitante=function(){var e=this;clearTimeout(n),n=setTimeout(function(){t.setDisabled(["cpf"]);var i=t.getCleanValue("cpf");t.showLoading("cpf"),Database.findSolicitanteByCpf(i,function(i){0==i.length?t.setEnabled(["cep","nome","telefone"]):(e.setValueForm(i[0]),t.validateAllFields(),t.verifySubmitEnabled()),t.hideLoading("cpf")})},1e3)},this.init()},FormMaterial=function(e,i,a){var t=null;this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-material",{id:{},nome:{rules:"required"},marca:{rules:"required"},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-material").click(function(){e.addMaterial({})}),this.load()},this.submit=function(){i.setMaterial(this.constructObject(t.get("id"),t.get("nome"),t.get("marca"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formInsumo")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],nome:i[s],marca:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,nome:i,marca:a,quantidade:t,preco:n}]},this.htmlMaterial=function(e){return'
  • '},this.addMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e)),t.reload()},this.load=function(){var e=this,n=i.get("id");(n=!n)?a():Database.findMaterialByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-material").html("");for(var n in i)e.injectHtmlMaterial(i[n]);t.reload(),a()}else a()})},this.injectHtmlMaterial=function(e){$(".list-group.list-material").append(this.htmlMaterial(e))},this.init()},FormInsumo=function(e,i,a){var t=null,n="";this.init=function(){var e=this;t=new FormWizard(".form-wizard.form-insumo",{id:{},descricao:{rules:"required"},id_material:{rules:"required",select:!0},quantidade:{rules:"required"},preco:{rules:"required"}},function(){e.submit()}),$(".btn-add-insumo").click(function(){e.addInsumo({})}),this.load()},this.submit=function(){i.setInsumos(this.constructObject(t.get("id"),t.get("descricao"),t.get("id_material"),t.get("quantidade"),t.get("preco"))),e.paginatorForms.setSelectedPage("formAddress")},this.constructObject=function(e,i,a,t,n){if(Array.isArray(e)){var o=[];for(var s in e)o.push({id:e[s],descricao:i[s],id_material:a[s],quantidade:t[s],preco:n[s]});return o}return[{id:e,descricao:i,id_material:a,quantidade:t,preco:n}]},this.htmlInsumo=function(e){return'
  • '},this.addInsumo=function(e){$(".list-group.list-insumos").append(this.htmlInsumo(e)),t.reload()},this.load=function(){var e=this;this.createSelectMaterial();var n=i.get("id");(n=!n)?a():Database.findInsumoByIdPedido(i.get("id"),function(i){if(i.length>0){$(".list-group.list-insumos").html("");for(var n in i)e.injectHtmlInsumo(i[n]);t.reload(),a()}else a()})},this.createSelectMaterial=function(){var e=i.getMateriais();for(var a in e)console.log(e),n='"},this.injectHtmlInsumo=function(e){var i=$(this.htmlInsumo(e));e.id_material&&i.find(".sel-material").val(e.id_material),$(".list-group.list-insumos").append(i)},this.init()},FormAddress=function(e,i,a){var t=null,n=null;this.init=function(){var e=this,a=i.getSolicitante();t=new FormWizard(".form-address",{cep:{rules:"required",mask:"00000-000",onCompleteMask:function(i){e.searchCep(i)},hasLoading:!0},rua:{rules:"required|min:3"},numero:{rules:"required"},complemento:{},estado:{rules:"required",select:!0},cidade:{rules:"required|min:3"}},function(){e.submit()}),this.setValueForm(a)},this.submit=function(){(n={}).cep=t.get("cep").replace("-",""),n.rua=t.get("rua"),n.complemento=t.get("complemento"),n.numero=t.get("numero"),n.estado=t.get("estado"),n.cidade=t.get("cidade"),i.setAddress(n),e.paginatorForms.setSelectedPage("formInsurance")};var o=function(e){return $("
    "+e+"
    ").mask("00000-000").text()};this.setValueForm=function(e){(n={}).cep=o(e.cep),n.rua=e.rua,n.complemento=e.complemento,n.numero=e.numero,n.estado=e.estado,n.cidade=e.cidade,t.setValue(n),t.setAllEnabled(),t.validateAllFields(),t.verifySubmitEnabled(),a()},this.searchCep=function(e){var i=["cep","rua","numero","complemento","cidade","uf"];t.setDisabled(i),CEP.getInfo(e,function(e){t.setValue(e),t.setEnabled(i)})},this.init()},FormInsurance=function(e,i,a){var t=null,n="";this.init=function(){var e=this;(t=$(".form-insurance")).find(".btn-submit").click(function(){e.submit()}),t.find(".insurance").on("change",function(){n=$(this).val(),e.checkEnabledSubmit()}),a()},this.submit=function(){i.setInsurance(n),e.paginatorForms.setSelectedPage("formResumo")},this.checkEnabledSubmit=function(){""!=n&&t.find(".btn-submit").removeAttr("disabled")},this.init()},FormResumo=function(e,i,a){var t=null;this.init=function(){var e=this;t=$(".form-resumo"),this.setValueForPedido(),this.setValuesForSolicitante(),this.setValuesForMateriais(),this.setValuesForInsumos(),this.setValuesForInsurance(),t.find(".btn-submit").click(function(){e.submit()}),a()},this.submit=function(){e.paginatorForms.setSelectedPage("formFinish")},this.setValueForPedido=function(){var e=t.find('.info[data-info="pedido"]'),a=i.getData();this.setValue(e,a)},this.setValuesForSolicitante=function(){var e=t.find('.info[data-info="solicitante"]'),a=i.getSolicitante();this.setValue(e,a)},this.getHtmlMaterial=function(e){return'
  • '+e.nome+'
    '+e.marca+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForMateriais=function(){var e=i.getMateriais();for(var a in e)t.find(".list-material").append(this.getHtmlMaterial(e[a]))},this.getHtmlInsumo=function(e){return'
  • '+e.descricao+'
    '+e.id_material+'
    '+e.quantidade+'
    '+e.preco+"
  • "},this.setValuesForInsumos=function(){var e=i.getInsumos();for(var a in e)t.find(".list-insumos").append(this.getHtmlInsumo(e[a]))},this.setValuesForInsurance=function(){var e=i.getInsurance(),a="";console.log(e),a="s"==e?"Optou pelo seguro extra":"Não optou pelo seguro extra",t.find(".insurance").text(a)},this.setValue=function(e,i){for(var a in i){var t=e.find('span[data-field="'+a+'"]');t&&t.text(i[a])}},this.init()},FormFinish=function(e,i,a){this.init=function(){a()},this.mergeSolicitante=function(){var e=i.getSolicitante();0==e.id?Database.insertSolicitante(e,function(e){console.log(e)}):Database.updateSolicitante(e,function(e){console.log(e)})},this.init()},Core={paginatorMenu:null,paginatorForms:null,validator:null,formPedido:null,formSolicitante:null,formMaterial:null,formInsumo:null,formInsurance:null,formAddress:null,formResumo:null,pedido:null,init:function(){var e=this;this.paginatorMenu=new Paginator(".page-change",".paginator",function(i,a,t){e.pages[i](e,t)}),this.paginatorMenu.init(),String.prototype.replaceAll=function(e,i){return this.replace(new RegExp(e,"g"),i)},this.paginatorMenu.setSelectedPage("dashboard1"),$(".change-sub-navbar").click(function(){e.changeSubNavbar($(this).data("subnavbar"))}),$(".navbar .navbar-nav a").click(function(){$(".navbar .navbar-nav li").removeClass("active"),$(this).addClass("active")})},changeSubNavbar:function(e){$(".sub-navbar").addClass("hide"),$(".sub-navbar."+e).removeClass("hide")},pages:{dashboard1:function(e,i){Database.fetchPedidosPorDia(function(a){a=e.prepareResultPorDia(a),ChartPedidos.init("chartOne","# pedidos por dia",a.labels,a.data),i()})},dashboard2:function(e,i){Database.fetchPedidosPorSolicitantes(function(a){a=e.prepareResultPorSolicitante(a),ChartPedidos.init("chartTwo","# pedidos por solicitante",a.labels,a.data),i()})},dashboard3:function(e,i){Database.fetchAllPedidos(function(e){var a=[];for(var t in e){var n=Number(e[t].total_materiais)+Number(e[t].total_insumos);a.push([e[t].numero,e[t].nome,e[t].data_de_compra.replaceAll("-","/"),"R$ "+e[t].total_materiais.toFixed(2),"R$ "+e[t].total_insumos.toFixed(2),"R$ "+n.toFixed(2)])}$("#table-pedidos").DataTable({columns:[{title:"Numero"},{title:"Solicitante"},{title:"Data de compra"},{title:"Total em Materiais"},{title:"Total em Insumos"},{title:"Total da compra"}],data:a}),i()})},process:function(e,i){e.pedido||(e.pedido=new Pedido),e.paginatorForms=new Paginator("--",".paginator.forms",function(i,a,t){e.changeTitleHeader(a),console.log("Change page",i),"formPedido"==i?e.formPedido||(e.formPedido=new FormPedido(e,e.pedido,t)):"formSolicitante"==i?e.formSolicitante||(e.formSolicitante=new FormSolicitante(e,e.pedido,t)):"formMaterial"==i?e.formMaterial||(e.formMaterial=new FormMaterial(e,e.pedido,t)):"formInsumo"==i?e.formInsumo||(e.formInsumo=new FormInsumo(e,e.pedido,t)):"formAddress"==i?e.formAddress||(e.formAddress=new FormAddress(e,e.pedido,t)):"formInsurance"==i?e.formInsurance||(e.formInsurance=new FormInsurance(e,e.pedido,t)):"formResumo"==i?e.formResumo||(e.formResumo=new FormResumo(e,e.pedido,t)):"formFinish"==i&&(e.formFinish||(e.formFinish=new FormFinish(e,e.pedido,t)))}),e.paginatorForms.init(),e.paginatorForms.setSelectedPage("formPedido"),i()}},changeTitleHeader:function(e){$(".title-header h2").text(e)},prepareResultPorSolicitante:function(e){var i={labels:[],data:[]};for(var a in e)i.labels.push(e[a].nome),i.data.push(e[a].total);return i},prepareResultPorDia:function(e){var i={data:[],labels:[]};for(var a in e)i.labels.push(this.prepareNumber(e[a].day)),i.data.push(e[a].total);return i},prepareNumber:function(e){return e<10?"0"+e:e}};Core.init(); \ No newline at end of file diff --git a/src/js/paginator.js b/src/js/paginator.js index 06317098..156d5a73 100644 --- a/src/js/paginator.js +++ b/src/js/paginator.js @@ -38,7 +38,7 @@ var Paginator = function(links, el, onPageChange) { var showContentFn = function() { $this.selectedPage.find('.loading').addClass('hide'); - $this.selectedPage.find('.content').addClass('show'); + $this.selectedPage.find('.content').addClass('show animated fadeIn'); } if (!pagesLoaded[page]) { From d471c2cc6d20db954e1d8380dd35a29f475f7bec Mon Sep 17 00:00:00 2001 From: Agner Date: Mon, 12 Jun 2017 23:09:18 -0300 Subject: [PATCH 23/23] adjust colors --- public/assets/css/app.css | 2 +- public/assets/images/arrow.png | Bin 0 -> 28399 bytes public/index.html | 8 +++++++- src/scss/_navbar.scss | 29 ++++++++++++++++++++++++++++- src/scss/app.scss | 24 ++++++++++++++++++++++++ 5 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 public/assets/images/arrow.png diff --git a/public/assets/css/app.css b/public/assets/css/app.css index 6e8f5a5b..90eff297 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1 +1 @@ -*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .dropdown-menu{background-color:#102938}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.btn[disabled].btn-success{background-color:#81d9c5;border:1px solid #5acdb2}.btn.btn-success{background-color:#39bb9d;border:1px solid #2d947c}.btn.btn-success:hover{background-color:#2d947c;border:1px solid #216d5b}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:30px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.form-material{margin:20px 0 40px;float:left;width:100%}.form-insumo{margin:20px 0 60px;float:left;width:100%}.form-address{margin:20px 0 60px;float:left;width:100%}.form-insurance{margin:20px 0 60px;float:left;width:100%}.form-insurance .sub{margin:20px 0;font-size:16px}.form-insurance .radio{background-color:#eee}.form-insurance .radio label{width:100%;text-align:center;padding:10px}.form-insurance .radio label:hover,.form-insurance .radio label.checked{background-color:#39bb9d;color:#fff}.form-insurance .btn-submit{margin-top:10px}.form-resumo{margin:20px 0 60px;float:left;width:100%}.form-resumo .form-group span{width:100%;display:block}.form-finish{margin:20px 0 60px;float:left;width:100%}.form-finish .message{width:100%;text-align:center;padding:30px 10px 0}.form-finish .message h5{color:#0ea02e;font-size:20px;font-weight:bold}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .dashboard{margin:0 0 30px;float:left;width:100%}html body .wrapper>.container{min-height:100%;position:relative}html body .wrapper>.container .form-center{max-width:600px}html body .wrapper .push{height:31px} +*{margin:0;padding:0}@font-face{font-family:'HelveticaNeueBold';src:url("../fonts/HelveticaNeue-Bold.eot");src:local("Helvetica Neue Bold"),local("HelveticaNeue"),url("../fonts/HelveticaNeue-Bold.woff") format("woff"),url("../fonts/HelveticaNeue-Bold.ttf") format("truetype")}.navbar .navbar-nav:not(.navbar-right)>li>a{padding-top:20px !important;padding-bottom:20px !important}.navbar .navbar-right li a{padding-top:13px !important}.navbar .navbar-right li a.search img{margin-top:6px;width:21px;height:auto}.navbar .navbar-right li a.accessibility img{margin-top:7px;width:17px;height:auto}.navbar .navbar-right li a.user img.img-profile{width:32px;height:auto;margin-right:5px}.navbar .navbar-right li a.user img.arrow{width:8px;height:auto}.navbar.navbar-dark{background-color:#102938;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.navbar.navbar-dark .dropdown-menu{background-color:#102938}.navbar.navbar-dark .navbar-header .navbar-brand{padding-top:13px}.navbar.navbar-dark .navbar-header .navbar-brand img{width:34px;height:auto}.navbar.navbar-dark ul.navbar-nav li.first-item{margin-left:40px}.navbar.navbar-dark ul.navbar-nav li.active a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li a{color:#feffff;text-transform:uppercase;font-family:"HelveticaNeueBold";font-weight:bold}.navbar.navbar-dark ul.navbar-nav li a:hover,.navbar.navbar-dark ul.navbar-nav li a:active,.navbar.navbar-dark ul.navbar-nav li a:focus{background-color:transparent;color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.focus{background:transparent}.navbar.navbar-dark ul.navbar-nav li.focus a{color:#39bb9d}.navbar.navbar-dark ul.navbar-nav li:hover{background:transparent}.navbar.navbar-dark ul.navbar-nav li.init-process{margin-left:60px;background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process a,.navbar.navbar-dark ul.navbar-nav li.init-process a:focus{color:#fff}.navbar.navbar-dark ul.navbar-nav li.init-process img{width:11px;height:auto;display:inline-block;margin-top:-2px;margin-right:8px}.navbar.navbar-dark ul.navbar-nav li.init-process span{display:inline-block}.navbar.navbar-dark ul.navbar-nav li.init-process:hover{background:#39bb9d}.navbar.navbar-dark ul.navbar-nav li.init-process:hover a{color:#fff}.navbar.navbar-fixed-top{border-width:0}.navbar .sub-navbar{float:left;width:100%;background:#fff;border-bottom:1px solid #ddd;min-height:55px;position:relative}.navbar .sub-navbar .arrow{position:absolute;left:0;top:0;width:17.5px;height:auto}.navbar .sub-navbar.dashboards .arrow{top:-7px;left:23px;-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.navbar .sub-navbar.process .arrow{left:100px;top:53px}.navbar .sub-navbar a{color:#666}.navbar .sub-navbar .left{float:left;margin:16px 0 0 20px}.navbar .sub-navbar .left img{width:26px;height:auto}.navbar .sub-navbar .left span{font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;font-size:14px;margin-left:5px;margin-top:1px;display:inline-block}.navbar .sub-navbar h2{font-size:14px;float:left;margin:0;font-family:"HelveticaNeueBold";font-weight:bold;color:#102938;padding:20px 23px 17px}.navbar .sub-navbar ul.list{margin-bottom:0px;float:left;width:100%;list-style:none}.navbar .sub-navbar ul.list li{float:left}.navbar .sub-navbar ul.list li a{float:left;padding:18px 23px 17px;color:#666;font-family:"Trebuchet MS Regular"}.navbar .sub-navbar ul.list li a:hover,.navbar .sub-navbar ul.list li a:focus,.navbar .sub-navbar ul.list li a:active{color:#666;text-decoration:none}.paginator{height:100%}.paginator .loading{width:100%;text-align:center;padding:50px 0}.paginator .loading .hide{display:none}.paginator .content{display:none}.paginator .content .show{display:block}.paginator .show-page{display:block}.paginator .hide-page{display:none}.validator-errors span{display:none}.validator-errors span .show{display:block}.list-group.sub-list{margin:10px}.list-group.sub-list .list-group-item{font-size:12px;padding:8px 10px}.btn[disabled].btn-success{background-color:#81d9c5;border:1px solid #5acdb2}.btn.btn-success{background-color:#39bb9d;border:1px solid #2d947c}.btn.btn-success:hover{background-color:#2d947c;border:1px solid #216d5b}.form-wizard h3{width:100%;font-size:18px;border-bottom:1px solid #eee;padding-bottom:7px}.form-wizard h3.margin{margin-top:40px}.form-wizard .loading-field{position:relative;width:100%}.form-wizard .loading-field .image-loading{position:absolute;right:3px;top:2px;display:none}.form-pedido{margin-top:30px}.form-pedido .about-pedido{width:100%;margin-bottom:15px}.form-pedido .about-pedido h5{margin:15px 0 5px 10px;font-weight:bold}.form-pedido .about-pedido .sub-list{margin-top:0}.form-solicitante{margin:40px 0 60px;float:left;width:100%}.form-material{margin:20px 0 40px;float:left;width:100%}.form-insumo{margin:20px 0 60px;float:left;width:100%}.form-address{margin:20px 0 60px;float:left;width:100%}.form-insurance{margin:20px 0 60px;float:left;width:100%}.form-insurance .sub{margin:20px 0;font-size:16px}.form-insurance .radio{background-color:#eee}.form-insurance .radio label{width:100%;text-align:center;padding:10px}.form-insurance .radio label:hover,.form-insurance .radio label.checked{background-color:#39bb9d;color:#fff}.form-insurance .btn-submit{margin-top:10px}.form-resumo{margin:20px 0 60px;float:left;width:100%}.form-resumo .form-group span{width:100%;display:block}.form-finish{margin:20px 0 60px;float:left;width:100%}.form-finish .message{width:100%;text-align:center;padding:30px 10px 0}.form-finish .message h5{color:#0ea02e;font-size:20px;font-weight:bold}.footer{background-color:#555;color:#fff;float:left;width:100%;height:31px;padding:5px;margin-top:20px;border-top:1px solid #ddd}.footer .left{float:left;padding-left:10px}.footer .left span.copy{color:#999;font-family:"Trebuchet MS Regular";font-size:12px}.footer .right{float:right}html{height:100%}html body{height:100%;padding-top:115px;background-color:#f9f9f9}html body .wrapper{min-height:100%;margin-bottom:-51px;position:relative}html body .wrapper .dashboard{margin:0 0 30px;float:left;width:100%}html body .wrapper .dashboard .pagination>.active a{background-color:#39bb9d;border-color:#2d947c}html body .wrapper .dashboard .pagination>.active a:focus,html body .wrapper .dashboard .pagination>.active a:hover{background-color:#39bb9d}html body .wrapper .dashboard .pagination>.active span{background-color:#39bb9d;border-color:#2d947c}html body .wrapper .dashboard .pagination>.active span:hover,html body .wrapper .dashboard .pagination>.active span:focus{background-color:#39bb9d}html body .wrapper>.container{min-height:100%;position:relative}html body .wrapper>.container .form-center{max-width:600px}html body .wrapper .push{height:31px} diff --git a/public/assets/images/arrow.png b/public/assets/images/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..7ace28a6b9a69ebef36089ba72443ef7b4f3da16 GIT binary patch literal 28399 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 Y>j(C}kzE!cDwWF0^qg?JyXdO_1