Skip to content

Commit

Permalink
stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
7immer committed Mar 15, 2016
1 parent ccd4f64 commit 8c24453
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 42 deletions.
21 changes: 16 additions & 5 deletions viewmodel-demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,19 @@
</body>

<template name="demoVM">
<input {{b "value: layout~2~item"}} type="text" style="width: 100%;box-sizing: border-box;">
<input {{b "value: tester('layout~3~item' this)"}} type="text" style="width: 100%;box-sizing: border-box;">
<button {{b "click: submit"}}>submit</button>
<!-- {{#each collection}} -->
<!-- {{>Template.dynamic template=(getArrayVal 'layout~$~item' @index) }} -->
<!-- {{/each}} -->
{{#each staticFormData.layout}}
<hr />
<input {{b "value: this.item"}} type="text" name="name">
{{>Template.dynamic template=this.item data=this}}
<hr />
{{/each}}
<button type="button" {{b "click: add(hero)"}}>Add Hero</button>
<button type="button" {{b "click: add(billboard)"}}>Add Billboard</button>
</template>


Expand Down Expand Up @@ -85,15 +96,15 @@
<template name="hero">
<div>
<div>hero Item:</div>
<input {{b "value: title"}} type="text">
<input {{b "value: alignment"}} type="text">
<input {{b "value: this.hero.title"}} type="text">
<input {{b "value: this.hero.alignment"}} type="text">
</div>
</template>

<template name="billboard">
<div>
<div>billboard Item:</div>
<input {{b "value: title"}} type="text">
<input {{b "value: background"}} type="text">
<input {{b "value: this.billboard.title"}} type="text">
<input {{b "value: this.billboard.background"}} type="text">
</div>
</template>
97 changes: 60 additions & 37 deletions viewmodel-demo.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ JSON.unflatten = function(data) {
"use strict";
if (Object(data) !== data || Array.isArray(data))
return data;
var regex = /\.?([^.\[\]]+)|\[(\d+)\]/g,
var regex = /\.?([^~\~\~]+)|\~(\d+)\~/g,
// var regex = /\.?([^.\[\]]+)|\[(\d+)\]/g,
resultholder = {};
for (var p in data) {
var cur = resultholder,
prop = "",
m;
while (m = regex.exec(p)) {
while ((m = regex.exec(p))) {
cur = cur[prop] || (cur[prop] = (m[2] ? [] : {}));
prop = m[2] || m[1];
}
Expand All @@ -25,46 +26,25 @@ JSON.flatten = function(data) {
} else if (Array.isArray(cur)) {
for(var i=0, l=cur.length; i<l; i++)
recurse(cur[i], prop + "~" + i + "");
if (l == 0)
// recurse(cur[i], prop + "[" + i + "]");
if (l === 0)
result[prop] = [];
} else {
var isEmpty = true;
for (var p in cur) {
isEmpty = false;
recurse(cur[p], prop ? prop+"~"+p : p);
// recurse(cur[p], prop ? prop+"."+p : p);
}
if (isEmpty && prop)
result[prop] = {};
}
}
recurse(data, "");
console.log(result);
// console.log(result);
return result;
}
//
// JSON.flatten = function(data) {
// var result = {};
// function recurse (cur, prop) {
// if (Object(cur) !== cur) {
// result[prop] = cur;
// } else if (Array.isArray(cur)) {
// for(var i=0, l=cur.length; i<l; i++)
// recurse(cur[i], prop + "[" + i + "]");
// if (l == 0)
// result[prop] = [];
// } else {
// var isEmpty = true;
// for (var p in cur) {
// isEmpty = false;
// recurse(cur[p], prop ? prop+"."+p : p);
// }
// if (isEmpty && prop)
// result[prop] = {};
// }
// }
// recurse(data, "");
// return result;
// }
};


function createTemplateObjFromSchema(schema, pick){
var ss;
Expand Down Expand Up @@ -142,14 +122,14 @@ if (Meteor.isClient) {
]
});


var pagesShare;
pagesShare = JSON.flatten(Pages.findOne({}));
pagesShare.staticFormData = Pages.findOne({});
pagesShare.collection = Pages;
pagesShare.schema = TestSchema;

ViewModel.share({
pages: JSON.flatten(Pages.findOne({})),
// {
// formData: Pages,
// schema: TestSchema
// },
pages: pagesShare,
utils:{
val(field){
console.log(field, this);
Expand All @@ -166,18 +146,61 @@ if (Meteor.isClient) {
var field = this.templateInstance.data.field;
return this.schema()._schema[field].defaultValue || "";
}
},
updateStaticFormData(data){
var self = this;
clearTimeout(timer);
timer = setTimeout(function () {
console.log(self);
// self.load(self.staticFormData(JSON.unflatten(data)) );
}, 400);
}
}
});

var timer;
Template.demoVM.viewmodel({
tester(val, val2){
console.log(val,val2);
// var d = Pages.findOne({});
// Pages.update({_id:"khds89g8"}, d);
// var flat = {};
// flat[val] = "hello world";
//
// var d = this.staticFormData.value;

// d.layout.push({test:"hello"});
// this.staticFormData(d);
// console.log(this.staticFormData.value);

//
// this.staticFormData(Pages.findOne());
// console.log(Pages.findOne({}));
// var test = _.extendOwn(d,newData);
// console.log(this.staticFormData());
},
onCreated: function() {
this.load({share:['pages', 'utils']});
},
submit(){
this.body("gfds");
console.log(this.data());
console.log(this.data().staticFormData);
event.preventDefault();
},
layout(){
return Pages.findOne().layout;
},
add(){
Pages.update({_id:"khds89g8"}, this.staticFormData.value); // update current values
Pages.update({_id:"khds89g8"},{$push:{layout:{item:"hero"}}});
this.staticFormData(Pages.findOne());
console.log(this.staticFormData.value);
},
delete(id){
Pages.update({_id:"khds89g8"},this.staticFormData.value); // update current values
Pages.update({_id:"khds89g8"},{$push:{layout:{test:"test"}}});
var test = Pages.findOne();
this.staticFormData(test);
console.log(this.staticFormData.value);
}
});

Expand Down

0 comments on commit 8c24453

Please sign in to comment.