mengshukeji 5 years ago
parent
commit
c235f2f9fc
  1. 75
      docs/zh/guide/contribute.md
  2. 5
      gulpfile.js
  3. 4
      package.json
  4. 2
      src/controllers/handler.js
  5. 2
      src/controllers/imageCtrl.js
  6. 16
      src/controllers/server.js
  7. 2
      src/controllers/sheetBar.js
  8. 2
      src/demoData/demoFeature.js
  9. 4
      src/demoData/sheetCell.js
  10. 4
      src/demoData/sheetChart.js
  11. 4
      src/demoData/sheetComment.js
  12. 4
      src/demoData/sheetConditionFormat.js
  13. 4
      src/demoData/sheetDataVerification.js
  14. 4
      src/demoData/sheetFormula.js
  15. 4
      src/demoData/sheetPicture.js
  16. 4
      src/demoData/sheetPivotTable.js
  17. 4
      src/demoData/sheetPivotTableData.js
  18. 4
      src/demoData/sheetSparkline.js
  19. 4
      src/demoData/sheetTable.js
  20. 39
      src/index.html

75
docs/zh/guide/contribute.md

@ -49,70 +49,71 @@
## 如何提交代码
1. fork 到自己的仓库
1. fork 到自己的仓库
进入  [Luckysheet](https://github.com/mengshukeji/Luckysheet)  的Github页面 ,点击右上角按钮 Fork 进行 Fork。
进入  [Luckysheet](https://github.com/mengshukeji/Luckysheet)  的Github页面 ,点击右上角按钮 Fork 进行 Fork。
2. git clone 到本地
2. git clone 到本地
```shell
git clone https://github.com/<your_github_name>/Luckysheet.git
git clone https://github.com/<your_github_name>/Luckysheet.git
```
3. 上游建立连接
3. 上游建立连接
```shell
cd Luckysheet
git remote add upstream https://github.com/mengshukeji/Luckysheet.git
git remote add upstream https://github.com/mengshukeji/Luckysheet.git
```
4. 检查远程仓库设置
4. 创建开发分支
```shell
git checkout -b dev
```
5. 修改提交代码
```shell
git remote -v
origin https://github.com/<your_github_name>/Luckysheet.git (fetch)
origin https://github.com/<your_github_name>/Luckysheet.git (push)
upstream https://github.com/mengshukeji/Luckysheet.git (fetch)
upstream https://github.com/mengshukeji/Luckysheet.git (push)
git add . 
npm run commit
git push origin dev
```
5. 获取 Luckysheet 仓库代码,并更新本地master分支代码为最新
6. 同步代码,将最新代码同步到本地
```shell
git fetch upstream
git pull upstream master
git fetch upstream 
git rebase upstream/master
```
6. 新建分支
7. 如果有冲突(没有可以忽略)
一般以issue id作为分支名,如:Luckysheet-123
```shell
git checkout -b Luckysheet-123
git status # 查看冲突文件,并修改冲突
git add .
git rebase --continue
```
**确保分支Luckysheet-123是基于官方master分支的最新代码**
分支创建完成后即可进行代码更改。
提交git rebase --continue命令的时候,如果弹出vim提示编辑commit信息,则可以添加你的修改,然后保存退出
vim命令请参考vim链接https://www.runoob.com/linux/linux-vim.html
7. 提交代码到远程分支
8. 提交分支代码
我们使用Angular规范来提交commit信息。
> 参考阅读[Git commit message 规范](https://juejin.im/post/6844903871832145927)
```shell
git push origin dev
```
commit 信息的格式必须与Issue标题保持一致且以[issue id]开头,即:[Luckysheet-123] xxx
如果提示需要先pull 可以先拉取在提交
```shell
npm run commit
git push origin Luckysheet-123
git pull origin dev
git push origin dev
```
8. 提交PR
* 打开自己的github仓库页面,如:`https://github.com/<your_github_name>/Luckysheet`
* 切换分支,切换到提交的分支 `Luckysheet-123`
* 创建新PR,点击 `New pull request`或者`Compare & pull request`
* 点击Create pull request按钮进行创建PR
### 提交PR需要注意以下几点:
1. PR的标题必须以issue id开头,最好与commit信息保持一致
2. 可以填写部分描述信息也可以不填
3. 如果点击`Create pull request`后提示代码冲突,则请将`Luckysheet-123`分支的代码 与master分支同步一致后在进行提交
若弹出vim提示编辑commit信息,可以直接通过vim命令退出
> vim命令请参考阅读[vim](https://www.runoob.com/linux/linux-vim.html)
9. 提交pr
去自己github仓库对应fork的项目,切换到刚刚创建修改的分支,点击new pull request,并添加上对应的描述,最后点击Create pull request进行提交
## 代码规范

5
gulpfile.js

@ -26,6 +26,7 @@ const commonjs = require('@rollup/plugin-commonjs');
const terser = require('rollup-plugin-terser').terser;
// rollup babel plugin, support the latest ES grammar
const babel = require('@rollup/plugin-babel').default;
// const gulpBabel = require('gulp-babel');
// Distinguish development and production environments
const production = process.env.NODE_ENV === 'production' ? true : false;
@ -247,6 +248,10 @@ function copyStaticExpendPlugins(){
function copyStaticDemoData(){
return src(paths.staticDemoData)
.pipe(dest(paths.destStaticDemoData));
// .pipe(gulpBabel({
// presets: ['@babel/env']
// }))
// .pipe(gulp.dest('dist'));
}
function copyStaticCssImages(){
return src(paths.staticCssImages)

4
package.json

@ -5,7 +5,8 @@
"module": "dist/luckysheet.esm.js",
"browser": "dist/luckysheet.umd.js",
"devDependencies": {
"@babel/preset-env": "^7.10.2",
"@babel/core": "^7.12.3",
"@babel/preset-env": "^7.12.1",
"@babel/runtime-corejs3": "^7.12.1",
"@commitlint/cli": "^9.1.1",
"@commitlint/config-conventional": "^9.1.1",
@ -17,6 +18,7 @@
"cross-env": "^7.0.2",
"delete": "^1.1.0",
"gulp": "^4.0.2",
"gulp-babel": "^8.0.0",
"gulp-clean-css": "^4.3.0",
"gulp-concat": "^2.6.1",
"gulp-if": "^3.0.0",

2
src/controllers/handler.js

@ -2356,7 +2356,7 @@ export default function luckysheetHandler() {
col = col_location[1],
col_pre = col_location[0],
col_index = col_location[2];
if ((x + 3) - Store.luckysheet_cols_change_size_start[0] > 30 && x < winW + scrollLeft - 100) {
$("#luckysheet-change-size-line").css({ "left": x });
$("#luckysheet-cols-change-size").css({ "left": x - 2 });

2
src/controllers/imageCtrl.js

@ -51,7 +51,7 @@ const imageCtrl = {
copyImgItemObj: null,
inserImg: function(src){
let _this = this;
let rowIndex = Store.luckysheet_select_save[0].row_focus || 0;
let colIndex = Store.luckysheet_select_save[0].column_focus || 0;
let left = colIndex == 0 ? 0 : Store.visibledatacolumn[colIndex - 1];

16
src/controllers/server.js

@ -12,6 +12,7 @@ import { getSheetIndex } from '../methods/get';
import Store from '../store';
import locale from '../locale/locale';
import dayjs from "dayjs";
import imageCtrl from './imageCtrl';
const server = {
gridKey: null,
@ -163,16 +164,21 @@ const server = {
//客户端接收服务端数据时触发
_this.websocket.onmessage = function(result){
let data = eval('(' + result.data + ')');
console.info(data);
let type = data.type;
Store.result = result
let data = eval('(' + result.data + ')');
console.info(data);
let type = data.type;
let {message,id} = data;
// 用户退出时,关闭协同编辑时其提示框
if(message === '用户退出') {
$("#luckysheet-multipleRange-show-" + id).hide();
}
if(type == 1){ //send 成功或失败
}
else if(type == 2){ //更新数据
let item = JSON.parse(data.data);
_this.wsUpdateMsg(item);
_this.wsUpdateMsg(item);
}
else if(type == 3){ //多人操作不同选区("t": "mv")(用不同颜色显示其他人所操作的选区)
let id = data.id;

2
src/controllers/sheetBar.js

@ -206,6 +206,8 @@ export function initialSheetBar(){
let $t = $(this), $cur = $(e.target);
luckysheetsheetrightclick($t, $cur, e);
let result = Store.result
server.websocket.onmessage(result)
});
let luckysheetsheetnameeditor = function ($t) {

2
src/demoData/demoFeature.js

@ -17,7 +17,7 @@
const text = language() === 'zh' ? '反馈' : 'Forum';
const link = language() === 'zh' ? 'https://support.qq.com/product/288322' : 'https://groups.google.com/g/luckysheet';
document.querySelector("body").insertAdjacentHTML('beforeend', `<a id="container" href="${link}" target="_blank" style="z-index:2;width:50px;height:50px;line-height:50px;position:fixed;right:40px;bottom:86px;border-radius:50px;cursor:pointer;background:rgb(71,133,249);color:#fff;text-align:center;text-decoration:none;">${text}</a>`);
document.querySelector("body").insertAdjacentHTML('beforeend', '<a id="container" href="'+ link +'" target="_blank" style="z-index:2;width:50px;height:50px;line-height:50px;position:fixed;right:40px;bottom:86px;border-radius:50px;cursor:pointer;background:rgb(71,133,249);color:#fff;text-align:center;text-decoration:none;">'+ text +'</a>');
}
supportButton()

4
src/demoData/sheetCell.js

@ -1,4 +1,4 @@
const sheetCell = {
window.sheetCell = {
"name": "Cell",
"config": {
"merge": {
@ -1575,4 +1575,4 @@ const sheetCell = {
"scrollLeft": 0,
"scrollTop": 0
}
export default sheetCell
// export default sheetCell

4
src/demoData/sheetChart.js

@ -1,4 +1,4 @@
const sheetChart = {
window.sheetChart = {
"name": "Chart",
"color": "",
"status": 0,
@ -4915,4 +4915,4 @@ const sheetChart = {
}]
}
export default sheetChart
// export default sheetChart

4
src/demoData/sheetComment.js

@ -1,4 +1,4 @@
const sheetComment = {
window.sheetComment = {
"name": "Comment",
"color": "",
"config": {
@ -64,4 +64,4 @@ const sheetComment = {
"scrollTop": 0
}
export default sheetComment;
// export default sheetComment;

4
src/demoData/sheetConditionFormat.js

@ -1,4 +1,4 @@
const sheetConditionFormat = {
window.sheetConditionFormat = {
"name": "Conditional Format",
"color": "",
"zoomRatio":1,
@ -6538,4 +6538,4 @@ const sheetConditionFormat = {
}]
}
export default sheetConditionFormat;
// export default sheetConditionFormat;

4
src/demoData/sheetDataVerification.js

@ -1,4 +1,4 @@
const sheetDataVerification = {
window.sheetDataVerification = {
"name": "Data Verification",
"index": "Sheet_pdolzzie5xwi_1600927444446",
"celldata": [{"r":0,"c":0,"v":{"ct":{"fa":"General","t":"g"},"m":"Drop Down List","v":"Drop Down List","bl":1}},{"r":0,"c":1,"v":{"m":"Checkbox","ct":{"fa":"General","t":"g"},"v":"Checkbox","bl":1}},{"r":0,"c":2,"v":{"ct":{"fa":"General","t":"g"},"v":"Number between 1-10","bl":1,"m":"Number between 1-10"}},{"r":0,"c":3,"v":{"m":"Text content include Luckysheet","ct":{"fa":"General","t":"g"},"v":"Text content include Luckysheet","bl":1}},{"r":0,"c":4,"v":{"ct":{"fa":"General","t":"g"},"v":"Text length between 1-5","m":"Text length between 1-5","bl":1}},{"r":0,"c":5,"v":{"m":"Date","ct":{"fa":"General","t":"g"},"v":"Date","bl":1}},{"r":0,"c":6,"v":{"m":"Identification Number","ct":{"fa":"General","t":"g"},"v":"Identification Number","bl":1}},{"r":0,"c":7,"v":{"m":"Phone Number","ct":{"fa":"General","t":"g"},"v":"Phone Number","bl":1}},{"r":1,"c":0,"v":{"ct":{"fa":"General","t":"g"},"v":"Fix","m":"Fix"}},{"r":1,"c":1,"v":{"m":"Fail","ct":{"fa":"General","t":"g"},"v":"Fail"}},{"r":1,"c":2,"v":{"v":1,"ct":{"fa":"General","t":"n"},"m":"1"}},{"r":1,"c":3,"v":{"m":"Luckysheet is good","ct":{"fa":"General","t":"g"},"v":"Luckysheet is good"}},{"r":1,"c":4,"v":{"m":"Welcome","ct":{"fa":"General","t":"g"},"v":"Welcome"}},{"r":1,"c":5,"v":{"m":"2020-09-24","ct":{"fa":"yyyy-MM-dd","t":"d"},"v":44098}},{"r":1,"c":6,"v":{"v":"311414199009138910","ct":{"fa":"@","t":"s"},"m":"311414199009138910"}},{"r":1,"c":7,"v":{"v":13678765439,"ct":{"fa":"General","t":"n"},"m":"13678765439"}},{"r":2,"c":0,"v":{"ct":{"fa":"General","t":"g"},"v":"Done","m":"Done"}},{"r":2,"c":1,"v":{"m":"Pass","ct":{"fa":"General","t":"g"},"v":"Pass"}},{"r":2,"c":2,"v":{"v":2,"ct":{"fa":"General","t":"n"},"m":"2"}},{"r":2,"c":3,"v":{"m":"I am Luckysheet","ct":{"fa":"General","t":"g"},"v":"I am Luckysheet"}},{"r":2,"c":4,"v":{"m":"Good","ct":{"fa":"General","t":"g"},"v":"Good"}},{"r":2,"c":5,"v":{"ct":{"fa":"General","t":"g"},"v":"Time","m":"Time"}},{"r":2,"c":6,"v":{"v":"31141419900913891","ct":{"fa":"@","t":"s"},"m":"31141419900913891"}},{"r":2,"c":7,"v":{"v":1367876544,"ct":{"fa":"General","t":"n"},"m":"1367876544"}},{"r":3,"c":0,"v":{"ct":{"fa":"General","t":"g"},"v":"Develop","m":"Develop"}},{"r":3,"c":1,"v":{"m":"Fail","ct":{"fa":"General","t":"g"},"v":"Fail"}},{"r":3,"c":2,"v":{"v":5,"ct":{"fa":"General","t":"n"},"m":"5"}},{"r":3,"c":3,"v":{"ct":{"fa":"General","t":"g"},"v":"I am luckyDemo","m":"I am luckyDemo"}},{"r":3,"c":4,"v":{"m":"Nice","ct":{"fa":"General","t":"g"},"v":"Nice"}},{"r":3,"c":5,"v":{"m":"2020-09-26","ct":{"fa":"yyyy-MM-dd","t":"d"},"v":44100}},{"r":3,"c":6,"v":{"v":"3114141990091389102","ct":{"fa":"@","t":"s"},"m":"3114141990091389102"}},{"r":3,"c":7,"v":{"v":136787654412,"ct":{"fa":"##0","t":"n"},"m":"136787654412"}},{"r":4,"c":0,"v":{"ct":{"fa":"General","t":"g"},"v":"Doing","m":"Doing"}},{"r":4,"c":1,"v":{"m":"Fail","ct":{"fa":"General","t":"g"},"v":"Fail"}},{"r":4,"c":2,"v":{"v":11,"ct":{"fa":"General","t":"n"},"m":"11"}},{"r":4,"c":3,"v":{"ct":{"fa":"General","t":"g"},"v":"Luckysheet Documentation","m":"Luckysheet Documentation"}},{"r":4,"c":4,"v":{"ct":{"fa":"General","t":"g"},"v":"Morning","m":"Morning"}},{"r":4,"c":5,"v":{"m":"2020-09-27","ct":{"fa":"yyyy-MM-dd","t":"d"},"v":44101}},{"r":4,"c":6,"v":{"v":"31141419900913891X","ct":{"fa":"@","t":"s"},"m":"31141419900913891X"}},{"r":4,"c":7,"v":{"v":49865342456,"ct":{"fa":"General","t":"n"},"m":"49865342456"}},{"r":5,"c":0,"v":{"ct":{"fa":"General","t":"g"},"v":"Develop","m":"Develop"}},{"r":5,"c":1,"v":{"m":"Fail","ct":{"fa":"General","t":"g"},"v":"Fail"}},{"r":5,"c":2,"v":{"v":3,"ct":{"fa":"General","t":"n"},"m":"3"}},{"r":5,"c":3,"v":{"m":"Luckyexcel","ct":{"fa":"General","t":"g"},"v":"Luckyexcel"}},{"r":5,"c":4,"v":{"ct":{"fa":"General","t":"g"},"v":"Tomorrow","m":"Tomorrow"}},{"r":5,"c":5,"v":{"ct":{"fa":"yyyy-MM-dd","t":"d"},"v":44071,"m":"2020-08-28"}},{"r":5,"c":6,"v":{"v":"Number","ct":{"fa":"@","t":"s"},"m":"Number"}},{"r":5,"c":7,"v":{"v":"Number","ct":{"fa":"General","t":"g"},"m":"Number"}},{"r":6,"c":0,"v":{"ct":{"fa":"General","t":"g"},"v":"Done","m":"Done"}},{"r":6,"c":1,"v":{"m":"Pass","ct":{"fa":"General","t":"g"},"v":"Pass"}},{"r":6,"c":2,"v":{"v":0,"ct":{"fa":"General","t":"n"},"m":"0"}},{"r":6,"c":3,"v":{"m":"Luckysheet Online","ct":{"fa":"General","t":"g"},"v":"Luckysheet Online"}},{"r":6,"c":4,"v":{"m":"Three","ct":{"fa":"General","t":"g"},"v":"Three"}},{"r":6,"c":5,"v":{"m":"2020-09-29","ct":{"fa":"yyyy-MM-dd","t":"d"},"v":44103}},{"r":6,"c":6,"v":{"v":"311414199301118910","ct":{"fa":"@","t":"s"},"m":"311414199301118910"}},{"r":6,"c":7,"v":{"v":23309873564,"ct":{"fa":"General","t":"n"},"m":"23309873564"}},{"r":7,"c":8,"v":{"v":null,"ct":{"fa":"General","t":"g"},"bl":1}}],
@ -576,4 +576,4 @@ const sheetDataVerification = {
}
}
}
export default sheetDataVerification;
// export default sheetDataVerification;

4
src/demoData/sheetFormula.js

@ -1,4 +1,4 @@
const sheetFormula = {
window.sheetFormula = {
"name": "Formula",
"color": "",
"config": {
@ -6597,4 +6597,4 @@ const sheetFormula = {
"frozen": {"type":"row"}
}
export default sheetFormula
// export default sheetFormula

4
src/demoData/sheetPicture.js

@ -1,4 +1,4 @@
const sheetPicture = {
window.sheetPicture = {
"name": "Picture",
"index": "Sheet_3e4oe25C757r_1600925108337",
"celldata": [],
@ -156,4 +156,4 @@ const sheetPicture = {
}
}
export default sheetPicture;
// export default sheetPicture;

4
src/demoData/sheetPivotTable.js

@ -1,4 +1,4 @@
const sheetPivotTable = {
window.sheetPivotTable = {
"name": "PivotTable",
"color": "",
"config": {},
@ -186,4 +186,4 @@ const sheetPivotTable = {
}
}
export default sheetPivotTable;
// export default sheetPivotTable;

4
src/demoData/sheetPivotTableData.js

@ -1,4 +1,4 @@
const sheetPivotTableData = {
window.sheetPivotTableData = {
"name": "PivotTableData",
"color": "",
"config": {
@ -738,4 +738,4 @@ const sheetPivotTableData = {
"scrollTop": 0
}
export default sheetPivotTableData;
// export default sheetPivotTableData;

4
src/demoData/sheetSparkline.js

@ -1,4 +1,4 @@
const sheetSparkline = {
window.sheetSparkline = {
"name": "Sparkline",
"color": "",
"config": {
@ -7063,4 +7063,4 @@ const sheetSparkline = {
"luckysheet_alternateformat_save": []
}
export default sheetSparkline;
// export default sheetSparkline;

4
src/demoData/sheetTable.js

@ -1,4 +1,4 @@
const sheetTable = {
window.sheetTable = {
"name": "Table",
"color": "",
"config": {
@ -1065,4 +1065,4 @@ const sheetTable = {
}]
}
export default sheetTable;
// export default sheetTable;

39
src/index.html

@ -21,25 +21,36 @@
<body>
<div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:100%;height:100%;left: 0px;top: 0px;"></div>
<!-- 2 -->
<!-- 1 -->
<!-- demo feature, non-production use -->
<script src="./demoData/demoFeature.js"></script>
<script src="./demoData/sheetFormula.js"></script>
<script src="./demoData/sheetCell.js"></script>
<script src="./demoData/sheetConditionFormat.js"></script>
<script src="./demoData/sheetTable.js"></script>
<script src="./demoData/sheetComment.js"></script>
<script src="./demoData/sheetPivotTableData.js"></script>
<script src="./demoData/sheetPivotTable.js"></script>
<script src="./demoData/sheetSparkline.js"></script>
<script src="./demoData/sheetChart.js"></script>
<script src="./demoData/sheetPicture.js"></script>
<script src="./demoData/sheetDataVerification.js"></script>
<script type="module">
import sheetFormula from './demoData/sheetFormula.js'
import sheetCell from './demoData/sheetCell.js'
import sheetConditionFormat from './demoData/sheetConditionFormat.js'
import sheetTable from './demoData/sheetTable.js'
import sheetComment from './demoData/sheetComment.js'
import sheetPivotTableData from './demoData/sheetPivotTableData.js'
import sheetPivotTable from './demoData/sheetPivotTable.js'
import sheetSparkline from './demoData/sheetSparkline.js'
import sheetChart from './demoData/sheetChart.js'
import sheetPicture from './demoData/sheetPicture.js'
import sheetDataVerification from './demoData/sheetDataVerification.js'
<script>
// import sheetFormula from './demoData/sheetFormula.js'
// import sheetCell from './demoData/sheetCell.js'
// import sheetConditionFormat from './demoData/sheetConditionFormat.js'
// import sheetTable from './demoData/sheetTable.js'
// import sheetComment from './demoData/sheetComment.js'
// import sheetPivotTableData from './demoData/sheetPivotTableData.js'
// import sheetPivotTable from './demoData/sheetPivotTable.js'
// import sheetSparkline from './demoData/sheetSparkline.js'
// import sheetChart from './demoData/sheetChart.js'
// import sheetPicture from './demoData/sheetPicture.js'
// import sheetDataVerification from './demoData/sheetDataVerification.js'
// According to the browser language
let lang = luckysheetDemoUtil.language() === 'zh' ? 'zh' : 'en';
var lang = luckysheetDemoUtil.language() === 'zh' ? 'zh' : 'en';
$(function () {
luckysheet.create({

Loading…
Cancel
Save