diff --git a/app/db.sqlite3 b/app/db.sqlite3 index 229a5de1..bae37fec 100644 Binary files a/app/db.sqlite3 and b/app/db.sqlite3 differ diff --git a/app/server/static/bundle/projects.js b/app/server/static/bundle/projects.js index bbbebf33..cb082b4a 100644 --- a/app/server/static/bundle/projects.js +++ b/app/server/static/bundle/projects.js @@ -460,7 +460,7 @@ eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn th /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\naxios__WEBPACK_IMPORTED_MODULE_1___default.a.defaults.xsrfCookieName = 'csrftoken';\naxios__WEBPACK_IMPORTED_MODULE_1___default.a.defaults.xsrfHeaderName = 'X-CSRFToken';\nconst baseUrl = window.location.href.split('/').slice(0, 3).join('/');\n\n\nconst vm = new vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n el: '#projects_root',\n delimiters: ['[[', ']]'],\n data: {\n items: [],\n selectedType: 'All',\n isActive: false,\n isDelete: false,\n project: null,\n },\n\n methods: {\n getProjects() {\n axios__WEBPACK_IMPORTED_MODULE_1___default.a.get(`${baseUrl}/api/projects`).then((response) => {\n this.items = response.data;\n });\n },\n\n deleteProject() {\n axios__WEBPACK_IMPORTED_MODULE_1___default.a.delete(`${baseUrl}/api/projects/${this.project.id}/`).then((response) => {\n this.isDelete = false;\n const index = this.items.indexOf(this.project);\n this.items.splice(index, 1);\n });\n },\n\n setProject(project) {\n this.project = project;\n this.isDelete = true;\n },\n\n updateSelectedType(type) {\n this.selectedType = type;\n },\n },\n\n computed: {\n uniqueProjectTypes() {\n const types = [];\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i];\n types.push(item.project_type);\n }\n const uniqueTypes = Array.from(new Set(types));\n\n return uniqueTypes;\n },\n\n filteredProjects() {\n // filter projects\n const projects = [];\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i];\n if ((this.selectedType === 'All') || (item.project_type === this.selectedType)) {\n projects.push(item);\n }\n }\n // create nested projects\n const nestedProjects = [];\n for (let i = 0; i < Math.ceil(projects.length / 3); i++) {\n const p = projects.slice(i * 3, (i + 1) * 3);\n nestedProjects.push(p);\n }\n return nestedProjects;\n },\n },\n\n created() {\n this.getProjects();\n },\n});\n\n\n//# sourceURL=webpack:///./static/js/projects.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\naxios__WEBPACK_IMPORTED_MODULE_1___default.a.defaults.xsrfCookieName = 'csrftoken';\naxios__WEBPACK_IMPORTED_MODULE_1___default.a.defaults.xsrfHeaderName = 'X-CSRFToken';\nconst baseUrl = window.location.href.split('/').slice(0, 3).join('/');\n\n\nconst vm = new vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n el: '#projects_root',\n delimiters: ['[[', ']]'],\n data: {\n items: [],\n isActive: false,\n isDelete: false,\n project: null,\n selected: 'All Project',\n },\n\n methods: {\n\n deleteProject() {\n axios__WEBPACK_IMPORTED_MODULE_1___default.a.delete(`${baseUrl}/api/projects/${this.project.id}/`).then((response) => {\n this.isDelete = false;\n const index = this.items.indexOf(this.project);\n this.items.splice(index, 1);\n });\n },\n\n setProject(project) {\n this.project = project;\n this.isDelete = true;\n },\n\n matchType(projectType) {\n if (projectType === 'DocumentClassification') {\n return this.selected === 'Text Classification';\n }\n if (projectType === 'SequenceLabeling') {\n return this.selected === 'Sequence Labeling';\n }\n if (projectType === 'Seq2seq') {\n return this.selected === 'Seq2seq';\n }\n return false;\n },\n },\n\n computed: {\n selectedProjects() {\n const projects = [];\n for (let item of this.items) {\n if ((this.selected === 'All Project') || this.matchType(item.project_type)) {\n projects.push(item);\n }\n }\n return projects;\n },\n },\n\n created() {\n axios__WEBPACK_IMPORTED_MODULE_1___default.a.get(`${baseUrl}/api/projects`).then((response) => {\n this.items = response.data;\n });\n },\n});\n\n\n//# sourceURL=webpack:///./static/js/projects.js?"); /***/ }) diff --git a/app/server/static/css/forum.css b/app/server/static/css/forum.css index 153d4f71..0e8961ac 100644 --- a/app/server/static/css/forum.css +++ b/app/server/static/css/forum.css @@ -365,6 +365,10 @@ p { padding-left: 100px; } +.pl15r { + padding-left: 1.5rem !important; +} + /* Padding Right */ @@ -690,4 +694,49 @@ p { margin-right: 110px; } +.dataset-item__main { + display: inline-block; + -webkit-box-flex: 2; + -ms-flex: 2 2 66%; + flex: 2 2 66%; + overflow: hidden; + margin: 0 8px 0 8px; +} +.dataset-item__main-title { + font-size: 16px; + font-weight: 500; + line-height: 22px; +} +.dataset-item__main-subtitle { + color: rgba(0,0,0,.55); + font-size: 12px; + font-weight: 400; + line-height: 22px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dataset-item__main-info { + color: rgba(0,0,0,.4); + font-size: 12px; + font-weight: 400; + line-height: 22px; +} + +.is-vertical { + vertical-align:middle !important; +} + +.project-thumbnail { + border-radius: 4px; +} + +.thumbnail-wrapper { + width:66px; + height:66px; + display:inline-block; +} + + [v-cloak] { display: none; } diff --git a/app/server/static/images/cat-1045782_640.jpg b/app/server/static/images/cat-1045782_640.jpg index d191bb27..f38f25f4 100644 Binary files a/app/server/static/images/cat-1045782_640.jpg and b/app/server/static/images/cat-1045782_640.jpg differ diff --git a/app/server/static/images/cat-3449999_640.jpg b/app/server/static/images/cat-3449999_640.jpg index 5acaeddb..ec8f7dde 100644 Binary files a/app/server/static/images/cat-3449999_640.jpg and b/app/server/static/images/cat-3449999_640.jpg differ diff --git a/app/server/static/images/tiger-768574_640.jpg b/app/server/static/images/tiger-768574_640.jpg index 30a6d68c..96037cec 100644 Binary files a/app/server/static/images/tiger-768574_640.jpg and b/app/server/static/images/tiger-768574_640.jpg differ diff --git a/app/server/static/js/projects.js b/app/server/static/js/projects.js index bf6b7991..19abcff5 100644 --- a/app/server/static/js/projects.js +++ b/app/server/static/js/projects.js @@ -11,18 +11,13 @@ const vm = new Vue({ delimiters: ['[[', ']]'], data: { items: [], - selectedType: 'All', isActive: false, isDelete: false, project: null, + selected: 'All Project', }, methods: { - getProjects() { - axios.get(`${baseUrl}/api/projects`).then((response) => { - this.items = response.data; - }); - }, deleteProject() { axios.delete(`${baseUrl}/api/projects/${this.project.id}/`).then((response) => { @@ -37,43 +32,35 @@ const vm = new Vue({ this.isDelete = true; }, - updateSelectedType(type) { - this.selectedType = type; + matchType(projectType) { + if (projectType === 'DocumentClassification') { + return this.selected === 'Text Classification'; + } + if (projectType === 'SequenceLabeling') { + return this.selected === 'Sequence Labeling'; + } + if (projectType === 'Seq2seq') { + return this.selected === 'Seq2seq'; + } + return false; }, }, computed: { - uniqueProjectTypes() { - const types = []; - for (let i = 0; i < this.items.length; i++) { - const item = this.items[i]; - types.push(item.project_type); - } - const uniqueTypes = Array.from(new Set(types)); - - return uniqueTypes; - }, - - filteredProjects() { - // filter projects + selectedProjects() { const projects = []; - for (let i = 0; i < this.items.length; i++) { - const item = this.items[i]; - if ((this.selectedType === 'All') || (item.project_type === this.selectedType)) { + for (let item of this.items) { + if ((this.selected === 'All Project') || this.matchType(item.project_type)) { projects.push(item); } } - // create nested projects - const nestedProjects = []; - for (let i = 0; i < Math.ceil(projects.length / 3); i++) { - const p = projects.slice(i * 3, (i + 1) * 3); - nestedProjects.push(p); - } - return nestedProjects; + return projects; }, }, created() { - this.getProjects(); + axios.get(`${baseUrl}/api/projects`).then((response) => { + this.items = response.data; + }); }, }); diff --git a/app/server/templates/projects.html b/app/server/templates/projects.html index 417667c1..f2e4d2ed 100644 --- a/app/server/templates/projects.html +++ b/app/server/templates/projects.html @@ -6,7 +6,7 @@
-
+

Hello, {{ user.get_username | title }}.

@@ -25,105 +25,118 @@
-
-
-
- -
-
- -