|
@@ -52,6 +52,8 @@ let locateObject={
|
|
|
colHeaderHeight:30
|
|
colHeaderHeight:30
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
+ bookmarkDatas:[],
|
|
|
|
|
+ seletedNodeID:null,//右键设置书签时选中的节点ID临时存储
|
|
|
//为了兼容旧项目,这里给个默认值
|
|
//为了兼容旧项目,这里给个默认值
|
|
|
bookmarkPropertySetting:{
|
|
bookmarkPropertySetting:{
|
|
|
settingList :[
|
|
settingList :[
|
|
@@ -102,10 +104,12 @@ let locateObject={
|
|
|
this.bookmarkSpread = SheetDataHelper.createNewSpread($("#bookmarkSpread")[0]);
|
|
this.bookmarkSpread = SheetDataHelper.createNewSpread($("#bookmarkSpread")[0]);
|
|
|
sheetCommonObj.spreadDefaultStyle(this.bookmarkSpread);
|
|
sheetCommonObj.spreadDefaultStyle(this.bookmarkSpread);
|
|
|
this.initBookmarkSheet();
|
|
this.initBookmarkSheet();
|
|
|
- // this.subSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick,this.onSheetDoubleClick);
|
|
|
|
|
|
|
+ this.bookmarkSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick,this.onSheetDoubleClick);
|
|
|
|
|
+ if(!projectReadOnly) this.initBookmarkRightClick();
|
|
|
}else {
|
|
}else {
|
|
|
this.bookmarkSpread.refresh();
|
|
this.bookmarkSpread.refresh();
|
|
|
}
|
|
}
|
|
|
|
|
+ this.showBookmarkDatas();
|
|
|
},
|
|
},
|
|
|
refreshWorkBook: function () {
|
|
refreshWorkBook: function () {
|
|
|
if (this.mainSpread) this.mainSpread.refresh();
|
|
if (this.mainSpread) this.mainSpread.refresh();
|
|
@@ -124,6 +128,7 @@ let locateObject={
|
|
|
sheetCommonObj.initSheet( this.bookmarkSheet, this.bookMarkSetting);
|
|
sheetCommonObj.initSheet( this.bookmarkSheet, this.bookMarkSetting);
|
|
|
this.bookmarkSheet.setRowCount(0);
|
|
this.bookmarkSheet.setRowCount(0);
|
|
|
this.bookmarkSheet.name('bookmark');
|
|
this.bookmarkSheet.name('bookmark');
|
|
|
|
|
+ this.bookmarkSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.bookmarkSelectionChange);
|
|
|
},
|
|
},
|
|
|
initOutstanding:function () {
|
|
initOutstanding:function () {
|
|
|
if(!projectObj.project.property.locateSetting) return;
|
|
if(!projectObj.project.property.locateSetting) return;
|
|
@@ -154,6 +159,44 @@ let locateObject={
|
|
|
sheetCommonObj.showData(this.subSheet,this.ration_setting,this.subRationDatas);
|
|
sheetCommonObj.showData(this.subSheet,this.ration_setting,this.subRationDatas);
|
|
|
this.subSheet.setRowCount(this.subRationDatas.length);
|
|
this.subSheet.setRowCount(this.subRationDatas.length);
|
|
|
},
|
|
},
|
|
|
|
|
+ showBookmarkDatas:function(refresh = false){
|
|
|
|
|
+ let sheet = this.bookmarkSheet;
|
|
|
|
|
+ let sel = sheet.getSelections()[0];
|
|
|
|
|
+ let oldData = sel.row<this.bookmarkDatas.length?this.bookmarkDatas[sel.row]:null;
|
|
|
|
|
+ this.bookmarkDatas = this.getBookmarkDatas();
|
|
|
|
|
+ sheetCommonObj.showData(sheet, this.bookMarkSetting,this.bookmarkDatas);
|
|
|
|
|
+ let selectedID = null;
|
|
|
|
|
+ let focus = false;
|
|
|
|
|
+ if(oldData) selectedID = oldData.ID;
|
|
|
|
|
+ if(this.seletedNodeID && refresh == false){
|
|
|
|
|
+ selectedID = this.seletedNodeID;
|
|
|
|
|
+ this.seletedNodeID = null;
|
|
|
|
|
+ focus = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ sel.row = selectedID?_.findIndex(this.bookmarkDatas,{'ID':selectedID}):0;
|
|
|
|
|
+ sheet.setSelection(sel.row==-1?0:sel.row,sel.col,sel.rowCount,sel.colCount);
|
|
|
|
|
+ sheet.setRowCount(this.bookmarkDatas.length);
|
|
|
|
|
+ if(sel.row!=-1) sheet.showRow(sel.row, GC.Spread.Sheets.VerticalPosition.bottom);
|
|
|
|
|
+ this.showAnnotation(sel.row,focus);
|
|
|
|
|
+ },
|
|
|
|
|
+ getBookmarkDatas:function(){
|
|
|
|
|
+ let datas = [];
|
|
|
|
|
+ let nodes = projectObj.project.mainTree.items;
|
|
|
|
|
+ for(let n of nodes){
|
|
|
|
|
+ if(!_.isEmpty(n.data.bookmarkBackground)){
|
|
|
|
|
+ let tem = {
|
|
|
|
|
+ ID:n.data.ID,
|
|
|
|
|
+ code:n.data.code,
|
|
|
|
|
+ type:n.sourceType,
|
|
|
|
|
+ name:n.data.name,
|
|
|
|
|
+ bookmarkAnnotation:n.data.bookmarkAnnotation,
|
|
|
|
|
+ bgColour:"#"+n.data.bookmarkBackground
|
|
|
|
|
+ };
|
|
|
|
|
+ datas.push(tem);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return datas;
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
getSubRationDatas:function () {
|
|
getSubRationDatas:function () {
|
|
|
let datas = [];
|
|
let datas = [];
|
|
@@ -175,28 +218,25 @@ let locateObject={
|
|
|
let mainHeight = $(window).height()-$(".header").height()-$(".toolsbar").height()-$("#searchPanel").height();
|
|
let mainHeight = $(window).height()-$(".header").height()-$(".toolsbar").height()-$("#searchPanel").height();
|
|
|
let subHeight = 0;
|
|
let subHeight = 0;
|
|
|
if(options == "bookmark"){
|
|
if(options == "bookmark"){
|
|
|
- let bookMarkLibResize = getBookmarkResize();
|
|
|
|
|
- loadHeight(bookMarkLibResize);
|
|
|
|
|
|
|
+ loadHeight(getBookmarkResize());
|
|
|
}else {
|
|
}else {
|
|
|
$('#locateTopDiv').height(mainHeight);
|
|
$('#locateTopDiv').height(mainHeight);
|
|
|
$('#locate_result').height(mainHeight);
|
|
$('#locate_result').height(mainHeight);
|
|
|
$('#locateBottomDiv').height(subHeight);
|
|
$('#locateBottomDiv').height(subHeight);
|
|
|
$('#locate_sub').height(subHeight - 7);
|
|
$('#locate_sub').height(subHeight - 7);
|
|
|
if(options == "ration_glj"){
|
|
if(options == "ration_glj"){
|
|
|
- let locateLibResize = getLocateLibResize();
|
|
|
|
|
- loadHeight(locateLibResize);
|
|
|
|
|
|
|
+ loadHeight(getLocateLibResize());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ if (refreshWorkBook) {
|
|
|
|
|
+ me.refreshWorkBook();
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
function loadHeight(libResize) {
|
|
function loadHeight(libResize) {
|
|
|
SlideResize.loadVerticalHeight(libResize.eleObj.module, libResize.eleObj, libResize.limit, function () {
|
|
SlideResize.loadVerticalHeight(libResize.eleObj.module, libResize.eleObj, libResize.limit, function () {
|
|
|
locateObject.refreshWorkBook();
|
|
locateObject.refreshWorkBook();
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- if (refreshWorkBook) {
|
|
|
|
|
- me.refreshWorkBook();
|
|
|
|
|
- }
|
|
|
|
|
},
|
|
},
|
|
|
init:function () {
|
|
init:function () {
|
|
|
let me = this;
|
|
let me = this;
|
|
@@ -368,6 +408,7 @@ let locateObject={
|
|
|
if(options == "ration_glj"&&sheetName != "locate_sub" ) return;
|
|
if(options == "ration_glj"&&sheetName != "locate_sub" ) return;
|
|
|
let datas = options == "bills"? me.billsDatas:me.rationDatas;
|
|
let datas = options == "bills"? me.billsDatas:me.rationDatas;
|
|
|
if( args.sheet.name() == "locate_sub") datas = me.subRationDatas;
|
|
if( args.sheet.name() == "locate_sub") datas = me.subRationDatas;
|
|
|
|
|
+ if(args.sheet.name() == "bookmark") datas = me.bookmarkDatas;
|
|
|
me.locateNode(datas[args.row].ID);
|
|
me.locateNode(datas[args.row].ID);
|
|
|
},
|
|
},
|
|
|
gljSelectionChange:function (e,args) {
|
|
gljSelectionChange:function (e,args) {
|
|
@@ -378,18 +419,140 @@ let locateObject={
|
|
|
me.showSubRateDatas();
|
|
me.showSubRateDatas();
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
+ bookmarkSelectionChange:function (e,args) {
|
|
|
|
|
+ let me = locateObject;
|
|
|
|
|
+ let newSel = args.newSelections[0];
|
|
|
|
|
+ let oldSel = args.oldSelections?args.oldSelections[0]:{};
|
|
|
|
|
+ if(newSel.row != oldSel.row){
|
|
|
|
|
+ me.showAnnotation(newSel.row);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ showAnnotation:function (row,focus = false) {
|
|
|
|
|
+ let me = locateObject;
|
|
|
|
|
+ let recode = me.bookmarkDatas[row];
|
|
|
|
|
+ if(recode){
|
|
|
|
|
+ $("#annotationTextarea").val(recode.bookmarkAnnotation);
|
|
|
|
|
+ $("#bookmarkNodeID").val(recode.ID);
|
|
|
|
|
+ $("#bookmarkNodeType").val(recode.type);
|
|
|
|
|
+ if(focus) $("#annotationTextarea").focus();
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
locateNode:function (ID) {
|
|
locateNode:function (ID) {
|
|
|
let node = projectObj.project.mainTree.findNode(ID);
|
|
let node = projectObj.project.mainTree.findNode(ID);
|
|
|
if(node) projectObj.loadFocusLocation(node.serialNo(),1);
|
|
if(node) projectObj.loadFocusLocation(node.serialNo(),1);
|
|
|
},
|
|
},
|
|
|
|
|
+ updateProjectProperty:function(fieldID,property){
|
|
|
|
|
+ let updateData = {type:ModuleNames.project,data:{'ID' : projectObj.project.ID()}};//,'property.locateSetting':outstd
|
|
|
|
|
+ updateData.data["property."+fieldID] = property;
|
|
|
|
|
+ $.bootstrapLoading.start();
|
|
|
|
|
+ projectObj.project.updateNodes([updateData],function () {
|
|
|
|
|
+ $.bootstrapLoading.end();
|
|
|
|
|
+ projectObj.project.property[fieldID] = property;
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
updateOutStanding:function (outstanding,outInp) {
|
|
updateOutStanding:function (outstanding,outInp) {
|
|
|
let outstd = {outstanding:outstanding,outInp:outInp};
|
|
let outstd = {outstanding:outstanding,outInp:outInp};
|
|
|
- let updateData = {type:ModuleNames.project,data:{'ID' : projectObj.project.ID(),'property.locateSetting':outstd}};
|
|
|
|
|
|
|
+ this.updateProjectProperty('locateSetting',outstd);
|
|
|
|
|
+ },
|
|
|
|
|
+ updateBookmarkSetting:function () {
|
|
|
|
|
+ let setting = projectObj.project.property.bookmarkSetting?projectObj.project.property.bookmarkSetting:locateObject.bookmarkPropertySetting;
|
|
|
|
|
+ for(let s of setting.settingList){
|
|
|
|
|
+ s.describe = $("#"+s.background).val();
|
|
|
|
|
+ }
|
|
|
|
|
+ setting.selected = $("#bookmarkSelected").val();
|
|
|
|
|
+ this.updateProjectProperty("bookmarkSetting",setting);
|
|
|
|
|
+ },
|
|
|
|
|
+ setOrCancelBookmark:function(node){
|
|
|
|
|
+ $("#bookmark").prop("checked", true);
|
|
|
|
|
+ let setting = projectObj.project.property.bookmarkSetting?projectObj.project.property.bookmarkSetting:locateObject.bookmarkPropertySetting;
|
|
|
|
|
+ let background = null;
|
|
|
|
|
+ if(_.isEmpty(node.data.bookmarkBackground)) background = setting.selected;
|
|
|
|
|
+ let updateData = {type:node.sourceType,data:{'ID' : node.data.ID,bookmarkBackground:background}};
|
|
|
|
|
+ if(background == null) updateData.data.bookmarkAnnotation = null;
|
|
|
|
|
+ $.bootstrapLoading.start();
|
|
|
projectObj.project.updateNodes([updateData],function () {
|
|
projectObj.project.updateNodes([updateData],function () {
|
|
|
- projectObj.project.property.locateSetting = outstd;
|
|
|
|
|
|
|
+ $.bootstrapLoading.end();
|
|
|
|
|
+ node.data.bookmarkBackground = background;
|
|
|
|
|
+ projectObj.mainController.refreshTreeNode([node]);
|
|
|
|
|
+ locateObject.seletedNodeID = node.data.ID;
|
|
|
|
|
+ //如果没有打开,自动打开书签批注设置
|
|
|
|
|
+ $('#locate').is(':visible')?locateObject.init():$("#locateTab").click();
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ initBookmarkRightClick:function(){
|
|
|
|
|
+ //如果当前行是无组成物的“普通材料”、“绿化苗木”、“外购砼构件”、“商品混凝土”、“商品砂浆”,则右键“添加计算材料”按钮有效。
|
|
|
|
|
+ let me = this;
|
|
|
|
|
+ $.contextMenu({
|
|
|
|
|
+ selector: '#bookmarkSpread',
|
|
|
|
|
+ build: function ($trigger, e) {
|
|
|
|
|
+ me.rightClickTarget = SheetDataHelper.safeRightClickSelection($trigger, e, me.bookmarkSpread);
|
|
|
|
|
+ return me.rightClickTarget.hitTestType === GC.Spread.Sheets.SheetArea.viewport ||
|
|
|
|
|
+ me.rightClickTarget.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
|
|
|
|
|
+ },
|
|
|
|
|
+ items: {
|
|
|
|
|
+ "deleteBookmark": {
|
|
|
|
|
+ name: "删除书签批注",
|
|
|
|
|
+ icon: 'fa-remove',
|
|
|
|
|
+ disabled: function () {
|
|
|
|
|
+ return me.bookmarkDatas.length == 0;
|
|
|
|
|
+ },
|
|
|
|
|
+ callback: function (key, opt) {
|
|
|
|
|
+ me.deleteSelectedBookmark();
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ "deleteAllBookmarks": {
|
|
|
|
|
+ name: "删除所有书签批注",
|
|
|
|
|
+ icon: 'fa-remove',
|
|
|
|
|
+ disabled: function () {
|
|
|
|
|
+ return me.bookmarkDatas.length == 0;
|
|
|
|
|
+ },
|
|
|
|
|
+ callback: function (key, opt) {
|
|
|
|
|
+ me.deleteBookmarkByDatas(me.bookmarkDatas);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ deleteSelectedBookmark:function () {
|
|
|
|
|
+ let sel = this.bookmarkSheet.getSelections()[0];
|
|
|
|
|
+ if(sel.row != -1 && this.bookmarkDatas.length>sel.row){
|
|
|
|
|
+ let record = this.bookmarkDatas[sel.row];
|
|
|
|
|
+ this.deleteBookmarkByDatas([record]);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ deleteBookmarkByDatas:function(datas){
|
|
|
|
|
+ let postDatas = [];
|
|
|
|
|
+ for(let d of datas){
|
|
|
|
|
+ let tem = {
|
|
|
|
|
+ type:d.type,
|
|
|
|
|
+ data:{
|
|
|
|
|
+ 'ID':d.ID,
|
|
|
|
|
+ 'bookmarkAnnotation':null,
|
|
|
|
|
+ 'bookmarkBackground':null
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ postDatas.push(tem);
|
|
|
|
|
+ }
|
|
|
|
|
+ this.updateBookmarkNodes(postDatas);
|
|
|
|
|
+ },
|
|
|
|
|
+ updateBookmarkNodes:function (postDatas,refreshsNode = true) {
|
|
|
|
|
+ $.bootstrapLoading.start();
|
|
|
|
|
+ projectObj.project.updateNodes(postDatas,function () {
|
|
|
|
|
+ $.bootstrapLoading.end();
|
|
|
|
|
+ let nodes = [];
|
|
|
|
|
+ for(let p of postDatas){
|
|
|
|
|
+ let node = projectObj.project.mainTree.findNode(p.data.ID);
|
|
|
|
|
+ if(!node) continue;
|
|
|
|
|
+ for(let key in p.data){
|
|
|
|
|
+ if(key == 'ID') continue;
|
|
|
|
|
+ node.data[key] = p.data[key];
|
|
|
|
|
+ }
|
|
|
|
|
+ nodes.push(node);
|
|
|
|
|
+ }
|
|
|
|
|
+ locateObject.showBookmarkDatas();
|
|
|
|
|
+ if(refreshsNode) projectObj.mainController.refreshTreeNode(nodes);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
@@ -439,12 +602,25 @@ $('#outstanding').change(function(){
|
|
|
me.updateOutStanding(outStd,scMathUtil.roundForObj(outInp,getDecimal('process')));
|
|
me.updateOutStanding(outStd,scMathUtil.roundForObj(outInp,getDecimal('process')));
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+$("#annotationTextarea").change(function(){
|
|
|
|
|
+ let updateData = {type:$("#bookmarkNodeType").val(),data:{'ID' :$("#bookmarkNodeID").val(),'bookmarkAnnotation':$(this).val()}};
|
|
|
|
|
+ let node = projectObj.project.mainTree.findNode($("#bookmarkNodeID").val());
|
|
|
|
|
+ if(!node) return;
|
|
|
|
|
+ locateObject.updateBookmarkNodes([updateData],false);
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
$('#bookmarkSettingDropdown').on('shown.bs.dropdown', function showDropdown() {
|
|
$('#bookmarkSettingDropdown').on('shown.bs.dropdown', function showDropdown() {
|
|
|
|
|
+ locateObject.initBookmarkSetting();
|
|
|
let setting = projectObj.project.property.bookmarkSetting?projectObj.project.property.bookmarkSetting:locateObject.bookmarkPropertySetting;
|
|
let setting = projectObj.project.property.bookmarkSetting?projectObj.project.property.bookmarkSetting:locateObject.bookmarkPropertySetting;
|
|
|
$("#"+setting.selected).focus();
|
|
$("#"+setting.selected).focus();
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+$("#bookmarkSettingConfirm").click(function () {
|
|
|
|
|
+ locateObject.updateBookmarkSetting();
|
|
|
|
|
+ $("#bookmarkSettingDropdown").click();
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
function bookmarkSelected() {
|
|
function bookmarkSelected() {
|
|
|
- console.log("hehe");
|
|
|
|
|
$("#bookmarkSelected").val($(this)[0].id);
|
|
$("#bookmarkSelected").val($(this)[0].id);
|
|
|
}
|
|
}
|