diff --git a/config.xml b/config.xml index 96e8bcd..34a53de 100644 --- a/config.xml +++ b/config.xml @@ -91,6 +91,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package-lock.json b/package-lock.json index d341d80..d20f2d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2020,6 +2020,25 @@ } } }, + "@netflix/nerror": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", + "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "extsprintf": "^1.4.0", + "lodash": "^4.17.15" + }, + "dependencies": { + "extsprintf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=", + "dev": true + } + } + }, "@ngtools/webpack": { "version": "10.0.8", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.0.8.tgz", @@ -2404,6 +2423,12 @@ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -2537,6 +2562,21 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, + "android-versions": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.6.0.tgz", + "integrity": "sha512-ojC2Ig7b/KJ6iNtR8e4bacmOsJyEkoERk3CKMIsnH7kJz5z6551NMbrVaRb7KXYavu1d74Uhml/bfcmqT3nAcg==", + "dev": true, + "requires": { + "semver": "^5.7.1" + } + }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", + "dev": true + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -2774,6 +2814,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -2980,6 +3026,12 @@ "callsite": "1.0.0" } }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -3080,6 +3132,15 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4049,6 +4110,241 @@ } } }, + "cordova-android": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-9.0.0.tgz", + "integrity": "sha512-2ZEgApK4LPMYW0zh/mLAH3CabzCaKE0yxQTzA2wTf0Eo2HHTJnRtDCf9spGf3nPOkubyXS6+pvzz5QzNHpVTqQ==", + "dev": true, + "requires": { + "android-versions": "^1.5.0", + "cordova-common": "^4.0.1", + "execa": "^4.0.2", + "fs-extra": "^9.0.1", + "nopt": "^4.0.3", + "properties-parser": "^0.3.1", + "which": "^2.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cordova-common": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.0.2.tgz", + "integrity": "sha512-od7aNShyuBajzPY83mUEO8tERwwWdFklXETHiXP5Ft87CWeo/tSuwNPFztyTy8XYc74yXdogXKPTJeUHuVzB8Q==", + "dev": true, + "requires": { + "@netflix/nerror": "^1.1.3", + "ansi": "^0.3.1", + "bplist-parser": "^0.2.0", + "cross-spawn": "^7.0.1", + "elementtree": "^0.1.7", + "endent": "^1.4.1", + "fast-glob": "^3.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "plist": "^3.0.1", + "q": "^1.5.1", + "read-chunk": "^3.2.0", + "strip-bom": "^4.0.0", + "underscore": "^1.9.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cordova-plugin-device": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.2.tgz", @@ -4556,6 +4852,12 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-equal": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", @@ -4928,6 +5230,23 @@ "integrity": "sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g==", "dev": true }, + "elementtree": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", + "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=", + "dev": true, + "requires": { + "sax": "1.1.4" + }, + "dependencies": { + "sax": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", + "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=", + "dev": true + } + } + }, "elliptic": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", @@ -4998,6 +5317,17 @@ "once": "^1.4.0" } }, + "endent": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/endent/-/endent-1.4.1.tgz", + "integrity": "sha512-buHTb5c8AC9NshtP6dgmNLYkiT+olskbq1z6cEGvfGCF3Qphbu/1zz5Xu+yjTDln8RbxNhPoUyJ5H8MSrp1olQ==", + "dev": true, + "requires": { + "dedent": "^0.7.0", + "fast-json-parse": "^1.0.3", + "objectorarray": "^1.0.4" + } + }, "engine.io": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", @@ -5608,6 +5938,12 @@ "picomatch": "^2.2.1" } }, + "fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", + "dev": true + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -6526,6 +6862,12 @@ } } }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -8433,6 +8775,16 @@ "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", "dev": true }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -8783,6 +9135,12 @@ "has": "^1.0.3" } }, + "objectorarray": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.4.tgz", + "integrity": "sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w==", + "dev": true + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -10030,6 +10388,15 @@ } } }, + "properties-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.3.1.tgz", + "integrity": "sha1-ExbpU5/7/ZOEXjabIRAiq9R4dxo=", + "dev": true, + "requires": { + "string.prototype.codepointat": "^0.2.0" + } + }, "protoduck": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", @@ -10611,6 +10978,16 @@ } } }, + "read-chunk": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", + "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "with-open-file": "^0.1.6" + } + }, "read-package-json": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", @@ -12219,6 +12596,12 @@ } } }, + "string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", + "dev": true + }, "string.prototype.trimend": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", @@ -12265,12 +12648,24 @@ } } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "style-loader": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", @@ -12773,6 +13168,12 @@ "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", "dev": true }, + "underscore": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz", + "integrity": "sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -14057,6 +14458,17 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "with-open-file": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", + "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", + "dev": true, + "requires": { + "p-finally": "^1.0.0", + "p-try": "^2.1.0", + "pify": "^4.0.1" + } + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", diff --git a/package.json b/package.json index 70bc315..d369621 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@types/jasminewd2": "~2.0.3", "@types/node": "^12.11.1", "codelyzer": "^6.0.0", + "cordova-android": "^9.0.0", "cordova-plugin-device": "^2.0.2", "cordova-plugin-ionic-keyboard": "^2.2.0", "cordova-plugin-ionic-webview": "^4.2.1", @@ -74,4 +75,4 @@ "android" ] } -} +} \ No newline at end of file diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 45fa8a3..7675048 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,16 +1,33 @@ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; +import { LoginPage } from './login/login.page'; const routes: Routes = [ + { - path: '', + path: 'login', + component: LoginPage + }, + { + path: 'tabs', loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule) }, { path: 'view-evento', loadChildren: () => import('./view-evento/view-evento.module').then( m => m.ViewEventoPageModule) }, + { + path: 'galeriamodal', + loadChildren: () => import('./galeriamodal/galeriamodal.module').then( m => m.GaleriamodalPageModule) + }, + { + path:'', + redirectTo: 'tabs', + pathMatch: 'full' + }, + + ]; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 98b0670..9ba0407 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -5,16 +5,17 @@ import { ReactiveFormsModule } from '@angular/forms'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { SplashScreen } from '@ionic-native/splash-screen/ngx'; import { StatusBar } from '@ionic-native/status-bar/ngx'; - import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { PerfilDiscotecaPage } from './perfil-discoteca/perfil-discoteca.page'; import { PromptEventoPage} from './prompt-evento/prompt-evento.page' +import { GaleriamodalPageModule } from './galeriamodal/galeriamodal.module'; +import { LoginPage } from './login/login.page'; @NgModule({ - declarations: [AppComponent, PerfilDiscotecaPage, PromptEventoPage], + declarations: [AppComponent, PerfilDiscotecaPage, PromptEventoPage, LoginPage], entryComponents: [], - imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule, ReactiveFormsModule], + imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule, ReactiveFormsModule, GaleriamodalPageModule], providers: [ StatusBar, SplashScreen, diff --git a/src/app/galeriamodal/galeriamodal-routing.module.ts b/src/app/galeriamodal/galeriamodal-routing.module.ts new file mode 100644 index 0000000..6d0a353 --- /dev/null +++ b/src/app/galeriamodal/galeriamodal-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { GaleriamodalPage } from './galeriamodal.page'; + +const routes: Routes = [ + { + path: '', + component: GaleriamodalPage + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class GaleriamodalPageRoutingModule {} diff --git a/src/app/galeriamodal/galeriamodal.module.ts b/src/app/galeriamodal/galeriamodal.module.ts new file mode 100644 index 0000000..6e40a45 --- /dev/null +++ b/src/app/galeriamodal/galeriamodal.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { IonicModule } from '@ionic/angular'; + +import { GaleriamodalPageRoutingModule } from './galeriamodal-routing.module'; + +import { GaleriamodalPage } from './galeriamodal.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + GaleriamodalPageRoutingModule + ], + declarations: [GaleriamodalPage] +}) +export class GaleriamodalPageModule {} diff --git a/src/app/galeriamodal/galeriamodal.page.html b/src/app/galeriamodal/galeriamodal.page.html new file mode 100644 index 0000000..41f9aa3 --- /dev/null +++ b/src/app/galeriamodal/galeriamodal.page.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/app/galeriamodal/galeriamodal.page.scss b/src/app/galeriamodal/galeriamodal.page.scss new file mode 100644 index 0000000..6c210a4 --- /dev/null +++ b/src/app/galeriamodal/galeriamodal.page.scss @@ -0,0 +1,4 @@ +ion-content { + background: rgba(0, 0, 0, 0.589) + +} \ No newline at end of file diff --git a/src/app/galeriamodal/galeriamodal.page.spec.ts b/src/app/galeriamodal/galeriamodal.page.spec.ts new file mode 100644 index 0000000..63d6229 --- /dev/null +++ b/src/app/galeriamodal/galeriamodal.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { GaleriamodalPage } from './galeriamodal.page'; + +describe('GaleriamodalPage', () => { + let component: GaleriamodalPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GaleriamodalPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(GaleriamodalPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/galeriamodal/galeriamodal.page.ts b/src/app/galeriamodal/galeriamodal.page.ts new file mode 100644 index 0000000..a5e2125 --- /dev/null +++ b/src/app/galeriamodal/galeriamodal.page.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { ModalController, NavParams } from '@ionic/angular'; +import { Tab1Service } from '../tab1/tab1.service'; + +@Component({ + selector: 'app-galeriamodal', + templateUrl: './galeriamodal.page.html', + styleUrls: ['./galeriamodal.page.scss'], +}) +export class GaleriamodalPage implements OnInit { + + foto: string; + + sliderOpts = { + + } + constructor(private navParams: NavParams, private modalController: ModalController, private tab1Service: Tab1Service, + private router: Router) { } + + ngOnInit() { + this.foto = this.navParams.get('foto'); + } + + + borrar(){ + let index = this.tab1Service.galeria.indexOf('foto'); + this.tab1Service.galeria.slice[index]; + this.close(); + } + + close(){ + this.modalController.dismiss(); + } + +} diff --git a/src/app/login.service.spec.ts b/src/app/login.service.spec.ts new file mode 100644 index 0000000..299b0d5 --- /dev/null +++ b/src/app/login.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { LoginService } from './login.service'; + +describe('LoginService', () => { + let service: LoginService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(LoginService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/login.service.ts b/src/app/login.service.ts new file mode 100644 index 0000000..92c777e --- /dev/null +++ b/src/app/login.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class LoginService { + + constructor() { } +} diff --git a/src/app/login/login-routing.module.ts b/src/app/login/login-routing.module.ts new file mode 100644 index 0000000..b0b8a72 --- /dev/null +++ b/src/app/login/login-routing.module.ts @@ -0,0 +1,27 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { LoginPage } from './login.page'; + +const routes: Routes = [ + { + path: '', + component: LoginPage, + }, + { + path: 'tabs', + loadChildren: () => import('../tabs/tabs.module').then(m => m.TabsPageModule) + }, + + { + path: '', + redirectTo: 'login' + } + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class LoginPageRoutingModule {} diff --git a/src/app/login/login.module.ts b/src/app/login/login.module.ts new file mode 100644 index 0000000..6710e2a --- /dev/null +++ b/src/app/login/login.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { IonicModule } from '@ionic/angular'; +import { LoginPageRoutingModule } from './login-routing.module'; +import { LoginPage } from './login.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + LoginPageRoutingModule + ], + declarations: [LoginPage] +}) +export class LoginPageModule {} diff --git a/src/app/login/login.page.html b/src/app/login/login.page.html new file mode 100644 index 0000000..1a77f8b --- /dev/null +++ b/src/app/login/login.page.html @@ -0,0 +1,11 @@ + + + Login + + + + + + Login + + diff --git a/src/app/login/login.page.scss b/src/app/login/login.page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/login/login.page.spec.ts b/src/app/login/login.page.spec.ts new file mode 100644 index 0000000..07cb76a --- /dev/null +++ b/src/app/login/login.page.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { LoginPage } from './login.page'; + +describe('LoginPage', () => { + let component: LoginPage; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LoginPage ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(LoginPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/login/login.page.ts b/src/app/login/login.page.ts new file mode 100644 index 0000000..75a025e --- /dev/null +++ b/src/app/login/login.page.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-login', + templateUrl: './login.page.html', + styleUrls: ['./login.page.scss'], +}) +export class LoginPage implements OnInit { + + constructor(private router: Router) { } + + ngOnInit() { + } + + login(){ + this.router.navigate(['/tabs']); + } + +} diff --git a/src/app/perfil-discoteca/perfil-discoteca.page.html b/src/app/perfil-discoteca/perfil-discoteca.page.html index 2840b2a..e3cd2bf 100644 --- a/src/app/perfil-discoteca/perfil-discoteca.page.html +++ b/src/app/perfil-discoteca/perfil-discoteca.page.html @@ -7,14 +7,11 @@ - - - Mi Perfil - - - + +
+ @@ -55,17 +52,20 @@
{{localizacion}}
+
Galería de Fotos - + -
- - - -
+
+
+ + + +
+
@@ -91,7 +91,8 @@ {{evento.fecha}} · - {{evento.precio1}}, {{evento.precio2}} + {{evento.precio1}},{{evento.precio2}} +
{{evento.descripcion}} @@ -101,13 +102,13 @@
- +
- +
\ No newline at end of file diff --git a/src/app/perfil-discoteca/perfil-discoteca.page.scss b/src/app/perfil-discoteca/perfil-discoteca.page.scss index a0df72b..d4e24fa 100644 --- a/src/app/perfil-discoteca/perfil-discoteca.page.scss +++ b/src/app/perfil-discoteca/perfil-discoteca.page.scss @@ -7,13 +7,11 @@ *{ padding: 5px; + display: block; + margin: auto; } - .titulo{ - font: "arial"; - } .fotoPerfil{ - display: block; text-align: end; max-width: 800px; max-height: auto; @@ -34,9 +32,9 @@ .datosDisplay{ - float: left; - position: relative; - margin: auto; + float: left; + position: relative; + margin: auto; } @@ -76,5 +74,5 @@ } ion-slides { - height: 100%; + height: 200px; } diff --git a/src/app/perfil-discoteca/perfil-discoteca.page.ts b/src/app/perfil-discoteca/perfil-discoteca.page.ts index 74e2432..deeaeb9 100644 --- a/src/app/perfil-discoteca/perfil-discoteca.page.ts +++ b/src/app/perfil-discoteca/perfil-discoteca.page.ts @@ -1,13 +1,13 @@ import { Component, OnInit } from '@angular/core'; -import { NodeCompatibleEventEmitter } from 'rxjs/internal/observable/fromEvent'; -import { Tab1Service } from '../tab1/tab1.service' -import { Discoteca } from '../discoteca' -import { IonSlides} from '@ionic/angular'; +import { Tab1Service } from '../tab1/tab1.service'; +import { IonSlides, ModalController} from '@ionic/angular'; import { AlertController } from '@ionic/angular'; import { ViewChild } from '@angular/core'; import { Evento } from '../evento'; import { Router } from '@angular/router'; import { THIS_EXPR } from '@angular/compiler/src/output/output_ast'; +import { GaleriamodalPage } from '../galeriamodal/galeriamodal.page'; +import { stringify } from '@angular/compiler/src/util'; @Component({ selector: 'app-perfil-discoteca', @@ -29,8 +29,13 @@ export class PerfilDiscotecaPage implements OnInit { currentIndex: number; eventos: Evento[]; alertCtrl: AlertController; + sliderOpts = { + slidesPerView: 1.5, + centeredSlides: true, + spaceBetween: 20, + }; - constructor(private tab1Service: Tab1Service, private router: Router) { + constructor(private tab1Service: Tab1Service, private router: Router, private modalController: ModalController) { } @@ -45,9 +50,9 @@ export class PerfilDiscotecaPage implements OnInit { this.getEventos(); this.editDisabled="true"; this.editEnabled="false"; - this.fotoSrc = '../assets/barraca.jpg'; + this.fotoSrc = '../assets/img/barraca.jpg'; this.fotoLoaded = this.fotoSrc; - this.galeriaFotos = []; + this.galeriaFotos = this.tab1Service.galeria; } @@ -73,8 +78,9 @@ export class PerfilDiscotecaPage implements OnInit { } addGaleria(){ - this.galeriaFotos.push(this.someURL); - this.slides.update(); + this.tab1Service.galeria.push(this.someURL); + this.galeriaFotos = this.tab1Service.galeria; + this.slides.update(); } @@ -158,14 +164,30 @@ export class PerfilDiscotecaPage implements OnInit { this.slides.update(); } -addEvento() { - this.router.navigate(['/tabs/tab1/prompt-evento']); + addEvento() { + this.tab1Service.editarEvento=false; + this.router.navigate(['/tabs/tab1/prompt-evento']); } -mostrarEvento(evento: Evento){ - this.tab1Service.eventoIndex = this.eventos.indexOf(evento); - this.router.navigate(['/tabs/tab1/view-evento']); + mostrarEvento(evento: Evento){ + this.tab1Service.eventoIndex = this.eventos.indexOf(evento); + this.router.navigate(['/tabs/tab1/view-evento']); } + + editarEvento(evento: Evento){ + this.tab1Service.eventoIndex = this.eventos.indexOf(evento); + this.tab1Service.editarEvento = true; + this.router.navigate(['/tabs/tab1/prompt-evento']); +} + + openPreview(foto: string){ + this.modalController.create({ + component: GaleriamodalPage, + componentProps: { + foto: foto + } + }).then(modal=>modal.present()); + } } diff --git a/src/app/prompt-evento/prompt-evento-routing.module.ts b/src/app/prompt-evento/prompt-evento-routing.module.ts index 01e3a70..e8162d4 100644 --- a/src/app/prompt-evento/prompt-evento-routing.module.ts +++ b/src/app/prompt-evento/prompt-evento-routing.module.ts @@ -7,7 +7,9 @@ const routes: Routes = [ { path: '', component: PromptEventoPage - } + }, + + ]; @NgModule({ diff --git a/src/app/prompt-evento/prompt-evento.page.html b/src/app/prompt-evento/prompt-evento.page.html index 4590699..94845bd 100644 --- a/src/app/prompt-evento/prompt-evento.page.html +++ b/src/app/prompt-evento/prompt-evento.page.html @@ -7,33 +7,50 @@
-
+ -
+ + Tu evento necesita un nombre + + -
+ -
+ + Tu evento necesita una fecha + + -
- -
-
+ -
+ + Tu evento necesita un precio (puede ser 0) + + + + + + + ¡Dale una descripción a tu evento! + +
diff --git a/src/app/prompt-evento/prompt-evento.page.scss b/src/app/prompt-evento/prompt-evento.page.scss index 749ffa2..3859e0c 100644 --- a/src/app/prompt-evento/prompt-evento.page.scss +++ b/src/app/prompt-evento/prompt-evento.page.scss @@ -1,12 +1,33 @@ *{ - --ion-text-color: #000000; - padding: 5px; + --ion-text-color: #fbffc4; + padding: 15px; letter-spacing: 2px; } -.campoInput{ - display: block; +ion-item{ + text-align: center; + color: wheat, } +input{ + display: inline-block; + text-align: left; + color: black; +} + +label{ + display: inline-block; + text-align: left; + color: wheat, +} + +textarea{ + color: black; +} + +span{ + color: red; + font-style: italic; +} diff --git a/src/app/prompt-evento/prompt-evento.page.ts b/src/app/prompt-evento/prompt-evento.page.ts index 80243b0..7711c91 100644 --- a/src/app/prompt-evento/prompt-evento.page.ts +++ b/src/app/prompt-evento/prompt-evento.page.ts @@ -1,35 +1,43 @@ import { Component, OnInit } from '@angular/core'; -import { FormControl, FormGroup } from '@angular/forms'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; import { Tab1Service } from '../tab1/tab1.service'; import { Evento } from '../evento'; import { Router } from '@angular/router'; -import { FormBuilder } from '@angular/forms'; @Component({ selector: 'app-prompt-evento', templateUrl: './prompt-evento.page.html', styleUrls: ['./prompt-evento.page.scss'], }) -export class PromptEventoPage{ +export class PromptEventoPage implements OnInit{ + + submitted = false; eventoForm = new FormGroup({ - nombre: new FormControl(''), - fecha: new FormControl(''), - hora: new FormControl(''), - precio1: new FormControl(''), - precio2: new FormControl(''), - descripcion: new FormControl('') + nombre: new FormControl('', Validators.required), + fecha: new FormControl('', Validators.required), + precio1: new FormControl('', Validators.required), + precio2: new FormControl('', Validators.required), + descripcion: new FormControl('', Validators.required), }); eventos: Evento[]; constructor(private tab1Service: Tab1Service, private router: Router) { - this.eventos = []; - } + } + + ngOnInit(){ + if (this.tab1Service.editarEvento==true){ + this.eventoForm = this.tab1Service.eventoForms[this.tab1Service.eventoIndex]; + } + } onSubmit(){ - let evento = new Evento(); - this.asignarEvento(evento); - this.router.navigate(['/tabs/tab1/perfil-discoteca']); + this.submitted = true; + if (this.eventoForm.valid){ + let evento = new Evento(); + this.asignarEvento(evento); + this.router.navigate(['/tabs']); + } } asignarEvento(evento: Evento){ evento.setNombre(this.eventoForm.get('nombre').value); @@ -41,7 +49,40 @@ export class PromptEventoPage{ //evento.setHora(evento.getFecha()); transformar en dia y hora if (!this.tab1Service.eventos){ this.tab1Service.initEventos();} - this.tab1Service.eventos.push(evento); + if(!this.tab1Service.eventoForms){ + this.tab1Service.initEventoForms();} + if(this.tab1Service.editarEvento==true){ + this.tab1Service.eventos[this.tab1Service.eventoIndex] = evento; + this.tab1Service.eventoForms[this.tab1Service.eventoIndex] = this.eventoForm; + } + else{ + this.tab1Service.eventos.push(evento); + this.tab1Service.eventoForms.push(this.eventoForm);} + + } + + get nombre(){ + return this.eventoForm.get('nombre'); + } + + get fecha(){ + return this.eventoForm.get('fecha'); + } + + get hora(){ + return this.eventoForm.get('hora'); + } + + get precio1() { + return this.eventoForm.get('precio1'); + } + + get precio2() { + return this.eventoForm.get('precio2'); + } + + get descripcion(){ + return this.eventoForm.get('descripcion'); } diff --git a/src/app/tab1/tab1-routing.module.ts b/src/app/tab1/tab1-routing.module.ts index c0e8f23..5da7584 100644 --- a/src/app/tab1/tab1-routing.module.ts +++ b/src/app/tab1/tab1-routing.module.ts @@ -6,16 +6,18 @@ import { PromptEventoPage } from '../prompt-evento/prompt-evento.page' import { ViewEventoPage } from '../view-evento/view-evento.page' const routes: Routes = [ - { - path: '', - redirectTo: 'perfil-discoteca', - pathMatch: 'full', - }, + { path: 'perfil-discoteca', component: PerfilDiscotecaPage }, + + { + path: '', + redirectTo: 'perfil-discoteca', + pathMatch: 'full,' + }, { path: 'prompt-evento', @@ -26,9 +28,9 @@ const routes: Routes = [ path: 'view-evento', component: ViewEventoPage } - + diff --git a/src/app/tab1/tab1.service.ts b/src/app/tab1/tab1.service.ts index 5088eab..c07d3c7 100644 --- a/src/app/tab1/tab1.service.ts +++ b/src/app/tab1/tab1.service.ts @@ -2,8 +2,8 @@ import { Injectable, OnInit } from '@angular/core'; import { stringify } from 'querystring'; import { Tab1Page } from './tab1.page' import { Discoteca } from '../discoteca' -import { Galeria } from '../galeria'; import { Evento } from '../evento'; +import { FormControl, FormGroup } from '@angular/forms'; import { NumericValueAccessor } from '@ionic/angular'; @@ -13,9 +13,11 @@ import { NumericValueAccessor } from '@ionic/angular'; export class Tab1Service implements OnInit{ discoteca: Discoteca; - galeria: Galeria; + galeria: string[]; eventos: Evento[]; + eventoForms: FormGroup[]; eventoIndex: number; + editarEvento: boolean; constructor() { @@ -30,9 +32,9 @@ export class Tab1Service implements OnInit{ this.discoteca.setNombre('Barraca'); this.discoteca.setTelefono(666666666); this.discoteca.setLocalizacion('Calle del Barquillo'); - this.galeria = new Galeria(); + this.galeria = []; this.initEventos(); - this.galeria.setDiscoteca(this.discoteca.getNombre()); + this.editarEvento = false; } getNombre(): string{ @@ -58,6 +60,10 @@ export class Tab1Service implements OnInit{ this.eventos = []; } + initEventoForms(): void{ + this.eventoForms = []; + } + getEventobyIndex(eventoIndex: number){ return this.eventos[eventoIndex]; } diff --git a/src/app/tabs/tabs-routing.module.ts b/src/app/tabs/tabs-routing.module.ts index 19c6a1b..90830aa 100644 --- a/src/app/tabs/tabs-routing.module.ts +++ b/src/app/tabs/tabs-routing.module.ts @@ -4,12 +4,12 @@ import { TabsPage } from './tabs.page'; const routes: Routes = [ { - path: 'tabs', + path: '', component: TabsPage, children: [ { path: 'tab1', - loadChildren: () => import('../tab1/tab1.module').then(m => m.Tab1PageModule) + loadChildren: () => import('../tab1/tab1.module').then(m => m.Tab1PageModule), }, { path: 'tab2', @@ -21,16 +21,14 @@ const routes: Routes = [ }, { path: '', - redirectTo: '/tabs/tab1', + redirectTo: 'tab1', pathMatch: 'full' }, - - ] }, { path: '', - redirectTo: '/tabs/tab1', + redirectTo: 'tabs', pathMatch: 'full' } ]; diff --git a/src/app/view-evento/view-evento.page.html b/src/app/view-evento/view-evento.page.html index fbd24ed..e44a147 100644 --- a/src/app/view-evento/view-evento.page.html +++ b/src/app/view-evento/view-evento.page.html @@ -5,5 +5,22 @@ - + +
+ +
+ {{evento.nombre}} · + + {{evento.fecha}} · + + {{evento.precio1}},{{evento.precio2}} +
+
+ +
+ {{evento.descripcion}} +
+
+
+
diff --git a/src/app/view-evento/view-evento.page.scss b/src/app/view-evento/view-evento.page.scss index e69de29..aef8929 100644 --- a/src/app/view-evento/view-evento.page.scss +++ b/src/app/view-evento/view-evento.page.scss @@ -0,0 +1,17 @@ +.eventoHeader{ + font-weight: bold; + } + + .eventoDesc{ + color: white; + margin-top: 20px; + } + +.evento{ + display: block; + max-width: 800px; + max-height: auto; + margin: auto; + text-align: justify; + +} \ No newline at end of file diff --git a/src/assets/barraca.jpg b/src/assets/img/barraca.jpg similarity index 100% rename from src/assets/barraca.jpg rename to src/assets/img/barraca.jpg