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

Reply via email to