Compare commits

..

19 Commits

Author SHA1 Message Date
Olu Amey 798c23b32b fix 2020-09-13 17:19:15 -04:00
Olu Amey ccebed5020 fix 2020-09-13 16:49:26 -04:00
Olu Amey df09cf0cd8 fix 2020-09-13 16:48:59 -04:00
Olu Amey 0160625426 fix 2020-09-06 09:29:16 -04:00
Olu Amey 53e6adc674 fix 2020-03-24 19:45:19 -04:00
Your Name 690984accb fix 2020-03-22 18:44:39 -04:00
Your Name ba2533c489 fix 2020-03-18 06:24:06 -04:00
Olu Amey 945f9b3820 fix 2020-03-17 10:34:53 -04:00
Your Name 5a07e578c9 fix 2020-03-17 07:23:15 -04:00
Olu Amey 2cd1bc6fd6 fix 2020-03-17 07:06:32 -04:00
Your Name fdbae3aa70 fix 2020-03-17 06:22:10 -04:00
Your Name 69cc388eed fix 2020-03-17 05:28:46 -04:00
Your Name b1425b545b fix 2020-03-16 21:12:32 -04:00
Your Name 36968367f3 fix 2020-03-16 17:47:21 -04:00
Your Name 2aa158046c fix 2020-03-16 17:42:12 -04:00
Your Name 177bb80049 fix 2020-03-16 17:26:13 -04:00
Your Name c28ef091ca fix 2020-03-16 17:03:14 -04:00
Your Name edc7ea0a44 Merge branch 'master' of https://gitlab.chiefsoft.net/CheifApp2002/CoreGrade2020 2020-03-16 11:24:46 -04:00
Your Name 33babcd0ba logo work 2020-03-16 11:24:36 -04:00
30 changed files with 719 additions and 818 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.coregrade.users" version="10.0.09" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget id="com.coregrade.users" version="10.0.15" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>CoreGrade</name>
<description>Intelligent Learning Platform.</description>
<author email="support@coregrade.com" href="https://www.coregrade.com/">CoreGrade</author>
+51 -712
View File
@@ -89,6 +89,29 @@
"worker-plugin": "3.2.0"
},
"dependencies": {
"cacache": {
"version": "12.0.2",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz",
"integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==",
"dev": true,
"requires": {
"bluebird": "^3.5.5",
"chownr": "^1.1.1",
"figgy-pudding": "^3.5.1",
"glob": "^7.1.4",
"graceful-fs": "^4.1.15",
"infer-owner": "^1.0.3",
"lru-cache": "^5.1.1",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.1",
"move-concurrently": "^1.0.1",
"promise-inflight": "^1.0.1",
"rimraf": "^2.6.3",
"ssri": "^6.0.1",
"unique-filename": "^1.1.1",
"y18n": "^4.0.0"
}
},
"core-js": {
"version": "3.6.4",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz",
@@ -2058,6 +2081,21 @@
"@types/cordova": "^0.0.34"
}
},
"@ionic-native/onesignal": {
"version": "5.23.0",
"resolved": "https://registry.npmjs.org/@ionic-native/onesignal/-/onesignal-5.23.0.tgz",
"integrity": "sha512-KLZIxYUhs2NUXnpz/1zLb/ifpzYdqygkYgw3YaxWRGjnzLpJ6rLNwhmAkWY5L5B3gWFC1qWFrImeSwRvQtnsqg==",
"requires": {
"@types/cordova": "^0.0.34"
},
"dependencies": {
"@types/cordova": {
"version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
"integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ="
}
}
},
"@ionic-native/splash-screen": {
"version": "5.22.0",
"resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.22.0.tgz",
@@ -3338,9 +3376,9 @@
"dev": true
},
"cacache": {
"version": "12.0.2",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz",
"integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==",
"version": "12.0.3",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
"integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
"dev": true,
"requires": {
"bluebird": "^3.5.5",
@@ -6967,18 +7005,17 @@
}
},
"karma": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/karma/-/karma-4.1.0.tgz",
"integrity": "sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw==",
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz",
"integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==",
"dev": true,
"requires": {
"bluebird": "^3.3.0",
"body-parser": "^1.16.1",
"braces": "^2.3.2",
"chokidar": "^2.0.3",
"braces": "^3.0.2",
"chokidar": "^3.0.0",
"colors": "^1.1.0",
"connect": "^3.6.0",
"core-js": "^2.2.0",
"di": "^0.0.1",
"dom-serialize": "^2.2.0",
"flatted": "^2.0.0",
@@ -6986,7 +7023,7 @@
"graceful-fs": "^4.1.2",
"http-proxy": "^1.13.0",
"isbinaryfile": "^3.0.0",
"lodash": "^4.17.11",
"lodash": "^4.17.14",
"log4js": "^4.0.0",
"mime": "^2.3.1",
"minimatch": "^3.0.2",
@@ -7001,707 +7038,17 @@
"useragent": "2.3.0"
},
"dependencies": {
"anymatch": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
"integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
"requires": {
"micromatch": "^3.1.4",
"normalize-path": "^2.1.1"
},
"dependencies": {
"normalize-path": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
"remove-trailing-separator": "^1.0.1"
}
}
}
},
"binary-extensions": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
"dev": true
},
"braces": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
"integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
"dev": true,
"requires": {
"arr-flatten": "^1.1.0",
"array-unique": "^0.3.2",
"extend-shallow": "^2.0.1",
"fill-range": "^4.0.0",
"isobject": "^3.0.1",
"repeat-element": "^1.1.2",
"snapdragon": "^0.8.1",
"snapdragon-node": "^2.0.1",
"split-string": "^3.0.2",
"to-regex": "^3.0.1"
}
},
"chokidar": {
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
"integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"dev": true,
"requires": {
"anymatch": "^2.0.0",
"async-each": "^1.0.1",
"braces": "^2.3.2",
"fsevents": "^1.2.7",
"glob-parent": "^3.1.0",
"inherits": "^2.0.3",
"is-binary-path": "^1.0.0",
"is-glob": "^4.0.0",
"normalize-path": "^3.0.0",
"path-is-absolute": "^1.0.0",
"readdirp": "^2.2.1",
"upath": "^1.1.1"
}
},
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
},
"fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
"integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
"repeat-string": "^1.6.1",
"to-regex-range": "^2.1.0"
}
},
"fsevents": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
"integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
"dev": true,
"optional": true,
"requires": {
"node-pre-gyp": "*"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
},
"are-we-there-yet": {
"version": "1.1.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"chownr": {
"version": "1.1.3",
"bundled": true,
"dev": true,
"optional": true
},
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"debug": {
"version": "3.2.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ms": "^2.1.1"
}
},
"deep-extend": {
"version": "0.6.0",
"bundled": true,
"dev": true,
"optional": true
},
"delegates": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"detect-libc": {
"version": "1.0.3",
"bundled": true,
"dev": true,
"optional": true
},
"fs-minipass": {
"version": "1.2.7",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.6.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"glob": {
"version": "7.1.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"has-unicode": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"iconv-lite": {
"version": "0.4.24",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore-walk": {
"version": "3.0.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimatch": "^3.0.4"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"bundled": true,
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
"bundled": true,
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"isarray": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true,
"optional": true
},
"minipass": {
"version": "2.9.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.3.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.9.0"
}
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.1.2",
"bundled": true,
"dev": true,
"optional": true
},
"needle": {
"version": "2.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"debug": "^3.2.6",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"node-pre-gyp": {
"version": "0.14.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.1",
"needle": "^2.2.1",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
"rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4.4.2"
}
},
"nopt": {
"version": "4.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npm-bundled": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"npm-normalize-package-bin": "^1.0.1"
}
},
"npm-normalize-package-bin": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"npm-packlist": {
"version": "1.4.7",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1"
}
},
"npmlog": {
"version": "4.1.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"once": {
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
},
"os-homedir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"rc": {
"version": "1.2.8",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
}
}
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"rimraf": {
"version": "2.7.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"glob": "^7.1.3"
}
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true,
"dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"bundled": true,
"dev": true,
"optional": true
},
"semver": {
"version": "5.7.1",
"bundled": true,
"dev": true,
"optional": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"tar": {
"version": "4.4.13",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.8.6",
"minizlib": "^1.2.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.3"
}
},
"util-deprecate": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"wide-align": {
"version": "1.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"string-width": "^1.0.2 || 2"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"yallist": {
"version": "3.1.1",
"bundled": true,
"dev": true,
"optional": true
}
}
},
"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=",
"dev": true,
"requires": {
"binary-extensions": "^1.0.0"
}
},
"is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
}
},
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
},
"mime": {
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
"integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
"dev": true
},
"readdirp": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
"micromatch": "^3.1.10",
"readable-stream": "^2.0.2"
}
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"to-regex-range": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
"integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
"dev": true,
"requires": {
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
}
}
}
},
@@ -8311,20 +7658,12 @@
}
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
"integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
"dev": true,
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
}
"minimist": "^1.2.5"
}
},
"move-concurrently": {
+4 -2
View File
@@ -20,6 +20,7 @@
"@angular/platform-browser-dynamic": "~8.2.14",
"@angular/router": "~8.2.14",
"@ionic-native/core": "^5.0.0",
"@ionic-native/onesignal": "^5.23.0",
"@ionic-native/splash-screen": "^5.0.0",
"@ionic-native/status-bar": "^5.0.0",
"@ionic/angular": "^5.0.0",
@@ -49,7 +50,7 @@
"cordova-plugin-whitelist": "^1.3.3",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma": "^4.4.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
@@ -67,7 +68,8 @@
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-ionic-webview": {},
"cordova-plugin-ionic-keyboard": {}
"cordova-plugin-ionic-keyboard": {},
"onesignal-cordova-plugin": {}
},
"platforms": [
"android",
+35 -31
View File
@@ -1,32 +1,36 @@
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: '',
loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule)
},
{
path: 'start',
loadChildren: () => import('./start/start.module').then( m => m.StartPageModule)
},
{
path: 'signup',
loadChildren: () => import('./signup/signup.module').then( m => m.SignupPageModule)
},
{
path: 'login',
loadChildren: () => import('./login/login.module').then( m => m.LoginPageModule)
},
{
path: 'settings',
loadChildren: () => import('./users/settings/settings.module').then( m => m.SettingsPageModule)
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: '',
loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule)
},
{
path: 'start',
loadChildren: () => import('./start/start.module').then( m => m.StartPageModule)
},
{
path: 'signup',
loadChildren: () => import('./signup/signup.module').then( m => m.SignupPageModule)
},
{
path: 'login',
loadChildren: () => import('./login/login.module').then( m => m.LoginPageModule)
},
{
path: 'settings',
loadChildren: () => import('./users/settings/settings.module').then( m => m.SettingsPageModule)
},
{
path: 'blogdetail',
loadChildren: () => import('./blogdetail/blogdetail.module').then( m => m.BlogdetailPageModule)
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule {}
}
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
+3 -1
View File
@@ -1,6 +1,8 @@
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { HttpClient, HttpClientModule } from '@angular/common/http';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
@@ -12,7 +14,7 @@ import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule,HttpClientModule],
providers: [
StatusBar,
SplashScreen,
@@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { BlogdetailPage } from './blogdetail.page';
const routes: Routes = [
{
path: '',
component: BlogdetailPage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class BlogdetailPageRoutingModule {}
+20
View File
@@ -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 { BlogdetailPageRoutingModule } from './blogdetail-routing.module';
import { BlogdetailPage } from './blogdetail.page';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
BlogdetailPageRoutingModule
],
declarations: [BlogdetailPage]
})
export class BlogdetailPageModule {}
+14
View File
@@ -0,0 +1,14 @@
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-back-button></ion-back-button>
</ion-buttons>
<ion-title>blogdetail</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
</ion-content>
@@ -0,0 +1,24 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { BlogdetailPage } from './blogdetail.page';
describe('BlogdetailPage', () => {
let component: BlogdetailPage;
let fixture: ComponentFixture<BlogdetailPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BlogdetailPage ],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(BlogdetailPage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
+15
View File
@@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-blogdetail',
templateUrl: './blogdetail.page.html',
styleUrls: ['./blogdetail.page.scss'],
})
export class BlogdetailPage implements OnInit {
constructor() { }
ngOnInit() {
}
}
+50 -12
View File
@@ -1,26 +1,64 @@
<ion-header>
<ion-toolbar>
<ion-title>Login</ion-title>
<ion-buttons slot="start">
<ion-back-button></ion-back-button>
</ion-buttons>
<ion-title>CoreGrade</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-card class="welcome-card" style="background-color: aliceblue;">
<ion-card-header>
<ion-card-subtitle>Login</ion-card-subtitle>
</ion-card-header>
<ion-card-content>
<ion-list>
<ion-item style="background-color: transparent;" class="login-inputs">
<ion-label floating>Username</ion-label>
<ion-input type="email" [(ngModel)]="username" maxlenght="20"></ion-input>
</ion-item>
<ion-item style="background-color: transparent;" class="login-inputs">
<ion-label floating>Password</ion-label>
<ion-input type="password" [(ngModel)]="password" maxlenght="15"></ion-input>
</ion-item>
</ion-list>
<div padding style="text-align: right;">
<ion-button color="secondary" block (click)="onStartLogin()">Sign In</ion-button>
</div>
</ion-card-content>
</ion-card>
<ion-list>
<ion-item>
<ion-label fixed>Username</ion-label>
<ion-input type="text"></ion-input>
<ion-label>Input</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label fixed>Password</ion-label>
<ion-input type="password"></ion-input>
<ion-label>Toggle</ion-label>
<ion-toggle slot="end"></ion-toggle>
</ion-item>
<ion-item>
<ion-label>Radio</ion-label>
<ion-radio slot="end"></ion-radio>
</ion-item>
<ion-item>
<ion-label>Checkbox</ion-label>
<ion-checkbox slot="start"></ion-checkbox>
</ion-item>
</ion-list>
<div padding>
<ion-button color="secondary" block (click)="onStartLogin()" >Sign In</ion-button>
</div>
</ion-content>
</ion-content>
+20
View File
@@ -0,0 +1,20 @@
.login-inputs {
border: 0;
margin: 0;
padding: 0;
.item-inner {
border-bottom: 1px solid rgba(36, 19, 66, 0.7) !important;
ion-label {
font-weight: normal;
font-size: 14px;
line-height: 19px;
letter-spacing: 0.21875px;
color: #241342;
opacity: 0.8;
}
input {
color: #241342;
}
}
}
+30 -4
View File
@@ -1,6 +1,8 @@
import { Router } from '@angular/router';
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, ViewChild } from '@angular/core';
import { AlertController } from '@ionic/angular';
AlertController
@Component({
selector: 'app-login',
@@ -9,13 +11,37 @@ import { Component, OnInit } from '@angular/core';
})
export class LoginPage implements OnInit {
constructor( private router:Router) { }
@ViewChild('username', { static: false }) username;
@ViewChild('password', { static: false }) password;
constructor(
private alertCtrl: AlertController,
private router: Router
) { }
ngOnInit() {
}
onStartLogin(){
this.router.navigateByUrl('tabs');
async onStartLogin() {
if (this.username == null || this.username === '' /* || this.floatValidatorsProvider.validateEmail(this.username) === false */
|| this.password == null || this.password === '') {
this.showAlert('Invalid Login', 'Enter username(email) and password to login');
} else {
this.router.navigateByUrl('tabs');
}
}
async showAlert(mtitle: string, amessage: string) {
const alert = await this.alertCtrl.create({
header: mtitle,
message: amessage,
buttons: ['OK']
});
alert.present();
}
}
@@ -0,0 +1,12 @@
import { TestBed } from '@angular/core/testing';
import { CoreServiceService } from './core-service.service';
describe('CoreServiceService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: CoreServiceService = TestBed.get(CoreServiceService);
expect(service).toBeTruthy();
});
});
+54
View File
@@ -0,0 +1,54 @@
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, from } from 'rxjs';
import { map } from 'rxjs/operators';
//import { resolve } from 'dns';
@Injectable({
providedIn: 'root'
})
export class CoreServiceService {
url = 'https://www.chiefsoft.net/INTGR/API/coregrade/';
apiKey = ''; // <-- Enter your own key here!
constructor(
private http: HttpClient
) {
}
getResult: any;
blogData(title: string) {
// blogData(title: string): Observable<any> {
var end_url = this.url + "?s=" + encodeURI(title) + "&apikey=" + this.apiKey;
// return this.http.get(`${this.url}?s=${encodeURI(title)}&apikey=${this.apiKey}`).pipe(
/* return this.http.get(this.url+"?s="+encodeURI(title)+"&apikey="+this.apiKey).pipe(
map(results => results['internal_return'])
*/
return from(
new Promise((resolve) => {
this.http.get(end_url).subscribe(
(data) => {
this.getResult = data;
// console.log(this.getResult);
resolve(data);
}
)
})
)
//console.log(results);
// );
}
}
@@ -0,0 +1,12 @@
import { TestBed } from '@angular/core/testing';
import { SessionDataService } from './session-data.service';
describe('SessionDataService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: SessionDataService = TestBed.get(SessionDataService);
expect(service).toBeTruthy();
});
});
+9
View File
@@ -0,0 +1,9 @@
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class SessionDataService {
constructor() { }
}
+45 -10
View File
@@ -1,20 +1,55 @@
<ion-header>
<ion-toolbar>
<ion-title>Start</ion-title>
<ion-title>CoreGrade</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item><ion-button color="primary">Sign up</ion-button></ion-item>
<ion-item> <ion-button color="secondary">Gmail login</ion-button></ion-item>
<ion-item> <ion-button color="primary">Facebook login</ion-button></ion-item>
<ion-item> <ion-button color="warning" (click)="onLogin()">Login</ion-button></ion-item>
</ion-list>
<ion-card class="welcome-card">
<ion-card-header>
<ion-card-subtitle>Welcome to</ion-card-subtitle>
<ion-card-title>CoreGrade</ion-card-title>
</ion-card-header>
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
<ion-grid>
<ion-row *ngFor="let type of blog_list" (click)="openBlogItem(type)">
<ion-col size="9">
<p>{{type.short_desciption}}
</p>
</ion-col>
<ion-col size="3">
<img src="{{image_url}}{{type.meta_value}}" />
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
<ion-footer class="ion-no-border">
<ion-toolbar>
<ion-title>
<ion-button color="warning" (click)="onLogin()">Login</ion-button>
</ion-title>
</ion-toolbar>
</ion-footer>
+26 -2
View File
@@ -1,6 +1,7 @@
import { CoreServiceService } from './../services/core-service.service';
import { Router } from '@angular/router';
import { Component, OnInit } from '@angular/core';
import { core } from '@angular/compiler';
@Component({
selector: 'app-start',
@@ -8,11 +9,34 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./start.page.scss'],
})
export class StartPage implements OnInit {
blogData: any;
constructor( private router: Router, private coreServiceService:CoreServiceService) { this.getBlog(); }
constructor( private router: Router) { }
image_url = "https://blog.chiefsoft.com/wp-content/uploads/";
ngOnInit() {
this.getBlog();
}
blog_list: any;
getBlog() {
this.coreServiceService.blogData("blackblog").subscribe((retBlogData) => {
this.blogData = retBlogData;
//console.log(this.blogData);
//console.log(this.blogData["internal_return"]["result_list"]);
this.image_url = this.blogData["internal_return"]["image_url"];
this.blog_list = this.blogData["internal_return"]["result_list"];
console.log(this.blog_list);
})
}
openBlogItem(selBlogdata: any) {
// alert(selBlogdata.id);
this.router.navigateByUrl("blogdetail",selBlogdata);
}
onLogin(){
this.router.navigateByUrl('login');
}
+122 -11
View File
@@ -1,17 +1,128 @@
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Tab 1
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 1</ion-title>
<!--ion-title size="large">CoreGrade</!--ion-title -->
</ion-toolbar>
</ion-header>
<app-explore-container name="Tab 1 page"></app-explore-container>
</ion-content>
<ion-card class="welcome-card" style="background-color: bisque;">
<ion-card-header>
<ion-card-subtitle>Invtation</ion-card-subtitle>
<ion-card-title>Robot building skills</ion-card-title>
</ion-card-header>
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
<ion-card class="welcome-card">
<ion-card-header>
<ion-card-subtitle>Blog</ion-card-subtitle>
<ion-card-title>Yes I have a title</ion-card-title>
</ion-card-header>
<img src="./../assets/imgs/app-logo.png">
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
<ion-card class="welcome-card" style="background-color: aliceblue;">
<div class="video-container">
<iframe src="https://oameye.works.coregrade.com/uploads/DV/RaspberryPi/Measuring Distance with Raspberry Pi and HC-SR04 Utrasonic Sensor.mp4" frameborder="0" width="100%" height="315"></iframe>
</div>
<ion-card-header>
<ion-card-subtitle>Video</ion-card-subtitle>
<ion-card-title>Yes we can add video</ion-card-title>
</ion-card-header>
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
<ion-card class="welcome-card" style="background-color: gainsboro;">
<img src="./../assets/imgs/app-logo.png">
<ion-card-header>
<ion-card-subtitle>Blog</ion-card-subtitle>
<ion-card-title>Yes I have a title</ion-card-title>
</ion-card-header>
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
<ion-card class="welcome-card">
<img src="./../assets/imgs/app-logo.png">
<ion-card-header>
<ion-card-subtitle>Blog</ion-card-subtitle>
<ion-card-title>Yes I have a title</ion-card-title>
</ion-card-header>
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
<ion-card class="welcome-card">
<img src="./../assets/imgs/app-logo.png">
<ion-card-header>
<ion-card-subtitle>Blog</ion-card-subtitle>
<ion-card-title>Yes I have a title</ion-card-title>
</ion-card-header>
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
<ion-card class="welcome-card">
<img src="./../assets/imgs/app-logo.png">
<ion-card-header>
<ion-card-subtitle>Blog</ion-card-subtitle>
<ion-card-title>Yes I have a title</ion-card-title>
</ion-card-header>
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
<ion-card class="welcome-card">
<img src="./../assets/imgs/app-logo.png">
<ion-card-header>
<ion-card-subtitle>Blog</ion-card-subtitle>
<ion-card-title>Yes I have a title</ion-card-title>
</ion-card-header>
<ion-card-content>
<p>CoreGrade is your interest connection platform. Enter the page of the group to get started. You can also find
an open group by using the search.
</p>
</ion-card-content>
</ion-card>
</ion-content>
+15
View File
@@ -1,3 +1,18 @@
ion-content ion-toolbar {
--background: translucent;
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px; height: 0; overflow: hidden;
}
.video-container iframe, .video-container object, .video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
+58 -8
View File
@@ -1,17 +1,67 @@
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Tab 2
Pages
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 2</ion-title>
</ion-toolbar>
</ion-header>
<app-explore-container name="Tab 2 page"></app-explore-container>
</ion-content>
<ion-card>
<ion-item>
<ion-icon name="pin" slot="start"></ion-icon>
<ion-label>ion-item in a card, icon left, button right</ion-label>
<ion-button fill="outline" slot="end">View</ion-button>
</ion-item>
<ion-card-content>
This is content, without any paragraph or header tags,
within an ion-card-content element.
</ion-card-content>
</ion-card>
<ion-card>
<ion-item>
<ion-icon name="pin" slot="start"></ion-icon>
<ion-label>ion-item in a card, icon left, button right</ion-label>
<ion-button fill="outline" slot="end">View</ion-button>
</ion-item>
<ion-card-content>
This is content, without any paragraph or header tags,
within an ion-card-content element.
</ion-card-content>
</ion-card>
<ion-card>
<ion-item>
<ion-icon name="pin" slot="start"></ion-icon>
<ion-label>ion-item in a card, icon left, button right</ion-label>
<ion-button fill="outline" slot="end">View</ion-button>
</ion-item>
<ion-card-content>
This is content, without any paragraph or header tags,
within an ion-card-content element.
</ion-card-content>
</ion-card>
<ion-card>
<ion-item>
<ion-icon name="pin" slot="start"></ion-icon>
<ion-label>ion-item in a card, icon left, button right</ion-label>
<ion-button fill="outline" slot="end">View</ion-button>
</ion-item>
<ion-card-content>
This is content, without any paragraph or header tags,
within an ion-card-content element.
</ion-card-content>
</ion-card>
</ion-content>
+4
View File
@@ -1,3 +1,7 @@
ion-content ion-toolbar {
--background: translucent;
}
:root {
--ion-safe-area-top: 20px;
--ion-safe-area-bottom: 22px;
}
+34 -20
View File
@@ -1,12 +1,13 @@
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Profile
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<!-- ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 3</ion-title>
</ion-toolbar>
</ion-header -->
<ion-card>
<ion-card-header style="text-align: center;">
@@ -21,20 +22,33 @@
</ion-card>
<ion-item-group>
<ion-item-divider color="light">A</ion-item-divider>
<ion-item>Angola</ion-item>
<ion-item>Argentina</ion-item>
</ion-item-group>
<ion-list>
<ion-item>
<ion-label>Input</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label>Toggle</ion-label>
<ion-toggle slot="end"></ion-toggle>
</ion-item>
<ion-item>
<ion-label>Radio</ion-label>
<ion-radio slot="end"></ion-radio>
</ion-item>
<ion-item>
<ion-label>Checkbox</ion-label>
<ion-checkbox slot="start"></ion-checkbox>
</ion-item>
<ion-item (click)="onClickSettings()" >
<ion-label>Settings</ion-label>
</ion-item>
</ion-list>
<ion-item-group>
<ion-item-divider color="light">B</ion-item-divider>
<ion-item>Bangladesh</ion-item>
<ion-item>Belarus</ion-item>
<ion-item (click)="onClickSettings()" >Settings</ion-item>
</ion-item-group>
+14 -1
View File
@@ -1,3 +1,16 @@
ion-content ion-toolbar {
--background: translucent;
}
}
:root {
--ion-safe-area-top: 20px;
--ion-safe-area-bottom: 22px;
}
ion-col > div {
background-color: #f7f7f7;
border: solid 1px #ddd;
padding: 10px;
}
+1 -1
View File
@@ -7,7 +7,7 @@
</ion-tab-button>
<ion-tab-button tab="tab2">
<ion-icon name="ellipse"></ion-icon>
<ion-icon name="apps"></ion-icon>
<ion-label>Pages</ion-label>
</ion-tab-button>
+28 -1
View File
@@ -5,5 +5,32 @@
</ion-header>
<ion-content>
<ion-button shape="round" fill="outline" (click)="onClickLogout()">Log out</ion-button>
<ion-list>
<ion-item>
<ion-label>Input</ion-label>
<ion-input></ion-input>
</ion-item>
<ion-item>
<ion-label>Toggle</ion-label>
<ion-toggle slot="end"></ion-toggle>
</ion-item>
<ion-item>
<ion-label>Radio</ion-label>
<ion-radio slot="end"></ion-radio>
</ion-item>
<ion-item>
<ion-label>Checkbox</ion-label>
<ion-checkbox slot="start"></ion-checkbox>
</ion-item>
<ion-item (click)="onClickLogout()" style="background-color: lightsalmon;">
<ion-label>Logout</ion-label>
</ion-item>
</ion-list>
</ion-content>
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+1 -1
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<title>Ionic App</title>
<title>CoreGrade App</title>
<base href="/" />