diff --git a/demos/doc2/js/doc.js b/demos/doc2/js/doc.js index 2d9a045f..c5845888 100644 --- a/demos/doc2/js/doc.js +++ b/demos/doc2/js/doc.js @@ -32,8 +32,8 @@ Ox.load('UI', { } }, select: function(data) { - if (data.ids) { - document.location.hash = data.ids[0]; + if (data.id) { + document.location.hash = data.id; } } }); diff --git a/source/Ox.UI/Ox.UI.js b/source/Ox.UI/Ox.UI.js index 25b18535..a3e01de9 100644 --- a/source/Ox.UI/Ox.UI.js +++ b/source/Ox.UI/Ox.UI.js @@ -313,7 +313,7 @@ Ox.load.UI = function(options, callback) { } }); return format; - }, + }; Ox.UI.hideLoadingScreen = function() { //Ox.print('hideLoadingScreen') var $div = $('.OxLoadingScreen'), diff --git a/source/Ox.UI/js/Calendar/Ox.Calendar.js b/source/Ox.UI/js/Calendar/Ox.Calendar.js index cdad273e..56e76ce3 100644 --- a/source/Ox.UI/js/Calendar/Ox.Calendar.js +++ b/source/Ox.UI/js/Calendar/Ox.Calendar.js @@ -1124,7 +1124,7 @@ Ox.Calendar = function(options, self) { } function setEventControls(event) { - var $eventControls = that.$element.find('.OxEventControl'), + var $eventControls = that.find('.OxEventControl'), isVisible = self.$eventControls.name.is(':visible'); if (event) { self.$eventControls.name.options({title: event.name}); diff --git a/source/Ox.UI/js/Core/Ox.DocPanel.js b/source/Ox.UI/js/Core/Ox.DocPanel.js index 1bf65fac..53193e2f 100644 --- a/source/Ox.UI/js/Core/Ox.DocPanel.js +++ b/source/Ox.UI/js/Core/Ox.DocPanel.js @@ -125,7 +125,7 @@ Ox.DocPanel = function(options, self) { }); self.$list = Ox.TreeList({ items: treeItems, - width: self.options.width + width: self.options.size - Ox.UI.SCROLLBAR_SIZE }) .bindEvent({ select: selectItem @@ -184,7 +184,7 @@ Ox.DocPanel = function(options, self) { @*/ that.selectItem = function(id) { self.$list.triggerEvent('select', {'ids': [id]}); - } + }; return that; }; diff --git a/source/Ox.UI/js/Core/Ox.JQueryElement.js b/source/Ox.UI/js/Core/Ox.JQueryElement.js index b1dd2c38..652af550 100644 --- a/source/Ox.UI/js/Core/Ox.JQueryElement.js +++ b/source/Ox.UI/js/Core/Ox.JQueryElement.js @@ -10,8 +10,7 @@ Ox.JQueryElement Wrapper for jQuery $element jQuery DOM Element @*/ -// fixme: it seems that children(), find() etc. don't work directly, -// and still have to be called on the $element +// fixme: now that children(), find() work, change code to call find directly. Ox.JQueryElement = function($element) { var that = this; @@ -48,10 +47,12 @@ Ox.forEach($('
'), function(val, key) { } }); ret = that.$element[key].apply(that.$element, args); - // if the $element of an ox object was returned + // if exactly one $element of an ox object was returned // then return the ox object instead // so that we can do oxObj.jqFn().oxFn() - return ret && ret.jquery && Ox.UI.elements[id = ret.data('oxid')] + return ret && ret.jquery + && ret.length == 1 + && Ox.UI.elements[id = ret.data('oxid')] ? Ox.UI.elements[id] : ret; }; } diff --git a/source/Ox.UI/js/List/Ox.List.js b/source/Ox.UI/js/List/Ox.List.js index 1b2dbcc5..2a874806 100644 --- a/source/Ox.UI/js/List/Ox.List.js +++ b/source/Ox.UI/js/List/Ox.List.js @@ -426,7 +426,7 @@ Ox.List = function(options, self) { function emptyFirstPage() { if (self.$pages[0]) { if (self.options.type == 'text') { - self.$pages[0].$element.find('.OxEmpty').remove(); + self.$pages[0].find('.OxEmpty').remove(); } else if (self.options.orientation == 'both') { that.$content.css({height: getListSize() + 'px'}); } @@ -1507,6 +1507,7 @@ Ox.List = function(options, self) { }); self.options.items.splice.apply(self.options.items, Ox.merge([pos, 0], items)); self.$items.splice.apply(self.$items, Ox.merge([pos, 0], $items)); + self.listLength += length; //loadItems(); updatePositions(); } @@ -1656,6 +1657,7 @@ Ox.List = function(options, self) { self.selected[i] -= length; } }); + self.listLength -= length; updatePositions(); } } diff --git a/source/Ox.UI/js/List/Ox.TextList.js b/source/Ox.UI/js/List/Ox.TextList.js index d1e3829b..eedb0f0f 100644 --- a/source/Ox.UI/js/List/Ox.TextList.js +++ b/source/Ox.UI/js/List/Ox.TextList.js @@ -615,7 +615,7 @@ Ox.TextList = function(options, self) { function getItem(id) { //Ox.Log('List', 'getItem', id) var $item = null; - that.$element.find('.OxItem').each(function() { + that.find('.OxItem').each(function() { var $this = $(this); if ($this.data('id') == id) { $item = $this; @@ -658,7 +658,7 @@ Ox.TextList = function(options, self) { ? $('.OxHeadCell' + stopSelector).next() : $('.OxHeadCell' + stopSelector)); $resize.detach().insertAfter($column); - that.$body.$element.find('.OxItem').each(function() { + that.$body.find('.OxItem').each(function() { var $this = $(this); $this.children(startSelector).detach()[insert]( $this.children(stopSelector) @@ -672,7 +672,7 @@ Ox.TextList = function(options, self) { self.visibleColumns.splice(stopPos, 0, visibleColumn); var pos = getColumnPositionById(self.options.columns[self.selectedColumn].id); if (pos > -1) { - that.$element.find('.OxResize .OxSelected').removeClass('OxSelected'); + that.find('.OxResize .OxSelected').removeClass('OxSelected'); pos > 0 && self.$heads[pos].prev().children().eq(2).addClass('OxSelected'); self.$heads[pos].next().children().eq(0).addClass('OxSelected'); if (pos == stopPos) { @@ -697,7 +697,7 @@ Ox.TextList = function(options, self) { that.$head.$content.empty(); constructHead(); itemWidth = getItemWidth(); - that.$body.$element.find('.OxItem').each(function() { + that.$body.find('.OxItem').each(function() { var $this = $(this); $this.children(selector).remove(); $this.css({width: itemWidth + 'px'}); @@ -738,7 +738,7 @@ Ox.TextList = function(options, self) { width: width - 9 - (i == self.selectedColumn ? 16 : 0) + 'px' }); } - that.$element.find('.OxCell.OxColumn' + Ox.toTitleCase(self.options.columns[i].id)).css({ + that.find('.OxCell.OxColumn' + Ox.toTitleCase(self.options.columns[i].id)).css({ width: width - (self.options.columnsVisible ? 9 : 8) + 'px' }); setWidth(); diff --git a/source/Ox.UI/js/List/Ox.TreeList.js b/source/Ox.UI/js/List/Ox.TreeList.js index 3e539e72..1c9c0fba 100644 --- a/source/Ox.UI/js/List/Ox.TreeList.js +++ b/source/Ox.UI/js/List/Ox.TreeList.js @@ -31,7 +31,10 @@ Ox.TreeList = function(options, self) { selected: [], width: 256 }) - .options(options || {}); + .options(options || {}) + .bindEvent({ + select: selectItem + }); if (self.options.data) { self.options.items = []; @@ -134,6 +137,23 @@ Ox.TreeList = function(options, self) { return ret; } + function getParent(id, items) { + var ret; + Ox.forEach(items, function(item) { + if(item.items) { + if(Ox.getObjectById(item.items, id)) { + ret = item.id; + } else { + ret = getParent(id, item.items); + } + if(ret) { + return false; + } + } + }); + return ret; + } + function parseData(key, value) { //Ox.Log('List', 'parseData', key, value) var ret = { @@ -178,10 +198,21 @@ Ox.TreeList = function(options, self) { return ret; } + function selectItem(data) { + var id = data.ids[0], parent = id, parents=[]; + while(parent = getParent(parent, self.options.items)) { + parents.push(parent); + } + parents = parents.reverse(); + toggleItems({ + expanded: true, + ids: parents + }); + } function toggleItem(item, expanded) { var $img, pos; item.expanded = expanded; - that.$element.find('.OxItem').each(function() { + that.find('.OxItem').each(function() { var $item = $(this); if ($item.data('id') == item.id) { $img = $item.find('.OxToggle'); diff --git a/source/Ox.UI/js/Video/Ox.SmallVideoTimeline.js b/source/Ox.UI/js/Video/Ox.SmallVideoTimeline.js index 4b9c0c1a..6eb3c95b 100644 --- a/source/Ox.UI/js/Video/Ox.SmallVideoTimeline.js +++ b/source/Ox.UI/js/Video/Ox.SmallVideoTimeline.js @@ -13,6 +13,7 @@ Ox.SmallVideoTimeline = function(options, self) { 'in': 0, out: 0, paused: false, + results: [], showMilliseconds: 0, timeline: '', type: 'player', @@ -239,4 +240,4 @@ Ox.SmallVideoTimeline = function(options, self) { return that; -}; \ No newline at end of file +}; diff --git a/source/Ox.UI/js/Video/Ox.VideoEditor.js b/source/Ox.UI/js/Video/Ox.VideoEditor.js index 683f76bf..fbad0598 100644 --- a/source/Ox.UI/js/Video/Ox.VideoEditor.js +++ b/source/Ox.UI/js/Video/Ox.VideoEditor.js @@ -442,7 +442,7 @@ Ox.VideoEditor = function(options, self) { width: 256 }).open(); } else if (id == 'resolution') { - self.options.resolution = parseInt(data.value); + self.options.resolution = parseInt(data.checked[0].id); self.$player[0].options({resolution: self.options.resolution}); } } diff --git a/source/Ox.UI/js/Video/Ox.VideoPlayer.js b/source/Ox.UI/js/Video/Ox.VideoPlayer.js index 8c7d698f..05f496de 100644 --- a/source/Ox.UI/js/Video/Ox.VideoPlayer.js +++ b/source/Ox.UI/js/Video/Ox.VideoPlayer.js @@ -173,6 +173,7 @@ Ox.VideoPlayer = function(options, self) { self.height = self.options.fullscreen ? window.innerHeight : self.options.height; self.videoWidth = self.options.width; self.videoHeight = self.options.height; + self.results = []; /* ---------------------------------------------------------------------------- @@ -1130,7 +1131,7 @@ Ox.VideoPlayer = function(options, self) { }); showControls(); hideControls(); - that.$element.find('.OxControls').bind({ + that.find('.OxControls').bind({ mouseenter: function() { self.mouseIsInControls = true; },