{"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","tag","value","BaseComponent","prototype","call","index","findIndex","loop","Boolean","random","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));\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);\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.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);\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) {\r\n var index = this.items.findIndex(function(item) {\r\n return item[this.props.key] === this.props.value;\r\n }, this);\r\n\r\n this.set('data', this.items[index] || null);\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"]}