12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640 |
- import { selectionCopyShow, selectIsOverlap } from './select';
- import { luckyColor, iconfontObjects } from './constant';
- import luckysheetConfigsetting from './luckysheetConfigsetting';
- import luckysheetMoreFormat from './moreFormat';
- import alternateformat from './alternateformat';
- import conditionformat from './conditionformat';
- import server from './server';
- import { luckysheet_searcharray } from './sheetSearch';
- import luckysheetFreezen from './freezen';
- import luckysheetsizeauto from './resize';
- import { createFilter } from './filter';
- import luckysheetSearchReplace from './searchReplace';
- import luckysheetLocationCell from './locationCell';
- import ifFormulaGenerator from './ifFormulaGenerator';
- import {luckysheetupdateCell} from './updateCell';
- import insertFormula from './insertFormula';
- import sheetmanage from './sheetmanage';
- import luckysheetPostil from './postil';
- import { isRealNum, isRealNull, isEditMode, hasPartMC, checkIsAllowEdit } from '../global/validate';
- import tooltip from '../global/tooltip';
- import editor from '../global/editor';
- import { genarate, update, is_date } from '../global/format';
- import { jfrefreshgrid, luckysheetrefreshgrid } from '../global/refresh';
- import { sortSelection } from '../global/sort';
- import luckysheetformula from '../global/formula';
- import { rowLocationByIndex, colLocationByIndex } from '../global/location';
- import { isdatatypemulti } from '../global/datecontroll';
- import { rowlenByRange, getCellTextSplitArr } from '../global/getRowlen';
- import { setcellvalue } from '../global/setdata';
- import { getFontStyleByCell, checkstatusByCell} from '../global/getdata';
- import { countfunc } from '../global/count';
- import { hideMenuByCancel } from '../global/cursorPos';
- import { getSheetIndex, getRangetxt, getluckysheetfile } from '../methods/get';
- import { setluckysheetfile } from '../methods/set';
- import {isInlineStringCell,isInlineStringCT,updateInlineStringFormat,convertCssToStyleList,inlineStyleAffectAttribute,updateInlineStringFormatOutside} from './inlineString';
- import { replaceHtml, getObjType, rgbTohex, mouseclickposition, luckysheetfontformat,luckysheetContainerFocus } from '../utils/util';
- import {openProtectionModal,checkProtectionFormatCells,checkProtectionNotEnable} from './protection';
- import Store from '../store';
- import locale from '../locale/locale';
- import { checkTheStatusOfTheSelectedCells, frozenFirstRow, frozenFirstColumn } from '../global/api';
- const menuButton = {
- "menu": '<div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton ${subclass} luckysheet-mousedown-cancel" id="luckysheet-icon-${id}-menuButton">${item}</div>',
- // "item": '<div itemvalue="${value}" itemname="${name}" class="luckysheet-cols-menuitem ${sub} luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 0px 3px 1px;"><span style="margin-right:3px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span> ${name} <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel" style="user-select: none;">${example}</span></div></div>',
- "item": '<div itemvalue="${value}" itemname="${name}" class="luckysheet-cols-menuitem ${sub} luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="padding: 3px 0px 3px 1px;"><span style="margin-right:3px;width:13px;display:inline-block;" class="icon luckysheet-mousedown-cancel"></span> ${name} <span class="luckysheet-submenu-arrow luckysheet-mousedown-cancel ${iconClass}" style="user-select: none;">${example}</span></div></div>',
- "split": '<div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div>',
- "color": '<div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel luckysheet-menuButton ${sub}" id="${id}"><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel luckysheet-color-reset"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${resetColor}</div></div> <div class="luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <input type="text" class="luckysheet-color-selected" /> </div> </div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> ${coloritem}</div>',
- "coloritem": '<div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel ${class}"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${name}</div></div>',
- "subcolor": '<div id="luckysheet-icon-${id}-menuButton" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-menuButton-sub luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <input type="text" class="luckysheet-color-selected" /> </div> </div></div>',
- "rightclickmenu": null,
- "submenuhide": {},
- focus: function($obj, value){
- if($obj.attr("id")=="luckysheet-icon-font-family-menuButton"){
- if (isdatatypemulti(value)["num"]) {
- let _locale = locale();
- const locale_fontarray = _locale.fontarray;
- value = locale_fontarray[parseInt(value)];
- if(value==null){
- value = this.defualtFont[itemvalue];
- }
- }
- }
- $obj.find(".luckysheet-cols-menuitem").find("span.icon").html("");
- if(value == null){
- $obj.find(".luckysheet-cols-menuitem").eq(0).find("span.icon").html('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
- }
- else{
- $obj.find(".luckysheet-cols-menuitem[itemvalue='"+ value +"']").find("span.icon").html('<i class="fa fa-check luckysheet-mousedown-cancel"></i>');
- }
- },
- createButtonMenu: function(itemdata){
- let itemset = "";
- let _this = this;
- for(let i = 0; i < itemdata.length; i++){
- let item = itemdata[i];
- if(item.value=="split"){
- itemset += _this.split;
- }
- else{
- if(item.example=="more"){
- // itemset += replaceHtml(_this.item, {"value": item.value, "name": item.text, "example": "►", "sub": "luckysheet-cols-submenu"});
- itemset += replaceHtml(_this.item, {"value": item.value, "name": item.text, "example": "", "sub": "luckysheet-cols-submenu", "iconClass": "iconfont luckysheet-iconfont-youjiantou"});
- }
- else{
- itemset += replaceHtml(_this.item, {"value": item.value, "name": item.text, "example": item.example, "sub": "", "iconClass": ""});
- }
- }
- }
- return itemset;
- },
- cancelPaintModel: function(){
- let _this = this;
- $("#luckysheet-sheettable_0").removeClass("luckysheetPaintCursor");
- if(Store.luckysheet_copy_save["dataSheetIndex"] == Store.currentSheetIndex){
- Store.luckysheet_selection_range = [];
- selectionCopyShow();
- }
- else{
- Store.luckysheetfile[getSheetIndex(Store.luckysheet_copy_save["dataSheetIndex"])].luckysheet_selection_range = [];
- }
-
- Store.luckysheet_copy_save = {};
- _this.luckysheetPaintModelOn = false;
- $("#luckysheetpopover").fadeOut(200,function(){
- $("#luckysheetpopover").remove();
- });
- },
- luckysheetPaintModelOn:false,
- luckysheetPaintSingle: false,
- initialMenuButton: function(){
- let _this = this;
- //格式刷
- $("#luckysheet-icon-paintformat").click(function(e){
- // *如果禁止前台编辑,则中止下一步操作
- if (!checkIsAllowEdit()) {
- tooltip.info("", locale().pivotTable.errorNotAllowEdit);
- return
- }
- e.stopPropagation();
- let _locale = locale();
- let locale_paint = _locale.paint;
- if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(locale_paint.tipSelectRange);
- }
- else{
- tooltip.info("",locale_paint.tipSelectRange);
- }
- return;
- }
- else if(Store.luckysheet_select_save.length > 1){
- if(isEditMode()){
- alert(locale_paint.tipNotMulti);
- }
- else{
- tooltip.info("",locale_paint.tipNotMulti);
- }
- return;
- }
- // *增加了对选区范围是否为部分合并单元格的校验,如果为部分合并单元格,就阻止格式刷的下一步
- // TODO 这里也可以改为:判断到是合并单元格的一部分后,格式刷执行黏贴格式后删除范围单元格的 mc 值
- let has_PartMC = false;
- let r1 = Store.luckysheet_select_save[0].row[0],
- r2 = Store.luckysheet_select_save[0].row[1];
- let c1 = Store.luckysheet_select_save[0].column[0],
- c2 = Store.luckysheet_select_save[0].column[1];
- has_PartMC = hasPartMC(Store.config, r1, r2, c1, c2);
- if(has_PartMC){
- // *提示后中止下一步
- tooltip.info('无法对部分合并单元格执行此操作', '');
- return;
- }
- tooltip.popover("<i class='fa fa-paint-brush'></i> "+locale_paint.start+"", "topCenter", true, null, locale_paint.end,function(){
- _this.cancelPaintModel();
- });
-
- $("#luckysheet-sheettable_0").addClass("luckysheetPaintCursor");
- Store.luckysheet_selection_range = [{ "row": Store.luckysheet_select_save[0].row, "column": Store.luckysheet_select_save[0].column }];
- selectionCopyShow();
- let RowlChange = false, HasMC = false;
- for(let r = Store.luckysheet_select_save[0].row[0]; r <= Store.luckysheet_select_save[0].row[1]; r++){
- if (Store.config["rowhidden"] != null && Store.config["rowhidden"][r] != null) {
- continue;
- }
- if (Store.config["rowlen"] != null && (r in Store.config["rowlen"])){
- RowlChange = true;
- }
- for(let c = Store.luckysheet_select_save[0].column[0]; c <= Store.luckysheet_select_save[0].column[1]; c++){
- let cell = Store.flowdata[r][c];
-
- if(getObjType(cell) == "object" && ("mc" in cell) && cell.mc.rs != null){
- HasMC = true;
- }
- }
- }
- Store.luckysheet_copy_save = { "dataSheetIndex": Store.currentSheetIndex, "copyRange": [{ "row": Store.luckysheet_select_save[0].row, "column": Store.luckysheet_select_save[0].column }], "RowlChange": RowlChange, "HasMC": HasMC };
- _this.luckysheetPaintModelOn = true;
- _this.luckysheetPaintSingle = true;
- });
- $("#luckysheet-icon-paintformat").dblclick(function(){
- // *如果禁止前台编辑,则中止下一步操作
- if (!checkIsAllowEdit()) {
- tooltip.info("", locale().pivotTable.errorNotAllowEdit);
- return
- }
- let _locale = locale();
- let locale_paint = _locale.paint;
- if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(locale_paint.tipSelectRange);
- }
- else{
- tooltip.info("",locale_paint.tipSelectRange);
- }
- return;
- }
- else if(Store.luckysheet_select_save.length > 1){
- if(isEditMode()){
- alert(locale_paint.tipNotMulti);
- }
- else{
- tooltip.info("",locale_paint.tipNotMulti);
- }
- return;
- }
- tooltip.popover("<i class='fa fa-paint-brush'></i> "+locale_paint.start, "topCenter", true, null, locale_paint.end,function(){
- _this.cancelPaintModel();
- });
- $("#luckysheet-sheettable_0").addClass("luckysheetPaintCursor");
- Store.luckysheet_selection_range = [{ "row": Store.luckysheet_select_save[0].row, "column": Store.luckysheet_select_save[0].column }];
- selectionCopyShow();
- let RowlChange = false, HasMC = false;
- for(let r = Store.luckysheet_select_save[0].row[0]; r <= Store.luckysheet_select_save[0].row[1]; r++){
- if (Store.config["rowhidden"] != null && Store.config["rowhidden"][r] != null) {
- continue;
- }
- if (Store.config["rowlen"] != null && (r in Store.config["rowlen"])){
- RowlChange = true;
- }
- for(let c = Store.luckysheet_select_save[0].column[0]; c <= Store.luckysheet_select_save[0].column[1]; c++){
- let cell = Store.flowdata[r][c];
-
- if(getObjType(cell) == "object" && ("mc" in cell) && cell.mc.rs != null){
- HasMC = true;
- }
- }
- }
- Store.luckysheet_copy_save = { "dataSheetIndex": Store.currentSheetIndex, "copyRange": [{ "row": Store.luckysheet_select_save[0].row, "column": Store.luckysheet_select_save[0].column }], "RowlChange": RowlChange, "HasMC": HasMC };
-
- _this.luckysheetPaintModelOn = true;
- _this.luckysheetPaintSingle = false;
- });
- //货币格式
- $("#luckysheet-icon-currency").click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);//取数据
- _this.updateFormat(d, "ct", "¥ #.00");
- });
- //百分比
- $("#luckysheet-icon-percent").click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);//取数据
- _this.updateFormat(d, "ct", "0.00%");
- });
- //减少小数位数
- $("#luckysheet-icon-fmt-decimal-decrease").click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);//取数据
- let row_index = Store.luckysheet_select_save[0]["row_focus"],
- col_index = Store.luckysheet_select_save[0]["column_focus"];
- let foucsStatus = _this.checkstatus(d, row_index, col_index, "ct");
- let cell = d[row_index][col_index];
- if(foucsStatus == null || foucsStatus.t != "n"){
- return;
- }
- if(foucsStatus.fa == "General"){
- let mask = genarate(cell.v);
- foucsStatus = mask[1];
- }
- //万亿格式
- let reg = /^(w|W)((0?)|(0\.0+))$/;
- if(reg.test(foucsStatus.fa)){
- if(foucsStatus.fa.indexOf(".") > -1){
- if(foucsStatus.fa.substr(-2) == ".0"){
- _this.updateFormat(d, "ct", foucsStatus.fa.split(".")[0]);
- }
- else{
- _this.updateFormat(d, "ct", foucsStatus.fa.substr(0, foucsStatus.fa.length - 1));
- }
- }
- else{
- _this.updateFormat(d, "ct", foucsStatus.fa);
- }
- return;
- }
- //Uncaught ReferenceError: Cannot access 'fa' before initialization
- let prefix = "", main = "", fa = [];
- if(foucsStatus.fa.indexOf(".")>-1){
- fa = foucsStatus.fa.split(".");
- prefix = fa[0];
- main = fa[1];
- }
- else{
- return;
- }
- fa = main.split("");
- let tail = "";
- for(let i = fa.length-1; i >= 0; i--){
- let c = fa[i];
- if((c!="#" && c!="0" && c!="," && isNaN(parseInt(c)))) {
- tail = c + tail;
- }
- else{
- break;
- }
- }
- let fmt = "";
- if(foucsStatus.fa.indexOf(".")>-1){
- let suffix = main;
- if(tail.length>0){
- suffix = main.replace(tail, "");
- }
- let pos = suffix.replace(/#/g, "0");
- pos = pos.substr(0, pos.length-1);
- if(pos==""){
- fmt = prefix + tail;
- }
- else{
- fmt = prefix + "." + pos + tail;
- }
- }
- _this.updateFormat(d, "ct", fmt);
- });
- //增加小数位数
- $("#luckysheet-icon-fmt-decimal-increase").click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);//取数据
- let row_index = Store.luckysheet_select_save[0]["row_focus"],
- col_index = Store.luckysheet_select_save[0]["column_focus"];
- let foucsStatus = _this.checkstatus(d, row_index, col_index, "ct");
- let cell = d[row_index][col_index];
- if(foucsStatus== null || foucsStatus.t != "n"){
- return;
- }
- if(foucsStatus.fa == "General"){
- let mask = genarate(cell.v);
- foucsStatus = mask[1];
- }
- if(foucsStatus.fa == "General"){
- _this.updateFormat(d, "ct", "#.0");
- return;
- }
- //万亿格式
- let reg = /^(w|W)((0?)|(0\.0+))$/;
- if(reg.test(foucsStatus.fa)){
- if(foucsStatus.fa.indexOf(".") > -1){
- _this.updateFormat(d, "ct", foucsStatus.fa + "0");
- }
- else{
- if(foucsStatus.fa.substr(-1) == "0"){
- _this.updateFormat(d, "ct", foucsStatus.fa + ".0");
- }
- else{
- _this.updateFormat(d, "ct", foucsStatus.fa + "0.0");
- }
- }
- return;
- }
- //Uncaught ReferenceError: Cannot access 'fa' before initialization
- let prefix = "", main = "", fa = [];
-
- if(foucsStatus.fa.indexOf(".")>-1){
- fa = foucsStatus.fa.split(".");
- prefix = fa[0];
- main = fa[1];
- }
- else{
- main = foucsStatus.fa;
- }
- fa = main.split("");
- let tail = "";
- for(let i = fa.length - 1; i >= 0; i--){
- let c = fa[i];
- if(( c!="#" && c!="0" && c!="," && isNaN(parseInt(c)))) {
- tail = c + tail;
- }
- else{
- break;
- }
- }
- let fmt = "";
- if(foucsStatus.fa.indexOf(".")>-1){
- let suffix = main;
- if(tail.length>0){
- suffix = main.replace(tail, "");
- }
- let pos = suffix.replace(/#/g, "0");
- pos += "0";
- fmt = prefix + "." + pos + tail;
- }
- else{
- if(tail.length>0){
- fmt = main.replace(tail, "") + ".0" + tail;
- }
- else{
- fmt = main + ".0" + tail;
- }
- }
- _this.updateFormat(d, "ct", fmt);
- });
- //更多格式
- $("#luckysheet-icon-fmt-other").click(function(){
- const _locale = locale();
- const locale_format = _locale.format;
- const locale_defaultFmt = _locale.defaultFmt;
- let menuButtonId = $(this).attr("id")+"-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- let itemdata = locale_defaultFmt;
- let itemset = _this.createButtonMenu(itemdata);
- // luckysheet-menuButton-sub
- let menu = replaceHtml(_this.menu, {"id": "fmt-other", "item": itemset, "subclass": "", "sub": ""});
- let subitemdata = [
- {"text":locale_format.moreCurrency+"...", "value":"morecurrency", "example":""},
- {"text":locale_format.moreDateTime+"...", "value":"moredatetime", "example":""},
- {"text":locale_format.moreNumber+"...", "value":"moredigit", "example":""}
- ];
- let subitemset = _this.createButtonMenu(subitemdata);
- let submenu = replaceHtml(_this.menu, {"id": "fmtOtherSelf", "item": subitemset, "subclass": "luckysheet-menuButton-sub"});
-
- //luckysheet-icon-fmt-other-menuButton_sub
- $("body").append(menu+submenu);
- $menuButton = $("#" + menuButtonId).width(250);
- _this.focus($menuButton);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue"),itemname = $t.attr("itemname");
- $("#luckysheet-icon-fmt-other").find(".luckysheet-toolbar-menu-button-caption").html(" "+ itemname +" ");
- if(itemvalue == "fmtOtherSelf"){
- return;
- }
- let d = editor.deepCopyFlowData(Store.flowdata);//取数据
- _this.focus($menuButton, itemvalue);
- _this.updateFormat(d, "ct", itemvalue);
- });
- //更多格式
- $("#luckysheet-icon-fmtOtherSelf-menuButton").find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- $("#luckysheet-icon-fmtOtherSelf-menuButton").hide();
- luckysheetContainerFocus();
- let itemvalue = $(this).attr("itemvalue");
- luckysheetMoreFormat.createDialog(itemvalue);
- luckysheetMoreFormat.init();
- })
- } else {
- const text =$(this).find(".luckysheet-toolbar-menu-button-caption").text().trim();
- const format = locale_defaultFmt.find(f => f.text === text);
- if(format) {
- _this.focus($menuButton, format.value);
- }
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft, $(this).offset().top+25, "lefttop");
- });
- //字体设置
- $("#luckysheet-icon-font-family").mousedown(function(e){
- hideMenuByCancel(e);
- e.stopPropagation();
- }).click(function(){
- let menuButtonId = $(this).attr("id")+"-menuButton";
- let $menuButton = $("#"+menuButtonId);
- if($menuButton.length == 0){
- // const locale_fontarray = locale().fontarray;
- // let itemdata = [];
- // for(let a=0;a<locale_fontarray.length;a++){
- // let fItem = locale_fontarray[a];
- // let ret = {};
- // ret.value = a;
- // ret.text = "<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:"+fItem+"'>"+fItem+"</span>";
- // ret.example = "";
- // itemdata.push(ret);
- // }
- let itemset = _this.createButtonMenu(_this.fontSelectList);
- let menu = replaceHtml(_this.menu, {"id": "font-family", "item": itemset, "subclass": "", "sub": ""});
- $("body").append(menu);
- $menuButton = $("#"+menuButtonId).width(200);
- _this.focus($menuButton);
- $menuButton.on("click", ".luckysheet-cols-menuitem", function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue"), itemname = $t.attr("itemname");
- _this.focus($menuButton, itemvalue);
- $("#luckysheet-icon-font-family").find(".luckysheet-toolbar-menu-button-caption").html(" "+ itemname +" ");
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "ff", itemvalue);
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft, $(this).offset().top+25, "lefttop");
- });
- //字体颜色
- $("#luckysheet-icon-text-color").mousedown(function(e){
- hideMenuByCancel(e);
- e.stopPropagation();
- }).click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);
- let color = $(this).attr("color");
- if(color == null){
- color = "#000000";
- }
- _this.updateFormat(d, "fc", color);
- });
- $("#luckysheet-icon-text-color-menu").mousedown(function(e){
- hideMenuByCancel(e);
- e.stopPropagation();
- }).click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#"+menuButtonId);
- if($menuButton.length == 0){
- const _locale = locale();
- const locale_toolbar = _locale.toolbar;
- const locale_button = _locale.button;
- const locale_alternatingColors = _locale.alternatingColors;
- let itemdata = [
- {"name":locale_toolbar.alternatingColors+"...", "id":"luckysheet-color-alternate", "example":""}
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let subid = "text-color-self";
- let coloritem = replaceHtml(_this.coloritem, {"class": "luckysheet-icon-alternateformat", "name": locale_toolbar.alternatingColors+"..."});
- let menu = replaceHtml(_this.color, {"id":menuButtonId, "coloritem": coloritem, "colorself": subid, "sub": "","resetColor":locale_toolbar.resetColor});
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId);
- $("#" + menuButtonId).find(".luckysheet-color-selected").spectrum({
- showPalette: true,
- showPaletteOnly: true,
- preferredFormat: "hex",
- clickoutFiresChange: false,
- showInitial: true,
- showInput: true,
- flat: true,
- hideAfterPaletteSelect: true,
- showSelectionPalette: true,
- maxPaletteSize: 8,
- maxSelectionSize: 8,
- cancelText: locale_button.cancel,
- chooseText: locale_button.confirm,
- togglePaletteMoreText: locale_toolbar.customColor,
- togglePaletteLessText: locale_toolbar.collapse,
- togglePaletteOnly: true,
- clearText: locale_toolbar.clearText,
- color: luckysheetConfigsetting.defaultTextColor,
- noColorSelectedText: locale_toolbar.noColorSelectedText,
- localStorageKey: "spectrum.textcolor" + server.gridKey,
- palette: [["#000","#444","#666","#999","#ccc","#eee","#f3f3f3","#fff"],
- ["#f00","#f90","#ff0","#0f0","#0ff","#00f","#90f","#f0f"],
- ["#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d0e0e3","#cfe2f3","#d9d2e9","#ead1dc"],
- ["#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#9fc5e8","#b4a7d6","#d5a6bd"],
- ["#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6fa8dc","#8e7cc3","#c27ba0"],
- ["#c00","#e69138","#f1c232","#6aa84f","#45818e","#3d85c6","#674ea7","#a64d79"],
- ["#900","#b45f06","#bf9000","#38761d","#134f5c","#0b5394","#351c75","#741b47"],
- ["#600","#783f04","#7f6000","#274e13","#0c343d","#073763","#20124d","#4c1130"]],
- change: function (color) {
- let $input = $(this);
- if (color != null) {
- color = color.toHexString();
- }
- else {
- color = "#000";
- }
- let oldcolor = null;
- // $("#luckysheet-icon-text-color .luckysheet-color-menu-button-indicator").css("border-bottom-color", color);
- // 下边框换成了一个DIV
- $("#luckysheet-icon-text-color .text-color-bar").css("background-color", color);
- $("#luckysheet-icon-text-color").attr("color", color);
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "fc", color);
- $menuButton.hide();
- luckysheetContainerFocus();
- },
- });
- $menuButton.find(".luckysheet-color-reset").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $input = $("#"+ menuButtonId).find(".luckysheet-color-selected");
- $input.val("#000000");
- $("#luckysheet-icon-text-color").attr("color", null);
- $input.spectrum("set", "#000000");
- $("#luckysheet-icon-text-color .luckysheet-color-menu-button-indicator").css("border-bottom-color", "#000000");
-
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "fc", null);
- });
- //交替颜色
- $menuButton.find(".luckysheet-icon-alternateformat").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- if(Store.luckysheet_select_save.length > 1){
- if(isEditMode()){
- alert(locale_alternatingColors.errorInfo);
- }
- else{
- tooltip.info(locale_alternatingColors.errorInfo, "");
- }
- return;
- }
- let range = $.extend(true, {}, Store.luckysheet_select_save[0]);
- let isExists = alternateformat.rangeIsExists(range)[0];
- if(!isExists){
- alternateformat.modelfocusIndex = 0;
- alternateformat.new(range);
- }
- alternateformat.init();
- alternateformat.perfect();
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- let offsetTop = $(this).offset().top+26;
- setTimeout(function(){
- let $input = $("#" + menuButtonId).find(".luckysheet-color-selected");
- $input.spectrum("set", $input.val());
- mouseclickposition($menuButton, menuleft-28, offsetTop, "lefttop");
- }, 1);
- });
- //背景颜色
- $("#luckysheet-icon-cell-color").click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);
- let color = $(this).attr("color");
- if(color == null){
- color = "#ffffff";
- }
- _this.updateFormat(d, "bg", color);
- });
- $("#luckysheet-icon-cell-color-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- let subid = "cell-color-self";
- const _locale = locale();
- const locale_toolbar = _locale.toolbar;
- const locale_button = _locale.button;
- const locale_alternatingColors = _locale.alternatingColors;
- let coloritem = replaceHtml(_this.coloritem, { "class": "luckysheet-icon-alternateformat", "name": locale_toolbar.alternatingColors+"..." });
- let menu = replaceHtml(_this.color, { "id": menuButtonId, "coloritem": coloritem, "colorself": subid, "sub": "","resetColor":locale_toolbar.resetColor });
-
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId);
- $("#" + menuButtonId).find(".luckysheet-color-selected").spectrum({
- showPalette: true,
- showPaletteOnly: true,
- preferredFormat: "hex",
- clickoutFiresChange: false,
- showInitial: true,
- showInput: true,
- flat: true,
- hideAfterPaletteSelect: true,
- showSelectionPalette: true,
- maxPaletteSize: 8,
- maxSelectionSize: 8,
- color: luckysheetConfigsetting.defaultCellColor,
- cancelText: locale_button.cancel,
- chooseText: locale_button.confirm,
- togglePaletteMoreText: locale_toolbar.customColor,
- togglePaletteLessText: locale_toolbar.collapse,
- togglePaletteOnly: true,
- clearText: locale_toolbar.clearText,
- noColorSelectedText: locale_toolbar.noColorSelectedText,
- localStorageKey: "spectrum.bgcolor" + server.gridKey,
- palette: [
- ["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
- ["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
- ["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
- ["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
- ["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
- ["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
- ["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
- ["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
- ],
- change: function (color) {
- let $input = $(this);
- if (color != null) {
- color = color.toHexString();
- }
- else {
- color = "#fff";
- }
- let oldcolor = null;
- // $("#luckysheet-icon-cell-color .luckysheet-color-menu-button-indicator").css("border-bottom-color", color);
- // 下边框换成了一个DIV
- $("#luckysheet-icon-cell-color .text-color-bar").css("background-color", color);
-
- $("#luckysheet-icon-cell-color").attr("color", color);
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "bg", color);
- $menuButton.hide();
- luckysheetContainerFocus();
- }
- });
- $menuButton.find(".luckysheet-color-reset").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $input = $("#" + menuButtonId).find(".luckysheet-color-selected");
- $input.val("#ffffff");
- $("#luckysheet-icon-cell-color").attr("color", null);
- $input.spectrum("set", "#ffffff");
- $("#luckysheet-icon-cell-color .luckysheet-color-menu-button-indicator").css("border-bottom-color", "#ffffff");
-
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "bg", null);
- });
- //交替颜色
- $menuButton.find(".luckysheet-icon-alternateformat").click(function(){
- // *如果禁止前台编辑,则中止下一步操作
- if (!checkIsAllowEdit()) {
- tooltip.info("", locale().pivotTable.errorNotAllowEdit);
- return
- }
- $menuButton.hide();
- luckysheetContainerFocus();
- if(Store.luckysheet_select_save.length > 1){
- if(isEditMode()){
- alert(locale_alternatingColors.errorInfo);
- }
- else{
- tooltip.info(locale_alternatingColors.errorInfo, "");
- }
- return;
- }
- let range = $.extend(true, {}, Store.luckysheet_select_save[0]);
- let isExists = alternateformat.rangeIsExists(range)[0];
- if(!isExists){
- alternateformat.modelfocusIndex = 0;
- alternateformat.new(range);
- }
- alternateformat.init();
- alternateformat.perfect();
- });
- $("#" + menuButtonId).find(".luckysheet-color-selected").val("#fff");
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- let offsetTop = $(this).offset().top + 26;
- setTimeout(function(){
- let $input = $("#"+ menuButtonId).find(".luckysheet-color-selected");
- $input.spectrum("set", $input.val());
- mouseclickposition($menuButton, menuleft - 28, offsetTop, "lefttop");
- }, 1);
- });
- //字体大小
- let luckysheet_fs_setTimeout = null;
- $("#luckysheet-icon-font-size").mousedown(function(e){
- if (parseInt($("#luckysheet-input-box").css("top")) > 0){
- let w = window.getSelection();
- if(w.type!="None"){
- let range = w.getRangeAt(0);
- if(!range.collapsed){
- Store.inlineStringEditRange = range.cloneRange();
- }
- }
- }
- hideMenuByCancel(e);
- e.stopPropagation();
- }).click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- let itemdata = [
- { "text": "9", "value": "9", "example": "" },
- { "text": "10", "value": "10", "example": "" },
- { "text": "11", "value": "11", "example": "" },
- { "text": "12", "value": "12", "example": "" },
- { "text": "14", "value": "14", "example": "" },
- { "text": "16", "value": "16", "example": "" },
- { "text": "18", "value": "18", "example": "" },
- { "text": "20", "value": "20", "example": "" },
- { "text": "22", "value": "22", "example": "" },
- { "text": "24", "value": "24", "example": "" },
- { "text": "26", "value": "26", "example": "" },
- { "text": "28", "value": "28", "example": "" },
- { "text": "36", "value": "36", "example": "" },
- { "text": "48", "value": "48", "example": "" },
- { "text": "72", "value": "72", "example": "" }
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "font-size", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(150);
- _this.focus($menuButton, 10);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue"), $input = $("#luckysheet-icon-font-size input");
- $("#luckysheet-icon-font-size").attr("itemvalue", itemvalue);
- _this.focus($menuButton, itemvalue);
- $input.val(itemvalue);
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "fs", itemvalue);
-
- clearTimeout(luckysheet_fs_setTimeout);
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let defualtvalue = $("#luckysheet-icon-font-size").attr("itemvalue");
- if(defualtvalue == null){
- defualtvalue = 10;
- }
- _this.focus($menuButton, defualtvalue);
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
- })
- .find("input.luckysheet-toolbar-textinput").keydown(function(e){
- hideMenuByCancel(e);
- e.stopPropagation();
- }).keyup(function(e){
- if(e.keyCode != 13){//Enter
- return;
- }
- let $this = $(this);
- let itemvalue = parseInt($this.val());
- let $menuButton = $("#luckysheet-icon-font-size-menuButton");
- _this.focus($menuButton, itemvalue);
-
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "fs", itemvalue);
-
- luckysheet_fs_setTimeout = setTimeout(function(){
- $menuButton.hide();
- $this.blur();
- }, 200);
- });
- //边框设置
- $("#luckysheet-icon-border-all").click(function(){
- // *如果禁止前台编辑,则中止下一步操作
- if (!checkIsAllowEdit()) {
- tooltip.info("", locale().pivotTable.errorNotAllowEdit);
- return
- }
- if(!checkProtectionFormatCells(Store.currentSheetIndex)){
- return;
- }
- let d = editor.deepCopyFlowData(Store.flowdata);
- let type = $(this).attr("type");
- if(type == null){
- type = "border-all";
- }
- let subcolormenuid = "luckysheet-icon-borderColor-menuButton";
- let color = $("#" + subcolormenuid).find(".luckysheet-color-selected").val();
- let style = $("#luckysheetborderSizepreview").attr("itemvalue");
- if(color == null || color == ""){
- color = "#000";
- }
- if(style == null || style == ""){
- style = "1";
- }
- let cfg = $.extend(true, {}, Store.config);
- if(cfg["borderInfo"] == null){
- cfg["borderInfo"] = [];
- }
- let borderInfo = {
- "rangeType": "range",
- "borderType": type,
- "color": color,
- "style": style,
- "range": $.extend(true, [], Store.luckysheet_select_save)
- }
- cfg["borderInfo"].push(borderInfo);
- if (Store.clearjfundo) {
- Store.jfundo.length = 0;
- let redo = [];
- redo["type"] = "borderChange";
- redo["config"] = $.extend(true, {}, Store.config);
- redo["curconfig"] = $.extend(true, {}, cfg);
-
- redo["sheetIndex"] = Store.currentSheetIndex;
- Store.jfredo.push(redo);
- }
- server.saveParam("cg", Store.currentSheetIndex, cfg["borderInfo"], { "k": "borderInfo" });
- Store.config = cfg;
- Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
- setTimeout(function () {
- luckysheetrefreshgrid();
- }, 1);
- });
- $("#luckysheet-icon-border-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
- if($menuButton.length == 0){
- let canvasH = 10, canvasW = 120;
- const _locale = locale();
- const locale_border = _locale.border;
- const locale_toolbar = _locale.toolbar;
- const locale_button = _locale.button;
- let itemdata = [
- {"text": locale_border.borderTop, "value": "border-top", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-top iconfont luckysheet-iconfont-shangbiankuang" style="user-select: none;"> </div> </div>'},
- {"text": locale_border.borderBottom, "value":"border-bottom", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-bottom iconfont luckysheet-iconfont-xiabiankuang" style="user-select: none;"> </div> </div>'},
- {"text": locale_border.borderLeft, "value":"border-left", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-left iconfont luckysheet-iconfont-zuobiankuang" style="user-select: none;"> </div> </div>'},
- {"text": locale_border.borderRight, "value":"border-right", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-right iconfont luckysheet-iconfont-youbiankuang" style="user-select: none;"> </div> </div>'},
- {"text": "", "value": "split", "example":""},
- {"text": locale_border.borderNone, "value": "border-none", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-none iconfont luckysheet-iconfont-wubiankuang" style="user-select: none;"> </div> </div>'},
- {"text": locale_border.borderAll, "value": "border-all", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-all iconfont luckysheet-iconfont-quanjiabiankuang" style="user-select: none;"> </div> </div>'},
- {"text": locale_border.borderOutside, "value": "border-outside", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-outside iconfont luckysheet-iconfont-sizhoujiabiankuang" style="user-select: none;"> </div> </div>'},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_border.borderInside, "value": "border-inside", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-inside iconfont luckysheet-iconfont-neikuangxian" style="user-select: none;"> </div> </div>'},
- {"text": locale_border.borderHorizontal, "value": "border-horizontal", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-horizontal iconfont luckysheet-iconfont-neikuanghengxian" style="user-select: none;"> </div> </div>'},
- {"text": locale_border.borderVertical, "value": "border-vertical", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-vertical iconfont luckysheet-iconfont-neikuangshuxian" style="user-select: none;"> </div> </div>'},
- {"text": "", "value": "split", "example": ""},
- {"text": "<span id='luckysheet-icon-borderColor-linecolor' class='luckysheet-mousedown-cancel' style='border-bottom:3px solid #000;'>"+ locale_border.borderColor +"</span>", "value":"borderColor", "example":"more"},
- {"text": ""+ locale_border.borderSize +"<img id='luckysheetborderSizepreview' width=100 height=10 src='data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==' style='position:absolute;bottom:-5px;right:0px;width:100px;height:10px;'>", "value":"borderSize", "example":"more"}
- ];
- // itemvalue to iconfont
- const iconfontObject = iconfontObjects.border;
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "border-menu", "item": itemset, "subclass": "", "sub": "" });
- let subitemdata = [
- {"text": locale_border.borderNone, "value": "0", "example": ""},
- {"text": "<canvas type='Thin' class='border-Thin' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "1", "example": ""},
- {"text": "<canvas type='Hair' class='border-Hair' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "2", "example": ""},
- {"text": "<canvas type='Dotted' class='border-Dotted' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "3", "example": ""},
- {"text": "<canvas type='Dashed' class='border-Dashed' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "4", "example": ""},
- {"text": "<canvas type='DashDot' class='border-DashDot' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "5", "example": ""},
- {"text": "<canvas type='DashDotDot' class='border-DashDotDot' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "6", "example": ""},
- // {"text":"<canvas type='Double' class='border-Double' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value":"7", "example":""},
- {"text": "<canvas type='Medium' class='border-Medium' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "8", "example": ""},
- {"text": "<canvas type='MediumDashed' class='border-MediumDashed' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "9", "example": ""},
- {"text": "<canvas type='MediumDashDot' class='border-MediumDashDot' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "10", "example": ""},
- {"text": "<canvas type='MediumDashDotDot' class='border-MediumDashDotDot' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "11", "example": ""},
- // {"text":"<canvas type='SlantedDashDot' class='border-SlantedDashDot' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value":"12", "example":""},
- {"text": "<canvas type='Thick' class='border-Thick' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "13", "example": ""}
- ];
- let subitemset = _this.createButtonMenu(subitemdata);
- let submenu = replaceHtml(_this.menu, { "id": "borderSize", "item": subitemset, "subclass": "luckysheet-menuButton-sub" });
- let submenuid = "luckysheet-icon-borderSize-menuButton";
- let subcolormenuid = "luckysheet-icon-borderColor-menuButton";
- let colormenu = replaceHtml(_this.color, { "id": subcolormenuid, "coloritem": "", "colorself": "", "sub": "luckysheet-menuButton-sub",resetColor:locale_toolbar.resetColor });
- $("body").append(menu + colormenu + submenu);
- $menuButton = $("#" + menuButtonId).width(170);
- _this.focus($menuButton, "border-all");
- $("#" + submenuid + " canvas").each(function(i){
- let type = $(this).attr("type");
- let itemvalue = $(this).closest(".luckysheet-cols-menuitem").attr("itemvalue");
- let canvasborder = $(this).addClass("luckysheet-mousedown-cancel").get(0).getContext("2d");
- canvasborder.translate(0.5, 0.5);
- _this.setLineDash(canvasborder, itemvalue, "h", 0, 5, 100, 5);
-
- canvasborder.strokeStyle = "#000000";
- canvasborder.stroke();
- canvasborder.closePath();
- });
- $("#" + submenuid + " .luckysheet-cols-menuitem").click(function(){
- $("#"+ submenuid).hide();
- let $t = $(this),
- itemvalue = $t.attr("itemvalue");
-
- if(itemvalue == 0){
- $("#luckysheetborderSizepreview").attr("src", "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==").attr("itemvalue", null);
- }
- else{
- let bg = $t.find("canvas").get(0).toDataURL("image/png");
- $("#luckysheetborderSizepreview").attr("src", bg).attr("itemvalue", itemvalue);
- }
-
- _this.focus($("#" + submenuid), itemvalue);
- });
-
- // border choose menu
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- // *如果禁止前台编辑,则中止下一步操作
- if (!checkIsAllowEdit()) {
- tooltip.info("", locale().pivotTable.errorNotAllowEdit);
- return
- }
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(itemvalue == "borderColor" || itemvalue == "borderSize"){
- return;
- }
- if(!checkProtectionFormatCells(Store.currentSheetIndex)){
- return;
- }
- let d = editor.deepCopyFlowData(Store.flowdata);
- let color = $("#"+ subcolormenuid).find(".luckysheet-color-selected").val();
- let style = $("#luckysheetborderSizepreview").attr("itemvalue");
- if(color == null || color == ""){
- color = "#000";
- }
- if(style == null || style == ""){
- style = "1";
- }
- let cfg = $.extend(true, {}, Store.config);
- if(cfg["borderInfo"] == null){
- cfg["borderInfo"] = [];
- }
- let borderInfo = {
- "rangeType": "range",
- "borderType": itemvalue,
- "color": color,
- "style": style,
- "range": $.extend(true, [], Store.luckysheet_select_save)
- }
- cfg["borderInfo"].push(borderInfo);
- if (Store.clearjfundo) {
- Store.jfundo.length = 0;
- let redo = [];
- redo["type"] = "borderChange";
- redo["config"] = $.extend(true, {}, Store.config);
- redo["curconfig"] = $.extend(true, {}, cfg);
-
- redo["sheetIndex"] = Store.currentSheetIndex;
- Store.jfredo.push(redo);
- }
- server.saveParam("cg", Store.currentSheetIndex, cfg["borderInfo"], { "k": "borderInfo" });
- Store.config = cfg;
- Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
- setTimeout(function () {
- luckysheetrefreshgrid();
- }, 1);
- $("#luckysheet-icon-border-all").attr("type", itemvalue);
- let $icon = $("#luckysheet-icon-border-all").find(".luckysheet-icon-img-container");
- // add iconfont
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-" + itemvalue + iconfontObject[itemvalue]);
- _this.focus($menuButton, itemvalue);
- });
- $("#" + subcolormenuid).find(".luckysheet-color-selected").spectrum({
- showPalette: true,
- showPaletteOnly: true,
- preferredFormat: "hex",
- clickoutFiresChange: false,
- showInitial: true,
- showInput: true,
- flat: true,
- hideAfterPaletteSelect: true,
- showSelectionPalette: true,
- maxPaletteSize: 8,
- maxSelectionSize: 8,
- color: "#000",
- cancelText: locale_button.cancel,
- chooseText: locale_button.confirm,
- togglePaletteMoreText: locale_toolbar.customColor,
- togglePaletteLessText: locale_toolbar.collapse,
- togglePaletteOnly: true,
- clearText: locale_toolbar.clearText,
- noColorSelectedText:locale_toolbar.noColorSelectedText,
- localStorageKey: "spectrum.bordercolor" + server.gridKey,
- palette: [
- ["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
- ["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
- ["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
- ["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
- ["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
- ["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
- ["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
- ["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
- ],
- change: function (color) {
- let $input = $(this);
- if (color != null) {
- color = color.toHexString();
- }
- else {
- color = "#000";
- }
- let oldcolor = null;
- $("#luckysheet-icon-borderColor-linecolor").css("border-bottom-color", color);
- $("#"+ subcolormenuid).find(".luckysheet-color-selected").val(color);
- }
- });
- $("#"+ subcolormenuid).find(".luckysheet-color-reset").click(function(){
- let $input = $("#"+ subcolormenuid).find(".luckysheet-color-selected");
- $input.val("#000");
- $("#luckysheet-icon-cell-color").attr("color", null);
- $input.spectrum("set", "#000");
- $("#luckysheet-icon-borderColor-linecolor").css("border-bottom-color", "#000");
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft-28, $(this).offset().top+25, "lefttop");
- });
- //合并单元格
- $("#luckysheet-icon-merge-button").click(function(){
- if(!checkProtectionNotEnable(Store.currentSheetIndex)){
- return;
- }
- if(selectIsOverlap()){
- if(isEditMode()){
- alert("不能合并重叠区域");
- }
- else{
- tooltip.info("不能合并重叠区域", "");
- }
- return;
- }
- if(Store.config["merge"] != null){
- let has_PartMC = false;
- for(let s = 0; s < Store.luckysheet_select_save.length; s++){
- let r1 = Store.luckysheet_select_save[s].row[0],
- r2 = Store.luckysheet_select_save[s].row[1];
- let c1 = Store.luckysheet_select_save[s].column[0],
- c2 = Store.luckysheet_select_save[s].column[1];
- has_PartMC = hasPartMC(Store.config, r1, r2, c1, c2);
- if(has_PartMC){
- break;
- }
- }
- if(has_PartMC){
- if(isEditMode()){
- alert("无法对部分合并单元格执行此操作");
- }
- else{
- tooltip.info("无法对部分合并单元格执行此操作", "");
- }
- return;
- }
- }
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat_mc(d, "mergeAll");
- });
- $("#luckysheet-icon-merge-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- const _locale = locale();
- const locale_merge = _locale.merge;
- let itemdata = [
- {"text": locale_merge.mergeAll, "value": "mergeAll", "example": ""},
- {"text": locale_merge.mergeV, "value": "mergeV", "example": ""},
- {"text": locale_merge.mergeH, "value": "mergeH", "example": ""},
- {"text": locale_merge.mergeCancel, "value": "mergeCancel", "example": ""}
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "merge-menu", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#"+menuButtonId);
- _this.focus($menuButton);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- if(selectIsOverlap()){
- if(isEditMode()){
- alert(locale_merge.overlappingError);
- }
- else{
- tooltip.info(locale_merge.overlappingError, "");
- }
- return;
- }
- if(Store.config["merge"] != null){
- let has_PartMC = false;
- for(let s = 0; s < Store.luckysheet_select_save.length; s++){
- let r1 = Store.luckysheet_select_save[s].row[0],
- r2 = Store.luckysheet_select_save[s].row[1];
- let c1 = Store.luckysheet_select_save[s].column[0],
- c2 = Store.luckysheet_select_save[s].column[1];
- has_PartMC = hasPartMC(Store.config, r1, r2, c1, c2);
- if(has_PartMC){
- break;
- }
- }
- if(has_PartMC){
- if(isEditMode()){
- alert(locale_merge.partiallyError);
- }
- else{
- tooltip.info(locale_merge.partiallyError, "");
- }
- return;
- }
- }
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- _this.focus($menuButton, itemvalue);
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat_mc(d, itemvalue);
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
- });
- //水平对齐
- $("#luckysheet-icon-align").click(function(){
- let itemvalue = $("#luckysheet-icon-align").attr("type");
- if(itemvalue == null){
- itemvalue = "left";
- }
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "ht", itemvalue);
- });
- $("#luckysheet-icon-align-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- const _locale = locale();
- const locale_align = _locale.align;
- let itemdata = [
- {"text": locale_align.left, "value": "left", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-left iconfont luckysheet-iconfont-wenbenzuoduiqi" style="user-select: none;"> </div> </div>'},
- {"text": locale_align.center, "value": "center", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-center iconfont luckysheet-iconfont-wenbenjuzhongduiqi" style="user-select: none;"> </div> </div>'},
- {"text": locale_align.right, "value": "right", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-right iconfont luckysheet-iconfont-wenbenyouduiqi" style="user-select: none;"> </div> </div>'}
- ];
- // itemvalue to iconfont
- const iconfontObject = iconfontObjects.align;
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "align-menu", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(120);
- _this.focus($menuButton);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- _this.focus($menuButton, itemvalue);
- let $icon = $("#luckysheet-icon-align").attr("type", itemvalue).find(".luckysheet-icon-img-container");
- // add iconfont
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-" + itemvalue + iconfontObject[itemvalue]);
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "ht", itemvalue);
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
- });
- //垂直对齐
- $("#luckysheet-icon-valign").click(function(){
- let itemvalue = $("#luckysheet-icon-valign").attr("type");
- if(itemvalue == null){
- itemvalue = "bottom";
- }
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "vt", itemvalue);
- });
- $("#luckysheet-icon-valign-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
- const _locale = locale();
- const locale_align = _locale.align;
- if($menuButton.length == 0){
- let itemdata = [
- {"text": locale_align.top, "value": "top", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-top iconfont luckysheet-iconfont-dingbuduiqi" style="user-select: none;"> </div> </div>'},
- {"text": locale_align.middle, "value": "middle", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-middle iconfont luckysheet-iconfont-shuipingduiqi" style="user-select: none;"> </div> </div>'},
- {"text": locale_align.bottom, "value": "bottom", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-bottom iconfont luckysheet-iconfont-dibuduiqi" style="user-select: none;"> </div> </div>'}
- ];
- // itemvalue to iconfont
- const iconfontObject = iconfontObjects.align;
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "valign-menu", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(120);
- _this.focus($menuButton, "bottom");
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- _this.focus($menuButton, itemvalue);
- let $icon = $("#luckysheet-icon-valign").attr("type", itemvalue).find(".luckysheet-icon-img-container");
- // add iconfont
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-" + itemvalue + iconfontObject[itemvalue]);
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "vt", itemvalue);
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
- });
- //文本换行
- $("#luckysheet-icon-textwrap-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- const _locale = locale();
- const locale_textWrap = _locale.textWrap;
- let itemdata = [
- {"text": locale_textWrap.overflow, "value": "overflow", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-overflow iconfont luckysheet-iconfont-yichu1" style="user-select: none;"> </div> </div>'},
- {"text": locale_textWrap.wrap, "value": "wrap", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-wrap iconfont luckysheet-iconfont-zidonghuanhang" style="user-select: none;"> </div> </div>'},
- {"text": locale_textWrap.clip, "value": "clip", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-clip iconfont luckysheet-iconfont-jieduan" style="user-select: none;"> </div> </div>'}
- ];
- // itemvalue to iconfont
- const iconfontObject = iconfontObjects.textWrap;
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "textwrap-menu", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(120);
- _this.focus($menuButton, "clip");
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- _this.focus($menuButton, itemvalue);
- let $icon = $("#luckysheet-icon-textwrap").attr("type", itemvalue).find(".luckysheet-icon-img-container");
- // add iconfont
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-" + itemvalue + iconfontObject[itemvalue]);
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "tb", itemvalue);
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
- });
- //文本旋转
- $("#luckysheet-icon-rotation-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- const _locale = locale();
- const locale_rotation = _locale.rotation;
- let itemdata = [
- {"text": locale_rotation.none, "value": "none", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none iconfont luckysheet-iconfont-wuxuanzhuang" style="user-select: none;"> </div> </div>'},
- {"text": locale_rotation.angleup, "value": "angleup", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angleup iconfont luckysheet-iconfont-xiangshangqingxie" style="user-select: none;"> </div> </div>'},
- {"text": locale_rotation.angledown, "value": "angledown", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angledown iconfont luckysheet-iconfont-xiangxiaqingxie" style="user-select: none;"> </div> </div>'},
- {"text": locale_rotation.vertical, "value": "vertical", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-vertical iconfont luckysheet-iconfont-shupaiwenzi" style="user-select: none;"> </div> </div>'},
- {"text": locale_rotation.rotationUp, "value": "rotation-up", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-up iconfont luckysheet-iconfont-wenbenxiangshang" style="user-select: none;"> </div> </div>'},
- {"text": locale_rotation.rotationDown, "value": "rotation-down", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-down iconfont luckysheet-iconfont-xiangxia90" style="user-select: none;"> </div> </div>'},
- ];
- // itemvalue to iconfont
- const iconfontObject = iconfontObjects.rotation;
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "rotation-menu", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- // 文字旋转总 Stack Vertically 太长了,拉宽到160
- $menuButton = $("#" + menuButtonId).width(160);
- _this.focus($menuButton);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- _this.focus($menuButton, itemvalue);
- let $icon = $("#luckysheet-icon-rotation").attr("type", itemvalue).find(".luckysheet-icon-img-container");
- // add iconfont
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-" + itemvalue + iconfontObject[itemvalue]);
-
- let d = editor.deepCopyFlowData(Store.flowdata);
- _this.updateFormat(d, "tr", itemvalue);
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft - 28, $(this).offset().top + 25, "lefttop");
- });
- //冻结行列
- $("#luckysheet-icon-freezen-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- const _locale = locale();
- const locale_freezen = _locale.freezen;
- let itemdata = [
- {"text": locale_freezen.freezenRow, "value": "freezenRow", "example": ''},
- {"text": locale_freezen.freezenColumn, "value": "freezenColumn", "example": ''},
- {"text": locale_freezen.freezenRC, "value": "freezenRC", "example": ''},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_freezen.freezenRowRange, "value": "freezenRowRange", "example": ''},
- {"text": locale_freezen.freezenColumnRange, "value": "freezenColumnRange", "example": ''},
- {"text": locale_freezen.freezenRCRange, "value": "freezenRCRange", "example": ''},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_freezen.freezenCancel, "value": "freezenCancel", "example": ''}
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "freezen-menu", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(170);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- _this.focus($menuButton, itemvalue);
- if (itemvalue === 'freezenCancel') {
- $menuButton.find('.fa.fa-check').remove();
- }
- // store frozen
- luckysheetFreezen.saveFrozen(itemvalue);
- if(itemvalue == "freezenRow"){ //首行冻结
- frozenFirstRow();
- // let scrollTop = $("#luckysheet-cell-main").scrollTop();
- // let row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
- // if(row_st == -1){
- // row_st = 0;
- // }
- // let top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
- // let freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
- // luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
- // if (luckysheetFreezen.freezenverticaldata != null) {
- // luckysheetFreezen.cancelFreezenVertical();
- // luckysheetFreezen.createAssistCanvas();
- // luckysheetrefreshgrid();
- // }
- // luckysheetFreezen.createFreezenHorizontal(freezenhorizontaldata, top);
- // luckysheetFreezen.createAssistCanvas();
- // luckysheetrefreshgrid();
- }
- else if(itemvalue == "freezenColumn"){ //首列冻结
- frozenFirstColumn();
- // let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
- // let col_st = luckysheet_searcharray(Store.visibledatacolumn, scrollLeft);
- // if(col_st == -1){
- // col_st = 0;
- // }
- // let left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
- // let freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
- // luckysheetFreezen.saveFreezen(null, null, freezenverticaldata, left);
- // if (luckysheetFreezen.freezenhorizontaldata != null) {
- // luckysheetFreezen.cancelFreezenHorizontal();
- // luckysheetFreezen.createAssistCanvas();
- // luckysheetrefreshgrid();
- // }
- // luckysheetFreezen.createFreezenVertical(freezenverticaldata, left);
- // luckysheetFreezen.createAssistCanvas();
- // luckysheetrefreshgrid();
- }
- else if(itemvalue == "freezenRC"){ //首行列冻结
- if (luckysheetFreezen.freezenRealFirstRowColumn) {
- let row_st = 0;
- let top = Store.visibledatarow[row_st] - 2 + Store.columnHeaderHeight;
- let freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
- luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
- luckysheetFreezen.createFreezenHorizontal(freezenhorizontaldata, top);
- let col_st = 0;
- let left = Store.visibledatacolumn[col_st] - 2 + Store.rowHeaderWidth;
- let freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
- luckysheetFreezen.saveFreezen(null, null, freezenverticaldata, left);
- luckysheetFreezen.createFreezenVertical(freezenverticaldata, left);
- } else {
- let scrollTop = $("#luckysheet-cell-main").scrollTop();
- let row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
- if(row_st == -1){
- row_st = 0;
- }
- let top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
- let freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
- luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
- luckysheetFreezen.createFreezenHorizontal(freezenhorizontaldata, top);
- let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
- let col_st = luckysheet_searcharray(Store.visibledatacolumn, scrollLeft);
- if(col_st == -1){
- col_st = 0;
- }
- let left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
- let freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
- luckysheetFreezen.saveFreezen(null, null, freezenverticaldata, left);
- luckysheetFreezen.createFreezenVertical(freezenverticaldata, left);
- }
- luckysheetFreezen.createAssistCanvas();
- luckysheetrefreshgrid();
- }
- else if(itemvalue == "freezenRowRange"){ //选区行冻结
- if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(locale_freezen.noSeletionError);
- }
- else{
- tooltip.info(locale_freezen.noSeletionError, "");
- }
- return;
- }
- // 固定超出屏幕范围
- let rangeTop = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1].top;
- if (luckysheetFreezen.freezenRealFirstRowColumn && rangeTop > $("#luckysheet-cell-main").height()) {
- return tooltip.info(locale_freezen.rangeRCOverErrorTitle, locale_freezen.rangeRCOverError);
- }
- let scrollTop = $("#luckysheet-cell-main").scrollTop();
- let row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
- let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
- let row_focus = last["row_focus"] == null ? last["row"][0] : last["row_focus"];
- if(row_focus > row_st){
- row_st = row_focus;
- }
-
- if(row_st == -1){
- row_st = 0;
- }
- let top,freezenhorizontaldata;
- if (luckysheetFreezen.freezenRealFirstRowColumn) {
- top = Store.visibledatarow[row_st] - 2 + Store.columnHeaderHeight;
- freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
- } else {
- top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
- freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
- }
- luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
- if (luckysheetFreezen.freezenverticaldata != null) {
- luckysheetFreezen.cancelFreezenVertical();
- luckysheetFreezen.createAssistCanvas();
- luckysheetrefreshgrid();
- }
- luckysheetFreezen.createFreezenHorizontal(freezenhorizontaldata, top);
- luckysheetFreezen.createAssistCanvas();
- luckysheetrefreshgrid();
- }
- else if(itemvalue == "freezenColumnRange"){ //选区列冻结
- if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(locale_freezen.noSeletionError);
- }
- else{
- tooltip.info(locale_freezen.noSeletionError,"");
- }
- return;
- }
- // 固定超出屏幕范围
- let rangeLeft = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1].left;
- if (luckysheetFreezen.freezenRealFirstRowColumn && rangeLeft > $("#luckysheet-cell-main").width()) {
- return tooltip.info(locale_freezen.rangeRCOverErrorTitle, locale_freezen.rangeRCOverError);
- }
- let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
- let col_st = luckysheet_searcharray(Store.visibledatacolumn, scrollLeft);
- let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
- let column_focus = last["column_focus"] == null ? last["column"][0] : last["column_focus"];
- if(column_focus > col_st){
- col_st = column_focus;
- }
- if(col_st == -1){
- col_st = 0;
- }
- let left,freezenverticaldata;
- if (luckysheetFreezen.freezenRealFirstRowColumn) {
- left = Store.visibledatacolumn[col_st] - 2 + Store.rowHeaderWidth;
- freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
- } else {
- left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
- freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
- }
- luckysheetFreezen.saveFreezen(null, null, freezenverticaldata, left);
- if (luckysheetFreezen.freezenhorizontaldata != null) {
- luckysheetFreezen.cancelFreezenHorizontal();
- luckysheetFreezen.createAssistCanvas();
- luckysheetrefreshgrid();
- }
- luckysheetFreezen.createFreezenVertical(freezenverticaldata, left);
- luckysheetFreezen.createAssistCanvas();
- luckysheetrefreshgrid();
- }
- else if(itemvalue == "freezenRCRange"){ //选区行列冻结
- if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(locale_freezen.noSeletionError);
- }
- else{
- tooltip.info(locale_freezen.noSeletionError,"");
- }
- return;
- }
- // 固定超出屏幕范围
- let rangeTop = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1].top;
- let rangeLeft = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1].left;
- if (luckysheetFreezen.freezenRealFirstRowColumn && (rangeTop > $("#luckysheet-cell-main").height() || rangeLeft > $("#luckysheet-cell-main").width())) {
- return tooltip.info(locale_freezen.rangeRCOverErrorTitle, locale_freezen.rangeRCOverError);
- }
-
- let scrollTop = $("#luckysheet-cell-main").scrollTop();
- let row_st = luckysheet_searcharray(Store.visibledatarow, scrollTop);
- let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
- let row_focus = last["row_focus"] == null ? last["row"][0] : last["row_focus"];
- if(row_focus > row_st){
- row_st = row_focus;
- }
-
- if(row_st == -1){
- row_st = 0;
- }
- let top,freezenhorizontaldata;
- if (luckysheetFreezen.freezenRealFirstRowColumn) {
- top = Store.visibledatarow[row_st] - 2 + Store.columnHeaderHeight;
- freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
- luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
- } else {
- top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
- freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
- luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
- }
- luckysheetFreezen.createFreezenHorizontal(freezenhorizontaldata, top);
- let scrollLeft = $("#luckysheet-cell-main").scrollLeft();
- let col_st = luckysheet_searcharray(Store.visibledatacolumn, scrollLeft);
- let column_focus = last["column_focus"] == null ? last["column"][0] : last["column_focus"];
- if(column_focus > col_st){
- col_st = column_focus;
- }
- if(col_st == -1){
- col_st = 0;
- }
- let left,freezenverticaldata;
- if (luckysheetFreezen.freezenRealFirstRowColumn) {
- left = Store.visibledatacolumn[col_st] - 2 + Store.rowHeaderWidth;
- freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
- } else {
- left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
- freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
- }
- luckysheetFreezen.saveFreezen(null, null, freezenverticaldata, left);
- luckysheetFreezen.createFreezenVertical(freezenverticaldata, left);
-
- luckysheetFreezen.createAssistCanvas();
- luckysheetrefreshgrid();
- }
- else if(itemvalue == "freezenCancel"){ //Cancel freezen
- if (luckysheetFreezen.freezenverticaldata != null) {
- luckysheetFreezen.cancelFreezenVertical();
- luckysheetFreezen.createAssistCanvas();
- luckysheetrefreshgrid();
- }
- if (luckysheetFreezen.freezenhorizontaldata != null) {
- luckysheetFreezen.cancelFreezenHorizontal();
- luckysheetFreezen.createAssistCanvas();
- luckysheetrefreshgrid();
- }
- luckysheetFreezen.scrollAdapt();
- }
- setTimeout(function(){
- luckysheetsizeauto();
- },0);
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft - 68, $(this).offset().top + 25, "lefttop");
- });
- //过滤和排序
- $("#luckysheet-icon-autofilter").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- if($menuButton.length == 0){
- const _locale = locale();
- const locale_sort = _locale.sort;
- const locale_filter = _locale.filter;
- let itemdata = [
- {"text": locale_sort.asc, "value": "asc", "example": '<i class="iconfont luckysheet-iconfont-shengxu" aria-hidden="true"></i>'},
- {"text": locale_sort.desc, "value": "desc", "example": '<i class="iconfont luckysheet-iconfont-jiangxu" aria-hidden="true"></i>'},
- {"text": locale_sort.custom+"...", "value": "diysort", "example": '<i class="iconfont luckysheet-iconfont-zidingyipaixu" aria-hidden="true"></i>'},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_filter.filter, "value": "filter", "example": '<i class="iconfont luckysheet-iconfont-shaixuan2" aria-hidden="true"></i>'},
- {"text": locale_filter.clearFilter, "value": "clearfilter", "example": '<i class="iconfont luckysheet-iconfont-qingchushaixuan" aria-hidden="true"></i>'}
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, {"id":"autofilter", "item": itemset, "subclass":"", "sub":""});
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(150);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(itemvalue == "diysort"){
- $("#luckysheetorderby").click();
- }
- else if(itemvalue == "asc"){
- sortSelection(true);
- }
- else if(itemvalue == "desc"){
- sortSelection(false);
- }
- else if(itemvalue == "filter"){
- if($('#luckysheet-filter-options-sheet' + Store.currentSheetIndex).length > 0){
- $("#luckysheet-filter-initial").click();
- }
- else{
- createFilter();
- }
- }
- else if(itemvalue == "clearfilter"){
- $("#luckysheet-filter-initial").click();
- }
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
- });
- //查找和替换
- $("#luckysheet-icon-seachmore").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
- const _locale = locale();
- const locale_findAndReplace = _locale.findAndReplace;
- if($menuButton.length == 0){
- let itemdata = [
- {"text": locale_findAndReplace.find+" ...", "value": "search", "example": '<i class="iconfont luckysheet-iconfont-sousuo" aria-hidden="true"></i>'},
- {"text": locale_findAndReplace.replace+" ...", "value": "replace", "example": '<i class="iconfont luckysheet-iconfont-tihuan" aria-hidden="true"></i>'},
- // {"text": locale_findAndReplace.goto+" ...", "value": "goto", "example": '<i class="iconfont luckysheet-iconfont-zhuandao1" aria-hidden="true"></i>'},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_findAndReplace.location+" ...", "value": "location", "example": '<i class="iconfont luckysheet-iconfont-dingwei" aria-hidden="true"></i>'},
- {"text": locale_findAndReplace.formula, "value": "locationFormula", "example": locale_findAndReplace.locationExample},
- {"text": locale_findAndReplace.date, "value": "locationConstantDate", "example": locale_findAndReplace.locationExample},
- {"text": locale_findAndReplace.number, "value": "locationConstantNumber", "example": locale_findAndReplace.locationExample},
- {"text": locale_findAndReplace.string, "value": "locationConstantString", "example": locale_findAndReplace.locationExample},
- {"text": locale_findAndReplace.error, "value": "locationConstantError", "example": locale_findAndReplace.locationExample},
- {"text": locale_findAndReplace.condition, "value": "locationCF", "example": locale_findAndReplace.locationExample},
- {"text": locale_findAndReplace.rowSpan, "value": "locationStepRow", "example": locale_findAndReplace.locationExample},
- {"text": locale_findAndReplace.columnSpan, "value": "locationStepColumn", "example": locale_findAndReplace.locationExample}
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "seachmore", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(180);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(itemvalue == "search" || itemvalue == "replace"){ //查找替换
- if(itemvalue == "search"){
- luckysheetSearchReplace.createDialog(0);
- }
- else if(itemvalue == "replace"){
- luckysheetSearchReplace.createDialog(1);
- }
-
- luckysheetSearchReplace.init();
- $("#luckysheet-search-replace #searchInput input").focus();
- }
- else if(itemvalue == "location"){ //定位条件
- luckysheetLocationCell.createDialog();
- luckysheetLocationCell.init();
- }
- else if(itemvalue == "locationFormula" || itemvalue == "locationConstantDate" || itemvalue == "locationConstantNumber" || itemvalue == "locationConstantString" || itemvalue == "locationConstantError" || itemvalue == "locationCF"){
- let last = Store.luckysheet_select_save[0];
-
- let range;
- if(Store.luckysheet_select_save.length == 0 || (Store.luckysheet_select_save.length == 1 && last.row[0] == last.row[1] && last.column[0] == last.column[1])){
- //单个单元格
- range = [{"row": [0, Store.flowdata.length - 1], "column": [0, Store.flowdata[0].length - 1]}];
- }
- else{
- range = $.extend(true, [], Store.luckysheet_select_save);
- }
- if(itemvalue == "locationFormula"){ //公式
- luckysheetLocationCell.apply(range, "locationFormula", "all");
- }
- else if(itemvalue == "locationConstantDate"){ //日期
- luckysheetLocationCell.apply(range, "locationConstant", "d");
- }
- else if(itemvalue == "locationConstantNumber"){ //数字
- luckysheetLocationCell.apply(range, "locationConstant", "n");
- }
- else if(itemvalue == "locationConstantString"){ //字符
- luckysheetLocationCell.apply(range, "locationConstant", "s,g");
- }
- else if(itemvalue == "locationConstantError"){ //错误
- luckysheetLocationCell.apply(range, "locationConstant", "e");
- }
- else if(itemvalue == "locationCF"){ //条件格式
- luckysheetLocationCell.apply(range, "locationCF");
- }
- }
- else if(itemvalue == "locationStepRow"){ //间隔行
- if(Store.luckysheet_select_save.length == 0 || (Store.luckysheet_select_save.length == 1 && Store.luckysheet_select_save[0].row[0] == Store.luckysheet_select_save[0].row[1])){
- if(isEditMode()){
- alert(locale_findAndReplace.lessTwoRowTip);
- }
- else{
- tooltip.info("", locale_findAndReplace.lessTwoRowTip);
- }
- return;
- }
- let range = $.extend(true, [], Store.luckysheet_select_save);
- luckysheetLocationCell.apply(range, "locationStepRow");
- }
- else if(itemvalue == "locationStepColumn"){ //间隔列
- if(Store.luckysheet_select_save.length == 0 || (Store.luckysheet_select_save.length == 1 && Store.luckysheet_select_save[0].column[0] == Store.luckysheet_select_save[0].column[1])){
- if(isEditMode()){
- alert(locale_findAndReplace.lessTwoColumnTip);
- }
- else{
- tooltip.info("", locale_findAndReplace.lessTwoColumnTip);
- }
- return;
- }
- let range = $.extend(true, [], Store.luckysheet_select_save);
- luckysheetLocationCell.apply(range, "locationStepColumn");
- }
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
- });
- //公式
- $("#luckysheet-icon-function").click(function(){
- _this.autoSelectionFormula("SUM");
- });
- //公式菜单
- $("#luckysheet-icon-function-menu").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
- const _locale = locale();
- const locale_formula = _locale.formula;
-
- if($menuButton.length == 0){
- let itemdata = [
- {"text": locale_formula.sum, "value": "SUM", "example": 'SUM'},
- {"text": locale_formula.average, "value": "AVERAGE", "example": 'AVERAGE'},
- {"text": locale_formula.count, "value": "COUNT", "example": 'COUNT'},
- {"text": locale_formula.max, "value": "MAX", "example": 'MAX'},
- {"text": locale_formula.min, "value": "MIN", "example": 'MIN'},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_formula.ifGenerate, "value": "if", "example": 'IF'},
- {"text": locale_formula.find+" ...", "value": "formula", "example": ""}
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "function-menu", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(180);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(itemvalue == "if"){
- let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
- let r = last["row_focus"] == null ? last["row"][0] : last["row_focus"];
- let c = last["column_focus"] == null ? last["column"][0] : last["column_focus"];
- if(!!Store.flowdata[r] && !!Store.flowdata[r][c] && !!Store.flowdata[r][c]["f"]){
- let fp = Store.flowdata[r][c]["f"].toString();
- if(fp.indexOf("=if(") != -1){
- ifFormulaGenerator.ifFormulaDialog(fp);
- }
- else{
- if(isEditMode()){
- alert(locale_formula.tipNotBelongToIf);
- }
- else{
- tooltip.info(locale_formula.tipNotBelongToIf,"");
- }
- return;
- }
- }
- else{
- ifFormulaGenerator.ifFormulaDialog();
- }
- ifFormulaGenerator.init();
- }
- else if(itemvalue == "formula"){
- //点击函数查找弹出框
- if(Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(locale_formula.tipSelectCell);
- }
- else{
- tooltip.info(locale_formula.tipSelectCell,"");
- }
- return;
- }
- let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
- let row_index = last["row_focus"], col_index = last["column_focus"];
- luckysheetupdateCell(row_index, col_index, Store.flowdata);
-
- let cell = Store.flowdata[row_index][col_index];
- if(cell != null && cell.f != null){
- //单元格有计算
- let functionStr = luckysheetformula.getfunctionParam(cell.f);
- if(functionStr.fn != null){
- //有函数公式
- insertFormula.formulaParmDialog(functionStr.fn, functionStr.param);
- }
- else{
- //无函数公式
- insertFormula.formulaListDialog();
- }
- }
- else{
- //单元格无计算
- $("#luckysheet-rich-text-editor").html('<span dir="auto" class="luckysheet-formula-text-color">=</span>');
- $("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
- insertFormula.formulaListDialog();
- }
- insertFormula.init();
- }
- else {
- _this.autoSelectionFormula(itemvalue);
- }
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft-48, $(this).offset().top+25, "lefttop");
- });
- //加粗
- $("#luckysheet-icon-bold").mousedown(function(e){
- hideMenuByCancel(e);
- e.stopPropagation();
- }).click(function(e){
- let d = editor.deepCopyFlowData(Store.flowdata);
-
- let flag = checkTheStatusOfTheSelectedCells("bl",1);
- let foucsStatus = flag ? 0 : 1;
- _this.updateFormat(d, "bl", foucsStatus);
- });
- //斜体
- $("#luckysheet-icon-italic").mousedown(function(e){
- hideMenuByCancel(e);
- e.stopPropagation();
- }).click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);
- let flag = checkTheStatusOfTheSelectedCells("it",1);
- let foucsStatus = flag ? 0 : 1;
- _this.updateFormat(d, "it", foucsStatus);
- });
- //删除线
- $("#luckysheet-icon-strikethrough").mousedown(function(e){
- hideMenuByCancel(e);
- e.stopPropagation();
- }).click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);
- let flag = checkTheStatusOfTheSelectedCells("cl",1);
- let foucsStatus = flag ? 0 : 1;
- _this.updateFormat(d, "cl", foucsStatus);
- });
- //下划线
- $("#luckysheet-icon-underline").mousedown(function(e){
- hideMenuByCancel(e);
- e.stopPropagation();
- }).click(function(){
- let d = editor.deepCopyFlowData(Store.flowdata);
- let flag = checkTheStatusOfTheSelectedCells("un",1);
- let foucsStatus = flag ? 0 : 1;
- _this.updateFormat(d, "un", foucsStatus);
- });
- //条件格式
- $("#luckysheet-icon-conditionformat").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
- const conditionformat_text = locale().conditionformat;
-
- if($menuButton.length == 0){
- let itemdata = [
- { "text": conditionformat_text.highlightCellRules, "value": "highlightCellRule", "example": "more" },
- { "text": conditionformat_text.itemSelectionRules, "value": "projectSelectRule", "example": "more" },
- { "text": conditionformat_text.dataBar, "value": "dataBar", "example": "more" },
- { "text": conditionformat_text.colorGradation, "value": "colorGradation", "example": "more" },
- { "text": conditionformat_text.icons, "value": "icons", "example": "" },
- { "text": "", "value": "split", "example": "" },
- { "text": conditionformat_text.newRule, "value": "newRule", "example": "" },
- { "text": conditionformat_text.deleteRule, "value": "deleteRule", "example": "more" },
- { "text": conditionformat_text.manageRules, "value": "administerRule", "example": "" }
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, {"id": "conditionformat", "item": itemset, "subclass": "", "sub": ""});
-
- //突出显示单元格规则子菜单
- let subitemdata = [
- { "text": conditionformat_text.greaterThan, "value": "greaterThan", "example": ">" },
- { "text": conditionformat_text.lessThan, "value": "lessThan", "example": "<" },
- { "text": conditionformat_text.between, "value": "betweenness", "example": "[]" },
- { "text": conditionformat_text.equal, "value": "equal", "example": "=" },
- { "text": conditionformat_text.textContains, "value": "textContains", "example": "()" },
- { "text": conditionformat_text.occurrence, "value": "occurrenceDate", "example": conditionformat_text.yesterday },
- { "text": conditionformat_text.duplicateValue, "value": "duplicateValue", "example": "##" }
- ];
- let subitemset = _this.createButtonMenu(subitemdata);
- let submenu = replaceHtml(_this.menu, {"id": "highlightCellRule", "item": subitemset, "subclass": "luckysheet-menuButton-sub"});
-
- //项目选取规则子菜单
- let subitemdata2 = [
- { "text": conditionformat_text.top10, "value": "top10", "example": conditionformat_text.top10 },
- { "text": conditionformat_text.top10_percent, "value": "top10%", "example": conditionformat_text.top10_percent },
- { "text": conditionformat_text.last10, "value": "last10", "example": conditionformat_text.last10 },
- { "text": conditionformat_text.last10_percent, "value": "last10%", "example": conditionformat_text.last10_percent },
- { "text": conditionformat_text.aboveAverage, "value": "AboveAverage", "example": conditionformat_text.above },
- { "text": conditionformat_text.belowAverage, "value": "SubAverage", "example": conditionformat_text.below }
- ];
- let subitemset2 = _this.createButtonMenu(subitemdata2);
- let submenu2 = replaceHtml(_this.menu, {"id": "projectSelectRule", "item": subitemset2, "subclass": "luckysheet-menuButton-sub"});
-
- //数据条子菜单
- let submenu3 = `<div id="luckysheet-icon-dataBar-menuButton" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton luckysheet-menuButton-sub luckysheet-mousedown-cancel" style="width: 126px;padding: 5px;top: 118.5px;left: 1321.48px;display: none;">
- <div itemvalue="0" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 0;" title="${conditionformat_text.gradientDataBar_1}"></div>
- </div>
- <div itemvalue="1" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px 0;" title="${conditionformat_text.gradientDataBar_2}"></div>
- </div>
- <div itemvalue="2" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px 0;" title="${conditionformat_text.gradientDataBar_3}"></div>
- </div>
- <div itemvalue="3" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -36px;" title="${conditionformat_text.gradientDataBar_4}"></div>
- </div>
- <div itemvalue="4" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -36px;" title="${conditionformat_text.gradientDataBar_5}"></div>
- </div>
- <div itemvalue="5" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -36px;" title="${conditionformat_text.gradientDataBar_6}"></div>
- </div>
- <div itemvalue="6" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -72px;" title="${conditionformat_text.solidColorDataBar_1}"></div>
- </div>
- <div itemvalue="7" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -72px;" title="${conditionformat_text.solidColorDataBar_2}"></div>
- </div>
- <div itemvalue="8" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -72px;" title="${conditionformat_text.solidColorDataBar_3}"></div>
- </div>
- <div itemvalue="9" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -108px;" title="${conditionformat_text.solidColorDataBar_4}"></div>
- </div>
- <div itemvalue="10" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -108px;" title="${conditionformat_text.solidColorDataBar_5}"></div>
- </div>
- <div itemvalue="11" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -108px;" title="${conditionformat_text.solidColorDataBar_6}"></div>
- </div>
- </div>`;
- //色阶
- let submenu4 = `<div id="luckysheet-icon-colorGradation-menuButton" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-menuButton luckysheet-menuButton-sub luckysheet-mousedown-cancel" style="width: 126px;padding: 5px;top: 143.5px;left: 1321.48px;display: none;">
- <div itemvalue="0" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 0;" title="${conditionformat_text.colorGradation_1}"></div>
- </div>
- <div itemvalue="1" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px 0;" title="${conditionformat_text.colorGradation_2}"></div>
- </div>
- <div itemvalue="2" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px 0;" title="${conditionformat_text.colorGradation_3}"></div>
- </div>
- <div itemvalue="3" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -114px 0;" title="${conditionformat_text.colorGradation_4}"></div>
- </div>
- <div itemvalue="4" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -36px;" title="${conditionformat_text.colorGradation_5}"></div>
- </div>
- <div itemvalue="5" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -36px;" title="${conditionformat_text.colorGradation_6}"></div>
- </div>
- <div itemvalue="6" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -36px;" title="${conditionformat_text.colorGradation_7}"></div>
- </div>
- <div itemvalue="7" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -114px -36px;" title="${conditionformat_text.colorGradation_8}"></div>
- </div>
- <div itemvalue="8" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: 0 -72px;" title="${conditionformat_text.colorGradation_9}"></div>
- </div>
- <div itemvalue="9" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -38px -72px;" title="${conditionformat_text.colorGradation_10}"></div>
- </div>
- <div itemvalue="10" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -76px -72px;" title="${conditionformat_text.colorGradation_11}"></div>
- </div>
- <div itemvalue="11" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="width: 28px; height: 26px;padding: 5px;float: left;">
- <div class="luckysheet-mousedown-cancel bgImgBox" style="background-position: -114px -72px;" title="${conditionformat_text.colorGradation_12}"></div>
- </div>
- </div>`;
- //清除规则子菜单
- let subitemdata6 = [
- { "text": conditionformat_text.deleteSheetRule, "value": "delSheet", "example": "" }
- ];
- let subitemset6 = _this.createButtonMenu(subitemdata6);
- let submenu6 = replaceHtml(_this.menu, {"id": "deleteRule", "item": subitemset6, "subclass":"luckysheet-menuButton-sub"});
- $("body").append(menu + submenu + submenu2 + submenu3 + submenu4 + submenu6);
- $menuButton = $("#" + menuButtonId).width(190);
- $("#luckysheet-icon-highlightCellRule-menuButton").width(160);
- $("#luckysheet-icon-projectSelectRule-menuButton").width(180);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(itemvalue == "icons"){
- if(Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(conditionformat_text.pleaseSelectRange);
- }
- else{
- tooltip.info(conditionformat_text.pleaseSelectRange, "");
- }
- return;
- }
- conditionformat.CFiconsDialog();
- conditionformat.init();
- }
- else if(itemvalue == "newRule"){
- if(Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(conditionformat_text.pleaseSelectRange);
- }
- else{
- tooltip.info(conditionformat_text.pleaseSelectRange, "");
- }
- return;
- }
- conditionformat.newConditionRuleDialog(0);
- conditionformat.init();
- }
- else if(itemvalue == "administerRule"){
- let loadSheetUrl = server.loadSheetUrl;
- let file = getluckysheetfile();
- if(loadSheetUrl != "" && loadSheetUrl != null){
- let sheetindex = [];
- for(let i = 0; i < file.length; i++){
- sheetindex.push(file[i].index);
- }
- $.post(loadSheetUrl, {"gridKey" : server.gridKey, "index": sheetindex.join(",")}, function (d) {
- let dataset = new Function("return " + d)();
- setTimeout(function(){
- Store.loadingObj.close()
- }, 500);
- for(let item in dataset){
- if(item == Store.currentSheetIndex){
- continue;
- }
- let otherfile = file[getSheetIndex(item)];
- otherfile.celldata = dataset[item.toString()];
- otherfile["data"] = sheetmanage.buildGridData(otherfile);
- }
- setluckysheetfile(file);
- conditionformat.fileClone = $.extend(true, [], file);
- conditionformat.administerRuleDialog();
- conditionformat.init();
- });
- }
- else{
- conditionformat.fileClone = $.extend(true, [], file);
- conditionformat.administerRuleDialog();
- conditionformat.init();
- }
- }
- });
- //突出显示单元格规则子菜单点击事件
- $(document).off("click.CFhighlightCellRule").on("click.CFhighlightCellRule", "#luckysheet-icon-highlightCellRule-menuButton .luckysheet-cols-menuitem", function(){
- $menuButton.hide();
- $("#luckysheet-icon-highlightCellRule-menuButton").hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(conditionformat_text.pleaseSelectRange);
- }
- else{
- tooltip.info(conditionformat_text.pleaseSelectRange, "");
- }
- return;
- }
- else{
- let textCellColorHtml = conditionformat.textCellColorHtml();
- let title, content;
- switch(itemvalue){
- case "greaterThan":
- title = conditionformat_text.conditionformat_greaterThan;
- content = `<div class="box" data-itemvalue="greaterThan">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_greaterThan_title}:</div>
- <div class="inpbox range">
- <input id="conditionVal" class="formulaInputFocus"/>
- <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "lessThan":
- title = conditionformat_text.conditionformat_lessThan;
- content = `<div class="box" data-itemvalue="lessThan">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_lessThan_title}:</div>
- <div class="inpbox range">
- <input id="conditionVal" class="formulaInputFocus"/>
- <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "betweenness":
- title = conditionformat_text.conditionformat_betweenness;
- content = `<div class="box" data-itemvalue="betweenness">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_betweenness_title}:</div>
- <div style="height: 30px;line-height: 30px;">
- <div class="inpbox2 range">
- <input id="conditionVal" class="formulaInputFocus"/>
- <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
- </div>
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.to}</div>
- <div class="inpbox2 range">
- <input id="conditionVal2" class="formulaInputFocus"/>
- <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
- </div>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "equal":
- title = conditionformat_text.conditionformat_equal;
- content = `<div class="box" data-itemvalue="equal">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_equal_title}:</div>
- <div class="inpbox range">
- <input id="conditionVal" class="formulaInputFocus"/>
- <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "textContains":
- title = conditionformat_text.conditionformat_textContains;
- content = `<div class="box" data-itemvalue="textContains">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_textContains_title}:</div>
- <div class="inpbox range">
- <input id="conditionVal" class="formulaInputFocus"/>
- <i class="fa fa-table" aria-hidden="true" title="${conditionformat_text.selectCell}"></i>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "occurrenceDate":
- title = conditionformat_text.conditionformat_occurrenceDate;
- content = `<div class="box" data-itemvalue="occurrenceDate">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_occurrenceDate_title}:</div>
- <div class="inpbox">
- <input id="daterange-btn" class="formulaInputFocus" readonly="readonly" placeholder="${conditionformat_text.pleaseSelectADate}"/>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "duplicateValue":
- title = conditionformat_text.conditionformat_duplicateValue;
- content = `<div class="box" data-itemvalue="duplicateValue">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_duplicateValue_title}:</div>
- <select id="conditionVal" class="selectbox">
- <option value="0">${conditionformat_text.duplicateValue}</option>
- <option value="1">${conditionformat_text.uniqueValue}</option>
- </select>
- <div style="margin:5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- }
- conditionformat.conditionformatDialog(title, content);
- }
- });
- //项目选取规则子菜单点击事件
- $(document).off("click.CFprojectSelectRule").on("click.CFprojectSelectRule", "#luckysheet-icon-projectSelectRule-menuButton .luckysheet-cols-menuitem", function(){
- $menuButton.hide();
- $("#luckysheet-icon-projectSelectRule-menuButton").hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(Store.luckysheet_select_save.length == 0){
- if(isEditMode()){
- alert(conditionformat_text.pleaseSelectRange);
- }
- else{
- tooltip.info(conditionformat_text.pleaseSelectRange, "");
- }
- return;
- }
- else{
- let textCellColorHtml = conditionformat.textCellColorHtml();
- let title, content;
- switch(itemvalue){
- case "top10":
- title = conditionformat_text.conditionformat_top10;
- content = `<div class="box" data-itemvalue="top10">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_top10_title}:</div>
- <div style="height: 30px;line-height: 30px;">
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.top}</div>
- <div class="inpbox2">
- <input id="conditionVal" class="formulaInputFocus" type="number" value="10"/>
- </div>
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.oneself}</div>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "top10%":
- title = conditionformat_text.conditionformat_top10_percent;
- content = `<div class="box" data-itemvalue="top10%">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_top10_title}:</div>
- <div style="height: 30px;line-height: 30px;">
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.top}</div>
- <div class="inpbox2">
- <input id="conditionVal" class="formulaInputFocus" type="number" value="10"/>
- </div>
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">%</div>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "last10":
- title = conditionformat_text.conditionformat_last10;
- content = `<div class="box" data-itemvalue="last10">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_last10_title}:</div>
- <div style="height: 30px;line-height: 30px;">
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.last}</div>
- <div class="inpbox2">
- <input id="conditionVal" class="formulaInputFocus" type="number" value="10"/>
- </div>
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.oneself}</div>
- </div>
- <div style="margin: 5px 0;">${conditionformat_text.setAs}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "last10%":
- title = conditionformat_text.conditionformat_last10_percent;
- content = `<div class="box" data-itemvalue="last10%">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_last10_title}:</div>
- <div style="height: 30px;line-height: 30px;">
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">${conditionformat_text.last}</div>
- <div class="inpbox2">
- <input id="conditionVal" class="formulaInputFocus" type="number" value="10"/>
- </div>
- <div style="float: left;height: 30px;line-height: 30px;margin: 0 5px;">%</div>
- </div>
- <div style="margin:5px 0;">设置为:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "AboveAverage":
- title = conditionformat_text.conditionformat_AboveAverage;
- content = `<div class="box" data-itemvalue="AboveAverage">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_AboveAverage_title}:</div>
- <div style="margin: 5px 0;">${conditionformat_text.setAsByArea}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- case "SubAverage":
- title = conditionformat_text.conditionformat_SubAverage;
- content = `<div class="box" data-itemvalue="SubAverage">
- <div class="boxTitleOne">${conditionformat_text.conditionformat_SubAverage_title}:</div>
- <div style="margin: 5px 0;">${conditionformat_text.setAsByArea}:</div>
- ${textCellColorHtml}
- </div>`;
- break;
- }
- conditionformat.conditionformatDialog(title,content);
- }
- });
- //数据条子菜单点击事件
- $(document).off("click.CFdataBar").on("click.CFdataBar", "#luckysheet-icon-dataBar-menuButton .luckysheet-cols-menuitem", function(){
- $menuButton.hide();
- $("#luckysheet-icon-dataBar-menuButton").hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(Store.luckysheet_select_save.length > 0){
- let cellrange = $.extend(true, [], Store.luckysheet_select_save);
- let format = conditionformat.dataBarList[itemvalue]["format"];
- conditionformat.updateItem("dataBar", cellrange, format);
- }
- });
- //色阶子菜单点击事件
- $(document).off("click.CFcolorGradation").on("click.CFcolorGradation", "#luckysheet-icon-colorGradation-menuButton .luckysheet-cols-menuitem", function(){
- $menuButton.hide();
- $("#luckysheet-icon-colorGradation-menuButton").hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(Store.luckysheet_select_save.length > 0){
- let cellrange = $.extend(true, [], Store.luckysheet_select_save);
- let format = conditionformat.colorGradationList[itemvalue]["format"];
- conditionformat.updateItem("colorGradation", cellrange, format);
- }
- });
- //清除规则子菜单点击事件
- $(document).off("click.CFdeleteRule").on("click.CFdeleteRule", "#luckysheet-icon-deleteRule-menuButton .luckysheet-cols-menuitem", function(){
- $menuButton.hide();
- $("#luckysheet-icon-deleteRule-menuButton").hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(itemvalue == "delSheet"){
- conditionformat.updateItem("delSheet");
- }
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
- });
- //批注
- $("#luckysheet-icon-postil").click(function(){
- let menuButtonId = $(this).attr("id")+"-menuButton";
- let $menuButton = $("#" + menuButtonId);
-
- const locale_comment = locale().comment;
- $menuButton.remove();
- // if($menuButton.length == 0){
- luckysheetPostil.removeActivePs();
- let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
-
- let row_index = last["row_focus"];
- if(row_index == null){
- row_index = last["row"][0];
- }
- let col_index = last["column_focus"];
- if(col_index == null){
- col_index = last["column"][0];
- }
- let itemdata;
- if(Store.flowdata[row_index][col_index] != null && Store.flowdata[row_index][col_index].ps != null){
- itemdata = [
- {"text": locale_comment.edit, "value": "editPs", "example": ""},
- {"text": locale_comment.delete, "value": "delPs", "example": ""},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_comment.showOne, "value": "showHidePs", "example": ""},
- {"text": locale_comment.showAll, "value": "showHideAllPs", "example": ""}
- ];
- }
- else{
- itemdata = [
- {"text": locale_comment.insert, "value": "newPs", "example": ""},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_comment.showAll, "value": "showHideAllPs", "example": ""}
- ];
- }
-
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, {"id": "postil", "item": itemset, "subclass": "", "sub": ""});
-
- $("body").append(menu);
- $menuButton = $("#"+menuButtonId).width(150);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
-
- if(itemvalue == "newPs"){
- luckysheetPostil.newPs(row_index, col_index);
- }
- else if(itemvalue == "editPs"){
- luckysheetPostil.editPs(row_index, col_index);
- }
- else if(itemvalue == "delPs"){
- luckysheetPostil.delPs(row_index, col_index);
- }
- else if(itemvalue == "showHidePs"){
- luckysheetPostil.showHidePs(row_index, col_index);
- }
- else if(itemvalue == "showHideAllPs"){
- luckysheetPostil.showHideAllPs();
- }
- });
- // }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
- });
-
- //sheet protection
- $("#luckysheet-icon-protection").click(function(){
- let sheetFile = sheetmanage.getSheetByIndex();
- openProtectionModal(sheetFile);
- });
- //print
- $("#luckysheet-icon-print").click(function(){
- let menuButtonId = $(this).attr("id") + "-menuButton";
- let $menuButton = $("#" + menuButtonId);
- const _locale = locale();
- const locale_print = _locale.print;
- if($menuButton.length == 0){
- let itemdata = [
- {"text": locale_print.menuItemPrint, "value": "print", "example": '<i class="iconfont luckysheet-iconfont-dayin" aria-hidden="true"></i>'},
- {"text": "", "value": "split", "example": ""},
- {"text": locale_print.menuItemAreas, "value": "areas", "example": '<i class="iconfont luckysheet-iconfont-tihuan" aria-hidden="true"></i>'},
- {"text": locale_print.menuItemRows, "value": "rows", "example": '<i class="iconfont luckysheet-iconfont-zhuandao1" aria-hidden="true"></i>'},
- {"text": locale_print.menuItemColumns, "value": "columns", "example": '<i class="iconfont luckysheet-iconfont-dingwei" aria-hidden="true"></i>'},
- ];
- let itemset = _this.createButtonMenu(itemdata);
- let menu = replaceHtml(_this.menu, { "id": "print", "item": itemset, "subclass": "", "sub": "" });
- $("body").append(menu);
- $menuButton = $("#" + menuButtonId).width(180);
- $menuButton.find(".luckysheet-cols-menuitem").click(function(){
- $menuButton.hide();
- luckysheetContainerFocus();
- let $t = $(this), itemvalue = $t.attr("itemvalue");
- if(itemvalue == "print"){ //Print config
- alert("print");
- }
- else if(itemvalue == "areas" || itemvalue == "rows" || itemvalue == "columns"){ //range
- alert("areas");
- }
- });
- }
- let userlen = $(this).outerWidth();
- let tlen = $menuButton.outerWidth();
- let menuleft = $(this).offset().left;
- if(tlen > userlen && (tlen + menuleft) > $("#" + Store.container).width()){
- menuleft = menuleft - tlen + userlen;
- }
- mouseclickposition($menuButton, menuleft, $(this).offset().top + 25, "lefttop");
- });
-
- $("body").on("mouseover mouseleave",".luckysheet-menuButton .luckysheet-cols-submenu", function(e){
- let $t = $(this), attrid = $t.attr("itemvalue"),
- $attr = $("#luckysheet-icon-" + attrid + "-menuButton");
-
- if (e.type === "mouseover") {
- let $con = $t.parent();
- let winW = $(window).width(), winH = $(window).height();
- let menuW = $con.width(), attrH = $attr.height() + 25, attrW = $attr.width() + 5;
- let offset = $t.offset();
- let top = offset.top, left = offset.left + menuW;
- if (left + attrW > winW) {
- left = offset.left - attrW;
- }
- if (top + attrH > winH) {
- top = winH - attrH;
- }
- $attr.css({ "top": top, "left": left }).show();
- _this.rightclickmenu = $t;
- } else {
- clearTimeout(_this.submenuhide[$attr.attr('id')]);
- _this.submenuhide[$attr.attr('id')] = setTimeout(function () { $attr.hide(); }, 200);
- }
- }).on("mouseover mouseleave",".luckysheet-menuButton-sub", function(e){
- if (e.type === "mouseover") {
- _this.rightclickmenu.addClass("luckysheet-cols-menuitem-hover");
- clearTimeout(_this.submenuhide[$(this).attr('id')]);
- }
- else {
- _this.rightclickmenu.removeClass("luckysheet-cols-menuitem-hover");
- $(this).hide();
- }
- });
- },
- getQKBorder: function(width, type, color){
- let bordertype = "";
- if(width.indexOf("pt") > -1){
- width = parseFloat(width);
-
- if(width < 1){
- }
- else if(width < 1.5){
- bordertype = "Medium";
- }
- else{
- bordertype = "Thick";
- }
- }
- else{
- width = parseFloat(width);
-
- if(width < 2){
- }
- else if(width < 3){
- bordertype = "Medium";
- }
- else{
- bordertype = "Thick";
- }
- }
- let style = 0;
- type = type.toLowerCase();
- if(type == "double"){
- style = 2;
- }
- else if(type == "dotted"){
- if(bordertype == "Medium" || bordertype == "Thick"){
- style = 3;
- }
- else{
- style = 10;
- }
- }
- else if(type == "dashed"){
- if(bordertype == "Medium" || bordertype == "Thick"){
- style = 4;
- }
- else{
- style = 9;
- }
- }
- else if(type == "solid"){
- if(bordertype == "Medium"){
- style = 8;
- }
- else if(bordertype == "Thick"){
- style = 13;
- }
- else{
- style = 1;
- }
- }
-
- return [style, color];
- },
- updateFormatCell:function(d, attr, foucsStatus,row_st, row_ed, col_st, col_ed){
- if(d==null || attr==null){
- return;
- }
- if(attr == "ct"){
- for (let r = row_st; r <= row_ed; r++) {
- if (Store.config["rowhidden"] != null && Store.config["rowhidden"][r] != null) {
- continue;
- }
- for (let c = col_st; c <= col_ed; c++) {
- let cell = d[r][c], value = null;
-
- if (getObjType(cell) == "object") {
- value = d[r][c]["v"];
- }
- else{
- value = d[r][c];
- }
- if(foucsStatus != "@" && isRealNum(value)){
- value = parseFloat(value);
- }
- let mask = update(foucsStatus, value);
- let type = "n";
-
- if(is_date(foucsStatus) || foucsStatus === 14 || foucsStatus === 15 || foucsStatus === 16 || foucsStatus === 17 || foucsStatus === 18 || foucsStatus === 19 || foucsStatus === 20 || foucsStatus === 21 || foucsStatus === 22 || foucsStatus === 45 || foucsStatus === 46 || foucsStatus === 47){
- type = "d";
- }
- else if(foucsStatus == "@" || foucsStatus === 49){
- type = "s"
- }
- else if(foucsStatus == "General" || foucsStatus === 0){
- // type = "g";
- type = isRealNum(value) ? "n" : "g";
- }
- if (getObjType(cell) == "object") {
- d[r][c]["m"] = mask;
- if(d[r][c]["ct"] == null){
- d[r][c]["ct"] = {};
- }
- d[r][c]["ct"]["fa"] = foucsStatus;
- d[r][c]["ct"]["t"] = type;
- }
- else{
- d[r][c] = { "ct":{"fa":foucsStatus, "t":type}, "v": value, "m": mask };
- }
- }
- }
- }
- else{
- if(attr == "ht"){
- if(foucsStatus == "left"){
- foucsStatus = "1";
- }
- else if(foucsStatus == "center"){
- foucsStatus = "0";
- }
- else if(foucsStatus == "right"){
- foucsStatus = "2";
- }
- }
- else if(attr == "vt"){
- if(foucsStatus == "top"){
- foucsStatus = "1";
- }
- else if(foucsStatus == "middle"){
- foucsStatus = "0";
- }
- else if(foucsStatus == "bottom"){
- foucsStatus = "2";
- }
- }
- else if(attr == "tb"){
- if(foucsStatus == "overflow"){
- foucsStatus = "1";
- }
- else if(foucsStatus == "clip"){
- foucsStatus = "0";
- }
- else if(foucsStatus == "wrap"){
- foucsStatus = "2";
- }
- }
- else if(attr == "tr"){
- if(foucsStatus == "none"){
- foucsStatus = "0";
- }
- else if(foucsStatus == "angleup"){
- foucsStatus = "1";
- }
- else if(foucsStatus == "angledown"){
- foucsStatus = "2";
- }
- else if(foucsStatus == "vertical"){
- foucsStatus = "3";
- }
- else if(foucsStatus == "rotation-up"){
- foucsStatus = "4";
- }
- else if(foucsStatus == "rotation-down"){
- foucsStatus = "5";
- }
- }
- for (let r = row_st; r <= row_ed; r++) {
- if (Store.config["rowhidden"] != null && Store.config["rowhidden"][r] != null) {
- continue;
- }
- for (let c = col_st; c <= col_ed; c++) {
- let value = d[r][c];
-
- if (getObjType(value) == "object") {
- // if(attr in inlineStyleAffectAttribute && isInlineStringCell(value)){
- updateInlineStringFormatOutside(value, attr, foucsStatus);
- // }
- // else{
- d[r][c][attr] = foucsStatus;
- // }
-
- }
- else{
- d[r][c] = { v: value };
- d[r][c][attr] = foucsStatus;
- }
- // if(attr == "tr" && d[r][c].tb != null){
- // d[r][c].tb = "0";
- // }
- }
- }
- }
- },
- updateFormat: function(d, attr, foucsStatus){
- let _this = this;
- if(!checkProtectionFormatCells(Store.currentSheetIndex)){
- return;
- }
- // *如果禁止前台编辑,则中止下一步操作
- if (!checkIsAllowEdit()) {
- tooltip.info("", locale().pivotTable.errorNotAllowEdit);
- return;
- }
- let canvasElement = document.createElement('canvas');
- let canvas = canvasElement.getContext("2d");
- if(attr in inlineStyleAffectAttribute ){
- if (parseInt($("#luckysheet-input-box").css("top")) > 0 ) {
- let value = $("#luckysheet-input-box").text();
- if(value.substr(0,1)!="="){
- let cell = d[Store.luckysheetCellUpdate[0]][Store.luckysheetCellUpdate[1]];
- updateInlineStringFormat(cell, attr, foucsStatus, luckysheetformula.rangeResizeTo);
- // return;
- }
- }
- }
- let cfg = $.extend(true, {}, Store.config);
- if(cfg["rowlen"] == null){
- cfg["rowlen"] = {};
- }
- for(let s = 0; s < Store.luckysheet_select_save.length; s++){
- let row_st = Store.luckysheet_select_save[s]["row"][0],
- row_ed = Store.luckysheet_select_save[s]["row"][1];
- let col_st = Store.luckysheet_select_save[s]["column"][0],
- col_ed = Store.luckysheet_select_save[s]["column"][1];
- this.updateFormatCell(d, attr, foucsStatus, row_st, row_ed, col_st, col_ed);
- if(attr == "tb" || attr == "tr" || attr == "fs"){
- cfg = rowlenByRange(d, row_st, row_ed, cfg);
- }
- }
- let allParam = {};
- if(attr == "tb" || attr == "tr" || attr == "fs"){
- allParam = {
- "cfg": cfg,
- "RowlChange": true
- }
- }
- jfrefreshgrid(d, Store.luckysheet_select_save, allParam, false);
- },
- updateFormat_mc: function(d, foucsStatus){
- // *如果禁止前台编辑,则中止下一步操作
- if (!checkIsAllowEdit()) {
- tooltip.info("", locale().pivotTable.errorNotAllowEdit);
- return
- }
- let cfg = $.extend(true, {}, Store.config);
- if(cfg["merge"] == null){
- cfg["merge"] = {};
- }
- if(!checkProtectionNotEnable(Store.currentSheetIndex)){
- return;
- }
- if(foucsStatus == "mergeCancel"){
- for(let i = 0; i < Store.luckysheet_select_save.length; i++){
- let range = Store.luckysheet_select_save[i];
- let r1 = range["row"][0], r2 = range["row"][1];
- let c1 = range["column"][0], c2 = range["column"][1];
- if(r1 == r2 && c1 == c2){
- continue;
- }
- let fv = {};
- for(let r = r1; r <= r2; r++){
- for(let c = c1; c <= c2; c++){
- let cell = d[r][c];
- if(cell != null && cell.mc != null){
- let mc_r = cell.mc.r, mc_c = cell.mc.c;
- if("rs" in cell.mc){
- delete cell.mc;
- delete cfg["merge"][mc_r + "_" + mc_c];
- fv[mc_r + "_" + mc_c] = $.extend(true, {}, cell);
- }
- else{
- // let cell_clone = fv[mc_r + "_" + mc_c];
- let cell_clone = JSON.parse(JSON.stringify(fv[mc_r + "_" + mc_c]));
- delete cell_clone.v;
- delete cell_clone.m;
- delete cell_clone.ct;
- delete cell_clone.f;
- delete cell_clone.spl;
- d[r][c] = cell_clone;
- }
- }
- }
- }
- }
- }
- else{
- let isHasMc = false; //选区是否含有 合并的单元格
- for(let i = 0; i < Store.luckysheet_select_save.length; i++){
- let range = Store.luckysheet_select_save[i];
- let r1 = range["row"][0], r2 = range["row"][1];
- let c1 = range["column"][0], c2 = range["column"][1];
- for(let r = r1; r <= r2; r++){
- for(let c = c1; c <= c2; c++){
- let cell = d[r][c];
- if(getObjType(cell) == "object" && ("mc" in cell)){
- isHasMc = true;
- break;
- }
- }
- }
- }
- if(isHasMc){//选区有合并单元格(选区都执行 取消合并)
- for(let i = 0; i < Store.luckysheet_select_save.length; i++){
- let range = Store.luckysheet_select_save[i];
- let r1 = range["row"][0], r2 = range["row"][1];
- let c1 = range["column"][0], c2 = range["column"][1];
- if(r1 == r2 && c1 == c2){
- continue;
- }
- let fv = {};
- for(let r = r1; r <= r2; r++){
- for(let c = c1; c <= c2; c++){
- let cell = d[r][c];
- if(cell != null && cell.mc != null){
- let mc_r = cell.mc.r, mc_c = cell.mc.c;
- if("rs" in cell.mc){
- delete cell.mc;
- delete cfg["merge"][mc_r + "_" + mc_c];
- fv[mc_r + "_" + mc_c] = $.extend(true, {}, cell);
- }
- else{
- // let cell_clone = fv[mc_r + "_" + mc_c];
- let cell_clone = JSON.parse(JSON.stringify(fv[mc_r + "_" + mc_c]));
- delete cell_clone.v;
- delete cell_clone.m;
- delete cell_clone.ct;
- delete cell_clone.f;
- delete cell_clone.spl;
- d[r][c] = cell_clone;
- }
- }
- }
- }
- }
- }
- else{
- for(let i = 0; i < Store.luckysheet_select_save.length; i++){
- let range = Store.luckysheet_select_save[i];
- let r1 = range["row"][0], r2 = range["row"][1];
- let c1 = range["column"][0], c2 = range["column"][1];
- if(r1 == r2 && c1 == c2){
- continue;
- }
- if(foucsStatus == "mergeAll"){
- let fv = {}, isfirst = false;
- for(let r = r1; r <= r2; r++){
- for(let c = c1; c <= c2; c++){
- let cell = d[r][c];
- if(cell != null && (isInlineStringCT(cell.ct) || !isRealNull(cell.v) || cell.f != null) && !isfirst){
- fv = $.extend(true, {}, cell);
- isfirst = true;
- }
- d[r][c] = { "mc": { "r": r1, "c": c1 } };
- }
- }
- d[r1][c1] = fv;
- d[r1][c1].mc = { "r": r1, "c": c1, "rs": r2 - r1 + 1, "cs": c2 - c1 + 1 };
- cfg["merge"][r1 + "_" + c1] = { "r": r1, "c": c1, "rs": r2 - r1 + 1, "cs": c2 - c1 + 1 };
- }
- else if(foucsStatus == "mergeV"){
- for(let c = c1; c <= c2; c++){
- let fv = {}, isfirst = false;
- for(let r = r1; r <= r2; r++){
- let cell = d[r][c];
- if(cell != null && (!isRealNull(cell.v) || cell.f != null) && !isfirst){
- fv = $.extend(true, {}, cell);
- isfirst = true;
- }
- d[r][c] = { "mc": { "r": r1, "c": c } };
- }
- d[r1][c] = fv;
- d[r1][c].mc = { "r": r1, "c": c, "rs": r2 - r1 + 1, "cs": 1 };
- cfg["merge"][r1 + "_" + c] = { "r": r1, "c": c, "rs": r2 - r1 + 1, "cs": 1 };
- }
- }
- else if(foucsStatus == "mergeH"){
- for(let r = r1; r <= r2; r++){
- let fv = {}, isfirst = false;
- for(let c = c1; c <= c2; c++){
- let cell = d[r][c];
- if(cell != null && (!isRealNull(cell.v) || cell.f != null) && !isfirst){
- fv = $.extend(true, {}, cell);
- isfirst = true;
- }
- d[r][c] = { "mc": { "r": r, "c": c1 } };
- }
- d[r][c1] = fv;
- d[r][c1].mc = { "r": r, "c": c1, "rs": 1, "cs": c2 - c1 + 1 };
- cfg["merge"][r + "_" + c1] = { "r": r, "c": c1, "rs": 1, "cs": c2 - c1 + 1 };
- }
- }
- }
- }
- }
- if (Store.clearjfundo) {
- Store.jfundo.length = 0;
- Store.jfredo.push({
- "type": "mergeChange",
- "sheetIndex": Store.currentSheetIndex,
- "data": Store.flowdata,
- "curData": d,
- "range": $.extend(true, [], Store.luckysheet_select_save),
- "config": $.extend(true, {}, Store.config),
- "curConfig": cfg
- });
- }
- Store.clearjfundo = false;
- jfrefreshgrid(d, Store.luckysheet_select_save, {"cfg": cfg});
- Store.clearjfundo = true;
- },
- borderfix: function(d, r, c){
- // return [-1, -1, 2, 2];
- let cell = d[r][c];
- let bg = null;
-
- if(cell == null){
- return [-1, 0, 0, -1];
- }
- else if(d[r][c].bg == null || d[r][c].bg == ""){
- return [-1, 0, 0, -1];
- }
- else {
- return [-2, -1, 1, 0];
- //return [-2, -2, 1, 0];
- }
- },
- changeMenuButtonDom:function(attr, foucsStatus, _locale){
- let _this = this;
- if(_locale==null){
- _locale = locale();
- }
- const locale_fontarray = _locale.fontarray;
- const locale_fontjson = _locale.fontjson;
- if(attr == "bl"){
- if(foucsStatus != "0"){
- $("#luckysheet-icon-bold").addClass("luckysheet-toolbar-button-hover");
- }
- else{
- $("#luckysheet-icon-bold").removeClass("luckysheet-toolbar-button-hover");
- }
- }
- else if(attr == "it"){
- if(foucsStatus != "0"){
- $("#luckysheet-icon-italic").addClass("luckysheet-toolbar-button-hover");
- }
- else{
- $("#luckysheet-icon-italic").removeClass("luckysheet-toolbar-button-hover");
- }
- }
- else if(attr == "cl"){
- if(foucsStatus != "0"){
- $("#luckysheet-icon-strikethrough").addClass("luckysheet-toolbar-button-hover");
- }
- else{
- $("#luckysheet-icon-strikethrough").removeClass("luckysheet-toolbar-button-hover");
- }
- }
- else if(attr == "un"){
- if(foucsStatus != "0"){
- $("#luckysheet-icon-underline").addClass("luckysheet-toolbar-button-hover");
- }
- else{
- $("#luckysheet-icon-underline").removeClass("luckysheet-toolbar-button-hover");
- }
- }
- else if(attr == "ff"){
- let menuButtonId = "luckysheet-icon-font-family-menuButton";
- let $menuButton = $("#" + menuButtonId);
- // const locale_fontarray = locale().fontarray;
- let itemname = locale_fontarray[0], itemvalue = 0;
- if(foucsStatus != null){
- if(isdatatypemulti(foucsStatus)["num"]){
- itemvalue = parseInt(foucsStatus);
- itemname = locale_fontarray[itemvalue];
- if(itemname==null){
- itemvalue = _this.defualtFont[itemvalue];
- itemname = itemvalue;
- if(itemvalue!=null){
- _this.addFontTolist(itemvalue);
- }
- }
- }
- else{
- foucsStatus = foucsStatus.replace(/"/g, "").replace(/'/g, "");
- itemvalue = foucsStatus;
- itemname = foucsStatus;
- _this.addFontTolist(itemvalue);
- }
- }
- _this.focus($menuButton, itemvalue);
- $("#luckysheet-icon-font-family").find(".luckysheet-toolbar-menu-button-caption").html(" "+ itemname +" ");
- }
- else if(attr == "fs"){
- let $menuButton = $("#luckysheet-icon-font-size-menuButton");
- let itemvalue = foucsStatus, $input = $("#luckysheet-icon-font-size input");
- _this.focus($menuButton, itemvalue);
- $("#luckysheet-icon-font-size").attr("itemvalue", itemvalue);
- $input.val(itemvalue);
- }
- else if(attr == "ht"){
- let $menuButton = $("#luckysheet-icon-align-menu-menuButton");
- let $t = $("luckysheet-icon-align"), itemvalue = "left";
-
- if(foucsStatus == "0"){
- itemvalue = "center";
- }
- else if(foucsStatus == "2"){
- itemvalue = "right";
- }
- _this.focus($menuButton, itemvalue);
- // add iconfont
- const iconfontObject = iconfontObjects.align;
- let $icon = $("#luckysheet-icon-align").attr("type", itemvalue).find(".luckysheet-icon-img-container");
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-" + itemvalue + iconfontObject[itemvalue]);
- $menuButton.hide();
- }
- else if(attr == "vt"){
- let $menuButton = $("#luckysheet-icon-valign-menu-menuButton");
- let $t = $("luckysheet-icon-valign"), itemvalue = "bottom";
-
- if(foucsStatus == "1"){
- itemvalue = "top";
- }
- else if(foucsStatus == "0"){
- itemvalue = "middle";
- }
- _this.focus($menuButton, itemvalue);
- // add iconfont
- const iconfontObject = iconfontObjects.align;
- let $icon = $("#luckysheet-icon-valign").attr("type", itemvalue).find(".luckysheet-icon-img-container");
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-" + itemvalue+ iconfontObject[itemvalue]);
- $menuButton.hide();
- }
- else if(attr == "tb"){
- let $menuButton = $("#luckysheet-icon-textwrap-menu-menuButton");
- let $t = $("luckysheet-icon-textwrap"), itemvalue = "clip";
-
- if(foucsStatus == "1"){
- itemvalue = "overflow";
- }
- else if(foucsStatus == "2"){
- itemvalue = "wrap";
- }
- _this.focus($menuButton, itemvalue);
- // add iconfont
- const iconfontObject = iconfontObjects.textWrap;
- let $icon = $("#luckysheet-icon-textwrap").attr("type", itemvalue).find(".luckysheet-icon-img-container");
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-" + itemvalue + iconfontObject[itemvalue]);
- $menuButton.hide();
- }
- else if(attr == "tr"){
- let $menuButton = $("#luckysheet-icon-rotation-menu-menuButton");
- let $t = $("luckysheet-icon-rotation"), itemvalue = "none";
-
- if(foucsStatus == "1"){
- itemvalue = "angleup";
- }
- else if(foucsStatus == "2"){
- itemvalue = "angledown";
- }
- else if(foucsStatus == "3"){
- itemvalue = "vertical";
- }
- else if(foucsStatus == "4"){
- itemvalue = "rotation-up";
- }
- else if(foucsStatus == "5"){
- itemvalue = "rotation-down";
- }
- _this.focus($menuButton, itemvalue);
- // add iconfont
- const iconfontObject = iconfontObjects.rotation;
- let $icon = $("#luckysheet-icon-rotation").attr("type", itemvalue).find(".luckysheet-icon-img-container");
- $icon.removeAttr("class").addClass("luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-" + itemvalue + iconfontObject[itemvalue]);
- $menuButton.hide();
- }
- else if(attr == "ct") {
- let $menuButton = $("#luckysheet-icon-fmt-other");
- const _locale = locale();
- const locale_defaultFmt = _locale.defaultFmt;
- if(!foucsStatus) {
- $menuButton.find(".luckysheet-toolbar-menu-button-caption").html(" "+ locale_defaultFmt[0].text +" ");
- return;
- }
- const {fa} = foucsStatus;
- const format = locale_defaultFmt.find(f => f.value === fa);
- if(format) {
- $menuButton.find(".luckysheet-toolbar-menu-button-caption").html(" "+ format.text +" ");
- } else {
- const otherFormat = locale_defaultFmt.find(f => f.value === "fmtOtherSelf");
- $menuButton.find(".luckysheet-toolbar-menu-button-caption").html(" "+ otherFormat.text +" ");
- }
- }
- },
- inputMenuButtonFocus:function(focusTarget){
- var w = window.getSelection();
- var range = w.getRangeAt(0);
- let startContainer = range.startContainer;
- Store.inlineStringEditRange = null;
- const _locale = locale();
- if(startContainer.parentNode.tagName=="SPAN"){
- let cssText = startContainer.parentNode.style.cssText;
- let stylelist = convertCssToStyleList(cssText);
- for(let key in stylelist){
- this.changeMenuButtonDom(key, stylelist[key], _locale);
- }
- }
- },
- menuButtonFocus: function(d, r, c){
- let _this = this;
- let foucsList = ["bl", "it", "cl", "ff", "ht", "vt", "fs", "tb", "tr", "ct", "un"];
- const _locale = locale();
- for(let i = 0; i < foucsList.length; i++){
- let attr = foucsList[i];
- let foucsStatus = _this.checkstatus(d, r, c, attr);
- this.changeMenuButtonDom(attr, foucsStatus, _locale);
- }
- },
- checkstatus: function(d, r, c, a){
- if(d==null || d[r]==null){
- console.warn("It's incorrect data", r, c);
- return null;
- }
- let foucsStatus = d[r][c];
- return checkstatusByCell(foucsStatus, a);
- },
- setLineDash: function(canvasborder, type, hv, m_st, m_ed, line_st, line_ed){
- let borderType = {
- "0": "none",
- "1": "Thin",
- "2": "Hair",
- "3": "Dotted",
- "4": "Dashed",
- "5": "DashDot",
- "6": "DashDotDot",
- "7": "Double",
- "8": "Medium",
- "9": "MediumDashed",
- "10": "MediumDashDot",
- "11": "MediumDashDotDot",
- "12": "SlantedDashDot",
- "13": "Thick"
- };
- type = borderType[type.toString()];
- try {
- if(type == "Hair"){
- canvasborder.setLineDash([1, 2]);
- }
- else if(type.indexOf("DashDotDot") > -1){
- canvasborder.setLineDash([2, 2, 5, 2, 2]);
- }
- else if(type.indexOf("DashDot") > -1){
- canvasborder.setLineDash([2, 5, 2]);
- }
- else if(type.indexOf("Dotted") > -1){
- canvasborder.setLineDash([2]);
- }
- else if(type.indexOf("Dashed") > -1){
- canvasborder.setLineDash([3]);
- }
- else{
- canvasborder.setLineDash([0]);
- }
- }
- catch(e) {
- console.log(e);
- }
- canvasborder.beginPath();
- if(type.indexOf("Medium") > -1){
- if(hv == "h"){
- canvasborder.moveTo(m_st, m_ed - 0.5);
- canvasborder.lineTo(line_st, line_ed - 0.5);
- }
- else{
- canvasborder.moveTo(m_st - 0.5, m_ed);
- canvasborder.lineTo(line_st - 0.5, line_ed);
- }
-
- canvasborder.lineWidth = 2;
- }
- else if(type == "Thick"){
- canvasborder.moveTo(m_st, m_ed);
- canvasborder.lineTo(line_st, line_ed);
- canvasborder.lineWidth = 3;
- }
- else {
- canvasborder.moveTo(m_st, m_ed);
- canvasborder.lineTo(line_st, line_ed);
- canvasborder.lineWidth = 1;
- }
- },
- moveMergeData: function(d, offset_r, offset_c){
- if(isRealNull(d)){
- return d;
- }
- let deleMC = [], insertMC=[], hasMC = false;
- for(let r = 0; r < d.length; r++){
- for(let c = 0; c < d[0].length; c++){
- let cell = d[r][c];
-
- if(getObjType(cell) == "object" && ("mc" in cell)){
- if(cell.mc.rs != null){
- deleMC.push({
- rs: cell.mc.rs,
- cs: cell.mc.cs,
- r: cell.mc.r,
- c: cell.mc.c
- });
- insertMC.push({
- rs: cell.mc.rs,
- cs: cell.mc.cs,
- r: cell.mc.r + offset_r,
- c: cell.mc.c + offset_c
- });
- hasMC= true;
- }
- d[r][c].mc.r += offset_r;
- d[r][c].mc.c += offset_c;
- }
- }
- }
- return { "deleMC": deleMC, "insertMC": insertMC, "hasMC": hasMC };
- },
- getRangeInMerge: function(st_r, rlen, st_c, clen, sheetIndex){
- let _this = this;
- let mergelist = [];
- let cfg = null;
- if(sheetIndex != null){
- cfg = $.extend(true, {}, _this.getSheetConfig());
- }
- else{
- cfg = $.extend(true, {}, Store.config);
- }
- if(cfg != null && cfg["merge"] != null){
- for(let key in cfg["merge"]){
- let mc = cfg["merge"][key];
- if(!((st_r + rlen - 1) < mc.r || st_r > (mc.r + mc.rs - 1)) && !((st_c + clen - 1) < mc.c || st_c > (mc.c + mc.cs - 1))){
- mergelist.push(mc);
- }
- }
- }
- return mergelist;
- },
- mergeborer: function(d, row_index, col_index){
- if(!d || d.length == 0 || !row_index || !col_index){
- return null; //初始化还没有完成
- }
- if(d[row_index]==null){
- console.warn("Merge info is null", row_index, col_index);
- return null;
- }
- let value = d[row_index][col_index];
-
- if(getObjType(value) == "object" && ("mc" in value)){
- let margeMaindata = value["mc"];
- if(margeMaindata==null){
- console.warn("Merge info is null", row_index, col_index);
- return null;
- }
- col_index = margeMaindata.c;
- row_index = margeMaindata.r;
- if(d[row_index][col_index]==null){
- console.warn("Main merge Cell info is null", row_index, col_index);
- return null;
- }
- let col_rs = d[row_index][col_index].mc.cs;
- let row_rs = d[row_index][col_index].mc.rs;
- let margeMain = d[row_index][col_index].mc;
-
- let start_r, end_r, row, row_pre;
- for(let r = row_index; r < margeMain.rs + row_index; r++){
- if (r == 0) {
- start_r = - 1;
- }
- else {
- start_r = Store.visibledatarow[r - 1] - 1;
- }
- end_r = Store.visibledatarow[r];
- if(row_pre == null){
- row_pre = start_r;
- row = end_r;
- }
- else{
- row += end_r - start_r - 1;
- }
- }
- let start_c, end_c, col, col_pre;
- for(let c = col_index; c < margeMain.cs + col_index; c++){
- if (c == 0) {
- start_c = 0;
- }
- else {
- start_c = Store.visibledatacolumn[c - 1];
- }
- end_c = Store.visibledatacolumn[c];
- if(col_pre == null){
- col_pre = start_c;
- col = end_c;
- }
- else{
- col += end_c - start_c;
- }
- }
- return {
- "row": [row_pre , row, row_index, row_index + row_rs - 1],
- "column": [col_pre, col , col_index, col_index + col_rs - 1]
- };
- }
- else{
- return null;
- }
- },
- mergeMoveData: {},
- mergeMoveMain: function(columnseleted, rowseleted, s, top , height, left , width){
- let _this = this;
- let mergesetting = sheetmanage.getSheetMerge();
-
- if(mergesetting == null){
- return;
- }
- let mcset = [];
- for(let key in mergesetting){
- mcset.push(key);
- }
- if(rowseleted[0] > rowseleted[1]){
- rowseleted[1] = rowseleted[0];
- }
- if(columnseleted[0] > columnseleted[1]){
- columnseleted[1] = columnseleted[0];
- }
- let offloop = true;
- _this.mergeMoveData = {};
- while (offloop) {
- offloop = false;
- for(let i = 0; i < mcset.length; i++){
- let key = mcset[i];
- let mc = mergesetting[key];
- if(key in _this.mergeMoveData){
- continue;
- }
- let changeparam = _this.mergeMove(mc, columnseleted, rowseleted, s, top, height, left, width);
- if(changeparam != null){
- _this.mergeMoveData[key] = mc;
-
- columnseleted = changeparam[0];
- rowseleted= changeparam[1];
- top = changeparam[2];
- height = changeparam[3];
- left = changeparam[4];
- width = changeparam[5];
- offloop = true;
- }
- else{
- delete _this.mergeMoveData[key];
- }
- }
- }
-
- return [columnseleted, rowseleted, top, height, left, width];
- },
- mergeMove: function(mc, columnseleted, rowseleted, s, top , height, left , width){
- let _this = this;
-
- let row_st = mc.r, row_ed = mc.r + mc.rs - 1;
- let col_st = mc.c, col_ed = mc.c + mc.cs - 1;
- let ismatch = false;
- if(columnseleted[1] < columnseleted[0]){
- columnseleted[0] = columnseleted[1];
- }
- if(rowseleted[1] < rowseleted[0]){
- rowseleted[0] = rowseleted[1];
- }
- if( (columnseleted[0] <= col_st && columnseleted[1] >= col_ed && rowseleted[0] <= row_st && rowseleted[1] >= row_ed) || (!(columnseleted[1] < col_st || columnseleted[0] > col_ed) && !(rowseleted[1] < row_st || rowseleted[0] > row_ed))){
- let margeset = _this.mergeborer(Store.flowdata, mc.r, mc.c);
- if(!!margeset){
- let row = margeset.row[1],
- row_pre = margeset.row[0],
- row_index = margeset.row[2],
- col = margeset.column[1],
- col_pre = margeset.column[0],
- col_index = margeset.column[2];
- if(!(columnseleted[1] < col_st || columnseleted[0] > col_ed)){
- //向上滑动
- if(rowseleted[0] <= row_ed && rowseleted[0] >= row_st){
- height += top - row_pre;
- top = row_pre;
- rowseleted[0] = row_st;
- }
-
- //向下滑动或者居中时往上滑动的向下补齐
- if(rowseleted[1] >= row_st && rowseleted[1] <= row_ed){
- if(s.row_focus >= row_st && s.row_focus <= row_ed){
- height = row - top;
- }
- else{
- height = row - top;
- }
-
- rowseleted[1] = row_ed;
- }
- }
-
- if(!(rowseleted[1] < row_st || rowseleted[0] > row_ed)){
- if(columnseleted[0] <= col_ed && columnseleted[0] >= col_st){
- width += left - col_pre;
- left = col_pre;
- columnseleted[0] = col_st;
- }
-
- //向右滑动或者居中时往左滑动的向下补齐
- if(columnseleted[1] >= col_st && columnseleted[1] <= col_ed){
- if(s.column_focus >= col_st && s.column_focus <= col_ed){
- width = col - left;
- }
- else{
- width = col - left;
- }
-
- columnseleted[1] = col_ed;
- }
- }
- ismatch = true;
- }
- }
-
- if(ismatch){
- return [columnseleted, rowseleted, top , height, left , width];
- }
- else{
- return null;
- }
- },
- getCellRealSize: function(d, cell_r, cell_c){
- let _this = this;
- let width = Store.defaultcollen;
- let height = Store.defaultrowlen;
- let celldata = d[cell_r][cell_c];
- if(!!celldata && celldata["mc"] != null){
- let mc = celldata["mc"];
- let margeset = _this.mergeborer(d, mc.r, mc.c);
- if(!!margeset){
- let row = margeset.row[1];
- let row_pre = margeset.row[0];
- let row_index = margeset.row[2];
- let row_index_ed = margeset.row[3];
- let col = margeset.column[1];
- let col_pre = margeset.column[0];
- let col_index = margeset.column[2];
- let col_index_ed = margeset.column[3];
- width = col - col_pre - 1;
- height = row - row_pre - 1;
- }
- }
- else{
- let config = getluckysheetfile()[getSheetIndex(Store.currentSheetIndex)]["config"];
-
- if (config["columnlen"] != null && config["columnlen"][cell_c] != null) {
- width = config["columnlen"][cell_c];
- }
-
- if (config["rowlen"] != null && config["rowlen"][cell_r] != null) {
- height = config["rowlen"][cell_r];
- }
- }
- return [width, height];
- },
- getTextHeightCache: {},
- getTextSize: function(text, font){
- let fontarray = locale().fontarray;
- let f = font || '10pt ' + fontarray[0];
-
- let _this = this;
- if (f in _this.getTextHeightCache){
- return _this.getTextHeightCache[f];
- }
- if($("#luckysheetTextSizeTest").length == 0){
- $('<span id="luckysheetTextSizeTest" style="float:left;white-space:nowrap;visibility:hidden;margin:0;padding:0;">' + text + '</span>').appendTo($('body'));
- }
- let o = $("#luckysheetTextSizeTest").text(text).css({'font': f}),
- w = o.innerWidth(),
- h = o.innerHeight();
- _this.getTextHeightCache[f] = [w, h];
-
- return [w, h];
- },
- activeFormulaInput: function(row_index, col_index, rowh, columnh, formula, isnull){
- let _this = this;
- if(isnull == null){
- isnull = false;
- }
- luckysheetupdateCell(row_index, col_index, Store.flowdata, true);
- if(isnull){
- let formulaTxt = '<span dir="auto" class="luckysheet-formula-text-color">=</span><span dir="auto" class="luckysheet-formula-text-color">'+ formula.toUpperCase() +'</span><span dir="auto" class="luckysheet-formula-text-color">(</span><span dir="auto" class="luckysheet-formula-text-color">)</span>';
- $("#luckysheet-rich-text-editor").html(formulaTxt);
- let currSelection = window.getSelection();
- let $span = $("#luckysheet-rich-text-editor").find("span");
- luckysheetformula.setCaretPosition($span.get($span.length-2), 0, 1);
- return;
- }
- let row_pre = rowLocationByIndex(rowh[0])[0],
- row = rowLocationByIndex(rowh[1])[1],
- col_pre = colLocationByIndex(columnh[0])[0],
- col = colLocationByIndex(columnh[1])[1];
- let formulaTxt = '<span dir="auto" class="luckysheet-formula-text-color">=</span><span dir="auto" class="luckysheet-formula-text-color">'+ formula.toUpperCase() +'</span><span dir="auto" class="luckysheet-formula-text-color">(</span><span class="luckysheet-formula-functionrange-cell" rangeindex="0" dir="auto" style="color:'+ luckyColor[0] +';">'+ getRangetxt(Store.currentSheetIndex, {"row":rowh, "column":columnh }, Store.currentSheetIndex) +'</span><span dir="auto" class="luckysheet-formula-text-color">)</span>';
- $("#luckysheet-rich-text-editor").html(formulaTxt);
- luckysheetformula.israngeseleciton();
- luckysheetformula.rangestart = true;
- luckysheetformula.rangedrag_column_start = false;
- luckysheetformula.rangedrag_row_start = false;
- luckysheetformula.rangechangeindex = 0;
- luckysheetformula.rangeSetValue({ "row": rowh, "column": columnh });
- luckysheetformula.func_selectedrange = {
- "left": col_pre,
- "width": col - col_pre - 1,
- "top": row_pre,
- "height": row - row_pre - 1,
- "left_move": col_pre,
- "width_move": col - col_pre - 1,
- "top_move": row_pre,
- "height_move": row - row_pre - 1,
- "row": [row_index, row_index],
- "column": [col_index, col_index]
- };
-
- $("#luckysheet-formula-functionrange-select").css({ "left": col_pre, "width": col - col_pre - 1, "top": row_pre, "height": row - row_pre - 1 }).show();
- $("#luckysheet-formula-help-c").hide();
- },
- backFormulaInput: function(d, r, c, rowh, columnh, formula){
- let _this = this;
- let f = '='+ formula.toUpperCase() +'('+ getRangetxt(Store.currentSheetIndex, {"row":rowh, "column":columnh }, Store.currentSheetIndex) +')';
- let v = luckysheetformula.execfunction(f, r, c);
- let value = { "v": v[1], "f": v[2] };
- setcellvalue(r, c, d, value);
- luckysheetformula.execFunctionExist.push({ "r": r, "c": c, "i": Store.currentSheetIndex });
- server.historyParam(d, Store.currentSheetIndex, {"row": [r, r], "column": [c, c]});
- },
- checkNoNullValue: function(cell){
- let v = cell;
- if(getObjType(v) == "object"){
- v = v.v;
- }
- if(!isRealNull(v) && isdatatypemulti(v).num && (cell.ct == null || cell.ct.t == null || cell.ct.t == "n" || cell.ct.t == "g") ){
- return true;
- }
- else{
- return false;
- }
- },
- checkNoNullValueAll: function(cell){
- let v = cell;
- if(getObjType(v) == "object"){
- v = v.v;
- }
- if(!isRealNull(v)){
- return true;
- }
- else{
- return false;
- }
- },
- getNoNullValue: function(d, st_x, ed, type){
- let _this = this;
- let hasValueSum = 0, hasValueStart = null;
- let nullNum = 0, nullTime = 0;
- for(let r = ed - 1 ; r >= 0; r--){
- let cell;
- if(type == "c"){
- cell = d[st_x][r];
- }
- else{
- cell = d[r][st_x];
- }
- if(_this.checkNoNullValue(cell)){
- hasValueSum++;
- hasValueStart = r;
- }
- else if(cell == null || cell.v == null || cell.v == ""){
- nullNum++;
- if(nullNum >= 40){
- if(nullTime <= 0){
- nullTime = 1;
- }
- else{
- break;
- }
- }
- }
- else{
- break;
- }
- }
- return hasValueStart;
- },
- singleFormulaInput: function(d, _index, fix, st_m, ed_m, formula, type, noNum, noNull){
- let _this = this;
- if(type == null){
- type = "r";
- }
- if(noNum == null){
- noNum = true;
- }
- if(noNull == null){
- noNull = true;
- }
-
- let isNull = true, isNum= false;
-
- for(let c = st_m; c <= ed_m; c++){
- let cell = null;
- if(type == "c"){
- cell = d[c][fix];
- }
- else{
- cell = d[fix][c];
- }
- if(_this.checkNoNullValue(cell)){
- isNull = false;
- isNum= true;
- }
- else if(_this.checkNoNullValueAll(cell)){
- isNull = false;
- }
- }
- if(isNull && noNull){
- let st_r_r = _this.getNoNullValue(d, _index, fix, type);
- if(st_r_r == null){
- if(type == "c"){
- _this.activeFormulaInput(_index, fix, null, null, formula, true);
- }
- else{
- _this.activeFormulaInput(fix, _index, null, null, formula, true);
- }
- }
- else{
- if(_index == st_m){
- for(let c = st_m; c <= ed_m; c++){
- let st_r_r = _this.getNoNullValue(d, c, fix, type);
-
- if(st_r_r == null){
- break;
- }
- if(type == "c"){
- _this.backFormulaInput(d, c, fix, [c, c], [st_r_r, fix-1], formula);
- }
- else{
- _this.backFormulaInput(d, fix, c, [st_r_r, fix-1], [c, c], formula);
- }
- }
- }
- else{
- for(let c = ed_m; c >= st_m; c--){
- let st_r_r = _this.getNoNullValue(d, c, fix, type);
-
- if(st_r_r == null){
- break;
- }
- if(type == "c"){
- _this.backFormulaInput(d, c, fix, [c, c], [st_r_r, fix-1], formula);
- }
- else{
- _this.backFormulaInput(d, fix, c, [st_r_r, fix-1], [c, c], formula);
- }
- }
- }
- }
- }
- else if(isNum && noNum){
- let cell = null;
- if(type == "c"){
- cell = d[ed_m + 1][fix];
- }
- else{
- cell = d[fix][ed_m + 1];
- }
- /* 备注:在搜寻的时候排除自己以解决单元格函数引用自己的问题 */
- if(cell != null && cell.v != null && cell.v.toString().length > 0){
- let c = ed_m + 1;
- if(type == "c"){
- cell = d[ed_m + 1][fix];
- }
- else{
- cell = d[fix][ed_m + 1];
- }
- while ( cell != null && cell.v != null && cell.v.toString().length > 0) {
-
- c++;
- let len = null;
-
- if(type == "c"){
- len = d.length;
- }
- else{
- len = d[0].length;
- }
- if(c >= len){
- return;
- }
-
- if(type == "c"){
- cell = d[c][fix];
- }
- else{
- cell = d[fix][c];
- }
- }
- if(type == "c"){
- _this.backFormulaInput(d, c, fix, [st_m, ed_m], [fix ,fix], formula);
- }
- else{
- _this.backFormulaInput(d, fix, c, [fix ,fix], [st_m, ed_m], formula);
- }
- }
- else{
- if(type == "c"){
- _this.backFormulaInput(d, ed_m + 1, fix, [st_m, ed_m], [fix ,fix], formula);
- }
- else{
- _this.backFormulaInput(d, fix, ed_m + 1, [fix ,fix], [st_m, ed_m], formula);
- }
- }
- }
- else{
- return true;
- }
- },
- autoSelectionFormula: function(formula){
- let _this = this;
- let d = editor.deepCopyFlowData(Store.flowdata);
- let nullfindnum = 40;
- let isfalse = true;
- luckysheetformula.execFunctionExist = [];
- let execFormulaInput_c = function(d, st_r, ed_r, st_c, ed_c, formula){
- let st_c_c = _this.getNoNullValue(d, st_r, ed_c, "c");
- if(st_c_c == null){
- _this.activeFormulaInput(st_r, st_c, null, null, formula, true);
- }
- else{
- _this.activeFormulaInput(st_r, st_c, [st_r, ed_r], [st_c_c, ed_c - 1], formula);
- }
- }
- let execFormulaInput = function(d, st_r, ed_r, st_c, ed_c, formula){
- let st_r_c = _this.getNoNullValue(d, st_c, ed_r, "r");
- if(st_r_c == null){
- execFormulaInput_c(d, st_r, ed_r, st_c, ed_c, formula);
- }
- else{
- _this.activeFormulaInput(st_r, st_c, [st_r_c, ed_r - 1], [st_c, ed_c], formula);
- }
- }
- for(let s = 0; s < Store.luckysheet_select_save.length; s++){
- let st_r = Store.luckysheet_select_save[s].row[0],
- ed_r = Store.luckysheet_select_save[s].row[1];
- let st_c = Store.luckysheet_select_save[s].column[0],
- ed_c = Store.luckysheet_select_save[s].column[1];
- let row_index = Store.luckysheet_select_save[s].row_focus,
- col_index = Store.luckysheet_select_save[s].column_focus;
- if(st_r == ed_r && st_c == ed_c){
- if(ed_r - 1 < 0 && ed_c - 1 < 0){
- _this.activeFormulaInput(st_r, st_c, null, null, formula, true);
- return;
- }
- if(ed_r - 1 >= 0 && _this.checkNoNullValue(d[ed_r - 1][st_c])){
- execFormulaInput(d, st_r, ed_r, st_c, ed_c, formula);
- }
- else if(ed_c - 1 >= 0 && _this.checkNoNullValue(d[st_r][ed_c - 1])){
- execFormulaInput_c(d, st_r, ed_r, st_c, ed_c, formula);
- }
- else{
- execFormulaInput(d, st_r, ed_r, st_c, ed_c, formula);
- }
- }
- else if(st_r == ed_r){
- isfalse = _this.singleFormulaInput(d, col_index, st_r, st_c, ed_c, formula, "r");
- }
- else if(st_c == ed_c){
- isfalse = _this.singleFormulaInput(d, row_index, st_c, st_r, ed_r, formula, "c");
- }
- else{
- let r_false = true;
- for(let r = st_r; r <= ed_r; r++){
- r_false = _this.singleFormulaInput(d, col_index, r, st_c, ed_c, formula, "r", true, false) && r_false;
- }
- let c_false = true;
- for(let c = st_c; c <= ed_c; c++){
- c_false = _this.singleFormulaInput(d, row_index, c, st_r, ed_r, formula, "c", true, false) && c_false;
- }
- isfalse = !!r_false && !!c_false;
- }
- isfalse = isfalse && isfalse;
- }
- if(!isfalse){
- luckysheetformula.execFunctionExist.reverse();
- luckysheetformula.execFunctionGroup(null, null, null, null, d);
- jfrefreshgrid(d, Store.luckysheet_select_save);
- clearTimeout(Store.jfcountfuncTimeout);
- Store.jfcountfuncTimeout = setTimeout(function () { countfunc() }, 500);
- }
- },
- getStyleByCell: function(d, r, c){
- let _this = this;
- let style = "";
-
- //交替颜色
- let af_compute = alternateformat.getComputeMap();
- let checksAF = alternateformat.checksAF(r, c, af_compute);
- //条件格式
- let cf_compute = conditionformat.getComputeMap();
- let checksCF = conditionformat.checksCF(r, c, cf_compute);
- const locale_fontarray = locale().fontarray;
- let cell = d[r][c];
- let ct = cell.ct, isInline=false;
- if(isInlineStringCell(cell)){
- isInline = true;
- }
- for(let key in cell){
- let value = _this.checkstatus(d, r, c , key);
- if(checksAF != null || (checksCF != null && checksCF["cellColor"] != null)){
- if(checksCF != null && checksCF["cellColor"] != null){
- style += "background: " + checksCF["cellColor"] + ";";
- }
- else if(checksAF != null){
- style += "background: " + checksAF[1] + ";";
- }
- }
- if(getObjType(value) == "object"){
- continue;
- }
- if(key == "bg" || checksAF != null || (checksCF != null && checksCF["cellColor"] != null)){
- if(checksCF != null && checksCF["cellColor"] != null){
- style += "background: " + checksCF["cellColor"] + ";";
- }
- else if(checksAF != null){
- style += "background: " + checksAF[1] + ";";
- }
- else{
- style += "background: " + value + ";";
- }
- }
- // if(!isInline){
- // if(key == "bl" && value != "0"){
- // style += "font-weight: bold;";
- // }
-
- // if(key == "it" && value != "0"){
- // style += "font-style:italic;";
- // }
-
- // if(key == "ff" && value != "0"){
- // let f = value;
- // if(!isNaN(parseInt(value))){
- // f = locale_fontarray[parseInt(value)];
- // }
- // style += "font-family: " + f + ";";
- // }
-
- // if(key == "fs" && value != "10"){
- // style += "font-size: "+ value + "pt;";
- // }
-
- // if((key == "fc" && value != "#000000") || checksAF != null || (checksCF != null && checksCF["textColor"] != null)){
- // if(checksCF != null && checksCF["textColor"] != null){
- // style += "color: " + checksCF["textColor"] + ";";
- // }
- // else if(checksAF != null){
- // style += "color: " + checksAF[0] + ";";
- // }
- // else{
- // style += "color: " + value + ";";
- // }
- // }
- // }
- if(key == "ht" && value != "1"){
- if(value == "0"){
- style += "text-align: center;";
- }
- else if(value == "2"){
- style += "text-align: right;";
- }
- }
- if(key == "vt" && value != "1"){
- if(value == "0"){
- style += "align-items: center;";
- }
- else if(value == "2"){
- style += "align-items: flex-end;";
- }
- }
- }
- if(!isInline){
- style += getFontStyleByCell(cell,checksAF,checksCF);
- }
- return style;
- },
- fontSelectList:[],
- defualtFont:["Times New Roman","Arial","Tahoma","Verdana","微软雅黑","宋体","黑体","楷体","仿宋","新宋体","华文新魏","华文行楷","华文隶书"],
- addFontTolist:function(fontName) {
- fontName = fontName.replace(/"/g, "").replace(/'/g, "");
- let isNone = true;
- for(let a=0;a<this.fontSelectList.length;a++){
- let fItem = this.fontSelectList[a];
- if(fItem.value == fontName){
- isNone = false;
- break
- }
- }
- let _locale = locale();
- const locale_fontjson = _locale.fontjson;
- if(fontName in locale_fontjson){
- isNone = false;
- }
- if(isNone){
- let ret = {};
- ret.value = fontName;
- ret.index = this.fontSelectList.length;
- ret.type = "userDefined";
- ret.text = "<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:"+fontName+"'>"+fontName+"</span>";
- ret.example = "";
- this.fontSelectList.push(ret);
- let $menuButton = $("#luckysheet-icon-font-family-menuButton");
- let itemset = this.createButtonMenu(this.fontSelectList);
- $menuButton.html(itemset);
- }
- },
- fontInitial:function(fontList) {
- let itemdata = [];
- const locale_fontarray = locale().fontarray;
- for(let a=0;a<locale_fontarray.length;a++){
- let fItem = locale_fontarray[a];
- let ret = {};
- ret.value = fItem;
- ret.index = a;
- ret.type = "inner";
- ret.text = "<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:"+fItem+"'>"+fItem+"</span>";
- ret.example = "";
- itemdata.push(ret);
- }
- if(fontList!=null){
- for(let a=0;a<fontList.length;a++){
- let fItem = fontList[a];
- let ret = {};
- ret.value = fItem.fontName;
- ret.index = a;
- ret.type = "userDefined";
- ret.text = "<span class='luckysheet-mousedown-cancel' style='font-size:11px;font-family:"+fItem.fontName+"'>"+fItem.fontName+"</span>";
- ret.example = "";
- itemdata.push(ret);
- if(document.fonts && !document.fonts.check("12px "+fItem.fontName)){
- if(fItem.url){
- const fontface = new FontFace(fItem.fontName, `url(${fItem.url})`);
- document.fonts.add(fontface);
- fontface.load();
- }
- }
- }
- document.fonts && document.fonts.ready.then(function() {
- // Any operation that needs to be done only after all the fonts
- // have finished loading can go here.
- // console.log("font ready");
- });
- }
- this.fontSelectList = itemdata;
- }
- }
- export default menuButton;
|