[pgAdmin][RM5038] Select2 enhancement - Load items on demand (scroll)

Aditya Toshniwal <[email protected]> Tue, 24 Dec 2019 13:00:20 +0530
Newsgroups gmane.comp.db.postgresql.pgadmin.devel
Message-ID <CAM9w-_nEN_PK4Mn+9hyLz-ZC2MGp1XGDjx-1L0J=TCQOOUfxBQ@mail.gmail.com>
--000000000000f68b47059a6e1f8d
Content-Type: multipart/alternative; boundary="000000000000f68b44059a6e1f8b"

--000000000000f68b44059a6e1f8b
Content-Type: text/plain; charset="UTF-8"

Hi Hackers,

Attached is the patch to enhance select2 used in pgAdmin. The select2
dropdown will show only a few items when opened initially. On scrolling it
will show others. Searching will work as before. This will reduce the
number of DOM nodes on page.
Note that, individual controls can disable the behaviour if desired by
passing onDemandLoad:false for select2 options. It is enabled by default.

Kindly review.

-- 
Thanks and Regards,
Aditya Toshniwal
pgAdmin Hacker | Sr. Software Engineer | EnterpriseDB India | Pune
"Don't Complain about Heat, Plant a TREE"

--000000000000f68b44059a6e1f8b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:verdana,=
sans-serif">Hi Hackers,</div><div class=3D"gmail_default" style=3D"font-fam=
ily:verdana,sans-serif"><br></div><div class=3D"gmail_default" style=3D"fon=
t-family:verdana,sans-serif">Attached is the patch to enhance=C2=A0select2 =
used in pgAdmin. The select2 dropdown will show only a few items when opene=
d initially. On scrolling it will show others. Searching will work as befor=
e. This will reduce the number of DOM nodes on page.</div><div class=3D"gma=
il_default" style=3D"font-family:verdana,sans-serif">Note that, individual =
controls can disable the behaviour if desired by passing onDemandLoad:false=
 for select2 options. It is enabled by default.</div><div class=3D"gmail_de=
fault" style=3D"font-family:verdana,sans-serif"><br></div><div class=3D"gma=
il_default" style=3D"font-family:verdana,sans-serif">Kindly review.</div><d=
iv><br></div>-- <br><div dir=3D"ltr" class=3D"gmail_signature" data-smartma=
il=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=
=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr"><font size=3D"2" color=
=3D"#000000" face=3D"verdana, sans-serif">Thanks and Regards,</font><div><s=
pan style=3D"background-color:rgb(255,255,255)"><font size=3D"2" color=3D"#=
000000" face=3D"verdana, sans-serif">Aditya Toshniwal</font></span></div><d=
iv><font face=3D"verdana, sans-serif"><span style=3D"background-color:rgb(2=
55,255,255)"><font size=3D"2" color=3D"#000000">pgAdmin Hacker | Sr. Softwa=
re Engineer |=C2=A0EnterpriseDB India |=C2=A0</font></span><span style=3D"c=
olor:rgb(0,0,0)">Pune</span></font></div><div><font color=3D"#38761d" face=
=3D"verdana, sans-serif" size=3D"1">&quot;Don&#39;t Complain about Heat, Pl=
ant a TREE&quot;</font></div></div></div></div></div></div></div></div></di=
v></div></div></div>

