Last active
May 30, 2017 13:54
-
-
Save khornberg/2edc92d39a5f4b8e87248b864af22b40 to your computer and use it in GitHub Desktop.
multiple changesets per page
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Ember from 'ember'; | |
import { schema } from '../models/user'; | |
import Validations from '../validations/user'; | |
export default Ember.Controller.extend({ | |
appName: 'Ember Twiddle', | |
Validations, | |
changesets: {}, | |
allValid(changeArray) { | |
return changeArray.every((change) => { | |
return change.value | |
}); | |
}, | |
save(changeArray) { | |
return changeArray.forEach((change) => { | |
change.value.execute(); | |
}); | |
}, | |
actions: { | |
save() { | |
var changesets = this.get('changesets'); | |
console.log(changesets); | |
let changes = Object.keys(changesets).map(function saveChangeset(key) { | |
let changeset = changesets[key]; | |
let snapshot = changeset.snapshot(); | |
return changeset | |
.validate() | |
.then(() => { | |
if (Ember.get(changeset, 'isValid')) { | |
return changeset; | |
} | |
}).catch(() => { | |
changeset.restore(snapshot); | |
}); | |
}); | |
return Ember.RSVP.allSettled(changes).then((changeArray) => { | |
console.log(changeArray); | |
if (this.allValid(changeArray)) { | |
return this.save(changeArray); | |
} | |
}); | |
}, | |
reset(changeset) { | |
var changesets = this.get('changesets'); | |
Object.keys(changesets).forEach(function resetChangeset(key) { | |
let changeset = changesets[key]; | |
return changeset.rollback(); | |
}); | |
}, | |
validateProperty(changeset, property, event) { | |
let changesets = this.get('changesets') | |
changesets[event.target.id] = changeset; | |
this.set('changesets', changesets); | |
let value = event.target.value; | |
changeset.set(property, value); | |
return changeset.validate(property); | |
}, | |
} | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Model from "ember-data/model"; | |
import attr from "ember-data/attr"; | |
import { belongsTo, hasMany } from "ember-data/relationships"; | |
export default Model.extend({ | |
name: attr('string'), | |
job: attr('stirng'), | |
active: attr('boolean'), | |
uuid: attr(), | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Ember from 'ember'; | |
export default Ember.Route.extend({ | |
model() { | |
this.get('store').createRecord('user', { | |
name: 'Jim', | |
job: 'Software engineer', | |
active: true, | |
uuid: Ember.uuid(), | |
}); | |
this.get('store').createRecord('user', { | |
name: 'Bob', | |
job: 'Software engineer', | |
active: true, | |
uuid: Ember.uuid(), | |
}); | |
return this.get('store').peekAll('user') | |
} | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"version": "0.12.1", | |
"EmberENV": { | |
"FEATURES": {} | |
}, | |
"options": { | |
"use_pods": false, | |
"enable-testing": false | |
}, | |
"dependencies": { | |
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js", | |
"ember": "2.12.0", | |
"ember-template-compiler": "2.12.0", | |
"ember-testing": "2.12.0", | |
"skeleton-css": "https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css" | |
}, | |
"addons": { | |
"ember-data": "2.12.1", | |
"ember-changeset-validations": "1.2.6" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { | |
validatePresence, | |
validateLength, | |
} from 'ember-changeset-validations/validators'; | |
export default { | |
name: [ | |
validatePresence(true), | |
validateLength({ min: 3 }) | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment