浏览代码

默认模板库

chenshilong 6 年之前
父节点
当前提交
b09dc0e30a

+ 1 - 1
modules/all_models/block_lib_model.js

@@ -26,7 +26,7 @@ let dataSchema = new Schema({
 let blockLibsSchema = new Schema({
     userID: String,
     compilationID: String,
-    libID: Number,
+    libID: String,
     libName: String,
     datas: [dataSchema],
     share: {}

+ 41 - 14
modules/main/facade/block_lib_facade.js

@@ -4,17 +4,19 @@
 
 let mongoose = require('mongoose');
 let blModel = mongoose.model('blockLibsModel');
+let uuid = require('../../../public/web/uuid');
 
 module.exports = {
     getLibNames: getLibNames,
     getLib: getLib,
     getLibNamesAndFirstLib: getLibNamesAndFirstLib,
+    copyTemplateLib: copyTemplateLib,
     saveBlock: saveBlock
 };
 
 // userID、compilationID
 async function getLibNames(data) {
-    let libNames = await blModel.find({userID: data.userID, compilation: data.compilationID}, ["libID","libName","-_id"]);
+    let libNames = await blModel.find({userID: data.userID, compilationID: data.compilationID}, ["libID","libName","-_id"]);
     return libNames;
 };
 
@@ -27,30 +29,55 @@ async function getLib(data) {
 // userID、compilationID
 async function getLibNamesAndFirstLib(data) {
     let libNames = await getLibNames(data);
-    let firstLib = await getLib(libNames[0]);
-    return {libNames: libNames, firstLib: firstLib};
+    let lib = null;
+    if (libNames.length == 0){
+        lib = await copyTemplateLib(data.userID, data.userName, data.compilationID);
+        libNames.push({libID: lib.libID, libName: lib.libName});
+    }
+    else{
+        lib = await getLib(libNames[0]);
+    }
+    return {libNames: libNames, firstLib: lib};
+};
+
+
+async function copyTemplateLib(userID, userName, compilationID) {
+    let template = await getLib({libID: '00000000'});
+    let newLib = {
+        userID: userID,
+        compilationID: compilationID,
+        libID: uuid.v1(),
+        libName: `${userName}的块模板库`,
+        datas: template.datas,
+        share: template.share
+    };
+    newLib.share.shareName = `共享-${newLib.libName}`;
+    await blModel.create(newLib);
+    console.log(JSON.stringify(newLib));
+    return newLib;
 };
 
 /*------------------------------------------------------------------------------
-data参数示例:
-        {
-            libID: 3,
-            nodeID: 5,
-            create: {node}
-            delete: true
-            update: {nodeName: 'xxx', children: [...]}
-        }
+参数:   {libID: n, nodeID: m, create: {node} | delete: true | update: {A:'xxx', B:'xxx'} }
 说明:   libID、nodeID 必须。 create|update|delete三选一。
-        create属性值是完整的node节点数据。
-        delete属性值是true。
-        update属性值是要修改的属性键值对组成的对象。
+        create属性值:完整的node节点数据。
+        delete属性值:固定为true(false没有实际意义)。
+        update属性值:列出多个要修改的结点属性(键值对组成的对象)。
+示例:   {libID: 3, nodeID: 5, create: {....}}
+        {libID: 3, nodeID: 5, delete: true}
+        {libID: 3, nodeID: 5, update: {nodeName: 'xxx', children: [...]} }
 ------------------------------------------------------------------------------*/
 async function saveBlock(data) {
     if (data.create) {
         await blModel.update({libID: data.libID}, {$addToSet: {datas: data.create}});
     }
     if (data.delete) {
+        console.log(JSON.stringify(data));
+        console.log(data.nodeID);
         await blModel.update({libID: data.libID}, {$pull: {datas: {ID: data.nodeID}}});
+        if (data.delete.nodeType == 1){    // 同步删除所有子结点
+            await blModel.update({libID: data.libID}, {$pull: {datas: {ParentID: data.nodeID}}});
+        }
     }
     else if (data.update){
         let doc = await blModel.findOne({libID: data.libID});

+ 5 - 3
web/building_saas/main/js/views/block_lib.js

@@ -72,7 +72,8 @@ var blockLibObj = {
     buildSheet: async function () {
         $.bootstrapLoading.start();
         let me = this;
-        let namesAndLib = await ajaxPost('/blockLib/getLibNamesAndFirstLib', {userID: userID, compilationID: projectInfoObj.projectInfo.compilation});
+        let namesAndLib = await ajaxPost('/blockLib/getLibNamesAndFirstLib',
+            {userID: userID, userName: userName, compilationID: projectInfoObj.projectInfo.compilation});
         function getLibNamesHtml(libsArr) {
             let result = '';
             for (let lib of libsArr) {
@@ -436,10 +437,11 @@ var blockLibObj = {
         // this.mainTreeController.moveTo(parentID);
     },
     delete: async function () {
+        let node = blockLibObj.mainTree.selected;
         let obj = {
             libID: blockLibObj.activeLib.libID,
-            nodeID: blockLibObj.mainTree.selected.data.ID,
-            delete: true
+            nodeID: node.data.ID,
+            delete: {nodeType: node.data.type}
         };
         await ajaxPost('/blockLib/saveBlock', obj);
         this.mainTreeController.delete();

+ 6 - 1
web/common/html/header.html

@@ -31,7 +31,12 @@
     <div class="ml-auto navbar-text p-0">
         <ul class="nav navbar-nav">
             <li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown"><%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %></a>
+                <!--<a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown"><%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %></a>-->
+                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" id="link_userName"></a>
+                <script>
+                    let userName = "<%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %>";
+                    document.getElementById('link_userName').innerHTML = userName;
+                </script>
                 <div class="dropdown-menu dropdown-menu-right">
                     <a class="dropdown-item" href="/user/info" target="_blank">账号资料</a>
                     <a class="dropdown-item" href="/user/buy" target="_blank">产品激活</a>