root 4 yıl önce
ebeveyn
işleme
fc879d5ae3
6 değiştirilmiş dosya ile 99 ekleme ve 35 silme
  1. 2 1
      .gitignore
  2. 1 0
      cocoblockly.css
  3. 5 6
      index.html
  4. 14 13
      index.js
  5. 5 5
      python/src/blockly/account.js
  6. 72 10
      src/blockly/account.js

+ 2 - 1
.gitignore

@@ -1,2 +1,3 @@
-LenovoBlockpy Installer v1.0.12.exe
+LenovoBlockpy.exe
+LenovoBlockpy.pkg
 lxhelp/

+ 1 - 0
cocoblockly.css

@@ -36,6 +36,7 @@
 }
 
 .material-icons {
+    display: none;
     font-family: 'Material Icons';
     font-weight: normal;
     font-style: normal;

+ 5 - 6
index.html

@@ -217,7 +217,7 @@
                             <li id="button_save">
                                 <span class="translatable_export_local_file">保存到本地</span>
                             </li>
-                            <li id="button_save_cloud">
+                            <li id="button_save_cloud" class='modal-trigger' href="#cloud_storage_modal">
                                 <span class="translatable_export_cloud_file">保存到云端</span>
                             </li>
                         </ul>
@@ -241,12 +241,10 @@
                                 <span class="translatable_download_uploader">下载安装程序</span>
                                 <ul id="plugin_mac_or_windows" class='dropdown-content'
                                     style="display:none; position: fixed; left: 320px; top: 64px;">
-                                    <li id="Mac"
-                                        onclick="openUrl('./LenovoBlockpy Installer v1.0.12.pkg')">
+                                    <li id="Mac" onclick="openUrl('./LenovoBlockpy.pkg')">
                                         <span><img src="./icons/mac-icon.png">Mac</span>
                                     </li>
-                                    <li id="Windows"
-                                        onclick="openUrl('./LenovoBlockpy Installer v1.0.12.exe')">
+                                    <li id="Windows" onclick="openUrl('./LenovoBlockpy.exe')">
                                         <span><img src="./icons/windows-icon.png">Windows</span>
                                     </li>
                                 </ul>
@@ -330,6 +328,7 @@
                                 <div style="border: none;"><a href="javaScript:(0)" style="color: #424242 !important;"
                                         class="translatable_iot_module">IoT Module
                                         Mode</a></div>
+
                                 <div style="border: none;"><a id="python_full_screen" style="color: #424242 !important;"
                                         class="translatable_python_full_screen_mode">Cloud
                                         Mode</a></div>
@@ -1402,7 +1401,7 @@
             </ul>
             <a id='side-storage-trigger' class='dropdown-button' data-activates='side-storage'></a>
             <ul id='side-storage' class='dropdown-content'>
-                <li class='modal-trigger'  style="display:none;">
+                <li class='modal-trigger' style="display:none;">
                     <span class="translatable_cloud_storage">Cloud</span>
                 </li>
                 <li class="divider"></li>

+ 14 - 13
index.js

@@ -474,9 +474,10 @@ window.onload = function () {
   })
 
   $("#button_save_cloud").click(() => {
-    var code = Ardublockly.generateXml();
-    var title = $("#sketch_name").val() != '' ? $("#sketch_name").val() : '未命名';
-    savelxfile(code, title, showSaveToast);
+
+    // var code = Ardublockly.generateXml();
+    // var title = $("#sketch_name").val() != '' ? $("#sketch_name").val() : '未命名';
+    // savelxfile(code, title, showSaveToast);
   })
 }
 
