forked from fanruan/masonry
zsmj1994
5 years ago
5 changed files with 235 additions and 0 deletions
@ -0,0 +1,19 @@
|
||||
!(function () { |
||||
BI.config("dec.provider.layout", function (provider) { |
||||
provider.inject({ |
||||
layoutConfig: { |
||||
center: { |
||||
left: { |
||||
width: 550, |
||||
maxSize: 800 |
||||
} |
||||
} |
||||
} |
||||
}); |
||||
}); |
||||
|
||||
BI.config("dec.frame.classic.aside.entry_tree", function (options) { |
||||
options.type = "dec.masonry"; |
||||
return options; |
||||
}); |
||||
}()); |
@ -0,0 +1,75 @@
|
||||
!(function () { |
||||
|
||||
var Body = BI.inherit(BI.Widget, { |
||||
|
||||
props: { |
||||
baseCls: "dec-frame-body" |
||||
}, |
||||
|
||||
_store: function () { |
||||
return BI.Models.getModel("dec.model.masonry.block", this.options); |
||||
}, |
||||
|
||||
watch: { |
||||
masonry_selectedEntry: function (id) { |
||||
this.list.setValue(id); |
||||
} |
||||
}, |
||||
|
||||
render: function () { |
||||
var self = this, o = this.options; |
||||
|
||||
return { |
||||
type: "bi.vertical", |
||||
items: [ |
||||
{ |
||||
el: BI.extend({ |
||||
type: "dec.common.img.icon_text_item", |
||||
height: 36, |
||||
logic: { |
||||
dynamic: true |
||||
}, |
||||
text: o.text, |
||||
imgSrc: o.imgSrc, |
||||
iconCls: o.iconCls |
||||
}) |
||||
}, { |
||||
el: { |
||||
type: "bi.button_group", |
||||
ref: function (_ref) { |
||||
self.list = _ref; |
||||
}, |
||||
layouts: [ |
||||
{ |
||||
type: "bi.vertical" |
||||
} |
||||
], |
||||
items: BI.map(o.items, function (index, item) { |
||||
return BI.extend({ |
||||
type: "dec.common.img.icon_text_item", |
||||
height: 30, |
||||
cls: "dec-frame-platform-list-item-active dec-font-size-14" |
||||
}, item); |
||||
}), |
||||
listeners: [ |
||||
{ |
||||
eventName: "EVENT_CHANGE", |
||||
action: function (v) { |
||||
self.store.handleItemSelect(v); |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
lgap: 15 |
||||
} |
||||
] |
||||
}; |
||||
}, |
||||
|
||||
setValue: function (v) { |
||||
this.list.setValue(v); |
||||
} |
||||
}); |
||||
|
||||
BI.shortcut("dec.masonry.block", Body); |
||||
}()); |
@ -0,0 +1,21 @@
|
||||
(function () { |
||||
var Store = BI.inherit(Fix.Model, { |
||||
|
||||
state: function () { |
||||
return {}; |
||||
}, |
||||
|
||||
context: ["masonry_selectedEntry"], |
||||
|
||||
actions: { |
||||
handleItemSelect: function (v) { |
||||
this.model.masonry_selectedEntry = v; |
||||
var entry = BI.find(this.options.items, function (index, item) { |
||||
return item.id === v; |
||||
}); |
||||
BI.Services.getService("dec.service.frame.tab_pane").addItem(entry); |
||||
} |
||||
} |
||||
}); |
||||
BI.model("dec.model.masonry.block", Store); |
||||
}()); |
@ -0,0 +1,37 @@
|
||||
!(function () { |
||||
|
||||
var Body = BI.inherit(BI.Widget, { |
||||
|
||||
props: { |
||||
baseCls: "dec-frame-body" |
||||
}, |
||||
|
||||
_store: function () { |
||||
return BI.Models.getModel("dec.model.masonry"); |
||||
}, |
||||
|
||||
watch: {}, |
||||
|
||||
beforeInit: function (cb) { |
||||
this.store.initEntryList(cb); |
||||
}, |
||||
|
||||
render: function () { |
||||
var self = this; |
||||
|
||||
return { |
||||
type: "bi.button_group", |
||||
layouts: [ |
||||
{ |
||||
type: "bi.absolute" |
||||
} |
||||
], |
||||
chooseType: BI.Selection.Single, |
||||
scrolly: true, |
||||
items: this.store.formatItems() |
||||
}; |
||||
} |
||||
}); |
||||
|
||||
BI.shortcut("dec.masonry", Body); |
||||
}()); |
@ -0,0 +1,83 @@
|
||||
(function () { |
||||
var Store = BI.inherit(Fix.Model, { |
||||
|
||||
state: function () { |
||||
return { |
||||
entries: [], |
||||
flattenEntry: [], |
||||
masonry_selectedEntry: "" |
||||
}; |
||||
}, |
||||
|
||||
childContext: ["masonry_selectedEntry"], |
||||
|
||||
actions: { |
||||
initEntryList: function (callback) { |
||||
var self = this; |
||||
Dec.Utils.getCompleteDirectoryTree(function (res) { |
||||
self.model.entries = BI.Services.getService("dec.service.frame.entry").normalizeEntries(res.data); |
||||
self.groupEntries(false); |
||||
callback(); |
||||
}); |
||||
}, |
||||
|
||||
groupEntries: function () { |
||||
var self = this; |
||||
var tree = BI.Tree.transformToTreeFormat(this.model.entries); |
||||
tree = tree[0]; |
||||
BI.each(tree.children, function (index, item) { |
||||
item.children = self._flattenEntry(item); |
||||
}); |
||||
this.model.flattenEntry = tree.children; |
||||
}, |
||||
|
||||
formatItems: function () { |
||||
var items = []; |
||||
var columns = [0, 0]; |
||||
var flattenEntry = this.model.flattenEntry.slice(0); |
||||
flattenEntry = BI.filter(flattenEntry, function (index, entry) { |
||||
return BI.isNotEmptyArray(entry.children); |
||||
}); |
||||
var entry = {}; |
||||
while (flattenEntry.length > 0) { |
||||
entry = flattenEntry.shift(); |
||||
if (columns[0] > columns[1]) { |
||||
items.push({ |
||||
el: BI.extend({ |
||||
type: "dec.masonry.block", |
||||
text: entry.text, |
||||
items: entry.children |
||||
}, entry), |
||||
left: "50%", right: 0, |
||||
top: columns[1] |
||||
}); |
||||
columns[1] += (entry.children.length * 30 + 36); |
||||
} else { |
||||
items.push({ |
||||
el: BI.extend({ |
||||
type: "dec.masonry.block", |
||||
text: entry.text, |
||||
items: entry.children |
||||
}, entry), |
||||
left: 0, right: "50%", |
||||
top: columns[0] |
||||
}); |
||||
columns[0] += (entry.children.length * 30 + 36); |
||||
} |
||||
} |
||||
return items; |
||||
} |
||||
}, |
||||
|
||||
_flattenEntry: function (node) { |
||||
var items = []; |
||||
BI.Tree.traversal(node.children, function (index, n) { |
||||
if (n.entryType !== DecCst.Entries.Entry_Type.FOLDER) { |
||||
items.push(n); |
||||
} |
||||
}); |
||||
return items; |
||||
} |
||||
}); |
||||
BI.model("dec.model.masonry", Store); |
||||
}()); |
Loading…
Reference in new issue