From 6fa9e7a5cb691e2239bc51e9be04cd9b4fb705af Mon Sep 17 00:00:00 2001 From: Rolux Date: Wed, 30 Jun 2010 11:02:13 +0200 Subject: [PATCH] make list items selectable --- build/css/ox.ui.modern.css | 26 ++++-- build/js/ox.ui.js | 84 +++++++++++------- build/png/ox.ui.modern/loading.png | Bin 0 -> 4763 bytes .../scrollbarHorizontalDecrement.png | Bin 0 -> 2883 bytes .../scrollbarHorizontalIncrement.png | Bin 0 -> 2881 bytes demos/test/list.html | 1 + demos/test/list.js | 32 +++++++ 7 files changed, 107 insertions(+), 36 deletions(-) create mode 100644 build/png/ox.ui.modern/loading.png create mode 100644 build/png/ox.ui.modern/scrollbarHorizontalDecrement.png create mode 100644 build/png/ox.ui.modern/scrollbarHorizontalIncrement.png diff --git a/build/css/ox.ui.modern.css b/build/css/ox.ui.modern.css index 1d5d644..b8511b5 100644 --- a/build/css/ox.ui.modern.css +++ b/build/css/ox.ui.modern.css @@ -194,23 +194,39 @@ Scrollbars width: 12px; height: 12px; } +.OxThemeModern ::-webkit-scrollbar-button:horizontal:decrement { + background: url(../png/ox.ui.modern/scrollbarHorizontalDecrement.png); +} +.OxThemeModern ::-webkit-scrollbar-button:horizontal:increment { + background: url(../png/ox.ui.modern/scrollbarHorizontalIncrement.png); +} .OxThemeModern ::-webkit-scrollbar-button:vertical:decrement { background: url(../png/ox.ui.modern/scrollbarVerticalDecrement.png); } .OxThemeModern ::-webkit-scrollbar-button:vertical:increment { background: url(../png/ox.ui.modern/scrollbarVerticalIncrement.png); } -.OxThemeModern ::-webkit-scrollbar-thumb:vertical { +.OxThemeModern ::-webkit-scrollbar-thumb { border: 1px solid rgb(48, 48, 48); - background: -webkit-gradient(linear, left top, right top, from(rgb(96, 96, 96)), to(rgb(64, 64, 64))); -webkit-border-radius: 6px; } +.OxThemeModern ::-webkit-scrollbar-thumb:horizontal { + background: -webkit-gradient(linear, left top, left bottom, from(rgb(96, 96, 96)), to(rgb(64, 64, 64))); +} +.OxThemeModern ::-webkit-scrollbar-thumb:vertical { + background: -webkit-gradient(linear, left top, right top, from(rgb(96, 96, 96)), to(rgb(64, 64, 64))); +} +.OxThemeModern ::-webkit-scrollbar-track { + border: 1px solid rgb(32, 32, 32); + -webkit-border-radius: 6px; +} +.OxThemeModern ::-webkit-scrollbar-track:horizontal { + background: -webkit-gradient(linear, left top, left bottom, from(rgb(0, 0, 0)), to(rgb(32, 32, 32))); +} .OxThemeModern ::-webkit-scrollbar-track:vertical { - border: 1px solid rgb(32, 32, 32); background: -webkit-gradient(linear, left top, right top, from(rgb(0, 0, 0)), to(rgb(32, 32, 32))); - -webkit-border-radius: 6px; } .OxThemeModern ::-webkit-scrollbar:active, -.OxThemeModern ::-webkit-scrollbar-thumb:vertical:active { +.OxThemeModern ::-webkit-scrollbar-thumb:active { background: rgb(64, 64, 64); } \ No newline at end of file diff --git a/build/js/ox.ui.js b/build/js/ox.ui.js index 3e6526a..812689b 100644 --- a/build/js/ox.ui.js +++ b/build/js/ox.ui.js @@ -2417,10 +2417,10 @@ requires var arr, len = self.$items.length; if (!isSelected(pos)) { - if (selected.length == 0) { + if (self.selected.length == 0) { addToSelection(pos); } else { - if (Ox.min(selected) < pos) { + if (Ox.min(self.selected) < pos) { var arr = [pos]; for (var i = pos - 1; i >= 0; i--) { if (isSelected(i)) { @@ -2432,7 +2432,7 @@ requires arr.push(i); } } - if (Ox.max(selected) > pos) { + if (Ox.max(self.selected) > pos) { var arr = [pos]; for (var i = pos + 1; i < len; i++) { if (isSelected(i)) { @@ -2450,36 +2450,52 @@ requires function addToSelection(pos) { if (!isSelected(pos)) { - selected.push(pos); + self.selected.push(pos); if (!Ox.isUndefined(self.$items[pos])) { self.$items[pos].addClass("OxSelected"); } Ox.Event.trigger("select_" + self.options.id, { - items: selected.length + items: self.selected.length }); } } function click(e) { - Ox.print("e.target", e.target); + var $element = $(e.target), pos; + while (!$element.hasClass("OxItem") && !$element.hasClass("OxPage")) { + $element = $element.parent(); + } + if ($element.hasClass("OxItem")) { + Ox.print($element.attr("id"), $element.data("position")); + pos = $element.data("position"); + if (e.shiftKey) { + addAllToSelection(pos); + } else if (e.metaKey) { + toggleSelection(pos); + } else { + select(pos); + } + } else { + selectNone(); + } } function deselect(pos) { if (isSelected(pos)) { - selected.splice(selected.indexOf(pos), 1); + self.selected.splice(self.selected.indexOf(pos), 1); if (!Ox.isUndefined(self.$items[pos])) { self.$items[pos].removeClass("OxSelected"); } Ox.Event.trigger("select_" + self.options.id, { - items: selected.length + items: self.selected.length }); } } function getNext() { var pos = -1; - if (selected.length) { - var pos = Ox.max(selected) + 1; + if (self.selected.length) { + var pos = Ox.max(self.selected) + 1; if (pos == self.$items.length) { pos = -1; } @@ -2495,8 +2511,8 @@ requires function getPrevious() { var pos = -1; - if (selected.length) { - var pos = Ox.min(selected) - 1; + if (self.selected.length) { + var pos = Ox.min(self.selected) - 1; } return pos; } @@ -2516,9 +2532,12 @@ requires if (page < 0 || page >= self.pages) { return; } - var offset = page * self.pageLength, + var keys = $.inArray("id", self.options.keys) > -1 ? self.options.keys : + $.merge(self.options.keys, ["id"]), + offset = page * self.pageLength, range = [offset, offset + (page < self.pages - 1 ? self.pageLength : self.listLength % self.pageLength)]; + Ox.print("keys", keys) if (Ox.isUndefined(self.$pages[page])) { self.requests.push(self.options.request({ callback: function(result) { @@ -2537,7 +2556,7 @@ requires self.$items[pos] = new Ox.ListItem({ construct: self.options.construct, data: v, - pos: pos + position: pos }); if (isSelected(pos)) { self.$items[pos].addClass("OxSelected"); @@ -2547,7 +2566,7 @@ requires self.$pages[page].appendTo(that.$content); Ox.print(page, "self.$pages", self.$pages) }, - keys: self.options.keys, + keys: keys, range: range, sort: self.options.sort })); @@ -2594,7 +2613,7 @@ requires } function select(pos) { - if (!isSelected(pos) || selected.length > 1) { + if (!isSelected(pos) || self.selected.length > 1) { selectNone(); addToSelection(pos); } @@ -2675,13 +2694,14 @@ requires Ox.Request.cancel(v); }); self.requests = []; - unloadPages(self.page); + //unloadPages(self.page); $.extend(self, { $items: [], $pages: [], page: 0, selected: [] }); + that.$content.empty(); that.scrollTop(0); loadPages(self.page); } @@ -2708,7 +2728,7 @@ requires .defaults({ construct: function() {}, data: {}, - pos: 0 + position: 0 }) .options(options || {}); @@ -2716,12 +2736,11 @@ requires self.options.data[k] = $.isArray(v) ? v.join(", ") : v; }); - that.$element = self.options.construct(self.options.data, self.options.pos); - /* - $.each(self.options.construct(self.options.data, self.options.pos).children(), function(i, v) { - that.append(v); - }); - */ + that.$element = self.options.construct(self.options.data) + .attr({ + id: self.options.data.id + }) + .data("position", self.options.position); return that; @@ -2840,7 +2859,7 @@ requires that.$body = new Ox.List({ construct: constructItem, itemHeight: 16, - itemWidth: Ox.sum(self.columnWidths), + itemWidth: getItemWidth(), keys: $.map(self.visibleColumns, function(v, i) { return v.id; }), @@ -2859,7 +2878,7 @@ requires }) .appendTo(that); that.$body.$content.css({ - width: Math.max(Ox.sum(self.columnWidths), that.$element.width() - 12) + "px" + width: getItemWidth() + "px" }); function addColumn(id) { @@ -2876,13 +2895,12 @@ requires ); } - function constructItem(data, pos) { + function constructItem(data) { var $item = $("
") .addClass("OxItem") .css({ width: Math.max(Ox.sum(self.columnWidths), that.$element.width() - 12) + "px" - }) - .data("pos", pos); + }); $.each(self.visibleColumns, function(i, v) { var $cell = $("
") .addClass("OxCell OxColumn" + Ox.toTitleCase(v.id)) @@ -2918,6 +2936,10 @@ requires return pos; } + function getItemWidth() { + return Math.max(Ox.sum(self.columnWidths), that.$element.width() - 12) + } + function moveColumn(id) { } @@ -2941,10 +2963,10 @@ requires width: (width - 9 - (i == self.selectedColumn ? 16 : 0)) + "px" }); that.$body.$content.find(".OxItem").css({ // fixme: can we avoid this lookup? - width: Ox.sum(self.columnWidths) + "px" + width: getItemWidth() + "px" }); that.$body.$content.css({ - width: Math.max(Ox.sum(self.columnWidths), that.$element.width() - 12) + "px" // fixme: check if scrollbar visible, and listen to resize/toggle event + width: getItemWidth() + "px" // fixme: check if scrollbar visible, and listen to resize/toggle event }); $(".OxColumn" + Ox.toTitleCase(self.options.columns[i].id)).css({ width: (width - 9) + "px" diff --git a/build/png/ox.ui.modern/loading.png b/build/png/ox.ui.modern/loading.png new file mode 100644 index 0000000000000000000000000000000000000000..702792f1f7e0576744f144f3f14366d7707acb3c GIT binary patch literal 4763 zcmV;M5@hX(P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000NZNkll z*V<>Dz0ZXbKRC>sz4uv{Z~yQA1uZ}nMf0O5S{FspfIjP@D4Ngl0&UpFy8ovQ*q`Z+ zYtD~;Kj0u>z%#b}G5VBTW7i6kmjIy+___Wc0$v5iGbc2L$g^5wj0xDt2|yPx4VVN* z(_=T2fQ7(sfFA%8BH&NJ?;A)!2hb{IvCIM~04ZxjROoH9OPl5gh5imy* zkj50S3pkXAfKpB~PyxPWZ62T(Xp}LV?$|t11(SEsA_VO4+`9m{q5%Y)=(&DGwxH=o za3=6JFxT8c_D!n@l#}3JFN?2C%~M z*e>8gV6dPB^a3+n%g`L-MciPi4sYmQ&-Fgw?t)`?dNz+-?|9M0*FypT9tSRVJUR}n z1^$^+0_KVYml56x9JZw^Hv!hfr^x3H0bc}+^KIZIkFIV4F3&+gH!wTH{)`0fv0dsC zDP}l^D4PHyy}eqSnGL)mV>c0?3fFt?-2^;QBLNE>aYo|yzS4%OsrNj^4^tv-4-jP$ zFbjBCR=h)^Rs!||4+4MAn6OK3aiPa8t^p=QzyPq^dgeo8%nGfe4D@*B*#nGK*?b=` z-wK(hfd2q{(*%?(bvRQC>#*+6QiS(3aIR<4ao_>Zz0-j2q`p7pc;+c9=J&b1tj(8! zWx%48^q7=8?bTn>*_55zO?Q?23%upHpvl6nj-?%>-yT%=GR+d z?lOEM8A;M98S74uk!b{H19t&G3N$be0e?u0i*UZws5d2k&jEMX;+NrJ+V%U66d?zc z_1Wv6r%wpJ1cr<;QI;1d1GlB#PBjck^j}O}yFzYp4zN|yvOmOCrPfhWxSd$?AgX`Bt*4y+EG;C0|WP0}g#>a&xk8VE=eQLzdli!#Dv8wcdd$6Ra3 zA|Sz4z^xfRIgMw5`;9RN8&QVS=1BG=$Z8=VF_t$1*HxKx3vi1u=CcM7 z&YYYhpSZ-9R)rF{s!!6AOVT1?omK94H#Bh9G(Exk$}W7 zl|{m#yjfX|8ECuaJ>Uv%Y9Zho9Pcnu6!j`{TO%J^3w9^~deIoOyO|4*qNr1u=N#1z zYQdNy*w0NAMb`q?7F^E;W6Xvo6R-q0z2Gq0OM3G~v8DymJEtCFl#X{BP?8Q8#p^9t z`%pc`IPQ($H*T;FkzmrbJ%}pD4UPnj(%~|3U$ExntDd3omB1>A)Th8(1eCoB60lUN z+NLDz6JVg(1e{A;{G6*)xlJVe6?n3N1oX&Oby}(X*TDOsI$eZ-MZhocm&t~JdyFx= z8brWS;CmU54Fd1+zr|B80d0ZvcL6^GF01m~L9Duao$b{WM=Q-P%maQ*T$%a+t9O{! z2wtYmcLgkRBk+hZW}-n7P$n+B_XYgqut?aFR|QrRAAwsOxW<1FH%;~_UvDEm)iGF0 zF78-I7ss~2XGjee1g>jD_F*uTfD@G*eLrx5oxmSSwZLU0SLuxn11}`ysu~FBChjmz zsqnE)e-kVuF5QQg$F~rlUYpD!;3VKzz&QZ}9wF}dK5JcH4*XK_L4tnbw%KSP0ker) z>OETHnB3jp9Y0wiX${G1`hfvsOvPmc4RI55S-?QA5f?yRMaZ96n@8i$m%9pSYcEZ0 zK9Pnq6?)qx_W@wLq@`MVoE);8bPD#21uAajL@UEofY~bW-M&IWKw`-8ain0=yla##QsuB`knh_uDNPRyC z_+jdM^8c&)JB<6_RiDJ&cM^3sao^%p5iy;kXB;MEM<%lf7$a^~UnJu)6L<%BGC*{% z#NVF&3&*y+S2~_qnIfPcILkBMcY%+qOlo$BCngpOo>fgj|s9l7e#aTey zEOB8g@j0P1Tq0^;dzaMNq7=%S>y2um1Mn|}&5e zY?ZjX{QWZ7jokq;#-VB!wd+?(H6r#xs}vAhdC@(L{>V2#|Q zjSBIhsCwc(949@5RUQM}Py$Sb&;KYRP$`19J=e<=Xp$5mV5h^c?jt@-*$8~<34_N% z3Lo_*pduI7&(Sk{gTx0YzoKz?Go=biWVtOvJ%Zk3-s(((3pCDtiT{ym^|&aC?)Tig zE1)(xPuXR+++=@fvBib9I_YM65i!gW8w_dA!UwW)5#V6D*3Az)V*la5w^#`Yahn+l p=E3H`YYj(BP775jh%^=d9RNO!5G1^K2r2*o002ovPDHLkV1itr(?I|L literal 0 HcmV?d00001 diff --git a/build/png/ox.ui.modern/scrollbarHorizontalDecrement.png b/build/png/ox.ui.modern/scrollbarHorizontalDecrement.png new file mode 100644 index 0000000000000000000000000000000000000000..3dfec1cb79bdbc1ab651de79eb55fe18f61a2ee9 GIT binary patch literal 2883 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 literal 0 HcmV?d00001 diff --git a/demos/test/list.html b/demos/test/list.html index 68a6486..31b6422 100644 --- a/demos/test/list.html +++ b/demos/test/list.html @@ -1,6 +1,7 @@ + oxjs List Demo diff --git a/demos/test/list.js b/demos/test/list.js index 461e1ff..c764f1a 100644 --- a/demos/test/list.js +++ b/demos/test/list.js @@ -81,6 +81,38 @@ $(function() { title: "Runtime", visible: true, width: 80 + }, + { + align: "left", + id: "language", + operator: "+", + title: "Language", + visible: true, + width: 120 + }, + { + align: "left", + id: "genre", + operator: "+", + title: "Genre", + visible: true, + width: 120 + }, + { + align: "right", + id: "rating", + operator: "-", + title: "Rating", + visible: false, + width: 80 + }, + { + align: "right", + id: "votes", + operator: "-", + title: "Votes", + visible: false, + width: 80 } ], request: function(options) {