--000000000000f68b44059a6e1f8b--
--000000000000f68b47059a6e1f8d
Content-Type: application/octet-stream; name="RM5038.patch"
Content-Disposition: attachment; filename="RM5038.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_k4jjusc20>
X-Attachment-Id: f_k4jjusc20

ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMgYi93
ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLnVpLmpzCmluZGV4IGNkMTE5NDZmZC4u
ODM2ZDgzZDFmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2Rl
LnVpLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMKQEAg
LTkzLDYgKzkzLDU3IEBAIGRlZmluZShbCiAgICAgKTsKICAgfSk7CiAKKyAgLyogRGVmaW5lIG9u
IGRlbWFuZCBsb2FkaW5nIG9mIGRyb3Bkb3duIGl0ZW1zLgorICAgKiBUaGlzIGFsc28gcmVxdWly
ZXMgYWpheCBvcHRpb24gb2Ygc2VsZWN0MiB0byBiZSBzZXQuCisgICAqIFRoZSB0cmljayBpcywg
YWpheDoge30gd2lsbCBhbHNvIHdvcmsgZXZlbiBpZiB5b3UncmUgYWN0dWFsbHkgbm90CisgICAq
IHVzaW5nIGFqYXguCisgICAqLworICAkLmZuLnNlbGVjdDIuYW1kLmRlZmluZSgnc2VsZWN0Mi9v
bkRlbWFuZERhdGFBZGFwdGVyJywgWworICAgICdzZWxlY3QyL3V0aWxzJywKKyAgICAnc2VsZWN0
Mi9kYXRhL3NlbGVjdCcsCisgIF0sIGZ1bmN0aW9uIChVdGlscywgU2VsZWN0QWRhcHRlcikgewor
CisgICAgZnVuY3Rpb24gb25EZW1hbmREYXRhQWRhcHRlciAoJGVsZW1lbnQsIG9wdGlvbnMpIHsK
KyAgICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDsKKyAgICAgIHRoaXMub3B0aW9ucyA9IG9w
dGlvbnM7CisgICAgfQorICAgIFV0aWxzLkV4dGVuZChvbkRlbWFuZERhdGFBZGFwdGVyLCBTZWxl
Y3RBZGFwdGVyKTsKKyAgICBvbkRlbWFuZERhdGFBZGFwdGVyLnByb3RvdHlwZS5xdWVyeSA9IGZ1
bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7CisgICAgICB2YXIgZGF0YSA9IFtdOworICAgICAg
dmFyIHNlbGYgPSB0aGlzOworICAgICAgaWYgKCFwYXJhbXMucGFnZSkgeworICAgICAgICBwYXJh
bXMucGFnZSA9IDE7CisgICAgICB9CisgICAgICB2YXIgcGFnZVNpemUgPSAyMDsKKworICAgICAg
dmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbigpOworICAgICAgJG9wdGlvbnMu
ZWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciAkb3B0aW9uID0gJCh0aGlzKTsKKworICAg
ICAgICBpZiAoISRvcHRpb24uaXMoJ29wdGlvbicpICYmICEkb3B0aW9uLmlzKCdvcHRncm91cCcp
KSB7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG9wdGlvbiA9
IHNlbGYuaXRlbSgkb3B0aW9uKTsKKworICAgICAgICB2YXIgbWF0Y2hlcyA9IHNlbGYubWF0Y2hl
cyhwYXJhbXMsIG9wdGlvbik7CisKKyAgICAgICAgaWYgKG1hdGNoZXMgIT09IG51bGwpIHsKKyAg
ICAgICAgICBkYXRhLnB1c2gobWF0Y2hlcyk7CisgICAgICAgIH0KKyAgICAgIH0pOworCisgICAg
ICBjYWxsYmFjayh7CisgICAgICAgIHJlc3VsdHM6IGRhdGEuc2xpY2UoKHBhcmFtcy5wYWdlIC0g
MSkgKiBwYWdlU2l6ZSwgcGFyYW1zLnBhZ2UgKiBwYWdlU2l6ZSksCisgICAgICAgIHBhZ2luYXRp
b246IHsKKyAgICAgICAgICBtb3JlOiBkYXRhLmxlbmd0aCA+PSBwYXJhbXMucGFnZSAqIHBhZ2VT
aXplLAorICAgICAgICB9LAorICAgICAgfSk7CisgICAgfTsKKworICAgIHJldHVybiBvbkRlbWFu
ZERhdGFBZGFwdGVyOworICB9KTsKKwogICAvKgogICAgKiBOb2RlQWpheE9wdGlvbnNDb250cm9s
CiAgICAqICAgVGhpcyBjb250cm9sIHdpbGwgZmV0Y2ggdGhlIG9wdGlvbnMgcmVxdWlyZWQgdG8g
cmVuZGVyIHRoZSBzZWxlY3QKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNr
Zm9ybS5wZ2FkbWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4u
anMKaW5kZXggZWIwODIxMjg0Li40YzkyMjc2MzcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0
YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9i
YWNrZm9ybS5wZ2FkbWluLmpzCkBAIC0yMTkwLDYgKzIxOTAsNyBAQCBkZWZpbmUoWwogICAgICAg
ICBlbXB0eU9wdGlvbnM6IGZhbHNlLAogICAgICAgICBwcmVzZXJ2ZVNlbGVjdGlvbk9yZGVyOiBm
YWxzZSwKICAgICAgICAgaXNEcm9wZG93blBhcmVudDogZmFsc2UsCisgICAgICAgIG9uRGVtYW5k
TG9hZDogdHJ1ZSwKICAgICAgIH0pOwogCiAgICAgICAvLyBFdmFsdWF0ZSB0aGUgZGlzYWJsZWQs
IHZpc2libGUsIGFuZCByZXF1aXJlZCBvcHRpb24KQEAgLTIyNDgsNiArMjI0OSwxNiBAQCBkZWZp
bmUoWwogICAgICAgICBzZWxlY3QyT3B0cy5kYXRhID0gZGF0YS5yYXdWYWx1ZTsKICAgICAgIH0K
IAorICAgICAgLyogU2V0IHRoZSBwZ2FkbWluIGFkYXB0ZXIgZm9yIG9uIGRlbWFuZCBsb2FkLgor
ICAgICAgICogU2V0dGluZyBlbXB0eSBhamF4IG9wdGlvbiB3aWxsIGVuYWJsZSBpbmZpbml0ZSBz
Y3JvbGxpbmcuCisgICAgICAgKi8KKyAgICAgIGlmKHNlbGVjdDJPcHRzLm9uRGVtYW5kTG9hZCkg
eworICAgICAgICBzZWxlY3QyT3B0cy5kYXRhQWRhcHRlciA9ICQuZm4uc2VsZWN0Mi5hbWQucmVx
dWlyZSgnc2VsZWN0Mi9vbkRlbWFuZERhdGFBZGFwdGVyJyk7CisgICAgICAgIGlmKF8uaXNVbmRl
ZmluZWQoc2VsZWN0Mk9wdHMuYWpheCkpIHsKKyAgICAgICAgICBzZWxlY3QyT3B0cy5hamF4ID0g
e307CisgICAgICAgIH0KKyAgICAgIH0KKwogICAgICAgdGhpcy4kc2VsID0gdGhpcy4kZWwuZmlu
ZCgnc2VsZWN0Jykuc2VsZWN0MihzZWxlY3QyT3B0cyk7CiAKICAgICAgIC8vIEFkZCBvciByZW1v
dmUgdGFncyBmcm9tIHNlbGVjdDIgY29udHJvbApAQCAtMjI2Miw4ICsyMjczLDYgQEAgZGVmaW5l
KFsKICAgICAgICAgICAgICQodGhpcykuZW1wdHkoKTsKICAgICAgICAgICB9CiAgICAgICAgIH0p
OwotCi0KICAgICAgIH0KIAogICAgICAgLy8gU2VsZWN0IHRoZSBoaWdobGlnaHRlZCBpdGVtIG9u
IFRhYiBwcmVzcy4KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZ3JpZC5w
Z2FkbWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tncmlkLnBnYWRtaW4uanMKaW5k
ZXggNTJiY2JkOWQ5Li42NDQyM2UxZDAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9q
cy9iYWNrZ3JpZC5wZ2FkbWluLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZ3Jp
ZC5wZ2FkbWluLmpzCkBAIC04ODMsNiArODgzLDcgQEAgZGVmaW5lKFsKICAgICAgICAgc2VsZWN0
Ml9vcHRzID0gXy5leHRlbmQoewogICAgICAgICAgIG9wZW5PbkVudGVyOiBmYWxzZSwKICAgICAg
ICAgICBtdWx0aXBsZTogZmFsc2UsCisgICAgICAgICAgb25EZW1hbmRMb2FkOiB0cnVlLAogICAg
ICAgICB9LCBzZWxmLmRlZmF1bHRzLnNlbGVjdDIsCiAgICAgICAgIChjb2wuc2VsZWN0MiB8fCB7
fSkKICAgICAgICAgKSwKQEAgLTk0Myw2ICs5NDQsMTIgQEAgZGVmaW5lKFsKICAgICAgICAgc2Vs
ZWN0Ml9vcHRzWydwbGFjZWhvbGRlciddID0gJyc7CiAgICAgICB9CiAKKyAgICAgIGlmKHNlbGVj
dDJfb3B0cy5vbkRlbWFuZExvYWQpIHsKKyAgICAgICAgc2VsZWN0Ml9vcHRzLmRhdGFBZGFwdGVy
ID0gJC5mbi5zZWxlY3QyLmFtZC5yZXF1aXJlKCdzZWxlY3QyL29uRGVtYW5kRGF0YUFkYXB0ZXIn
KTsKKyAgICAgICAgaWYoXy5pc1VuZGVmaW5lZChzZWxlY3QyX29wdHMuYWpheCkpIHsKKyAgICAg
ICAgICBzZWxlY3QyX29wdHMuYWpheCA9IHt9OworICAgICAgICB9CisgICAgICB9CiAgICAgICAv
LyBJbml0aWFsaXplIHNlbGVjdDIgY29udHJvbC4KICAgICAgIHRoaXMuJHNlbCA9IHRoaXMuJHNl
bGVjdC5zZWxlY3QyKHNlbGVjdDJfb3B0cyk7CiAK
--000000000000f68b47059a6e1f8d--