diff --git a/package-lock.json b/package-lock.json index 8f95d61..c979562 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4639,6 +4639,21 @@ } } }, + "mobx": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-3.5.1.tgz", + "integrity": "sha1-jmguxTXPROBABbnjfi32asyXWkI=" + }, + "mobx-angular": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mobx-angular/-/mobx-angular-2.1.1.tgz", + "integrity": "sha1-1eNlOayyABht1aEXCAa0d2uai4g=" + }, + "mobx-state-tree": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mobx-state-tree/-/mobx-state-tree-1.3.1.tgz", + "integrity": "sha1-nhupuLbqGD8aSirh9nv6jyvK5P4=" + }, "moment": { "version": "2.18.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", diff --git a/package.json b/package.json index 3fced8f..5916bb8 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,9 @@ "ionic-angular": "^3.9.2", "ionic-plugin-keyboard": "^2.2.1", "ionicons": "3.0.0", + "mobx": "^3.5.1", + "mobx-angular": "^2.1.1", + "mobx-state-tree": "^1.3.1", "papaparse": "^4.3.6", "rxjs": "5.5.2", "survey-angular": "^0.12.4", diff --git a/readme_resources/app.gif b/readme_resources/app.gif index b2865ef..6fa98a4 100644 Binary files a/readme_resources/app.gif and b/readme_resources/app.gif differ diff --git a/src/models/survey.mst.model.ts b/src/models/survey.mst.model.ts new file mode 100644 index 0000000..b1e23ba --- /dev/null +++ b/src/models/survey.mst.model.ts @@ -0,0 +1,43 @@ +import { types, flow, applySnapshot } from 'mobx-state-tree'; +import { SurveyProvider } from '../providers/survey/survey'; + +export const Survey = types.model({ + AllowAccessResult: types.boolean, + CreatedAt: types.string, + CreatorId: types.string, + Id: types.string, + IsArchived: types.boolean, + IsPublished: types.boolean, + Name: types.string, + PostId: types.string, + PublishId: types.maybe(types.string), + ResultId: types.string, + StoreIPAddress: types.boolean, + UseCookies: types.boolean, + UserId: types.string, + Image: types.optional(types.string, '') +}).actions(self => ({ + +})); + +export const SurveyList = types.model({ + surveys: types.optional(types.array(Survey), []), +}).actions(self => ({ + getActiveSurveys(surveyProvider: SurveyProvider) { // <- note the star, this a generator function! + console.log('getActiveSurveys'); + surveyProvider.getActiveSurveys() + .subscribe( + data => { + console.log(data); + applySnapshot(self.surveys, data); + }, + error => { + console.log(error); + } + ); + } +})).views(self => ({ + getSurveysCount() { + return self.surveys.reduce((count, entry) => count + 1, 0); + } +})); diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts index 2ee493f..2060a03 100644 --- a/src/pages/home/home.ts +++ b/src/pages/home/home.ts @@ -10,6 +10,8 @@ import { ApiWrapper } from '../../providers/survey/api-wrapper'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/observable/forkJoin'; +import { SurveyList } from '../../models/survey.mst.model'; + @Component({ selector: 'page-home', templateUrl: 'home.html' @@ -22,6 +24,9 @@ export class HomePage { noSurveys: boolean = false; currentYear = new Date().getFullYear(); + surveysMobx: any; + + constructor(public navCtrl: NavController, public surveyProvider: SurveyProvider, public loadingCtrl: LoadingController, public alertCtrl: AlertController, public apiWrapper: ApiWrapper) { //this.getActiveSurveys(); @@ -40,6 +45,14 @@ export class HomePage { } ); */ + + /* + this.surveysMobx = SurveyList.create({ + surveys: [] + }); + + this.surveysMobx.getActiveSurveys(this.surveyProvider); + */ }