@@ -1218,7 +1219,7 @@ function export_data(data, postfix, is_firefox) {
 // 积木生成
 function selectmode(sel, isload) {
   var _type = getLocalStorage("type");
-  if (sel.selectedIndex == 1 && (_type != 1 || isload === true)) {
+  if (sel.selectedIndex == 0 && (_type != 1 || isload === true)) {
     saveLocalStorageBlocks("pythonai-mode-blocks-xml");
     saveLocalStorage("type", 1);
     blockpy.setAssignment(
@@ -1238,7 +1239,7 @@ function selectmode(sel, isload) {
     );
     loadLocalStorageBlocks("pythonmc-mode-blocks-xml")
   }
-  else if (sel.selectedIndex == 0 && (_type != 0 || isload === true)) {
+  else if (sel.selectedIndex == 1 && (_type != 0 || isload === true)) {
     saveLocalStorageBlocks("pythonmc-mode-blocks-xml");
     saveLocalStorage("type", 0);
     blockpy.setAssignment(
@@ -1445,12 +1446,12 @@ function appearExample(type) {
   }
 }
 
-function savelxfile(code, title, cb) {
+function savelxfile(title, code, cb) {
   var _token = window.localStorage.Token;
   if (_token) {
-    $.ajax(`https://demo-lecode.smartedu.lenovo.com/api/web/v1/blockpy/project/add`, {
+    $.ajax(`/api/web/v1/blockpy/project/add`, {
       type: "POST",
-      headers: { 'Authorization': "Bearer " + _token},
+      headers: { 'Authorization': "Bearer " + _token },
       data: { code: code, title: title },
       success: (data) => {
         cb(data)
@@ -1462,7 +1463,7 @@ function savelxfile(code, title, cb) {
 function getlxfiles(page, cb) {
   var _token = window.localStorage.Token;
   if (_token) {
-    $.ajax(`https://demo-lecode.smartedu.lenovo.com/api/web/v1/blockpy/project/list`, {
+    $.ajax(`/api/web/v1/blockpy/project/list`, {
       type: "GET",
       headers: { 'Authorization': "Bearer " + _token },
       data: "pageNumber=" + "&" + page + "pageSize=500",
@@ -1501,7 +1502,7 @@ function getFileList(data) {
   }
 }
 
-function dellxfilebyid(id) {
+function dellxfilebyid(id, cb) {
   var _token = window.localStorage.Token;
   if (_token) {
     $.ajax(`/api/web/v1/blockpy/project/del/` + id, {
@@ -1514,12 +1515,12 @@ function dellxfilebyid(id) {
   }
 }
 
-function upadtelxfilenamebyid(id, title) {
+function upadtelxfilenamebyid(id, title, cb) {
   var _token = window.localStorage.Token;
   if (_token) {
     $.ajax(`/api/web/v1/blockpy/project/title/update`, {
       type: "POST",
-      headers: { 'Authorization': "Bearer " + _token},
+      headers: { 'Authorization': "Bearer " + _token },
       data: { id: id, title: title },
       success: (data) => {
         cb(data)
@@ -1529,7 +1530,7 @@ function upadtelxfilenamebyid(id, title) {
 }
 
 
-function uploadlxfilecontentbyid(id, code) {
+function uploadlxfilecontentbyid(id, code, cb) {
   var _token = window.localStorage.Token;
   if (_token) {
     $.ajax(`/api/web/v1/blockpy/project/code/update`, {

+ 5 - 5
python/src/blockly/account.js

@@ -436,12 +436,12 @@ function updateCloudFilePanel() {
         '" class="card ">' +
         // * *
         '  <ul class="cloud-btnPanel">' +
-        '    <li class="cloudBtn-open"><img src="./images/cloudfileopen.png" class="material-icons" style="width:22px;margin-right:6px;top:-1px;position:relative;cursor:pointer" onclick="fileOpen(' + i + ')"></li>' +
-        '    <li class="cloudBtn-share"><i class="material-icons" href="#share" onclick="fileShare(' + i + ')" >share</i></li>' +
+        '    <li class="cloudBtn-open"><img src="./images/cloudfileopen.png" class="material-icons" style="width:22px;margin-right:6px;top:-1px;position:relative;cursor:pointer" onclick="fileOpen(' + CCB.cloudFileList[i].filenameId + ')"></li>' +
+        //'    <li class="cloudBtn-share"><i class="material-icons" href="#share" onclick="fileShare(' + i + ')" >share</i></li>' +
         // '    <li style="float:left;" class="unblock cloudBtn-update"><i class="material-icons" onclick="fileUpdate(' + i + ')">save</i></li>' +
-        '    <li style="float:left;" class="cloudBtn-update"><i class="material-icons" onclick="fileUpdate(' + i + ')">save</i></li>' +
-        '    <li class="cloudBtn-rename"><i class="material-icons" onclick="fileRename(' + i + ')">edit</i></li>' +
-        '    <li class="cloudBtn-delete"><i class="material-icons" onclick="fileDelete(' + i + ')">delete</i></li>' +
+        '    <li style="float:left;" class="cloudBtn-update"><i class="material-icons" onclick="fileUpdate(' + CCB.cloudFileList[i].filenameId + ')">save</i></li>' +
+        '    <li class="cloudBtn-rename"><i class="material-icons" onclick="fileRename(' + CCB.cloudFileList[i].filenameId + ')">edit</i></li>' +
+        '    <li class="cloudBtn-delete"><i class="material-icons" onclick="fileDelete(' + CCB.cloudFileList[i].filenameId + ')">delete</i></li>' +
         "  </ul>" +
         //icon option:  remove_red_eye , place , personal_video , nature, edit_location ,bookmark
         // lock icon : https

+ 72 - 10
src/blockly/account.js

@@ -150,10 +150,10 @@ function createCloudFile(filename) {
  * AJAX to get file in the cloud and load into workspace
  * @param {String} filename : the name of file
  */
-function openCloudFile(filename) {
+function openCloudFile(fileid) {
   var _token = window.localStorage.Token;
   if (_token) {
-    $.ajax(`https://demo-lecode.smartedu.lenovo.com/api/web/v1/blockpy/project/` + filename, {
+    $.ajax(`/api/web/v1/blockpy/project/` + fileid, {
       type: "GET",
       headers: { 'Authorization': "Bearer " + _token },
       before: () => { $("#cloud_modal_preload").css("display", "block") },
@@ -161,12 +161,12 @@ function openCloudFile(filename) {
         var file = data.data.instructions;
         var date = data.data.updateTime;
         Materialize.toast(CCB.str_group.success_downloadFile, 4000);
-        loadCloudXmlFile(file, data.data.id);
+        loadCloudXmlFile(file, data.data.title);
         $("#cloud_storage_modal").modal("close");
         $("#cloud_modal_preload").css("display", "none");
         let i = indexGet(data.data.id, CCB.cloudFileList);
-        CCB.selectCloudFile = filename;
-        relistCloudFile(filename);
+        CCB.selectCloudFile = fileid;
+        relistCloudFile(data.data.title);
         updateCloudFilePanel();
       },
       error: () => {
@@ -438,7 +438,7 @@ function updateCloudFilePanel() {
         // * *
         '  <ul class="cloud-btnPanel">' +
         '    <li class="cloudBtn-open"><img src="./images/cloudfileopen.png" class="material-icons" style="width:22px;margin-right:6px;top:-1px;position:relative;cursor:pointer" onclick="fileOpen(' + i + ')"></li>' +
-        '    <li class="cloudBtn-share"><i class="material-icons" href="#share" onclick="fileShare(' + i + ')" >share</i></li>' +
+        //'    <li class="cloudBtn-share"><i class="material-icons" href="#share" onclick="fileShare(' + CCB.cloudFileList[i].filenameId + ')" >share</i></li>' +
         // '    <li style="float:left;" class="unblock cloudBtn-update"><i class="material-icons" onclick="fileUpdate(' + i + ')">save</i></li>' +
         '    <li style="float:left;" class="cloudBtn-update"><i class="material-icons" onclick="fileUpdate(' + i + ')">save</i></li>' +
         '    <li class="cloudBtn-rename"><i class="material-icons" onclick="fileRename(' + i + ')">edit</i></li>' +
@@ -543,7 +543,18 @@ function copyText(text) {
  */
 function fileUpdate(i) {
   $("#cloud_modal_preload").css("display", "block")
-  updateCloudFile(CCB.cloudFileList[i].filename);
+  uploadlxfilecontentbyid(CCB.cloudFileList[i].filenameId, Ardublockly.generateXml(), function (data) {
+    if (data.success) {
+      $("#cloud_modal_preload").css("display", "none");
+      Materialize.toast(CCB.str_group.success_updateFile, 4000);
+      $("#cloud_time" + i).html(getCurrentDate());
+    }
+    else {
+      $("#cloud_modal_preload").css("display", "none");
+      Materialize.toast(CCB.str_group.error_updateFile, 4000);
+    }
+  })
+  //updateCloudFile(CCB.cloudFileList[i].filename);
 }
 
 /**
@@ -575,7 +586,21 @@ function confirmRename(i) {
   if (filename == originname) {
     cloudFileState("over", i);
   } else if (checkFileName(filename)) {
-    renameCloudFile(filename, originname);
+    upadtelxfilenamebyid(CCB.cloudFileList[i].filenameId, filename, function (data) {
+      if (data.success) {
+        $("#cloud_modal_preload").css("display", "none");
+        Materialize.toast(CCB.str_group.success_renameFile, 4000);
+        CCB.cloudFileList[i].filename = filename;
+        $("#cloud_name" + i).html(filename + ".xml");
+        document.getElementById("cloud_name" + i).title = filename + ".xml";
+        cloudFileState("over", i);
+      }
+      else {
+        $("#cloud_modal_preload").css("display", "none");
+        Materialize.toast(CCB.str_group.error_renameFile, 4000);
+      }
+
+    });
   }
 }
 
@@ -592,7 +617,23 @@ function cancelRename(i) {
  * check the current filelist and launch a funciton to rename it
  */
 function confirmDelete(i) {
-  deleteCloudFile(CCB.cloudFileList[i].filename);
+  // deleteCloudFile(CCB.cloudFileList[i].filename);
+  dellxfilebyid(CCB.cloudFileList[i].filenameId, function (data) {
+    if (data.success) {
+      $("#cloud_modal_preload").css("display", "none");
+      Materialize.toast(CCB.str_group.success_deleteFile, 4000);
+      if (CCB.selectCloudFile == CCB.cloudFileList[i].filenameId) {
+        CCB.selectCloudFile = null;
+      }
+      CCB.cloudFileList.splice(i, 1);
+      cloudFileState("over", i);
+      updateCloudFilePanel();
+    }
+    else {
+      $("#cloud_modal_preload").css("display", "none");
+      Materialize.toast(CCB.str_group.error_deleteFile, 4000);
+    }
+  })
 }
 
 /**
@@ -617,7 +658,28 @@ function confirmCreateNew() {
   var filename = $("#cloud_sketch_name").val();
   filename = filename.replace(/(\s*$)/g, "");
   if (checkFileName(filename) && filename !== '') {
-    createCloudFile(filename);
+    savelxfile(filename, Ardublockly.generateXml(), function (data) {
+      if (data.success) {
+        $("#cloud_modal_preload").css("display", "none");
+        Materialize.toast(CCB.str_group.success_uploadFile, 4000);
+        let fileobject = {
+          filenameId: data.data.id,
+          filename: filename,
+          time: getCurrentDate(),
+          timestamp: (new Date()).valueOf()
+        };
+        CCB.cloudFileList.push(fileobject);
+        CCB.selectCloudFile = data.data.filenameid;
+        relistCloudFile(filename);
+        updateCloudFilePanel();
+        cloudFileState("over", 0);
+      }
+      else {
+        $("#cloud_modal_preload").css("display", "none");
+        Materialize.toast(CCB.str_group.error_uploadFile, 4000);
+      }
+    })
+
   }
 }