http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/apps/workspace/package.json ---------------------------------------------------------------------- diff --git a/django_airavata/apps/workspace/package.json b/django_airavata/apps/workspace/package.json index 5a2c4de..fd77e9f 100644 --- a/django_airavata/apps/workspace/package.json +++ b/django_airavata/apps/workspace/package.json @@ -10,6 +10,7 @@ "build": "cross-env NODE_ENV=production webpack --progress --hide-modules" }, "dependencies": { + "django-airavata-common": "file:../..", "moment": "^2.18.1", "vue": "^2.3.3" },
http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/apps/workspace/static/django_airavata_workspace/js/models/BaseModel.js ---------------------------------------------------------------------- diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/models/BaseModel.js b/django_airavata/apps/workspace/static/django_airavata_workspace/js/models/BaseModel.js deleted file mode 100644 index e61a1bc..0000000 --- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/models/BaseModel.js +++ /dev/null @@ -1,6 +0,0 @@ - -export default class BaseModel { - constructor(data = {}) { - Object.assign(this, data); - } -} http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/apps/workspace/static/django_airavata_workspace/js/models/Project.js ---------------------------------------------------------------------- diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/models/Project.js b/django_airavata/apps/workspace/static/django_airavata_workspace/js/models/Project.js deleted file mode 100644 index 04b2ad4..0000000 --- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/models/Project.js +++ /dev/null @@ -1,7 +0,0 @@ -import BaseModel from './BaseModel'; - -export default class Project extends BaseModel { - constructor(data = {}) { - super(data); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/apps/workspace/static/django_airavata_workspace/js/services/ProjectService.js ---------------------------------------------------------------------- diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/services/ProjectService.js b/django_airavata/apps/workspace/static/django_airavata_workspace/js/services/ProjectService.js deleted file mode 100644 index 3712181..0000000 --- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/services/ProjectService.js +++ /dev/null @@ -1,32 +0,0 @@ - -import Project from '../models/Project' -import PaginationIterator from '../utils/PaginationIterator' - -class ProjectService { - list(data = {}) { - if (data && data.results) { - return Promise.resolve(new PaginationIterator(data, Project)); - } else { - return fetch('/api/projects', { - credentials: 'include' - }) - .then(response => response.json()) - .then(json => new PaginationIterator(json, Project)); - } - } - - create() { - // TODO - } - - update() { - // TODO - } - - get() { - // TODO - } -} - -// Export as a singleton -export default new ProjectService(); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/apps/workspace/static/django_airavata_workspace/js/utils/PaginationIterator.js ---------------------------------------------------------------------- diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/utils/PaginationIterator.js b/django_airavata/apps/workspace/static/django_airavata_workspace/js/utils/PaginationIterator.js deleted file mode 100644 index 438c616..0000000 --- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/utils/PaginationIterator.js +++ /dev/null @@ -1,43 +0,0 @@ - -export default class PaginationIterator { - - constructor(pagedResponse, resultType = null) { - this.resultType = resultType; - this.processResponse(pagedResponse); - } - - next() { - return fetch(this._next, { - credentials: 'include' - }) - .then(response => response.json()) - .then(json => this.processResponse(json)); - } - - hasNext() { - return this._next != null; - } - - previous() { - return fetch(this._previous, { - credentials: 'include' - }) - .then(response => response.json()) - .then(json => this.processResponse(json)); - } - - hasPrevious() { - return this._previous != null; - } - - processResponse(pagedResponse) { - this._next = pagedResponse.next; - this._previous = pagedResponse.previous; - if (this.resultType) { - this.results = pagedResponse.results.map(result => new this.resultType(result)); - } else { - this.results = pagedResponse.results; - } - return this; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue ---------------------------------------------------------------------- diff --git a/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue b/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue index 3785d38..46b2e21 100644 --- a/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue +++ b/django_airavata/apps/workspace/static/django_airavata_workspace/js/views/ProjectListContainer.vue @@ -11,9 +11,9 @@ </template> <script> -import Project from '../models/Project' import ProjectList from './ProjectList.vue' -import ProjectService from '../services/ProjectService' + +import { services } from 'django-airavata-common' export default { props: ['initialProjectsData'], @@ -46,7 +46,7 @@ export default { } }, beforeMount: function () { - ProjectService.list(this.initialProjectsData) + services.ProjectService.list(this.initialProjectsData) .then(result => this.projectsPaginator = result); } } http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/package.json ---------------------------------------------------------------------- diff --git a/django_airavata/package.json b/django_airavata/package.json index 6099bfd..c44a0c2 100644 --- a/django_airavata/package.json +++ b/django_airavata/package.json @@ -4,6 +4,7 @@ "version": "1.0.0", "author": "Marcus Christie <[email protected]>", "private": true, + "main": "./static/common/dist/main.js", "scripts": { "dev": "cross-env NODE_ENV=development webpack --progress --hide-modules", "watch": "cross-env NODE_ENV=development webpack --watch", http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/static/common/js/index.js ---------------------------------------------------------------------- diff --git a/django_airavata/static/common/js/index.js b/django_airavata/static/common/js/index.js index e69de29..6ee1d22 100644 --- a/django_airavata/static/common/js/index.js +++ b/django_airavata/static/common/js/index.js @@ -0,0 +1,17 @@ +import Project from './models/Project' + +import ProjectService from './services/ProjectService' + +import PaginationIterator from './utils/PaginationIterator' + +exports.models = { + Project: Project +} + +exports.services = { + ProjectService: ProjectService +} + +exports.utils = { + PaginationIterator: PaginationIterator +} http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/static/common/js/models/BaseModel.js ---------------------------------------------------------------------- diff --git a/django_airavata/static/common/js/models/BaseModel.js b/django_airavata/static/common/js/models/BaseModel.js new file mode 100644 index 0000000..e61a1bc --- /dev/null +++ b/django_airavata/static/common/js/models/BaseModel.js @@ -0,0 +1,6 @@ + +export default class BaseModel { + constructor(data = {}) { + Object.assign(this, data); + } +} http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/static/common/js/models/Project.js ---------------------------------------------------------------------- diff --git a/django_airavata/static/common/js/models/Project.js b/django_airavata/static/common/js/models/Project.js new file mode 100644 index 0000000..04b2ad4 --- /dev/null +++ b/django_airavata/static/common/js/models/Project.js @@ -0,0 +1,7 @@ +import BaseModel from './BaseModel'; + +export default class Project extends BaseModel { + constructor(data = {}) { + super(data); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/static/common/js/services/ProjectService.js ---------------------------------------------------------------------- diff --git a/django_airavata/static/common/js/services/ProjectService.js b/django_airavata/static/common/js/services/ProjectService.js new file mode 100644 index 0000000..3712181 --- /dev/null +++ b/django_airavata/static/common/js/services/ProjectService.js @@ -0,0 +1,32 @@ + +import Project from '../models/Project' +import PaginationIterator from '../utils/PaginationIterator' + +class ProjectService { + list(data = {}) { + if (data && data.results) { + return Promise.resolve(new PaginationIterator(data, Project)); + } else { + return fetch('/api/projects', { + credentials: 'include' + }) + .then(response => response.json()) + .then(json => new PaginationIterator(json, Project)); + } + } + + create() { + // TODO + } + + update() { + // TODO + } + + get() { + // TODO + } +} + +// Export as a singleton +export default new ProjectService(); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/5397f677/django_airavata/static/common/js/utils/PaginationIterator.js ---------------------------------------------------------------------- diff --git a/django_airavata/static/common/js/utils/PaginationIterator.js b/django_airavata/static/common/js/utils/PaginationIterator.js new file mode 100644 index 0000000..438c616 --- /dev/null +++ b/django_airavata/static/common/js/utils/PaginationIterator.js @@ -0,0 +1,43 @@ + +export default class PaginationIterator { + + constructor(pagedResponse, resultType = null) { + this.resultType = resultType; + this.processResponse(pagedResponse); + } + + next() { + return fetch(this._next, { + credentials: 'include' + }) + .then(response => response.json()) + .then(json => this.processResponse(json)); + } + + hasNext() { + return this._next != null; + } + + previous() { + return fetch(this._previous, { + credentials: 'include' + }) + .then(response => response.json()) + .then(json => this.processResponse(json)); + } + + hasPrevious() { + return this._previous != null; + } + + processResponse(pagedResponse) { + this._next = pagedResponse.next; + this._previous = pagedResponse.previous; + if (this.resultType) { + this.results = pagedResponse.results.map(result => new this.resultType(result)); + } else { + this.results = pagedResponse.results; + } + return this; + } +} \ No newline at end of file
