From 64566f24ff6d972ed0d3955930e573870149972a Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Wed, 13 Sep 2023 18:19:29 -0400 Subject: [PATCH] Mostly working devQueryParams..! --- app/assets/images/vectara-icon.png | Bin 0 -> 2338 bytes .../javascripts/controllers/mainCtrl.js | 6 +- .../javascripts/controllers/queryParams.js | 25 ++- .../javascripts/controllers/settings.js | 33 ++-- .../javascripts/factories/TryFactory.js | 3 + .../javascripts/services/settingsSvc.js | 2 + .../templates/views/devQueryParams.html | 153 ++++++------------ app/models/user.rb | 2 +- ...3004_create_search_endpoints_from_tries.rb | 2 +- ...33_resize_user_profile_pic_to4000_chars.rb | 5 + db/schema.rb | 4 +- public/images/es-icon.png | Bin 0 -> 5049 bytes public/images/os-icon.png | Bin 0 -> 1594 bytes public/images/snapshot-icon.png | Bin 0 -> 3436 bytes public/images/solr-icon.png | Bin 0 -> 2350 bytes public/images/vectara-icon.png | Bin 0 -> 2338 bytes test/fixtures/users.yml | 2 +- test/models/user_test.rb | 2 +- 18 files changed, 117 insertions(+), 122 deletions(-) create mode 100644 app/assets/images/vectara-icon.png create mode 100644 db/migrate/20230913181833_resize_user_profile_pic_to4000_chars.rb create mode 100644 public/images/es-icon.png create mode 100644 public/images/os-icon.png create mode 100644 public/images/snapshot-icon.png create mode 100644 public/images/solr-icon.png create mode 100644 public/images/vectara-icon.png diff --git a/app/assets/images/vectara-icon.png b/app/assets/images/vectara-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4608f1b770a8ca885125990c5df2d02c3a45f80 GIT binary patch literal 2338 zcmV+-3ElRIP)Px#1ZP1_K>z@;j|==^1poj7^iWJxMMrQF zVF2@k>T$sU%5`5t?I?eH{%yAa)?fhaFcnX@%_6e@3rqf&;s%n40Q*P)=_mftB>;7j z0QPnO`r81b@FQ_qJ4hM--oF6Md;tEo^#t)0k@E+0P65f*uPCelVPzok}mNa zYwrMmU;y@P`vCq83s0V0Q|1|4q*Lz@eG3S4sW&q*`)yLT>;=R0*++`|4sny zF&IGYSwmnyOlJW07ysGDyeV)1_dNfs>lbV33v=KCmK+07z5&U_`~|=M0?GITvi}pf z{sqtS1f>2gss9?Z_a(dc1)TpW)aeG3{Y8=gI>PD~f&WjC^HqWPV%gjZw(bd`?L=?? zWpes)%H9~Wl$^+D{_8UPNF?= z;2v%45`NYmb?y;ui$iI;CW5FhfXf($@&<6?3w-SZh1d;8#{s^&2)C*cv4bpyxB%66GIW^~w2B~|sR+ib0@|nm z zUKo^R2iau`$6)~ZO(|7k0PtA=^;`hwP#Stw4yjZC?@|EdOaSUp0N6(W<4OU_MF8AK z0>4BIkwO5|L#GXS110Ff&Jf+zxbBm!+A178{i zKdruFssI20N_0|AQveVkARr(pFgQadGprEO$udlDL zu(-d!zrVlF*VotE-{0Tg-{0Tg@9*#T`uqI+{Qdp?{r&z-k3b9n00nkQL_t(|0qwz0 zh+S75!13?-o!>d<-Zw9!Z%k`I45_tXVr&znjL?M(@gJBhDzz;PTAD(;NL>XA1y@$F z6>3353%0081ph7K&XR=`7sjTgrP0wzNx>R)5;`-PWZt{)-gAz;JDJS?$ha(iKK$Q% zf#rYTZ~5r{d;6gu0cFR`-Y*06dcD64LD?yP&tc#-?jrMg#;`-Xr+6K>i%jBI|H7~{ zyB{!O$dJe|eL7oqr1QYc?woVVnd!@y-#791O4$j2Abq5Ux40c{CucmCoj80bo1E$O zAm>Q z!+-&KJiaKuxZALu59}qb5D`@rDij9>gdcdp|K`&(Y)$qxv`oyzah5uY0>aOX0YM%E zkNoldY_0bpgE1z>#)xy2%VrS(5#Yz7h?H*ywj%d{A;v6Xt@m1&c4UAcA|RrIh?J)I zq+tvDfEdYQt@j~}j|cC)e{%_83Pey5g{hBRI~`{oO3T-1qA+~2$pru9CECfc%(y@4uy#Aj;m;) zZp?e{FJwSq;X%n(EX#5}bp-gsr+T#Hz+>1B-L7-p?!>N+b;V207b6z|4Di8M1+f+p zV~i2QQGN*=x$rLRovNrCB1;TlmsfQ~=y-tdo&zvId0r5#6)`Q$0Jy}%JaTnFzoMq$ z8Wy~&D}w8k4tQu0K!N@je$Plk0CH6}Fh{Ex5Gq$Ie+4G9I#t&xJHR&=8Bu`qkc4PS z!bo2daE&KtyH{~_s4UGSkkzSLo2m{lP0Io_fBFh0OEwuprb_n8P!>7NHHJF0HYY^H z8gZ(@NpLpjZ(X1zjLbkH#z^YNJP>M@-Aarl;Da$vy;D`JV`Q3T!pQ7>kPG-xXD@vrYlt z<~pG@dq0VkQk_yt3stq)EH?8g0Td8|dhaRJI+lGsa-Go1GpUtx9u6}=NtcD9E()A; z5y;tEhjjqozQ_t;+3bTfBXyNh%=oHeps)+1fWkTFy>nQH0@INd!m|8k1H_n`;lsqG zIS>Y83`2mzTJJ>!Z)rWT$PL1E^G9QhG!4lf9}*hKU?F!=K-7C1LqOrVi>xxN(8-@R zkVw=*1r;p75)6O}hyjxRe2U|XtWs7q=Nb|uGEFiWXjtJYIzxq%aI8A9$Qr^8^YT=HC1qbV@gt7WdiHE&9bt|BXPSlt4J5-z03`vu$jA$4BkKuk&3=gl4P@Xc z)_T-A=U#X@vVpM9KktPGGSp8&CczJVfgXPp;OUnKY$U9A;Yb6CRt7`>L+k0Y12z#h zxOfC0*8s_|!od@Nj%=oEH2b;z-(!PldH%IaY(>~);gyGS4V++&Cr@8uOUh==-@f>< zXTHN4-#9;D8-}fo-Ln4#iI{ngbC(Bf%do96^?_=z6nT&P56jCO)+-M4ga7~l07*qo IM6N<$f^6+ZL;wH) literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/controllers/mainCtrl.js b/app/assets/javascripts/controllers/mainCtrl.js index ba6ca2d39..f4007e09a 100644 --- a/app/assets/javascripts/controllers/mainCtrl.js +++ b/app/assets/javascripts/controllers/mainCtrl.js @@ -28,9 +28,9 @@ angular.module('QuepidApp') }; var getSearchEngine = function(tryNo) { - var sett = settingsSvc.editableSettings(); - if (sett.hasOwnProperty('getTry')) { - var aTry = sett.getTry(tryNo); + var settings = settingsSvc.editableSettings(); + if (settings.hasOwnProperty('getTry')) { + var aTry = settings.getTry(tryNo); if (aTry) { return aTry.searchUrl; } diff --git a/app/assets/javascripts/controllers/queryParams.js b/app/assets/javascripts/controllers/queryParams.js index 98a5d2e54..a117850a2 100644 --- a/app/assets/javascripts/controllers/queryParams.js +++ b/app/assets/javascripts/controllers/queryParams.js @@ -21,7 +21,22 @@ angular.module('QuepidApp') $scope.showTLSChangeWarning = false; - $scope.searchEndpoints = searchEndpointSvc.list(); + $scope.haveSearchEndpoints = false; + + searchEndpointSvc.list() + .then(function() { + $scope.searchEndpoints = searchEndpointSvc.searchEndpoints; + if ($scope.searchEndpoints.length > 0) { + $scope.haveSearchEndpoints = true; + } + else { + $scope.haveSearchEndpoints = false; + } + }); + + $scope.listSearchEndpoints = function() { + return $scope.searchEndpoints; + }; $scope.validateSearchEngineUrl = function() { if (!angular.isUndefined($scope.settings.searchUrl)){ @@ -95,6 +110,8 @@ angular.module('QuepidApp') name: $scope.settings.selectedTry.name, number_of_rows: $scope.settings.selectedTry.numberOfRows, query_params: $scope.settings.selectedTry.queryParams, + search_endpoint_id: $scope.settings.selectedTry.searchEndpointId, + endpoint_name: $scope.settings.selectedTry.endpointName, search_engine: $scope.settings.selectedTry.searchEngine, search_url: $scope.settings.selectedTry.searchUrl, try_number: $scope.settings.selectedTry.tryNo, @@ -108,5 +125,11 @@ angular.module('QuepidApp') $scope.settings.reset(); $scope.validateSearchEngineUrl(); }; + + $scope.changeSearchEngine2 = function() { + console.log("In changeSearchEngine2 and we don't do anything here!"); + //$scope.settings.reset(); + //$scope.validateSearchEngineUrl(); + }; } ]); diff --git a/app/assets/javascripts/controllers/settings.js b/app/assets/javascripts/controllers/settings.js index 4f7b3b2a6..56678c485 100644 --- a/app/assets/javascripts/controllers/settings.js +++ b/app/assets/javascripts/controllers/settings.js @@ -3,33 +3,45 @@ angular.module('QuepidApp') .controller('SettingsCtrl', [ - '$scope', - '$location', + '$scope','$location', 'flash', 'settingsSvc', - function ($scope, $location, flash, settingsSvc) { + function ( + $scope, $location, + flash, + settingsSvc + ) { $scope.settingsModel = {}; $scope.pendingSettings = { searchEngine: '', searchUrl: '', - titleField: '' + titleField: '', + searchEndpointId: '' }; - + + $scope.whoami = function() { + console.log("I am settings.js"); + } + $scope.settingsModel.settingsId = function() { return settingsSvc.settingsId(); }; var reset = function() { var currSettings = settingsSvc.editableSettings(); - if ( this.searchEngine !== currSettings.searchEngine) { - currSettings = settingsSvc.pickSettingsToUse($scope.pendingSettings.searchEngine, null); - currSettings.fieldSpec = currSettings.fieldSpec + ', ' + currSettings.additionalFields.join(', '); - $scope.pendingSettings.urlFormat = currSettings.urlFormat; + if ( this.searchEndpointId !== currSettings.searchEndpointId) { + console.log("We don't do this anymore"); + //currSettings = settingsSvc.pickSettingsToUse($scope.pendingSettings.searchEngine, null); + //currSettings.fieldSpec = currSettings.fieldSpec + ', ' + currSettings.additionalFields.join(', '); + //$scope.pendingSettings.urlFormat = currSettings.urlFormat; } + this.searchEndpointId = currSettings.searchEndpointId; + this.endpointName = currSettings.endpointName; this.searchEngine = currSettings.searchEngine; - this.apiMethod = currSettings.apiMethod; + //this.apiMethod = currSettings.apiMethod; + if (false){ if (this.searchEngine === 'solr') { var quepidStartsWithHttps = $location.protocol() === 'https'; if (quepidStartsWithHttps === true){ @@ -42,6 +54,7 @@ angular.module('QuepidApp') else { this.searchUrl = currSettings.searchUrl; } + } this.fieldSpec = currSettings.fieldSpec; diff --git a/app/assets/javascripts/factories/TryFactory.js b/app/assets/javascripts/factories/TryFactory.js index 3e1e40472..8fc844644 100644 --- a/app/assets/javascripts/factories/TryFactory.js +++ b/app/assets/javascripts/factories/TryFactory.js @@ -49,9 +49,12 @@ self.numberOfRows = data.number_of_rows; self.queryParams = data.query_params; self.searchEngine = data.search_engine; + self.searchEndpointId = data.search_endpoint_id; + self.endpointName = data.endpoint_name; self.searchUrl = data.search_url; self.tryNo = data.try_number; self.endpointName = data.endpoint_name; + // transform curator vars to be more angular friendly diff --git a/app/assets/javascripts/services/settingsSvc.js b/app/assets/javascripts/services/settingsSvc.js index e70247800..e2580e5b1 100644 --- a/app/assets/javascripts/services/settingsSvc.js +++ b/app/assets/javascripts/services/settingsSvc.js @@ -359,6 +359,7 @@ angular.module('QuepidApp') settings.numberOfRows = tryToUse.numberOfRows; settings.queryParams = tryToUse.queryParams; settings.searchEngine = tryToUse.searchEngine; + settings.searchEndpointId = tryToUse.searchEndpointId; settings.searchUrl = tryToUse.searchUrl; // TODO: Store type in db?... @@ -428,6 +429,7 @@ angular.module('QuepidApp') payloadTry.field_spec = settingsToSave.fieldSpec; payloadTry.number_of_rows = settingsToSave.numberOfRows; payloadTry.query_params = settingsToSave.selectedTry.queryParams; + payloadSearchEndpoint.search_endpoint_id = settingsToSave.searchEndpointId; payloadSearchEndpoint.search_engine = settingsToSave.searchEngine; payloadSearchEndpoint.endpoint_url = settingsToSave.searchUrl; payloadSearchEndpoint.api_method = settingsToSave.apiMethod; diff --git a/app/assets/templates/views/devQueryParams.html b/app/assets/templates/views/devQueryParams.html index c3a6c2d55..a8873679a 100644 --- a/app/assets/templates/views/devQueryParams.html +++ b/app/assets/templates/views/devQueryParams.html @@ -10,7 +10,10 @@
-
+

