diff --git a/JSD-9621-需求确认书.docx b/JSD-9621-需求确认书.docx
new file mode 100644
index 0000000..14da269
Binary files /dev/null and b/JSD-9621-需求确认书.docx differ
diff --git a/README.md b/README.md
index f43d9da..ab5d6ab 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,6 @@
# open-JSD-9621
-JSD-9621 顶部菜单主题
\ No newline at end of file
+JSD-9621 顶部菜单主题\
+免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\
+仅作为开发者学习参考使用!禁止用于任何商业用途!\
+为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。
\ No newline at end of file
diff --git a/plugin.xml b/plugin.xml
new file mode 100644
index 0000000..a89fc0d
--- /dev/null
+++ b/plugin.xml
@@ -0,0 +1,19 @@
+
+ com.eco.plugin.xxxx.theme.topMenu
+
+ yes
+ 1.0.7
+ 10.0
+ 2018-07-31
+ fr.open
+
+
+ com.fr.plugin.theme.topMenu
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/fr/plugin/theme/topMenu/bean/Theme.java b/src/main/java/com/fr/plugin/theme/topMenu/bean/Theme.java
new file mode 100644
index 0000000..e5f8640
--- /dev/null
+++ b/src/main/java/com/fr/plugin/theme/topMenu/bean/Theme.java
@@ -0,0 +1,36 @@
+package com.fr.plugin.theme.topMenu.bean;
+
+import com.fr.decision.fun.impl.AbstractThemeVariousProvider;
+import com.fr.decision.web.MainComponent;
+import com.fr.plugin.transform.FunctionRecorder;
+import com.fr.stable.fun.Authorize;
+import com.fr.web.struct.Atom;
+
+@Authorize(callSignKey = "com.eco.plugin.xxxx.theme.topMenu")
+@FunctionRecorder
+public class Theme extends AbstractThemeVariousProvider {
+ @Override
+ public String name() {
+ return "顶部菜单主题";
+ }
+
+ @Override
+ public String text() {
+ return "navigation";
+ }
+
+ @Override
+ public String coverPath() {
+ return "/com/fr/plugin/theme/topMenu/js/cover.png";
+ }
+
+ @Override
+ public Atom attach() {
+ return MainComponent.KEY;
+ }
+
+ @Override
+ public Atom client() {
+ return ThemeAtom.KEY;
+ }
+}
diff --git a/src/main/java/com/fr/plugin/theme/topMenu/bean/ThemeAtom.java b/src/main/java/com/fr/plugin/theme/topMenu/bean/ThemeAtom.java
new file mode 100644
index 0000000..fd8e8cf
--- /dev/null
+++ b/src/main/java/com/fr/plugin/theme/topMenu/bean/ThemeAtom.java
@@ -0,0 +1,42 @@
+package com.fr.plugin.theme.topMenu.bean;
+
+import com.fr.decision.config.AppearanceConfig;
+import com.fr.plugin.context.PluginContexts;
+import com.fr.web.struct.Component;
+import com.fr.web.struct.Filter;
+import com.fr.web.struct.browser.RequestClient;
+import com.fr.web.struct.category.ScriptPath;
+import com.fr.web.struct.category.StylePath;
+
+public class ThemeAtom extends Component {
+ public static final ThemeAtom KEY=new ThemeAtom();
+ @Override
+ public ScriptPath script(RequestClient requestClient) {
+ if (PluginContexts.currentContext().isAvailable()) {
+ return ScriptPath.build("/com/fr/plugin/theme/topMenu/js/navigation.theme.js");
+ } else {
+ return ScriptPath.EMPTY;
+ }
+ }
+
+ @Override
+ public StylePath style(RequestClient requestClient) {
+ if (PluginContexts.currentContext().isAvailable()) {
+ return StylePath.build("/com/fr/plugin/theme/topMenu/js/navigation.theme.css");
+ } else {
+ return StylePath.EMPTY;
+ }
+ }
+
+ @Override
+ public Filter filter() {
+ return new Filter() {
+ @Override
+ public boolean accept() {
+ System.out.println(AppearanceConfig.getInstance().getThemeId());
+ /*这边添加有一个过滤条件,只有切换使用了当前主题才引入这些js*/
+ return "com.eco.plugin.xxxx.theme.topMenu".equals(AppearanceConfig.getInstance().getThemeId());
+ }
+ };
+ }
+}
diff --git a/src/main/resources/com/fr/plugin/theme/topMenu/js/cover.png b/src/main/resources/com/fr/plugin/theme/topMenu/js/cover.png
new file mode 100644
index 0000000..cb8ac6c
Binary files /dev/null and b/src/main/resources/com/fr/plugin/theme/topMenu/js/cover.png differ
diff --git a/src/main/resources/com/fr/plugin/theme/topMenu/js/navigation.theme.css b/src/main/resources/com/fr/plugin/theme/topMenu/js/navigation.theme.css
new file mode 100644
index 0000000..b2f0302
--- /dev/null
+++ b/src/main/resources/com/fr/plugin/theme/topMenu/js/navigation.theme.css
@@ -0,0 +1,73 @@
+.plugin-first-item-unselect
+{
+ z-index:99;
+ color:white
+}
+
+div::-webkit-scrollbar{
+ -webkit-appearance: none;
+ width: 10px;
+ height: 20px;
+}
+
+#nav {
+ height:50px;
+ position:absolute;
+ overflow-x:auto;
+ z-index:99;
+}
+
+#buttonlist{
+ min-width:95%;
+ display:-webkit-flex;
+ display: flex;
+ flex-direction: row;
+ /*justify-content: space-around;*/
+ overflow-x:auto;
+}
+
+.buttion{
+ height:40px;
+ width:100px;
+ background-color: rgb(44,61,89);
+ border:0 solid;
+ color:white;
+ overflow:hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.buttion:hover{
+ background-color: rgb(54,135,245) !important;
+ /*background-color: rgb(235,242,254) !important;*/
+}
+
+.menuli:hover{
+ background-color: rgb(235,242,254) !important;
+}
+
+.liDiv{
+ width:150px;
+ /*background-color:rgb(50,150,245);*/
+ background-color:rgb(245,247,254);
+ position:absolute;
+ z-index:99;
+}
+
+.div1{
+ width:150px;
+ height:30px;
+ cursor: pointer;
+}
+
+.div1:hover{
+ background-color: rgb(235,242,254) !important;
+}
+
+
+.menuli{
+ font-size:15px;
+ margin-top:5px;
+ font-weight:bold;
+}
+
diff --git a/src/main/resources/com/fr/plugin/theme/topMenu/js/navigation.theme.js b/src/main/resources/com/fr/plugin/theme/topMenu/js/navigation.theme.js
new file mode 100644
index 0000000..487bb7c
--- /dev/null
+++ b/src/main/resources/com/fr/plugin/theme/topMenu/js/navigation.theme.js
@@ -0,0 +1,895 @@
+var treeobj = {};
+var rootid = "";
+var menulist = [];
+var classic = {};
+var bodya = {};
+var zdy = true;
+//取消选中样式
+function cancelSelect(){
+ $.each(menulist,function(index,item){
+ this.element.css({"color":"white","font-weight":"normal","font-size":"13px"});
+ })
+}
+
+//是否有管理菜单
+function hasManagement(){
+ var array = BI.Constants.getConstant("dec.constant.menu.items");
+ var hasManagement2 = false;
+
+ $.each(array,function(index,item){
+ if(item.value == "management"){
+ hasManagement2 = true;
+ }
+ })
+
+ return hasManagement2;
+}
+
+/**
+ * 打开第一个模板
+ * @param rootid
+ */
+function openFirstTmp(root){
+ if(root.entryType == 5 || root.entryType == 102){
+ openTemplate(root);
+ return true;
+ }
+
+ var findTemp = false;
+
+ var menuid = root.id;
+ var menus = getWorkbenchSubDirectoryByPId(menuid);
+
+ if(menus != null && menus != undefined && menus.length > 0){
+ for(var i=0;i
+var e = BI.inherit(BI.Widget, {
+ props: {
+ baseCls: "bi-card dec-frame-header",
+ $testId: "dec-frame-header",
+ height: 40
+ },
+ _store: function () {
+ return BI.Models.getModel("dec.model.frame.header")
+ },
+ watch: {
+ platformTitle: function (e) {
+ this.title.setText(e)
+ },
+ headerType: function () {
+ this.logoContainer.populate(this._assertLogo()),
+ this._resizeWrapper()
+ },
+ headerLogoAttachUrl: function (e) {
+ this.logoImg.setSrc(e)
+ }
+ },
+ render: function () {
+ var t = this,
+ e = BI.Constants.getConstant("dec.constant.header.items");
+ t.combo = [];
+ var rootMenue = getWorkbenchSubDirectoryByPId(DecCst.DIRECTORY_TREE_ROOT_ID);
+ var items2 = [];
+ var index = {
+ type: "bi.text_button",
+ text: "首页",
+ height: 30,
+ css:{"color":"white","font-size":"13px"},
+ ref: function(_ref) {
+ menulist.push(_ref) ;
+ },
+ handler: function () {
+ if(!zdy){
+ zdy = true;
+ bodya.reset();
+ }
+
+ cancelSelect();
+ this.element.css({"color":"white","font-weight":"900","font-size":"15px"});
+ BI.Models.getModel("dec.model.menu").selectMenu("directory");
+ window.parent.BI.Services.getService("dec.service.frame.tab_pane").showTab("dec-tabs-homapage");
+ }
+ };
+
+ items2.push(index);
+ $.each(rootMenue,function(index,item){
+ var text = item.text;
+
+ var rootMenuObj ={
+ type: "bi.text_button",
+ text: text,
+ height: 30,
+ css:{"color":"white"},
+ ref: function(_ref) {
+ menulist.push(_ref) ;
+ },
+ handler: function () {
+ if(zdy){
+ zdy = false;
+ bodya.reset();
+ }
+
+ cancelSelect();
+ this.element.css({"color":"white","font-weight":"900","font-size":"15px"});
+ rootid = item.id;
+ BI.Models.getModel("dec.model.menu").selectMenu("directory");
+
+ if(typeof treeobj.reset == 'function'){
+ treeobj.reset();
+ }
+
+ openFirstTmp(item);
+ }
+ }
+
+ var isParent = item.isParent;
+ if(!isParent){
+ rootMenuObj ={
+ type: "bi.text_button",
+ text: text,
+ height: 30,
+ css:{"color":"white","font-size":"13px"},
+ ref: function(_ref) {
+ menulist.push(_ref) ;
+ },
+ handler: function () {
+ if(zdy){
+ zdy = false;
+ bodya.reset();
+ }
+ cancelSelect();
+ this.element.css({"color":"white","font-weight":"900","font-size":"15px"});
+ BI.Models.getModel("dec.model.menu").selectMenu("directory");
+ openTemplate(item);
+ }
+ }
+ }
+
+ items2.push(rootMenuObj)
+ });
+
+ if(hasManagement()){
+ //管理系统
+ var manageMentCombo ={
+ type: "bi.text_button",
+ text: "系统管理",
+ height: 30,
+ css:{"color":"white","font-size":"13px"},
+ ref: function(_ref) {
+ menulist.push(_ref) ;
+ },
+ handler: function () {
+ if(zdy){
+ zdy = false;
+ bodya.reset();
+ }
+ cancelSelect();
+ this.element.css({"color":"white","font-weight":"900","font-size":"15px"});
+ BI.Models.getModel("dec.model.menu").selectMenu("management");
+ }
+ }
+
+ items2.push(manageMentCombo);
+ }
+
+
+ var menue ={
+ type: "bi.vertical_adapt",
+ width:1200,
+ height:40,
+ scrollx:true,
+ lgap:40,
+ items: items2
+ };
+
+ var label = {
+ type:"bi.label",
+ text:'111'
+ }
+
+ //decision及图标
+ var title = {
+ type: "bi.button_group",
+ items: this._assertLogo(),
+ layouts: [{
+ type: "bi.vertical_adapt"
+ }
+ ],
+ ref: function (e) {
+ t.logoContainer = e
+ }
+ };
+
+ //左边title+菜单
+ var headerLeft = {
+ el:{
+ type: "bi.vertical",
+
+ items: [{
+ type: "bi.vertical_adapt",
+ items: [title,menue]
+ }],
+ },
+ top: 0,
+ bottom: 0,
+ left: 0
+ }
+
+ //用户信息
+ var account ={
+ el: {
+ type: "bi.right_vertical_adapt",
+ items: BI.createItems(e, {}, {
+ rgap: 15
+ })
+ },
+ top: 100,
+ bottom: 0,
+ right: 0
+ };
+
+ //获取屏幕宽度
+ var width = document.documentElement.clientWidth || document.body.clientWidth;
+
+ return {
+ type: "bi.absolute",
+ ref: function (e) {
+ t.headWrapper = e
+ },
+ items:[{
+ el:{
+ type: "bi.horizontal_fill",
+ columnSize: ["fill", ""],
+ items:[headerLeft,account],
+ width:width,
+ },
+ top: 0,
+ bottom: 0,
+ right: 0
+ }]
+ }
+ },
+ created: function () {
+ BI.Services.getService("dec.service.main").registerGlobalComponent("Header", this)
+ },
+ _assertLogo: function () {
+ var t = this,
+ e = BI.Providers.getProvider("dec.provider.frame.header").getLogoConfig(),
+ e = this.model.headerType === DecCst.PlatformStyle.HeaderType.INTEGRATED ? {
+ el: {
+ type: "bi.img",
+ $testId: "dec-header-logo",
+ src: this.model.headerLogoAttachUrl,
+ height: e.imgHeight,
+ width: "auto",
+ ref: function (e) {
+ t.logoImg = e
+ }
+ },
+ hgap: 25
+ }
+ : BI.extend({
+ type: "dec.logo.img.button",
+ cls: "dec-pane dec-frame-panel",
+ ref: function (e) {
+ t.logoImg = e
+ },
+ src: this.model.headerLogoAttachUrl,
+ width: 70,
+ height: 40
+ }, e);
+ return [e, {
+ type: "bi.label",
+ $testId: "dec-header-platform-title",
+ ref: function (e) {
+ t.title = e
+ },
+ textAlign: "left",
+ height: 40,
+ lgap: this.model.headerType === DecCst.PlatformStyle.HeaderType.INTEGRATED ? 0 : 15,
+ cls: "dec-banner dec-frame-text",
+ text: this.model.platformTitle
+ }
+ ]
+ },
+ _resizeWrapper: function () {
+ this.headWrapper.attr("items")[1].left = 1 === this.model.headerType ? 70 : 50,
+ this.headWrapper.resize()
+ }
+});
+BI.shortcut("dec.header", e);
+
+var e = BI.inherit(BI.Widget, {
+ props: {
+ baseCls: ""
+ },
+ _store: function () {
+ return BI.Models.getModel("dec.model.frame.classic.aside.entry_tree_wink")
+ },
+ watch: {
+ selectedId: function () {
+ this.tree.setValue(this.model.selectedId)
+ },
+ entries: function () {
+ this.populate()
+ }
+ },
+ beforeInit: function (e) {
+ this.store.initEntryTrees(e)
+ },
+ render: function () {
+ var n = this;
+ this.options;
+ return {
+ type: "dec.common.scroll_view",
+ ref: function(_ref) {
+ treeobj = _ref;
+ },
+ content: {
+ el: {
+ type: "bi.vertical",
+ items: [{
+ type: "bi.custom_tree",
+ ref: function (e) {
+ n.tree = e
+ },
+ expander: {
+ el: {},
+ popup: {
+ type: "bi.custom_tree"
+ }
+ },
+ items: this.model.items,
+ el: {
+ type: "bi.loader",
+ next: !1,
+ isDefaultInit: !0,
+ el: {
+ type: "bi.button_tree",
+ chooseType: 0,
+ layouts: [{
+ type: "bi.vertical"
+ }
+ ]
+ }
+ },
+ itemsCreator: function (e, t) {
+ e.node ? n.store.getSubItemsByPId(e.node.id, e.node.layer + 1, function (e) {
+ t(e)
+ }) : n.store.initRootNodes(function (e) {
+ t(e)
+ })
+ },
+ listeners: [{
+ eventName: BI.Controller.EVENT_CHANGE,
+ action: function (e, t, i) {
+ e === BI.Events.EXPAND && n.store.expandNode(i.getValue()),
+ e === BI.Events.COLLAPSE && n.store.collapseNode(i.getValue()),
+ e === BI.Events.CLICK && n.store.openTab(t)
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ populate: function () {
+ this.tree.populate()
+ }
+});
+BI.shortcut("dec.frame.classic.aside.entry_tree_wink", e);
+
+var e = BI.inherit(Fix.Model, {
+ init: function () {
+ this.openStateMap = {}
+ },
+ state: function () {
+ return {
+ openRoot: null
+ }
+ },
+ context: ["isPin", "favorites", "entries", "selectedId", "loading"],
+ computed: {
+ selectedMenu: function () {
+ return Dec.globleModel.selectedMenu
+ }
+ },
+ watch: {
+ selectedMenu: function (e) {
+ "directory" === e && this.initEntryTrees(BI.emptyFn)
+ }
+ },
+ actions: {
+ initEntryTrees: function (t) {
+ var i = this;
+ this.toggleLoading(!0),
+ Dec.Utils.getFavoritesList(function (e) {
+ i.model.favorites = BI.Services.getService("dec.service.frame.entry").normalizeEntries(e.data, !1)
+ }),
+ Dec.Utils.getCompleteDirectoryTree(function (e) {
+ i.model.entries = BI.Services.getService("dec.service.frame.entry").normalizeEntries(e.data),
+ i.toggleLoading(!1),
+ t()
+ })
+ },
+ openTab: function (i) {
+ var e = BI.find(this.model.entries, function (e, t) {
+ return t && t.id === i
+ });
+ this.model.selectedId = i,
+ BI.Providers.getProvider("dec.provider.tab_pane").behaviour("addCardByName", e.id, {
+ text: e.text,
+ value: e.id,
+ entry: !0,
+ entryDetails: e,
+ cardType: {
+ src: e.iframeSrc
+ }
+ })
+ },
+ initRootNodes: function (e) {
+ if(rootid != ""){
+ this.getSubItemsByPId(rootid, 0, e)
+ }
+ },
+ getSubItemsByPId: function (e, t, i) {
+ e = this._getSubItemsByPId(e);
+ i(this._formatItems(e, t))
+ },
+ expandNode: function (e) {
+ this.openStateMap[e] = !0
+ },
+ collapseNode: function (e) {
+ this.openStateMap[e] = !1
+ },
+ toggleLoading: function (e) {
+ this.model.loading = e
+ }
+ },
+ _formatItems: function (e, n) {
+ var o = this,
+ e = BI.deepClone(e);
+ return BI.each(e, function (e, t) {
+ var i = {
+ layer: n,
+ $value: n + "-" + t.text,
+ height: DecCst.Entry_Node_Size.HEIGHT
+ };
+ BI.isNotNull(o.openStateMap[t.id]) && (i.open = !!o.openStateMap[t.id]),
+ !0 === t.isParent ? (i.type = "dec.common.img.icon_text_node", i.cls = "dec-frame-platform-list-item dec-font-size-14") : (i.type = "dec.common.img.icon_text_item", i.cls = "dec-frame-platform-list-item-active dec-font-size-14", t.selected = t.id === o.model.selectedId),
+ BI.extend(t, i)
+ }),
+ e
+ },
+ _getSubItemsByPId: function (i) {
+ var e = BI.filter(this.model.entries, function (e, t) {
+ return t.pId === i
+ });
+ return BI.sortBy(e, "sortIndex")
+ }
+});
+BI.model("dec.model.frame.classic.aside.entry_tree_wink", e);
+
+BI.constant("dec.constant.workbench.panel.tabs", [{
+ value: "directory",
+ title: BI.i18nText("Dec-Directory"),
+ cls: "directory-font",
+ cardType: "dec.frame.classic.aside.entry_tree_wink"
+}, {
+ value: "favorite",
+ title: BI.i18nText("Dec-Basic_Favorite"),
+ cls: "favorite-font",
+ cardType: "dec.frame.classic.aside.favorite_list"
+}
+])
+
+//获取树列表同步方式
+function getWorkbenchSubDirectoryByPId(pId)
+{
+ var result = [];
+ var token = getToken();
+
+ $.ajax({
+ type:'GET',
+ async:false,
+ url:Dec.fineServletURL+"/v10/" + pId + "/entries",
+ beforeSend: function (XMLHttpRequest) {
+ XMLHttpRequest.setRequestHeader("Authorization","Bearer "+token );
+ },
+ success:function(data)
+ {
+ if(data.data != null)
+ {
+ result = data.data;
+ }
+ }
+ })
+
+ return result;
+}
+
+//获取token
+function getToken(){
+ var strcookie = document.cookie;//获取cookie字符串
+ var arrcookie = strcookie.split("; ");//分割
+ //遍历匹配
+ for ( var i = 0; i < arrcookie.length; i++) {
+ var arr = arrcookie[i].split("=");
+ if (arr[0] == "fine_auth_token"){
+ return arr[1];
+ }
+ }
+ return "";
+}
+
+
+
+//模板打开方法
+function openTemplate(item){
+ var src = Dec.fineServletURL+"/v10/entry/access/"+item.id;
+
+ if(item.entryType == 5){
+ src = item.path;
+ }
+ BI.Providers.getProvider("dec.provider.tab_pane").behaviour("addCardByName", item.id, {
+ text: item.text,
+ value: item.id,
+ entry: !0,
+ cardType: {
+ src: src
+ }
+ })
+
+};
+
+
+BI.provider("dec.provider.layout", function () {
+ var i = function (e) {
+ return {
+ type: "bi.absolute",
+ items: [{
+ el: {
+ type: "bi.absolute",
+ items: [{
+ el: {
+ type: "dec.body"
+ },
+ top: 0,
+ bottom: 0,
+ right: 0,
+ left: 0
+ }
+ ]
+ },
+ top: e.north.invisible ? 0 : e.north.height,
+ left: 0,
+ right: 0,
+ bottom: 0
+ }, {
+ el: {
+ type: "dec.header",
+ height: e.north.height,
+ invisible: e.north.invisible
+ },
+ height: e.north.height,
+ top: 0,
+ left: 0,
+ right: 0
+ }
+ ]
+ }
+ };
+ this.inject = function (t) {
+ (t = t || {}).layoutConfig && BI.config("dec.constant.config", function (e) {
+ return BI.extend(e.config4Frame, t.layoutConfig),
+ e
+ }),
+ t.layoutStrategy && (i = t.layoutStrategy)
+ },
+ this.setConfig = function (e) {
+ i = function () {
+ return e
+ }
+ },
+ this.$get = function () {
+ return function () {
+ this.getLayoutStrategy = function () {
+ var e = BI.Constants.getConstant("dec.constant.config").config4Frame;
+ return BI.isFunction(i) ? i(e) : i
+ },
+ this.getLayoutConfig = function () {
+ return BI.Constants.getConstant("dec.constant.config")
+ }
+ }
+ }
+});
+var inithome = false;
+var e = BI.inherit(BI.Widget, {
+ props: {
+ baseCls: "dec-frame-classic dec-frame-popover",
+ $testId: "dec-frame-classic"
+ },
+ _store: function () {
+ return BI.Models.getModel("dec.model.frame.classic")
+ },
+ watch: {
+ isPin: function (e) {
+ this.resizer.setResizeable(e)
+ }
+ },
+ created: function () {
+ BI.Providers.getProvider("dec.provider.frame.classic").registerEntryPaneInstance(this)
+ },
+ mounted: function () {
+ if(!inithome){
+ this.store.initHomepage()
+ inithome = true;
+ }
+ },
+ render: function () {
+ var i = this,
+ e = BI.get(BI.Providers.getProvider("dec.provider.layout").getLayoutConfig(), "config4Frame.center");
+ return {
+ type: "dec.common.drag_resize",
+ ref: function (e) {
+ // bodya = e;
+ i.resizer = e
+ },
+ resizeable: this.model.isPin,
+ open: this.model.isPin,
+ leftWidth: zdy ? 15 : (e.left.width || 240),
+ maxSize: e.left.maxSize,
+ minSize: e.left.minSize,
+ content: BI.Providers.getProvider("dec.provider.tab_pane").getTabPaneComponent({
+ ref: function (e) {
+ i.container = e
+ },
+ listeners: [{
+ eventName: "EVENT_SHOW",
+ action: function (e) {
+ i.store.handleTabChange(e)
+ }
+ }, {
+ eventName: "EVENT_CLOSE",
+ action: function (e, t) {
+ i.store.handleTabClose(e, t)
+ }
+ }
+ ]
+ }),
+ popup: {
+ type: "dec.frame.classic.aside",
+ pinedPane: this.model.isPin,
+ cls: this.model.isPin ? "pined" : "un-pined"
+ }
+ }
+ },
+ keepalive: function () {
+ return !0
+ }
+});
+BI.shortcut("dec.frame.classic", e);
+
+var e = BI.inherit(BI.Widget, {
+ props: {
+ baseCls: "dec-frame-body"
+ },
+ _store: function () {
+ return BI.Models.getModel("dec.model.body")
+ },
+ watch: {
+ showCard: function (e) {
+ var t = BI.Providers.getProvider("dec.provider.router").checkHashAuthority();
+ this.tab.setSelect(t ? e : "ERROR_TAB")
+ }
+ },
+ render: function () {
+ var t = this;
+ return {
+ type: "bi.absolute",
+ ref: function (e) {
+ bodya = e;
+ t.tab = e;
+ },
+ items: [{
+ el: {
+ type: "bi.layout",
+ cls: "dec-frame-body-top-shadow",
+ height: 100,
+ invisible: BI.isIE() && BI.getIEVersion() < 11
+ },
+ top: 0,
+ left: 0,
+ right: 0
+ }, {
+ el: {
+ type: "dec.component.tabs",
+ ref: function (e) {
+ t.tab = e
+ },
+ layout: {
+ type: "bi.vertical",
+ scrolly: !1
+ },
+ single: !0,
+ showIndex: this.model.showCard,
+ cardCreator: BI.bind(this.store.createCard, this)
+ },
+ top: 0,
+ left: 0,
+ right: 0,
+ bottom: 0
+ }
+ ]
+ }
+ },
+ created: function () {
+ BI.Services.getService("dec.service.main").registerGlobalComponent("Body", this)
+ }
+});
+BI.shortcut("dec.body", e);
+
+var e = BI.inherit(BI.Pane, {
+ props: {
+ baseCls: "dec-frame-classic-aside dec-frame-popover bi-border-right dec-frame-split-border",
+ $testId: "dec-frame-classic-aside",
+ pinedPane: !1
+ },
+ _store: function () {
+ return BI.Models.getModel("dec.model.frame.classic.aside")
+ },
+ watch: {
+ activeNav: function (e) {
+ this.tab.setSelect(e)
+ },
+ isSearching: function (e) {
+ this.searcher.setValue(""),
+ this.searcher.setVisible(e),
+ this.navs.setVisible(!e),
+ e && this.searcher.focus()
+ },
+ isPin: function (e) {
+ this.pinIcon.setIcon(e ? "unpin-font" : "pin-font"),
+ e ? (this.element.addClass("pined").removeClass("un-pined"), this.element.addClass("bi-border-right")) : (this.element.removeClass("pined").addClass("un-pined"), this.element.removeClass("bi-border-right"))
+ },
+ loading: function () {
+ this.model.loading ? this.loading() : this.loaded()
+ }
+ },
+ mounted: function () {
+ BI.Services.getService("dec.service.style.configure").watchStyle(this)
+ },
+ render: function () {
+ var i = this,
+ e = this.options,
+ t = BI.get(BI.Constants.getConstant("dec.constant.config"), "config4EntryPane.pinable");
+ this.model.isPin ? this.element.addClass("bi-border-right") : this.element.removeClass("bi-border-right");
+ var n = {
+ type: "dec.closeable.editor",
+ ref: function (e) {
+ i.searcher = e
+ },
+ invisible: !0,
+ cls: "bi-border",
+ iconCls: "dec-frame-popover",
+ height: 22,
+ watermark: BI.i18nText("BI-Basic_Search"),
+ listeners: [{
+ eventName: "EVENT_CHANGE",
+ action: function () {
+ i.store.doSearch(this.getValue())
+ }
+ }, {
+ eventName: "EVENT_CLEAR",
+ action: function () {
+ i.store.stopSearch()
+ }
+ }
+ ]
+ };
+ return {
+ type: "bi.absolute",
+ scrollable: !1,
+ items: [{
+ el: {
+ type: "bi.button_group",
+ ref: function (e) {
+ i.navs = e
+ },
+ height: 30,
+ cls: "pane-tabs-button-wrapper dec-frame-classic-nav",
+ layouts: [{
+ type: "bi.vertical_adapt"
+ }
+ ],
+ items: this.model.tabs,
+ value: this.model.activeNav,
+ listeners: [{
+ eventName: BI.Controller.EVENT_CHANGE,
+ action: function (e, t) {
+ i.store.selectNav(t)
+ }
+ }
+ ]
+ },
+ top: 15,
+ left: 15
+ }, {
+ el: {
+ type: "bi.icon_change_button",
+ $testId: "dec-icon-change-btn",
+ $value: "pin",
+ ref: function (e) {
+ i.pinIcon = e
+ },
+ width: 24,
+ height: 24,
+ invisible: !t,
+ iconCls: e.pinedPane ? "unpin-font" : "pin-font",
+ cls: "dec-frame-text",
+ title: function () {
+ return i.model.isPin ? BI.i18nText("Dec-Cancel_Pin_Panel") : BI.i18nText("Dec-Pin_Panel")
+ },
+ handler: function () {
+ i.store.pinPane()
+ }
+ },
+ top: 18,
+ right: 15
+ }, {
+ el: {
+ type: "bi.icon_button",
+ $value: "search",
+ cls: "platform-search-font platform-slide-pane-icon dec-frame-text",
+ width: 24,
+ height: 24,
+ ref: function (e) {
+ i.searchBtn = e
+ },
+ handler: function () {
+ i.store.startSearch()
+ }
+ },
+ top: 18,
+ right: 45
+ }, {
+ el: n,
+ top: 18,
+ left: 10,
+ right: 45
+ }, {
+ el: {
+ type: "bi.tab",
+ ref: function () {
+ i.tab = this
+ },
+ single: !1,
+ showIndex: this.model.activeNav,
+ cardCreator: BI.bind(this.store.createTab, this.store)
+ },
+ top: 60,
+ bottom: 0,
+ left: 0,
+ right: 0
+ }
+ ]
+ }
+ },
+ created: function () {
+ BI.Services.getService("dec.service.main").registerGlobalComponent("WorkbenchPanel", this)
+ }
+});
+BI.shortcut("dec.frame.classic.aside", e);
+