1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657 |
- var app = angular.module('webAppDesign', [])
- .run(['$rootScope', '$lrfnRequest', '$lrmDesigner', function ($rootScope, $lrfnRequest, $lrmDesigner) {
- $rootScope.windowWidth = $lrfnRequest("windowWidth");
- $rootScope.windowHeight = $lrfnRequest("windowHeight") - 41;
- var _projectId = $lrfnRequest("projectId");
- $rootScope.designer = $lrmDesigner.init(_projectId);
- }])
- .controller('lrAppCtrl', ['$rootScope', '$scope', '$lrGetIframe', function ($rootScope, $scope, $lrGetIframe) {
- $scope.pageTemplates = $rootScope.designer.templates.getPageTemps();
- $scope.addPage = $rootScope.designer.addPage;
- $scope.btnSaveProject = $rootScope.designer.saveProject;
- //$scope.isTabsAdded = true;
- //加载完成开始初始化
- $rootScope.$on('iframeLoaded', function (event) {
- $rootScope.designer.vm.isBeginView = true;
- $lrGetIframe('phoneDIndex').doBroadcast('init', $rootScope.designer.currentPage);
- $scope.$apply();
- });
- }])
- //用来设置窗口大小
- .controller('lrAppMidbarCtrl', ['$scope', '$rootScope', function ($scope, $rootScope) {
- var phoneHeight = 765.284, phoneWidth = 387.578;
- var iframeH = 568, iframeW = 320, iframeMT = 84.9764;
- $scope.phoneScale = '1';
- $scope.phoneHeight = phoneHeight + 'px';
- $scope.phoneWidth = +phoneWidth + 'px';
- $scope.phoneIframeH = iframeH + 'px';
- $scope.phoneIframeW = iframeW + 'px';
- $scope.phoneIframeMT = iframeMT + 'px';
- $scope.marginTop = (($rootScope.windowHeight - phoneHeight - 82) / 2 > 0 ? ($rootScope.windowHeight - phoneHeight - 82) / 2 : 0) + "px";
- $scope.changePhoneScale = function () {
- var _height = parseFloat($scope.phoneScale) * phoneHeight;
- $scope.phoneHeight = _height + 'px';
- $scope.phoneWidth = parseFloat($scope.phoneScale) * phoneWidth + 'px';
- $scope.marginTop = (($rootScope.windowHeight - _height - 82) / 2 > 0 ? ($rootScope.windowHeight - _height - 82) / 2 : 0) + "px";
- $scope.phoneIframeH = parseFloat($scope.phoneScale) * iframeH + 'px';
- $scope.phoneIframeW = parseFloat($scope.phoneScale) * iframeW + 'px';
- $scope.phoneIframeMT = parseFloat($scope.phoneScale) * iframeMT + 'px';
- };
- }])
- /*扩展标签属性*/
- .directive("lrappComponents", ["$rootScope", "$lrmComponents", function ($rootScope, $lrmComponents) {
- return {
- restrict: "E",
- replace: true,
- template: '<div ng-repeat="component in $root.componentGroups" class="lr-item-row lr-component" data-value="{{component.id}}"><i class="fa {{component.icon}}"></i>{{component.text}}</div>',
- link: function (scope, element, attr) {
- $rootScope.componentGroups = $lrmComponents.all();
- }
- }
- }])
- .directive("lrappPagetree", ["$rootScope", function ($rootScope) {
- return {
- restrict: "E",
- require: '?ngModel',
- replace: true,
- template: '<div></div>',
- link: function (scope, element, attr, ngModel) {
- if (!ngModel)
- {
- return;
- }
- ngModel.$render = function () {
- ngModel.$viewValue(element);
- }
- }
- }
- }])
- .directive('lrappBox', function () {
- return {
- restrict: 'E',
- replace: true,
- transclude: true,
- template:
- '<div class="lr-box expanded">' +
- '<h4 class="lr-box-toggle"></h4>' +
- '<div class="lr-box-content" ng-transclude></div>' +
- '</div>',
- link: function (scope, element, attr) {
- var toggle = element.find('.lr-box-toggle');
- element.find('h4').html('<span class="caret"></span>' + attr.name);
- toggle.on('click', function () {
- if (element.is('.expanded')) {
- element.removeClass('expanded');
- }
- else {
- element.addClass('expanded');
- }
- });
- }
- };
- })
- .directive("lrappToggleb", ["$rootScope", function (e) {
- return {
- restrict: "E",
- require: '?ngModel',
- template: '<span class="left-text"></span><div class="track"><div class="handle"></div></div><span class="right-text" ></span>',
- link: function (scope, element, attr, ngModel) {
- ngModel.$render = function () {
- if (ngModel.$viewValue) {
- element.addClass("active");
- }
- };
- element.on("click", function () {
- scope.$apply(cgValue);
- });
- function cgValue() {
- element.addClass("animate");
- var flag = element.is(".active");
- if (flag) {
- element.removeClass("active");
- }
- else {
- element.addClass("active");
- }
- ngModel.$setViewValue(!flag);
- }
- }
- }
- }])
- .directive('lrappColorPicker', function () {
- return {
- restrict: "E",
- replace: true,
- template: '<div class="input-append color" data-form="colorpicker" data-color="#ffffff" data-color-format="hex">' +
- '<span class="add-on"><i style="background-color: #ffffff"></i></span>' +
- '<input type="text" value="#ffffff" />' +
- '</div>',
- link: function (scope, element, attr) {
- if (attr.value) {
- attr.color = attr.value;
- element.find('i').css('background-color', attr.value);
- element.find('input').val(attr.value);
- }
- element.colorpicker();
- }
- }
- })
- /*数据模型*/
- .factory('$lrmComponents', ['$rootScope', function ($rootScope) {//组件类型
- var _doRemove = function (data) {
- var components = $rootScope.designer.currentPage.ChildNodes;
- components.splice(components.indexOf(data), 1);
- $rootScope.designer.templates.fnPageTree.refresh();
- $rootScope.designer.currentPage = $rootScope.designer.templates.getHasTemps()[0];
- $rootScope.designer.currentFocus = $rootScope.designer.templates.getHasTemps()[0];
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgSelectTemplatePage, { "cmd": "removeComponent", object: $rootScope.designer.templates.getHasTemps()[0] });
- $.webappDesigner.attributes($rootScope.designer);
- }
- var components = [
- {
- id: "lrHeader",
- text: "标题",
- icon: "fa-header",
- setValue: function (name, value, data) {
- switch (name) {
- case "text":
- if (data.text != value) {
- data.text = value;
- data.attr.text = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": 'text', "object": data });
- $rootScope.designer.templates.fnPageTree.refreshNode(data.id, data.text);
- }
- break;
- case "size":
- if (data.attr.size != value) {
- data.attr.size = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": 'size', "object": data });
- }
- break;
- case "weightSize":
- if (data.attr.weight.size != value) {
- data.attr.weight.size = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": 'weightSize', "object": data });
- }
- case "italic":
- if (data.attr.weight.isItalic != value) {
- data.attr.weight.isItalic = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": 'isItalic', "object": data });
- }
- break;
- case "color":
- if (data.attr.color != value) {
- data.attr.color = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": 'color', "object": data });
- }
- break;
- case "align":
- if (data.attr.align != value) {
- data.attr.align = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": 'align', "object": data });
- }
- break;
- }
- },
- },
- {
- id: "lrParagraph",
- text: "段落",
- icon: "fa fa-align-left",
- setValue: function (name, value, data) {
- if (data.attr[name] != value) {
- data.attr[name] = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": name, "object": data });
- }
- }
- },
- //{ id: "lrBtnBar", text: "按钮组", icon: "fa fa-th-large" },
- {
- id: "lrBtn",
- text: "按钮",
- icon: "fa fa-square",
- setValue: function (name, value, data) {
- switch (name) {
- case "link":
- if (data.attr.link != value)
- {
- data.attr.link = value;
- }
- break;
- case "text":
- if (data.attr.text != value) {
- data.attr.text = value;
- data.text = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": 'text', "object": data });
- $rootScope.designer.templates.fnPageTree.refreshNode(data.id, data.text);
- }
- break;
- case "weightSize":
- case "italic":
- if (data.attr.weight[name] != value) {
- data.attr.weight[name] = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": name, "object": data });
- }
- break;
- case "size":
- case "color":
- case "align":
- case "btnType":
- case "btnTheme":
- case "btnSize":
- if (data.attr[name] != value) {
- data.attr[name] = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": name, "object": data });
- }
- break;
- }
- },
- },
- {
- id: "lrInput",
- text: "文本框",
- icon: "fa fa-italic",
- setValue: function (name, value, data) {
- if (data.attr[name] != value) {
- data.attr[name] = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": name, "object": data });
- }
- }
- },
- {
- id: "lrList3",
- text: "列表类型一",
- icon: "fa fa-th-list",
- setValue: function (name, value, data) {
- if (data.attr[name] != value) {
- data.attr[name] = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": name, "object": data });
- }
- }
- },
- {
- id: "lrList4",
- text: "列表类型二",
- icon: "fa fa-list-ul",
- setValue: function (name, value, data) {
- if (data.attr[name] != value) {
- data.attr[name] = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "componentAttr", "attrName": name, "object": data });
- }
- }
- }
- //{ id: "lrTextarea", text: "文本区", icon: "fa fa-align-justify" }
- ];
- return {
- all: function () {
- return components;
- },
- getOne:function(id){
- for(var i in components)
- {
- if (components[i].id == id)
- {
- return components[i];
- }
- }
- },
- doRemove: _doRemove
- };
- }])
- .factory('$lrmTemplates', ['$rootScope', '$lrfnGuid', '$lrdialogTop', function ($rootScope, $lrfnGuid, $lrdialogTop) {//模板类型(树形菜单)
- /*设置空白页的属性的方法*/
- var setBlankPageValue = function (name, value, data) {
- switch (name) {
- case "text":
- if (data.text != value) {
- data.text = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "pageText", "value": value });
- refreshTreeNode(data.id, data.text);
- }
- break;
- case "routing":
- if (data.attr.routing != value)
- {
- data.attr.routing = value;
- }
- break;
- case "bgColor":
- if (data.attr.bgColor != value)
- {
- data.attr.bgColor = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "pageBgColor", "value": value });
- }
- break;
- case "isTabed":
- if (data.attr.isTabed != value) {
- data.attr.isTabed = value;
- }
- break;
- case "isPadding":
- if (data.attr.isPadding != value) {
- data.attr.isPadding = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "pageIsPadding", "value": value });
- }
- break;
- case "isHeadHide":
- if (data.attr.isHeadHide != value) {
- data.attr.isHeadHide = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "pageIsHeadHide", "value": value });
- }
- break;
- }
- };
- var pageTemplates = [{//页面模板
- value: "lrPageBlank",
- text: "页面",
- png: "../../Content/webApp/img/template-blank.png",
- img: "fa fa-file-o",
- hasChildren: false,
- isexpand: false,
- parentnodes: "0",
- attr: {
- value: 'lrPageBlank',
- type: 'page',
- routing: '/',
- bgColor: '#ffffff',
- isTabed: 'true',
- isPadding: 'true',
- isHeadHide: 'false',
- isFirst:false
- },
- setValue: setBlankPageValue,
- doButton: function (data) {
- if (hasTemplates.length > 1) {
- hasTemplates.splice(hasTemplates.indexOf(data), 1);
- refreshTree();
- $rootScope.designer.currentPage = hasTemplates[0];
- $rootScope.designer.currentFocus = hasTemplates[0];
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgSelectTemplatePage, { "cmd": "removePage", object: hasTemplates[0] });
- $.webappDesigner.attributes($rootScope.designer);
- }
- else {
- $lrdialogTop('必须保留一个页面', 'error');
- }
- },
- type:"page"
- }];
- var hasTemplates = [];
-
- /*刷新模板树*/
- function refreshTree(id) {
- var _id = "";
- if ($rootScope.pageTree != undefined) {
- $rootScope.pageTree.treeview({
- data: hasTemplates,
- isTool: true,
- nodeTools: [{ text: '删除', img: 'fa fa-trash-o' },
- { text: '复制', img: 'fa fa-clone' },
- {
- text: '标记默认页',
- img: 'fa fa-thumb-tack',
- node:"page",
- callback: function (id) {
- for (var i in hasTemplates)
- {
- hasTemplates[i].attr.isFirst = false;
- if (hasTemplates[i].id == id)
- {
- hasTemplates[i].attr.isFirst = true;
- $rootScope.pageTree.refreshNodeIcon(id, "fa fa-yahoo", ".fa-yahoo");
- }
- }
- }
- }],
- onnodeclick: function (item) {
- treeNotChecked();
- var _currentPage = $rootScope.designer.currentPage;
- var _currentFocus = $rootScope.designer.currentFocus;
- if (_currentFocus.id != item.id) {
- $rootScope.designer.currentFocus = item;
- if (item.parentnodes == "0")//说明是页面
- {
- $rootScope.designer.currentPage = item;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgSelectTemplatePage, { "cmd": "selectPage", "object": item });
- }
- else {
- if (item.parentnodes != _currentPage.id) {
- for (var i in hasTemplates) {
- var _page = hasTemplates[i];
- if (_page.id == item.parentnodes) {
- $rootScope.designer.currentPage = _page;
- break;
- }
- }
- }
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgSelectTemplatePage, { "cmd": "selectComponent", "object": item, "currentPage": $rootScope.designer.currentPage });
- }
- $.webappDesigner.attributes($rootScope.designer);
- }
- }
- });
- if (id == undefined) {
- _id = hasTemplates[0].id
- }
- else {
- _id = id;
- }
- $rootScope.pageTree.setNodeChecked(_id);
- treeNotChecked();
- for (var i in hasTemplates) {
- if (hasTemplates[i].attr.isFirst == true) {
- $rootScope.pageTree.refreshNodeIcon(hasTemplates[i].id, "fa fa-yahoo", ".fa-yahoo");
- break;
- }
- }
- }
- }
- function refreshTreeNode(nodeId,text)
- {
- $rootScope.pageTree.refreshNode(nodeId, text);
- }
- /*设置tabs的属性的方法*/
- var setTabsValue = function (name, value, data) {
- switch (name) {
- case "bgColor":
- if (data.attr.bgColor != value) {
- data.attr.bgColor = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "tabsBgColor", "value": value });
- }
- break;
- case "iconColor":
- if (data.attr.iconColor != value) {
- data.attr.iconColor = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "tabsIconColor", "value": value });
- }
- case "iconType":
- if (data.attr.iconType != value) {
- data.attr.iconType = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "tabsIconType", "value": value });
- }
- break;
- }
- };
- /*设置tab属性*/
- var setTabValue = function (name, value, data) {
- switch (name)
- {
- case "text":
- if (data.attr.text != value)
- {
- data.attr.text = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "tabText", "value": value });
- $rootScope.tabsTree.refreshNode(data.id, value);
- }
- break;
- case "iconOn":
- if (data.attr.iconOn != value) {
- data.attr.iconOn = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "tabIconOn", "value": value });
- }
- break;
- case "iconOff":
- if (data.attr.iconOff != value) {
- data.attr.iconOff = value;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgAttr, { "cmd": "tabIconOff", "value": value });
- }
- break;
- case "innerTabPage":
- if (data.attr.lrInnerTabPage != value) {
- data.attr.lrInnerTabPage = value;
- }
- break;
- }
- }
- /*删除tab*/
- var removeTab = function (data)
- {
- if (hasTabsTemplates[0].ChildNodes.length > 1) {
- hasTabsTemplates[0].ChildNodes.splice(hasTabsTemplates[0].ChildNodes.indexOf(data), 1);
- refreshTabsTree();
- focusTabsNode(hasTabsTemplates[0].ChildNodes[0].id);
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.doTabTemplate, { "cmd": "removeTab", id: hasTabsTemplates[0].ChildNodes[0].id });
- }
- else {
- $lrdialogTop('Tab不能全部删除', 'error');
- }
- }
- /*tabs树*/
- var tabTemplate = {
- text: "Tab页",
- img: "fa fa-cube",
- hasChildren: false,
- isexpand: false,
- parentnodes: "lrTabs",
- attr: {
- value: "lrTab",
- iconOn: "ion-ios-home",
- iconOff: "ion-ios-home-outline",
- innerTabPage: "DefaultPage",
- },
- setValue: setTabValue,
- doButton: removeTab
- };
- var hasTabsTemplates = [
- {
- id:"lrTabs",//页面模板
- value: "lrTabs",
- text: "Tabs控制器",
- img: "fa fa-sitemap",
- hasChildren: true,
- isexpand: true,
- parentnodes: "0",
- attr: {
- type: 'tabs',
- value: 'lrTabs',
- bgColor: 'stable',
- iconColor: "dark",
- iconType:"top"
- },
- setValue: setTabsValue,
- doButton: function () {
- var _dst = angular.copy(tabTemplate);
- _dst.id = $lrfnGuid();
- hasTabsTemplates[0].ChildNodes.push(_dst);
- refreshTabsTree();
- focusTabsNode(_dst.id);
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.doTabTemplate, { "cmd": "addTab", id: _dst.id });
- }
- }];
- function refreshTabsTree()
- {
- if ($rootScope.tabsTree != undefined) {
- $rootScope.tabsTree.treeview({
- data: hasTabsTemplates,
- onnodeclick: function (item) {
- pTreeNotChecked();
- var _currentPage = $rootScope.designer.currentPage;
- var _currentFocus = $rootScope.designer.currentFocus;
- if (_currentFocus.id != item.id)
- {
- if (_currentPage.id != "lrTabs") {
- $rootScope.designer.currentPage = hasTabsTemplates[0];
- }
-
- $rootScope.designer.currentFocus = item;
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.cgSelectTemplatePage, { "cmd": "lrTabs", "data": hasTabsTemplates[0].ChildNodes, "focus": item });
- $.webappDesigner.attributes($rootScope.designer);
- }
- }
- });
- }
- }
- function focusTabsNode(id)
- {
- for (var i in hasTabsTemplates[0].ChildNodes) {
- var item = hasTabsTemplates[0].ChildNodes[i];
- if (item.id == id) {
- $rootScope.designer.currentFocus = item;
- $.webappDesigner.attributes($rootScope.designer);
- break;
- }
- }
- pTreeNotChecked();
- $rootScope.tabsTree.setNodeChecked(id);
- }
- /*取消选中*/
- function pTreeNotChecked() {
- if ($rootScope.pageTree != undefined) {
- $rootScope.pageTree.setNodeChecked("");
- }
- }
- function treeNotChecked()
- {
- if ($rootScope.tabsTree != undefined)
- {
- $rootScope.tabsTree.setNodeChecked("");
- }
- }
- return {
- init: function (data) {
- hasTemplates = data;
- },
- getPageTemps: function () {
- return pageTemplates;
- },
- getHasTemps: function () {
- return hasTemplates;
- },
- getHasTabsTemps: function () {
- return hasTabsTemplates;
- },
- getComponent: function (id, pageId) {
- for (var i in hasTemplates) {
- var item = hasTemplates[i];
- if (item.hasChildren && pageId == item.id) {
- for (var j in item.ChildNodes) {
- var _childone = item.ChildNodes[j];
- if (_childone.id == id) {
- return _childone;
- }
- }
- }
- }
- return null;
- },
- addPage: function (data) {
- var _id = ""; var _dst = {};
- if (data == undefined) {
- _dst = angular.copy(pageTemplates[0]);
- _dst.id = $lrfnGuid();
- _id = _dst.id;
- hasTemplates.push(_dst);
- }
- else {
- _dst = data;
- _id = data.id;
- hasTemplates.push(data);
- }
- refreshTree(_id);
- return _dst;
- },
- addComponent: function (obj) {
- for (var i in hasTemplates) {
- var item = hasTemplates[i];
- if (item.id == obj.parentnodes) {
- hasTemplates[i].hasChildren = true;
- hasTemplates[i].isexpand = true;
- if (hasTemplates[i].ChildNodes == undefined) {
- hasTemplates[i].ChildNodes = [];
- }
- hasTemplates[i].ChildNodes.push(obj);
- }
- }
- },
- initTabs: function (data) {
- var _data = [
- {
- id: "lrtab0001",
- text: "首页",
- img: "fa fa-cube",
- hasChildren: false,
- isexpand: false,
- parentnodes: "lrTabs",
- attr: {
- value: "lrTab",
- iconOn: "ion-ios-home",
- iconOff: "ion-ios-home-outline",
- innerTabPage: "DefaultPage",
- },
- setValue: setTabValue,
- doButton: removeTab
- },
- {
- id: "lrtab0002",
- text: "实例",
- img: "fa fa-cube",
- hasChildren: false,
- isexpand: false,
- parentnodes: "lrTabs",
- attr: {
- value: "lrTab",
- iconOn: "ion-ios-book",
- iconOff: "ion-ios-book-outline",
- innerTabPage: "DefaultPage",
- },
- setValue: setTabValue,
- doButton: removeTab
- },
- {
- id: "lrtab0003",
- text: "通知",
- img: "fa fa-cube",
- hasChildren: false,
- isexpand: false,
- parentnodes: "lrTabs",
- attr: {
- value: "lrTab",
- iconOn: "ion-ios-bell",
- iconOff: "ion-ios-bell-outline",
- innerTabPage: "DefaultPage",
- },
- setValue: setTabValue,
- doButton: removeTab
- },
- {
- id: "lrtab0004",
- text: "我的",
- img: "fa fa-cube",
- hasChildren: false,
- isexpand: false,
- parentnodes: "lrTabs",
- attr: {
- value: "lrTab",
- iconOn: "ion-ios-person",
- iconOff: "ion-ios-person-outline",
- innerTabPage: "DefaultPage",
- },
- setValue: setTabValue,
- doButton: removeTab
- }
- ];
- if (data == undefined)
- {
- data = _data;
- }
- hasTabsTemplates[0].ChildNodes = data;
- },
- fnPageTree: {
- init: function (obj) {
- $rootScope.pageTree = obj;
- refreshTree();
- },
- refresh: refreshTree,
- focusNode: function (id) {
- treeNotChecked();
- $rootScope.pageTree.setNodeChecked(id);
- },
- refreshNode: refreshTreeNode
- },
- fnTabsTree: {
- init: function (obj) {
- $rootScope.tabsTree = obj;
- refreshTabsTree();
- },
- refresh: refreshTabsTree,
- focusNode: focusTabsNode
- }
- };
- }])
- .factory('$lrmDesigner', ['$rootScope', '$lrmComponents', '$lrmTemplates', '$http', '$lrdialogTop', '$lrGetIframe', '$lrfnGuid', function ($rootScope, $lrmComponents, $lrmTemplates, $http, $lrdialogTop, $lrGetIframe, $lrfnGuid) {
- var designer = {
- projectId: "",
- projectName: "",
- projectIcon: "icon-webApp.png",
- currentPage: {},
- currentFocus: {},
- isTabsAdded:false,
- templates: $lrmTemplates,
- components:$lrmComponents,
- api: {
- saveProjectUrl: "../../AppManage/AppProjects/SaveForm",
- getProjectUrl: "../../AppManage/AppProjects/GetFormJson"
- },
- doPhoneBroadcast: function (cmd, data) {
- $lrGetIframe('phoneDIndex').doBroadcast(cmd, data);
- },
- vm: {
- isBeginView: false
- },
- addPage: function (pageTemplate) {
- var _dst = angular.copy(pageTemplate);
- _dst.id = $lrfnGuid();
- designer.currentPage = _dst;
- designer.currentFocus = _dst;
- designer.templates.addPage(_dst);
- designer.doPhoneBroadcast(appBroadcastCode.cgSelectTemplatePage, { "cmd": "addPage", "object": _dst });
- $.webappDesigner.attributes(designer);
- },
- saveProject: function () {
- var _projectEntity = {
- "Name": designer.projectName,
- "Icon": designer.projectIcon,
- };
- if (_projectEntity.Name == "") {
- $lrdialogTop('请输入项目名称', 'error');
- return false;
- }
- $http.post(designer.api.saveProjectUrl + "?keyValue=" + designer.projectId, _projectEntity)
- .success(function (data) {
- $lrdialogTop('保存成功', 'success');
- })
- .error(function () {
- $lrdialogTop('保存失败', 'error');
- });
- }
- };
- function onBroadcast() {
- $rootScope.$on(appBroadcastCode.addComponent, function (event, data) {//添加组件
- try {
- var treeOne = {
- text: data.text,
- img: data.img,
- parentnodes: designer.currentPage.id,
- id: data.id,
- attr: data,
- setValue: designer.components.getOne(data.value).setValue,
- doButton: designer.components.doRemove
- };
- designer.templates.addComponent(treeOne);
- designer.templates.fnPageTree.refresh(treeOne.id);
- designer.currentFocus = treeOne;
- $.webappDesigner.attributes(designer);
- }
- catch (e)
- {
- console.log(e.message);
- }
- });
- $rootScope.$on(appBroadcastCode.doTabTemplatePhone, function (event, data) {//对tab的操作
- switch (data.cmd)
- {
- case "selectTab":
- designer.templates.fnTabsTree.focusNode(data.id);
- break;
- case "duplicate":
- var _dst = angular.copy(data.object);
- _dst.id = $lrfnGuid();
- designer.templates.getHasTabsTemps()[0].ChildNodes.push(_dst);
- designer.templates.fnTabsTree.refresh();
- designer.templates.fnTabsTree.focusNode(_dst.id);
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.doTabTemplate, { "cmd": "addTab", id: _dst.id });
- break;
- case "remove":
- var _lists = designer.templates.getHasTabsTemps()[0].ChildNodes;
- if (_lists.length > 1) {
- _lists.splice(_lists.indexOf(data.object), 1);
- designer.templates.fnTabsTree.refresh();
- designer.templates.fnTabsTree.focusNode(_lists[0].id);
- $rootScope.designer.doPhoneBroadcast(appBroadcastCode.doTabTemplate, { "cmd": "removeTab", id: _lists[0].id });
- }
- else {
- $lrdialogTop('Tab不能全部删除', 'error');
- }
- break;
- }
- });
- $rootScope.$on(appBroadcastCode.doComponentPhone, function (event, data) {//对tab的操作
- designer.templates.fnPageTree.focusNode(data.id);
- designer.currentFocus = designer.templates.getComponent(data.id, designer.currentPage.id);
- $.webappDesigner.attributes(designer);
- });
- }
- return {
- init: function (projectId) {
- designer.projectId = projectId;
- if (designer.projectId == "") {
- var tempData = designer.templates.addPage();
- designer.templates.initTabs();
- designer.currentPage = tempData;
- designer.currentFocus = tempData;
- $.webappDesigner.attributes(designer);
- }
- else {
- $http.get(designer.api.getProjectUrl + "?keyValue=" + designer.projectId)
- .success(function (data) {
- designer.projectName = data.Name;
- designer.projectIcon = data.Icon;
- })
- .error(function () {
- designer.projectId = "";
- $lrdialogTop('获取数据失败', 'error');
- });
- }
- onBroadcast();
- return designer;
- }
- };
- }])
- /*方法*/
- .factory('$lrfnRequest', function () {//获取传递参数
- return function (keyValue) {
- var search = location.search.slice(1);
- var arr = search.split("&");
- for (var i = 0; i < arr.length; i++) {
- var ar = arr[i].split("=");
- if (ar[0] == keyValue) {
- if (unescape(ar[1]) == 'undefined') {
- return "";
- } else {
- return unescape(ar[1]);
- }
- }
- }
- return "";
- }
- })
- .factory('$lrfnGuid', function () {
- return function () {
- var guid = "";
- for (var i = 1; i <= 32; i++) {
- var n = Math.floor(Math.random() * 16.0).toString(16);
- guid += n;
- if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid += "-";
- }
- return guid;
- };
- })
- .factory('$lrdialogTop', function () {
- return function (content, type) {
- $(".tip_container").remove();
- var bid = parseInt(Math.random() * 100000);
- $("body").prepend('<div id="tip_container' + bid + '" class="container tip_container"><div id="tip' + bid + '" class="mtip"><i class="micon"></i><span id="tsc' + bid + '"></span><i id="mclose' + bid + '" class="mclose"></i></div></div>');
- var $this = $(this);
- var $tip_container = $("#tip_container" + bid);
- var $tip = $("#tip" + bid);
- var $tipSpan = $("#tsc" + bid);
- //先清楚定时器
- clearTimeout(window.timer);
- //主体元素绑定事件
- $tip.attr("class", type).addClass("mtip");
- $tipSpan.html(content);
- $tip_container.slideDown(300);
- //提示层隐藏定时器
- window.timer = setTimeout(function () {
- $tip_container.slideUp(300);
- $(".tip_container").remove();
- }, 4000);
- $("#tip_container" + bid).css("left", ($(window).width() - $("#tip_container" + bid).width()) / 2);
- }
- })
- .factory('$lrGetIframe', function () {
- function isbrowsername() {
- var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
- var isOpera = userAgent.indexOf("Opera") > -1;
- if (isOpera) {
- return "Opera"
- }; //判断是否Opera浏览器
- if (userAgent.indexOf("Firefox") > -1) {
- return "FF";
- } //判断是否Firefox浏览器
- if (userAgent.indexOf("Chrome") > -1) {
- if (window.navigator.webkitPersistentStorage.toString().indexOf('DeprecatedStorageQuota') > -1) {
- return "Chrome";
- } else {
- return "360";
- }
- }//判断是否Chrome浏览器//360浏览器
- if (userAgent.indexOf("Safari") > -1) {
- return "Safari";
- } //判断是否Safari浏览器
- if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
- return "IE";
- }; //判断是否IE浏览器
- }
- return function (id) {
- if (isbrowsername() == "Chrome" || isbrowsername() == "FF") {
- return frames[id].contentWindow;
- }
- else {
- return frames[id];
- }
- }
- });
- /*Dom操作和给外部调用的方法*/
- (function ($) {
- function lrAppBox(name, strhtml) {
- var html = '<div class="lr-box expanded">';
- html += '<h4 class="lr-box-toggle" onClick="lrappbox(this)"><span class="caret"></span>' + name + '</h4>';
- html += '<div class="lr-box-content">' + strhtml + '</div>';
- html += '</div>';
- return html;
- }
- function lrAppColorPicker(color, width, name) {
- var html = '<div class="input-append color" data-form="colorpicker" data-color="' + color + '" style="width:' + width + 'px;" data-color-format="hex">' +
- '<span class="add-on"><i style="background-color: ' + color + '"></i></span>' +
- '<input type="text" data-name="'+name+'" value="' + color + '" />' +
- '</div>';
- return html;
- }
- function buttonGroup(name,data,value, style) {
- var html = '<div class="btn-group" style="' + style + '">';
- for (var i in data) {
- var _item = data[i];
- var _icon = _item.icon == undefined ? '<span style="font-size:18px; line-height: 19px;">' + _item.text + '</span>' : '<span class="' + _item.icon + '"></span>';
- var _actived = "";
- if (_item.value == value)
- {
- _actived = "actived";
- }
- html += '<a type="button" class="btn btn-default ' + _actived + ' b' + data.length + ' " onClick="lrappBtnGroup(this)"><input type="text" data-name="' + name + '" style="display:none;" value="' + _item.value + '" >' + _icon + '</a>';
- }
- html += '</div>';
- return html;
- }
- function lrAppToggle(name,value) {
- var _active = '';
- if (value == 'true' )
- {
- _active = 'active';
- }
- var _html = '<lrapp-toggle class="' + _active + '" onClick="lrappToggle(this)"><input type="text" data-name="' + name + '" style="display:none;" value="' + value + '" > <span class="left-text " ></span><div class="track"><div class="handle"></div></div><span class="right-text" ></span></lrapp-toggle>';
- return _html;
- }
- function lrCombox(name, value, data, width) {
- var _option = '';
- for (var i in data)
- {
- var item = data[i];
- _option += '<li data-value="' + item.value + '" data-icon = "' + item.icon + '" >' + item.text + '</li>';
- }
- var _html = '<div id="' + name + '" type="select" class="ui-select" data-name="' + name + '" data-value="' + value + '" style="width:' + width + 'px;display: inline-block;" >' + _option + '</div>';
- return _html;
- };
- var _tempsAttr = {//模板属性设置
- lrTabs: function (data) {
- var _html = "";
- var _boxHtml = "";
- var _color = [
- { text: "Light", value: "light", icon: "<span class='color-square light-bg light-border space-right'></span>" },
- { text: "Stable", value: "stable", icon: "<span class='color-square stable-bg stable-border space-right'></span>" },
- { text: "Dark", value: "dark", icon: "<span class='color-square dark-bg dark-border space-right'></span>" },
- { text: "Positive", value: "positive", icon: "<span class='color-square positive-bg positive-border space-right'></span>" },
- { text: "Balanced", value: "balanced", icon: "<span class='color-square balanced-bg balanced-border space-right'></span>" },
- { text: "Assertive", value: "assertive", icon: "<span class='color-square assertive-bg assertive-border space-right'></span>" },
- { text: "Calm", value: "calm", icon: "<span class='color-square calm-bg calm-border space-right'></span>" },
- { text: "Energized", value: "energized", icon: "<span class='color-square energized-bg energized-border space-right'></span>" },
- { text: "Royal", value: "royal", icon: "<span class='color-square royal-bg royal-border space-right'></span>" }
- ];
- var _types = [
- { text: "顶部图标", value: "top", icon: "" },
- { text: "只有图标", value: "only", icon: "" },
- { text: "左侧图标", value: "left", icon: "" },
- ];
- _html += '<div class="lr-app-right-header"><span class="lr-app-title">' + data.text + '</span></div>';
-
- _boxHtml += '<div class="form-group"><label class="control-label">背景色</label>' + lrCombox("bgColor", data.attr.bgColor, _color, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">图标色</label>' + lrCombox("iconColor", data.attr.iconColor, _color, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">类型</label>' + lrCombox("iconType", data.attr.iconType, _types, 205) + '</div>';
- _html += lrAppBox('样式', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">增加新的Tab</button></div>';
- return _html;
- },
- lrTab: function (data,designer) {
- var _html = "";
- var _boxHtml = "";
- var _pages = designer.templates.getHasTemps();
- var _innerPages = [];
- for (var i in _pages)
- {
- var _item = _pages[i];
- var _point = { text: _item.text, value: _item.id, icon: "" };
- _innerPages.push(_point);
- }
- _html += '<div class="lr-app-right-header"><span class="lr-app-typePage"><a>Tabs控制器</a><span class="lr-app-slash">/</span></span>' + data.text + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">标题</label><input type="text" class="form-control" data-name="text" value="' + data.text + '" ></div>';
- _boxHtml += '<div class="form-group"><label class="control-label">未选中图标</label>' + lrCombox("iconOff", data.attr.iconOff, webAppData.iconList, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">选中图标</label>' + lrCombox("iconOn", data.attr.iconOn, webAppData.iconList, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">内嵌页面</label>' + lrCombox("innerTabPage", data.attr.innerTabPage, _innerPages, 205) + '</div>';
- _html += lrAppBox('设置', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">删除</button></div>';
- return _html;
- },
- lrPageBlank: function (data) {
- var _html = "";
- var _boxHtml = "";
- _html += '<div class="lr-app-right-header"><span class="lr-app-title">' + data.text + '</span></div>';
- _html += '<div class="lr-box" style="padding-top:10px;">';
- _html += '<div class="form-group"><label class="control-label">标题</label><input type="text" class="form-control W" data-name="text" value="' + data.text + '" ></div>';
- _html += '<div class="form-group"><label class="control-label">路由</label><input type="text" class="form-control W" data-name="routing" value="' + data.attr.routing + '"></div></div>';
- _boxHtml = '<div class="form-group"><label class="control-label">Color</label>' + lrAppColorPicker(data.attr.bgColor, 205, "bgColor") + '</div>';
- _html += lrAppBox('背景', _boxHtml);
- _boxHtml = '<div class="form-group form-toggle "><label class="control-label">显示tabs</label>' + lrAppToggle('isTabed', data.attr.isTabed) + '</div>';
- _boxHtml += '<div class="form-group form-toggle "><label class="control-label">内边距</label>' + lrAppToggle('isPadding',data.attr.isPadding) + '</div>';
- _boxHtml += '<div class="form-group form-toggle "><label class="control-label">隐藏头部</label>' + lrAppToggle('isHeadHide', data.attr.isHeadHide) + '</div>';
- _html += lrAppBox('混合属性', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">删除</button></div>';
- return _html;
- },
- lrHeader: function (data, designer) {
- var _html = '';
- var _boxHtml = '';
- var _size = [{ text: "H1", value: "H1", icon: "" },
- { text: "H2", value: "H2", icon: "" },
- { text: "H3", value: "H3", icon: "" },
- { text: "H4", value: "H4", icon: "" },
- { text: "H5", value: "H5", icon: "" }
- ];
- var _weightSize = [{ text: "200", value: "200", icon: "" },
- { text: "300", value: "300", icon: "" },
- { text: "400", value: "400", icon: "" },
- { text: "500", value: "500", icon: "" },
- { text: "600", value: "600", icon: "" }
- ];
- _html += '<div class="lr-app-right-header"><span class="lr-app-typePage"><a>' + designer.currentPage.text + '</a><span class="lr-app-slash">/</span></span>' + data.text + '</div>';
- _boxHtml = '<div class="form-group"><input type="text" class="form-control W " data-name="text" value="' + data.text + '" ></div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Size</label>' + lrCombox("size", data.attr.size, _size, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Weight</label>' + lrCombox("weightSize", data.attr.weight.size, _weightSize, 100);
- _boxHtml += buttonGroup("italic", [{ 'text': 'I', 'value': 'false' }, { 'icon': 'fa fa-italic', 'value': 'true' }], data.attr.weight.isItalic, "margin-left:5px;");
- _boxHtml += '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Color</label>' + lrAppColorPicker(data.attr.color, 205, "color") + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Align</label>';
- _boxHtml += buttonGroup("align", [{ 'icon': 'fa fa-align-left', "value": "left" }, { 'icon': 'fa fa-align-center', "value": "center" }, { 'icon': 'fa fa-align-right', "value": "right" }, { 'icon': 'fa fa-align-justify', "value": "justify" }], data.attr.align);
- _boxHtml += '</div>';
- _html += lrAppBox('Text', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">删除</button></div>';
- return _html;
- },
- lrParagraph: function (data, designer) {
- var _html = '';
- var _boxHtml = '';
- var _size = [
- { text: "12px", value: "12px", icon: "" },
- { text: "13px", value: "13px", icon: "" },
- { text: "14px", value: "14px", icon: "" },
- { text: "15px", value: "15px", icon: "" },
- { text: "16px", value: "16px", icon: "" },
- { text: "17px", value: "17px", icon: "" },
- { text: "18px", value: "18px", icon: "" },
- { text: "19px", value: "19px", icon: "" },
- { text: "20px", value: "20px", icon: "" },
- { text: "21px", value: "21px", icon: "" },
- { text: "22px", value: "22px", icon: "" },
- { text: "23px", value: "23px", icon: "" },
- { text: "24px", value: "24px", icon: "" },
- { text: "25px", value: "25px", icon: "" }
- ];
- _html += '<div class="lr-app-right-header"><span class="lr-app-typePage"><a>' + designer.currentPage.text + '</a><span class="lr-app-slash">/</span></span>' + data.text + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Size</label>' + lrCombox("size", data.attr.size, _size, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Color</label>' + lrAppColorPicker(data.attr.color, 205, "color") + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Align</label>';
- _boxHtml += buttonGroup("align", [{ 'icon': 'fa fa-align-left', "value": "left" }, { 'icon': 'fa fa-align-center', "value": "center" }, { 'icon': 'fa fa-align-right', "value": "right" }, { 'icon': 'fa fa-align-justify', "value": "justify" }], data.attr.align);
- _boxHtml += '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">内容</label><textarea class="form-control W" data-name="content" style="resize: none;height:100px;">' + data.attr.content + '</textarea></div>';
- _html += lrAppBox('Text', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">删除</button></div>';
- return _html;
- },
- lrBtn: function (data, designer) {
- var _html = '';
- var _boxHtml = '';
- var _pages = designer.templates.getHasTemps();
- var _innerPages = [];
- for (var i in _pages) {
- var _item = _pages[i];
- var _point = { text: _item.text, value: _item.id, icon: "" };
- _innerPages.push(_point);
- }
- var _size = [
- { text: "12px", value: "12px" },
- { text: "13px", value: "13px" },
- { text: "14px", value: "14px" },
- { text: "15px", value: "15px" },
- { text: "16px", value: "16px" },
- { text: "17px", value: "17px" },
- { text: "18px", value: "18px" },
- { text: "19px", value: "19px" },
- { text: "20px", value: "20px" },
- { text: "21px", value: "21px" },
- { text: "22px", value: "22px" },
- { text: "23px", value: "23px" },
- { text: "24px", value: "24px" },
- { text: "25px", value: "25px" }
- ];
- var _weightSize = [{ text: "200", value: "200" },
- { text: "300", value: "300" },
- { text: "400", value: "400" },
- { text: "500", value: "500" },
- { text: "600", value: "600" }
- ];
- var _color = [
- { text: "Light", value: "light", icon: "<span class='color-square light-bg light-border space-right'></span>" },
- { text: "Stable", value: "stable", icon: "<span class='color-square stable-bg stable-border space-right'></span>" },
- { text: "Dark", value: "dark", icon: "<span class='color-square dark-bg dark-border space-right'></span>" },
- { text: "Positive", value: "positive", icon: "<span class='color-square positive-bg positive-border space-right'></span>" },
- { text: "Balanced", value: "balanced", icon: "<span class='color-square balanced-bg balanced-border space-right'></span>" },
- { text: "Assertive", value: "assertive", icon: "<span class='color-square assertive-bg assertive-border space-right'></span>" },
- { text: "Calm", value: "calm", icon: "<span class='color-square calm-bg calm-border space-right'></span>" },
- { text: "Energized", value: "energized", icon: "<span class='color-square energized-bg energized-border space-right'></span>" },
- { text: "Royal", value: "royal", icon: "<span class='color-square royal-bg royal-border space-right'></span>" }
- ];
- _html += '<div class="lr-app-right-header"><span class="lr-app-typePage"><a>' + designer.currentPage.text + '</a><span class="lr-app-slash">/</span></span>' + data.text + '</div>';
- _boxHtml = '<div class="form-group"><label class="control-label">连接</label>' + lrCombox("link", data.attr.link, _innerPages, 205) + '</div>';
- _html += lrAppBox('连接', _boxHtml);
- _boxHtml = '<div class="form-group"><input type="text" class="form-control W " data-name="text" value="' + data.text + '" ></div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Size</label>' + lrCombox("size", data.attr.size, _size, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Weight</label>' + lrCombox("weightSize", data.attr.weight.size, _weightSize, 100);
- _boxHtml += buttonGroup("italic", [{ 'text': 'I', 'value': 'false' }, { 'icon': 'fa fa-italic', 'value': 'true' }], data.attr.weight.isItalic, "margin-left:5px;");
- _boxHtml += '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Color</label>' + lrAppColorPicker(data.attr.color, 205, "color") + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Align</label>';
- _boxHtml += buttonGroup("align", [{ 'icon': 'fa fa-align-left', "value": "left" }, { 'icon': 'fa fa-align-center', "value": "center" }, { 'icon': 'fa fa-align-right', "value": "right" }, { 'icon': 'fa fa-align-justify', "value": "justify" }], data.attr.align);
- _boxHtml += '</div>';
- _html += lrAppBox('文本', _boxHtml);
- _boxHtml = '<div class="form-group"><label class="control-label">类型</label>' + lrCombox("btnType", data.attr.btnType, [{ text: "Default", value: "default" }, { text: "Clear", value: "clear" }, { text: "Outline", value: "outline" }], 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">主题</label>' + lrCombox("btnTheme", data.attr.btnTheme, _color, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">尺寸</label>' + lrCombox("btnSize", data.attr.btnSize, [{ text: "Standard", value: "standard" }, { text: "Large", value: "large" }, { text: "Small", value: "small" }], 205) + '</div>';
- _html += lrAppBox('样式', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">删除</button></div>';
- return _html;
- },
- lrInput: function (data, designer) {
- var _html = '';
- var _boxHtml = '';
- var _type = [{ text: "Text", value: "text" },
- { text: "Password", value: "password" }
- ];
- _html += '<div class="lr-app-right-header"><span class="lr-app-typePage"><a>' + designer.currentPage.text + '</a><span class="lr-app-slash">/</span></span>' + data.text + '</div>';
- _boxHtml = '<div class="form-group"><label class="control-label">Placeholder</label><input type="text" class="form-control" data-name="placeholder" value="' + data.attr.placeholder + '" ></div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Type</label>' + lrCombox("inputType", data.attr.inputType, _type, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">Name</label><input type="text" class="form-control" data-name="name" value="' + data.attr.name + '" ></div>';
- _html += lrAppBox('输入框设置', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">删除</button></div>';
- return _html;
- },
- lrList3: function (data, designer) {
- var _html = '';
- var _boxHtml = '';
- var _pages = designer.templates.getHasTemps();
- var _innerPages = [];
- for (var i in _pages) {
- var _item = _pages[i];
- var _point = { text: _item.text, value: _item.id, icon: "" };
- _innerPages.push(_point);
- }
- var _color = [
- { text: "Light", value: "light", icon: "<span class='color-square light-bg light-border space-right'></span>" },
- { text: "Stable", value: "stable", icon: "<span class='color-square stable-bg stable-border space-right'></span>" },
- { text: "Dark", value: "dark", icon: "<span class='color-square dark-bg dark-border space-right'></span>" },
- { text: "Positive", value: "positive", icon: "<span class='color-square positive-bg positive-border space-right'></span>" },
- { text: "Balanced", value: "balanced", icon: "<span class='color-square balanced-bg balanced-border space-right'></span>" },
- { text: "Assertive", value: "assertive", icon: "<span class='color-square assertive-bg assertive-border space-right'></span>" },
- { text: "Calm", value: "calm", icon: "<span class='color-square calm-bg calm-border space-right'></span>" },
- { text: "Energized", value: "energized", icon: "<span class='color-square energized-bg energized-border space-right'></span>" },
- { text: "Royal", value: "royal", icon: "<span class='color-square royal-bg royal-border space-right'></span>" }
- ];
- _html += '<div class="lr-app-right-header"><span class="lr-app-typePage"><a>' + designer.currentPage.text + '</a><span class="lr-app-slash">/</span></span>' + data.text + '</div>';
- _boxHtml = '<div class="form-group"><label class="control-label">连接</label>' + lrCombox("link", data.attr.link, _innerPages, 205) + '</div>';
- _html += lrAppBox('连接', _boxHtml);
- _boxHtml = '<div class="form-group"><label class="control-label">显示文本</label><input type="text" class="form-control" data-name="name" value="' + data.attr.name + '" ></div>';
- _boxHtml += '<div class="form-group"><label class="control-label">主题</label>' + lrCombox("color", data.attr.color, _color, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">图标</label>' + lrCombox("icon", data.attr.icon, webAppData.iconList, 205) + '</div>';
- _html += lrAppBox('列表设置', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">删除</button></div>';
- return _html;
- },
- lrList4: function (data, designer) {
- var _html = '';
- var _boxHtml = '';
- var _pages = designer.templates.getHasTemps();
- var _innerPages = [];
- for (var i in _pages) {
- var _item = _pages[i];
- var _point = { text: _item.text, value: _item.id, icon: "" };
- _innerPages.push(_point);
- }
- var _color = [
- { text: "a", value: "a", icon: "<span class='color-square bgcolor_a light-border space-right'></span>" },
- { text: "b", value: "b", icon: "<span class='color-square bgcolor_b light-border space-right'></span>" },
- { text: "c", value: "c", icon: "<span class='color-square bgcolor_c light-border space-right'></span>" },
- { text: "d", value: "d", icon: "<span class='color-square bgcolor_d light-border space-right'></span>" },
- { text: "e", value: "e", icon: "<span class='color-square bgcolor_e light-border space-right'></span>" },
- { text: "f", value: "f", icon: "<span class='color-square bgcolor_f light-border space-right'></span>" },
- { text: "g", value: "g", icon: "<span class='color-square bgcolor_g light-border space-right'></span>" },
- { text: "h", value: "h", icon: "<span class='color-square bgcolor_h light-border space-right'></span>" }
- ];
- _html += '<div class="lr-app-right-header"><span class="lr-app-typePage"><a>' + designer.currentPage.text + '</a><span class="lr-app-slash">/</span></span>' + data.text + '</div>';
- _boxHtml = '<div class="form-group"><label class="control-label">连接</label>' + lrCombox("link", data.attr.link, _innerPages, 205) + '</div>';
- _html += lrAppBox('连接', _boxHtml);
- _boxHtml = '<div class="form-group"><label class="control-label">显示文本</label><input type="text" class="form-control" data-name="name" value="' + data.attr.name + '" ></div>';
- _boxHtml += '<div class="form-group"><label class="control-label">主题</label>' + lrCombox("color", data.attr.color, _color, 205) + '</div>';
- _boxHtml += '<div class="form-group"><label class="control-label">图标</label>' + lrCombox("icon", data.attr.icon, webAppData.iconList, 205) + '</div>';
- _html += lrAppBox('列表设置', _boxHtml);
- _html += '<div style="margin:10px;"><button type="button" class="btn btn-danger btn-block">删除</button></div>';
- return _html;
- },
- }
- $.webappDesigner = {
- attributes: function (data) {
- //console.log(data.currentFocus);
- //var $webAppDesign = angular.element('#webAppDesign');
- //var $rootScope = $webAppDesign.scope().$root;
- var _currentFocus = data.currentFocus;
- var _attr = _currentFocus.attr;
- var _currentPage = data.currentPage;
- var strhtml = '';
- var strBoxHtml = '';
- strhtml = _tempsAttr[_attr.value](_currentFocus, data);
- $('.lr-app-right-bar').html(strhtml).ready(function () {
- $('.color').colorpicker();
- $('.ui-select').each(function (r) {
- $(this).ComboBox({
- height: "400px",
- }).bind('change', function () {
- var $obj = $(this);
- var _value = $obj.attr('data-value');
- var _name = $obj.attr("data-name");
- data.currentFocus.setValue(_name, _value, data.currentFocus);
- });
- });
- $('.lr-app-right-bar input').unbind();
- $('.lr-app-right-bar input').bind('input propertychange', function () {
- var $obj = $(this);
- var _value = $obj.val();
- var _name = $obj.attr("data-name");
- if (_name == "routing")
- {
- if (_value.indexOf("/") < 0)
- {
- _value = "/" + _value;
- $obj.val(_value);
- }
- }
- data.currentFocus.setValue(_name, _value, data.currentFocus);
- });
- $('.lr-app-right-bar textarea').unbind();
- $('.lr-app-right-bar textarea').bind('valuechange', function () {
- var $obj = $(this);
- var _value = $obj.val();
- var _name = $obj.attr("data-name");
- data.currentFocus.setValue(_name, _value, data.currentFocus);
- });
- $('button').on('click', function () {
- data.currentFocus.doButton(data.currentFocus);
- });
- });
- },
- doBroadcast: function (name, data) {//发送广播
- var $webAppDesign = angular.element('#webAppDesign');
- var $rootScope = $webAppDesign.scope().$root;
- $rootScope.$broadcast(name, data);//iframeLoaded
- }
- };
- $.event.special.valuechange = {
- teardown: function (namespaces) {
- $(this).unbind('.valuechange');
- },
- handler: function (e) {
- $.event.special.valuechange.triggerChanged($(this));
- },
- add: function (obj) {
- $(this)
- .on(
- 'keyup.valuechange cut.valuechange paste.valuechange input.valuechange',
- obj.selector, $.event.special.valuechange.handler)
- },
- triggerChanged: function (element) {
- var current = element[0].contentEditable === 'true' ? element
- .html() : element.val(), previous = typeof element
- .data('previous') === 'undefined' ? element[0].defaultValue
- : element.data('previous')
- if (current !== previous) {
- element.trigger('valuechange', [element.data('previous')])
- element.data('previous', current)
- }
- }
- }
- $.fn.ComboBox = function (options) {
- //options参数:description,height,width,allowSearch,url,param,data
- options.id = "key";
- options.text = "text";
- var $select = $(this);
- var json = options.data = [];
- var _description = $select.attr("data-value");
- $select.find('li').each(function (r) {
- var $obj = $(this);
- var _text = $obj.html();
- var _value = $obj.attr('data-value');
- var _icon = $obj.attr('data-icon');
- var _a = {};
- _a[options.id] = _value;
- _a[options.text] = _text;
- _a["icon"] = (_icon == "undefined" ? "" : _icon);
- if (_description == _value)
- {
- _description = _a["icon"] + _text;
- }
- json.push(_a);
- });
-
- var _name = $select.attr("data-name");
- if (options) {
- if ($select.find('.ui-select-text').length == 0) {
- var $select_html = "";
- $select_html += "<div class=\"ui-select-text\" style='color:#999;'>" + _description + "</div>";
- $select_html += "<div class=\"ui-select-option\">";
- $select_html += "<div class=\"ui-select-option-content\" style=\"max-height: " + options.height + "\">" + $select.html() + "</div>";
- if (options.allowSearch) {
- $select_html += "<div class=\"ui-select-option-search\"><input type=\"text\" class=\"form-control\" placeholder=\"搜索关键字\" /><span class=\"input-query\" title=\"Search\"><i class=\"fa fa-search\"></i></span></div>";
- }
- $select_html += "</div>";
- $select.html('');
- $select.append($select_html);
- }
- }
- var $option_html = $($("<p>").append($select.find('.ui-select-option').clone()).html());
- $option_html.attr('id', $select.attr('id') + '-option');
- $select.find('.ui-select-option').remove();
- if ($option_html.length > 0) {
- $('body').find('#' + $select.attr('id') + '-option').remove();
- }
- $('body').prepend($option_html);
- var $option = $("#" + $select.attr('id') + "-option");
- //var json = options.data;
-
- loadComboBoxView(json);
- function loadComboBoxView(json, searchValue, m) {
- if (json.length > 0) {
- var $_html = $('<ul></ul>');
- if (options.description) {
- $_html.append('<li data-value="">' + options.description + '</li>');
- }
- $.each(json, function (i) {
- var row = json[i];
- var title = row[options.title];
- if (title == undefined) {
- title = "";
- }
- if (searchValue != undefined) {
- if (row[m.text].indexOf(searchValue) != -1) {
- $_html.append('<li data-value="' + row[options.id] + '" title="' + title + '">' + row.icon + row[options.text] + '</li>');
- }
- }
- else {
- $_html.append('<li data-value="' + row[options.id] + '" title="' + title + '">' + row.icon + row[options.text] + '</li>');
- }
- });
- $option.find('.ui-select-option-content').html($_html);
- $option.find('li').css('padding', "0 5px");
- $option.find('li').click(function (e) {
- var data_text = $(this).html();
- var data_value = $(this).attr('data-value');
- $select.attr("data-value", data_value).attr("data-text", data_text);
- $select.find('.ui-select-text').html(data_text).css('color', '#000');
- $option.slideUp(150);
- $select.trigger("change");
- e.stopPropagation();
- }).hover(function (e) {
- if (!$(this).hasClass('liactive')) {
- $(this).toggleClass('on');
- }
- e.stopPropagation();
- });
- }
- }
- //操作搜索事件
- if (options.allowSearch) {
- $option.find('.ui-select-option-search').find('input').bind("keypress", function (e) {
- if (event.keyCode == "13") {
- var value = $(this).val();
- loadComboBoxView($(this)[0].options.data, value, $(this)[0].options);
- }
- }).focus(function () {
- $(this).select();
- })[0]["options"] = options;
- }
- $select.unbind('click');
- $select.bind("click", function (e) {
- if ($select.attr('readonly') == 'readonly' || $select.attr('disabled') == 'disabled') {
- return false;
- }
- $(this).addClass('ui-select-focus');
- if ($option.is(":hidden")) {
- $select.find('.ui-select-option').hide();
- $('.ui-select-option').hide();
- var left = $select.offset().left;
- var top = $select.offset().top + 35;
- var width = $select.width();
- if (options.width) {
- width = options.width;
- }
- if (($option.height() + top) < $(window).height()) {
- $option.slideDown(150).css({ top: top, left: left, width: width });
- } else {
- var _top = (top - $option.height() - 32)
- $option.show().css({ top: _top, left: left, width: width });
- $option.attr('data-show', true);
- }
- $option.css('border-top', '1px solid #ccc');
- $option.find('li').removeClass('liactive');
- $option.find('[data-value=' + $select.attr('data-value') + ']').addClass('liactive');
- $option.find('.ui-select-option-search').find('input').select();
- } else {
- if ($option.attr('data-show')) {
- $option.hide();
- } else {
- $option.slideUp(150);
- }
- }
- e.stopPropagation();
- });
- $(document).click(function (e) {
- var e = e ? e : window.event;
- var tar = e.srcElement || e.target;
- if (!$(tar).hasClass('form-control')) {
- if ($option.attr('data-show')) {
- $option.hide();
- } else {
- $option.slideUp(150);
- }
- $select.removeClass('ui-select-focus');
- e.stopPropagation();
- }
- });
- return $select;
- }
- $.fn.ComboBoxSetValue = function (value) {
- if ($.isNullOrEmpty(value)) {
- return;
- }
- var $select = $(this);
- var $option = $("#" + $select.attr('id') + "-option");
- $select.attr('data-value', value);
- var data_text = $option.find('ul').find('[data-value=' + value + ']').html();
- if (data_text) {
- $select.attr('data-text', data_text);
- $select.find('.ui-select-text').html(data_text).css('color', '#000');
- $option.find('ul').find('[data-value=' + value + ']').addClass('liactive')
- }
- return $select;
- }
-
- })(window.jQuery);
- function lrappbox(a) {
- var $obj = $(a).parent();
- if ($obj.is('.expanded')) {
- $obj.removeClass('expanded');
- }
- else {
- $obj.addClass('expanded');
- }
- }
- function lrappBtnGroup(a) {
- var $obj = $(a).parent();
- $input = $(a).find('input');
- $obj.find('.actived').removeClass('actived');
- $(a).addClass('actived');
- $input.trigger('propertychange');
- }
- function lrappToggle(a) {
- var $obj = $(a);
- $input = $obj.find('input');
- $obj.addClass("animate");
- var flag = $obj.is(".active");
- if (flag) {
- $input.val(false);
- $obj.removeClass("active");
- }
- else {
- $input.val(true);
- $obj.addClass("active");
- }
- $input.trigger('propertychange');
- }
|