+ With a static search endpoint there are no query settings to play with ;-(. +

+

Query Sandbox:

@@ -19,11 +22,7 @@

Query Sandbox:

-
- -

- With a static (snapshot) search endpoint there are no query settings to play with ;-(. -

+

{{ queryParamsWarning }}

@@ -59,31 +58,32 @@

Query Sandbox:

-

- What's this tab do? Knobs allow you to fine tune your search! - Define variables in your query template with ##, such as this boost: title^##titleBoost##. - Play with the values in this tab. Submit to rerun with the new values! -

- -

- With a static (snapshot) search endpoint there are no tuning knobs to play with ;-(. -

- -

Tuning Knobs

- -

- Add and remove knobs from here by editing your query. +

+ With a static search endpoint there are tuning knobs to play with ;-(.

-
-
- - -

- This knob/dial is not currently used by the query! -

+
+

+ What's this tab do? Knobs allow you to fine tune your search! + Define variables in your query template with ##, such as this boost: title^##titleBoost##. + Play with the values in this tab. Submit to rerun with the new values! +

+ +

Tuning Knobs

+ +

+ Add and remove knobs from here by editing your query. +

+
+
+ + +

+ This knob/dial is not currently used by the query! +

+
-
-
+
+
@@ -95,40 +95,24 @@

Tuning Knobs

diff --git a/app/models/user.rb b/app/models/user.rb index 61a740b3e..6105b26cf 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -23,7 +23,7 @@ # name :string(255) # num_logins :integer # password :string(120) -# profile_pic :string(255) +# profile_pic :string(4000) # reset_password_sent_at :datetime # reset_password_token :string(255) # stored_raw_invitation_token :string(255) diff --git a/db/migrate/20230816183004_create_search_endpoints_from_tries.rb b/db/migrate/20230816183004_create_search_endpoints_from_tries.rb index f399dc02a..5d667f8ed 100644 --- a/db/migrate/20230816183004_create_search_endpoints_from_tries.rb +++ b/db/migrate/20230816183004_create_search_endpoints_from_tries.rb @@ -2,7 +2,7 @@ class CreateSearchEndpointsFromTries < ActiveRecord::Migration[7.0] def change puts "Found #{Try.all.where(case_id: nil).count} tries with no Case. Any is bad!" - Try.all.each do |try| + Try.all.where(search_endpoint: nil).limit(10000).each do |try| # Go through and find each unique set of values from all the tries, # and create a single end point that is used by multiple tries where it diff --git a/db/migrate/20230913181833_resize_user_profile_pic_to4000_chars.rb b/db/migrate/20230913181833_resize_user_profile_pic_to4000_chars.rb new file mode 100644 index 000000000..0398f10d5 --- /dev/null +++ b/db/migrate/20230913181833_resize_user_profile_pic_to4000_chars.rb @@ -0,0 +1,5 @@ +class ResizeUserProfilePicTo4000Chars < ActiveRecord::Migration[7.0] + def change + change_column :users, :profile_pic, :string, :limit => 4000 + end +end diff --git a/db/schema.rb b/db/schema.rb index 62ca58128..4e2ddd184 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_09_07_102331) do +ActiveRecord::Schema[7.0].define(version: 2023_09_13_181833) do create_table "annotations", id: :integer, charset: "utf8mb3", force: :cascade do |t| t.text "message" t.string "source" @@ -281,7 +281,7 @@ t.integer "invitations_count", default: 0 t.boolean "completed_case_wizard", default: false, null: false t.string "stored_raw_invitation_token" - t.string "profile_pic" + t.string "profile_pic", limit: 4000 t.index ["default_scorer_id"], name: "index_users_on_default_scorer_id" t.index ["email"], name: "ix_user_username", unique: true t.index ["invitation_token"], name: "index_users_on_invitation_token", unique: true, length: 191 diff --git a/public/images/es-icon.png b/public/images/es-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..edf8b785b93c08cf78f6e6d824525862ae7f3e0a GIT binary patch literal 5049 zcmZ`-c{G&o+aIPVV}$I&WGghXlU+lhtYgAhGS)$iY-0^!8f0G+YDRVwF(%nlD%r-G z?7n54EMbH%^-k|Uzw@5+d!KWj=Q{U&U7u@tp6hd+^V~_6<~PA?LTms40BmAxXw8u1 zzxNpy##3j2MTsF!c^Q})006JjLC2`mj5Wl~*xC#Lh>!*VViN#>BgR(jDgY3o006AJ z005c=004hLQHzx}L&4&D>!u+?GOj~dYYYIujWIDaunC*mD2@!ySt|ah7i1!hmHy@4 z4LyJ5@)-nW!uQARSrXEZb$tp^o%6C`Iz*?29vD2`RMxs)GTszoFGtf7{Z>QUm&S$A{{iXCw=W>Am`kZwyl5L@>g~(IJP^6wzModw0CD> zI3x?X)^>P-x%wj1Q~jqr&3^AO(e+g=nRtNy5b$H5M3>@%LICF~aNpv$HsAttS_E*B zYxvoyv4$b2o;g$gE|-0_{Ha0U!!G{doO=EPscqi{9hW+FPEkImtKu2B!Fc2RIyO6I zM;1p`75v1Wpf)fVfB{C&>1#+JGbW5-a*&awT|i3gQrE9o@!`Uq?}E?42P6ib8+rru zf}r;of2tX9AYXr*EDD}vIu_mrVIWa7ATt> zq-M`1_w{mQ$QsfV&%S1|C_q8Hg<%##hr(S!#HNA*F{VF@;Dq!fz8!nJIVvOY`DSi3 zKdI;X4EVTT_{>cs&^6Ip!kQyXT4G_DKXw`nqdUOlaNyz#^hLPc2=!T;!q!OA{a<;7 zN9fGHVm|1{^~b>cFyNxPA&4nOuw~_Nv|7oVV*Y-1#p1*X;m2-~i4x+JYdm|PHJqZ7 zr?@xAzdWm=hTLvEf8vmcEgIQrMkj?XYBtPrUJRNnSO2RYe_@^WGO0OoxVJ=3-bA6) zhv(6n-Yc0f&;d@JQ};R61^y=@QoYGhOGxe>{HU!JVie-UUNIUBa`9a9!9b4NN|?;N zS4&bWu8E}eFaLb?ux@4dK{4i3{w)r^5LaM5vQ9>KR4`(mFD58z=EPiSamT!(XbQ(Q zb9!V^am`0m)0 zb}SZ<$amrc6K<(1eG?|WImac2{kJI%;Urd8Z%G-`DN zX8$!!qoGU0M1DqPnO>U}|L5F=E0>Cue(>ib4o|)he)4v^4Eq(Lauv_Pzw!A+kI?$| z+dw5jZ=d3DiIJt&fR;po4}TMY4x@%x1%b7uUP>G+tfq#2^%8YATcTFXDgZD6Mh##2 zQzAlzs}M!_R>8Cax~?F6*Yiam_D;uDkosO6|5LBWseGFz6&JdjE?C@q|IV(~lFY8P zW6m%^>Rx42wF;v-{yHf5_nmvU_hh+(lHHa3Pd)WoBTF?ybSVNZExmQV5Z@ZaM^gV= zAV{=wDn}&Swn64b!T){%9o;(tl*)rQfj{sUB-x&`Osa$j-sQT^-i}H6vpj6K7$WYv z(q}j`fVSDMI2|Cf4J$iG`>oT`IU8dhJh_`UcYmBnxtQFlFP{#AdNgbr`J5;GoHnL1}$(GMo4)ZBuAc9f?wEOb~(^WLP1pxkbLg_80r zdUb99>igj%8y|?oor~v)G?x5sQ<8SvuFmi#C?*VQDB$hq@KDcNtqo~@$X z18?35pV6z_Lk&EA676t2c+eb))!f*_llVh=-7hpd3ciU!I{5!&>DKFAIz7;OVU6tO zXT1_V5TO`cYv->zo`zu%^ifc>$>{ut4(RW)S6o9|J>yCHJo%E_chZydP^!rGxNX{D zTcv%z+ZW}E>|Tw~a`>R@eL7L6Hz9?XB`KfJwBKI%4CubKHCcjTDh#=nd`o)MGpgN&yCtqy8*z>|DY7j!wI61%4ANP;JK?1Y zX2?~W&!|>y>G+1+!ACKGlgz_krZF$vzpXQvnQPvE+)Kn^$|8JmUjR@03Bc2u2$#V{Gwd%gWH@P z3+zGnBT6g6B(iR6nn*i_PANyThn)=rhY7E8Ju$U!=bJLXc!x*jR-SW}%sT7U*$OE; zioK~I2w{56B+-Re=cJt2W*UlT8cT8~{a5k5v6prmb)t@WBR7xrd-N_d$uWFai|A35 z!1EP+Grr4e!7eIso-EuFq~@`K-IS?57#}Ufj8V9we|4}dx0LR{Ty(aB7UB=sI=%P1 zmmT}kk`D3>Q`CfCqDD6)i!Jt%aU1$0qZ7LpC6tmI!^E77MuO9@Ti{So8jt8C6xkho zsK~ibrq})=(^ZoAf|LT)g5So?+T!{A)RJ{o{JI~0vp>5RJ{7UKL#FfK`GUj)m4Y{_ zBR_*UwsQF`zZ>^PcJe?C{5DxR7)Cpvr7ESa2~K4eY1oool>ae)e_!$+qDQ3}Z~ZhQ z2gLAoT{ClBXj*E5AxKT`C8}@k@qUnn!w{HgbUQPfF#D0iNfudeFQYLdhkTe<5PZ_~+UlTJtrPv$v+Ox0AAJ_NTTnsrdV=Ok1{d$=*l1dpJLz+$tz`c)x&I`J~TgwYYI&jR_&^MGXD5{l^T z;4@j3;LrP2(qmn`srWny+pH3s94+w0D8=}Gt!kR$v}XWyV=}MX09Ae64q{kCe^j3BDP9Z>I_UEv<+I@}YKq?TU6+7lM}M(sc!IuMrpz`z?>WD1 zk1hU9xcw`F^5%7kOX(`wz124YCSCbAn||{CZYMsJ>wG)EHsYr$#7% z2kLm9=aW>R#Y+<@p_Q-e6a&>K1<|;_t;)?@zLs{W;(}aK%e78E=wz*=kOL!jmThbX zm-Xcp_toGh*c3))2xpk%wDKQ~Cidj@L8|!ITyJeA{uXv2RSKq_ zXHeySOT_&a2=w@AkIj3B!G%B1+gIS}pB}6cV-&c7u5v>S z%=`iCsc6qnO^GblxnLTTL%%_lQPigEF!$I(YnL*kumbeOOA=nN3LUAZv5$;E>gRiX zW?zQFpN6=zM#m_0v*WmT)+Yz-BNhuJ6f<{YShTYCc`E+J9M%DeAw>zNzUuxIb7*D;BUEQ+2QiU&j4i!tk3r8Ru9KZM|a;lb< zjr4!E2R){QQl8b^i7N!ZrK#1P4Ct$r7g{!Mdo_AlJ6b}JIKl8!%|R_EzT*z7GM`hl z?~b;co`S>g$PN_gsWZKr7~D4+l`&L?ZP`--UCOZ^oLX#C^b2eJ@_CFwl-Hq@yV+ZP zg+oWSuXQH0G&D6G<~4`K<{z^meeON6gUf9KA7s#GnmnOz2o$i{4?pxJJ>t^WITxvv`(vp%JD+q$s5K+NY&t5C{%cVRW-X!e%^)iTn^y2 z9;1=|qXx^htY%JFXL#?9yPHwZnx~Vrv*q1O$cM!momv7@6?>?QIF`u=J*p>-a_zT_ zdWP~7Q|W<&_IfWjIdBiM`#|07;CdQuKElh{FV$O3QT0v^9APc~H{&ubfe76%`3XWo z3#HT$2M3>O3=ip>jfM!vabO+JdFG1<`%-R!X)}RI*E#g$+wb*iEkl}ypx2O3!?&~k zT-wZ0dh_{U6gpO?&sKNR(TNTm)--=F2&M-*U$Eql_O8+C#F}o78Q@Iygp>+SbSdiP$&)@^A&s3Z{N&vt<)_zQ7hxs}#%JGB zHB~_>WCD|U%&U$54&(19=&0+j3vPK0ym(>B!K}Kxv+1(x(F9U$BQWK)?K#pJY$*l~ z7c57|N}1`(CTkP*8piDz`TKn#y1@1c>0Z-IF(JVQ(N6Ge?1viU2m7%}$UrSrD^8Qt z&o1pv&`XWkg=1p^gST~?`gBSO&gMhjeVssT2rJA48ecF-1?*~-=&USIx1UP?Qy1wCCT488eDlAmD9)c zoG&5nDwY-2YIy2(0-*vucRW@N%p_boUzJ@!&)DrRynlYXU@jb?n_9*W4p{!x0gK*jG@L+$02MG=3`{v`4Jr~~rM}@&j7TiMc8{7f8<;gg*_ey%{UgsT|~C84M*JmAiMBp(*^BF&d5f|!7LQNy2gke z@GsO5=>i207H%x?4$GwHy554t6f)Q?_O)(UmDnVJUx|%5O)*=EdUoa>W>p5MH4Tab z^_FN*#-LSff`CncW=lK)k5)Vs2S+nAv~qEE8D=Q~c-5n6u`HdOBc*za^n{%Vad0s(dp2t{R*$soB?ti467ZxgWc6^TjBz|sf!vP6A|wSqL_K`0?V2EJlFi3LdF4bVcU z4^5F-|Br}`pjk`r|Mbu*(GuwP7Hh<&P-*QWwtx~}Q6h2|J3@Uidr@_w8+w{!#Bn!w zfJEv**e3!Cg~H+Rcs!X*fk35(g~i3uXtd1COu86_g@r{BY9Q3swzhI0Oo$*5a0jZ& z0D$*m?QKs)jdkY6dW|_DlMkL#7zzo}45_@?&uB#NfXD24TKu)V>-6$^T*)*pb>DwXI6v|elNi`3bMypSQ!cl*{5bqf`9dKc zo2%Ha9h$3CwxA+33eBO|dm9q^Zp$nVf!XLZOO`d$HPWD}%JqIASZfFc!R337R7jK- zm_Oj2#q5WL{RKn0${PtH!LT83lF^u-tglVWpv!QWa`trqH+Q79wm>q?bY|z_(MVVl z@}vQaXH8S0y=hz?)0KjOsgHYpc`{>#f&<-)p}Q4KL3*b~0&}N@DFL+M`tD7UK4{il zg#(q;mRVAD#_+Q}hk9=EUoUnVo85+|?FP85=5T%Gbj97aV&O0_(NsnMGnMqU}IgzaM>&J*9sT+jye z_^(DAF9F6FCU2=*m|DWu1zG+(0`mMyhF0=mNK=@LPDJCY)QUoweVeDyGn>1Yt+xG$ z`n;=4pBA6-s@ai5bo$&j^bvJuv*R?PdF@ZNN4#2F)pTM~cO@_Ham0b^^;qF9MC#rN zZKIy1X88Q%K)2d9e%m2j(r9?%MHo+_>qbV}xTm?f>A_;~hK`5z#s| zgbzv&dYoGtHz zVVwIw3R~V;nKBATjCV0cauBDKw`)GjwE;;)1vIMiiu5aiIIU`MY*ZjB9 zD7u%K(r3qZ0bKH12UXaMOX)|C)4%&MYkSP6R}W@if41wK!J6BTaRbk|H~7PWri=Gl z!U6#R0Mt6#>P93~CW#7|k~G%~ zHsVPD^fA&x0UE|xcSs92`-eIXdU}96BpnQ(0I~o;e@#fD1ibaHt_ef{$p3Gj3;>9A z22lLJjXnwgjx>_|J@Y>#D1HeyQ~8 zY}sPpUG$=9be}aJn)Ut^ZSb=;aPhO%%rgLl602?fO z?wGxLl3rz4Hg?c^CF1_MJ?rxPmu`PFRfSb=s0%b&Dfl;rKNDfd<-GEr9#(mOv}JFo za8J;$Yz}BM8%-fxTA8Gy8E@JBogRl zeYewCghMZW%XOUn{EpxM+#%(wqk+m}A{?$P_lAj*Xq^g`a2!9m?w6@0;vB_qu|H=O z=6B~o!`|2Txzjq?Lb(LIXz$&LV&$jO9!pg_)_jeZdLD8^yJyP*Q_M=iucteG9Qi$# zUXL$z`mov2@`s$AjCcBMwWc1m#uUci9-f<<+nKG;xAVr>Pe)Afk+n9C8nETNcKPq` zO1dwaOb{xcj6O>_%CkFO5HsAkeV|)!-swI5j90gy&2>)Bti{3a^v9Q4LWfPNlE{Re zEQEry)8mVrS(A0d-scX3)M#EDncy^+R!ZIMOXO_r1A|1GcY|@%bLKL?vO9mpc#94(Z&sGbz6AVFGbI< zZ<6~y>~wFz)+I@P&!AYTzOYC!h)>LRaMCN8mNW8>bzLpd*e8El$G+bvAwhFY~9C2RV!4$c!8|A`=aDRr%xrE#JtS7G<7){@B?cHXB#!zp{M?Q7-#O245)O@fyO8l?XZWl>!ha>M1<) z#ss>a9{4lBg1S_|v*oX8sbTaGnpc=^QnXma5Q_F=u(wU5B%SRa?nL1r@j5hXrjGXB z!pmAVKEFOL+V)$-rR^=W=vEt5oSa_}3D>3i%Bzyt6(0?EP^x72fW&3E!pY)Q1x>1M zv&s9zIP5rk!#uIN&kZpM$dXzHpI*%vrs~fH!JvK-eS^0-^kn}OXex3Z+h(0^a&|*gNh-iB>eAkP;%GxwFEj+K(ksLCtSjy_S58Q-j1tR zH@TueHSdoX%DY(q5RrUASr{A=@{^D&;ix1U0Ov+5lH6(SdoHhui6g{8bGBx9R8L}q zWhf`L-wwQO#-fRfo)qB6NCWv({`HyN?u`wI}YOo#Kvn^qN{5qNw9|;U*B1` zsKjr+jn}g4s|xYBTEt;ESA|l?B?EBZO|O|FM;-xkVuAz$0D$loKyHy+%#1)CT*3ie z5(D&|tur%zi%1Bream%wypI;aV6wQ0Mb4h?fA;%G=A=R{2INA5vn6O|@2S&LQ~=$Q zZpr9>lwuFhGpRAr5f~>?!+;DgQh6}Bf-ro6NDx=B&=J`PZ^iC`;*#KEDEo+pQkhoa z$L+sMU1_Bf5hV!P#S+yhSR8yrfYPW2y4@7k6aoFF*9xDkQ5gWBWd=y4u82#3A~H+F z{B=n*#Z>CDs zH+Vuo04WmvTohK3HBI8?sn-q3gg|9>w^5bq@pNaAr;!P({>V_Ps6-4IIr1MUJ`j)) zS&SqrXDW)}f;R;dkH^k{8SvsGU@8a#!~BR9hetKXL7U)~`UQ8Jcd4jjc*5MBlO36l zt>%Cik7IvGpRAL*%Kb*;*G?yGwTQ3G zTcZYb%63Cgi`72F2tV50DkUIG#}-q|DsB_p?sSwZJFgjid}cI&P5Rj4XfT6QYIyu* zG=m=(IRJrX6=kvTMXHFLUj4=g3B8}9zjyNo#-!WfmMo>@*GCF*l|*(d+_ymaRTelD0$jJxEZa(Q0Ywu__Oc5pVABl#jISO3+^4kaNwd8oETX; zrs5uh{T6&s+B(PSSdFynfl>UH4ao|SmSNTc{xilb! zu#F=&L_rL?!OpE)BT%f!OzKpZ#!C(d-^j=wu`Vh%>Wgv9KY-^nQ{7CJoRre-pKGun z#9fro?j8rLxL)Q@L=)$vX)bOpsQT3pXVTPA1sbK)E(Up*tRgQoVe&Z^ zyF!H$S4yvJPYx7@QeCbJ*$%(N{MvQ7QX?KPK3&0DH=cHX$Fgf3c2i#?H$QfAk>(W4 z{G_Eq69}0fCG>omIIk})QP`USrBOI|jA)96gHu}-PTwfdFh@ju$d@rF#_xtbF^dpCv*UQ0aqreW2^mes6ciC}43qZn7KI6v7byFI;$ zRY3pvAo;k}u*f29m9r)B5vj_YpYGRM+HwK~Tk12YR++u%s}h}n25+Ygx$f7PBvdj# z&x^E~FHRK?V1o_GCVhITcPkmpMZScKz0Po_d}o9Q{`B(f=bJ*-ad2acZ;l4+#SOJT zy+bMbaPH487GrkIU?EXhXV9+(E@yum`bW`)3`sLoK6TXPb&oq5!~>q^Y0RCpojVH@ zsi^V2Z*bg&vOyb+=1gVD0b3)0JFtRRX;RgLQIKi6p)a$k)8x@`~Dj?4J276VN` z+8B0qX}&D@-;Hh29GQZRTU!ccV?2>CKt>zr>vSBXz2&j2f5R#G5qY;ao4yaW2nY6m zKp@Z}B~7>ZS-uTl%hN4r`5?k%7>vAuO94?)-oA4PW?4ftNz&2?qBji@Doy2uWqc;Se z2Z&Ym!|4`VKw>b6e;TZq*$)n2qQTVBqPIE8eUtlP>QFV0GTK@G3QYLQL3kH)>cO^} z8ec{Qjb`~sIz*kxS(V)QmR#N3d0s!-7imy%v&qKoTQty+wG+CX?l3#f*0Q(Rvz;d; z#f1Y?rR=vf(WGRYd@3-XSvHQMc+mN`zk28`FaEiDO=Wi51haAg2tc42g3a^wOUVE_OK%t=H+RCwC$S_@EA^&WNsTfA6e zp&0j0cGa7>Eb)@J4_*t)vI`5W2ndLP@ls?Jh%^zgZm8F+teb_IlZ{cD-I(UqWZ9j% z={Th}qt<2F_XAxNjjI;dXW!X9dpOJPVRsRMJJZhW4150P?Em|{zVG+@vlAx#{<3{t zY}?_{-BLSMCoPz%t`r9fn|7irO$6QY^Zop zmJ-lwxdvnZ17jN1rNW0t4fOeK8`!Gl{0QQ20C>$2a1+p!0Han~;4RMxueH0L%()6f zTD3KKQ|_5(LYz+0&!}pE_fJJS)1=(6nlzjL%g&Fti)@W{x;;O@+h_DXr2mo~e}QlI?6IRi+;Q=j}sQtgVf1U81lv$bo!9ADGc31 z+y^7V9Yx9-JogO1`^mFok~(>u|B-th=xuLfxgbn}*_MK}VU*0sB+|edMi9vXS5?IV zKhpajI1OG9bX;AY>7$UuMwrBqzON*<#AyS%x2&B4>un84^1rQJlRu3Fwsi>6YBD*Z zD0w!Xx#?uleg>_05E0`7{6#xXxuPyhf7EFs@P$9w@sNhL-p){bI^DYEUS=ah{_YHT zIOF{bJDWV!WujRSH7&Da!rpS;071~Zws{@$k!2m=zOye{QN?EM$o2)8UmSuLhVH)7 z(e9zH$eIB!|KxxeZmL(N|Am=0SEd*I_eh7SSda!%JE^gO76HAT2%YNP|C+n``LHbx z!Dod3RaKJCLf%gS^PF@lTB6Whj0PZ-r}fWPK4dCVNz6hUQOb==CDzayvu%nTOrywM z98auk*DOQR#_eSUf?5I@)R{G6ktg>3+If8lxNO+8+Ll()pv}b%ca()ZE(u}^5i4N^C6k% zmDDw1=zFyMK1^K~g)JZSg}Z2u$Y;_9@Oy%3V%z%)3;Vn@9PlLNp0vk03KGl<6wvhf z>u6NBo@PK34cKMyvq>BDPnWUq<)`iR`$k31qWLri(sR`F1?7LCVdez-L8OyV6=%v<1UZy;fT2ty!Jx zMYQ&simX|b0T?#iEy6{#vDEdA)emE{Tg1qylNS2YqIHC9x)i#)6`nN1jt&CA#of&{o|oR-;SOgl$DStoMmjFAF5>JM5g7rURci4AWw>S-q|%*a zRC1`oF64z1!w9XT{0_P@ofe%mIHKQ4W&XEf>7sPBG;Zchh)*E$eh{4|S{ZQTyq*Q1 zU&wfz8`n=A_ZTSTkakey$Cl66Pabn43KE+f`{jodZnXOj(iHn&5T}ReqbR^%b)d4h zvClu0g~_orYWK%JA2Vo4qD>(y3z9;Klu?(8W)2i=XdUvenHn!w=guHDQ|84-)4JC= z7GcA@a2VcZ(*|U<(Wcj7?TVu` zQx)@rnfjqW!E0j6XMN+!spu}J(?F%Fic+Y;M6{;Ei`M~Whkj!fi*{x-19hOZ16+?{ zY|vEaP)8_zpB-kQo|a%u?o@#z1G=|Jy_x5M<~3eSYsMEhO|~k2aYPGRhxPP{390Cf zdOBmxD1m3uLKL5Wp~3330m>hRd%tx}$O2U(a$?c@?(RRJ&?HtzFspJVgE77x*evL4 zq@hsXSYb61s!GykAz^r~h;*w)QTGfNIGO+bU_ze}Hvok`2i)(+ za3m>0LH~G9z|E9<3uLi>)DD7`1-y_hLGYI@^gP#*f^yW*5u)D$r8fic3KV*RdS%8F z##dU{*N%V18U^4rI{-gH%*^tv=vqyAmgksxSY45|5bAjd-aUb| zIRp=HMGsVieqT)RIP~C=3)|Pbjq9Hp{QSuW?u0jy3TivEEHRMx!LYM1^b;7BJZ=ra zG&cz}+DNexdVd&Y0Hq#8RG!k-E}QXx@#7D4slJM(i^2_?R!zTl>?mu(@2`Q^Z^s+A Uefm+Z`v3p{07*qoM6N<$f(f9AMF0Q* literal 0 HcmV?d00001 diff --git a/public/images/vectara-icon.png b/public/images/vectara-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4608f1b770a8ca885125990c5df2d02c3a45f80 GIT binary patch literal 2338 zcmV+-3ElRIP)Px#1ZP1_K>z@;j|==^1poj7^iWJxMMrQF zVF2@k>T$sU%5`5t?I?eH{%yAa)?fhaFcnX@%_6e@3rqf&;s%n40Q*P)=_mftB>;7j z0QPnO`r81b@FQ_qJ4hM--oF6Md;tEo^#t)0k@E+0P65f*uPCelVPzok}mNa zYwrMmU;y@P`vCq83s0V0Q|1|4q*Lz@eG3S4sW&q*`)yLT>;=R0*++`|4sny zF&IGYSwmnyOlJW07ysGDyeV)1_dNfs>lbV33v=KCmK+07z5&U_`~|=M0?GITvi}pf z{sqtS1f>2gss9?Z_a(dc1)TpW)aeG3{Y8=gI>PD~f&WjC^HqWPV%gjZw(bd`?L=?? zWpes)%H9~Wl$^+D{_8UPNF?= z;2v%45`NYmb?y;ui$iI;CW5FhfXf($@&<6?3w-SZh1d;8#{s^&2)C*cv4bpyxB%66GIW^~w2B~|sR+ib0@|nm z zUKo^R2iau`$6)~ZO(|7k0PtA=^;`hwP#Stw4yjZC?@|EdOaSUp0N6(W<4OU_MF8AK z0>4BIkwO5|L#GXS110Ff&Jf+zxbBm!+A178{i zKdruFssI20N_0|AQveVkARr(pFgQadGprEO$udlDL zu(-d!zrVlF*VotE-{0Tg-{0Tg@9*#T`uqI+{Qdp?{r&z-k3b9n00nkQL_t(|0qwz0 zh+S75!13?-o!>d<-Zw9!Z%k`I45_tXVr&znjL?M(@gJBhDzz;PTAD(;NL>XA1y@$F z6>3353%0081ph7K&XR=`7sjTgrP0wzNx>R)5;`-PWZt{)-gAz;JDJS?$ha(iKK$Q% zf#rYTZ~5r{d;6gu0cFR`-Y*06dcD64LD?yP&tc#-?jrMg#;`-Xr+6K>i%jBI|H7~{ zyB{!O$dJe|eL7oqr1QYc?woVVnd!@y-#791O4$j2Abq5Ux40c{CucmCoj80bo1E$O zAm>Q z!+-&KJiaKuxZALu59}qb5D`@rDij9>gdcdp|K`&(Y)$qxv`oyzah5uY0>aOX0YM%E zkNoldY_0bpgE1z>#)xy2%VrS(5#Yz7h?H*ywj%d{A;v6Xt@m1&c4UAcA|RrIh?J)I zq+tvDfEdYQt@j~}j|cC)e{%_83Pey5g{hBRI~`{oO3T-1qA+~2$pru9CECfc%(y@4uy#Aj;m;) zZp?e{FJwSq;X%n(EX#5}bp-gsr+T#Hz+>1B-L7-p?!>N+b;V207b6z|4Di8M1+f+p zV~i2QQGN*=x$rLRovNrCB1;TlmsfQ~=y-tdo&zvId0r5#6)`Q$0Jy}%JaTnFzoMq$ z8Wy~&D}w8k4tQu0K!N@je$Plk0CH6}Fh{Ex5Gq$Ie+4G9I#t&xJHR&=8Bu`qkc4PS z!bo2daE&KtyH{~_s4UGSkkzSLo2m{lP0Io_fBFh0OEwuprb_n8P!>7NHHJF0HYY^H z8gZ(@NpLpjZ(X1zjLbkH#z^YNJP>M@-Aarl;Da$vy;D`JV`Q3T!pQ7>kPG-xXD@vrYlt z<~pG@dq0VkQk_yt3stq)EH?8g0Td8|dhaRJI+lGsa-Go1GpUtx9u6}=NtcD9E()A; z5y;tEhjjqozQ_t;+3bTfBXyNh%=oHeps)+1fWkTFy>nQH0@INd!m|8k1H_n`;lsqG zIS>Y83`2mzTJJ>!Z)rWT$PL1E^G9QhG!4lf9}*hKU?F!=K-7C1LqOrVi>xxN(8-@R zkVw=*1r;p75)6O}hyjxRe2U|XtWs7q=Nb|uGEFiWXjtJYIzxq%aI8A9$Qr^8^YT=HC1qbV@gt7WdiHE&9bt|BXPSlt4J5-z03`vu$jA$4BkKuk&3=gl4P@Xc z)_T-A=U#X@vVpM9KktPGGSp8&CczJVfgXPp;OUnKY$U9A;Yb6CRt7`>L+k0Y12z#h zxOfC0*8s_|!od@Nj%=oEH2b;z-(!PldH%IaY(>~);gyGS4V++&Cr@8uOUh==-@f>< zXTHN4-#9;D8-}fo-Ln4#iI{ngbC(Bf%do96^?_=z6nT&P56jCO)+-M4ga7~l07*qo IM6N<$f^6+ZL;wH) literal 0 HcmV?d00001 diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index 2cf7a2e05..38e6f6b5a 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -21,7 +21,7 @@ # name :string(255) # num_logins :integer # password :string(120) -# profile_pic :string(255) +# profile_pic :string(4000) # reset_password_sent_at :datetime # reset_password_token :string(255) # stored_raw_invitation_token :string(255) diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 77ddad575..8fd29d659 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -23,7 +23,7 @@ # name :string(255) # num_logins :integer # password :string(120) -# profile_pic :string(255) +# profile_pic :string(4000) # reset_password_sent_at :datetime # reset_password_token :string(255) # stored_raw_invitation_token :string(255)