From 8dbf88e19e0f3667ca3db23b3b0bfa85c9040536 Mon Sep 17 00:00:00 2001 From: "nixi.sendya" <nixi.sendya@ui.ac.id> Date: Thu, 5 Dec 2019 15:52:47 +0700 Subject: [PATCH 1/4] Update test frontend profile page and edit profile --- assets/js/__test__/EditProfile-test.jsx | 4 +- assets/js/__test__/ProfilePage-test.jsx | 4 +- core/migrations/0001_initial.py | 2 +- package-lock.json | 110 ++++++++++++------------ 4 files changed, 60 insertions(+), 60 deletions(-) diff --git a/assets/js/__test__/EditProfile-test.jsx b/assets/js/__test__/EditProfile-test.jsx index 56e1402c..cdb2585d 100644 --- a/assets/js/__test__/EditProfile-test.jsx +++ b/assets/js/__test__/EditProfile-test.jsx @@ -30,8 +30,8 @@ describe('EditProfil', () => { const submitButton = ReactTestUtils.scryRenderedDOMComponentsWithTag(profile, 'Input')[1]; ReactTestUtils.Simulate.click(submitButton); - const form = ReactTestUtils.findRenderedDOMComponentWithTag(profile, 'Form'); - ReactTestUtils.Simulate.submit(form); + const form = ReactTestUtils.findRenderedDOMComponentWithTag(profile, 'Button'); + ReactTestUtils.Simulate.click(form); fetchMock.restore(); }); diff --git a/assets/js/__test__/ProfilePage-test.jsx b/assets/js/__test__/ProfilePage-test.jsx index 618dd90a..d1374816 100755 --- a/assets/js/__test__/ProfilePage-test.jsx +++ b/assets/js/__test__/ProfilePage-test.jsx @@ -61,7 +61,7 @@ describe('ProfilePage', () => { ); profile.getProfile().then(() => expect(profile.state.name).to.equal(response.name)); profile.getProfile().then(() => expect(profile.state.birth_date).to.equal('24 Februari 1995')); - profile.updateForm(true); + // profile.updateForm(true); fetchMock.restore(); }); @@ -125,7 +125,7 @@ describe('ProfilePage', () => { const phoneNumberNode = ReactTestUtils.scryRenderedDOMComponentsWithTag(profile, 'Input')[2]; profile.getProfile().then(()=> expect( profile.state.phone_number).to.equal(phoneNumberNode.value)); - profile.updateForm(true); + // profile.updateForm(true); fetchMock.restore(); }); diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py index 47979193..4c834c20 100644 --- a/core/migrations/0001_initial.py +++ b/core/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.2.8 on 2019-12-04 06:45 +# Generated by Django 2.2.8 on 2019-12-05 04:16 import core.lib.validators import core.models.accounts diff --git a/package-lock.json b/package-lock.json index cbe5f517..f6f2a634 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1750,7 +1750,7 @@ "@babel/plugin-proposal-do-expressions": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.6.0.tgz", - "integrity": "sha1-GSlT/thiDRPRKmH2je/Sb0EFkZM=", + "integrity": "sha512-qJDaoBDbLySwU1tG0jbAomOwz8W1PEiiiK0iLQAnHLr4PYIMVX4ltDGkj3uAKx4HDs1WJ0tozGW1zAQjuTIiWg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1770,7 +1770,7 @@ "@babel/plugin-proposal-export-default-from": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz", - "integrity": "sha1-LArC3MNuOyRD/q0sPF/HlvsbUUU=", + "integrity": "sha512-wr9Itk05L1/wyyZKVEmXWCdcsp/e185WUNl6AfYZeEKYaUPPvHXRDqO5K1VH7/UamYqGJowFRuCv30aDYZawsg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1780,7 +1780,7 @@ "@babel/plugin-proposal-export-namespace-from": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.5.2.tgz", - "integrity": "sha1-zNXtBbBtcAaI/x2wGp3ScVXg0qA=", + "integrity": "sha512-TKUdOL07anjZEbR1iSxb5WFh810KyObdd29XLFLGo1IDsSuGrjH3ouWSbAxHNmrVKzr9X71UYl2dQ7oGGcRp0g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1801,7 +1801,7 @@ "@babel/plugin-proposal-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha1-Vo7MRGxhSK5rJn8CVREwiR4p8xc=", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1811,7 +1811,7 @@ "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.2.0.tgz", - "integrity": "sha1-ilzqbEKnyHRGlZ4C//X60BLFb1c=", + "integrity": "sha512-0w797xwdPXKk0m3Js74hDi0mCTZplIu93MOSfb1ZLd/XFe3abWypx1QknVk0J+ohnsjYpvjH4Gwfo2i3RicB6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1821,7 +1821,7 @@ "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz", - "integrity": "sha1-QcNg1ZSB2I4M46P4N98QEhp2mzk=", + "integrity": "sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1831,7 +1831,7 @@ "@babel/plugin-proposal-numeric-separator": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.2.0.tgz", - "integrity": "sha1-ZGhU2vTNIv1nM/YHYBOpNjEEQ6w=", + "integrity": "sha512-DohMOGDrZiMKS7LthjUZNNcWl8TAf5BZDwZAH4wpm55FuJTHgfqPGdibg7rZDmont/8Yg0zA03IgT6XLeP+4sg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1861,7 +1861,7 @@ "@babel/plugin-proposal-optional-chaining": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.6.0.tgz", - "integrity": "sha1-6b8fm5uhDHfAMwgtp18Gg4kEGvg=", + "integrity": "sha512-kj4gkZ6qUggkprRq3Uh5KP8XnE1MdIO0J7MhdDX8+rAbB6dJ2UrensGIS+0NPZAaaJ1Vr0PN6oLUgXMU1uMcSg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1871,7 +1871,7 @@ "@babel/plugin-proposal-pipeline-operator": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.5.0.tgz", - "integrity": "sha1-QQDsVe9PakwkkLX1pPKiLfonLAY=", + "integrity": "sha512-HFYuu/yGnkn69ligXxU0ohOVvQDsMNOUJs/c4PYLUVS6ntCYOyGmRQQaSYJARJ9rvc7/ulZKIzxd4wk91hN63A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1881,7 +1881,7 @@ "@babel/plugin-proposal-throw-expressions": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.2.0.tgz", - "integrity": "sha1-LZ5FLTcPE5AA5R22XQqF3GDGRzk=", + "integrity": "sha512-adsydM8DQF4i5DLNO4ySAU5VtHTPewOtNBV3u7F4lNMPADFF9bWQ+iDtUUe8+033cYCUz+bFlQdXQJmJOwoLpw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1928,7 +1928,7 @@ "@babel/plugin-syntax-dynamic-import": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha1-acFZ/69JmBIhYa2OvF5tH1XfhhI=", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -1964,7 +1964,7 @@ "@babel/plugin-syntax-import-meta": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.2.0.tgz", - "integrity": "sha1-IzPvS4dVU6O80ek/jrwJ9bkhOkA=", + "integrity": "sha512-Hq6kFSZD7+PHkmBN8bCpHR6J8QEoCuEV/B38AIQscYjgMZkGlXB7cHNFzP5jR4RCh5545yP1ujHdmO7hAgKtBA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -3068,7 +3068,7 @@ "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha1-086gTWsBeyiUrWkED+yLYj60vVI=", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -3350,7 +3350,7 @@ "axios": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha1-jgm/89kSLhM/e4EByPvdAO09Krg=", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", "requires": { "follow-redirects": "1.5.10", "is-buffer": "^2.0.2" @@ -3367,7 +3367,7 @@ "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { "debug": "=3.1.0" } @@ -3375,7 +3375,7 @@ "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM=" + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" } } }, @@ -3429,7 +3429,7 @@ "babel-eslint": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", - "integrity": "sha1-gaLGab4PIF4ZRi/tJILTPkaHqIo=", + "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -3443,7 +3443,7 @@ "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -3490,7 +3490,7 @@ "babel-loader": { "version": "8.0.6", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs=", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", "dev": true, "requires": { "find-cache-dir": "^2.0.0", @@ -3517,7 +3517,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -3534,7 +3534,7 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true } } @@ -4513,7 +4513,7 @@ "compression-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-3.0.0.tgz", - "integrity": "sha1-CX0uTZXDoUy1yO0giZAJq1ubvKA=", + "integrity": "sha512-ls+oKw4eRbvaSv/hj9NmctihhBcR26j76JxV0bLRLcWhrUBdQFgd06z/Kgg7exyQvtWWP484wZxs0gIUX3NO0Q==", "requires": { "cacache": "^11.2.0", "find-cache-dir": "^3.0.0", @@ -4526,7 +4526,7 @@ "cacache": { "version": "11.3.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", - "integrity": "sha1-i9Kd+ManGKbr0tAQ2k15cq47utw=", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", "requires": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -4547,7 +4547,7 @@ "find-cache-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", - "integrity": "sha1-zUt92Xtxhbfhfb/i1uQRXuPuuPw=", + "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", "requires": { "commondir": "^1.0.1", "make-dir": "^3.0.0", @@ -5695,7 +5695,7 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", "dev": true }, "fast-levenshtein": { @@ -5769,7 +5769,7 @@ "eslint-config-airbnb": { "version": "18.0.1", "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.0.1.tgz", - "integrity": "sha1-o6dMwptGQTtglpZQJTgd+PuQhVk=", + "integrity": "sha512-hLb/ccvW4grVhvd6CT83bECacc+s4Z3/AEyWQdIT2KeTsG9dR7nx1gs7Iw4tDmGKozCNHFn4yZmRm3Tgy+XxyQ==", "dev": true, "requires": { "eslint-config-airbnb-base": "^14.0.0", @@ -5899,7 +5899,7 @@ "eslint-plugin-jsx-a11y": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha1-uHKgnV3lGvcKl9se6n3JMwQ3CKo=", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", "dev": true, "requires": { "@babel/runtime": "^7.4.5", @@ -5916,7 +5916,7 @@ "eslint-plugin-react": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", - "integrity": "sha1-mSjk8+ISLtO6altW0DA7o+QdjAk=", + "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -5933,7 +5933,7 @@ "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -5942,7 +5942,7 @@ "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -5953,7 +5953,7 @@ "eslint-plugin-react-hooks": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha1-YhC21aNyBfC5KFj4laToJwIKfQQ=" + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" }, "eslint-scope": { "version": "4.0.3", @@ -5989,7 +5989,7 @@ "eslint-watch": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/eslint-watch/-/eslint-watch-6.0.1.tgz", - "integrity": "sha1-4Jg5FlinwUjeyhcq0glQZa2gU1k=", + "integrity": "sha512-tWT6gQQWzGVn4KMs6ZAdG+nkNNQHg+c6wGdw/mwhp+jWyA7OWEOLxQnRhrP34ddJjpgDafhHOHBNtpVOtXXv4g==", "dev": true, "requires": { "chokidar": "^3.1.1", @@ -6009,7 +6009,7 @@ "core-js": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha1-zUHzhTTabMWffbBQ/mcwfemGiwk=", + "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", "dev": true }, "cross-spawn": { @@ -6026,7 +6026,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -6035,7 +6035,7 @@ "execa": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", - "integrity": "sha1-5dPs2DfSpg7FDz2nj9OXZ3R7vpk=", + "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -8552,7 +8552,7 @@ "istanbul-instrumenter-loader": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", - "integrity": "sha1-mVe9WSUrNz+uXFK3tRiOb94qCUk=", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", "dev": true, "requires": { "convert-source-map": "^1.5.0", @@ -8603,7 +8603,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -8918,7 +8918,7 @@ "karma-chrome-launcher": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha1-gFpYZ5mk0F9OVPcqIEl58/MGZzg=", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", "dev": true, "requires": { "which": "^1.2.1" @@ -8938,7 +8938,7 @@ "karma-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.1.tgz", - "integrity": "sha1-8CTxkfDxNd7iQDdjrDbMUqrCeaw=", + "integrity": "sha512-SnFkHsnLsaXfxkey51rRN9JDLAEKYW2Lb0qOEvcruukk0NkSNDkjobNDZPt9Ni3kIhLZkLtpGOz661hN7OaZvQ==", "dev": true, "requires": { "dateformat": "^1.0.6", @@ -8956,13 +8956,13 @@ "istanbul-lib-coverage": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha1-Z18KtpUD+tSx2En3NrqsqAM0T0k=", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, "istanbul-lib-instrument": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha1-pfY9kfC7wMPkee9MXeAnM17G1jA=", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { "@babel/generator": "^7.4.0", @@ -8985,7 +8985,7 @@ "karma-coverage-istanbul-reporter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.0.tgz", - "integrity": "sha1-XxvME8XhTuHZGCHuiUaGFnT1THU=", + "integrity": "sha512-UH0mXPJFJyK5uiK7EkwGtQ8f30lCBAfqRResnZ4pzLJ04SOp4SPlYkmwbbZ6iVJ6sQFVzlDUXlntBEsLRdgZpg==", "dev": true, "requires": { "istanbul-api": "^2.1.6", @@ -9087,7 +9087,7 @@ "karma-webpack": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-4.0.2.tgz", - "integrity": "sha1-IyGb2VvdqFPjBz04dNNER8d7ztA=", + "integrity": "sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -9133,7 +9133,7 @@ "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -11304,7 +11304,7 @@ "react-chartjs-2": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.8.0.tgz", - "integrity": "sha1-HCTekfs3VfjEMCZ13n1m/dozl1k=", + "integrity": "sha512-BPpC+qfnh37DkcXvxRwA1rdD9rX/0AQrwru4VZTLofCCuZBwRsc7PbfxjilvoB6YlHhorwZu40YDWEQkoz7xfQ==", "requires": { "lodash": "^4.17.4", "prop-types": "^15.5.8" @@ -11326,7 +11326,7 @@ "react-datepicker": { "version": "0.60.2", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-0.60.2.tgz", - "integrity": "sha1-EIPcHLn/BjK8oywDmYz4PuHOLgE=", + "integrity": "sha512-5WNtLhozO5i6iGlcgpvjP/Wu4l7RqvTC48CEE/pS1juUny/T4juYHSv53mo+Z90qO4qfyUj59jECTT8AIwAVRQ==", "requires": { "classnames": "^2.2.5", "moment": "^2.17.1", @@ -11883,7 +11883,7 @@ "semantic-ui-react": { "version": "0.79.1", "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.79.1.tgz", - "integrity": "sha1-gL0Mz7OzwRhKGxs/YGerEiWu1fA=", + "integrity": "sha512-Z/QHE/h+l4MrZMilKe7RCBv6wPSBopcwRh5fPPZ1Cavxw4703XizJ3m+g7qcYXa5F40NnM0LKaVDuaReJ0f/3w==", "requires": { "babel-runtime": "^6.25.0", "classnames": "^2.2.5", @@ -12596,7 +12596,7 @@ "starwars": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/starwars/-/starwars-1.0.1.tgz", - "integrity": "sha512-d23qkhEuFNlHas4/w2J6ZF6qS7jqy8OK4N3gfQbtTk/5Lt1wKe+xv0cIweuNxwtwBGVXvmsLV2mdUOBKfj12cA==" + "integrity": "sha1-+OIWt4KUs/y/ytJbRPJxF543U9U=" }, "static-extend": { "version": "0.1.2", @@ -13149,7 +13149,7 @@ "uglifyjs-webpack-plugin": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", - "integrity": "sha1-51vIDn8ZN/cllUybTFoeln6p0Nc=", + "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", @@ -13170,7 +13170,7 @@ "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "requires": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -13241,12 +13241,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "uglify-js": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz", - "integrity": "sha1-rnaIxQ4b3PL3Cg4WJBAAPPl5gxE=", + "integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==", "requires": { "commander": "2.20.0", "source-map": "~0.6.1" @@ -13255,7 +13255,7 @@ "webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -13715,7 +13715,7 @@ "webpack-bundle-tracker": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-0.4.3.tgz", - "integrity": "sha1-SKPiIm3bnSTXBGQKtBaMLRIPRSY=", + "integrity": "sha512-Sl/+OsNhFAH3/c6XADupRu8jLvGojfXX0pZIIm3O5ZcJqkHHqlY4nLG+NVRcbDgM/jOeWimKDGQMVEa8FBeJ2g==", "requires": { "deep-extend": "^0.6.0", "mkdirp": "^0.5.1", @@ -13730,7 +13730,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } -- GitLab From 68e8ec2fd355977fc2f56c1925793b116f66652d Mon Sep 17 00:00:00 2001 From: "nixi.sendya" <nixi.sendya@ui.ac.id> Date: Thu, 5 Dec 2019 16:02:09 +0700 Subject: [PATCH 2/4] Implement frontend, divide information into sections --- assets/js/EditProfile.jsx | 186 ++++++----- assets/js/ProfilePage.jsx | 661 ++++++-------------------------------- 2 files changed, 210 insertions(+), 637 deletions(-) diff --git a/assets/js/EditProfile.jsx b/assets/js/EditProfile.jsx index 9fc6f4c8..525deebc 100644 --- a/assets/js/EditProfile.jsx +++ b/assets/js/EditProfile.jsx @@ -226,6 +226,7 @@ export default class EditProfile extends React.Component { updateForm(show) { if (show) { return ( + <div className="editProfile"> <Segment className="profile-form"> <Header as="h3" textAlign="center"> <Icon name="edit" /> @@ -242,7 +243,6 @@ export default class EditProfile extends React.Component { }} key={this.state.refresh} size="small" - onSubmit={this.handleSubmit} > <Form.Field> <label htmlFor="photo">Profile Picture</label> @@ -308,83 +308,7 @@ export default class EditProfile extends React.Component { name="self_description" /> </Form.Field> - <Form.Field> - <label htmlFor="linkedin_url">URL Profile LinkedIn</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.linkedin_url === null - ? 'https://www.linkedin.com/in/jojo/' - : this.state.linkedin_url - } - defaultValue={ - this.state.linkedin_url === null - ? null - : this.state.linkedin_url - } - name="linkedin_url" - /> - </Form.Field> - <Form.Field> - <label htmlFor="hackerrank_url">URL Profile Hackerrank</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.hackerrank_url === null - ? 'https://www.hackerrank.com/james' - : this.state.hackerrank_url - } - defaultValue={ - this.state.hackerrank_url === null - ? null - : this.state.hackerrank_url - } - name="hackerrank_url" - /> - </Form.Field> - <Form.Field> - <label htmlFor="portfolio_link">Portfolio Link</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.portfolio_link === null - ? 'https://www.example.com/myproject/' - : this.state.portfolio_link - } - defaultValue={ - this.state.portfolio_link === null - ? null - : this.state.portfolio_link - } - name="portfolio_link" - /> - </Form.Field> - <Form.Field> - <label htmlFor="website_url">Website URL</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.website_url === null - ? 'https://www.example.com/' - : this.state.website_url - } - defaultValue={ - this.state.website_url === null - ? null - : this.state.website_url - } - name="website_url" - /> - </Form.Field> - <Form.Field> - <label htmlFor="github_url">URL Profile Github</label> - <input - onChange={this.handleChange} - placeholder={this.state.github_url === null ? 'https://github.com/bob' : this.state.github_url} - defaultValue={this.state.github_url === null ? null : this.state.github_url} - name="github_url" - /> - </Form.Field> + <Form.Field> <label htmlFor="region">Region</label> <input @@ -677,18 +601,116 @@ export default class EditProfile extends React.Component { name="dependants" /> </Form.Field> + </Form> + </Segment> - <Button + <Segment className="links-form"> + <Header as="h3" textAlign="center"> + <Icon name="edit" /> + <Header.Content>Edit Links</Header.Content> + </Header> + <Form + ref={(input) => { + this.form = input; + }} + key={this.state.refresh} + size="small" + onSubmit={this.handleSubmit} + > + + <Form.Field> + <label htmlFor="portfolio_link">Portfolio Link</label> + <input + onChange={this.handleChange} + placeholder={ + this.state.portfolio_link === null + ? 'https://www.example.com/myproject/' + : this.state.portfolio_link + } + defaultValue={ + this.state.portfolio_link === null + ? null + : this.state.portfolio_link + } + name="portfolio_link" + /> + </Form.Field> + + <Form.Field> + <label htmlFor="linkedin_url">URL Profile LinkedIn</label> + <input + onChange={this.handleChange} + placeholder={ + this.state.linkedin_url === null + ? 'https://www.linkedin.com/in/jojo/' + : this.state.linkedin_url + } + defaultValue={ + this.state.linkedin_url === null + ? null + : this.state.linkedin_url + } + name="linkedin_url" + /> + </Form.Field> + + <Form.Field> + <label htmlFor="hackerrank_url">URL Profile Hackerrank</label> + <input + onChange={this.handleChange} + placeholder={ + this.state.hackerrank_url === null + ? 'https://www.hackerrank.com/james' + : this.state.hackerrank_url + } + defaultValue={ + this.state.hackerrank_url === null + ? null + : this.state.hackerrank_url + } + name="hackerrank_url" + /> + </Form.Field> + + <Form.Field> + <label htmlFor="website_url">Website URL</label> + <input + onChange={this.handleChange} + placeholder={ + this.state.website_url === null + ? 'https://www.example.com/' + : this.state.website_url + } + defaultValue={ + this.state.website_url === null + ? null + : this.state.website_url + } + name="website_url" + /> + </Form.Field> + + <Form.Field> + <label htmlFor="github_url">URL Profile Github</label> + <input + onChange={this.handleChange} + placeholder={this.state.github_url === null ? 'https://github.com/bob' : this.state.github_url} + defaultValue={this.state.github_url === null ? null : this.state.github_url} + name="github_url" + /> + </Form.Field> + </Form> + </Segment> + <Button onClick={this.handleSubmit} + fluid type="submit" size="small" loading={this.state.loading} primary - floated="right" > Submit </Button> - </Form> - </Segment> + </div> ); } diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx index db2278db..4d16e32a 100755 --- a/assets/js/ProfilePage.jsx +++ b/assets/js/ProfilePage.jsx @@ -317,463 +317,6 @@ export default class ProfilePage extends React.Component { gotoStudentTranscript = () => gotoLink(`transkrip/${this.state.id}`); - updateForm(show) { - if (show) { - return ( - <Segment className="profile-form"> - <Header as="h3" textAlign="center"> - <Icon name="edit" /> - <Header.Content>Edit Profile Page</Header.Content> - </Header> - <ModalAlert ref={(modal) => { this.modalAlert = modal; }} /> - <Form.Field ref={(input) => { this.form = input; }} key={this.state.refresh} size="small" onSubmit={this.handleSubmit}> - <ModalAlert - ref={(modal) => { - this.modalAlert = modal; - }} - /> - <Form - ref={(input) => { - this.form = input; - }} - key={this.state.refresh} - size="small" - onSubmit={this.handleSubmit} - > - <Form.Field> - <label htmlFor="photo">Profile Picture</label> - <input - onChange={this.handleFile} - placeholder="Profile Photo.jpg" - name="photo" - type="File" - /> - </Form.Field> - <Form.Field> - <label htmlFor="email">Email</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.email === null - ? 'jojon@email.com' - : this.state.email - } - defaultValue={ - this.state.email === null ? null : this.state.email - } - name="email" - /> - </Form.Field> - <Form.Field> - <label htmlFor="phone_number">No. Hp</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.phone_number === null - ? '08123456789' - : this.state.phone_number - } - defaultValue={ - this.state.phone_number === null - ? null - : this.state.phone_number - } - name="phone_number" - /> - </Form.Field> - <Form.Field> - <label htmlFor="gender">Jenis Kelamin</label> - <Form.Radio - label="Perempuan" - name="gender" - value="Perempuan" - onClick={this.handleRadioGender} - /> - <Form.Radio - label="Laki-laki" - name="gender" - value="Laki-laki" - onClick={this.handleRadioGender} - /> - </Form.Field> - <Form.Field> - <label htmlFor="self_description">Deskripsi Diri</label> - <input onChange={this.handleChange} maxLength="500" placeholder="Saya suka belajar" name="self_description" /> - </Form.Field> - <Form.Field> - <label htmlFor="linkedin_url">URL Profile LinkedIn</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.linkedin_url === null - ? 'https://www.linkedin.com/in/jojo/' - : this.state.linkedin_url - } - defaultValue={ - this.state.linkedin_url === null - ? null - : this.state.linkedin_url - } - name="linkedin_url" - /> - </Form.Field> - <Form.Field> - <label htmlFor="hackerrank_url">URL Profile Hackerrank</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.hackerrank_url === null - ? 'https://www.hackerrank.com/james' - : this.state.hackerrank_url - } - defaultValue={ - this.state.hackerrank_url === null - ? null - : this.state.hackerrank_url - } - name="hackerrank_url" - /> - </Form.Field> - <Form.Field> - <label htmlFor="portfolio_link">Portfolio Link</label> - <input - onChange={this.handleChange} - placeholder={this.state.portfolio_link === null ? 'https://www.example.com/myproject/' - : this.state.portfolio_link} - defaultValue={this.state.portfolio_link === null ? null : this.state.portfolio_link} - placeholder={ - this.state.portfolio_link === null - ? 'https://www.example.com/myproject/' - : this.state.portfolio_link - } - defaultValue={ - this.state.portfolio_link === null - ? null - : this.state.portfolio_link - } - name="portfolio_link" - /> - </Form.Field> - <Form.Field> - <label htmlFor="website_url">Website URL</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.website_url === null - ? 'https://www.example.com/' - : this.state.website_url - } - defaultValue={ - this.state.website_url === null - ? null - : this.state.website_url - } - name="website_url" - /> - </Form.Field> - <Form.Field> - <label htmlFor="linkedin_url">URL Profile Github</label> - <input - onChange={this.handleChange} - placeholder="https://github.com/bob" - name="github_url" - /> - </Form.Field> - <Form.Field> - <label htmlFor="gitlab_url">URL Profile Gitlab</label> - <input onChange={this.handleChange} placeholder="https://gitlab.com/<username>" name="gitlab_url" /> - </Form.Field> - <Form.Field> - <label htmlFor="alamat">Alamat</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.alamat === null ? 'Indonesia' : this.state.alamat - } - defaultValue={ - this.state.alamat === null ? null : this.state.alamat - } - name="alamat" - /> - </Form.Field> - <Form.Field> - <label htmlFor="region">Region</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.region === null ? 'Indonesia' : this.state.region - } - defaultValue={ - this.state.region === null ? null : this.state.region - } - name="region" - /> - </Form.Field> - <Form.Field> - <label htmlFor="skills">Skills</label> - <input - onChange={this.handleChange} - placeholder="Isi sesuai dengan keahlian anda" - name="skills" - /> - </Form.Field> - <Form.Field> - <label htmlFor="latest_work">Latest Working Experience</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.latest_work === null - ? 'Teaching Asssistant at Fasilkom UI' - : this.state.latest_work - } - defaultValue={ - this.state.latest_work === null - ? null - : this.state.latest_work - } - name="latest_work" - /> - </Form.Field> - <Form.Field> - <label htmlFor="latest_work_desc"> - Latest Working Experience Description - </label> - <input - onChange={this.handleChange} - placeholder={ - this.state.latest_work_desc === null - ? 'Evaluate weekly assignment for 15 students' - : this.state.latest_work_desc - } - defaultValue={ - this.state.latest_work_desc === null - ? null - : this.state.latest_work_desc - } - name="latest_work_desc" - /> - </Form.Field> - <Form.Field> - <label htmlFor="awards">Awards and Achievements</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.awards === null - ? 'Juara 2 UIUX Gemastik 2019' - : this.state.awards - } - defaultValue={ - this.state.awards === null ? null : this.state.awards - } - name="awards" - /> - </Form.Field> - <Form.Field> - <label htmlFor="projects">Projects</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.projects === null - ? 'Ow-Jek - Android Mobile Project' - : this.state.projects - } - defaultValue={ - this.state.projects === null ? null : this.state.projects - } - name="projects" - /> - </Form.Field> - <Form.Field> - <label htmlFor="certification">Sertifikasi</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.certification === null - ? 'TOEFL' - : this.state.certification - } - defaultValue={ - this.state.certification === null - ? null - : this.state.certification - } - name="certification" - /> - </Form.Field> - <Form.Field> - <label htmlFor="seminar">Seminar dan Training</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.seminar === null - ? 'Seminar Compfest' - : this.state.seminar - } - defaultValue={ - this.state.seminar === null ? null : this.state.seminar - } - name="seminar" - /> - </Form.Field> - <Form.Field> - <label htmlFor="interests">Interests</label> - <input - onChange={this.handleChange} - placeholder={this.state.interests === null ? 'Machine Learning' : this.state.interests} - defaultValue={this.state.interests === null ? null : this.state.interests} - name="interests" - /> - </Form.Field> - <Form.Field> - <label htmlFor="related_course">Related Coursework Taken</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.related_course === null - ? 'Interaction System, Machine Learning' - : this.state.related_course - } - defaultValue={ - this.state.related_course === null ? null : this.state.related_course - } - name="related_course" - /> - </Form.Field> - <Form.Field> - <label htmlFor="resume">Resume</label> - <input - onChange={this.handleFile} - placeholder="Resume" - name="resume" - type="File" - /> - </Form.Field> - <Form.Field> - <label htmlFor="phone_number">Expected Salary</label> - <input - onChange={this.handleChange} - placeholder="2000000" - name="expected_salary" - /> - </Form.Field> - <Form.Field> - <label htmlFor="intro">Intro</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.intro === null - ? 'Ceritakan dirimu secara singkat' - : this.state.intro - } - defaultValue={ - this.state.intro === null ? null : this.state.intro - } - name="intro" - /> - </Form.Field> - <Form.Field> - <label htmlFor="volunteer">Volunteering Experience</label> - <input - onChange={this.handleChange} - placeholder="Ketua Organisasi A - 2020" - name="volunteer" - /> - </Form.Field> - <Form.Field> - <label htmlFor="intro">Status Pencarian Kerja</label> - <Form.Radio - label="Aktif" - name="job_seeking_status" - value="Active" - onClick={this.handleRadio} - /> - <Form.Radio - label="Pasif" - name="job_seeking_status" - value="Passive" - onClick={this.handleRadio} - /> - </Form.Field> - <Form.Field> - <Checkbox - onChange={this.handleCheckbox} - checked={!!this.state.show_transcript} - label="Ijinkan perusahaan tempat saya mendaftar untuk melihat transkrip akademik saya" - name="show_transcript" - /> - </Form.Field> - <Form.Field> - <label htmlFor="student_gpa">GPA</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.student_gpa === null - ? '3.50' - : this.state.student_gpa - } - defaultValue={ - this.state.student_gpa === null - ? null - : this.state.student_gpa - } - name="student_gpa" - /> - </Form.Field> - <Form.Field> - <label htmlFor="student_toefl">TOEFL</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.student_toefl === null - ? '400' - : this.state.student_toefl - } - defaultValue={ - this.state.student_toefl === null - ? null - : this.state.student_toefl - } - name="student_toefl" - /> - <input - onChange={this.handleFile} - placeholder="Student Toefl" - name="student_toefl_file" - type="File" - /> - </Form.Field> - <Form.Field> - <label htmlFor="dependants">Dependants</label> - <input - onChange={this.handleChange} - placeholder={ - this.state.dependants === null ? '0' : this.state.dependants - } - defaultValue={ - this.state.dependants === null ? null : this.state.dependants - } - name="dependants" - /> - </Form.Field> - - <Button - type="submit" - size="small" - loading={this.state.loading} - primary - floated="right" - > - Submit - </Button> - </Form> - </Form.Field> - </Segment> - ); - } - - return <div />; - } - render() { const sertifikat_exists = this.state.sertifikat; let sertifikat_state; @@ -852,21 +395,6 @@ export default class ProfilePage extends React.Component { </Grid> </Segment> - <Segment basic vertical> - <Grid> - <Grid.Column width={2}> - <Icon name="linkify" size="big" /> - </Grid.Column> - <Grid.Column width={13}> - <a href={this.state.portfolio_link}> - {' '} - {this.state.portfolio_link || 'Portofolio belum ditambahkan'} - {' '} - </a> - </Grid.Column> - </Grid> - </Segment> - <Segment basic vertical> <Grid> <Grid.Column width={2}> @@ -913,36 +441,6 @@ export default class ProfilePage extends React.Component { </Grid> </Segment> - <Segment basic vertical> - <Grid> - <Grid.Column width={2}> - <Icon name="linkedin" size="big" /> - </Grid.Column> - <Grid.Column width={13}> - <a href={this.state.linkedin_url}> - {' '} - {this.state.linkedin_url || 'N/A'} - {' '} - </a> - </Grid.Column> - </Grid> - </Segment> - - <Segment basic vertical> - <Grid> - <Grid.Column width={2}> - <Icon name="hackerrank" size="big" /> - </Grid.Column> - <Grid.Column width={13}> - <a href={this.state.hackerrank_url}> - {' '} - {this.state.hackerrank_url || 'N/A'} - {' '} - </a> - </Grid.Column> - </Grid> - </Segment> - <Segment basic vertical> <Grid> <Grid.Column width={2}> @@ -987,59 +485,6 @@ export default class ProfilePage extends React.Component { </Grid.Column> </Grid> </Segment> - - <Segment basic vertical> - <Grid> - <Grid.Column width={2}> - <Icon name="globe" size="big" /> - </Grid.Column> - <Grid.Column width={13}> - <a href={this.state.website_url}> - {' '} - {this.state.website_url || 'N/A'} - {' '} - </a> - </Grid.Column> - </Grid> - </Segment> - <Segment basic vertical> - <Grid> - <Grid.Column width={2}> - <Icon name="github" size="big" /> - </Grid.Column> - <Grid.Column width={13}> - {this.state.github_url ? ( - <a href={this.state.github_url}> - {' '} - {this.state.github_url} - {' '} - </a> - ) : ( - <p> N/A </p> - )} - </Grid.Column> - </Grid> - </Segment> - <Segment basic vertical> - <Grid> - <Grid.Column width={2}> - <Icon name="gitlab" size="big" /> - </Grid.Column> - <Grid.Column width={13}> - { - this.state.gitlab_url - ? ( - <a href={this.state.gitlab_url}> - {' '} - { this.state.gitlab_url } - {' '} - </a> - ) - : <p> N/A </p> - } - </Grid.Column> - </Grid> - </Segment> </div> <Segment basic vertical> @@ -1406,6 +851,112 @@ export default class ProfilePage extends React.Component { </div> </Segment> + <Segment className="links-form"> + <h3>Links</h3> + <Grid stackable> + <Grid.Column width={6}> + <Segment basic vertical> + <Grid> + <Grid.Column width={2}> + <Icon name="linkify" size="big" /> + </Grid.Column> + <Grid.Column width={13}> + <a href={this.state.portfolio_link}> + {' '} + {this.state.portfolio_link || 'Portofolio belum ditambahkan'} + {' '} + </a> + </Grid.Column> + </Grid> + </Segment> + + <Segment basic vertical> + <Grid> + <Grid.Column width={2}> + <Icon name="linkedin" size="big" /> + </Grid.Column> + <Grid.Column width={13}> + <a href={this.state.linkedin_url}> + {' '} + {this.state.linkedin_url || 'N/A'} + {' '} + </a> + </Grid.Column> + </Grid> + </Segment> + + <Segment basic vertical> + <Grid> + <Grid.Column width={2}> + <Icon name="hackerrank" size="big" /> + </Grid.Column> + <Grid.Column width={13}> + <a href={this.state.hackerrank_url}> + {' '} + {this.state.hackerrank_url || 'N/A'} + {' '} + </a> + </Grid.Column> + </Grid> + </Segment> + + <Segment basic vertical> + <Grid> + <Grid.Column width={2}> + <Icon name="globe" size="big" /> + </Grid.Column> + <Grid.Column width={13}> + <a href={this.state.website_url}> + {' '} + {this.state.website_url || 'N/A'} + {' '} + </a> + </Grid.Column> + </Grid> + </Segment> + + <Segment basic vertical> + <Grid> + <Grid.Column width={2}> + <Icon name="github" size="big" /> + </Grid.Column> + <Grid.Column width={13}> + {this.state.github_url ? ( + <a href={this.state.github_url}> + {' '} + {this.state.github_url} + {' '} + </a> + ) : ( + <p> N/A </p> + )} + </Grid.Column> + </Grid> + </Segment> + <Segment basic vertical> + <Grid> + <Grid.Column width={2}> + <Icon name="gitlab" size="big" /> + </Grid.Column> + <Grid.Column width={13}> + { + this.state.gitlab_url + ? ( + <a href={this.state.gitlab_url}> + {' '} + { this.state.gitlab_url } + {' '} + </a> + ) + : <p> N/A </p> + } + </Grid.Column> + </Grid> + </Segment> + </Grid.Column> + </Grid> + </Segment> + {/* { this.updateForm(this.props.route.own) } */} </div> ); -- GitLab From 10be6afacae0f8685572070898d85685f263fb83 Mon Sep 17 00:00:00 2001 From: "nixi.sendya" <nixi.sendya@ui.ac.id> Date: Thu, 5 Dec 2019 17:00:01 +0700 Subject: [PATCH 3/4] removed unused import --- assets/js/ProfilePage.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx index 4d16e32a..ca793aec 100755 --- a/assets/js/ProfilePage.jsx +++ b/assets/js/ProfilePage.jsx @@ -5,7 +5,6 @@ import { Image, Header, Icon, - Checkbox, Container, Button, Form, -- GitLab From 8689a2b2cf2d11a6287b8a822b430a29b8b45a82 Mon Sep 17 00:00:00 2001 From: "nixi.sendya" <nixi.sendya@ui.ac.id> Date: Thu, 5 Dec 2019 17:07:58 +0700 Subject: [PATCH 4/4] Added back lost function from merge in EditProfile --- assets/js/EditProfile.jsx | 71 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/assets/js/EditProfile.jsx b/assets/js/EditProfile.jsx index dadbd4d2..525deebc 100644 --- a/assets/js/EditProfile.jsx +++ b/assets/js/EditProfile.jsx @@ -11,9 +11,10 @@ import { import Server from './lib/Server'; import Storage from './lib/Storage'; import ModalAlert from './components/ModalAlert'; -import ProfileHandler from './ProfileHandler'; +import Dumper from './lib/Dumper'; +import { isFromGithubLinkValid } from './Utils'; -export default class EditProfile extends ProfileHandler { +export default class EditProfile extends React.Component { static propTypes = { route: PropTypes.object.isRequired, params: PropTypes.object.isRequired, @@ -156,6 +157,72 @@ export default class EditProfile extends ProfileHandler { return dateIndexArray.reverse().join(' '); } + handleSubmit = (e) => { + e.preventDefault(); + if (!isFromGithubLinkValid(this.state.form.github_url)) { + this.modalAlert.open( + 'Pembaharuan profil gagal', + 'Pastikan link github yang anda tulis benar.(Berpola : https://github.com/<username>', + ); + } else { + const submitForm = {}; + Object.keys(this.state.form).forEach((key) => { + if (this.state.form[key] !== '') { + submitForm[key] = this.state.form[key]; + } + }); + this.setState({ loading: true }); + Server.submit( + `/students/${this.state.id}/profile/`, + submitForm, + 'PATCH', + ).then( + () => { + this.setState({ loading: false }); + this.modalAlert.open( + 'Profil berhasil diperbaharui', + 'Silakan periksa kembali profil anda', + this.getProfile, + ); + }, + (error) => error.then((r) => { + this.setState({ loading: false }); + this.modalAlert.open('Pembaharuan profil gagal', Dumper.dump(r)); + }), + ); + } + }; + + handleFile = (e) => { + const { form } = this.state; + form[e.target.name] = e.target.files[0]; + this.setState({ form }); + }; + + handleChange = (e) => { + const { form } = this.state; + form[e.target.name] = e.target.value; + this.setState({ form }); + }; + + handleCheckbox = (e, d) => { + const { form } = this.state; + form[d.name] = d.checked; + this.setState({ form, show_transcript: d.checked }); + }; + + handleRadioGender = (e, { value }) => { + const { form } = this.state; + form.gender = value; + this.setState({ form }); + }; + + handleRadio = (e, { value }) => { + const { form } = this.state; + form.job_seeking_status = value; + this.setState({ form }); + }; + updateForm(show) { if (show) { return ( -- GitLab