windy
8 years ago
87 changed files with 32452 additions and 32151 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,32 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
render: function () { |
||||
var svg = BI.createWidget({ |
||||
type: "bi.svg", |
||||
width: 500, |
||||
height: 600 |
||||
}); |
||||
|
||||
var circle = svg.circle(100, 100, 10); |
||||
circle.animate({fill: "#223fa3", stroke: "#000", "stroke-width": 80, "stroke-opacity": 0.5}, 2000); |
||||
|
||||
var el = svg.rect(10, 200, 300, 200); |
||||
el.transform("t100,100r45t-100,0"); |
||||
|
||||
svg.path("M10,10L50,50M50,10L10,50") |
||||
.attr({stroke: "red"}); |
||||
|
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: this, |
||||
items: [{ |
||||
el: svg, |
||||
left: 100, |
||||
top: 50 |
||||
}] |
||||
}) |
||||
} |
||||
}); |
||||
$.shortcut("demo.svg", Demo.Func); |
@ -0,0 +1,96 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
_createNav: function(v){ |
||||
var m = this.MONTH, y = this.YEAR; |
||||
m += v; |
||||
while(m < 0){ |
||||
y--; |
||||
m += 12; |
||||
} |
||||
while(m > 11){ |
||||
y++; |
||||
m -= 12; |
||||
} |
||||
var calendar = BI.createWidget({ |
||||
type: "bi.calendar", |
||||
logic: { |
||||
dynamic: false |
||||
}, |
||||
year: y, |
||||
month: m, |
||||
day: this.DAY |
||||
}) |
||||
calendar.setValue(this.selectedTime); |
||||
return calendar; |
||||
}, |
||||
|
||||
_stringfyTimeObject: function(timeOb){ |
||||
return timeOb.year + "-" + (timeOb.month + 1) + "-" + timeOb.day; |
||||
}, |
||||
|
||||
render: function () { |
||||
var self = this; |
||||
var combo1 = BI.createWidget({ |
||||
type: "bi.bubble_combo", |
||||
el: { |
||||
type: "bi.button", |
||||
text: "测试", |
||||
height: 25 |
||||
}, |
||||
popup: { |
||||
el: { |
||||
type: "bi.button_group", |
||||
items: BI.makeArray(100, { |
||||
type: "bi.text_item", |
||||
height: 25, |
||||
text: "item" |
||||
}), |
||||
layouts: [{ |
||||
type: "bi.vertical" |
||||
}] |
||||
}, |
||||
maxHeight: 200 |
||||
} |
||||
}) |
||||
var combo2 = BI.createWidget({ |
||||
type: "bi.bubble_combo", |
||||
el: { |
||||
type: "bi.button", |
||||
text: "测试", |
||||
height: 25 |
||||
}, |
||||
popup: { |
||||
type: "bi.bubble_bar_popup_view", |
||||
el: { |
||||
type: "bi.button_group", |
||||
items: BI.makeArray(100, { |
||||
type: "bi.text_item", |
||||
height: 25, |
||||
text: "item" |
||||
}), |
||||
layouts: [{ |
||||
type: "bi.vertical" |
||||
}] |
||||
}, |
||||
maxHeight: 200, |
||||
minWidth: 600 |
||||
} |
||||
}) |
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: this, |
||||
items: [{ |
||||
el: combo1, |
||||
left: 100, |
||||
top: 100 |
||||
}, { |
||||
el: combo2, |
||||
left: 100, |
||||
bottom: 100 |
||||
}] |
||||
}) |
||||
} |
||||
}); |
||||
$.shortcut("demo.bubble_combo", Demo.Func); |
@ -0,0 +1,84 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
_createNav: function(v){ |
||||
var m = this.MONTH, y = this.YEAR; |
||||
m += v; |
||||
while(m < 0){ |
||||
y--; |
||||
m += 12; |
||||
} |
||||
while(m > 11){ |
||||
y++; |
||||
m -= 12; |
||||
} |
||||
var calendar = BI.createWidget({ |
||||
type: "bi.calendar", |
||||
logic: { |
||||
dynamic: false |
||||
}, |
||||
year: y, |
||||
month: m, |
||||
day: this.DAY |
||||
}) |
||||
calendar.setValue(this.selectedTime); |
||||
return calendar; |
||||
}, |
||||
|
||||
_stringfyTimeObject: function(timeOb){ |
||||
return timeOb.year + "-" + (timeOb.month + 1) + "-" + timeOb.day; |
||||
}, |
||||
|
||||
render: function () { |
||||
var self = this, d = new Date(); |
||||
this.YEAR = d.getFullYear(); |
||||
this.MONTH = d.getMonth(); |
||||
this.DAY = d.getDate(); |
||||
|
||||
this.selectedTime = { |
||||
year: this.YEAR, |
||||
month: this.MONTH, |
||||
day: this.DAY |
||||
}; |
||||
|
||||
var tip = BI.createWidget({ |
||||
type: "bi.label" |
||||
}); |
||||
|
||||
var nav = BI.createWidget({ |
||||
type: "bi.navigation", |
||||
element: this, |
||||
tab: { |
||||
height: 30, |
||||
items: [{ |
||||
once: false, |
||||
text: "后退", |
||||
value: -1, |
||||
cls: "mvc-button layout-bg3" |
||||
},tip, { |
||||
once: false, |
||||
text: "前进", |
||||
value: 1, |
||||
cls: "mvc-button layout-bg4" |
||||
}] |
||||
}, |
||||
cardCreator: BI.bind(this._createNav, this), |
||||
|
||||
afterCardCreated: function(){ |
||||
|
||||
}, |
||||
|
||||
afterCardShow: function(){ |
||||
this.setValue(self.selectedTime); |
||||
} |
||||
}) |
||||
|
||||
nav.on(BI.Navigation.EVENT_CHANGE, function(){ |
||||
self.selectedTime = nav.getValue(); |
||||
tip.setText(self._stringfyTimeObject(self.selectedTime)); |
||||
}); |
||||
tip.setText(this._stringfyTimeObject(this.selectedTime)); |
||||
} |
||||
}); |
||||
$.shortcut("demo.calendar", Demo.Func); |
@ -0,0 +1,21 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
|
||||
render: function () { |
||||
return { |
||||
type: "bi.absolute", |
||||
items: [{ |
||||
el: { |
||||
type: "bi.color_chooser", |
||||
width: 30, |
||||
height: 30 |
||||
}, |
||||
left: 100, |
||||
top: 250 |
||||
}] |
||||
} |
||||
} |
||||
}); |
||||
$.shortcut("demo.color_chooser", Demo.Func); |
@ -0,0 +1,35 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
|
||||
render: function () { |
||||
var canvas = BI.createWidget({ |
||||
type: "bi.complex_canvas", |
||||
width: 500, |
||||
height: 600 |
||||
}); |
||||
canvas.branch(55, 100, 10, 10, 100, 10, 200, 10, { |
||||
offset: 20, |
||||
strokeStyle: "red", |
||||
lineWidth: 2 |
||||
}); |
||||
|
||||
canvas.branch(220, 155, 120, 110, 150, 200, { |
||||
offset: 40 |
||||
}); |
||||
|
||||
canvas.stroke(); |
||||
|
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: this, |
||||
items: [{ |
||||
el: canvas, |
||||
left: 100, |
||||
top: 50 |
||||
}] |
||||
}) |
||||
} |
||||
}); |
||||
$.shortcut("demo.complex_canvas", Demo.Func); |
@ -0,0 +1,42 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
|
||||
render: function () { |
||||
var editor = BI.createWidget({ |
||||
type: "bi.text_editor", |
||||
width: 200, |
||||
height: 30, |
||||
value: "这是复制的内容" |
||||
}); |
||||
var zclip = BI.createWidget({ |
||||
type: 'bi.zero_clip', |
||||
width: 100, |
||||
height: 100, |
||||
cls: 'layout-bg1', |
||||
copy: function () { |
||||
return editor.getValue(); |
||||
}, |
||||
|
||||
afterCopy: function () { |
||||
BI.Msg.toast(editor.getValue()); |
||||
} |
||||
}); |
||||
|
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: this, |
||||
items: [{ |
||||
el: editor, |
||||
left: 100, |
||||
top: 50, |
||||
}, { |
||||
el: zclip, |
||||
left: 100, |
||||
top: 100 |
||||
}] |
||||
}) |
||||
} |
||||
}); |
||||
$.shortcut("demo.zclip", Demo.Func); |
@ -0,0 +1,184 @@
|
||||
Demo.CORE_CONFIG = [{ |
||||
id: 1, |
||||
text: "核心控件", |
||||
}, { |
||||
id: 101, |
||||
pId: 1, |
||||
text: "布局" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.center_adapt", |
||||
value: "demo.center_adapt" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.vertical_adapt", |
||||
value: "demo.vertical_adapt" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.horizontal_adapt", |
||||
value: "demo.horizontal_adapt" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.horizontal_auto", |
||||
value: "demo.horizontal_auto" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.horizontal_float", |
||||
value: "demo.horizontal_float" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.left_right_vertical_adapt", |
||||
value: "demo.left_right_vertical_adapt" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.center", |
||||
value: "demo.center_layout" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.float_center", |
||||
value: "demo.float_center" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.vertical", |
||||
value: "demo.vertical" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.horizontal", |
||||
value: "demo.horizontal" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.border", |
||||
value: "demo.border" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.left, bi.right", |
||||
value: "demo.flow" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.inline", |
||||
value: "demo.inline" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.htape", |
||||
value: "demo.htape" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.vtape", |
||||
value: "demo.vtape" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.grid", |
||||
value: "demo.grid" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.table", |
||||
value: "demo.table_layout" |
||||
}, { |
||||
pId: 101, |
||||
text: "bi.td", |
||||
value: "demo.td" |
||||
}, { |
||||
pId: 1, |
||||
id: 102, |
||||
text: "抽象控件" |
||||
}, { |
||||
pId: 102, |
||||
text: "bi.button_group", |
||||
value: "demo.button_group" |
||||
}, { |
||||
pId: 102, |
||||
text: "bi.button_tree", |
||||
value: "demo.button_tree" |
||||
}, { |
||||
pId: 102, |
||||
text: "bi.button_map", |
||||
value: "demo.button_map" |
||||
}, { |
||||
pId: 102, |
||||
id: 10201, |
||||
text: "组合控件" |
||||
}, { |
||||
pId: 10201, |
||||
text: "bi.combo", |
||||
value: "demo.combo" |
||||
}, { |
||||
pId: 10201, |
||||
text: "bi.expander", |
||||
value: "demo.expander" |
||||
}, { |
||||
pId: 10201, |
||||
text: "bi.group_combo", |
||||
value: "demo.group_combo" |
||||
}, { |
||||
pId: 10201, |
||||
text: "bi.loader", |
||||
value: "demo.loader" |
||||
}, { |
||||
pId: 10201, |
||||
text: "bi.navigation", |
||||
value: "demo.navigation" |
||||
}, { |
||||
pId: 10201, |
||||
text: "bi.searcher", |
||||
value: "demo.searcher" |
||||
}, { |
||||
pId: 10201, |
||||
text: "bi.switcher", |
||||
value: "demo.switcher" |
||||
}, { |
||||
pId: 10201, |
||||
text: "bi.tab", |
||||
value: "demo.tab" |
||||
}, { |
||||
pId: 102, |
||||
id: 10202, |
||||
text: "弹出层" |
||||
}, { |
||||
pId: 10202, |
||||
text: "bi.layer_float_box", |
||||
value: "demo.layer_float_box" |
||||
}, { |
||||
pId: 10202, |
||||
text: "bi.layer_popup", |
||||
value: "demo.layer_popup" |
||||
}, { |
||||
pId: 10202, |
||||
text: "bi.layer_scroll", |
||||
value: "demo.layer_scroll" |
||||
}, { |
||||
pId: 10202, |
||||
text: "bi.layer_searcher", |
||||
value: "demo.layer_searcher" |
||||
}, { |
||||
pId: 102, |
||||
text: "bi.customtree", |
||||
value: "demo.customtree" |
||||
}, { |
||||
pId: 102, |
||||
text: "bi.grid_view", |
||||
value: "demo.grid_view" |
||||
}, { |
||||
pId: 102, |
||||
text: "bi.collection", |
||||
value: "demo.collection" |
||||
}, { |
||||
pId: 1, |
||||
text: "widget", |
||||
value: "demo.widget" |
||||
}, { |
||||
pId: 1, |
||||
text: "single", |
||||
value: "demo.single" |
||||
}, { |
||||
pId: 1, |
||||
text: "BasicButton", |
||||
value: "demo.basic_button" |
||||
}, { |
||||
pId: 1, |
||||
text: "NodeButton", |
||||
value: "demo.node_button" |
||||
}, { |
||||
pId: 1, |
||||
text: "pane", |
||||
value: "demo.pane" |
||||
}]; |
@ -1,76 +0,0 @@
|
||||
Demo.LAYOUT_CONFIG = [{ |
||||
id: 1, |
||||
text: "布局" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.center_adapt", |
||||
value: "demo.center_adapt" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.vertical_adapt", |
||||
value: "demo.vertical_adapt" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.horizontal_adapt", |
||||
value: "demo.horizontal_adapt" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.horizontal_auto", |
||||
value: "demo.horizontal_auto" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.horizontal_float", |
||||
value: "demo.horizontal_float" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.left_right_vertical_adapt", |
||||
value: "demo.left_right_vertical_adapt" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.center", |
||||
value: "demo.center_layout" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.float_center", |
||||
value: "demo.float_center" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.vertical", |
||||
value: "demo.vertical" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.horizontal", |
||||
value: "demo.horizontal" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.border", |
||||
value: "demo.border" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.left, bi.right", |
||||
value: "demo.flow" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.inline", |
||||
value: "demo.inline" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.htape", |
||||
value: "demo.htape" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.vtape", |
||||
value: "demo.vtape" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.grid", |
||||
value: "demo.grid" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.table", |
||||
value: "demo.table_layout" |
||||
}, { |
||||
pId: 1, |
||||
text: "bi.td", |
||||
value: "demo.td" |
||||
}]; |
@ -0,0 +1,11 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
render: function () { |
||||
return { |
||||
type: "bi.layout", |
||||
} |
||||
} |
||||
}); |
||||
$.shortcut("demo.combo", Demo.Func); |
@ -0,0 +1,24 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
render: function () { |
||||
return { |
||||
type: "bi.button_group", |
||||
chooseType: BI.ButtonGroup.CHOOSE_TYPE_NONE, |
||||
layouts: [{ |
||||
type: "bi.vertical" |
||||
}, { |
||||
type: "bi.center_adapt", |
||||
}], |
||||
items: [{ |
||||
type: "bi.label", |
||||
text: "button_group是一类具有相同属性或相似属性的抽象, 本案例实现的是布局的嵌套(vertical布局下内嵌center_adapt布局)" |
||||
}, { |
||||
type: "bi.button", |
||||
text: "1" |
||||
}] |
||||
} |
||||
} |
||||
}); |
||||
$.shortcut("demo.button_group", Demo.Func); |
@ -0,0 +1,26 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
render: function () { |
||||
return { |
||||
type: "bi.button_map", |
||||
chooseType: BI.ButtonGroup.CHOOSE_TYPE_MULTI, |
||||
layouts: [{ |
||||
type: "bi.vertical" |
||||
}, { |
||||
type: "bi.center_adapt", |
||||
}], |
||||
items: [{ |
||||
type: "bi.label", |
||||
text: "0", |
||||
value: 0 |
||||
}, { |
||||
type: "bi.button", |
||||
text: "1", |
||||
value: 1 |
||||
}] |
||||
} |
||||
} |
||||
}); |
||||
$.shortcut("demo.button_map", Demo.Func); |
@ -0,0 +1,26 @@
|
||||
Demo.Func = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: "demo-func" |
||||
}, |
||||
render: function () { |
||||
return { |
||||
type: "bi.button_tree", |
||||
chooseType: BI.ButtonGroup.CHOOSE_TYPE_MULTI, |
||||
layouts: [{ |
||||
type: "bi.vertical" |
||||
}, { |
||||
type: "bi.center_adapt", |
||||
}], |
||||
items: [{ |
||||
type: "bi.label", |
||||
text: "0", |
||||
value: 0 |
||||
}, { |
||||
type: "bi.button", |
||||
text: "1", |
||||
value: 1 |
||||
}] |
||||
} |
||||
} |
||||
}); |
||||
$.shortcut("demo.button_tree", Demo.Func); |
@ -1,3 +1,7 @@
|
||||
Demo = { |
||||
version: 1.0 |
||||
}; |
||||
|
||||
BI.i18n = { |
||||
"BI-Basic_OK": "确定" |
||||
}; |
@ -1,192 +0,0 @@
|
||||
/** |
||||
* Created by Young's on 2016/8/17. |
||||
* 加载面板,一般只用于 requestAsync 中 |
||||
*/ |
||||
BI.RequstLoading = BI.inherit(BI.Widget, { |
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.RequstLoading.superclass._defaultConfig.apply(this, arguments), {}); |
||||
}, |
||||
|
||||
_init: function () { |
||||
BI.RequstLoading.superclass._init.apply(this, arguments); |
||||
var self = this, o = this.options; |
||||
var mask = BI.Maskers.create(BI.RequstLoading.MASK_ID); |
||||
this.callback = o.callback; |
||||
this.paneTab = BI.createWidget({ |
||||
type: "bi.tab", |
||||
cardCreator: BI.bind(this._cardCreator, this), |
||||
defaultShowIndex: BI.RequstLoading.ERROR, |
||||
width: 400, |
||||
height: 300 |
||||
}); |
||||
var tempIcon = BI.createWidget({ |
||||
type: "bi.icon_button", |
||||
cls: "data-link-test-fail-icon", |
||||
width: 0, |
||||
height: 0 |
||||
}); |
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: $('body'), |
||||
items: [{ |
||||
el: tempIcon, |
||||
bottom: 0 |
||||
}] |
||||
}); |
||||
|
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: mask, |
||||
cls: "bi-request-loading", |
||||
items: [{ |
||||
el: { |
||||
type: "bi.layout", |
||||
cls: "mask-pane" |
||||
}, |
||||
top: 0, |
||||
left: 0, |
||||
bottom: 0, |
||||
right: 0 |
||||
}, { |
||||
el: { |
||||
type: "bi.center_adapt", |
||||
items: [this.paneTab] |
||||
}, |
||||
top: 0, |
||||
left: 0, |
||||
right: 0, |
||||
bottom: 0 |
||||
}] |
||||
}); |
||||
}, |
||||
|
||||
_cardCreator: function (v) { |
||||
var self = this; |
||||
var cancel = BI.createWidget({ |
||||
type: "bi.button", |
||||
text: BI.i18nText("BI-Basic_Cancel"), |
||||
title: BI.i18nText("BI-Basic_Cancel"), |
||||
level: "ignore", |
||||
height: 28, |
||||
width: 90, |
||||
handler: function () { |
||||
BI.Maskers.hide(BI.RequstLoading.MASK_ID); |
||||
} |
||||
}); |
||||
var retry = BI.createWidget({ |
||||
type: "bi.button", |
||||
text: BI.i18nText("BI-Basic_Retry"), |
||||
title: BI.i18nText("BI-Basic_Retry"), |
||||
level: "common", |
||||
height: 28, |
||||
width: 90, |
||||
handler: function () { |
||||
self.paneTab.setSelect(BI.RequstLoading.LOADING); |
||||
self.callback(); |
||||
} |
||||
}); |
||||
switch (v) { |
||||
case BI.RequstLoading.LOADING: |
||||
return BI.createWidget({ |
||||
type: "bi.vertical", |
||||
items: [{ |
||||
type: "bi.center_adapt", |
||||
cls: "loading-bar-icon", |
||||
items: [{ |
||||
type: "bi.icon", |
||||
width: 208, |
||||
height: 15 |
||||
}] |
||||
}, { |
||||
type: "bi.label", |
||||
cls: "loading-comment", |
||||
text: BI.i18nText("BI-Basic_Loading"), |
||||
height: 30 |
||||
}], |
||||
width: 208, |
||||
height: 200, |
||||
vgap: 10 |
||||
}); |
||||
case BI.RequstLoading.LOADING_TIMEOUT: |
||||
return BI.createWidget({ |
||||
type: "bi.vertical", |
||||
items: [{ |
||||
type: "bi.center_adapt", |
||||
cls: "loading-bar-icon", |
||||
items: [{ |
||||
type: "bi.icon", |
||||
width: 208, |
||||
height: 15 |
||||
}] |
||||
}, { |
||||
type: "bi.label", |
||||
cls: "loading-comment", |
||||
text: BI.i18nText("BI-Basic_Loading"), |
||||
height: 30 |
||||
}, { |
||||
type: "bi.label", |
||||
text: BI.i18nText("BI-Request_Time_Out_Toast_Tip"), |
||||
cls: "load-timeout-warning" |
||||
}, { |
||||
type: "bi.left_right_vertical_adapt", |
||||
items: { |
||||
left: [cancel], |
||||
right: [retry] |
||||
}, |
||||
height: 30, |
||||
llgap: 100, |
||||
rrgap: 100 |
||||
}], |
||||
vgap: 10 |
||||
}); |
||||
case BI.RequstLoading.ERROR: |
||||
return BI.createWidget({ |
||||
type: "bi.vertical", |
||||
items: [{ |
||||
type: "bi.center_adapt", |
||||
cls: "data-link-test-fail-icon", |
||||
items: [{ |
||||
type: "bi.icon", |
||||
width: 126, |
||||
height: 126 |
||||
}] |
||||
}, { |
||||
type: "bi.label", |
||||
text: BI.i18nText("BI-Connection_Lost"), |
||||
cls: "load-fail-comment" |
||||
}, { |
||||
type: "bi.left_right_vertical_adapt", |
||||
items: { |
||||
left: [cancel], |
||||
right: [retry] |
||||
}, |
||||
height: 30, |
||||
llgap: 100, |
||||
rrgap: 100 |
||||
}], |
||||
vgap: 20 |
||||
}); |
||||
} |
||||
}, |
||||
|
||||
showLoading: function () { |
||||
BI.Maskers.show(BI.RequstLoading.MASK_ID); |
||||
this.paneTab.setSelect(BI.RequstLoading.LOADING); |
||||
}, |
||||
|
||||
showError: function () { |
||||
BI.Maskers.show(BI.RequstLoading.MASK_ID); |
||||
this.paneTab.setSelect(BI.RequstLoading.ERROR); |
||||
}, |
||||
|
||||
setCallback: function (callback) { |
||||
this.callback = callback; |
||||
} |
||||
}); |
||||
BI.extend(BI.RequstLoading, { |
||||
MASK_ID: "___request__loading___", |
||||
LOADING: 1, |
||||
LOADING_TIMEOUT: 2, |
||||
ERROR: 3 |
||||
}); |
||||
$.shortcut("bi.request_loading", BI.RequstLoading); |
@ -1,117 +0,0 @@
|
||||
/** |
||||
* 组件请求数据超时提示 |
||||
* Created by Young's on 2017/2/4. |
||||
*/ |
||||
BI.TimeoutToast = BI.inherit(BI.Tip, { |
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.TimeoutToast.superclass._defaultConfig.apply(this, arguments), { |
||||
baseCls: "bi-timeout-toast" |
||||
}); |
||||
}, |
||||
|
||||
_init: function () { |
||||
BI.TimeoutToast.superclass._init.apply(this, arguments); |
||||
var self = this; |
||||
this.requests = []; |
||||
this.toast = BI.createWidget({ |
||||
type: "bi.vertical_adapt", |
||||
element: this, |
||||
items: [{ |
||||
type: "bi.label", |
||||
text: BI.i18nText("BI-Request_Time_Out_Toast_Tip") |
||||
}, { |
||||
type: "bi.text_button", |
||||
cls: "cancel-button", |
||||
width: 60, |
||||
height: 22, |
||||
text: BI.i18nText("BI-Basic_Cancel"), |
||||
title: BI.i18nText("BI-Basic_Cancel"), |
||||
handler: function () { |
||||
self.cancelAllRequests(); |
||||
} |
||||
}, { |
||||
type: "bi.text_button", |
||||
cls: "retry-button", |
||||
width: 60, |
||||
height: 22, |
||||
text: BI.i18nText("BI-Basic_Retry"), |
||||
title: BI.i18nText("BI-Basic_Retry"), |
||||
handler: function () { |
||||
self.toast.element.slideUp(500); |
||||
self._retryAll(); |
||||
} |
||||
}, { |
||||
type: "bi.icon_button", |
||||
cls: "close-font", |
||||
width: 20, |
||||
height: 20, |
||||
title: BI.i18nText("BI-Basic_Close"), |
||||
handler: function () { |
||||
self.toast.element.slideUp(500); |
||||
} |
||||
}], |
||||
width: 520, |
||||
height: 30, |
||||
hgap: 2 |
||||
}); |
||||
|
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: $("body"), |
||||
items: [{ |
||||
el: this.toast, |
||||
left: "50%", |
||||
top: 0 |
||||
}] |
||||
}); |
||||
this.toast.element.css({"margin-left": -1 * this.toast.element.outerWidth() / 2}); |
||||
this.toast.setVisible(false); |
||||
}, |
||||
|
||||
_retryAll: function () { |
||||
var self = this; |
||||
var clonedRequests = BI.deepClone(this.requests); |
||||
this.requests = []; |
||||
BI.each(clonedRequests, function (i, options) { |
||||
BI.isFunction(self.callback) && self.callback(options); |
||||
}); |
||||
}, |
||||
|
||||
cancelAllRequests: function () { |
||||
this.toast.element.slideUp(500); |
||||
BI.each(this.requests, function (i, reqArgs) { |
||||
if (BI.isNotNull(reqArgs) && BI.isFunction(reqArgs.complete)) { |
||||
reqArgs.complete(); |
||||
} |
||||
}); |
||||
this.requests = []; |
||||
}, |
||||
|
||||
setCallback: function (callback) { |
||||
this.callback = callback; |
||||
}, |
||||
|
||||
addReq: function (options) { |
||||
var self = this; |
||||
if (this.requests.length === 0) { |
||||
setTimeout(function () { |
||||
if (self.requests.contains(options)) { |
||||
self.toast.element.slideDown(500); |
||||
} |
||||
}, 5 * 60 * 1000); //5 min
|
||||
} |
||||
this.requests.push(options); |
||||
}, |
||||
|
||||
removeReq: function (options) { |
||||
BI.remove(this.requests, options); |
||||
if (this.requests.length === 0) { |
||||
this.toast.element.slideUp(500); |
||||
} |
||||
}, |
||||
|
||||
hasReq: function (options) { |
||||
return this.requests.contains(options); |
||||
} |
||||
}); |
||||
$.shortcut("bi.timeout_toast", BI.TimeoutToast); |
@ -1,44 +0,0 @@
|
||||
/** |
||||
* Created by GUY on 2017/2/8. |
||||
* |
||||
* @class BI.BubblePopupBarView |
||||
* @extends BI.BubblePopupView |
||||
*/ |
||||
BI.BubblePopupBarView = BI.inherit(BI.BubblePopupView, { |
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.BubblePopupBarView.superclass._defaultConfig.apply(this, arguments), { |
||||
extraCls: "bi-bubble-bar-popup-view", |
||||
buttons: [{value: BI.i18nText(BI.i18nText("BI-Basic_Sure"))}, {value: BI.i18nText("BI-Basic_Cancel"), level: "ignore"}] |
||||
}) |
||||
}, |
||||
_init: function () { |
||||
BI.BubblePopupBarView.superclass._init.apply(this, arguments); |
||||
}, |
||||
_createToolBar: function () { |
||||
var o = this.options, self = this; |
||||
|
||||
var items = []; |
||||
BI.each(o.buttons.reverse(), function (i, buttonOpt) { |
||||
if(BI.isWidget(buttonOpt)){ |
||||
items.push(buttonOpt); |
||||
}else{ |
||||
items.push(BI.extend({ |
||||
type: 'bi.button', |
||||
height: 30, |
||||
handler: function (v) { |
||||
self.fireEvent(BI.BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, v); |
||||
} |
||||
}, buttonOpt)) |
||||
} |
||||
}); |
||||
return BI.createWidget({ |
||||
type: 'bi.right_vertical_adapt', |
||||
height: 40, |
||||
hgap: 10, |
||||
bgap: 10, |
||||
items: items |
||||
}); |
||||
} |
||||
}); |
||||
BI.BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON"; |
||||
$.shortcut("bi.bubble_bar_popup_view", BI.BubblePopupBarView); |
@ -1,242 +0,0 @@
|
||||
/** |
||||
* Created by Young's on 2016/8/30. |
||||
*/ |
||||
BI.LoginTimeOut = BI.inherit(BI.BarPopoverSection, { |
||||
_defaultConfig: function () { |
||||
return BI.extend(BI.LoginTimeOut.superclass._defaultConfig.apply(this, arguments), {}) |
||||
}, |
||||
|
||||
_init: function () { |
||||
BI.LoginTimeOut.superclass._init.apply(this, arguments); |
||||
}, |
||||
|
||||
rebuildNorth: function (north) { |
||||
BI.createWidget({ |
||||
type: "bi.label", |
||||
element: north, |
||||
text: BI.i18nText("BI-Login_Timeout"), |
||||
height: 50, |
||||
textAlign: "left" |
||||
}) |
||||
}, |
||||
|
||||
rebuildCenter: function (center) { |
||||
var self = this, o = this.options; |
||||
var userNameInput = BI.createWidget({ |
||||
type: "bi.editor", |
||||
watermark: BI.i18nText("BI-Username"), |
||||
cls: "login-input", |
||||
allowBlank: true, |
||||
width: 300, |
||||
height: 30 |
||||
}); |
||||
var userNameMask = BI.createWidget({ |
||||
type: "bi.text_button", |
||||
width: 330, |
||||
height: 56, |
||||
cls: "error-mask" |
||||
}); |
||||
userNameMask.setVisible(false); |
||||
userNameMask.on(BI.TextButton.EVENT_CHANGE, function () { |
||||
userNameInput.focus(); |
||||
this.element.fadeOut(); |
||||
}); |
||||
|
||||
var userNameWrapper = BI.createWidget({ |
||||
type: "bi.absolute", |
||||
cls: "input-wrapper login-username-icon", |
||||
items: [{ |
||||
el: { |
||||
type: "bi.icon", |
||||
width: 26, |
||||
height: 26 |
||||
}, |
||||
top: 10, |
||||
left: 0 |
||||
}, { |
||||
el: userNameInput, |
||||
top: 8, |
||||
left: 30 |
||||
}, { |
||||
el: userNameMask, |
||||
top: 0, |
||||
left: 0 |
||||
}], |
||||
width: 330, |
||||
height: 56 |
||||
}); |
||||
|
||||
|
||||
var passwordInput = BI.createWidget({ |
||||
type: "bi.editor", |
||||
inputType: "password", |
||||
cls: "login-input", |
||||
allowBlank: true, |
||||
watermark: BI.i18nText("BI-Basic_Password"), |
||||
width: 300, |
||||
height: 30 |
||||
}); |
||||
var passwordMask = BI.createWidget({ |
||||
type: "bi.text_button", |
||||
width: 330, |
||||
height: 56, |
||||
cls: "error-mask" |
||||
}); |
||||
passwordMask.setVisible(false); |
||||
passwordMask.on(BI.TextButton.EVENT_CHANGE, function () { |
||||
passwordInput.focus(); |
||||
this.element.fadeOut(); |
||||
}); |
||||
|
||||
var passwordWrapper = BI.createWidget({ |
||||
type: "bi.absolute", |
||||
cls: "input-wrapper login-password-icon", |
||||
items: [{ |
||||
el: { |
||||
type: "bi.icon", |
||||
width: 26, |
||||
height: 26 |
||||
}, |
||||
top: 10, |
||||
left: 0 |
||||
}, { |
||||
el: passwordInput, |
||||
top: 8, |
||||
left: 30 |
||||
}, { |
||||
el: passwordMask, |
||||
top: 0, |
||||
left: 0 |
||||
}], |
||||
width: 330, |
||||
height: 56 |
||||
}); |
||||
|
||||
var loginButton = BI.createWidget({ |
||||
type: "bi.text_button", |
||||
text: BI.i18nText("BI-Basic_Login"), |
||||
cls: "login-button", |
||||
width: 330, |
||||
height: 50 |
||||
}); |
||||
loginButton.on(BI.TextButton.EVENT_CHANGE, function () { |
||||
if (BI.isEmptyString(userNameInput.getValue())) { |
||||
self._showMes(userNameMask, BI.i18nText("BI-Username_Not_Null")); |
||||
return; |
||||
} |
||||
if (BI.isEmptyString(passwordInput.getValue())) { |
||||
self._showMes(passwordMask, BI.i18nText("BI-Password_Not_Null")); |
||||
return; |
||||
} |
||||
|
||||
//反正是登录直接用FR的登录了
|
||||
BI.ajax({ |
||||
url: BI.servletURL + '?op=fs_load&cmd=login', |
||||
data: BI.cjkEncodeDO({ |
||||
fr_username: encodeURIComponent(userNameInput.getValue()), |
||||
fr_password: encodeURIComponent(passwordInput.getValue()), |
||||
fr_remember: self.keepLoginState.isSelected() |
||||
}), |
||||
type: 'POST', |
||||
async: false, |
||||
error: function () { |
||||
BI.Msg.toast("Error!"); |
||||
}, |
||||
complete: function (res, status) { |
||||
if (BI.isEmptyString(res.responseText)) { |
||||
self._showMes(userNameMask, BI.i18nText("BI-Authentication_Failed")); |
||||
return; |
||||
} |
||||
var signResult = BI.jsonDecode(res.responseText); |
||||
if (signResult.fail) { |
||||
//用户名和密码不匹配
|
||||
self._showMes(userNameMask, BI.i18nText("BI-Username_Password_Not_Correct")); |
||||
} else if (signResult.url) { |
||||
self.fireEvent(BI.LoginTimeOut.EVENT_LOGIN); |
||||
} |
||||
} |
||||
}); |
||||
}); |
||||
|
||||
var logo; |
||||
if (BI.isNotNull(window.top.FS)) { |
||||
logo = window.top.FS.config.logoImageID4FS; |
||||
} |
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: center, |
||||
cls: "bi-login-timeout-center", |
||||
items: [{ |
||||
el: { |
||||
type: "bi.center_adapt", |
||||
items: [{ |
||||
type: "bi.img", |
||||
src: BI.servletURL + (logo ? |
||||
'?op=fr_attach&cmd=ah_image&id=' + logo + '&isAdjust=false' : |
||||
'?op=resource&resource=/com/fr/bi/web/images/login/bi_logo.png'), |
||||
width: 120, |
||||
height: 120 |
||||
}], |
||||
width: 200, |
||||
height: 300 |
||||
}, |
||||
left: 0, |
||||
top: 0 |
||||
}, { |
||||
el: userNameWrapper, |
||||
top: 30, |
||||
left: 230 |
||||
}, { |
||||
el: passwordWrapper, |
||||
top: 100, |
||||
left: 230 |
||||
}, { |
||||
el: loginButton, |
||||
top: 200, |
||||
left: 230 |
||||
}] |
||||
}); |
||||
}, |
||||
|
||||
_showMes: function (widget, mes) { |
||||
widget.setText(mes); |
||||
widget.element.fadeIn(); |
||||
setTimeout(function () { |
||||
if (widget.element.isVisible()) { |
||||
widget.element.fadeOut(); |
||||
} |
||||
}, 5000); |
||||
}, |
||||
|
||||
rebuildSouth: function (south) { |
||||
this.keepLoginState = BI.createWidget({ |
||||
type: "bi.checkbox", |
||||
width: 16, |
||||
height: 16 |
||||
}); |
||||
BI.createWidget({ |
||||
type: "bi.absolute", |
||||
element: south, |
||||
cls: "bi-login-timeout-south", |
||||
items: [{ |
||||
el: this.keepLoginState, |
||||
top: 0, |
||||
left: 230 |
||||
}, { |
||||
el: { |
||||
type: "bi.label", |
||||
text: BI.i18nText("BI-Keep_Login_State"), |
||||
cls: "keep-state", |
||||
height: 30 |
||||
}, |
||||
top: -7, |
||||
left: 260 |
||||
}] |
||||
}) |
||||
} |
||||
}); |
||||
BI.extend(BI.LoginTimeOut, { |
||||
POPOVER_ID: "___popover__id___" |
||||
}); |
||||
BI.LoginTimeOut.EVENT_LOGIN = "EVENT_LOGIN"; |
||||
$.shortcut("bi.login_timeout", BI.LoginTimeOut); |
@ -0,0 +1,495 @@
|
||||
/* |
||||
* zClip :: jQuery ZeroClipboard v1.1.1 |
||||
* http://steamdev.com/zclip
|
||||
* |
||||
* Copyright 2011, SteamDev |
||||
* Released under the MIT license. |
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* |
||||
* Date: Wed Jun 01, 2011 |
||||
*/ |
||||
|
||||
|
||||
(function ($) { |
||||
|
||||
$.fn.zclip = function (params) { |
||||
|
||||
if (typeof params == "object" && !params.length) { |
||||
|
||||
var settings = $.extend({ |
||||
|
||||
path: 'ZeroClipboard.swf', |
||||
copy: null, |
||||
beforeCopy: null, |
||||
afterCopy: null, |
||||
clickAfter: true, |
||||
setHandCursor: true, |
||||
setCSSEffects: true |
||||
|
||||
}, params); |
||||
|
||||
|
||||
return this.each(function () { |
||||
|
||||
var o = $(this); |
||||
|
||||
if (o.is(':visible') && (typeof settings.copy == 'string' || $.isFunction(settings.copy))) { |
||||
|
||||
ZeroClipboard.setMoviePath(settings.path); |
||||
var clip = new ZeroClipboard.Client(); |
||||
|
||||
if($.isFunction(settings.copy)){ |
||||
o.bind('zClip_copy',settings.copy); |
||||
} |
||||
if($.isFunction(settings.beforeCopy)){ |
||||
o.bind('zClip_beforeCopy',settings.beforeCopy); |
||||
} |
||||
if($.isFunction(settings.afterCopy)){ |
||||
o.bind('zClip_afterCopy',settings.afterCopy); |
||||
}
|
||||
|
||||
clip.setHandCursor(settings.setHandCursor); |
||||
clip.setCSSEffects(settings.setCSSEffects); |
||||
clip.addEventListener('mouseOver', function (client) { |
||||
o.trigger('mouseenter'); |
||||
}); |
||||
clip.addEventListener('mouseOut', function (client) { |
||||
o.trigger('mouseleave'); |
||||
}); |
||||
clip.addEventListener('mouseDown', function (client) { |
||||
|
||||
o.trigger('mousedown'); |
||||
|
||||
if(!$.isFunction(settings.copy)){ |
||||
clip.setText(settings.copy); |
||||
} else { |
||||
clip.setText(o.triggerHandler('zClip_copy')); |
||||
}
|
||||
|
||||
if ($.isFunction(settings.beforeCopy)) { |
||||
o.trigger('zClip_beforeCopy');
|
||||
} |
||||
|
||||
}); |
||||
|
||||
clip.addEventListener('complete', function (client, text) { |
||||
|
||||
if ($.isFunction(settings.afterCopy)) { |
||||
|
||||
o.trigger('zClip_afterCopy'); |
||||
|
||||
} else { |
||||
if (text.length > 500) { |
||||
text = text.substr(0, 500) + "...\n\n(" + (text.length - 500) + " characters not shown)"; |
||||
} |
||||
|
||||
o.removeClass('hover'); |
||||
alert("Copied text to clipboard:\n\n " + text); |
||||
} |
||||
|
||||
if (settings.clickAfter) { |
||||
o.trigger('click'); |
||||
} |
||||
|
||||
}); |
||||
|
||||
|
||||
clip.glue(o[0], o.parent()[0]); |
||||
|
||||
$(window).bind('load resize',function(){clip.reposition();}); |
||||
|
||||
|
||||
} |
||||
|
||||
}); |
||||
|
||||
} else if (typeof params == "string") { |
||||
|
||||
return this.each(function () { |
||||
|
||||
var o = $(this); |
||||
|
||||
params = params.toLowerCase(); |
||||
var zclipId = o.data('zclipId'); |
||||
var clipElm = $('#' + zclipId + '.zclip'); |
||||
|
||||
if (params == "remove") { |
||||
|
||||
clipElm.remove(); |
||||
o.removeClass('active hover'); |
||||
|
||||
} else if (params == "hide") { |
||||
|
||||
clipElm.hide(); |
||||
o.removeClass('active hover'); |
||||
|
||||
} else if (params == "show") { |
||||
|
||||
clipElm.show(); |
||||
|
||||
} |
||||
|
||||
}); |
||||
|
||||
} |
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
})(jQuery); |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// ZeroClipboard
|
||||
// Simple Set Clipboard System
|
||||
// Author: Joseph Huckaby
|
||||
var ZeroClipboard = { |
||||
|
||||
version: "1.0.7", |
||||
clients: {}, |
||||
// registered upload clients on page, indexed by id
|
||||
moviePath: 'ZeroClipboard.swf', |
||||
// URL to movie
|
||||
nextId: 1, |
||||
// ID of next movie
|
||||
$: function (thingy) { |
||||
// simple DOM lookup utility function
|
||||
if (typeof(thingy) == 'string') thingy = document.getElementById(thingy); |
||||
if (!thingy.addClass) { |
||||
// extend element with a few useful methods
|
||||
thingy.hide = function () { |
||||
this.style.display = 'none'; |
||||
}; |
||||
thingy.show = function () { |
||||
this.style.display = ''; |
||||
}; |
||||
thingy.addClass = function (name) { |
||||
this.removeClass(name); |
||||
this.className += ' ' + name; |
||||
}; |
||||
thingy.removeClass = function (name) { |
||||
var classes = this.className.split(/\s+/); |
||||
var idx = -1; |
||||
for (var k = 0; k < classes.length; k++) { |
||||
if (classes[k] == name) { |
||||
idx = k; |
||||
k = classes.length; |
||||
} |
||||
} |
||||
if (idx > -1) { |
||||
classes.splice(idx, 1); |
||||
this.className = classes.join(' '); |
||||
} |
||||
return this; |
||||
}; |
||||
thingy.hasClass = function (name) { |
||||
return !!this.className.match(new RegExp("\\s*" + name + "\\s*")); |
||||
}; |
||||
} |
||||
return thingy; |
||||
}, |
||||
|
||||
setMoviePath: function (path) { |
||||
// set path to ZeroClipboard.swf
|
||||
this.moviePath = path; |
||||
}, |
||||
|
||||
dispatch: function (id, eventName, args) { |
||||
// receive event from flash movie, send to client
|
||||
var client = this.clients[id]; |
||||
if (client) { |
||||
client.receiveEvent(eventName, args); |
||||
} |
||||
}, |
||||
|
||||
register: function (id, client) { |
||||
// register new client to receive events
|
||||
this.clients[id] = client; |
||||
}, |
||||
|
||||
getDOMObjectPosition: function (obj, stopObj) { |
||||
// get absolute coordinates for dom element
|
||||
var info = { |
||||
left: 0, |
||||
top: 0, |
||||
width: obj.width ? obj.width : obj.offsetWidth, |
||||
height: obj.height ? obj.height : obj.offsetHeight |
||||
}; |
||||
|
||||
if (obj && (obj != stopObj)) { |
||||
info.left += obj.offsetLeft; |
||||
info.top += obj.offsetTop; |
||||
} |
||||
|
||||
return info; |
||||
}, |
||||
|
||||
Client: function (elem) { |
||||
// constructor for new simple upload client
|
||||
this.handlers = {}; |
||||
|
||||
// unique ID
|
||||
this.id = ZeroClipboard.nextId++; |
||||
this.movieId = 'ZeroClipboardMovie_' + this.id; |
||||
|
||||
// register client with singleton to receive flash events
|
||||
ZeroClipboard.register(this.id, this); |
||||
|
||||
// create movie
|
||||
if (elem) this.glue(elem); |
||||
} |
||||
}; |
||||
|
||||
ZeroClipboard.Client.prototype = { |
||||
|
||||
id: 0, |
||||
// unique ID for us
|
||||
ready: false, |
||||
// whether movie is ready to receive events or not
|
||||
movie: null, |
||||
// reference to movie object
|
||||
clipText: '', |
||||
// text to copy to clipboard
|
||||
handCursorEnabled: true, |
||||
// whether to show hand cursor, or default pointer cursor
|
||||
cssEffects: true, |
||||
// enable CSS mouse effects on dom container
|
||||
handlers: null, |
||||
// user event handlers
|
||||
glue: function (elem, appendElem, stylesToAdd) { |
||||
// glue to DOM element
|
||||
// elem can be ID or actual DOM element object
|
||||
this.domElement = ZeroClipboard.$(elem); |
||||
|
||||
// float just above object, or zIndex 99 if dom element isn't set
|
||||
var zIndex = 99; |
||||
if (this.domElement.style.zIndex) { |
||||
zIndex = parseInt(this.domElement.style.zIndex, 10) + 1; |
||||
} |
||||
|
||||
if (typeof(appendElem) == 'string') { |
||||
appendElem = ZeroClipboard.$(appendElem); |
||||
} else if (typeof(appendElem) == 'undefined') { |
||||
appendElem = document.getElementsByTagName('body')[0]; |
||||
} |
||||
|
||||
// find X/Y position of domElement
|
||||
var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem); |
||||
|
||||
// create floating DIV above element
|
||||
this.div = document.createElement('div'); |
||||
this.div.className = "zclip"; |
||||
this.div.id = "zclip-" + this.movieId; |
||||
$(this.domElement).data('zclipId', 'zclip-' + this.movieId); |
||||
var style = this.div.style; |
||||
style.position = 'absolute'; |
||||
style.left = '' + box.left + 'px'; |
||||
style.top = '' + box.top + 'px'; |
||||
style.width = '' + box.width + 'px'; |
||||
style.height = '' + box.height + 'px'; |
||||
style.zIndex = zIndex; |
||||
|
||||
if (typeof(stylesToAdd) == 'object') { |
||||
for (addedStyle in stylesToAdd) { |
||||
style[addedStyle] = stylesToAdd[addedStyle]; |
||||
} |
||||
} |
||||
|
||||
// style.backgroundColor = '#f00'; // debug
|
||||
appendElem.appendChild(this.div); |
||||
|
||||
this.div.innerHTML = this.getHTML(box.width, box.height); |
||||
}, |
||||
|
||||
getHTML: function (width, height) { |
||||
// return HTML for movie
|
||||
var html = ''; |
||||
var flashvars = 'id=' + this.id + '&width=' + width + '&height=' + height; |
||||
|
||||
if (navigator.userAgent.match(/MSIE/)) { |
||||
// IE gets an OBJECT tag
|
||||
var protocol = location.href.match(/^https/i) ? 'https://' : 'http://'; |
||||
html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="' + protocol + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + width + '" height="' + height + '" id="' + this.movieId + '" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="' + ZeroClipboard.moviePath + '" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="' + flashvars + '"/><param name="wmode" value="transparent"/></object>'; |
||||
} else { |
||||
// all other browsers get an EMBED tag
|
||||
html += '<embed id="' + this.movieId + '" src="' + ZeroClipboard.moviePath + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="' + width + '" height="' + height + '" name="' + this.movieId + '" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + flashvars + '" wmode="transparent" />'; |
||||
} |
||||
return html; |
||||
}, |
||||
|
||||
hide: function () { |
||||
// temporarily hide floater offscreen
|
||||
if (this.div) { |
||||
this.div.style.left = '-2000px'; |
||||
} |
||||
}, |
||||
|
||||
show: function () { |
||||
// show ourselves after a call to hide()
|
||||
this.reposition(); |
||||
}, |
||||
|
||||
destroy: function () { |
||||
// destroy control and floater
|
||||
if (this.domElement && this.div) { |
||||
this.hide(); |
||||
this.div.innerHTML = ''; |
||||
|
||||
var body = document.getElementsByTagName('body')[0]; |
||||
try { |
||||
body.removeChild(this.div); |
||||
} catch (e) {; |
||||
} |
||||
|
||||
this.domElement = null; |
||||
this.div = null; |
||||
} |
||||
}, |
||||
|
||||
reposition: function (elem) { |
||||
// reposition our floating div, optionally to new container
|
||||
// warning: container CANNOT change size, only position
|
||||
if (elem) { |
||||
this.domElement = ZeroClipboard.$(elem); |
||||
if (!this.domElement) this.hide(); |
||||
} |
||||
|
||||
if (this.domElement && this.div) { |
||||
var box = ZeroClipboard.getDOMObjectPosition(this.domElement); |
||||
var style = this.div.style; |
||||
style.left = '' + box.left + 'px'; |
||||
style.top = '' + box.top + 'px'; |
||||
} |
||||
}, |
||||
|
||||
setText: function (newText) { |
||||
// set text to be copied to clipboard
|
||||
this.clipText = newText; |
||||
if (this.ready) { |
||||
this.movie.setText(newText); |
||||
} |
||||
}, |
||||
|
||||
addEventListener: function (eventName, func) { |
||||
// add user event listener for event
|
||||
// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
|
||||
eventName = eventName.toString().toLowerCase().replace(/^on/, ''); |
||||
if (!this.handlers[eventName]) { |
||||
this.handlers[eventName] = []; |
||||
} |
||||
this.handlers[eventName].push(func); |
||||
}, |
||||
|
||||
setHandCursor: function (enabled) { |
||||
// enable hand cursor (true), or default arrow cursor (false)
|
||||
this.handCursorEnabled = enabled; |
||||
if (this.ready) { |
||||
this.movie.setHandCursor(enabled); |
||||
} |
||||
}, |
||||
|
||||
setCSSEffects: function (enabled) { |
||||
// enable or disable CSS effects on DOM container
|
||||
this.cssEffects = !! enabled; |
||||
}, |
||||
|
||||
receiveEvent: function (eventName, args) { |
||||
// receive event from flash
|
||||
eventName = eventName.toString().toLowerCase().replace(/^on/, ''); |
||||
|
||||
// special behavior for certain events
|
||||
switch (eventName) { |
||||
case 'load': |
||||
// movie claims it is ready, but in IE this isn't always the case...
|
||||
// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
|
||||
this.movie = document.getElementById(this.movieId); |
||||
if (!this.movie) { |
||||
var self = this; |
||||
setTimeout(function () { |
||||
self.receiveEvent('load', null); |
||||
}, 1); |
||||
return; |
||||
} |
||||
|
||||
// firefox on pc needs a "kick" in order to set these in certain cases
|
||||
if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) { |
||||
var self = this; |
||||
setTimeout(function () { |
||||
self.receiveEvent('load', null); |
||||
}, 100); |
||||
this.ready = true; |
||||
return; |
||||
} |
||||
|
||||
this.ready = true; |
||||
try { |
||||
this.movie.setText(this.clipText); |
||||
} catch (e) {} |
||||
try { |
||||
this.movie.setHandCursor(this.handCursorEnabled); |
||||
} catch (e) {} |
||||
break; |
||||
|
||||
case 'mouseover': |
||||
if (this.domElement && this.cssEffects) { |
||||
this.domElement.addClass('hover'); |
||||
if (this.recoverActive) { |
||||
this.domElement.addClass('active'); |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
break; |
||||
|
||||
case 'mouseout': |
||||
if (this.domElement && this.cssEffects) { |
||||
this.recoverActive = false; |
||||
if (this.domElement.hasClass('active')) { |
||||
this.domElement.removeClass('active'); |
||||
this.recoverActive = true; |
||||
} |
||||
this.domElement.removeClass('hover'); |
||||
|
||||
} |
||||
break; |
||||
|
||||
case 'mousedown': |
||||
if (this.domElement && this.cssEffects) { |
||||
this.domElement.addClass('active'); |
||||
} |
||||
break; |
||||
|
||||
case 'mouseup': |
||||
if (this.domElement && this.cssEffects) { |
||||
this.domElement.removeClass('active'); |
||||
this.recoverActive = false; |
||||
} |
||||
break; |
||||
} // switch eventName
|
||||
if (this.handlers[eventName]) { |
||||
for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) { |
||||
var func = this.handlers[eventName][idx]; |
||||
|
||||
if (typeof(func) == 'function') { |
||||
// actual function reference
|
||||
func(this, args); |
||||
} else if ((typeof(func) == 'object') && (func.length == 2)) { |
||||
// PHP style object + method, i.e. [myObject, 'myMethod']
|
||||
func[0][func[1]](this, args); |
||||
} else if (typeof(func) == 'string') { |
||||
// name of function
|
||||
window[func](this, args); |
||||
} |
||||
} // foreach event handler defined
|
||||
} // user defined handler for event
|
||||
} |
||||
|
||||
};
|
||||
|
Loading…
Reference in new issue