remove unneeded Ox. prefix from path and file names
This commit is contained in:
parent
4138e4e558
commit
51696562f1
1365 changed files with 43 additions and 43 deletions
308
source/UI/js/List/IconList.js
Normal file
308
source/UI/js/List/IconList.js
Normal file
|
|
@ -0,0 +1,308 @@
|
|||
'use strict';
|
||||
/*@
|
||||
Ox.IconList <f> IconList Object
|
||||
options <o> Options object
|
||||
borderRadius <n|0> border radius for icon images
|
||||
centered <b|false> scroll list so selection is always centered
|
||||
defaultRatio <n|1> aspect ratio of icon placeholders
|
||||
draggable <b|false> If true, items can be dragged
|
||||
fixedRatio <b|n|false> if set to a number, icons have a fixed ratio
|
||||
id <s|''> element id
|
||||
item <f|null> called with data, sort, size,
|
||||
extends data with information needed for constructor
|
||||
itemConstructor <f|Ox.IconItem> contructor used to create item
|
||||
items <f|null> items array or callback function
|
||||
keys <a|[]> available item keys
|
||||
max <n|-1> maximum selected selected items
|
||||
min <n|0> minimum of selcted items
|
||||
orientation <s|both> orientation ("horizontal", "vertical" or "both")
|
||||
pageLength <n|100> Number of items per page (if orientation != "both")
|
||||
query <o> Query
|
||||
selectAsYouType <s|''> If set to a key, enables select-as-you-type
|
||||
selected <a|[]> array of selected items
|
||||
size <n|128> list size
|
||||
sort <a|[]> sort keys
|
||||
sums <[s]|[]> Sums to be included in totals
|
||||
self <o> Shared private variable
|
||||
([options[, self]]) -> <o:Ox.List> IconList Object
|
||||
@*/
|
||||
|
||||
Ox.IconList = function(options, self) {
|
||||
|
||||
self = self || {};
|
||||
var that = Ox.Element({}, self)
|
||||
.defaults({
|
||||
borderRadius: 0,
|
||||
centered: false,
|
||||
defaultRatio: 1,
|
||||
draggable: false,
|
||||
find: '',
|
||||
fixedRatio: false,
|
||||
id: '',
|
||||
item: null,
|
||||
itemConstructor: Ox.IconItem,
|
||||
items: null,
|
||||
keys: [],
|
||||
max: -1,
|
||||
min: 0,
|
||||
orientation: 'both',
|
||||
pageLength: 100,
|
||||
query: {conditions: [], operator: '&'},
|
||||
selectAsYouType: '',
|
||||
selected: [],
|
||||
size: 128,
|
||||
sort: [],
|
||||
sums: [],
|
||||
unique: ''
|
||||
})
|
||||
.options(options || {})
|
||||
.update({
|
||||
items: function() {
|
||||
self.$list.options({items: self.options.items});
|
||||
},
|
||||
query: function() {
|
||||
self.$list.options({query: self.options.query});
|
||||
},
|
||||
selected: function() {
|
||||
self.$list.options({selected: self.options.selected});
|
||||
},
|
||||
sort: function() {
|
||||
updateKeys();
|
||||
self.$list.options({sort: self.options.sort});
|
||||
}
|
||||
});
|
||||
|
||||
if (self.options.fixedRatio) {
|
||||
self.options.defaultRatio = self.options.fixedRatio;
|
||||
}
|
||||
|
||||
if (Ox.isArray(self.options.items)) {
|
||||
self.options.keys = Ox.unique(Ox.flatten(
|
||||
self.options.items.map(function(item) {
|
||||
return Object.keys(item);
|
||||
})
|
||||
));
|
||||
}
|
||||
|
||||
self.iconWidth = self.options.size;
|
||||
self.iconHeight = self.options.fixedRatio > 1
|
||||
? Math.round(self.options.size / self.options.fixedRatio)
|
||||
: self.options.size;
|
||||
self.itemWidth = self.options.size;
|
||||
self.itemHeight = self.iconHeight + self.options.size * 0.5;
|
||||
|
||||
self.$list = Ox.List({
|
||||
centered: self.options.centered,
|
||||
// fixme: change all occurences of construct to render
|
||||
construct: constructItem,
|
||||
draggable: self.options.draggable,
|
||||
id: self.options.id,
|
||||
itemHeight: self.itemHeight,
|
||||
items: self.options.items,
|
||||
itemWidth: self.itemWidth,
|
||||
keys: self.options.keys,
|
||||
max: self.options.max,
|
||||
min: self.options.min,
|
||||
orientation: self.options.orientation,
|
||||
pageLength: self.options.pageLength,
|
||||
query: self.options.query,
|
||||
selectAsYouType: self.options.selectAsYouType,
|
||||
selected: self.options.selected,
|
||||
sort: self.options.sort,
|
||||
sums: self.options.sums,
|
||||
type: 'icon',
|
||||
unique: self.options.unique
|
||||
})
|
||||
.addClass('OxIconList Ox' + Ox.toTitleCase(self.options.orientation))
|
||||
.bindEvent(function(data, event) {
|
||||
if (event == 'select') {
|
||||
self.options.selected = data.ids;
|
||||
}
|
||||
that.triggerEvent(event, data);
|
||||
});
|
||||
|
||||
that.setElement(self.$list);
|
||||
|
||||
updateKeys();
|
||||
|
||||
function constructItem(data) {
|
||||
var isEmpty = Ox.isEmpty(data);
|
||||
data = !isEmpty
|
||||
? self.options.item(data, self.options.sort, self.options.size)
|
||||
: {
|
||||
width: Math.round(self.options.size * (
|
||||
self.options.defaultRatio >= 1 ? 1 : self.options.defaultRatio
|
||||
)),
|
||||
height: Math.round(self.options.size / (
|
||||
self.options.defaultRatio <= 1 ? 1 : self.options.defaultRatio
|
||||
))
|
||||
};
|
||||
return self.options.itemConstructor(Ox.extend(data, {
|
||||
borderRadius: self.options.borderRadius,
|
||||
find: self.options.find,
|
||||
iconHeight: self.iconHeight,
|
||||
iconWidth: self.iconWidth,
|
||||
imageHeight: data.height,
|
||||
imageWidth: data.width,
|
||||
itemHeight: self.itemHeight,
|
||||
itemWidth: self.itemWidth
|
||||
//height: Math.round(self.options.size / (ratio <= 1 ? 1 : ratio)),
|
||||
//size: self.options.size,
|
||||
//width: Math.round(self.options.size * (ratio >= 1 ? 1 : ratio))
|
||||
}));
|
||||
}
|
||||
|
||||
function updateKeys() {
|
||||
self.$list.options({
|
||||
keys: Ox.unique(
|
||||
[self.options.sort[0].key].concat(self.options.keys)
|
||||
)
|
||||
});
|
||||
}
|
||||
|
||||
/*@
|
||||
closePreview <f> close preview
|
||||
() -> <o> the list
|
||||
@*/
|
||||
that.closePreview = function() {
|
||||
self.$list.closePreview();
|
||||
return that;
|
||||
};
|
||||
|
||||
/*@
|
||||
gainFocus <f> gainFocus
|
||||
@*/
|
||||
that.gainFocus = function() {
|
||||
self.$list.gainFocus();
|
||||
return that;
|
||||
};
|
||||
|
||||
that.getPasteIndex = function() {
|
||||
return self.$list.getPasteIndex();
|
||||
};
|
||||
|
||||
/*@
|
||||
hasFocus <f> hasFocus
|
||||
@*/
|
||||
that.hasFocus = function() {
|
||||
return self.$list.hasFocus();
|
||||
};
|
||||
|
||||
that.invertSelection = function() {
|
||||
self.$list.invertSelection();
|
||||
return that;
|
||||
};
|
||||
|
||||
/*@
|
||||
loseFocus <f> loseFocus
|
||||
@*/
|
||||
that.loseFocus = function() {
|
||||
self.$list.loseFocus();
|
||||
return that;
|
||||
};
|
||||
|
||||
/*@
|
||||
openPreview <f> openPreview
|
||||
@*/
|
||||
that.openPreview = function() {
|
||||
self.$list.openPreview();
|
||||
return that;
|
||||
};
|
||||
|
||||
/*@
|
||||
reloadList <f> reload list
|
||||
() -> <o> the list
|
||||
@*/
|
||||
that.reloadList = function() {
|
||||
self.$list.reloadList();
|
||||
return that;
|
||||
};
|
||||
|
||||
/*@
|
||||
scrollToSelection <f> scroll list to selection
|
||||
() -> <o> the list
|
||||
@*/
|
||||
that.scrollToSelection = function() {
|
||||
self.$list.scrollToSelection();
|
||||
return that;
|
||||
};
|
||||
|
||||
that.selectAll = function() {
|
||||
self.$list.selectAll();
|
||||
return that;
|
||||
};
|
||||
|
||||
that.selectPosition = function(pos) {
|
||||
self.$list.selectPosition(pos);
|
||||
return that;
|
||||
};
|
||||
|
||||
that.selectSelected = function(offset) {
|
||||
self.$list.selectSelected(offset);
|
||||
return that;
|
||||
};
|
||||
|
||||
/*@
|
||||
size <f> get size of list
|
||||
() -> <n> size
|
||||
@*/
|
||||
that.size = function() {
|
||||
self.$list.size();
|
||||
return that;
|
||||
};
|
||||
|
||||
// fixme: deprecate, use options()
|
||||
/*@
|
||||
sortList <f> sort list
|
||||
(key, operator) -> <o> the list
|
||||
key <s> sort key
|
||||
operator <s> sort operator ("+" or "-")
|
||||
@*/
|
||||
that.sortList = function(key, operator) {
|
||||
self.options.sort = [{
|
||||
key: key,
|
||||
operator: operator
|
||||
}];
|
||||
updateKeys();
|
||||
self.$list.sortList(key, operator);
|
||||
return that;
|
||||
};
|
||||
|
||||
/*@
|
||||
value <f> get/set value of item in list
|
||||
(id) -> <o> get all data for item
|
||||
(id, key) -> <s> get value of key of item with id
|
||||
(id, key, value) -> <f> set value, returns IconList
|
||||
(id, {key: value, ...}) -> <f> set values, returns IconList
|
||||
@*/
|
||||
that.value = function() {
|
||||
var args = Ox.slice(arguments),
|
||||
id = args.shift(),
|
||||
sort = false;
|
||||
if (arguments.length == 1) {
|
||||
return self.$list.value(id);
|
||||
} else if (arguments.length == 2 && Ox.isString(arguments[1])) {
|
||||
return self.$list.value(id, arguments[1]);
|
||||
} else {
|
||||
Ox.forEach(Ox.makeObject(args), function(value, key) {
|
||||
self.$list.value(id, key, value);
|
||||
if (key == self.unique) {
|
||||
// unique id has changed
|
||||
self.options.selected = self.options.selected.map(function(id_) {
|
||||
return id_ == id ? value : id_
|
||||
});
|
||||
id = value;
|
||||
}
|
||||
if (key == self.options.sort[0].key) {
|
||||
// sort key has changed
|
||||
sort = true;
|
||||
}
|
||||
});
|
||||
sort && self.$list.sort();
|
||||
return that;
|
||||
}
|
||||
};
|
||||
|
||||
return that;
|
||||
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue