diff --git a/demoHtml/flex/index.html b/demoHtml/flex/index.html index 06ccc1a..f9a190d 100644 --- a/demoHtml/flex/index.html +++ b/demoHtml/flex/index.html @@ -63,7 +63,14 @@ -
+
+
diff --git a/demoHtml/flex/js/index.js b/demoHtml/flex/js/index.js index aef97e5..422b3b4 100644 --- a/demoHtml/flex/js/index.js +++ b/demoHtml/flex/js/index.js @@ -1,9 +1,56 @@ (function () { - let initData = null; - let grid = null; + let main = { + grid: null, + initData: null, + }; + let welcome = { + grid: null, + initData: null, + }; let currentComponent = null; let cellHeight = 60; + // 让gridstack知道如何渲染,组件children中的content直接渲染html + GridStack.renderCB = function (el, w) { + el.innerHTML = w.content; + }; + + GridStack.setupDragIn('#components-panel .component-item', undefined, [ + { + w: 2, + h: 2, + type: 'image', + name: '图片', + image: '', + eventsType: 'click', + eventsAction: '', + defaultFocus: false, + leftId: '', + rightId: '', + upId: '', + downId: '', + }, + { + w: 2, + h: 1, + type: 'text', + childrenType: '', + name: '文本', + background: '#fff', + fontSize: 14, + color: '#333', + text: '文本', + fontWeight: 'normal', + eventsType: 'click', + eventsAction: '', + defaultFocus: false, + leftId: '', + rightId: '', + upId: '', + downId: '', + }, + ]); + // 生成唯一id var generateUniqueId = function () { const timestamp = Date.now().toString(36); @@ -12,10 +59,11 @@ }; /** 初始化 */ - var init = function () { - const initDataStorage = localStorage.getItem('initData'); + var init = function (type, self) { + // debugger; + const initDataStorage = localStorage.getItem(`${type}Data`); if (!initDataStorage) { - initData = { + self['initData'] = { id: `grid_${generateUniqueId()}`, children: [], version: '1.0.0', @@ -23,80 +71,44 @@ height: 1080, }; } else { - initData = JSON.parse(initDataStorage); - conputedInitData('init'); + self['initData'] = JSON.parse(initDataStorage); + conputedInitData('init', self); } - console.log(initData, 'initData'); + console.log(self['initData'], `${type}Data`); - // 让gridstack知道如何渲染,组件children中的content直接渲染html - GridStack.renderCB = function (el, w) { - el.innerHTML = w.content; - }; - grid = GridStack.init({ - // 一行高度 - cellHeight, - // 间距 - margin: 0, - minRow: Math.floor(1080 / 2 / cellHeight), - maxRow: Math.floor(1080 / 2 / cellHeight), - acceptWidgets: true, - float: true, - removable: '#trash', - // subGridOpts: subOptions, - // subGridDynamic: true, - children: initData.children, - }); - GridStack.setupDragIn('#components-panel .component-item', undefined, [ - { - w: 2, - h: 2, - type: 'image', - name: '图片', - image: '', - eventsType: 'click', - eventsAction: '', - defaultFocus: false, - leftId: '', - rightId: '', - upId: '', - downId: '', - }, + self['grid'] = GridStack.init( { - w: 2, - h: 1, - type: 'text', - childrenType: '', - name: '文本', - background: '#fff', - fontSize: '14px', - color: '#333', - text: '文本', - fontWeight: 'normal', - eventsType: 'click', - eventsAction: '', - defaultFocus: false, - leftId: '', - rightId: '', - upId: '', - downId: '', + // 一行高度 + cellHeight, + // 间距 + margin: 0, + minRow: Math.floor(1080 / 2 / cellHeight), + maxRow: Math.floor(1080 / 2 / cellHeight), + acceptWidgets: true, + float: true, + removable: '#trash', + // subGridOpts: subOptions, + // subGridDynamic: true, + children: self['initData'].children, }, - ]); - console.log(grid, 'grid实例'); + `#${type}-screen` + ); + console.log(self['grid'], `${type}.grid实例`); // grid.load(initData.children); - grid.engine.nodes.forEach((item) => { - handleAddComponent(item); + self['grid'].engine.nodes.forEach((item) => { + handleAddComponent(item, self); }); - grid.on('added', function (_event, itemArray) { + self['grid'].on('added', function (_event, itemArray) { console.log(itemArray, '这里触发了添加了added事件'); itemArray.forEach((item) => { - handleAddComponent(item); + handleAddComponent(item, self); }); }); - grid.on('removed', function (_event, itemArray) { + self['grid'].on('removed', function (_event, itemArray) { console.log(itemArray, '这里触发了移除removed事件'); itemArray.forEach((item) => { handleRemoveComponent(item); @@ -105,7 +117,7 @@ }; // 处理添加组件之后的操作 - var handleAddComponent = (component) => { + var handleAddComponent = (component, self) => { if (!component.id) { component.id = `${component.type}_${generateUniqueId()}`; } @@ -124,13 +136,13 @@ // 将当前选中组件的属性显示在右侧列表中 setCurrentComponentProps(currentComponent); // 设置上下左右移动组件ID - setMoveComponentId(currentComponent); + setMoveComponentId(currentComponent, self); }); }; // 设置上下左右移动组件ID - var setMoveComponentId = function (component) { - const allComponents = grid.save(); + var setMoveComponentId = function (component, self) { + const allComponents = self['grid'].save(); if (allComponents.length <= 1) { return; } @@ -297,9 +309,9 @@ }; // 保存的时候计算x,y,w,h - var conputedInitData = function (type) { + var conputedInitData = function (type, self) { if (type === 'save') { - let initDataCopy = JSON.parse(JSON.stringify(initData)); + let initDataCopy = JSON.parse(JSON.stringify(self['initData'])); initDataCopy.children.forEach((item) => { item.xCopy = item.x; item.x = item.x * (1920 / 12); @@ -313,12 +325,13 @@ } item.hCopy = item.h; item.h = item.h * cellHeight * 2; + item.fontSize = item.fontSize ? parseInt(item.fontSize) : item.fontSize; }); console.log(initDataCopy); return initDataCopy; } if (type === 'init') { - initData.children.forEach((item) => { + self['initData'].children.forEach((item) => { item.x = item.xCopy; item.y = item.yCopy; item.w = item.wCopy; @@ -331,14 +344,18 @@ // grid.addWidget({ w: 2, content: 'item 1' }); // console.log(grid.save()); // console.log(grid); - initData.children = grid.save(); - console.log(initData); - localStorage.setItem('initData', JSON.stringify(conputedInitData('save'))); + main.initData.children = main.grid.save(); + welcome.initData.children = welcome.grid.save(); + console.log(main.initData); + console.log(welcome.initData); + localStorage.setItem('mainData', JSON.stringify(conputedInitData('save', main))); + localStorage.setItem('welcomeData', JSON.stringify(conputedInitData('save', welcome))); }); /** 执行方法 */ $(function () { - init(); + init('main', main); + init('welcome', welcome); // 调用绑定 bindComponentEvents(); });