{"version":3,"sources":["components/dataView.js","components/dataDetail.js","components/dataIterator.js"],"names":["dmx","Component","initialData","data","page","pages","items","sort","on","dir","has","first","prev","next","last","attributes","type","Array","Object","default","filter","String","Number","pageSize","sortOn","sortDir","validate","val","test","methods","select","this","setPage","prop","props","toLowerCase","_update","render","node","update","JSON","stringify","setData","filtered","slice","item","parse","DataScope","a","b","reverse","length","set","Math","ceil","isArray","map","$value","key","push","$key","splice","value","$parse","reset","index","findIndex","$node","requestAnimationFrame","forms","querySelectorAll","i","tag","loop","Boolean","random","BaseComponent","prototype","call","console","warn","floor","parseInt"],"mappings":"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","file":"../dmxDataTraversal/dmxDataTraversal.js","sourcesContent":["dmx.Component('data-view', {\r\n\r\n initialData: function() {\r\n return {\r\n data: [],\r\n page: 1,\r\n pages: 1,\r\n items: 0,\r\n sort: {\r\n on: '',\r\n dir: 'asc'\r\n },\r\n has: {\r\n first: false,\r\n prev: false,\r\n next: false,\r\n last: false\r\n }\r\n };\r\n },\r\n\r\n attributes: {\r\n data: {\r\n type: [Array, Object],\r\n default: []\r\n },\r\n\r\n filter: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n page: {\r\n type: Number,\r\n default: 1\r\n },\r\n\r\n pageSize: {\r\n type: Number,\r\n default: 0\r\n },\r\n\r\n sortOn: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n sortDir: {\r\n type: String,\r\n default: 'asc',\r\n validate: function(val) {\r\n return /^(asc|desc)$/i.test(val);\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n select: function(page) {\r\n this.setPage(Number(page));\r\n },\r\n\r\n first: function() {\r\n this.page = 1;\r\n this.setPage(1);\r\n },\r\n\r\n prev: function() {\r\n var page = this.page - 1;\r\n if (page < 1) page = 1;\r\n if (page > this.data.pages) page = this.data.pages;\r\n this.page = page;\r\n this.setPage(page);\r\n },\r\n\r\n next: function() {\r\n var page = this.page + 1;\r\n if (page < 1) page = 1;\r\n if (page > this.data.pages) page = this.data.pages;\r\n this.page = page;\r\n this.setPage(page);\r\n },\r\n\r\n last: function() {\r\n var page = this.data.pages;\r\n this.page = page;\r\n this.setPage(page);\r\n },\r\n\r\n sort: function(prop, dir) {\r\n this.props.sortOn = prop;\r\n this.props.sortDir = (dir && dir.toLowerCase() == 'desc' ? 'desc' : 'asc');\r\n this._update();\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.update({});\r\n },\r\n\r\n update: function(props) {\r\n if (JSON.stringify(this.props) != JSON.stringify(props)) {\r\n if (JSON.stringify(this.props.data) != JSON.stringify(props.data)) {\r\n this.setData(this.props.data);\r\n }\r\n if (this.props.page != props.page) {\r\n this.page = this.props.page;\r\n }\r\n }\r\n\r\n this._update();\r\n },\r\n\r\n _update: function() {\r\n var filter = this.props.filter;\r\n var sortOn = this.props.sortOn;\r\n var sortDir = this.props.sortDir.toLowerCase();\r\n var pageSize = this.props.pageSize;\r\n\r\n this.filtered = this.items.slice(0);\r\n\r\n if (filter) {\r\n this.filtered = this.filtered.filter(function(item) {\r\n return dmx.parse(this.props.filter, dmx.DataScope(item, this));\r\n }, this);\r\n }\r\n\r\n if (sortOn) {\r\n this.filtered.sort(function(a, b) {\r\n return a[sortOn] < b[sortOn] ? -1 : a[sortOn] > b[sortOn] ? 1 : 0;\r\n });\r\n }\r\n\r\n if (sortDir == 'desc') {\r\n this.filtered.reverse();\r\n }\r\n\r\n if (this.filtered.length) {\r\n this.set('pages', pageSize ? Math.ceil(this.filtered.length / pageSize) : 1);\r\n } else {\r\n this.set('pages', 1);\r\n }\r\n\r\n this.set('items', this.filtered.length);\r\n this.set('sort', {\r\n on: sortOn,\r\n dir: sortDir\r\n });\r\n\r\n this.setPage(this.page);\r\n },\r\n\r\n setData: function(data) {\r\n this.items = [];\r\n\r\n if (data && typeof data == 'object') {\r\n if (Array.isArray(data)) {\r\n this.items = data.map(function(item) {\r\n return (typeof item === 'object') ? item : { $value: item };\r\n });\r\n } else {\r\n for (var key in data) {\r\n this.items.push({ $key: key, $value: data[key] });\r\n }\r\n }\r\n }\r\n },\r\n\r\n setPage: function(page) {\r\n var pageSize = +this.props.pageSize;\r\n var data = this.filtered.slice(0);\r\n if (page < 1) page = 1;\r\n if (page > this.data.pages) page = this.data.pages;\r\n //this.page = page;\r\n this.set('page', page);\r\n this.set('data', pageSize ? data.splice((page - 1) * pageSize, pageSize) : data);\r\n this.set('has', {\r\n first: page > 1,\r\n prev: page > 1,\r\n next: page < this.data.pages,\r\n last: page < this.data.pages\r\n });\r\n }\r\n\r\n});\r\n","dmx.Component('data-detail', {\r\n\r\n initialData: function() {\r\n return {\r\n data: {}\r\n };\r\n },\r\n\r\n //tag: 'div',\r\n\r\n attributes: {\r\n data: {\r\n type: Array,\r\n default: []\r\n },\r\n\r\n key: {\r\n type: String\r\n },\r\n\r\n value: {\r\n type: [String, Number]\r\n }\r\n },\r\n\r\n methods: {\r\n select: function(value) {\r\n this.props.value = value;\r\n this.select(value, true);\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.items = [];\r\n \r\n //dmx.BaseComponent.prototype.render.call(this, node);\r\n this.$parse();\r\n\r\n this.setData(this.props.data);\r\n this.select(this.props.value);\r\n },\r\n\r\n update: function(props) {\r\n if (JSON.stringify(props.data) !== JSON.stringify(this.props.data)) {\r\n this.setData(this.props.data);\r\n this.select(this.props.value);\r\n }\r\n\r\n if (props.value !== this.props.value) {\r\n this.select(this.props.value, true);\r\n }\r\n },\r\n\r\n setData: function(data) {\r\n this.items = [];\r\n\r\n if (data && typeof data == 'object') {\r\n if (Array.isArray(data)) {\r\n this.items = data.map(function(item) {\r\n return (typeof item === 'object') ? item : { $value: item };\r\n });\r\n } else {\r\n for (var key in data) {\r\n this.items.push({ $key: key, $value: data[key] });\r\n }\r\n }\r\n }\r\n },\r\n\r\n select: function(value, reset) {\r\n var index = this.items.findIndex(function(item) {\r\n return item[this.props.key] === value;\r\n }, this);\r\n\r\n this.set('data', this.items[index] || null);\r\n\r\n if (reset) {\r\n var node = this.$node;\r\n\r\n requestAnimationFrame(function() {\r\n var forms = node.querySelectorAll('form');\r\n\r\n for (var i = 0; i < forms.length; i++) {\r\n forms[i].reset();\r\n }\r\n });\r\n }\r\n }\r\n\r\n});\r\n","dmx.Component('data-iterator', {\r\n\r\n initialData: function() {\r\n return {\r\n index: -1,\r\n value: null,\r\n has: {\r\n first: false,\r\n prev: false,\r\n next: false,\r\n last: false\r\n }\r\n };\r\n },\r\n\r\n tag: 'div',\r\n\r\n attributes: {\r\n data: {\r\n type: Array,\r\n default: []\r\n },\r\n\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n\r\n loop: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n first: function() {\r\n this.first();\r\n },\r\n\r\n prev: function() {\r\n this.prev();\r\n },\r\n\r\n next: function() {\r\n this.next();\r\n },\r\n\r\n last: function() {\r\n this.last();\r\n },\r\n\r\n random: function() {\r\n this.random();\r\n },\r\n\r\n select: function(index) {\r\n this.select(index);\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.items = [];\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n this.setData(this.props.data);\r\n this.select(this.props.index);\r\n },\r\n\r\n update: function(props) {\r\n if (JSON.stringify(props.data) !== JSON.stringify(this.props.data)) {\r\n this.setData(this.props.data);\r\n this.select(this.props.index);\r\n }\r\n\r\n if (props.index !== this.props.index) {\r\n this.select(this.props.index);\r\n }\r\n },\r\n\r\n setData: function(data) {\r\n if (data) {\r\n if (Array.isArray(data)) {\r\n this.items = data;\r\n } else {\r\n console.warn('Iterator data is not array but a ' + (typeof data));\r\n }\r\n }\r\n },\r\n\r\n first: function() {\r\n if (this.items.length) {\r\n this.select(0);\r\n }\r\n },\r\n\r\n prev: function() {\r\n if (this.items.length) {\r\n index = this.data.index - 1;\r\n if (index < 0 && this.props.loop) {\r\n index = this.items.length - 1;\r\n }\r\n this.select(index);\r\n }\r\n },\r\n\r\n next: function() {\r\n if (this.items.length) {\r\n index = this.data.index + 1;\r\n if (index >= this.items.length && this.props.loop) {\r\n index = 0;\r\n }\r\n this.select(index);\r\n }\r\n },\r\n\r\n last: function() {\r\n if (this.items.length) {\r\n this.select(this.items.length - 1);\r\n }\r\n },\r\n\r\n random: function() {\r\n if (this.items.length) {\r\n this.select(Math.floor(this.items.length * Math.random()));\r\n }\r\n },\r\n\r\n select: function(index) {\r\n index = parseInt(index, 10);\r\n\r\n if (this.items.length) {\r\n var last = this.items.length - 1;\r\n if (index < 0) index = 0;\r\n if (index >= this.items.length) index = last;\r\n this.set('index', index);\r\n this.set('value', this.items[index]);\r\n this.set('has', {\r\n first: index > 0,\r\n prev: index > 0,\r\n next: index < last,\r\n last: index < last\r\n });\r\n } else {\r\n this.set('index', -1);\r\n this.set('value', null);\r\n this.set('has', {\r\n first: false,\r\n prev: false,\r\n next: false,\r\n last: false\r\n });\r\n }\r\n }\r\n\r\n});\r\n"]}