Browse Source

DatePickerCellType

zhongzewei 7 years ago
parent
commit
17b63300a8

+ 3 - 0
config/gulpConfig.js

@@ -31,6 +31,7 @@ module.exports = {
     ],
     main_css:[
         'lib/ztree/css/zTreeStyle.css',
+        'lib/jquery-ui/jquery-ui.css',
         'lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css',
         'lib/spreadjs/views/gc.spread.views.dataview.10.0.0.css',
         'lib/jquery-contextmenu/jquery.contextMenu.css'
@@ -38,6 +39,8 @@ module.exports = {
     main_jspaths:[
         'lib/JSExpressionEval_src/*.js',
         '!lib/JSExpressionEval_src/JsHashMap.js',
+        'lib/jquery-ui/jquery-ui.min.js',
+        'lib/jquery-ui/jquery-ui-datepickerCN.js',
         'lib/jquery-contextmenu/*.js',
         'lib/lodash/lodash.js',
         'web/building_saas/main/js/models/main_consts.js',

+ 36 - 0
lib/jquery-ui/jquery-ui-datepickerCN.js

@@ -0,0 +1,36 @@
+/**
+ * Created by Zhong on 2017/11/27.
+ */
+jQuery(function($){
+    $.datepicker.regional['zh-CN'] = {
+        clearText: '清除',
+        clearStatus: '清除已选日期',
+        closeText: '关闭',
+        closeStatus: '不改变当前选择',
+        prevText: '< 上月',
+        prevStatus: '显示上月',
+        prevBigText: '<<',
+        prevBigStatus: '显示上一年',
+        nextText: '下月>',
+        nextStatus: '显示下月',
+        nextBigText: '>>',
+        nextBigStatus: '显示下一年',
+        currentText: '今天',
+        currentStatus: '显示本月',
+        monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+        monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
+        monthStatus: '选择月份',
+        yearStatus: '选择年份',
+        weekHeader: '周',
+        weekStatus: '年内周次',
+        dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
+        dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
+        dayNamesMin: ['日','一','二','三','四','五','六'],
+        dayStatus: '设置 DD 为一周起始',
+        dateStatus: '选择 m月 d日, DD',
+        dateFormat: 'yy-mm-dd',
+        firstDay: 1,
+        initStatus: '请选择日期',
+        isRTL: false};
+    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
+});

File diff suppressed because it is too large
+ 1312 - 0
lib/jquery-ui/jquery-ui.css


File diff suppressed because it is too large
+ 13 - 0
lib/jquery-ui/jquery-ui.min.js


+ 3 - 0
web/building_saas/main/html/main.html

@@ -13,6 +13,7 @@
     <!--zTree-->
     <link rel="stylesheet" href="/lib/ztree/css/zTreeStyle.css" type="text/css">
     <!--SpreadJs-->
+    <link rel="stylesheet" href="/lib/jquery-ui/jquery-ui.css" type="text/css">
     <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css" type="text/css">
     <link rel="stylesheet" href="/lib/spreadjs/views/gc.spread.views.dataview.10.0.0.css">
     <!-- jquery.contextmenu -->
@@ -645,6 +646,8 @@
         <script src="/lib/JSExpressionEval_src/Tokanizer.js"></script>
         <script src="/lib/JSExpressionEval_src/Evaluator.js"></script>
         <!--end expression calculate-->
+        <script type="text/javascript" src="/lib/jquery-ui/jquery-ui.min.js"></script>
+        <script type="text/javascript" src="/lib/jquery-ui/jquery-ui-datepickerCN.js"></script>
         <script type="text/javascript" src="/lib/jquery-contextmenu/jquery.contextMenu.js"></script>
         <script type="text/javascript" src="/lib/jquery-contextmenu/jquery.ui.position.js"></script>
         <script type="text/javascript" src="/lib/lodash/lodash.js"></script>

+ 68 - 1
web/building_saas/main/js/views/project_property_basicInfo.js

@@ -39,9 +39,19 @@ let basicInfoView = {
         }
     },
 
+    setDatePicker: function (sheet, dateRows) {
+        let me = this;
+        this.renderSheetFuc(sheet, function () {
+            for(let i = 0, len = dateRows.length; i < len; i++){
+                sheet.getCell(dateRows[i], 1).cellType(me.getDatePickerCellType()).width(100).formatter('yyyy-mm-dd');
+            }
+        });
+    },
+
     buildHeader: function (sheet, headers) {
         let me = basicInfoView;
         let fuc = function () {
+            sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;
             sheet.setColumnCount(headers.length);
             sheet.setRowHeight(0, 40, GC.Spread.Sheets.SheetArea.colHeader);
             for(let i = 0, len = headers.length; i < len; i++){
@@ -77,6 +87,7 @@ let basicInfoView = {
         let fuc = function () {
             sheet.setRowCount(datas.length);
             me.initTree(sheet, true, datas);
+            me.setDatePicker(sheet, me.setting.dateRows);
             sheet.setFormatter(-1, 1, '@');
             for(let col = 0, cLen = cols.length; col < cLen; col++){
                 sheet.getRange(-1, col, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign[cols[col]['hAlign']]);
@@ -107,6 +118,7 @@ let basicInfoView = {
             //date
             if(me.setting.dateRows.indexOf(args.row) !== -1){
                 if(v.length > 0){
+                    v = formatDate(new Date(v), 'yyyy-MM-dd')
                     v = me.filtDate(v);
                     if(!v){
                         alert('请输入正确的日期格式yyyy-mm-dd');
@@ -130,6 +142,7 @@ let basicInfoView = {
         let me = basicInfoView;
         let items = sheetCommonObj.analyzePasteData(me.setting, args);
         let recRows = [];
+        console.log('enter');
         for(let i = 0, len = items.length; i < len; i++){
             let row = i + args.cellRange.row;
             if(me.setting.locked.rows.indexOf(row) !== -1){
@@ -137,7 +150,9 @@ let basicInfoView = {
             }
             else if(me.setting.dateRows.indexOf(row) !== -1){
                 items[i].value = me.filtDate(items[i].value);
-                if(!items[i].value){
+                console.log(items.value);
+                if(!me.isDef(items[i].value)){
+                    console.log('aa');
                     recRows.push(row);
                 }
                 else {
@@ -148,6 +163,8 @@ let basicInfoView = {
                 me.datas[row].value = items[i].value;
             }
         }
+        console.log(recRows);
+        console.log(me.datas);
         if(recRows.length > 0){
             me.renderSheetFuc(args.sheet, function () {
                 for(let i = 0, len = recRows.length; i < len; i++){
@@ -369,7 +386,57 @@ let basicInfoView = {
             }
         };
         return new TreeNodeCellType()
+    },
+
+    getDatePickerCellType: function () {
+        let ns = GC.Spread.Sheets;
+
+        function DatePickerCellType() {
+        }
+        DatePickerCellType.prototype = new GC.Spread.Sheets.CellTypes.Base();
+
+        DatePickerCellType.prototype.createEditorElement = function (context) {
+            //Create input presenter.
+            return document.createElement("input");
+        };
+        DatePickerCellType.prototype.activateEditor = function (editorContext, cellStyle, cellRect, context) {
+            //Initialize input editor.
+            if (editorContext) {
+                $editor = $(editorContext);
+                //DatePickerCellType.prototype.activateEditor.apply(this, arguments);
+                $editor.datepicker({dateFormat: 'yy-mm-dd'});
+                $editor.css("position", "absolute");
+                $editor.attr("gcUIElement", "gcEditingInput");
+                $(".ui-datepicker").attr("gcUIElement", "gcEditingInput");
+            }
+        }
+        DatePickerCellType.prototype.deactivateEditor = function (editorContext, context) {
+            //Remove input editor when end editor status.
+            if (editorContext) {
+                var element = editorContext;
+                $(element).datepicker("hide");
+                $(element).datepicker("destroy");
+            }
+           // DatePickerCellType.prototype.deactivateEditor.apply(this, arguments)
+        };
+        DatePickerCellType.prototype.setEditorValue = function (editor, value, context) {
+            //Sync value from Cell value to editor value.
+            $(editor).datepicker("setDate", value);
+        };
+        DatePickerCellType.prototype.getEditorValue = function (editor, context) {
+            //Sync value from editor value to cell value.
+            return $(editor).datepicker("getDate");
+        };
+        DatePickerCellType.prototype.updateEditor = function (editorContext, cellStyle, cellRect, context) {
+            if (editorContext) {
+                $editor = $(editorContext);
+                $editor.css("width", cellRect.width - 1);
+                $editor.css("height", cellRect.height - 3);
+            }
+        };
+        return new DatePickerCellType();
     }
+
 };
 
 $(document).ready(function () {